Авторът на VPN WireGuard пусна нова актуализация на RDRAND

Джейсън А. Доненфелд , автор на WireGuard VPN, наскоро обяви нова , актуализирана имплементация на генератора на случайни числа RDRAND , който е отговорен за работата на устройствата /dev/random и /dev/urandom в ядрото на Linux.

В края на ноември Джейсън беше включен в списъка на поддържащите на произволния контролер и вече публикува първите резултати от работата си по преработката.

В съобщението се споменава, че новата имплементация е забележителна с преминаването си към използване на хеш функцията BLAKE2s вместо SHA1 за операции по смесване на ентропия.

Самият BLAKE2s има хубавото свойство да се базира вътрешно на
ChaCha пермутация, която RNG вече използва за разширението, така че
не би трябвало да има проблем с новост, оригиналност или невероятен процесор
поведение, тъй като се основава на нещо, което вече се използва.

Освен това, заслужава да се отбележи, че промяната подобри и сигурността на генератора на псевдослучайни числа, като елиминира проблемния алгоритъм SHA1 и предотврати презаписването на вектора за инициализация на случайни числа. Тъй като алгоритъмът BLAKE2s превъзхожда SHA1, използването му също имаше положителен ефект върху производителността на генератора на псевдослучайни числа (тестове на система с процесор Intel i7-11850H показаха 131% увеличение на скоростта).

Друго подчертано предимство е, че прехвърлянето на ентропийната смес към BLAKE2 е обединяването на използваните алгоритми: BLAKE2 се използва в шифъра ChaCha, който вече се използва за извличане на случайни последователности.

BLAKE2s като цяло е по-бърз и със сигурност по-сигурен, но е сериозно компрометиран. Освен това, текущата конструкция на случайни числа не използва пълната SHA1 функция, както е посочено, и позволява недокументирано презаписване на IV с изхода на RDRAND , дори ако RDRAND не е конфигуриран като „доверен“, което предполага потенциално злонамерени IV опции.

А кратката му дължина означава , че запазването само на половината секретност при подаването му обратно към миксера ни дава само 2^80 бита секретност напред. С други думи, не само изборът на хеш функция е остарял, но и употребата ѝ не е особено добра.

Също така бяха направени подобрения в крипто-сигурния генератор на псевдослучайни числа CRNG, използван в getrandom извикването.

Споменава се също, че подобренията се свеждат до ограничаване на извикването на бавния RDRAND генератор при извличане на ентропия, което може да подобри производителността с коефициент 3,7. Джейсън демонстрира, че извикването на RDRAND има смисъл само в ситуация, в която CRNG все още не е напълно инициализиран, но ако инициализацията на CRNG е завършена, нейната стойност не влияе на качеството на генерираната последователност и в този случай е възможно да се направи без извикване на RDRAND.

Този компромис има за цел да разреши тези два проблема и в същото време да поддържа обща структура и семантика, възможно най-близки до оригинала.
По-конкретно:

а) Вместо да презаписвате IV хеша с RDRAND, поставяме в документираните полета "сол" и "лични" на BLAKE2, които са създаден специално за този тип употреба.
b) Тъй като тази функция връща резултата от пълния хеш към ентропия колектор, ние връщаме само половината от дължината на hash, точно както беше направено преди. Това увеличава строителна предварителна тайна от 2 ^ 80 а 2^128 много по-удобно.
в) Вместо просто да използвате необработената функция "sha1_transform", вместо това използваме пълната и правилна функция BLAKE2s, с завършване.

Промените са планирани за включване в ядрото 5.17 и вече са прегледани от разработчиците Тед Цо (вторият човек, отговорен за поддръжката на драйвера за произволно управление), Грег Кроа-Хартман (отговорен за поддържането на стабилността на ядрото на Linux) и Жан-Филип Омасон (автор на алгоритмите BLAKE2/3).

И накрая, ако се интересувате да научите повече, можете да намерите подробностите на следния линк.


Добавяне като предпочитан източник в Google