Выпуск эталонной Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ криптографичСской Ρ…Π΅Ρˆ-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ BLAKE3 1.0

Бостоялся Ρ€Π΅Π»ΠΈΠ· эталонной Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ криптографичСской Ρ…Π΅Ρˆ-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ BLAKE3 1.0, ΠΏΡ€ΠΈΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΎΡ‡Π΅Π½ΡŒ высокой ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ вычислСния Ρ…Π΅ΡˆΠ° ΠΏΡ€ΠΈ обСспСчСнии надёТности Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ SHA-3. Π’ тСстС Π½Π° Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΡŽ Ρ…Π΅ΡˆΠ° для Ρ„Π°ΠΉΠ»Π°, Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 16 ΠšΠ‘, BLAKE3 с 256-Π±ΠΈΡ‚Π½Ρ‹ΠΌ ΠΊΠ»ΡŽΡ‡ΠΎΠΌ ΠΎΠΏΠ΅Ρ€Π΅ΠΆΠ°Π΅Ρ‚ SHA3-256 Π² 17 Ρ€Π°Π·, SHA-256 — Π² 14 Ρ€Π°Π·, SHA-512 — Π² 9 Ρ€Π°Π·, SHA-1 — Π² 6 Ρ€Π°Π·, Π° BLAKE2b — Π² 5 Ρ€Π°Π·. Π—Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΡ‚Ρ€Ρ‹Π² сохраняСтся ΠΈ ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΎΡ‡Π΅Π½ΡŒ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΎΠ±ΡŠΡ‘ΠΌΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, BLAKE3 оказался быстрСС SHA-256 Π² 8 Ρ€Π°Π· ΠΏΡ€ΠΈ вычислСнии Ρ…Π΅ΡˆΠ° для 1Π“Π‘ случайных Π΄Π°Π½Π½Ρ‹Ρ…. Код эталонной рСализация BLAKE3 поставляСтся Π² Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°Ρ… Π½Π° языках Π‘ΠΈ ΠΈ Rust ΠΏΠΎΠ΄ Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ — общСствСнноС достояниС (CC0) ΠΈ Apache 2.0.

Выпуск эталонной Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ криптографичСской Ρ…Π΅Ρˆ-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ BLAKE3 1.0

Π₯эш-функция рассчитана Π½Π° Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅, ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° цСлостности Ρ„Π°ΠΉΠ»ΠΎΠ², аутСнтификация сообщСний ΠΈ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… для криптографичСских Ρ†ΠΈΡ„Ρ€ΠΎΠ²Ρ‹Ρ… подписСй. BLAKE3 Π½Π΅ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° для Ρ…Π΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΉ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π½Π°Ρ†Π΅Π»Π΅Π½Π° Π½Π° максимально быстроС вычислСниС Ρ…Π΅ΡˆΠ΅ΠΉ (для ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΉ рСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹Π΅ Ρ…Π΅Ρˆ-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ yescrypt, bcrypt, scrypt ΠΈΠ»ΠΈ Argon2). РассматриваСмая Ρ…Π΅Ρˆ-функция Π½Π΅Ρ‡ΡƒΠ²ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Π° ΠΊ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ Ρ…Π΅ΡˆΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π° ΠΎΡ‚ Π°Ρ‚Π°ΠΊ ΠΏΠΎ ΠΏΠΎΠ΄Π±ΠΎΡ€Ρƒ ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΉ ΠΈ Π½Π°Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΡŽ ΠΏΡ€ΠΎΠΎΠ±Ρ€Π°Π·Π°.

Алгоритм Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ извСстными спСциалистами ΠΏΠΎ ΠΊΡ€ΠΈΠΏΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΈ (Jack O’Connor, Jean-Philippe Aumasson, Samuel Neves, Zooko Wilcox-O’Hearn) ΠΈ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ‚ Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° BLAKE2 ΠΈ примСняСт для кодирования Π΄Π΅Ρ€Π΅Π²Π° Ρ†Π΅ΠΏΠΎΡ‡Π΅ΠΊ Π±Π»ΠΎΠΊΠΎΠ² ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Bao. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ BLAKE2 (BLAKE2b, BLAKE2s), Π² BLAKE3 для всСх ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ Π΅Π΄ΠΈΠ½Ρ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ, Π½Π΅ привязанный ΠΊ разрядности ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ Ρ…Π΅ΡˆΠ°.

ΠŸΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΡƒΠ΄Π°Π»ΠΎΡΡŒ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ благодаря ΡΠΎΠΊΡ€Π°Ρ‰Π΅Π½ΠΈΡŽ числа Ρ€Π°ΡƒΠ½Π΄ΠΎΠ² с 10 Π΄ΠΎ 7 ΠΈ Ρ€Π°Π·Π΄Π΅Π»ΡŒΠ½ΠΎΠΌΡƒ Ρ…Π΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ Π±Π»ΠΎΠΊΠΎΠ² кусочками ΠΏΠΎ 1 Кб. По заявлСнию создатСлСй, ΠΎΠ½ΠΈ нашли ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ матСматичСскоС Π΄ΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ 7 Ρ€Π°ΡƒΠ½Π΄Π°ΠΌΠΈ вмСсто 10 ΠΏΡ€ΠΈ сохранСнии Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ уровня надёТности (для наглядности ΠΌΠΎΠΆΠ½ΠΎ привСсти ΠΏΡ€ΠΈΠΌΠ΅Ρ€ с ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡˆΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ Ρ„Ρ€ΡƒΠΊΡ‚ΠΎΠ² Π² миксСрС — Ρ‡Π΅Ρ€Π΅Π· 7 сСкунд Ρ„Ρ€ΡƒΠΊΡ‚Ρ‹ ΡƒΠΆΠ΅ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡˆΠ°Π½Ρ‹, ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ 3 сСкунды Π½Π΅ скаТутся Π½Π° консистСнции смСси). ΠŸΡ€ΠΈ этом Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ исслСдоватСли Π²Ρ‹Ρ€Π°ΠΆΠ°ΡŽΡ‚ сомнСниС, полагая, Ρ‡Ρ‚ΠΎ Π΄Π°ΠΆΠ΅ Ссли Π² настоящСС врСмя 7 Ρ€Π°ΡƒΠ½Π΄ΠΎΠ² достаточно для противостояния всСм извСстным Π°Ρ‚Π°ΠΊΠ°ΠΌ Π½Π° Ρ…Π΅ΡˆΠΈ, Ρ‚ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ 3 Ρ€Π°ΡƒΠ½Π΄Π° ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ Π² случаС выявлСния Π½ΠΎΠ²Ρ‹Ρ… Π°Ρ‚Π°ΠΊ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ.

Π§Ρ‚ΠΎ касаСтся раздСлСния Π½Π° Π±Π»ΠΎΠΊΠΈ, Ρ‚ΠΎ Π² BLAKE3 ΠΏΠΎΡ‚ΠΎΠΊ разбиваСтся Π½Π° кусочки ΠΏΠΎ 1 Кб ΠΈ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ кусочСк Ρ…Π΅ΡˆΠΈΡ€ΡƒΠ΅Ρ‚ΡΡ нСзависимо. На основС Ρ…Π΅ΡˆΠ΅ΠΉ кусочков Π½Π° Π±Π°Π·Π΅ Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠ³ΠΎ Π΄Π΅Ρ€Π΅Π²Π° ΠœΠ΅Ρ€ΠΊΠ»Π° формируСтся ΠΎΠ΄ΠΈΠ½ большой Ρ…Π΅Ρˆ. Π£ΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ позволяСт Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ с распараллСливаниСм ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈ вычислСнии Ρ…Π΅ΡˆΠ° — Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ 4-ΠΏΠΎΡ‚ΠΎΡ‡Π½Ρ‹Π΅ SIMD-инструкции для ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ вычислСния Ρ…Π΅ΡˆΠ΅ΠΉ 4 Π±Π»ΠΎΠΊΠΎΠ². Π’Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Π΅ Ρ…Π΅Ρˆ-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ SHA-* ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ.

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ BLAKE3:

  • Высокая ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, BLAKE3 Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ быстрСС MD5, SHA-1, SHA-2, SHA-3 ΠΈ BLAKE2.
  • Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ, Π² Ρ‚ΠΎΠΌ числС ΡΡ‚ΠΎΠΉΠΊΠΎΡΡ‚ΡŒ ΠΊ Π°Ρ‚Π°ΠΊΠ΅ ΡƒΠ΄Π»ΠΈΠ½Π΅Π½ΠΈΠ΅ΠΌ сообщСния, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΠΎΠ΄Π²Π΅Ρ€ΠΆΠ΅Π½ SHA-2;
  • Доступны Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ Π½Π° языкС Rust, ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ для использования инструкций SSE2, SSE4.1, AVX2, AVX-512 ΠΈ NEON.
  • ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½ΠΈΠ΅ распараллСливания вычислСний Π½Π° любоС число ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² ΠΈ SIMD-ΠΊΠ°Π½Π°Π»ΠΎΠ².
  • Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ обновлСния ΠΈ Π²Π΅Ρ€ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²;
  • ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² Ρ€Π΅ΠΆΠΈΠΌΠ°Ρ… PRF, MAC, KDF, XOF ΠΈ ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ Ρ…Π΅Ρˆ;
  • Π•Π΄ΠΈΠ½Ρ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ для всСх Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€, быстрый ΠΊΠ°ΠΊ Π½Π° систСмах x86-64, Ρ‚Π°ΠΊ ΠΈ Π½Π° 32-разрядных процСссорах ARM.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ отличия BLAKE3 ΠΎΡ‚ BLAKE2:

  • ИспользованиС Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠΉ Π΄Ρ€Π΅Π²ΠΎΠ²ΠΈΠ΄Π½ΠΎΠΉ структуры, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅ΠΉ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ Π½Π΅ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ° ΠΏΡ€ΠΈ вычислСнии Ρ…Π΅ΡˆΠ°.
  • Π‘ΠΎΠΊΡ€Π°Ρ‰Π΅Π½ΠΈΠ΅ числа Ρ€Π°ΡƒΠ½Π΄ΠΎΠ² с 10 Π΄ΠΎ 7.
  • Π’Ρ€ΠΈ Ρ€Π΅ΠΆΠΈΠΌΠ° Ρ€Π°Π±ΠΎΡ‚Ρ‹: Ρ…Π΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, Ρ…Π΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ с ΠΊΠ»ΡŽΡ‡ΠΎΠΌ (HMAC) ΠΈ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠ»ΡŽΡ‡Π° (KDF).
  • ΠžΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΠΈΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Ρ… расходов ΠΏΡ€ΠΈ Ρ…Π΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ с ΠΊΠ»ΡŽΡ‡ΠΎΠΌ Π·Π° счёт использования области, Ρ€Π°Π½Π΅Π΅ Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌΠΎΠΉ Π±Π»ΠΎΠΊΠΎΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΊΠ»ΡŽΡ‡Π°.
  • ВстроСнный ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² Ρ„ΠΎΡ€ΠΌΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ с удлиняСмым Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ (XOF, Extendable Output Function), Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‰Π΅ΠΉ распараллСливаниС ΠΈ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ (seek).

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru