בקריפטוגרפיה, **סודיות מושלמת קָדימה** (באנגלית: Perfect forward secrecy, ובקיצור PFS), וכן **סודיות מושלמת לפנים**, מתייחס למאפיין חשוב של פרוטוקול שיתוף מפתח שבו חשיפה של מפתחות סודיים ארוכי טווח שבהם נעשה שימוש לצורך שיתוף מפתחות השיחה, אין בה כדי לסכן את סודיות מפתחות השיחה שנוצרו בעבר על ידי הפרוטוקול. אמנם חשיפה של מפתח פרטי מאפשרת למתקיף להתחזות לקורבן בכל התקשרות עתידית, אך רצוי שחשיפה זו לא תאפשר לו לגלות מפתחות שיחה שנוצרו בעבר ונמחקו מהזיכרון בגמר השימוש בהם.

היסטוריה
--------

המושג סודיות מושלמת קדימה הועלה לראשונה בשנת 1990 במאמר חלוצי של כריסטוף גונתר "פרוטוקול שיתוף מפתח מבוסס זהות", בהמשך הנושא הורחב בספר לקריפטוגרפיה יישומית של מנזס וואן אורשוט. כמו כן המקבילה של סודיות מושלמת קדימה לפרוטוקול מבוסס סיסמה הוגדרה ב-1996 על ידי ג'בולין. בספח D.5.1 של תקן IEEE להצפנת מפתח ציבורי 1363-2000 נכלל דיון במאפיינים של סודיות מושלמת קדימה חד-כיוונית ודו-כיוונית שנקראת בקיצור 2WIPFS.

יישום
-----

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

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

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

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

סודיות קדימה חלשה
-----------------

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

ביטחון
------

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

דוגמאות
-------

פרוטוקול דיפי-הלמן נותר הפרוטוקול הפופולרי והנחקר ביותר להשגת סודיות מושלמת קדימה והוא בשימוש מעשי כחלק ממערכות הצפנה מתקדמות כמו:

* פרוטוקול שיתוף מפתח IKE של IPsec,
* HMQV
* STS
* EKE
* SKEME
* SIGMA
* פרוטוקול סיגנל

ראו גם
------

* פרוטוקול דיפי-הלמן
* אימות מסרים
* מפתח ציבורי

הערות שוליים
------------

1. ↑  Gunther, C.G. (1990). "An identity-based keyexchange protocol". Advances in Cryptology-Eurocrypt'89, Lecture Notes in Computer Science, vol. 434, eds. J.J. Quisqueter and J. Vandewalle. Springer-Verlag, Berlin, 29-37
2. ↑  Menzies, Alfred; van Oorscot, Paul C. Vanstone, SCOTT (1997). *Handbook of Applied Cryptography*. CRC Pres. מסת"ב 0-8493-8523-7
3. ↑  Jablon, David P. (October 1996). "Strong Password-Only Authenticated Key Exchange". ACM Computer Communication Review. 26 (5): 5–26. CiteSeerX 10.1.1.81.2594?Freely accessible. doi:10.1145/242896.24289

| * צ
* ש
* ע
קריפטוגרפיה |
| --- |
| 

| מושגי יסוד |
| --- |
| 
* פנקס חד-פעמי
* צופן בלוקים
* צופן בלוקים בר התאמה
* צופן זרם
* סודיות מושלמת
* ביטחון סמנטי
* הצפנה סימטרית
* הצפנה אסימטרית
* חתימה דיגיטלית
* הצפנה הומומורפית
* הצפנה מרובה
* הצפנה מאומתת
* הצפנה הסתברותית
* סכמת ריפוד אסימטרית אופטימלית
* אריזת מפתח הצפנה
* סודיות מושלמת קדימה

 |

 |
| 

| הצפנה קלאסית |
| --- |
| 
* מכונת הצפנה
* צופן החלפה
* צופן אתב"ש
* צופן קיסר
* צופן ויז'נר
* צופן ורנם
* צופן פלייפייר
* צופן היל
* אולטרה
* אניגמה
* ציקלומטר
* קולוסוס
* PURPLE
* ג'ייד
* מג'יק
* צופן שחלוף

 |

 |
| 

| צופן בלוקים |
| --- |
| 
* לוציפר
* AES
* 3DES
* DES
* Threefish
* Twofish
* Blowfish
* FEAL
* SEED
* CAST
* IDEA
* RC2
* RC6
* MARS
* RC5
* GOST
* Serpent
* MISTY
* KASUMI
* קמליה
* ARIA
* SAFER
* TEA
* LEA
* CLEFIA
* SEA
* Hummingbird
* PRESENT
* KATAN
* KeeLoq
* Simon & Speck
* אנוביס

 |

 |
| 

| אופני הפעלה |
| --- |
| 
* אופן הפעלה של צופן בלוקים
* EAX
* OCB
* IAPM
* CWC mode
* GCM
* CCM

 |

 |
| 

| צופן זרם |
| --- |
| 
* RC4
* Salsa20
* SOSEMANUK
* Grain
* E0
* A5/1
* A5/2
* A5/3
* A5/4
* MICKEY
* HC-128
* SNOW
* Trivium
* Rabbit
* ZUC
* ChaCha

 |

 |
| 

| הצפנה אסימטרית |
| --- |
| 
* פרוטוקול דיפי-הלמן
* חידות מרקל
* חתימת למפורט
* הצפנת תרמיל
* RSA
* הצפנת רבין
* חתימה דיגיטלית רבין
* צופן אל-גמאל
* חתימה דיגיטלית אל-גמאל
* DSA
* הצפנת בלום-גולדווסר
* ECC
* הצפנת קריימר-שופ
* הצפנת פאיי
* הצפנת מקאליס
* GGH
* NTRU
* עקום 25519
* חתימה דיגיטלית של שנור
* הצפנת אוקמוטו-אושיאמה

 |

 |
| 

| פרוטוקולים |
| --- |
| 
* עץ מרקל
* פרוטוקול אתגר-מענה
* פרוטוקול נידהאם-שרודר
* פרוטוקול קרברוס
* הוכחה באפס ידע
* פרוטוקול פייגה-פיאט-שמיר
* העברה עלומה
* חלוקת סוד
* TLS (SSL)
* Secure Shell
* MQV
* X.509
* פרוטוקול שיתוף מפתח
* מיסור שלא לפרסום
* פרוטוקול סיגנל

 |

 |
| 

| פרימיטיבים תאורטיים |
| --- |
| 
* מחולל פסבדו-אקראי קריפטוגרפי
* פונקציה חד-כיוונית
* תמורה חד-כיוונית
* סיבית קשה
* פונקציה פסבדו-אקראית קריפטוגרפית
* תמורה פסאודו-אקראית
* פונקציית גיבוב קריפטוגרפית
* וקטור אתחול
* פונקציית ספוג
* הצפנה מבוססת סריג

 |

 |
| 

| קריפטואנליזה |
| --- |
| 
* ניתוח תדירויות
* כוח גס
* התקפת איזון זמן/זיכרון
* תקיפת היפגשות באמצע
* קריפטואנליזה ליניארית
* קריפטואנליזה דיפרנציאלית
* התקפת גלוי-ידוע
* התקפת גלוי-נבחר
* התקפת מוצפן-נבחר
* פירוק לגורמים של מספר שלם
* התקפת ערוץ צדדי
* התקפת קורלציה
* התקפת שיבוש
* מודל אורקל אקראי
* התקפת התנגשויות

 |

 |
| 

| בעיות מתמטיות ואלגוריתמים |
| --- |
| 
* בעיית לוגריתם דיסקרטי
* תחשיב אינדקסים
* נפה ריבועית
* אלגוריתם rho של פולרד
* נפת שדה מספרים
* אלגוריתם רו של פולרד ללוגריתמים
* אלגוריתם פוליג-הלמן

 |

 |
| 

| פונקציות גיבוב קריפטוגרפיות |
| --- |
| 
* SHA
* MD5
* MD4
* SHA-1
* SHA-2
* SHA-3
* RIPEMD
* Skein
* BLAKE
* Grøstl
* SipHash

 |

 |
| 

| אימות וזיהוי |
| --- |
| 
* אימות זהות
* סיסמה
* קוד אימות מסרים
* Poly1305
* סיסמה חד-פעמית

 |

 |
| 

| נושאים נלווים |
| --- |
| 
* מספר אקראי
* מספר ראשוני
* יתירות
* מפתח שיחה
* סטגנוגרפיה
* הצפנה קוונטית
* הצפנה פוסט-קוונטית
* עקרון קרקהופס
* אבטחת מידע
* קריפטוגרפיה ויזואלית
* אליס ובוב
* מסיבת חתימה על מפתחות ציבוריים
* שידור מוצפן
* הצפנת דיסקים
* הצפנת סף
* חתימה דיגיטלית מבוססת פונקציית גיבוב
* פונקציה זניחה
* רשת פייסטל
* רשת החלפה-תמורה
* הלבנה
* אימות מסרים
* חתימה עיוורת
* חישוב רב משתתפים בטוח

 |

 |