25
Criptografía-ULL Clave Pública

Seguridad de los datos - cryptull.webs.ull.es · • Dado y=Ax (mod p), calcular x – Logaritmos discretos sobre curvas elípticas • Dados B y P puntos de una curva elíptica yxB=P,

Embed Size (px)

Citation preview

Criptografía-ULL

Clave Pública

Criptografía-ULL

Clave PúblicaClave PúblicaClave Pública

BD

Mensaje original

M

Mensaje cifrado CCifrado

Mensaje original

M

Mensaje cifrado C

Descifrado

UsuarioA

Usuario B

BE

Clave Pública de B Clave Privada de B

Criptografía-ULL

♦ Función unidireccional: Transformación de fácil aplicación, pero de difícil inversión.

♦ FU con trampa: inversión fácil si se tiene cierta información adicional (clave privada).

Cálculo fácil

Cálculo difícil

Cla

ve p

rivad

a

Clave pública

Clave PúblicaClave PúblicaClave Pública

Criptografía-ULL

Clave PúblicaClave Pública♦Problemas base intratables:

– Factorización (RSA)• Dado N encontrar sus factores primos

– Residuosidad cudrática (Rabin)• Dado B=x2 (mod p), calcular B1/2 (mod p)

– Logaritmos discretos (ElGamal)• Dado y=Ax (mod p), calcular x

– Logaritmos discretos sobre curvas elípticas• Dados B y P puntos de una curva elíptica yxB=P,

calcular x

Criptografía-ULL

Clave PúblicaClave PúblicaClave PúblicaCada usuario tiene: Cada usuario tiene: ••una una clave privada clave privada para descifrar y para descifrar y ••una una clave públicaclave pública para que los demás para que los demás cifren mensajes y se los envíen.cifren mensajes y se los envíen.

De esa forma:De esa forma:•• Cualquiera puede cifrar mensajes y enviárselo Cualquiera puede cifrar mensajes y enviárselo a otro usuario sin necesidad de contacto previoa otro usuario sin necesidad de contacto previo••Sólo el usuario que posee la correspondiente Sólo el usuario que posee la correspondiente clave privada puede descifrar el mensaje clave privada puede descifrar el mensaje

Criptografía-ULL

Información privada:– p, primo– q, primo– φ(n)=(p-1)(q-1)– d, entero primo con φ(n)

Información pública:– n=p•q– e, inverso de d módulo φ(n)

Clave Pública: RSAClave Pública: RSAClave Pública: RSA

Criptografía-ULL

Ci Mi= Cid (mod n)descifrado

Mi Ci= Mie (mod n)cifrado

2 128 = 27 (mod 143)cifrado

con e=7, n=143

128 2 = 128103 (mod 143)

descifradocon φ=10•12

y d=103

Clave Pública: RSAClave Pública: RSAClave Pública: RSA

Criptografía-ULL

Clave Pública: RSAClave Pública: RSATeorema de Euler:♦ aø(n)mod N = 1

– Siempre que mcd(a,N)=1En RSA se tiene que:♦ N=p.q♦ ø(N)=(p-1)(q-1) ♦ Los parámetros e & d son inversos mod ø(N) ♦ Por tanto e.d=1+k.ø(N) para algún kLuego por tanto ( siempre en aritmética mod N ) ♦ Cd = (Me)d = M 1+k.ø(N) = M 1.(M ø(N) )k

♦ = M1.(1)k = M1 = M

Criptografía-ULL

Clave Pública: RSAClave Pública: RSAClave Pública: RSACuestiones a resolver en la implementación:

•Generación seudoaleatoria de p, q y d

•Aplicación de tests de primalidad a p y q

• Aplicación del algoritmo de Euclides para la elección

de d, y el cálculo del inverso e

•Codificación numérica del mensaje inicial

•Exponenciación rápida para el cifrado y el descifrado

Criptografía-ULL

Test de primalidad de Lehman y Peralta1. Comprobar que n no es divisible por ningún primo

pequeño (2,3,5,7,11).2. Elegir 100 enteros aleatorios a1,a2,...,a100 entre 1 y

n-1.3. Para cada i calcular ai

(n-1)/2(mod n):♦ Si para todo i, ai

(n-1)/2≡1(mod n), entonces n es compuesto

♦ Si existe i tal que ai(n-1)/2≠1(mod n) y ai

(n-1)/2≠-1 (mod n), entonces n es compuesto

♦ Si para todo i, ai(n-1)/2 ≡ 1(mod n) ó ai

(n-1)/2 ≡ -1 (mod n), entonces n es primo

Criptografía-ULL

RSA: Codificación del mensaje

Para cifrar un mensaje es necesario codificarlo previamente en un sistema numérico en base b y dividirlo en bloques de tamaño j tal que bj<n<bj+1

Criptografía-ULL

Clave Pública: RSAClave Pública: RSASeguridad:♦ Basada en el problema de la factorización del

producto de dos grandes números primosNunca compartir módulos n con otros usuariosUsar p, q, d y e suficientemente grandesUsar p y q de similar longitud, pero con bastante diferencia

Usar primos fuertes, e.d. tales que:p-1 tiene un gran divisor primo rp+1 tiene un gran divisor primo sr-1 tiene un gran divisor t

Criptografía-ULL

Clave Pública: Clave Pública: Cifrado de Cifrado de ElGamalElGamal♦ Se basa en el problema de los logaritmos discretos♦ Algoritmo:

– Se escoge un número primo n y dos números aleatorios p y x menores que n. Se calcula y = px (mod n)

– La clave pública es (p, y, n), y la privada es x.– Para cifrar el mensaje m se escoge un número aleatorio

secreto k primo relativo con (n-1), y se calcula:a = pk (mod n)b = ykm (mod n)

– El par (a, b) es el texto cifrado, – Para descifrar se calcula

m = b * a-x (mod n)

Criptografía-ULL

Clave Pública: Clave Pública: Cifrado de Cifrado de RabinRabin♦Se basa en el problema de la residuosidad

cuadrática. ♦Primero se escogen dos números privados

primos, p y q, ambos congruentes con 3 módulo 4 (los dos últimos bits a 1). La clave pública es su producto, n = pq.

♦Para cifrar un mensaje m, se calcula:c = m2 (mod n)

Criptografía-ULL

Clave Pública: Cifrado de la Mochila♦Problema NP- completo de la

mochila, ♦MERKLE-HELLMAN (1978) ♦GRAHAM-SHAMIR (1984)♦La mayoría de sus

implementaciones han sido rotas por criptoanálisis

Criptografía-ULL

Clave Pública: Cifrado de la Mochila♦El problema de la mochila puede

plantearse en los siguientes términos: sea W={w1, w2, ..., wn } un conjunto finito dado de números enteros, y sea s= wi1 + ... + wit , con i1<...< it, una subsuma de elementos de W. Se trata de determinar el subconjunto {wi1,...,wit } de W, conocido W y s.

Criptografía-ULL

Clave Pública: Cifrado de la Mochila♦ Problema fácil de la mochila. Sucesión

supercreciente: w1 < w2 < ... < wk < ... tq se verifica que wi+1 > w1 + ...+ wi , para todo i.

♦ Ej: 3,5,11,22,45,88,180,357,712.♦ Si tenemos s= 1356:

1356 mayor que 712, 1356 – 712=644 entre 357 y 712, 644 – 357=287 entre 180 y 357, 287 – 180=107 entre 88 y 180, 107 – 88=19 entre 11 y 22, 19 – 11=8 entre 5 y 11, 8 – 5=3 entre 3 y 5, 3 – 3=0

Criptografía-ULL

Clave Pública: Cifrado de la Mochila♦Dado C entero positivo, W = (w1, ...,

wn ) un vector con componentes wienteros positivos para todo i. Se trata de encontrar M = (m1 , ..., mn), mi = 0 ó 1, 1< i < n, Tal que C = W.M ó C = w1m1 + ... + wn mn

♦Ej: Sea n = 5, C = 14 y W = (l, l0, 5, 22, 3), entonces M = (1,1,0,0,1).

Criptografía-ULL

Cifrado de la Mochila1) Se escoge un vector simple W' = (w1', ..., wn').

Esto permite una solución sencilla de: C'= W'.M .2) Se elige un entero u tq u >2wn' > w1'+ ... + w n'3) Se elige un entero v tal que mcd(u, v)=1 y el

inverso del mismo número v-1 (mod u) se obtiene de v.v-1 (mod u) = 1.

4) El vector W' se transforma en W=vW' (mod u), donde, wi = wi' (mod u)

Así, resolver C = W .M es difícil, pero si se conoce la información adicional v -1 y u el problema es más sencillo, pues se puede convertir el problema C = W .M en el C' = W' .M, fácil de resolver ya que C'=v -1C= v -1WM= v -1(vW')M=W'M(mod u)

Criptografía-ULL

Cifrado de la Mochila♦El cifrado sería el siguiente:

– Sea EA el algoritmo cifrado que utiliza la clave pública de A, y DA el algoritmo de descifrado que utiliza la clave privada de A (W', u , v -1 ).

– El mensaje inicial se trocea en bloques de n bits (cardinal de W) M = (m1, ..., mn ) y cada bloque se cifra según: C = EA (M) = W .M .

♦El mensaje C se descifra calculando: DA(C) = Algoritmo Simple (v-1C (modu),W') = M.

Criptografía-ULL

Cifrado de la Mochila♦Sea W = (1, 2, 5, 9), u = 20 y v = 7.

Entonces v -1 = 3 el vector W se convierte en el W' = v.W ó wi '= v. wi (mod u). La clave privada es ((1, 2, 5, 9), 3, 20).

♦W' = (7.l, 7.2, 7.5, 7.9 )(mod 20) = (7, 14, l5, 3), que es la clave pública.

♦Sea C = 13, el mensaje, que corresponde al vector binario M = (1,1,0,1).

♦C' = EA (M) = 7 +14 +3 = 24♦DA (C') = DA (24)= Algoritmo Simple (3.24

(mod 20), W')= Algoritmo Simple (12, W')= 1 + 2 + 9 = 13

Criptografía-ULL

Clave Pública: Clave Pública: Curvas ElípticasCurvas Elípticas♦Basado en el PLD Elíptico: Dados P, Q puntos de una curva, encontrar entero x tal que xP=Q

•Curva eliptica y2+axy+by=x3+cx2+dx+e, con a,b,c,d,e∈K, grupo abeliano aditivo con identidad O y suma P+Q=R:

•Si P ≠Q,-Q (donde si P = (x,y), -P = (-x,y)) se traza unarecta entre P y Q, y -R es el tercer punto de intersección de la recta con la curva• Si P=Q, -R es el punto de intersección de la recta tangente en P si lo hay, y si no R=P

Criptografía-ULL

Clave Pública: Clave Pública: Curvas ElípticasCurvas Elípticas1. Clave privada de A: entero aleatorio

aA

2. Clave pública de A: punto aAP3. Mensaje original: punto Qm

4. Mensaje cifrado: puntos {kAP,Qm+kA(aAP)} siendo kA un entero aleatorio

Criptografía-ULL

♦ Cifrado de Rabin: Basado en el PRC

♦ Cifrado de Merkle-Hellman: Basado en el

Problema de la Mochila

♦ Cifrado de Mc-Eliece: Basado en el

Problema de la Decodificación de Códigos

Lineales

Clave Pública: Otros CifradosClave Pública: Otros Clave Pública: Otros CifradosCifrados

Criptografía-ULL

¿Clave Pública o ¿Clave Pública o Clave Secreta?Clave Secreta?

¿Es entonces la solución a todos nuestrosproblemas la criptografía de clave pública?

NO– El principal inconveniente proviene de su lentitud.

¿Solución?Cifrados híbridos