הזמינות של גדלי גוש שונים ב-Rijndael
מאפשרת גרסה חמודה של אופן הפעולה "הנחת לבנים" הומצא בשביל Triple-DES.
פה, כל קו מאונך מייצג 32 סיביות ושלושת השכבות
משתמשות בגדלי גוש של 128,192 ו-256 סיביות על פי הסדר.
למרות העובדה ש ל-Rijndael יש מבנה שונה מאוד מהמבנה של DES, ואפשר להגיד שבכמה
דרכים הוא יותר דומה ל-SAFER בגלל שצעד ה-Byte-Sub
משנה ישירות ביתים שיוצפנו, ושלב ה-Mix-Column
גורם לכל בית בעמודה להשפיע על כל שאר הביתים בעמודה, בדומה לשלב ה-PHT ב-SAFER
מערב את כל הגוש, זה עדיין אפשרי לקשור שלבים בסיסיים ב-Rijndael לשלבים של DES על בסיס התפקיד שהם משחקים בתרומה לצעד של
הצופן בסה"כ.
-
צעד ה-Add Round Key
מתאים בברור ל - XOR של החומר של תת המפתח עם הפלט לפונקצית
f (ב-DES).
-
צעד ה-Mix-Column
במקום שבו הביתים פועלים זה על זה, לכן זה מתאים ל-XOR
של הפלט של הפונקציה f עם החלק השמאלי של הגוש ב-DES.
-
צעד ה-Byte-Sub תורם ללא ליניאריות של Rijndael ולכן זה
מתאים לפונקצית f בעצמה.
-
צעד ה-Shift-Row
מבטיח שביתים שונים בכל שורה יפעלו לא רק עם הביתים המקבילים בשורות אחרות. לכן
זה מתאים לתמורה P ב-DES.
בהשוואה בין Rijndael
ו-DES, קל מאוד, מבוסס על הצצה שטחית על Rijndael, וההופעה של הצעד Shift-Row, לראות את
הצעד Shift-Row כמקביל להחלפה בין חצאי הגוש
ב-DES. לעומתו של דבר, Rijndael לא דורש צעד עם פונקציה זאת, מכיוון שצעד Mix-Column
ב-Rijndael גורם לכל בית בעמודה לשנות
כל בית אחר בעמודה, לכן לא צריך צעד שמחליף שורות.
הנקודה עדינה אך למעשה מאוד חשובה. מספר המחזורים הרגילים
ב-Rijndael תמיד אי-זוגיים; בלי צעד ה-Mix-Column, המחזור האחרון לא גורם
לאינטראקציה בין הביתים, לכן מתקבל על הדעת לא לחשב אותו
כמחזור "אמיתי". לכן, זה לא כפל של מספר העמודות, שהוא 4
,6 ,8 , תלוי בגודל הגוש.
התקפה בעזרת
ניתוח הצפנה דיפרנציאלי על
DES נהיית קצת קלה יותר על גרסאות של DES עם מספר אי
זוגי של מחזורים, לכן אם הצעד Shit-Row ב-Rijndael היה מותאם להחלפת חצאי הגוש ב-DES, זה כנראה היה נקודת
התורפה ב-Rijndael. זה עדיין יכול להיות
פגם קטן, אבל התוצאות של ניתוח הצפנה הקיימות נגד Rijndael לא מראות דוגמאות על כך.
תזמון המפתחות ל-Rijndael
יכול להתבצע טוב במידה שווה עם מפתחות שהם בגודל 160, 224 סיביות, כיוון שזה דורש רק
שגודל המפתח יהיה כפולה של 32 סיביות.
אפילו גדלי גוש בגודל 160, 224 סיביות גם אפשריים. הגרסה
המתוקנת של הספציפיקציה של Rijndael כולל
ההרחבות האלה והחוק שאומר באיזה מספר מחזורים צריך להשתמש מבוסס על הגדלים הגדולים
של גודל הגוש במפתח, עם 10 מחזורים רגילים (11 מחזורים בסה"כ) מתאים ל-160 סיביות
ו-12 מחזורים רגילים (13 מחזורים בסה"כ) מתאים ל-224 סיביות.
לכן, אפשר לקבל 12 מחזורים רגילים שרצויים עבור גושים בגודל
128 ו-192 סיביות, על ידי שימוש במפתח בגודל 224 סיביות. כבונוס נחמד מספר המילים
בגודל 32 סיביות בתוך 224 סיביות הוא 7, שזה יחסית ראשוני ל 4 או 6, שזה נראה,
לפחות מנקודת מבט נאיבית, כאילו שזה יכול גם לשפר קצת את התזמון של המפתח.
התרשים הבא מראה מספר מחזורים עבור גדלים שונים של גושים
ומפתחות, וגם מצביע מתי שהתכונות האלה הרצויות לכאורה מתקיימות.
*: מספר של מחזורים רגילים הוא כפל של מספר המילים בגודל 32
סיביות בגוש. |
+: מספר המילים בגודל 32 סיביות במפתח
יחסית ראשוני כלפי מספר המילים בגודל 32 סיביות בגוש. |
מפתח |
גוש |
|
|
128 |
160 |
192 |
224 |
256 |
|
128 |
10 |
11 |
12 |
13 |
14 |
10 הוא כפולה של 5 |
|
|
+ *
|
|
+
|
|
4 הוא יחסית ראשוני ל 5 ו 7
|
160 |
11 |
11 |
12 |
13 |
14 |
10 הוא כפולה של 5 |
|
+
|
*
|
+
|
+
|
+
|
5 הוא יחסית ראשוני ל 4, 6, 7, ו-8
|
192 |
12 |
12 |
12 |
13 |
14 |
|
|
|
+
|
|
+
|
|
6 הוא יחסית ראשוני ל 5 ו7-
|
224 |
13 |
13 |
13 |
13 |
14 |
12 הוא כפולה של 4 ו-6 |
|
+ *
|
+
|
|
+ *
|
+
|
7 הוא יחסית ראשוני ל 4, 5, 6, ו-8
|
256 |
14 |
14 |
14 |
14 |
14 |
|
|
|
+
|
|
+
|
|
8 הוא יחסית ראשוני ל 5, ו-7
|
288 |
15 |
15 |
15 |
15 |
15 |
14 הוא כפולה של 7 |
|
+
|
+
|
|
+ *
|
+
|
9 הוא יחסית ראשוני ל 4, 5, 7 ו-8
|
320 |
16 |
16 |
16 |
16 |
16 |
15 הוא כפולה של 5 |
|
|
*
|
|
+
|
|
10 הוא יחסית ראשוני ל 7
|
352 |
17 |
17 |
17 |
17 |
17 |
16 הוא כפולה של 4 ו-8 |
|
+ *
|
+
|
+
|
+
|
+ *
|
11 הוא יחסית ראשוני ל 4, 5, 6, 7 ו-8
|
לכן, יש לפחות גודל אחד "אידיאלי" של מפתח לכל גודל אפשרי
של גוש:
גודל של גוש
|
גודל אידיאלי של מפתח |
128 |
224
352 |
160 |
128 |
192 |
224 |
224 |
288 |
256 |
352 |
שוב, אנו חוזרים זה רק משמעותי אם דאגות שוליות אלה, כמו
שנראה מנקודת מבט נאיבית, תקפות.
דרך אגב בשביל גודל גוש 224 סיביות, הצעד
Shift-Row שוב שונה, אבל לא
בדיוק באותה הדרך כמו בשביל גוש בגודל 256 סיביות. רק השורה האחרונה, לא שתי שורות
אחרונות, מוזזת בית אחד יותר. בנוסף לכך, צעד נוסף של Byte-Sub
שמשתמשים בו בשביל מפתחות באורך 256 סיביות שנוסף לתזמון המפתח לכל המפתחות בגודל
יותר מ-192 סיביות, לכן זה תקף גם לגבי מפתח בגודל 224 סיביות ולכל המפתחות
הגדולים יותר מ-256 סיביות.
זה שעיצוב ה-S-box משתמש באותו שדה גלואה ( 28
) כמו שהצעד Mix-Column
גם יכול להדאיג. בכל אופן,ה- S-box של
Rijndael
הוא כמעט מושלם בהתנגדותו לניתוח הצפנה
דיפרנציאלי, הוא גם מצוין בהימנעות מהערכות
בשדה גלואה ( 28
) שמשתמשים בו כמקבילה של שדה גלואה לניתוח
הצפנה ליניארי.
הבחירה ב-Rijndael
לעומת האלגוריתמים האחרים שעלו לגמר, שמאמינים שגם הם בטוחים מאוד, היה מבוסס בעיקר
על היעילות שלו ודרישות נמוכות לזיכרון שזה ביחד עם העובדה שהניתוחי
הצפנה
הקימות של Rijndael מבוססות על גרסאות עם כמות קטנה יותר של מחזורים במידה מסוימת קרובות הגרסאות לצופן עצמו (אף על פי
שלא מעשי לנסות לנצל (exploit) תוצאות
קרובות למספר הראלי של המחזורים) זה אומר שמחלוקות מסוימות, אפילו אם המחלוקות לא
כל כך נמרצות כמו סביב ה-DES, המחלוקת יכולה גם להציק ל-AES. לפני Rijndael
היה צופן גושים Square, שהיה במקצת דומה. בכל
אופן, במקום צעד Shift-Row, ישתמשו בשינוי ביתים
במטריצה ריבועית; כתוצאה מכך, זה אומר שפיזור מעל לכל הגוש היה מושג על ידי החלפת
צעד Mix-Column עם צעד Mix-Row. נמצאו התקפות מסויימות נגד Square,
שנגד ההתקפות האלה חיזקו את Rijndael.
|