4 - Dipartimento di Informatica

Transcript

4 - Dipartimento di Informatica
Gabriele
Gori
RANDOMNESS
parte prima
Defin iz io ni , de te rm in ismo, te or ia de l caos
Definizioni
Casualità e causalità
Determinismo classico
Meccanica quantistica
Teoria del caos
Esiste la casualità?
Ni.
Casualità
Un evento si definisce casuale quando non può
essere predetto o nel caso in cui non succeda ad
una serie di cause predefinite.
Si definisce determinismo la caratteristica di
un evento (o di un sistema) di seguire specifiche
regole di evoluzione.
Casualità - Causalità
Nasce la dicotomia tra casualità e causalità.
La causalità viene affermata dalla Scienza
attraverso l'approccio epistemologico alla Natura
sfociando in alcuni casi nel concetto di
meccanicismo.
Ogni evento in natura deriva da una serie di
cause – conoscendo tutte le variabili in gioco e le
leggi che regolamentano la Natura al momento t
(stato del sistema) si può prevedere lo stato del
sistema al tempo t + 1.
Determinismo classico
Cit.
«Dobbiamo dunque considerare lo stato presente
dell'universo come effetto del suo stato anteriore e come
causa del suo stato futuro. Un'intelligenza che, per un dato
istante, conoscesse tutte le forze da cui la natura è animata e
la situazione rispettiva degli esseri che la compongono, se
fosse abbastanza vasta da sottoporre questi dati ad analisi
abbraccerebbe nella stessa formula i moti dei corpi più
grandi dell'universo e quelli dell'atomo più leggero: per essa
non ci sarebbe nulla d'incerto, ed il futuro come il passato
sarebbe presente ai suoi occhi.»
Pierre-Simon Laplace, 1812
Determinismo classico
E' possibile applicare con successo la Matematica
nella descrizione del mondo.
Il successo della Scienza consiste nella riduzione
a leggi della meccanica dei fenomeni naturali:
“De revolutionibus orbium coelestium”
Copernico, 1543
“Principia”
Newton, 1687
I successi
L'esistenza di Nettuno venne predetta attraverso
calcoli matematici prima ancora che col
cannocchiale la sera del 23 settembre 1846 da
Johann Gottfried Galle con il telescopio
dell'Osservatorio astronomico di Berlino.
I cambiamenti insoliti nell'orbita di Urano
lasciarono credere agli astronomi che vi fosse al
di là un pianeta sconosciuto che ne perturbasse
l'orbita. Il pianeta fu successivamente scoperto
entro appena un grado dal punto predetto.
Irregolarità
Il determinismo classico funziona per sistemi
relativamente semplici come fenomeni
astronomici e fenomeni che permettono
l'approssimazione a sistemi più semplici.
Sistemi più complessi non possono essere definiti
deterministici perché sfuggono alla previsione e
presentano una evoluzione irregolare: moti
browniani, andamenti economici, dinamiche
biologiche: sistemi dinamici.
Causalità
«A causal relation [...] has no essential reference to
existence, as to particular parts of time.»
Bertrand Russell, 1902
“The Principles of Mathematics”
Una delle prime critiche alla rational dynamics,
in opposizione con Laplace.
Causalità
«Causality, generally, is the principle in virtue of
which, from a sufficient number of events at a
sufficient number of moments, one or more events
at one or more new moments can be inferred.»
Bertrand Russell, 1902
“The Principles of Mathematics”
Viene eliminata la causalità nella sua definizione.
Meccanica quantistica
Principi
Cambiamento di concezione meccanicistica della
dinamica, da un certo grado di determinismo a
ad una dinamica probabilistica.
Ogni particella ha una probabilità p di avere un
certo comportamento: determinismo non certo.
Meccanica quantistica
Principio di indeterminazione
«Non è possibile conoscere simultaneamente la
quantità di moto e la posizione di una particella con
certezza.»
Werner Heisenberg, 1927
Esula dal significato di indeterminismo, principio
rivoluzionario all'interno della Fisica Quantistica,
ma non abbastanza potente da poter affermare
l'esistenza di casualità.
Principio di indeterminazione
Critiche
Albert Einstein non accettava la concezione non
deterministica data dal P.d.I. e affermò: «Non
credo che Dio abbia scelto di giocare a dadi con
l'universo.»
Bohr, sostenitore del principio, aggiunse:
«Einstein, smettila di dire a Dio cosa deve fare.»
Principio di indeterminazione
Critiche
Secondo la definizione data, la teoria della
meccanica quantistica non produce un mondo
non deterministico.
La Fisica inoltre ci dice che anche se il
comportamento di una particella individuale è
casuale, è correlato al comportamento delle altre
particelle.
Determinismo moderno
I sistemi dinamici comprendono spesso elementi
di impredicibilità, di “non determinismo”.
Dal determinismo classico si passa quindi a
quello moderno, attraverso il quale un nuovo
concetto di determinismo viene alla luce
attraverso la teoria del caos.
Determinismo moderno
Complessità
Il determinismo moderno si deve scontrare
contro fenomeni denominati complessi.
Fenomeni in cui è fondamentale l'interazione
complessa dei componenti.
Questi sistemi fanno emergere fenomeni olistici,
fenomeni risultanti dal principio per cui la
somma delle parti è maggiore della somma delle
singole parti.
La teoria del caos si applica a fenomeni di questo
tipo.
Causalità
Cit.
«Let there be three particles A, B, C. We say that B
and C both cause accelerations in A, as we
compound these two accelerations by the
parallelogram law. But this composition is not truly
addition, for the components are not parts of the
resultant. [...] the whole has no effect except what
results from the effects of the parts [...]»
Bertrand Russell, 1902
“The Principles of Mathematics”
Primo esempio di definizione di sistema
complesso.
Determinismo moderno
Teoria del caos
La teoria del Caos rappresenta lo studio di
sistemi che possono sembrare ad una prima
analisi aleatori ma che invece rispondono a certi
comportamenti ben definiti.
La sua definizione è giovane (anni 70) ma
corrisponde ad una valida alternativa al
determinismo classico.
Teoria del caos
Cit.
«A very small cause which escapes our notice determines a considerable
effect that we cannot fail to see, and then we say that the effect is due to
chance. If we knew exactly the laws of nature and the situation of the
universe at the initial moment, we could predict exactly the situation of
the same universe at a succeeding moment. But even if it were the case
that the natural laws had no longer any secret for us, we could still know
the situation approximately. If that enabled us to predict the succeeding
situation with the same approximation, that is all we require, and we
should say that the phenomenon had been predicted, that it is governed
by the laws. But is not always so; it may happen that small differences in
the initial conditions produce very great ones in the final phenomena. A
small error in the former will produce an enormous error in the latter.
Prediction becomes impossible [...]»
Henri Poincaré
Teoria del caos
Lorenz
Edward Norton Lorenz (1917 - 2008),
matematico statunitense, è stato un pioniere
nella teoria del Caos per le sue osservazioni nei
sistemi complessi applicate alla meteorologia.
Noto per la sua definizione di effetto farfalla, ha
gettato le basi della teoria del caos scoprendo gli
attrattori strani.
Caos - Effetto farfalla
Nel 1963, Lorenz lavorava la MIT come meteorologo ed
era convinto che la semplificazione delle equazioni con
cui lavorava, avrebbe aiutato a fare luce sulle sue
problematiche. Dai risultati prima e dopo le
semplificazioni formulò uno dei principi del caos:
piccole variazioni delle condizioni iniziali producono
notevoli divergenze nella evoluzione dei modelli. Chiamò
questo l'effetto farfalla, immaginando come il battito
d'ali in un emisfero avrebbe modificato le condizioni
climatiche nell'altro emisfero.
Conferenza annuale della American Association for the
Advancement of Science, 1972.
Caos - Sistema dinamico
Due tipi di sistema dinamico: mappa logistica
x(t + 1) = r * x(t)
Funzione ricorsiva particolarmente sensibile alla
variazione del parametro r.
Caos - Sistema dinamico
r = 0,85 (a)
r = 2,8 (b)
r = 3,3 (c)
r = 4,0 (d)
Fonte: [1]
Caos - Spazio delle fasi
Un sistema dinamico è descritto da un certo
numero di variabili xi, pari al numero di gradi di
libertà del sistema. In ogni momento, il sistema
può essere descritto attraverso una n-pla di valori
del tipo X=(x1, x2, … , xn).
L'evoluzione del sistema è quindi l'evoluzione
della n-pla dello stato presente del sistema.
Si definisce spazio delle fasi, l'insieme di tutti i
possibili valori che il sistema può assumere.
Caos - Attrattori
L'attrattore, concetto formulato dal Lorenz,
rappresenta un'insieme limite dell'evoluzione del
sistema. In altri termini, corrisponde ad un
restringimento dello spazio delle fasi.
I sistemi possono tendere ad un punto, ad una curva
o ad una varietà in base al numero di gradi di libertà
del sistema.
Attrattori più complicati (e interessanti) prendono la
struttura di un frattale e vengono chiamati attrattori
strani.
Caos - Attrattori
Fonte: [1]
Caos - Applicazioni
Chimica: mescolamento di componenti.
Medicina: evoluzione di epidemie, sistema
immunitario, ritmo cardiaco.
Statistica: evoluzione delle popolazioni.
Economia: rivoluzione delle teorie classiche.
Cinema: Jurassic Park
Conclusioni
La casualità non esiste a livello teorico. Nell’ambito
subnucleare esiste un determinismo probabilistico
che per certi aspetti ricalca la definizione di casualità.
La teoria del Caos, applicata ai sistemi complessi, può
portare alla soluzione di numerose problematiche di
oggi.
La teoria del Caos può infatti indicare modelli di
ordine dove invece ci si aspetta il caos. Il cervello
rappresenta un sistema complesso.
Bibliografia
[1] “Determinismo e Caos”, Angelo
Vulpiani, 1994
“Le Leggi del Caos”, Ilya Prigogine,
1993
“The Principles of Mathematics”,
Bertrand Russell, 1903
“Gödel, Escher, Bach: un'eterna
ghirlanda brillante”, Douglas
Hofstadter, 1979
Determinismo, Complessità, ecc.,
Wikipedia.it
resonancepub.com/mathematics.htm,
Henri Poincaré
Cesare
Gregori
RANDOMNESS
parte seconda
Lo gica fuzz y e sue appl ic az io ni
Cosa c’entra con la
randomness?
Esistono molti problemi difficili per cui è
complicato creare un modello o dei buoni
algoritmi risolutivi.
Generare randomness è un problema difficile...
Quindi?
L'uomo ha risolto e risolve tuttora problemi
complicati anche senza avere a disposizione
modelli matematici complicati.
Corollario ✏ il cervello umano è un buon
risolutore e funziona meglio di molti algoritmi.
È possibile imitare il ragionamento umano nel
risolvere problemi complessi?
Sì...
Un modo che abbiamo per farlo è avvalerci della
logica fuzzy.
Come vedremo è possibile creare buoni
generatori di random attraverso tecniche fuzzy.
Un po’ di storia… (1)
Nel 1964 Zadeh osservò che gli elementi chiave
del pensiero umano non sono numeri ma
etichette di insiemi fuzzy: il nostro cervello è
pieno di insiemi fuzzy, anzi il pensiero non è altro
che un gioco con gli stessi.
Infatti una delle più sorprendenti capacità del
cervello umano, tuttora non riproducibile dalle
intelligenze artificiali, è quella di assumere
informazioni approssimandole.
Un po’ di storia… (2)
Zadeh ritiene la complessità e la precisione
inversamente proporzionali: se cresce la complessità
del problema diminuisce la possibilità di analizzarlo in
termini precisi.
Un’applicazione molto nota è stata realizzata
dall’HITACHI, per il controllo della frenatura dei
treni della metropolitana di Sendai. Con solo 54 regole
fuzzy il sistema riesce a far accelerare e decelerare i
treni più dolcemente. Non ha mai dato alcun problema
e consente una riduzione del 15% del consumo
d’energia. È entrato in funzione nel luglio del 1987.
Un po’ di storia… (3)
L'idea di grado d'appartenenza, il concetto divenuto
poi la spina dorsale della teoria degli insiemi sfumati,
fu introdotta nel 1964, e ciò portò in seguito, nel 1965,
alla pubblicazione di un primo articolo, ed alla nascita
della logica sfumata.
Il concetto di insieme sfumato,e di logica sfumata,
attirò le aspre critiche della comunità accademica;
nonostante ciò, studiosi e scienziati di tutto il mondo dei campi più diversi, dalla psicologia alla sociologia,
dalla filosofia all'economia, dalle scienze naturali
all'ingegneria - divennero seguaci di Zadeh.
Logica aristotelica vs.
logica fuzzy
Non siamo qui a dire che la logica fuzzy può
sostituire la logica classica.
In alcuni casi però è soluzione di problemi
altrimenti irrisolvibili.
Teoria degli insiemi fuzzy
Prendiamo in considerazione la accezione più
larga di logica fuzzy che coinvolge anche la teoria
degli insiemi fuzzy.
Teoria degli insiemi fuzzy
La teoria degli insiemi fuzzy costituisce
un'estensione della teoria classica degli insiemi
poiché per essa non valgono i principi aristotelici
di non-contraddizione (x appartiene ad A,
non può appartenere a !A) e del terzo escluso
(“tertium non datur”: A e !A costituiscono
l'universo del discorso).
Max Black e Jan Łukasiewicz (prima metà del
XX secolo) ridiscutono questa impostazione
bivalente.
Paradosso del mentitore
Cit.
“Il cretese Epimenide afferma che
il cretese è bugiardo.”
Eubulide di Mileto
(metà del IV secolo a.C.)
Paradosso del mentitore (2)
Soluzione proposta da Koso allievo di Zadeh:
se quanto afferma Epimenide è vero: il cretese
è bugiardo (= vero)...
essendo cretese (mente) afferma che i cretesi
mentono...
l'affermazione di Epimenide è vera!
Paradosso del mentitore (3)
Viceversa se:
il cretese è bugiardo (= falso)...
in quanto cretese (e i cretesi non mentono)...
Epimenide mente quando afferma che il cretese è
bugiardo...
l'affermazione di Epimenide è falsa!
Paradosso del mentitore (4)
chiamo X l'enunciato e v il suo valore di verità (0/1)
X vero v=1, !X falso !v=0
!v può essere visto come: !v(=0) = 1 - v(=1)
X falso v=0, !X vero !v=1
!v può essere visto come: !v(=1) = 1 - v(=0)
perciò X e !X portano allo stesso risultato
X = !X
Paradosso del mentitore (5)
quindi anche
v=!v
cioè si arriva alla contraddizione
v=1-v
che si risolve banalmente in logica fuzzy con
2v=1 cioè v=1/2
Epimenide dice una mezza verità che in logica fuzzy
si traduce con l'appartenenza al 50%all'insieme delle
affermazioni vere e 50% a quello delle false.
Un esempio
È stato preso in considerazione un problema
apparentemente banale per la mente umana, la
cui interpretazione è alquanto complessa in
logica binaria. Questa difficoltà nasce dalla
necessità di considerare contemporaneamente
diverse variabili il cui stato non si limita ai due
valori convenzionali della logica binaria (vero o
falso), ma possono acquisire infiniti stati
intermedi.
SmartParking (1)
Il problema del parcheggio.
L'obiettivo è quello di far parcheggiare al
calcolatore un autovettura in retromarcia; le
variabili di input (o variabili di stato) del
problema, che vengono assegnate dall'utente,
sono la posizione (x, y) e l'orientamento dell'auto.
SmartParking (2)
Nello sviluppo delle regole Fuzzy, viene valutata
la posizone x dell'auto (la y è trascurata) e il suo
orientamento; le regole sono quindi del tipo:
“Se x è molto a sinistra del parcheggio e l'angolo
è sud ovest allora sterza di un piccolo angolo
positivo” ovvero:
✏ IF x IS S AND a IS SO THEN a IS a+PP
Dove a è l'orientamento della macchina.
SmartParking (3)
Il controllore fuzzy si basa su tre stadi:
1. Fuzzificazione
2. Controllo
3. Defuzzificazione
Fuzzificazione
La fuzzificazione consiste nella conversione dei
valori di input (che nel nostro caso sono
posizione ed orientamento) in valori linguistici
con un grado di membership che può essere dato
come nel nostro caso da funzioni triangolari; per
la variabile "posizione" abbiamo definito cinque
sets, per "angolo" sette.
SmartParking (4)
Controllo
Per ogni regola “if then” definita viene
computato il grado di applicabilità della stessa
dato dal minimo tra i due valori di membership
delle variabili.
Defuzzificazione
La defuzzificazione consiste nella riconversione
di valori linguistici di output in valori crisp;
quetso viene effettuato tramite la regola del
controide che, nel nostro caso, è facilmente
schematizzabile nel seguente modo:
✏ z = sum(fi * zi) / sum(zi)
Dove zi è il grado di applicabilità della regola e fi
è il valore centrale della funzione di membership.
SmartParking
Smart Parking (esempio)
Il resto...
La letteratura sulla logica fuzzy è molto ampia, in
quanto essa è applicabile per svariate situazioni.
Per ritornare sul seminato possiamo citare:
“The Enhanced Fuzzy Bit generator (EFBG): A
Cryptographically Secure Pseudorandom Bit
Generator”, Said E. El-Khamy, Mona A.
Lotfy e Adel Hamdi Ali, 2007
Bibliografia
“A New Fumy Logic Based Pseudo-Random Bit
Generator for Secure DS-CDMA Systems”, Said
E. EI- Kbamy, Mona Lotfy e Adel Hamdi
Ali
“The Enhanced Fuzzy Bit generator (EFBG): A
Cryptographically Secure Pseudorandom Bit
Generator”, Said E. El-Khamy, Mona A.
Lotfy e Adel Hamdi Ali, 2007
Stefano
Canducci
RANDOMNESS
parte terza
R an dom ne ss e sicu re zz a
Domande
Dove è usata in ambito di sicurezza?
Come ci viene fornita?
Il metodo scelto è crittograficamente sicuro?
Possibilità di crittografia con fonti di
randomness imperfetta?
Randomness ...
Una definizione colloquiale: “un processo
casuale è quello le quali conseguenze sono
sconosciute”
Molto importante perché ci permette di creare
dell’informazione difficile da dedurre o predire.
Essa deve essere utilizzata nel migliore dei modi
affinche ci permetta di proteggere efficacemente
dati e comunicazioni.
... vs. Imprevedibilità
Un processo random è sempre imprevedibile;
uno imprevedibile non si può dire random.
Esempio di processo random: lancio di una
moneta per creare stringhe di N bit. Testa/croce
0/1.
Esempio di processo solo imprevedibile: lancio
di N/3 monete per creare stringhe di N bit. 1 =
001, 2 = 010, … , 6 = 110.
Entropy
Usata per misurare l’imprevedibilità ed è il
logaritmo negativo della probabilità dell’output
del processo con maggior probabilità.
Se un processo ha entropia massima, esso è
completamente random e il suo output è
uniformemente distribuibile.
(monete) −log(2^−N) = N
(dadi) −log(1/6)^(N/3) = N/3log6 ≈ 0.86N
Dove viene usata?
One-time pads
Key generation
Message randomization
Nonces
Identificazione e zero-knowledge
One-time pads (1)
Schema di cifratura sicuro con chiave utilizzabile
una volta sola.
Alice
m
k
k
Alice spedisce a Bob c = m ⊗ k.
Bob capisce m da c usando la chiave
comune k e riutilizzando lo xor.
Bob
One-time pads (2)
Intercettare c non fa capire nulla del messaggio
originario, perché c non ha nessuna
informazione su m.
Questo è vero però solo nel caso che la chiave k
sia stata scelta in modo veramente random.
Key generation (1)
Generare le chiavi è uno degli usi più importanti
di randomness nell’ambito della crittografia.
Nessuna influenza o correlazione tra i bit di una
chiave.
La debolezza del one-time pad, potrebbe però
non tradursi direttamente in una debolezza per
algoritmi che usano operazioni iterate e
complesse (come il DES, ad esempio).
Key generation (2)
In DES, se la chiave non è random, il processo di
cifratura porta ad usare con maggior frequenza
alcuni valori nelle s-box. Questo potrebbe portare
a debolezze e attacchi inaspettati.
Oltre a questo, una chiave random è molto più
difficile da indovinare con attacchi di forza bruta.
Sapere che alcuni bit tendono a zero più
frequentemente, ad esempio, riduce
notevolmente lo spazio di ricerca delle chiavi.
Message randomization
Ovviamente, la randomness dovrebbe essere
usata anche per cifrare messaggi e non solo per la
generazione delle chiavi.
Un avversario può capire cose interessanti anche
solo leggendo il messaggio cifrato.
Seminale paper di Shafi Goldwasser e Silvio
Micali: “Probabilistic Encryption”, J. Computer
System Sciences, 1984
Nonces
Nonce sta per “number used once”.
Spesso un numero random o pseudo-random
usato nei protocolli di autenticazione.
Altri modi possibili per generare questi valori:
✏ contatori ✏ time stamps...
Identificazione e
zero-knowledge
Un uso molto affascinante di randomness è
l’utilizzo della stessa in protocolli di tipo zeroknowledge.
Usato in protocolli d’identificazione.
Zero-knowledge
(metafora)
Dove trovare “randomness”?
Ovviamente non possiamo costruire uno
specializzato cryptochip che lancia una moneta
perfettamente non influenzata ogniqualvolta ci
serva un bit random, quindi dove possiamo
prendere randomness?
1927: prima tabella di 40000 cifre.
Introduciamo la differenza tra numeri casuali
e numeri pseudo-casuali.
Numeri casuali e
pseudo-casuali
Vi è differenza tra loro non solo per come
vengono generati, ma anche perché vengono
usati per scopi differenti.
I numeri casuali: ✏ generare coppie di chiavi
RSA ✏ fornire il valore del seme iniziale per i
generatori di numeri pseudo-casauli…
Quelli pseudo-casuali: ✏ generare le chiavi di
sessione...
Numeri casuali e
pseudo-casuali
Non è semplice generare numeri veramente
casuali. Talmente difficile che gli scienziati
spesso optano per mezzi non convenzionali
(teoria del caos, ecc) e i programmatori si
affidano a operazioni complicate sui numeri.
Ma sono realmente random questi numeri
ottenuti?
Dipende dalla scelta del seme!
The Netscape incident
Bonus
folklore!
Settembre 1995: Ian Goldberg e David
Wagner (studenti) rompono lo schema di
generazione di numeri casuali di Netscape.
Tramite reverse-compilation riuscirono a
scoprire alcuni difetti (eufemismo) nella
generazioni di numeri casuali.
Netscape usava 3 valori per il seed iniziale: ✏ il
PID ✏ il PPID ✏ l’ora. Col senno di poi ci sembra
banale che fu una scelta infelice.
The Netscape incident
Bonus
folklore!
Morale della storia: protocolli
sicuri si rivelano non sicuri se non costruiti con
implementazioni sicura.
Di conseguenza, in crittografia, è importante
avere una buona fonte di randomness
Numeri casuali (1)
Processi matematici deterministici, non
soddisfano le nostre esigenze di casualità.
Si preferisce ricorrere a variabili date da:
tempo di clock, numeri di serie (ethernet#...)
numero file o spazio libero su disco...
stato della memoria centrale...
Numeri casuali (2)
Con questi metodi si ottengono però pochi bit e
neppure tanto segreti.
Come sorgenti di casualità è possibile utilizzare
eventi esterni al sistema:
contenuto battute su tastiera o intervalli di
tempo tra le battute; tempi e posizione del
cursore e/o mouse…
tempo di arrivo dei pacchetti su rete...
Numeri casuali (3)
Non conoscere le “regole del gioco”.
L’ideale sarebbe quello di usare fenomeni fisici
intrinsecamente non deterministici per generare
eventi casuali. Altri metodi:
Metodi manuali
Estrazione da tabelle
Generazione col calcolatore
Numeri casuali (4)
Metodi manuali: lancio di dadi o monete,
estrazione da urne, ecc. Sequenza dei numeri
“ottima”, ma tempo di generazione troppo lungo
per generarli in pratica.
Estrazione da tabelle: varie tavole di numeri
casuali sono state realizzate, contenenti un
milione di cifre casuali da 0 a 9, generate
mediante un dispositivo elettronico.
Numeri casuali (5)
Generazione con il calcolatore:
ad un calcolatore associato ad un congegno
all’estrazione da tavole già costruite
alle generazione mediante metodi aritmetici
Numeri casuali (6)
L’ideale è quella di utilizzare sorgenti diverse
tra loro e di mischiare i bit così ottenuti tramite
una funzione opportuna (il triplo DES o funzioni
hash, ad esempio).
Nessuna funzione di tipo deterministico,
applicata alla sequenza di bit casuali generata,
può aumentare la casualità di quella stringa;
l'unica cosa che può fare è rendere più o meno
uniforme la casualità della sequenza iniziale!
Numeri casuali (7)
Fonte: [1]
Numeri pseudo-casuali
Un generatore pseudo-casuale è una funzione f
che a partire dai precedenti valori genera i
successivi:
✏ Xi + 1 = f (i, X0 X1...Xi) i = 0, 1, 2, …
dove X0 è il valore iniziale, il seme, a partire dal
quale si calcola la sequenza:
✏ X1 X2 X3 X4 ...
Generatore a
congruenze lineari
A partire dal valore del seme X0 tutti gli altri
Xi vengono generati di volta in volta secondo la
seguente formula:
✏ Xi + 1 = (a * Xi + b) mod m
In questo tipo di generatore a, b ed m sono noti
a tutti, mentre il seme X0 è segreto.
Il problema è come scegliere i valori per a, b e m.
Generatore a
congruenze lineari
a = 1, b = 1
✏ Xi + 1 = (1 * Xi + 1) mod m
✏ no.
a = 7, b = 0, m = 32
✏ Xi + 1 = (7 * Xi + 0) mod 32
✏ 7, 17, 23, 1, 7, 17, 23, …
a = 7^5 = 16805, b = 0, m = 2^31-1
✏ ok.
Alcuni algoritmi
Yarrow algorithm e Fortuna
/dev/random e /dev/urandom
CryptGenRandom
OpenBSD
UNIX, Linux
Windows
Test per generatori (1)
Quando un generatore casuale viene detto
crittograficamente forte?
Solo se supera seguenti test (equivalenti tra loro):
✏ il test del prossimo bit
✏ il test statistico
Test per generatori (2)
Prossimo bit: se sono noti i primi r bit
dell'output del generatore (con il seme iniziale
non noto), non esiste un algoritmo efficiente che
può indovinare l'(r+1)-esimo bit con una
probabilità significativamente migliore di 1/2
Statistico: non esiste un algoritmo efficiente che
riesce a distinguere tra l'output di un generatore
ed una stringa realmente casuale, con una
probabilità significativamente migliore di 1/2.
Conseguenze a una fonte di
randomness imperfetta
L’intuizione che basti solo una fonte ad alta
entropia per garantire sicurezza, è risultata falsa.
Impossibilità: ✏ bit commitment
✏ encryption ✏ secret sharing
✏ zero-knowledge
✏ non-interactive zero-knowledge
✏ secure two-party computation
Possibilità: ✏ secure signature scheme
✏ interactive proof
Risorse
“Randomness in Cryptography”,
Rosario Gennaro, 2006,
IEEE Security & Privacy
[1] “Corso di Sicurezza su Reti”, Prof. Alfredo
De Santis, 2000, Università degli Studi di
Salerno
“On the (Im)possibility of Cryptography with
Imperfect Randomness”, Yevgeniy Dodis,
Shien Jin Ong, Manoj Prabhakaran, Amit
Sahai, 2004, FOCS’04
Fin.