Uma implementação de /dev/random foi proposta para o kernel Linux, livre de ligação ao SHA-1

Jason A. Donenfeld, autor de VPN WireGuard, propôs uma implementação atualizada do gerador de números pseudo-aleatórios RDRAND responsável pela operação dos dispositivos /dev/random e /dev/urandom no kernel Linux. No final de novembro, Jason foi incluído no número de mantenedores do driver aleatório e já publicou os primeiros resultados de seu trabalho no seu processamento.

A nova implementação é notável por passar a usar a função hash BLAKE2s em vez de SHA1 para operações de mistura de entropia. A mudança melhorou a segurança do gerador de números pseudoaleatórios, eliminando o algoritmo SHA1 problemático e eliminando a substituição do vetor de inicialização RNG. Como o algoritmo BLAKE2s é superior ao SHA1 em desempenho, seu uso também teve um efeito positivo no desempenho do gerador de números pseudo-aleatórios (testes em um sistema com processador Intel i7-11850H mostraram um aumento de 131% na velocidade). Outra vantagem da transferência da mistura de entropia para o BLAKE2 foi a unificação dos algoritmos utilizados - o BLAKE2 é utilizado na cifra ChaCha, já utilizada para extrair sequências aleatórias.

Além disso, foram feitas melhorias no gerador de números pseudo-aleatórios cripto-seguro CRNG usado na chamada getrandom. As melhorias se resumem a limitar a chamada ao gerador RDRAND lento ao extrair entropia, o que melhora o desempenho em 3.7 vezes. Jason mostrou que chamar RDRAND só faz sentido em uma situação onde o CRNG ainda não foi totalmente inicializado, mas se a inicialização do CRNG for completa, seu valor não afeta a qualidade da sequência gerada e neste caso a chamada para RDRAND pode ser dispensado.

As mudanças estão programadas para inclusão no kernel 5.17 e já foram revisadas pelos desenvolvedores Ted Ts'o (segundo mantenedor do driver aleatório), Greg Kroah-Hartman (responsável por manter o ramo estável do kernel Linux) e Jean-Philippe Aumasson (autor dos algoritmos BLAKE2/3).

Fonte: opennet.ru

Adicionar um comentário