Автор VPN WireGuard выпустил новое обновление RDRAND

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

В конце ноября Джейсон был указан в качестве случайного сопровождающего контроллера и теперь опубликовал первые результаты своей доработки.

В анонсе отмечается, что новая реализация отличается переход на использование хеш-функции BLAKE2s вместо SHA1 для операций энтропийного смешивания.

Сам BLAKE2s имеет приятное свойство, основанное на внутренней
Перестановка Ча-Ча, которую ГСЧ уже использует для расширения, поэтому
не должно быть проблем с новизной, оригинальностью или потрясающим процессором
поведение, так как оно основано на чем-то, что уже используется.

Кроме того, отмечается, что изменение также улучшена безопасность генератора псевдослучайных чисел избавившись от проблемного алгоритма 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 завершена, его значение не влияет на качество генерируемого потока, и в этом случае это можно сделать без вызова РДРЭНД.

Этот компромисс направлен на решение этих двух проблем и, в то же время, на сохранение общая структура и семантика максимально приближены к оригиналу.
Конкретно:

а) Вместо того, чтобы перезаписывать хэш IV с помощью RDRAND, мы помещаем в документированные BLAKE2 поля «соль» и «личные», которые созданный специально для этого типа использования.
б) Так как эта функция возвращает результат полного хэша в коллектор энтропии, мы возвращаем только половину длины хэш, как это было сделано раньше. Это увеличивает построить предварительный секрет с 2 ^ 80 до 2^128 гораздо удобнее.
c) Вместо того, чтобы просто использовать необработанную функцию «sha1_transform», вместо этого мы используем полную и правильную функцию BLAKE2s с завершением.

Изменения запланированы для включения в ядро ​​5.17. и уже были проверены разработчиками Тедом Тсо (второй сопровождающий случайного драйвера), Грегом Кроа-Хартманом (ответственным за поддержание стабильности ядра Linux) и Жаном-Филиппом Аумассоном (автором алгоритмов BLAKE2/3).

Наконец, если вы заинтересованы в том, чтобы узнать больше об этом, вы можете ознакомиться с подробностями в по следующей ссылке.


Добавить в качестве предпочтительного источника в Google