Jason A. Donenfeld , autor WireGuard VPN, nedávno oznámil novú , aktualizovanú implementáciu generátora náhodných čísel RDRAND , ktorý je zodpovedný za prevádzku zariadení /dev/random a /dev/urandom v jadre Linuxu.
Koncom novembra bol Jason zaradený do zoznamu správcov náhodného kontrolóra a teraz zverejnil prvé výsledky svojej prerábacej práce.
V oznámení sa uvádza, že nová implementácia je pozoruhodná prechodom na používanie hašovacej funkcie BLAKE2s namiesto SHA1 pre operácie miešania entropie.
Samotný BLAKE2s má tú peknú vlastnosť, že je interne založený na
ChaCha permutácia, ktorú už RNG využíva na expanziu, tzv
nemal by byť problém s novinkou, originalitou alebo úžasným CPU
správanie, pretože je založené na niečom, čo sa už používa.
Ďalej stojí za zmienku, že zmena tiež zlepšila bezpečnosť generátora pseudonáhodných čísel elimináciou problematického algoritmu SHA1 a zabránením prepísania inicializačného vektora RNG. Keďže algoritmus BLAKE2s prekonáva SHA1, jeho použitie malo tiež pozitívny vplyv na výkon generátora pseudonáhodných čísel (testy na systéme s procesorom Intel i7-11850H ukázali 131% nárast rýchlosti).
Ďalšou zdôraznenou výhodou je, že prenos entropickej zmesi do BLAKE2 predstavuje zjednotenie použitých algoritmov: BLAKE2 sa používa v šifre ChaCha, ktorá sa už používa na extrakciu náhodných sekvencií.
BLAKE2s je vo všeobecnosti rýchlejší a určite bezpečnejší, ale bol vážne ohrozený. Okrem toho, súčasná konštrukcia RNG nevyužíva plnú funkciu SHA1, ako je špecifikované, a umožňuje nedokumentované prepísanie IV výstupom RDRAND , aj keď RDRAND nie je nakonfigurovaný ako „dôveryhodný“, čo naznačuje potenciálne škodlivé možnosti IV.
A jeho krátka dĺžka znamená , že zachovanie iba polovičného utajenia pri jeho spätnom odosielaní do mixéra nám dáva iba 2^80 bitov dopredného utajenia. Inými slovami, nielenže je výber hašovacej funkcie zastaraný, ale ani jej použitie nie je veľmi dobré.
Vylepšením bol aj kryptobezpečný generátor pseudonáhodných čísel CRNG používaný v getrandom hovore.
Taktiež sa spomína, že vylepšenia sa obmedzujú na obmedzenie volania pomalého generátora RDRAND pri extrakcii entropie, čo môže zlepšiť výkon faktorom 3,7. Jason demonštroval, že volanie RDRAND má zmysel iba v situácii, keď CRNG ešte nebol úplne inicializovaný, ale ak je inicializácia CRNG dokončená, jej hodnota neovplyvňuje kvalitu vygenerovanej sekvencie a v tomto prípade je možné to urobiť bez volania RDRAND.
Cieľom tohto záväzku je tieto dva problémy vyriešiť a zároveň zachovať všeobecná štruktúra a sémantika čo najbližšie k originálu.
Konkrétne:a) Namiesto prepísania hash IV pomocou RDRAND, vložíme do BLAKE2 zdokumentovaných polí „soľ“ a „osobné“, ktoré sú vytvorené špeciálne pre tento typ použitia.
b) Pretože táto funkcia vracia výsledok úplného hashu do kolektor entropie, vrátime len polovicu dĺžky hash, rovnako ako to bolo predtým. Toto zvyšuje stavebné zálohové tajomstvo 2 ^ 80 a 2 ^ 128 oveľa pohodlnejšie.
c) Namiesto použitia surovej funkcie „sha1_transform“, namiesto toho používame úplnú a vhodnú funkciu BLAKE2s s dokončením.
Zmeny sú naplánované na zahrnutie do jadra 5.17 a už ich skontrolovali vývojári Ted Ts'o (druhá osoba zodpovedná za údržbu náhodného ovládača), Greg Kroah-Hartman (zodpovedný za udržiavanie stability linuxového jadra) a Jean-Philippe Aumasson (autor algoritmov BLAKE2/3).
Na záver, ak máte záujem dozvedieť sa viac, podrobnosti nájdete na nasledujúcom odkaze.