Programista Wireguard znacznie przyspieszył wywołanie getrandom() w Linuksie

Jason A. Donenfeld, autor VPN WireGuard, zaprezentował poprawki, które znacznie przyspieszają uzyskiwanie liczb losowych z systemu za pomocą funkcji getrandom(), wdrożonej poprzez odpowiednie wywołanie systemowe Linux. Zaletą tego rozwiązania w porównaniu do użycia \/dev\/random lub \/dev\/urandom jest odporność na ataki związane z wyczerpywaniem deskryptorów plików, które mogą prowadzić do niezainicjowanych i nieprzypadkowych kluczy kryptograficznych.

Proponowana optymalizacja opiera się na wykorzystaniu mechanizmu vDSO (virtual dynamic shared object), który umożliwia przeniesienie obsługi wywołania systemowego z jądra do przestrzeni użytkownika, eliminując przełączanie kontekstów. W przypadku getrandom(), implementacja powiązanego z tą funkcją wywołania systemowego jest zdefiniowana jako vDSO, a kod jest wcześniej ładowany do przestrzeni adresowej procesu bezpośrednio przez jądro. Takie podejście pozwoliło przyspieszyć uzyskiwanie liczb losowych w niektórych sytuacjach nawet 15-krotnie lub więcej.

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster