15
15
15
Este archivo forma parte de un curso completo sobre Seguridad Informática y Criptografía. Se autoriza el uso,
reproducción en computador y su impresión en papel, sólo con fines docentes y/o personales, respetando los
créditos del autor. Queda prohibida su comercialización, excepto la edición en venta en el Departamento de
Publicaciones de la Escuela Universitaria de Informática de la Universidad Politécnica de Madrid, España.
Funciones hash
Mensaje = M Función Resumen = h(M)
Firma (rúbrica): r = EdE{h(M)}
dE es la clave privada del emisor que firmará h(M)
¿Cómo se comprueba la identidad en destino?
Se descifra la rúbrica r con la clave pública del
emisor eE. Al mensaje en claro recibido M’ (si
viniese cifrado, se descifra) se le aplica la misma
función hash que en emisión. Si los valores son
iguales, la firma es auténtica y el mensaje íntegro:
Calcula: EeE(r) = h(M) ¿Qué seguridad nos da
Compara: ¿h(M’) = h(M)? un resumen de k bits?
http://userpages.umbc.edu/~mabzug1/cs/md5/md5.html
Etapas de MD5
http://www.faqs.org/rfcs/rfc1321.html
Y1 Y2 Yq YL-1
RESUMEN
HMD5 HMD5 HMD5 HMD5 de 128 bits
ABCD Primer resumen
F (x, y, z) F (b, c, d)
(x AND y) OR (NOT x AND z) (b AND c) OR (NOT b AND d)
G (x, y, z) G (b, c, d)
(x AND z) OR (y AND NOT z) (b AND d) OR (c AND NOT d)
H (x, y, z) H (b, c, d)
x XOR y XOR z b XOR c XOR d
I (x, y, z) I (b, c, d)
y XOR (x OR NOT z) c XOR (b OR NOT d)
1ª Vuelta:
FF(a,b,c,d,Mj,tj,s) a = b + ((a + F(b,c,d) + Mj + tj) <<< s)
2ª Vuelta:
GG(a,b,c,d,Mj,tj,s) a = b + ((a + G(b,c,d) + Mj + tj) <<< s)
3ª Vuelta:
HH(a,b,c,d,Mj,tj,s) a = b + ((a + H(b,c,d) + Mj + tj) <<< s)
4ª Vuelta:
II(a,b,c,d,Mj,tj,s) a = b + ((a + I(b,c,d) + Mj + tj) <<< s)
Segunda vuelta
FF(b, c, d, a, M7, FD469501, 22) GG(b, c, d, a, M4, E7D3FBC8, 20)
Primera vuelta
Cuarta vuelta
HH(a, b, c, d, M13, 289B7EC6, 4) II(a, b, c, d, M8, 6FA87E4F, 6)
HH(d, a, b, c, M0, EAA127FA, 11) II(d, a, b, c, M15, FE2CE6E0, 10)
HH(c, d, a, b, M3, D4EF3085, 16) II(c, d, a, b, M6, A3014314, 15)
HH(b, c, d, a, M6, 04881D05, 23) II(b, c, d, a, M13, 4E0811A1, 21)
HH(a, b, c, d, M9, D9D4D039, 4) II(a, b, c, d, M4, F7537E82, 6)
HH(d, a, b, c, M12, E6DB99E5, 11) II(d, a, b, c, M11, BD3AF235, 10)
HH(c, d, a, b, M15, 1FA27CF8, 16) II(c, d, a, b, M2, 2AD7D2BB, 15)
HH(b, c, d, a, M2, C4AC5665, 23) II(b, c, d, a, M9, EB86D391, 21)
Suma
Véase la próxima diapositiva...
+ mod 232
http://www.algoritmia.net/articles.php?id=57
http://www.schneier.com/blog/archives/2005/02/cryptanalysis_o.html
Cuestiones y ejercicios
1. ¿Qué propiedades debe tener una función hash para que su uso en
criptografía sea de interés? ¿Vale cualquier función reductora?
2. ¿Por qué prospera un ataque basado en la paradoja del cumpleaños
con un tiempo significativamente menor que un ataque elemental?
3. Se va a aplicar la función MD5 a un mensaje de longitud 250 bytes.
¿Cómo se rellena y cómo queda el último bloque?
4. ¿Por qué razón decimos que la función SHA-1 es actualmente un
estándar más seguro que la función MD5? ¿Es seguro hoy SHA-1?
5. ¿Cómo puede la función SHA-1 hacer 80 vueltas con bloques de 32
bits partiendo de un bloque de texto o mensaje de sólo 512 bits?
6. ¿Qué función hash es más rápida, MD5 o SHA-1? ¿Por qué?
7. Si en un mensaje cambiamos un bit, ¿en cuánto debería cambiar su
hash aproximadamente con respecto a su resumen anterior?