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

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

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

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

Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри 🔥 Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри | ProHoster