Разработчик Wireguard серьезно ускорил вызов getrandom() в Linux

Джейсон Доненфилд (Jason A. Donenfeld), автор VPN WireGuard, представил патчи, значительно ускоряющие получение случайных чисел от системы через функцию getrandom (), реализованную через соответствующий системный вызов Linux. Преимуществом такого решения по сравнению с использованием /dev/random или /dev/urandom является неподверженность атакам на исчерпание файловых дескрипторов, которые могут привести к неинициализированным и неслучайным криптографическим ключам.

Предложенная оптимизация основана на использовании механизма vDSO (virtual dynamic shared object), дающего возможность перенести обработчик системного вызова из ядра в пространство пользователя и избежать переключений контекста. В случае с getrandom (), в виде vDSO оформлена реализация связанного с данной функцией системного вызова, код которой заранее загружается в адресное пространство процесса непосредственно ядром. Такой подход позволил ускорить получение случайных чисел в некоторых ситуациях в 15 раз и более.



Источник: http://www.opennet.ru/opennews/art.shtml? num=61494

OpenNet прочитано 1793 раза