מבוא

בניית מערכות אימות מאובטחות עבור יישומי iOS היא אחריות בסיסית עבור מפתחים.עם עליית איומים הסייבר המתוחכמים, פגיעת יחיד בזרימת הכניסה יכולה לחשוף נתונים רגישים של משתמשים, נזק למוניטין המותג, ולהוביל לעונשים רגולטוריים.מערכת האקולוגית של אפל מספקת מסגרות אבטחה חזקות, אך מינוף אותם כראוי דורש הבנה עמוקה של שיטות טובות יותר. מאמר זה מתאר אסטרטגיות חיוניות - החל מניהול לקוי לפרוטוקולים קריפטוגרפיים - כך שתוכל לעצב אימות משותף תוך מתן ניסיון משותף של התקפות מוצלח של משתמשים.

שיטות אותנטיות חזקות

החלת רק על אימות מבוסס סיסמה אינה מספיקה עוד. התוקף משתמש לעתים קרובות בחומרים דחוסים, phishing, או טכניקות כוח רוטט לחשבונות פשרה.כדי להפחית את הסיכונים האלה, עליך לאמץ אימות רב-מנועי (MFA) ופרוטוקולים מודרניים של זהות.

Multi-Factor Authentication (MFA)

(מ) משלב שני גורמים עצמאיים יותר: משהו שהמשתמש יודע (סיסמה), משהו שיש לו (מכשיר מהימן או אסימוני חומרה), ומשהו שהם (ביומטרי) עבור יישומים של iOS, שילוב MFA ניתן להשיג באמצעות סיסמאות חד פעמיות המבוססות על זמן אחד (TOTP) שנוצר על ידי יישומי אימות, בקשות מבוססות דחיפה או קודים (למרות ש-SMS הוא יותר ויותר מרתיע עקב התקפות SIM-Fken) של Apple-FROLOS (אופטיים ל-APTS) כדי לתמוך באימות של מערכת ההפעלה של מערכת ההפעלה של ה-HD2FROLOS:

OAuth 2.0 ו- OpenID Connect

(במקום לבנות ההרחבה הזמנית של ה-OAuth 2.0 ו-OpenID Connect.פרוטוקולים אלה מאפשרים לאפליקצייתך להאציל את הספקים המוערכים (Apple, Google, או שרת האישורים שלך) תוך שמירה על שליטה על היקף והרשאה (התקן של קוד ה-76) גם על iOS, השתמש ב-FLT:0ASOValationSsionsalsalsuresof, אוLT3FIRFIRECTSURL) כדי להבטיח את ה-Avationerationerationerationerationeration:

(ב) ,0) למד יותר על PKCE ועל חשיבותה לאפליקציות סלולריותFLT:1.

אחסון מאובטח של Credentials

כל האישורים, אסימונים, או המפתחות ההצפנה המאוחסנים במכשיר חייבים להיות מוגנים מפני גישה בלתי מורשית – גם אם המכשיר נפגע באמצעות קוד זדוני או גניבה פיזית. iOS מספק כמה מנגנונים למטרה זו.

שירותי Keychain

(הופנה מהדף ה-iOS Keychain) היא המקום הבטוח ביותר לאחסון נתונים רגישים, כגון סיסמאות, אסימונים אימות ומפתחים קריפטוגרפיים של המשתמש, בניגוד לחשבונות פשוטים, ה- KeychainsProמוצפנים במנוחה עם מפתח מוגן חומרה (הופנה מהדף Secure Enclave) של ה-NLT1, כאשר הוא שומר קוד פתוח ל-NPTK1:

(ב) תועדו מקורות נוספים של אפל (הראשונה ל-[[1924]]

נספח Sandbox ו-Data Protection

מעבר ל- Keychain, לאכוף את ממשקי API של הגנת הנתונים של iOS ברמת הקובץ.כאשר יצירת קבצים במסמכים או ב- Caches, הציב את מעמד הגנת הקבצים ל-FLT:0NSleProtectionComplete Un OpenearFLT:1 או, עבור אבטחה גדולה יותר, FLT:2NSFileProtectionCompletectionCompletectionCompletectionComplete Un Openeart OpenFipleteFLT 1 או, כדי להבטיח את אותה מערכת הגנה של המשתמש.

ניהול Cryptographic Keys

אם מערכת האימות שלך משתמשת בחתימות דיגיטליות, מפתחות אמפיריים, או הצפנה סימטרית, ליצור ולאחסן את המפתחות האלה באמצעות Enclave מאובטח כאשר אפשרי.TheFLT:0SecKeyofLT:1 API מאפשר לך ליצור מפתחות אלפטיים-קול (למשל, P-256) אשר לעולם לא להשאיר את Enclave מאובטח.

שימוש ב- Biometric Authentication

Touch ID ו- Face ID מציעים שילוב של אבטחה חזקה וניסיון מעולה של משתמשים.על ידי הסרת כניסה לאימות ביומטרי, אתה להפחית את פני השטח של phishing ומפתח תוך הורדת חיכוך עבור משתמשי החזרה.

אינטגרציה מקומית

(ב) ,(ה) , ), הוראת ה-[[1924]], [[1924]], [[1924]]]], [[1924]]]], [[1924]]]]]]]]]], [[1924]]]]]]]], [[1924]]]]]]]]]]]]]], [[1924]]]]]]]]]]]]]]]]]]]], [[1924]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]], [[1924]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]], [[1924]]]]]]]]]]]], [[1924]], [[1924]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]], [[1924]]]]]]]]]]]]]], [[1924]]]]]]]], [[1924]]]]]]]] [[1924]]]]]]]], [[1924]]]]]]]]]]]]]]]]]]]], [[1924]]]]]], [[[[1924]]]]]] [[1924]]]]]]]]]] [[[[[[1924]]]]]]

Best Practices for Biometric-Protected Tokens

(ה) [ה]ה] [ה]ה'] [ה']'[ה]'[ה]'[ה]'[ה]'[ה]'[ה]]]'[ה']'[ה]'[ה]'[ה]'[ה']'[ה']'[ה']'[ה']']'[ה']'[ה'[ה']']'[ה']']'[ה'[ה']']'[ה'[ה'[ה'[ה'[ה'[ה']']'[ה'[ה'[ה'[ה']']']']'[ה']']'[ה'[ה'[ה'[ה']']']']'[ה'[ה'[ה']'[ה'[ה']'[ה']']'[ה'[ה']']'[ה'[ה'[ה'[ה']'[ה']']'[ה'[ה'[ה']'[ה'

(ב) תועדו בפרשת ה[[1924]]

ניהול ישיבות תקין

ברגע שמשתמש אותנטי, שמירה על הפגישה הזו היא קריטית.טיפול בפגישת אי-דיוק יכול להוביל לגניבה טומנת, תיקון ישיבה או התקפות חוזרות.

ken- Based Sessions

(הופנה מהדף ken זוגות: a Access token (קיצור-הימים, בדרך כלל 15-60 דקות) ו- agon token (ארוך יותר, למשל, 30 ימים) חנות הן ב- Keychain עם בקרת גישה מתאימה.לעולם אל תחשוף גישה לאקנון בחוזים של שאילתות URL; להעביר אותם רק דרך ה-FLT:0AuthAuthorizationFLTirtrated באמצעות ראש 1Fkener:

ייעוד ו Logout

לספק מנגנון קידוד ברור כי אינו מסתכם הן מקומית והן בצד השרת, למחוק את אסימוני הסימון מן Keychain באופן מיידי.בשרת, לשמור על רשימה (או רשימת ייעוד אסימונים) כך ששירותי החזרת דוחה כל אסימונים שלא נשללו. עבור אבטחה מקסימלית, שימוש ב-FLT:0token CompalFLT:1 (למשל, JW) כדי למנוע עניבה מסוימת ל-"ד"ד"ד"ד"ד"ד"ד"ד"ד"ד"ד"ד ל-"ד"ד"ד.

זמן ישיבה וחוסר פעילות

יישום זמני הפעלה idle כי באופן אוטומטי להזין משתמשים לאחר תקופה של חוסר פעילות (למשל, 15 דקות עבור יישומים פיננסיים) שקול זמן רך המנעול את האפליקציה באופן מקומי אבל שומר את הפגישה עד שהמשתמש נכנס מחדש לקיצור PIN או סריקה ביומטרית.זה מאזן אבטחה עם יכולת.

אחסון מאובטח של Tokens

(הופנה מהדף קישרון, אך שימו לב כי אין לשלוח אלמוני הרענון לסביבות שאינן ידועות, אם האפליקציה שלכם משתמשת בתצוגה באינטרנט עבור אימות, ודא כי JavaScript אינה יכולה לגשת לאקונים באמצעות מסמך.cookie (הראשונה ל-FLT:0Htp OnlyFLT:1 ו-FLT:2Same Site=StricsalLTFalph ⁇ , אשר משמש תמיד ל-Stek5 , אם הוא , אם הוא LT5 , אם הוא , כלומר, אם הוא , אם הוא .

להבטיח תקשורת מאובטחת

כל תעבורת הרשת בין אפליקציית iOS לשרתים שלך צריכה להיות מוצפנת באמצעות TLS 1.2 ומעלה.גם אם נתוני אימות לעולם לא מועברים, תנועה בלתי מוצפנת חושפת מטא-נתונים (נקודות קצה, דפוסי בקשה) שיכולים לסייע לתוקפים.

ביטוח תחבורה (ATS)

(א) אפל נאכפים את ATS כברירת מחדל ב- iOS 9 ואילך, המחייבת חיבורים של HTTPS העומדים בסטנדרטים המודרניים של אבטחה.You לא צריך להוסיף חריגים ל-FLT:0 NSApp TransportSecurityFLT:1 (אלא אם כן הכרחי לחלוטין עבור שירותי צד שלישי, ורק לאחר ניתוח זהיר) תמיד להגדיר את ה-TLT LSD (TLSD) שלך.

תעודת Pinning

(ב) גם עם HTTPS, רשות תעודה נפגעת (CA) יכולה להנפיק תעודה הונאה עבור התחום שלך.התעודה יישום הטמעתה על ידי הטמעת מפתח הציבור של השרת (או התעודה) לתוך בינארית היישום שלך: השתמש ב-FLT:0NSURLSSsion, אך יש לאמת את הגישה של CALTK1, אך לא להציג את התעודה לעדכון של ®:2URL) ל-A:

Token Transmission

תמיד לשלוח אסימונים על הקשר של HTTPS.לעולם לא לכלול אסימונים בנתיב או מחרוזת השאילתה (הם עשויים להיות רשומים או מכווצים על ידי פרוקסיזיות ביניים) להשתמש ב-FLT:0Authorization: Bearer < token > token > igt;FLT:1) לקבלת בטיחות נוספת, נקשרים לפגישת TLS על ידי כולל ah של סוד (the) על פני "אלקסים" (לא" (לאו) על פני החייב) על פני קווי תיבות) על פני החייב) על פני קווי פעולה שונים.

(ב) ◄ ⁇ ⁇ ⁇ ⁇ ⁇

עדכוני אבטחה קבועים ובדיקות

אבטחה היא לא משימה חד פעמית, שכן פרצות חדשות מופיעות ב-iOS, בספריות של צד שלישי, ובקוד שלך, שמירה על המשמר היא חיונית.

ניהול תלות

(אאודי כל ספריה של צד שלישי שאתה משלבת לתוך זרם אימות שלך.שימוש בכלים כמו CocoaPods-Audit או SPM של אימות מובנה כדי לזהות פרצות ידועות.Prefer a Well-sessioned Library with a security track, כגון FLT:0 AlamofireFLT:1 (רק אם נדרש; URLS הוא לעתים קרובות בטוח יותר) או קוד אבטחה מתאים עבור JLT2:

בדיקות אבטחה אוטומטיות

(ב) שילוב של סריקת אבטחה לתוך צינורות CI /CD שלך (לדוגמה, SonarQube עם כללים Swift, או FLT:0SwiftLintphFLT:1 עם כללים ממוקדים אבטחה) כדי לדגל סודות קשיחים, חיסון ללא די, או שימוש ב- Cryptoware.

תגובה ל-Vulnerability

יש תהליך לטיפול בדיווחי באגים.Apple מספקת את כלי ה-Caseback של האבטחה.חשבו להשתתף ב-FLT:0 Apple Security BountyFLT:1 התוכנית תמיד לשמור על קוד האימות של האפליקציה שלכם ביחס ל- iOS SDK האחרון - אפל לעיתים קרובות מדגימה ממשקי API לא בטוחים (למשל, UIView הוסרה; השתמש ב- ASWebAuticationSsion במקום זאת).

שיקולים נוספים

מערכת אימות מקיפה הולכת מעבר לזרימת הכניסה הליבה.כתובת לאזורים משלימים אלה כדי לסגור וקטורים שנותרו בהתקפה.

שחזור חשבון ו-Firetation

סיסמאות Weak איפוס מנגנונים לא לעשות את האבטחה של אימות חזק. השתמש אסימוני זמן מוגבל, שימוש יחיד נשלח לאמת כתובות דוא"ל או מספרי טלפון. להימנע מחשיפת האם קיים חשבון במהלך תהליך ההתאוששות כדי למנוע התקפות של הארה.

הגבלת הגבולות וההגנה על כוחות

שיעור השרתים המגביל את נקודות הכניסה (למשל, 5 ניסיונות לדקה ל- IP או למשתמש) לאחר מספר ניסיונות כושלים, דורשים CAPTCHA או הפוגה מאוחרת על iOS, אתה יכול גם להשתמש ב- (FLT:0acceleratecioFLT:1 מסגרת כדי למקם אתגר הוכחה של עבודה (למרות שזה פחות נפוץ).

פרטיות ו-Data Minimization

[ה] רק מידע הכרחי לאימות, להימנע מבקשות שאין לו יחס ישיר (למשל, אנשי קשר, מיקום) אלא אם המשתמש בוחר במפורש ב-FLT של אפל:0Sign in with AppleFLT1: כאשר הוא משלב את התכונה הזאת, השתמש בכתובת הדואר האלקטרוני הפרטית של המשתמש כדי למנוע מעקב.

מבחן המכשיר

(ב) לאפליקציות אבטחה גבוהה (למשל, בנקאות), מומלץ להשתמש ב-FLT:0 (DeviceCheckofLT:1 או FLT:2App AttestFLT:3 (באמצעות FLT:4DCettestmentalFLT:5) כדי לאשר כי הבקשה מקורה עותק אותנטי של היישום שלך על מכשיר לגיטימי זה מונע בקשות הכחשה או מפירוק של כלי נשק.

מסקנה

אימות על iOS הוא מאמץ רב שכבתי המשתרע על פני קריפטוגרפיה, עיצוב פרוטוקול, אחסון ותחזוקה מתמשכת. על ידי יישום MFA עם PKCE, אחסון סודות ב Keychain עם בקרת גישה ביומטרית, ניהול תקופות חיים אסימונים עם סיבוב, אכיפת תקשורת מוצפנת עם pinning, ובדיקה רציפה, אתה יכול להפחית את הסיכון של פשרה.

(ב) ◄ [13] הוראות זהות דיגיטלית (SP800-63BIRLT)