CRIPTO II – UT II – N° 03 ASIMETRICA I cripto-scolnik-hecht UT-2 UNIDAD TEMÁTICA N° 2: Criptografía Asimétrica. Funciones Unidireccionales. Funciones Trampa. Historia de la Criptografía Asimétrica. Protocolo de Diffie y Hellman para el intercambio de claves. Métodos asimétricos y de clave pública (PohligHellman, RSA, Fiat-Shamir). Ataques a RSA. Criptosistema de McEliece Criptosistemas Basados en el Problema de la Mochila: MerkleHellman. Criptosistemas varios. Criptosistemas Basados en el Problema de logaritmo discreto: ElGamal, Ataque a El Gamal. Criptosistemas Basados en Curvas Elípticas. cripto-scolnik-hecht CRIPTOGRAFIA ASIMETRICA LOS CRIPTOSISTEMAS ASIMETRICOS ESTAN BASADOS EN SISTEMAS REVERSIBLES PERO POR CAMINOS DIFERENTES EN TERMINOS DE COMPLEJIDAD ALGORITMICA PARA QUIEN NO DISPONGA DE TODA LA INFORMACION NECESARIA plano plano complejidad complejidad P P complejidad NP cifrado cifrado ´criptosistema simétrico ´criptosistema asimétrico cripto-scolnik-hecht CRIPTOGRAFIA ASIMETRICA CRIPTOGRAFIA ASIMETRICA NO NECESARIAMENTE ES CRIPTOGRAFIA DE CLAVE PUBLICA. POR EJEMPLO EL ALGORITMO DE ENCRIPCION DE POHLIG-HELLMAN ES ASIMETRICO PERO NO POSEE INFORMACION PUBLICA. criptografía asimétrica criptografía de clave pública cripto-scolnik-hecht CRIPTOGRAFIA DE CLAVE PUBLICA LOS CRIPTOSISTEMAS DE CLAVE PUBLICA SE BASAN (AL IGUAL QUE EL RESTO DE LA CRIPTOGRAFIA ASIMETRICA) EN PROBLEMAS COMPUTACIONALMENTE COMPLEJOS (CLASES NP o NPNP-Completo) Y CUYAS VIAS INVERSAS SEAN SIMPLES (CLASE P) PERO NO DEDUCIBLES UNA A PARTIR DE LA OTRA. LAS FUNCIONES TRAMPA DE UNA VIA PERMITEN IMPLEMENTAR ESTOS SISTEMAS DE AUTENTICACION, ENCRIPCION Y FIRMA DIGITAL. LA VIA SIMPLE SE HACE PUBLICA, LA CLAVE EXTRA DE LA VIA COMPLEJA SE MANTIENE EN SECRETO Y PERMITE IDENTIFICAR A QUIEN LA POSEE. cripto-scolnik-hecht FUNCIONES ASIMETRICAS FUNCION DE UNA VIA: y=f(x) es “computacionalmente fácil” (∈P P) pero x=f-1(y) es “computacionalmente difícil” (∈ NP) NP FUNCION TRAMPA DE UNA VIA: y=f(x) es “computacionalmente fácil” (∈ P) y x=f-1(y) es “computacionalmente difícil” (∈ NP), NP pero contando con una “clave” extra de información (trapdoor information) x=f-1(y) se vuelve computable (∈ P) cripto-scolnik-hecht FUNCION DE UNA VIA Tome el plato preferido de su señora y arrójelo con fuerza contra el suelo vía P vía NP Comprese “la gotita” y reconstruya cuidadosamente el plato cripto-scolnik-hecht FUNCION DE UNA VIA FUNCION DIRECTA (∈P P) 134078079299425970995740249982058461274793658205923933777235614 437217640300735469768018742981669034276900318581864860508537538 82811946569946433649006084171 x 327339060789614187001318969682759915221664204604306478948329136 809613379640467455488327009232590415715088668412756007100921725 6545885393053328527588513 = 438889925503495094660474900094976741605951410874586565608960159 076495790540773835773214055962909023489062778027029768939596654 709019571832257928297343946696576711205193879175320603384442571 957421143180749826560824534764835125246615339407939420184344133 72443658976181837273211017980201029191954963730727723 (t=1 µs) cripto-scolnik-hecht FUNCION DE UNA VIA FUNCION INVERSA (∈ NP) NP 438889925503495094660474900094976741605951410874586565608960159 076495790540773835773214055962909023489062778027029768939596654 709019571832257928297343946696576711205193879175320603384442571 957421143180749826560824534764835125246615339407939420184344133 72443658976181837273211017980201029191954963730727723 = 134078079299425970995740249982058461274793658205923933777235614 437217640300735469768018742981669034276900318581864860508537538 82811946569946433649006084171 x 327339060789614187001318969682759915221664204604306478948329136 809613379640467455488327009232590415715088668412756007100921725 6545885393053328527588513 (t ≈ 30.000.000 MIPS-años) cripto-scolnik-hecht FUNCION TRAMPA DE UNA VIA TRAPDOOR INFO: un factor es 2512+75 FUNCION INVERSA (NP NP!P) 438889925503495094660474900094976741605951410874586565608960159 076495790540773835773214055962909023489062778027029768939596654 709019571832257928297343946696576711205193879175320603384442571 957421143180749826560824534764835125246615339407939420184344133 72443658976181837273211017980201029191954963730727723 = 134078079299425970995740249982058461274793658205923933777235614 437217640300735469768018742981669034276900318581864860508537538 82811946569946433649006084171 x 327339060789614187001318969682759915221664204604306478948329136 809613379640467455488327009232590415715088668412756007100921725 6545885393053328527588513 (t= 1 µs) cripto-scolnik-hecht QUIERE GANAR U$S 100.000 ? Encuentre los 2 factores primos que forman este número: 135066410865995223349603216278805969938881475 605667027524485143851526510604859533833940287 150571909441798207282164471551373680419703964 191743046496589274256239341020864383202110372 958725762358509643110564073501508187510676594 629205563685529475213500852879416377328533906 109750544334999811150056977236890927563 RSA-1024 Prize: $100,000 Status: Not Factored Decimal Digits: 309 http://www.rsasecurity.com/rsalabs/challenges/factoring/numbers.html#RSA1024 cripto-scolnik-hecht HISTORIA DE LA CRIPTOGRAFIA ASIMETRICA - 1 En 1976 Whitfield Diffie y Martín Hellman iniciaron una revolución en criptografía al publicar dos trabajos: Multiuser cryptographic techniques, Proceedings of AFIPS National Computer Conference, (1976), pp.109-112. New directions in cryptography, IEEE Transactions on Information Theory, Vol.22, No.6 (1976), pp.644-654. Distintos libros le atribuyen a un joven estudiante de Berkeley, R.C.Merkle, el haber descubierto en forma independiente la criptografía de clave pública a través de los denominados Merkle´s puzzles. La motivación de todos ellos era la misma: en la clásica criptografía simétrica el emisor y el receptor comparten una misma clave que debe cambiarse periódicamente por razones de seguridad. El problema era entonces: ¿ cómo comunicar a través de canales inseguros la nueva clave ? cripto-scolnik-hecht HISTORIA DE LA CRIPTOGRAFIA ASIMETRICA - 2 Merkle publicó su primer trabajo dos años más tarde: Secure communications over insecure channels, Communications of the ACM, Vol.21 (1978), pp.294-299. También obtuvo las patentes U.S.Patent 4.881.264, 14/11/89 , 5.003.597 del 26/3/91 y 4.309,569 del 5/1/82 De hecho los tres trabajaban en contacto y tenían experiencias distintas. Martín Hellman había hecho su tesis en Matemática sobre cadenas de Markov y su motivación era la teoría de la información, Merkle estudiaba Computación y sus rompecabezas constituían un protocolo para intercambiar claves, y Diffie le dijo un cierto día a Helmann : habría que tener una clave privada y una pública. cripto-scolnik-hecht HISTORIA DE LA CRIPTOGRAFIA ASIMETRICA - 3 Diffie y Hellman pensaban que la idea de Merkle era interesante pero no muy práctica, pero los hizo pensar en otras formas de lograr transmitir datos confidenciales sobre canales inseguros. Reconociendo el trabajo conjunto, los tres obtuvieron la primera patente de criptografía de clave pública emitida el 29/4/80 con el número 4.200.770 solicitada el 6/9/77 por los tres a nombre de la Universidad de Stanford. Sin embargo se la llama la patente de DiffieHellmann porque cubre al protocolo de intercambio de claves que ellos desarrollaron, aunque también permite identificar identidades sobre canales inseguros. Por otra parte Hellmann y Merkle desarrollaron un sistema de clave pública basado en el problema de la mochila (knapsack subset problem), y solicitaron la patente el 6/10/77 que tiene el número 4.218.582 que ahora se sabe que no es seguro. cripto-scolnik-hecht HISTORIA DE LA CRIPTOGRAFIA ASIMETRICA - 4 Más allá del intercambio de claves Lo anterior tenía como objetivo intercambiar claves en forma segura, pero la encripción debía realizarse mediante un método simétrico. El paso siguiente era natural: ¿ cómo encriptar asimétricamente ? Pohlig y Hellman asimétricamente: desarrollaron un algoritmo para encriptar S.C.Pohlig and M.E.Hellman, “ An Improved Algorithm for Computing Logarithms in GF(p) and Its Cryptographic Significance”, IEEE Transactions on Information Theory, Vol.24, No.1,(1978), pp.106-111. Pero como es usual el trabajo terminado tardó dos años en publicarse. Mientras tanto Martín Hellman le mandó el paper a Ron Rivest , profesor del MIT, quien con Shamir y Adleman redactaron el algoritmo RSA y lo mandaron a una revista muchos más “rápida”. cripto-scolnik-hecht HISTORIA DE LA CRIPTOGRAFIA ASIMETRICA - 5 Su artículo era R.L.Rivest, A.Shamir and L.Adleman, “A method for obtaining digital signatures and public key cryptosystems”, Communications of the ACM, Vol.21(1978),pp.120-126. En dicho artículo ellos no reconocieron en absoluto que estaba basado en el método de Pohlig-Hellman, y más aún: cuando lo patentaron plantearon una oposición a la patente de Pohlig-Hellman. Sin embargo la contribución de RSA es la de haber transformado a un sistema asimétrico que NO es de clave pública en uno que si lo es (Pohlig-Hellman usa un entero n grande y secreto, RSA dice: hagamos que n = p.q con p y q primos grandes y publiquemos n lo cual sin duda es una gran idea, pero deberían haber mencionado que su algoritmo era una mejora de Pohlig-Hellman) cripto-scolnik-hecht HISTORIA DE LA CRIPTOGRAFIA ASIMETRICA - 6 Hugo Scolnik – Martin Hellman (2002) cripto-scolnik-hecht Como distribuir las claves secretas La idea es disponer de un conjunto numerado de claves y transmitir códigos ininteligibles para un espía que permiten arribar mediante operaciones matemáticas al mismo número. Este valor en común entre los usuarios habilitados será utilizado luego como llave de un algoritmo simétrico. cripto-scolnik-hecht PROTOCOLO DE INTERCAMBIO DE CLAVES DIFFIE-HELLMAN Este fue el primer algoritmo de clave pública y es universalmente utilizado para el intercambio seguro de claves. Sea p un primo “grande” y a un entero (2 ≤ a ≤ p2, generador del grupo cíclico Z*p), ambos se dan a conocer a los usuarios 1 y 2. Los usuarios 1 y 2 eligen arbitrariamente exponentes enteros x e y que mantienen SECRETOS y proceden a calcular y enviarse recíprocamente lo siguiente: cripto-scolnik-hecht PROTOCOLO DE INTERCAMBIO DE CLAVES DIFFIE-HELLMAN E l u s u a r io 1 c a lc u la f ( x ) = a x m o d ( p ) E l u s u a r io 2 c a lc u la f ( y ) = a y m o d ( p ) y se los intercambian… A h o r a , e l u s u a r io 2 c a lc u la y K = f ( x ) y m o d ( p ) = [a x m o d ( p ) ] m o d ( p ) = a xy m od( p) A h o r a , e l u s u a r io 1 c a lc u la x K = f ( y ) x m o d ( p ) = [a y m o d ( p ) ] m o d ( p ) = a xy m od( p) y a s í A M B O S lle g a n a la m is m a c la v e s e c re ta . cripto-scolnik-hecht PROTOCOLO DE INTERCAMBIO DE CLAVES DIFFIE-HELLMAN Ejemplo: Sea p = 23, a = 5, x = 6, y = 10 . Ahora el usuario 1 calcula: f ( x ) = a x mod( p) = 56 mod(23) = 15625 mod(23) = 8 y se lo envía al usuario 2. El usuario 2 calcula f ( y ) = a y mod( p) = 510 mod(23) = 9765625 mod(23) = 9 y se lo envía al usuario 1. cripto-scolnik-hecht PROTOCOLO DE INTERCAMBIO DE CLAVES DIFFIE-HELLMAN El usuario 2 recibió el número 8 y procede a calcular: K = f ( x ) y mod( p) = 810 mod(23) = 3 El usuario 1 recibió el número 9 y calcula: K = f ( y ) x mod( p) = 9 6 mod(23) = 3 Por lo tanto ambos llegaron a la MISMA clave. cripto-scolnik-hecht PROTOCOLO DE INTERCAMBIO DE CLAVES DIFFIE-HELLMAN Q u é c o n s ig u e u n e s p ía ? I n te r c e p ta lo s n ú m e ro s 8 y 9 y a u n q u e c o n o z c a e l p r im o e le g id o y la b a s e ( o s e a p , a ) , n o s a b e c u a le s f u e r o n lo s n ú m e r o s x e y . P a r a e n c o n t r a r la c la v e c o m ú n t e n d r ía q u e r e s o lv e r e l lla m a d o p r o b le m a d e l lo g a r it m o d is c r e to , p o r e je m p lo : 5 x m o d (2 3) = 8 C u a n d o lo s n ú m e r o s in v o lu c r a d o s s o n m u y g r a n d e s , y e s tá n b ie n e le g id o s , e s te p r o b le m a e s c o m p u ta c io n a lm e n t e ir r e s o lu b le e n u n t ie m p o r a z o n a b le . Ejemplo: p = 1000475149 , a = 876543098 , x = 12345678909876543 , y = 654375426738848 Los resultados son: f ( x ) = 993617947 , f ( y ) = 839026926 y la clave común a la que ambos arriban es: K = 708448295 Obviamente puede usarse esta clave en un algoritmo simétrico o puede ser una referencia a un conjunto de claves numeradas, cripto-scolnik-hecht cripto-scolnik-hecht El espía (si llegó a conocer los números p, a ) tendría que resolver la ecuación: 876543098 x mod(1000475149) = 993617947 En la práctica se usan números mucho mayores, lo que solo es factible con un software o hardware muy bien implementado. cripto-scolnik-hecht ax (mod p) ay (mod p) X Y K=axy (mod p) generación de clave simétrica primaria cripto-scolnik-hecht K=axy (mod p) intercambio de clave simétrica secundaria de encripción cripto-scolnik-hecht intercambio de mensajes usando la clave secundaria cripto-scolnik-hecht CONCLUSION