עמוד הבית > Skipjack

Skipjack

סוג המחזור הבסיסי הטיפוסי של Skipjack יוצר חלופה אחרת למבנה מחזורי של Feistel שמשתמשים בו: DES, Blowfish וצפני גושים אחרים. בכל מחזור, אחד מארבע רביעיות של גוש עובר ארבעה מחזורים של Feistel בקנה מידה קטן, ורבע אחד אחר משנים אותו ע"י XOR עם מספר המחזור ואותו הרבע שעבר דרך Feistel בקנה מידה קטן, או לפני או אחרי הצעד הזה. ב-Skipjack אין צורך בשינוי סדר או מקום הסיביות, וזה עושה אותו יעיל ליישום במחשבים רב-תכליתיים.

ב-Skipjack יש 32 מחזורים. המחזורים האלה משני סוגים A ו-B.

מחזור מסוג A הולך באופן הבא:

הרבע הראשון של הגוש (נקרא W1) מוצפן ע"י "תמורה G", שהיא בעצם הצפנת Feistel בעלת ארבעה מחזורים. התוצאה, ומספר המחזור (כאשר מספרי המחזור הם מ-1 ועד 32), עוברים XOR עם הרבע הרביעי של הגוש (W4). אז כל רבע של הגוש מוזז למיקום הבא: W1 ל-W2 , W2 ל-W3, W3 ל-W4 ו-W4 ל-W1.

מחזור מסוג B הולך באופן הבא:

הרבע השני של הגוש (W2) עובר XOR עם מספר המחזור והרבע הראשון של הגוש (W1). אז הרבע הראשון של הגוש מוצפן ע"י "התמורה G". שוב כל רבע של גוש מוזז למיקום הבא: W1 ל-W2 , W2 ל-W3, W3 ל-W4 ו-W4 ל-W1.

סיבוב הרבעים לא מופסק אחרי המחזור האחרון. 32 המחזורים של  Skipjack מורכבים מ-8 מחזורי A, מ-8 מחזורי B, מ-8 מחזורי A ומ-8 מחזורי B. שימו לב שע"י כך שקודם הולך מחזר A ואחר כך מחזור B, הצורה של הרבע הראשון "בחלק הפנימי" עובר XOR עם אחד מהרבעים האחרים במחזור הראשון והאחרון.

תמורה G זה הצפנת Feistel בעלת ארבעה מחזורים, כרוכה בחילוק של הקלט שלה בעל 16 סיביות לשני חצאים בגודל 8 סיביות. כמו DES החצי השמאלי של הגוש נשאר ללא שינוי בכל מחזור, אך משמש כקלט לפונקציה f, שהפלט שלה עובר XOR עם החצי הימני. בניגוד ל-DES, שני החצאים מוחלפים אחרי המחזור האחרון.

פונקצית f של תמורה G היא פשוטה באותה המידה כמו שאפשר לצפות מפונקצית f ברוחב 8 סיביות: הקלט בהתחלה עובר XOR עם תת המפתח של המחזור הנוכחי, ואז התוצאה מוחלפת בהתאם לטבלת חיפוש, הנקראת F.

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

את הפעולה של Skipjack  מבהירים בתרשים הבא:

 

שממחיש את 12 המחזורים הראשונים של Skipjack. המחזור הראשון, מסוג A, מוצג ע"י הפונקציה G שמומחשת במלואה. שבעת המחזורים הבאים, גם הם מסוג A מוצגים ע"י הפונקציה G המצוינת ע"י התיבה המסומנת ב-G. אז ארבעת המחזורים האחרונים מתוך שנים עשר מחזורי המדגם מסוג B מוצגים באותה הדרך. קווים מנוקדים מפרידים בין המחזורים בתרשים.

במקום לסובב את הרבעים של הגוש, הפונקציות זזות בין העמודות; מכיוון שלא מדלגים על הסבב האחרון, תרשים זה יראה אם נמשיך אותו את כל 32 המחזורים, הרבעים מסתיימים במקומות הנכונים בלי צורך בסבב סופי. ה-S-box של Skipjack, נקראת F, שהיא הלב של פונקצית f של המיניצופן של Feistel שזה התמורה G, כדלקמן:

 a3 d7 09 83 f8 48 f6 f4 b3 21 15 78 99 b1 af f9
 e7 2d 4d 8a ce 4c ca 2e 52 95 d9 1e 4e 38 44 28
 0a df 02 a0 17 f1 60 68 12 b7 7a c3 e9 fa 3d 53
 96 84 6b ba f2 63 9a 19 7c ae e5 f5 f7 16 6a a2
 39 b6 7b 0f c1 93 81 1b ee b4 1a ea d0 91 2f b8
 55 b9 da 85 3f 41 bf e0 5a 58 80 5f 66 0b d8 90
 35 d5 c0 a7 33 06 65 69 45 00 94 56 6d 98 9b 76
 97 fc b2 c2 b0 fe db 20 e1 eb d6 e4 dd 47 4a 1d
 42 ed 9e 6e 49 3c cd 43 27 d2 07 d4 de c7 67 18
 89 cb 30 1f 8d c6 8f aa c8 74 dc c9 5d 5c 31 a4
 70 88 61 2c 9f 0d 2b 87 50 82 54 64 26 7d 03 40
 34 4b 1c 73 d1 c4 fd 3b cc fb 7f ab e6 3e 5b a5
 ad 04 23 9c 14 51 22 f0 29 79 71 7e ff 8c 0e e2
 0c ef bc 72 75 6f 37 a1 ec d3 8e 62 8b 86 10 e8
 08 77 11 be 92 4f 24 c5 32 36 9d cf f3 a6 bb ac
 5e 6c a9 13 57 25 b5 e3 bd a8 3a 01 05 59 2a 46

או בצורה עשרונית:

 163 215   9 131 248  72 246 244 179  33  21 120 153 177 175 249
 231  45  77 138 206  76 202  46  82 149 217  30  78  56  68  40
  10 223   2 160  23 241  96 104  18 183 122 195 233 250  61  83
 150 132 107 186 242  99 154  25 124 174 229 245 247  22 106 162
  57 182 123  15 193 147 129  27 238 180  26 234 208 145  47 184
  85 185 218 133  63  65 191 224  90  88 128  95 102  11 216 144
  53 213 192 167  51   6 101 105  69   0 148  86 109 152 155 118
 151 252 178 194 176 254 219  32 225 235 214 228 221  71  74  29
  66 237 158 110  73  60 205  67  39 210   7 212 222 199 103  24
 137 203  48  31 141 198 143 170 200 116 220 201  93  92  49 164
 112 136  97  44 159  13  43 135  80 130  84 100  38 125   3  64
  52  75  28 115 209 196 253  59 204 251 127 171 230  62  91 165
 173   4  35 156  20  81  34 240  41 121 113 126 255 140  14 226
  12 239 188 114 117 111  55 161 236 211 142  98 139 134  16 232
   8 119  17 190 146  79  36 197  50  54 157 207 243 166 187 172
  94 108 169  19  87  37 181 227 189 168  58   1   5  89  42  70

  

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

 הפענוח השקול למחזור מסוג A הוא כדלקמן:

הרבע הראשון , W1, עובר XOR עם W2 ומספר מחזור (המחזורים עכשיו ספורים בסדר הפוך מ-32 ל-1). אז הרבע השני , W2 , עובר את התמורה ההפכית של G. אז כל רבע מוזז למיקום הקודם. W1 ל-W3 , W4 ל-W2, W2 ל-W1 ו-W4 ל-W3.

הפענוח השקול למחזור מסוג B הוא כדלקמן:

הרבע השני, W2 , עובר תמורה הפכית של G. הרבע השלישי W3 עובר XOR עם מספר המחזור והערך של W2 ששונה. שוב, כל רבע מוזז למקום הקודם W1 ל-W3 , W4 ל-W2, W2 ל-W1 ו-W4 ל-W3.

הפענוח ששקול לתמורה G כרוך בשימוש בארבעה תתי מפתחות בסדר הפוך - ושינוי התפקידים של החצי הימני והשמאלי של רבע גוש בגודל 16 סיביות.

 

 לעמוד הקודם

לעמוד הבא
 
 

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

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

 

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