CFB1, CFB8 ו-CFB128: זה גודל המשוב, לא גודל המפתח
המספר שאחרי CFB הוא צעד משוב, לא אורך מפתח: CFB1, CFB8 ו-CFB128 משתמשים בבלוק של 128 סיביות. קראו שמות ישנים בלי להמציא מפתחות חלשים.
שם כמו AES-256-CFB1 נושא שני מספרים, והם עונים על שאלות שונות. 256 הוא אורך מפתח ה-AES. ו-1 הוא המשוב, כלומר גודל הקטע, ב-CFB: תכונה של האופן שבו המצב מקדם את מצבו. אם קוראים את 1 כאורך מפתח, השם נראה כמו תצורה שגויה הרת אסון, ולכן השאלה חוזרת שוב ושוב.
החליטו באיזו משלוש הכמויות אתם מסתכלים לפני שאתם שופטים את השם: גודל מפתח, גודל בלוק או גודל קטע. רק הראשונה היא פרמטר אבטחה במובן הרגיל.
שלושה מספרים, שלוש כמויות
AES מקבל מפתחות של 128, 192 או 256 סיביות ויש לו בלוק של 128 סיביות בכל בחירה. גודל הבלוק שייך ל-AES, לא למצב. סיומת CFB היא הכמות השלישית: כמה נתונים המצב צורך ומחזיר בכל צעד. התיעוד של OpenSSL על AES מפרט במפורש את גדלי ההזזה האלה עבור גרסאות CFB.
CFB1 מחזיר סיבית אחת בכל פעם, CFB8 בייט אחד, CFB128 בלוק שלם. שלושתם משתמשים בפנים באותו צופן בלוק של 128 סיביות; מה שמשתנה הוא כמה סיביות מכל בלוק מחושב משמשות בכל פעולה. לכן הסיומת מזיזה עלות והתנהגות חוצץ, לא חוזק מפתח.
| Name | Key | AES block | Feedback |
|---|---|---|---|
| AES-256-CFB1 | 256 bits | 128 bits | 1 bit |
| AES-256-CFB8 | 256 bits | 128 bits | 8 bits |
| AES-256-CFB128 | 256 bits | 128 bits | 128 bits |
למה גודל הבלוק לא משתנה לעולם
AES הוא צופן בלוק עם בלוק קבוע של 128 סיביות, והמצבים הם מבנים סביבו. אף אחד מהם לא מקטין את הבלוק כדי להתאים לגודל הקטע. מימוש CFB1 עדיין מחשב בלוק AES שלם ולוקח סיבית אחת מהתוצאה. שאר הסיביות נזרקות באותו צעד, ובדיוק שם נמצאת עלות היעילות.
לכן משוב של סיבית אחת אינו מרמז על מפתח של סיבית אחת, ואין לדרג שם לפי הסיומת שלו. CFB128 אינו חזק פי ארבעה מ-CFB32; הוא מעבד קטעים גדולים יותר.
מה גודל הקטע באמת משנה
גודל הקטע משנה כמה טקסט מוצפן מוחזר בכל צעד וכמה טקסט גלוי כל צעד יכול לשאת. הוא משנה גם התפשטות שגיאות והתנהגות חוצץ, מה שחשוב לשימוש דמוי זרם. קטעים מכווני בייטים מתיישרים עם חוצצים, ומכווני סיביות לא.
בפועל הפרוטוקול בוחר את המצב, לא המפעיל. ערוץ נתונים של VPN משתמש במבנה שהפרוטוקול שלו מגדיר, עם הגנת שלמות משלו, ורשימת ספרייה רק אומרת אילו שמות קיימים.
לקרוא תווית CFB לא מסויגת
תווית CFB לא מסויגת זקוקה להקשר המימוש שלה. בכותרים של OpenSSL 1.0.2, EVP_aes_128_cfb הוא מאקרו ל-EVP_aes_128_cfb128, עם כינויים מתאימים למפתחות של 192 ו-256 סיביות. זו מוסכמת שמות של API מענף אחד, לא טענה שכל ספרייה, תבנית קובץ או ממשק גרפי מרחיב את הקיצור באותה דרך. בדקו את הכותרת או את התיעוד של הגרסה שלפניכם.
אם פרופיל ישן אומר CFB והצד השני מקבל אותו, הפרמטרים שנדונו נרשמים במקום כלשהו: ביומן, בהדפסת תצורה, בתגובת API. קראו אותם במקום להסיק את גודל הקטע ממחרוזת תצוגה.
מה שם מצב לא אומר לכם
השם מתאר התנהגות הצפנה ולא דבר אחר. VPN עדיין זקוק להגנת שלמות, גזירת מפתחות ואימות הצד השני, ו-CFB לא מספק אף אחד מהם. גם החלפת CFB8 ב-CFB1 אינה שינוי קוסמטי: ההתנהגות ברשת שונה ושני הצדדים חייבים לתמוך באותו מבנה. וגם שם בספרייה אינו מוכיח שהשער הפרוס מקבל אותו עבור ערוץ הנתונים שלו.
לכל דבר שמתוחזק, השתמשו במערך ההגנה המלא של הפרוטוקול ובמדיניות המפעיל, ותעדו את גרסאות הספרייה והשער, את האפשרות המדויקת ואת התוצאה שנדונה. השם הישן מסביר מה אתם קוראים; הוא אינו מצדיק להחיות את התצורה.