Data Encryption Standard

מתוך ויקיפדיה, האנציקלופדיה החופשית
קפיצה אל: ניווט, חיפוש

Data Encryption Standard (בראשי תיבות: DES), היה תקן הצפנת נתונים שפותח ב־1975 על ידי IBM בשיתוף פעולה עם הסוכנות לביטחון לאומי. האלגוריתם התקבל בשנת 1976 כחלק מדרישת תקן עבור הממשל האמריקאי להצפנת נתונים בעולם האזרחי ושימש בתפקיד זה עד נובמבר 2001, אז הוחלף בתקן החדש Advanced Encryption Standard. למרות זאת DES נמצא עדיין בשימוש נרחב בגרסה המשולשת שלו, בעיקר בתחום הבנקאות.

מבנה הצופן[עריכת קוד מקור | עריכה]

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

רשת פייסטל[עריכת קוד מקור | עריכה]

Postscript-viewer-shaded.png ערך מורחב – רשת פייסטל

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

פירוט הצופן[עריכת קוד מקור | עריכה]

תיבת תמורה סטטית ראשונית והתיבה ההופכית לה. טבלה זו נקראת Initial permutation בקיצור IP
"תיבת הרחבה" \ E ו"תיבת תמורה" \ P
DES untwisted ladder.jpg

הקלט הוא בלוק טקסט קריא בגודל 64 סיביות ומפתח הצפנה סודי \ K בגודל 64 (בפועל 56) סיביות. באמצעות פרוצדורת הרחבת מפתח מרחיבים ומחלקים את המפתח ל-16 מקטעים בני 48 סיביות, כל אחד מהם משמש עבור סבב אחד. מכינים 8 תיבות החלפה (S-box) סטטיות \ S_1,S_2,...,S_8 המייצגות פונקציות שמחזירות פלט של 4 סיביות עבור קלט של 6 סיביות. תיבות ההחלפה מיוצגות באמצעות טבלה (ראו תרשים להלן).

מכינים "תיבת הרחבה" (\ E בתרשים) ו"תיבת תמורה" (\ P בתרשים), המייצגות פונקציות מיפוי לפי ערכים קבועים. התיבה E (קיצור של Expansion) היא תיבת תמורה/הרחבה, שתפקידה בנוסף להרחיב את הקלט מ-32 סיביות ל-48 סיביות. התיבה P (קיצור של Permutation) היא תיבת תמורה סטטית נוספת שממירה את הקלט בסוף כל סבב תוך שמירה על גודלו - 32 סיביות. בשלב הראשון מבצעים תמורה חד פעמית על כל סיביות הקלט באמצעות תיבת תמורה סטטית הנקראת \ IP (ראו תרשים) ובסיום כל 16 הסבבים מעבירים את הפלט בתיבת התמורה ההופכית לה \ IP^{-1}. לפעולה זו אין השפעה על בטיחות הצופן כלל ומקובל להתעלם ממנה כשמנתחים את הצופן. הסיבה לתוספת זו כמו שיקולים אחרים שהנחו את מפתחי הצופן לא היו נהירים בעיקר בשל העובדה שהם נחשבו לסוד לאומי. לדברי דון קופרשמידט הסיבה לתוספת זו טכנית בלבד, בשל העובדה ש-DES פותח בחומרה והחיווט היה נוח בצורה זו. סדר הפעולות בכל הסבבים זהה. תחילה מחלקים את קלט האלגוריתם לשני חצאים \ L_0, R_0 בהתאמה ובכל סבב מבצעים כדלהלן:

\ L_i=R_{i-1},
\ R_i = L_{i-1} \oplus f(R_{i-1}, K_i)
כאשר \ f(R_{i-1},K_i)=P(S(E(R_{i-1}) \oplus K_i)).

פעולת הפונקציה \ f מתבצעת רק על מחצית הקלט (היינו 32 סיביות). מחצית אחת משמשת כקלט לפונקציה f שהפלט שלה משמש כמפתח להצפנת המחצית השנייה (ב-XOR), המחצית הראשונה אינה מוצפנת והיא נחשבת מעין מפתח הצפנה, משום כך מועברת לסבב הבא ללא שינוי כדי לאפשר פענוח. הפונקציה \ f מורכבת משילוב הפונקציות המתוארות: הפונקציה \ E ממפה "ומגדילה" את הקלט לפלט של 48 סיביות (כל סיבית קלט אחת משפיעה על פלט הפונקציה לפחות פעם אחת). תיבת ההחלפה S (ראו להלן) מבצעת פעולה לא-לינארית על הקלט והפונקציה \ P ממפה "ומכווצת" את הקלט לערכים בגודל 32 סיביות.

מהלכי הצופן[עריכת קוד מקור | עריכה]

קלט: טקסט קריא M המיוצג כמחרוזת 64 סיביות על ידי המערך m_1,m_2,...,m_{64}. מפתח K שהוא מחרוזת של 64 סיביות המיוצגת על ידי k_1,k_2,...,k_{64}.
פלט: מחרוזת הסיביות C=c_1,c_2,...c_{64}.

1. הכנת מפתח[עריכת קוד מקור | עריכה]

את המפתח K מרחיבים למערך של 16 כניסות בגודל 48 סיביות (סך הכול 768 סיביות) כדלהלן:
  1. מכינים מערך עזר v באורך 16 כניסות שערכיו לפי האינדקס i הם; עבור i\in\{1,2,9,16\} מציבים v_i=1 בכל היתר v_i=2.
  2. משתמשים בטבלה \text{PC1} כדי להעתיק את סיביות המפתח K לשני משתנים מקומיים C,D בגודל 28 סיביות כל אחד בהתאמה לפי הסדר המופיע בטבלה. כלומר הערך ההתחלתי יהיה C_0=k_{57},k_{49},k_{41},...,k_{36} ו-D_0=k_{63},k_{55},...,k_4. שים לב שלא כל הסיביות הועתקו (רק 56 מתוך 64). ההעתקה מתבצעת ברמת סיביות לפי האינדקס, כלומר k_{57} פירושו העתקת הסיבית במיקום ה-57 במפתח K (החל מאפס).
  3. הכנת 16 תת-מפתחות. עבור i=1 עד 16 מבצעים:
    1. C_i=(C_{i-1} \lll v_i), כלומר תוצאת הערך הקודם של C לאחר הזזה מעגלית לשמאל לפי v_i.
    2. D_i=(D_{i-1} \lll v_i), באופן דומה D הוא תוצאת הזזה מעגלית לשמאל של ערכו הנוכחי v_i פוזיציות.
    3. K_i=\text{PC2}(C_i \ \| \ D_i). משרשרים ביחד את שני החלקים למערך בגודל 56 סיביות b_1,b_2,...,b_{56} ונעזרים בטבלה \text{PC2} כדי לבחור 48 סיביות מתוכן עבור מפתח הסבב הנוכחי, לפי האינדקסים (כלומר K_i=b_{14},b_{17},...,b_{32}).

2. תמורה פותחת[עריכת קוד מקור | עריכה]

משתמשים בטבלה \text{IP} כדי לערבב את סדר סיביות המסר; \text{IP}(m_1,m_2,...,m_{64}) ומחלקים את התוצאה לשני חצאים L_0,R_0. ערכי המחצית השמאלית הם L_0=\{m_{58},m_{50},...,m_8\} וערכי המחצית הימנית R_0=\{m_{57},m_{49},...,m_7\}. פעולה זו אינה קריפטוגרפית.

3. הסבבים[עריכת קוד מקור | עריכה]

עבור i=1 עד 16 מבצעים לפי הנוסחה המתוארת לעיל, תחילה L_i=R_{i-1} ומחשבים את P(S(E(R_{i-1})\oplus K_i)) כדלהלן:
  1. הרחבה. מעתיקים את R_{i-1}=\{r_1,r_2,...,r_{32}\} ממערך של 32 סיביות למערך T באורך 48 סיביות לפי הטבלה \text{E}. לאחר ההרחבה T=\{r_{32},r_1,r_2,...,r_{32},r_1\} (שים לב שסיביות מסוימות מועתקות יותר מפעם אחת).
  2. מפתח. מבצעים XOR עם המפתח המורחב המתאים לסבב הנוכחי: T = T\oplus K_i.
  3. החלפה. מחלקים את המערך T לשמונה כניסות (B_1,B_2,...,B_8) כל אחת מהן באורך 6 סיביות המסומנות \{b_1,b_2,...,b_6\} ומבצעים החלפה של כל הכניסות עם שמונה תיבות ההחלפה המתאימות; S_1(B_1),S_2(B_2),...,S_8(B_8). כל תיבת החלפה ממפה מחרוזת של שש סיביות קלט למחרוזת של ארבע סיביות המצויות בשורה r בעמודה c בטבלה. כאשר מספר השורה r=2\cdot b_1+b_6 הוא מספר שלם באורך שתי סיביות בטווח [0..3]. ארבע הסיביות הנותרות b_2b_3b_4b_5 מייצגות מספר שלם בבסיס 2 בטווח [0..15] (ספרה הקסדצימלית אחת) שמשמש כמספר העמודה. לדוגמה S_1(\text{''011011''}) מניב r=1 ו-c=13 והפלט הוא 5.
  4. תמורה. משתמשים בתיבת התמורה \text{P} כדי לסדר מחדש את סיביות T לפי האינדקסים. כלומר התוצאה תהיה T=\{t_{16},t_{7},...,t_{25}\}.
  5. מצפינים את החלק השמאלי: R_i=L_{i-1}\oplus T.

4. סיום[עריכת קוד מקור | עריכה]

  1. שני החצאים האחרונים R_{16},L_{16} מתחלפים ביניהם.
  2. מבצעים את התמורה המסיימת ההופכית \text{IP}^{-1}, כלומר C=\{b_{40},b_8,...,b_{25}\}. שוב פעולה זו אינה קריפטוגרפית.
  3. התוצאה היא C.

וקטור בדיקה[עריכת קוד מקור | עריכה]

המסר הוא הטקסט "Now is the time for all " באורך 24 אותיות (בקידוד ASCII) ומפתח ההצפנה הוא המחרוזת בייצוג הקסדצימלי:

Key = 0123456789ABCDEF

התוצאה היא הטקסטים הבאים בבסיס הקסדצימלי:

              N o w   i s   t  h e   t i m e    f o r   a l l
Plaintext  = 4E6F772069732074 68652074696D6520 666F7220616C6C20
Ciphertext = 3FA40E8A984D4815 6A271787AB8883F9 893D51EC4B563B53

פענוח[עריכת קוד מקור | עריכה]

הפענוח מתבצע עם אותה פונקציה ועם אותו מפתח אך בסדר הפוך. כלומר בתהליך הרחבת המפתח לעיל מסדרים את המפתח באופן הבא: K_{16},K_{15},...,K_1. הפעולות \text{IP} ו-\text{IP}^{-1} מבטלות אחת את השנייה, כך שאפשר להתעלם מהן. מה שמותיר אותנו עם שני החצאים האחרונים R_{16},L_{16} מהסבב האחרון של ההצפנה. כעת, מייד עם תחילת הלולאה הראשית בפענוח L_{16}=R_{15} (כזכור במעבר מסבב לסבב החצי הימני אינו משתנה אלא רק מחליף מקום עם החצי השמאלי) לכן הפעולה:

R_{16}\oplus f(L_{16},K_{16})

שקולה למעשה ל:

L_{15}\oplus f(R_{15},K_{16})\oplus f(R_{15},k_{16})=L_{15}

על כן לאחר הסבב הראשון למעשה חוזרים צעד אחד לאחור ומתקבלים החצאים R_{15},L_{15} (מהסבב הקודם של ההצפנה). בסבב הבא מבצעים את אותה פעולה עם K_{15} וכן הלאה ובדרך זו משחזרים את יתר הסבבים.

פרוצדורת הרחבת מפתח[עריכת קוד מקור | עריכה]

להרחבת המפתח, צופן DES משתמש בשתי טבלאות סטטיות \ PC1 ו-\ PC2 (ראו תרשימים). המפתח מורחב ל-16 בלוקים בני 48 סיביות כל אחד. מתעלמים מהסיביות k_8,k_{16},...,k_{64} (כל סיבית שמינית), באמצעות טבלה \ PC1 מחלקים את 56 הסיביות האפקטיביות לשני משתנים \ C ו-\ D בני 28 סיביות כל אחד. עבור כל סבב מבצעים הזזה מחזורית לשמאל (Rotate left) של סיביות המשתנים \ C ו-\ D בסיבית אחת או שתים (בהתאם לערך התלוי במיקום הסיביות, עבור סבבים 1,2,9,16 מזיזים ב-1 עבור היתר מזיזים ב-2) משתמשים בטבלה \ PC2 כדי לשרשר את סיביות המשתנים לבלוק מפתח בגודל 48 סיביות.

PC-1 (שמאל)
9 17 25 33 41 49 57
18 26 34 42 50 58 1
27 35 43 51 59 2 10
36 44 52 60 3 11 19
PC-1 (ימין)
15 23 31 39 47 55 63
22 30 38 46 54 62 7
29 37 45 53 61 6 14
4 12 20 28 5 13 21
PC-2
28 3 5 1 24 11 17 14
4 12 19 23 10 21 6 15
2 13 20 27 7 16 8 26
40 30 55 47 37 31 52 41
56 39 49 44 48 33 45 51
32 29 36 50 42 46 53 34

מפתחות חלשים וחלשים למחצה[עריכת קוד מקור | עריכה]

על מנת שהצופן יצליח להסתיר היטב את הטקסט המקורי תהליך הכנת המפתח מנסה לשוות למפתח המורחב מראה ראנדומלי ככל האפשר. כבר ב-1973 התגלה שמפתחות הצפנה מסוימים עלולים לייצר מפתח מורחב בעל תבנית לא ראנדומלית ניכרת שהתוצאה שלה בלתי צפויה. למשל אם המשתנה הפנימי C מכיל 28 אפסים והמשתנה D מכיל 28 אחדים יווצר מצב שהצפנת DES תהיה זהה לפענוח DES עם אותו מפתח. כלומר:

\text{DES}_K(M)=\text{DES}_K^{-1}(M)

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

0x0101010101010101
0xFEFEFEFEFEFEFEFE
0xE0E0E0E0F1F1F1F1
0x1F1F1F1F0E0E0E0E

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

מפתחות הצפנה "חלשים למחצה" הם מפתחות שגורמים למצב שבו המפתח המורחב המתקבל מוגבל לשני תת-מפתחות בלבד כשהם חוזרים על עצמם בזוגות, ולהם התכונה הבאה:

E_{K_1}(E_{K_2}(M))=M

כלומר הצפנה עם מפתח אחד ואז הצפנה של התוצאה עם המפתח השני מחזירה את המקור. קיימים ששה זוגות של מפתחות DES חלשים למחצה והם:

0x011F011F010E010E, 0x1F011F010E010E01
0x01E001E001F101F1, 0xE001E001F101F101
0x01FE01FE01FE01FE, 0xFE01FE01FE01FE01
0x1FE01FE00EF10EF1, 0xE01FE01FF10EF10E
0x1FFE1FFE0EFE0EFE, 0xFE1FFE1FFE0EFE0E
0xE0FEE0FEF1FEF1FE, 0xFEE0FEE0FEF1FEF1

תיבת ההחלפה S-box[עריכת קוד מקור | עריכה]

תיבות ההחלפה של DES

תיבת ההחלפה הנקראת S-box (קיצור של Substitution box ראה תרשים) מייצגת פונקציות החלפה אי-לינאריות. תיבות ההחלפה של DES הן מקור חוסנו, הפונקציות שהן מייצגות הן הפעולות האי-לינאריות היחידות המופעלות על הקלט ואלמלא הן הצופן היה ניתן לפריצה בקלות. בדיעבד מסתבר כי התיבות עוצבו באופן כזה שהצופן יהיה עמיד יחסית כנגד קריפטואנליזה דיפרנציאלית. עוד ידוע כי גם ה NSA היה מעורב בתכנון תיבת ההחלפה של DES ואף שינה אחדים מן הערכים מנימוק לא ידוע, ההערכה המקובלת כיום היא שהשינויים נועדו לחזק את הצופן כנגד ההתקפה הדיפרנציאלית שהייתה ידועה להם ולמפתחי הצופן ב-IBM כבר אז.


מצבי הפעלה[עריכת קוד מקור | עריכה]

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

בטיחות[עריכת קוד מקור | עריכה]

ההתקפה הבולטת הראשונה כנגד צופן DES שסיבוכיותה טובה מעט יותר מכח גס, התגלתה על ידי אלי ביהם, כיום פרופסור בטכניון, והמנחה שלו לדוקטורט עדי שמיר, כיום פרופסור במכון ויצמן למדע. הם פרסמו ב-1990 את עבודת הדוקטורט שלו שעסקה בקריפטואנליזה דיפרנציאלית כנגד DES - טכניקה רבת עוצמה היעילה כנגד אלגוריתמים סימטריים נוספים. קריפטואנליזה דיפרנציאלית מסוגלת לגלות מפתח הצפנה של DES עם \ 2^{47} דגימות קלט-פלט נבחרות של האלגוריתם בהתקפה הנקראת התקפת גלוי נבחר. אולם ההתקפה הטובה ביותר המוכרת כיום כנגד DES היא דווקא הקריפטואנליזה הלינארית. שמציעה שיפור ניכר על פני קודמתה, מלבד יכולתה לגלות מפתח DES עם \ 2^{44} קלטים, אין צורך עבורה בטקסט-מקור נבחר אלא כל טקסט אפשרי. התקפה זו נקראת התקפת גלוי-ידוע.

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

התקפת כוח גס מקבילית באמצעות חומרה ייעודית, משיגה תוצאות משמעותיות כנגד DES. ב-1993 טען מיכאל ויינר שאפשר לבנות בהשקעה של כמיליון דולר מכונה שתפצח את DES בתוך 3.5 שעות במקרה הממוצע. לפי התכנון המקורי שלו המכונה צריכה להכיל כ-57,000 שבבים המסוגלים להריץ את DES במקביל. מאוחר יותר נבנתה מכונה כזו הלכה למעשה ובעלות נמוכה בהרבה. הארגון Electronic Frontier Foundation בנה מכונה לשבירת צופן DES בעלות של 250,000 דולר שבאמצעותה גילוי המפתח מתבצע בתוך יומיים וחצי בקירוב. כיום ניתן בהחלט לבנות מכונות מסוג דומה במחירים נמוכים בהרבה ובזמנים טובים יותר במידה ניכרת.

התקפה אחרת כנגד DES הנקראת התקפת יום הולדת היא התקפה אקראית מקבילית היעילה אף יותר מההתקפות המתוארות. התקפה זו מנצלת את תופעת פרדוקס יום ההולדת הידועה ומתבססת על ההנחה שהסיכויים ששני מפתחות שונים שנבחרו באקראי יניבו תוצאה זהה (עם טקסט מקור קבוע), גבוהים. Quisquater ו-Delescaille הראו שאפשר בהתקפה כזו לגלות מפתח DES ב-\ 2^{32} ניסיונות במקרה הממוצע.

גרסאות מתקדמות[עריכת קוד מקור | עריכה]

חולשתו העיקרית של DES היא גודל מפתח ההצפנה. גודל המפתח האפקטיבי של DES הוא רק 56 סיביות, שמונה מתוך 64 סיביות המפתח נחשבות כסיביות זוגיות (Parity) ואינן משפיעות על ההצפנה. בעיקר בשל עובדה זו נחשב DES בימינו כ"הצפנה חלשה" ואינו בטוח לשימוש בגרסה הבסיסית. דרך בטוחה יותר וזולה ליישום DES היא הצפנה מרובה. כלומר הצפנה חוזרת של הטקסט עם מפתחות הצפנה שונים. שיטה אחת כזו נקראת "2DES" או DES כפול. אם \ K_1,K_2 הם שני מפתחות DES שונים בגודל 56 סיביות כל אחד, ו-\ M הוא המסר המיועד להצפנה, השיטה היא:

\ \mbox{DES}2=\mbox{DES}_{K_2}(\ \mbox{DES}_{K_1}(\ M\ ))

במקרה זה מתקבל צופן DES עם מפתח הצפנה בגודל 112 סיביות. אף לא אחת מההתקפות המתוארות לעיל ישימה כנגד צופן עם מפתח בסדר גודל כזה. גם לא מתקפת כוח גס מקבילית על חומרה ייעודית. אולם מסתבר ששיטה זו פגיעה להתקפה הנקראת Meet in the Middle הדומה להתקפת יום הולדת לעיל. בהתקפה זו מנצלים זיכרון על חשבון זמן ביצוע. אם מאחסנים טבלת גיבוב של \ 2^{56} הצפנות DES עם מפתחות שונים הממוינות לפי סדר וחיפוש התנגשויות, אפשר לקצר את זמן ההתקפה ל-\ 2^{57}. כמות הזיכרון האדירה הדרושה להתקפה כזו עושה אותה כמעט בלתי ישימה באופן מעשי, אך ישנן שיטות לצמצום עלויות הזיכרון כך שאפקטיבית סיבוכיות התקפת כוח גס נגד DES כפול אינו עולה על 2^{57}.

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

\ \mbox{DES}3=\mbox{DES}_{K_2}(\ \mbox{DES}^{-1}_{K_1}(\ \mbox{DES}_{K_2}(\ M\ )))

כאשר \ \mbox{DES}^{-1}_{K_1} נקרא פענוח עם המפתח \ K_1. הסיבה למבנה זה היא בעיקר לצורך תאימות לחומרה הקיימת. ההתקפות המתוארות לעיל אינן ישימות כנגד שיטה זו ולמרות היותה איטית יותר היא נימצאת בשימוש נרחב כיום. כאמור בשל טכניקת Meet in the Middle, אפקטיבית גודל מפתח DES משולש הוא רק 2^{112}.

גרסה אחרת נקראת DESX בשיטה זו מצפינים את המידע לאחר הוספת שתי מחרוזות אקראיות בגודל 64 סיביות, כך שהמידע מוגדל ל-184 סיביות לפני ההצפנה. אם \ K הוא מפתח ההצפנה ו-\ K_1, K_2 הם מחרוזות אקראיות של 64 סיביות השיטה היא:

\ \mbox{DESX} = K_2\oplus \mbox{DES}_K(K_1\oplus M)

הסימן \ \oplus מייצג חיבור או אקסקלוסיבי. למרות היותה יעילה יותר מ-DES משולש, שיטה זו מעט פחות בטוחה וכן פחות נפוצה.


ראו גם[עריכת קוד מקור | עריכה]


קישורים חיצוניים[עריכת קוד מקור | עריכה]