Инструмент шифрования/дешифрования Blowfish
Быстрый симметричный блочный шифр, разработанный Брюсом Шнайером
⚠️ Предупреждение о безопасности
64-битный размер блока Blowfish может быть уязвим для атак дня рождения при больших объёмах данных. Для максимальной безопасности рассмотрите использование AES-256 для новых проектов.
О шифровании Blowfish
Blowfish — симметричный 64-битный блочный шифр, разработанный Брюсом Шнайером в 1993 году, опубликованный как быстрая беспатентная альтернатива DES. 16-раундовая сеть Фейстеля использует переменные ключи от 32 до 448 бит. Расписание ключей генерирует 18 записей P-массива и четыре S-box по 256 записей (~4 КБ), шифруя шестнадцатеричные цифры π. Blowfish был стандартным шифром OpenVPN (режим BF-CBC) до версии 2.4.0 (2017), замененной AES-256-GCM.
Настройка ключа Blowfish намеренно медленная (521 итерация над собой), делая перебор ключей дорогим. bcrypt использует Eksblowfish с настраиваемым фактором стоимости 4-31. Основное ограничение — 64-битный блок: Sweet32 (CVE-2016-2183, 2016) показал, что при ~32 ГБ под одним ключом CBC статистически эксплуатируемые коллизии блоков позволяют восстановление открытого текста.
Основные характеристики
- Переменный ключ: от 32 до 448 бит, одна и та же 16-раундовая Feistel для всех длин
- π-производные подключи: прозрачная инициализация без бэкдоров
- Высокая производительность на 32-битном железе без AES-NI
- Происхождение bcrypt: Eksblowfish (OpenBSD 1999) использует медленную генерацию подключей Blowfish
Режимы шифрования
- CBC: CBC Blowfish — 64-битные блоки XOR с предыдущим шифртекстом. Лимит Sweet32: после ~32 ГБ под одним ключом CBC наступает граница рождения (2³² блоков). Ротация ключа обязательна до этого предела.
- ECB: ECB Blowfish — каждый блок 8 байт обрабатывается независимо. Одинаковые блоки → одинаковый шифртекст. Только для однoblokchnyh операций.
- CFB: CFB Blowfish — самосинхронизирующийся поток с распространением ошибки. Ограничение Sweet32 в 32 ГБ на ключ, как у CBC.
- OFB: OFB Blowfish — детерминированный ключевой поток через итеративное re-шифрование. Нет распространения ошибки, но лимит цикла 2³² блоков.
Сравнение алгоритмов
| Алгоритм | Длина ключа | Размер блока | Безопасность | Скорость |
|---|---|---|---|---|
| Blowfish | 32-448 бит | 64 bits | Хорошая | Быстрая |
| AES | 128/192/256 bits | 128 bits | Отличная | Быстрая |
| DES | 56 bits | 64 bits | Слабая | Быстрая |
| 3DES | 112/168 bits | 64 bits | Средняя | Медленная |
Рекомендации по безопасности
- Sweet32 (CVE-2016-2183, 2016): после ~32 ГБ CBC под одним ключом статистически эксплуатируемые коллизии блоков. Ротация ключа до 2³² блоков (32 ГиБ) обязательна.
- OpenVPN 2.4.0 (2017) заменил BF-CBC на AES-256-GCM после Sweet32. BF-CBC соединения теперь генерируют предупреждения об устаревании.
- Никаких алгоритмических атак на полные 16 раундов Blowfish. Более 30 лет публичного анализа без криптографических прорывов кроме Sweet32.
- AES-128-GCM или AES-256-GCM для новых приложений. Blowfish для дешифровки устаревших BF-CBC данных и обучения.
Примеры использования
- bcrypt: Eksblowfish использует медленность Blowfish для хеширования паролей с настраиваемым фактором стоимости (4-31). Основа для понимания модели безопасности bcrypt
- Дешифровка архивов OpenVPN: BF-CBC трафик до 2017 года требует Blowfish для дешифровки и миграции на AES-256-GCM
- Встраиваемые системы с ограниченными ресурсами: небольшой footprint, 32-битная оптимизация, без AES-NI. Объём < 32 ГБ на ключ
- Образование по криптографии: структура π, Feistel, S-box и 30-летняя история атак для обучения компромиссам симметричного шифрования
Ссылки
Связанные инструменты
AES Шифрование/Дешифрование
Безопасное шифрование и дешифрование текста с использованием алгоритма AES
DES/3DES Шифрование/Дешифрование
Шифрование и дешифрование с использованием алгоритмов DES и 3DES с несколькими режимами и опциями заполнения
RSA Шифрование/Дешифрование
Использование асимметричного шифрования RSA для шифрования открытым ключом, дешифрования закрытым ключом, цифровой подписи и проверки