Lançamento da implementação de referência da função hash criptográfica BLAKE3 1.0.

Foi lançado o release da implementação de referência da função hash criptográfica BLAKE3 1.0, notável por sua altíssima performance na geração de hashes, mantendo uma confiabilidade equivalente ao nível do SHA-3. No teste de geração de hash para um arquivo de 16 KB, o BLAKE3 com uma chave de 256 bits supera o SHA3-256 em 17 vezes, o SHA-256 em 14 vezes, o SHA-512 em 9 vezes, o SHA-1 em 6 vezes, e o BLAKE2b em 5 vezes. A vantagem significativa se mantém também ao processar grandes volumes de dados; por exemplo, o BLAKE3 foi 8 vezes mais rápido que o SHA-256 ao calcular o hash para 1 GB de dados aleatórios. O código da implementação de referência do BLAKE3 está disponível em C e Rust sob uma licença dupla — domínio público (CC0) e Apache 2.0.

Lançamento da implementação de referência da função hash criptográfica BLAKE3 1.0.

A função hash é projetada para aplicações como verificação de integridade de arquivos, autenticação de mensagens e geração de dados para assinaturas digitais criptográficas. O BLAKE3 não é destinado para hash de senhas, pois é otimizado para cálculo rápido de hashes (para senhas, recomenda-se o uso de funções hash lentas como yescrypt, bcrypt, scrypt ou Argon2). A função hash em questão é insensível ao tamanho dos dados hashados e é protegida contra ataques de colisão e preimage attacks.

O algoritmo foi desenvolvido por especialistas renomados em criptografia (Jack O'Connor, Jean-Philippe Aumasson, Samuel Neves, Zooko Wilcox-O'Hearn) e continua a evolução do algoritmo BLAKE2, utilizando o mecanismo Bao para a codificação de árvore de cadeias de blocos. Diferentemente do BLAKE2 (BLAKE2b, BLAKE2s), o BLAKE3 propõe um único algoritmo para todas as plataformas, independente da arquitetura e do tamanho do hash.

O aumento de desempenho foi alcançado através da redução do número de rodadas de 10 para 7 e da hashagem separada de blocos em pedaços de 1 KB. Segundo os criadores, eles encontraram uma prova matemática convincente de que é possível se contentar com 7 rodadas em vez de 10, mantendo o mesmo nível de confiabilidade (para ilustrar, pode-se dar o exemplo de misturar frutas em um liquidificador — após 7 segundos, as frutas já estão totalmente 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 atualmente 7 rodadas sejam suficientes para resistir a todos os ataques conhecidos a hashes, as 3 rodadas adicionais podem ser úteis se novas ameaças forem descobertas no futuro.

Quanto à divisão em blocos, no BLAKE3 o fluxo é dividido em pedaços de 1 KB e cada pedaço é hashed independentemente. Com base nos hashes dos pedaços, é formada uma única hash grande usando uma árvore binária de Merkle. Essa divisão resolve o problema de paralelização do processamento de dados ao calcular a hash — por exemplo, pode-se usar instruções SIMD de 4 threads para calcular simultaneamente as hashes de 4 blocos. Funções de hash tradicionais como SHA-* processam dados de forma sequencial.

Características do BLAKE3:

  • Desempenho elevado, o BLAKE3 é significativamente mais rápido que MD5, SHA-1, SHA-2, SHA-3 e BLAKE2.
  • Segurança, incluindo resistência a ataques de extensão de mensagem, dos quais o SHA-2 é vulnerável;
  • Estão disponíveis versões na linguagem Rust otimizadas para uso de instruções SSE2, SSE4.1, AVX2, AVX-512 e NEON.
  • 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;
  • Uso nos 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.

Principais diferenças do BLAKE3 em relação ao BLAKE2:

  • Uso de uma estrutura de árvore binária, permitindo alcançar paralelismo ilimitado ao calcular a hash.
  • Redução do número de rodadas de 10 para 7.
  • Três modos de operação: hashagem, hashagem com chave (HMAC) e derivação de chave (KDF).
  • Não há despesas adicionais ao hash com chave devido ao uso da área anteriormente ocupada pelo bloco de parâmetros da chave.
  • Mecanismo interno de operação como uma função com resultado extensível (XOF, Extendable Output Function), permitindo paralelização e posicionamento (seek).

Fonte: opennet.ru

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster