Casualità vera e pseudocasualità
Distingua le fonti hardware di entropia dai PRNG software.
Casualità vera e pseudocasualità è una lezione Cryptology Academy gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Cryptology Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Cryptology Academy include 4 lezioni in totale.
Perché la casualità è importante
La sicurezza crittografica dipende in modo fondamentale dall'imprevedibilità. Se un attaccante può prevedere la propria chiave, il proprio IV o il proprio nonce, anche solo parzialmente, l'intero sistema crittografico può crollare. Una casualità debole ha causato compromissioni catastrofiche nel mondo reale.
Generatori di numeri casuali veri (TRNG)
I TRNG raccolgono entropia fisica: rumore termico nei resistori, rumore di shot nei diodi polarizzati inversamente, decadimento radioattivo, movimenti del mouse, intervalli tra le pressioni dei tasti e latenze di ricerca del disco. Si tratta di fenomeni fisici realmente imprevedibili.
Pool di entropia
Il sistema operativo mantiene un pool di entropia, cioè una raccolta di campioni di rumore fisico sottoposti a XOR e hashing. Linux: /dev/random e /dev/urandom attingono a questo pool. Il pool viene alimentato continuamente durante il funzionamento del sistema.
Generatori di numeri pseudocasuali (PRNG)
Un PRNG (chiamato anche RNG deterministico / DRNG) espande un seed breve in un lungo flusso di byte pseudocasuali usando un algoritmo deterministico. Dato lo stesso seed, produce lo stesso output. Non è adatto alla crittografia se non viene inizializzato con entropia vera.
PRNG a confronto con CSPRNG
Un PRNG può presentare una distorsione statistica rilevabile o essere prevedibile a partire dall'output osservato. Un generatore pseudocasuale crittograficamente sicuro (CSPRNG) aggiunge: (1) sicurezza in avanti (l'output passato non è prevedibile dallo stato attuale) e (2) resistenza al backtracking (l'output futuro non è prevedibile da quello passato).
Test del distinguitore
Un PRNG è crittograficamente sicuro se nessun algoritmo in tempo polinomiale può distinguere il suo output da una sequenza veramente casuale con probabilità significativamente superiore a 1/2. Questo è il criterio dell'imprevedibilità del bit successivo.
Fonti di entropia su piattaforme diverse
Linux: /dev/urandom (non bloccante dopo l'inizializzazione iniziale del seed), chiamata di sistema getrandom(). Windows: CryptGenRandom(), BCryptGenRandom(). macOS/iOS: SecRandomCopyBytes(). Browser: window.crypto.getRandomValues(). Tutte alimentano il pool di entropia del sistema operativo.
Test statistici
NIST SP 800-22 fornisce 15 test statistici della casualità: frequenza, frequenza dei blocchi, run, test universale di Maurer, complessità lineare e altri. Il superamento dei test statistici non dimostra la sicurezza crittografica, ma solo l'assenza di distorsioni evidenti.
Qualità del seed
Un CSPRNG inizializzato con entropia debole, ad esempio l'ora corrente in secondi, è prevedibile. Un attaccante che conosce il seed può ricostruire l'intero output. Inizializzi sempre dall'entropia del sistema operativo: os.urandom(32) in Python, non time.time() o random.random().
Generatori hardware di numeri casuali
Intel RDRAND (istruzione x86) restituisce byte casuali generati dall'hardware di un TRNG integrato nel chip. Esistono hardware equivalenti per AMD e ARM. Linux combina RDRAND in /dev/urandom. Viene usato come entropia supplementare, non come unica fonte, a causa di problemi di fiducia.
Generatori quantistici di numeri casuali
I QRNG usano fenomeni della meccanica quantistica, come i tempi di arrivo dei fotoni e le fluttuazioni del vuoto, per produrre output dimostrabilmente casuali. I QRNG commerciali (ID Quantique, Quantis) vengono usati in applicazioni ad alta sicurezza. Il costo è proibitivo per l'uso generale.
Verifica rapida
Quale proprietà distingue un CSPRNG da un normale PRNG?
Riepilogo
I TRNG raccolgono entropia fisica; i PRNG espandono un seed in modo deterministico; i CSPRNG sono indistinguibili dalla casualità vera. I pool di entropia del sistema operativo combinano entrambe le fonti. Prossimo argomento: specifiche progettazioni di CSPRNG usate nella pratica.
Impara Cryptology Academy con un tutor IA — gratis
Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.
- Corsi
- 67
- Lezioni
- 261
Domande Frequenti
La lezione «Casualità vera e pseudocasualità» è gratuita?
Sì — il testo completo di «Casualità vera e pseudocasualità» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Cryptology Academy, passa a CoddyKit PRO. Il corso Cryptology Academy include 4 lezioni in totale.
Cosa imparerò in «Casualità vera e pseudocasualità»?
Distingua le fonti hardware di entropia dai PRNG software. Eserciti Cryptology Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Cryptology Academy?
Non è richiesta alcuna esperienza precedente. Cryptology Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.
Quanto tempo richiede la lezione «Casualità vera e pseudocasualità»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Cryptology Academy?
Sì. Ogni lezione Cryptology Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Casualità vera e pseudocasualità
- PRNG crittograficamente sicuri
- Esaurimento dell'entropia e bug delle chiavi deboli
- Generazione sicura di chiavi, nonce e IV