
Pintalabios-MP3:
Lector De Tarjetas:
Pulsera-Reloj:
Cartera:
Maquillaje:
reflexiones de un analisis robot
Continuacion del articulo hecho por LordHASH
--------------------------------------------------------------------------------------------------
Este artículo es una colaboración enviada por LordHASH
Algunos de los algoritmos de HASH más utilizados, que son sobre los que trabajaremos, son los siguientes:
En realidad, lo seguros o inseguros que estos algoritmos sean no depende de los conocimientos informáticos o telemáticos que uno tenga, sino de sus conocimientos matemáticos. Nuestra intención es demostrar por dónde cojean los algoritmos de HASH, la dificultad computacional que presentan, y qué soluciones se dan a los posibles ataques que puedan sufrir por parte de individuos malintencionados.
Desde el año 2004 aproximadamente, cuando saltaron las primeras noticias escandalosas sobre la ruptura de MD5, la seguridad que ofrecen los algoritmos de HASH a nuestros esquemas de cifrado ha sido una cuestión que se ha puesto en entredicho. ¿Qué seguridad ofrecen estos algoritmos? ¿Resulta computacionalmente complejo romper uno de estos algoritmos? ¿Qué solución 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 que llamaremos h. Decimos entonces que el resultado de esta operación, al que llamaremos b es el HASH de a. Es decir:
h(a)=b
Esta función debe ser sencilla de realizar para un computador, pero debe ser computacionalmente imposible 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, puede ser de longitud variable. Esto tiene la siguiente consecuencia, que no demostraremos matemáticamente, pero que asumiremos por estar razonado en otros artículos publicados en Internet (al final se indican): 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 lo que se conoce como colisión: que dos mensajes de entrada produzcan el mismo mensaje de salida.
Así, a priori, podemos establecer dos posibles vulnerabilidades de las funciones HASH:
h-1(b)=a
Habitualmente, a la operación de invertir la función HASH comprobando todas las posibilidades para los bits de salida se le llama ataque de fuerza bruta. Esto es lo que debe 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).
h(a)=b y h(c)=b, a distinto de c
Lo que antes hemos denominado colisión.
Estas dos posibles debilidades dan lugar a cuatro tipos de ataques:
El problema entonces es el siguiente: ¿cómo de difícil es encontrar una solución? ¿Qué ataques reales son practicables? ¿Qué se gana incrementando el número de bits de salida del algoritmo?
En primer lugar, responderemos a la última pregunta. Si aumentamos el número de bits de salida del algoritmo, 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:
9712 = 693.842.360.995.438.000.295.041 comprobaciones.
2128=3′402823669 * 1038 operaciones.
Trabajemos ahora con los ataques basados en búsqueda de colisiones:
264=18.446.744.073.709.551.616 operaciones.
280=1.208.925.819.614.629.174.706.176 operaciones.
Curiosidad: 1.000.000 de ordenadores capaces de procesar en 1 µs cada operación tardarí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 la gente que sí dispone de los medios necesarios? Cuando saltaron las primeras alarmas sobre estos algoritmos, hace unos dos años, las cifras eran las siguientes:
Por tanto, lo habitual no es que nos ataque desde uno de estos grandes usuarios (tienen cosas má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 a Richard Stallman).
Lo habitual es que este tipo de usuarios realicen ataques basados en diccionarios, como la aplicación para Ñu/Linux John the Ripper. Este tipo de aplicaciones tiene una base de datos con claves comunes, que prueban sobre los sistemas a los que queremos acceder (por ejemplo Sistemas basados en UNIX donde se almacenan los resúmenes HASH 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én utilizando…escojan su algoritmo de HASH, pero no acepten menos de SHA-1. Cuando un algoritmo empieza a presentar vulnerabilidades no tarda mucho en ser aniquilado, así que a algunos de estos les queda poco tiempo de vida.
Fuentes:
Ir a Algoritmos HASH (I): Introducción
http://gaussianos.com/algoritmos-hash-ii-atacando-md5-y-sha-1/
Excelente articulo elaborado por LordHASH
--------------------------------------------------------------------------------------------------
Este artículo es una colaboración enviada por LordHASH
En primer lugar, trataremos de abordar de forma sencilla este concepto para aquellos que no lo conozcan. Podemos decir que un HASH no es más que un número resumen. De hecho, en muchos sitios web podéis encontrar expresiones como “checksum MD5″, lo que literalmente se traduce por “suma de comprobación”. Así, el concepto no es complicado, pero sí su implementación. Pongamos un ejemplo: supongamos que tenemos 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) que 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 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 utiliza en esquemas de cifrado, como algoritmos de cifrado asimétrico (por ejemplo en el RSA).
Ahora bien, tener una función de estas características puede tener muchas aplicaciones. Algunas de ellas pueden ser las siguientes:
En el próximo post veremos algo más sobre ataques a dos algoritmos HASH: MD5 ySHA-1.
Ir a Algoritmos HASH (II): Atacando MD5 y SHA-1
Fuente:http://gaussianos.com/algoritmos-hash-i-introduccion/