Este documento discute las funciones hash y el algoritmo SHA-1 en particular. Explica cómo funcionan las funciones hash, las propiedades de SHA-1 como algoritmo hash de 160 bits, y cómo se calcula el hash SHA-1 de un mensaje. También resume algunos problemas con SHA-1 como ataques de colisión y cumpleaños que han llevado a que ya no se considere seguro para algunos usos.
4. ¿Qué es una función hash?
H ∶ {0, 1} ∗ → {0, 1} n
5. ¿Qué es una función hash?
● Son funciones con un sentido único
● Se puede tomar un mensaje y calcular un valor
de hash, pero no se puede tomar un valor hash
y recrear el mensaje original.
● Es (debería ser) libre de colisión
6. Propiedades de las funciones de Hash
1.Tamaño de mensaje arbitrario
2.Largo de salida fijo
3.Eficiencia (debe ser fácil de computar)
4.Resistencia a preimagen (one-wayness)
5.Resistencia a la segunda preimagen (colisión débil)
6.Resistencia a coliciones (colisión fuerte)
7. Propiedades de las funciones de Hash
Resistencia a
preimagen
(one-wayness)
Resistencia a
segunda
preimagen
(colisión débil)
Resistencia a
colisiones
(colisión fuerte)
8. Construcción de Hash
Cifrado en bloque Funciones de Hash dedicadas
SHA-3Familia MD4
• MD5
• SHA-1
• SHA-2
Otros
Variables de 32-bit y operaciones AND, OR, XOR y negación
9. Historia
MD4 en 1990
MD5 en 1992
SHA-1 en 1995 (NIST Standard)
SHA-1 deprecado por el NIST en 2011
10. Algoritmo Outbut(bit) Input(bit) # of rounds Colisiones
MD5 128 512 64 Si
SHA-1 160 512 80 Si
SHA-224 224 512 64 No
SHA-256 256 512 64 No
SHA-384 384 1024 80 No
SHA-512 512 1024 80 No
11. ¿Qué es SHA-1?
Es una función que convierte un mensaje de
entrada en una cadena de salida de longitud
constante de 160 bits.
Actúa como una huella digital criptográfica
única para ese mensaje.
22. ¿Cómo funciona SHA-1?
1. a) Se incorporan bits de relleno al
mensaje de entrada (Debe cumplir
con longitud=448 mod 512)
23. ¿Cómo funciona SHA-1?
1. b) El relleno consiste en un uno
seguido de los ceros que sean
necesarios. (Aunque tenga la longitud deseada,
se debe efectuar el relleno, el número de bits de relleno
está en el rango de 1 a 512 bits.)
24. Ejemplo: SHA-1(Andsec2017)
A n d s e c
01000001 01101110 01100100 01110011 01100101 01100011
2 0 1 7
00110010 00110000 00110001 00110111 1
28. ¿Cómo funciona SHA-1?
3.a) Se inicializa la memoria temporal
que consta de 160 bits y su finalidad es
almacenar los resultados intermedios y
finales de la función de dispersión.
29. ¿Cómo funciona SHA-1?
3.b) La memoria temporal
consta de 5 registros
(A,B,C,D,E) de 32 bits cada
uno.
A=67452301
B=EFCDAB89
C=98BADCFE
D=10325476
E= C3D2E1F0
30. ¿Cómo funciona SHA-1?
4. a) Se procesa el mensaje por bloques
de 512 bits. Luego por 4 rondas de
procesamiento de 20 pasos cada una,
cada una ocupa una función lógica
primitiva diferente (f1, f2, f3 y f4).
34. Valores Iniciales A B C D E
t = 0 67452301 EFCDAB89 98BADCFE 10325476 C3D2E1F0
Primera Vuelta:
F(B, C, D) = (B and C) or ((not B) and D)
A´= E + F(B, C, D) + (A <<< 5) + M[i] + K[j]
E´= D; D´= C; C´= (B <<< 30); B´= A
A = 01100111010001010010001100000001 = 67452301
B = 11101111110011011010101110001001 = EFCDAB89
C = 10011000101110101101110011111110 = 98BADCFE
D = 00010000001100100101010001110110 = 10325476
E = 11000011110100101110000111110000 = C3D2E1F0
35. 10001000100010001000100010001000 = (B and C)
OR 00010000001100100101010001110110 = ((not B) and D)
10011000101110101101110011111110 = F(B, C, D)
11000011110100101110000111110000 = Valor de E
11101000101001000110000000101100 = A rotado a izq. 5 bits
01000001011011100110010001110011 = Palabra 1 del bloque 1
+ 01011010100000100111100110011001 = Constante 5A827999
11100001001000101111110100100110
11100001001000101111110100100110 Es ahora la palabra A
La palabra D pasa a ocupar el lugar de E
La palabra C pasa a ocupar el lugar de D
La palabra B rotada 30 posiciones a la izquierda:
01111011111100110110101011100010 Es ahora la palabra C
La palabra A pasa a ocupar el lugar de B
Salida: t = 1 E122FD26 67452301 7BF36AE2 98BADCFE 10325476
36.
37. ¿Cómo funciona SHA-1?
4. b) La entrada a cada ronda consta del
bloque de 512 bits que se esté
procesando (Yq) y los 160 bits de la
memoria MD, cada bloque de 512 bits
actualizará el valor de la memoria
temporal.
38. ¿Cómo funciona SHA-1?
4. c) Cada ronda también hace uso de la
constante aditiva Kt, donde t indica uno
de los 80 pasos a lo largo de las cuatro
rondas
39. Cálculo previo de una palabra a partir del bloque 1:
Palabra generada paso 80 = (XOR de las cuatro palabras usadas
en los pasos 80-3, 80-8, 80-14 y
80-16) rotado a la izquierda 1 bit
10010001101011111010010010111001 = Generada en paso 77
11011000000110101010111100010011 = Generada en paso 72
10111100101101010100101111101001 = Generada en paso 66
XOR 10000111010110000110111111101011 = Generada en paso 64
------------------------------------
01110010010110000010111110101000 Se rotará 1 bit a la izq.
------------------------------------
11100100101100000101111101010000 = Palabra para este paso
00110110010111110100000001010111 = B
00101100100001101101100101000111 = C
XOR 01100001001000001100101111000100 = D
------------------------------------
40. 01111011111110010101001011010100 = I(B, C, D)
10100000001001001000011001110000 = Valor de E
11011010000011010110001010001111 = A rotado a izq. 5 bits
11100100101100000101111101010000 = Palabra generada
+ 01011010100000100111100110011001 = Constante CA62C1D6
------------------------------------
10100101001111100101110011111001
------------------------------------
10100101001111100101110011111001 Es ahora la palabra A
La palabra D pasa a ocupar el lugar de E
La palabra C pasa a ocupar el lugar de D
La palabra B rotada 30 posiciones a la izquierda:
11001101100101111101000000010101 Es ahora la palabra C
La palabra A pasa a ocupar el lugar de B
Salida: t = 80 A53E5CF9 7ED06B14 CD97D015 2C86D947 6120CBC4
41. ¿Cómo funciona SHA-1?
5. Una vez que se procesan los bloques
de 512 bits, el resumen del mensaje son
los 160 bits de salida del último bloque.
42. Actualización final
(valores iniciales + valores paso 80)
67452301 EFCDAB89 98BADCFE 10325476 C3D2E1F0
+ A53E5CF9 7ED06B14 CD97D015 2C86D947 6120CBC4
0C837FFA 6E9E169D 6652AD13 3CB92DBD 24F3ADB4
El valor del hash para “Andsec2017” es:
0C837FFA6E9E169D6652AD133CB92DBD24F3ADB4
53. Ataque de cumpleaños
Buscar una colisión para una función
hash de 80 bits con un 50% de
probabilidad de éxito, necesitaría esta
cantidad de hashes:
55. Ataque de cumpleaños
Si la probabilidad de encontrar una
colisión la denotamos:
Como t
es mayor
que 1
56. Ataque de cumpleaños
Buscar una colisión para una función
hash de 80 bits con un 50% de
probabilidad de éxito, necesitaría esta
cantidad de hashes:
61. Algunos Problemas
4. SHAppening
• Selección del vector de disturbio
• Encontrar condiciones optima para el ataque
• Encontrar y analizar boomerangs y bits neutrales
• Generar la base de la solución
• Neutral bits y bumerang enviados a GPU
72. En 2012 Bruce Schneier reportó los cálculos del
investigador Jesse Walker con el costo estimado de realizar
un ataque de colisión SHA-1
La estimación de Walker sugirió entonces que una
colisión SHA-1 costaría $ 2 millones en 2012, $ 700,000
en 2015, $ 173,000 en 2018 y $ 43,000 en 2021.
https://www.entrust.com/understanding-sha-1-vulnerabilities-ssl-longer-secure/
https://www.schneier.com/blog/archives/2012/10/when_will_we_se.html
¿Cuánto cuesta?
74. ¿Cuál es el drama?
El código fuente usado para el
ataque de colisión se publicaría a
los 90 días de la publicación de
Google por su política de disclosure.
https://security.googleblog.com/2015/02/feedback-and-data-driven-updates-to.html
75. ¿Cuál es el drama?
Git comprueba la integridad de los
datos en cada push
SVN, etc, etc