הדרישות הנוספות האלה צריכות, במידה
אפשרית, לחול על אלגוריתמי הצפנה סטנדרטיים.
האלגוריתם צריך להיות פשוט לכתיבה בתוכנה.
הניסיון עם ה-DES מראה שהמתכנתים
יעשו שגיאות לעיתים קרובות ביישום אם האלגוריתם מסובך. אם אפשרי, האלגוריתם צריך
להיות חסין נגד שגיאות אלה.
צריך שלאלגוריתם יהיה מרחב מפתחות רציף, כך
שכל מחרוזת של סיביות אקראית באורך הדרוש תהיה מפתח אפשרי. צריך שלא יהיו מפתחות
חלשים.
האלגוריתם צריך לסייע בניהול מפתחות קל
ליישומים בתוכנה. יישומים בתוכנה של DES
בדרך כלל משתמשים בטכניקות רעות לניהול מפתחות.במיוחד הסיסמה שהמשתמש מקליד נהפכת
למפתח. זה אומר שלעומת של-DES יש
מרחב מפתחות תאורתי של 256, מרחב המפתחות הראלי מוגבל למפתחות המורכבים מ-95
סימנים, שניתנים להדפסה, של ASC
II. בנוסף לכך, מפתחות שתואמים
למילים או קרובים למילים הרבה יותר סבירים.
לאלגוריתם צריכה להיות אפשרות להתאים את
האלגוריתם לרמות שונות של הבטחה, גם לדרישות מינימאליות וגם מקסימאליות.
כל הפעולות צריכות לפעול על נתונים בגושים
בגודל כפולה של בייט. במידה ואפשר הפעולות צריכות לפעול על גושי נתונים בגודל 32
סיביות.
בהתבוסס על הפרמטרים לעיל הגיעו להחלטות
עיצוב אלה.
האלגוריתם צריך:
-
לפעול על גושי נתונים גדולים, רצוי בגודל
32 סיביות (ולא על סיביות יחידות, כמו ב-DES).
-
כשגודל הגוש יהיה או 64 או 128 סיביות.
-
שגודל המפתח ישתנה מגודל 32 סיביות עד
256 סיביות.
-
להשתמש בפעולות פשוטת שיעילות על מיקרו
מעבדים: לדוגמה, XOR, חיבור,
בדיקות בטבלה, הכפלה מודולארית. זה לא צריך להשתמש בהזזות באורך משתנה או תמורות על סיביות, או קפיצות מותנות.
-
שיהיה ניתן ליישום על מעבדים של 8 סיביות
עם לפחות 24 בייטים של RAM
(בתוספת ל-RAM שדרוש לאחסון מפתח)
ו-1KB של
ROM.
-
להשתמש בתת מפתחות ניתנים לחישוב מראש.
במערכות עם כמות גדולה של זיכרון, ניתן לחשב מראש את תת המפתחות האלה בשביל
ביצועים טובים יותר. כאשר לא מחשבים מראש את תת המפתחות הפעולה תהיה איטית יותר
אך עדיין צריך להיות אפשרי להצפין נתונים בלי חישובים מוקדמים.
-
צריך להיות מורכב ממספר משתנה של
איטרציות (חזרות). בשביל יישומים עם מפתחות קטנים, פשרה בין התקפת ברוטפורס
והתקפה דיפרנציאלית עושה מספר גדול של אתרציות עודפות. לכן, צריך להיות אפשרי
להקטין את מספר החזרות בלי לעבד את האבטחה (מעבר לגודל מפתח מוקטן).
-
במידה ואפשר, שלא יהיו מפתחות חלשים. אם
זה בלתי אפשרי היחס של המפתחות החלשים צריך להיות קטן מספיק כך שיהיה לא סביר
לבחור אחד מהם באקראי. בנוסף לכך, כל המפתחות החלשים צריכים להיות ידועים במפורש
כך שאפשר לעקור אותם בזמן תהליך יצירת המפתח.
-
שימוש בתת מפתחות שמקבלים אותם
מהפעלת פונקצית hash חד כיוונית על המפתח. זה יאפשר שימוש
במשפטי סיסמה ארוכים בשביל המפתח בלי להתפשר על האבטחה.
-
שלא יהיה מבנה ליניארי
(לדוגמה, תכונה משלימה של DES)
שמקטין את הסיבוכיות של חיפוש ממצא.
-
ישתמש בעיצוב שקל להבנה. זה
יקל על הניתוח ויגדיל את הביטחון באלגוריתם.
רוב החלטות עיצוב אלה אינן
חדשות. כמעט כל צפני הגושים מאז Lucifer הם צפני Feistel לכולם יש
מרחב מפתחות רציף (עם יוצאים מן הכלל אפשריים של כמה מפתחות חלשים).FELA
ו-Khufu משתמשים במספר מחזורים משתנה. ל-Khufu
יש מספר גדול של תתי מפתחות שהם תוצאה של פונקציה חד כיוונית של המפתח. ל-RC
II יש מפתח באורך משתנה. GOST
משתמש במילה באורך 32 סיביות ובגוש בגודל 64 סיביות. MMB
משתמש במילה באורך 32 סיביות ובגוש בגודל 128 סיביות.
|