CRIPTOGRAFIA MA II - FIB
ECC
(Criptografia amb corbes el.l´ıptiques)
Sigui p un primer > 3. Una corba el.l´ıptica definida sobre el cos finit Fp ´es una corba plana donada per una equaci´ o y 2 = x3 + ax + b tal que a, b s´ on enters m` odul p i 4a3 + 27b2 6≡ 0 (mod p), m´es un punt de l’infinit O. El conjunt de punts de la corba ´es E(Fp ) = {(x, y) | x, y enters m`odul p que satisfan l’equaci´o} ∪ {O} Nota: Si p ≡ 3 mod 4 i α
p−1 2
≡ 1 mod p llavors les soluci´ons de x2 ≡ α mod p s´on x ≡ ±α
p+1 4
mod p.
En aquest conjunt es defineix una llei d’addici´o mitjan¸cant la condici´o: tres punts sumen O si i nom´es si estan alineats. Concretament, la suma de punts s’expressa de la manera seg¨ uent: si P = (x1 , y1 ) ´es un punt de la corba, posem −P = (x1 , −y1 mod p). Aleshores, • P +O=P • P + (−P ) = O • si Q = (x2 , y2 ) 6= −P , aleshores P + Q = (x0 , λ(x1 − x0 ) − y1 ), on x0 = λ2 − x1 − x2 mod p i (y2 − y1 )(x2 − x1 )−1 mod p si Q 6= P, λ= 2 (3x1 + a)(2y1 )−1 mod p si Q = P. Aquesta operaci´ o d´ ona estructura de grup abeli`a al conjunt de punts de la corba el.l´ıptica: la suma ´es associativa i commutativa, t´e element neutre (el O) i cada element P t´e oposat −P (l’oposat de O ´es ell mateix). En aquest grup, l’exponenciaci´ o kP es pot realitzar mitjan¸cant l’algoritme de Montgomery: es considera l’expressi´ o bin` aria de k, k = br 2r + · · · + b1 2 + b0 , on bi ∈ {0, 1} i br = 1; llavors R0 = O, R1 = P, i = r mentre i ≥ 0 fer si bi = 0 hacer R1 = R0 + R1 R0 = R0 + R0 si bi = 1 fer R0 = R0 + R1 R1 = R1 + R1 i=i−1 sortida R0 En les corbes el.l´ıptiques que s’utilitzen en Criptografia, el grup de punts E(Fp ) t´e cardinal 2m n, on n ´es un nombre primer i el cofactor h = 2m t´e exponent 0 ≤ m ≤ 16. En aquestes condicions, sempre existeix
1
algun punt G d’ordre n, ´es a dir, tal que nG = O per`o totes els m´ ultiples anteriors G, 2G, 3G, . . . , (n−1)G s´ on 6= O. Fixats els par` ametres p, a, b, n, G d’un sistema criptogr`afic, la clau privada de cada usuari ser`a un enter aleatori r, 1 < r < n − 1, i la clau p´ ublica ser`a el punt P = rG.
Intercanvi de claus Diffie-Hellman. Si les claus privada i p´ ublica de dos usuaris s´on (r1 , P1 = r1 G) i (r2 , P2 = r2 G), aleshores el primer usuari pot calcular r1 P2 i el segon usuari pot calcular r2 P1 , de manera que tots dos estan calculant el mateix punt: r1 r2 G = (x, y) Aix` o es pot fer servir per a que tots dos obtinguin una clau secreta, per exemple per utilitzar amb l’AES: K = H(s||x) on H() ´es una funci´ o hash, s ´es un nombre aleatori que es poden intercanviar de manera p´ ublica i || indica la concatenaci´ o de cadenes bin`aries.
ECDSA (Elliptic Curve Digital Signature Algorithm). Amb els par` ametres p, a, b, n, G com abans, la signatura d’un missatge M per part de l’usuari que t´e clau privada r i clau p´ ublica P es fa de la manera seg¨ uent: • kG = (x1 , y1 ) amb 1 < k < n − 1 aleatori • f1 = x1 mod n • f2 = k −1 ( H(M ) + f1 r) mod n • Enviar la signatura (f1 , f2 ) Si f1 = 0 o f2 = 0 s’ha de generar un nou valor de k i tornar al primer pas. Observem que si el primer p t´e longitud `, aleshores la signatura t´e longitud ≤ 2`. La verificaci´ o per part del receptor consisteix a fer el seg¨ uent: • w1 = H(M )f2−1 mod n • w2 = f1 f2−1 mod n • w1 G + w2 P = (x0 , y0 ) • Acceptar si x0 mod n = f1 En aquest algoritme hem indicat per H(M ) un hash del missatge M .
Conversi´ o enters ↔ cadena de bits Una cadena de r bits, x1 x2 · · · xr−1 xr , es transforna en un enter segons la regla x1 x2 · · · xr−1 xr −→ x = x1 2r−1 + x2 2r−2 + · · · + xr−1 2 + xr Nota: el primer bit correspon al bit m´es significatiu i el u ´ltim bit al menys significatiu. Un enter x, 0 ≤ x < 2r es transforma en una cadena de r bits fent servir la seva representaci´o bin` aria x = x1 2r−1 + x2 2r−2 + · · · + xr−1 2 + xr −→ x1 x2 · · · xr−1 xr
2
Entrega En la implementaci´ o considerarem que el primer p por arribar a tenir 512 bits i que la funci´ o hash utilitzada ´es SHA-512. En particular, podrem expressar la signatura amb 128 bytes. Pels c` alculs feu servir els par` ametres de la corba que trobareu en aquest fitxer. 1. Trobeu la clau p´ ublica associada a la clau privada que ´es l’enter obtingut de concatenar 8 vegades les xifres del vostre DNI. 2. Trobeu, si existeix, una clau p´ ublica que tingui per primera component el vostre DNI. Podeu trobar la clau privada associada? Si no existeix, trobeu una clau p´ ublica que tingui per xifres m´es significatives el vostre DNI. Podeu trobar la clau privada associada? 3. Amb les claus trobades als apartats anteriors, signeu el missatge que, en hexadecimal, coincideix amb el vostre DNI. 4. Amb les claus trobades als apartats anteriors, calculeu la clau secreta que s’obtendria fent servir com nombre aleatori s el que, en hexadecimal, coincideix amb el vostre DNI.
Per llegir Sony PS3 Security Broken. PS3 Epic Fail,p`agines 122-133 Console Hacking 2010. 27th Chaos Communication Congress.
3