You are on page 1of 18

Función hash

Una función de hash en funcionamiento.

A las funciones resumentambién se les llama funciones hash o funciones digest.123


Una funciónhash H es una función computable mediante un algoritmo tal que:
H: U → M
x → h(x)
Tiene como entrada un conjunto de elementos, que suelen ser cadenas, y los
convierte en un rango de salida finito, normalmente cadenasde longitud fija. Es decir,
la función actúa como una proyección del conjunto U sobre el conjunto M.
Observar que M puede ser un conjunto definido de enteros. En este caso podemos
considerar que la longitud es fija si el conjunto es un rango de números de enteros ya
que podemos considerar que la longitud fija es la del número con mayor número de
cifras. Todos los números se pueden convertir al número especificado de cifras
simplemente anteponiendo ceros.
Normalmente el conjunto U tiene un número elevado de elementos y M es un conjunto
de cadenas con un número más o menos pequeño de símbolos. La idea básica de un
valor hash es que sirva como una representación compacta de la cadena de entrada.
Por esta razón se dice que estas funciones resumen datos del conjunto dominio.

Índice
[ocultar]

 1Orígenes del término


 2Terminología asociada
 3Parámetros adicionales
o 3.1Funciones resumen con clave
 4Propiedades
o 4.1Bajo costo
o 4.2Compresión
o 4.3Uniforme
o 4.4De rango variable
o 4.5Inyectividad y función hash perfecta
o 4.6Determinista
o 4.7Propiedades para analizar la resistencia frente a colisiones
 4.7.1Resistencia a la primera preimagen
 4.7.2Resistencia a la segunda preimagen
 4.7.3Resistencia a colisiones (CRHF)
 4.7.4Función resumen de un solo sentido (OWHF)
 4.7.5Resistencia a la casi colisión
 4.7.6Funciones con colisiones de hash parciales
 4.7.7Resistencia a las preimágenes parciales
o 4.8Con normalización de datos
o 4.9Continuidad. Efecto avalancha
o 4.10Resistencia a la computación de nuevos valores hash
 5Familias de funciones resumen y propiedades asociadas
o 5.1Motivación[12]
o 5.2Concepto
o 5.3Familia de funciones resumen resistente a colisiones
 5.3.1Definición formal
o 5.4Función hash universal
 5.4.1Definición formal[18]
o 5.5Familia de funciones hash universal de un solo sentido
 5.5.1Definición formal
o 5.6Comparación UOWHF y CRHF[22]
 6Funciones hash iterativas. Construcción de Merkle-Damgård
 7Aplicaciones
 8Véase también
 9Referencias
 10Enlaces externos

Orígenes del término[editar]


El término hash proviene, aparentemente, de la analogía con el significado estándar
(en inglés) de dicha palabra en el mundo real: picar y mezclar. Donald Knuth cree
que H. P. Luhn, empleado de IBM, fue el primero en utilizar el concepto en un
memorándum fechado en enero de 1953. Su utilización masiva no fue hasta después
de 10 años.

Terminología asociada[editar]
Al conjunto U se le llama dominio de la función resumen. A un elemento de U se le
llama preimagen o dependiendo del contexto clave o mensaje.
Al conjunto M se le llama imagen de la función hash. A un elemento de M se le llama
valor resumen, código hash o simplemente hash.
Se dice que se produce una colisión cuando dos entradas distintas de la función
resumen producen la misma salida. De la definición de función resumen podemos
decir que U, el dominio de la función, puede tener infinitos elementos. Sin embargo M,
el rango de la función, tiene un número finito de elementos debido a que el tamaño de
sus cadenas es fijo. Por tanto la posibilidad de existencia de colisiones es intrínseca a
la definición de función hash. Una buena función resumen es una que tiene pocas
colisiones en el conjunto esperado de entrada. Es decir, se desea que la probabilidad
de colisión sea muy baja.

Parámetros adicionales[editar]
La definición formal dada, a veces se generaliza para poder aprovechar las
funciones hash en otros ámbitos. Para ello a la función resumen se le añaden nuevos
parámetros de forma que el valor hash no es solo función del contenido en sí, sino
además de otros nuevos factores.
Para hallar valores resumen de ficheros a veces se usan, además del contenido en sí,
diversos parámetros como el nombre del archivo, su longitud, hora de creación, etc.
Otras veces se añaden parámetros que permiten configurar el comportamiento de la
función. Por ejemplo, la función resumen puede recibir como parámetro una función
de generación de valores pseudoaleatorios que es usada dentro del algoritmo de la
función hash.
Otros ejemplos de parámetros son el uso de valores sal, el uso de claves secretas, el
uso de parámetros que especifican el rango de la función (funciones hash de rango
variable), el uso de parámetros que especifican el nivel de seguridad que se quiere en
el valor resumen de salida (funciones hash dinámicas), etc.
Funciones resumen con clave[editar]
Una función resumen con clave HK (en inglés keyed hash function) es una función
resumen H que tiene un parámetro secreto K que pertenece al conjunto posible de

claves y en la que para una entrada x, hK(x) es el valor resumen de x. Al resto


de funciones resumen se dice que son sin clave (en inglés unkeyed hash function).

Propiedades[editar]
La calidad de una función resumen viene definida con base en la satisfacción de
ciertas propiedades deseables en el contexto en el que se va a usar.
Bajo costo[editar]
Calcular el valor hash necesita poco costo (computacional, de memoria, etc.).
Compresión[editar]
Una función hash comprime datos si puede mapear un dominio con datos de longitud
muy grande a datos con longitud más pequeña
Uniforme[editar]
Se dice que una función resumen es uniforme cuando para una clave elegida
aleatoriamente es igualmente probable tener un valor resumen determinado,
independientemente de cualquier otro elemento.
Para una función hash H uniforme del tipo H:{0,1}m→{0,1}n, es decir:

 Las cadenas están construidas sobre un alfabeto de 2 símbolos (Alfabeto binario)


 El dominio es el conjunto de las cadenas de longitud m
 El rango es el conjunto de las cadenas de longitud n
podemos decir que a cada resumen le corresponde 2m-n mensajes y que la
probabilidad de que dos mensajes den como resultado la misma salida es 2-n
Para algoritmos de búsqueda, si todas las entradas son igualmente probables, se
busca esta propiedad para minimizar el número de colisiones ya que cuantas más
colisiones haya, será mayor el tiempo de ejecución de las búsquedas.
De rango variable[editar]
En algunas funciones resumen el rango de valores resumen puede ser diferente a
lo largo del tiempo. Ejemplo: funciones hash usadas para tablas resumen que
necesitan expandirse. En estos casos a la función hash se le debe pasar un
parámetro que le permita saber en qué rango se mueve la ejecución para hallar el
valor resumen.
Inyectividad y función hash perfecta[editar]
Se dice que la función resumen es inyectiva cuando cada dato de entrada se
mapea a un valor resumen diferente. En este caso se dice que la función resumen
es perfecta. Para que se dé, es necesario que la cardinalidad del conjunto
dominio sea inferior o igual a la cardinalidad del conjunto imagen. Normalmente,
sólo se dan funciones hashperfectas cuando las entradas están preestablecidas.
Ejemplo: mapear los días del año en números del 1 al 366 según el orden de
aparición.
Formalización:

implica
Cuando no se cumple la propiedad de inyectividad se dice que hay colisiones.

Hay una colisión cuando y .


Determinista[editar]
Una función hash se dice que es determinista cuando dada una cadena de
entrada siempre devuelve el mismo valor hash. Es decir, el valor hash es el
resultado de aplicar un algoritmo que opera solo sobre la cadena de entrada.
Ejemplos de funciones hashno deterministas son aquellas funciones hash que
dependen de parámetros externos, tales como generadores de números
pseudoaleatorios o la fecha. Tampoco son deterministas aquellas
funciones hash que dependen de la dirección de memoria en la que está
almacenada la cadena de entrada. Esa dirección es accidental y no se considera
un cambio de la cadena entrada en sí. De hecho puede cambiar dinámicamente
durante la propia ejecución del algoritmo de la función hash.
Propiedades para analizar la resistencia frente a
colisiones[editar]
El estudio de este tipo de propiedades es muy útil en el campo de
la criptografía para los llamados 'códigos de detección de modificaciones'.
Resistencia a la primera preimagen[editar]
2Se
dice que una función resumen tiene resistencia a la primera preimagen o
simplemente que tiene resistencia a preimagen (del inglés preimage-resistant) si,
dado un valor hash y, es computacionalmente intratable encontrar x tal
que h(x)=y.
Resistencia a la segunda preimagen[editar]
2Se
dice que una función resumen tiene resistencia a la segunda preimagen (en
inglés second preimage-resistant) si dado un mensaje x, es computacionalmente

intratable encontrar un x', , tal que h(x)=h(x').


Resistencia a colisiones (CRHF)[editar]
2Se dice que una función hash tiene resistencia a colisiones o que es resistente a
colisiones o CRHF (del inglés Collision Resistant Hash Function) si encontrar un

par con tal que es computacionalmente intratable. Es decir, es


difícil encontrar dos entradas que tengan el mismo valor resumen.
Como encontrar una segunda preimagen no puede ser más fácil que encontrar
una colisión, entonces la resistencia a colisiones incluye la propiedad de
resistencia a la segunda preimagen.45 Por otro lado se puede decir que la mayoría
de las funciones resumen CRHF son resistentes a preimagen.2 La resistencia a
colisiones implica resistencia a preimagen para funciones hash con salida
aleatoria uniforme.6
En algunos trabajos a estas funciones se les llama funciones resumen de un solo
sentido fuertes (del inglés strong one way hash function) para resaltar que es
fuerte debido a que hay libre elección de los dos valores x e y.
Función resumen de un solo sentido (OWHF)[editar]
7Una
función hash se dice que es una función resumen de un solo sentido o que
es OWHF (del inglés One-Way Hash Function) si tiene las propiedades de
resistencia a preimagen y de resistencia a segunda preimagen. Es decir, es difícil
encontrar una entrada cuya hash sea un valor resumen preespecificado.
Observar que es diferente a la definición general que se hace de funciones de un
solo sentido:
2Una función se dice que es una función de un solo sentido o que es OWF si para
cada x del dominio de la función, es fácil computar f(x), pero para todo y del rango de f,
es computacionalmente intratable encontrar cualquier x tal que y=f(x).
La diferencia entre OWHF y OWF es que OWF no requiere que sea función resumen
ni que sea resistente a segunda preimagen.
En algunos trabajos a estas funciones se les llama funciones hash de un
solo sentido débiles (del inglés weak one way hash function) para resaltar
que es débil en contraste con CRHF (que es fuerte) debido a que al
cumplir la propiedad de resistencia a segunda preimagen no hay libre
elección en la selección del valor x, y por tanto del valor h(x), en el que se
tiene que producir la colisión.
Resistencia a la casi colisión[editar]
8H
es resistente a la casi colisión (en inglés near-colission resistance) si

es difícil encontrar dos mensajes y con para las cuales

sus imágenes y difieran solamente en unos pocos bits.


9Por
ejemplo podemos tener una función resistente a colisiones de 256
bits que no es resistente a la casi colisión porque se pueden encontrar
casi-colisiones para los 224 bits de más a la izquierda.
Funciones con colisiones de hash parciales[editar]
Son funciones en las que invirtiendo cierto coste en procesamiento de
CPU y memoria es posible encontrar en tiempos razonables dos entradas
que produzcan resultados en los que sus bits se parezcan en cierto
grado. Por ejemplo que se parezcan en un porcentaje de bits, o más
comúnmente que sean iguales es los n-bits más significativos.
Por ejemplo con SHA1 para conseguir una colisión total con fuerza bruta

necesitaríamos comprobaciones o al menos usando


la paradoja del cumpleaños. Sin embargo si vamos reduciendo el número
de bits más significativos que tienen que coincidir, el número de
comprobaciones va bajando paulatinamente.
Funciones resumen con esta propiedad se usan en sistemas de prueba
de trabajo, como Hashcash o Bitcoin para conseguir las pruebas de
trabajo.
Resistencia a las preimágenes parciales[editar]
10Una función resumen tiene resistencia a preimágenes parciales (en
inglés Partial-preimage resistance) si es difícil encontrar una parte de la
preimagen de un valor hashincluso conociendo el resto de la preimagen.
Es decir, se debe recurrir a la fuerza bruta: si se desconocen t bits de la
preimagen, se deben realizar en promedio 2n-t operaciones
de hash encontrarlo.
A una función resumen resistente a preimágenes parciales también se le
dice que es localmente de un solo sentido (del inglés local one-wayness).
Con normalización de datos[editar]
En algunas aplicaciones, las cadenas de entrada pueden contener
características que son irrelevantes cuando comparamos las cadenas.
Por ejemplo en algunas aplicaciones las mayúsculas pueden ser
irrelevantes. Por tanto para hallar el valor hash es interesante ignorar las
distinciones no relevantes entre las cadenas de entrada. De esta forma
cadenas distintas con diferencias no relevantes, tienen asociados
valores hashiguales.
Continuidad. Efecto avalancha[editar]
Se dice que una función resumen es continua cuando una modificación
minúscula (ej un bit) en la cadena de entrada ocasiona pequeños
cambios en el valor hash.
En una función resumen se dice que no hay correlación cuando los bits
de las cadenas de entrada y los bits de las cadenas de salida no están
relacionados, es decir, cuando una modificación minúscula (por ejemplo
un bit) en la cadena de entrada ocasiona cambios en el
valor hash comparables a un cambio de cualquier otro tipo. Por tanto
cualquier cambio en el mensaje original idealmente hace que cada uno de
cualquier bit del valor resumen resultante cambie con probabilidad 0.5.
Cuando esto sucede (o casi) se dice que se produce un efecto avalancha
En funciones resumen usadas para búsqueda normalmente se buscan
funciones tan continuas como sea posible; de forma que entradas que
difieran un poco deberían tener valores hash similares o iguales. Sin
embargo la continuidad no es deseable para funciones resumen usadas
para sumas de verificación o funciones criptográficas por evidentes
razones.
Resistencia a la computación de nuevos
valores hash[editar]

11
Una función resumen con clave K, se dice que tiene resistencia a
la computación de nuevos valores hash (en inglés Computation-

resistance) si a partir de un rango de pares conocidos no puede ser

computado para un nuevo dato x con para cualquier i, sin que


K sea conocida.
Observar que la propiedad anterior implica que no debería ser posible

calcular K a partir de un rango de pares conocidos . A esta


propiedad se la llama propiedad de no recuperación de clave (en inglés
key non-recovery).
El estudio de este tipo de propiedades son muy útiles en el campo de
la criptografíapara los llamados códigos de autenticación de mensajes.

Familias de funciones resumen y propiedades


asociadas[editar]
Motivación12[editar]
Podríamos imaginarnos un algoritmo probabilístico de tiempo polinomial
con dos mensajes codificados en el algoritmo que dan lugar a una
colisión para una específica función resumen. El algoritmo simplemente
devolvería los dos mensajes que causan la colisión. Crear tal algoritmo
puede ser extremadamente difícil, pero una vez construido podría ser
ejecutado en tiempo polinomial. Sin embargo, definiendo una familia de
funciones resumen como una familia infinita de funciones resumen impide
que la búsqueda de este algoritmo tenga éxito para todas las funciones
resumen de la familia, porque hay infinitas. Por tanto las familias resumen
proporcionan un mecanismo interesante para el estudio y categorización
de las funciones resumen respecto a su fortaleza frente a la búsqueda de
colisiones por parte de un adversario. Este tipo de estudios es muy útil en
el campo de la criptografía para los llamados códigos de detección de
modificaciones.
Concepto[editar]

Sea , el dominio de la función, sea el rango de la función.

Sea el conjunto de todas las posibles claves (teóricamente es


infinito aunque en la práctica es finito),

Una familia de funciones hash es un conjunto infinito de

funciones hash de la forma (notación equivalente , donde cada


función de la familia es indexada por una clave que cumple las
siguientes propiedades:

 es accesible, es decir hay un algoritmo probabilístico de tiempo

polinomial, que sobre una entrada devuelve una instancia

 es muestreable, es decir, hay un algoritmo probabilístico de

tiempo polinomial, que selecciona uniformemente elementos de .

 es computable en tiempo polinomial, es decir, hay un algoritmo


de tiempo polinomial (en l) que sobre una

entrada computa .
Ejemplo: SHA-1 es una sola instancia de función resumen, no una familia.
Sin embargo SHA-1 puede ser modificado para construir una familia finita
de funciones. M. Bellare y P. Rogaway13 modificaron SHA-1 de tal forma
que la claves especifica las constantes usadas en la cuarta ronda de las
funciones. En este caso el tamaño de la clave es de 128 bits y por

tanto , y .
Observar que en la definición de una función resumen el dominio se

puede formalizar como , sin embargo en una función resumen


definida como instancia de un elemento de una familia de funciones

resumen el dominio es . Esto es debido a que para que se cumplan


las propiedades de seguridad es necesario que el dominio sea
muestreado uniformemente en tiempo polinomial. Una familia de

funciones puede siempre ser definida con aquel tamaño apropiado


para acomodar cualquier mensaje que sea necesario.
Familia de funciones resumen resistente a
colisiones[editar]
De forma informal una familia de funciones es familia de funciones
resumen resistente a colisiones, también llamadas CRHF por sus siglas
en inglés (Collision Resistant Hash Function), dada una función escogida
aleatoriamente de la familia, un adversario es incapaz de obtener una
colisión para ella.14
Definición formal[editar]
15Se
dice que una familia de funciones resumen es una (t,ε)-familia

resumen resistente a colisiones con la forma con n,l y k


enteros positivos y n>=l, que satisfacen la siguiente condición:
Sea un buscador de colisiones de cadenas que para una entrada K

en el espacio de claves usa tiempo y obtiene como salida , un

par tal que . Para cada ,

.
Observar que la probabilidad es tomada sobre las elecciones

aleatorias de .
Mirando esta definición se ve que son interesantes aquellas familias
que tienen un t/ε suficientemente grande.
Estrictamente hablando hablamos de familias CRHF pero por
simplicidad se suele hablar simplemente de CRHF.
La definición no se mete en cómo se eligen las funciones resumen de
la familia. Este punto es crucial.16 En realidad, en cualquier aplicación
de funciones resumen resistentes a colisiones, alguna parte P tienen
que elegir una función de la familia de forma aleatoria para producir la
descripción de la función. Es importante distinguir entre dos casos:

 La elección aleatoria se puede hacer pública (o 'public-coin'). La


elección aleatoria puede ser revelada como parte de la
descripción de la función.
 La elección aleatoria se tiene que mantener secreta (o 'secret-
coin'). La revelación la elección aleatoria realizada puede que
permita encontrar colisiones. Por tanto P tiene que mantener
secreta la elección después de producir la descripción de la
función.
Evidentemente una familia CRHF elegible de forma pública (public-
coin) también puede trabajar si uno elige o mantiene la elección de
forma privada (secret-coin).
Función hash universal[editar]
Una función resumen universal es una familia de funciones donde la
probabilidad de colisión entre dos textos escogidos es despreciable.17
Definición formal18[editar]
Una k-familia de funciones resumen universal es un conjunto H de

funciones tal que para cada elemento y todos los (no

necesariamente distintos) .
19
Una familia de funciones resumen es ε-casi universal o ε-AU
(del inglés ε-almost universal) si es menor que ε la probabilidad de
que dos entradas distintas m,n tengan el mismo valor resumen
asociado, estando la función resumen elegida aleatoriamente entre

los miembros de . De la definición se percibe que son


interesantes aquellas familias que tienen un valor pequeño de ε
indicando que el adversario no puede encontrar un par de entradas
que producen el mismo valor resumen, para una función resumen
elegida aleatoriamente de entre los elementos la familia.
Familia de funciones hash universal de un solo
sentido[editar]
Una familia de funciones resumen universal de un solo sentido,
también llamadas UOWHF por sus siglas en inglés (Universal One-
Way Hash Function), es una familia de funciones resumen
universales donde, elegida una clave K aleatoriamente en el espacio
de claves, dada una cadena x con valor resumen hK(x) es difícil
encontrar un x' distinta de x tal que hK(x)=hK(x'). Al par (x,x') se le
llama par de colisión
Definición formal[editar]

2021Se
dice que una familia de funciones resumen es (t,ε)-
función resumen universal de un solo sentido (UOWHF) si no existe
ningún adversario que en tiempo menor que t pueda ganar el
siguiente juego con probabilidad mayor o igual que ε: El adversario
escoge un valor x del Rango, entonces recibe una clave K del
espacio de claves escogida de forma aleatoria. El juego se gana si
encuentra un x' tal que hK(x)= hK(x').

El adversario está compuesto por dos algoritmos .

 solo tiene como parámetro de entrada el conjunto de la


familia de funciones resumen. Produce como salida x y State. x
es el valor resumen objetivo y State es alguna información extra
que puede ayudar a A2 a encontrar la colisión.

 tiene como parámetros de entrada K,x y State y produce


como salida x'
por tanto

siendo un par con tal que hK(x)= hK(x')


Observar que, al igual que en la definición de (t,ε)-CRHF la

probabilidad es tomada sobre las elecciones aleatorias de .


La gran diferencia es que aquí la entrada x se fija primero.
Mirando esta definición se ve que son interesantes aquellas
familias que tienen un t/ε suficientemente grande.
Comparación UOWHF y CRHF22[editar]
Una familia UOWHF es una noción más débil que una familia
CRHF. En una CRHF, a el oponente primero se le da la clave y
después ella o él tiene que producir la pareja de entradas que
colisiona. Encontrar colisiones para un parámetro fijo de una
UOWHF, puede que sea bastante más fácil, pero esto no
ayudará a un oponente a violar la seguridad. Simon23 ha
demostrado que existe un oráculo relativo a el cual UOWHF
existe, pero no CRHF.

Funciones hash iterativas. Construcción de


Merkle-Damgård[editar]
242526Muchas funciones hash se construyen mediante el proceso
iterativo siguiente hasta conseguir el valor hash de la entrada X,
h(X):

 El número de bits de la entrada X (en principio de longitud


arbitraria) tiene que ser múltiplo de la longitud de bloque.
Para conseguirlo se tiene una regla de relleno que alarga la
entrada a una longitud aceptable. Normalmente esta regla
consiste en añadir al final de la entrada unos símbolos
adicionales a los que se llama relleno o padding.
 Se divide la entrada en bloques de longitud fija. Obteniendo
un conjunto de bloques x1,...,xt.
 Se realiza un proceso iterativo de la siguiente forma:
H0=IV
Hi=f(xi,Hi-1), i=1,2,...,t y
h(X)=g(Ht).
Al valor IV se le llama valor inicial y se representa por esas
siglas por el término inglés Initial Value. A la función f se la
llama función de ronda o función de compresión. A la función
g se la llama transformación de salida. Lo que hace la función
g es derivar a partir de Ht tantos bits como se quieran en la
salida de la función. Frecuentemente g es la función
identidad o un truncamiento de Ht.
En este tipo de descripción de funciones hash hay dos
elecciones importantes que afectarán a las propiedades que
tendrá la función:

 La elección de la regla de relleno. Si lo que se quiere es


evitar colisiones es recomendable que la regla de relleno
no permita que existan dos mensajes que sean
rellenados al mismo mensaje.
 La elección de valor inicial (IV). Debería ser definido
como parte de la descripción de la función hash.
A las funciones que se construyen mediante el anterior
sistema se dice que son funciones resumen iterativas.
A esta forma de construcción recursiva se la conoce también
como de Merkle-Damgård debido a que fue usado por
primera vea por R. Merkle y I. Damgård independientemente
en 1989.

Aplicaciones[editar]
Las funciones resumen son usadas en múltiples campos.
Ejemplos:

 Herramienta básica para la construcción de utilidades


más complejas:
 Construcción de estructuras de datos: Su uso en
distintas estructuras de datos hacen más eficientes
las búsquedas, y/o permiten asegurar los datos que
contienen. Ejemplos: tablas resumen, árboles de
Merkle, listas resumen.
 Construcción de esquemas de compromiso. Los
esquemas de compromiso permiten que una entidad
elija una valor entre un conjunto finito de
posibilidades de tal forma que no pueda cambiarla.
Esa entidad no tiene que revelar su elección hasta si
acaso el momento final (la elección puede
permanecer oculta).
 Construcción de algoritmos de cifrado/descifrado. Por
ejemplo se usa en la construcción de cifradores de
flujo y de cifradores de bloque.
 Construcción de algoritmos generadores de números
pseudoaleatorios.
 Construcción de cadenas pseudoaleatorias. Por
ejemplo el llamado modelo de oráculo aleatorio se
basa en considerar que funciones hash con ciertas
propiedades se comportan como funciones que
escogen cadenas al azar, se usa para el estudio de
la seguridad los esquemas criptográficos.
 Construcción de algoritmos de testeo de pertenencia
o no a un conjunto.- Se han usado
funciones hash para la construcción
de acumuladores criptográficos y filtros de Bloom.
Estas tecnologías permiten establecer mecanismos
que permiten pronunciarse, a veces con cierto grado
de error, sobre la pertenencia o no a cierto conjunto.
 Construcción de métodos de generación de sellos de
tiempo confiables.
 Herramienta para proteger la integridad
 En la firma digital
 Como dato que se firma: en los algoritmos de
firma convencionales normalmente en lugar de
firmar todo el contenido se suele ser firmar solo
el valor hash del mismo. Algunas de las
motivaciones para hacer esto son:27
 Cuando se usa para firmar algoritmos de
firma por bloques donde los mensajes son
más largos que el bloque, no es seguro
firmar mensajes bloque a bloque ya que un
enemigo podría borrar bloques del mensaje
firmado o insertar bloques de su elección en
el mensaje antes de que sea firmado. Al usar
una función hash hacemos una
transformación que hace a la firma
dependiente de todas las partes del
mensaje.
 Normalmente los valores hash son mucho
más cortos que los datos originales de
entrada. Se puede mejorar mucho la
velocidad de firma firmando el valor hash en
lugar de firmar el dato original.
 Si los mensajes a firmar pueden tener cierta
estructura algebraica y el algoritmo de firma
se comporta de forma que el sistema
resultante puede ser vulnerable
a criptoanálisis con ataques de texto
escogido, podemos usar
funciones hash para destruir esta estructura
algebraica.
 Como parte del algoritmo de firma: se han
desarrollado algoritmos de firma que usan
funciones hash en el propio algoritmo de firma
como una herramienta interna del mismo.
Ejemplo de este tipo algoritmos son el esquema
de firma de Merkle.
 Suma de verificación (del inglés checksum): cuando
se quiere almacenar o transmitir información, para
proteger frente a errores fortuitos en el
almacenamiento o transmisión, es útil acompañar a
los datos de valores hashobtenidos a partir de ellos
aplicando funciones hash con ciertas propiedades de
forma que puedan ser usados para verificar hasta
cierto punto el propio dato. Al valor hash se le
llama Suma de verificación.
 Prueba de la integridad de contenidos: por ejemplo,
cuando se distribuye un contenido por la red, y se
quiere estar seguro de que lo que le llega al receptor
es lo que se está emitiendo, se proporciona un
valor resumen del contenido de forma que ese valor
tiene que obtenerse al aplicar la
función resumen sobre el contenido distribuido
asegurando así la integridad. A esto se le suele
llamar checksum criptográfico debido a que es un
checksum que requiere el uso
de funciones resumen criptográficas para que sea
difícil generar otros ficheros falso que tengan el
mismo valor resumen. Otro ejemplo de uso esta
tecnología para verificar la integridad es calcular y
guardar el valor resumen de archivos para poder
verificar posteriormente que nadie (Ej un virus) los ha
modificado. Si en lugar de verificar la integridad de
un solo contenido lo que se quiere es verificar la
integridad de un conjunto de elementos, se pueden
usar algoritmos basados en funciones resumen como
los árboles de Merkle que se basan en aplicar
reiteradamente las funciones resumen sobre los
elementos del conjunto y sobre los valores resumen
resultantes.
 Herramientas vinculadas a la autenticación y control de
acceso
 Autenticación de entidades: por ejemplo, es
frecuente el uso para este propósito de funciones
resumen deterministas con clave secreta que tienen
ciertas propiedades (Códigos de autenticación de
mensajes). En estos esquemas tanto el servicio de
autenticación, o verificador, como la entidad que se
quiere autenticar mantienen en secreto la clave de la
función resumen. El esquema funciona de la
siguiente forma: El que se quiere autenticar genera
un mensaje y calcula su valor resumen. Estos dos
datos se mandan al verificador. El verificador
comprueba que el valor resumen se corresponde con
el mensaje enviado y de esta forma verifica que la
entidad tiene la clave secreta y por otra parte puede
asegurar que el mensaje es íntegro (no ha sido
modificado desde que se calculó el valor resumen).
Observar que el esquema no tiene la propiedad
del no-repudio por parte del que se quiere autenticar
ya que el verificador, al disponer de la clave secreta,
puede generar también los valores resumen.
 Protección de claves: para comprobar la corrección
de una clave no es necesario tener la clave
almacenada, lo que puede ser aprovechado para que
alguien no autorizado acceda a ella, sino almacenar
el valor resumen resultante de aplicar una función
resumen determinista. De esta forma para verificar si
una clave es correcta basta con aplicar la función
resumen y verificar si el resultado coincide con el que
tenemos almacenado. Si además queremos que
la contraseña sea de un solo uso podemos
usar cadenas de resumen como en S/KEY
 Derivación de claves: por ejemplo, en algunas
aplicaciones usan funciones resumen para derivar
una clave de sesión a partir de un número de
transacción y una clave maestra. Otro ejemplo de
aplicación sería el uso de funciones resumen para
conseguir sistemas de autenticación con claves de
un solo uso o OTP (del inglés One Time Password).
En este tipo de sistemas la clave es válida para un
solo uso. Estos sistemas se basan en tener un
semilla inicial y luego ir generando claves (mediante
un algoritmo que puede usar funciones resumen) que
pueden tener un solo uso y así evitar ataques de
REPLAY.
 Herramienta para la identificación y la rápida
comparación de datos: Se pueden usar
funciones hash para proporcionar una identificación de
objetos o situaciones. Una buena función hash para este
propósito debería ser rápida y asegurarse de que dos
objetos o situaciones que se considerar iguales den lugar
al mismo valor hash. Observar que dos objetos o
situaciones pueden ser considerados iguales sin ser
idénticos. Por ejemplo podemos considerar iguales a dos
ficheros que son distintos bit a bit porque realmente son
la digitalización de la misma película. Es labor del diseño
de la función hash capturar la esencia del criterio de
igualdad. Por otra parte la evaluación de la
función hash debería ser poco costosa para facilitar la
rápida comparación de elementos candidatos a ser
iguales y de esta forma poder implementar algoritmos de
búsqueda rápidos.
 Huellas digitales: el uso de funciones hash aplicados
a cadenas permiten obtener valores hash que
pueden usarse detectar fácilmente la aparición de
esos datos en distintos sitios. Pueden ser usados
para distintos usos como búsqueda de virus,
autenticación con datos biométricos, detección de
copias, etc. La idea puede usarse más allá de textos
y ser aplicado a cualquier tipo de contenido
multimedia:2829 Las funciones hash específicamente
diseñadas para este propósito obtienen
valores hash que permiten detectar características
intrínsecas del contenido multimedia, de forma que
se pueda identificar si dos archivos diferentes se
corresponden con el mismo contenido multimedia.
Como aplicación práctica de este tipo de algoritmo
tenemos los programas que se ejecutan en
dispositivos móviles y que son capaces de adivinar el
título de la canción que está sonando en la
habitación solamente capturando el sonido y
comparándolo con estos valores hash. Este tipo de
algoritmos también se puede utilizar para protección
de contenidos multimedia ya que permite validar
automáticamente si cierto fichero multimedia está
protegido o no por derechos de autor.
 Identificación de contenidos: en algunas aplicaciones
se usa el valor hash de un contenido multimedia para
identificar ese contenido independientemente de su
nombre o ubicación. Esto es ampliamente usado en
redes Peer-to-peer que intercambian de archivos,
tales como Kazaa, Ares Galaxy, Overnet, BitTorrent.
 Identificar un registro en una base de datos y permitir
con ello un acceso más rápido a los registros (incluso
más rápido que teniendo índices).
 Algorítmos de búsqueda de subcadenas: los
algoritmos de búsqueda de subcadenas tratan el
problema de buscar subcadenas, a la que llaman
patrón, dentro de otra cadena a la que llaman texto.
Hay algoritmos de este tipo que usan
funciones hash en su implementación.
Ejemplo: algoritmo Karp-Rabin.
 Detección de virus: Para detectar los virus muchos
antivirus definen funciones hash que capturan la
esencia del virus y que permiten distinguirlos de otros
programas o virus. Es lo que se llama firma del virus.
Estas firmas son usadas por los antivirus para poder
detectarlos.
Muchas de las aplicaciones de las funciones hash son
relativas al campo de
la criptografía ( Cifradores, acumuladores criptográficos, firma
digital, protocolos criptográficos de autenticación, etc.). La
criptografía es una rama de las matemáticas que proporciona
herramientas para conseguir seguridad en los sistemas de
información. Las funciones resumen interesantes en el área
de la criptografía se caracterizan por cumplir una serie de
propiedades que permiten a las utilidades criptográficas que
las utilizan ser resistente frente ataques que intentan vulnerar
la seguridad del sistema. A las funciones hash que cumplen
estas propiedades se las llama funciones hash criptográficas.

Véase también[editar]
 Función hash criptográfica
 Código de detección de modificaciones
 Código de autenticación de mensajes

Referencias[editar]
1. Volver arriba↑ H. Tiwari, K. Asawa "Cryptographic Hash
Function: An Elevated View", European Journal of
Scientific Research, 2010
2. ↑ Saltar a:a b c d e f A. J. Menezes et all, "Handbook of
Applied Cryptography", CRC Press 2011
3. Volver arriba↑ D. Henrici,"Concepts, Protocols, And
Architectures". Lectures Notes in Electrical Engineering.
Springer-Verlag 2008.
4. Volver arriba↑ Bart Preneel,"The State of Cryptographic
Hash functions.
5. Volver arriba↑ I. B. Damgard, "Collision free hash functions
and public key signatures schemes". Advances in
Cryptology- Crypto'89. LNCS 304 pages 203-216. Springer
1987
6. Volver arriba↑ Kazumaro Aoki, Yu Sasaki, "Meet in the
midle preimage attacks against reduced SHA-0 and SHA-
1"
7. Volver arriba↑ H. Tiwari et all, "Cryptographic Hash
Function:An elevated View", European Jorunal of Scientific
Research, Vol 43 pp.452-465. 2010
8. Volver arriba↑ W. R. Speirs,"Dynamic cryptographic hash
functions", Thesis. Purdue University School.2007
9. Volver arriba↑ Peter Stavroulakis et all,"Handbook of
Information and Communication Security", Spring 2010
10. Volver arriba↑ Dirk Henric,"RFID security and privacy:
concepts, protocols, and architectures", Springer 2008
11. Volver arriba↑ Günter Schäfer,"Security in fixed and
wireless networks: an introduction to securing data
communications". Willey 2003
12. Volver arriba↑ William Speirs, "Dynamic cryptographic
hash functions"
13. Volver arriba↑ Mihir Bellare and Phillip Rogaway.
"Introduction to modern cryptography. Chapter
5.September 2005.
14. Volver arriba↑ Chum-Yuan Hsiao et all, "Finding Collision
on a Public Road, or Do Secure Hash Functions Need
Secret Coins?"
15. Volver arriba↑ "Signature Scheme in Multi-User Setting",
The Institute of Electronics, Information and
Communication Engineers, 2006
16. Volver arriba↑ Chun-Yuan Hsiao et all, "Finding Collisions
on a Public Road, or Do Secure Hash Functions Need
Secret Coins
17. Volver arriba↑ Mridul Nandi,"A Generic Method to Extend
Message Space of a Strong Pseudorandom Permutation"
18. Volver arriba↑ A. R. Caldebank et all, "Improved Range
Summable Random Variable Construction Algorithms",
Proceedings of the 16 Annual ACM-SIAM Symposium on
Discrete Algorithms
19. Volver arriba↑ Ted Krovetz,"Message Authentication on 64-
Bit Architectures", Selected Areas in Cryptography, LNCS
4356, Springer.2006.
20. Volver arriba↑ Ilya Mironov,"Collision-Resistant No More:
Hash-and-Sign Paradigm Revisited", Public Key
Cryptography PKC 2006, LNCS 3958. Springer 2006
21. Volver arriba↑ D. Hong et all, "Higher Order Universal One-
Way Hash Functions",Center for Information Security
Technologies, Korea University, Seoul,Korea.
22. Volver arriba↑ Henk C. A. Van Tilborg,"Encyclopedia of
Cryptography and Security" Second Edition. pg 1349.
Springer 2011
23. Volver arriba↑ D. Simon, "Finding collisions on a one-way
street:Can secure hash functions be based on general
assumptions?, EUROCRYPT 98 pp 334-345, 1998
24. Volver arriba↑ H. Tiwari,"Cryptographic Hash Function: An
Elevated View", European journal of Scientific Research,
Vol 43 pp.452-465.2010
25. Volver arriba↑ Bart Preneel,"Cryptographic Primitives for
Information Authentication-State of the Art", Katholieke
Universiteit Leuven, COSIC'97 LNCS 1528 1998
26. Volver arriba↑ Chris Mitchell,"Developments in Security
Mechanism Standards", "Internet and Intranet Security
Management: Risks and Solutions", editado por L.
Janczewski,Idea Group Publishing.2000
27. Volver arriba↑ Ivan Bjerre Damgård, "Collision free hash
functions and public key signature schemes",Advances in
Cryptology - EUROCRYPT'87, Lncs 304 PP 203-216.
Springer-Verlag Berlin Heidelberg 1988
28. Volver arriba↑ P. Cano et all. A Review of Audio
FingerprintingJournal of VLSI Signal Processing 41, 271–
284, 2005
29. Volver arriba↑ Loubna Bouarfa. Research Assignment on
Video FingerprintingFaculty of Electrical Engineering,
Mathematics and Computer Science Delft University of
Technology