Foi publicada a implementação final do algoritmo , que oferece uma função 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. A BLAKE3 não é destinada ao hash de senhas (para senhas, é necessário usar yescrypt, bcrypt, scrypt ou Argon2), pois visa calcular hashes da forma mais rápida possível, garantindo a ausência de colisões, protegendo contra e não é sensível ao tamanho dos dados a serem hashados. A implementação de referência do BLAKE3 é licenciada sob duas licenças — domínio público (CC0) e Apache 2.0.
A característica chave da nova função hash é o desempenho extremamente alto no cálculo do hash, mantendo a confiabilidade ao nível do SHA-3. Por padrão, o tamanho do hash resultante do BLAKE3 é de 32 bytes (256 bits), mas pode ser expandido para valores arbitrários. No teste de geração de hash para um arquivo de 16 KB, a BLAKE3 supera o SHA3-256 por 15 vezes, o SHA-256 por 12 vezes, o SHA-512 por 8 vezes, o SHA-1 por 6 vezes e a BLAKE2b por 4 vezes. Uma grande vantagem é mantida mesmo ao processar volumes muito grandes de dados; por exemplo, a BLAKE3 se mostrou oito vezes mais rápida que a SHA-256 ao calcular o hash para 1 GB de dados aleatórios.
O algoritmo foi desenvolvido por especialistas notáveis em criptografia (, , , ) e continua a evolução do algoritmo e aplica, para a codificação da árvore de cadeias de blocos, o mecanismo . Diferente do BLAKE2 (BLAKE2b, BLAKE2s), no BLAKE3 foi proposto um único algoritmo para todas as plataformas, independente da arquitetura e do tamanho do hash.
O aumento de desempenho foi alcançado ao reduzir o número de rodadas de 10 para 7 e ao hash de blocos em partes de 1 KB. Segundo os criadores, eles encontraram uma , que é possível reduzir de 10 para 7 rodadas mantendo o mesmo nível de confiabilidade (para ilustrar, pode-se usar o exemplo de misturar frutas no liquidificador — após 7 segundos, as frutas já estão completamente misturadas e os 3 segundos adicionais não afetarão a consistência da mistura). No entanto, alguns pesquisadores expressam dúvida, acreditando que, mesmo que atualmente 7 rodadas sejam suficientes para resistir a todos os ataques conhecidos às hashes, as 3 rodadas adicionais podem se mostrar úteis caso novas ameaças sejam descobertas no futuro.
No que diz respeito à divisão em blocos, no BLAKE3 o fluxo é dividido em pedaços de 1 KB e cada pedaço é hashado de forma independente. Com base nos hashes dos pedaços, é criado Isso resulta em um único grande hash. Essa divisão permite resolver o problema de paralelização do processamento de dados ao calcular a hash — por exemplo, pode-se utilizar instruções SIMD de 4 threads para calcular simultaneamente as hashes de 4 blocos. As funções hash tradicionais SHA-* processam os dados de forma sequencial.
Características do BLAKE3:
- Desempenho elevado;
- Segurança, incluindo resistência a , ao qual o SHA-2 é vulnerável;
- Garantia de paralelização dos cálculos em qualquer número de threads e canais SIMD;
- Possibilidade de atualização incremental e processamento verificado de fluxos;
- Aplicação em modos PRF, MAC, KDF, XOF e como uma hash comum;
- Um único algoritmo para todas as arquiteturas, rápido tanto em sistemas x86-64 quanto em processadores ARM de 32 bits.
Fonte: opennet.ru
