Jason Donenfeld, autore del VPN WireGuard, ha presentato patch che accelerano notevolmente l'ottenimento di numeri casuali dal sistema tramite la funzione getrandom(), implementata tramite la corrispondente chiamata di sistema Linux. Il vantaggio di tale soluzione rispetto all'utilizzo di /dev/random o /dev/urandom è la resistenza agli attacchi di esaurimento dei descrittori di file, che possono portare a chiavi crittografiche non inizializzate e non casuali.
L'ottimizzazione proposta si basa sull'utilizzo del meccanismo vDSO (virtual dynamic shared object), che consente di spostare il gestore della chiamata di sistema dal kernel allo spazio utente ed evitare cambi di contesto. Nel caso di getrandom(), è stata decorata una realizzazione di chiamata di sistema associata a questa funzione in forma di vDSO, il cui codice viene caricato in anticipo nello spazio di indirizzamento del processo direttamente dal kernel. Questo approccio ha permesso di accelerare l'ottenimento di numeri casuali in alcune situazioni fino a 15 volte e oltre.
Fonte: opennet.ru
