Sei sulla pagina 1di 40

Introduzione Alla Crittografia

Sistemi crittografici
simmetrici e
asimmetrici.
Gianni Antini, 2000

Crittografia

Antini Gianni, 2000

Definizioni Generali
Si parla di testo in chiaro (plain-text) riferendosi al
messaggio originale.
Il testo in chiaro viene crittografato mediante luso di una
apposita chiave, a questo punto il messaggio prende il nome
di testo cifrato (cipher-text).
La stessa chiave usata per la cifratura viene normalmente
usata per la decifratura del messaggio e si parla di
crittografia simmetrica (o chiave privata). Quando invece la
chiave usata per la decifrazione diversa da quella usata per
la cifratura si parla di crittografia asimmetrica (o a chiave
pubblica).
La crittografia asimmetrica necessita di complesse tecniche
matematiche ed stata sviluppata solo recentemente.

Crittografia

Antini Gianni, 2000

Crittografia Teorica
Nel 1949 C. Shannon pubblica un articolo che da linizio a quella
che oggi viene chiamata la Teoria dellInformazione.
Lunione di questa nuova scienza, della Teoria della Probabilit,
della Teoria della Complessit e della Teoria dei Numeri da vita
alla Crittografia Moderna.
Definizione: Un crittosistema una quintupla (P,C,K,FC,FD)
dove,
P: insieme finito dei testi in chiaro
C: insieme finito dei testi cifrati
K: insieme delle possibili chiavi
FC: funzione di cifratura ( una FC(k1) con k1K)
FD: funzione di decifratura ( una FD(k2) con k2K)

Crittografia

Antini Gianni, 2000

Se k1=k2 si parla di crittosistema simmetrico, altrimenti di


crittosistema asimmetrico
Definizione: Un cifrario si dice perfetto se x*,y* si ha:
P(x=x*)=P(x=x*|y=y*) dove x chiaro e y cifrato
In altre parole lindecisione di sapere il plaintext senza
conoscere il testo cifrato la stessa che si ha conoscendo il
ciphertest.
I cifrari perfetti sono stati realmente costruiti e sono stati
utilizzati per molti anni per la protezione della hot-line USAURSS durante la guerra fredda.

Crittografia

Antini Gianni, 2000

A fronte dei cifrari perfetti (o dimostrabilmente sicuri) esistono


anche cifrari:
Computazionalmente sicuri La Teoria dellinformazione ci
dice che essi non possono essere sicuri (vedi oltre), ma il
problema crittoanalitico intrattabile.
Condizionalemente sicuri Sono cifrari di cui stata
dimostrata linattaccabilit, a patto che non si verifichino alcuni
eventi probabilistacamente improbabili.
Tutti i cifrari moderni realmente utilizzati appartengono alla
classe dei computazionalmente sicuri.
Alcuni autori hanno creato cifrari condizionalemente sicuri ma
essi sono del tutto inutilizzabili a causa dellutilizzo di tabelle
casuali (e non pseudocasuali) sterminate (Ueli Mauer Moon
Cipher).

Crittografia

Antini Gianni, 2000

Esempio di cifrario perfetto (One-time pad 1917 Gilbert


Verman AT&T):
1. Si costruisce una grande chiave casuale (e non
pseudocasuale) ad esempio utilizzando un rivelatore di
raggi cosmici.
2. Il cipher text costruito tramite un bit a bit fra il
messaggio in chiaro e la chiave casuale.
3. La chiave NON deve mai essere riutilizzata (one-time
pad).
Come facilmente immaginabile una spia non ha nessun
appiglio a cui aggrapparsi per crittoanalizzare il
messaggio.

Crittografia

Antini Gianni, 2000

Teorema: P(X=x|Y=y)=P(X=x)
Dimostrazione:
Siano X e Y di n bit dal T. di Bayes si ha:
P(X=x|Y=y)=P(X=x,Y=y)/P(Y=y)
dove:
P(X=x,Y=y)=P(X=x,k=xy)=P(X=x)P(k=xy)=P(X=x)2-n
mentre:
P(Y=y)=xP(X=x,Y=y)=xP(X=x)2-n=2-nxP(X=x)=2-n

P(X=x|Y=y)=P(X=x)2-n/2-n=P(X=x)

Purtroppo one-time pad molto scomodo da usare.

Crittografia

Antini Gianni, 2000

Definizione (Entropia): Sia x una v.a. con distribuzione di


probabilit p1,,pn si ha:
H(x)=-i=1,npiln(pi) [binit]
Definizione (Sicurezza perfetta secondo Shannon): La
sicurezza perfetta equivale a:
H(x)=H(x|y)
Teorema (Shannon): In un sistema crittografico perfetto la
lunghezza della chiave deve essere almeno uguale a quella
del plain text
Il Teorema di Shannon fu una vera e propria mina su ogni
speranza di costruzione di un cifrario perfetto utilizzando una
chiave piccola e quindi maneggevole.

Crittografia

Antini Gianni, 2000

Alla ricerca della perfezion perduta


Lidea che sta alla base di questa classe di cifrari riassunta
nello schema:
pseudorandom stream
generator
cipher text
key

plain text

Generare sequenze pseudocasuali che abbiano adeguate


probriet di randomicit uno dei problemi attuali della
crittografia.

Crittografia

Antini Gianni, 2000

Generatore pseudocasuale lineare


Il sequenze generatore fornisce sequenze pseudocasuali:
Sn-1

S2

S1

S0
output

n-1

I valori di S0, S1,,Sn rappresentano i bit della chiave che


innescano in generatore. Solo la sequenza 000 non si pu
esare. Si ha:
Sn-1(t+1)=0S0(t)+1S1(t)++n-1Sn-1(t)

Crittografia

Antini Gianni, 2000

Una prima propriet che deve soddisfare il registro la


seguente:
Definizione: Il registro si dice a periodo massimo se la
sequenza si ripete dopo 2n-1 cicli.
Se si associa al generatore il suo polinomio caratteristico si ha:
p(x)=0+1x++n-1xn-1+xn
dove x una variabile binaria.
Teorema: Si ha periodo massimo se il polinomio caratteristico
un polinomio primitivo (o di Marsenne).
Il polinomi di Marsenne sono tabulati, ad esempio si ha:
(a) x17+x12+1

Periodo 13072

(b) x607+x273+1

Periodo 10183

Il numero di atomi
delluniverso stimato 1080

Crittografia

Antini Gianni, 2000

Crittoanalisi
Un sistema di questo tipo del tutto inadeguato alle esigenze
della crittografia moderna. Supponiamo infatti che la spia
abbia la possibilit di accedere al registro e utilizzi un suo
plain text e valuti il corrispondente cipher text. Si ha:
S0(t+n)=0S0(t)+1S0(t+1)++n-1S0(t+n-1) [#]
Se la spia una un certo mi vede come fatto ci, ma:
So(i)=mici
Usando la [#] possibile scrivere un sistema lineare di n
equazioni in n incognite che pu essere facilmente risolto.
La spia ha calcolato la chiave segreta, il cifrario rotto!

Crittografia

Antini Gianni, 2000

Luso di generatori non lineari mette al sicuro da questo tipo di


attacchi. Ad esempio:
R1
R1
Output
R1
R1
Dove R1,,R4 sono registri lineari.
Tuttavia il background matematico sui registri non lineari (o
caotici) ancora troppo piccolo per fidarsi troppo. La storia
della crittografia suggerisce di procedere con i piedi di
piombo!

Crittografia

Antini Gianni, 2000

CRITTOSISTEMI SIMMETRICI
Gli utenti che utilizzano tale cifrari devono condividere un
segreto, rappresentato dalla chiave di cifratura / decifratura.
Le lingue scritte sono un esempio di cifrario simmetrico; in
questo caso le persone coinvolte condividono il segreto della
cultura che ha portato a imparare quella certa lingua.
E prassi comune che la comunit sappia tutto sul cifrario, in
modo che la sicurezza dipenda SOLO dalla chiave.
In ambiente militare, tuttora, si aggiunge a questa sicurezza la
non diffusione del cifrario.

Crittografia

Antini Gianni, 2000

Alice e Bob sono diventati e personaggi pi famosi in campo


crittografico, Tom invece la migliore spia del mondo.
Si ha:
Alice
ek(M)

Canale non
sicuro

Bob
dk(M)

Canale sicuro

k
La prima critica che si pu fare questa:
Se Alice e Bob hanno ha disposizione un canale sicuro che
bisogno hanno di usare un canale insicuro? La crittografia
asimmetrica la risposta a questo quesito.

Crittografia

Antini Gianni, 2000

DES
Il DES uno standard crittografico del NBS (diventato NIST).
Inventato dallIBM stato poi modificato dallNSA prima di
diventare standard. Questo ha causato molte critiche per il
fatto che le S-Box usate sembrano contenere trap-door che
permettono facilmente allNSA di forzare qualsiasi
comunicazione. Nessuno tuttora ha dimostrato questa
congettura.
Esso utilizza chiavi a 64 bit, ma 8 di essi non dei pariry bit,
quindi lo spazio delle chiavi ha cardinalit 256.
Il DES gi stato forzato molte volte con attacchi brute force,
ad esempio mediante luso di programmi per distribuire in rete
lenorme calcolo.

Crittografia

Antini Gianni, 2000

RC5 (Rivest, 1994)


Progettato da Rivest un della RSA. E un cifrario a blocchi
parametrico in cui si ha:

w - Lunghezza della parola, w>0

r - Numero di iterazioni, [0,255]

t - Lunghezza della chiave, [0,255]

La parte non lineare del cifrario consiste in rotazioni datadepending e non da S-Box (non molto amate da Rivest).
Vengono usate come operazioni fondamentali le seguenti:

Addizione mod 2w (senza riporto).

XOR bitwise

<<<

Rotazione ciclica a sinistra.

Crittografia

Antini Gianni, 2000

Fase 1- Espansione della chiave:


Viene costruita una tabella di 2(r+1) parole binarie. Nel fare
ci vengono usate due costanti magiche:
Pw=Odd[(e-2)2w]

Qw=Odd[(-1)2w]

dove Odd(x) lintero pi vicino a x, e la base dei logaritmi


naturali e il numero aureo (1+5)/2=1.6180
Nota:

a sono legati i numeri di Fibonacci.

interviene nella Teoria del Caos, dove sembra essere il numero pi caotico che
esista.

il rapporto fra la diagonale e il lato del pentagono regolare.

Crittografia

Antini Gianni, 2000

1. La chiave k[0b-1] di b byte viene convertita in parole di w


bit L[0c-1] dove c= 8b/w
2. Esegui la procedura:
for i=b-i downto 0 do L[i/u]=(L[i/u]<<<8)+k[i]

inizializzazione

3. Creazione di una tabella S:


s[0]=Pw
for i=1 to t=2(r+1) do S[i]=S[i-1]+Qw
i=j=A=B=0
per 3*max(t,c) fai
A=S[i]=(S[i]+A+B) <<< 3

espansione
vera e propria

B=L[j]=(L[j]+A+B) <<< (A+B)


i=(i+1) mod t
j=(j+1) mod c

Crittografia

Antini Gianni, 2000

Linput consiste in due registri A e B di w bit, loutput consiste nei medesimi


due registri.
Cifratura:
A = A+S[0]
B = B+S[1]
for i=1 to r do
A = ( (AB)<<<B ) + S[2*i]
B = ( (BA)<<<A ) + S[2*i+1]

Decifratura:
for i=r downto 1 do
B = ( (B-S[2*i+1]>>>A)A
A = ( (A-S[2*i])>>>B)B
B = B-S[1]
A = A-S[0]

Crittografia

Antini Gianni, 2000

BlowFish (Bruce Schneier, 1994)


Il cifrario consiste in una Feistel Network che itera una
funzione di codifica 16 volte. Il blocco di 64 bit e la chiave
pu arrivare a 448 bit.
Si hanno due fasi:
1-

Espansione della chiave:


Si passa da 448 bit a 4168 bit. Una particolarit di
questo algoritmo che lespansione effettuata
usando BlowFish stesso.

2-

Codifica vera e propria.

Crittografia

Antini Gianni, 2000

Codifica. Pu essere schematizzata da:


Plain Text
Funzione F
64

P1

Addizione mod 232

32

S1

32

S2

32

S3

32

S4

32

P2

32

32

32

P16

32

P18

F
32

P17

64

Cipher Text

32

Le S-Box sono composte


Da 256 parole di 32 bit ciascuna

Crittografia

Antini Gianni, 2000

Decodifica: La fase di decodifica identica a quella di


codifica, eccetto che per luso inverso delle sottochiavi.
Espansione della chiave: Viene fatta utilizzando lalgoritmo
BlowFish stesso, opportunamente inizializzato.
1. P1=0x243f6a88 P2=0x85a308d3 P3=0x13198a2e P4=0x03707344 e cos
via per tutti i Pi e tutte le entrate delle S-Box. Schneier non vincola ad usare
necessariamente le cifre di (come in questo caso) ma consiglia di usare una
stringa costante indipendente da BlowFish e possibilmente calcolabile in
loco.
2. Fare lo xor fra i primi 32 bit della chiave k e P1, i secondi 32 bit con P2,
continuare, eventualmente fino a P14. Ripetere il passo 2 con i restanti Pi.
3. Codificare 64 0 con BlowFish e gli attuali Pi e Sj.
4. Sostituire P1 e P2 con loutput di BlowFish del passo 3.
5. Codificare loutput del passo 3 con BlowFish.
6. Sostituire P3 e P4 con loutput di BlowFish del passo 5.
7. Continuare fino alla modifica di tutti i Pi e di tutte le S-Box.

Crittografia

Antini Gianni, 2000

Schneier consiglia i crittoanalisti di utilizzare versioni ridotte di


BlowFish, ad esempio con meno round, al fine di valutarne
laffidabilit crittografica.
La CounterPane (societ di Schneier) e Dr. Jobbs hanno
offerto diverse migliaia di dollari a chi rompe BlowFish. Tuttora
nessuno stato in grado di forzare versioni con pi di 3 round.

Crittografia

Antini Gianni, 2000

AES
Il NIST ha dichiarato che lo standard DES (anche nella
versione Triple-DES) non potr pi essere rinnovato dopo
il Dicembre 1998. A tale scopo stato istituito un concorso
internazionale con lo scopo di trovare un nuovo algoritmo
non coperto da copyright che dovr diventare il nuovo
standard.
Anche al fine di non suscitare sospetti la NSA non stata
coinvolta nel concorso e tutte le valutazioni sono alla luce
del sole.
www.nist.gov/aes
Il NIST stato molto esigente riguardo i requisiti di
candidatura. Fra di essi troviamo:

Crittografia

Antini Gianni, 2000

1. Lalgoritmo deve essere di tipo Block-cipher.


2. Lalgoritmo deve implementare un cifrario a chiave
simmetrica
3. La chiave deve essere compresa fra 128 e 256 bit.
4. Deve essere possibile limplementazione su smart card
(quindi deve accedere a risorse di calcolo limitate).
Molti fra i pi grandi esperti mondiali si sono cimentati nella
sfida, ma solo 15 algoritmi sono stati accettati per il 1
Round di prove. Fra di essi sono usciti i seguenti finalisti.
MARS

IBM

RIJNDAEL

J. Daemen, V. Rijmen

RC6

Rivest RSA Laboratories

SERPENT

R. Anderson, E. Biham, L. Knudsen

TwoFish

B. Schneier e altri.

Crittografia

Antini Gianni, 2000

Crittografia ASIMMETRICA
Whitfield Diffie e Martin Hellman nel 1976 introdussero un
nuovo concetto di crittografia in un articolo che diventato
storico. Praticamente la loro intuizione andavo contro tutti i
canoni della crittografia stessa: cifrare con una chiave
conosciuta da tutti. La loro idea si basava sulle funzioni oneway trapdoor.

Crittografia

Antini Gianni, 2000

Definizione: Una funzione f si dice one-way se


x il calcolo computazionale di y=f(x)
semplice (P) mentre il calcolo di x=f-1(y)
computazionalmente difficile (NP).
Definizione: Una funzione one-way detta
trapdoor se il calcolo x=f-1(y) pu essere reso
facile qualora si conoscano informazioni
aggiuntive (private).

Crittografia

Antini Gianni, 2000

Formalmente in un sistema crittografico a chiave pubblica


composto da due chiavi, una pubblica, nota a chiunque e una
privata, nota solo al suo possessore. In tal modo la fase di
cifratura avviene utilizzando la chiave pubblica mentre la
decifratura avviene utilizzando la chiave privata.
Se un sistema critt. Asimmetrico soddisfa la seguente
propriet:
dk(ek(M))=M
Si dice sicuro mentre se soddisfa la seguente:
ek(dk(M))=M
Si dice che garantisce autenticit.

Crittografia

Antini Gianni, 2000

Sicurezza: Alice vuole comunicare con Bob in modo sicuro.


1. Alice ottiene la chiave pubblica di Bob, ad esempio su
appositi server container.
2. Alice calcola il cipher text y=ekBob(M) e lo spedisce a Bob.
3. Bob legge il messaggio di Alice calcolando M=dkBob(y).
4. Nel caso in cui Tom sia in ascolto non ha alcun modo di
decifrare il messaggio y, in quanto per farlo dovrebbe
avere accesso a dkBob(), che per privata e quindi non
transita sulla rete.

Crittografia

Antini Gianni, 2000

Autenticit: Alice vuole spedire un messaggio M a Bob in


modo che Bob sia sicuro che lo abbia spedito Alice.
1. Alice calcola la firma digitale del messaggio M usando una
hash-funcion, H=h(M).
2. Alice calcola F=dkAlice(H) e spedisce a Bob la coppia (F,M)
3. Bob legge il messaggio M, calcola il suo digest H*=h(M).
4. Bob verifica che il messaggio sia stato spedito
effettivamente da Alice verificando che ekAlice(H*)=F. Se la
verifica ha successo Bob sicuro che il messaggio sia
stato spedito da Alice in quanto nessun altro avrebbe
potuto calcolare F.
Naturalmente possibile unire sicurezza ad autenticit. Lo
schema che segue chiarisce meglio questo fatto.

Crittografia

Antini Gianni, 2000

Chiave pubblica

Messaggio falso
(non di Alice)

Chiave privata

No
Alice
M

Bob

ekBob(M)

HF

Alice

Alice

Yes

ekBob(M)
F

Bob

HF
M

Bob

Messaggio
di Alice

Crittografia

Antini Gianni, 2000

Nonostante lintuizione di Diffie e Helman, tutti i loro sforzi per


cercare una funzione one-way trapdoor furono vani. Furono
infatti tre ricercatori del MIT a trovarne una.
Di essi uno era un matematico puro (Adlemann), laureato
sulla Teoria dei Numeri, laltro un crittoanalista (Shamir) e
infine un algoritmico (Rivest) dalla mente veramente feconda.
Rivest sfornava quasi quotidianamente funzioni candidate, ma
puntualmente Adlemann e Shamir trovavano pecche che le
rendevano inutilizzabili. Infine un notte del 1977 Rivest pens
ad una funzione in cui Adlemann e Shamir non trovarono
nessun difetto.
Era nato il cifrario RSA. Era nata la crittografia a chiave
pubblica moderna.

Crittografia

Antini Gianni, 2000

Il cifrario RSA (1977)


Progettato da Ron Rivest, Adi Shanir e Leonard Adlemann il
cifrario stato brevettato e quindi non pu essere utilizzato
senza il permesso della RSA inc.
Idea base: Dati due numeri primi p e q (molto grandi) p facile
calcolare il prodotto n=pq, mentre molto difficile calcolare la
fattorizzazione di n (NP). Per avere sicurezza occorre che p e
q siano almeno di 200 cifre decimali.
I migliori algoritmi di fattorizzazione attualmente disponibili
(Quadratic Sieve, Elliptic Curve Method, Euristica di Pollard,
ecc.) hanno tutti una complessit dellordine di:

Oe

ln( n ) ln(ln( n ))

Crittografia

Antini Gianni, 2000

Se p e q sono di 200 cifre decimali ciascuno allora n=pq di


400 digit, cio dellordine di 10400, da cui:
O(.)=e79=1034
Da cui lintrattabilit.
Algoritmo (RSA):
1.

Calcola due primi grandi p e q e quindi n=pq.

2.

Calcola la funzione toziente di Eulero (n)=(p-1)(q-1)

3.

Scegli un numero 0<e<(n) t.c. MCD(e,(n))=1, ed esempio prendi e primo


come il 4 numero di Fermat (e=10001)

4.

Calcola d t.c. ed=1 mod (n) d=e-1 mod (n).

5.

Definisci la chiave pubblica come (e,n).

6.

Definisci la chiave privata come (d,n).

7.

La funzione di cifratura ek(x)=xe mod n.

8.

La funzione di decifratura dk(x)=yd mod n.

Crittografia

Antini Gianni, 2000

Fatti (Correttezza di RSA):


Un Teorema di Teoria dei Numeri assicura che le
congruenze della forma x=y-1 mod (n) hanno ununica
soluzione quindi ! d t.c. ed=1 mod (n).
Occorre provare che dk(ek(M))=M:
dk(ek(M))=(Me)d mod n = Med mod n = M mod n = M
Si noti che RSA gode della notevole propriet:
dk(ek(M))=ek(dk(M))
E quindi pu essere usato come sistema che garantisce
sicurezza ed autenticit.

Crittografia

Antini Gianni, 2000

RSA particolarmente lento (circa 6000 volte rispetto a


BlowFish) quindi viene usato in un modo particolare.

Cifrario
Simmetrico

Ck(M)

Output
(Ck(M), eBob(k))
eBob(k)

Chiave di cifratura

Generatore di
numeri casuali

RSA
Chiave pubblica
di Bob

Praticamente RSA critta solamente la chiave di cifratura


utilizzata dal cifrario simmetrico. Tale chiave viene generata in
modo random OGNI volta che si cifra un messaggio.

Crittografia

Antini Gianni, 2000

Come trova numeri primi grandi


Un problema relativamente facile quello di trovare numeri
primi molto grandi, come richiesto da RSA.
I test di primalit utilizzati sono tutti di tipo probabilistico in
quanto quelli deterministici sono troppo lenti.
Definizione (Alg. Monte Carlo): Un alg. Monte Carlo yesbiased un alg. Probabilistico per un problema di decisione
in cui la risposta si sempre corretta mentre la risposta no
pu essere inesatta con probabilit fissata . Analogamente
sono definiti gli algortmi Monte Carlo no-biased.
Sia A un alg. Monte Carlo no-biased con =1/2 e sia x un numero candidato.
Quello che si fa eseguire A(x) n volte. Se lalgoritmo risponde no anche una
sola volta il numero sicuramente composto, mentre se risponde sempre si, la
probabilit che il numero sia primo :
P=1-2-n
Se n=100 si ha P=1-810-31.

Crittografia

Antini Gianni, 2000

Algoritmo di Miller-Rabin
E lalgoritmo probabilistico di test di primalit migliore finora
conosciuto. Esso ha una complessit si O(log n)3.
Miller-Rabin(n,t) // t=parametro di sicurezza.
1.

Set n-1=2sr con r dispari

2.

For i=1 to t do
2.1 scegli a caso a t.c. 2an-2
2.2 calcola y=ar mod n
2.3 if y1 and yn-1 esegui
2.3.1 j=1
2.3.2 while ( (js-1) and (yn-1) )
y=y2 mod n
se y=1 ritorna composito
j++
se yn-1 ritorna composito

3. Ritorna PRIMO

Crittografia

Antini Gianni, 2000

E facile trovare numeri primi?


Nonostante lefficienza nel testare se un numero sia primo o
meno resta lincognita che i numeri primi siano pochi e
quindi difficili da scovare.
Teorema (dei numeri primi):
Sia (n) la funzione di distribuzione dei numeri primi, cio il
numero di numeri primi che precedono n. Allora essa soddisfa
il seguente:

( n)
=1
lim
n n
ln n

Quindi se si cerca un numero primo di 100 cifre occorre


verificare solo ln(10100)=230 numeri consecutivi.

Crittografia

Antini Gianni, 2000

Scambio di chiavi di DIFFIE-HELLMAN


Qualora due utenti di una rete necessitino di un modo sicuro
per scambiarsi una chiave privata di cifratura, possono
usare il protocollo di Diffie-Hellman.
Vengono stabiliti, per tutti, i numeri n e g tali che 1<g<n.
1.

Alice sceglie un grande numero x e calcola:


X = gx mod n

2.

Bob sceglie un grande numero y e calcola:


Y = gy mod n

Alice spedisce a Bob X, mentre Bob spedisce ad Alice Y.

Alice calcola K = Yx mod n = (gy)x mod n = gxy mod n

Bob calcola K = Xy mod n = (gx)y mod n = gxy mod n

Se tutto andato bene K=K. Questa chiave K pu essere usata in uno


schema di cifratura simmetrico.

Crittografia

Antini Gianni, 2000

Sicurezza dello schema di Diffie-Hellman


Se Tom in ascolto non vede mai transitare la chiave di
cifratura K. Lunico modo che ha di calcolarla conoscere o x
o y che per vengono tenute segrete.
In via teorica possibile calcolare x da X, come x=loggX e
y=loggY. Tuttavia questo calcolo computazionalmente
intrattabile sui campi finiti.
La scelta di n e di g abbastanza delicata. Infatti nonostante
il calcolo di un logaritmo discreto sia difficile nel caso generale
nessuno ci assicura che non esistano classi in cui tale calcolo
diventa polinomiale. Tali classi sono state trovate anche dove
non ce ne dovrebbe essere. Il calcolo rimane difficile se:
n deve essere un numero primo (di almeno 1024 bits), cos come (n-1)/2.
g deve essere una radice primitiva modulo n.

Crittografia

Antini Gianni, 2000

Diffie-Hellman di conferenza
Lo schema di Diffie-Hellman pu essere esteso per
permettere a pi utenti di condividere una stessa chiave di
cifratura. Facciamo un esempio con tre persone:
1.

Alice sceglie un grande x e calcola: X = gx mod n

2.

Bob sceglie un grande y e calcola: Y = gy mod n

3.

Carol sceglie un grande z e calcola: Z = gz mod n

4.

Alice spedisce X a Bob, Bob spedisce Y a Carol, Carol spedisce Z a Alice.

5.

Alice calcola Z=Zx mod n, Bob calcola X=Xy mod n,Carol calcola Y=Yz mod n

6.

Alice spedisce Y a Bob, Bob spedisce X a Carol e Carol spedisce Y a Alice

7.

Alice calcola k = Yx mod n

8.

Bob calcola k = Zy mod n

9.

Carol calcola k = Xz mod n

10. La chiave k pu essere usata fra Alice, Bob e Carol come chiave di
cifratura/decifratura in un crittosistema simmetrico.

Crittografia

Antini Gianni, 2000

Crittosistema di ElGamal
Pu essere considerato una variante di Diffie-Hellman ed
tuttoggi molto utilizzato; ad esempio le ultime versioni di PGP
usano questo schema.
E stato dimostrato formalmente che la rottura di ElGamal
equivale alla rottura di Diffie-Hellman, in quanto si basa sulla
difficolt di calcolo del logaritmo discreto su campi finiti.
In aggiunta a Diffie-Hellman, lo schema di ElGamal pu
essere utilizzato anche per la cifratura/decifratura e per
garantire autenticit.

Crittografia

Antini Gianni, 2000

Creazione delle chiavi. Ogni utente del sistema deve:


1. Genera un numero primo molto grande p e un
generatore del campo finito moltiplicativo Zp*.
2. Scegli un numero casuale a, con 1ap-2 e calcola
a mod p
3. La chiave pubblica la tripla (p,,a), la chiave privata
a.
Si noti che se i valori p e sono comuni e fissati per gli utenti,
la chiave privata diventa pi maneggevole, essendo
composta dal solo a.

Crittografia

Antini Gianni, 2000

Nota (sui gruppi finiti moltiplicativi):


Un gruppo (S,) un insieme S con un operazione binaria ,
definita su S che ha le seguenti propriet:
1. Chiusura: a,bS si ha abS.
2. Identit: eS t.c. ea=ae=a aS.
3. Associativit: a,b,cS si ha (ab)c=a(bc)
4. Reciproco o opposto: aS ! bS t.c. ab=ba=e
Se vale anche la propriet commutativa il gruppo si dice
abeliano.
Teorema: Il gruppo finito (Zp,.) o Zp* un gruppo abeliano.
I gruppi finiti Zp* in cui p primo sono detti anche gruppi di
Galois e sono importantissimi in crittografia.

Crittografia

Antini Gianni, 2000

Un generatore (o elemento primitivo) per il gruppo di Galois


Zp* un numero Zp* t.c. applicando ricorsivamente
loperazione di moltiplicazione (mod p) si ottengono tutti gli
elementi del campo.
In altre parole per un generatore accade:
<>={k mod p , k>0}=Zp*
Teorema 1: Un campo Zn* ammette generatori sse n=2, 4, pk,
2pk dove p primo 1.
Si noti che i campi di Galois ammettono generatori.
Teorema 2: Sia un genratore di Zn*. Allora b=i mod n
ancora un generatore sse MCD(i,(i))=1. Inoltre in numero di
generatori ((i)).
Esistono efficienti algoritmi per il calcolo dei generatori di Zp*.

Crittografia

Antini Gianni, 2000

Cifratura:
1. Trasforma il messaggio M come un numero da 0 a p-1
2. Genera un numero casuale k t.c. 1kp-2
3. Calcola x=k mod p e y=M(a)k mod p
4. Spedisci il testo cifrato (x,y).
Decifratura:
1. Usa la chiave privata a per calcolare xp-1-a=x-a=-ak
2. Ricostruisci il messaggio M tramite il calcolo (x-a)y mod p,
infatti (x-a)y=-akM-ak=M.
Si noti che un evidente difetto dello schema di ElGamal il
raddoppio del ciphertext rispetto al plaintext.

Crittografia

Antini Gianni, 2000

Esempio: p=2357 =2 a=1751.


a mod p = 21751 mop 2357 = 1185
La chiave pubblica (2357,2,1185)
Sia M=2035 il messaggio e k=1520 il numero casuale, si ha:
x=21520 mod 2357 = 1430, y=2035 11851520 mod 2357=697
Il messaggio spedito quindi (1430,697).
Per ricostruire il messaggio originale si calcola:
xp-1-a=1430605 mod 2357 = 872
M=872 697 mod 2357 = 2035.

Crittografia

Antini Gianni, 2000

Crittografia PROBABILISTICA (Cenni)


Dovuta a Silvio Micali e Shafi Goldwasser (entrambi del MIT),
la crittografia probabilistica uno dei campi attuali di ricerca.
La definizione di sicurezza alla Shannon troppo stringente,
infatti essa presuppone che lavversario non sia in grado di
trarre informazioni sul plaintext, dato il ciphertext, avendo a
disposizione una macchina infinita. Come primo corollario di
ci si ha che la lunghezza della chiave deve essere almeno
quella del plaintext.
La crittografia probabilistica introduce nuovi concetti di
sicurezza.

Crittografia

Antini Gianni, 2000

Definizione: Un crittosistema a chiave pubblica si dice


polinomialmente sicuro se dati due plaintext m1 e m2 ed i
rispettivi ciphertext c(m1) e c(m2), non possibile distinguere,
in tempo polinomiale:
m1
m2

C(m)1
C(m)2

con probabilit maggiore di .


Intuitivamente il ciphertext non fornisce nessuna informazione
parziale sul plaintext se si fanno calcoli polinomiali. In altre
parole una riformulazione polinomiale della sicurezza alla
Shannon.
Nota: Tutti i calcolatori moderni lavorano in tempo
polinomiale. Anche i calcolatori paralleli non possono essere
assimilati ad una macchina di Turing non deterministica.

Crittografia

Antini Gianni, 2000

I due migliori algoritmi di crittografia probabilistica sono:


Algoritmo di Goldwasser-Micali, basato sullintrattabilit dei
residui quadratici.
Algoritmo di Blum-Goldwasser, basato sullintrattabilit della
fattorizzazione. Esso utilizza, fra laltro, il generatore di bit
pseudocasuali Blum-Blum-Shub, considerato il migliore per
ora conosciuto, i cui bit vengono messi a con i bit del
plaintext.
Maggiori dettagli possono essere trovati in:
Handbook of Applied Cryptography A. Menezes, P. van
Oorschot, S. Vanstone.
Articoli originali degli autori.

Funzioni HASH
Teoria e utilizzo nei
sistemi crittografici

Gianni Antini, 2000

Hash Funcion

Antini Gianni, 2000

Definizioni Generali
h

Una funzione Hash h calcola il valore z=h(x) per x in X. Di


solito card(X)>>card(Z), ad esempio si ha X a 1024 bit
e Z a 128 bit. Il valore z=h(x) prende il nome di digest.
Addirittura linsieme X pu essere un intero file di cui
viene calcolato il digest. In tal caso quindi si ha una
card(X)=8*file_length.

Hash Funcion

Antini Gianni, 2000

Def. Dati due x e x t.c. xx. Se h(x)=h(x) si dice che la


coppia (x,x) una collisione per h.
Def. (Sicurezza debole): h debolmente priva di collisioni
se, dato un messaggio x, computazionalmente
inammissibile trovare un x t.c. xx e h(x)=h( x).
Def. (Sicurezza forte): h fortemente sicura se
computazionalmente inammissibile trovare due x e x
t.c. xx e h(x)=h( x).
Def. (One-way): h one-way se, dato un digest z e
computazionalmente inammissibile trovare x t.c.
z=h(x).

Hash Funcion

Teorema:
Sicurezza forte

Antini Gianni, 2000

one-way
Sicurezza debole

Nonostante il background matematico sulle funzioni hash,


molto difficile dimostrare analiticamente che una data
funzione h() soddisfi le propriet enunciate. Quello che
accade che una funzione hash considerata sicura
finch qualcuno non trova un meccanismo per
produrre collisioni (MD4).
La scelta della cardinalit dellinsieme Z un fattore
molto importante nella progettazione di una funzione
hash. Infatti se essa troppo piccola si corre il pericolo
di cadere vittime dellattacco del compleanno.
Viceversa una cardinalit grande pu rendere vana la
motivazione per cui stata costruita la funzione hash.

Hash Funcion

Antini Gianni, 2000

Attacco del compleanno


Sia h:XZ e sia |X|=m, |Z|=n. Si fa lipotesi che |X|2|Z|.
Si noti che questa ipotesi non affatto restrittiva, infatti
basta che il digest sia pi piccolo di almeno un bit
rispetto a |X|.
Si scelgono a caso k elementi di X e vi valuta la
probabilit di avere collisioni.
z1 : arbitraria
z2 : P(z2z1)=1-P(z2=z1)1-1/n
z3 : P(z3z2, z3z1 | z1z2)==1-2/n
:
:

Hash Funcion

Antini Gianni, 2000

P(non avere collisioni) =

k 1

(
1
)

k
i =1

Tenendo conto che e-x1-x (Taylor) si ha:


k 1

= e

=e

1
n

k 1

i
i =1

=e

k ( k 1)
2n

i =1

Da cui:
k ( k 1)

P(avere almeno 1 collisione)== 1-e 2 n

2n ln
1
6

Hash Funcion

Antini Gianni, 2000

Nel paradosso del compleanno si ha:


=0.5 n=365 k=22.3
da cui la formulazione.
Esempio:
Sia |Z|=240, =0.5. Sia ha k1.000.000
Si ha probabilit di trovare almeno una
collisione scegliendo 106 valori casuali (limite
computazionale facilmente raggiungibile).
Sia |Z|=2128, =0.5. Sia ha k2 1019 da cui la
sicurezza computazionale.
7

Hash Funcion

Antini Gianni, 2000

Si noti che la sicurezza computazionale menzionata non


implica che non sia possibile trovare usa strategia per
provocare facilmente collisioni. Ad esempio:
Hans Dobbertin MD4 is not collision free
1995
Ha mostrato una ingegnosa tecnica che, di fatto, ha rotto
tale funzione.
Rivest, il progettista di MD4, intravedendone
la debolezza aveva gi pubblicato una nuova
hash-function, chiamata MD5,
computazionalmente molto pi sicura.

Ron Rivest - MIT

Hash Funcion

Antini Gianni, 2000

SHS
(Secure Hash Standard)
Nel 1992 il NIST (Nation Institute of Standard
and Tecnology) ha introdotto una nuova
funzione hash chiamata SHS/0,
successivamente modificata, nel 1994, con il
nome di SHS/1.
Si tratta di una hash-function standardizzata e
libera (non protetta da copyright).

Hash Funcion

Antini Gianni, 2000

La principali caratteristiche sono:

Progettata per architetture Big-Endian (vedi


processori SPARC).
Produce un digest di 160 bit.
Lavora su blocchi di 512 bit.
Nonostante sia pi lenta di MD5, essa viene
considerata pi sicura.

Il modello di lavoro su blocchi di 512 bit (introdotto da


Rivest) diventato una consuetudine per quasi tutte
le hash-function.

10

Hash Funcion

Antini Gianni, 2000

1 0 0
Messaggio x

0
64 bit = |x|

|M| = 0 mod 512 [1]


Si crea un buffer in cui si mette il messaggio di cui si vuole
calcolare il digest, quindi un singolo 1. Seguono un numero
di zeri tali che lequazione [1] sia soddisfatta. Per finire
vengono accodati 64 bit rappresentativi della lunghezza del
messaggio x. Se |x|>264 vengono considerati i primi 264 bit.
Il blocco M viene diviso in sottoblocchi di 512 bit ciascuno.
Ognuno di questi sottoblocchi viene elaborato
separatamente.

11

Hash Funcion

Antini Gianni, 2000

Elaborazioni di un singolo sottoblocco (SHS/0)


Il sottoblocco viene suddiviso in 16 word da 32 bit.
(2) Queste 16 word sono le prime di un array x di 80
word da 32 bit ciascuna.
(3) Si ha una espansione da 16 a 80 word, tramite la
seguente procedura:
for k=16 to 79
x[k]=x[k-3] x[k-8] x[k-14] x[k-16]
(4) Inizializza 5 word H0, H1, H2, H3, H4 e H5 tramite le
seguenti costanti:
H0=0x67452301 H1=0xefcdab89 H2=0x98badcfe
H3=0x10325476 H4=0xcbd2e1f0
Si noti che linizializzazione viene fatta solo per il
primo sottoblocco, per gli altri vengono utilizzati gli
Hi in uscita.
(1)

12

Hash Funcion

Antini Gianni, 2000

(5) Esegui:
A=H0, B=H1, C=H2, D=H3, E=H4, F=H5
for t=0 to 79
temp = (A <<5)+ft(B,C,D)+E+x[t]+kt
E=D, D=C, C=B<<30, B=A, A=temp
H0=H0+A, H1=H1+B, H2=H2+C, H3=H3+D
H4=H4+E, H5=H5+F
(6) Finito lultimo sottoblocco, il valore a 160 bit:
H0H1H2H3H4H5
il digest.

13

Hash Funcion

Antini Gianni, 2000

Le funzioni citate sono:

ft(B,C,D) =

kt =

14

(B & C) | (!B) & D)


B^C^D
(B & C) | (B & D) | (C & D)
B^C^D

0x5a827999
0x6ed9eba1
0x8f1bbcdc
0xca62c1d6

0t19
20t39
40t59
69t79

0t19
20t39
40t59
69t79

Hash Funcion

Antini Gianni, 2000

SHS/1
Nel 1994 il NIST ha attuato una modifica dello
standard, facendo proprie varie segnalazioni
apportate dai crittoanalisti e dallNSA.
Fu modificata la fase di espansione del sottoblocco,
Introducendo una rotazione circolare a sinistra,
praticamente:
for k=16 to 79
x[k]=( x[k-3] x[k-8] x[k-14] x[k-16] ) <<< 1
Nota: Nei linguaggi (Java), o processori (smart card),
in cui non esiste tale operazione possibile
sostituirla da:
(x<<<n) (x<<n)|(x>>32-n)

15

Shift semplice

Rotazione

Hash Funcion

Antini Gianni, 2000

TIGER
Progettata da Ross Anderson e Eli Biham, Tiger una
hash-function ottimizzata per i processori di nuova
generazione (64 bit), ma discretamente veloce
anche su processori da 32 e 16 bit.
Anderson e Biham sostengono che le hash-function
MD5-type, fra cui anche SHS, mal si adattano ai
nuovi processori. Inoltre, essendo tutte strutturate in
maniera analoga, non dovrebbe mancare molto alla
loro crittoanalisi definitiva utilizzando, ad esempio,
attacchi Dobbertin-Type. A sostegno di ci, c da
dire che alcuni autori hanno crittoanalizzato MD5
con meno round.

16

Hash Funcion

Antini Gianni, 2000

La principali caratteristiche sono:

Progettata per architetture Little-Endian (vedi DEC


ALPHA) a 64 bit.
Produce un digest di 192 bit in modo da essere
considerata sicura verso gli attacchi del compleanno
ancora per molti anni.
Lavora su blocchi di 512 bit in modo analogo a
SHS.
Vengono utilizzate 4 S-Box di espansione altamente
non lineari e sicuramente prive di trapdoor, in
quanto viene fornito lalgoritmo per calcolarle*.

(*) Critiche al DES.

17

Hash Funcion

Antini Gianni, 2000

La struttura del blocco la stessa di SHS, ma pi comodo


vedere il buffer come da destra a sinistra*.

0 0 1

64 bit = |x|

Messaggio x

|M| = 0 mod 512


(*) Questo risolve un problema implementativo che ho incontrato.
Dato che normalmente si lavora con i byte, quando si
introduce il singolo 1, occorre fare un append del valore
0x01, mentre in SHS del valore 0x80.

18

Hash Funcion

Antini Gianni, 2000

Dato che la hash-function ottimizzata per processori


a 64 bit, tutti i risultati parziali sono di questa
lunghezza. Questo pu provocare inefficienze nei
linguaggi privi di dati predefiniti a 64 bit. In Java si
usano i long.
Tiger esegue le seguenti istruzioni per ogni blocco di
512 bit (8 word).
i.
Inizializza:
a = 0x0123456789abcdef
b = 0xfedcba9876543210
c = 0xf096a5b4c3b2e187
ii.

Suddividi il blocco in 8 word da 64 bit ciascuna:


x[i] per i=0,,7 (ricordarsi dellarchitettura LE)

19

Hash Funcion
iii.

Antini Gianni, 2000

Esegui quindi
save(a,b,c)
pass(a,b,c,5)
key_schedule
pass(c,a,b,7)
key_schedule
pass(b,c,a,9)
feed_forward
dove:

save(a,b,c)
aa=a, bb=b, cc=c

20

Hash Funcion

Antini Gianni, 2000

pass(a,b,c,mul)
round(a,b,c,x[0],mul)
round(b,c,a,x[1],mul)
round(c,a,b,x[2],mul)
round(a,b,c,x[3],mul)
round(b,c,a,x[1],mul)
round(c,a,b,x[2],mul)
round(a,b,c,x[0],mul)
round(b,c,a,x[1],mul)
round(a,b,c,x,mul)
c^=x
a-=t1[c_0]^ t2[c_2]^ t3[c_4]^ t4[c_6]
b-=t4[c_1]^ t5[c_3]^ t2[c_5]^ t1[c_7]
b*=mul
C_i li-esimo byte di c (sono 8 i byte di c)

21

Hash Funcion

Antini Gianni, 2000

key_schedule
x[0]-=x[7]^0xa5a5a5a5a5a5a5a5
x[1]^=x[0]
x[2]+=x[1]
x[3]-=x[2]^( !x[1] << 19 ) x[4]^=x[3]
x[5]+=x[4]
x[6]-=x[5]^( !x[4] >>23 )
x[7]^=x[6]
x[0]+=x[7]
x[1]-=x[0]^( !x[7] << 19 ) x[2]^=x[1]
x[3]+=x[2]
x[4]-=x[3]^( !x[2] >>23 )
x[5]^=x[4]
x[6]+=x[5]
x[7]-=x[6]^0x0123456789abcdef
feed_forward
a^=aa

22

b-=bb

c+=cc

Hash Funcion

Antini Gianni, 2000

A questo punto se ci sono altri 512 bit da trattare si


riesegue lalgoritmo (senza inizializzazione delle
variabili) altrimenti il digest formato dalla
giustapposizione di:
a||b||c
Nota:
Nel passo round() vengono utilizzate le 4 S-Box, t1,
t2, t3 e t4. Esse sono 4 tabelle di 256 long ognuna:
0
1
2
:
:

Il byte c_i viene usato per selezionare


la riga della tabella. Il valore di uscita
la word di 64 bit contenuta nella
cella.

255

Complessivamente si realizzata una


espansione di un fattore 4.
64 bit

23

Hash Funcion

Antini Gianni, 2000

Note conclusive sulla sicurezza di Tiger:


Gli autori congetturano le seguenti:
1. La non linearit dovuta essenzialmente alle SBox. Questo dovrebbe aiutare a resistere ad
attacchi di crittoanalisi differenziale di tipo BihamShamir.
2. Tiger dovrebbe resistere bene ad attacchi
Dobbertins differential.
3. La complessit minima per trovare una
retroimmagine dovrebbe aggirarsi su O(296).

24

Riferimenti bibliografici
Riferimenti cartacei e
elettronici sugli
argomenti trattati.
Gianni Antini, 2000

Antini Gianni, 2000

Una trattazione a carattere algoritmico pu essere trovata in:


Applied Cryptography Bruce Schneier John Wiley e Son
Handbook of Applied Cryptography A. Menezes, P. van
Oorschot and S. Vanstone, CRC Press
Di carattere decisamente pi teorico:
Doug R. Stinson Cryptography: Theory and Pratice
CRC Press, 1995
Ancora pi teoriche sono le seguenti dispense della Prof.sa
Goldwasser del MIT
Lecture Notes on Cryptography Shafi Goldwasser, Mihir
Bellare June 1997

Antini Gianni, 2000

Fra i siti in cui trovare informazioni cito


http://theory.lcs.mit.edu/
ed in particolare:
http://theory.lcs.mit.edu/~rivest/
in cui possibile trovare anche una enorme pagina di link.