IDEA

מתוך המכלול, האנציקלופדיה היהודית
קפיצה לניווט קפיצה לחיפוש

International Data Encryption Algorithm הוא צופן בלוקים סימטרי שהוצע ב-1991 על ידי ג'יימס מסי מהמכון הטכנולוגי של ציריך ו-Xuejia Lai מאוניברסיטת ג'יאו טונג שאנגחאי[1] כדי להוות מחליף ראוי ל-DES הוותיק. הצופן פועל על בלוק נתונים בגודל 64 סיביות עם מפתח 128 סיביות והוא מבוסס על קונספט "שילוב פעולות מחבורות אלגבריות שונות". הצופן הומלץ על ידי מומחים וההתקפה היעילה ביותר כנגדו היא בסיבוכיות של בערך - קצת פחות מכוח גס. חסרונותיו העיקריים, בלוק המידע הוא רק 64 סיביות (כלומר סיבוכיות מקום נמוכה ביחס לדרישת התקן המתקדם - 128 סיביות לפחות) וכן קצת איטי ביישום הן בתוכנה והן בחומרה. זמינותם של אלגוריתמים חדשים, מהירים ובטוחים יותר הותירה את IDEA מאחור, אם כי עדיין נתמך בפועל במערכות אבטחה רבות כולל PGP ו-OpenSSL. השם IDEA הוא סימן רשום ונרשם כפטנט שתוקפו פג ב-2012 וכעת חופשי לשימוש.

IDEA מיישם רשת החלפה-תמורה דומה לרשת פייסטל ומנצל פעולות אריתמטיות בשלוש חבורות אלגבריות שונות על תת-בלוקים בגודל 16 סיביות, להשגת פיזור (diffusion) מהיר ועירבוב (confusion) גבוה. פיזור נחוץ להבטיח שכל סיבית טקסט גלוי וכל סיבית מפתח, ישפיעו על כל סיביות הטקסט המוצפן במידה שווה. ערבוב מטשטש את הקשר בין הטקסט המוצפן לטקסט הגלוי והמפתח. רשת ההחלפה-תמורה בנויה כך שהצפנה ופענוח ייעשו באמצעות אותה פונקציה עם מפתח שונה (להלן). ידוע על מפתחות הצפנה "חלשים" שלא מומלץ להשתמש בהם (כגון אם הייצוג הבינארי מכיל רצף ארוך של אפסים), בפועל אם המפתח נבחר באקראי הסיכוי נמוך ביותר שיבחר מפתח חלש. מלבד זאת קיימות טכניקות למנוע זאת.

תיאור הצופן

תרשים אלגוריתם IDEA. הסימן מייצג XOR, הסימן מייצג חיבור מודולו והסימן הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \odot} מייצג כפל מודולו הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle 2^{16}+1}

תהליך ההצפנה מורכב משמונה סבבים של פעולות אריתמטיות וטרנספורמציה מסיימת (ראו שורה אחרונה בפסאודו קוד). האלגוריתם מקבל בלוק קלט בגודל 64 סיביות, מחולק לארבעה מטקעים בני 16 סיביות כל אחד הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle X_1,...,X_4} ומפיק ארבעה בלוקים הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle Y_1,...,Y_4} בסיוע 52 תת-מפתחות המחולקים כדלהלן: ששה תת-מפתחות עבור כל סבב כפול שמונה סבבים המסומנים הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle Z_1^{(r)},...,Z_6^{(r)}} כאשר הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle r=1,..,8} מייצג את מספר הסבב. וארבעה נוספים עבור הפעולה המסיימת המסומנים הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle Z_1^{(9)},Z_2^{(9)},Z_3^{(9)},Z_4^{(9)}} . בכל סבב מתבצע צירוף של סדרת פעולות אריתמטיות:

  1. מיפוי סיביות בשדה בינארי מורחב הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle F_{2^n}} מעל עם פעולת XOR המסומן בסמל הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \oplus} .
  2. חיבור שלמים מודולו הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle 2^{16}} (חבורה חיבורית הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle Z_{2^{16}}} ), המסומן ב-הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \boxplus} .
  3. כפל שלמים מודולו (חבורה כפלית הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle Z_{2^{16}+1}} ) ומסומן בקיצור הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \odot} . זהו כפל מודולרי רגיל למעט הכלל שמחרוזת 16 אפסים מייצגת את הערך הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle 2^{16}} (כזכור לא ניתן לייצג את הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle 2^{16}} ב-16 סיביות, על כן סיבית 1 הגבוהה מרומזת) לדוגמה בגלל ש-הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle 2^{16}\cdot 2^{15}\mbox{ mod }(2^{16}+1)=2^{15}+1} .

פסאודו קוד

מבצעים בלולאה שמונה סבבים (שים לב שהאינדקס מתחיל באחד ולא באפס. הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle Z_i^{(r)}} מייצג את ערך המפתח בכניסה הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle i} במפתח-סבב הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle r} במערך הדו-ממדי):

    1. הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle X_1 = X_1 \odot Z_1^{(r)}} , הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \quad } הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \quad } הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle X_2 = X_2 \odot Z_2^{(r)}} .
    2. הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle X_3 = X_3 \boxplus Z_3^{(r)}} , הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \quad } הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle X_4 = X_4 \boxplus Z_4^{(r)}} .
    3. הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle k = Z_5^{(r)} \odot (X_1 \oplus X_3)}
    4. הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle t_1 = Z_6^{(r)} \odot k \boxplus (X_2 \oplus X_4)}
    5. הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle t_2 = k \boxplus t_1}
    6. הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle a = X_1 \oplus t_1} , הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \quad } הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle x_1 = X_3 \oplus t_1} , הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \quad } הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \quad } הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle X_3 = a}
    7. הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle a = X_2 \oplus t_2} , הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \quad } הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \quad } הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle x_2 = X_4 \oplus t_2} , הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \quad } הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \quad } הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle X_4 = a}
  1. הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle Y_1 = X_1 \cdot Z_1^{(9)}} , הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \quad } הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \quad } הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle Y_2 = X_2 \cdot Z_2^{(9)}} , הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \quad } הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle Y_3 = X_3 \boxplus Z_3^{(9)}} , הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \quad } הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \quad } הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle Y_4 = X_4 \boxplus Z_4^{(9)}}

תהליך הכנת מפתחות

המפתח המורחב כולל מערך של 52 מילים בגודל 16 סיביות כל אחת (סה"כ 832 סיביות). תהליך ההכנה בהצעה המקורית הוא כדלהלן: תחילה 128 סיביות המפתח הראשוני המסופק על ידי המשתמש מחולקות לשמונה קבוצות של 16 סיביות כל אחת, אותם מציבים בשמונה הכניסות הראשונות לפי הסדר, מבצעים הזזה מעגלית של 128 סיביות המפתח 25 פוזיציות שמאלה ואת התוצאה מציבים בשמונה הכניסות הבאות, שוב מזיזים בהזזה מעגלית 25 פוזיציות ואת התוצאה בכניסות הבאות וכן הלאה, שש פעמים עד להשלמת 48 כניסות ואז מבצעים הזזה נוספת ומשלימים את ארבע הכניסות האחרונות בחלק מהתוצאה. להלן ניסוח פורמלי של תהליך הכנת מפתח (שונה במעט מהתיאור המקורי):

  1. תחילה מכינים מערך נלווה הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle S_0,...,S_{54}} , בשמונה הכניסות הראשונות מציבים את המפתח המסופק על ידי המשתמש ואז עבור היתר, מבצעים לולאה הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle i=8,...,54} כדלהלן:
  2. אם הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle (i+2)} מתחלק ב-הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle 8} מציבים: הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle S_i =(S_{i - 7} \mbox{ ROL}_9) \oplus (S_{i - 14} \mbox{ ROR}_7)} .
  3. אחרת, אם הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle (i+1)} מתחלק ב-הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle 8} מציבים: הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle S_i = (S_{i - 15} \mbox{ ROL}_9) \oplus (S_{i - 14} \mbox{ ROR}_7)} .
  4. ביתר המקרים מציבים: הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle S_i = (S_{i - 7} \mbox{ ROL}_9) \oplus (S_{i - 6} \mbox{ ROR}_7)} .
  5. מבצעים לולאה אחרונה שבה מעבירים את הערכים ל-הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle Z} כאשר האינדקסים הם הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle r=1,...,9} ו-הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle j=1,...,6} :
הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle Z_{j, r} = S_{6 \cdot (r - 1)+j - 1}}

הפעולות ROR ו-ROL הן הזזה מעגלית בסיביות ימינה או שמאלה בהתאמה במספר פוזיציות לפי המציין התחתי.

פענוח

לפענוח תחילה מחשבים את 52 מפתחות הפענוח מתוך מפתחות ההצפנה באמצעות חישוב המספרים ההופכיים שלהם. כלומר הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle Z^{-1}} מייצג הופכי כפלי של הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle Z} מודולו הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle 2^{16}+1} כך שמתקיים הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle Z\cdot Z^{-1}\equiv 1\mbox{ (mod }2^{16}+1)} וכן הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle -Z} הוא הופכי חיבורי או המשלים של הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle Z} מודולו הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle 2^{16}} (במקרה זה המשלים יהיה הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle 2^{16}-Z} ). ההופכי של XOR נותר זהה. לצורך המחשה אם מפתחות הסבב הם הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle Z_1^{(r)},Z_2^{(r)},Z_3^{(r)},Z_4^{(r)},Z_5^{(r)},Z_6^{(1)}} מפתחות הפענוח המקבילים להם יהיו הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle {Z_1^{(r)}}^{-1},{Z_2^{(r)}}^{-1},-Z_3^{(r)},-Z_4^{(r)},Z_5^{(r)},Z_6^{(r)}} (שני האחרונים מייצגים XOR לכן הם הופכיים של עצמם) - בסדר הפוך, דהיינו תחילה ארבעת המפתחות המקבילים לטרנספורמציה האחרונה המסומנים 9 ולאחר מכן 48 המפתחות הנותרים בסדר הפוך, ששה עבור כל סבב. ואז הפענוח מתבצע באופן זהה להצפנה (בפסאודו-קוד לעיל). הכנת מפתח הפענוח בניסוח פורמלי מתוארת להלן, כאשר DK מייצג את מפתח הפענוח (decryption key). מבצעים תשעה סבבים כדלהלן:

  1. הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \text{For }j=1\text{ to }9\text{ do }}
    1. הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle DK_1^{(10-j)} = {Z_1^{(j)}}^{-1}}
    2. הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle DK_2^{(10-j)} = {Z_2^{(j)}}^{-1}}
    3. הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle DK_3^{(10-j)} = 2^{16} - Z_3^j}
    4. הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle DK_4^{(10-j)} = 2^{16} - Z_4^j}
    5. הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle DK_5^{(9 - j)} = Z_5^{(j)}}
    6. הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle DK_6^{(9 - j)} = Z_6^{(j)}}

בטחון האלגוריתם

הצופן אינו עושה שימוש בתיבות החלפה (S-box) אלא תחת זאת משיג פיזור (diffusion) באמצעות שילוב בין פעולות אלגבריות בחבורות. פעולות אילו נבחרו בשל היחס הסטיסטי בין המשתנים הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle X,Y,Z} בפעולה הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle Y=X*Z} עם תכונת "סודיות מושלמת", כלומר שאם אחד מהמשתנים נבחר באקראי במידה שווה מתוך כל איברי החבורה אזי שני המשתנים האחרים יהיו בלתי תלויים סטטיסטית. מבנה הצופן נקרא מבנה כפל-חיבור בקיצור מבנה MA (כמתואר בתרשים).

שגיאה ביצירת תמונה ממוזערת:
מבנה כפל-חיבור של IDEA

האינטראקציה בין סוגים שונים של פעולות בחבורות מניבה את הערבוב (confusion) הדרוש. השילוב נעשה באופן שבכל קבוצה של שלוש פעולות אלגבריות לא תתקיים דיסטריבוטיביות או אסוציאטיביות. למשל אפשר לראות שאם מציבים הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle a=b=c=1} בשתי המשוואות הבאות החוקים האמורים אינם מתקיימים:

הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle a\boxplus (b \odot c)\ne (a\boxplus b)\odot (a\boxplus c)}
הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle a\boxplus (b \oplus c) \ne (a\boxplus b)\oplus c}

לפי טענת המפתחים האלגוריתם מעוצב כדי להתמודד מול איום קריפטואנליזה דיפרנציאלית. נכון ל-2007 ההתקפה הטובה ביותר כנגד האלגוריתם הייתה בסיבוכיות של הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle 2^{126.8}} עם הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle 2^{64}} טקסטים גלויים. למרות היותו איטי מספק האלגוריתם בטחון טוב יותר בהשוואה ל-DES אולם חלש יחסית לאלגוריתמים חדשים דוגמת AES או Twofish. העובדה שגודל הבלוק הוא רק 64 סיביות מעיבה מעט על ביטחונו.

ראו גם

הערות שוליים