Generatori di numeri pseudo-random. Giorgia Rossi Fabio Bottoni Giacomo Albanese



Documenti analoghi
Qwertyuiopasdfghjklzxcvbnmqwerty uiopasdfghjklzxcvbnmqwertyuiopasd fghjklzxcvbnmqwertyuiopasdfghjklzx cvbnmqwertyuiopasdfghjklzxcvbnmq

RC4 RC4. Davide Cerri. Davide Cerri CEFRIEL - Politecnico di Milano cerri@cefriel.it

4 3 4 = 4 x x x 10 0 aaa

Esercizio 1: trading on-line

Scheduling della CPU. Sistemi multiprocessori e real time Metodi di valutazione Esempi: Solaris 2 Windows 2000 Linux

APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI

Introduzione all analisi dei segnali digitali.

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo.

Un gioco con tre dadi

Test statistici di verifica di ipotesi

Strutturazione logica dei dati: i file

f(x) = 1 x. Il dominio di questa funzione è il sottoinsieme proprio di R dato da

Application note. CalBatt NomoStor per i sistemi di accumulo di energia

Random number generators

Fasi di creazione di un programma

Il campionamento. La digitalizzazione. Teoria e pratica. La rappresentazione digitale delle immagini. La rappresentazione digitale delle immagini

Logica Numerica Approfondimento 1. Minimo Comune Multiplo e Massimo Comun Divisore. Il concetto di multiplo e di divisore. Il Minimo Comune Multiplo

Excel. A cura di Luigi Labonia. luigi.lab@libero.it

Esercitazione 1 del corso di Statistica 2 Prof. Domenico Vistocco

1 Giochi a due, con informazione perfetta e somma zero

Calcolatori Elettronici A a.a. 2008/2009

Esempi di algoritmi. Lezione III

Primi esercizi per gli studenti del corso di Statistica ed Elementi di Probabilita

OSSERVAZIONI TEORICHE Lezione n. 4

Analisi di scenario File Nr. 10

Laboratorio di Pedagogia Sperimentale. Indice

la scienza della rappresentazione e della elaborazione dell informazione

TECNICHE DI SIMULAZIONE

Ing. Simone Giovannetti

Probabilità discreta

Prestazioni CPU Corso di Calcolatori Elettronici A 2007/2008 Sito Web: Prof. G. Quarella prof@quarella.

INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI

Le immagini digitali. Le immagini digitali. Caterina Balletti. Caterina Balletti. Immagini grafiche. Trattamento di immagini digitali.

I sistemi di numerazione

PROGRAMMA SVOLTO NELLA SESSIONE N.

Informatica grafica e Multimedialità. 4 Immagini grafiche

Più processori uguale più velocità?

Il concetto di valore medio in generale

Note su quicksort per ASD (DRAFT)

1. Distribuzioni campionarie

Aprire WEKA Explorer Caricare il file circletrain.arff Selezionare random split al 66% come modalità di test Selezionare J48 come classificatore e

Page 1. Evoluzione. Intelligenza Artificiale. Algoritmi Genetici. Evoluzione. Evoluzione: nomenclatura. Corrispondenze natura-calcolo

Cenni su algoritmi, diagrammi di flusso, strutture di controllo

Probabilità condizionata: p(a/b) che avvenga A, una volta accaduto B. Evento prodotto: Evento in cui si verifica sia A che B ; p(a&b) = p(a) x p(b/a)

13. Campi vettoriali

Calcolo del Valore Attuale Netto (VAN)

Un ripasso di aritmetica: Rappresentazione binaria - operazioni. riporti

Soluzione dell esercizio del 2 Febbraio 2004

risulta (x) = 1 se x < 0.

Introduzione. Classificazione di Flynn... 2 Macchine a pipeline... 3 Macchine vettoriali e Array Processor... 4 Macchine MIMD... 6

Architetture Applicative

ARCHITETTURA DI RETE FOLEGNANI ANDREA

Slide Cerbara parte1 5. Le distribuzioni teoriche

Elementi di Psicometria con Laboratorio di SPSS 1

GUIDA AL CALCOLO DEI COSTI DELLE ATTIVITA DI RICERCA DOCUMENTALE

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi.

1) Si consideri un esperimento che consiste nel lancio di 5 dadi. Lo spazio campionario:

CONCETTO DI LIMITE DI UNA FUNZIONE REALE

SISTEMI OPERATIVI. Prof. Enrico Terrone A. S: 2008/09

Introduzione agli Algoritmi Genetici Prof. Beatrice Lazzerini

Calcolo delle probabilità

Tecniche di Simulazione: Introduzione. N. Del Buono:

La distribuzione Normale. La distribuzione Normale

SISTEMI E RETI. Crittografia. Sistemi distribuiti e configurazione architetturale delle applicazioni WEB.

Lezione 8. La macchina universale

La candela accesa. Descrizione generale. Obiettivi. Sequenza didattica e metodo di lavoro. Esperimenti sulla crescita delle piante

Elementi di Psicometria con Laboratorio di SPSS 1

1.5. ISTOGRAMMA 17. Figura 1.3: Istogramma ottenuto mediante campionamento da VA Gaussiana (η x =0, σ 2 X =1).

la scienza della rappresentazione e della elaborazione dell informazione

MAGAZZINO FISCALE (agg. alla rel )

Codifiche a lunghezza variabile

Matematica in laboratorio

Dato il Mercato, è possibile individuare il valore e la duration del portafoglio:

Complemento al corso di Fondamenti di Informatica I corsi di laurea in ingegneria, settore dell informazione Università la Sapienza Consorzio Nettuno

Determinare la grandezza della sottorete

Iniziamo con un esercizio sul massimo comun divisore: Esercizio 1. Sia d = G.C.D.(a, b), allora:

Capitolo 2. Operazione di limite

ALGEBRA DELLE PROPOSIZIONI

LE FUNZIONI A DUE VARIABILI

Tavola riepilogativa degli insiemi numerici

I CIRCUITI ELETTRICI. Prima di tutto occorre mettersi d accordo anche sui nomi di alcune parti dei circuiti stessi.

Tasso di interesse e capitalizzazione

LA MASSIMIZZAZIONE DEL PROFITTO ATTRAVERSO LA FISSAZIONE DEL PREZZO IN FUNZIONE DELLE QUANTITÀ

Algoritmi e strutture dati. Codici di Huffman

ANALISI DELLE FREQUENZE: IL TEST CHI 2

Invio SMS. DM Board ICS Invio SMS

Informatica. Rappresentazione dei numeri Numerazione binaria

I giochi delle Gioc-Arte

Definire all'interno del codice un vettore di interi di dimensione DIM, es. int array[] = {1, 5, 2, 4, 8, 1, 1, 9, 11, 4, 12};

LA DISTRIBUZIONE DI PROBABILITÀ DEI RITORNI AZIONARI FUTURI SARÀ LA MEDESIMA DEL PASSATO?

Facciamo qualche precisazione

Statistica. Lezione 6

RETI DI CALCOLATORI. Crittografia. La crittografia

Ottimizzazione delle interrogazioni (parte I)

Corso di Matematica per la Chimica

Convertitori numerici in Excel

Gestione della memoria centrale

Osservazioni sulla continuità per le funzioni reali di variabile reale

VALORE DELLE MERCI SEQUESTRATE

ELABORAZIONE DI DATI TRIDIMENSIONALI - RELAZIONE HOMEWORK 2

Transcript:

Generatori di numeri pseudo-random Giorgia Rossi Fabio Bottoni Giacomo Albanese

Sommario 1) Introduzione ai generatori di numeri pseudocasuali (PRNG). 2) Il generatore Fortuna. 3) Approccio pratico: la realizzazione di un PRNG

Introduzione ai generatori di numeri pseudocasuali

Sommario Sequenze casuali PRNG Sicurezza, caratteristiche e problemi di un PRNG Possibili applicazioni di un PRNG Alcuni metodi di generazione deterministica Una classe particolare di PRNG: i CSPRNG Test statistici

Sequenze casuali Varie applicazioni crittografia simulazioni Generare sequenze veramente casuali è molto dispendioso, sono più comode quelle pseudo casuali.

Sequenze casuali Per quanto somiglianti a delle vere sequenze casuali, non si potrà mai arrivare ad ottenere numeri che siano effettivamente non deterministici. infiniti non influenzabili da qualunque tipo di fattore esterno.

PRNG Def:PRNG è un algoritmo in grado di generare sequenze di numeri che approssimano le proprietà di quelle di numeri realmente casuali. L input che viene introdotto nel generatore definisce il suo stato iniziale, ed è anche detto seme, che viene espanso.

PRNG Una generazione deterministica avviene per mezzo di una funzione. La stringa non è mai infinita periodo di un PRNG La massima lunghezza della sequenza prima che questa cominci a ripetersi. Se il seme in bit misura n, il periodo massimo è di 2^n.

PRNG Un PRNG è un algoritmo che prende una sequenza randomin ingresso di lunghezza k ne genera una lunga l>>k che sembra casuale Def Siano k ed l interi positivi tali che l k+1. Un generatore di bit(k,l) è una funzione f che presenta un tempo computazionale polinomiale (come una funzione di k). L input è detto seme, l output f è detto stringa generata. È sempre richiesto che l sia una funzione polinomiale di k.

Sicurezza di un PRNG Le caratteristiche fondamentali Deve essere veloce, ovvero eseguibile in tempi polinomiali. Deve essere sicuro. Risulta molto spesso arduo trovare un compromesso fra questi obbiettivi.

Sicurezza di un PRNG Intuitivamente un PRNG si definisce sicuro se in un tempo polinomiale (che sia quindi funzione di k ) è impossibile distinguere il flusso di bit in uscita da uno realmente casuale.

Sicurezza di un PRNG Strategia In media un reale flusso casuale (di lunghezza l) di bit ha un numero di 1 pari ad l/2, poiché uniformemente distribuito. Un generico flusso, sempre di lunghezza l, di bit pseudo casuali, conterrà un numero di 1 pari a 2l/3. l1 > (l/2 +2l/3)/2 = 7l/12 l1 numero di 1 contenuti nella stringa esaminata.

Caratteristiche di un PRNG Distribuzione uniforme. Indipendenza. Esempio: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9

Problemi Spesso il periodo del generatore risulta più corto di quanto in realtà ci si aspetti, a seconda del tipo di seme posti in ingresso. Mancanza di uniformità nella distribuzione dei numeri della sequenza. Alti valori di correlazione fra i valori generati in output. Bassa distribuzione dimensionale della sequenza in uscita.

Applicazioni Simulazione Sono usati per creare campioni su cui poter effettuare delle statistiche. Il metodo più conosciuto è indubbiamente il Metodo Monte Carlo. L algoritmo genera una serie di numeri tra loro incorrelati, che seguono la distribuzione di probabilità che si suppone abbia il fenomeno da indagare.

Applicazioni In teoria Il One-Time-Pad raggiunge la sicurezza perfetta. In pratica poco agibile in quanto prevede l uso di una chiave lunga quanto il testo in chiaro. Se pensiamo al seme come ad una chiave e al PRNG come un generatore di chiavi, basterà che Alice trasmetta solo il seme a Bob e poi entrambi saranno in grado di ottenere la stessa sequenza in uscita da usare come chiave.

Metodo di Von Neumann Suggerito nel 1946 era noto come Middle Square Method. Si prende un valore iniziale che sia un qualunque numero di 10 cifre e si eleva al quadrato. Le 10 cifre nel mezzo del risultato sarebbero andate a costituire il secondo numero pseudo casuale della sequenza in uscita. Processo iterativo. Molto veloce. Se durante il processo le cifre mediane sono tutte 0, il generatore produrrà in uscita sempre sequenze nulle.

Mersennetwister Nel 1997 Makoto Matsumoto e Takuji Nishimura. Risolse molti problemi che vi erano stati fino ad allora con i PRNG precedenti. Periodo a dir poco colossale, di (2^19937)-1. Punti equamente distribuiti in spazi fino a 623 dimensioni. Uno dei generatori più veloci.

CSPRNG Un algoritmo adatto a lavorare in ambito crittografico è detto Crittograficamente Sicuro. Deve essere in grado di resistere a vari attacchi. I test per verificare che un generatore sia un PRNG durano molto tempo e NON si è mai completamente sicuri!!

Requisiti di un CSPRNG Una sequenza di numeri prodotta in uscita da un algoritmo deterministico deve essere indistinguibile da una stringa realmente casuale. Deve essere impossibile per un qualunque attaccante, a partire da una data sottosequenza, poter risalire ai valori passati o futuri di output del PRNG. Deve essere impossibile per un qualunque attaccante, a partire da un dato stato interno, poter risalire ai valori passati o futuri di output del PRNG.

Test statistici Frequency (Monobits) Test Lo scopo di questo test è verificare se il numero di 1 e 0 in una sequenza sono circa gli stessi che ci si aspetterebbe per una sequenza veramente casuale. Il test valuta la distanza della frequenza degli 1 e 0 rispetto a ½, cioè il numero di zeri e di uno che dovrebbero essere contenuti in una sequenza realmente casuale.

Test statistici Maurer's Universal Statistical Test Lo scopo del test è di rilevare se la sequenza possa essere notevolmente compressa senza perdita di informazioni. Una sequenza eccessivamente comprimibile è considerata non casuale.

Test statistici Runs Test Questo test si propone di valutare la frequenza delle runs di varie lunghezze. Con il termine run indichiamo una sottostringa di lunghezza variabile k, i cui k elementi siano tutti identici e che è collegata, all inizio e al termine, al resto della sequenza tramite dei valori opposti. 1, 0, 1, 0, 0, 0, 0, 1, 0, 1

Test statistici Nextbit test Dati i primi k bit di una sequenza casuale, non deve Dati i primi k bit di una sequenza casuale, non deve essere possibile, in un tempo polinomiale, predire il (k+1) esimo bit con probabilità di successo superiore a 1/2. Nel 1982 fudimostratoche un generatore in grado di passare il nextbit test passerà anche tutte le altre prove statistiche di casualità a tempo polinomiale.

I più famosi I cifrari a flusso. I I cifrari a blocco. Fra i cifrari appositamente disegnati per avere delle caratteristiche specifiche per la sicurezza in ambito crittografico ricordiamo l algoritmo di Yarrow, il Blum BlumShubed il Fortuna.

Il generatore Fortuna

PRESENTATION OVERVIEW PRESENTATION OVERVIEW 1)Random Number Generators 2)Possibili attacchi ad un PRNG 3)CS-PRNG: Fortuna

RANDOM NUMBER GENERATORS TRNG= True Random Number Generator si basano su fenomeni fisici imprevedibili vantaggio: sequenze intrinsecamente aleatorie svantaggio: basso throughput (frequenza di emissione dei simboli)

RANDOM NUMBER RANDOM NUMBER GENERATORS GENERATORS PRNG= Pseudo Random Number Generator algoritmo deterministico alimentato da un seme casuale vantaggio: throughput più elevato rispetto ai TRNG

RANDOM NUMBER RANDOM NUMBER GENERATOR GENERATORS CSPRNG= Cryptographically Secure Pseudo Random Number Generator PRNG utilizzati nell'ambito della crittografia

RANDOM NUMBER GENERATORS Un CSPRNG deve rispettare i seguenti criteri: Passare il next-bit test Resistere all'attacco state compromise extensions Fortuna appartiene alla classe dei CSPRNG!

PRNG: POSSIBILI ATTACCHI Possibili PRNG: POSSIBILI attacchi ad ATTACCHI un CS-PRNG Attacco più semplice: attacco diretto Pericolosità: l'hacker che acquisisce in qualche modo lo stato interno Ripristinare la sicurezza: tramite le fonti di numeri realmente casuali a disposizione

PRNG: POSSIBILI ATTACCHI Possibili PRNG: POSSIBILI attacchi ad ATTACCHI un CS-PRNG Problema: qual'èla quantità minima di entropia necessaria a garantire la sicurezza?.. In generale è difficile effettuare una stima dell'entropia Il generatore Fortuna risolve questo problema!

FORTUNA

FORTUNA FORTUNA si suddivide in 1) Generatore 2) Accumulatore 3) Controllo sul file del seme

FORTUNA: GENERATORE FORTUNA: GENERATORE FORTUNA: GENERATORE Generatore: cifrario a blocchi (AES) in modalità contatore Stato interno: chiave 256 bit + contatore 128 bit

FORTUNA: GENERATORE FORTUNA: GENERATORE FORTUNA: GENERATORE Aggiornamento del seme (reseed): Dopo ogni richiesta di dati casuali Dopo aver generato 2 20 dati pseudo-casuali

FORTUNA: ACCUMULATORE FORTUNA: ACCUMULATORE FORTUNA: ACCUMULATORE DIENTROPIA DI ENTROPIA Accumulatore di entropia: Fornisce al Generatore un seme casuale 32 pool di entropia

FORTUNA: ACCUMULATORE FORTUNA: ACCUMULATORE FORTUNA: ACCUMULATORE DIENTROPIA DI ENTROPIA L'entropia dalle sorgenti è distribuita ciclicamente sui vari pool

FORTUNA: ACCUMULATORE FORTUNA: ACCUMULATORE DIENTROPIA DI ENTROPIA L'aggiornamento del seme è effettuato quando il pool P 0 ha accumulato abbastanza entropia Indico con r la generica variazione del seme Il Pool P i è incluso se 2 i è un divisore di r: P 0 è usato ogni variazione P 1 ogni 2,..

FORTUNA: ACCUMULATORE FORTUNA: ACCUMULATORE FORTUNA: ACCUMULATORE DIENTROPIA DI ENTROPIA I pool P i caratterizzati da un indice i elevato contribuiscono molto raramente all'aggiornamento, ma accumulano maggiore entropia tra due variazioni L'hacker non può determinare lo stato interno finchè egli non controlla tutte le sorgenti di entropia Questo rappresenta il vero pregio di Fortuna: l'aver eliminato le stime dell'entropia!

FORTUNA: SEED FILE FORTUNA: SEED FILE FORTUNA: CONTROLLO SUL FILE MANAGER MANAGER DEL SEME Controllo sul file del seme: Fornisce al generatore un seme iniziale, in questo modo Fortuna può generare immediatamente dati pseudocasuali Il file viene riscritto prima dello spegnimento della macchina, e aggiornato approssimativamente ogni 10 min

Approccio pratico: realizzazione di un RNG

Riepilogo applicazioni Generare chiavi in crittografia Simulare e modellare fenomeni complessi Testing di sistemi complessi

Che cosa si produce Singolo numero:estratto da un set di valori possibili ed equiprobabili. Sequenza di numeri:indipendenza statistica e ditribuzione uniforme. Introdurre casualità nei computer non è semplice

PRNG vs TRNG Due approcci per generare numeri casuali usando un computer:prng,trng. PRNG utilizzano formule matematiche. TRNG usano fenomeni fisici naturali.

PRNG Usano algoritmi e formule matematiche per generare sequenze di numeri che appaiono random. Un valido esempio è il metodo congruenziale lineare. Efficienti,deterministici( noto lo starting point),periodici. Vanno bene solo per alcune applicazioni:dove si necessita di velocità computazionale elevata,di molti numeri,di ripetere sequenze già generate. Periodicità:anche se nei più moderni è trascurabile.

Dove si applicano i PRNG Testing e simulazioni Non sempre usati nel data encryption,dove c è necessità di numeri realmente impredicibili,anche se esistono buonissimi algoritmi PRNG.

TRNG Prendono la casualità da fenomeni fisici e la elaborano al computer. È importante la scelta della sorgente caotica. Possibili fenomeni da utilizzare:variazione dei Possibili fenomeni da utilizzare:variazione dei movimenti del mouse in più persone,decadimento di una sorgente radioattiva(si usa un generatore di impulsi pilotato dalla sorgente),rumore atmosferico (reperibile con una normale radio),rumore termico,effetto fotoelettrico.

Altri fenomeni da sfruttare Fenomeni macroscopici :carte da gioco,dadi,ruota della roulette. La loro impredicibilitàè giustificata dalla teoria del caos e dei sistemi dinamici instabili. Quindi sono fenomeni imprevedibili apparte conoscendo le condizioni iniziali perfettamente.

..di facile acquisizione È importante che la sorgente caotica sia facilmente collegabile col calcolatore per l acquisizione dei dati. i TRNG lavorano come se rendessero il computer capace di sostituirsi a un giocatore nel lancio di un dado o meglio usano qualche altro fenomeno fisico che è più facile da collegare a un computer di quanto non lo sia un dado.

Differenze PRNG/TRNG Characteristic Pseudo-Random Number Generators True Random Number Generators Efficiency Excellent Poor Determinism Determinstic Nondeterministic Periodicity Periodic Aperiodic

APPLICAZIONI Application Most Suitable Generator Lotteries and Draws TRNG Games and Gambling Random Sampling (e.g., drug screening) TRNG TRNG Simulation and Modelling Security (e.g., generation of data encryption keys) PRNG TRNG

Metodo congruenza lineare (1) Computer incapace di generare,nel senso letterale del termine,numeri casuali. Allora si realizza algoritmo che genera sequenza con stesse proprietà statistiche dei numeri casuali. Metodo congruenza: dato un seme X0 ottiene sequenza pseudocasualeripetendo la formula seguente x i+1 = (a * x i + c) (MOD m)

Metodo congruenza lineare (2) x i+1 = (a * x i + c) (MOD m) a coeff. intero positivo detto moltiplicatore c coeff. intero non negativo detto incremento m coeff. intero strettamente positivo detto modulo x i è il generico numero della sequenza Il metodo prende il nome dalla definizione di congruenza. Nel nostro caso x i+1 sarà congruo modulo m a (a* x i + c).

Metodo congruenza lineare (3) x i+1 = (a* x i + c) (MOD m) Il metodo è detto moltiplicativo se c=0, misto se c ¹ 0; se a=1 il metodo è detto additivo. Esempio: Ipotizziamo le seguenti assegnazioni: a=3 c=5 m=11 Se x0=3 la sequenza che si ottiene applicando la formula della congruenza modulo m è: 3, 3, 3, 3,, cioè una sequenza assolutamente non casuale.

Metodo congruenza lineare (4) Le cose cambiano se scegliamo x0=1; la sequenza ottenuta è allora la seguente: 1, 8, 7, 4, 6, 1, 8, 7, 4, 6, 1, Possiamo notare che i primi 5 numeri vengono riprodotti interamente! Se x0=2 si ottiene 2, 0, 5, 9, 10, 2, 0, 5, 9, 10, 2, ; ancora una sequenza di 5 numeri ripetuta.

Metodo congruenza lineare (5) Se modifichiamo invece a assegnandogli il valore 12, e poniamo x0=1 allora si ottiene: 1, 6, 0, 5, 10, 4, 9, 3, 8, 2, 7, 1, 6, 0, 5, una sequenza di lunghezza 11 e cioè pari a m. E da sottolineare che in ogni caso i numeri ottenuti sono compresi tra 0 e 10 e cioè tra 0 e m-1.

Osservazioni.. La lunghezza massima raggiungibile dalla sequenza generata, senza ripetizione, vale m; Il valore di x0 può essere determinante nella lunghezza della sequenza. E allora necessario individuare dei criteri per assegnare ad a, c, m e al seme dei valori in modo che la sequenza riprodotta sia la più lunga possibile.

Criteri ottimalitàmetodo Alcuni studiosi hanno individuato i seguenti criteri necessari e sufficienti che garantiscono l'ottimalitàdel metodo:x i+1 = (a * x i + c) (MOD m) 1. I parametri c e m devono essere coprimi cioè MCD(c,m) 1. I parametri c e m devono essere coprimi cioè MCD(c,m) = 1 2. ogni divisore primo di m deve dividere (a-1) 3. se m è multiplo di 4, anche (a-1) lo deve essere. Per rendere più aleatorio il processo, il seme viene fissato in modo hardware, prelevandone il valore da un contatore interno al computer.

il prezzo da pagare.. PRNG progettato male Maggio 2008 si scopre falla di sicurezza nel PRNG di OpenSSL. OpenSSLè software di crittografia per creazione di connessioni di rete sicure(usato in Mozilla). Ha interessato tutte le chiavi crittografiche generate da Settembre 2006. Causa:rimozione di linee di codice che inizializzavano il PRNG con dati di entropia.

segue.. Senza questa entropia,l unico dato dinamico per l inizializzazione era il PID del software(ma può assumere valori solo tra 1 e 32768). Troppi pochi valori,quindi prevedibilità chiavi generate. Importanza test di valutazione di un generatore a seconda delle applicazioni.

In pratica:generatore Lava Si parte dal presupposto che realizzare un autentica sequenza non ripetitiva è inattuabile utilizzando solo un computer. Il generatore Lava usa una sorgente caotica in cui una Il generatore Lava usa una sorgente caotica in cui una piccola sollecitazione a un certo istante di tempo ha un notevole impatto sullo stato futuro del sistema (scorrelati).

Come funziona(1) Physical Source of Chaos analog to digital Digital Blender produces Random Numbers

Come funziona(2) 1.Si digitalizza la sorgente caotica,catturando un istante dell attività della sorgente. 2.Digital Blender:algoritmo che ha in input dati digitali stutturati e caotici;dà in output solo dati caotici. 3.L insieme di dati randomsono raccolti e adattati a seconda dell applicazione che ne farà uso.

Sorgente caotica(1) si incapsula sensore CCD in modo che questo misuri solamente il rumore di fondo in uno spazio totalmente privo di luce.

Sorgente caotica(2) Si può utilizzare anche una webcam dato che la maggior parte di esse hanno un chip CCD al loro interno.

Sorgente caotica(3) Esempio:si può avere una quantità di dati relativi ad un immagine,pari a 19200 pixels nel dominio YUV. Massimizzo entropia della sorgente caotica settandone il guadagno. Crominanze non mostrano livelli di caoticitàa differenza della luminanza che andremo a considerare.

Luminanza Y Dati relativi alla luminanza rappresentati con 2 immagini: deboli strisce uniformi con intorno rumore Webcam luminance data(2x magnification)

DigitalBlender(1)

DigitalBlender(2) un n-way turn, n diverse SHA-1 operazioni hashin parallelo n operazioni di xor-rotate.

Come funziona(3) L n-way turn converte i dati digitalizzati ottenuti dal CCD in n setsdi dati. Ognuno di questi n entra nel blocco SHA-1 che produce in uscita 20 ottetti di dati. Ognuno degli n entra anche nel blocco xor-rotateche produce anch esso 20 ottetti di dati. I 20 ottetti di dati prodotti da un blocco xorrotate sono messi in xorcoi 20 ottetti prodotti dal blocco SHA-1 successivo e producono 20 ottetti di numeri random.

Scelta di n In totale questo algoritmo produce n*20 ottetti di numeri random. Come scelgo n? Dipende dalla quantità di dati ottenuti dalla sorgente caotica e dall output rate factor chiamato alfa. Più grande è alfa,maggiore sarà l output per un dato input.

Esempio Assumendo 19200 ottetti di input, la seguente tabella mostra il numero di ottetti generati in funzione di alfa: input length alpha rate n-way level octets generated 19200 16.00 71 1420 19200 12.00 61 1220 19200 8.00 49 980 19200 6.00 43 860 19200 4.00 35 700 19200 3.00 31 620

Esempio Ipotizziamo di utilizzare un 17 way turn,una volta che questo è completo,l algoritmo fa 17 differenti operazioni SHA-1 hash e 17 operazioni di xor rotate. Quando le rispettive uscite di questi blocchi sono messe in xore concatenate vengono prodotti 340 ottetti di numeri random. Random numbers in image form(2x magnification)

..continua esempio È facile notare come allo stesso livello d ingrandimento l immagine in uscita sia molto più piccola di quella in ingresso all algoritmo. questo perché per un alfa uguale a 1 ad esempio,ci sono questo perché per un alfa uguale a 1 ad esempio,ci sono circa 56 ottetti di pixelsdi luminanza consumati per ogni ottetto di numeri random prodotto.

Applicazione Solitamente nonserveuna grande quantità di numeri casuali tutti insieme ma serve metterli in una certa forma(a seconda dell applicazione per la quale vengono utilizzati. Nel modificare i dati(per adattarli all applicazione finale) è importare mantenere la loro distribuzione uniforme.

Invenzioni recenti QRBG usa un led ed un sensore che rileva l emissione di fotoni,esso sfrutta la luce prodotta da un semiconduttore.usadei chip che registrano il fenomeno costruendo un database contenente un autentica sequenza random. società britannica genera randomnessbasandosi su tutto quello che và dall analisi del vento solare alle nuvole di venere,dalle emissioni di giove ad altri eventi cosmici.

Excel e i numeri casuali Due funzioni:casuale e CASUALE.TRA(;) CASUALE:genera numero con virgola tra 0 e 1. CASUALE.TRA(;) genera numero in un rangeche posso specificare. Esempio:voglio generare un numero casuale tra 20 e 45;in una cella excelscrivo =CASUALE.TRA(20;45)

Java e i numeri casuali Utilizzo la classe java.util.randomma va bene solo per casi semplici,cioè nessun requisito di sicurezza. Per verificare quanto siano poco casuali i bit generati da java.util.random vediamo: Per la crittografia si usa la classe java.security.securerandom; fornisce un RNG crittograficamente molto valido. esempio codice: SecureRandomrandom = new SecureRandom(); byte bytes[] = new byte[20]; random.nextbytes(bytes);

GRAZIE PER L ATTENZIONE!