Jason A. Donenfeld, de auteur van VPN WireGuard, heeft patches gepresenteerd die de snelheid van het verkrijgen van willekeurige getallen van het systeem via de functie getrandom() aanzienlijk verhogen, geïmplementeerd via de bijbehorende systeemoproep in Linux. Het voordeel van deze oplossing in vergelijking met het gebruik van /dev/random of /dev/urandom is de weerstand tegen aanvallen die gericht zijn op het uitputten van bestandsdescriptoren, wat kan leiden tot niet-geïnitialiseerde en niet-willekeurige cryptografische sleutels.
De voorgestelde optimalisatie is gebaseerd op het gebruik van het vDSO (virtual dynamic shared object) mechanisme, dat de mogelijkheid biedt om de systeemoproepverwerker van de kernel naar de gebruikersruimte te verplaatsen en contextwisselingen te vermijden. In het geval van getrandom() is de implementatie van de bijbehorende systeemoproep vormgegeven in de vDSO, waarvan de code voorafgaand aan de uitvoering door de kernel in de adressruimte van het proces wordt geladen. Deze benadering heeft het verkrijgen van willekeurige getallen in bepaalde situaties tot 15 keer en meer versneld.
Bron: opennet.ru
