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

Crittografia

Embed Size (px)

DESCRIPTION

Crittografia

Citation preview

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

    Definizioni Generali

  • Antini Gianni, 2000Crittografia

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

  • Antini Gianni, 2000Crittografia

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

  • 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=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.

    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.

  • Antini Gianni, 2000Crittografia

    Alla ricerca della perfezion perduta

    Lidea 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 000 non si puesare. Si ha:

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

    S0S1S2Sn-1output

    n-1 2 1 0

  • 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 delluniverso 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)=miciUsando 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!

  • Antini Gianni, 2000Crittografia

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

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

  • 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

  • Antini Gianni, 2000Crittografia

    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]

  • 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 lespansione 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

  • Antini Gianni, 2000Crittografia

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

    Antini Gianni, 2000Crittografia

    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.

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

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

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

  • 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

  • Antini Gianni, 2000Crittografia

    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.

    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 dellordine di:

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

  • Antini Gianni, 2000Crittografia

    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

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

  • Antini Gianni, 2000Crittografia

    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

    Antini Gianni, 2000Crittografia

    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:

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

    1ln

    )(lim =

    nnn

    n

  • 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

  • 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 = 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.

    Antini Gianni, 2000Crittografia

    Crittosistema di ElGamal

    Pu essere considerato una variante di Diffie-Hellman ed tuttoggi 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.

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

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

  • Antini Gianni, 2000Crittografia

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

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

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

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

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

    Definizioni Generali

    X Zh

  • 3 Antini Gianni, 2000Hash Funcion

    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 xt.c. xx e h(x)=h( x).

    Def. (One-way): h one-way se, dato un digest z ecomputazionalmente 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 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.

  • 5 Antini Gianni, 2000Hash Funcion

    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 : arbitrariaz2 : P(z2z1)=1-P(z2=z1)1-1/nz3 : P(z3z2, z3z1 | z1z2)==1-2/n::

    Attacco del compleanno

    6

    Antini Gianni, 2000Hash Funcion

    P(non avere collisioni) =

    Tenendo conto che e-x1-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

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

    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

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

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

    |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 linizializzazione viene fatta solo per il primo sottoblocco, per gli altri vengono utilizzati gli Hi in uscita.

  • 13

    Antini Gianni, 2000Hash Funcion

    (5) Esegui:A=H0, B=H1, C=H2, D=H3, E=H4, F=H5for t=0 to 79

    temp = (A

  • 15

    Antini Gianni, 2000Hash Funcion

    SHS/1Nel 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] )

  • 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 lalgoritmo 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

  • 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 dellarchitettura 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

  • 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 li-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] >23 )x[7]^=x[6] x[0]+=x[7]x[1]-=x[0]^( !x[7] >23 )x[5]^=x[4] x[6]+=x[5]x[7]-=x[6]^0x0123456789abcdef

    feed_forwarda^=aa b-=bb c+=cc

  • 23

    Antini Gianni, 2000Hash Funcion

    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||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 Dobbertins differential.

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

  • 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 SonHandbook 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.