3DES

3DES (או DES משולש) היא שיטת הצפנה משנת 1998 המבוססת על אלגוריתם DES, שנועדה לחזק את הבטיחות של האחרון לאור העובדה שגודל מפתח ההצפנה של DES הוא 56 סיביות בלבד – גודל שנחשב קטן יחסית (עבור טכנולוגיה של שנות ה-90). שיטת DES משולש מפצה על אורך המפתח בדרך זולה ופשוטה: הצפנה חוזרת עם DES תוך שימוש במפתחות הצפנה נוספים. לשיטת ההצפנה DES שני חסרונות בולטים: אורך הבלוק הוא 64 סיביות (8 בתים). לפי פרדוקס יום ההולדת לאחר הצפנת כארבעה מיליארד בלוקים, ההסתברות ששני בלוקים יוצפנו באמצעות אותו וקטור אתחול גבוהה במיוחד. אפשרות כזו היא בעייתית, ולכן משתמשי DES נאלצים להחליף מפתחות הרבה קודם. בעיה זו נפתרת רק באמצעות הגדלת הבלוק, כפי שנעשה ב-AES. אורך המפתח הוא 56 סיביות בלבד. המשמעות היא שאם מנסים את כל 72,057,594,037,927,936 האפשרויות, בוודאי ימצא המפתח הנכון. שיטת פריצה זו המכונה "כוח גס" (Brute Force) לא הייתה פרקטית בעבר. כשאלגוריתם DES הוצג לראשונה בשנת 1976 פריצתו הייתה הרבה מעבר ליכולת הטכנולוגית באותה תקופה. אולם כיום ניתן לבנות מחשבים ייעודיים מרובי מעבדים, בעלות של כמה עשרות אלפי דולרים, איתם אפשר לגלות מפתח DES בתוך מספר דקות. צופן 3DES נועד להתגבר על הבעיה השנייה. הצופן פועל עם שלושה מפתחות DES ולכן אורך המפתח הכולל הוא 168 סיביות. אורך זה מונע את האפשרות לפיצוח הצופן על ידי ניסוי כל המפתחות האפשריים (במגבלות כח המחשוב בימינו). קיימות שתי וריאציות של DES משולש: EEE, ו-EDE. בגרסת EEE (מסומנת גם 3DES3) משתמשים בשלושה מפתחות   K 1 , K 2 , K 3 {\displaystyle \ K_{1},K_{2},K_{3}} . תחילה מצפינים את הבלוק באמצעות המפתח   K 1 {\displaystyle \ K_{1}} , את התוצאה מצפינים באמצעות המפתח   K 2 {\displaystyle \ K_{2}} ואת התוצאה מצפינים באמצעות המפתח   K 3 {\displaystyle \ K_{3}} . הפענוח כולל הפעלת פונקציית הפענוח של DES בסדר הפוך של המפתחות. אם מסמנים את המסר המיועד להצפנה כ-   M {\displaystyle \ M} ופונקציות ההצפנה והפענוח כ-   E {\displaystyle \ E} ו-   D {\displaystyle \ D} בהתאמה, אפשר לסכם את השיטה: הצפנה:   E K 1 ( E K 2 ( E K 3 ( M ) ) ) {\displaystyle \ {\mbox{E}}_{K_{1}}({\mbox{E}}_{K_{2}}({\mbox{E}}_{K_{3}}(M)))} פענוח:   D K 3 ( D K 2 ( D K 1 ( M ) ) ) {\displaystyle \ {\mbox{D}}_{K_{3}}({\mbox{D}}_{K_{2}}({\mbox{D}}_{K_{1}}(M)))} בגרסת EDE (מסומנת גם 3DES2) משתמשים רק בשני מפתחות   K 1 , K 2 {\displaystyle \ K_{1},K_{2}} . תחילה מצפינים את הבלוק באמצעות המפתח   K 1 {\displaystyle \ K_{1}} , את התוצאה מפענחים באמצעות המפתח   K 2 {\displaystyle \ K_{2}} ואת התוצאה חוזרים ומצפינים באמצעות המפתח   K 1 {\displaystyle \ K_{1}} . הפענוח הופך את הפעולות ואת סדר המפתחות. השיטה מסוכמת כך: הצפנה:   E K 1 ( D K 2 ( E K 1 ( M ) ) ) {\displaystyle \ {\mbox{E}}_{K_{1}}({\mbox{D}}_{K_{2}}({\mbox{E}}_{K_{1}}(M)))} פענוח:   D K 2 ( E K 1 ( D K 2 ( M ) ) ) {\displaystyle \ {\mbox{D}}_{K_{2}}({\mbox{E}}_{K_{1}}({\mbox{D}}_{K_{2}}(M)))} יישום אלגוריתם DES בשיטה זו זכה לפופולריות משום שהוא מאפשר להשתמש באותו כלי (חומרה או תוכנה) לביצוע DES ו-3DES. כך משיגים שיפור בבטיחות ההצפנה על חשבון זמן ביצוע. מבחינת יעילות חישובית התוספת אינה כה משמעותית. מחקרים מראים , שחוזקו האמיתי של DES משולש אינו 168 סיביות כפי שהיינו רוצים, אלא רק 112. זאת משום ששיטות אילו פגיעות להתקפה הנקראת תקיפת היפגשות באמצע. אם מאחסנים טבלה של   2 113 {\displaystyle \ 2^{113}} תוצאות הצפנה ופענוח באמצעות DES עם מפתחות שונים, הממויינים בסדר לקסיקוגרפי, אפשר למצוא את המפתח ב-   2 112 {\displaystyle \ 2^{112}} ניסיונות. זה עדיין מספיק חזק, משום שאחסון כמות כזו של מידע כמעט אינו מעשי. אולם בשל חולשתו הראשונה של DES (שהוזכרה לעיל), רבים רואים ב-3DES מעין טלאי על האלגוריתם המתיישן עד שיוחלף במשהו טוב יותר. אלגוריתם ההצפנה AES הוא תקן ההצפנה אשר נבחר להחליף את DES. הצפנה מרובה Stefan Lucks: Attacking Triple Encryption (PDF), Fast Software Encryption 1998, pp 239–253.