Lanzouse unha implementación de referencia da función hash criptográfica BLAKE3 1.0, destacando polo seu alto rendemento de cálculo de hash ao tempo que garante a fiabilidade a nivel SHA-3. Na proba de xeración de hash para un ficheiro de 16 KB, BLAKE3 cunha clave de 256 bits supera a SHA3-256 en 17 veces, SHA-256 en 14 veces, SHA-512 en 9 veces, SHA-1 en 6 veces e BLAKE2b - 5 veces. Queda unha brecha significativa cando se procesan cantidades moi grandes de datos, por exemplo, BLAKE3 resultou ser 256 veces máis rápido que SHA-8 ao calcular un hash para 1 GB de datos aleatorios. O código de implementación de referencia BLAKE3 está dispoñible nas versións C e Rust baixo unha licenza de dominio público dual (CC0) e Apache 2.0.
A función hash está deseñada para aplicacións como a comprobación da integridade do ficheiro, a autenticación de mensaxes e a xeración de datos para sinaturas dixitais criptográficas. BLAKE3 non está pensado para hash contrasinais, xa que pretende calcular hash o máis rápido posible (para contrasinais, recoméndase utilizar as funcións hash lentos yescrypt, bcrypt, scrypt ou Argon2). A función hash en consideración é insensible ao tamaño dos datos hash e está protexida de ataques á selección de colisións e á busca de preimaxes.
O algoritmo foi desenvolvido por coñecidos expertos en criptografía (Jack O'Connor, Jean-Philippe Aumasson, Samuel Neves, Zooko Wilcox-O'Hearn) e continúa co desenvolvemento do algoritmo BLAKE2 e utiliza o mecanismo Bao para codificar a árbore da cadea de bloques. . A diferenza de BLAKE2 (BLAKE2b, BLAKE2s), BLAKE3 ofrece un único algoritmo para todas as plataformas, non ligado á profundidade de bits e ao tamaño hash.
Conseguiuse un maior rendemento reducindo o número de roldas de 10 a 7 e dividindo os bloques por separado en pezas de 1 KB. Segundo os creadores, atoparon probas matemáticas convincentes de que é posible superar con 7 roldas en lugar de 10 mantendo o mesmo nivel de fiabilidade (para obter claridade, podemos poñer un exemplo de mestura de froitas nunha batidora, despois de 7 segundos). a froita xa está completamente mesturada e 3 segundos adicionais non afectarán a consistencia da mestura). Non obstante, algúns investigadores expresan dúbidas, crendo que aínda que actualmente 7 roldas sexan suficientes para contrarrestar todos os ataques coñecidos contra hash, entón 3 roldas adicionais poden ser útiles se se identifican novos ataques no futuro.
En canto á división en bloques, en BLAKE3 o fluxo divídese en pezas de 1 KB e cada peza ten un hash independente. En función dos hash das pezas, fórmase un gran hash baseado na árbore de Merkle binaria. Esta división permítenos resolver o problema de paralelizar o procesamento de datos ao calcular hash; por exemplo, pode usar instrucións SIMD de 4 fíos para calcular simultáneamente hash de 4 bloques. As funcións hash tradicionais SHA-* procesan datos secuencialmente.
Características de BLAKE3:
- De alto rendemento, BLAKE3 é significativamente máis rápido que MD5, SHA-1, SHA-2, SHA-3 e BLAKE2.
- Seguridade, incluída a resistencia aos ataques de elongación da mensaxe aos que SHA-2 é susceptible;
- Dispoñible en Rust, optimizado para instrucións SSE2, SSE4.1, AVX2, AVX-512 e NEON.
- Garantir a paralelización dos cálculos en calquera número de fíos e canles SIMD.
- Posibilidade de actualización incremental e procesamento verificado de fluxos;
- Úsase nos modos PRF, MAC, KDF, XOF e como hash normal;
- Un único algoritmo para todas as arquitecturas, rápido tanto en sistemas x86-64 como en procesadores ARM de 32 bits.
As principais diferenzas entre BLAKE3 e BLAKE2:
- Uso dunha estrutura de árbore binaria que permite un paralelismo ilimitado nos cálculos de hash.
- Reducir o número de roldas de 10 a 7.
- Tres modos de operación: hash, hashing cunha clave (HMAC) e xeración de claves (KDF).
- Sen sobrecarga adicional ao hash cunha chave debido ao uso da área que anteriormente ocupaba o bloque de parámetros clave.
- Mecanismo de operación incorporado en forma de función cun resultado estendido (XOF, Extendable Output Function), que permite a paralelización e o posicionamento (busca).
Fonte: opennet.ru