46651 Algoritmos de HASH

5
 Algoritmos de HASH LordHASH Artículo creado para postear en http://gaussianos.com En primer lugar, trataremos de abordar de forma sencilla este concepto para aquellos que no lo conozcan. Este es sencillo, pues un HASH no es más que un número resumen. De hecho, en muchos sitios web podeis encontrar expresiones como "checksum MD5", lo que literalmete se tr ad uc e po r "suma de co mp roba ci ón". Así, el co nc ep to no es co mp li ca do, pe ro si implementación. Pongamos un ejemplo: supongamos que tenemos, por ejemplo, un fichero cualquiera. Pues bien, si consideramos dicho fichero como un flujo de bits y le aplicamos un algoritmo de HASH lo que obtenemos es otro conjunto de bits (de longitud fija y que depende del número de bits de salida del algoritmo o funció n que utilicemos) q ue depende bit a bit del contenido del flujo original de bits que sirvió como entrada al algoritmo. Además, cumplen las siguientes propiedades: • Todos los HASHes generados con una función de hash tienen el mismo tamaño, sea cual sea el mensaje utilizado como entrada. • Dado un mensaje, es fácil y rápido mediante un ordenador calcular su HASH. • Es imposible reconstruir el mensaje ori g inal a partir de su HASH. Es imposible generar un mensaje con un HASH determi nado. Es decir, un algoritmo de HASH no es un algoritmo de encriptación, aunque sí se utliza en esquemas de cifrado, como algoritmos de cifrado asimétrico (p.e: RSA). Ahora bien, tener una función de estas características puede tener muchas aplicaciones. Algunas de ellas pueden ser las siguientes: Comprobación de integridad de ficheros: Supongamos que queremos transmitir un fichero a un amig o. Si antes de realiza r este envío calculamos l a función HASH del fichero, para nuestro amigo del otro extremo es posible verificar la integridad del fichero aplicando el mismo algoritmo al archivo que recibe. Si ambos coinciden,  podemos asegurar qu e el envio ha sido satisfactori o. Esta es una aplicación real que se utiliza, por ejemplo, para comprobar la integridad de muchos paquetes que se descargan en distribuciones del SO GNU/Linux. Seguridad en procesos de identificación en sistemas: Los procesos de identficación (Login+Password) se ven reforzados por estos algorimos. Se utlizan de la siguiente forma: cuando un usuario accede a su computadora debe introducir su nombre de usuario y su password. Pues bien, si el sistema operativo no registra estos datos como “texto claro” si no que registra el resultado de aplicarles una función HASH, en el caso de que un usuario malicioso logre acceder a nuestro archivo de registros, no conseguirá (a menos que el algoritmo utilizado sea malo o disponga de una supercomputadora) revertir el contenido de dicho registro, y por tanto no puede acceder a nuestro sistema. Esta misma idea se aplica en identificación de usuarios en muchas webs, con la diferencia de que para que este esquema sea seguro debe incluir información adiccional y “aleatoria”, como marcas de tiempo y redundancias. Firma digital: Estos algoritmos se utlizan en esquemas de firma digital para verificar la integridad de la información enviada por el canal de comunicaciones. Algoritmos de cifrado asimétrico, como RSA por ejemplo, realizan lo siguiente: Calculan la función HASH del contenido del mensaje que se va a enviar y luego se firma dicho checksum

Transcript of 46651 Algoritmos de HASH

Page 1: 46651 Algoritmos de HASH

5/17/2018 46651 Algoritmos de HASH - slidepdf.com

http://slidepdf.com/reader/full/46651-algoritmos-de-hash 1/5

 

Algoritmos de HASHLordHASHArtículo creado para postear en http://gaussianos.com

En primer lugar, trataremos de abordar de forma sencilla este concepto para aquellos que no lo

conozcan. Este es sencillo, pues un HASH no es más que un número resumen. De hecho, enmuchos sitios web podeis encontrar expresiones como "checksum MD5", lo que literalmete setraduce por "suma de comprobación". Así, el concepto no es complicado, pero siimplementación. Pongamos un ejemplo: supongamos que tenemos, por ejemplo, un ficherocualquiera. Pues bien, si consideramos dicho fichero como un flujo de bits y le aplicamos unalgoritmo de HASH lo que obtenemos es otro conjunto de bits (de longitud fija y que dependedel número de bits de salida del algoritmo o función que utilicemos) que depende bit a bit delcontenido del flujo original de bits que sirvió como entrada al algoritmo.Además, cumplen las siguientes propiedades:

• Todos los HASHes generados con una función de hash tienen el mismo tamaño, sea

cual sea el mensaje utilizado como entrada.• Dado un mensaje, es fácil y rápido mediante un ordenador calcular su HASH.• Es imposible reconstruir el mensaje original a partir de su HASH.• Es imposible generar un mensaje con un HASH determinado.

Es decir, un algoritmo de HASH no es un algoritmo de encriptación, aunque sí se utliza enesquemas de cifrado, como algoritmos de cifrado asimétrico (p.e: RSA).

Ahora bien, tener una función de estas características puede tener muchas aplicaciones.Algunas de ellas pueden ser las siguientes:

➔ Comprobación de integridad de ficheros: Supongamos que queremos transmitir unfichero a un amigo. Si antes de realizar este envío calculamos la función HASH delfichero, para nuestro amigo del otro extremo es posible verificar la integridad delfichero aplicando el mismo algoritmo al archivo que recibe. Si ambos coinciden,

 podemos asegurar que el envio ha sido satisfactorio. Esta es una aplicación real que seutiliza, por ejemplo, para comprobar la integridad de muchos paquetes que se descarganen distribuciones del SO GNU/Linux.

➔ Seguridad en procesos de identificación en sistemas: Los procesos de identficación(Login+Password) se ven reforzados por estos algorimos. Se utlizan de la siguienteforma: cuando un usuario accede a su computadora debe introducir su nombre de

usuario y su password. Pues bien, si el sistema operativo no registra estos datos como“texto claro” si no que registra el resultado de aplicarles una función HASH, en el casode que un usuario malicioso logre acceder a nuestro archivo de registros, no conseguirá(a menos que el algoritmo utilizado sea malo o disponga de una supercomputadora)revertir el contenido de dicho registro, y por tanto no puede acceder a nuestro sistema.Esta misma idea se aplica en identificación de usuarios en muchas webs, con ladiferencia de que para que este esquema sea seguro debe incluir información adiccionaly “aleatoria”, como marcas de tiempo y redundancias.

➔ Firma digital: Estos algoritmos se utlizan en esquemas de firma digital para verificar laintegridad de la información enviada por el canal de comunicaciones. Algoritmos de

cifrado asimétrico, como RSA por ejemplo, realizan lo siguiente: Calculan la funciónHASH del contenido del mensaje que se va a enviar y luego se firma dicho checksum

Page 2: 46651 Algoritmos de HASH

5/17/2018 46651 Algoritmos de HASH - slidepdf.com

http://slidepdf.com/reader/full/46651-algoritmos-de-hash 2/5

 

con la clave privada del emisor. Así se asegura la integridad de la información y el “norepudio”.

Algunos de los algoritmos de HASH más utilizados son los siguientes:● MD5 (Message-Digest Algorithm 5 o Algoritmo de Firma de Mensajes 5): Desarrollado

 por Ron Rivest, y ha sido hasta los últimos año el algoritmo hash más usado. Procesamensajes de una longitud arbitraria en bloques de 512 bits generando un compendio de128 bits. Debido a la capacidad de procesamiento actual esos 128 bits son insuficientes,además de queuna serie de ataques criptoanalíticos han puesto de manifiesto algunasvulnerabilidades del algoritmo. Puede ser útil para comprobar la integridad de unfichero tras una descarga, por ejemplo, pero ya no es aceptable desde el punto de vistacriptoanalítico.

● SHA-1 (Secure Hash Algorithm 1 o Algorimo de Hash Seguro 1): El SHA-1 tomocomo entrada un mensaje de longitud máxima 264 bits (más de dos mil millones deGigabytes) y produce como salida un resumen de 160 bits. Este número es mayor que el

que se utilizaba en el algoritmo SHA original, 128 bits. Ya existen nuevas versiones deSHA que trabajan con resúmenes de 224,256,384 e inclusio 512 bits.

En realidad, lo seguros o inseguros que estos algoritmos sean no depende de los conocimientosinformáticos o telemáticos que uno tenga, si no en los sus conocimientos matemáticos. Nuestraintención es demostrar por dónde cojean los algoritmos de HASH, la dificultad computacionalque presentan, y que soluciones se dan los posibles ataques que puedan sufrir por parte deindividuos malintencionados.

ATACANDO LOS ALGORITMOS DE HASH: MD5 Y SHA-1

Desde el año 2004, aproximadamente, cuando saltaron las primeras noticias escandalosas sobrela ruptura de MD5, la seguridad que ofrecen los algoritmos de HASH a nuestros esquemas decifrado ha sido una cuestión que se ha puesto en entredicho. ¿Qué seguridad ofrecen estosalgoritmos? ¿Resulta computacionalmente complejo romper uno de estos algoritmos? ¿Quésolucion se debe adoptar? Intentaremos resolver estas cuestiones.

Intentemos dar una descripción algo más matemática de lo que es una función HASH.Supongamos que tenemos un mensaje a, al que aplicamos una función resumen a la quellamaremos h. Decimos entonces que el resultado de esta operación, al que llamaremos b es elHASH de a. Es decir:

h(a)=b

Esta función debe ser sencilla de realizar para un computador, pero computacionalmenteimposible realizar la operación inversa, al menos para usuarios normales.

Además, esta función tiene otra característica, el tamaño de la entrada no es de longitud fija,

ha b

Page 3: 46651 Algoritmos de HASH

5/17/2018 46651 Algoritmos de HASH - slidepdf.com

http://slidepdf.com/reader/full/46651-algoritmos-de-hash 3/5

 

 puede ser de longitud variable. Esto tiene la siguiente consecuencia, que no demostraremosmatemáticamente, pero que asumiremos por estar razonado en otros artículos publicados enInternet (al final se indican). Esta es la siguiente: es posible que dos mensajes de entrada a

 produzcan el mismo mensaje de salida b. Es decir, es posible encontrar un mensaje c, tal que:

h(c)=b

Sin embargo, encontrar ese mensaje debe ser, al igual que la particularidad antes mencionada,muy complejo desde el punto de vista computacional. Para los algoritmos de HASH esto es loque se conoce como colision: que dos mensajes de entrada produzcan el mismo mensaje desalida.

Así, a priori, pudieramos establecer dos posibles vulnerabilidades de las funciones HASH:

● Que sea posible realizar la operación:h-1(b)=a

Habitualmente, a la operación de invertir la función HASH comprobando todas las posiblidades para los bits de salida se le llama “ataque de fuerza bruta”. Esto es lo quedebe ser computacionalmente impracticable. Supondría aplicar la función HASH 2n

veces hasta encontrar la coincidencia (n es el número de bits de salida de la función).

● Que se hallen colisiónes:h(a)=b y h(c)=b, a!=c

Lo que antes hemos denominado colisión.

Estas dos posibles debilidades dan lugar a cuatro tipos de ataques:● Ataque Tipo 1. El atacante es capaz de encontrar dos mensajes al azar que colisionan

 pero es incapaz de hacerlo de forma sistemática. Si es capaz de dar sólo con dosmensajes de que provocan colisión, esta no es razón suficiente para tildar el algoritmode ineficiente. Índice de peligrosidad: *

● Ataque Tipo 2: El atacante es capaz de generar dos mensajes distintos de forma que susHASH colisionen, pero sin saber a priori qué hash resultará. Es decir, el atacante no

 podria generar “queriendo” el HASH que necesite para fines maliciosos. Índice de peligrosidad: **

● Ataque Tipo 3: El atacante es capaz de construir un mensaje sin sentido de forma que suHASH colisione con el de un mensaje con sentido. Si este es el caso, el agentemalicioso puede atacar algoritmos de encriptación asimétricos con firma digital,haciendo que se firmen mensajes sin sentido, y que el destinatario los acepte comofidedignos. Índice de peligrosidad: ***

● Ataque Tipo 4: El atacante es capaz de crear un segundo mensaje falso que tiene sentidoy cuyo hash colisiona con el del mensaje verdadero. En este caso, el atacante puedeactuar con total impunidad, pude falsificar certificados, firmar mensajes...el resutadosería desastroso. Índice de peligrosidad: ****.

El problema, entonces es el siguiente: ¿cómo de difícil es encontrar una solución? ¿Qué ataquesreales son practicables? ¿Qué se gana incrementando el número de bits de salida del algoritmo?

Page 4: 46651 Algoritmos de HASH

5/17/2018 46651 Algoritmos de HASH - slidepdf.com

http://slidepdf.com/reader/full/46651-algoritmos-de-hash 4/5

 

En primer lugar, responderemos a la última pregunta. Si aumentamos el número de bits desalida del algorimo, el ataque de fuerza bruta será más impracticable y también lo seráencontrar los mensajes que colisionen, pues teóricamente se cumple que para confiar en que

 podemos encontrar dos mensajes que colisionen no hay que realizar 2n operaciones, si no sólo

2n/2

.

Realicemos algunos cálculos para realizar ataques de fuerza bruta:

● Para una clave de 12 dígitos, escrita con un teclado con 97 caracteres (base 97), habríaque realizar (esto no tiene nada que ver con los algoritmos de HASH):

9712 = 693.842.360.995.438.000.295.041 comprobaciones.

● Para MD5, la salida es de 128 bits, sería necesario realizar:2128=3,402823669 * 1038 operaciones.

Supongamoslo impracticable● ¿Es necesario realizar el cálculo para SHA 1? Curiosos...

Trabajemos ahora con los ataques basados en búsqueda de colisiones:

● Para MD5, la salida es de 128 bits, luego hay que operar sobre la mitad de bits, y seríanecesario realizar:

264=18.446.744.073.709.551.616 operaciones.

● Para el algoritmo SHA 1, cuya salida es de 160 bits:

2

80

=1.208.925.819.614.629.174.706.176 operaciones.Curiosidad: 1.000.000 de ordenadores capaces de procesar en 1 µs cada operacióntardarían más de 38.000 años en las 280 operaciones.

Y...para los más desconfiados e incluso paranoicos...¿qué hay de las supercomputadoras y de lagente que sí dispone de los medios necesarios? Cuando saltaron las primeras alarmas sobreestos algoritmos, hace unos dos años, las cifras eran las siguientes:

● Para romper el SHA-0 completo se ha requerido un supercomputador de BULL de 256 procesadores durante unos 9 años de proceso, pero al supercomputador que estáinstalando IBM en la UPC (Barcelona) sólo le costaría del orden de 1 año.

● Otro grupo de investigadores, Wang, Feng, Lai, and Yu han reportado haberloconseguido con una complejidad aproximadamente 2000 veces menor (240 en vez de251). Esta reducción equivaldría a una necesidad de cálculo de algo menos de 1 día, sila relación fuese lineal, pero los mismos investigadores han reportado necesitar sólo 1día con un IBM P690 en cluster, para romper el MD5, que tiene una complejidadequivalente.

Por tanto, lo habitual no es que nos ataque desde uno de estos grandes usuarios (tienen cosasmás interesantes que hacer, diría yo...) si no que nos ataque un cracker o similares(ACLARACIÓN: No incluyamos a los señores programadores en esto, los hackers. Gracias aRichard Stallman [Link sobre RichardStallman a

htttp://maracay.velug.org.ve/docs/free_software.pdf])

Page 5: 46651 Algoritmos de HASH

5/17/2018 46651 Algoritmos de HASH - slidepdf.com

http://slidepdf.com/reader/full/46651-algoritmos-de-hash 5/5

 

Lo habitual es que este tipo de usuarios realicen ataques basados en diccionarios, como laaplicación para Ñu/Linux John the Ripper [link a http://www.openwall.com/john/] Este tipo deaplicaciones tiene una base de datos con claves comunes, que prueban sobre los sistmas a losque queremos acceder. (p.e Sistemas basados en UNIX donde se almacenan los resumentesHASH de el nombre de usuario y su clave para autenticar). Ante esto sólo hay una solución:

EVITAR LAS PASSWORDS ABSURDAS. No sirve (marta – tkm ni maria – secreto) ok??

Concluyendo, dependiendo de su nivel de paranoia críptica y de la aplicación que esténutilizando...escojan su algitmo de HASH, pero no acepten menos de SHA 1. Cuando unalgoritmo empieza a presentar vulnerabilidades, no tarda mucho en ser aniquilado, así que aalgunos de estos les queda poco tiempo de vida.

Links: Uno - http://www.infosec.sdu.edu.cn/paper/md5-attack.pdf Dos - http://www.md5database.net/Tres - http://www.eumed.net/cursecon/ecoinet/seguridad/resumenes.htm

Incluir link a http://lordhash.blogspot.com