Начиная с релиза FreeBSD pkg 2.8.0, SHA-256 постепенно выводится из эксплуатации, а Blake2b будет использоваться для контрольных сумм (защита от квантовых компьютеров?)

9 min

language: ja bn en es hi pt ru zh-cn zh-tw

Привет, я некомпетентен.
Когда в ленте GitHub появился релиз freebsd/pkg, мне на глаза случайно попалось слово Blake2b.

https://github.com/freebsd/pkg/releases#release-2.8.0

  • Blake2b используется везде, где это возможно, для контрольных сумм; репозитории используют blake2 вместо sha256

Сам по себе Blake2b, по-видимому, был включен в GNU coreutils и выпущен еще в 2016 году.

Что вообще такое Blake2b?

Я лишь мельком изучал это раньше и знал только то, что это один из алгоритмов хеширования, поэтому решил немного уточнить.

Реализация Blake2 (Blake2b) на Rust #Security - Qiita

Существует два типа Blake2: обычная версия Blake2b и уменьшенная версия Blake2s. Blake2b предназначен для 64-битных систем, а Blake2s — для 8–32-битных.

Понятно.

RFC:
RFC 7693 - Криптографическая хеш-функция BLAKE2 и код аутентификации сообщений (MAC)

Это также используется для хеширования паролей в Argon2. Станет ли современным стандартом проектирования замена текущих реализаций на bcrypt на Argon2 для хеширования паролей, а текущих реализаций на SHA-256 на Blake2 для криптографических хешей? Поскольку я уже вижу немало реализаций, использующих Argon2, я думаю, что это вполне возможно. С другой стороны, md5sum до сих пор используется как легкий и быстрый хеш, и он удобен для простой проверки целостности. Более того, даже в WebSocket в рукопожатии (Handshake) предполагается использование SHA-1, как указано в RFC, но в реализации для WS в этом нет особого смысла, поэтому это также задокументировано.

Рукопожатие WebSocket, описанное в этом документе, не зависит от свойств безопасности SHA-1 (таких как устойчивость к коллизиям или устойчивость к атакам на второй прообраз) (описано в [RFC4270]).

RFC 6455 - Протокол WebSocket

Я решил обсудить этот вопрос с ChatGPT (GPT 5.6).
Вывод заключается в том, что переход на Argon2 является правильным шагом для модернизации, но в качестве криптографического хеша это просто еще один инструмент в арсенале.
Однако тот факт, что FreeBSD переключила использование checksum в pkg, довольно удивителен, так что, возможно, в недалеком будущем это станет стандартом?

Ниже приведен вопрос к GPT 5.6.


В. Станет ли современным стандартом проектирования замена текущих реализаций на bcrypt на Argon2 для хеширования паролей, а текущих реализаций на SHA-256 на Blake2 для криптографических хешей?

О. Да, переход с bcrypt на Argon2id для хранения паролей можно смело назвать «модернизацией». С другой стороны, переход с SHA-256 на BLAKE2 для универсальных криптографических хешей не обязательно является простой сменой поколений.

Для паролей в настоящее время действуют следующие приоритеты:

НазначениеРанееТекущая рекомендация
Хранение паролейbcryptArgon2id
Альтернатива хранению паролейPBKDF2 / scryptArgon2id / scrypt
Общие хешиSHA-256SHA-256 / SHA-3 / BLAKE2 / BLAKE3
MACHMAC-SHA256HMAC-SHA256 / keyed BLAKE2
Быстрая проверка целостностиSHA-256BLAKE2 / BLAKE3

OWASP также делает Argon2id первым выбором для новых систем, а bcrypt позиционирует в основном для существующих систем. Argon2id — это memory-hard KDF (функция формирования ключа, требовательная к памяти), которая включает объем используемой памяти в стоимость атаки, поэтому она конструктивно выгоднее bcrypt против атак перебором паролей с использованием GPU/ASIC. (OWASP Cheat Sheet Series)

Например, для новой реализации естественной является такая конфигурация:

пароль
   ↓
Argon2id(
    salt = случайные 128 бит,
    memory = 64 МБ,
    iterations = 3,
    parallelism = по необходимости
)
   ↓
$argon2id$v=19$m=65536,t=3,p=...

RFC 9106 также рекомендует Argon2id. (RFC Editor)

С другой стороны,

SHA-256 → BLAKE2

это немного другое.

SHA-256 не устарел и не стал опасным.

Для SHA-256 в настоящее время не известны практические атаки на коллизии или атаки на прообраз, и он остается достаточно мощным для обычных криптографических целей.

Преимущества BLAKE2 в основном заключаются в следующем:

высокая скорость
+
высокая безопасность
+
стандартная поддержка keyed hashing
+
легкость реализации

Поэтому,

старое                  современное
bcrypt      ───────→ Argon2id
                 ↑
Довольно четко SHA-256 ───────→ BLAKE2 ↑ Не обязательно замена

— это понимание ближе к истине.

Скорее, в современной архитектуре

Password
 └─ Argon2id
Cryptographic digest
 ├─ SHA-256
 ├─ SHA-3
 ├─ BLAKE2
 └─ BLAKE3
Message authentication
 ├─ HMAC-SHA256
 └─ keyed BLAKE2

современным подходом является выбор алгоритма под конкретную задачу, как показано выше.

В частности, если вы проектируете новое программное обеспечение с нуля и не ограничены требованиями совместимости протоколов, я считаю, что лучше всего придерживаться следующей логики:

Password hashing
→ Argon2id
Общее быстрое хеширование
→ BLAKE2b / BLAKE3
Совместимость с внешними стандартами/протоколами
→ SHA-256
MAC
→ HMAC-SHA256
  или keyed BLAKE2

И здесь важны BLAKE2 и BLAKE3. Если ваша цель при новом проектировании — «использовать более быстрый хеш, чем SHA-256», то по состоянию на 2026 год следует рассматривать не только BLAKE2, но и BLAKE3. BLAKE3 чрезвычайно быстр благодаря распараллеливанию, SIMD и эффективности при работе с большими объемами данных.

Однако,

SHA-256 → BLAKE3

— это не столько «отказ от SHA-256 по соображениям безопасности», сколько

выбор в пользу преимуществ производительности и дизайна API.

Другими словами, эти два вопроса не равнозначны:

bcrypt → Argon2id

Направление явной модернизации архитектуры безопасности.

SHA-256 → BLAKE2/BLAKE3

Это не обязательный переход по соображениям безопасности, а выбор, основанный на производительности и удобстве использования при новом проектировании.

В этом заключается разница.

Если расширить вопрос до «что выбрать, если проектировать API с нуля в 2026 году, включая аутентификацию, подписи, шифрование и хеширование файлов», то использование Argon2id / BLAKE3 / XChaCha20-Poly1305 / Ed25519 / X25519 в качестве основы обеспечит весьма современную конфигурацию.

Related Posts