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 סיביות.
|