Jason A. Donenfeld , avtor WireGuard VPN, je pred kratkim napovedal novo , posodobljeno implementacijo generatorja naključnih števil RDRAND , ki je odgovoren za delovanje naprav /dev/random in /dev/urandom v jedru Linuxa.
Konec novembra je bil Jason naveden kot vzdrževalec naključnih krmilnikov in je zdaj objavil prve rezultate svojega dela na predelavi.
V objavi je omenjeno, da je nova implementacija znana po prehodu na uporabo zgoščevalne funkcije BLAKE2s namesto SHA1 za operacije mešanja entropije.
BLAKE2s ima lepo lastnost, da interno temelji na
ChaCha permutacija, ki jo RNG že uporablja za razširitev, torej
ne bi smelo biti težav z novostjo, izvirnostjo ali neverjetnim procesorjem
vedenje, saj temelji na nečem, kar je že v uporabi.
Poleg tega je treba omeniti, da je sprememba izboljšala tudi varnost generatorja psevdonaključnih števil z odpravo problematičnega algoritma SHA1 in preprečevanjem prepisovanja inicializacijskega vektorja RNG. Ker algoritem BLAKE2s prekaša SHA1, je njegova uporaba pozitivno vplivala tudi na delovanje generatorja psevdonaključnih števil (testi na sistemu s procesorjem Intel i7-11850H so pokazali 131-odstotno povečanje hitrosti).
Druga poudarjena prednost je, da prenos mešanice entropije v BLAKE2 predstavlja poenotenje uporabljenih algoritmov: BLAKE2 se uporablja v šifri ChaCha, ki se že uporablja za ekstrakcijo naključnih zaporedij.
BLAKE2s je na splošno hitrejši in zagotovo varnejši, vendar je bil močno ogrožen. Poleg tega trenutna konstrukcija generatorja slučajnih številov ne uporablja celotne funkcije SHA1, kot je določeno, in omogoča nedokumentirano prepisovanje IV z izhodom RDRAND , tudi če RDRAND ni konfiguriran kot "zaupanja vreden", kar pomeni potencialno zlonamerne možnosti IV.
In njegova kratka dolžina pomeni , da nam ohranjanje le polovične tajnosti pri pošiljanju nazaj v mešalnik da le 2^80 bitov tajnosti naprej. Z drugimi besedami, izbira zgoščevalne funkcije ni le zastarela, ampak tudi njena uporaba ni ravno dobra.
Poleg tega so bile narejene izboljšave v kripto varnem generatorju psevdonaključnih številk CRNG, ki se uporablja pri getrandom klicu.
Omenjeno je tudi, da se izboljšave nanašajo na omejevanje klica počasnega generatorja RDRAND pri ekstrakciji entropije, kar lahko izboljša zmogljivost za faktor 3,7. Jason je pokazal, da je klic RDRAND smiseln le v situaciji, ko CRNG še ni v celoti inicializiran, če pa je inicializacija CRNG končana, njena vrednost ne vpliva na kakovost generiranega zaporedja in v tem primeru je to mogoče storiti brez klica RDRAND.
Cilj tega kompromisa je rešiti ta dva problema in hkrati ohraniti splošna struktura in semantika čim bližje izvirniku.
Natančneje:a) Namesto da bi prepisovanje razpršitve IV z RDRAND, vnesemo v dokumentirana BLAKE2 polja "sol" in "personal", ki sta ustvarjen posebej za to vrsto uporabe.
b) Ker ta funkcija vrne rezultat celotnega zgoščevanja v entropijski zbiralnik, vrnemo samo polovico dolžine hash, tako kot je bilo storjeno prej. S tem se poveča zgraditi vnaprej skrivnost od 2^80 do 2^128 veliko bolj udobno.
c) Namesto uporabe surove funkcije "sha1_transform", namesto tega uporabljamo popolno in pravilno funkcijo BLAKE2s, z zaključkom.
Spremembe so predvidene za vključitev v jedro 5.17 in so jih že pregledali razvijalci Ted Ts'o (druga oseba, odgovorna za vzdrževanje gonilnika za naključno iskanje), Greg Kroah-Hartman (odgovoren za vzdrževanje stabilnosti jedra Linuxa) in Jean-Philippe Aumasson (avtor algoritmov BLAKE2/3).
Nenazadnje, če vas zanima več informacij, lahko podrobnosti najdete na naslednji povezavi.