Conheça BLAKE3, uma função hash criptográfica segura, rápida e paralelizável, aliás, considerada muito mais rápida que MD5, SHA-1, SHA-2, SHA-3 e BLAKE2.
BLAKE3 é uma função hash criptográfica que se caracteriza por ser muito mais rápida que MD5, SHA-1, SHA-2, SHA-3 e BLAKE2, além de ser mais segura, ao contrário de MD5 e SHA-1. E seguro contra extensão de comprimento, ao contrário de SHA-2.
BLAKE3, uma função hash criptográfica segura, rápida e paralelizável
Blake altamente paralelizável em qualquer número de threads e linhas SIMD, porque é uma árvore Merkle no interior e tem um algoritmo livre de variantes, que é rápido em x86-64 e também em arquiteturas menores.
BLAKE3 é baseado em uma instância otimizada da função hash BLAKE2 estabelecida e o modo de árvore Bao original. Especificações e justificativa de design estão disponíveis em papel BLAKE3. O tamanho de saída padrão é 256 bits.
No teste de geração de hash para um arquivo de 16 KB, BLAKE3 com uma chave de 256 bits supera SHA3-256 em 17 vezes, SHA-256 em 14 vezes, SHA-512 em 9 vezes, SHA-1 em 6 vezes. E para BLAKE2b 5 vezes.
Esta é uma lacuna significativa que permanece mesmo durante o processamento de grandes quantidades de dados, por exemplo, o BLAKE3 acabou sendo 8 vezes mais rápido do que o SHA-256 ao calcular um hash para 1 GB de dados aleatórios.
A melhoria de desempenho foi alcançada reduzindo o número de rodadas de 10 para 7 e blocos de hash separadamente em pedaços de 1 KB. De acordo com os criadores, eles encontraram provas matemáticas convincentes de que você pode sobreviver com 7 rodadas em vez de 10, mantendo o mesmo nível de confiabilidade.
Ao mesmo tempo, alguns pesquisadores expressam dúvidas, acreditando que mesmo que atualmente 7 rodadas sejam suficientes para conter todos os ataques conhecidos em hashes, então 3 rodadas adicionais podem ser úteis se novos ataques forem detectados no futuro.
Sobre BLAKE3
A função hash é projetada para aplicativos como verificação de integridade de arquivo, autenticação de mensagem e geração de dados para assinaturas digitais criptográficas.
BLAKE3 não foi projetado para fazer hash de senhas, pois visa computar hashes o mais rápido possível (para senhas, é recomendado usar as funções hash e escrypt lentos, bcrypt, scrypt ou Argon2).
A função hash em questão é insensível ao tamanho dos dados que estão sendo processados e é protegida contra pesquisa de colisão e ataques de pré-imagem.
O algoritmo foi desenvolvido por criptógrafos renomados e continua o desenvolvimento do algoritmo BLAKE2 e usa o mecanismo Bao para codificar a árvore do blockchain. Ao contrário do BLAKE2 (BLAKE2b, BLAKE2s), o BLAKE3 oferece um único algoritmo para todas as plataformas que não está vinculado à largura do bit e tamanho do hash.
Em relação à divisão de blocos, no BLAKE3 o fluxo é dividido em blocos de 1 KB e cada bloco é hash independente. Um grande hash é formado com base em hashes de peças com base na árvore binária Merkle.
Essa separação permite resolver o problema de paralelização do processamento de dados no cálculo de um hash; por exemplo, você pode usar instruções SIMD de 4 fios para calcular hashes de 4 blocos simultaneamente. As funções hash SHA-* tradicionais processam dados sequencialmente.
Outras características do BLAKE3 são:
- Aplicação nos modos PRF, MAC, KDF, XOF e como hash normal;
- Um algoritmo para todas as arquiteturas, rápido em sistemas x86-64 e processadores ARM de 32 bits.
Em relação às principais diferenças entre BLAKE3 e BLAKE2:
- Usando uma estrutura de árvore binária para alcançar paralelismo ilimitado no cálculo de hash.
- Reduzindo o número de rodadas de 10 para 7.
- Três modos de operação: Hash, Hash com chave (HMAC) e Geração de chave (KDF).
- Não há sobrecarga adicional ao fazer hash de uma chave devido ao uso da área anteriormente ocupada pelo bloco de parâmetros da chave.
- Mecanismo integrado para funcionar na forma de Função de Saída Extensível (XOF) que permite paralelização e posicionamento (pesquisa).
Por fim, caso tenha interesse em saber mais sobre o assunto, consulte os detalhes no seguinte endereço.