Função hash criptográfica BLAKE3 disponível, que é 10 vezes mais rápida que SHA-2
A implementação final do algoritmo foi publicada BLAKE3, 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. BLAKE3 não se destina a hash de senhas (para senhas você precisa usar yescrypt, bcrypt, scrypt ou Argon2), pois visa calcular hashes o mais rápido possível com garantia de não colisões, proteção contra encontrando o protótipo e não é sensível ao tamanho dos dados com hash. Implementação de referência do BLAKE3 publicado Dupla licença em Domínio Público (CC0) e Apache 2.0.
A principal diferença da nova função hash é o alto desempenho do cálculo de hash, mantendo a confiabilidade no 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 supera 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. Permanece uma lacuna significativa quando se processam grandes quantidades de dados, por exemplo, o BLAKE3 revelou-se mais rápido SHA-256 em 8 vezes ao calcular hash para 1 GB de dados aleatórios.
O algoritmo foi desenvolvido por famosos especialistas em criptografia (Jack O'Connor, Jean-Philippe Aumasson, Samuel Neves, Zooko Wilcox-O'Hearn) e continua a desenvolver o algoritmo BLAKE2 e usa um mecanismo para codificar a árvore da cadeia de blocos Bao. Ao contrário do BLAKE2 (BLAKE2b, BLAKE2s), o BLAKE3 oferece um algoritmo único para todas as plataformas, não vinculado à profundidade de bits e ao tamanho do hash.
O aumento de desempenho foi alcançado reduzindo o número de rodadas de 10 para 7 e hashing de blocos separadamente em pedaços de 1 KB. Segundo os criadores, eles encontraram um argumento convincente prova, que você pode fazer 7 rodadas em vez de 10, mantendo o mesmo nível de confiabilidade (para maior clareza, você pode dar um exemplo misturando frutas em uma batedeira - após 7 segundos as frutas já estão completamente misturadas e mais 3 segundos irão não afeta a consistência da mistura). No entanto, alguns pesquisadores expressam dúvidas, acreditando que mesmo que atualmente 7 rodadas sejam suficientes para resistir a todos os ataques conhecidos a hashes, então 3 rodadas adicionais podem ser úteis se novos ataques forem identificados no futuro.
Quanto à divisão em blocos, no BLAKE3 o fluxo é dividido em pedaços de 1 KB e cada pedaço é hash independentemente. Baseado em hashes das peças na base árvore Merkle binária um grande hash é formado. Essa divisão nos permite resolver o problema de paralelização do processamento de dados ao calcular um hash - por exemplo, você pode usar instruções SIMD de 4 threads para calcular simultaneamente os hashes de 4 blocos. As funções hash SHA-* tradicionais processam dados sequencialmente.