irme digitali irma Digitale Barbara asucci Dipartimento di Informatica ed Applicazioni Università di Salerno firma Equivalente alla firma convenzionale masucci@dia.unisa.it http://www.dia.unisa.it/professori/masucci 1 irma Digitale irma Digitale Equivalente alla firma convenzionale Equivalente alla firma convenzionale firma firma Soluzione naive: Soluzione naive: incollare firma digitalizzata incollare firma digitalizzata 2 3
Requisiti per la irma Digitale irma digitale La firma digitale deve poter essere facilmente prodotta dal legittimo firmatario Nessun utente deve poter riprodurre la firma di altri kpriv?? kpub Chiunque può facilmente verificare una firma Devo firmare 4 5 irma digitale irma digitale kpriv kpub kpriv kpub (,) irma di IRA (,kpriv) 6 canale insicuro Bob 7
Verifica firma digitale Verifica firma digitale kpub kpub Devo verificare se è una firma di per Verifica firma di vera se VERIICA (,,kpub) = SI falsa altrimenti 8 9 Sicurezza Tipo di attacco Cosa si intende per sicurezza di uno schema di firme digitali? Dobbiamo definire Tipo di attacco Scopo dell attacco Key-only Attack Oscar conosce solo kpub di Known essage Attack Oscar conosce una lista di messaggi e le relative firme di Chosen essage Attack Oscar sceglie dei messaggi e chiede ad di firmarli 10 11
Scopo dell attacco Total break Determinare kpriv di per poter firmare qualsiasi messaggio Selective forgery Dato un messaggio, determinare la firma tale che VERIICA (,,kpub) = SI Existential forgery Determinare una coppia (,) tale che VERIICA (,,kpub) = SI irme digitali che vedremo RSA Digital Signature Standard (DSS) firma 12 13 RSA Chiavi RSA Proposto nel 1978 da (n,d) (n,e) Rivest Shamir Adleman Sicurezza basata sulla difficoltà di fattorizzare 14 15
Chiavi RSA irma RSA (n,d) (n,e) (n,d) (n,e) n = pq p,q primi ed = 1 mod (p-1)(q-1) Devo firmare?? 16 17 irma RSA Verifica irma RSA (n,d) (n,e) irma di d mod n (n,e) Devo verificare se è una firma di per 18 19
Verifica irma RSA Piccolo esempio: Chiavi RSA (n,e) (n=3337, d=1019) (n = 3337, e = 79) 3337 = 47 71 p = 47, q = 71 Verifica firma di vera se = e mod n falsa altrimenti ed = 79 1019 = 1 mod 3220 (p-1)(q-1) = 46 70 = 3220 20 21 Piccolo esempio: Chiavi RSA Piccolo esempio: generazione firma RSA (n=3337, d=1019) (n = 3337, e = 79) (n=3337, d=1019) (n = 3337, e = 79) Devo firmare =1570 1570 irma di 1570 = 1570 1019 mod 3337 = 668 1570 668 22 23
Piccolo esempio: Verifica firma RSA Correttezza verifica firma RSA 1570 668 (n = 3337, e = 79) Verifica firma di 1570 1570 = 668 79 mod 3337 24 e mod n = ( d ) e mod n = ed mod n = 1+k(p-1)(q-1) mod n = ( (p-1)(q-1) ) k = mod n = Teorema di Eulero Z n * (p-1)(q-1) =1 mod n poichè 0 <n ed = 1 mod (p-1)(q-1) Per Per Z Z n /Z n /Z n * n *usa il il teorema cinese cinese del del resto resto 25 Sicurezza firma RSA Sicurezza firma RSA Voglio falsificare la firma di da parte di A (n,e) (n,e) Voglio generare messaggi e firme da parte di A (n,e) (n,e) Selective forgery Key only attack Devo calcolare d mod n Equivalente a rompere il crittosistema RSA?? Existential forgery Key only attack 1. Scelgo a caso 2. e mod n 26 27
Sicurezza firma RSA Voglio generare messaggi e firme da parte di A Conosco le coppie ( 1, 1 ) e ( 2, 2 ) (n,e) (n,e) Proprietà di omomorfismo 1 = 1d mod n 2 = 2d mod n ( 1 2 ) e mod n = 1e 2e mod n = 1 2 mod n 1 2 mod n è una firma valida per 1 2 mod n Existential forgery Known message attack 28 Sicurezza firma RSA Voglio falsificare la firma di da parte di A Selective forgery Chosen message attack (n,e) (n,e) 1. Scelgo 1 e 2 tali che = 1 2 mod n 2. Chiedo ad di firmare 1 e 2 ottenendo 1 e 2 3. 1 2 mod n è una firma valida per 29 irma digitale di messaggi grandi Se >n, come si firma? Prima soluzione i <n 1 2 irma() (irma( 1 ), ), irma( 2 ), ), ) Problemi Efficienza Permutazione/composizione delle firme nuova firma 30 unzioni Hash lunghezza arbitraria/finita unzione Hash b bit Il valore hash h() è una rappresentazione non ambigua e non falsificabile del messaggio Proprietà: comprime facile da computare Sicurezza forte: computazionalmente difficile trovare 2 diversi messaggi con lo stesso valore hash One-way way: dato y è computazionalmente difficile trovare tale che y = h() 31
irma digitale con hash irma RSA con hash messaggi piccoli h() h() irma() (irma(h()) Vantaggi messaggi grandi Efficienza Integrità Sicurezza (n,d) irma di [h()] d mod n (n,e) (n,e) 32 33 Verifica irma RSA con hash Verifica irma RSA (n,e) (n,e) Devo verificare se è una firma di per Verifica firma di vera se h() = e mod n falsa altrimenti 34 35
Sicurezza firma RSA con hash Voglio generare messaggi e firme da parte di A 1. Scelgo a caso 2. z e mod n 3. h -1 (z) (n,e) (n,e) Come faccio ad invertire h? h -1 (z) Existential forgery Key only attack 36 Digital Signature Standard (DSS) Proposto nell'agosto del 1991 dal NIST Digital Signature Algorithm (DSA) Digital Signature Standard (DSS) Standard rivisto nel 1993, in risposta alle critiche odifica ingegnosa dello schema di firme El Gamal Utilizza la funzione hash (message digest di 160 bit) irme DSS sempre di 320 bit (buone per smart card) Sicurezza basata sull intrattabilità del problema del logaritmo discreto 37 Logaritmo discreto Chiavi DSA Dati a,n,b calcolare x tale che a x = b mod n Esempio: 3 x = 7 mod 13 soluzione x = 6 Se n è primo, i migliori algoritmi hanno complessità L n [a,c] = O(e (c+o(1))(ln n)a (lnln n) 1-a ) con c > 0 ed 0 < a < 1 iglior algoritmo: Number field sieve tempo medio euristico L n [1/3, 1.923] (p,q,α,s) (p,q,α,β) 38 39
(p,q,α,s),s) Chiavi DSA (p,q,α,β) p primo di L bit 512 L 1024, L multiplo di 64 s numero casuale, s<q q primo di 160 bit, q (p-1) β=α s mod p α in Z p* di ordine q α q = 1 mod p Ordine di un elemento Per la generazione di α dobbiamo introdurre il concetto di ordine di un elemento Ordine di α Z n* = il più piccolo intero positivo r tale che α r =1 mod n Teorema di Lagrange: Per ogni α Z n *,ord(α) divide φ(n) Se n è primo, ord(α) divide n-1 40 41 Ordine di un elemento Ordine di un elemento Esempio: n=15, φ(n) = (3-1)(5-1)=8 Z 15 * = { 1, 2, 4, 7, 8, 11, 13, 14 } Sia α Z n* e sia q= ord(α) Se α t = 1 mod n, allora q divide t α smod q mod n = α s mod n ord(1) = 1, ord(2) = 4, ord(4) = 2, ord(7) = 4, ord(8) = 4, ord(11) = 2, ord(13) = 4, ord(14) = 2. 42 43
Chiavi DSA ( piccolo esempio) irma DSA (7879,101,170,75) A (7879,101,170,4567) (p,q,α,s),s) (p,q,α,β) 4567 = 170 75 mod 7879 p = 7879 primo α = 170 Z 7879* di ordine 101 q = 101 primo, p = 78q+1 170 101 = 1 mod 7879 s = 75 numero casuale Devo firmare?? 44 45 (p,q,α,s),s) irma DSA (p,q,α,β) irma di r numero casuale in [1,q-1] γ (α r mod p) mod q δ (()+sγ)r -1 mod q firma (p,q,α,s) (,r) = (γ,δ) r -1 mod q esiste perché r < q e q primo gcd(q,r)=1 (γ,δ) 46 Verifica firma DSA (γ,δ) (p,q,α,β) Devo verificare se (γ,δ) è una firma di per 47
Verifica firma DSA (γ,δ) A (p,q,α,β) Efficienza firma DSA irma_dsa(,p,q,α,s) r numero casuale in in [1,q-1] γ (α r modp) modq δ (()+sγ)r -1-1 mod q output firma (p,q,α,s) (,r) = (γ,δ) Verifica firma di e ()δ -1 mod q e γδ -1 mod q vera se γ = (α e β e mod p) mod q falsa altrimenti Lunghezza firma = 320 bit Computazioni off-line: r, sγ, r -1 mod q Computazioni on-line: (), +, 48 49 Verifica firma DSA Verifica_firma_DSA(,γ,δ,p,q,α,β) e e ()δ -1-1 mod q e γδ -1-1 mod q vera se γ = (α e e β e e modp) modq ver (p,q,α,β) (,γ,δ) = falsa altrimenti Output ver (p,q,α,β) (,γ,δ) (α e β e mod p) mod q Correttezza verifica firma DSA = (α ()δ-1 mod q α sγδ-1 mod q mod p) mod q = (α ()δ-1 +sγδ -1 mod p) mod q = (α r mod p) mod q e = ()δ -1 mod q e = γδ -1 mod q β = α s mod p α è di ordine q δ -1 (()+sγ) = r mod q = γ 50 51
Scelta dei parametri Generazione di p e q Come scegliere p, q, α? Scegli p Scegli q di 160 bit tale che q (p-1) 52 53 Generazione di p e q Generazione di p e q Scegli p Scegli q di 160 bit tale che q (p-1) Dovrei Dovrei conoscere la la fattorizzazione di di p-1 p-1 Idea: Scegli q primo di 160 bit Calcola p di 512/1024 bit tale che q (p-1) Testa se p è primo 54 55
Generazione di q Scegli a caso S di 160 bit S S+1 Ripeti con un nuovo S finchè q è primo 160 bit u 1 1 q 56 Generazione di p e q Seleziona_pq(L) (1) (1) Computa interi n e b tali tali che che L-1=160n+b (2) (2) repeat (3) (3) repeat (4) (4) S sequenza casuale di di almeno 160 160 bit bit (5) (5) g S S (6) (6) U (S) ((S+1) mod mod 2 g g ) (7) (7) orma orma q da da U ponendo il il SB SB ed ed il il LSB LSB ad ad 1 (8) (8) until until q primo primo (9) (9) C 0 (10) (10) N 2 (11) (11) repeat (12) (12) for for k=0 k=0 to to n do do V k k (S+N+k) mod mod 2 g (13) g (13) W V 0 +V 0 +V 1 2 1 2 160 160 +...+V n-1 2 n-1 2 160(n-1) 160(n-1) +(V +(V n mod n mod 2 b b ) 2 ) 2 160n (14) 160n (14) X W+2 W+2 L-1 (15) L-1 (15) p X-((X X-((X mod mod 2q)-1) (16) (16) until until (p (p primo) or or (p<2 (p<2 L-1 L-1 ) (17) (17) if if p<2 p<2 L-1 (18) L-1 (18) then then C C+1 C+1 (19) (19) N N+n+1 N+n+1 (20) (20) if if C<4096 then then goto goto step step (12) (12) (21) (21) else else Help Help falso falso (22) (22) else else Help Help vero vero (23) (23) until until Help Help (24) (24) return p,q,s,c 57 Generazione di p (512 bit) Generazione di p (512 bit) S+2 S+3 S+4 S+5 S+2 S+3 S+4 S+5 511 = 3 160 + 31 V 0 V 1 V 2 V 3 V 0 V 1 V 2 V 3 X =512 X V 0 +V 1 2 160 + V 2 2 2 160 +(V 3 mod 2 31 ) 2 3 160 +2 511 p X - ((X mod 2q)-1) 2q (p-1) se p è primo e p 2 511 esci altrimenti 58 59
Generazione di p (512 bit) S+6 S+7 S+8 S+9 Generazione di p (512 bit) N 2,6,10,, (per 4096 volte) S+N S+N+1 S+N+2 S+N+3 511 = 3 160 + 31 511 = 3 160 + 31 V 0 V 1 V 2 V 3 X =512 V 0 V 1 V 2 V 3 X =512 X V 0 +V 1 2 160 + V 2 2 2 160 +(V 3 mod 2 31 ) 2 3 160 +2 511 X V 0 +V 1 2 160 + V 2 2 2 160 +(V 3 mod 2 31 ) 2 3 160 +2 511 p X - ((X mod 2q)-1) 2q (p-1) p X - ((X mod 2q)-1) 2q (p-1) se p è primo e p 2 511 esci altrimenti se p è primo e p 2 511 esci altrimenti 60 61 Scelta di un elemento di ordine q Correttezza di Scegli_ordineq p,q primi tali che q (p-1) Scegli_ordineq (p,q) 1. g elemento scelto a caso in in Z * p 2. α g (p-1)/q (p-1)/q mod p 3. if if α 1 then return α else go to 1. Scegli_ordineq (p,q) 1. 1. g elemento scelto a caso in in Z p * 2. 2. α g (p-1)/q (p-1)/q mod p 3. 3. if if α 1 then return α else go to 1. 1. α q (g (p-1)/q ) q g p-1 1 mod p Quindi ord(α) divide q q primo ord(α)=1 oppure ord(α)=q ord(α)=1 sse α =1 α 1 ord(α)=q 62 63
Generatori di Z p * g è generatore di di Z p p *se {g {g i 1 i i p-1} = Z p p * Il numero di generatori di Z p * è φ(p-1) Prob che g scelto a caso in Z p * sia un generatore è 1/6lnln(p-1) Esempio: g = 2 è un generatore di diz * 11 11 2 10 = 1024 = 1 mod 11 2 1 = 2 mod 11 2 8 = 256 = 3 mod 11 2 2 = 4 mod 11 2 4 = 16 = 5 mod 11 2 9 = 512 = 6 mod 11 2 7 = 128 = 7 mod 11 2 3 = 8 mod 11 2 6 = 64 = 9 mod 11 2 5 = 32 = 10 mod 11 64 Generatori di Z p * p primo, p -1 = p e 1 1 p2 e 2 pk e k g (p-1)/p 1 1 mod p g è un generatore di Z p*... g (p-1)/p k 1 mod p 11 11 primo, p-1 = 10 = 2 5 Esempio 2 è un generatore di di Z 11* 11* perché 2 (11-1)/2 = 2 5 = 10 1 mod 11 11 2 (11-1)/5 = 2 2 = 4 1 mod 11 11 65 Probabilità successo di Scegli_ordineq Sicurezza firma DSA Se g è un generatore allora g (p-1)/q 1 mod p Probabilità successo Probabilità che g è generatore > 1/(6lnln(p-1)) Numero medio di iterazioni < 6lnln(p-1) 512 bit 6 lnln(2 512 512 ) 35,23 1024 bit 6 lnln(2 1024 ) 39,38 2048 bit 6 lnln(2 2048 ) 43,54 66 Voglio falsificare la firma di da parte di A Total break Key only attack A (p,q,α,β) Devo calcolare s=log α β mod p A?? 67
Sicurezza firma DSA Sicurezza firma DSA Voglio falsificare la firma di da parte di A Selective forgery Key only attack A (p,q,α,β) 1. Scelgo γ a caso 2. Determino δ tale che δ (()+sγ)r -1 mod q Devo calcolare δ=log γ (α (). β γ ) A Voglio generare messaggi e firme da parte di A Existential forgery Key only attack 1. Scelgo γ,δ a caso 2. Calcolo z tale che α z = γ δ β -γ A (p,q,α,β) Devo calcolare z=log α (γ δ β -γ ) -1 (z) A 68 69 Chiavi globali ed individuali (p,q,α,s) A (p,q,α,β) Sicurezza basata sul valore privato s I valori p,q,α possono essere gli stessi per un gruppo di utenti Un autorità sceglie p,q,α Il singolo utente sceglie solo s e calcola β Confronto tempi firme RSA e DSA DSA RSA DSA con p,q,α comuni precomputazioni 14 sec 4 sec firma 0.3 sec 15 sec 0.3 sec verifica 16 sec 1.5 sec 10 sec 1-5 sec Off Cards 1-3 sec Off Cards Implementazioni su smart card [1993] Computazioni Off Cards su 80386 a 33Hz 70 71
Prestazioni algoritmi Celeron 850Hz, Windows 2000, Crypto++ millisecondi/operazione bit firma irma con verifica chiave precomputazione RSA DSA RSA DSA 512 512 1024 1024 1,92 1,77 10,29 5,50 1,19 2,27 0,13 2,02 0,30 6,38 Pentium II 400 OpenSSL Prestazioni bit chiave firme/s RSA 512 342 DSA 512 331 RSA 1024 62 DSA 1024 112 RSA 2048 10 DSA 2048 34 verifiche/s 3287 273 1078 94 320 27 72 73 Bibliografia Cryptography and Network Security by W. Stallings (2003) cap. 12 (DSS) Tesina di Sicurezza su reti irme digitali Stinson I ed 74