רשת החלפה-תמורה
ביטחון > קריפטואנליזה

רשת החלפה תמורה בסבב אחד. כדי להמחיש מדוע מספר החזרות חשוב, נניח למען הפשטות שרשת ההחלפה-תמורה מבוצעת רק פעם אחת. נתונה הפונקציה  y=F_{k}(x) המקבלת את הבלוק הקריא  x ואת  k שהוא מפתח סודי אקראי, מבצעת את סדרת הפעולות המתוארת ומחזירה את  y. המתקיף מקבל את  y ומנסה לגלות את  k. במקרה כזה כל מה שהוא צריך לעשות זה לבצע את פעולות ההחלפה והפיזור בסדר הפוך ולבטל את השפעתן על התוצאה (צריך לזכור שמפרט הצופן ידוע לו ולכן הוא יכול להשתמש בפונקציית הפענוח) ואז מה שנשאר בידו הוא  x\oplus k. כאן מניחים למען הפשטות שהמפתח נוצל כמו שהוא ללא תהליך הכנה מקדים כי מדובר בסבב אחד. אם יהיו בידו מספר בלוקים מוצפנים שהוצפנו עם אותו מפתח יש לו סיכוי טוב לנחש את המפתח בניתוח סטטיסטי (כמו בפנקס חד-פעמי). יתרה מזו, אם במקרה ידוע למתקיף בלוק אחד  x (כלומר במקרה של התקפת גלוי-ידוע), הוא יכול לחשוף את המפתח בקלות כי  k=x\oplus (x\oplus k). זוהי למעשה שבירה מוחלטת של הצופן.
רשת החלפה תמורה בשני סבבים. לעומת זאת אילו רשת ההחלפה תמורה הייתה מבוצעת בשני סבבים, המשימה הייתה יותר קשה. לצורך הפשטות נניח שבלוק הצופן הוא 64 סיביות והמפתח הוא 128 סיביות כך שהחצי הראשון של המפתח אותו מסמנים  k^{a} משמש לסבב הראשון כמו שהוא והחצי השני  k^{b} לסבב השני. ההנחה שמשתמשים במפתח ללא כל הכנה מוקדמת אינה מקלה על המתקיף כיוון שהמפתח אמור להיות קשה לניחוש מראש. היריב מקבל את  y=F_{k}(x) והוא מנסה לגלות את  k מתוך  x ו- y. אם נסמן את ארבע הסיביות הראשונות של התוצאה  y ב- w_{1}, יוצא ש- w_{1}=\alpha _{1}\oplus k_{1}^{b}. כלומר חיבור ארבע הסיביות הראשונות של תוצאת הביניים מהסבב הראשון המסומנים כאן ב- \alpha _{1} עם ארבע הסיביות הראשונות של החצי השני של המפתח המסומנים ב- k_{1}^{b}. המתקיף כמובן אינו יודע מה ערכם של  \alpha _{1} או  k_{1}^{b}. ערכו של  \alpha _{1} יכול להיות מושפע לכל היותר מארבע תיבות החלפה כי במקרה הגרוע כל סיבית של  \alpha _{1} הגיעה מתיבה אחרת. אבל המתקיף יכול לדעת בדיוק אלו תיבות החלפה השפיעו עליו כי התמורה המפזרת ידועה. באותה דרך, חשבון פשוט מראה ש-16 סיביות מהמפתח  k^{a}, בפוזיציות ידועות, השפיעו על תוצאות ארבע תיבות ההחלפה הללו. מה שהמתקיף יכול לעשות הוא כך. תחילה הוא מנחש את 16 הסיביות של  k^{a} במיקומים האמורים, מבצע XOR שלהם עם 16 הסיביות המתאימות של  x, מחשב את  \alpha _{1} ובודק אם  \alpha _{1}\oplus k_{1}^{b}=w_{1}, כאשר  k_{1}^{b} גם הוא חלק מהניחוש. יוצא איפה שבאמצעות כוח גס בזמן של  2^{20} לכל היותר הוא יכול לנחש בהסתברות גבוהה את כל הערכים האפשריים של 20 סיביות מהמפתח המקיימים את השוויון האמור. אם מניחים למען הפשטות שניחוש לא נכון יוביל לערך אקראי של  \alpha _{1}\oplus k_{1}^{b} אז ההסתברות של ניחוש אחד נכון היא  1/2^{|w_{1}|}=1/16, כך שקיימות בערך  2^{20}/16=2^{16} אפשרויות לעבור את הבדיקה. לכן כדי לשפר את סיכויי ההצלחה בניחוש המפתח הנכון אפשר לבדוק זוגות ערכים נוספים של  x ו- y והפתרונות המשותפים שלהם יכילו את המפתח הנכון בהסתברות גבוהה. אם למשל משתמשים ב-8 זוגות קלט/פלט כאלו המתקיף יכול לגלות את  k_{1}^{b} בזמן של  8\cdot 2^{20}=2^{23}. אם חוזרים על ההתקפה על יתר חלקי המפתח, 16 במספר, מגיעים לזמן כולל של  16\cdot 2^{23}=2^{27} לגילוי המפתח במלואו. הלקח מההתקפה המתוארת הוא שאפשר היה לנחש את המפתח בשיטת הפרד ומשול. קל יותר לבצע 16 התקפות שכל אחת מהן היא בזמן של  2^{23} מאשר לבצע התקפה אחת בזמן כולל של  2^{128} והסיבה לכך נעוצה בעובדה שהשפעת המפתח לא "התפזרה" היטב ובשלב השני לא כל סיביות המפתח השפיעו על כל סיביות הפלט.
רשת החלפה תמורה בשלושה סבבים. אפשר לראות שקל לבצע התקפת הבחנה על רשת החלפה-תמורה בשלושה סבבים לאור האמור לעיל שאפקט המפולת לא הושלם במלואו. המתקיף יכול פשוט לבקש הצפנה של זוגות קלטים הנבדלים רק בסיבית אחת ולבחון את התוצאות. היות שבהסתברות גבוהה סיביות אחדות של הקלט במיקומים מסוימים יוותרו ללא שינוי כי הפונקציה טרם הספיקה להגיע אליהם, אחרי מספר ניסיונות המתקיף יכול להבחין בכך ולהצליח בהתקפה בסיכוי גבוה.
כאמור AES מכיל עשרה סבבים של רשת ההחלפה-תמורה וניכר בהחלט שמספר החזרות מספק מרווח ביטחון סביר. טרם נמצאה קריפטואנליזה יעילה לשבירת AES שמנצלת חולשות במבנה רשת ההחלפה-תמורה שלו או מאפיינים אחרים של הצופן וההערכה היא שהוא בטוח מעשית.