Jason A. Donenfeld, autore di VPN WireGuard, ha proposto una nuova implementazione del generatore di numeri pseudocasuali RDRAND, che gestisce i dispositivi /dev/random e /dev/urandom nel kernel Linux. Alla fine di novembre, Jason è stato incluso tra i manutentori del driver random e ha ora pubblicato i primi risultati del suo lavoro di revisione.
La nuova implementazione si distingue per il passaggio all'uso della funzione di hash BLAKE2s invece di SHA1 per le operazioni di mescolamento dell'entropia. Questa modifica ha aumentato la sicurezza del generatore di numeri pseudocasuali, eliminando l'algoritmo problematico SHA1 e prevenendo la riscrittura del vettore di inizializzazione RNG. Poiché l'algoritmo BLAKE2s supera SHA1 in termini di prestazioni, il suo utilizzo ha anche avuto un impatto positivo sulle prestazioni del generatore di numeri pseudocasuali (i test su un sistema con processore Intel i7-11850H hanno mostrato un aumento della velocità del 131%). Un ulteriore vantaggio del passaggio al mescolamento dell'entropia tramite BLAKE2 è stata l'unificazione degli algoritmi utilizzati: BLAKE2 è impiegato anche nello schema ChaCha, già utilizzato per l'estrazione di sequenze casuali.
Inoltre, sono stati apportati miglioramenti al generatore di numeri pseudorisrandici criptograficamente sicuri CRNG, utilizzato nella chiamata getrandom. I miglioramenti consistono nella limitazione della chiamata al generatore lento RDRAND durante l'estrazione dell'entropia, il che consente di aumentare le prestazioni di 3,7 volte. Jason ha dimostrato che la chiamata a RDRAND ha senso solo quando il CRNG non è ancora completamente inizializzato, ma se l'inizializzazione del CRNG è completata, il suo valore non influisce sulla qualità della sequenza generata e in questo caso è possibile evitare di riferirsi a RDRAND.
Le modifiche sono previste per essere incluse nel kernel 5.17 e sono già state esaminate dai seguenti sviluppatori: Ted Ts’o (secondo manutentore del driver random), Greg Kroah-Hartman (responsabile del supporto della branch stabile del kernel Linux) e Jean-Philippe Aumasson (autore degli algoritmi BLAKE2/3).
Fonte: opennet.ru
