הצפנת AES-256 מוסברת: מה זה אומר לנתונים שלך
הסבר AES-256: כיצד הצופן עובד, למה מפתחות 256 סיביות חשובים, מה מצב GCM מוסיף ומה לבדוק כשאפליקציה טוענת להצפנת AES-256.
מה זה AES-256?
AES-256 הוא צופן בלוקים סימטרי: תקן ההצפנה המתקדמת (Advanced Encryption Standard) עם מפתח באורך 256 סיביות. אותו מפתח מצפין ומפענח. הוא מעבד נתונים בבלוקים של 128 סיביות לאורך 14 סבבים, ו-NIST תקנן אותו כ-FIPS 197 בשנת 2001.
השם מורכב משלוש עובדות. AES הוא שם האלגוריתם, ש-NIST בחר בשנת 2001 מתוך ההצעה Rijndael. 256 הוא אורך המפתח בסיביות, והוא קובע כמה מפתחות תוקף בכוח גס צריך לנסות. מצב כמו GCM או CBC, שנכתב בדרך כלל אחרי השם בצורה AES-256-GCM, קובע איך הבלוקים משורשרים זה לזה והאם הטקסט המוצפן נבדק מפני שיבוש. AES-256 לבדו אומר לך מה הצופן ומה גודל המפתח. הוא לא אומר לך מה המצב, והוא לא אומר לך מי מחזיק במפתח.
AES-256 הוא תקן ההצפנה המתקדמת עם מפתח 256 סיביות, שתוקן על ידי NIST כ-FIPS 197 בשנת 2001. זהו אלגוריתם ההצפנה הסימטרית שבו משתמשת ממשלת ארה"ב עבור מידע מסווג, בנקים לעסקאות פיננסיות ואפליקציות ממוקדות אבטחה להגנה על נתונים במנוחה ובמעבר. ל-AES-256 יש 2^256 מפתחות אפשריים, מספר גדול יותר מהספירה המשוערת של אטומים ביקום הנצפה. אין התקפה ידועה שמקטינה את מרחב המפתחות הזה לחיפוש אפשרי חישובית.
מדריך זה מסביר מה AES-256 עושה בפועל, למה גודל המפתח חשוב, מה המצבים השונים אומרים (ECB, CBC, GCM), ומה לחפש כשאפליקציה טוענת להשתמש בהצפנת AES-256.
מה AES עושה בפועל
AES הוא צופן בלוקים סימטרי. "סימטרי" אומר שאותו המפתח מצפין ומפענח. "צופן בלוקים" אומר שהוא מעבד נתונים בבלוקים בגודל קבוע של 128 סיביות (16 בתים).
האלגוריתם לוקח את הנתונים שלך (טקסט רגיל), משלב אותם עם מפתח, ומייצר פלט מוצפן (טקסט מוצפן) דרך סדרה של טרנספורמציות מתמטיות. טרנספורמציות אלה, החלפה, הזזה, ערבוב והוספת מפתח, חוזרות על מספר קבוע של סיבובים. AES-256 משתמש ב-14 סיבובים.
כל סיבוב מיישם ארבע פעולות:
- SubBytes: כל בית מוחלף באמצעות טבלת החלפה קבועה (S-box), המוסיפה אי-לינאריות.
- ShiftRows: בתים בכל שורה מוזזים בהיסטים שונים, מפזרים נתונים על פני מיקומים.
- MixColumns: עמודות מעורבבות דרך כפל מטריצות בשדה סופי, מפזרים שינויים על פני בתים.
- AddRoundKey: מפתח הסיבוב (שמגיע מהמפתח הראשי) מוחל ב-XOR על הנתונים.
לאחר 14 סיבובים, הטקסט הרגיל מעורבל לחלוטין. הפיכת פעולות אלה עם המפתח הנכון משחזרת את הנתונים המקוריים. ללא המפתח, הטקסט המוצפן אינו ניתן להבחנה מרעש אקראי.
למה 256 חשוב
"256" ב-AES-256 מתייחס לאורך המפתח: 256 סיביות. זה קובע את מספר המפתחות האפשריים שתוקף חייב לנסות כדי לשבור את ההצפנה בכוח גס.
| גודל מפתח | מפתחות אפשריים | זמן לפריצה בכוח גס (טריליון ניחושים לשנייה) |
|---|---|---|
| 56 סיביות (DES) | 7.2 x 10^16 | כ-20 שעות |
| 128 סיביות (AES-128) | 3.4 x 10^38 | 10^13 שנים (10 טריליון שנים) |
| 256 סיביות (AES-256) | 1.16 x 10^77 | 10^51 שנים |
לשם הפרספקטיבה: היקום הוא כ-1.38 x 10^10 שנים. פריצת AES-256 בכוח גס תיקח בערך 10^41 פעמים יותר מגיל היקום, אפילו בטריליון ניחוש לשנייה.
AES-128 כבר אינו אפשרי חישובית בכוח גס. AES-256 מספק שוליים נוספים נגד התקדמות עתידית במחשוב, כולל מחשוב קוונטי. אלגוריתם גרובר (התקפת מחשוב קוונטי) מחצה ביעילות את אורך המפתח, ומוריד AES-256 לשקילות AES-128, שנותר בלתי אפשרי. AES-128 יורד לאבטחה אפקטיבית של 64 סיביות, שעלולה להיות חשופה. לכן אפליקציות קריטיות לאבטחה מעדיפות AES-256.
מצבי AES: למה הם חשובים
AES לבד מצפין רק בלוק 128 סיביות אחד בכל פעם. עבור נתונים אמיתיים (תמונות, מסמכים, סרטונים), צריך "מצב עבודה" שמטפל בנתונים גדולים מ-16 בתים. המצב קובע כיצד הבלוקים מקושרים יחד ויש לו השלכות אבטחה משמעותיות.
ECB (Electronic Codebook): אל תשתמש
כל בלוק מוצפן באופן עצמאי עם אותו המפתח. בלוקי טקסט רגיל זהים מייצרים בלוקי טקסט מוצפן זהים. זה חושף דפוסים בנתונים. ההדגמה הקלאסית: הצפנת תמונת bitmap עם ECB שומרת על מבנה התמונה בטקסט המוצפן, מה שהופך את התוכן לניתן לזיהוי. ECB כלול בתקן אבל לעולם אין להשתמש בו עבור נתונים בעלי מבנה או דפוסים חוזרים.
CBC (Cipher Block Chaining): ירושה
כל בלוק מוחל ב-XOR עם בלוק הטקסט המוצפן הקודם לפני ההצפנה. זה מבטל את דליפת הדפוסים של ECB. CBC היה מצב התקן לעשורים אבל הוחלף על ידי GCM לרוב היישומים. CBC דורש וקטור אתחול אקראי (IV) ואינו מספק אימות מובנה.
GCM (Galois/Counter Mode): התקן הנוכחי
GCM משלב הצפנת מצב מונה עם אימות שדה גלואה. הוא מספק הצפנה מאומתת: הוא מצפין את הנתונים ומייצר תג אימות שמזהה כל שינוי בטקסט המוצפן. אם סיבית אחת תשתנה, הפענוח ייכשל במקום לייצר טקסט רגיל פגום.
NIST תיקן GCM ב-SP 800-38D (2007). זהו המצב המומלץ ליישומים חדשים.
AES-256-GCM הוא AES עם מפתח 256 סיביות במצב Galois/Counter. זה מה שאפליקציות קריטיות לאבטחה צריכות להשתמש בו, ומה ש-Vaultaire משתמש בו להצפנת תמונות ותכני קבצים.
| מצב | דליפת דפוסים | אימות | המלצה נוכחית |
|---|---|---|---|
| ECB | כן (חמור) | לא | אל תשתמש |
| CBC | לא | לא (דורש MAC נפרד) | ירושה; קביל עם HMAC |
| GCM | לא | כן (מובנה) | מומלץ ליישומים חדשים |
מה AES-256 אומר לאחסון תמונות
כשאפליקציית כספת תמונות טוענת "הצפנת AES-256", שלושה דברים צריכים להיות נכונים:
תוכן הקבצים מוצפן ב-AES-256. נתוני התמונה הגולמיים (פיקסלים, מטא-נתונים, תמונה ממוזערת) הומרו לטקסט מוצפן עם מפתח 256 סיביות.
כל קובץ משתמש בוקטור אתחול ייחודי (IV). אם שתי תמונות זהות מוצפנות עם אותו מפתח, הטקסט המוצפן צריך להיות שונה. זה דורש IV ייחודי לכל קובץ.
המצב מספק אימות (GCM או שקול). ללא אימות, תוקף יכול לשנות את הטקסט המוצפן ללא זיהוי.
מה "AES-256" בדף שיווקי לא אומר לך
AES-256 הכרחי אבל לא מספיק. גורמים קריטיים אחדים קובעים אם ההצפנה אכן מגינה על הנתונים שלך:
גזירת המפתח חשובה. איך נוצר המפתח בן 256 הביט? אם הוא נגזר מקוד PIN בן 4 ספרות עם KDF חלש, האבטחה בפועל היא 4 ספרות (10,000 צירופים), לא 256 ביט. מימוש חזק משתמש ב-PBKDF2 עם מספר איטרציות גבוה או ב-Argon2 עם פרמטרי זיכרון וזמן מתאימים. Vaultaire משתמש ב-PBKDF2 עם HMAC-SHA512 וב-600,000 איטרציות כדי לגזור מפתח כספת מקומי מתבנית ה-5x5 שבחרת ומה-salt של המכשיר. PBKDF2 מייקר כל ניחוש, אבל לא מעלה את האנטרופיה של התבנית ל-256 ביט.
אחסון המפתח חשוב. איפה נמצא המפתח? אם הוא נשמר כטקסט גלוי בארגז החול של האפליקציה, תוכנה זדונית עם גישה לקבצים יכולה לקרוא אותו. ה-Secure Enclave של Apple תומך בפעולות מסוימות על מפתחות שאי אפשר לייצא, לא במפתחות AES שרירותיים שאפליקציה מספקת. תכנונים עם מפתח סימטרי נשענים במקום זה על Keychain ועל הגנת הנתונים, ולכן התיעוד צריך לציין את ה-API ואת מחלקת ההגנה, ולא רק לכתוב ״מגובה בחומרה״.
מה מוצפן חשוב. חלק מהאפליקציות מצפינות תכני קבצים אבל משאירות שמות קבצים, תמונות ממוזערות ומטא-נתונים לא מוצפנים.
מחזור החיים חשוב. כמה זמן חומר המפתח המפוענח נשאר זמין? Vaultaire מוחק את מצב הכספת הפעילה ואת המפתח הראשי בנעילה או בסגירה ודורש פתיחה חדשה. בתי המפתח הסימטרי נמצאים בהכרח בזיכרון האפליקציה כשכספת פתוחה, ו-Swift ו-iOS לא מאפשרים לאפליקציה להוכיח שכל עותק זמני נדרס.
AES-256 בפועל: מי משתמש בו
| גורם | שימוש | מצב |
|---|---|---|
| ממשלת ארה"ב (NSA) | מידע מסווג | GCM (או CTR עם אימות נפרד) |
| Apple (iCloud ADP) | הצפנת iCloud מקצה לקצה | GCM |
| Signal | הצפנת הודעות | CBC (עם HMAC לאימות) |
| בנקים | הצפנת עסקאות פיננסיות | GCM |
| 1Password | כספת סיסמאות | GCM |
| Vaultaire | כספת תמונות וקבצים | GCM |
| VeraCrypt | הצפנת דיסק | XTS (מותאם לבלוקי דיסק) |
אי-הבנות נפוצות
"הצפנה בדרגה צבאית" לא אומר כלום ספציפי. דפי שיווק משתמשים בביטוי הזה כי הוא נשמע מרשים. AES-256 משמש את הצבאות. AES-128 גם. הביטוי לא אומר לך על המצב, גזירת המפתח, אחסון המפתח או מה מוצפן בפועל.
"הצפנת 256 סיביות" אולי לא אומרת AES-256. צופנים אחרים גם משתמשים במפתחות 256 סיביות (ChaCha20, Twofish, Serpent). בדוק איזה אלגוריתם מצוין. AES-256-GCM הוא התקן הנוכחי.
AES-256 לא מגן מפני סיסמה חלשה. אם הסיסמה שלך היא "1234" וגזירת המפתח חלשה, ההצפנה היא אפקטיבית בת 4 ספרות ללא קשר לעוצמת הצופן.
AES-256 לא מגן על נתונים בשימוש. כשאתה צופה בתמונה, היא חייבת להיות מפוענחת בזיכרון. באותו רגע, היא קיימת כטקסט רגיל ב-RAM.
שאלות נפוצות
מה פירוש AES-256?
Advanced Encryption Standard (תקן ההצפנה המתקדמת) עם מפתח באורך 256 סיביות. AES הוא הצופן ש-NIST תקנן כ-FIPS 197 בשנת 2001, אחרי שבחר בתכנון Rijndael. המספר 256 הוא אורך המפתח בסיביות. סיומת כמו AES-256-GCM מוסיפה את מצב הפעולה, שהוא בחירה נפרדת מהצופן ומגודל המפתח.
האם ניתן לפצח AES-256?
אין התקפה ידועה שפוצחת AES-256 על ידי הקטנת מרחב המפתחות המלא. ההתקפה הידועה הטובה ביותר (התקפת biclique של Bogdanov, Khovratovich ו-Rechberger, 2011) מקטינה AES-256 מ-2^256 פעולות ל-2^254.4, שיפור תיאורטי חסר משמעות חישובית. AES-256 נותר שלם.
האם AES-256 עמיד בפני מחשוב קוונטי?
ברובו, כן. אלגוריתם Grover הקוונטי מקצר בחצי את אורך המפתח האפקטיבי: AES-256 נעשה שקול לאבטחה של 128 ביט מול התקפות קוונטיות. AES-128 יורד לאבטחה אפקטיבית של 64 ביט, שעלולה להיות פגיעה. חיפוש Grover נגד AES-256 עדיין ידרוש כ-2^128 פעולות, וזה לא מעשי.
מה ההבדל בין AES-128 ל-AES-256?
AES-128 משתמש במפתח 128 סיביות (10 סיבובים). AES-256 משתמש במפתח 256 סיביות (14 סיבובים). שניהם נחשבים מאובטחים נגד התקפות נוכחיות. AES-256 מספק שוליים גדולים יותר נגד התקדמות עתידית, בעיקר מחשוב קוונטי. AES-256 איטי בכ-40% מ-AES-128 בשל הסיבובים הנוספים, אבל האצת חומרה הופכת זאת לזניח במכשירים מודרניים.
האם הצפנת AES-256 מאטה את הטלפון שלי?
בשימוש רגיל זה לא מורגש. מעבדי Apple מודרניים מספקים האצת חומרה ל-AES דרך הספריות הקריפטוגרפיות של המערכת. זה לא אומר שפעולת ה-AES של אפליקציה רצה בתוך Secure Enclave. הזמן עדיין תלוי בגודל הקובץ, במכשיר, באחסון ובמימוש, ולכן טענת ביצועים צריכה להישען על מדידות ולא על מספר אלפיות שנייה אוניברסלי.
כיצד יודעים אם אפליקציה אכן משתמשת ב-AES-256?
בדוק את תיעוד האבטחה של האפליקציה, לא רק את דף השיווק שלה. חפש את האלגוריתם והמצב המדויקים, את היררכיית המפתחות, את פרמטרי הגזירה, את השימוש המדויק ב-Keychain או ב-Secure Enclave, את הטיפול ב-nonce, את נתיב השחזור והאם גם המטא-דאטה מוצפנת. קוד פתוח וביקורות עצמאיות מקלים על אימות הטענות האלה.
סיכום
AES-256 הוא צופן סימטרי נפוץ שתוקנן על ידי NIST, ואין נגדו התקפה מעשית ידועה. גם מחשב קוונטי שמריץ את האלגוריתם של Grover יצטרך עבודה של כ-2^128. כשאתה בוחן אפליקציות שטוענות להצפנת AES-256, הסתכל מעבר לצופן: בדוק את המצב (GCM), את גזירת המפתח (PBKDF2 או Argon2 עם מספר איטרציות גבוה), את אחסון המפתח (Keychain והגנת הנתונים, ולא רק ״מגובה בחומרה״) ומה מוצפן בפועל (תוכן ומטא-דאטה).
Vaultaire משתמש ב-AES-256-GCM לתוכן הקבצים, לכותרות, למטא-דאטה, לאינדקסים ולתמונות הממוזערות. PBKDF2 עם HMAC-SHA512 גוזר מפתח כספת מקומי מהתבנית ומ-salt ב-Keychain המשותף לכל המכשיר. המפתח הזה פותח מפתח ראשי אקראי שמשמש להצפנת הקבצים. הפעולות הסימטריות רצות בתהליך האפליקציה דרך CryptoKit, ו-Keychain והגנת הנתונים של iOS מגנים על מצב השחזור כשהמכשיר נעול. ההיררכיה המלאה מתועדת במודל האבטחה.