Este documento proporciona una introducción a las colisiones de hash. Explica qué son las funciones hash criptográficas y sus usos comunes, como la verificación de integridad y la detección de duplicados. También describe la paradoja del cumpleaños matemática que subyace a la posibilidad de colisiones de hash y resume la historia de las colisiones MD5 encontradas, incluidas las demostraciones de generación de colisiones en minutos.
1. HASH COLLISIONS:
Welcome
to the (un)real World!
Pedro aka s4ur0n
Security Auditor & Researcher
Academia MADESYP (Albacete - Spain)
2. Hash collisions: Introducción
Función de hash criptográfica
• Una función de hash criptográfica es una
función de hash ☺
• Es un algoritmo que dado un bloque arbitrario de
datos devuelve una secuencia de salida en bits de
longitud fija normalmente llamada el valor de
hash (criptográfico)
• Cualquier cambio accidental o intencionado en los
datos hará que se cambie el valor del hash (con
una muy alta probabilidad)
II Navaja Negra Conference – Albacete 2012 Pedro C. (MADESYP)
3. Hash collisions: Introducción
Función de hash criptográfica
• Los datos del mensaje a codificar suelen
denominarse “message” o “mensaje”
• El valor del hash se denomina también “message
digest” o normalmente “digest” o “resúmen”
(informalmente “checksum”)
• Es decir, un hash es un tipo de “firma” para una
secuencia de datos que representa su contenido y
que si se ve alterado en lo más mínimo (incluso en
un sólo bit) será detectado
II Navaja Negra Conference – Albacete 2012 Pedro C. (MADESYP)
4. Hash collisions: Introducción
Función de hash criptográfica
• Los hashes son “digests” y nunca considerados
encriptación. Dicha condición se hace en dos vías
(encriptación/desencriptación)
• Se realiza estrictamente en una única vía (One
Way Operation)
• Por tanto, si se conoce el “digest” no puede
recuperarse el “message”
• Pero si se conoce el “message” puede volver a
calcularse el “digest”
II Navaja Negra Conference – Albacete 2012 Pedro C. (MADESYP)
5. Hash collisions: Introducción
Ejemplos de hashes
TEXTO PLANO Función HASH (MD5)
MADESYP 82da940780690d929c0785c9583fe564
MaDESYP
32 CARACTERES
260c7b0672edb56ef3ceedf2b6b84eeb
1 Byte
madesyp 978a8df466f30a9969a6386e29a4b289
En un lugar de Albacete
* 8 Bits
16 Bytes
en la II Conferencia de d704e4fb268f784107887a1ec27039ce
Navaja Negra…
128 bits de digest
II Navaja Negra Conference – Albacete 2012 Pedro C. (MADESYP)
6. Hash collisions: Introducción
Ejemplos de hashes
MADESYP 82da940780690d929c0785c9583fe564
mADESYP 376f0096cf32e1e28368fc64e5db7c45
8 2 D A 9 4 0 7
3 7 6 F 0 0 9 6
1000 0010 1101 1010 1001 0100 0000 0111
0011 0111 0110 1111 0000 0000 1001 0110 16 Bits
diferentes en
XOXX OXOX XOXX OXOX XOOX OXOO XOOX OOOX los 4 primeros
Bytes del
Se continua con los siguientes “bloques” del mismo modo Hash
II Navaja Negra Conference – Albacete 2012 Pedro C. (MADESYP)
7. Hash collisions: Introducción
Ejemplos de hashes
MADESYP 82da940780690d929c0785c9583fe564
mADESYP 376f0096cf32e1e28368fc64e5db7c45
El cambio de una sola
letra (1 byte=8 bits)
supone 71 bits
diferentes en el digest
Es decir, una
diferencia aproximada
del 55,47%
II Navaja Negra Conference – Albacete 2012 Pedro C. (MADESYP)
8. Hash collisions: Introducción
Función de hash ideal
La función ideal de hash cumple 4 propiedades:
• Es fácil de computar cualquier valor de hash para
un valor de mensaje dado
• No puede generar un mensaje si tiene su hash
• No puede modificar un mensaje sin cambiar el
hash
• Es imposible encontrar dos mensajes con
valores diferentes que den el mismo hash
II Navaja Negra Conference – Albacete 2012 Pedro C. (MADESYP)
9. Hash collisions: Introducción
Usos comunes
• Se emplean para “ofrecer” INTEGRIDAD
y/o NO REPUDIO. Algunos ejemplos son:
• Verificación de integridad de ficheros
• Detección de datos duplicados
• Guardado de credenciales como
hashing del password
• Fingerprinting
• Firmas digitales
• Etc…
Navaja Negra Conference – Albacete 2012 Pedro C. (MADESYP)
10. Hash collisions: Introducción
Terminología y Mitos
• ¿Qué es una colisión?
• Cuando dos bloques de datos diferentes
tienen el mismo valor de hash
• Si conozco uno de ellos, pruebo con el
resto hasta obtener el mismo hash por
fuerza bruta: CIERTO!!!
• 128 bits son 3.4*10^38 posibilidades
diferentes
340.282.366.920.938.463.463.374.607.431.768.211.456
Navaja Negra Conference – Albacete 2012 Pedro C. (MADESYP)
12. Hash collisions
PARADOJA
DEL CUMPLEAÑOS
II Navaja Negra Conference – Albacete 2012 Pedro C. (MADESYP)
13. Hash collisions: Bases
Paradoja del Cumpleaños
• El problema del cumpleaños o la paradoja
del cumpleaños es uno de los teoremas
más complejos de las matemáticas
• Es una paradoja ya que es una verdad
matemática que contradice la intuición
• ¿Cuántos de vosotros habréis nacido el
mismo día y el mismo mes?
• ¿Podríamos calcularlo?
II Navaja Negra Conference – Albacete 2012 Pedro C. (MADESYP)
14. Hash collisions: Bases
Paradoja del Cumpleaños
• Calcular dicha probabilidad es el problema
del cumpleaños y es la base de las
colisiones
• Probemos a calcular la probabilidad
• Estamos 138 personas en la sala
• Suponemos 365 días en el año
• Luego, suponiendo que cada uno tenga una
fecha de nacimiento distinta, la intuición
nos dice que sería de 138/365 (un 37,80%)
II Navaja Negra Conference – Albacete 2012 Pedro C. (MADESYP)
15. Hash collisions: Bases
Paradoja del Cumpleaños
• Dicha probabilidad, es muy baja para
“apostar” unas cervezas, pero…
• Veamos qué ocurre con sólo 23 personas
• 23/365=0,06301 de donde tendríamos la
posibilidad aún más baja de sólo un 6,3%
• Tenemos sólo un 6,3% de probabilidad de
que 2 personas de las 23 celebren su
cumpleaños el mismo día
II Navaja Negra Conference – Albacete 2012 Pedro C. (MADESYP)
16. Hash collisions: Bases
Paradoja del Cumpleaños
• Planteamos ahora 2 personas y un año de
365 días
• La segunda persona puede cumplir los
años cualquiera de los 364 días restantes
• Luego la probabilidad de que *NO* celebren
su cumpleaños el mismo día será:
• 364/365=99,73%
• Ahora, tenemos una tercera persona
II Navaja Negra Conference – Albacete 2012 Pedro C. (MADESYP)
17. Hash collisions: Bases
Paradoja del Cumpleaños
• Contando con que los dos primeros no
coinciden en su cumpleaños, tenemos
disponibles 363 días
• Esto es una probabilidad de 363/365 sobre
los 364/365 días:
• 363/365 * 364/365 = 99,18%
• Tomemos una cuarta persona:
• 362/365 * 363/365 * 364/365 = 98,63%
II Navaja Negra Conference – Albacete 2012 Pedro C. (MADESYP)
18. Hash collisions: Bases
Paradoja del Cumpleaños
• Y una quinta persona:
• 361/365 * 362/365 * 363/365 * 364/365 =
98,09%
• Vamos bajando la probabilidad como
puede comprobarse
• Expresándolo en notación matemática:
II Navaja Negra Conference – Albacete 2012 Pedro C. (MADESYP)
19. Hash collisions: Bases
Paradoja del Cumpleaños
• Usando notación factorial puede ser
escrita como…
• Ahora, 1-p es la probabilidad de al menos
dos personas tengan el mismo día de
cumpleaños
II Navaja Negra Conference – Albacete 2012 Pedro C. (MADESYP)
20. Hash collisions: Bases
Paradoja del Cumpleaños
• Que podemos expresar como…
• Luego la probabilidad para n personas de
que tengan el mismo día de cumpleaños
viene dada por:
II Navaja Negra Conference – Albacete 2012 Pedro C. (MADESYP)
21. Hash collisions: Bases
Paradoja del Cumpleaños
• Retomando sólo 23 personas, vemos que
p=50,73%
• Esto es más de la mitad
• Un buen ejemplo para programar
• Y ojo con los decimales (por ejemplo,
PL/SQL para n=227 obtiene 100% cuando
debería ser sólo
99,999999999999999999999999999999999
99999%
II Navaja Negra Conference – Albacete 2012 Pedro C. (MADESYP)
22. Hash collisions: Bases
Paradoja del Cumpleaños
II Navaja Negra Conference – Albacete 2012 Pedro C. (MADESYP)
23. Hash collisions
II Navaja Negra Conference – Albacete 2012 Pedro C. (MADESYP)
24. Hash collisions: MD5 Digest
Breve historia
• El 17 de Agosto de 2004, Xiaoyun Wang,
Dengguo Feng, Xuejia Lay y Hongbo Yu
anunciaron las colisiones para el conjunto
completo del MD5
• El 1 de Marzo de 2005, Arjen Lenstra,
Xiaoyun Wang y Benne de Weger
demostraron generar 2 certificados X.509
con el mismo hash MD5
II Navaja Negra Conference – Albacete 2012 Pedro C. (MADESYP)
25. Hash collisions: MD5 Digest
Breve historia
• Unos pocos días después, Vlastimil Klima
describió un algoritmo mejorado capaz de
generar colisiones en pocas horas en un
equipo portátil
• El 18 de Marzo de 2006, Klima publicó otro
algoritmo capaz capaz de encontrar una
colisión en minutos con un método
denominado tunneling
II Navaja Negra Conference – Albacete 2012 Pedro C. (MADESYP)
26. Hash collisions: MD5 Digest
Breve historia
• El 24 de Diciembre de 2009, Tao Xie y
Dengguo Feng publicaron el primer
bloque simple de una colisión MD5 de 512
bits
• Retaron a la comunidad criptográfica con
una recompensa de 10.000 $ al primero que
encontrase otra colisión en un bloque de 64
bytes antes del 1 de Enero de 2013
II Navaja Negra Conference – Albacete 2012 Pedro C. (MADESYP)
27. Hash collisions: MD5 Digest
Demostración de colisión
Nos basamos en el “bloque original” de 64
bytes (512 bits) con el mismo hash md5
4eb4
2aef5
bc42
a26e4
55fb1
52
05402
79
II Navaja Negra Conference – Albacete 2012 Pedro C. (MADESYP)
28. Hash collisions: MD5 Digest
Demostración de colisión
II Navaja Negra Conference – Albacete 2012 Pedro C. (MADESYP)
29. Hash collisions: MD5 Digest
Demostración de colisión
II Navaja Negra Conference – Albacete 2012 Pedro C. (MADESYP)
30. Hash collisions: MD5 Digest
Estado de la Tecnología
• Hoy 30 de noviembre de 2012 con un i7-980
(6 cores/12 threads) a 3.33GHz, 32 GB de
RAM y CUDA de nVIDIA
(Compute Unified Device Architecture) con
las tarjetas GeForce GTX/Mobile o Quadro,
podemos generar bloques completos y
distintos en segundos
II Navaja Negra Conference – Albacete 2012 Pedro C. (MADESYP)
31. Hash collisions: MD5 Digest
Bloques “colisionados”
1e934ac2f323a9158b43922500ca7040
II Navaja Negra Conference – Albacete 2012 Pedro C. (MADESYP)
32. Hash collisions: MD5 Digest
Demostración de bloques
II Navaja Negra Conference – Albacete 2012 Pedro C. (MADESYP)
33. Hash collisions: MD5 Digest
Estado de la Tecnología II
• Ops, mi equipo no tiene suficiente potencia
para poder generarlos!!!
• No hay problema!!!
• Método de Vlastimil Klima
• Selección de vectores iniciales
• Selección de semilla inicial
• Aproximadamente 90 segundos
• Y md5tunnel 30 segundos
II Navaja Negra Conference – Albacete 2012 Pedro C. (MADESYP)
34. Hash collisions: MD5 Digest
Generación por Tunnel
II Navaja Negra Conference – Albacete 2012 Pedro C. (MADESYP)
35. Hash collisions
II Navaja Negra Conference – Albacete 2012 Pedro C. (MADESYP)
36. Hash collisions: SHA-0
Antecedentes
• Fue publicado por el NIST
• La familia SHA es “Secure Hash Algoritm”
• Hay varias versiones. La primera fue SHA-0
II Navaja Negra Conference – Albacete 2012 Pedro C. (MADESYP)
37. Hash collisions: SHA-0
Demostración de colisión
II Navaja Negra Conference – Albacete 2012 Pedro C. (MADESYP)
38. Hash collisions: SHA-1
Breve historia
• A los dos años, fue publicado SHA-1
• Actualmente es empleado en muchos sitios
• Confiamos en la “seguridad” basada en que
no se ha encontrado ningún ataque
efectivo
• Ha sido ampliamente estudiado por la
comunidad criptográfica
• Si google no tiene el PoC “es seguro”
II Navaja Negra Conference – Albacete 2012 Pedro C. (MADESYP)
39. Hash collisions: SHA-1
Breve historia
• SHA-1 produce un digest de 160 bits
• Por el ataque del cumpleaños, tenemos
entonces que puede encontrarse una
colisión en 2^(160/2), luego 2^80
• Es un número difícil de conseguir
computacionalmente
• En 2007 Christophe De Canniere, Florian
Mendel y Christian Rechberger encontraron
la forma de producirla en 2^70
II Navaja Negra Conference – Albacete 2012 Pedro C. (MADESYP)
40. Hash collisions: SHA-1
Breve historia
• Xiaoyun Wang, Yiqun Lisa Yin y Hongbo Yu
volvieron a demostrar que era posible
romper SHA-1 en 2^58
• En 2008 Stéphane Manuel publicó un nuevo
disturbance vector que lo permitía con una
complejidad de 2^57
• Usando el ataque de boomerang de Joux &
Peyrin’s con n diferenciales auxiliares, la
complejidad se reduce a 2^(57-n)
II Navaja Negra Conference – Albacete 2012 Pedro C. (MADESYP)
41. Hash collisions: SHA-1
Breve historia
• En 2009 Cameron McDonald, Philip Hawkes
y Josef Pieprzyk, en Eurocrypt demostraron
con 5 caminos independientes auxiliares
y un camino diferencial reducirla a 2^52
• Y eso si es posible computarlo con una
máquina actual
• Actualmente se continua investigando en
nuevas formas pero la comunidad se
reserva el derecho de publicar los avances
II Navaja Negra Conference – Albacete 2012 Pedro C. (MADESYP)
42. Hash collisions: SHA-1
Colisión SHA1 en 2^70
151866D5 F7940D84 28E73685 C4D97E18 97DA712B
II Navaja Negra Conference – Albacete 2012 Pedro C. (MADESYP)
44. Hash collisions: Certificados
Esto no es…
• Un certificado *.sitio.com
• Un certificado con NULL bytes
• El “caso” RAPIDSSL
• El “caso” COMODO
• El “caso” DIGINOTAR
• El “caso” MICROSOFT TS CERTS
• Son colisiones creadas a partir de
Certificados completamente validados por
toda la cadena de certificación
II Navaja Negra Conference – Albacete 2012 Pedro C. (MADESYP)
47. Hash collisions: Certificados
Introducción
• MD5 es peligroso para firmas digitales
• Como ha demostrado FLAME en el año
2012 y funcionando desde el 2010
• Hasta hace muy poco tiempo, se ha
empleado como hash de firma el MD5
• En el año 2006 se demostró que era posible
el CPC (Choosen Prefix Collision) con 716
bytes aleatorios
• Hoy es posible en pocas horas generarlos
II Navaja Negra Conference – Albacete 2012 Pedro C. (MADESYP)
48. Hash collisions: Certificados
Representación gráfica
serial number
validity period rogue CA cert
chosen prefix
(different) rogue CA RSA key
real cert domain
name
rogue CA X.509 CA bit!
extensions
real cert collision bits Netscape Comment
RSA key (computed) Extension
max 2048 bits (contents ignored by
browsers)
X.509 extensions identical bytes
(copied from real cert)
valid signature valid signature
II Navaja Negra Conference – Albacete 2012 Pedro C. (MADESYP)
49. Hash collisions: Certificados
Demostración de Colisiones
II Navaja Negra Conference – Albacete 2012 Pedro C. (MADESYP)
50. Hash collisions
II Navaja Negra Conference – Albacete 2012 Pedro C. (MADESYP)
51. Hash collisions: SHA-2
¿Actualidad o “Futuro”?
• Tenemos la familia denominada SHA-2 con
4 variantes:
• SHA-224 (Diggest de 256 bits/Bloque 32 bits)
• SHA-256 (Diggest de 256 bits/Bloque 32 bits)
• SHA-384 (Diggest de 512 bits/Bloque 64 bits)
• SHA-512 (Diggest de 512 bits/Bloque 64 bits)
• El 2 de Octubre de 2012, fue anunciado por
el NIST el ganador de SHA-3 conocido
como KECCAK con su familia de funciones
“esponjas”
II Navaja Negra Conference – Albacete 2012 Pedro C. (MADESYP)
52. Hash collisions: Legalidad
Legislación Española
• LFE Artículo 20 d) y e)
• LFE Artículo 18 b) 2º
II Navaja Negra Conference – Albacete 2012 Pedro C. (MADESYP)
54. Hash collisions
Welcome to the (un)real World!
PREGUNTAS
II Navaja Negra Conference – Albacete 2012 Pedro C. (MADESYP)
55. Hash collisions
Welcome to the (un)real World!
GRACIAS
PEDRO C.- MADESYP
Security Auditor & Researcher
pedroc@madesyp.com
http://www.madesyp.com
II Navaja Negra Conference – Albacete 2012 Pedro C. (MADESYP)