Autor VPN WireGuard vydal novou aktualizaci RDRAND

Jason A. Donenfeld , autor WireGuard VPN, nedávno oznámil novou , aktualizovanou implementaci generátoru náhodných čísel RDRAND , který je zodpovědný za provoz zařízení /dev/random a /dev/urandom v linuxovém jádře.

Na konci listopadu byl Jason zařazen do seznamu správců náhodného kontrolora a nyní zveřejnil první výsledky své přepracovací práce.

V oznámení se uvádí, že nová implementace je pozoruhodná přechodem na používání hašovací funkce BLAKE2s namísto SHA1 pro operace míchání entropie.

BLAKE2s sám o sobě má tu příjemnou vlastnost, že je vnitřně založen na
ChaCha permutace, kterou RNG již používá pro expanzi, tak
neměl by být problém s novostí, originalitou nebo úžasným CPU
chování, protože je založeno na něčem, co se již používá.

Dále stojí za zmínku, že změna také zlepšila zabezpečení generátoru pseudonáhodných čísel odstraněním problematického algoritmu SHA1 a zabráněním přepsání inicializačního vektoru RNG. Vzhledem k tomu, že algoritmus BLAKE2s překonává SHA1, mělo jeho použití také pozitivní vliv na výkon generátoru pseudonáhodných čísel (testy na systému s procesorem Intel i7-11850H ukázaly 131% nárůst rychlosti).

Další zdůrazněnou výhodou je, že přenos entropické směsi do BLAKE2 představuje sjednocení použitých algoritmů: BLAKE2 se používá v šifře ChaCha, která se již používá k extrakci náhodných sekvencí.

BLAKE2s je obecně rychlejší a rozhodně bezpečnější, ale byl vážně kompromitován. Současná konstrukce generátoru náhodných čísel navíc nevyužívá plnou funkci SHA1, jak je specifikováno, a umožňuje nedokumentované přepsání IV výstupem RDRAND , i když RDRAND není nakonfigurován jako „důvěryhodný“, což naznačuje potenciálně škodlivé možnosti IV.

A jeho krátká délka znamená, že udržení pouze polovičního tajemství při jeho zpětném odesílání do mixéru nám dává pouze 2^80 bitů dopředného tajemství. Jinými slovy, nejenže je volba hašovací funkce zastaralá, ale její použití není ani moc dobré.

Kromě toho byla provedena vylepšení kryptozabezpečeného generátoru pseudonáhodných čísel CRNG používaného v getrandom volání.

Je také zmíněno, že vylepšení se omezují na omezení volání pomalého generátoru RDRAND při extrakci entropie, což může zlepšit výkon faktorem 3,7. Jason demonstroval, že volání RDRAND má smysl pouze v situaci, kdy CRNG ještě nebyl plně inicializován, ale pokud je inicializace CRNG dokončena, jeho hodnota neovlivňuje kvalitu generované sekvence a v tomto případě je možné to provést bez volání RDRAND.

Tento závazek si klade za cíl tyto dva problémy vyřešit a zároveň zachovat obecná struktura a sémantika co nejblíže originálu.
Konkrétně:

a) Namísto přepsání hash IV pomocí RDRAND to udělá vložili jsme do zdokumentovaných polí BLAKE2 „sůl“ a „osobní“, která jsou vytvořené speciálně pro tento typ použití.
b) Protože tato funkce vrací výsledek kompletního hashe do kolektoru entropie vracíme pouze polovinu délky hash, stejně jako se to dělalo předtím. Tím se zvyšuje sestavení předběžného tajemství od 2^80 do 2 ^ 128 mnohem pohodlnější.
c) Místo pouhého použití nezpracované funkce „sha1_transform“, místo toho používáme plnou a správnou funkci BLAKE2s s dokončením.

Změny jsou naplánovány k zahrnutí do jádra 5.17 a již byly zkontrolovány vývojáři Tedem Ts'oem (druhou osobou zodpovědnou za údržbu ovladače náhodného výběru), Gregem Kroah-Hartmanem (zodpovědným za udržování stability linuxového jádra) a Jeanem-Philippe Aumassonem (autorem algoritmů BLAKE2/3).

A konečně, pokud máte zájem dozvědět se více, podrobnosti naleznete na následujícím odkazu.


Přidat jako preferovaný zdroj v Googlu