БЛЕЙК (хэш-функция)

Криптографическая хэш-функция
БЛЕЙК
Общий
ДизайнерыЖан-Филипп Омассон, Лука Хенцен, Вилли Мейер, Рафаэль К.-В. Фан
ПреемникиБЛЕЙК2
СертификацияФиналист SHA-3
Деталь
Размеры дайджеста224, 256, 384 или 512 бит
Структурастроительство Хайфа
Раунды14 или 16
Скорость8,4 cpb на ядре 2 для BLAKE-256; 7,8 cpb для BLAKE-512

BLAKE — это криптографическая хэш-функция , основанная на потоковом шифре ChaCha Дэниела Дж. Бернстайна , но перед каждым раундом ChaCha добавляется переставленная копия входного блока, XOR-связанная с константами раунда. Как и SHA-2 , существует два варианта, отличающихся размером слова . ChaCha работает с массивом слов 4×4. BLAKE многократно объединяет хэш-значение из 8 слов с 16 словами сообщения, усекая результат ChaCha для получения следующего хэш-значения. BLAKE-256 и BLAKE-224 используют 32-битные слова и создают размеры дайджеста 256 бит и 224 бит соответственно, в то время как BLAKE-512 и BLAKE-384 используют 64-битные слова и создают размеры дайджеста 512 бит и 384 бит соответственно.

Хэш-функция BLAKE2, основанная на BLAKE, была анонсирована в 2012 году. Хэш-функция BLAKE3, основанная на BLAKE2, была анонсирована в 2020 году.

История

BLAKE был представлен на конкурс хэш-функций NIST Жаном-Филиппом Омассоном, Лукой Хензеном, Вилли Майером и Рафаэлем К.-В. Фаном. В 2008 году было подано 51 заявление. BLAKE вышел в финальный тур, в котором участвовало пять кандидатов, но проиграл Keccak в 2012 году, который был выбран для алгоритма SHA-3 .

Алгоритм

Как и SHA-2 , BLAKE существует в двух вариантах: один, использующий 32-битные слова, используемые для вычисления хэшей длиной до 256 бит, и другой, использующий 64-битные слова, используемые для вычисления хэшей длиной до 512 бит. Основное преобразование блока объединяет 16 слов ввода с 16 рабочими переменными, но между блоками сохраняется только 8 слов (256 или 512 бит).

Он использует таблицу из 16 константных слов (старшие 512 или 1024 бита дробной части числа π ) и таблицу из 10 16-элементных перестановок:

σ[0] = 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15σ[1] = 14 10 4 8 9 15 13 6 1 12 0 2 11 7 5 3σ[2] = 11 8 12 0 5 2 15 13 10 14 3 6 7 1 9 4σ[3] = 7 9 3 1 13 12 11 14 2 6 5 10 4 0 15 8σ[4] = 9 0 5 7 2 4 10 15 14 1 11 12 6 8 3 13σ[5] = 2 12 6 10 0 11 8 3 4 13 7 5 15 14 1 9σ[6] = 12 5 1 15 14 13 4 10 0 7 6 3 9 2 8 11σ[7] = 13 11 7 14 12 1 3 9 5 0 15 4 8 6 2 10σ[8] = 6 15 14 9 11 3 0 8 12 2 13 7 1 4 10 5σ[9] = 10 2 8 4 7 6 1 5 15 11 9 14 3 12 13 0

Основная операция, эквивалентная четверти раунда ChaCha, работает на 4-словном столбце или диагонали a b c d, которая объединяется с 2 словами сообщения m[]и двумя постоянными словами n[]. Она выполняется 8 раз за полный раунд:

j ← σ[r%10][2×i] // Вычисления индексак ← σ[r%10][2×i+1]a ← a + b + (m[j] ⊕ n[k]) // Шаг 1 (с вводом)г ← (г ⊕ а) >>> 16c ← c + d // Шаг 2 (без ввода)б ← (б ⊕ с) >>> 12a ← a + b + (m[k] ⊕ n[j]) // Шаг 3 (с вводом)г ← (г ⊕ а) >>> 8c ← c + d // Шаг 4 (без ввода)б ← (б ⊕ с) >>> 7

В приведенном выше примере r— круглое число (0–13), которое iможет иметь значения от 0 до 7.

Отличия от функции четверти круга ChaCha следующие:

  • Добавлено дополнение к словам сообщения.
  • Направления вращения поменялись на противоположные.

«BLAKE повторно использует перестановку потокового шифра ChaCha с вращениями, выполняемыми в противоположных направлениях. Некоторые подозревают расширенную оптимизацию, но на самом деле это происходит из-за опечатки в исходных спецификациях BLAKE», — объясняет Жан-Филипп Омассон в своем «Криптословаре». [1]

64-битная версия (которой нет в ChaCha) идентична, но количество вращений составляет 32, 25, 16 и 11 соответственно, а количество раундов увеличено до 16.

Настройки

На протяжении всего конкурса хэш-функций NIST участникам разрешается «подстраивать» свои алгоритмы для решения обнаруженных проблем. Изменения, внесенные в BLAKE: количество раундов было увеличено с 10/14 до 14/16. Это сделано для того, чтобы быть более консервативным в плане безопасности, оставаясь при этом быстрым.

Примеры дайджестов

Значения хэш-функции пустой строки:

БЛЕЙК-224("") =7dc5313b1c04512a174bd6503b89607aecbee0903d40a8a569c94eedБЛЕЙК-256("") =716f6e863f744b9ac22c97ec7b76ea5f5908bc5b2f67c61510bfc4751384ea7aБЛЕЙК-384("") =c6cbd89c926ab525c242e6621f2f5fa73aa4afe3d9e24aed727faaadd6af38b620bdb623dd2b4788b1c8086984af8706БЛЕЙК-512("") =a8cfbbd73726062df0c6864dda65defe58ef0cc52a5625090fa17601e1eecd1b628e94f396ae402a00acc9eab77b4d4c2e852aaaa25a636d80af3fc7913ef5b8

Изменение одного бита приводит к изменению каждого бита на выходе с вероятностью 50%, демонстрируя лавинный эффект :

БЛЕЙК-512("Быстрая коричневая лиса перепрыгивает через ленивую собаку") =1f7e26f63b6ad25a0896fd978fd050a1766391d2fd0471a77afb975e5034b7ad2d9ccf8dfb47abbbe656e1b82fbc634ba42ce186e8dc5e1ce09a885d41f43451БЛЕЙК-512("Быстрая коричневая лиса перепрыгивает через ленивую до ф ") =a701c2a1f9baabd8b1db6b75aee096900276f0b86dc15d247ecc03937b370324a16a4ffc0c3a85cd63229cfa15c15f4ba6d46ae2e849ed6335e9ff43b764198a

(В этом примере 266 совпадающих битов из 512 составляют около 52% из-за случайного характера лавины.)

БЛЕЙК2

БЛЕЙК2
Общий
ДизайнерыЖан-Филипп Омассон, Сэмюэл Невес, Зооко Уилкокс-О'Херн , Кристиан Виннерлейн
Получено изБЛЕЙК
Деталь
Размеры дайджестадо 64 байт (BLAKE2b); до 32 байт (BLAKE2s); произвольный (BLAKE2X)
Раунды10 или 12
Скорость3,5 cpb на Core i5 (Ivy Bridge) для BLAKE2b [2]

BLAKE2 — это криптографическая хэш-функция на основе BLAKE, созданная Жаном-Филиппом Омассоном, Сэмюэлем Невесом, Зуко Уилкокс-О'Херном и Кристианом Виннерлейном. Целью разработки была замена широко используемых, но сломанных алгоритмов MD5 и SHA-1 в приложениях, требующих высокой производительности программного обеспечения. BLAKE2 был анонсирован 21 декабря 2012 года. [3] Референсная реализация доступна под лицензиями CC0 , OpenSSL и Apache License 2.0 . [4] [5]

BLAKE2b быстрее, чем MD5, SHA-1, SHA-2 и SHA-3, на 64-битных архитектурах x86-64 и ARM. [4] BLAKE2 обеспечивает лучшую безопасность, чем SHA-2, и аналогична SHA-3: иммунитет к расширению длины , недифференцируемость от случайного оракула и т. д. [6]

BLAKE2 удаляет добавление констант к словам сообщения из функции раунда BLAKE, изменяет две константы вращения, упрощает заполнение, добавляет блок параметров, который объединяется с помощью операции XOR с векторами инициализации, и сокращает количество раундов с 16 до 12 для BLAKE2b (преемник BLAKE-512) и с 14 до 10 для BLAKE2s (преемник BLAKE-256).

BLAKE2 поддерживает режимы keying, salting, personalization и hash tree и может выводить дайджесты от 1 до 64 байт для BLAKE2b или до 32 байт для BLAKE2s. Существуют также параллельные версии, разработанные для повышения производительности на многоядерных процессорах ; BLAKE2bp (4-way parallel) и BLAKE2sp (8-way parallel).

BLAKE2X — это семейство функций с расширяемым выходом (XOF). В то время как BLAKE2 ограничен 64-байтовыми дайджестами, BLAKE2X допускает дайджесты до 256 ГиБ. Сам по себе BLAKE2X не является экземпляром хэш-функции и должен быть основан на реальном экземпляре BLAKE2. Примером экземпляра BLAKE2X может быть BLAKE2Xb16MiB , который будет версией BLAKE2X на основе BLAKE2b, производящей дайджесты размером 16 777 216 байт (или ровно 16 МиБ , отсюда и название такого экземпляра). [7]

BLAKE2b и BLAKE2s указаны в RFC 7693. Дополнительные функции, использующие блок параметров (соль, персонализированные хэши, древовидное хэширование и т. д.), не указаны, и, следовательно, не поддерживается BLAKE2bp, BLAKE2sp или BLAKE2X. [8]

Вектор инициализации

BLAKE2b использует вектор инициализации, который совпадает с IV, используемым SHA-512. Эти значения прозрачно получены путем взятия первых 64 бит дробных частей положительных квадратных корней первых восьми простых чисел.

IV 0 = 0x6a09e667f3bcc908 // Дробь (sqrt (2))
IV 1 = 0xbb67ae8584caa73b // Дробь (sqrt (3))
IV 2 = 0x3c6ef372fe94f82b // Дробь (sqrt (5))
IV 3 = 0xa54ff53a5f1d36f1 // Дробь (sqrt (7))
IV 4 = 0x510e527fade682d1 // Дробь (sqrt (11))
IV 5 = 0x9b05688c2b3e6c1f // Дробь (sqrt (13))
IV 6 = 0x1f83d9abfb41bd6b // Дробь (sqrt (17))
IV 7 = 0x5be0cd19137e2179 // Дробь(sqrt(19))

Алгоритм BLAKE2b

Псевдокод для алгоритма BLAKE2b. Алгоритм BLAKE2b использует 8-байтовые (UInt64) слова и 128-байтовые фрагменты.

Алгоритм BLAKE2b  Вход: M  Сообщение для хеширования cbMessageLen: Число, (0..2 128 )  Длина сообщения в байтах Ключ  Необязательный ключ длиной 0..64 байта cbKeyLen: Число, (0..64)  Длина необязательного ключа в байтах cbHashLen: Число, (1..64)  Желаемая длина хэша в байтах  Выход: Хэш  Хэш cbHashLen байт Инициализируйте вектор состояния h с помощью IV h 0..7 ← IV 0..7 Смешайте размер ключа (cbKeyLen) и желаемую длину хеша (cbHashLen) в h 0 h 0 ← h 0 xor 0x0101kknn  , где kk — длина ключа (в байтах),  nn  — желаемая длина хеша (в байтах) Каждый раз при сжатии мы записываем, сколько байт было сжато. cBytesCompressed ← 0 cBytesRemaining ← cbMessageLen Если был указан ключ (т.е. cbKeyLen > 0)  , то дополните его конечными нулями, чтобы сделать его 128 байт (т.е. 16 слов),  и добавьте его в начало сообщения M  if (cbKeyLen > 0) then M ← Pad(Клавиша, 128) || M cBytesRemaining ← cBytesRemaining + 128 конец, если Сжать все 128-байтовые фрагменты сообщения, за исключением последнего фрагмента  while (cBytesRemaining > 128) do chunk ← получить следующие 128 байт сообщения M cBytesCompressed ← cBytesCompressed + 128  увеличить количество сжатых байтов cBytesRemaining ← cBytesRemaining - 128  уменьшить количество байтов в M, оставшихся для обработки h ← Compress(h, chunk, cBytesCompressed, false) false ⇒ это не последний кусок  end while Сжать последние байты из фрагмента M ← получить следующие 128 байт сообщения M  Мы получим cBytesRemaining байт (т. е. 0..128 байт) cBytesCompressed ← cBytesCompressed+cBytesRemaining  Фактическое количество байтов, оставшихся в фрагменте M ← Pad(chunk, 128)  Если M был пуст, то мы все равно сожмем последний фрагмент нулей h ← Compress(h, chunk, cBytesCompressed, true) true ⇒ это последний кусок Результат ← первые cbHashLen байты вектора состояния little endian h Конец алгоритма BLAKE2b

Компресс

Функция Compress берет полный 128-байтовый фрагмент входного сообщения и добавляет его в текущий массив состояний:

Функция Compress  Вход: h Фрагмент  вектора постоянного состояния Фрагмент сообщения размером 128 байт (16 двойных слов) для сжатия t: Число, 0..2 128  Количество байтов, переданных в сжатие IsLastBlock: Логическое значение  Указывает, является ли это последним раундом сжатия  Выход: h  Обновленный вектор постоянного состояния Настройка локального рабочего вектора V V 0..7 ← h 0..7  Первые восемь элементов копируются из постоянного вектора состояния h V 8..15 ← IV 0..7  Оставшиеся восемь элементов инициализируются из IV Смешиваем 128-битный счетчик t с V 12 :V 13 V 12 ← V 12  xor Lo(t)  Lo 64-бит UInt128 t V 13 ← V 13  xor Hi(t)  Hi 64-бит UInt128 t  Если это последний блок, то инвертируем все биты в V 14  , если IsLastBlock , то V 14 ← V 14  xor 0xFFFFFFFFFFFFFFFF  Обрабатывать каждый 128-байтовый фрагмент сообщения как шестнадцать 8-байтовых (64-битовых) слов m m 0..15 ← фрагмент Двенадцать раундов смешивания криптографических сообщений  для i от 0 до 11 do  Выберите график смешивания сообщений для этого раунда.  BLAKE2b использует 12 раундов, в то время как SIGMA имеет только 10 записей. S 0..15 ← SIGMA[i mod 10]  Раунды 10 и 11 используют SIGMA[0] и SIGMA[1] соответственно Mix(В 0 , В 4 , В 8 , В 12 , м[С0 ] , м[С1 ] ) Mix(В 1 , В 5 , В 9 , В 13 , м[С 2 ], м[С 3 ]) Mix(В 2 , В 6 , В 10 , В 14 , м[С 4 ], м[С 5 ]) Микс(В 3 , В 7 , В 11 , В 15 , м[С6 ] , м[С7 ] ) Mix(В 0 , В 5 , В 10 , В 15 , м[С 8 ], м[С 9 ]) Mix(В 1 , В 6 , В 11 , В 12 , м[С 10 ], м[С 11 ]) Mix(В 2 , В 7 , В 8 , В 13 , м[С 12 ], м[С 13 ]) Mix(V 3 , V 4 , V 9 , V 14 , m[S 14 ], m[S 15 ]) конец для Смешать верхнюю и нижнюю половины V в текущий вектор состояния h h 0..7 ← h 0..7  xor V 0..7 h 0..7 ← h 0..7  xor V 8..15 Результат ← h Конец функции Сжатие

Смешивание

Функция Mix вызывается функцией Compress и смешивает два 8-байтовых слова из сообщения в хэш-состояние. В большинстве реализаций эта функция будет записана в виде встроенной функции или в виде встроенной функции.

Функция Mix  Входы: V a , V b , V c , V d  четыре 8-байтовых записи слова из рабочего вектора V x, y  две 8-байтовых записи слова из дополненного сообщения m  Выход: V a , V b , V c , V d  модифицированные версии V a , V b , V c , V d V a ← V a + V b + x с входом V d ← (V d  xor V a ) rotateright 32 V c ← V c + V d  нет входа V b ← (V b  xor V c ) повернуть вправо 24 V a ← V a + V b + y с входом V d ← (V d  xor V a ) повернуть вправо 16 V c ← V c + V d  нет входа V b ← (V b  xor V c ) повернуть вправо 63 Результат ← V a , V b , V c , V d Конечная функция Mix

Примеры дайджестов

Значения хэш-функции пустой строки:

BLAKE2s-224("") =1fa1291e65248b37b3433475b2a0dd63d54a11ecc4e3e034e7bc1ef4BLAKE2s-256("") =69217a3079908094e11121d042354a7c1f55b6482ca1a51e1b250dfd1ed0eef9BLAKE2b-384("") =b32811423377f52d7862286ee1a72ee540524380fda1724a6f25d7978c6fd3244a6caf0498812673c5e05ef583825100BLAKE2b-512("") =786a02f742015903c6c6fd852552d272912f4740e15847618a86e217f71f5419d25e1031afee585313896444934eb04b903a685b1448b755d56f701afe9be2ce

Изменение одного бита приводит к изменению каждого бита на выходе с вероятностью 50%, демонстрируя лавинный эффект :

BLAKE2b-512("Быстрая коричневая лиса перепрыгивает через ленивую собаку") =a8add4bdddfd93e4877d2746e62817b116364a1fa7bc148d95090bc7333b3673f82401cf7aa2e4cb1ecd90296e3f14cb5413f8ed77be73045b13914cdcd6a918BLAKE2b-512("Быстрая коричневая лиса перепрыгивает через ленивую до ф ") =ab6b007747d8068c02e25a6008db8a77c218d94f3b40d2291a7dc8a62090a744 c082ea27af01521a102e42f480a31e9844053f456b4b41e8aa78bbe5c12957bb

Пользователи BLAKE2

  • Argon2 , победитель конкурса по хешированию паролей , использует BLAKE2b
  • Система развертывания Chef 's Habitat использует BLAKE2b для подписи пакетов [9]
  • Инструмент управления пакетами FreeBSD Ports использует BLAKE2b
  • GNU Core Utilities реализует BLAKE2b в своей команде b2sum [10]
  • IPFS позволяет использовать BLAKE2b для хеширования деревьев
  • librsync использует BLAKE2b [11]
  • Noise (криптографический протокол), который используется в WhatsApp, включает BLAKE2 в качестве опции. [12] [ необходима цитата ]
  • Формат архива RAR версии 5 поддерживает дополнительную 256-битную контрольную сумму файла BLAKE2sp вместо стандартной 32-битной CRC32 ; она была реализована в WinRAR v5+ [13]
  • 7-Zip (для поддержки формата архива RAR версии 5 [14] ) может генерировать подпись BLAKE2sp для каждого файла в оболочке проводника с помощью контекстного меню «CRC SHA» и выбора «*»
  • rmlint использует BLAKE2b для обнаружения дубликатов файлов [15]
  • WireGuard использует BLAKE2s для хеширования [16]
  • Zcash , криптовалюта, использует BLAKE2b в доказательстве работы Equihash , а также в качестве функции вывода ключа
  • NANO , криптовалюта, использует BLAKE2b в доказательстве работы, для хеширования цифровых подписей и в качестве функции выведения ключей [17] [18] [19]
  • Polkadot , многоцепочечный блокчейн, использует BLAKE2b в качестве алгоритма хеширования.
  • Kadena (криптовалюта), масштабируемый блокчейн с доказательством работы, использующий Blake2s_256 в качестве алгоритма хеширования.
  • PCI Vault использует BLAKE2b в качестве алгоритма хеширования для целей токенизации PCD, совместимой с PCI.
  • Криптовалюта Ergo использует BLAKE2b256 в качестве подпрограммы своего алгоритма хеширования, называемого Autolykos. [20]
  • В ядре Linux версии 5.17 SHA-1 был заменен на BLAKE2s для хеширования пула энтропии в генераторе случайных чисел . [21]
  • Открытая сеть для цифровой коммерции , инициатива правительства Индии, использует BLAKE-512 для подписи запросов API. [22]
  • контрольная сумма , программа хеширования файлов Windows, использует Blake2s в качестве одного из своих алгоритмов [23]

Реализации

В дополнение к эталонной реализации [5] следующие криптографические библиотеки предоставляют реализации BLAKE2:

БЛЕЙК3

БЛЕЙК3
Общий
ДизайнерыДжек О'Коннор, Сэмюэл Невес, Жан-Филипп Омассон, Зуко Уилкокс-О'Хирн
Впервые опубликовано9 января 2020 г. ; 4 года назад ( 2020-01-09 )
Получено изБао, БЛЕЙК2
Деталь
Размеры дайджеста256 бит, произвольно расширяемый
Структурадерево Меркла
Раунды7
Скорость0,49 cpb на Cascade Lake-SP с AVX-512 [24]

BLAKE3 — это криптографическая хеш-функция, основанная на Bao и BLAKE2, созданная Джеком О'Коннором, Жаном-Филиппом Аумассоном, Сэмюэлем Невесом и Зуко Уилкокс-О'Хирном . [25] Она была анонсирована 9 января 2020 года на Real World Crypto . [26]

BLAKE3 — это единый алгоритм со множеством желаемых функций (параллелизм, XOF , KDF , PRF и MAC ), в отличие от BLAKE и BLAKE2, которые являются семействами алгоритмов с несколькими вариантами. BLAKE3 имеет структуру двоичного дерева , поэтому он поддерживает практически неограниченную степень параллелизма (как SIMD, так и многопоточность) при достаточно длинных входных данных. Официальные реализации Rust и C [27] имеют двойную лицензию : как общественное достояние ( CC0 ) и Apache License . [28]

BLAKE3 разработан так, чтобы быть максимально быстрым. Он постоянно в несколько раз быстрее, чем BLAKE2. Функция сжатия BLAKE3 тесно связана с функцией BLAKE2s, с самым большим отличием в том, что количество раундов сокращено с 10 до 7, изменение основано на предположении, что текущая криптография слишком консервативна. [29] В дополнение к обеспечению параллелизма, формат дерева Меркла также позволяет осуществлять проверенную потоковую передачу (проверку на лету) и инкрементные обновления. [27]

Ссылки

  1. ^ Омассон, Жан-Филипп (2021). Crypto Dictionary: 500 вкусных мелочей для любознательного криптографа . No Starch Press. ISBN 9781718501409.
  2. ^ «BLAKE2 – альтернатива MD5/SHA-1».
  3. ^ O'Whielacronx, Zooko (21 декабря 2012 г.). "introducing BLAKE2 – an alternative to SHA-3, SHA-2 and MD5". Архивировано из оригинала 5 октября 2016 г. Получено 27 января 2016 г.
  4. ^ ab "BLAKE2". blake2.net .
  5. ^ ab "BLAKE2 official implementations". GitHub . Получено 7 июля 2019 .
  6. ^ Омассон, Жан-Филипп; Невес, Самуэль; Уилкокс-О'Херн, Зуко; Виннерлейн, Кристиан (2013). «BLAKE2: проще, меньше, быстрее, чем MD5» (PDF) . Архив Cryptology ePrint . IACR.
  7. ^ "BLAKE2X" (PDF) .
  8. ^ Saarinen, MJ; Aumasson, JP (ноябрь 2015 г.). Криптографический хэш и код аутентификации сообщений (MAC) BLAKE2. IETF . doi : 10.17487/RFC7693 . RFC 7693. Получено 4 декабря 2015 г.
  9. ^ "О Chef Habitat". docs.chef.io .
  10. ^ "coreutils/src/blake2/". github.com .
  11. ^ "librsync/src/blake2/". github.com .
  12. ^ «Белая книга по безопасности WhatsApp» (PDF) .
  13. ^ "Архиватор WinRAR, мощный инструмент для обработки файлов RAR и ZIP". rarsoft.com .
  14. ^ "Ответ Игоря Павлова на запрос пользователя о поддержке BLAKE3 в 7-Zip". sourceforge.net .
  15. ^ "rmlint — документация rmlint (2.8.0 Maidenly Moose)". rmlint.readthedocs.io .
  16. ^ «WireGuard: туннель ядра сети следующего поколения» (PDF) .
  17. ^ "работа". docs.nano.org .
  18. ^ "подписи". docs.nano.org .
  19. ^ "вывод ключа". docs.nano.org .
  20. ^ "Autolykos: головоломка PoW платформы Ergo" (PDF) . ergoplatform.org .
  21. ^ "Генератор случайных чисел Linux 5.17 ускоряется, переходя с SHA1 на BLAKE2s". www.phoronix.com .
  22. ^ «Подписка подписчика — Beckn».
  23. ^ "контрольная сумма для Windows". corz.org .
  24. ^ "BLAKE3 – одна функция, быстрая везде" (PDF) . GitHub .
  25. ^ "Более ранняя версия Bao имела собственный режим дерева, который в конечном итоге перерос в BLAKE3". GitHub .
  26. ^ «JPA и я анонсировали BLAKE3 на световых переговорах RWC...» Hacker News .
  27. ^ ab "BLAKE3 official implementations". GitHub . Получено 12 января 2020 .
  28. ^ "Эта работа передается в общественное достояние с лицензией CC0 1.0. В качестве альтернативы она лицензируется по лицензии Apache License 2.0". GitHub .
  29. ^ Омассон, Жан-Филипп (2020). Слишком много криптографии (PDF) . Симпозиум Real World Crypto.
  • Веб-сайт BLAKE
  • Веб-сайт BLAKE2
  • Веб-сайт BLAKE3
Взято с "https://en.wikipedia.org/w/index.php?title=BLAKE_(hash_function)&oldid=1240911780#BLAKE3"