Ripasso Public Key cryptograhy Message Authentication Codes (MAC) Firma digitale RSA Public Key Cryptosystem Sia N=pq il prodotto di due primi Scegli e tale che gcd(e,f(N))=1 Sia d tale che de≡1 mod f(N) La chiave pubblica è (N,e) La chiave segreta è d Codifica di MŒZN* : C=E(M)=Me mod N Decodifica di CŒZN* : M=D(C)=Cd mod N “Il metodo proposto non deve essere confuso con la tecnica proposta da Diffie e Hellman per risolvere il problema della distribuzione delle chiavi (dall’articolo RSA) Il gruppo moltiplicativo Zpq* Siano p e q due primi grandi e sia N = pq il loro prodotto. Definizione Il gruppo moltiplicativo ZM* =Zpq* contiene tutti gli interi nell’intervallo [1,pq-1] primi sia rispetto a p che a q La dimensione del gruppo Zpq* è f(pq) = (p-1) (q-1) = N - (p+q) + 1, quindi, per ogni x Œ Zpq*, x(p-1)(q-1) = 1. RSA come One Way Trapdoor Function (OWF) easy x xe mod N hard Facile con trapdoor info ( d ) OWF e Trapdoor OWF Definizione: f:DÆR è one way function se è facile da calcolare difficile da invertire Definizione: f:DÆR è una trap-door one way function se esiste una trap-door s tale che Senza conoscenza di s, la funzione è one way Dato s, invertire f è facile Cosa vuol dire difficile Classi di complessità Una classe di complessità è una classe di pbroblemi di decisione (linguaggi) che possono essere risolti con determinate risorse di calcolo P classe dei problemi risolubili in tempo polinomiale (algoritmi deterministici) NP classe dei problemi risolubili in tempo polinomiale (algoritmi NONdeterministici) Classi di complessità probabilistiche Un algoritmo probabilistico è un algoritmo che effettua scelte casuali • sullo stesso input può dare risposte diverse • un algoritmo probabilistico può fare errori RP linguaggi L per cui esiste un alg. prob. A tale che – x in L : Prob[ A(x) accetta] > .5 – x non in L : Prob[ A(x) rifiuta] =0 PP linguaggi L per cui esiste un alg. prob. A tale che – x in L : Prob[ A(x) accetta] > .5 – x non in L : Prob[ A(x) rifiuta] > .5 OWF: definizione Definizione: f:DÆR è one way function se è facile da calcolare (tempo polinomiale con algoritmo probabilistico) difficile da invertire: Per ogni algoritmo polinomiale probabilistico A esiste una funzione trascurabile g(n) - n dimens. input, g(n) < 1/polin.(n) - tale che se si sceglie a caso x in D, con x di dimensione n Prob [A trovi z, tale che f(z) = f(x)] < g(n) (è poco probabile riuscire a invertire f) NB: non si richiede di trovare x Trap-door OWF Definizione: f:DÆR è una trap-door one way function se esiste una trap-door s tale che Senza conoscenza di s, la funzione è one way Dato s, invertire f è facile Non è nota l’esistenza di OWF. Si assume che RSA sia OWF. Si può provare che se RSA è OWF allora è anche trap-door OWF Primality Testing Input: Un intero dispari M, 2n-1<M<2n Problema di Decisione: M è composto ? Problema di Decisione è in NP (prova esaustivamente tutti i possibili fattori & verifica). Problema di Ricerca: Trova i fattori primi di M. La fattorizzazione di interi è considerato un problema intrattabile. Crittografia a chiave pubblica: Schema di base Uno schema crittografico a chiave pubblica include: Una chiave privata k Una chiave pubblica k’ Un metodo di codifica che sia una trap door OWF. La chiave privata rappresenta l’informazione trap-door La chiave pubblica e distribuita (ognuno può codificare) La decodifca richiede la chiave privata Proprietà di RSA Il requisito (e, f(N))=1 è importante per unicità codifica Trovare d, dati p e q è facile. Trovare d dati solo N e e è considerato difficile (assunzione di RSA) L’esponente pubblico e può essere piccolo (tipicamente 3 ma meglio 216+1) Ogni codifica richiede diverse operazioni modulari. Decodifica è più lunga. RSA - Attacchi RSA è in generale difficile da attaccare per un attaccante passivo (richiede fattorizzare) • alcuni numeri prodotto di due primi sono ‘facili’ da fattorizzare • alcuni messaggi sono facili da decifrare • attacchi attivi RSA - Attacchi Messaggi facili da decifrare se m= 0,1,n-1 allora RSA(m) = m: SOLUZ: rari, uso salt Se m è piccolo o se lo spazio dei possibili messaggi è piccolo si può procedere per enumerazione: SOLUZ. aggiungere salt alla fine del messaggio Se MCD(p-1,q-1) e d sono piccoli decrittare RSA(m) richiede di calcolare la radice di un numero piccolo: SOLUZ. scegliere d grande Se due utenti hanno chiavi con lo stesso n (ma e e d diversi) allora il sistema è debole: SOLUZ. ognuno si sceglie il proprio n RSA - Attacchi Proprietà moltiplicativa di RSA: Se M =M1 M2 allora (M1 M2)e = M1e M2e Quindi Trudy può procedere per messaggi piccoli (attacco ciphertext) Generalizzabile se M= M1 M2 ...Mk Soluzione: padding su messaggi brevi RSA - Attacchi Proprietà moltiplicativa di RSA Attacco chosen ciphertext: T conosce c = Me mod n e vuole conoscere M sceglie a caso X e calcola c’ = c Xe mod n e chiede a A di decodificare c’ (cioè di firmare) A calcola (c’)d = c d (X e) d = M X mod n Soluzione: imporre struttura sui messaggi da codificare (A rifiuta di codificare se M non verifica quanto richiesto) Non firmare mai cose random e usare sempre hash!! Problemi per uso effettivo Due parole: Key Exchange Autentica di Messaggi - Scopo Garantire l’integrità dei messaggi anche in presenza di un avversario attivo che manda i suoi messaggi (corretti) Alice (mittente) Bob (ricevente) Franco (falsificatore) Nota: Autenticazione è ortogonale alla segretezza spesso un sistema deve garantire ambedue Definizioni Algoritmo di autenticazione - A Algoritmo di autenticazione - V (“accetta”/”rifiuta”) Chiave di autenticazione– k Spazio dei messaggi (stringhe binarie): ogni messaggio fra Alice e Bob è una coppia (m, Ak(m)) Ak(m) è impronta (authentication tag) di m Proprietà funzioni MAC Requisito di sicurezza avversario non può costruire una nuova coppia corretta (m, MACk(m)) anche dopo aver visto (mi, MACk(mi)) (i=1,2,…,n) Output deve essere corto Funzioni MAC non sono 1-to-1 Efficienza Scopo avversario: Date n coppie legali (m1, MACk(m1)), …, (mn, MACk(mn)) trovare una nuova coppia legale (m, MACk(m)) efficientemente e con probabilità non trascurabile. NOTA: Se n è grande abbastanza allora n coppie (mi, MACk(mi)) determinano la chiave k unicamente (con alta prob.). Quindi una elaboratore nondeterministico può indovinare k e verificare. Eseguire questo deve essere un compito computazionalmente difficile. MAC Usati in pratica Vediamo • MAC basato su modalità codifica CBC – usa codifica crittog. a blocchi – lento, problemi esportazione fuori USA • MAC basato su funzioni hash crittografiche – veloce – nessun problema esportazione MACs con CBC Inizia con il seme di tutti zero. dato un messaggio di n blocchi M1,M2,…,Mn, applica CBC (usando la chiave segreta k). 0000000 M1 M2 Ek Ek C1 C2 Mn ... . . . . .... Ek Cn •Scarta i primi n-1 “cipertext” blocchi C1,C2,…, , usa Cn. •Invia M1,M2,…,Mn & il tag di autenticazione MACk(M)=Cn . Utilizzo di funzioni hash per il calcolo del MAC Obiettivi • calcola Mac usando una funzione hash, il messaggio e una chiave segreta • utilizzare una qualunque funzione hash Esempi MACk(m)=h(k,m), MACk(m)=h(m,k) Paradosso del compleanno Se 23 persone sono scelte a caso la b che due due di esse abbiano lo stesso compleanno è maggiore di 0.5 In generale, sia h:DÆR una qualunque funzione. Se si sceglie 1.17|R|1/2 elementi di D a caso, la probabilità che due di essi diano lostesso valore della funzione è maggiore di 0.5. Funzioni Hash Crittografiche Funzioni hash Crittografiche sono funzioni hash che sono strongly collision resistant. Nota: Non c’è chiave segreta. Devono essere veloci da calcolare ma difficile trovare collisioni (impossibile se P diverso da NP). Di solito definite usando una funzione di compressione con dominio n bits (es. 512) e codominio di m bits (es. 160), m < n. Secure Hash Algorithm (SHA-1) SHA progettato da NIST & NSA in 1993, rivisto nel 1995 - SHA-1 US standard per uso con firma digitale con DSA standard FIPS 180-1 1995, Internet RFC3174 nb. l’algortimo è SHA, lo standard è SHS produce 160-bit hash valori Metodo più usato si basa usl progetto di un vecchio algortimo MD4 HMAC Riceve in input un messaggio m, una chiave k e una funzione hash h Calcola MAC come: HMACk(m,h)= h(k⊕opad, h(k⊕ipad,m)) la chiave è riempita con zeri a sin. per ottenere che |k| = lungh. di un blocco opad: 01011010, ipad: 00110110, ripetuti |k|/8 volte Teorema [BCK]: HMAC può essere falsificato se e solo se può esserlo la funzione hash (si trovano collisioni). HMAC - Attacchi Attaccante vuole trovare due messaggi m e m’ t.c. HMACk(m,h)= HMACk(m’,h); conosce IV,H ma non conosce k Si applica il paradosso del compleanno (blocco lungo n implica collisione con 2n/2+1 tentativi)? No: – attaccante non conosce k e quindi non può generare messaggi autentici; – deve quindi osservare 2n/2+1 messaggi generati con la stessa chiave (es. n= 128 almeno 264 + 1+ 8 bit) HMAC in Pratica SSL / TLS WTLS IPSec: AH, ESP RSA e Data integrity:OAEP Problema: inviare dati con RSA non modificabili (senza identificazione del mittente) codif. c= RSA[M || 0k1 exor G(r)] || [H(RSA[M || 0k1 exor G(r)]) exor r] k0, k1 noti; G,H funzioni hash, note; r stringa casuale di k bit (scelta dal mittente); decod. cd= s||t (con t di k0 bit); u=t exorH(s); v=s exor G(u); accetta se v = m || 0k1; altrimenti rifiuta OAEP è robusto anche nel caso di attacco chosen ciphertext (assumendo H e G buone funzioni hash) Esercizi mostrare che il seguente metodo non è un buon metodo per calcolare l’impronta di un testo indipendentemente dalla funzione usata: Ek(M1 M2 ... Mn ) oppure Ek(M1) M2 ... Mn Firma digitale vs. MACs Supponi che A e B condividano una chiave segreta K. Allora M, MACK(M) convince A che M è scritto da B. Ma in caso di disputa A non può convincere un giudice che M, MACK (M) è stato inviato da B, poichè A potrenne generarlo lei stessa Proprietà firma digitale • Firma facile da verificare • Difficile da falsificare . • Hanno valore legale (convincere un aterza persona esempio un giudice). Problemi con il Paradigma di DH “Puro” Facile falsificare messaggi casuali anche senza conoscere DA: Bob sceglie R e calcola S=EA(R). La coppia (S,R) è una firma valida di Alice del “messaggio” S. Lo schema è soggetto a existential forgery. “Cosa implica” ? Problemi con il Paradigma di DH “Puro” Considera RSA. La proprietà moltiplicativa implica che DA (M1M2) = DA (M1) DA (M2). Se M2=“Devo a BOB $20” e M1=“100” allora per qualche codifica M1M2 =“Devo a BOB $2000”… Soluzione Standard : Hash Sia DA la chiave segreta di Alice e EA la sua chiave pubblica Per firmare M, Alice calcola y= H(M) e z=DA (y) e invia (M,z) a Bob. Per verificare la firma di Alice, Bob calcola y = EA(z) e verifica che x=H(M) La funzione H deve essere collision resistent, per cui è difficile trovare M’ con H(M)=H(M’). Meccanismo Generale Generazione di chiavi pubbliche e private (casuali). Firma (o deterministica o probabilistica) Verifiche (accept/reject) - deterministico. Digital Signature Standard (DSS) NIST, FIPS PUB 186 DSS usa SHA come funzione hash e DSA come metodo di firma DSA simile a El Gamal Più veloce per che firma piuttosto che per chi verifica: smart cards Digital Signature Algorithm (DSA) p – primo, q – primo, p-1 = 0 mod q, g = h(p-1)/q mod p (g generatore del gruppo di ordine q in Zp) Chiave Privata : 1 ≤ x ≤ q-1 (casuale). Chiave Pubblica: (p, q, g, y = g x mod p) Firma del messaggio M: Scegli a caso 1 ≤ k ≤ q-1, segreto!! Part I: r = (( gk mod p) mod q Part II: s =(SHA (M)+ x r) /k mod q Perchè DSS è sicuro Non si rivela la chiave segreta Non si può falsificare senza la chiave segreta Non esistono duplicati con la stessa firma Usa un numero segreto per messaggio (Sm)! Se Sm è noto allora si può calcolare S Due messaggi con lo stesso Sm possono rivelare Sm, e quindi S DSS - Attacchi • se attaccante conosce k allora conosce x • se attaccante conosce due messaggi firmati con stesso k (anche ignoto) allora conosce x Esercizi 1. verificare che firma RSA non va bene fornendo esempi concreti di firme falsificate 2. cosa succede in DSA quando la PART II della firma è 0?