150 likes | 295 Views
Diseño y análisis de algoritmos. Introducción a la Criptografía II. Temario. Introducción a la Criptografía II Ejemplo de clave simétrica Ejemplo de clave pública Algoritmo RSA Codificación RSA Seguridad Algoritmo exponenciación modular. Introducción a la Criptografía II
E N D
Diseño y análisis de algoritmos Introducción a la Criptografía II
Temario • Introducción a la Criptografía II • Ejemplo de clave simétrica • Ejemplo de clave pública • Algoritmo RSA • Codificación RSA • Seguridad • Algoritmo exponenciación modular
Introducción a la Criptografía II Ejemplo de clave simétrica el a es mr spock 0512 01 0519 1318 1916150311 Sherlock Holmes Jefe de policía Encriptación con llave privada En este caso ShHolmes y el Jefe poseen ambos una llave para “encriptar”; ej: Nros pares próximo impar, impares próximos nro primo, a:01 b:02 . . z:24 0713 03 0723 1719 2317170513 gm c gw qs wqwem Este método podría servir con una buena función matemática, el problema es que ambos necesitan de la misma ”regla” o llave para codificar y decodificar el mensaje.
Introducción a la Criptografía II Ejemplo de clave pública • Los protocolos de clave pública sólo fueron posibles a través del estudio sitemático, presentándose en 1978 una solución. • Propuesta por Rivest,Shamir,Adelman (RSA) 1978 • Clave pública <E,n> • Clave privada <D,n> • E,D,n, enteros positivos • Cada mensaje se representa como un entero entre 1 y n-1. Los mensajes largos se descomponen en mensajes cortos. Cada uno se representa por un entero. • Por ejemplo, un mensaje podría ser el código de un carácter.
Introducción a la Criptografía II Algoritmo RSA • Se definen las funciones E() y D() como: • E(m)= • D(C)= • Se debe cumplir que: • D(E(m))=m • E y D deben calcularse de manera relativamente fácil. • Si se publica E, debe ser muy difícil calcular D • E(D(m))=m
Introducción a la Criptografía II Algoritmo RSA • Obtener p y q primos, lo más grandes que se pueda, pues así la encriptación será más segura . • Usar test de primalidad de Miller Rabin para asegurar p y q • Usar algoritmo especial de multiplicación de números grandes • calcular n= p*q • Calcuar fi=(p-1)*(q-1) • Elegir E < fi tal que mcd(E,fi)=1, es decir E no debe tener factores comunes con fi.(primos relativos). Se puede tomar rl primer primo <fi usando test de primalidad. • Se calcula D tal que D*E mod fi=1, se debe probar satisfacer esta ecuación desde D>2 y D <fi
Introducción a la Criptografía II Codificación RSA • Dado un texto se separa en grupos de caracteres de tamaño fijo y se transforman en números enteros. • Si n se transforma a binario, se dirá que la llave se son de x bits, ejemplo n=256, corresponde a un byte, llave de 8 bits. • Ejemplo:
Introducción a la Criptografía II Codificación RSA • Codificar : • Decodificar: • Ejemplo: • Sean p =3 y q =11 (py q primos) • Sea n=33 • Fi=(p-1)*(q-1)=20 • E < fi y deben ser primos relativos, Se elije E=3, pues MCD(3,20)=20 • Cálculo de D: D*E mod ((p-1)*(q-1)) =1
Introducción a la Criptografía II Codificación RSA • Es decir, D*E mod 20 =1, D*E=20*k+1 • Existe k? • D*3=20*k+1. D=(20*k+1)/3. Si k=1,D=21/3=7 • Comprobando 21 mod 20 =1 • Por lo que n = 33 nos permite encriptar letra a letra por lo que el mensaje de Holmes original: • Debe ser codificado con la llave pública E=3 el a es mr spock 0512 01 0519 1318 1916150311
Introducción a la Criptografía II Codificación RSA Decodificación Mensaje codificado
Introducción a la Criptografía II Seguridad • La seguridad depende del número de bits correspondiente a n: • para el ekemplo, n=33 implica 5 bits aprox. (2 exp 5=32) • Netscape y Explorer usan RSA estándar con 48 bits • Mejor seguridad se obtiene con 128 bits o más, pero la obtención de llaves y los procesos de codificación y decodificación se hacen lentos. • Es 100% seguro RSA. como se vio en la clase pasada teoricamente no • Puesto que n es compuesto de dos primos, lo que se debiara es encontrar py q para quebrar el sistema factorizando n, pero esto es muy costoso. En 1977, se planteo el desafio de quebrar un string de 129 dígitos (430 bits) • Se pensaba que era invioable, pues el algoritmo de factorización para este número tardaría 40 cuatrillones de años.
Introducción a la Criptografía II Algoritmo exponenciación modular • Para codificar y decodificar , se supone que se debe exponenciar y obtener el módulo de enteros grandes (por las llaves) • Problema: dados enteros grandes m, n y z calcular • La solución se obtiene desarrollando un algoritmo dividir y conquistar más las siguientes propiedades de aritmética mdular: • Entonces el algoritmo DyC queda: • Si y es par , luego • So y es impar, luego
Introducción a la Criptografía II Algoritmo exponenciación modular • Implementación recursiva funcion expmod(x,y,z:entero):entero variables a,aux:entero inicio a:= x mod z si y=1 entonces devolver a sino si y es par entonces aux:= a*a mod z devolver expmod(aux, y div 2,z) sino devolver (a*exmod(a,y-1,z))mod z fin-si fin-si fin
Introducción a la Criptografía II Algoritmo exponenciación modular • Implementación iterativa funcion expmod(x,y,z:entero):entero variables i,aux,r:entero inicio i:=y; aux:=x; r:=1 mientras i >0 hacer si i es impar entonces r:=r*x mod z fin-si x:=x*x mod z i:=i div 2 fin-mientras devolver r fin
Introducción a la Criptografía II Seguridad • En abril de 1994 Atkins, Graff, Lenstra y Leyland LOGRARON resolver el problema para 129 cifras • El mensaje encriptado era: • THE MAGIC WORDS ARE SQEAMISH OSSIFRAGE • Se utilizó un método de factorización que requería 5000MIPS-año. Se dividió el problema en pequeñas partes, que se distribuyeron por correo electrónico a 600 computadores, que ejecutaron el algoritmo en paralelo durante 8 meses. • En la práctica se requere menos potencia computacional ya que las claves no siempre se eligen de manera óptima.