קריפטואנליזה ליניארית – הבדלי גרסאות
תוכן שנמחק תוכן שנוסף
שורה 203:
לאחר שהתגלה הקירוב הלינארי הכולל של <math>R-1</math> מתוך <math>R</math> הסבבים של הצופן, עם הטייה הסתברותית משמעותית, עוברים לשלב ניחוש סיביות תת-המפתח האחרון על ידי חישוב לאחור. ביתר פירוט, תחילה מנסים את כל האפשרויות של המפתח האחרון (<math>K_5</math> במקרה זה) ומחברים אותם ב-XOR עם הבלוק המוצפן, ואז מבצעים פענוח חלקי (העברה בתיבות ההחלפה של הסבב האחרון) של הבלוק שהתקבל. פעולה זו מתבצעת עבור כל זוגות הבלוקים גלויים/מוצפנים שנמצאים בידי המתקיף. שומרים מונה שמקודם בכל פעם שהתקבל ערך המקיים את הצירוף הלינארי של התיבות מהסבב האחרון (יש לזכור שהבלוק הגלוי ידוע). כל ניחוש סיביות מפתח שהמונה שלו גבוה או נמוך ממחצית מזוגות הקלט/פלט שבידי המתקיף בשיעור משמעותי הדבר נחשב לניחוש מוצלח. ניחוש לא נכון אמור לתת תוצאה אקראית ולכן המשוואה האמורה תתקיים בהסבתרות קרובה לחצי.
בצופן הצעצוע המובא להמחשה, הצירוף הלינארי האחרון משפיע על הפלט לתיבות <math>S_{42}</math> ו-<math>S_{44}</math> של הסבב האחרון. כיוון שכל תיבה מכילה 4 סיביות בסך הכול 8 זה אומר שעבור כל זוג קלט/פלט מנסים את כל 256 צירופי סיביות של המפתח <math>K_5</math> במקטעים <math>[K_{5,5}...K_{5,8},K_{5,13}...K_{5,16}]</math> (יתר סיביות המפתח אינן משפיעות כי שתי תיבות אילו
{| class="wikitable"
|