L'origine non è specificata nello standard, rendendola dipendente dall'implementazione.
In base a RFC 5246 § 7.4.1.2 per TLS 1.2, la casualità è descritta solo come :
28 bytes generated by a secure random number generator.
Questo significa che sarà interamente dipendente dall'implementazione. È possibile utilizzare qualsiasi funzione che generi dati casuali sicuri. Per molti browser moderni, l'implementazione implica la richiesta di un seed casuale dal sistema operativo (ad esempio, utilizzando /dev/urandom
su Linux), e quindi l'utilizzo di questo per alimentare un generatore di numeri casuali crittograficamente sicuro in-process.
Ciò che in realtà costituisce "numeri casuali sicuri" è specificato in BCP 106 , un documento che fornisce consigli per la generazione di numeri casuali , la fonte dei numeri casuali, come testare i numeri casuali, ecc. Si tratta semplicemente di una dichiarazione delle migliori pratiche e non è obbligatoria. Tuttavia, i sistemi operativi comuni tendono a seguire queste pratiche quando raccolgono numeri casuali che vengono esportati in applicazioni dello spazio utente, come i browser Web.