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 тоже не косметическое изменение: поведение в линии отличается, и обе стороны должны поддерживать одну и ту же конструкцию. И имя в библиотеке не доказывает, что развёрнутый шлюз принимает его для своего канала данных.
Для всего, что поддерживается, используйте полную схему защиты протокола и политику оператора, и фиксируйте версии библиотеки и шлюза, точную опцию и согласованный результат. Старое имя объясняет то, что вы читаете; оно не оправдывает возрождения конфигурации.