Table of Contents
הבנה של הצפנה סימטרית עבור יישומי מובייל
הצפנה אסימטרית, הידועה גם כקריפטוגרפיה ציבורית-קי, היא מנגנון אבטחה בסיסי המשתמש בשני מכשירים הקשורים מתמטית אך מובהקים: מפתח ציבורי, אשר יכול להיות משותף בחופשיות, מפתח פרטי, אשר חייב להישאר חשאי.ביישומים ניידים, גישה זו מאפשרת תקשורת בטוחה ללא צורך לשתף מראש מפתח סודי, מה שהופך אותו אידיאלי עבור חילופי מפתח, חתימות דיגיטליות, ואותנטיות של משתמשים או שרתים, שלא כמו גם פתרון משאבים ראשוניים, אבל יש צורך בהצפנה ראשונית, עם חומר סימטרית, עם חומר סימטרית, עם חומר מרכזי, עם סימטרי, עם סימטרי, עם סימטרית, עם סימטרית, עם סימטרית, עם , עם סימטרית, עם סימטרית, עם סימטרית, עם מפתח, עם סימטרית, עם סימטרית, עם סימטרית, עם מפתח, עם סימטרית, עם קידוד משותף עם , עם , עם סימטרית, עם סימטרית, עם סימטרית, עם סימטרית, עם הצפנה ראשונית, עם קידוד משותף עם מפתח ניהולי, יש צורך, עם קידוד משותף, עם סימטרית, עם קידוד משותף עם סימטרית, יש צורך, יש צורך סימטרית, אבל סימטרי
עקרון הליבה מסתמך על הקושי של בעיות מתמטיות מסוימות.לדוגמה, RSA משתמשת המורכבות החישובית של גרימת מוצרים ראשוניים גדולים, בעוד אליפותטי קרפטוגרפיה (ECC) מסתמכת על בעיית הגליאים המטושטשת על עקומות אלפטיות. Both לספק אבטחה חזקה, אבל ECC מציעה אבטחה שווה ערך עם גדלים מרכזיים קטנים יותר, אשר מועיל במיוחד עבור סביבות ניידות שבו אחסון רוחב פס והבנתם מוגבלת אלה היא אלגוריתם קריטי עבור אלגוריתם קריטי עבור אלגוריתם קריטי עבור אלגוריתם קריטי שלך.
בחירת ה-Algorithm for Mobile
RSA: תמיכה רחבה אך רבת משאבים
RSA נשאר האלגוריתם הסימטרי התומך ביותר, זמין כמעט בכל ספריה קריפטוגרפית.מאזני החוזק שלה עם אורך מפתח; מפתח 2048 סיביות הוא המינימום המומלצת על ידי FLT:0NISTFLT:1 נכון לשנת 2025.עם זאת, הצפנה RSA ודה-פענוח הם גדלים חישוביים יקרים, במיוחד עבור קידודים ארוכים יותר.
ECC: Smaller Keys, Faster Operations
אלפטי קרב Cryptography (ECC) הפך לבחירה המועדפת עבור יישומים ניידים מודרניים. מפתח ECC 256 סיביות מספק אבטחה דומה מפתח של 3072-bit RSA, להפחית באופן דרסטי את גודל האישורים ונתונים המועברים. ECC פעולות הם בדרך כלל מהירים יותר עבור הדור המרכזי וחתימה, המהווה יתרון משמעותי על מעבדי CPU ניידים של 256 ו- Android לספק חומרה cc-reative תמיד יש צורך מאובטחים באמצעות עקומת XCC (ה-ACC) ו-Acc-ACTed.
Diffie-Hellman ו- Key Exchange Protocols
דיפי-הלמן (DH) וגרסתו החמקמקה (ECDH) אינם משמשים ישירות להצפין נתונים, אלא קריטיים להקמת סוד משותף על ערוץ לא מאובטח.באפליקציות ניידים, ECDH מועסק לעתים קרובות כחלק מ-TLS Handhake כדי ליצור מפתחות הפעלה מופשטים.
יישום פלטפורמה-Specific Implementation Tips
iOS:מינוף של Enclave ו CryptoKit
אפל מספקת שני API עיקריים עבור הצפנה סימטרית: מסגרת אבטחת המורשת ומסגרת הקריפטו-קייטי המודרנית שהוצגה ב- iOS 13. CryptoKit תומכת במבצעים ברמה גבוהה לחתימה, אימות והסכם מפתח באמצעות עקומות NIST (P-256, P-384, P-5) ו- Curve25519, כדי לאחסן מפתחות פרטיים, תמיד להשתמש ב- Secure Enve כאשר זמין (on 5 ואילך) במעבד מאובטח, כדי למנוע גישה ישירה, כדי לשמור על ידי SecureF מאובטח, לא ניתן להחזיר את ה-Reliclicliclimate, כלומר, רק כדי לשמור על ידי SecureF1F1, כדי לשמור על ידי SecureF1, כדי לשמור על ידי SecureF1F1Climate, כדי לשמור על ידי SecureF מאובטח, כדי לשמור על ידי SecureF1, כדי לשמור על מנת לשמור על מנת לשמור על ידי SecureF1, כדי לשמור על מנת לשמור על מנת לשמור על מנת לשמור על מנת לשמור על עצמו, כדי לשמור על עצמו, כדי לשמור על מנת לשמור על עצמו, כדי לשמור על עצמו, כדי לשמור על מנת לשמור על עצמו, כדי לשמור על מנת לשמור על עצמו, כדי לשמור על עצמו, כדי לשמור על עצמו, כדי לשמור על מנת לשמור על עצמו, כדי
אנדרואיד: KeyStore & StrongBox
(הופנה מהדף ה-FLT:3) מספק, המאפשר למפתחים מהונדסים ב-Auto-generated, אשר ניתן להבטיח מכשירים מבוססי חומרה (TEE) או שבב אבטחה ייעודי (StrongBox) החל מ- Android 9 (pI Level 28), באפשרותך לבקש מפתחות ממוקדים ב-VerBox באמצעות פיתוח של מערכת ההפעלה הפרטית של RLT:4 ללא תמיכה סימטרית, שימוש ב-RLT5:5 עם אלגוריתמית של LT6 ומפורט ב-FSA (F) כדי לספק תמיכה מלאה ב-D7.
Cross-Platform Frameworks
(במסגרת כמו Flutter, React Native ו- Xamarin להוסיף שכבה נוספת של מופשטת.עבור פלוטר, חבילת 10 או תוסף ספציפי פלטפורמה (למשל, FLT:11 בשילוב עם הדור מפתח מולד) מומלץ. React Native Developers יכול להשתמש בספריות כגון FLT 10 עבור טיפול מפתח, אך אחסון תמיד צריך להיות נציג לפלטפורמת מפתח / מפתח / מפתחי) למנוע שימוש ב- JavaScript במקום שימוש בחומרהמתיקים, כגון פונקציות מורכבות.
ניהול מפתח מאובטח: הקרן של קידוד Aסימטרי
Never Hard-code Private Keys
מקשים פרטיים קשיחים לתוך האפליקציה בינארי הוא פגם אבטחה חמור.כל תוקף עם גישה לחבילת האפליקציה יכול להפוך את ה- בינארי לחלץ מפתחות קודים קשיחים. השתמש בפלטפורמת אחסון מאובטח (Keychain על iOS, Android KeyStore) או שירות ניהול מרחוק (KMS) עבור מתן מפתח. עבור יישומים מהונדסים לשרת, לשקול הנפקת מכשיר epheal-meral בזמן רישום מפתחות.
אחסון מהיר-Backed Storage
(המכשירים הניידים המודרניים כוללים חומרה מאובטחת ייעודית כגון Apple's Secure Enclave ו- Android's Trusted Publishing Environment (TEE) או StrongBox.מרכיבים אלה מבצעים קידוד וחתימה מבלי לחשוף את המפתח הפרטי למעבד היישום הראשי.במקום זמין, תמיד מעדיפים מפתחות מגובה חומרה.אם תמיכה בחומרה היא חובה (למשל, עבור טיפול בתשלום או נתונים לבריאות), שימוש ב-FLT על ידי Android- iOS (IF) ב-HD) ב- iOS.
« « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « «
מפתחות אסימטריים צריכים להיות חיים סופיים. ליישם מדיניות סיבוב מפתח: לדוגמה, ליצור מפתחות חתימה חדשים כל שישה חודשים ו deprecate הישן. בצד השרת, לשמור על רשימה שחורה או להשתמש מפתח ציבורי כדי לבטל מפתחות חשופים. יישומי מובייל צריך לשאול מעת לעת את השרת עבור מפתחות ציבוריים מעודכנים ולוודא שהם חתומה על ידי סמכות אמינה להימנע מקשים ציבוריים ללא הגבלת זמן; רענון אותם באמצעות שיחות מאובטחות.
המונחים: back
כאשר אנו תומכים בנתונים של משתמשים, מחליטים האם יש להוציא את המפתחות הפרטיים.מפתחים הקשורים למכשיר מסוים (למשל, עבור הצפנה מקומית) לא צריך להיות מגובה עד iCloud או Google Drive, שכן זה חותר תחת מודל האבטחה.
שיטות טובות ביותר לתקשורת בטוחה
שימוש בהצפנה היברידית עבור נתונים גדולים
הצפנה אסימטרית היא יעילה עבור עומסי תשלום גדולים.במקום, להשתמש בתכנית היברידית: ליצור מפתח סימטרי חד פעמי (למשל, AES-256-GCM), להצפין את הנתונים עם המפתח הזה, ולאחר מכן להצפין את המפתח הסימטרי באמצעות מפתח הציבור של הנמען. גישה זו משלבת את היעילות של הצפנה סימטרית עם ההפצה הבטוחה של הצפנה סימטרית.
תמיד לתקן את שרשרת האמון
כאשר החלפת מפתחות ציבוריים באמצעות שרת, לאמת כי המפתח הציבורי שייך לנמען המיועד. השתמש בשרשרת תעודה מושרשת CA מהימן, או ליישם אימות מחוץ לפס (למשל, QR סריקה עבור תרחישים עמיתים לpeer תרחישים). עבור שרת תקשורת, תמיד לאכוף TLS 1.3 עם אימות תעודה.Hard-code את המפתח הציבורי של השרת או להשתמש ב- CA כדי למנוע שימוש ב-Jack-Jack-Jack-iOS-F-F-F-A.
סודיות כוללת (PFS)
בפרוטוקולים להחלפה מרכזיים, תמיד להשתמש במפתחות אמפיריים (ECDHE) כך ששילוב המפתח הפרטי לטווח ארוך אינו חושף מפתחות של הפעלה בעבר, נכס זה, שנקרא סודיות מתקדמת מושלמת, מבטיח שגם אם תוקף מקבל מאוחר יותר את המפתח הפרטי של השרת, הם לא יכולים לפענח את התנועה שנרשמה בעבר.
שגיאות ללא ייבוש מידע
פעולות Cryptographic יכולות להיכשל בשל מפתחות לא חוקיים, נתונים מושחתים, או מחיקה של זמן.לעולם אל לחשוף הודעות שגיאה מפורטות למשתמש או להזין חומר מפתח גולמי.לדוגמה, אם אימות חתימה נכשל, להציג "שגיאה תקשורתית" גנרית ולא "שיחת חתימה של ECDSA" שיכולה לסייע לתוקפים או להשוואה קבועה בעת אימות חתימות או MACs כדי למנוע התקפות תזמון.
בדיקה וביקורת על המימוש שלך
מבחן יחיד עם Test Vectors ידועים
אימות ההצפנה שלך וחתימת פונקציות נגד וקטורים במבחן שפורסמו מ- NIST או RFCs.לדוגמה, בדיקת הצפנה RSA-OAEP באמצעות FLT:0.NIST CAVPFLT:1 וקטורים.לכתוב בדיקות יחידה המכסות מקרים קצה: אפס טקסט באורך, גדלים מרכזיים לא חוקיים, פגום מפתחות, קלטות גדולות להשתמש אחסון מאובטח כדי לאמת את המפתחות מאוחסנים כראוי ללא פגעה אמיתית.
בדיקות צמיגים ו Static Analysis
לבצע בדיקות חדירה רגילות המתמקדות ביישום ההצפנה.Viss התקפה משותפת כוללים התקפות מטה (לגבי גרף חלש יותר), דליפה של ערוץ צד (למשל, באמצעות ניתוח כוח או תזמון CPU), והתקפות ⁇ אוקל (למשל, על RSA עם PKCS#1.5) השתמש בכלים ניתוח סטטי (למשל, LTF: 0, LTRE) או קידודים מיושן (F) כגון קודים, או מפונקציות) או מפונקציות (FDuckations) כדי לזהות גירסאות קשיחות (מקודמיות) או קודים (מדומים, כגון: , , כגון: גירסאות קודמות, , גירסאות קודמות, כגון: גירסאות קודמות, , , , גירסאות 1DFDFDFDFDuckations) או , או , גירסאות 1 v.
בדיקה חוזרת לאחר עדכון הספרייה
ספריות קריפטוגרפיים לעיתים קרובות משחררות כתמים עבור פרצות התגלויות.לאחר עדכון ספריית (למשל, OpenSSL, Bouncy Castle, Conscrypt), להפעיל בדיקות רגרסנטיות מלאות כדי להבטיח כי הדור המרכזי, חתימה, פונקציות הצפנה עדיין לייצר פלטים בתוקף.לתשומת לב ל deprecatations: Apple deprecatcatcated הפונקציה FLT:24 עבור RSA לטובת CryptoKit; פונקציות ה-Google depregrates.
מלכודות נפוצות וכיצד להימנע מהם
שימוש ב-Unpredictable Random Number Generators
כל הפעולות ההצפנה תלויות במספרים אקראיים מאובטחים.אפליקציות ניידות חייבות להשתמש ב-FLT:26 על iOS ו-FLT:27 על אנדרואיד.לעולם אל תסמכו על מספר אקראי או על מנת לאפשר ל-FLT:29 מ-FLT:30, שכן אלה צפויים ויכולים לשבור את הדור המרכזי.
המונחים: key Encoding and Transmission
יש לקודד בתבנית סטנדרטית (למשל, DER או PEM) בעת שליחת מפתחות ציבוריים ברשת, להשתמש בסיס64 ⁇ בתוך שדה JSON או מיכל סטנדרטי כמו JWK (JSON Web Key) בזהירות עם הפסקות קו ובריחה.על גבי קצה הקבלה, פורמט המפתח לפני היבוא.
נכשלת בנשימה מרכזית
המפתחות שמעולם לא יפוגמו הופכים לסיכון ארוך טווח.התאמת בדיקות באפליקצייתך: אם תאריך יצירת מפתח הוא מבוגר יותר מסף (למשל 90 יום), עודדו את המשתמש לגלגל מחדש בצד השרת, לדחות את המפתחות שפוגגו. השתמש ב-Timestamp מהימן או להסתמך על השרת כדי לספק את הזמן הנוכחי באמצעות ממשק מאובטח.
▪ נסיגת צד-Channel Resistance
מעבדים ניידים פגיעים לתזמון ולהתקפות של אנליזות כוח. השתמש ביישום קבוע של כל הפעולות ההצפנה.רוב ממשקי API (למשל, CryptoKit, FLT:33) הם זמן קבוע על ידי עיצוב, אבל אם אתה משתמש בספריה של צד שלישי, לאמת את ההתנגדות של צד-ערוצי שלה.
מסקנה
יישום הצפנה סימטרית באפליקציות סלולריות אינו רק עניין של קריאה למספר פונקציות של ספריות; הוא דורש הבנה עמוקה של בחירת אלגוריתם, ניהול מפתח, ממשקי API ספציפיים פלטפורמה, ובדיקות אבטחה.על ידי ביצוע הנהלים המפורטים כאן - הטמעת ECC על RSA שבו אפשרי, מינוף חומרה ממוקדת אחסון מאובטח, אכיפת סודיות צוות מושלמת קדימה, ובדיקה קפדנית נגד וקטורקים ידועים - יכולים לבנות יישומים דיגיטליים מאובטחים על ידי יישום נתונים סטנדרטיים של אבטחה סטנדרטיים של אפלים על בסיס קבוע של אבטחה סטנדרטיים של אבטחה סטנדרטיים של אבטחה סטנדרטיים ואבטחת נתונים סטנדרטיים.