Dla jądra Linuksa zaproponowano implementację /dev/random, wolną od powiązania z SHA-1

Jason A. Donenfeld, autor książki VPN WireGuard, zaproponował zaktualizowaną implementację generatora liczb pseudolosowych RDRAND odpowiedzialnego za działanie urządzeń /dev/random i /dev/urandom w jądrze Linuksa. Pod koniec listopada Jason został włączony do grona opiekunów losowego sterownika i właśnie opublikował pierwsze efekty swojej pracy nad jego obróbką.

Nowa implementacja wyróżnia się przejściem na funkcję skrótu BLAKE2 zamiast SHA1 w operacjach mieszania entropii. Zmiana poprawiła bezpieczeństwo generatora liczb pseudolosowych poprzez wyeliminowanie problematycznego algorytmu SHA1 oraz wyeliminowanie nadpisania wektora inicjującego RNG. Ponieważ algorytm BLAKE2s jest lepszy pod względem wydajności od SHA1, jego zastosowanie miało również pozytywny wpływ na wydajność generatora liczb pseudolosowych (testy na systemie z procesorem Intel i7-11850H wykazały wzrost szybkości o 131%). Kolejną zaletą przeniesienia mieszania entropii do BLAKE2 była ujednolicenie stosowanych algorytmów - BLAKE2 jest wykorzystywany w szyfrze ChaCha, używanym już do ekstrakcji losowych sekwencji.

Ponadto wprowadzono ulepszenia w kryptozabezpieczonym generatorze liczb pseudolosowych CRNG używanym w wywołaniu getrandom. Ulepszenia sprowadzają się do ograniczenia wywołania powolnego generatora RDRAND podczas wydobywania entropii, co poprawia wydajność o 3.7 razy. Jason pokazał, że wywołanie RDRAND ma sens tylko w sytuacji, gdy CRNG nie został jeszcze w pełni zainicjowany, ale jeśli inicjalizacja CRNG zostanie zakończona, jego wartość nie wpływa na jakość wygenerowanej sekwencji i w tym przypadku wywołanie RDRAND można zrezygnować.

Zmiany mają zostać uwzględnione w jądrze 5.17 i zostały już sprawdzone przez programistów Teda Ts'o (drugi opiekun losowego sterownika), Grega Kroah-Hartmana (odpowiedzialnego za utrzymanie stabilnej gałęzi jądra Linuksa) i Jean-Philippe Aumasson (autor algorytmów BLAKE2/3).

Źródło: opennet.ru

Dodaj komentarz