Tema 2 - Introducción a la Criptografía

1,587 views
1,404 views

Published on

Published in: Technology
1 Comment
3 Likes
Statistics
Notes
No Downloads
Views
Total views
1,587
On SlideShare
0
From Embeds
0
Number of Embeds
11
Actions
Shares
0
Downloads
0
Comments
1
Likes
3
Embeds 0
No embeds

No notes for slide

Tema 2 - Introducción a la Criptografía

  1. 1. Curso de Seguridad Informática Introducción a la Criptografía
  2. 2. Temario <ul><li>Introducción
  3. 3. Funciones Hash
  4. 4. Funciones Cifrado </li><ul><li>Simétrico
  5. 5. Asímétrico </li></ul><li>Firma Digital </li></ul>
  6. 6. Introducción <ul><li>La criptografía es el arte o ciencia de cifrar y descifrar información. </li><ul><li>El mensaje (M) a proteger será denominado texto claro
  7. 7. El mensaje cifrado (C) se denomina criptograma o texto cifrado. </li></ul><li>Existen dos grande familias de algoritmos de cifrado: </li><ul><li>Cifrados simétricos
  8. 8. Cifrados asimétricos o de clave pública </li></ul></ul>
  9. 9. Introducción <ul><li>Las funciones de resumen o hash permiten obtener un conjunto de bits a partir del mensaje, de forma que una pequeña variación del mensaje provocará un gran cambio en el resumen. </li></ul>
  10. 10. Funciones Resumen <ul><li>Las funciones resumen deben cumplir las siguientes características: </li><ul><li>Unidireccionalidad: a partir de h(M) debe ser computacionalmente imposible obtener M
  11. 11. Compresión: indistintamente de la longitud de M, la longitud de h(M) siempre será la misma y, en general, mucho menor que M
  12. 12. Facilidad de cálculo: h(M) debe ser rápido de calcular
  13. 13. Difusión: h(M) debe de ser una función de todos los bits de M, de forma que un cambio de un solo bit en M, debe modificar, al menos, el 50% de los bits de h(M) </li></ul></ul>
  14. 14. Funciones Resumen <ul><ul><li>Colisión simple: dado M y h(M), debe ser computacionalmente imposible encontrar M' que cumpla que h(M) = h(M'), es decir, debe ser imposible computacionalmente encontrar una variación de M que tenga el mismo resumen. </li><ul><li>A esto se denomina resistencia débil a las colisiones </li></ul><li>Colisión fuerte: debe ser computacionalmente dificil encontrar un par de mensajes X,Y que cumplan que h(X) = h(Y) </li><ul><li>A esto se denomina resistencia fuerte a las colisiones </li></ul></ul></ul>
  15. 15. Funciones Resumen <ul><li>Las funciones resumen se utilizan en lenguajes de programación para aumentar la velocidad de acceso a tablas Hash: se divide la tabla en N secciones, de forma que un valor estará almacenado en el bloque i, en función de su resumen, y dentro de este bloque, estará almacenado de forma secuencial. </li></ul>
  16. 16. Funciones Resumen <ul><li>MD5 – Message Digest 5. Algoritmo básico: </li><ul><li>Se divide M en bloques de 512 bits, rellenando si es necesario, el último bloque.
  17. 17. Se inicializan cuatro vectores de 32 bits cada unos (ABCD)
  18. 18. Se realizan una serie de operaciones lógicas con los 128 bits de los vectores y los 512 del primer bloque del mensaje.
  19. 19. El resultado de la operación anterior, de 128 bits, se convierte en los nuevos vectores de inicialización A'B'C'D'. </li></ul></ul>
  20. 20. Funciones Resumen <ul><ul><li>Se realiza de nuevo operaciones logicas entre los vectores de inicialización y el siguiente bloque del mensaje.
  21. 21. Se repiten los pasos anteriores hasta procesar el último bloque, obteniendo finalmente un resumen de 128 bits, correspondiente a los últimos vectores obtenidos. </li></ul></ul>
  22. 22. Funciones Resumen MENSAJE 1000... K Mensaje de K bits Relleno de 1 a 448 bits K mod 2 64 (64 bits) L  512 bits = N  32 bits N palabras de 32 bits ABCD Y 1 Y 2 512 bits H MD5 H MD5 A 16 = 01234567 B 16 = 89ABCDEF C 16 = FEDCBA98 D 16 = 76543210 RESUMEN de 128 bits Primer resumen Y q H MD5 Y L-1 H MD5
  23. 23. Funciones Resumen <ul><li>SHA1 – Secure Hash Algorithm </li><ul><li>Muy similar al MD5: </li><ul><li>Bloques de 512 bits
  24. 24. Un total de 80 iteraciones
  25. 25. Los vectores de inicialización en este caso son de 160 bits </li><ul><li>La complejidad algorítmica del MD5 sera de “solo” 2^64
  26. 26. La complejidad del SHA1 es de 2^80 </li></ul></ul><li>La diferencia de 16 bits entre los resumes obtenidos por MD5 y SHA1 hacen que este último sea más resistente a la fuerza bruta (aunque es más lento). </li></ul></ul>
  27. 27. Funciones Resumen <ul><li>Principales diferencias entre MD5 y SHA1 </li><ul><li>La longitud de los resúmenes obtenidos
  28. 28. SHA1 requiere un tamaño máximo de mensaje de 2^64 bits, MD5 no está limitado
  29. 29. MD5 se basa en arquitectura little-endian mientras que SHA1 lo hace en big-endian </li></ul></ul>
  30. 30. Funciones Resumen <ul><li>Utilidad de las funciones resumen </li><ul><li>Son clave para la firma digital
  31. 31. Sirven para comprobar la integridad de los datos
  32. 32. Se utilizan para implementar algoritmos de autenticación (almacenamiento de hash de una password en vez de la propia password) </li></ul></ul>
  33. 33. Funciones Resumen <ul><li>¡Últimas noticas! </li><ul><li>MD5 está roto por fallo en diseño
  34. 34. SHA1 está roto por fuerza bruta junto con una reducción de la complejidad algorítmica
  35. 35. Las nuevas tendencias sugieren el uso de SHA con una mayor longitud para el resumen: 256, 512, ... </li></ul></ul>
  36. 36. Funciones Resumen <ul><li>Ejercicios </li><ul><li>Calcula y compara los resúmenes de un mismo fichero, utilizando distintos algoritmos.
  37. 37. Modifica ligeramente el fichero de datos y compruebas los cambios provocados en el resumen.
  38. 38. Busca y experimenta con otros algoritmos de resumen, distintos a los comentados. </li></ul></ul>
  39. 39. Funciones Cifrado <ul><li>Nota importante </li><ul><li>La fortaleza de un algoritmo de cifrado se basa en la imposibilidad computacional de obtener la clave </li></ul></ul>
  40. 40. Funciones Cifrado <ul><li>Tipos de cifrado </li><ul><li>Cifrado en flujo: A5, RC4
  41. 41. Cifrado en bloque </li><ul><li>Simétricos: DES, AES, IDEA, RC5
  42. 42. Asimétricos: RSA, ElGammal </li></ul></ul></ul>
  43. 43. Cifrado en flujo <ul><li>Cifrado en flujo </li><ul><li>El mensaje claro es leído bit a bit
  44. 44. Se aplica una operación de cifrado sobre cada uno de los bits, utilizando una secuencia de cifrantes que cumpla: </li><ul><li>Tenga un periodo muy alto
  45. 45. Tenga propiedades pseudoaleatorias </li></ul><li>Problemas del cifrado en flujo: </li><ul><li>No oculta patrones del mensaje, lo cual lo hace más débil al criptoanálisis (ataque estadístico) </li></ul></ul></ul>
  46. 46. Cifrado en bloque <ul><li>Cifrado en bloque </li><ul><li>El mensaje se divide en bloques
  47. 47. Se cifra cada bloque utilizando la misma clave
  48. 48. ¿Qué tamaño de bloque elegir? </li><ul><li>Si es muy pequeño, tenemos el mismo problema que con el cifrado en flujo
  49. 49. Si es muy grande, el rendimiento del algoritmo baja </li></ul></ul></ul>
  50. 50. Cifrado en bloque <ul><li>¿El cifrado en bloque oculta toda la información del mensaje? </li></ul>
  51. 51. Cifrado en bloque <ul><li>La solución es utilizar una función de cifrado en bloque retroalimentada </li></ul>
  52. 52. Cifrado en bloque <ul><li>Modos de cifrado </li><ul><li>ECB: Electronic CodeBook (libro electrónico de códigos, distinta clave para cada bloque)
  53. 53. CBC: Cipher Block Chaining (encadenamiento de bloques)
  54. 54. CFB: Cipher FeedBack (realimentación de bloques)
  55. 55. OFB: Output FeedBack (realimentación bloque de salida) </li></ul></ul>
  56. 56. Cifrado en bloque <ul><li>Modos de cifrado </li><ul><li>ECB: Electronic CodeBook (libro electrónico de códigos, distinta clave para cada bloque)
  57. 57. CBC: Cipher Block Chaining (encadenamiento de bloques)
  58. 58. CFB: Cipher FeedBack (realimentación de bloques)
  59. 59. OFB: Output FeedBack (realimentación bloque de salida) </li></ul></ul>
  60. 60. Cifrado Simétrico <ul><li>La misma clave que se utiliza para cifrar es la que se utiliza para descifrar.
  61. 61. Hay muchos algoritmos de cifrado simétrico: </li><ul><li>DES, 3DES
  62. 62. IDEA
  63. 63. AES
  64. 64. Blowfish
  65. 65. ... </li></ul></ul>
  66. 66. Cifrado Simétrico <ul><li>Ventajas de los cifrados simétricos: </li><ul><li>La velocidad de cifrado es muy alta
  67. 67. No requieren claves demasiado grandes para considerarlos seguros </li></ul><li>Problemas de los cifrados simétricos: </li><ul><li>Mala distribución de claves: no existe forma segura de comunicar una clave utilizando un canal inseguro
  68. 68. No tiene firma digital: aunque sí que es posible autenticar un mensaje, pero sin llegar a conseguir la firma digital completa (auténtico y de origen conocido) </li></ul></ul>
  69. 69. DES <ul><li>DES - Data Encryption Standard </li><ul><li>Estándar utilizado mundialmente durante 25 años
  70. 70. Actualmente ha caído frente a los distintos criptoanálisis a los que se le ha sometido
  71. 71. La variación Triple DES (3DES) es totalmente válida utilizando una longitud de clave mínima de 128 bits </li></ul></ul>
  72. 72. DES <ul><li>Fechas de interés </li><ul><li>1973: En EEUU la NBS National Bureaux of Standards llama a concurso público para buscar un algoritmo criptográfico estándar.
  73. 73. 1974: La NSA National Security Agency declara desierto el primer concurso, publica unas segundas especificaciones y elige Lucifer, algoritmo original de IBM (años 70) con variaciones.
  74. 74. 1976: El DES se adopta como estándar y se autoriza para ser utilizado en las comunicaciones no clasificadas del gobierno. </li></ul></ul>
  75. 75. DES <ul><li>No se cumplen dichas características hasta 1974
  76. 76. Pero... </li><ul><li>La NSA impone una limitación a la longitud de clave: </li><ul><li>De los 128 bits de Lucifer, NSA deja la clave en 64 bits. La clave efectiva sólo son 56 bits puesto que al ser datos de 8 bits, no ASCII, se conoce el bit de paridad.
  77. 77. Luego, el espacio de claves será 2 56 = 7.2 ·10 16 , tan sólo setenta y dos mil billones de valores, un valor pequeño en criptografía. </li></ul></ul></ul>K = 72.057.594.037.927.936
  78. 78. Ejercicios <ul><li>Instalar OpenSSL
  79. 79. Cifrar un fichero de texto con un mensaje y pasarlo al compañero para que lo descifre, pero sin que sepa el algoritmo de cifrado utilizado, solo la clave. Probad varios algoritmos.
  80. 80. Averigua qué es base64 y su utilidad. ¿Es seguro? ¿Dónde lo has utilizado?
  81. 81. Utiliza la esteganografía para comunicar algo a un compañero. </li></ul>
  82. 82. Cifrado Asimétrico <ul><li>Están formados por un par de claves: </li><ul><li>Pública
  83. 83. Privada </li></ul><li>Se basan en “funciones trampa” : son funciones computacionalmente simples pero extremadamente difíciles de invertir: </li><ul><li>Es fácil calcular el producto de dos números primos, pero es muy costoso factorizar un número compuesto en sus componentes primos </li></ul></ul>
  84. 84. Cifrado Asimétrico <ul><li>Problemas de este sistema de cifrado: </li><ul><li>Para una misma longitud de clave y mensaje se necesita mayor tiempo de proceso
  85. 85. Las claves deben ser de mayor tamaño que las simétricas
  86. 86. El mensaje cifrado ocupa más espacio que el original </li></ul><li>La criptografía de curva elíptica es una alternativa menos costosa para estos problemas. </li></ul>
  87. 87. Cifrado Asimétrico <ul><li>Algunos algoritmos de cifrado asimétrico: </li><ul><li>RSA
  88. 88. DSA
  89. 89. ElGammal </li></ul><li>Protocolos basados en cifrados asimétricos: </li><ul><li>SSL / TLS
  90. 90. SSH
  91. 91. PGP / GPG </li></ul></ul>
  92. 92. RSA <ul><li>Descrito en 1977 por Ron Rivest, Adi Shamir y Len Adleman en el MIT
  93. 93. Patentado en 1983 y expirado el 21 Septiembre de 2000
  94. 94. Se basa en la la imposibilidad de factorizar un número compuesto en sus factores primos </li></ul>
  95. 95. RSA <ul><li>Pasos en una comunicación cifrada mediante RSA: </li><ul><li>A y B intercambian sus claves públicas
  96. 96. Los mensajes de A hacia B se cifran con la clave pública de B y éste los descifrará con su clave privada.
  97. 97. Los mensajes de B hacia A se cifran con la clave pública de A y éste los descifrará con su clave privada. </li></ul></ul>
  98. 98. RSA <ul><li>Como el cifrado y descifrado mediante este algoritmo es muy costoso, se suele aplicar el siguiente protocolo alternativo: </li><ul><li>A genera una clave simétrica de sesión y la cifra con la clave pública de B
  99. 99. B descifra la clave simétrica generada por A y la utiliza para cifrar mediante algoritmo simétrico los mensajes enviados a A.
  100. 100. Cada cierto tiempo se regeneran las claves de sesión.
  101. 101. B realiza el proceso paralelo al descrito. </li></ul></ul>
  102. 102. RSA <ul><li>Problemas: </li><ul><li>¿Cómo intercambiar las claves públicas de forma segura?
  103. 103. Estamos expuestos a ataques tipo MITM </li></ul><li>Solución -> Autenticidad de las claves basadas en firma electrónica. </li></ul>
  104. 104. Firma electrónica <ul><li>Se basa en la característica de intercambio de las claves públicas y privadas de los sistemas de cifrado asimétricos: </li><ul><li>Lo que cifra una, lo descifra la otra y viceversa. </li></ul><li>El cifrado utiliza la clave pública del destinatario como clave del algoritmo, de forma que el destinatario descifrará con la clave privada.
  105. 105. La firma consiste en cifrar con la clave privada del emisor de forma que cualquiera pueda descifrarlo con la clave pública de éste. </li></ul>
  106. 106. Firma electrónica <ul><li>Así se asegura que el envío solo puede haberlo realizado el emisor, y no otra persona.
  107. 107. Problema: tal y como se ha descrito, una firma oculta el mensaje original (lo cifra con la clave privada del emisor), pero interesaría que el mensaje fuese en claro y que se asegure de alguna forma su integridad y autenticidad. </li></ul>
  108. 108. Firma electrónica <ul><li>La solución consiste en cifrar mediante la clave pública el resultado de aplicar una función hash sobre el mensaje que se quiere enviar: </li><ul><li>El receptor podrá recuperar la hash enviada por el emisor y compararla con la que calcule él mismo a partir del mensaje en claro
  109. 109. Si coinciden, el mensaje es íntegro y auténtico.
  110. 110. Si no coinciden, el mensaje se ha modificado durante el intercambio de la información. </li></ul></ul>
  111. 111. Firma electrónica <ul><li>¡Seguimos siendo vulnerables a ataques de tipo MITM! </li></ul>
  112. 112. Firma electrónica <ul><li>La solución pasa por establecer la autenticidad de las claves públicas de los que intervienen en la comunicación.
  113. 113. ¿Cómo? -> Mediante sistemas de confianza basados en terceros </li></ul>
  114. 114. Firma electrónica <ul><li>Comunicación segura basada en un esquema de confianza: </li><ul><li>A y B no se conocen pero quieren establecer una comunicación de forma segura.
  115. 115. Ambos conocen y confían en C
  116. 116. C firma la clave pública de A y de B
  117. 117. A comprueba que la firma de la clave pública de B está realizada por C y confirma que su clave es íntegra y auténtica (¿por qué?)
  118. 118. B comprueba que la firma de la clave pública de A está realizada por C y confirma que su clave es íntegra y auténtica (¿por qué?) </li></ul></ul>
  119. 119. Firma electrónica <ul><li>¿Alguien puede describir el funcionamiento básico del protocolo SSH? </li></ul>
  120. 120. Ejercicios <ul><li>Genera una clave RSA con openssl
  121. 121. Intercambia contenido cifrado con algún compañero
  122. 122. Intercambia contenido firmado con algún compañero
  123. 123. Intercambia contenido cifrado certificando su origen </li></ul>

×