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) devolver (a*exmod(a,y-1,z))mod z 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.