I valori casuali sono cruciali nella programmazione per lo sviluppo di sistemi sicuri che non sono vulnerabili a dannose sovversioni. La crittografia, per esempio, si basa su valori di generazione casuali e la loro riproducibilità in uscita è imprevedibile. I valori casuali giocano inoltre un ruolo fondamentale in molte applicazioni sicure PHP, in molte librerie e framework, sali e come input per altre funzioni.
Un generatore di numeri casuali è un algoritmo che genera una sequenza di numeri apparentemente casuali. Il valore di input per l’inizializzazione di un tale algoritmo è noto come lo è il suo stato iniziale, o il suo seme. Il seme può essere un valore casuale di dati o un valore noto.
In questo articolo si spiega una panoramica di quali valori casuali sono utilizzati e perché sono importanti, così come una sbirciatina sotto il cofano di come vengono generati
Alcuni degli usi per valori casuali sono:
- Generazione di sali per la crittografia – Un sale è un valore casuale che viene utilizzato come input per una funzione di cifratura, di solito è una funzione unidirezionale, per le password hashing. Questi dati casuali vengono indicati come i vettori d’inizializzazione per la cifratura.
- Generazione di identificatori unici quali gli ID di sessione – PHP è utilizzato per lo sviluppo di molte grandi applicazioni web che richiedono sicurezza e persistenza per gli utenti. PHP consente di creare applicazioni personalizzate e siti web più attraenti con il suo supporto di sessione che, attraverso l’uso di ID di sessione, fornisce un modo per mantenere o conservare certi dati per la successiva richiesta.
- Generazioni difficili da indovinare per le autorizzazioni tokens/nonces – Molte applicazioni in PHP sono tenuti ad effettuare le chiamate API per altre applicazioni e sistemi. Tali chiamate spesso richiede l’uso di token per le autorizzazioni invece di inviare le credenziali dell’utente in rete. Utilizzando token difficili da indovinare è quindi molto importante, e valori casuali hanno un ruolo nella generazione di questi token per garantire la sicurezza.
- Generatore lineare congruenziale (LCG), utilizzato quando si chiama la funzione
lcg_value()
function.-In matematica generatore lineare congruenziale è un algoritmo per la generazione di numeri pseudo-casuali vecchio e molto conosciuto.- - L’algoritmo Mersenne Twister, più comunemente usato e viene utilizzato quando è chiamato la funzione
mt_rand()
.-È un algoritmo che genera un ottimo insieme di numeri pseudocasuali, supplendo a varie mancanze presenti negli altri algoritmi per generare numeri pseudocasuali oggi diffusi e usati- - La funzione
rand()
function se la funzione C è localmente supportata.
Questi algoritmi non generano numeri casuali reali, ma i numeri che sono distribuiti in modo che si approssima ai numeri casuali reali. L’algoritmo è seminato con un valore casuale per la generazione della sequenza pseudocasuale.ce.
In PHP, i dati casuali per seminare il generatore di numeri casuali può essere ottenuta in due modi. Un modo è usare la funzione
mt_srand()
per impostare manualmente il seme. Questo modo è utilizzato principalmente in sistemi legacy, o unità di test apparentemente casuale. Il secondo modo di ottenere il seme è quello di lasciare a PHPdi generarlo automaticamente. Questo è il modo preferito e utilizzato soprattutto nelle versioni più recenti di PHP (4.2 e oltre). Un algoritmo reinizializza il seme in modo che lo stesso seme non venga utilizzato più e più volte quando viene utilizzatol’algoritmo Mersenne Twister.
mcrypt_create_iv()
o openssl_pseudo_random_bytes()
. Windows fornisce un generatore pseudo-casuale crittograficamente sicuro ed è possibile accedere utilizzando le estensioni che forniscono le funzioni openssl_pseudo_random_bytes()
e mcrypt_create_iv()
.
Ancora nessun commento