Cryptology Academy · Lezione

Casualità vera e pseudocasualità

Distingua le fonti hardware di entropia dai PRNG software.

Lezione 1 di 413 passaggi

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.

Gratis per iniziare

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

  1. Casualità vera e pseudocasualità
  2. PRNG crittograficamente sicuri
  3. Esaurimento dell'entropia e bug delle chiavi deboli
  4. Generazione sicura di chiavi, nonce e IV
← Torna a Cryptology Academy