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 з однієї гілки, а не твердження, що кожна бібліотека, формат файлу чи GUI розкриває абревіатуру однаково. Перевірте заголовок або документацію тієї версії, що перед вами.
Якщо старий профіль каже CFB і партнер це приймає, узгоджені параметри десь записуються: у журналі, дампі конфігурації, відповіді API. Читайте їх, а не виводьте розмір сегмента з рядка відображення.
Про що назва режиму не говорить
Назва описує поведінку шифрування і більше нічого. VPN усе ще потребує захисту цілісності, виведення ключів і автентифікації партнера, а CFB не дає жодного з цього. Заміна CFB8 на CFB1 теж не косметична зміна: поведінка на лінії відрізняється, і обидві сторони мусять підтримувати ту саму конструкцію. І назва в бібліотеці не доводить, що розгорнутий шлюз приймає її для свого каналу даних.
Для всього, що підтримується, використовуйте повну схему захисту протоколу й політику оператора, та фіксуйте версії бібліотеки й шлюзу, точну опцію та узгоджений результат. Стара назва пояснює те, що ви читаєте; вона не виправдовує відродження конфігурації.