קריפטואנליזה ליניארית

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

בקריפטואנליזה, קריפטואנליזה לִינֵאָרִית (באנגלית: Linear cryptanalysis) היא צורה כללית של קרפיטואנליזה המבוססת על ניתוח קירובים ליניאריים ואפיניים הכוללים שילוב סיביות מקלט פונקציית הצפנה סימטרית, מהפלט שלה וממפתח ההצפנה.

קריפטואנליזה ליניארית פועלת בדרך כלל לפי מודל התקפת גלוי-ידוע שהיא מודל התקפה שבו מניחים שליריב או מנתח הצופן גישה למספר מוגבל של זוגות קלט/פלט, שהם בהקשר של צופן בלוקים, מספר רב של בלוקים של טקסט-קריא ובלוקים של טקסט-מוצפן המתאימים להם שהוצפנו עם אותו מפתח סודי ועם מידע זה הוא מנסה לפצח את הצופן. אך בניגוד להתקפת גלוי-נבחר, למתקיף אין שליטה על תוכן הנתונים שהשיג.

היסטוריה[עריכת קוד מקור | עריכה]

הקריפטואנליזה הליניארית מיוחסת למיצורו מצואי, שפרסם אותה לראשונה ב-1992 יחד עם ימאגישי לפיצוח הצופן FEAL[1] וכן נוסתה נגד צופן DES[2] והייתה להתקפה הפומבית הראשונה על הצופן, אך היא דורשת מספר עצום של בלוקים ידועים ( זוגות במקרה של DES). קריפטואנליזה ליניארית מתאימה במיוחד נגד צופן בלוקים ואף נגד צופן זרם. ההתקפה הליניארית יחד עם הדיפרנציאלית הן שתי ההתקפות הקריפטוגרפיות המפורסמות והמוצלחות ביותר נגד צפני בלוקים מודרניים והביאו לשבירתם המוחלטת של לא מעט צפנים. כיום ההתקפה הליניארית משמשת כאבן בוחן וכלי שימושי לבדיקת ביטחון כל צופן בלוקים מודרני. כיום מצפים מכל צופן שיוכיח עמידות נגד התקפה זו אפילו אם היא תאורטית ביסודה אם היא יעילה מכוח גס באופן ניכר. למרות האמור, למרבה ההפתעה אפילו לאחר שנים של קריפטואנליזה, ההתקפה הליניארית נגד צופן DES התגלתה כלא יעילה במיוחד באופן מעשי. ועד היום DES שרד את שתי ההתקפות המתוארות, הליניארית והדיפרנציאלית כאחד.

וריאציות[עריכת קוד מקור | עריכה]

במשך השנים פותחו מספר וריאציות של הקריפטואנליזה הליניארית ביניהן:

  • קריפטואנליזת קירובים ליניאריים מרובים[3].
  • קריפטואנליזת מתאם אפס[4].
  • קריפטואנליזת חציצה (Partitioning)[5].

תיאור כללי[עריכת קוד מקור | עריכה]

לצורך תיאור הקריפטואנליזה הליניארית[6], נניח שנתון צופן בלוקים פשוט המורכב מרשת החלפה-תמורה. הוא מקבל בלוק קלט באורך 16 סיבות (שני בתים), מעבד את הבלוק על ידי חזרה ארבע פעמים על פונקציה פנימית הכוללת בדומה ל-AES, שלוש שכבות; החלפה, תמורה וערבוב מפתח, כמתואר בתרשים משמאל. למרות שהצופן פשוט והוא מובא כאן להמחשה בלבד, ההתקפה הליניארית על צופן זה מפסקת תובנה מספיק טובה לגבי פעולתה נגד צפנים מודרניים מורכבים יותר.

לצורך הדיון נניח ששלב ההחלפה בצופן הצעצוע האמור כולל ארבע תיבות החלפה המקבלות 4 סיביות ומחזירות 4 סיביות. כל תיבת החלפה אפשר ליישם באמצעות טבלה פשוטה המכילה 16 ערכים באורך 4 סיביות כל אחד. הערך המוחזר הוא בעצם תוכן הכניסה שהקלט מייצג את מספרה. ברוב הצפנים קיימות מספר טבלאות, לצורך הפשטות נניח שקיימת רק תיבה אחת כזו שבה משתמשים ארבע פעמים בכל סבב. להלן הטבלה הלקוחה מצופן DES בייצוג הקסדצימלי:

קלט 0 1 2 3 4 5 6 7 8 9 A B C D E F
פלט E 4 D 1 2 F B 8 3 A 6 C 5 9 0 7

לצורך שלב הטרנספוזיציה (תמורה) נתונה הטבלה הבאה. פעולת הטרנספוזיציה ניתנת לתיאור באופן הבא: הפלט בפוזיציה ה- של תיבת ההחלפה מנותב לכניסה ה- של תיבת ההחלפה ה- (בסבב הבא). ראוי לציין שאין טעם בטרנספוזיציה בסבב האחרון של הצופן כי היא ניתנת להפיכה בקלות.

קלט 0 1 2 3 4 5 6 7 8 9 A B C D E F
פלט 0 4 8 C 1 5 9 C 2 6 A D 3 7 B F

שכבת חיבור המפתח מבצעת חיבור XOR של כל סיביות הפלט עם חלק מהמפתח הסודי הנקרא תת-מפתח. חיבור המפתח בסיום הסבב האחרון מבטיח שלא יהיה אפשרי להתעלם מהסבב האחרון כשמנתחים את הצופן. לצורך הפשטות נניח שתת-המפתחות עבור ארבעת הסבבים הוכנו בנפרד זה מזה. פענוח הוא פשוט חזרה לאחור צעד אחרי צעד במבנה זהה להצפנה, רק יש צורך לוודא שתיבות ההחלפה הן פונקציה חד-חד-ערכית ועל ועל כן הן הפיכות וכן צריך להשתמש במפתחות בסדר הפוך.

Linear analysis example-01.png

קריפטואנליזה ליניארית[עריכת קוד מקור | עריכה]

הקריפטואנליזה הליניארית מנסה לנצל קיום מופעים בהסתברות גבוהה של משוואות ליניאריות המערבות סיביות מבלוק הקלט, בלוק הפלט (ליתר דיוק מפלט הסבב האחד לפני אחרון של הצופן) ומפתח ההצפנה. הרעיון הבסיסי הוא לבצע קירוב של חלק מפעולת הצופן עם משוואה ליניארית מעל חיבור XOR (חיבור מודולו 2). משוואה ליניארית כזו יכולה להיות למשל:

כאשר מייצג את הסיבית במיקום ה- של בלוק הקלט המכיל סיביות וכן מייצג את הסיבית במיקום ה- של בלוק הפלט . המשוואה המתוארת מחברת תת-קבוצה באורך סיביות של עם תת-קבוצה באורך סיביות של . המטרה היא למצוא סיביות קלט/פלט שמקיימות את המשוואה האמורה בהסתברות גבוהה באופן משמעותי או בהסתברות נמוכה באופן משמעותי. באופן כללי אסור שלינאריות כזו תתרחש בצופן, אחרת הוא יהיה חלש מאוד כי היא הוכחה לכך שהצופן מכיל אקראיות ירודה. באופן אידיאלי אם ננסה להזין סיביות קלט/פלט שונות במשוואה המתוארת ההסתברות שהמשוואה תתקיים צריכה להיות . ככל שהסטייה או הנטאי בתוצאות גדולה מחצי כך קל יותר למנתח הצופן לשבור אותו. ההטייה בהקשר זה נקראת הטייה ליניארית הסתברותית אותה מסמנים ב-. ככל ששיעור ההטייה ההסתברותית גדלה משמעותית כך קל יותר ליישם את ההתקפה הליניארית על הצופן.

ישנן מגוון דרכים לביצוע הקריפטואנליזה הליניארית. לצורך התיאור כאן נתייחס למה שמיצורו מצואי מכנה במאמר שלו אלגוריתם 1. למרות שבמשוואה הליניארית לעיל לא מופיעות סיביות ממפתח ההצפנה המותקף, האגף הימני במשוואה "0" כולל באופן עקיף סיביות מהמפתח שמיקומן ידוע אך לא ערכן. אם סכום הסיביות מהמפתח המשתתפות במשוואה הוא אפס, ההטייה תהיה עם סימן (פלוס או מינוס) זהה אילו המשוואה כללה סיביות מהמפתח (אם ההסתברות התקבלה). אם פירושו של דבר שהמשוואה המתוארת מייצגת את התנהגות הצופן בשלמות ולכן הצופן כנראה מכיל פגם חמור. אם פירושו של דבר שהמשוואה המתוארת מייצגת פונקציה אפינית של הצופן, שגם זו אינדיקציה לתקלה חמורה. במקרה של XOR פונקציה אפינית היא בעצם המשלים של הפונקציה הליניארית, כך שבשני המקרים הצופן יהיה חשוף להתקפה ליניארית.

עיקרון הערמה[עריכת קוד מקור | עריכה]

מציאת משוואה לינארית של הצופן מסתמכת על צירוף משוואות לינאריות של חלקים שונים של הצופן למשוואה לינארית אחת. החלק הקשה הוא למצוא ולצרף משוואות ליניאריות מתאימות. לצורך ההדגמה נתייחס לצופן הצעצוע המתואר לעיל. אם נתונים שני משתנים מקריים ו-, אז הוא ביטוי ליניארי השקול ל-. אם זהו ביטוי אפיני השקול ל-. נניח שההתפלגות הסטטיסטית נתונה על ידי:

וכן

אם שני המשתנים המקריים בלתי תלויים אפשר לשלב את שניהם ביחד:

וכן אפשר להוכיח ש-

.

דרך אחרת להציג זאת, יהיו וכן כאשר ו- הן שיעור ההטייה ההסתברותיות מחצי כך שמתקיים וכן . מזה נובע ש-. ההטייה של היא . אפשר להרחיב את האמור ליותר משתנים מקריים עד עם ההסתברויות עד . ההסתברות ש- תתקיים ניתנת לחישוב באמצעות למת הערמה (Piling-Up Lemma) של מיצורו מצואי, בהנחה שכל המשתנים בלתי תלויים:

נתונים משתנים מקריים בלתי תלויים: מתקיים

.

או לחלופין

כאשר מייצג את ההטייה של . יש לשים לב שאם או אז או 1 בהתאם. אם רק אחד שווה חצי אז .

כאשר מרכיבים משוואה ליניארית של הצופן המשתנים הם בעצם קירוב ליניארי של תיבות ההחלפה. למשל, אם נתונים ארבעה משתנים מקריים ו- ויהיו וכן , הסכום המתקבל על ידי חיבור עם אז מתקיים:

.

בדרך זו אפשר לשלב משוואות ליניאריות כדי לקבל משוואה ליניארית חדשה, ואם מניחים שהמשתנים בלתי תלויים אז אפשר להשתמש בלמת הערמה באופן הזה:

כתוצאה מכך . אפשר לראות שהביטויים וכן מקבילים לקירובים הליניאריים של שתי תיבות ההחלפה בהתאמה ואילו מקביל לקירוב הליניארי של שתיהן יחד. כמובן שבניתוח אמיתי של הצופן מעורבים יותר תיבות החלפה ויותר משתנים מקריים בהתאם.

תיבות ההחלפה[עריכת קוד מקור | עריכה]

במרבית הצפנים כמו DES ו-AES, כל הפעולות למעט תיבות ההחלפה הן פעולות לינאריות ולכן מספיק לייצג את פעולות תיבות ההחלפה כמשוואה לינארית כדי לפצח את הצופן. בהינתן תיבת החלפה כמו בדוגמה לעיל, המקבלת 4 סיביות ומחזירה ארבע סיביות . קל יותר לגלות קירובים ליניאריים על ידי חישוב ההטייה של כל תיבה בנפרד. למשל אם לוקחים את הביטוי או לחלופין , מנסים את כל 16 האפשרויות של ובודקים את התוצאות המתקבלות מתיבת ההחלפה, מגלים שב-12 מתוך 16 המקרים המשוואה האמורה מתקיימת, כלומר בהסתברות של . דוגמה אחרת, עם הביטוי מתקבלת הטיה של אפס וכן עם המשוואה ההסתברות היא שזהו קירוב אפיני (בגלל סימן המינוס). היות שההתקפה הליניארית מסתמכת על שיעור ההטייה אין חשיבות לסימן וההתקפה תצליח במידה שווה במקרה של קירוב ליניארי או אפיני (מלמעלה או מלמטה). את כל 16 האפשרויות של הצירופים הליניאריים של כל המשוואות האפשריות, אפשר לסכם בטבלה. על בסיס טבלה הזו מגלים את כל הקירובים הליניאריים/אפיניים של תיבת ההחלפה ומסכמים אותם בטבלה אחרת הנקראת טבלת קירוב ליניארי, לדוגמה כך נראית הטבלה עבור תיבת ההחלפה שנבחרה לצורך הדוגמה:

0 1 2 3 4 5 6 7 8 9 A B C D E F
0 +8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 -2 -2 0 0 -2 +6 +2 +2 0 0 +2 +2 0 0
2 0 0 -2 -2 0 0 -2 -2 0 0 +2 +2 0 0 -6 +2
3 0 0 0 0 0 0 0 0 +2 -6 -2 -2 +2 +2 -2 -2
4 0 +2 0 -2 -2 -4 -2 0 0 -2 0 +2 +2 -4 +2 0
5 0 -2 -2 0 -2 0 +4 +2 -2 0 -4 +2 0 -2 -2 0
6 0 +2 -2 +4 +2 0 0 +2 0 -2 +2 +4 -2 0 0 -2
7 0 -2 0 +2 +2 -4 +2 0 -2 0 +2 0 +4 +2 0 +2
8 0 0 0 0 0 0 0 0 -2 +2 +2 -2 +2 -2 -2 -6
9 0 0 -2 -2 0 0 -2 -2 -4 0 -2 +2 0 +4 +2 -2
A 0 +4 -2 +2 -4 0 +2 -2 +2 +2 0 0 +2 +2 0 0
B 0 +4 0 -4 +4 0 +4 0 0 0 0 0 0 0 0 0
C 0 -2 +4 -2 -2 0 +2 0 +2 0 +2 +4 0 +2 0 -2
D 0 +2 +2 0 -2 +4 0 +2 -4 -2 +2 0 +2 0 0 +2
E 0 +2 +2 0 -2 -4 0 +2 -2 0 0 -2 -4 +2 -2 0
F 0 -2 -4 -2 -2 0 +2 0 0 -2 +4 -2 -2 0 +2 0

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

קירוב ליניארי של כל הצופן[עריכת קוד מקור | עריכה]

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

בהסתברות והטייה
בהסתברות והטייה
בהסתברות והטייה

בהסתברות והטייה

יהיו ו- בלוק הקלט ובלוק הפלט בהתאמה של תיבות ההחלפה של הצופן בסבב ה-. וכן ו- הסיבית ה- של בלוק הקלט או הפלט בהתאמה, בסבב ה-. באותו אופן מייצג את המפתח המחובר ב-XOR עם בלוק הנתונים בסבב ה- כאשר הוא המפתח שמחובר לאחר הסבב הרביעי וכן מתייחס לסיבית במיקום ה- של המפתח ה-. לכן בשלב הראשון של הצופן מתקבל: . כאשר הוא בלוק הקלט הגלוי או המסר המיועד להצפנה, באורך 16 סיביות. על בסיס הקירוב הליניארי של הסבב הראשון של הצופן, המשוואה הליניארית הבאה:

מתקיימת בהסתברות . וכן עבור הסבב השני, הצירוף הבא

מתקיים בהסתברות . היות שפלט הסבב הראשון הוא בעצם קלט הסבב השני המחובר עם המפתח המתאים, מתקבל לכן אפשר לקבל קירוב ליניארי מהצורה:

בהסתברות 1/4. לפי למת הערמה של מצואי, אם משלבים יחד את הצירופים משני הסבבים הראשונים מתקבלת המשוואה:

שמתקיימת בהסתברות ש/ל עם הטיה . למרות שהיא מתבססת על ההנחה שהקירובים הליניאריים של כל סבב בלתי תלויים שהיא הנחה לא מדויקת, בפועל היא עובדת היטב. עבור הסבב השלישי אפשר להבחין ש:

בהתסברות וכן
בהתסברות .

היות שמתקיים וכן מתקבלת המשוואה הבאה:

בהתסברות של (עם הטיה ). כעת אפשר לשלב את הצירופים מכל הסבבים (לפי עקרון הערמה) ולקבל את:

.

אפשר לפשט את המשוואה. היות שבעצם וכן , אפשר לשכתב את המשוואה האמורה כך:

.

כאשר כולל את כל סיביות המפתח המשתתפות (שמיקומן ידוע):

ההסתברות שהמשוואה האחרונה תתקיים היא עם הטיה - והיא הקירוב הליניארי של הצופן. היות ש- קבוע בהתאם למפתח הסודי המשוואה הבאה:

חייבת להתקיים בהסתברות של או שתלוי בערכו של (אפס או אחד בהתאמה). כעת בידינו הקירוב הליניארי הכולל של שלושת הסבבים הראשונים של הצופן בהסתברות של .

ניחוש סיביות מפתח[עריכת קוד מקור | עריכה]

לאחר שהתגלה הקירוב הליניארי הכולל של מתוך הסבבים של הצופן, עם הטיה הסתברותית משמעותית, עוברים לשלב ניחוש סיביות תת-המפתח האחרון על ידי חישוב לאחור. ביתר פירוט, תחילה מנסים את כל האפשרויות של המפתח האחרון ( במקרה זה) ומחברים אותם ב-XOR עם הבלוק המוצפן, ואז מבצעים פענוח חלקי (העברה בתיבות ההחלפה של הסבב האחרון) של הבלוק שהתקבל. פעולה זו מתבצעת עבור כל זוגות הבלוקים גלויים/מוצפנים שנמצאים בידי המתקיף. שומרים מונה שמקודם בכל פעם שהתקבל ערך המקיים את הצירוף הליניארי של התיבות מהסבב האחרון (יש לזכור שהבלוק הגלוי ידוע). כל ניחוש סיביות מפתח שהמונה שלו גבוה או נמוך ממחצית מזוגות הקלט/פלט שבידי המתקיף בשיעור משמעותי הדבר נחשב לניחוש מוצלח. ניחוש לא נכון אמור לתת תוצאה אקראית ולכן המשוואה האמורה תתקיים בהסבתרות קרובה לחצי.

בצופן הצעצוע המובא להמחשה, הצירוף הליניארי האחרון משפיע על הפלט לתיבות ו- של הסבב האחרון. כיוון שכל תיבה מכילה 4 סיביות בסך הכול 8 זה אומר שעבור כל זוג קלט/פלט מנסים את כל 256 צירופי סיביות של המפתח במקטעים (יתר סיביות המפתח אינן משפיעות כי שתי תיבות אילו היו התיבות הפעילות היחידות בסבב זה). עבור כל ניחוש מפתח חלקי כזה, מקדמים מונה כלשהו אם המשוואה האחרונה התקיימה. הזוגות שלהם המונה הגבוה ביותר (שלילי או חיובי) מרמזות על ניחוש מוצלח בהסתברות גבוהה. המשוואה האחרונה (הצירוף הליניארי של הצופן) משפיעה על התוצאה בהתאם למפתח. אם ערכן של סיביות המפתח בפוזיציות הללו הוא אז המשואה תתקיים בהסתברות גבוהה מחצי ואילו אם המשוואה תתקיים בהסתברות נמוכה מחצי. את צופן הצעצוע המתואר אפשר לתקוף עם 10,000 זוגות קלט/פלט ידועים, ולפי תיאור ההתקפה עד כה, התגלה ניחוש מוצלח של סיביות תת-המפתח וכן . ואכן המונה עבור סיביות אילו בבסיס הקסדצימלי כצפוי היה גבוה משמעותית מ-5,000. הטבלה הבאה מכילה להמחשה, אוסף חלקי מתוך 256 האפשרויות. ערכים אילו מייצגים את שיעור ההטייה לפי החשבון האמור, "הטייה = מונה פחות חצי לחלק למספר הזוגות". כאשר המונה מתייחס לניחוש מסוים של 8 סיביות מהמפתח. אפשר לראות שההטייה הגבוהה ביותר מופיעה כאשר הניחוש הוא 2,4.

קטע תת-המפתח הטיה קטע תת-המפתח הטיה
1C 0.0031 2A 0.0044
1D 0.0078 2B 0.0186
1E 0.0071 2C 0.0094
1F 0.0170 2D 0.0053
20 0.0025 2E 0.0062
21 0.0220 2F 0.0133
22 0.0211 30 0.0027
23 0.0064 31 0.0050
24 0.0336 32 0.0075
25 0.0106 33 0.0162
26 0.0096 34 0.0218
27 0.0074 35 0.0052
28 0.0224 36 0.0056
29 0.0054 37 0.0048

הערך בשורה 9 בטבלה שהתגלה במהלך הניסוי, קרוב מאוד לערך הצפוי של . למרות שניחוש נכון תמיד יהיה בעל הטיה גבוהה ביותר, בכל זאת קיימים ערכים של ניחושים לא נכונים שמכילים הטיה גבוהה. מה שמעיד על כך שההשוואה של ניחושים נכונים אינה בדיוק השוואה של נתונים אקראיים מול משוואה ליניארית שאז ההטיה אמורה להיות אפס במצב אידיאלי. העובדה שזה לא קורה נובעת מכמה סיבות ביניהן מאפייני תיבות ההחלפה המשפיעות על הפענוח החלקי, אי דיוקים הנובעים מההנחה השגויה שהצירופים של תיבות ההחלפה בלתי תלויים זה בזה וכן מההשפעה של מה שקרוי "פרישה ליניארית" או "מעטפת ליניארית" ראה קבוצה פורשת.

סיבוכיות ההתקפה[עריכת קוד מקור | עריכה]

ההסתברות שמשוואה ליניארית תתקיים תלויה בהטייה ההסתברותית של תיבות ההחלפה הפעילות ובמספרן (התיבות הפעילות הן אילו שהקו עובר דרכן בתרשים). באופן כללי ככל שההטייה גבוהה יותר בתיבות ההחלפה כך היא תהיה גבוהה יותר בצופן כולו. כמו כן ככל שפחות תיבות החלפה פעילות כך שיעור ההטייה יהיה גבוה יותר. יהי ההטייה מחצי של ההסתברות שמשוואה ליניארית עבור כל הצופן תתקיים. מיצורו מצואי הראה שמספר זוגות הקלט/פלט הנדרש לצורך הקרפיטואנליזה הליניארית פרופורציונלי ל- ואם מייצג את מספר הבלוקים הקריאים הדרוש אז אפשר להעריכו על ידי .

למרות שסיבוכיות ההתקפה נמדדת גם בזמן וגם בזיכרון, בקריפטואנליזה ליניארית מתייחסים בעיקר לכמות הזיכרון. כלומר מניחים שאם יש באפשרותנו להשיג טקסטים אז ההתקפה ברת ביצוע. לאור האמור הדרכים להתגונן מפני הקריפטואנליזה הליניארית הן מיטוב תיבות ההחלפה, כלומר צמצום ההטייה הליניארית שלהם וכן בניית הצופן באופן שיהיו יותר תיבות החלפה פעילות. צופן AES הוא דוגמה מצוינת לגישה זו. אמנם צריך לשים לב שההוכחה כביכול שצופן עמיד מפני קריפטואנליזה ליניארית מסתמכת על אי קיומם של קירובים ליניאריים בהסתברות גבוהה, חישוב ההסתברות של משוואות ליניאריות מתבסס על ההנחה שהתיבות בלתי תלויות וההטייה שלהם בלתי תלויה כך שאפשרי ליישם את עיקרון הערמה של מצואי וכן על ההנחה שקירוב ליניארי יחיד מספיק כדי לחשב את הביטוי הליניארי הטוב ביותר בין סיביות הקלט וסיביות הפלט. במציאות הקירובים הליניאריים של תיבות ההחלפה אינם בלתי תלויים מה שעלול להשפיע על חישוב ההסתברות של ההטייה הכללית של הצופן. וכן מופעים של קירובים ליניאריים עם אותן סיביות קלט ופלט אך עם תיבות החלפה פעילות אחרות ניתנים לצירוף כך שתתקבל הסתברות ליניארית גבוהה יותר מהצפוי עם סט אחד של תיבות החלפה פעילות. תופעה זו נקראת מעטפת ליניארית או פרישה ליניארית. והיא משליכה על כך שגם אם נראה כאילו הצופן אינו מכיל הטיה הסתברותית גבוהה שילוב של מספר מופעים של קירובים ליניאריים יכול להוביל להטייה גבוהה. בכל אופן הגישה הבסיסית המתוארת כאן נוטה לעבוד היטב נגד מספר צפנים מודרניים, זאת משום שההשערה שהקירובים הליניאריים של תיבות ההחלפה בלתי תלויים סבירה למדי וכן אם מופעים של קירובים ליניאריים של קבוצת תיבות החלפה פעילות מניבים הטיה הסתברותית גבוהה הם נוטים להעלים את המעטפת הליניארית.


ראו גם[עריכת קוד מקור | עריכה]

הערות שוליים[עריכת קוד מקור | עריכה]

  1. ^ Matsui, M. & Yamagishi, A. "A new method for known plaintext attack of FEAL cipher". Advances in Cryptology - EUROCRYPT 1992
  2. ^ Matsui, M. "Linear Cryptanalysis Method for DES Cipher" (PDF). Advances in Cryptology - EUROCRYPT 1993.
  3. ^ Alex Biryukov, Christophe De Canni'ere, and Michal Quisquater. On Multiple Linear Approximations. In Matt Franklin, editor, Advances in Cryptology – CRYPTO ’04, 24th Annual International Cryptology Conference, Santa Barbara, California, USA, August 15–19, 2004. Proceedings, volume 3152 of Lecture Notes in Computer Science, pages 1–22, Berlin/Heidelberg, 2004. Springer.
  4. ^ Zero-Correlation Linear Cryptanalysis of Block Ciphers
  5. ^ Carlo Harpes, Gerard G. Kramer, James L. Massey (May 1995). A Generalization of Linear Cryptanalysis and the Applicability of Matsui's Piling-up Lemma (PDF/PostScript). Advances in Cryptology — Eurocrypt '95. Saint-Malo: Springer-Verlag. pp. 24–38. Retrieved 9 September 2007
  6. ^ A Tutorial on Linear and Differential Cryptanalysis, Howard M. Heys