CSPRNG
Generatore di numeri casuali il cui prossimo output non è prevedibile nemmeno da chi abbia visto tutti quelli precedenti.
Un normale PRNG come il Mersenne Twister è ottimo per le simulazioni e catastrofico per le chiavi: bastano poche centinaia di output per ricostruirne l'intero stato interno. Un CSPRNG deve inoltre offrire resistenza al backtracking: se lo stato trapela, gli output passati restano segreti.
Si usa quello del sistema operativo: getrandom(2), /dev/urandom, BCryptGenRandom, crypto.getRandomValues(). Mai scriverne uno proprio e mai inizializzarlo con un timestamp: è esattamente il modo in cui, tra il 2006 e il 2008, le chiavi OpenSSL di Debian diventarono indovinabili.