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 C d mod n = ( e ) d mod n = ed mod n = 1+r(p-1)(q-1) mod n = ( r ) (p-1)(q-1) = mod n = Teorema di Eulero a Z n * a (p-1)(q-1) =1 mod n poichè 0 <n ed = 1 mod (p-1)(q-1) 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 Chiavi DSA Chiavi DSA (p,q,α,s) (p,q,α,β) (p,q,α,s),s) (p,q,α,β) p primo di L bit 512 L 1024, L multiplo di 64 β=α s mod p α in Z p* di ordine q q primo di 160 bit, q (p-1) s numero casuale, s<q α q = 1 mod p 38 39
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) Ordine di un elemento Esempio: n=15, φ(n) = (3-1)(5-1)=8 Z 15 * = { 1, 2, 4, 7, 8, 11, 13, 14 } ord(1) = 1, ord(2) = 4, ord(4) = 2, ord(7) = 4, ord(8) = 4, ord(11) = 2, ord(13) = 4, ord(14) = 2. 40 41 Ordine di un elemento Chiavi DSA ( piccolo esempio) Se p è primo e α Z p*, dal teorema di Lagrange, ord(α) divide p-1 Se ord(α) = q, allora α smod q mod p = α s mod p (7879,101,170,75) A (7879,101,170,4567) 4567 = 170 75 mod 7879 p = 7879 primo α = 170 Z 7879* di ordine 101 q = 101 primo, p = 78q+1 s = 75 numero casuale 170 101 = 1 mod 7879 42 43
(p,q,α,s),s) irma DSA (p,q,α,β) Devo firmare?? 44 (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 (γ,δ) 45 Verifica firma DSA (γ,δ) (p,q,α,β) Devo verificare se (γ,δ) è una firma di per Verifica firma DSA (γ,δ) A (p,q,α,β) Verifica firma di e ()δ -1 mod q e γδ -1 mod q vera se γ = (α e β e mod p) mod q falsa altrimenti 46 47
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) = (γ,δ) Lunghezza firma = 320 bit Computazioni off-line: r, sγ, r -1 mod q 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,α,β) (,γ,δ) Computazioni on-line: (), +, 48 49 Correttezza verifica firma DSA Scelta dei parametri (α e β e mod p) mod q = (α ()δ-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 Come scegliere p, q, α? = γ 50 51
Generazione di p e q Generazione di p e q Scegli p Scegli q di 160 bit tale che q (p-1) Scegli p Scegli q di 160 bit tale che q (p-1) Dovrei Dovrei conoscere la la fattorizzazione di di p-1 p-1 52 53 Generazione di p e q Scegli un primo q di 160 bit Scegli un primo p di 512/1024 bit tale che q (p-1) o Scegli X di 512 bit (oppure... 1024 bit) o p X - ((X mod 2q)-1) 2q (p-1) o se p è primo e p 2 511 esci altrimenti riprova 54 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 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 a else go to 1. 1. α q (g (p-1)/q ) q g p-1 1 mod p Dal teorema di Lagrange, ord(α) divide q q primo ord(α)=1 oppure ord(α)=q ord(α)=1 sse α =1 α 1 ord(α)=q 62 63
Probabilità successo 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 64 Voglio falsificare la firma di da parte di A Total break Key only attack A (p,q,α,β) Devo calcolare s=log α β mod p A?? 65 Voglio falsificare la firma di da parte di A Selective forgery Key only attack Sicurezza firma DSA 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 Sicurezza firma DSA 1. Scelgo γ,δ a caso 2. Calcolo z tale che α z = γ δ β -γ A (p,q,α,β) Devo calcolare z=log α (γ δ β -γ ) -1 (z) A 66 67
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 68 69 Prestazioni algoritmi Celeron 850Hz, Windows 2000, Crypto++ millisecondi/operazione bit firma irma con verifica chiave precomputazio ne 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 70 Pentium II 400 OpenSSL Prestazioni RSA DSA RSA DSA RSA DSA bit chiave 512 512 1024 1024 2048 2048 firme/s 342 331 62 112 10 34 verifiche/ s 3287 273 1078 94 320 27 71