Table of Contents
(היישומים המודרניים מטפלים בכמויות עצומות של נתונים רגישים - מזהויות אישיות ומידע פיננסי לתקשורת עסקית סודית - ביצוע הצפנה חזקה של אבטחה, תוך הפעלת שכבת אבטחה (TLS) מצפינת נתונים במעבר, הצפנה ברמת היישום מספקת הגנה נוספת, המבטיחה כי גם אם TLS הוא בגדר פגיעה, הנתונים נותרים בלתי ניתנים לזיהוי לצדדים בלתי מורשים.
הבנה של הצפנה סימטרית: עקרונות ליבה ומשתנים מודרניים
בלבה, הצפנה אסימטרית פותרת את הבעיה הבסיסית של תקשורת בטוחה על ערוץ לא מהימן.המפתח הציבורי משמש להצפין נתונים, בעוד המפתח הפרטי המתאים מפענח אותו.גם אם תוקף יסיר את המפתח הציבורי ואת המסר המוצפן, הם לא יכולים לשחזר את הטקסט הפשוט ללא המפתח הפרטי.זה מאפשר לכל צד לשלוח מידע סודי למחזיק מבלי לדרוש החלפת סודות לפני כן.
האבטחה של הצפנה אסימטרית מסתמכת על הקושי המתמטי של בעיות מסוימות.האלגוריתמים הנפוצים ביותר נופלים לשתי משפחות עיקריות:0RSAIRFLT:1 (Rivest-Shamir-Adleman) ו-FLT:2 אלפטיק קריפטוגרפיה מבוססת על היקף האבטחה של Elipcontic Curve CryptographyFLT 3LT (EC) הומצא בשנת 1977, מבוסס על חוסר יכולת מעשית של גורמים מרכזיים של מערכת הביטחון של 302, בדרך כלל, כולל ⁇ .
[ה] חיוני להבין כי הצפנה אסימטרית היא FLT:0 לא תחליף להצפנה סימטרית: סימטרית היא יעילה מבחינה חישובית, והיא יכולה רק להצפין נתונים עד להיקף גודל שנקבע על ידי אורך המפתח (למשל, RSA-2048 יכול להצפין את המפתח של 245 על ידי אלגוריתם אבטחה אמיתי, כמעט תמיד להשתמש ב-ALT2Hbridated:
מתי להשתמש קידוד סימטרי ביישום האינטרנט שלך
הצפנה אסימטרית מתאימה באופן אידיאלי לכמה מקרים ספציפיים לשימוש באפליקציות אינטרנט:
- (FLT:0) הגשת נתונים של סודיות: 1 כאשר לקוח (browser, אפליקציה ניידת או שירות צד שלישי) שולח נתונים רגישים לשרת שלך, מצפין אותו עם המפתח הציבורי של השרת שלך מבטיח שרק השרת שלך יכול לקרוא אותו, גם אם שכבת ה- TLS נפגעת או הנתונים מתפרסם ב- Proxy ביניים.
- (FLT:0) העברת מוצפנת מקצה לקצה: FIR-to-end: 1) על ידי יצירת זוגות מרכזיים עבור כל משתמש והפצת מפתחות ציבוריים באמצעות במאי מהימן, אתה יכול לבנות מערכת הודעות מוצפנת שבה רק הנמען המיועד יכול לפענח הודעות.
- (FLT:0) חתימה ואימות: FIRLT:1 (באמצעות המפתח הפרטי לחתום על נתונים (למשל, בקשת JWT או API) מאפשר למקבלים לאמת אותנטיות ויושרה עם המפתח הציבורי המתאים.זהו הבסיס של פרוטוקולים אימותים רבים, כולל SSH ו-TLS אישורים.
- (FLT:0) חילופי מפתח: הצפנה אסימטרית משמשת למפתחים סימטריים בפרוטוקולים כמו TLS 1.3. ביישום שלך, אתה יכול להשתמש בו כדי להחליף באופן מאובטח מפתח הצפנה עבור פעולות סימטריות הבאות.
- (FLT:0) קידום סודות מאוחסנים:FLT:1eur לתקשורת בשרת-ל-סרבר או כאשר אחסון נתונים מוצפנים של תצורה מוצפנת, הצפנה אסימטרית יכולה לאבטח סודות במנוחה, עם גישה נשלטת על ידי החזקה של המפתח הפרטי.
מדריך שלב-בי-Steptlementation Guide
1 יצירת מפתח חזק
הבסיס של מערכת הצפנה אסימטרית שלך הוא זוג מפתח מאובטח.השיטה שאתה בוחר תלויה בסביבת השרת שלך.עבור רוב יישומי האינטרנט, FLT:0 OpenSSLIRFLT:1 הוא הכלי הסטנדרטי.You יכול ליצור מפתח פרטי RSA-2048 עם:
פותחים את genpkey -algorithm RSA -out Private key.pem -pkeyopt rsa keygen bits:2048
ואז להפיק את המפתח הציבורי:
פותח את ה- rsa -pubout - ב- key.pem -out Public key.pem
לחלופין, עבור ECC (התקבלה ליעילות), השתמש:
אנקדל אנקדלם -genkey - שם ראשי256v1 -out ec private key.pemFLT:0opensl ec -pubout - in ec private key.pem -out ec Public key.pe ex key.
בסביבה של Node.js, אתה יכול ליצור מפתחות באמצעות מודול בנוי-in:0
ההרחבה של KeyPairSync } דורשת ('קריטו'); FLT:0const {Key, PrivateKey } = CreateKeyPairSync('rsa', { ModulusLength: 2048 });
בדפדפן, ה- Web Crypto API מספק את FLT:1 עבור RSA ו- ECC, אך המפתחות שנוצרו בדפדפן נשארים באחסון מאובטח של הדפדפן ולא ניתן לייצא בקלות לשרת שלך.עבור רוב תרחישי יישום האינטרנט, יש ליצור את המפתחות ולניהול השרת בצד השרת, עם רק מפתח ציבורי הנחשף ללקוחות.
2.התערו על המפתח הציבורי ללקוחות
לקוחות צריכים גישה למפתח הציבורי שלכם כדי להצפין נתונים לפני הגשתם.יש כמה דרכים בטוחות להפיץ אותו:
- (ב) [ה]הקובץ ה-APST או נקודת קצה: [ה-AP] משרת את המפתח הציבורי מכתובת URL ייעודית (למשל, FLT:2 או FLT 3: 3], ודא כי נקודת הסיום היא בשימוש ב- HTTPS ואמתה למנוע החלפת mitm.You יכול לכלול בדיקתם או hash של הציבור בקוד הלקוחות שלך כצעד אימות.
- (FLT:0) Embedd in Customer-side Code at Build Time:03FLT) 1 עבור דפים מחוננים בשרתים או יישומים ניידים מורכבים, הטמיעו את המפתח הציבורי ישירות.זה מבטל את הרשת הממושכת של הזמן, אך דורש בנייה מחדש של הלקוח בכל פעם שהמפתח מסתובב.
- (FLT:0) תשתיות מפתח ציבוריות (PKI): FLT:1 עבור פריסות בקנה מידה גדול, לשקול קבלת תעודות או באמצעות שרת מפתח המספק מפתחות ציבוריים חתומה.
בכל שיטה שתבחר, (FLT:0) תמיד ישרת את המפתח הציבורי על פני HTTPSFLT:1 כדי למנוע שיבוש.
מידע על הצד הלקוח
בדפדפן, ה- Web Crypto API הוא ממשק הקריפטוגרפי היחיד.זרימת העבודה האופיינית להצפנה היברידית: ליצור מפתח AES אקראי (למשל, 256-bit), להצפין את המשכורות עם AES-GCM, ולאחר מכן להצפין את המפתח של AES עם מפתח הציבורי RSA-OAEP של השרת. שלח שני citexts כאובייקט אחד של JSON כאן: זרימת המושגים:
- ייבוא מפתח הציבור של השרת (PEM Format) באמצעות ההרחבה "FLT:4".
- יצירת מפתח אקראי עם FLT:5 spec {FLT:6}
- גרף את ה-AES מפתח באמצעות אלגוריתם AES-GCM.
- מוצפן מפתח AES (כמו ע"י מגוונים) עם מפתח הציבורי RSA-OAEP באמצעות ההרחבה (FLT:8) עם FLT:9.
- לשלב את המפתח המוצפן, קידוד מוצפן, ואת וקטור ההחלמה AES-GCM (IV) למבנה יחיד של בסיס64 קודקוד.
עבור לקוחות ניידים או שולחניים, Native SDKs (למשל, מסגרת אבטחה iOS, Android Keyhouse) מציעים פרימיטיביים דומים.תמיד להשתמש ב-FLT:0authenticated הצפנהFLT:1 (כמו AES-GCM) עבור השכבה הסימטרית כדי למנוע tampering.לעולם לא להשתמש בספריית RSA; תמיד להשתמש ב-OAEP ⁇ עם פונקציה מאובטחת כמו SHA-256.
מידע על הצד Server
כאשר השרת מקבל את המטען המוצפן, הוא משתמש במפתח הפרטי שלו כדי לפענח את המפתח הסימטרי, ואז משתמש מפתח זה כדי לפענח את הנתונים בפועל.In Node.js, באמצעות מודול מובנה-inFLT:10:
(ב) ,Fs.readFileSync ('private key.pem', 'utf8'); FLT:0constמוצפן = Buffer. from(req.body.encrypted key, 'בסיס64'); FLT:1constמוצפן = Buffer.
פענוח המפתח הסימטרי עם:
קידוד מפונק (Credit descryptedKey) = Crypto.privateDecrypt (המפתח:0 מפתח: PrivateKey,FLT:1 ⁇ : Crypto.constants.RSA PKCS1 OAEP PADDING,OVAFLT:2 OaepHash: "sha'Fearve3"; מוצפן);
לאחר מכן השתמש מפתח זה כדי לפענח את הנתונים עם AES-GCM:
[ה] פענוח = קריפטו.יצור דיפרייב (aes-256-gcm), decryptedKey, iv); iv;IRFLT:0const authTag= Buffer. from(req.body.auth tag, 'base64'); FLT:1decipher.
תמיד לאמת את תג האימות כדי להבטיח שלמות ciphertext. בייצור, לטפל שגיאות בחסד מבלי להדליף מידע על המפתח הפרטי או על תהליך הדה-מקוד.
5. Handle Key Storage and Access Control
המפתח הפרטי הוא תכשיט הכתר של מערכת הצפנה שלך.אחסן אותו עם אמצעי האבטחה הגבוהים ביותר הזמינים:
- (FLT:0) מודולי אבטחה של אבטחה (HSM): ibph:1 עבור אבטחה ברמת הארגון, השתמש ב- HSM או בענן HSM (למשל, AWS CloudHSM, Azure Key Vault) המבצעים פעולות פענוח בתוך חומרה חסימת טמפר-הגנה.המפתח הפרטי לעולם לא עוזב את המכשיר, וגישה נשלטת באמצעות מדיניות IAM.
- (FLT:0Key Management Services:FLT:1) שירותים כמו AWS KMS או Google Cloud KMS לנהל באופן מאובטח את המפתחות ולספק APIs פעמוני פעמוני פעמוני מבלי לחשוף את החומר העיקרי לשרת יישומים.
- (FLT:0) משתנה עם הרשאות מוגבלות: ⁇ FLT 1:1 אם HSM אינו אפשרי, לאחסן את המפתח הפרטי של משתנה הסביבה או מנהל סודות, להבטיח הרשאות קבצים הם 600, ולעולם לא קשה לקוד את המפתח בקוד המקור. השתמש בסודות כמו HashiCorpault Vault או חנות CI /CD.
- (FLT:0) דיסקר הצפנה: 1FLT בשעה המינימום החשוף, מצפין את מערכת הקבצים שבה המפתח שוכן ולהשתמש במדיניות רשת מגבילה כדי להגביל את הגישה למפתח.
בנוסף, היכנסו לכל פעולות הפעוט לביקורת, אך לעולם אל תכתבו את נתוני ה- סלקציה או המפתח הפרטי עצמו.
הפרקטיקה הטובה ביותר עבור יישום הצפנה של Robust Aסימטרי
ניהול מפתח ורוטציה
סיבוב מפתח הוא חיוני להגביל את ההשפעה של פשרה מפתח.אימוץ מדיניות סיבוב שמיישרת עם סובלנות הסיכון שלך: FLT:0rotate ככל האפשר FLT:1 תוך שמירה על יציבות תפעולית.תבנית נפוצה היא לשמור שני מפתחות פעיל: מפתח "נוכחי" ומפתח "בא" כאשר לקוח מבקש את המפתח, הוא מקבל את הנוכחי, בינתיים, מראש, אתה יכול למנוע את היישום הישן, לאחר מכן, כדי לשמור על לוח הזמנים המוצפן הישן, לאחר שאתה יכול להיות מוצפן, לאחר מכן, כדי לאבטח את זה עדיין יכול להיות מוצפן עם אבטחה, לאחר מכן, לאחר פתרון אבטחה מוקדם יותר, לאחר זמן קצר יותר, לאחר מכן, לאחר זמן קצר יותר, לאחר מכן, לאחר מכן, לאחר מכן, עם לחץ על מנת למנוע את ההצפנה של אבטחה מוקדם יותר, לאחר מכן, עם לחץ על מנת למנוע את זה עדיין מוצפן מוקדם יותר, עם אבטחה מוקדם יותר, עם לקוחות פוטנציאליים של אבטחה מוקדם יותר, לאחר זמן קצר יותר, לאחר זמן קצר יותר, לאחר זמן קצר עם לחץ על ידי שימוש בארכיון הישן.
(ב) ויקרא י"א): "התנחומאים" (ב"א) ב[[1924]], [[1924]], [[1924]], [[1924]]]]]]]], [[1924]]]]]]]], [[1924]]]]]]]]]]]]]], [[1924]]]]]]]]]], [[1924]]]]]]]]]]]]]], [[1924]]]]]]]]]]]], [[1924]]]]]]]]]]]], [[1924]], [[1924]]]]]], [[1924]]]]]]]]]]]]]]]]]]]] ו[[1924]], [[1924]]]]]], [[1924]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]], [[1924]], [[1924]], [[1924]], [[1924]], [[1924]]]]]], [[1924]], [[1924]], [[1924]], [[1924]], [[1924]], [[1924]], [[1924]]]]]]]], [[1924]]]]]]]], [[[[1924]]]],
בחרו את ההצפנה הנכונה
(הופנה מהדף AES-GCM הוא תקן התעשייה מכיוון שהוא מספק סודיות ויושרה במבצע אחד.כאשר מצפין את המפתח הסימטרי עם RSA, השתמש ב-FLT:2RSA-OAEPFLT 3 עם SHA-256 (או יותר גבוה) לשימוש ב-ALT5 (A) ל-ACC יש צורך בהתקפות בלעדיות (Lyf) של LT5 .
הגנה מפני מלכודות נפוצות
- (FLT:0) לעולם אל תשתמשו ב- IVs או לא ב- nonces:cioFLT:1) דורש IV ייחודי להצפנה עם אותו מפתח. השתמש ב-96 סיביות אקראי 96 גרם טרי בכל פעם.
- (ב) עיין:0) ,(ה) עיין ב-[[1924]]: "התב"ה, "התחילה" (ב"ה) היא ש"התמ"ל) היא בעלת ערך רב ואורך צפוי לפני ניסיון לפענח נתונים.
- (FLT:0)Afree תזמון ערוצים: FLT:1ir השתמש בהשוואה קבועה לתגי אימות.ספריות ברמה גבוהה בדרך כלל מטפלות בזה, אך קוד מותאם אישית יכול להיות פגיע.
- (ב) [13] לא משתמשים באותו זוג מפתח עבור הצפנה וחתימות דיגיטליות אלא אם כן הפרוטוקול שלך דורש זאת במפורש (ואפילו אז, השתמש במפתחות נפרדים במידת האפשר).
אופטימיזציה
הצפנה אסימטרית היא איטית.עבור יישומים בעלי ביצועים גבוהים, לשקול הסרת פענוח לשירות ייעודי או באמצעות האצה חומרה.בדפדפן, יצירת מפתחות AES וביצוע פעולות ציבוריות-קיווי הוא מהיר מספיק עבור הגשת טופסי מזדמנים, אבל עבור קבצים גדולים או תקשורת בזמן אמת, לשקול שימוש ב- TLS עם אישורים במקום.
דוגמה לשילוב אמיתי-עולמי
דמיינו יישום אינטרנט רפואי שבו מטופלים להגיש רשומות רפואיות.היישומים משתמשים הצפנה סימטרית כדי להגן על נתונים רגישים בשכבה היישום, אפילו מעבר ל- TLS. כאשר המטופל מעלה PDF, התוקפים יוצרים מפתח אקראי AES-256-GCM, מצפין את ה- PDF, ולאחר מכן מצפין את המפתח של AES עם מפתח ה-RSA של בית החולים.
דפוס זה מקנה לכל תרחיש שבו סודיות נתונים נגד הפשרה של השרת היא קריטית.זה גם מאפשר הצפנה מבוקרת לחולה: המטופל יכול להחזיק את המפתח הפרטי ולשתף את המפתח הציבורי עם בית החולים, נותן למטופל יכולת פענוח בלעדית.
משאבים חיצוניים וקריאה נוספת
כדי להעמיק את ההבנה שלך להישאר הנוכחי עם שיטות הטובות ביותר, להתייעץ עם מקורות סמכותיים אלה:
- (ב) [ה]: [ה] [ה]] [ה]], [ה]], [ה]], [ה]]], [ה]], [ה]][ה]]], [ההנחיה] [ה], [ה] ב[[ה[[ה[[המאה ה-20]],]], [[ה[[1924]]]]]],]], [[1924]]]]]]]]]]]]
- (ב) [ה]] [ה]] [ה]]] ב[ה] ל[ה]] ל[ה]] ל[ה] [ה] ל[ה]]] [ה]]] [ה]]] [ה]] [ה] ל[ה] [ה] [ה] [ה]]] [ה] [ה] [ה] [ה]]] [התב[ה]]]] [ה] [ה]]]]] [ה] [ה]] [ה] [ה] [ה] [ה] [ה] [ה] [ה] [ה]]] [ה]]]]]]] [ה]]]]]]] [ה] [ה] [ה] [ה] [ה] [ה]]]]] [ה]]]] [ה] [ה] [ה] [ה]]]] [ה] [ה]]] [ה]]]]] [ה] [ה] [ה] [ה] [ה]]]]]]]]]]]]]]]]]]]] [ה][
- (ב) [ה]ה]: [ה] [ה] [ה]] [ה]]] [ה]] [ה]]] [ה]]][ה]]][ה]]]]][ה]]]], [התב"ה']: [ה'[2] ה'[2 ה'[24]
- (ב) [ה]ה[[המאה ה-1]], [[המאה ה-20]], [[1924]]]]]], [[1924]]]]]], [[1924]]]]]]]]]]]], [[1924]]]]]]]]]], [[1924]]]]]]]]]]]]]], [[1924]]]]]]]]
- (הופנה מהדף Crypto APIFLT:1) - התייחסות מפורטת ל- API של הדפדפן עבור הצפנה סימטרית.FLT:2https: html, Reeloper.mozilla.org/en-US/docs/Web/API/Web Crypto APIFLT 3IFLT 3.
מסקנה
הגדלת הצפנה סימטרית ליישום האינטרנט שלך היא שדרוג רב עוצמה לאדריכלות האבטחה שלך.זה מגן על נתונים רגישים גם כאשר ערוץ השידור נפגע, מאפשר תקשורת בטוחה ללא סודות משותפים מראש, ומספק בסיס לתכונות כמו הצפנה מקצה לקצה וחתימות דיגיטליות. על ידי הבנת עקרונות הליבה - הדור המרכזי, הצפנה היברידית, ניהול, יישום מרכזי ומאובטח - אתה יכול לפרוס מערכת שמתנגדת הן להתקפות אבטחה פאסיביות ו-41 מערכות אבטחה חזקות.