FUNCIONES HASH. ConfidencialidadAutenticación IntegridadNo repudio Logros de la Criptografía.

14

Transcript of FUNCIONES HASH. ConfidencialidadAutenticación IntegridadNo repudio Logros de la Criptografía.

Page 1: FUNCIONES HASH. ConfidencialidadAutenticación IntegridadNo repudio Logros de la Criptografía.
Page 2: FUNCIONES HASH. ConfidencialidadAutenticación IntegridadNo repudio Logros de la Criptografía.
Page 3: FUNCIONES HASH. ConfidencialidadAutenticación IntegridadNo repudio Logros de la Criptografía.

FUNCIONES HASH

… 0 1 1 0 0 0 1 0 0 1 1 1 0 1 0 1 1 0 …

Cadena de bits de longitud aleatoria…

0 1 1 0 1 1 0 … 1 0 1 1 1 0 1

Cadena de bits de longitud fija n (v gr 160)

HASH

ResumenHash

2-nh: Σ*Σn

Por ejemplo, la función de paridad (n = 1):b1b2…bk Є {0, 1}*: b1 b2 … bk.

h-1: ΣnΣ*

Page 4: FUNCIONES HASH. ConfidencialidadAutenticación IntegridadNo repudio Logros de la Criptografía.

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).

Page 5: FUNCIONES HASH. ConfidencialidadAutenticación IntegridadNo repudio Logros de la Criptografía.
Page 6: FUNCIONES HASH. ConfidencialidadAutenticación IntegridadNo repudio Logros de la Criptografía.

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?

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…)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?

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. RESPUESTA: P = 1 – {365! / ((365 – N)! · 365N)}.Si N = 23, P = 0.507; Si N = 100, P = 0.9999997.

Page 7: FUNCIONES HASH. ConfidencialidadAutenticación IntegridadNo repudio Logros de la Criptografía.

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.

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.

Apreciado amigo:

Esta carta es un ejemplo de cómo un espía puede capturar una carta personal mía y transformarla en 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.

Apreciado amigo:

Esta carta es un ejemplo de cómo un espía puede capturar una carta personal mía y transformarla en 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 ≥ 160Bastaría n ≥ 128; se toma n ≥ 160

210 cartas distintas, para las que calculo sus correspondientes hash. 210 cartas distintas, para las que calculo sus correspondientes hash.

La misma operación se realiza con la carta fraudulenta. 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?

Tendremos 1024 cartas “originales” y 1024 fraudulentas. Paradoja del cumpleaños… ¿Habrá dos, una de cada colección, con el mismo hash?

Page 8: FUNCIONES HASH. ConfidencialidadAutenticación IntegridadNo repudio Logros de la Criptografía.

¿Existen funciones hash resistentes a colisiones?¿Existen funciones hash resistentes a colisiones?

¿Hash resistente a Colisiones a partir de un Criptosistema seguro?... No sabemos demostrarlo.

¿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} n n ≥ 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.

ek : {0, 1}n {0, 1} n, con k Є {0, 1} n.h: {0, 1}n x {0, 1}n {0, 1} n n ≥ 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 cifradoFunción de compresión a partir de una función de cifrado

Page 9: FUNCIONES HASH. ConfidencialidadAutenticación IntegridadNo repudio Logros de la Criptografía.

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).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).

PASO 1: Preparación de la cadena.1.x’ = x << 0’s: para que longitud(x’) = k · r.2.x’’ = 0,s >> x’: se le añaden r ceros.3.l’ = l << 0’s: para que longitud(l’) = k’· (r – 1).4.l’’ = l’ con un bit 1 añadido en cada posición k · r.5.x’’’ = x’’• l’’, donde • es la concatenación.

PASO 1: Preparación de la cadena.1.x’ = x << 0’s: para que longitud(x’) = k · r.2.x’’ = 0,s >> x’: se le añaden r ceros.3.l’ = l << 0’s: para que longitud(l’) = k’· (r – 1).4.l’’ = l’ con un bit 1 añadido en cada posición k · r.5.x’’’ = x’’• l’’, donde • es la concatenación.

Sea x Є {0, 1}*, r > 1, l = longitud (x) (en binario).Sea x Є {0, 1}*, r > 1, l = longitud (x) (en binario).

Tenemos x = x1x2…xt, donde xi Є {0, 1}r, 1 ≤ i ≤ t, con xi de longitud r.Tenemos x = x1x2…xt, donde xi Є {0, 1}r, 1 ≤ i ≤ t, con xi de longitud r.

Page 10: FUNCIONES HASH. ConfidencialidadAutenticación IntegridadNo repudio Logros de la Criptografía.

PASO 2: HASH.1. H0 = 0n. (tamaño n)2. Hi = g(Hi-1 • xi), para 1 ≤ i ≤ t3. h(x) = Ht. (tamaño n)

PASO 2: HASH.1. H0 = 0n. (tamaño n)2. Hi = g(Hi-1 • xi), para 1 ≤ i ≤ t3. h(x) = Ht. (tamaño n)

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).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.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.

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.

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.

Page 11: FUNCIONES HASH. ConfidencialidadAutenticación IntegridadNo repudio Logros de la Criptografía.

Entrada x < 264 de longitud l(x)Entrada x < 264 de longitud l(x)

x ← x · 1x ← x · 1

Mientras |x| < k·512–64: x ←x · 0Mientras |x| < k·512–64: x ←x · 0

x ← x · l(x) (expresado en 64 bits)x ← x · l(x) (expresado en 64 bits)

SHA – 1SHA – 1

SHA–1 (x), de longitud 160SHA–1 (x), de longitud 160

x = 1234; l(x) = 10x = 1234; l(x) = 10

x ← 1234 1 x ← 1234 1

x ← 1234 8000 0000 … 0000

x ← 1234 8000 0000 … 0000

x ← 1234 8000…0010x ← 1234 8000…0010

SHA – 1SHA – 1

SHA-1(x): PendienteSHA-1(x): Pendiente

Page 12: FUNCIONES HASH. ConfidencialidadAutenticación IntegridadNo repudio Logros de la Criptografía.

SHA – 1: PROCESO DE RESUMEN.

Función ft(B,C,D) Ctes. kt

------------------- ----------(B^C)v(~B^D) 5A827999 para 0 ≤ t ≤ 19B C D 6ED9EBA1 para 20 ≤ t ≤ 39(B^C)v(B^D)v(C^D) 8F1BBCDC para 40 ≤ t ≤ 59B C D CA62C1D6 para 60 ≤ t ≤ 79

Valores iniciales:H0 = 67452301H1 = EFCDAB89H2 = 98BADCFEH3 = 10325476H4 = C3D2E1F0

Sk(w) = (w << k) OR (w >> (32 - k)).

Page 13: FUNCIONES HASH. ConfidencialidadAutenticación IntegridadNo repudio Logros de la Criptografía.

SHA – 1: PROCESO DE RESUMEN.

x = M1M2…Mn; Mi = W0W1W2…W15x = M1M2…Mn; Mi = W0W1W2…W15

Para t = 16 hasta t = 79: Wt = S1(Wt-3 Wt-8 Wt-14 Wt-16)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.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.

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.H0 = H0 + A; H1 = H1 + B; H2 = H2 + C; H3 = H3 + D; H4 = H4 + E.

SHA–1(x) = H0H1H2H3H4.SHA–1(x) = H0H1H2H3H4.

Para cada Mi… Para cada Mi…

Page 14: FUNCIONES HASH. ConfidencialidadAutenticación IntegridadNo repudio Logros de la Criptografía.

“Handbook of Applied Cryptography”.A.Menezes, P. van Oorschot, and S. Vanstone.B.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.

BIBLIOGRAFÍA BÁSICA