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

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

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

Источник: opennet.ru

author avatar
ProHoster Консультант, Технический специалист
A technical specialist at ProHoster with over six years of experience in server administration, VPN solutions, and network security. I manage infrastructure setup and support, monitor service stability, and implement solutions to protect client data. I also contribute to performance optimization and compliance with modern security and privacy requirements.