Для ядра Linux прапанавана рэалізацыя /dev/random, пазбаўленая ад прывязкі да SHA-1

Джэйсан Даненфілд (Jason A. Donenfeld), аўтар VPN WireGuard, прапанаваў абноўленую рэалізацыю генератара псеўдавыпадковых лікаў RDRAND, які адказвае за працу прылад /dev/random і /dev/urandom у ядры Linux. У канцы лістапада Джэйсан быў уключаны ў лік мэйнтэйнераў драйвера random і зараз апублікаваў першыя вынікі сваёй працы па яго перапрацоўцы.

Новая рэалізацыя характэрна пераходам на выкарыстанне хэш-функцыі BLAKE2s замест SHA1 для аперацый змешвання энтрапіі. Змена дазволіла павысіць бяспеку генератара псеўдавыпадковых лікаў, дзякуючы збавенню ад праблемнага алгарытму SHA1 і выключэнні перазапісу вектара ініцыялізацыі RNG. Бо алгарытм BLAKE2s апярэджвае SHA1 па прадукцыйнасці, тое яго ўжыванне таксама дадатна адбілася на прадукцыйнасці генератара псеўдавыпадковых лікаў (тэставанне на сістэме з працэсарам Intel i7-11850H паказала павелічэнне хуткасці на 131%). Яшчэ адным плюсам перакладу змешвання энтрапіі на BLAKE2 стала ўніфікацыя выкарыстоўваных алгарытмаў – BLAKE2 ужываецца ў шыфры ChaCha, ужо ўжывальным для вымання выпадковых паслядоўнасцяў.

Акрамя таго, унесены паляпшэнні ў крыптанадзейны генератар псеўдавыпадковых лікаў CRNG, які выкарыстоўваецца ў выкліку getrandom. Паляпшэнні зводзяцца да абмежавання выкліку павольнага генератара RDRAND пры выманні энтрапіі, што дазваляе падвысіць прадукцыйнасць у 3.7 разу. Джэйсан паказаў, што выклік RDRAND мае сэнс толькі ў сітуацыі, калі CRNG яшчэ цалкам не ініцыялізаваны, але калі ініцыялізацыя CRNG завершана, яго значэнне не ўплывае на якасць генераванай паслядоўнасці і без звароту да RDRAND у гэтым выпадку можна абыйсціся.

Змены вызначаныя для ўключэння ў склад ядра 5.17 і ўжо рэцэнзаваныя распрацоўнікамі Ted Ts'o (другі мэйнтэйнер драйвера random), Greg Kroah-Hartman (адказны за падтрымку стабільнай галінкі ядра Linux) і Jean-Philippe Aumasson (аўтар алгарытм)

Крыніца: opennet.ru

Дадаць каментар