Você está na página 1de 31

FUNCIONES DE SENTIDO ÚNICO Y

FUNCIONES HASH
Índices y Tablas Hash
Una función hash:
– Comprime un vector de longitud arbitraria en un
vector de longitud fija. Clave 1
– Ubica uniformemente en la tabla los índices de las Clave 2
claves (barajar).
Clave 3
• Compara la identidad de dos secuencias sin tener Clave 4
que comparar elemento a elemento. Clave 5 H
• Una tabla hash es una estructura de datos que Clave 6
utiliza una función hash para eficientemente ....
relacionar ciertos identificadores o claves a
valores asociados con ellos.
• Colisiones = pares de entradas diferentes que
dan el mismo valor hash. H
• En una tabla hash el coste medio (número de
comparaciones) para cada búsqueda es =
independiente del número de elementos =
almacenados en la tabla.
– En muchos casos, las tablas hash resultan ser mas H
eficientes que los árboles de búsqueda o cualquier
otra solución de búsqueda/consulta.
Funciones Hash Criptográficas
Son funciones fáciles de calcular en un sentido,
e imposibles de calcular en el sentido contrario.

Según el tipo de propiedades que se exijan, las funciones hash


reciben distintos nombres:
– OWHF: One Way Hash functions.
– CRHF: Collision Resistant hash functions (CRHF son mejores que
OWHFs).
– CFHF: Collision Free hash functions ( colisiones, pero son difíciles de
encontrar).
– UOWHF: Universal One Way functions (funciones hash elegidas al
azar dentro de una familia de funciones por lo que no hay ventaja en encontrar
soluciones a una función).

No se ha podido demostrar que existan funciones de sentido


único, ni hay evidencias reales de que puedan construirse.
Quimera
CRHF: Funciones Resistentes a Colisiones

Son aquellas funciones que cumplen lo siguiente:


- La descripción de H( ) debe ser pública y no ¿?
requiere ninguna información secreta. ¿?
- El argumento x puede ser de longitud arbitraria y el
resultado, H(x), debe ser de longitud fija con n bits H H
(n > 160).
- Dados H( ) y su argumento x, el cálculo de H(x)
debe ser fácil (complejidad polinómica).
- La función debe ser de Sentido Único.
¿? ¿?

- Debe ser Resistente a colisiones; encontrar dos


mensajes distintos, x y x’, que tengan el mismo valor H
hash H(x) = H (x’), debe ser difícil.
Definiciones de Seguridad
Problema Difícil (T. Complejidad):
– El número de operaciones debe
40 bits
ser super-polinómico
(exponencial) con el tamaño de la
salida.

Seguridad Ideal: 80 bits


– Producir una segunda pre-imagen
(x’) debe requerir, al menos, 2n
operaciones.
Independientemente
de lo buena que sea
Computacionalmente Seguro: la función hash, el
riesgo de que le
– Aunque el orden del ataque sea encuentren
menor que O(2n), su magnitud lo colisiones depende
hace imposible de realizar con las
capacidades de cálculo actuales.
160 bits X de la longitud de su
resultado.
Ataques a una Función Hash
¿?
Ataque Directo:
Consiste en invertir la función H( )
obteniendo H-1( ). H H-1
H-1( ) es una función multi-valuada; para
una entrada da varias posibles salidas
(colisiones de H( )).

Ataque Progresivo: xj x’j


Siempre se puede sustituir xj por x’j de
manera que ambas cadenas se reúnan
más adelante.
Ataques a una Función Hash
Ataque Regresivo:
Dado Hi consiste en producir un par (X’i,
Hi-1) tal que h(Xi, Hi-1) = Hi ;

Son Ataques por Coincidencia Intermedia.

Ataque por Punto Fijo:

Aquellos basados en la existencia


de puntos h(Xi, Hi-1) = Hi-1.
La igualdad se puede dar después de
R=4
R iteraciones de la función.
Búsqueda de Colisiones
Dada una función hash H( ), con m posibles
salidas y un valor específico de salida H(x), si se
aplica H( ) a k entradas elegidas al azar…

¿Cuál debe ser el valor de k de modo


que la probabilidad de encontrar un
entrada y que satisfaga H(y) = H(x) sea
mayor que 0,5?

• Para un único valor de y, la probabilidad de que H(y) = H(x) es de 1/m, y la


probabilidad de que no sean iguales es 1 - 1/m
• Si generamos k valores al azar, la probabilidad de que ninguno de ellos sea
una colisión es el producto de sus probabilidades individuales de no colisión
[1 - 1/m]k.
• La probabilidad de que haya coincidencia será

1 - [1 - 1/m]k
Búsqueda de Colisiones

El desarrollo del binomio da: Para un hash de 128 bits,


k (k  1) 2 k (k  1)(k  2) 3 encontrar una colisión con
(1  a ) k  1  ka  a  a  un valor específico requiere
2! 3!
2127 operaciones de la
función hash.
Para valores de a pequeños, el desarrollo se
puede truncar en (1 – k·a).
Así la probabilidad de al menos una colisión sería
1-[1-1/m]k  1 - [1 - k/m] = k/m;
1
para a = 0,5  k = m/2.

Para un valor hash de n bits, los posibles H H


.....
resultados son 2n y el valor de k con probabilidad
0,5 es =
2127 128 bits
k= 2(n-1)
Si
Paradoja del Cumpleaños
¿Cual es el menor grupo de personas, con
k elementos, tal que la probabilidad de que
dos de ellas tengan el mismo día de
cumpleaños, sea mayor del 50%?

• Es fácil deducir la probabilidad de que no haya dos cumpleaños iguales


Q(n,k);
– La primera elección tiene n posibilidades, la siguiente n-1, la siguiente n-
2 y así sucesivamente, luego: N(k) = n! / (n-k)!
– Si eliminamos la restricción de que no haya duplicados, el número total
de posibilidades es N(k) = nk.
– La fracción de posibilidades de elección que no tiene duplicados es el
cociente de las dos anteriores:
Q(n,k) = n!/(n-k)!·nk
• Por lo que la probabilidad de que haya un coincidencia es:
P(n,k) = 1 - Q(n,k) = 1 - n!/(n-k)!·nk
Paradoja del Cumpleaños
n!
P (n, k )  1  Paradoja del Cumpleaños n = 365
(n  k )!n k
 n  1  n  2   n  k  1  1,00
P (n, k )  1     
 n  n   n  0,80

Dado que (1 - x)  e-x para todo x 

Probabilidad
0,60
0, entonces....

 
0,40
P (n, k )  1  e 1 / n
e e
2 / n   k 1 / n
0,20
1 / n  ( 2 / n )  )) k 1) / n ) 
P (n, k )  1  e
0,00
 k ( k 1) / 2 n
P (n.k )  1  e 1 5 10 15 20 25 30 35 40 45 50 55 60 65 70

Personas

Con sólo 23 personas ya hay una


probabilidad superior al 50% de que dos
de ellas tengan el mismo día de
cumpleaños.
Construcción de una Función Hash
• Todas las funciones Hash o MAC se basan en una IV
Función de Compresión con entrada de longitud fija, que
procesa bloques sucesivos del mensaje.
• El mensaje se divide en bloques y se procesa.
• Siempre se especifica un procedimiento de extensión.

Mensaje Padding

·····

Bloque de Variable de
n m-bits
Mensaje Encadenamiento

m - bits Resumen
Reglas de Extensión de Mensajes

Mensaje
1. Completar el bloque con ceros
- Es ambiguo ya que no se sabe cuantos
ceros provienen del mensaje y cuantos
Mensaje Extendido
de extensión.
- Es aceptable si se conoce la longitud 0000............0
original del mensaje.

1. Un uno seguido de ceros, tantos como sean 1000.............0


necesarios.
100....0 r.....r
2. Un uno seguido de z ceros excepto en los r Longitud del
bits finales donde se guarda la mensaje en bits

representación binaria de la longitud en bits


del mensaje original. Mayor seguridad
Autenticación de Mensajes

• Identification Friend or Foe (IFF) es una identificación


criptográfica diseñada para el mando y control de ejércitos.
• Es un sistema que permite, mediante sistemas de
interrogación distinguir aviones, vehículos o tropas amigas,
así como determinar su posición y distancia hasta el
interrogador.
• IFF fue desarrollado durante la WW II.
• Sólo puede identificar vehículos amigos, pero no hostiles.
– Hay varias razones para no contestar a una IFF por una nave
amiga: daños en batalla, pérdida de claves o claves Foto del 25 de Mayo de 1953 con la detonación de
criptográficas incorrectas, fallo general del equipo, etc. una carga nuclear (15 kT) lanzada por un cañón
(Operación Upshot Knothole, aka Grable).
MAC: Códigos de Autenticación de Mensajes
• La inclusión de parámetros secretos en una función hash la IV
convierte en un MAC.
• Los MACs son mecanismos de autenticación basados en
F
clave simétrica.
• La clave secreta debe estar involucrada al principio y al final Mensaje
del cálculo del MAC. H
• Se recomienda que el calculo de la función de etapa dependa
de la clave secreta.
H K

F
No Dispares. No Dispares.
Soy Amigo!!! Soy Amigo!!!

K MAC K MAC MAC = H(IV,K,M)

=
El Algoritmo MD4
• MD4 fue diseñada por Ron Rivest en 1990 (RFC1186 y RFC1320). MD4 ("") =
• Produce un resultado hash de 128 bits. 31D6CFE0D16AE931
• Es una función rápida en software ya que se basa en B73C59D7E0C089C0
operaciones sencillas de manipulación de bits sobre operandos
de 32 bits.
• Esta optimizada para las arquitecturas de los procesadores de
la década de los 90.
• En 1991 y sin dar razones para ello, Ron Rivest mejoró MD4
aumentando su resistencia y lo llamó MD5. MD4 MD5
Ataques:
• Bert den Boer y Antoon Bosselaers criptoanalizaron con éxito las dos últimas etapas
de las tres que componen el algoritmo (Crypto91 pp 194-203).
• Ralph Merkle atacó con éxito las dos primeras etapas.
• Eli Biham aplicó el Criptoanálisis Diferencial a dos tercios del MD4 (1992).
• El primer ataque con éxito a la versión completa lo hace Hans Dobbertin en 1996.
• En agosto de 2004, Wang et alt. encuentra un modo de ataque muy eficiente, que
luego generalizan para otros diseños relacionados (MD5/SHA/RIPEMD).
• Este resultado fue mejorado mas tarde por Sasaki et al. y, actualmente, generar una
colisión con MD4 es tan sencillo como verificarla (microsegundos).
La función de compresión en MD4
• Cada etapa consta de tres etapas 01234567 89ABCDEF FEDCBA98 76543210
IV
intermedias distintas: F, G y H.
• Cada una de ellas es una combinación no
lineal de las variables de encadenamiento,
el bloque de texto y ciertas constantes
públicas. Función F

16 palabras de 32 bits
• El resultado de las tres etapas se suma al
valor de entrada de las variables de
encadenamiento; este es el origen de su
Función G
“sentido único”.

x
m Función H
x + fm(x) = k
F f(x) = k – x
+ + + +
+ x = fm-1(k - x)
k
Funciones F, G y H en MD4
¿Son
Reversibles?
Mi,k A B C D

+ F

16 veces
<<
F
G + 5A827999

• La función de etapa tiene la misma estructuras en los


 tres casos.
• Las tres utilizan los mismos 16 bloques de mensaje
+ 6ED9EBA1
pero en ordenes distintos (Mi,j).
H • Las rotaciones S son distintas en cada caso.
La función de compresión en MD5

• La etapa consta de cuatro etapas


internas distintas: F, G, H e I.

• Las tres primeras etapas intermedias Función F


utilizan combinaciones no lineales
análogas a las del MD4.

16 palabras de 32 bits
Función G
• Se utilizan 16 constantes públicas
distintas en todas las etapas internas.
Función H
• El resultado de las tres etapas se suma al
valor de entrada de las variables de
encadenamiento y este es el origen de su Función I
“sentido único”.
+ + + +
MD5 ("") =
D41D8CD98F00B204
E9800998ECF8427E
Funciones internas del MD5
¿Son
Reversibles?
S = [S1,S2,S3,S4]

Mi,k A B C D
Si

+ 
16 veces
<<
+ TFk + TGk
F G
+

 
+ TIk MD5 utiliza, en lo esencial, la misma
I estructura y funciones que MD4, pero
+ THk incluye una adición mas para aumentar
H la difusión en cada etapa.
SHA1 ("") =
DA39A3EE5E6B4B0D3255
BFEF95601890AFD80709 La Función Hash SHA
• Diseñada por el NIST con la participación de la
National Security Agency (NSA).
• Se considera parte del Digital Signature Algorithm
Función F1
(DSA) y es necesaria para la seguridad de éste.

80 palabras de 32 bits
• Es semejante al MD4 y MD5 pero produce 160 bits
de salida en lugar de 128. Función F2
• Sigue el mismo procedimiento de extensión de
mensajes que en el MD5. Función F3

Las 16 palabras de 32 bits Bloque (512 bits) Función F4


(M0,...,M15) se expanden a
80 palabras (W0,...,W79).
+ + + + +
Wt-16 Wt-14 Wt-8 Wt-3 Wt
··· ··· ··· ··· ··· ··· C C

  

Función Expansiva Bloque Expandido (2.560 bits)


Funciones internas de SHA
¿Son
Reversibles?

Wi A B C D E
Ki
<< 5 +

 +
20 veces +
F2
F3 F1 F4 I = 60-79
<< 30
I = 40-59
I = 0-19 I = 20-39

- Utiliza las mismas funciones que MD4.


K0-19 = 5A827999
- Elimina las constantes públicas de la definición de las
K20-39 = 6ED9EBA1
funciones combinatorias.
K40-59 = 8F1BBCDC
- Incluye nuevas constantes Ki a las que no se le ha dado K60-79 = CA62C1D1
ninguna explicación.
Funciones Hash disponibles
Muy utilizadas: MD5, SHA-1 y SHA-2
Otras funciones SHA-3, GOST, HAS-160, HAVAL, LM hash, MDC-2, MD2,
publicadas: MD4, N-Hash, RadioGatún, RIPEMD, Snefru, Tiger,
WHIRLPOOL, crypt(3) DES
Algoritmos MAC: DAA, CBC-MAC, HMAC, OMAC/CMAC, PMAC, UMAC,
Poly1305-AES,
Modos de Cifrado CCM, CWC, EAX, GCM, OCB
Autenticado:
Ataques Ataque por colisiones, Paradoja Cumpleaños, Ataque pre
generales: imagen, Rainbow tables, Side Channel Attacks, Ataque por
Fuerza Bruta.

• Aunque no son pocas las posibilidades, realmente sólo se


utilizan la función SHA-1 y las SHA-2.
• Todas esas funciones tienen el mismo diseño esencial, un
mismo origen.
Decadencia del MD5
– MD5 fue diseñada por Ron Rives en 1991 para sustituir a la
función MD4.
– En 1996 se encontró un importante error de diseño (Dobbertin).
– El tamaño del hash es suficientemente pequeño para contemplar
un ataque por la paradoja del cumpleaños (264 pruebas).
– La aplicación MD5CRK se distribuyó como un único proyecto en
marzo de 2004 par demostrar la debilidad del MD5.
– MD5CRK lo consiguió poco antes del 17 de agosto de 2004,
cuando se publicaron colisiones para la función MD5 completa por
X. Wang, D. Feng, X. Lai y H Yu. El ataque requería una hora en
un clúster IBM p690
– El 1 de Marzo de 2005, A. Lenstra, X. Wang y B. Weger
demostraron la construcción de dos certificados x509 con
diferentes claves públicas y el mismo hash MD5 hash.
– Pocos días después, V. Klima describió un algoritmo mejorado, capaz
de construir colisiones MD5 en pocas horas y en un único portátil.
– El 18 de Marzo de 2006, V. Klima publicó un algoritmo que
encuentra colisiones en menos de un minuto en un portátil
utilizando la técnica denominada de “tunneling”.
La Familia SHA-2
Wt Kt

• SHA-224, SHA-256, SHA-384 y SHA-512.


+
A B C D E F G A
• Publicadas en 2002 como FIPS PUB 180-2.
• En febrero de 2004, se incluyó la variante Ch +
SHA-224 (para ajustarse a dos claves de 3DES con dos
claves)
1 +
+
• Esta familia está patentada (US Pat 6.829.355) Ma +
pero son royalty free. 0 +
• SHA-256 y SHA-512 son nuevas funciones
calculadas con palabras de 32- y 64-bit A B C D E F G A
respectivamente.

• Utilizan diferentes cantidades de desplazamiento y distintas constantes aditivas, pero


sus estructuras son idénticas, y sólo se distinguen en el número de etapas.
• SHA-224 and SHA-384 son versiones truncadas de las dos anteriores, y utilizan
distintos valores iniciales.
Paradigma Davis-Meyer

• Propuesto independientemente por Davies y Meyer mi Hi-1


• Es el paradigma mas utilizado en funciones hash para
conseguir la irreversibilidad de la función de
compresión. E
• Consiste en combinar reversiblemente un valor con el
que se obtiene a través de una función reversible que
sea suficientemente compleja y no lineal. 
• Los bits a “digerir” actúan como “clave” seleccionando
la función no lineal que se utiliza en cada caso. Hi
• En muchos casos, la función utilizada es un cifrador
simétrico de bloques. Tiene Puntos Fijos
fáciles de calcular.
Problema: encontrar h tal
La resistencia frente a la obtención de colisiones que Em(h)  h = h;
depende de la “confusión” que aporte la función Solución: hacer h = Em-
no lineal empleada. 1(0)
Paradigma Merkle-Damgård
• Su objetivo es obtener una función que pueda
procesar mensajes de cualquier longitud. IV
• Es la base de prácticamente todas las funciones hash m0
iteradas que se utilizan en la actualidad. F

Paradigma Merkle-Damgård
• Consiste en la iteración de una función de compresión m1
cuya entrada es mas grande que su salida. F
• El resumen de salida y la “memoria” de esta
construcción, depende del tamaño de la variable de
encadenamiento. mn
• Esta construcción no aporta ninguna característica de F
seguridad a la función hash.
• El paradigma Merkle-Damgård, “despilfarra” por
diseño.
– Después de haber trabajado en cada etapa el hash de cada
bloque de mensaje, por diseño, se desprende de todo el H(m)
estado interno desarrollado y se queda sólo con el resumen
de salida como variable de encadenamiento para la próxima
iteración.
Estado actual de las Funciones Hash

• Las funciones hash son esenciales en Firma


Digital y en protocolos de Autenticación
• Las funciones conocidas se agotan.
• Las antiguas están superadas: MD4, MD5, SHA-
0,1 (Agosto 2004).

SHA-1 ha caducado en enero 2010.

• Las nuevas SHA-2 (224, 256, 384 y 512 bits) aguantan


un tiempo, pero tienen el mismo diseño que las
anteriores.
• Los paradigmas de Davis-Meyer y Merkle-
Damgård hay que ponerlos en tela de juicio.
Las nuevas Funciones Hash

• En enero de 2007 el NIST lanza la Candidatos 1ª Ronda


Cryptographic Hash Algorithm Competition. Abacus Hamsi Swifftx
EnRUPT SHAvite-3 DCH
Luffa
• Es un concurso publico para desarrollar un SANDstorm Boole
Tangle
nuevo algoritmo hash para firmas digitales, ARIRANG JH Dynamic SHA
autenticación de mensajes y otras Essence SiMD Lux
Sarmal Cheetah Tib3
aplicaciones. Dynamic SHA2
Aurora Keccak
FSB Skein MCSSHA-3
• Es la respuesta a los avances Sgàil CHI Twister
criptoanalíticos del último quinquenio. Echo
Blake Khichidi-1 MD6
Fugue Spectral Hash Vortex
• El algoritmo ganador será conocido como Shabal Crunch Ecoh
“SHA-3” a mediados de 2012. Blender Lane MeshHash
Grøstl StreamHash WaMM
Edon-R
• Se presentaron 64 funciones candidatas SHAmata CubeHash
NaSHA
antes de noviembre de 2008. BlueMidnight Wish Lesamnta Waterfall
Esponjas Aleatorias
• Es un nuevo modelo criptográfico para la construcción de
funciones hash iteradas y cifradores de flujo.
• Una esponja tiene un estado interno finito.
• Es similar a un “Oráculo Aleatorio“ pero trabaja con un
estado interno finito.
• Puede servir como modelo de referencia para conocer su
seguridad independientemente del sistema en el que se
encuentre.
• La construcción de una esponja, sobre la que se basan
las esponjas aleatorias, es una simple construcción
iterada basada en una transformación o permutación f.
Sponge Construction: Dícese
• Los ataques genéricos a esponjas aleatorias son tan del modo particular de usar una
difíciles como a un oráculo aleatorio (2c/2). transformación o permutación de
longitud fija, para construir una
• Como permiten entradas y salida de anchura variable, función que relaciona entradas
pueden ser utilizadas como alternativa a la construcción de cualquier longitud con
vectores de salida de longitud
de Merkle–Damgård. infinita.
Cryptographic Sponges
Tienen dos fases:
1. Absorción:
a) los bloques de mensaje de entrada se f  p0
mezclan, mediante , con parte del estado
interno, que
b) luego es transformado con la aplicación de la f  p1

Absorción
función f.
2. Estrujado:
a) los bloques de salida se extraen de parte del f  pi
estado interno, que
b) luego es transformado con la aplicación de la

Estrujado
función f. f

Cuando f es una transformación aleatoria o una z0


permutación, la esponja aleatoria no puede
f
distinguirse de un oráculo aleatorio
– a menos que haya una colisión en los bits z1
internos no alterados del estado dela esponja,
que no pueden ser controlados desde fuera.