

















Studia grazie alle numerose risorse presenti su Docsity
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Prepara i tuoi esami
Studia grazie alle numerose risorse presenti su Docsity
Prepara i tuoi esami con i documenti condivisi da studenti come te su Docsity
Trova i documenti specifici per gli esami della tua università
Preparati con lezioni e prove svolte basate sui programmi universitari!
Rispondi a reali domande d’esame e scopri la tua preparazione
Riassumi i tuoi documenti, fagli domande, convertili in quiz e mappe concettuali
Studia con prove svolte, tesine e consigli utili
Togliti ogni dubbio leggendo le risposte alle domande fatte da altri studenti come te
Esplora i documenti più scaricati per gli argomenti di studio più popolari
Ottieni i punti per scaricare
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Un'introduzione completa alla crittografia, coprendo concetti chiave come il cifrario simmetrico, il cifrario affine, il cifrario monoalfabetico, aes, la distribuzione delle chiavi, i generatori di numeri pseudocasuali, i numeri primi e la crittografia a chiave pubblica rsa. I diversi tipi di cifratura, i loro vantaggi e svantaggi, e fornisce esempi pratici per illustrare i concetti chiave.
Tipologia: Sintesi del corso
1 / 25
Questa pagina non è visibile nell’anteprima
Non perderti parti importanti!


















Ad oggi non esiste un sistema sicura al 100%, ci sarà sempre quell’anello debole che rende vulnerabile ed attaccabile il nostro sistema, quindi l’obiettivo è quello di renderlo il più sicuro possibile. Per sistema sicuro si intende un sistema che si comporta nel modo prestabilito che impedisce usi non autorizzati. In passato una delle vulnerabilità presenti nei sistemi erano le Blackdoor, cioè delle porte utilizzate per l’assistenza tecnica da parte del produttore dell’applicativo o del sistema ma non vi era la sicurezza assoluta che questa venisse usata solo per scopi “benevoli”. La information security si occupa della prevenzione degli attacchi sui sistemi information-based o, non riuscendovi, della loro rivelazione. I sistemi possono subire attacchi in due maniere diverse:
L’uso di questo modello richiede:
I sistemi di computer trusted (fidati) possono essere utili nell’implementazione di questo modello. L’uso di questo modello richiede:
Nota pure come cifratura convenzionale o a chiave privata o a chiave singola, sender e recipient condividono una chiave. Tutti gli algoritmi di cifratura classici sono simmetrici ed era l’unico tipo prima dell’invenzione del sistema a chiave pubblica negli anni ‘70. Questo tipo di cifratura utilizza un’unica chiave sia per crittografare sia per decifrare.
Per usare con sicurezza la criptazione simmetrica servono:
Processo effettuabile numericamente: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 Cifrario di Cesare in termini matematici: C = Ek (P) = (p + k)mod 26 P = Dk (C) = (ck)mod 26 Interi compresi tra 0 e 25, si usa l’aritmetica modulare.
Esistono soltanto 26 possibili chiavi (reali 25), per esempio A può essere mappato in A, B, C,.. ., Z ed possibile fare consecutivamente tutti i tentativi possibili; in sostanza per fare un attacco a forza bruta bisogna sapere riconoscere il plaintext (Molto difficile se si è fatto uno scrambling o una compressione).
Un cifrario a sostituzione in cui i due alfabeti plain e cipher sono sequenze shiftate dell’alfabeto normale è detto cifrario additivo o anche cifrario standard diretto c = ( p + k ) mod m m = lunghezza dell’alfabeto Se uno dei due alfabeti è scritto in ordine inverso il cifrario è detto cifrario standard inverso.
Un cifrario a sostituzione in cui i due alfabeti plain e cipher sono sequenze shiftate dell’alfabeto normale è detto cifrario additivo o anche cifrario standard diretto ma se uno dei due alfabeti è scritto in ordine inverso il cifrario è detto cifrario standard inverso.
Cifrari a sostituzione un pò più complessi dei semplici cifrari additivi c = (ap +b) mod m m = lunghezza dell’alfabeto Ci si può chiedere se l’algoritmo fornisca sempre valori di c distinti, infatti con a = 3, b = 8, m = 27 A(0) (30+8) mod 27 = 8 J(9) (39+8) mod 27 = 8 S(18) (318+8) mod 27 = 8 Si creano dei problemi se ogni volta a ed m hanno fattori in comune; se m è un multiplo di a vi saranno alcuni valori di p per cui ap è multiplo di m quindi i corrispondenti valori di ( ap + b ) mod m saranno uguali. L’algoritmo funziona se e solo se a ed m sono coprimi. Per decifrare il messaggio si prosegue come segue: p = a 1( c b ) mod m con a -1 inverso moltiplicativo di a in Zm. Cifrari affini non sono sicuri perché soggetti alla analisi frequenziale e perché - essendo basati sui due valori a e b - possono essere decifrati conoscendo due coppie plaintext-ciphertext. La chiave per un cifrario affine è costituita dai due numeri a e b.
Piuttosto che usare, per il ciphertext, un alfabeto un altro ricavato con uno shift o con un’operazione aritmetica lo si può ottenere con una permutazione arbitraria delle lettere. Anche in questo caso ogni lettera è mappata in una diversa e la chiave non è più uno o una coppia di numeri ma una sequenza di m lettere. La sicurezza dei cifrari monoalfabetici potrebbe dare l’idea di una grande sicurezza ma il problema nasce dalle caratteristiche dei linguaggi con un generico cifrario monoalfabetico si dispone di 26 chiavi diverse.
Tutte le lingue presentano delle ridondanze, per esempio in italiano dopo una q si presenta una u. In tutte le lingue le lettere hanno frequenze molto diverse. La frequenza in italiano della a è 11,4 seguita dalla e con lo 11,1 mentre la c ha frequenza 4,2 e la z ha frequenza 0,8. Quindi si dispone di frequenze delle lettere, dei digrammi e dei trigrammi per le varie lingue e quindi poter fare un attacco di criptoanalisi più facilmente.
Concetto di base: le sostituzioni monoalfabetiche non alterano le frequenze relative delle lettere e si calcolano le frequenze delle lettere nel ciphertext confrontando le frequenze/grafici con i valori noti. Per cifrario di Cesare si cercano i massimi ed i minimi e per i cifrari monoalfabetici si deve identificare ogni lettera aiutandosi anche dalle frequenze dei digrammi e trigrammi.
I cifrari monoalfabetici possono essere rotti con relativa facilità basandosi sulle frequenze dei caratteri, digrammi e trigrammi. Per ovviare il problema si potrebbe pensare di usare - per quanto riguarda i caratteri con frequenze più elevate - degli omofoni, ossia fornire più simboli cifrati per una stessa lettera. Si renderebbero le frequenze meno differenti ma anche così resterebbe il problema dei digrammi, trigrammi e così via.
Un sistema di criptografia in cui un gruppo di n lettere di plaintext è sostituito da un gruppo di n lettere di ciphertext è detto poligrafico. Vista l’importanza della determinazione della frequenza delle singole lettere nella criptoanalisi dei cifrari a sostituzione, un modo per mascherare la frequenza delle lettere è quello di usare come elemento base non una lettera ma un gruppo. Se n = 2 si parla di sistema digrafico avendo diversi modi per stabilire una relazione tra digrammi
Cifrario Playfair è un esempio di cifrario poligrafico, in particolare digrafico inventato da C. Wheatstone ma diffuso da Playfair, non è però un cifrario digrafico generale, poiché si basa sull’uso di una matrice 5 x 5 basata su una parola o frase chiave (keyword o keyphrase). Si inizia a riempire la matrice con la keyword evitando la ripetizione delle lettere, si riempie il resto della matrice con le lettere dell’alfabeto ancora non usate, poste nell’ordine naturale. Per esempio usando la keyword GLOUCESTER la matrice è la seguente G L O U C E S T R A B D F H I/J K M N P Q V W X Y Z Il plaintext viene scritto come coppie di lettere ed il processo di cifratura si compone delle fasi:
Il primo sistema a sostituzione polialfabetica fu proposto da L. B. Alberti nel XV secolo, che aumentano la sicurezza usando più alfabeti di cifratura rendendo la criptoanalisi più difficile con più alfabeti da indovinare e appiattiscono la distribuzione di frequenza; usano una chiave per selezionare l’alfabeto particolare usato per una lettera del messaggio e usano a rotazione tutti gli alfabeti. Dopo avere raggiunta la fine della chiave si riprende dal suo inizio.
Il più semplice cifrario polialfabetico a sostituzione, è una sorta di moltiplicazione del cifrario di Cesare la cui chiave è una serie di n lettere (distinte) dove l’i-esima lettera specifica l’i-esimo alfabeto da usare. Tutti gli n alfabeti vengono utilizzati a turno e dopo n lettere di plaintext si riprende dall’inizio. Il processo di decriptazione è l’esatto opposto della cifratura. Quadrato di Vigenère: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z Z A B C D E F G H I J K L M N O P Q R S T U V W X Y Y Z A B C D E F G H I J K L M N O P Q R S T U V W X X Y Z A B C D E F G H I J K L M N O P Q R S T U V W W X Y Z A B C D E F G H I J K L M N O P Q R S T U V V W X Y Z A B C D E F G H I J K L M N O P Q R S T U U V W X Y Z A B C D E F G H I J K L M N O P Q R S T T U V W X Y Z A B C D E F G H I J K L M N O P Q R S S T U V W X Y Z A B C D E F G H I J K L M N O P Q R R S T U V W X Y Z A B C D E F G H I J K L M N O P Q Q R S T U V W X Y Z A B C D E F G H I J K L M N O P P Q R S T U V W X Y Z A B C D E F G H I J K L M N O O P Q R S T U V W X Y Z A B C D E F G H I J K L M N N O P Q R S T U V W X Y Z A B C D E F G H I J K L M M N O P Q R S T U V W X Y Z A B C D E F G H I J K L L M N O P Q R S T U V W X Y Z A B C D E F G H I J K K L M N O P Q R S T U V W X Y Z A B C D E F G H I J J K L M N O P Q R S T U V W X Y Z A B C D E F G H I I J K L M N O P Q R S T U V W X Y Z A B C D E F G H H I J K L M N O P Q R S T U V W X Y Z A B C D E F G G H I J K L M N O P Q R S T U V W X Y Z A B C D E F F G H I J K L M N O P Q R S T U V W X Y Z A B C D E E F G H I J K L M N O P Q R S T U V W X Y Z A B C D D E F G H I J K L M N O P Q R S T U V W X Y Z A B C C D E F G H I J K L M N O P Q R S T U V W X Y Z A B B C D E F G H I J K L M N O P Q R S T U V W X Y Z A A B C D E F G H I J K L M N O P Q R S T U V W X Y Z . Per utilizzare Vigenère si deve scrivere il plaintext eliminando minuscole, spazi, etc, poi scrivere sopra il plaintext la keyword ripetuta e usare ciascuna lettera della keyword come una chiave del cifrario di Cesare e quindi cifrare le lettera corrispondente del plaintext, per esempio usando la keyword marcoantonio:
La sicurezza del cifrario di Vigenère sta nel fatto che per ciascun simbolo del plaintext se ne hanno diversi di cyphertext, la distribuzione di frequenza viene appiattita e per secoli è stato ritenuto le chiffre indéchiffrable. In realtà non del tutto, un’analisi delle frequenze consente di verificare se si è in presenza di un cifrario monoalfabetico, se no bisogna determinare la lunghezza della chiave che è legata al numero degli alfabeti. In altre parole, nota la lunghezza della chiave si possono raggruppare le lettere corrispondenti alla stessa posizione della chiave e considerare che sono state cifrate con un mono-alfabeto. Per determinare la keylength esistono due metodi:
Una volta determinato il valore della keylength, si spezza il messaggio in tante parti tutte con lunghezza keylength e si riuniscono tra loro tutte le lettere aventi la stessa posizione nella parte lunga keylength. Queste lettere è come se fossero state cifrate con lo stesso cypher monoafabetico e quindi si possono risolvere con i metodi dei cypher monoalfabetici.
Una distribuzione monoalfabetica presenta una variazione tra le frequenze delle singole lettere, maggiore rispetto a quella corrispondente ad un messaggio polialfabetico. Se tutte le lettere avessero la stessa frequenza la loro probabilità di occorrenza sarebbe 1/26 0,038 però in un testo reale le frequenze sono diverse e quindi la misura della roughness sarà R = 0, in pratica sarà compresa tra 0 e un valore massimo la cui variazione è sufficiente per distinguere tra monoalfabeti e polialfabeti. Dalle frequenze delle lettere degli alfabeti si ha:
Cyphertext: IIFEESOETAATNEOREIOZOTEZRIRNOTNT AREIINIIIZCIMOSALIODABETGNURDARN
Per facilitare l’uso della chiave, invece di usare una sequenza numerica, si può usare una keyword. Per esempio: SORCERER C è alfabeticamente la prima lettera ed è presa come 1 E ed E sono numerate 2 e 3 da sinistra a destra O è numerata 4 R, R ed R sono numerate 5, 6 e 7 da sinistra a destra S è numerata 8 La chiave numerica corrispondente è: S O R C E R E R 8 4 5 1 2 6 3 7
Il plaintext è scritto riga per riga in una matrice l x k e viene letto in un ordine prestabilito 71 32 21 41 3 69 15 57 26 70 30 2 11 48 67 55 56 38 60 22 43 23 46 8 19 54 25 50 12 51 45 49 9 64 27 34 40 52 1 6 66 68 17 59 39 20 72 62 53 33 44 24 28 37 63 10 47 4 5 65 14 16 35 42 31 61 13 7 18 58 29 36 Il cyphertext viene letto seguendo l’ordine dei box numerati.
Cifrari noti pure come Trellis ciphers: serve un insieme di griglie opportunamente predisposte, che vengono usate in un ordine convenuto. La griglia ruotante (turning grille) può avere 2 o 4 posizioni.
Una griglia ruotante è un aiuto meccanico per la generazione di una trasposizione complessa. Un quadrante di un gruppo di 4 scacchiere quadrate con 2v, righe e colonne è marcato con numeri che vanno da 1 a v2. Si ruota questo quadrante per riempire i tre quadranti rimanenti, quindi si seleziona per ogni numero una posizione della griglia ruotata e si taglia la finestra corrispondente. Ora si possono scrivere i primi caratteri del plaintext nelle finestre tagliate, quindi si ruota la griglia di 90° e si scrivono altri caratteri ripetendo la rotazione altre
due volte. È possibile costruire delle griglie ruotanti secondo una un key pattern che elenca una sequenza di posizioni di griglia. Cifrario usato a livello tattico nella IWW.
A ogni gruppo si applica la stessa permutazione la cui chiave è rappresentata come una permutazione dei primi d interi, il messaggio è diviso in blocchi di lunghezza d. Ad esempio, per d = 6 si può avere la trasposizione 3 5 1 6 4 2. Allora: m1 m2 m3 m4 m5 m6 m7 m8 m9 m10 m11 m m3 m5 m1 m6 m4 m2 m9 m11 m7 m12 m10 m
Cifrari che usano sostituzioni o trasposizioni non sicuri a causa delle caratteristiche del linguaggio. Si considera quindi l’uso consecutivo di più cifrari per ottenere maggiore sicurezza, ma 2 sostituzioni equivalgono ad una sostituzione più complessa mentre 2 trasposizioni equivalgono ad una trasposizione più complessa. Una sostituzione seguita da una trasposizione dà luogo ad un cifrario molto più forte. Questo fu il punto di svolta fondamentale tra criptografia antica e moderna.
Schemi criptografici complessi richiedono tempo di criptazione, quindi in passato si è pensato di poterli implementare usando macchine rotanti. In questo caso è possibile realizzare una data sostituzione con P contatti elettrici, ed è possibile usare uno switchboard che rende possibile collegare gli N morsetti d’ingresso per i caratteri del plaintext agli N morsetti d’uscita per i caratteri del ciphertext. Possibile ottenere una famiglia di alfabeti cambiando meccanicamente le connessioni tramite un rotore con contatti elettrici azionato da un motore elettrico a passo angolare costante. Usando due rotori, se un giro completo del primo di essi provoca lo spostamento di un passo angolare del successivo, si realizza un cifrario polialfabetico con 26 x 26 = 676 alfabeti. Dopo l’ingresso di un carattere, il rotore ruota di un passo cambiando l’alfabeto, e dopo un numero fissato di caratteri, tipicamente 26, il rotore ritorna nella posizione iniziale, usando quindi 26 alfabeti diversi. In sostanza un sistema con un grande numero di alfabeti. La violazione delle macchine a rotore avvenne utilizzando Colossus che indicava come ruotare i rotori e di conseguenza indicare il metodo per decifrare i messaggi. Il punto debole di questo sistema è utilizzare, nel messaggio dove venivano specificate le posizioni dei vari rotori, sempre la stessa chiave più volte per più giorni.
Il cifrario a blocchi sono degli algoritmi crittografici usati molto più largamente e sono degli algoritmi spesso usati fornire servizi di confidenzialità e autenticazione. Questi cifrari non sono basati su algoritmi a sostituzione o permutazione ma si basano su due teorie:
Queste operazioni sono strutturate in questo modo per poter garantire i concetti di confusione e diffusione.
Nel caso del DES sono 8 box formate da sei ingressi e otto uscite e si avrà una tabella diversa per ognuna delle otto S- Box. Il primo e l’ultimo bit sono usati per scegliere la riga e i quattro bit interni per selezionare i valori di output. Per esempio con un input 0 1100 1 la coppia 01 indica la seconda riga e il gruppo 1100 (12D) seleziona il dodicesimo elemento, cioè 9.
Questo processo permette di generare una sottochiave a 48 bit in alcuni passaggi:
È un effetto che dato un cambiamento di un singolo bit della chiave in input, cambia circa la metà dei bit in output; in questo caso i tentativi di decriptazione risultano pressoché impossibili. Il DES presenta un fortissimo effetto valanca.
Le chiavi del DES sono chiavi a 56 bit e hanno 2^56 = 7.2 x 10^16 valori, quindi gli attacchi a forza bruta sono abbastanza difficili ma non impossibili infatti si cerca di trovare metodi alternativi più forti per rafforzare il DES. Oggi esistono diversi attacchi analitici che possono essere fatti al DES infatti utilizzando la struttura profonda del DES si possono acquisire informazioni circa le encryption, si possono ricavare alcuni o tutti i bit della subkey e se serve può anche essere fatta una ricerca esaustiva per ricavare il resto. Generalmente questi sono attacchi statici e sono del tipo:
In altre parole questo sviluppa un attacco criptando ripetutamente delle coppie di plaintext con XOR di input noto fino ad ottenere lo XOR in uscita desiderato, quando viene trovato: Se i round intermedi si adattano allo XOR richiesto si una coppia buona; Altrimenti sia una coppia sbagliata, il rapporto relativo è l’S/N (parte corretta/parte errata) per l’attacco. Possibile dedurre allora i valori delle chiavi per i round: Le coppie buone suggeriscono gli stessi bit di chiave; Le coppie sbagliate danno valori casuali.
L’AES è un cifrario simmetrico a blocchi con chiave privata, il blocco dati è da 128 bit e le chiavi possono essere da 128, 192, 256 bit ed è più veloce e robusto del Triplo DES. Una delle caratteristiche dell’AES è che può essere implementato sia via software sia via hardware e con questo tipo di crittografia si abbandona l’approccio di Feistel introducendo l’approccio di Rijndael. L’AES elabora i dati con blocchi, chiamati State (Blocchi), di 4 word da 4 byte l’una ed in ogni stadio si opera sull’intero blocco dei dati. L’obiettivo è quello di avere un sistema resistente a tutti gli attacchi conosciuti finora, di riuscire ad avere velocità e compattezza di codice in modo da avere un basso impatto computazionale sulle CPU più diffuse ed essere semplice concettualmente.
L’algoritmo si sviluppa in dieci round in cui vengono eseguite le stesse operazioni. Prima di iniziare il primo round si applica l’operazione di add round key per poi passare al primo round in cui si applicano quattro operazioni:
DES il cui punto debole era la chiave da 56 bit. Si pensò che applicare due volte il DES portasse ad avere una chiave da 112 bit e a prima vista poteva essere un’ottima soluzione ma in realtà il DES avendo 2^56 possibili chiavi, il 2-DES aveva (2^64 )!>1010^20^ e quindi poteva sembrare un algoritmo più robusto. Per il Meet-in-the-Middle Attack , un attacco a forza bruta, il 2-DES era violabile. Questo attacco riduce il tempo necessario per rompere il cipher mirando a trovare le due chiavi. Il suo funzionamento è abbastanza semplice: si suppone di conoscere almeno una coppia di plaintext e ciphertext e, sapendo che il 2-DES è un DES applicato due volte in cascata, per violarlo si potrebbe utilizzare lo stesso metodo che si usa per violare il DES: da sinistra a destra si usano le chiavi per cifrare il blocco del plaintext e da destra a sinistra si usano le chiavi per decifrare il ciphertxt al fine di trovare il match tra la coppia di chiavi. Quando si trova il match è probabile che la coppia delle due chiavi è quella corretta. In altre parole con poco sforzo in più di quello richiesto per rompere il DES si può rompere anche il 2-DES.
Il Triple-DES nasce per aumentare la resistenza al Meet-in-the-Middle usando tre stadi di cifratura con tre chiavi infatti per violarlo servivano 2^118 tentativi e ciò lo rendeva più robusto rispetto al 2-DES ma il suo utilizzo rendeva il processo di cifratura abbastanza scomodo e pesante. Per rendere più leggero il processo di cifratura si pensò di utilizzare soltanto due chiavi abbandonando il 3-DES a tre chiavi; in questo modo il 3- DES non era più vulnerabile all’attacco Meet-in-the-middle e le operazioni di cifratura e decifratura rimanevano equivalenti del punto di vista della sicurezza. Ad oggi questo sistema è robusto tanto quanto l’AES e non vi sono attacchi noti ed efficaci per poterlo violare; purtroppo però questo sistema non è implementabile via hardware (come l’AES) per via delle sue operazioni più complesse e lente ma c’è anche da dire che nelle infrastrutture dove era presente il DES era abbastanza facile migrare verso il 3-DES.
I cifrari a blocchi criptano blocchi di lunghezza fissa illimitata (DES 56 bit) ma ovviamente non tutto il testo da cifrare/decifrare era sempre di lunghezza fissa quindi sorgeva il problema di cifrare/decifrare quantità arbitrarie di dati. Il NIST ha sviluppato cinque modi di funzionamento:
Nel caso in cui l’ultimo blocco non sia completo si aggiunge un possibile padding con valori non- data (ad esempio null ) noti oppure un possibile padding dell’ultimo blocco con un contatore che conta quanti sono i bit del padding stesso;
Viene cifrato un bit o un byte alla volta e per questo tipo di cipher serve una keystream random abbastanza lunga. Gli stream cipher al contrario dei block cipher sono molto più semplici e veloci e vengono spesso utilizzati per l’invio di dati nel web ma, d’altro lato, non sono sicura tanto quanto i cifrari a blocchi poiché usati molto spesso in ambiti realtime o quando si necessita di mantenere un’alta velocità di trasmissione. Il loro funzionamento è pressoché semplice, utilizzano un keystream generator che genera una chiave casuale la quale viene xorata con il flusso del messaggio. Esistono due tipi i keystream generator:
Per poter attaccare questo sistema si possono utilizzare diversi metodi, cioè spionaggio da altre workstation, un uso di linee commutate verso LAN o server per spiare ciò che avviene in quella infrastruttura, un uso di link e router esterni per entrare nei sistemi oppure effettuare un monitoraggio e/o una modifica del traffico sui link esterni. Questo tipo di cifratura può avvenire in due modi diversi:
La crittografia simmetrica richiede che entrambe le parti condividano una chiave segreta ma il problema si presenta nella distribuzione della chiave poiché questa deve essere inoltrata in tutta sicurezza infatti bisogna stare attenti ai frequenti crash di sistemi sicuri dovuti a un break nello schema di distribuzione delle chiavi.
I due host (ad esempio A e B) possono scegliere tra varie alternative inerenti la distribuzione della chiave, per esempio:
Le chiavi vengono usate per diversi scopi, è però pericoloso usarle in modo misto e bisogna distinguere i diversi tipi di chiave. Una tecnica diffusa per distinguere le chiavi fa uso di un’ etichetta detta tag degli ultimi 8 bit della chiave DES dove: un bit è usato per distinguere la session key dalla master key, un bit indica che la chiave può essere usata per cifrare qualcosa e un bit indica che la chiave può essere usata per decifrare qualcosa.
I numeri casuali sono frequentemente usati in crittografia ed è importante che questi siano statisticamente casuali (indipendenti con distribuzione uniforme) e non prevedibili in modo tale che nessuno possa inferire i valori futuri in base a quelli precedenti. La migliore fonte è la casualità naturale nel mondo reale, infatti si sceglie e si monitora un vero processo casuale ma per far ciò serve un hardware specializzato. Un grosso problema è quello derivante da bias , cioè la distribuzione non uniforme dei segnali per l'appunto bisogna compensare il bias in sede di campionamento (dalla fonte casuale scelta) e uso. La soluzione migliore è quella di usare pochi bit rumorosi per ciascun campione.
È una tecnica algoritmica per creare “numeri casuali” ma in realtà non sono numeri realmente casuali ma per essere considerati tali devono superare molti test di “randomicità”. Lehmer propose un algoritmo di tipo iterativo per creare dei numeri pseudocasuali che fa uso dei seguenti parametri: