Jason A. Donenfeld, autor VPN WireGuard, navrhl aktualizovanou implementaci generátoru pseudo-náhodných čísel RDRAND, který zajišťuje funkci zařízení /dev/random a /dev/urandom v jádře Linuxu. Na konci listopadu byl Jason zařazen mezi správce ovladače random a nyní zveřejnil první výsledky své práce na jeho přepracování.
Nová implementace se vyznačuje přechodem na použití hashovací funkce BLAKE2s namísto SHA1 pro operace míchání entropie. Tato změna zvýšila bezpečnost generátoru pseudo-náhodných čísel tím, že zbavila problematického algoritmu SHA1 a vyloučila přepisování inicializačního vektoru RNG. Protože algoritmus BLAKE2s předčí SHA1 z hlediska výkonu, jeho aplikace se také pozitivně odrazila na výkonu generátoru pseudo-náhodných čísel (testování na systému s procesorem Intel i7-11850H ukázalo zvýšení rychlosti o 131 %). Dalším plusem přechodu míchání entropie na BLAKE2 byla unifikace používaných algoritmů — BLAKE2 se používá v šifře ChaCha, která se již používá k extrakci náhodných posloupností.
Kromě toho byly provedeny vylepšení v kryptograficky bezpečném generátoru pseudo-náhodných čísel CRNG, který se používá při volání getrandom. Vylepšení spočívají v omezení volání pomalého generátoru RDRAND při extrakci entropie, což umožňuje zvýšit výkon až 3,7krát. Jason ukázal, že volání RDRAND dává smysl pouze tehdy, když CRNG ještě není plně inicializován, ale jakmile je inicializace CRNG dokončena, jeho hodnota nemá vliv na kvalitu generované posloupnosti a bez volání RDRAND se v tomto případě lze obejít.
Změny jsou plánovány k zařazení do jádra 5.17 a byly již recenzovány vývojáři Tedem Ts’o (druhý správce ovladače random), Gregem Kroah-Hartmanem (odpovědným za podporu stabilní větve jádra Linuxu) a Jean-Philippem Aumassonem (autorem algoritmů BLAKE2/3).
Zdroj: opennet.ru
