1 / 118

Criptografía de clave pública

Criptografía de clave pública. Gerardo Rodríguez Sánchez Departamento de Matemática Aplicada Universidad de Salamanca E-mail: gerardo@usal.es. Problemas de la Clave Secreta. La clave secreta ha de intercambiarse de forma segura (¿entrevista?).

ash
Download Presentation

Criptografía de clave pública

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Criptografía de clave pública Gerardo Rodríguez Sánchez Departamento de Matemática Aplicada Universidad de Salamanca E-mail: gerardo@usal.es

  2. Problemas de la Clave Secreta • La clave secreta ha de intercambiarse de forma segura (¿entrevista?). • La clave secreta ha de modificarse con frecuencia. • Problema de almacenamiento de las claves: para comunicarse con n usuarios, cada uno de ellos necesita n(n – 1)/2 claves. • Imposibilidad de firmar digitalmente losmensajes.

  3. Criptografía de Clave Pública • Se utiliza diferente clave para cifrar mensajes que para descifrarlos (Internet, empresas, usuarios). • Protocolo de cambio de clave de Diffie-Hellman

  4. Criptografía de Clave Pública • RSA Basado en la dificultad de factorizar números enteros. Claves de 1024 bits. • ElGamal Basado en la dificultad de calcular logaritmos discretos. Claves de 1024 bits.

  5. Cambio de clave Diffie-Hellman (1) • A y B seleccionan públicamente un grupo cíclico finito G, |G| = n, y un generador. • A genera un número aleatorio a, calcula a y lo envía a B. • B genera un número aleatorio b, calcula b y lo envía a A.

  6. Cambio de clave Diffie-Hellman (2) • A recibe b y calcula (b)a = ba. • B recibe a y calcula (a)b = ab. • CONCLUSIÓN: A y B comparten el mismo elemento secreto del grupo: ab.

  7. Seguridad del cambio de clave Diffie-Hellman (3) Son públicos los siguientes elementos: el grupo G, su orden n, el generador  Se pueden intervenir los siguientes datos: a, b Se pretende calcular el valor de: ab Se supone que es un problema intratable (Teoría de la complejidad computacional).

  8. Ejemplo de cambio de clave Diffie-Hellman (1) A y B seleccionan (Z53)* y un generador  = 2. A genera a = 29, calcula a = 229 (mod 53) = 45 y lo envía a B. B genera b = 19, calcula b = 219 (mod 53) = 12 y lo envía a A. A recibe b= 12 y calcula (b)a = 1229 (mod 53) = 21.

  9. Ejemplo de cambio de clave Diffie-Hellman (2) B recibe a = 45 y calcula (a)b = 4519 (mod 53) = 21. A y B comparten el mismo elemento secreto del grupo: ab = 21. Conociendo (Z53)*,  = 2, a = 45, b = 12, calcular ab.

  10. Criptosistema RSA: claves (1) Generación de claves: Se eligen dos números primos distintos, grandes y cercanos:p,q, y se calcula n = p · q. Se considera el grupo (Zn)*, cuyo orden es (n) = (p – 1)(q –1). Se elige un número e primo con (n). Se calcula el inverso de e en (Zn)*: d, es decir, e · d 1mod. (n).

  11. Criptosistema RSA: claves (2) Generación de claves : La clave pública es el par (n,e). La clave privada es el número d. Se deben mantener ocultos también los valores de p, q y (n).

  12. Criptosistema RSA: cifrado y descifrado Cifrado: B obtiene la clave pública de A: (n, e). B representa el mensaje que quiere enviar, m, en el conjunto (Zn)*, troceándolo si es preciso. B calcula me (mod. n) c, que envía a A.

  13. Criptosistema RSA: cifrado y descifrado Descifrado: A utiliza su clave privada, d, para calcular cd(mod. n)med(mod. n) m.

  14. Criptosistema RSA: seguridad Dado un entero positivo, n, producto de dos primos distintos grandes de tamaño parecido: p y q, un entero positivo e, tal que MCD(e, (n)) = 1, y un entero c, encontrar otro enteromtal que mec (mod. n). Hipótesis: La seguridad del RSA es equivalente al problema de factorizar.

  15. Ejemplo de RSA Determinación de la clave • Elegimos dos números primos p y q, los multiplicamos para obtener el módulo RSA, n, y determinamos (n) p =383 q = 521 n = p · q = 383 · 521 = 199543 (n) = (p-1)(q-1) = 382 · 520 = 198640 • Elegimos el exponente de cifrado, 2< e <198640, primo con (n), por ejemplo, e=3.

  16. Ejemplo de RSA Determinación de la clave • Calculamos el exponente de descifrado d, que es el inverso de e módulo (n): d = 132427 • Damos a conocer nuestra clave pública: (199543, 3). • Ocultamos nuestra clave privada: d=132427, así como los restantes valores p = 383, q = 521 y (n) = 198640.

  17. Ejemplo de RSA Cifrado del mensaje Supongamos que un usuario B desea enviarnos el mensaje RSA. Los pasos a seguir serán los siguientes: • Localiza nuestra clave pública: (199543, 3). • B escribe el mensaje a enviar como un número menor que 199543 y primo con él. Por ejemplo, puede considerar la siguiente representación de letras por números (sin la Ñ): A0, B1, C2,..., Y24, Z25 y emplear la base 26 para representar cualquier palabra.

  18. Ejemplo de RSA Cifrado del mensaje En nuestro ejemplo: R17, S18, A0 con lo que el mensaje sería: m = 17 · 262+18 · 26+0 = 911 • B cifra el mensaje anterior calculando: c  me (mod. n)  9113 (mod. 199543)  189147 que es el criptograma a enviar. • Este valor puede convertirse de nuevo en base 26 para convertirlo en letras: c =189147 = 10 · 263+19 · 262+ 20 · 26+ 23  KTUX

  19. Ejemplo de RSA Descifrado del mensaje • Una vez hemos recibido el criptograma (189147 o KTUX), utilizamos nuestra clave privadad = 132427para calcular: m  cd (mod. n)  189147132427(mod. 199543). • El cálculo de este número se realiza con la siguiente estrategia: d=132427=(100000010101001011)2=217+210+28+26+23+2+1

  20. Ejemplo de RSA Descifrado del mensaje • Calculamos las siguientes potencias, cada una de las cuales es el cuadrado de la anterior y hacemos módulo 199543: • 1891472124053 1891474191106 189147814566118914716118817 1891473211782 18914764133139189147128189545 189147256 188504189147512 138291 1891471024181891472048 324 1891474096 104976 1891478192198401 18914716384106906 1891473276867511 18914765536  173001 18914713107290974

  21. Ejemplo de RSA Descifrado del mensaje • Ahora basta multiplicar las potencias de la expresión en base 2 de la clave privada y reducir mod. 199543 tras cada producto: • 189147 · 124053 190964 190964 · 145661 112090 • 112090 · 133139 128626 128626· 188504 45574 • 45574· 18 22160 22160 · 90974 911 • que coincide con el número enviado.

  22. Ejemplo de RSA real: determinación de la clave Elegimos dos números primos de 512 bits cada uno: p = 99139 39965 46089 30824 88909 93861 03286 96951 12542 27785 63290 53802 69243 59622 97966 62570 51166 31784 15643 33030 16752 83735 31885 76891 66571 64285 73232 22921 38706 46645 4667 q = 13136 91819 25708 96843 02581 72409 47022 42864 58333 11752 43481 96993 06139 88470 36911 06258 28665 95507 45575 89427 96421 73663 31154 90105 78349 59036 89416 42907 63853 18510 41021

  23. Ejemplo de RSA real: determinación de la clave Calculamos ahoran, que tiene 1024 bits: n = 13023 86182 92318 89502 81446 21088 35570 66154 05574 73331 40682 54739 98959 56538 57163 11615 41258 54863 46136 57472 70014 83693 94664 97674 40264 93450 88904 88932 37197 32536 99623 85944 66298 94133 32414 06479 20780 49438 83915 47728 71066 51988 01638 29581 61596 27668 24197 08727 22204 06157 69033 71955 35028 37798 65973 36760 32443 19911 37588 05059 05389 5007

  24. Ejemplo de RSA real: determinación de la clave Calculamos ahora (n)  (n) = 13023 86182 92318 89502 81446 21088 35570 66154 05574 73331 40682 54739 98959 56538 57163 11615 41258 54863 46136 57472 70014 83693 94664 97674 40264 93450 88904 88932 37197 32536 99621 55436 08140 90954 33158 91752 02824 75927 58318 51855 25756 53877 77904 98939 17269 60590 99043 70901 35345 34755 41723 90985 14659 94363 88023 86692 77788 52514 85590 27820 73639 9320

  25. Ejemplo de RSA real: determinación de la clave Como exponente de cifrado elegimos e = 65537 = 216+1, mientras que el exponente de descifrado es: d = 16516 06202 03467 10050 48918 84868 90218 92489 18279 99581 50695 43180 80680 06590 48611 11408 16546 34751 39652 57374 55344 81434 97422 92471 72748 50400 58881 01914 48242 51509 06748 05656 23580 43535 93387 51598 50264 21324 46463 09835 51972 56416 71447 94037 48482 18482 95184 74535 17075 11535 81529 12320 91084 24120 45236 48596 01095 63033 24342 09716 36483 433

  26. Ejemplo de RSA real: cifrado del mensaje Supongamos que el mensaje a transmitir utilizando la clave pública (n,e) es: “Hasta la fecha no se ha demostrado de forma rigurosa la equivalencia entre resolver el problema de la factorización y romper el criptosistema RSA.” Para transformar el mensaje en un número menor que el módulo RSA y primo con él, se utiliza la base 256 dada por los valores ASCII de los caracteres que componen el mensaje. Como la longitud del mensaje no puede ser mayor que el módulo RSA, se analiza si es preciso trocear el mensaje.

  27. Ejemplo de RSA real: cifrado del mensaje m1 = 34591 23054 20684 92221 54004 31463 55718 40131 37946 50256 99770 12379 52245 48266 91597 68390 89367 27153 70468 41774 43004 17303 60120 13102 23597 42585 57180 20667 78546 06812 75424 51035 61893 92809 52751 30985 62992 14551 08844 27863 83635 95214 39334 39345 58318 94335 36299 26978 14144 61358 60603 23404 84057 33961 81735 90951 71716 01412 29657 69676 146 m2 = 31029 37695 14888 24008 25180 81526 70973 28927 96416 57111 46496

  28. Ejemplo de RSA real: cifrado del mensaje c1 = 24283 83009 28360 92697 52894 91397 11182 33327 01972 51994 66194 67116 15452 51338 36137 91948 61510 99909 69538 57591 62731 96550 16598 26516 28223 74514 60203 01145 55449 76420 73563 67035 62024 22363 16254 50805 03386 81854 29313 76893 22373 92781 30286 52114 52126 18961 46028 71599 71878 80429 73749 97653 74787 98609 84624 04766 58549 16062 48613 00369 22093 872

  29. Ejemplo de RSA real: cifrado del mensaje c2 = 38682 54957 70121 92903 21010 10135 17239 71957 23710 93292 77161 21301 87357 13461 04331 73889 57425 36031 34884 61661 51664 31071 46625 14562 56910 77963 89701 42435 54123 55176 62692 53475 35346 82015 24635 33695 20098 88439 34168 44397 93387 91590 76644 51408 56154 28962 22028 65447 75223 55380 20368 32538 03134 56525 82206 82408 11962 36481 98184 80787 46237 430

  30. Ejemplo de RSA real: descifrado del mensaje El mensaje descifrado correspondiente a cada uno de los bloques enviados es el siguiente: “Hasta la fecha no se ha demostrado de forma rigurosa la equivalencia entre resolver el problema de la factorización y romper” “el criptosistema RSA.”

  31. Precursores de la criptografía de clave pública y del RSA 1976: Protocolo de cambio de clave de Diffie-Hellman 1978: Criptosistema RSA 1997: Criptógrafos del Cuartel General de Comunicaciones del Gobierno Británico 1973 Cocks 1970 Ellis 1974 Williamson

  32. Firma digital RSA Sean (nB,eB)ydBlas claves pública y privada de un usuario B y sean (nA,eA)y dAlas claves correspondientes del usuario A. Si B quiere mandar junto con el criptograma c correspondiente al mensaje m, su firma digital para dicho mensaje, el protocolo a seguir es: • B calcula el valor de su firma r  mdB(mod. nB) con su exponente de descifradodB. • B cifra el valor anterior con la clave pública de A, s  reA(mod.nA) y transmite a A el par(c,s).

  33. Firma digital RSA Para que A pueda verificar que la firma corresponde a B sólo tiene que ejecutar los siguientes pasos: • A recupera la firma de B para el mensaje m calculando sdA r(mod. nA). • A comprueba si la firma cifrada coincide con el mensaje reB  m(mod. nB).

  34. Elección de los primos p y q. • p y q deben ser de la misma longitud. En la actualidad se recomienda que p y q tengan cada uno una longitud mínima de 512 bits y, por tanto, n tenga al menos 1024 bits (alrededor de 309 dígitos). • p y q no deben estar demasiado cercanos. Si no fuera así se podría factorizar n encontrando x e y tales que x2-n=y2, pues entonces p = x-y, q = x+y.

  35. Elección de los primos p y q. • MCD(p-1,q-1) debe ser pequeño. • p-1 y q-1 deben contener factores primos grandes. • p y q deben ser robustos. Un primo impar p se dice robusto si verifica: p-1 tiene un factor primo grande r. p+1 tiene un factor primo grande s. r-1 tiene un factor primo grande t.

  36. . Elección del exponente de cifrado e. Una vez que se ha seleccionado un valor grande para el módulo RSA se recomienda seleccionar un exponente de cifrado e pequeño para facilitar la tarea de cifrado me (mod. n). Por esta razón se recomienda que el exponente de cifrado sea e = 3 ó e = 65537 Sin embargo no se debe usar valores pequeños de e al enviar un mismo mensaje m a varios destinatarios.

  37. Elección del exponente de descifrado d. El exponente de descifrado d debe ser de longitud aproximada a la de n. Si longitud en bits (d)  (1/4) longitud en bits (n) existe un algoritmo eficiente para calcular d.

  38. Mensajes inocultables. Un mensaje m es inocultable si se cifra a sí mismo, es decir: me  m (mod. n) El número de mensajes inocultables es (1+mcd(e-1,p-1)) · (1+mcd(e-1,q-1)) Al menos hay 9 mensajes inocultables. No afecta a la seguridad del RSA.

  39. Récord de factorización. El récord del módulo RSA más grande factorizado lo logró el 9 de Mayo de 2005 un equipo de investigadores alemanes, dirigidos por J. Franke, de la Agencia Alemana para la Seguridad de las Tecnologías de la Información (BSI). Dicho equipo ostentaba el anterior récord al lograr factorizar en Diciembre de 2003 el módulo RSA-576 de 174 dígitos. El número factorizado ahora es el RSA-200 de 200 dígitos.

  40. Récord de factorización. El RSA-200 factorizado es: n = 2799783391 1221327870 8294676387 2260162107 0446786955 4285375600 0992932612 8400107609 3456710529 5536085606 1822351910 9513657886 3710595448 2006576775 0985805576 1357909873 4950144178 8631789462 9518723786 9221823983

  41. Récord de factorización. p = 3532461934 4027701212 7260497819 8464368671 1974001976 2502364930 3468776121 2536794232 0005854795 6528088349 q = 7925869954 4683330333 4708584148 0059687737 9758573642 1996073433 0341455767 8728181521 3538140930 4740185467

  42. Récord de factorización. La siguiente tabla recoge algunos de los módulos RSA por factorizar y los premios ofrecidos. Pueden consultarse las siguientes direcciones para una completa información sobre este asunto: http://www.rsasecurity.com/rsalabs/challenges/factoring/numbers.html http://www.rsasecurity.com/rsalabs/challenges/factoring http://www.npac.syr.edu/factoring/overview/RSAFCAList.txt

  43. Consideraciones finales. • No se ha demostrado si los procesos de factorizar el módulo RSA y romper el criptosistema son equivalentes. • Hay otros criptosistemas del estilo RSA para los que sí se ha demostrado dicha equivalencia: criptosistemas de Williams (1980), Kurosawa (1988), Loxton (1992),...

  44. Criptosistema de ElGamal: claves Generación de claves: Se elige un número primo grande: p. Se considera el grupo (Zp)*(en general, se puede considerar un grupo finito G) cuyo orden es (p – 1). Se elige un generador del grupo . Se selecciona un número aleatorio 0 < a < p – 1 y se calcula a (mod p)

  45. Criptosistema de ElGamal: claves Generación de claves: La clave públicaes (p,, a). La clave privada es el número a.

  46. Criptosistema de ElGamal: cifrado y descifrado Cifrado: B obtiene la clave pública de A: (p,, a), B representa el mensaje que quiere enviar, m, en el conjunto {0, 1, ..., p – 1}, troceándolo si es preciso, B genera un número aleatorio v, 0 < v < p – 1, B calcula v(mod. p), y  m·(a)v (mod. p). B envía a A el par (,).

  47. Criptosistema de ElGamal: cifrado y descifrado Descifrado: A utiliza su clave privada, a, para calcular  a (v)a (mod.p) en G y su inverso p – 1 – a(mod.p) El resultado lo multiplica por  para obtener m: p – 1 – a  – a m a (mod. p)  m (mod. p)

  48. Criptosistema de ElGamal: seguridad Por seguridad y eficacia, el grupo G y el elemento  deben elegirse de forma que se verifiquen las siguientes condiciones: La operación en G debería ser “fácil” de aplicar. Por seguridad el problema del logaritmo discreto en el subgrupo cíclico de G generado por  debería ser “difícil”.

  49. Ejemplo ElGamal: determinación de la clave. Consideremos p = 15485863, el grupo(Z15485863)*y un generador de dicho grupo  = 7. • A elige a=28236 y calcula a  728236 12506884 (mod. 15485863) Este par es la clave privada y pública de A. • B elige b=21702y calcula b 721702 8890431 (mod. 15485863) Este par es la clave privada y pública de B.

More Related