Jason Donenfeld, skaparen av VPN WireGuard, har föreslagit en uppdaterad implementation av RDRAND, en pseudorandom generator som används för enheter /dev/random och /dev/urandom i Linux-kärnan. I slutet av november inkluderades Jason bland maintainers av random-drivrutinen och har nu publicerat sina första resultat av sitt arbete med att omarbeta den.
Den nya implementationen är anmärkningsvärd för övergången till att använda hash-funktionen BLAKE2s istället för SHA1 för entropi-mixning. Denna förändring har ökat säkerheten hos pseudorandom-generatorn genom att eliminera den problematiska SHA1-algoritmen och utesluta överskrivning av RNG:s initialiseringsvektor. Eftersom BLAKE2s presterar bättre än SHA1 påverkar dess användning också prestandan hos pseudorandom-generatorn (testning på ett system med en Intel i7-11850H-processor visade en hastighetsökning på 131%). Ytterligare en fördel med att övergå till BLAKE2 för entropi-mixning är en enhetlig användning av algoritmer — BLAKE2 används även i chiffret ChaCha, som redan används för att extrahera slumpmässiga sekvenser.
Dessutom har det gjorts förbättringar i den kryptosäkra pseudorandom-generatorn CRNG, som används vid anropet getrandom. Förbättringarna innebär en begränsning av anropet till den långsamma generatorn RDRAND vid extrahering av entropi, vilket ökar prestandan med 3,7 gånger. Jason har visat att anropet till RDRAND endast är meningsfullt när CRNG ännu inte är helt initialiserad, men när CRNG:s initialisering är klar påverkar dess värde inte kvaliteten på den genererade sekvensen och det går att klara sig utan att åtkomst till RDRAND i detta fall.
Ändringarna är planerade att inkluderas i kärna 5.17 och har redan blivit granskade av utvecklarna Ted Ts’o (den andra maintainern av random-drivrutinen), Greg Kroah-Hartman (ansvarig för underhåll av den stabila Linux-kärnan) och Jean-Philippe Aumasson (skaparen av BLAKE2/3-algoritmerna).
Källa: opennet.ru
