Descargar

Monogafìa Funciones HASH (Criptografía) (página 2)


Partes: 1, 2

Las Funciones Resumen se basan en la idea de funciones de compresión que dan como resultado bloques de longitud n a partir de bloques de longitud m y dichas funciones se encadenan de forma iterativa haciendo que la entrada en el paso i dependa del bloque i1 del mensaje y de la salida del paso i1, como se muestra en la figura:

edu.red

Se suele incluir en alguno de los bloques del mensaje m al principio o al final información acerca de la longitud total del mensaje, con lo cual se reducen las posibilidades de que 2 mensajes con diferentes longitudes den el mismo valor HASH.

Uso de las funciones HASH en criptografía

  • Una de las aplicaciones más interesantes de la actual criptografía es la posibilidad real de añadir en un mensaje una firma digital: La autenticación completa.

  • Todo esto comienza en el año 1976 cuando Diffie y Hellman presentan un modelo de cifrado asimétrico con clave pública, con los antiguos sistemas de cifra de clave simétrica esto era inviable o bien muy complejo.

  • No obstante dado que los sistemas de clave pública son muy lentos en vez de firmar digitalmente el mensaje completo, en un sistema criptográfico se incluirá como firma digital una operación de cifra con la clave privada del emisor sobre un resumen o hash de dicho mensaje representado por sólo una centena de bits.

Funciones HASH

En una función HASH dicho valor será generado por una función H de la forma: h=H(M)

donde:

M: Es una longitud variable del mensaje.

H(M): Es un valor HASH de longitud finita.

El valor HASH es aparentemente para el mensaje de la fuente de un tiempo cuando el mensaje es asumido o conocido que esta correcto, donde el Receptor autentifica dicho mensaje pero recalcula el valor porque dicha función si no considera que el valor sea secreto.

Mensaje = M ( Función Resumen = h(M)

Firma (rúbrica): r = EdE{h(M)}

dE: Es la clave privada del emisor que firmará h(M)

¿Cómo se comprueba la identidad en destino?

Se descifra la rúbrica r con la clave pública del emisor dE, al mensaje en claro recibido M" (si viniese cifrado, se descifra) se le aplica la misma función HASH que en emisión y si los valores son iguales la firma es auténtica y el mensaje integro:

Calcula: EdE(r) = h(M)

Compara: ¿h(M") = h(M)?

¿Qué seguridad nos da un resumen de k bits?

Seguridad asociada a una función HASH

Suponga que hemos creado una función HASH de forma tal que el resumen es sólo de 4 bits, independientemente del tamaño de dicho mensaje de entrada y nos surge la pregunta:

¿Cuál es la probabilidad de que dos mensajes distintos tengan igual función HASH?

Si esta probabilidad fuese muy baja (en este caso 1/16: HASH desde 0000 hasta 1111) y podría darse el siguiente caso: Alguien modifica nuestro mensaje firmado y envía ese mensaje falso con la firma del primero ya que en ambos casos son los mismos 4 bits.

Mensaje 1: "Rechazamos el contrato por no interesarnos nada" HASH: 1101.

Mensaje 2: "Firma todo lo que te pongan porque nos interesa" HASH: 1101.

Observe que ambos mensajes tienen 47 caracteres, así podríamos crear una gran cantidad de mensajes diferentes que digan cosas distintas incluso con igual número de caracteres, ¡Hasta que los dos HASH coincidan!, y por este motivo para que las funciones HASH sean interesantes en criptografía deben cumplir un conjunto de propiedades, ellas son:

h(M) será segura si tiene las siguientes características:

  • Unidireccionalidad: Conocido un resumen h(M), debe ser computacionalmente imposible encontrar M a partir de dicho resumen.

  • Compresión: A partir de un mensaje de cualquier longitud, el resumen h(M) debe tener una longitud fija, lo normal es que la longitud de h(M) sea menor que el mensaje M.

  • Facilidad de cálculo: Debe ser fácil calcular h(M) a partir de un mensaje M.

  • Difusión: El resumen h(M) debe ser una función compleja de todos los bits del mensaje M si se modifica un solo bits del mensaje M y entonces el HASH h(M) debería cambiar la mitad de sus bits aproximadamente.

Algoritmos de resumen en criptografía

  • MD5: Ron Rivest 1992. Mejoras al MD4 y MD2 (1990), es más lento pero con mayor nivel de seguridad, es un resumen de 128 bits.

  • SHA-1: Del NIST, National Institute of Standards and Technology, 1994. Similar a MD5 pero con resumen de 160 bits, existen otras propuestas conocidas como SHA-256 y SHA-512 posibles estándares.

  • RIPEMD: Comunidad Europea, RACE, 1992. Resumen de 160 bits.

  • N-Hash: Nippon Telephone and Telegraph, 1990. Resumen: 128 bits.

  • Snefru: Ralph Merkle, 1990. Resúmenes entre 128 y 256 bits, el mismo ha sido criptoanalizado y es lento.

  • Tiger: Ross Anderson, Eli Biham, 1996. Resúmenes de hasta 192 bits. Optimizado para máquinas de 64 bits (Alpha).

  • Panama: John Daemen, Craig Clapp, 1998. Resúmenes de 256 bits de longitud, trabaja en modo función HASH o como cifrador de flujo.

  • Haval: Yuliang Zheng, Josef Pieprzyk y Jennifer Seberry, 1992. Admite 15 configuraciones diferentes hasta 256 bits.

Función Resumen SHA-1

Algoritmo:

Es muy similar a MD5 también trata bloques de 512 bits de mensaje con un total de 80 vueltas, pero en este caso el vector inicial tiene una palabra más de 32 bits (E) por lo que el resumen será de 160 bits.

Un resumen de 128 bits (MD5) tiene una complejidad algorítmica de tan sólo 264 un valor en la actualidad muy comprometido…

En cambio la función SHA-1 (Secure Hash Algorithm) entregará un resumen de 160 bits con una complejidad algorítmica de 280.

Esquema del resumen SHA-1.

edu.red

Vueltas funciones F, G, H, I en SHA-1.

edu.red

Las 80 vueltas en SHA-1.

edu.red

Algoritmo y desplazamiento en SHA-1.

edu.red

Comparativa entre MD5 y SHA-1

  • SHA-1 genera una salida de 160 bits de longitud mientras que MD5 genera sólo 128 bits.

  • La dificultad de generar un mensaje que tenga un resumen dado es del orden de 2128 operaciones para MD5 y 2160 para SHA-1.

  • La dificultad de generar dos mensajes aleatorios distintos y que tengan el mismo resumen (ataques basados en paradoja del cumpleaños) es del orden de 264 operaciones para MD5 y 280 para SHA-1.

  • Esta diferencia de 16 bits a favor de SHA-1 lo convierte en más seguro y resistente a ataques por fuerza bruta que el algoritmo MD5, aunque es más lento que MD5, SHA-1 es hoy el estándar como función HASH.

Pasos y tasas de cifra en MD5 y SHA-1.

Ambos algoritmos procesan bloques de 512 bits y emplean 4 funciones primitivas para generar el resumen del mensaje, pero…

  • SHA-1 realiza un mayor número de pasos que MD5: 80 frente a los 64 que realiza MD5.

  • SHA-1 debe procesar 160 bits de buffer en comparación con los 128 bits de MD5.

  • Por estos motivos la ejecución del algoritmo SHA-1 es más lenta que la de MD5 usando un mismo hardware, por ejemplo un programa realizado en C entregaba en un Pentium a 266 Mhz (no importa que esta velocidad sea tan baja) una tasa del orden de 20 Mbits/seg para SHA-1 y para MD5 esta tasa llegaba a los 60 Mbits/seg.

Diferencias entre MD5 y SHA-1.

  • La longitud máxima del mensaje para SHA-1 debe ser menor de 264 bits mientras que MD5 no tiene limitaciones de longitud.

  • MD5 emplea 64 constantes (una por cada paso) mientras que SHA-1 sólo emplea 4. (una para cada 20 pasos)

  • MD5 se basa en la arquitectura little-endian mientras que SHA-1 se basa en la arquitectura big-endian y por ello el vector ABCD inicial en MD5 y SHA-1 son iguales:

  • A = 01234567 (MD5) ( 67452301 (SHA-1)

  • B = 89ABCDEF (MD5) ( EFCDAB89 (SHA-1)

  • C = FEDCBA98 (MD5) ( 98BADCFE (SHA-1)

  • D = 76543210 (MD5) ( 10325476 (SHA-1)

Últimos ataques a las funciones HASH

  • A finales del año 2004 científicos chinos de la Shandong University presentan trabajos en los que se analizan las debilidades reales de las funciones HASH como MD5 y SHA-1 ante colisiones.

  • Aunque no está claro que este tipo de ataques pudiese derivar en acciones de fraude, como sería suplantar un hash por otro igual y que en recepción se aceptase como válido si bien este último proviene de un mensaje distinto, es un claro motivo de preocupación actual.

  • El problema de estas vulnerabilidades estriba en que muchos servidores Web presentan un certificado digital X.509 firmado en el mejor de los casos a partir de una función HASH SHA-1 y lo que es peor aún todavía hay algunos que usan un HASH MD5…. este último mucho menos seguro que el primero.

Conclusiones

Arribamos a las siguientes conclusiones, luego de haber analizado las funciones HASH para la autenticación.

  • Las funciones HASH (MD5, SHA-1, etc.) pueden usarse además para autenticar a dos usuarios.

  • Como carecen de una clave privada no pueden usarse de forma directa para estos propósitos, no obstante existen algoritmos que permiten añadirles esta función.

  • Entre ellos está HMAC, una función que usando los HASH vistos y una clave secreta autentica a dos usuarios mediante sistemas de clave secreta, las funciones MAC (Message Authentication Code) y HMAC se dedican a la autenticación y firma digital.

  • HMAC se usa en plataformas IP seguras como por ejemplo en Secure Socket Layer, SSL.

Bibliografía

  • Stallings William, ¨Cryptography and network security: Principles and practice¨, 2da edición.

  • Sklar Bernard, ¨Digital Comunications: Fundamentals and application¨ Tomo1 y 2, 2da edition. (Upper Saddle River, NJ:Prentice-Hall,2001)

  • Curso Seguridad de Redes y Sistemas. Autor:

Msc. Walter Baluja García. CUJAE.

  • Lucena López José Manuel, ¨Criptografía y Seguridad en computadores¨, 3ra edición. Marzo 2004. e-mail:

  • Angel Angel José de Jesús, ¨Criptografía para principiantes.

  • Dr. Ramió Aguirre Jorge, ¨ Libro electrónico de seguridad informática y criptografía. Versión 4.1¨, 6ta edición Marzo 2006. Universidad Politécnica de Madrid.

 

 

 

 

 

Autor:

Maytée Odette López Catalá

Virgilio Zuaznabar Mazorra

Curso 2008

Partes: 1, 2
 Página anterior Volver al principio del trabajoPágina siguiente