Inicio / Wikis / Cursos gratis / La seguridad en informática - Funciones Hash

La seguridad en informática - Funciones Hash

(8 opiniones)
Curso gratis creado por Rafael Menéndez-Barzanallana Asensio. Extraido de: http://www.um.es/docencia/barzana
17 de Agosto de 2005
Seguridad informática

4 - Funciones Hash

Una herramienta fundamental en la cripotografía, son las funciones hash, son usadas principalmente para resolver el problema de la integridad de los mensajes, así como la autenticidad de mensajes y de su origen. Una función hash es también ampliamente usada para la firma digital, ya que los documentos a firmar son en general demasiado grandes, la función hash les asocia una cadena de longitud 160 bits que los hace más manejables para el propósito de firma digital.

De forma gráfica la función hash efectúa lo siguiente: un mensaje de longitud arbitraria lo transforma de forma "única" a un mensaje de longitud constante.



 


 

¿Cómo hace esto? La idea general es la siguiente:

La función hash toma como entrada una cadena de longitud arbitraria, digamos 5259 bits, luego divide éste mensaje en pedazos iguales, digamos de 160 bits, como en este caso y en general el mensaje original no será un múltiplo de 160, entonces para completar un número entero de pedazos de 160 bits al último se le agrega un relleno, digamos de puros ceros. En nuestro caso en 5259 caben 32 pedazos de 160 bits y sobran 139, entonces se agregarán 21 ceros más.

El mensaje toma la forma X = X1, X2, X3,…,Xt donde cada Xi tiene igual longitud (160 bits por ejemplo).


 


 

Posteriormente se asocia un valor constante a un vector inicial IV y H0=IV

Ahora se obtiene H1 que es el resultado de combinar H0 con X1 usando una función de compresión
f

H1 = f(H0,X1)

Posteriormente se obtiene H2, combinando H1 y X2 con f

H2 = f(H1,X2)

Se hace lo mismo para obtener H3

H3 = f(H2,X3)

Hasta llegar a Ht

Ht = f(Ht-1, Xt)

Entonces el valor hash será h(M) = Ht

De alguna forma lo que se hace es tomar el mensaje partirlo en pedazos de longitud constante y combinar de alguna forma pedazo por pedazo hasta obtener un mensaje único de longitud fija como muestra la figura siguiente:


 

Las funciones hash (o primitivas hash) pueden operar como: MDC (Modification Detection Codes) ó MAC (Massage Authentication Codes).

Los MDC sirven para resolver el problema de la integridad de la información, al mensaje se le aplica un MDC (una función hash) y se manda junto con el propio mensaje, al recibirlo el receptor aplica la función hash al mensaje y comprueba que sea igual al hash que se envió antes.

Es decir, se aplica un hash al mensaje M y se envía con el mensaje (M, h(M)), cuando se recibe se le aplica una vez más el hash (ya que M es público) obteniendo h'(M), si h(M)=h'(M), entonces se acepta que el mensaje sea transmitido sin alteración.


 

Los MAC sirven para autenticar el origen de los mensajes (junto con la integridad), un MAC. Es decir, se combina el mensaje M con una clave privada K y se les aplica un hash h(M,K), si al llegar a su destino h(M, K) se comprueba de integridad de la clave privada K, entonces se demuestra que el origen es solo el que tiene la misma clave K, probando así la autenticidad del origen del mensaje.

De forma simple se muestra en la siguiente figura el funcionamiento de un MAC


 


 

Las propiedades que deben de tener las primitivas hash son:

  1. Resistencia a la preimagen significa que dada cualquier imagen, es computacionalmente imposible encontrar un mensaje x tal que h(x)=y. Otra forma como se conoce esta propiedad es que h sea de un solo sentido.

  2. Resistencia a una segunda preimagen significa que dado x, es computacionalmente imposible encontrar una x' tal que h(x)=h(x'). Otra forma de conocer esta propiedad es que h sea resistente a una colisión suave.

  3. Resistencia a colisión significa que es computacionalmente imposible encontrar dos mensajes diferentes x, x' tal que h(x)=h(x'). Esta propiedad también se conoce como resistencia a colisión fuerte.

Para ilustrar la necesidad de estas propiedades veamos los siguientes ejemplos:

Consideremos un esquema de firma digital con apéndice, entonces la firma se aplica a h(x), en este caso h debe ser un MDC con resistencia a una 2° preimagen, ya que de lo contrario un atacante C que conozca la firma sobre h(x), puede encontrar otro mensaje x' tal que h(x) = h(x') y reclamar que la firma es del documento x'.

Si el atacante C puede hacer que el usuario firme un mensaje, entonces el atacante puede encontrar una colisión (x, x') (en lugar de lo más difícil que es encontrar una segunda preimagen de x) y hacer firmar al usuario a x diciendo que firmo x'. En este caso es necesaria la propiedad de resistenhttp://www.google.es/search?q=biography+%22John+Mccarthy%22&hl=es&lr=&ie=UTF-8&start=20&sa=Ncia a colisión.

Por último si (e,n) es la clave pública RSA de A, C puede elegir aleatoriamente un y y calcular z = ye mod n, y reclamar que y es la firma de z, si C puede encontrar una preimagen x tal que z = h(x), donde x es importante para A. Esto es evitable si h es resistente a preimagen.

Las funciones hash más conocidas son las siguientes: las que se crean a partir de un block cipher como DES, MD5 ], SHA-1 y RIPEMD 160.

Actualmente se ha podido encontrar debilidades en las funciones hash que tienen como salida una cadena de 128 bits, por lo que se ha recomendado usar salidas de 160 bits. Así mismo se han encontrado ataques a MD5 y SHA-0 (antecesora de SHA-1), esto ha dado lugar que se dirija la atención sobre la función has RIPEMD-160.

El ataque más conocido (a fuerza bruta) a una función hash es conocido como "birthday attack" y se basa en la siguiente paradoja, si hay 23 personas en un local existe una probabilidad de al menos 1/2, de que existan dos personas con el mismo cumpleaños. Aunque parezca muy difícil esa posibilidad se puede mostrar que en general al recorre la raíz cuadrada del número de un conjunto de datos, se tiene la probabilidad de al menos ½ de encontrar dos iguales.

Al aplicar esto a una función hash, es necesario recorrer entonces la raíz cuadrada de 2160 mensajes para poder encontrar dos con el mismo hash, o sea encontrar una colisión. Por lo tanto una función hash son salida 2160 tiene una complejidad de 280, y una función de 128 bits de salida tiene una complejidad de 264, por lo que es recomendable usar actualmente salida de 160 bits (48 dígitos).

La criptografía simétrica, es claramente insuficiente para llevar a cabo comunicaciones seguras a través de canales inseguros -léase internet-, debido a que los dos interlocutores necesitan compartir una clave secreta -llamada "clave de sesión"-. Dicha clave debe ser transmitida en algún momento desde un extremo a otro del canal de comunicación de forma segura, ya que de ella depende la protección de toda la información que se transmita a lo largo de esa sesión en particular.Se necesita, pues, un canal seguro para poder crear otro canal seguro. Es la pescadilla que se muerde la cola.

La criptografía asimétrica ofrece una salida al problema, proporcionando ese canal seguro de comunicación que va a permitir a los participantes intercambiar las claves de sesión. Y ésa no es la única ventaja, ya que los algoritmos asimétricos ofrecen mecanismos fiables para que ambos interlocutores se puedan identificar frente al otro de manera segura. La razón por la que no se emplean algoritmos asimétricos todo el tiempo es porque, entre otras ventajas, los criptosistemas simétricos resultan mucho más eficaces y rápidos.

Valora este capítulo: (8 opiniones)
Autor y licencia de 'La seguridad en informática - Funciones Hash'
Rafael Menéndez-Barzanallana Asensio Extraído de: http://www.um.es/docencia/barzana

Creative Commons License
Esta obra está bajo una licencia de Creative Commons.
Este contenido ha sido recopilado por el equipo de Wikilearning. Todo el contenido recopilado se ha obtenido respetando y comunicando en nuestro site la licencia de cada fuente.
Wikilearning tiene permiso expreso por escrito de los autores para publicar los contenidos que ha extraído de otras webs, incluyendo su uso comercial.

Opiniona sobre 'La seguridad en informática - Funciones Hash' (8)

Tu nombre debe tener tres caracteres como mínimo.
Es necesario que te des de alta con una cuenta de correo válida.
Es necesario que te des de alta con una cuenta de correo válida.
El contenido del título de tu opinión debe tener tres caracteres como mínimo.
Es obligatorio que selecciones una valoración del recurso.
El contenido del comentario de tu opinión debe tener tres caracteres como mínimo.

Opina sobre este curso gratis



* Valoración:
* Nombre:
* Correo electrónico:
* Título:
* Comentario:

Wikis relacionados con 'La seguridad en informática - Funciones Hash'

Anotaciones sobre funciones mateméticas.
A lo largo de este trabajo se va a intentar hacer un repaso de los... Más »
Esta guía no es un documento general de seguridad. Esta guía está específicamente orientada a... Más »
WiFi (Wireless Fidelity) es un nombre comercial desarrollado por un grupo de comercio industrial llamado... Más »
WiFI describe los productos de WLAN basados en los estándares 802.11 y está pensado en... Más »
¿Estás seguro de que deseas eliminar este capítulo?