עמוד הבית > DES > פענוח

פענוח

תמורה IP-1 המיושמת על גוש קדם הפלט היא ההפך של תמורה הסופית IP המיושמת על הקלט. יתר על כן, מ-(1) מקבלים:

(4)      R = L'
               L = R' (+) f(L',K)

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

(5)      Rn-1 = Ln
               Ln-1 = Rn (+) f(Ln,Kn)

כאשר עכשיו  R16L16  זה גוש הקלט שעבר תמורה בשביל חישובי הפענוח וה-L0 ו-R0  זה גוש קדם הפלט. זאת אומרת, לחישובי הפענוח עם R16L16  בתור קלט שעבר תמורה משתמשים ב-K16 במחזור ראשון, K15 במחזור השני וכו' כאשר ב-K1 משתמשים במחזור ה-16.

פונקצית הצפנה f  

סקיצה של החישובים של (f(R,K נתונה באיור 2:

 

f(R,K) איור 2 - חישובים של

 

נסמן ב-E פונקציה שלוקחת גוש בגודל 32 סיביות בתור קלט ומפיקה גוש בגודל 48 סיביות בתור פלט. נגדיר את E בצורה כזאת ש-48 הסיביות של הפלט שלה רשומות כ-8 גושים כל אחד בגודל 6 סיביות, שמקבלים בעזרת בחירה של סיביות הקלט בסדר בהתאם לטבלה הבאה:

טבלת בחירת הסיביות ל-E

             32     1      2     3     4      5
                   4     5   
  6     7      8      9
                   8     9    10   11    12    13
                 12   13    14   15    16    17
                 16   17    18   19    20    21
                 20   21    22   23    24    25
                 24   25    26   27    28    29
                 28   29    30   31    32      1

כלומר, שלוש  הסיביות הראשונות של(E(R הן הסיביות במקומות 32,1,2 של R כאשר שתי הסיביות האחרונות של (E(R הן הסיביות במקומות 32 ו-1.

כל אחת מפונקציות הבחירה ייחודיות S1,S2,.....S8  לוקחות גוש בגודל 6 סיביות בתור קלט ומפיקות גוש בגודל 4 סיביות בתור פלט וכפי שמתואר בעזרת הטבלה שמכילה את S1 המומלצת:

S1

              

מספר עמודה

 

 
 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15
מספר שורה
14  4 13  1  2 15 11  8  3 10  6 12  5  9  0  7
0
 0 15  7  4 14  2 13  1 10  6 12 11  9  5  3  8
1
 4  1 14  8 13  6  2 11 15 12  9  7  3 10  5  0
2
15 12  8  2  4  9  1  7  5 11  3 14 10  0  6 13
3

אם S1 זאת הפונקציה המוגדרת בעזרת טבלה זאת ו-B הוא גוש בגודל 6 סיביות אז (S1(B מוגדר באופן הבא: הסיבית הראשונה והאחרונה של B מיוצגת בבסיס 2 מספר בטווח 0-3. נסמן מספר זה ב-i. הארבע סיביות האמצעיות של B מייצגות מספר בטווח 0-15. נסמן מספר זה ב-j. תסתכלו בטבלה על המספר בשורה i ועמודה j. זה מספר בין 0 ל-15 והוא מוצג בצורה ייחודית ע"י גוש בגודל 4 סיביות. גוש זה הוא פלט של (S1(B  בשביל קלט B. לדוגמא, בשביל קלט 011011 השורה היא 01, כלומר שורה 1, והעמודה נקבעת ע"י 1101, שזאת עמודה 13. בשורה 1 עמודה 13 מופיע 5 - זה אומר שהפלט הוא 0101. פונקציות בחירה S1,S2,..S8 של הל האלגוריתם מופיעות בנספח.

פונקצית תמורה P מפיקה פלט בגודל 32 סיביות מ- 32 סיביות של קלט ע"י תמורה של סיביות של גוש הקלט. פונקציה זו מוגדרת ע"י הטבלה הבאה:

P

16   7  20  21
29  12  28  17
 1  15  23  26
 5  18  31  10
 2   8  24  14
32  27   3   9
19  13  30   6
22  11   4  25

את הפלט של (P(L בשביל פונקצית P המוגדרת ע"י הטבלה מקבלים מקלט L ע"י לקיחת הסיבית ה-16 של L בתור סיבית ראשונה של (P(L, את הסיבית השביעית בתור הסיבית השנייה של (P(L, וכו' עד הסיבית ה-25 של L שהיא הסיבית ה- 32 של (P(L. פונקצית התמורה P של האלגוריתם מופיעה בנספח.

כעת יהיו S1,S2,..S8 שמונה פונקציות בחירה שונות, ותהי P פונקצית תמורה ותהי E פונקציה המוגדרת לעיל.

כדי להגדיר  (f(R,K  אנו קודם נגדיר B1,B2,..B8 כגושים בגודל 6 סיביות כל אחד שמתקיים:

(6)

       B1B2...B8 = K(+)E(R)

ואז מגדירים את הגוש של (f(R,K   כך:

(7)                                         
P(S1(B1)S2(B2)...S8(B8))

לכן (K(+)E(R בהתחלה מחולק ל-8 גושים כמו שהראינו ב (6). אז כל Bi מתקבל כפלט של Si ו-8 הגושים (S1(B1)S2(B2)...S8(B8 של 4 סיביות כל אחד מאוחדים לגוש אחד של 32 סיביות, שהוא הקלט של P. אז הפלט (7) הוא הפלט של הפונקציה f עבור הקלטים R ו-K.

 

 לעמוד הקודם

לעמוד הבא
 
 

| מבוא | Blowfish | DES | Rijndael | Skipjack | Twofish |

| עמוד הבית | אודות | מפת האתר | מונחון | ביבליוגרפיה |

 

  ©איתן 2002. כל הזכויות שמורות למערכת המידע איתן.