Jason Donenfeld, autor VPN-a WireGuard, predstavio je zakrpe koje značajno ubrzavaju dobivanje nasumičnih brojeva od sustava putem funkcije getrandom(), implementirane preko odgovarajućeg sistemskog poziva Linuxa. Prednost ovog rješenja u odnosu na korištenje /dev/random ili /dev/urandom je otpornost na napade na iscrpljenje datotečnih deskriptora, koji mogu dovesti do neinicijaliziranih i neslučajnih kriptografskih ključeva.
Predložena optimizacija temelji se na korištenju mehanizma vDSO (virtual dynamic shared object), što omogućava premještanje obrade sistemskog poziva iz jezgre u korisnički prostor i izbjegavanje prebacivanja konteksta. U slučaju getrandom(), implementacija povezanog sistemskog poziva oblikovana je kao vDSO, a njen kod unaprijed učitava jezgra u adresni prostor procesa. Ovaj pristup je omogućio ubrzanje dobivanja nasumičnih brojeva u nekim situacijama do 15 puta i više.
Izvor: opennet.ru
