Lanzamento da implementación de referencia da función hash criptográfica BLAKE3 1.0

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.

Lanzamento da implementación de referencia da función hash criptográfica BLAKE3 1.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

Engadir un comentario