Introduzione Alla Crittografia - STLABURSS durante la guerra fredda. Crittografia © Antini...

40
© Gianni Antini, 2000 Introduzione Alla Crittografia Sistemi crittografici simmetrici e asimmetrici. © Antini Gianni, 2000 Crittografia Si parla di testo in chiaro (plain-text) riferendosi al messaggio originale. Il testo in chiaro viene crittografato mediante l’uso 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. Definizioni Generali

Transcript of Introduzione Alla Crittografia - STLABURSS durante la guerra fredda. Crittografia © Antini...

Page 1: Introduzione Alla Crittografia - STLABURSS durante la guerra fredda. Crittografia © Antini Gianni, 2000 A fronte dei cifrari perfetti (o dimostrabilmente sicuri) esistono anche cifrari:

© Gianni Antini, 2000

Introduzione Alla Crittografia

Sistemi crittografici simmetrici e asimmetrici.

© Antini Gianni, 2000Crittografia

Si parla di testo in chiaro (plain-text) riferendosi al messaggio originale.

Il testo in chiaro viene crittografato mediante l’uso 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.

Definizioni Generali

Page 2: Introduzione Alla Crittografia - STLABURSS durante la guerra fredda. Crittografia © Antini Gianni, 2000 A fronte dei cifrari perfetti (o dimostrabilmente sicuri) esistono anche cifrari:

© Antini Gianni, 2000Crittografia

Nel 1949 C. Shannon pubblica un articolo che da l’inizio a quella che oggi viene chiamata la Teoria dell’Informazione.

L’unione 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 k1∈K)

FD: funzione di decifratura (è una FD(k2) con k2∈K)

Crittografia Teorica

© Antini Gianni, 2000Crittografia

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 l’indecisione 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 USA-URSS durante la guerra fredda.

Page 3: Introduzione Alla Crittografia - STLABURSS durante la guerra fredda. Crittografia © Antini Gianni, 2000 A fronte dei cifrari perfetti (o dimostrabilmente sicuri) esistono anche cifrari:

© Antini Gianni, 2000Crittografia

A fronte dei cifrari perfetti (o dimostrabilmente sicuri) esistono anche cifrari:

• Computazionalmente sicuri – La Teoria dell’informazione ci dice che essi non possono essere sicuri (vedi oltre), ma il problema crittoanalitico è intrattabile.

• Condizionalemente sicuri – Sono cifrari di cui è stata dimostrata l’inattaccabilità, 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 dell’utilizzo di tabelle casuali (e non pseudocasuali) sterminate (Ueli Mauer – MoonCipher).

© Antini Gianni, 2000Crittografia

Esempio di cifrario perfetto (One-time pad – 1917 GilbertVerman 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.

Page 4: Introduzione Alla Crittografia - STLABURSS durante la guerra fredda. Crittografia © Antini Gianni, 2000 A fronte dei cifrari perfetti (o dimostrabilmente sicuri) esistono anche cifrari:

© Antini Gianni, 2000Crittografia

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=x⊕y)=P(X=x)P(k=x⊕y)=P(X=x)2-n

mentre:

P(Y=y)=∑xP(X=x,Y=y)=∑xP(X=x)2-n=2-n∑xP(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.

© Antini Gianni, 2000Crittografia

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.

Page 5: Introduzione Alla Crittografia - STLABURSS durante la guerra fredda. Crittografia © Antini Gianni, 2000 A fronte dei cifrari perfetti (o dimostrabilmente sicuri) esistono anche cifrari:

© Antini Gianni, 2000Crittografia

“Alla ricerca della perfezion perduta”

L’idea che sta alla base di questa classe di cifrari è riassuntanello schema:

Generare sequenze pseudocasuali che abbiano adeguate probrietà di randomicità è uno dei problemi attuali della crittografia.

cipher textplain text

pseudorandom stream

generator

key

© Antini Gianni, 2000Crittografia

Generatore pseudocasuale lineare

Il sequenze generatore fornisce sequenze pseudocasuali:

I valori di S0, S1,…,Sn rappresentano i bit della chiave che “innescano” in generatore. Solo la sequenza 00…0 non si puòesare. Si ha:

Sn-1(t+1)=α0S0(t)+α1S1(t)+…+αn-1Sn-1(t)

S0S1S2Sn-1

outputαn-1 α2 α1 α0

Page 6: Introduzione Alla Crittografia - STLABURSS durante la guerra fredda. Crittografia © Antini Gianni, 2000 A fronte dei cifrari perfetti (o dimostrabilmente sicuri) esistono anche cifrari:

© Antini Gianni, 2000Crittografia

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 dell’universo è stimato 1080

© Antini Gianni, 2000Crittografia

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)=mi⊕ci

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!

Page 7: Introduzione Alla Crittografia - STLABURSS durante la guerra fredda. Crittografia © Antini Gianni, 2000 A fronte dei cifrari perfetti (o dimostrabilmente sicuri) esistono anche cifrari:

© Antini Gianni, 2000Crittografia

L’uso di generatori non lineari mette al sicuro da questo tipo di attacchi. Ad esempio:

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!

R1

R1

R1

R1

Output

© Antini Gianni, 2000Crittografia

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 lanon diffusione del cifrario.

Page 8: Introduzione Alla Crittografia - STLABURSS durante la guerra fredda. Crittografia © Antini Gianni, 2000 A fronte dei cifrari perfetti (o dimostrabilmente sicuri) esistono anche cifrari:

© Antini Gianni, 2000Crittografia

Alice e Bob sono diventati e personaggi più famosi in campo crittografico, Tom è invece la migliore spia del mondo.

Si ha:

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.

Alice ek(M)

Bob dk(M)

Canale non sicuro

Canale sicuro

k

© Antini Gianni, 2000Crittografia

DES

Il DES è uno standard crittografico del NBS (diventato NIST).

Inventato dall’IBM è stato poi modificato dall’NSA prima di diventare standard. Questo ha causato molte critiche per il fatto che le S-Box usate sembrano contenere trap-door che permettono facilmente all’NSA 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 l’uso di programmi per distribuire in rete l’enorme calcolo.

Page 9: Introduzione Alla Crittografia - STLABURSS durante la guerra fredda. Crittografia © Antini Gianni, 2000 A fronte dei cifrari perfetti (o dimostrabilmente sicuri) esistono anche cifrari:

© Antini Gianni, 2000Crittografia

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 data-depending 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.

© Antini Gianni, 2000Crittografia

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) è l’intero 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.

Page 10: Introduzione Alla Crittografia - STLABURSS durante la guerra fredda. Crittografia © Antini Gianni, 2000 A fronte dei cifrari perfetti (o dimostrabilmente sicuri) esistono anche cifrari:

© Antini Gianni, 2000Crittografia

1. La chiave k[0…b-1] di b byte viene convertita in parole di w bit L[0…c-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]

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

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

i=(i+1) mod t

j=(j+1) mod c

inizializzazione

espansionevera e propria

© Antini Gianni, 2000CrittografiaL’input consiste in due registri A e B di w bit, l’output consiste nei medesimi due registri.

Cifratura:A = A+S[0]

B = B+S[1]

for i=1 to r do

A = ( (A⊕B)<<<B ) + S[2*i]

B = ( (B⊕A)<<<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]

Page 11: Introduzione Alla Crittografia - STLABURSS durante la guerra fredda. Crittografia © Antini Gianni, 2000 A fronte dei cifrari perfetti (o dimostrabilmente sicuri) esistono anche cifrari:

© Antini Gianni, 2000Crittografia

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 chiavepuò 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 l’espansione è effettuata usando BlowFish stesso.

2- Codifica vera e propria.

© Antini Gianni, 2000CrittografiaCodifica. Può essere schematizzata da:

Plain Text

F

F

F

P18 P17

P16

P2

P1

Cipher Text

64

32

32

32

64

3232

S1

S2

S3

S4

+

+

Addizione mod 232

32

32

8 32

8

8

8

32

32

32

Funzione F

Le S-Box sono composteDa 256 parole di 32 bit ciascuna

Page 12: Introduzione Alla Crittografia - STLABURSS durante la guerra fredda. Crittografia © Antini Gianni, 2000 A fronte dei cifrari perfetti (o dimostrabilmente sicuri) esistono anche cifrari:

© Antini Gianni, 2000Crittografia

Decodifica: La fase di decodifica è identica a quella di codifica, eccetto che per l’uso inverso delle sottochiavi.

Espansione della chiave: Viene fatta utilizzando l’algoritmo 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 l’output di BlowFish del passo 3.

5. Codificare l’output del passo 3 con BlowFish.

6. Sostituire P3 e P4 con l’output di BlowFish del passo 5.

7. Continuare fino alla modifica di tutti i Pi e di tutte le S-Box.

© Antini Gianni, 2000Crittografia

Schneier consiglia i crittoanalisti di utilizzare versioni ridotte di BlowFish, ad esempio con meno round, al fine di valutarne l’affidabilità 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.

Page 13: Introduzione Alla Crittografia - STLABURSS durante la guerra fredda. Crittografia © Antini Gianni, 2000 A fronte dei cifrari perfetti (o dimostrabilmente sicuri) esistono anche cifrari:

© Antini Gianni, 2000Crittografia

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:

© Antini Gianni, 2000Crittografia

1. L’algoritmo deve essere di tipo Block-cipher.

2. L’algoritmo deve implementare un cifrario a chiave simmetrica

3. La chiave deve essere compresa fra 128 e 256 bit.

4. Deve essere possibile l’implementazione 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.

Page 14: Introduzione Alla Crittografia - STLABURSS durante la guerra fredda. Crittografia © Antini Gianni, 2000 A fronte dei cifrari perfetti (o dimostrabilmente sicuri) esistono anche cifrari:

© Antini Gianni, 2000Crittografia

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 one-way trapdoor.

© Antini Gianni, 2000Crittografia

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).

Page 15: Introduzione Alla Crittografia - STLABURSS durante la guerra fredda. Crittografia © Antini Gianni, 2000 A fronte dei cifrari perfetti (o dimostrabilmente sicuri) esistono anche cifrari:

© Antini Gianni, 2000Crittografia

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à.

© Antini Gianni, 2000Crittografia

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.

Page 16: Introduzione Alla Crittografia - STLABURSS durante la guerra fredda. Crittografia © Antini Gianni, 2000 A fronte dei cifrari perfetti (o dimostrabilmente sicuri) esistono anche cifrari:

© Antini Gianni, 2000Crittografia

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.

© Antini Gianni, 2000Crittografia

Chiave pubblica

Chiave privata

M

Alice Bob

HF

Bob

Alice

Alice

BobM

HF

= Yes

No

Messaggio falso(non di Alice)

Messaggiodi Alice

ekBob(M) F

ekBob(M)

F

Page 17: Introduzione Alla Crittografia - STLABURSS durante la guerra fredda. Crittografia © Antini Gianni, 2000 A fronte dei cifrari perfetti (o dimostrabilmente sicuri) esistono anche cifrari:

© Antini Gianni, 2000Crittografia

Nonostante l’intuizione 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, l’altro 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.

© Antini Gianni, 2000Crittografia

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à dell’ordine di:

( )))ln(ln()ln( nneO

Page 18: Introduzione Alla Crittografia - STLABURSS durante la guerra fredda. Crittografia © Antini Gianni, 2000 A fronte dei cifrari perfetti (o dimostrabilmente sicuri) esistono anche cifrari:

© Antini Gianni, 2000Crittografia

Se p e q sono di 200 cifre decimali ciascuno allora n=pq è di 400 digit, cioè dell’ordine di 10400, da cui:

O(.)=e79=1034

Da cui l’intrattabilità.

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.

© Antini Gianni, 2000Crittografia

Fatti (Correttezza di RSA):

• Un Teorema di Teoria dei Numeri assicura che le congruenze della forma x=y-1 mod ϕ(n) hanno un’unica 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à.

Page 19: Introduzione Alla Crittografia - STLABURSS durante la guerra fredda. Crittografia © Antini Gianni, 2000 A fronte dei cifrari perfetti (o dimostrabilmente sicuri) esistono anche cifrari:

© Antini Gianni, 2000Crittografia

RSA è particolarmente lento (circa 6000 volte rispetto a BlowFish) quindi viene usato in un modo particolare.

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.

RSA

M CifrarioSimmetrico

Generatore dinumeri casuali

Chiave di cifratura

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

Chiave pubblicadi Bob

keBob(k)

Ck(M)

© Antini Gianni, 2000Crittografia

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 “yes-biased” è 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 l’algoritmo 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-8•10-31.

Page 20: Introduzione Alla Crittografia - STLABURSS durante la guerra fredda. Crittografia © Antini Gianni, 2000 A fronte dei cifrari perfetti (o dimostrabilmente sicuri) esistono anche cifrari:

© Antini Gianni, 2000Crittografia

Algoritmo di Miller-Rabin

E’ l’algoritmo 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. 2≤a≤n-2

2.2 calcola y=ar mod n

2.3 if y≠1 and y≠n-1 esegui

2.3.1 j=1

2.3.2 while ( (j≤s-1) and (y≠n-1) )

y=y2 mod n

se y=1 ritorna “composito”

j++

se y≠n-1 ritorna “composito”

3. Ritorna “PRIMO”

© Antini Gianni, 2000Crittografia

E’ facile trovare numeri primi?

Nonostante l’efficienza nel testare se un numero sia primo o meno resta l’incognita 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:

Quindi se si cerca un numero primo di 100 cifre occorre verificare “solo” ln(10100)=230 numeri consecutivi.

1ln

)(lim =∞→

nnn

n

π

Page 21: Introduzione Alla Crittografia - STLABURSS durante la guerra fredda. Crittografia © Antini Gianni, 2000 A fronte dei cifrari perfetti (o dimostrabilmente sicuri) esistono anche cifrari:

© Antini Gianni, 2000Crittografia

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.

© Antini Gianni, 2000Crittografia

Sicurezza dello schema di Diffie-Hellman

• Se Tom è in ascolto non vede mai transitare la chiave di cifratura K. L’unico 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.

Page 22: Introduzione Alla Crittografia - STLABURSS durante la guerra fredda. Crittografia © Antini Gianni, 2000 A fronte dei cifrari perfetti (o dimostrabilmente sicuri) esistono anche cifrari:

© Antini Gianni, 2000Crittografia

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 = Y’x mod n

8. Bob calcola k = Z’y mod n

9. Carol calcola k = X’z mod n

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

© Antini Gianni, 2000Crittografia

Crittosistema di ElGamal

Può essere considerato una variante di Diffie-Hellman ed è tutt’oggi molto utilizzato; ad esempio le ultime versioni di PGPusano 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à.

Page 23: Introduzione Alla Crittografia - STLABURSS durante la guerra fredda. Crittografia © Antini Gianni, 2000 A fronte dei cifrari perfetti (o dimostrabilmente sicuri) esistono anche cifrari:

© Antini Gianni, 2000Crittografia

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 1≤a≤p-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.

© Antini Gianni, 2000Crittografia

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,b∈S si ha a⊕b∈S.

2. Identità: ∃e∈S t.c. e⊕a=a⊕e=a ∀a∈S.

3. Associatività: ∀a,b,c∈S si ha (a⊕b)⊕c=a⊕(b⊕c)

4. Reciproco o opposto: ∀a∈S ∃! b∈S t.c. a⊕b=b⊕a=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.

Page 24: Introduzione Alla Crittografia - STLABURSS durante la guerra fredda. Crittografia © Antini Gianni, 2000 A fronte dei cifrari perfetti (o dimostrabilmente sicuri) esistono anche cifrari:

© Antini Gianni, 2000Crittografia

Un generatore (o elemento primitivo) α per il gruppo di Galois Zp* è un numero ∈Zp* t.c. applicando ricorsivamente l’operazione 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*.

© Antini Gianni, 2000Crittografia

Cifratura:

1. Trasforma il messaggio M come un numero da 0 a p-1

2. Genera un numero casuale k t.c. 1≤k≤p-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.

Page 25: Introduzione Alla Crittografia - STLABURSS durante la guerra fredda. Crittografia © Antini Gianni, 2000 A fronte dei cifrari perfetti (o dimostrabilmente sicuri) esistono anche cifrari:

© Antini Gianni, 2000Crittografia

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.

© Antini Gianni, 2000Crittografia

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 l’avversario 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.

Page 26: Introduzione Alla Crittografia - STLABURSS durante la guerra fredda. Crittografia © Antini Gianni, 2000 A fronte dei cifrari perfetti (o dimostrabilmente sicuri) esistono anche cifrari:

© Antini Gianni, 2000CrittografiaDefinizione: 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:

con probabilità maggiore di ½.

Intuitivamente il ciphertext non fornisce nessuna informazione parziale sul plaintext se si fanno calcoli polinomiali. In altreparole è 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.

m1

m2

C(m)1

C(m)2?

© Antini Gianni, 2000Crittografia

I due migliori algoritmi di crittografia probabilistica sono:

Algoritmo di Goldwasser-Micali, basato sull’intrattabilità dei residui quadratici.

Algoritmo di Blum-Goldwasser, basato sull’intrattabilità della fattorizzazione. Esso utilizza, fra l’altro, 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.

Page 27: Introduzione Alla Crittografia - STLABURSS durante la guerra fredda. Crittografia © Antini Gianni, 2000 A fronte dei cifrari perfetti (o dimostrabilmente sicuri) esistono anche cifrari:

© Gianni Antini, 2000

Funzioni HASH

Teoria e utilizzo nei sistemi crittografici

2

© Antini Gianni, 2000Hash Funcion

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 l’insieme X può essere un intero file di cui viene calcolato il digest. In tal caso quindi si ha una card(X)=8*file_length.

Definizioni Generali

X Zh

Page 28: Introduzione Alla Crittografia - STLABURSS durante la guerra fredda. Crittografia © Antini Gianni, 2000 A fronte dei cifrari perfetti (o dimostrabilmente sicuri) esistono anche cifrari:

3

© Antini Gianni, 2000Hash Funcion

Def. Dati due x e x’ t.c. x≠x’. 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. x≠x’ e h(x)=h( x’).

Def. (Sicurezza forte): h è fortemente sicura se ècomputazionalmente inammissibile trovare due x e x’t.c. x≠x’ 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).

4

© Antini Gianni, 2000Hash Funcion

Teorema:Sicurezza forte 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à dell’insieme Z è un fattore molto importante nella progettazione di una funzione hash. Infatti se essa è troppo piccola si corre il pericolo di cadere vittime dell’attacco del compleanno. Viceversa una cardinalità grande può rendere vana la motivazione per cui è stata costruita la funzione hash.

Page 29: Introduzione Alla Crittografia - STLABURSS durante la guerra fredda. Crittografia © Antini Gianni, 2000 A fronte dei cifrari perfetti (o dimostrabilmente sicuri) esistono anche cifrari:

5

© Antini Gianni, 2000Hash Funcion

Sia h:X Z e sia |X|=m, |Z|=n. Si fa l’ipotesi 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 : arbitrariaz2 : P(z2≠z1)=1-P(z2=z1)1-1/nz3 : P(z3≠z2, z3≠z1 | z1≠z2)=…=1-2/n::

Attacco del compleanno

6

© Antini Gianni, 2000Hash Funcion

P(non avere collisioni) =

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

Da cui:P(avere almeno 1 collisione)=ε=

∏−

=

−1

1

)1(k

i ki

∏−

=

−−=

∏==

=1

1

1 1

1

k

i

inn

i −−2

)1(nkk

eee

k

i

−−2

)1(nkk

1-e

−ε11ln2nk

Page 30: Introduzione Alla Crittografia - STLABURSS durante la guerra fredda. Crittografia © Antini Gianni, 2000 A fronte dei cifrari perfetti (o dimostrabilmente sicuri) esistono anche cifrari:

7

© Antini Gianni, 2000Hash Funcion

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 k≈1.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 k≈2 1019 da cui la sicurezza computazionale.

8

© Antini Gianni, 2000Hash Funcion

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, intravedendonela debolezza aveva già pubblicato una nuovahash-function, chiamata MD5,computazionalmente molto più sicura.

Ron Rivest - MIT

Page 31: Introduzione Alla Crittografia - STLABURSS durante la guerra fredda. Crittografia © Antini Gianni, 2000 A fronte dei cifrari perfetti (o dimostrabilmente sicuri) esistono anche cifrari:

9

© Antini Gianni, 2000Hash Funcion

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).

SHS(Secure Hash Standard)

10

© Antini Gianni, 2000Hash Funcion

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.

Page 32: Introduzione Alla Crittografia - STLABURSS durante la guerra fredda. Crittografia © Antini Gianni, 2000 A fronte dei cifrari perfetti (o dimostrabilmente sicuri) esistono anche cifrari:

11

© Antini Gianni, 2000Hash Funcion

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 l’equazione [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.

|M| = 0 mod 512 [1]

1

Messaggio x

0 0 ………

64 bit = |x|

0

12

© Antini Gianni, 2000Hash Funcion

Elaborazioni di un singolo sottoblocco (SHS/0)

(1) 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=0x98badcfeH3=0x10325476 H4=0xcbd2e1f0

Si noti che l’inizializzazione viene fatta solo per il primo sottoblocco, per gli altri vengono utilizzati gli Hi in uscita.

Page 33: Introduzione Alla Crittografia - STLABURSS durante la guerra fredda. Crittografia © Antini Gianni, 2000 A fronte dei cifrari perfetti (o dimostrabilmente sicuri) esistono anche cifrari:

13

© Antini Gianni, 2000Hash Funcion

(5) Esegui:A=H0, B=H1, C=H2, D=H3, E=H4, F=H5

for t=0 to 79temp = (A <<5)+ft(B,C,D)+E+x[t]+kt

E=D, D=C, C=B<<30, B=A, A=tempH0=H0+A, H1=H1+B, H2=H2+C, H3=H3+DH4=H4+E, H5=H5+F

(6) Finito l’ultimo sottoblocco, il valore a 160 bit:H0H1H2H3H4H5

è il digest.

14

© Antini Gianni, 2000Hash Funcion

Le funzioni citate sono:

(B & C) | (!B) & D) 0≤t≤19ft(B,C,D) = B ^ C ^ D 20≤t≤39

(B & C) | (B & D) | (C & D) 40≤t≤59B ^ C ^ D 69≤t≤79

0x5a827999 0≤t≤19kt = 0x6ed9eba1 20≤t≤39

0x8f1bbcdc 40≤t≤590xca62c1d6 69≤t≤79

Page 34: Introduzione Alla Crittografia - STLABURSS durante la guerra fredda. Crittografia © Antini Gianni, 2000 A fronte dei cifrari perfetti (o dimostrabilmente sicuri) esistono anche cifrari:

15

© Antini Gianni, 2000Hash Funcion

SHS/1Nel 1994 il NIST ha attuato una modifica dello

standard, facendo proprie varie segnalazioni apportate dai crittoanalisti e dall’NSA.

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)

Rotazione Shift semplice

16

© Antini Gianni, 2000Hash Funcion

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.

Page 35: Introduzione Alla Crittografia - STLABURSS durante la guerra fredda. Crittografia © Antini Gianni, 2000 A fronte dei cifrari perfetti (o dimostrabilmente sicuri) esistono anche cifrari:

17

© Antini Gianni, 2000Hash Funcion

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 l’algoritmo per calcolarle*.

(*) Critiche al DES.

18

© Antini Gianni, 2000Hash Funcion

La struttura del blocco è la stessa di SHS, ma è più comodo vedere il buffer come da destra a sinistra*.

(*) 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.

1

Messaggio x

00………

64 bit = |x|

0

|M| = 0 mod 512

Page 36: Introduzione Alla Crittografia - STLABURSS durante la guerra fredda. Crittografia © Antini Gianni, 2000 A fronte dei cifrari perfetti (o dimostrabilmente sicuri) esistono anche cifrari:

19

© Antini Gianni, 2000Hash Funcion

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 = 0x0123456789abcdefb = 0xfedcba9876543210c = 0xf096a5b4c3b2e187

ii. Suddividi il blocco in 8 word da 64 bit ciascuna:x[i] per i=0,…,7 (ricordarsi dell’architettura LE)

20

© Antini Gianni, 2000Hash Funcion

iii. Esegui quindisave(a,b,c)pass(a,b,c,5)key_schedulepass(c,a,b,7)key_schedulepass(b,c,a,9)feed_forward

dove:

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

Page 37: Introduzione Alla Crittografia - STLABURSS durante la guerra fredda. Crittografia © Antini Gianni, 2000 A fronte dei cifrari perfetti (o dimostrabilmente sicuri) esistono anche cifrari:

21

© Antini Gianni, 2000Hash Funcion

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^=xa-=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 è l’i-esimo byte di c (sono 8 i byte di c)

22

© Antini Gianni, 2000Hash Funcion

key_schedulex[0]-=x[7]^0xa5a5a5a5a5a5a5a5x[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_forwarda^=aa b-=bb c+=cc

Page 38: Introduzione Alla Crittografia - STLABURSS durante la guerra fredda. Crittografia © Antini Gianni, 2000 A fronte dei cifrari perfetti (o dimostrabilmente sicuri) esistono anche cifrari:

23

© Antini Gianni, 2000Hash Funcion

A questo punto se ci sono altri 512 bit da trattare si riesegue l’algoritmo (senza inizializzazione delle variabili) altrimenti il digest è formato dalla giustapposizione di:

a||b||cNota:

Nel passo round() vengono utilizzate le 4 S-Box, t1, t2, t3 e t4. Esse sono 4 tabelle di 256 long ognuna:

012

255

::

64 bit

Il byte c_i viene usato per selezionare la riga della tabella. Il valore di uscita è la word di 64 bit contenuta nella cella.

Complessivamente si è realizzata una espansione di un fattore 4.

24

© Antini Gianni, 2000Hash Funcion

Note conclusive sulla sicurezza di Tiger:

Gli autori congetturano le seguenti:1. La non linearità è dovuta essenzialmente alle S-

Box. Questo dovrebbe aiutare a resistere ad attacchi di crittoanalisi differenziale di tipo Biham-Shamir.

2. Tiger dovrebbe resistere bene ad attacchi Dobbertin’s differential.

3. La complessità minima per trovare una retroimmagine dovrebbe aggirarsi su O(296).

Page 39: Introduzione Alla Crittografia - STLABURSS durante la guerra fredda. Crittografia © Antini Gianni, 2000 A fronte dei cifrari perfetti (o dimostrabilmente sicuri) esistono anche cifrari:

© Gianni Antini, 2000

Riferimenti bibliografici

Riferimenti cartacei e elettronici sugli argomenti trattati.

© 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

Page 40: Introduzione Alla Crittografia - STLABURSS durante la guerra fredda. Crittografia © Antini Gianni, 2000 A fronte dei cifrari perfetti (o dimostrabilmente sicuri) esistono anche cifrari:

© 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.