A implementação final do algoritmo foi publicada. , que oferece uma função de hash criptográfica projetada para aplicações como verificação de integridade de arquivos, autenticação de mensagens e geração de dados para assinaturas digitais. O BLAKE3 não foi projetado para hash de senhas (para senhas, use yescrypt, bcrypt, scrypt ou Argon2), pois seu objetivo é calcular hashes o mais rápido possível, garantindo a ausência de colisões e proteção contra ataques. e insensibilidade ao tamanho dos dados que estão sendo processados. A implementação de referência é o BLAKE3. Licença dupla - domínio público (CC0) e Apache 2.0.
A principal característica da nova função hash é seu altíssimo desempenho no cálculo do hash, mantendo a confiabilidade do nível SHA-3. Por padrão, o tamanho do hash resultante no BLAKE3 é de 32 bytes (256 bits), mas pode ser expandido para valores arbitrários. Em um teste de geração de hash para um arquivo de 16 KB, o BLAKE3 superou o SHA3-256 em 15 vezes, o SHA-256 em 12 vezes, o SHA-512 em 8 vezes, o SHA-1 em 6 vezes e o BLAKE2b em 4 vezes. Essa vantagem significativa se mantém mesmo ao processar grandes quantidades de dados; por exemplo, o BLAKE3 apresentou um desempenho muito superior ao SHA-256 em 1000 bytes. O SHA-256 é 8 vezes mais rápido no cálculo do hash de 1 GB de dados aleatórios.
O algoritmo foi desenvolvido por renomados especialistas em criptografia (, , , ) e continua a desenvolver o algoritmo e utiliza um mecanismo para codificar a árvore de cadeias de blocos. Diferentemente do BLAKE2 (BLAKE2b, BLAKE2s), o BLAKE3 oferece um único algoritmo para todas as plataformas, independente da profundidade de bits e do tamanho do hash.
As melhorias de desempenho foram alcançadas reduzindo o número de rodadas de 10 para 7 e realizando o hash dos blocos separadamente em partes de 1 KB. De acordo com os criadores, eles encontraram uma solução convincente. que 7 rodadas poderiam ser usadas em vez de 10, mantendo o mesmo nível de confiabilidade (para maior clareza, considere o exemplo de misturar frutas em um liquidificador: após 7 segundos, as frutas já estão completamente misturadas e mais 3 segundos não afetarão a consistência da mistura). No entanto, alguns pesquisadores expressam dúvidas, acreditando que, mesmo que 7 rodadas sejam atualmente suficientes para resistir a todos os ataques de hash conhecidos, 3 rodadas adicionais poderiam ser úteis caso novos ataques sejam descobertos no futuro.
Em relação à divisão em blocos, no BLAKE3 o fluxo é dividido em partes de 1 KB, e cada parte é submetida a um hash independente. Com base nos hashes das partes, Um único hash grande é formado. Essa divisão nos permite resolver o problema de paralelização do processamento de dados ao calcular o hash — por exemplo, podemos usar instruções SIMD de 4 threads para calcular simultaneamente os hashes de 4 blocos. As funções de hash SHA-* tradicionais processam os dados sequencialmente.
Características do BLAKE3:
- Alto desempenho;
- Segurança, incluindo resistência a , ao qual o SHA-2 é suscetível;
- Proporciona paralelização de cálculos em qualquer número de threads e canais SIMD;
- Possibilidade de atualização incremental e processamento verificado de streams;
- Pode ser usado nos modos PRF, MAC, KDF, XOF e como um hash regular;
- Um único algoritmo para todas as arquiteturas, rápido em sistemas x86-64 e processadores ARM de 32 bits.
Fonte: opennet.ru
