CoderTools

Инструмент шифрования/дешифрования Blowfish

Быстрый симметричный блочный шифр, разработанный Брюсом Шнайером

⚠️ Предупреждение о безопасности

64-битный размер блока Blowfish может быть уязвим для атак дня рождения при больших объёмах данных. Для максимальной безопасности рассмотрите использование AES-256 для новых проектов.

Длина ключа Blowfish: 4-56 байт (32-448 бит). Рекомендуется: 16 байт (128 бит) или более
Параметры формата

О шифровании 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-летняя история атак для обучения компромиссам симметричного шифрования

Ссылки

Быстрое меню

Нет недавних инструментов