Advanced Encryption Standard
מתוך ויקיפדיה, האנציקלופדיה החופשית
תקן הצפנה מתקדם (AES) הידוע גם בשמו ריינדל (Rijndael), הנו צופן בלוקים שאומץ כתקן הצפנה הרשמי של ממשלת ארצות הברית המחליף את DES. ההערכה היא שהצופן יופץ מסביב לעולם וייבחן בעיון רב על ידי מומחים רבים כפי שקרה עם קודמו. אלגוריתם AES אומץ על ידי NIST המוסד הלאומי לסטנדרט וטכנולוגיה של ארצות הברית כתקן FIPS PUB 197 בנובמבר 2001, אחרי תהליך תיקנון שנמשך כחמש שנים. במהלכן נבחנו מספר מועמדים טובים. כסטנדרט חדש, AES נמצא כיום בעיצומו של תהליך הפצה בקנה מידה גדול.
האלגוריתם פותח על ידי שני מומחי הצפנה בלגיים, ג'ון דאמן ווינסנט ריימן והוצג בתהליך בחירת סטנדרט ההצפנה בשם ריינדל שהוא שילוב שמות ממציאיו. ריינדל הוא שכלול פיתוחים קודמים של דאמן וריימן הקרויים Square ו-Shark. צופן ריינדל הינו צופן איטרטיבי (פונקציית ההצפנה מיושמת במספר סבבים) ובניגוד ל-DES, אינו רשת פייסטל אלא רשת החלפה-תמורה. פירושו שבניגוד לקודמו פונקציית ההצפנה אינה מיושמת על חצאי גוש הקלט השזורים יחדיו, אלא מיושמת על גוש הקלט בשלמותו. AES מהיר ונוח ליישום גם בחומרה וגם בתוכנה וצורך מעט מאוד זיכרון.
בעוד ריינדל תומך בטווח רחב הן של גושי צופן והן של מפתחות. למעשה כל כפולה של 32 סיביות בטווח 128 - 256. הרי ש-AES מיישם את צופן ריינדל בשינוי קל, גודל הגושים נקבע ל-128 סיביות והוגדרו שלושה מפתחות אפשריים 128, 192 או 256 סיביות. הרחבת המפתח מתבצעת על ידי תהליך ריינדל להרחבת מפתח.
רוב החישובים של AES הם בשדות סופיים ומתבצעים במספר סבבים (לכל היותר 14 בהתאם לגודל המפתח) כאשר כל סבב מורכב מארבעה שלבים הקרויים טרנספורמציות המצב. מצב (State) מתאר את גוש המידע הנוכחי כמערך בתים דו-ממדי המורכב מארבעה שורות ומספר עמודות שהוא גודל הגוש חלקי 32 (עבור גושי מידע של 256 סיביות יהיו 8 עמודות). באופן דומה מיוצג גם המפתח המופק בתהליך הרחבת מפתח בכל שלב ונקרא מפתח-סבב. התהליכים הבאים מבוצעים על טבלת המצב כדלהלן:
- 1. ByteSub
- תהליך החלפה לא לינארי של בתי המצב המתבצע על כל בית בנפרד, תוך שימוש בטבלת החלפה סטטית המכונה S-box.
- 2. ShiftRow
- תהליך הזזה מחזורית Cyclic Shift או Rotate, שבה שורות טבלת המצב מוזזות בהיסטים שונים לפי ערכים קבועים כלשהם, בתנועה מחזורית.
- 3. MixColumn
- תהליך טרנספורמציה לינארית, שבו מתייחסים לכל עמודות המצב כפולינומים מעל השדה המורחב . כל העמודות מוכפלות בפולינום הקבוע ומצומצמות מודולו הפולינום (בפענוח ההכפלה מתבצעת עם ההופכי של ).
- 4. AddRoundKey
- בתהליך זה, מפתח-סבב בגודל טבלת המצב המופק מהמפתח בתהליך הרחבת המפתח האמור, מחובר בחיבור בינארי (XOR) עם כל סיביות המצב.
תוכן עניינים |
[עריכה] מיטוב הצופן
במעבדי 32 סיביות או יותר שבהם הזיכרון אינו מוגבל בדרך כלל, ניתן להאיץ את ביצוע הצופן בהמרת התהליכים האמורים לעיל לטבלאות חיפוש table lookup שיחד עם חיבור בינארי (XOR) וכן פעולות הזזה shift המובנות בשפות התכנות הנפוצות כמו C, מאפשרות האצת ביצועים תוך שמירה על פורטביליות רבה. כמו כן ניתן ליישם את הצופן גם במערכות מוגבלות כמו מעבדי 8 סיביות ובחומרה גם בתנאים בהם הזיכרון מוגבל. ניתן ליישם את AES בשבבים ולבצע פעולות אלגבריות בשדות סופיים בעזרת XOR, הזזה Shift והזזה מחזורית Rotate.
[עריכה] בטיחות הצופן
ה-NSA סקר את כל המועמדים שעלו לגמר בתהליך בחירת הסטנדרט MARS, RC6, Rijndael, Serpent, Twofish. והצהיר כי כולם בטוחים לשימוש עבור ממשלת ארצות הברית להצפנת מידע לא מסווג. ב-2003 הכריזה ממשלת ארצות הברית כי ניתן לעשות שימוש ב-AES להצפנת מידע מסווג עבור הממשל עם מפתח 128 סיביות, מלבד מידע מסווג בדרגה העליונה ביותר (Top Secret) שעבורו נדרש מפתח בגודל של 256 סיביות לכל הפחות. על כל פנים, כל מוצר המיועד להצפנת מידע עבור הממשל נבדק ומאושר על ידי ה-NSA. בכך למעשה לראשונה נחשף הציבור לאלגוריתם הצפנה בטוח שנבחן ואושר על ידי מומחי ממשל בכירים.
הדרך הטובה לתקוף צופן בלוקים היא הפעלת סוגי התקפות שונות על גרסאות מצומצמות של הצופן, קרי עם מספר קטן יותר של סבבים. למעשה ההתקפה הטובה ביותר, הצליחה על AES עם 7 עד 9 סבבים בהתאם לגודל המפתח, בקירוב. מספר הסבבים של AES הוא, 10 סבבים עבור מפתח 128 סיביות, 12סבבים עבור מפתח 192 סיביות ו-14 סבבים עבור מפתח 256 סיביות. כך שמספר הסבבים מהווה מרווח בטחון מספק לדעת רבים. מספר מומחי הצפנה מוטרדים באשר למרווח בטחון זה, לטענתם מרווח זה קטן מדי ואינו מספק הגנה מינימאלית. משמעות שבירת אלגוריתם AES היא בעצם מציאת כל דרך אפשרית לחשיפת המפתח, הקצרה ולו במעט מחיפוש ממצא. אם כי במרבית המקרים גם אם תמצא דרך כזו, לרוב לא תהיה מעשית ולא תטריד איש בטווח הקרוב. אולם מעצם ההגדרה, מהווה בהחלט נקודת תורפה שיש להתייחס אליה. נכון להיום לא נמצאה דרך כזו באשר ל-AES.
דאגה אחרת היא המבנה המתמטי של AES. בניגוד לרוב הצופנים הגושיים האחרים, AES מכיל תיאור מתמטי מאוד ברור, בעל מבנה ייחודי. טרם נמצאה מתקפה המנצלת עובדה זו. אם כי מומחים מודאגים מכך שבעתיד עלולה להימצא דרך לניצול המבנה הייחודי של AES למתקפה כלשהי.
ב-2002 הכריזו ניקולס קורטויס וג'וזף פייפרציק, על מתקפה תיאורטית הקרויה XSL המעידה על נקודת תורפה פוטנציאלית באלגוריתם AES. מומחי הצפנה שבחנו את הרעיון מקרוב סבורים כי המחברים טעו בבסיס המתמטי עליו נשענת המתקפה שלהם. לשאלה האם סוג כזה של התקפה עלול להיות אפשרי בעתיד, טרם נמצאה תשובה.
[עריכה] Side channel attack
נכון לשנת 2006 ההתקפות היחידות שהצליחו אם כי בעקיפין, כנגד AES קרויות side channel attack. סוג זה של התקפה אינו מתמקד בצופן עצמו אלא באופן יישומו במערכת, העשוי שלא במודע להדליף מידע קריטי אודות הצופן או המפתח. באפריל 2005, הכריזו מומחים על התקפת תזמון מטמון (cache timing attack) שהצליחה לפרוץ לשרת ייעודי שיישם הצפנת AES כחלק ממערכת SSL. השרת נבנה כך שיאפשר חשיפה של מידע תזמון רב ככל האפשר. ההתקפה נזקקה ללפחות 200 מיליון צופנים נבחרים. יש הסבורים כי התקפה זו אינה מעשית דרך אינטרנט, ברוס שנייר כינה אותה "התקפת תזמון נאה". באותה שנה, עדי שמיר ושני חוקרים נוספים ממכון ויצמן, פרסמו מסמך המתאר מספר התקפות תזמון דומות כנגד AES ופתרונותיהן. אחת מהן, הצליחה לחשוף את המפתח כולו אחרי 800 כתיבות לזכרון בלבד תוך מספר מילישניות, בתנאי שלתוקף הייתה גישה לשרת בו מתבצעת ההצפנה.