140 likes | 237 Views
FUNCIONES HASH. Cadena de bits de longitud aleatoria…. 2 -n. h: Σ * Σ n. HASH. h -1 : Σ n Σ *. Resumen Hash. Cadena de bits de longitud fija n (v gr 160). Por ejemplo, la función de paridad (n = 1): b 1 b 2 …b k Є {0, 1} * : b 1 b 2 … b k. ALGUNOS CONCEPTOS PREVIOS.
E N D
FUNCIONES HASH Cadena de bits de longitud aleatoria… 2-n h: Σ*Σn HASH h-1: ΣnΣ* Resumen Hash Cadena de bits de longitud fija n (v gr 160) Por ejemplo, la función de paridad (n = 1): b1b2…bkЄ {0, 1}*: b1 b2 … bk.
ALGUNOS CONCEPTOS PREVIOS Función de COMPRESIÓN: h: ΣmΣn, con n < m. En general hablaremos de h: DΣn. Función de UNA VÍA: Dado s ЄΣn, es difícil hallar x Є D tal que h(x) = s. COLISIÓN: Existen (x, y) Є D2 tales que h(x) = h(y). Función RESISTENTE A COLISIONES: Dado h(x), es difícil hallar x’ Є D tal que h(x’) = h(x). Función FUERTEMENTE RESISTENTE A COLISIONES: Es difícil hallar (x, y) Є D2 tales que h(x) = h(y).
PARADOJA DEL CUMPLEAÑOS PREGUNTA: ¿Cuál es la probabilidad de que en una reunión de amigos (N amigos), alguno celebre el cumpleaños el mismo día que yo? RESPUESTA: P = (N – 1) / 365. (yo no cuento…) PREGUNTA: ¿Cuál es la probabilidad de que en una reunión de amigos (N amigos), dos de ellos celebren el cumpleaños el mismo día? RESPUESTA: P = 1 – {365! / ((365 – N)! · 365N)}. Si N = 23, P = 0.507; Si N = 100, P = 0.9999997.
ATAQUE DEL CUMPLEAÑOS Estimado amigo: Esta carta es un ejemplo de cómo un atacante puede capturar una carta personal mía y transformarla en otra similar con un hash igual a un mensaje fraudulento. El ataque es válido para funciones hash que tengan una longitud de hash reducido: por ejemplo, 20. Bastaría que mi atacante tomara 2 elevado a 10 posibilidades distintas de carta personal y otras tantas de la fraudulenta y ya estaría hecho. Atentamente, Pedro. 210 cartas distintas, para las que calculo sus correspondientes hash. La misma operación se realiza con la carta fraudulenta. Tendremos 1024 cartas “originales” y 1024 fraudulentas. Paradoja del cumpleaños… ¿Habrá dos, una de cada colección, con el mismo hash? Apreciado amigo: Esta carta es un ejemplo de cómoun espía puede capturar una carta personal mía y transformarlaen otra parecida con un Hash igual a un mensaje fraudulento. El ataque es válido para funciones Hash que tengan una longitud de hash pequeño: por ejemplo, 20. Bastaría que el atacante tomara 2elevado a 10 posibilidades diferentes de carta personal y otras tantas de la fraudulenta y ya estaría terminado. Afectuosamente, Pedro. Bastaría n ≥ 128; se toma n ≥ 160
VARIAS PROPIEDADES ¿Existen funciones hash resistentes a colisiones? ¿Hash resistente a Colisiones a partir de un Criptosistema seguro?... No sabemos demostrarlo. ek : {0, 1}n {0, 1} n, con k Є {0, 1} n. h: {0, 1}n x {0, 1}n {0, 1} nn ≥ 128 (DES excluido). h(k, x) = ek(x) x. h(k, x) = ek(x) x k. h(k, x) = ek(x k) x. h(k, x) = ek(x k) x k. Función de compresión a partir de una función de cifrado
Construir HASH (h : {0, 1}* {0, 1} n) a partir de f. de COMPRESIÓN (g: {0, 1}m {0, 1} n, r = m – n > 0). Sea x Є {0, 1}*, r > 1, l = longitud (x) (en binario). • PASO 1: Preparación de la cadena. • x’ = x << 0’s: para que longitud(x’) = k · r. • x’’ = 0,s >> x’: se le añaden r ceros. • l’ = l << 0’s: para que longitud(l’) = k’· (r – 1). • l’’ = l’ con un bit 1 añadido en cada posición k · r. • x’’’ = x’’• l’’, donde • es la concatenación. Tenemos x = x1x2…xt, donde xiЄ {0, 1}r, 1 ≤ i ≤ t, con xi de longitud r.
Construir HASH (h : {0, 1}* {0, 1} n) a partir de f. de COMPRESIÓN (g: {0, 1}m {0, 1} n, r = m – n > 0). Tenemos x = x1x2…xt, donde xiЄ {0, 1}r, 1 ≤ i ≤ t, con xi de longitud r y cada Hi-1 • xi de longitud n + r = m. • PASO 2: HASH. • H0 = 0n. (tamaño n) • Hi = g(Hi-1 • xi), para 1 ≤ i ≤ t • h(x) = Ht. (tamaño n) v.gr.: x = 111011; r = 4. x’’’ = 0011 1011 0000 1110. A esa cadena se le puede aplicar un algoritmo de compresión creado a partir del DES reducido.
SHA – 1: PREPARACIÓN DE LA ENTRADA. Entrada x < 264 de longitud l(x) x = 1234; l(x) = 10 x ← x · 1 x ← 1234 1 x ← 1234 8000 0000 … 0000 Mientras |x| < k·512–64: x ←x · 0 x ← x · l(x) (expresado en 64 bits) x ← 1234 8000…0010 SHA – 1 SHA – 1 SHA–1 (x), de longitud 160 SHA-1(x): Pendiente
SHA – 1: PROCESO DE RESUMEN. Función ft(B,C,D) Ctes. kt ------------------- ---------- (B^C)v(~B^D) 5A827999 para 0 ≤ t ≤ 19 B C D 6ED9EBA1 para 20 ≤ t ≤ 39 (B^C)v(B^D)v(C^D) 8F1BBCDC para 40 ≤ t ≤ 59 B C D CA62C1D6 para 60 ≤ t ≤ 79 Valores iniciales: H0 = 67452301 H1 = EFCDAB89 H2 = 98BADCFE H3 = 10325476 H4 = C3D2E1F0 Sk(w) = (w << k) OR (w >> (32 - k)).
SHA – 1: PROCESO DE RESUMEN. x = M1M2…Mn; Mi = W0W1W2…W15 Para cada Mi… Para t = 16 hasta t = 79: Wt = S1(Wt-3 Wt-8 Wt-14 Wt-16) Inicializamos: A = H0; B = H1; C =H2; D = H3; E = H4. Para t = 0 hasta t = 79: T = S5(A) + ft(B, C, D) + E + Wt + Kt; E = D ; D = C; C = S30(B); B = A ; A = T. H0 = H0 + A; H1 = H1 + B; H2 = H2 + C; H3 = H3 + D; H4 = H4 + E. SHA–1(x) = H0H1H2H3H4.
BIBLIOGRAFÍA BÁSICA • “Handbook of Applied Cryptography”. • Menezes, P. van Oorschot, and S. Vanstone. • CRC Press, Inc. 1997. • “Cryptography and Network Security. Principles and practices”. • William Stallings. • Prentice Hall. Pearson Education. Third edition. 2003. • “Introduction to Cryptography”. • Johannes A. Buchmann. • Springer Verlag, 2004. Second Edition.