Le Curve Ellittiche in Crittografia Alessandro Berti [email protected] Universitá degli Studi di Padova 12/03/2012 Alessandro Berti [email protected] (Universitá Le Curve Ellittiche degli Studi in Crittografia di Padova) 12/03/2012 1 / 90 INTRODUZIONE Le CURVE ELLITTICHE (CE o EC) sono uno strumento molto potente nel ramo della CRITTOGRAFIA. Sono considerate ”difficili da attaccare”, tanto che il governo americano, per cifrare i segreti piú importanti, si basa su esse. Lo studio di algoritmi basati su CE é iniziato nel 1985 grazie a Miller e a Koblitz. Alessandro Berti [email protected] (Universitá Le Curve Ellittiche degli Studi in Crittografia di Padova) 12/03/2012 2 / 90 INTRODUZIONE In questa presentazione, si introdurrá: 1 Cosa sono le curve ellittiche 2 Alcuni algoritmi per la crittografia basati su curve ellittiche 3 Tecniche per lo studio della primalitá e della fattorizzazione mediante curve ellittiche Alessandro Berti [email protected] (Universitá Le Curve Ellittiche degli Studi in Crittografia di Padova) 12/03/2012 3 / 90 DEFINIZIONE DI CE Sia K un campo (per esempio, K = R o K = Q o K = C o K = Fq con q = p r ). La definizione di curva ellittica dipende dalla caratteristica del campo in questione Alessandro Berti [email protected] (Universitá Le Curve Ellittiche degli Studi in Crittografia di Padova) 12/03/2012 4 / 90 DEF. CE (caso ch(K ) 6= 2, 3) Sia x 3 + ax + b un polinomio senza radici multiple. Definizione Una CURVA ELLITTICA su K é l’insieme dei punti (x, y ) ∈ K 2 che soddisfano l’equazione y 2 = x 3 + ax + b Insieme ad un singolo elemento O chiamato ”punto all’infinito”. Alessandro Berti [email protected] (Universitá Le Curve Ellittiche degli Studi in Crittografia di Padova) 12/03/2012 5 / 90 DEF. CE (caso ch(K ) = 2) Definizione Una CURVA ELLITTICA su K é l’insieme dei punti che soddisfano a una delle due equazioni y 2 + cy = x 3 + ax + b y 2 + xy = x 3 + ax 2 + b Alessandro Berti [email protected] (Universitá Le Curve Ellittiche degli Studi in Crittografia di Padova) 12/03/2012 6 / 90 DEF. CE (caso ch(K ) = 3) Definizione Una CURVA ELLITTICA su K é l’insieme dei punti che soddisfano all’equazione y 2 = x 3 + ax 2 + bx + c Alessandro Berti [email protected] (Universitá Le Curve Ellittiche degli Studi in Crittografia di Padova) 12/03/2012 7 / 90 SOMMARE I PUNTI Un fatto importante riguardante le CURVE ELLITTICHE é che i loro punti formano un gruppo abeliano. Per il momento assumiamo che K = R, cosı́ che la curva ellittica sia una curva sul piano (piú un altro punto O). Alessandro Berti [email protected] (Universitá Le Curve Ellittiche degli Studi in Crittografia di Padova) 12/03/2012 8 / 90 Alessandro Berti [email protected] (Universitá Le Curve Ellittiche degli Studi in Crittografia di Padova) 12/03/2012 9 / 90 SOMMARE I PUNTI Definizione Sia E una curva ellittica su K = R e siano P, Q due punti su E . Definiamo il negativo di P e la somma P + Q secondo le regole 1 Se P é O, −P é O e P + Q é Q; ció vuol dire che O é l’elemento zero di quel gruppo di punti. Se P 6= O e Q 6= O 2 Il negativo −P é il punto con la stessa coordinata x ma con coordinata y cambiata −(x, y ) = (x, −y ). 3 Se P e Q hanno x uguale, la linea l = PQ interseca la curva in un altro punto R. Allora poniamo P + Q = −R. 4 Se Q = −P allora P + Q = O. 5 Se P = Q, sia l la linea tangente alla curva in P, e R il punto di intersezione di l con la curva, e si ponga P + Q = −R. Alessandro Berti [email protected] (Universitá Le Curve Ellittiche degli Studi in Crittografia di Padova) 12/03/2012 10 / 90 Alessandro Berti [email protected] (Universitá Le Curve Ellittiche degli Studi in Crittografia di Padova) 12/03/2012 11 / 90 IL PUNTO ALL’INFINITO É l’elemento ”nullo” del gruppo abeliano (per definizione). Visivamente, possiamo collocarlo infinitamente in alto. É il ”terzo punto di intersezione” di ogni linea verticale con la curva. Alessandro Berti [email protected] (Universitá Le Curve Ellittiche degli Studi in Crittografia di Padova) 12/03/2012 12 / 90 FORMULE PER LA SOMMA Data una CE y 2 = x 3 + ax + b e due punti distinti P e Q, siamo interessati a trovare una formula ”esplicita” per la somma. 1 Sia y = mx + q retta passante per i due punti (m = yx22 −y −x1 , q = y1 − mx1 ). Allora possiamo scrivere P = (x1 , mx1 + q) e Q = (x2 , mx2 + q). Vogliamo trovare P + Q = (x3 , y3 ). Consideriamo allora il sistema di equazioni ( y 2 = x 3 + ax + b y = mx + q Alessandro Berti [email protected] (Universitá Le Curve Ellittiche degli Studi in Crittografia di Padova) 12/03/2012 13 / 90 FORMULE PER LA SOMMA Il sistema precedente ci conduce a un’equazione del terzo grado x 3 − (mx + q)2 + ax + b = 0 Di questo polinomio, conosciamo giá due radici, x1 e x2 (i punti corrispondenti stanno sia sulla curva che sulla retta). Vogliamo trovare x3 . Sfruttiamo il fatto che la somma delle radici di un polinomio di terzo grado é uguale a meno il coefficiente del termine di secondo grado per ottenere 2 x3 = m − x1 − x2 = y2 − y1 x2 − x1 2 − x1 − x2 Quindi y3 = −y1 + y2 − y1 x2 − x1 (x1 − x3 ) Alessandro Berti [email protected] (Universitá Le Curve Ellittiche degli Studi in Crittografia di Padova) 12/03/2012 14 / 90 FORMULE PER LA SOMMA Abbiamo visto nelle slides precedenti delle formule per la somma di due punti distinti P e Q. Ma se volessimo fare P + P? Ci sarebbe da trovare l’equazione della tangente alla curva, e trovare l’altro punto di intersezione con la curva. Procediamo per differenziazione implicita, trovando che dy /dx = 3x12 + a 2y1 Alessandro Berti [email protected] (Universitá Le Curve Ellittiche degli Studi in Crittografia di Padova) 12/03/2012 15 / 90 FORMULE PER LA SOMMA Allora le formule viste prima si scrivono 2 3x12 + a x3 = − 2x1 2y1 2 3x1 + a y3 = −y1 + (x1 − x3 ) 2y1 Dato n ∈ N, é allora possibile definire la quantitá nP = P + P + . . . + P per n volte. Alessandro Berti [email protected] (Universitá Le Curve Ellittiche degli Studi in Crittografia di Padova) 12/03/2012 16 / 90 CURVE ELLITTICHE SUI RAZIONALI Le curve algebriche su Q godono di un’interessante proprietá Teorema (di Mordell) Il gruppo abeliano di una curva algebrica su Q é finitamente generato. Questo significa che abbiamo un sottogruppo di torsione (i punti di ordine finito) finito piú un sottogruppo generato da un numero finito di punti di ordine infinito. Il numero di generatori che servono per la parte infinita é chiamato il rango r . Alessandro Berti [email protected] (Universitá Le Curve Ellittiche degli Studi in Crittografia di Padova) 12/03/2012 17 / 90 L’ORDINE DI UN PUNTO Precisiamo cosa intendiamo per ordine. Definizione L’ordine N di un punto P su una curva ellittica é il piú piccolo intero positivo tale che NP = O; tale N non deve per forza esistere. Alessandro Berti [email protected] (Universitá Le Curve Ellittiche degli Studi in Crittografia di Padova) 12/03/2012 18 / 90 CAMPI FINITI Mettiamoci ora a lavorare su K = Fq . É chiaro sin da subito che le CE su Fq possono avere al massimo 2q + 1 punti; cioé il punto all’infinito piú altri 2q punti, che possono essere dati da 1 2 preso x ∈ Fp , si calcoli x 3 + ax + b (si puó sempre fare!) √ si prenda y = ± x 3 + ax + b Tuttavia, non sempre si puó estrarre la radice quadrata! Alessandro Berti [email protected] (Universitá Le Curve Ellittiche degli Studi in Crittografia di Padova) 12/03/2012 19 / 90 RESIDUI QUADRATICI Definizione Un numero n é chiamato residuo quadratico modulo p se esiste un intero x tale che x 2 ≡ n (mod p) In caso contrario, n é detto essere un non-residuo quadratico. Se p é un numero primo dispari, allora metá dei numeri 1, 2, . . . , p − 1 sono residui e metá non-residui quadratici. Questo perché i residui quadratici si ottengono calcolando b 2 modulo p per 1 ≤ b ≤ (p − 1)/2. Gli altri quadrati si ripetono in ordine inverso. Alessandro Berti [email protected] (Universitá Le Curve Ellittiche degli Studi in Crittografia di Padova) 12/03/2012 20 / 90 SIMBOLO DI LEGENDRE Il simbolo di Legendre é definito come segue: Se p é un numero primo e a é un intero, allora a p é uguale a: 1 0 se p divide a 2 1 se a é un quadrato modulo p - ossia esiste un intero k tale che k 2 ≡ a (mod p) 3 −1 se a non é un quadrato modulo p, cioé a é un non-residuo quadratico modulo p Alessandro Berti [email protected] (Universitá Le Curve Ellittiche degli Studi in Crittografia di Padova) 12/03/2012 21 / 90 PROPRIETÁ DEL SIMBOLO DI LEGENDRE Il simbolo di Legendre possiede un certo numero di proprietá che consentono di velocizzare i calcoli. Le piú importanti sono: ab b 1 = pa p p 1 2 p =1 −1 3 = (−1)(p−1)/2 p 2 (p 2 −1)/8 4 p = (−1) q p (p−1)(q−1)/4 5 p = q (−1) L’ultima proprietá prende il nome di legge di reciprocitá quadratica. Alessandro Berti [email protected] (Universitá Le Curve Ellittiche degli Studi in Crittografia di Padova) 12/03/2012 22 / 90 IL SIMBOLO DI JACOBI Il simbolo di Jacobi é una generalizzazione del simbolo di Legendre che utilizza la scomposizione in fattori primi dell’argomento inferiore. É definito come segue: Sia n > 2 un numero naturale dispari e n = p1α1 p2α2 . . . pkαk . Per ogni intero a, il simbolo di Jacobi é αk a a α1 a α2 a = ... n p1 p2 pk dove porre a p n 1 con p primo é il simbolo di Legendre. Si conviene inoltre di = 1. Alessandro Berti [email protected] (Universitá Le Curve Ellittiche degli Studi in Crittografia di Padova) 12/03/2012 23 / 90 IL SIMBOLO DI JACOBI Notiamo che se na = −1, allora a non é un residuo quadratico di n perché non é residuo quadratico di qualche fattore di n. Inoltre, se a = 0, allora (a, n) > 1. Tuttavia, se na = 1 non si puó dedurre che a n sia un residuo quadratico di n perché é possibile che un numero pari di fattori di n siano non-residui, e quindi il prodotto dei loro simboli di Legendre valga ugualmente 1. Alessandro Berti [email protected] (Universitá Le Curve Ellittiche degli Studi in Crittografia di Padova) 12/03/2012 24 / 90 ALGORITMO DI TONELLI-SHANKS L’algoritmo di Tonelli-Shanks é usato con l’aritmetica modulare per risolvere una congruenza della forma x 2 ≡ n (mod p) dove n é un residuo quadratico (modp) e p é un primo dispari. Tonelli-Shanks non puó essere usato per moduli composti. L’algoritmo funziona cosı́: INPUT: p, un numero primo dispari. n,un residuo quadratico (mod p), che significa che il simbolo di Legendre pn = 1. OUTPUT: R, un intero che soddisfa R 2 ≡ n. Alessandro Berti [email protected] (Universitá Le Curve Ellittiche degli Studi in Crittografia di Padova) 12/03/2012 25 / 90 ALGORITMO DI TONELLI-SHANKS 1 2 Tira fuori le potenze di 2 da p − 1, definendo Q e S come p − 1 = Q2S con Q dispari. Si selezioni z tale che il simbolo di Legendre pz = −1 (z dovrebbe essere un non-residuo quadratico modulo p) e si ponga c ≡ z Q . 3 4 Sia R ≡ n(Q+1)/2 , t = nQ e M = S. Ripeti: - se t ≡ 1, ritorna R i - altrimenti, trova il piú piccolo i, 0 < i < M, tale che t 2 ≡ 1 M−i−1 , e si ponga R ≡ Rb, t ≡ tb 2 , c ≡ b 2 e M = i. - sia b ≡ c 2 Alessandro Berti [email protected] (Universitá Le Curve Ellittiche degli Studi in Crittografia di Padova) 12/03/2012 26 / 90 APPROCCIO CLASSICO tic p = 20996011; % p \equiv 3 mod 4 % x = 13371337 x^2 mod p = 8708486 n = 8708486; for i=1:p-1 t = mod(i^2,p); if (t == n) break; end end i toc Elapsed time is 3.272411 seconds. Alessandro Berti [email protected] (Universitá Le Curve Ellittiche degli Studi in Crittografia di Padova) 12/03/2012 27 / 90 APPROCCIO CON TONELLI-SHANKS Definiamo anzitutto una funzione potenza ”efficiente”, che ci permetta di calcolarle modulo p in fretta. Per esempio, invece di calcolare a23 moltiplicando a per 23 volte, questo metodo calcola anzitutto a2 , a4 , a16 e poi moltiplica a ∗ a2 ∗ a4 ∗ a16 . function P = pot_mod(a,m,p) P=1; M=m; A=a; while (M > 0) q = floor(M/2); r = M - 2*q; if (r==1) P = mod(P*A,p); end M=q; A=mod(A^2,p); end end Alessandro Berti [email protected] (Universitá Le Curve Ellittiche degli Studi in Crittografia di Padova) 12/03/2012 28 / 90 APPROCCIO CON TONELLI-SHANKS tic p = 20996011; n = 8708486; z = 20996010; S=0; Q=p-1; while (mod(Q,2) == 0) Q=Q/2; S=S+1; end c = pot_mod(z,Q,p); R = pot_mod(n,(Q+1)/2,p); t = pot_mod(n,Q,p); M = S; while (mod(t,p) ~= 1) tt = t; while (mod(tt,p) ~= 1) tt = pot_mod(tt,2,p); end b = pot_mod(c,pot_mod(2,(M-i-1),p),p); R = mod(R*b,p); c = mod(b^2,p); M = i; end R toc Elapsed time is 0.107229 seconds. Alessandro Berti [email protected] (Universitá Le Curve Ellittiche degli Studi in Crittografia di Padova) 12/03/2012 29 / 90 N DI PUNTI DI UNA CE IN Fq Prima avevamo detto che una curva ellittica in Fq non poteva (oggettivamente!) avere piú di 2q + 1 punti. Ma c’era il problema delle radici: visto che solo metá degli elementi di Fq ammettono radice quadrata, ci si aspetta che N sia piú o meno metá degli elementi. Chiamiamo ora χ(x) = qx il simbolo di Jacobi. Alessandro Berti [email protected] (Universitá Le Curve Ellittiche degli Studi in Crittografia di Padova) 12/03/2012 30 / 90 N DI PUNTI DI UNA CE IN Fq Il numero di soluzioni y ∈ Fq all’equazione y 2 = u é uguale a 1 + χ(u), e allora la curva ellittica avrá un numero di punti pari a (contando anche il punto all’infinito!) 1+ X (1 + χ(x 3 + ax + b)) = x∈Fq =q+1+ X χ(x 3 + ax + b) x∈Fq Ci aspettiamo che χ(x 3 + ax + b) possa essere, con la stessa frequenza, +1 e −1. Alessandro Berti [email protected] (Universitá Le Curve Ellittiche degli Studi in Crittografia di Padova) 12/03/2012 31 / 90 N DI PUNTI DI UNA CE IN Fq Possiamo trattare il problema come quello di una ”passeggiata casuale”. Tira una moneta q volte, fai un passo avanti quando esce 1, fai un passo indietro quando esce −1. Per il Calcolo delle Probabilitá, dopo q tiri ti troverai ad una distanza √ dall’origine mediamente pari a q. Alessandro Berti [email protected] (Universitá Le Curve Ellittiche degli Studi in Crittografia di Padova) 12/03/2012 32 / 90 N DI PUNTI DI UNA CE IN Fq La somma aleatoria. P χ(x 3 + ax + b) si comporta un po’ come una passeggiata Teorema (di Hasse) Sia N il numero di punti di una curva ellittica su Fq . Allora √ |N − (q + 1)| ≤ 2 q Alessandro Berti [email protected] (Universitá Le Curve Ellittiche degli Studi in Crittografia di Padova) 12/03/2012 33 / 90 LA CONGETTURA DI WEIL Consideriamo una CE su Fq , che ha N punti. Sia Fqr estensione di Fq e consideriamo la stessa CE sul nuovo campo. Essa avrá un numero di punti pari a Nr . Sia z la seguente serie z(T ; E /Fq ) = e P Nr T r /r dove T é tale 0 ≤ T < q1 . Questa serie si chiama la funzione zeta della curva ellittica. Alessandro Berti [email protected] (Universitá Le Curve Ellittiche degli Studi in Crittografia di Padova) 12/03/2012 34 / 90 LA CONGETTURA DI WEIL La congettura di Weil ci dice che la funzione precedente assume una forma molto speciale Teorema (Congettura di Weil) La funzione zeta é una funzione razionale nella forma Z (T ; E /Fq ) = 1 − dT + qT 2 (1 − T )(1 − qT ) dove d é un’opportuna costante. Alessandro Berti [email protected] (Universitá Le Curve Ellittiche degli Studi in Crittografia di Padova) 12/03/2012 35 / 90 SOMMARE I PUNTI IN Fq Ricordiamo le formule per la somma di punti di CE su R y2 − y1 2 − x1 − x2 x3 = x2 − x1 y2 − y1 y3 = −y1 + (x1 − x3 ) x2 − x1 Si possono applicare anche su Fq ? Alessandro Berti [email protected] (Universitá Le Curve Ellittiche degli Studi in Crittografia di Padova) 12/03/2012 36 / 90 INVERSI MODULARI 1 Il problema é il termine m = yx22 −y −x1 . Dopo aver eliminato i fattori in comune, puó succedere che il denominatore sia diverso da 1. In tal caso, per calcolare m si deve calcolare l’inverso del denominatore in Fq . Come si puó fare? Si puó trovare un’identitá di Bezout tramite l’algoritmo di Euclide esteso. Alessandro Berti [email protected] (Universitá Le Curve Ellittiche degli Studi in Crittografia di Padova) 12/03/2012 37 / 90 ALGORITMO DI EUCLIDE ESTESO Dati due numeri, m e n, m > n, se ne vuole scrivere l’identitá di Bezout. Si trovano delle successioni {qk }k , {rk }k , {nk }k tali che, posto n1 = m e n2 = n abbiamo: n1 = q1 n2 + r1 n2 = q2 n3 + r2 ... nm = qm nm+1 + rm nm+1 = qm+1 nm+2 + 0 rm é l’ultimo resto non nullo. É il Massimo Comun Divisore tra m e n e nk = rk−2 . Alessandro Berti [email protected] (Universitá Le Curve Ellittiche degli Studi in Crittografia di Padova) 12/03/2012 38 / 90 ALGORITMO DI EUCLIDE ESTESO Poi si torna a ritroso nel procedimento trovando l’identitá di Bezout. Esempio Si vuole calcolare l’identitá di Bezout tra 97 e 29. Abbiamo 97 = 3 ∗ 29 + 10 29 = 2 ∗ 10 + 9 10 = 9 ∗ 1 + 1 9=9∗1 Quindi MCD(97, 29) = 1. Costruiamo ora l’identitá di Bezout. Abbiamo 1 = 10 − 1 ∗ 9 = = 10 − 29 + 2 ∗ 10 = 3 ∗ 10 − 29 = = 3 ∗ (97 − 3 ∗ 29) − 29 = 3 ∗ 97 − 10 ∗ 29 Alessandro Berti [email protected] (Universitá Le Curve Ellittiche degli Studi in Crittografia di Padova) 12/03/2012 39 / 90 INVERSI MODULARI Nell’esempio precedente, dati 97 e 29, si é trovato che 3 ∗ 97 − 10 ∗ 29 = 1 I numeri 3 e 10 si chiamano inversi modulari e sono tali che 3 ∗ 97 ≡ 1 (mod 29) −10 ∗ 29 ≡ 1 (mod 97) Abbiamo trovato un modo per invertire i denominatori in Fq ! Ci basta calcolare l’inverso modulare di (x2 − x1 ) modulo q, quindi é sufficiente usare l’algoritmo di Euclide esteso per trovare un’identitá di Bezout tra (x2 − x1 ) e q. Alessandro Berti [email protected] (Universitá Le Curve Ellittiche degli Studi in Crittografia di Padova) 12/03/2012 40 / 90 REALIZZAZIONE ALG. EUCLIDE ESTESO function [x,y] = ide_bez(a,b) n(1)=a; n(2)=b; q(1)=floor(n(1)/n(2)); r(1)=mod(n(1),n(2)); i=1; while (r(i) ~= 0) n(i+2)=r(i); i=i+1; q(i)=floor(n(i)/n(i+1)); r(i)=mod(n(i),n(i+1)); end i=i-1; x=1; y=-q(i); while (i>=2) i=i-1; temp=x; x=y; y=temp-q(i)*y; end end Alessandro Berti [email protected] (Universitá Le Curve Ellittiche degli Studi in Crittografia di Padova) 12/03/2012 41 / 90 SOMMARE I PUNTI SU Fq function [x,y] = sum_pts(x1,y1,x2,y2) % consideriamo la curva ell. su F_q; y^2 = x^3 + x + 1 q=5; a=1; % se (x1,y1) \’e il punto all’infinito, allora la somma e’ l’a if (x1==0 && y1==0) x=x2; y=y2; return; end % se (x2,y2) \’e il punto all’infinito, allora la somma e’ l’a if (x2==0 && y2==0) x=x1; y=y1; return; end % se le ascisse coincidono ma le ordinate no, % allora la somma \’e il punto all’infinito if (x1==x2 && y1~=y2) x=0; y=0; return; end if (x1==x2 && y1==y2) if (mod(2*y1,q)==1) B=1; end if (mod(2*y1,q)~=1) [A,B] = ide_bez(q,mod(2*y1,q)); end m = mod((3*x1^2 + a)*B,q); end Alessandro Berti [email protected] (Universitá Le Curve Ellittiche degli Studi in Crittografia di Padova) 12/03/2012 42 / 90 SOMMARE I PUNTI SU Fq if (x1~=x2) if (mod(x2-x1,q)==1) B=1; end if (mod(x2-x1,q)~=1) [A,B] = ide_bez(q,mod(x2-x1,q)); end m = mod((y2-y1)*B,q); end x = mod(m^2 - x1 - x2,q); y = mod(-y1 + m*(x1-x),q); end Alessandro Berti [email protected] (Universitá Le Curve Ellittiche degli Studi in Crittografia di Padova) 12/03/2012 43 / 90 MOLTIPLICARE I PUNTI SU Fq x1=2; y1=1; x=0; y=0; for i=1:4 x2=x; y2=y; [x,y] = sum_pts(x1,y1,x2,y2) end Alessandro Berti [email protected] (Universitá Le Curve Ellittiche degli Studi in Crittografia di Padova) 12/03/2012 44 / 90 MOLTIPLICARE I PUNTI SU Fq Riepilogando: - Abbiamo definito l’algoritmo di Euclide esteso per poter invertire gli elementi in Fq - Abbiamo definito la funzione che somma i punti, in tutti i casi possibili (ascisse coincidenti, . . . ) - Per moltiplicare un punto per se stesso, abbiamo ripetuto per n volte l’operazione di somma. Visto che Fq é un campo finito, l’ordine di ogni elemento é finito. Per esempio, prendendo P = (2, 1) che stá sulla curva ellittica y 2 = x 3 + x + 1 otteniamo la seguente sequenza: (2, 1) (2, 4) (0, 0) (2, 1) . . . Quindi l’ordine di (2, 1) é 2. Alessandro Berti [email protected] (Universitá Le Curve Ellittiche degli Studi in Crittografia di Padova) 12/03/2012 45 / 90 CRITTOGRAFIA Vogliamo capire come ”celare” un testo in chiaro tramite l’uso di curve ellittiche. APPROCCIO INGENUO: Si associa a ogni testo in chiaro un numero m, si calcola x = m3 + am + b e si cerca di estrarre la radice trovando y . Tuttavia, non é affatto detto che tale radice esista . . . Alessandro Berti [email protected] (Universitá Le Curve Ellittiche degli Studi in Crittografia di Padova) 12/03/2012 46 / 90 CRITTOGRAFIA APPROCCIO SENSATO: Sia k > 1 intero fissato, m numero corrispondente al nostro testo in chiaro. Si provano a trovare le radici quadrate di x = f (km + j) (f (ξ) = ξ 3 + aξ + b) dove j é un intero che puó andare da 0 a k − 1. Finché se ne trova una che esiste! Allora avremmo individuato un punto (x, y ) sulla nostra curva ellittica che corrisponde a m. Il metodo precedente aveva probabilitá 1/2 di successo. Questo metodo ha una probabilitá 1 − 2−k di successo. Alessandro Berti [email protected] (Universitá Le Curve Ellittiche degli Studi in Crittografia di Padova) 12/03/2012 47 / 90 CIFRATURA DOUBLE-LOCK A parole possiamo descriverla cosı́: 1 Lucy vuole mandare un regalo a Charlie; lo mette in una scatola e ci appone un lucchetto (che solo lei puó aprire) 2 Charlie riceve il pacco; non puó aprirlo, ci appone un altro lucchetto (che solo lui puó aprire) e lo rimanda a Lucy. 3 Lucy riceve il pacco, rimuove il proprio lucchetto e rimanda tutto a Charlie. Sul pacco sará rimasto solo il lucchetto di Charlie. 4 Charlie puó rimuovere l’ultimo lucchetto; ha il suo regalo! Alessandro Berti [email protected] (Universitá Le Curve Ellittiche degli Studi in Crittografia di Padova) 12/03/2012 48 / 90 CIFRATURA DOUBLE-LOCK Alessandro Berti [email protected] (Universitá Le Curve Ellittiche degli Studi in Crittografia di Padova) 12/03/2012 49 / 90 COME FARE LA DOUBLE-LOCK CON LE CE Supponiamo di avere una CE su Fq che sia Lucy che Charlie conoscono. Sia N il numero di punti della CE . Lucy sceglie una chiave di cifratura, chiamiamola eA , che é un intero coprimo con N, e supponiamo voglia mandare ”come regalo” il punto P a Charlie. Allora calcola eA P (prodotto di punti sulla CE) e lo manda a Charlie. Charlie riceve eA P che non puó decifrare. Che fa? Genera una propria chiave di cifratura eB e la applica al punto eA P ottenendo eB eA P. Manda eB eA P a Lucy. Alessandro Berti [email protected] (Universitá Le Curve Ellittiche degli Studi in Crittografia di Padova) 12/03/2012 50 / 90 COME FARE LA DOUBLE-LOCK CON LE CE A questo punto, Lucy riceve eB eA P. Lucy sará in possesso di una chiave di decifrazione dA che applica a eB eA P per ottenere eB P. Manda eB P a Charlie! Charlie sará in possesso della propria chiave di decifrazione dB che applica a eB P per ottenere P. Charlie ha ottenuto P! Alessandro Berti [email protected] (Universitá Le Curve Ellittiche degli Studi in Crittografia di Padova) 12/03/2012 51 / 90 PROBLEMI 1 Data una chiave di cifratura e, come si trova la chiave di decifrazione d? 2 Data una chiave di cifratura e, é davvero cosı́ facile calcolare eP? 3 In tutti i passaggi, abbiamo supposto di conoscere il numero N dei punti della CE . É un conto che possiamo fare in tempi ragionevoli? 4 Come facciamo a essere sicuri che la chiave e sia ”sicura”, ossia non esistano attacchi che in breve tempo consentano di decifrarla? 5 Supponiamo che la chiave e sia ”sicura” e che ”uno” intercetti la comunicazione, e abbia ad esempio P ed eP. In quanto tempo puó arrivare a conoscere la chiave e? Alessandro Berti [email protected] (Universitá Le Curve Ellittiche degli Studi in Crittografia di Padova) 12/03/2012 52 / 90 P.1: TROVARE CHIAVE DECIFRAZIONE Supponiamo di avere una chiave di cifratura e. Come troviamo la chiave di decifrazione d? Sia N il numero di punti della curva ellittica. Sappiamo che per ogni P abbiamo NP = O, dove O é il punto all’infinito, quindi (N + 1)P = P. Ci é dunque sufficiente trovare d tale che ed ≡ 1 (mod N) Questo puó essere fatto trovando un’identitá di Bezout tra N ed e tramite l’algoritmo di Euclide esteso. Alessandro Berti [email protected] (Universitá Le Curve Ellittiche degli Studi in Crittografia di Padova) 12/03/2012 53 / 90 P.2: CALCOLARE eP Usare il metodo visto in precedenza (eP = P + . . . + P) puó risultare dispendioso se la chiave e é grande. Possiamo usare un metodo simile a quello che abbiamo usato per elevare a potenze ”grandi” modulo p. In pratica, si continua a dividere per 2 memorizzando i resti e poi, tornando a ritroso, si moltiplica il punto per 2, aggiungendo poi il P originario se il resto é 1. Per esempio, vogliamo calcolare 10P. Abbiamo 10 = 5 ∗ 2 + 0, 5 = 2 ∗ 2 + 1, 2 = 2 ∗ 1 + 0. Prendiamo il P originario, moltiplichiamolo per 2, moltiplichiamo quanto ottenuto per 2, aggiungiamo a questo il P originario, e moltiplichiamo il tutto per 2. 10P = 2 ∗ (P + 2 ∗ (2P)) Alessandro Berti [email protected] (Universitá Le Curve Ellittiche degli Studi in Crittografia di Padova) 12/03/2012 54 / 90 P.3: CALCOLARE N Data una CE su Fq , c’é un modo per calcolare il numero di punti di essa? Un approccio plausibile potrebbe essere quello di prendere ogni x ∈ Fq e vedere se ammette o meno radici quadrate. Prima abbiamo visto l’algoritmo di Tonelli-Shanks per il calcolo della radice quadrata. Ma a noi in questo momento interessa solo sapere se la radice c’é o non c’é. Alessandro Berti [email protected] (Universitá Le Curve Ellittiche degli Studi in Crittografia di Padova) 12/03/2012 55 / 90 P.3: CALCOLARE N Possiamo semplicemente applicare questo fatto. Teorema Sia n elemento non nullo di Zq . Allora n é un residuo quadratico se e solo se n(q−1)/2 ≡ 1 (mod q) Dimostrazione Se n ≡ x 2 mod q allora n(q−1)/2 ≡ x 2(q−1)/2 ≡ x q−1 ≡ 1 mod q per il piccolo teorema di Fermat . . . Ció comporta, per ogni elemento di Zq , di dover calcolare la potenza (q − 1)/2-esima . . . Alessandro Berti [email protected] (Universitá Le Curve Ellittiche degli Studi in Crittografia di Padova) 12/03/2012 56 / 90 P.3: CALCOLARE N. MAPPA DI FROBENIUS Definiamo φq : E (Fq ) → E (Fq ) come φq ((x, y )) = (x q , y q ) Questa mappa é un endomorfismo. Per vedere che mappa punti della curva ellittica in punti della curva ellittica, ricordiamo che vale questo fatto Teorema Vale che (x + y )q ≡ x q + y q (mod q) Dimostrazione Abbiamo che q q q (x + y ) = x + y + q−1 X q k=1 E ogni q k k x q−k y k che compare nella sommatoria ha q a fattore. Alessandro Berti [email protected] (Universitá Le Curve Ellittiche degli Studi in Crittografia di Padova) 12/03/2012 57 / 90 P.3: CALCOLARE N. MAPPA DI FROBENIUS Se un punto (x, y ) soddisfa l’equazione y 2 ≡ x 3 + ax + b (mod q) Allora y 2q ≡ (x 3 + ax + b)q (mod q) Ma per quanto appena visto (x 3 + ax + b)q ≡ (x q )3 + aq x q + b q ≡ (x q )3 + ax q + b (mod q) Quindi (y q )2 ≡ (x q )3 + ax q + b (mod q) Alessandro Berti [email protected] (Universitá Le Curve Ellittiche degli Studi in Crittografia di Padova) 12/03/2012 58 / 90 P.3: CALCOLARE N. ALGORITMO DI RENÉ-SCHOOF La mappa di Frobenius ha una proprietá molto utile. √ Sia N = #E (Fq ) = q + 1 − t dove |t| ≤ 2 q per il teorema di Hasse (quello che diceva che il numero di punti di una CE si comportava piú o meno come una passeggiata aleatoria). Siamo interessati a trovare t. La mappa di Frobenius φq e t soddisfano la seguente equazione φ2q − tφq + q = 0 ∀ P ∈ E (Fq ) Alessandro Berti [email protected] (Universitá Le Curve Ellittiche degli Studi in Crittografia di Padova) 12/03/2012 59 / 90 P.3: CALCOLARE N. ALGORITMO DI RENÉ-SCHOOF Intravediamo la luce: ora, l’algoritmo di Schoof prevede che si determini il valore di t mod pi per un insieme di primi tali che Y √ K= pi > 4 q Il teorema cinese del resto é applicato per trovare l’unico t mod K tale che √ |t| ≤ 2 q. Ora che conosciamo t possiamo calcolare l’ordine del gruppo, N = #E (Fq ) = q + 1 − t. Alessandro Berti [email protected] (Universitá Le Curve Ellittiche degli Studi in Crittografia di Padova) 12/03/2012 60 / 90 P.4: ASSICURARCI DELLA SICUREZZA DI e Abbiamo appena visto come calcolare N. N é tale che NP = O per ogni punto P della curva. Ma potrebbero esistere n < N tali che nP = O, ossia l’ordine di P é n. Se un hacker prova varie chiavi di decifrazione d e per caso ed ≡ kn + 1 con k intero, cos’é che ottiene? Ottiene il messaggio in chiaro. Questo con una probabilitá N/n volte maggiore rispetto alla probabilitá originaria di trovare d. Per essere sicuri che ció non accada, basta che il numero N di punti della nostra CE in Fq sia un numero primo. In tal caso, per il teorema di Lagrange l’ordine di ogni elemento deve dividere N che é primo, quindi deduciamo che l’ordine debba essere N. Alessandro Berti [email protected] (Universitá Le Curve Ellittiche degli Studi in Crittografia di Padova) 12/03/2012 61 / 90 ESEMPI: CALCOLO DI N (METODO INEFF.) % ce y^2 = x^3 + x + 1 su F_8191 function y = n_pti() tic q = 8191; n_pts = 1; % il pto all’inf. for i=0:q-1 A = mod(i^3,q); B = mod(A + i + 1,q); if (B==0) n_pts = n_pts + 1; end if (B~=0) C= pot_mod(B,(q-1)/2,q); if (C==1) n_pts = n_pts + 2; end end end y = n_pts; toc end N = 8301 Elapsed time is 7.844067 seconds. Alessandro Berti [email protected] (Universitá Le Curve Ellittiche degli Studi in Crittografia di Padova) 12/03/2012 62 / 90 ESEMPI: SCELTA DELLA CHIAVE e % generazione chiave N = n_pti(); e = N; while (gcd(N,e)~=1) e = floor(rand()*N); end e e = 1054 Alessandro Berti [email protected] (Universitá Le Curve Ellittiche degli Studi in Crittografia di Padova) 12/03/2012 63 / 90 ESEMPI: TROVARE d N = n_pti(); e = 1054; [A,B] = ide_bez(N,e); d = mod(B,N) N = 8301, e = 1054, d = 6907 Alessandro Berti [email protected] (Universitá Le Curve Ellittiche degli Studi in Crittografia di Padova) 12/03/2012 64 / 90 ESEMPI: CODIFICA % codifica veloce! tic e = 1054; x1 = 0; y1 = 1; x = 0; y = 1; A = 1; i = 0; while (A<e) i=i+1; B(i) = mod(floor(e/A),2); A = A*2; end j=i-1; while (j>=1) x2=x; y2=y; [x,y]=sum_pts(x2,y2,x2,y2); if (B(j)==1) x2=x; y2=y; [x,y]=sum_pts(x1,y1,x2,y2); end j=j-1; end x, y toc (0, 1) → (1688, 7420) Alessandro Berti [email protected] (Universitá Le Curve Ellittiche degli Studi in Crittografia di Padova) 12/03/2012 65 / 90 ESEMPI: DECODIFICA % decodifica veloce! tic d = 6907; x1 = 1688; y1 = 7420; x = 1688; y = 7420; A = 1; i = while (A<d) i=i+1; B(i) = mod(floor(d/A),2); A = A*2; end j=i-1; while (j>=1) x2=x; y2=y; [x,y]=sum_pts(x2,y2,x2,y2); if (B(j)==1) x2=x; y2=y; [x,y]=sum_pts(x1,y1,x2,y2); end j=j-1; end x, y toc (1688, 7420) → (0, 1) Alessandro Berti [email protected] (Universitá Le Curve Ellittiche degli Studi in Crittografia di Padova) 12/03/2012 66 / 90 P.5.: PROBLEMA DEL LOGARITMO DISCRETO Prendiamo come esempio la cifratura double-lock. Un malitenzionato ascolta la discussione ed é a conoscenza di eA P, eB eA P e eB P. Se si riuscisse, dati eA P ed eB eA P, a trovare eB , allora si riuscirebbe a trovare anche dB e da eB P si potrebbe calcolare P (il punto non cifrato!) Il problema del logaritmo discreto su curve ellittiche consiste nel determinare n intero tale che nP = Q sulla curva ellittica. Questo non é un assolutamente un problema facile da risolvere. Alessandro Berti [email protected] (Universitá Le Curve Ellittiche degli Studi in Crittografia di Padova) 12/03/2012 67 / 90 P.5.: PROBLEMA DEL LOGARITMO DISCRETO Ricordiamo il problema del logaritmo discreto su un gruppo moltiplicativo. Problema Trovare x tale che g x ≡ h (mod q) Anche questo problema non é facile da risolvere. Tuttavia, conosciamo alcuni algoritmi che ci permettono di risolverlo. Alessandro Berti [email protected] (Universitá Le Curve Ellittiche degli Studi in Crittografia di Padova) 12/03/2012 68 / 90 P.5.: ALGORITMO INDEX-CALCULUS L’algoritmo richiede una base di fattorizzazione come input. La base di fattorizzazione é usualmente scelta in modo da essere il numero −1 e i primi r primi partendo da 2. L’algoritmo é eseguito in tre fasi. PRIMA FASE: si cercano di trovare r relazioni linearmente indipendenti. Ogni relazione contribuisce a una equazione di un sistema lineare in r incognite. Come si cercano le relazioni? Per k=1,2,. . . si cerca di fattorizzare g k mod q usando la base di fattorizzazione: si trovano ei tali che g k ≡ (−1)e0 2e1 . . . prer . Ogni volta che una fattorizzazione é trovata, crea un vettore (e0 , e1 , . . . , er , k) (relazione). Se questa relazione é linearmente indipendente dalle altre relazioni, aggiungila alla lista delle relazioni e se ci sono almeno r + 1 relazioni, abbiamo finito. Alessandro Berti [email protected] (Universitá Le Curve Ellittiche degli Studi in Crittografia di Padova) 12/03/2012 69 / 90 P.5.: ALGORITMO INDEX-CALCULUS SECONDA FASE: Si considera la matrice le cui righe sono le relazioni. Si riduce la matrice a una matrice unitaria (si risolve il sistema!). Ora, il primo elemento dell’ultima colonna é il logaritmo discreto di −1, il secondo elemento é il logaritmo discreto di 2 e cosı́ via. TERZA FASE: Per s = 0, 1, 2, . . . si prova a fattorizzare g s h nella base di fattorizzazione g s h = (−1)f0 2f1 . . . p fr . Appena si trova una fattorizzazione, abbiamo trovato l’output che é x = f0 logg (−1) + f1 logg (2) + . . . + fr logg (pr ) − s Alessandro Berti [email protected] (Universitá Le Curve Ellittiche degli Studi in Crittografia di Padova) 12/03/2012 70 / 90 P.5.: PROBLEMA DEL LOGARITMO DISCRETO Ci chiediamo se possiamo ridurre il problema del logaritmo discreto su curve ellittiche nP = Q a un problema di logaritmo discreto su un gruppo moltiplicativo g x ≡ h (mod q). La risposta é affermativa: si riesce a trovare una mappa che va da un sottogruppo di punti della curva ellittica in un opportuno prodotto di gruppi della forma Z∗n × Z∗nd , dove n e d sono opportuni interi. Questo risultato é dovuto a Weil, e ci permette di applicare le tecniche conosciute (come l’Index-Calculus) alle curve ellittiche. Alessandro Berti [email protected] (Universitá Le Curve Ellittiche degli Studi in Crittografia di Padova) 12/03/2012 71 / 90 ATTACCO MAN-IN-THE-MIDDLE La cifratura double-lock sembra un modo sicuro di corrispondenza. Se la cifratura é effettuata con le CE, vista la difficoltá di risolvere il log discreto, il tutto sembra assumere i connotati dell’inviolabilitá. Tuttavia, c’é una falla: supponiamo che una terza persona C (malitenzionata!) riesca a filtrare, ed eventualmente bloccare, la corrispondenza tra A e B. A vuole mandare P a B, allora calcola eA P e lo indirizza verso B. Peró C si inserisce e blocca il transito verso B. C applica la sua chiave eC per ottenere eC eA P, e lo rimanda ad A. Alessandro Berti [email protected] (Universitá Le Curve Ellittiche degli Studi in Crittografia di Padova) 12/03/2012 72 / 90 ATTACCO MAN-IN-THE-MIDDLE A riceve eC eA P. Credendo sia stato B a rimandarglielo, si sente sicuro nel togliere eA con dA . Poi rimanda, verso B, eC P. C intercetta e blocca il messaggio, usa dC e ottiene P. Questo ci dice come la cifratura double-lock, da sola, non sia sufficiente ad assicurarci la sicurezza. É opportuno pensare a metodi come la firma digitale per avere caratteristiche come l’autenticitá e l’integritá. Alessandro Berti [email protected] (Universitá Le Curve Ellittiche degli Studi in Crittografia di Padova) 12/03/2012 73 / 90 CRITTOSISTEMA DI ELGAMAL É un sistema per lo scambio di messaggi tramite un canale insicuro. La sua realizzazione si compie in tre passaggi FASE 1 - GENERAZIONE CHIAVE: É fatta da uno dei due interlocutori, supponiamo Lucy. Prendiamo un punto P su una CE C . Generiamo un intero casuale a e calcoliamo A = aP. La chiave pubblica é (C , P, A). FASE 2 - CIFRATURA MESSAGGIO: Charlie riceve la chiave pubblica (C , P, A) di Lucy. Charlie sceglie un intero casuale b e si calcola la chiave segreta condivisa K = bA(= baP) e B = bP. A questo punto, puó mandare messaggi a Lucy. Alessandro Berti [email protected] (Universitá Le Curve Ellittiche degli Studi in Crittografia di Padova) 12/03/2012 74 / 90 CRITTOSISTEMA DI ELGAMAL Supponiamo che il messaggio sia Q. Allora Charlie manda a Lucy la coppia (B, K + Q) FASE 3 - DECIFRAZIONE MESSAGGIO: Lucy, per trovare Q, si calcola la chiave segreta condivisa K = aB(= abP) e svolge il calcolo (K + Q) − K → Q L’algoritmo funziona perché entrambi si trovano la stessa chiave. Adesso ”chi sta in mezzo” non puó piú fare niente, se non provare a risolvere il problema del logaritmo discreto Dati P e A, trovare a. Dati P e B, trovare b. Alessandro Berti [email protected] (Universitá Le Curve Ellittiche degli Studi in Crittografia di Padova) 12/03/2012 75 / 90 PRIMALITÁ E FATTORIZZAZIONE Vedremo un paio di tecniche che si basano sulle CE per risolvere i seguenti problemi: 1 Dato un numero n, stabilire se n é primo 2 Dato un numero n che sia composto, produrne una fattorizzazione Alessandro Berti [email protected] (Universitá Le Curve Ellittiche degli Studi in Crittografia di Padova) 12/03/2012 76 / 90 IDEE DI BASE L’idea, in entrambi i casi, é quella di prendere un’equazione di CE y 2 = x 3 + ax + b E prenderla modulo n, dove n non é necessariamente primo, e vedere cosa succede applicando i metodi consueti di somma dei punti e conta del numero di primi (René-Schoof). Potremmo non poter procedere nei calcoli, oppure trovare delle conclusioni che non sarebbero vere se n fosse primo . . . Alessandro Berti [email protected] (Universitá Le Curve Ellittiche degli Studi in Crittografia di Padova) 12/03/2012 77 / 90 PRIMALITÁ Per il problema della primalitá, esistono metodi molto buoni che non sono trasportabili nel mondo delle CE, per esempio il metodo di Miller-Rabin (sia nella versione probabilistica che in quella deterministica che fa uso della GRH) e l’AKS. Analizzeremo una tecnica, che non é stata concepita sulle CE, trasportabile, pur senza benefici immediati, nel mondo delle CE. Alessandro Berti [email protected] (Universitá Le Curve Ellittiche degli Studi in Crittografia di Padova) 12/03/2012 78 / 90 TEST DI PRIMALITÁ Teorema Sia n intero. Supponiamo esista q > esiste un intero a tale che: 1 an−1 ≡ 1 (mod n) 2 MCD(a n−1 q √ n − 1 primo tale che q|n − 1. Se − 1, n) = 1 allora n é primo. Dimostrazione √ Se n non é primo, allora esiste primo p ≤ n t.c. p|n. Visto che q > p − 1, segue che MCD(q, p − 1) = 1 e quindi esiste u tale che n−1 uq (n−1) q ≡ au(n−1) (mod p) uq ≡ 1 (mod (p − 1)). Segue che a q ≡ a grazie alla condizione 1), e quindi questo contraddice la condizione 2). Alessandro Berti [email protected] (Universitá Le Curve Ellittiche degli Studi in Crittografia di Padova) 12/03/2012 79 / 90 TEST DI PRIMALITÁ SU CE Teorema Sia n intero positivo. Sia E l’insieme dato dall’equazione y 2 = x 3 + ax + b modulo n. Sia m un intero. Supponiamo che esista un primo q che divide m che é piú grande di (n1/4 + 1)2 . Se esiste un punto P di E tale che: 1 mP = O 2 (m/q)P é definito e non é uguale a O Allora n é primo. Alessandro Berti [email protected] (Universitá Le Curve Ellittiche degli Studi in Crittografia di Padova) 12/03/2012 80 / 90 TEST DI PRIMALITÁ SU CE Proponiamo la dimostrazione, che é concettualmente simile a quella vista in precedenza. Dimostrazione √ Se n non é primo, allora esiste primo p ≤ n t.c. p|n. Sia E 0 la CE data dalla stessa equazione di E ma considerata modulo p, e sia m0 l’ordine del √ gruppo E 0 . Per il teorema di Hasse, abbiamo m0 ≤ p + 1 + 2 p √ = ( p + 1)2 ≤ (n1/4 + 1)2 < q e quindi MCD(q, m0 ) = 1, ed esiste un intero u tale che uq ≡ 1 (mod m0 ). Sia P 0 ∈ E 0 il punto P considerato modulo p. Allora in E 0 abbiamo (m/q)P 0 = uq(m/q)P 0 = umP 0 = O, da 1), dato che mP 0 é ottenuto usando la stessa procedura di mP, cambia solo che lavoriamo modulo p|n invece che modulo n. Ma questo contraddice 2), dato che se (m/q)P é definito e 6= O modulo n, allora la stessa procedura che lavora in modulo p invece che modulo n darebbe (m/q)P 0 6= O. Alessandro Berti [email protected] (Universitá Le Curve Ellittiche degli Studi in Crittografia di Padova) 12/03/2012 81 / 90 TEST DI PRIMALITÁ SU CE Questo ci suggerisce un algoritmo per verificare la primalitá. Sia P = (x, y ) un punto. Per a scelto, si determina l’equazione di CE passante per P (bata porre b = y 2 − x 2 − ax). 1) Si considera l’ ”ipotetica” CE modulo n, e se ne calcola il numero di punti m tramite l’algoritmo di René-Schoof. Se l’algoritmo fallisce allora n é composto. 2) Si provi a scrivere m = kq dove q é un ”probabile primo” e k é un intero piccolo. Se ció non riesce, si cambiano a e P e si riparte dal punto 1) Alessandro Berti [email protected] (Universitá Le Curve Ellittiche degli Studi in Crittografia di Padova) 12/03/2012 82 / 90 TEST DI PRIMALITÁ SU CE 3) Si provano a calcolare kQ e mP. - se mP 6= O allora n é sicuramente composto (perché se n fosse primo, il gruppo avrebbe ordine m, e ogni elemento di E sarebbe ”ucciso” dalla moltiplicazione per m). - se kP = O, caso molto sfortunato, siamo costretti a ripartire dall’inizio. - se mP = O e kP 6= O, allora sappiamo che n é primo, supposto che q fosse davvero primo. Alessandro Berti [email protected] (Universitá Le Curve Ellittiche degli Studi in Crittografia di Padova) 12/03/2012 83 / 90 TEST DI PRIMALITÁ SU CE Questo riduce il problema al provare la primalitá di q, che é circa n/2. Quindi ripartiamo con lo stesso test con q al posto di n. Questo é un procedimento iterativo, che termina in non piú di log2 n iterazioni. Il test di cui abbiamo parlato non ha applicazioni ”pratiche” e si preferisce il test ”semplice” visto in precedenza. Questo perché 1 Per calcolare m bisogna applicare l’algoritmo di René-Schoof, che é dispendioso. 2 Non é cosı́ frequente che m si possa scrivere nella forma m = kq con k intero piccolo e q quasi primo. Alessandro Berti [email protected] (Universitá Le Curve Ellittiche degli Studi in Crittografia di Padova) 12/03/2012 84 / 90 FATTORIZZAZIONE Il problema della fattorizzazione é ancora piú importante: sulla sua infallibilitá poggia per esempio il sistema RSA. Anche qui si ci ispira a una tecnica di fattorizzazione non basata su CE, per poi arrivare a una tecnica basata su CE. Alessandro Berti [email protected] (Universitá Le Curve Ellittiche degli Studi in Crittografia di Padova) 12/03/2012 85 / 90 ALGORITMO ρ − 1 DI POLLARD INPUT: numero n composto OUTPUT: p fattore primo |n 1 Scegli un intero k che é multiplo di tutti gli interi piú piccoli di un certo B. Per esempio k = B! 2 Si sceglie un intero a tra 2 e n − 2. Per esempio a = 2 o a = 3. 3 Calcola ak mod n (col metodo delle potenze ripetute) 4 Calcola d = MCD(ak − 1, n) usando l’algoritmo Euclideo. 5 Se d = 1 o d = n, fai una nuova scelta di k Alessandro Berti [email protected] (Universitá Le Curve Ellittiche degli Studi in Crittografia di Padova) 12/03/2012 86 / 90 ALGORITMO ρ − 1 DI POLLARD Per spiegare come funziona, supponiamo che p sia un divisore di n tale che p − 1 sia un prodotto di primi tutti minori di B. Allora segue che k é un multiplo di p − 1 e allora, per il piccolo teorema di Fermat, abbiamo ak ≡ 1 mod p. Allora p|MCD(ak − 1, n). Alessandro Berti [email protected] (Universitá Le Curve Ellittiche degli Studi in Crittografia di Padova) 12/03/2012 87 / 90 METODO DI LENSTRA 1 Si prende un punto P (modulo n) si considera una CE (modulo n) che lo contenga (si sceglie a e poi si pone b = y 2 − x 2 − a) 2 Si sceglie un intero e che é multiplo di tutti gli interi minori di un certo numero B. Si calcola eP. 3 - se siamo stati capaci di finire tutti i calcoli senza problemi, allora dobbiamo ripartire con qualche altra curva e punto di partenza. - se troviamo kP = O in qualche passaggio allora dobbiamo, anche in questo caso, ripartire con una nuova curva. - se incontriamo un denominatore tale che MCD(v , n) non é né 1 né n, allora MCD(v , n) divide n. Alessandro Berti [email protected] (Universitá Le Curve Ellittiche degli Studi in Crittografia di Padova) 12/03/2012 88 / 90 METODO DI LENSTRA Perché questo metodo funziona? Se n = pq, allora y 2 = x 3 + ax + b (mod n) implica che la stessa equazione valga anche modp e modq. Queste due curve ellittiche piú piccole sono gruppi ”genuini”. Se questi gruppi hanno Np e Nq elementi rispettivamente, allora per il teorema di Lagrange kP = O sulla curva (modp) implica che k divide Np ; dunque Np P = O. Un’affermazione analoga vale per q. Quando la curva ellittica é scelta in modo casuale, allora Np e Nq sono numeri casuali vicini a p + 1 e q + 1 rispettivamente. Dunque é improbabile che la maggioranza dei fattori primi di Np e Nq sono gli stessi, ed é probabile che, quando calcoliamo eP, si incontra un certo kP che é O (mod p) ma non (mod q), o viceversa. Se questo é il caso, kP non esiste sulla curva originaria, e nei calcoli troviamo qualche v con MCD(v , p) = p o MCD(v , q) = q, ma non entrambi. Quindi gcd(v , n) é un fattore non-triviale di n. Alessandro Berti [email protected] (Universitá Le Curve Ellittiche degli Studi in Crittografia di Padova) 12/03/2012 89 / 90 BIBLIOGRAFIA 1 N. Koblitz, A course in Number Theory and Cryptography, second ed., Springer-Verlag, 1994 2 John J. McGee, Ren Schoofs Algorithm, Thesis submitted to the faculty of the Virginia Polytechnic Institute 3 Victor S. Miller, The Weil Pairing and Its Efficient Calculation, Communicated by Arjen K. Lenstra Alessandro Berti [email protected] (Universitá Le Curve Ellittiche degli Studi in Crittografia di Padova) 12/03/2012 90 / 90