Generatore di numeri casuali
Generare numeri casuali all'interno di un intervallo specificato per campionamento statistico e simulazioni.
Generare numeri casuali
Tabella dei contenuti
Tipi di generatori di numeri casuali
I generatori di numeri casuali (RNG) sono componenti fondamentali in vari campi, dalla crittografia e dalla sicurezza alle simulazioni scientifiche e al gioco. Comprendere i diversi tipi e le loro caratteristiche è fondamentale per selezionare il metodo appropriato per le vostre esigenze specifiche.
Generatori di numeri casuali veri (TRNG)
True Random Number Generators deriva casualità da processi fisici intrinsecamente imprevedibili. Questi generatori producono sequenze che sono teoricamente impossibili da prevedere, anche con completa conoscenza dell'algoritmo generante e dei valori precedenti.
Fonti di Entropia Fisica
- Rumore atmosferico
- Decadimento radioattivo
- Rumore termico
- fenomeni quantici (foton splitting)
- Rumore elettronico e comportamento dei circuiti
Tipi di implementazione TRNG
- Generatori di numeri casuali hardware
- Generatori di numeri casuali quantistici (QRNGs)
- Generatori a base di rumore
- Generatori oscillatori free-running
- Generatori basati sul caos
I TRNG sono essenziali per applicazioni che richiedono il più alto livello di sicurezza e imprevedibilità, come la generazione di chiavi crittografiche, comunicazioni sicure e sistemi di gioco ad alto consumo. Tuttavia, in genere hanno tassi di generazione più lenti e possono essere più costosi da implementare.
- fonte di rumore (prove entropia)
- Digitizer (convertisce i segnali analogici al digitale)
- Condizionatore/estrattore (migliora la qualità casualità)
- Test di salute (verificare il corretto funzionamento)
Generatori di numeri Pseudorandom (PRNG)
Pseudorandom Number Generators utilizzare algoritmi deterministici per generare sequenze di numeri che appaiono casuali. Anche se non veramente casuale, sono progettati per passare vari test statistici per casualità e sono adatti per molte applicazioni.
PRNG comuni Tipi
- Generatori congruenziali lineari (LCGs)
- Mersenne Twister
- Generatori Xorshift
- Generatori multiply-with-carry
- WELL (Be-Equidistributed Long-period Linear) generatori
PRNG caratteristiche
- Deterministico (stesso seme produce la stessa sequenza)
- Periodico (per poi ripetere dopo qualche periodo)
- Generazione veloce ed efficiente
- Risultati facilmente riproducibili
- Adatto per simulazioni e applicazioni non di sicurezza
PRNG Cryptographically Secure (CSPRNGs)
Crittograficamente sicuro Pseudorandom Generatori di numeri sono una classe speciale di PRNG progettati per resistere alla previsione. Sono adatti per applicazioni di sicurezza-critiche, ma funzionano ancora deterministicamente.
CSPRNG Esempi
- Generatore Blum-Blum-Shub (BBS)
- Generatore RSA/Rabin
- algoritmo Fortuna
- HMAC-DRBG
- Generatori basati su ChaCha20
- Generatori di modalità AES-CTR
CSPRNG Proprietà di sicurezza
- Segreto in avanti (emissione di polveri protette)
- Segreteria di retromarcia (protette uscite di carburante)
- Resiste al compromesso di stato
- Sulla base di difficili problemi computazionali
- Passa tutti i test statistici a tempo polinomiale
Test di casualità e convalida
Testare la qualità dei generatori di numeri casuali è fondamentale per garantire che soddisfino i requisiti per le loro applicazioni previste. Sono disponibili diverse suite di test standardizzate:
- Batteria Diehard dei Test
- Suite di prova statistica NIST (SP 800-22)
- Suite TestU01
- Chi-Square Test
- Test di frequenza (Monobit Test)
- Prova di esecuzione
- Correlazione seriale Test
- Kolmogorov-Smirnov Test
- Spacing di compleanno Test
Approfondimenti ibridi
Per ottenere risultati ottimali nelle applicazioni di sicurezza, gli approcci ibridi che combinano più tipi di generatori di numeri casuali sono spesso impiegati:
- Utilizzando un TRNG per generare semi per un CSPRNG
- Piscine Entropy che raccolgono casualità da fonti multiple
- Post-elaborazione dell'output TRNG mediante funzioni crittografiche di hash
- Combinando uscite da più generatori indipendenti
Migliori Pratiche per applicazioni critiche
- Utilizzare un TRNG per generare entropia iniziale (seme)
- Elaborare l'entropia attraverso un CSPRNG per migliori proprietà statistiche
- Utilizzare algoritmi e implementazioni consolidate e ben riviste
- Monitorare costantemente la qualità della salute e dell'output del RNG
- Applicare crittografica post-elaborazione (hashing) quando appropriato
- Adeguato alle norme pertinenti (NIST SP 800-90A/B/C, BSI AIS 20/31)
Quali sono i numeri casuali?
I numeri casuali sono numeri che si verificano in una sequenza tale da soddisfare due condizioni:
- I valori sono distribuiti uniformemente su un intervallo definito
- È impossibile prevedere valori futuri basati su quelli passati o attuali
- Ogni numero ha una probabilità uguale di essere selezionato
- La sequenza è statisticamente indipendente
Applicazioni
Sampling statistico
Selezione di campioni casuali da popolazioni per analisi statistiche.
Simulazioni
Creazione di scenari casuali per simulazioni Monte Carlo.
Criptografia
Generare chiavi di crittografia e proteggere valori casuali.
Gioco
Creazione di risultati casuali in giochi e lotterie.
Generazione di numeri casuali
Il nostro generatore di numeri casuali utilizza un algoritmo crittografico sicuro per generare numeri veramente casuali:
- Distribuzione uniforme nell'intervallo specificato
- Cryptographicly sicuro generazione di numeri casuali
- Supporto per numeri interi e decimali
- Numero di punti decimali personalizzabili
Esempi
Esempio 1Numeri Integer
Gamma: da 1 a 10
Conte: 5
Luoghi decisi: 0
3, 7, 1, 9, 4
interi casuali tra 1 e 10
Esempio 2Numeri decimali
Gamma: da 0 a 1
Conte: 3
Luoghi decisi: 2
0.42, 0.87, 0.15
decimali casuali tra 0 e 1
Esempio 3Gamma personalizzata
Gamma: da -100 a 100
Conte: 4
Luoghi decisi: 1
-45.2, 78.9, -12.4, 56.7
Numeri casuali tra -100 e 100