Jason A. Donenfeld, autore della VPN WireGuard, ha presentato delle patch che accelerano significativamente la generazione di numeri casuali dal sistema attraverso la funzione getrandom(), implementata tramite la relativa chiamata di sistema di Linux. Il vantaggio di questa soluzione rispetto all'uso 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'uso del meccanismo vDSO (virtual dynamic shared object), che consente di spostare il gestore della chiamata di sistema dallo kernel allo spazio utente, evitando così i cambi di contesto. Nel caso di getrandom(), è stata realizzata un'implementazione della chiamata di sistema associata a questa funzione in forma di vDSO, il cui codice viene caricato in anticipo nello spazio indirizzi del processo direttamente dal kernel. Questo approccio ha permesso di accelerare l'ottenimento di numeri casuali in alcune situazioni fino a 15 volte o più.
Fonte: opennet.ru
