Está en la página 1de 16

Funcin hash

(Redirigido desde Hash)

Se ha sugerido que este artculo o seccin sea fusionado con hashing (discusin).
Una vez que hayas realizado la fusin de contenidos, pide la fusin de historiales aqu.

Una funcin de hash en funcionamiento.

A las funciones hash (adopcin ms o menos directa del trminoingls hash function)
tambin se les llama funciones picadillo,funciones resumen o funciones de
digest (adopcin ms o menos directa del trmino ingls equivalente digest
function)1 2 3Una funcin hash H es una funcin computable mediante unalgoritmo,
H: U M
x h(x),
que tiene como entrada un conjunto de elementos, que suelen sercadenas, y los
convierte (mapea) en un rango de salida finito, normalmente cadenas de longitud
fija. Es decir, la funcin acta como una proyeccin 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 nmeros
de enteros ya que podemos considerar que la longitud fija es la del nmero con
mayor nmero de cifras. Todos los nmeros se pueden convertir al nmero
especificado de cifras simplemente anteponiendo ceros.
Normalmente el conjunto U tiene un nmero elevado de elementos y M es un
conjunto de cadenas con un nmero ms o menos pequeo de smbolos. Por esto
se dice que estas funciones resumen datos del conjunto dominio.
La idea bsica de un valor hash es que sirva como una representacin compacta
de la cadena de entrada. Por esta razn decimos que
estas funciones resumen datos del conjunto dominio.
ndice
[ocultar]

1Orgenes del trmino

2Terminologa asociada

3Parmetros adicionales

3.1Funciones hash con clave

4Propiedades
o

4.1Bajo costo

4.2Compresin

4.3Uniforme

4.4De rango variable

4.5Inyectividad. Funcin hash perfecta

4.6Determinista

4.7Propiedades para analizar la resistencia frente a colisiones

4.7.1Resistencia a la primera imagen

4.7.2Resistencia a la segunda preimagen

4.7.3Resistencia a colisiones (CRHF)

4.7.4Funcin hash de un solo sentido (OWHF)

4.7.5Resistencia a la casi colisin

4.7.6Resistencia a las preimgenes parciales

4.8Con normalizacin de datos

4.9Continuidad. Efecto avalancha

4.10Resistencia a la computacin de nuevos valores hash

5Familias de funciones hash y propiedades asociadas


o

5.1Motivacin[17]

5.2Concepto

5.3Familia de funciones hash resistente a colisiones

5.4Funcin hash universal

5.3.1Definicin formal

5.4.1Definicin formal[23]

5.5Familia de funciones hash universal de un solo sentido

5.5.1Definicin formal

5.6Comparacin UOWHF y CRHF[27]

6Funciones hash iterativas. Construccin de Merkle-Damgrd

7Aplicaciones

8Vase tambin

9Referencias

10Enlaces externos

Orgenes del trmino[editar]


El trmino hash proviene, aparentemente, de la analoga con el significado
estndar (en ingls) 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 memorndum fechado en enero de 1953. Su utilizacin masiva no fue hasta
despus de 10 aos.

Terminologa asociada[editar]
Al conjunto U se le llama dominio de la funcin hash. 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 funcin hash. A un elemento de M se le
llama valor hash, cdigo hash o simplemente hash.
Se dice que se produce una colisin cuando dos entradas distintas de la funcin
de hash producen la misma salida. De la definicin de funcin hash podemos decir
que U, el dominio de la funcin, puede tener infinitos elementos. Sin embargo M,
el rango de la funcin, tiene un nmero finito de elementos debido a que el tamao
de sus cadenas es fijo. Por tanto la posibilidad de existencia de colisiones es
intrnseca a la definicin de funcin hash. Una buena funcin de hash es una que
tiene pocas colisiones en el conjunto esperado de entrada. Es decir, se desea que
la probabilidad de colisin sea muy baja.

Parmetros adicionales[editar]
La definicin formal dada, a veces se generaliza para poder aprovechar las
funciones hash en otros mbitos. Para ello a la funcin hash se le aaden nuevos
parmetros de forma que el valor hash no es slo funcin del contenido en s, sino
adems de otros nuevos factores.
Para hallar valores hash de ficheros a veces se usan, adems del contenido en s,
diversos parmetros como el nombre del archivo, su longitud, hora de creacin,
etc.
Otras veces se aaden parmetros que permiten configurar el comportamiento de
la funcin. Por ejemplo, la funcin hash puede recibir como parmetro una funcin
de generacin de valores pseudoaleatorios que es usada dentro del algoritmo de
la funcin hash.
Otros ejemplos de parmetros son el uso de valores sal, el uso de claves secretas,
el uso de parmetros que especifican el rango de la funcin (funciones hash de
rango variable), el uso de parmetros que especifican el nivel de seguridad que se
quiere en el valor hash de salida (funciones hash dinmicas),....

Funciones hash con clave[editar]

Una funcin hash con clave HK (en ingls keyed hash function) es una funcin
hash H que tiene un parmetro secreto K que pertenece al conjunto posible de
claves
y en la que para una entrada x, hK(x) es el valor hash de x. Al resto de
funciones hash se dice que son sin clave (en ingls unkeyed hash function).

Propiedades[editar]
La calidad de una funcin hash viene definida con base en la satisfaccin 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,...).

Compresin[editar]
Una funcin hash comprime datos si puede mapear un dominio con datos de
longitud muy grande a datos con longitud ms pequea

Uniforme[editar]
Se dice que una funcin hash es uniforme cuando para una clave elegida
aleatoriamente es igualmente probable tener un valor hash determinado,
independientemente de cualquier otro elemento.
Para una funcin hash H uniforme del tipo H:{0,1} m{0,1}n, es decir:

Las cadenas estn construidas sobre un alfabeto de 2 smbolos (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 bsqueda, si todas las entradas son igualmente probables,
se busca esta propiedad para minimizar el nmero de colisiones ya que
cuantas ms colisiones haya, ser mayor el tiempo de ejecucin de las
bsquedas.

De rango variable[editar]
En algunas funciones hash el rango de valores hash puede ser diferente a lo
largo del tiempo. Ejemplo: Funciones hash usadas para tablas hash que
necesitan expandirse. En estos casos a la funcin hash se le debe pasar un
parmetro que le permita saber en qu rango se mueve la ejecucin para
hallar el valor hash.

Inyectividad. Funcin hash perfecta[editar]


Se dice que la funcin hash es inyectiva cuando cada dato de entrada se
mapea a un valor hash diferente. En este caso se dice que la funcin hash 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 slo se dan funciones hash perfectas cuando las entradas estn
preestablecidas. Ejemplo:Mapear los das del ao en nmeros del 1 al 366
segn el orden de aparicin.
Formalizacin:

implica
Cuando no se cumple la propiedad de inyectividad se dice que
hay colisiones. Hay una colisin cuando

Determinista[editar]
Una funcin 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 slo sobre la cadena de entrada.
Ejemplos de funciones hash no-deterministas son aquellas funciones hash
que dependen de parmetros externos, tales como generadores de nmeros
pseudoaleatorios o la fecha. Tampoco son deterministas aquellas funciones
hash que dependen de la direccin de memoria en la que est almacenada la
cadena de entrada. Esa direccin es accidental y no se considera un cambio
de la cadena entrada en s. De hecho puede cambiar dinmicamente durante
la propia ejecucin del algoritmo de la funcin 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 criptografa para los llamados 'cdigos de deteccin de modificaciones'.
Resistencia a la primera imagen[editar]
4

Se dice que una funcin hash tiene resistencia a la primera preimagen o


simplemente que tiene resistencia a preimagen (del ingls preimageresistant) si, dado un valor hash y, es computacionalmente intratable
encontrar x tal queh(x)=y.
Resistencia a la segunda preimagen[editar]
5

Se dice que una funcin hash tiene resistencia a la segunda


preimagen (en ingls 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]


6

Se dice que una funcin hash tiene resistencia a colisiones o que


es resistente a colisiones o CRHF (del inglsCollision Resistant Hash
Function) si encontrar un par
con
tal que
es
computacionalmente intratable. Es decir, es difcil encontrar dos entradas que
tengan el mismo valor hash.
Como encontrar una segunda preimagen no puede ser ms fcil que
encontrar una colisin, entonces la resistencia a colisiones incluye la
propiedad de resitencia a la segunda preimagen.7 8 Por otro lado se puede
decir que la mayora de las funciones hash CRHFs son resistentes a
preimagen.9 La resistencia a colisisiones implica resistencia a preimagen para
funciones hash con salida aleatoria uniforme.10
En algunos trabajos a estas funciones se les llama funciones hash de un
slo sentido fuertes (del ingls strong one way hash function) para resaltar
que es fuerte debido a que hay libre eleccin de los dos valores x e y.
Funcin hash de un solo sentido (OWHF)[editar]
11

Una funcin hash se dice que es una funcin hash de un solo sentido o
que es OWHF (del ingls One-Way Hash Function) si tiene las propiedades
de resistencia a preimagen y de resistencia a segunda preimagen. Es

decir, es difcil encontrar una entrada cuya hash sea un valor hash
preespecificado.
Observar que es diferente a la definicin general que se hace de funciones de
un solo sentido:
12

Una funcin se dice que es una funcin de un solo sentido o que es OWF si
para cada x del dominio de la funcin, es fcil 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 funcin hash
ni que sea resistente a segunda preimagen.
En algunos trabajos a estas funciones se les llama funciones hash
de un slo sentido dbiles (del ingls strong one way hash function)
para resaltar que es dbil en contraste con CRHF (que es fuerte)
debido a que al cumplir la propiedad de resistencia a segunda
preimagen no hay libre eleccin en la seleccin del valor x, y por tanto
del valor h(x), en el que se tiene que producir la colisin.
Resistencia a la casi colisin[editar]
13

H es resistente a la casi colisin (en ingls near-colission


resistance) si es difcil encontrar dos mensajes
y
con
para las cuales sus imgenes
difieran solamente en unos pocos bits.

14

Por ejemplo podemos tener una funcin resistente a colisiones de


256 bits que no es resistente a la casi colisin porque se pueden
encontrar casi-colisiones para los 224 bits de ms a la izquierda.
Resistencia a las preimgenes parciales[editar]
15

Una funcin hash tiene resistencia a preimgenes parciales (en


ingls Partial-preimage resistance) si es difcil encontrar una parte de
la preimagen de un valor hash incluso 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 2nt
operaciones de hash encontrarlo.
A una funcin hash resistente a preimgenes parciales tambin se
le dice que es localmente de un slo sentido (del ingls local onewayness).

Con normalizacin de datos[editar]


En algunas aplicaciones, las cadenas de entrada pueden contener
caractersticas que son irrelevantes cuando comparamos las cadenas.
Por ejemplo en algunas aplicaciones las maysculas 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 hash iguales.

Continuidad. Efecto avalancha[editar]


Se dice que una funcin hash es continua cuando una modificacin
minscula (ej un bit) en la cadena de entrada ocasiona pequeos
cambios en el valor hash.
En una funcin hash se dice que no hay correlacin cuando los bits
de las cadenas de entrada y los bits de las cadenas de salida no
estn relacionados, es decir, cuando una modificacin minscula (ej
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 hash resultante cambie con probabilidad 0.5.
Cuando esto sucede (o casi) se dice que se produce un efecto
avalancha
En funciones hash usadas para bsqueda normalmente se buscan
funciones tan continuas como sea posible; de forma que entradas que
difieran un poco deberan tener valores hash similares o iguales. Sin
embargo la continuidad no es deseable para funciones hash usadas
para sumas de verificacin o funciones criptogrficas por evidentes
razones.

Resistencia a la computacin de nuevos valores


hash[editar]
16

Una funcin hash con clave K,


se dice que
tiene resistencia a la computacin de nuevos valores hash (en
ingls Computation-resistance) si a partir de un rango de pares
conocidos
dato x

no puede ser computado para un nuevo


con

para cualquier i, sin que K sea conocida.

Observar que la propiedad anterior implica que no debera ser posible


calcular K a partir de un rango de pares conocidos
esta propiedad se la llama propiedad de no recuperacin de
clave (en ingls key non-recovery).

.A

El estudio de este tipo de propiedades son muy tiles en el campo de


la criptografa para los llamados 'cdigos de autenticacin de
mensajes'

Familias de funciones hash y propiedades


asociadas[editar]
Motivacin17 [editar]
Podramos imaginarnos un algoritmo probabilstico de tiempo
polinomial con dos mensajes codificados en el algoritmo que dan
lugar a una colisin para una especfica funcin hash. El algoritmo
simplemente devolvera los dos mensajes que causan la colisin.
Crear tal algoritmo puede ser extremadamente difcil, pero una vez
construido podra ser ejecutado en tiempo polinomial. Sin embargo,
definiendo una familia de funciones hash como una familia infinita de
funciones hash nos impide que la bsqueda de este algoritmo tenga
xito para todas las funciones hash de la familia, porque hay infinitas.
Por tanto las familias hash nos proporcionan un mecanismo
interesante para el estudio y categorizacin de las funciones hash
respecto a su fortaleza frente a la bsqueda de colisiones por parte de
un adversario. Este tipo de estudios es muy til en el campo de
la criptografa para los llamados 'cdigos de deteccin de
modificaciones'.

Concepto[editar]
Sea
, el dominio de la funcin, sea
el rango de
la funcin. Sea
el conjunto de todas las posibles claves
(tericamente es infinito aunque en la prctica es finito),

Una familia de funciones hash


funciones hash de la forma
equivalente
indexada por una clave
propiedades:

es un conjunto infinito de
(notacin

, donde cada funcin de la familia es


que cumple las siguientes

es accesible, es decir hay un algoritmo probabilstico de tiempo


polinomial, que sobre una entrada
devuelve una instancia

es muestreable, es decir, hay un algoritmo probabilstico 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 funcin hash, no una familia.


Sin embargo SHA-1 puede ser modificado para construir una familia
finita de funciones. M. Bellare y P. Rogaway18 modificaron SHA-1 de
tal forma que la claves especifica las constantes usadas en la cuarta
ronda de las funciones. En este caso el tamao de la clave es de 128
bits y por tanto

Observar que en la definicin de una funcin hash el dominio se


puede formalizar como
, sin embargo en una funcin hash
definida como instancia de un elemento de una familia de funciones
hash 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 tamao apropiado
para acomodar cualquier mensaje que sea necesario.

Familia de funciones hash resistente a


colisiones[editar]
De forma informal una familia de funciones es familia de funciones
hash resistente a colisiones, tambin llamadasCRHF por sus siglas
en ingls (Collision Resistant Hash Function), dada una funcin
escogida aleatoriamente de la familia, un adversario es incapaz de
obtener una colisin para ella.19
Definicin formal[editar]
20

Se dice que una familia de funciones hash es una (t,)-familia hash

resistente a colisiones
con la forma
con n,l y k enteros positivos y n>=l, que satisfacen la siguiente
condicin: Sea
un buscador de colisiones de cadenas que para un
entrada K en el espacio de claves usa tiempo
y obtiene como
salida
cada

, un par

tal que

. Para

,
.

Observar que la probabilidad es tomada sobre las elecciones


aleatorias de .

Mirando esta definicin 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 definicin no se mete en cmo se eligen las funciones hash de
la familia. Este punto es crucial.21 En realidad, en cualquier
aplicacin de funciones hash resistentes a colisiones, alguna
parte P tienen que elegir una funcin de la familia de forma
aleatoria para producir la descripcin de la funcin. Es importante
distinguir entre dos casos:

La eleccin aleatoria se puede hacer pblica (o 'publiccoin'). La eleccin aleatoria puede ser revelada como parte
de la descripcin de la funcin.

La eleccin aleatoria se tiene que mantener secreta (o


'secret-coin'). La revelacin la eleccin aleatoria realizada
puede que permita encontrar colisiones. Por tanto P tiene que
mantener secreta la eleccin despus de producir la
descripcin de la funcin.

Evidentemente una familia CRHF elegible de forma pblica


(public-coin) tambin puede trabajar si uno elige o mantiene la
eleccin de forma privada (secret-coin).

Funcin hash universal[editar]


Una funcin hash universal es un familia de funciones donde la
probabilidad de colisin entre dos textos escogidos es
despreciable.22
Definicin formal23 [editar]
Una k-familia de funciones hash universal es un conjunto H de
funciones
tal que para cada
elemento
y todos los (no necesariamente
distintos)
.

24

Una familia de funciones hash


es -casi universal o AU (del ingls -almost universal) si es menor que la
probabilidad de que dos entradas distintas m,n tengan el mismo
valor hash asociado, estando la funcin hash elegida
aleatoriamente entre los miembros de . De la definicin se
percibe que son interesantes aquellas familias que tienen un valor
pequeo de indicando que el adversario no puede encontrar un
par de entradas que producen el mismo valor hash, para una
funcin hash elegida aleatoriamente de entre los elementos la
familia.

Familia de funciones hash universal de un solo


sentido[editar]
Una familia de funciones hash universal de un solo sentido,
tambin llamadas UOWHF por sus siglas en ingls (Universal
One-Way Hash Function), es una familia de funciones hash
universales donde, elegida una clave K aleatoriamente en el

espacio de claves, dada una cadena x con valor hash hK(x) es


difcil encontrar un x' distinta de x tal que hK(x)=hK(x'). Al par (x,x')
se le llama par de colisin
Definicin formal[editar]
25 26

Se dice que una familia de funciones hash


es (t,)funcin hash universal de un slo sentido (UOWHF) si no
existe ningn 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

slo tiene como parmetro de entrada el conjunto de la


familia de funciones hash. Produce como salida x y State. x
es el valor hash objetivo y State es alguna informacin extra
que puede ayudar a A2 a encontrar la colisin.

tiene como parmetros 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 definicin 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 definicin se ve que son interesantes aquellas
familias que tienen un t/ suficientemente grande.

Comparacin UOWHF y CRHF27 [editar]


Una familia UOWHF es una nocin ms dbil que una familia
CRHF. En una CRHF, a el oponente primero se le da la clave
y despus ella o l tiene que producir la pareja de entradas
que colisiona. Encontrar colisiones para un parmetro fijo de
una UOWHF, puede que sea bastante ms fcil, pero esto no
ayudar a un oponente a violar la seguridad. Simon28 ha
demostrado que existe un orculo relativo a el cual UOWHF
existe, pero no CRHF.

Funciones hash iterativas. Construccin


de Merkle-Damgrd[editar]
29 30 31

Muchas funciones hash se construyen mediante el


proceso iterativo siguiente hasta conseguir el valor hash de la
entrada X, h(X):

El nmero de bits de la entrada X (en principio de longitud


arbitraria) tiene que ser mltiplo de la longitud de bloque.
Para conseguirlo se tiene una regla de padding que
alarga la entrada a una longitud aceptable. Normalmente
esta regla consiste en aadir al final de la entrada unos
smbolos 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.

H0=IV
Hi=f(xi,Hi-1), i=1,2,...,t y
h(X)=g(Ht).

Se realiza un proceso iterativo de la siguiente forma:

Al valor IV se le llama valor inicial y se representa por


esas siglas por el trmino ingls Initial Value. A la funcin
f se la llama funcin de ronda o funcin de
compresin. A la funcin g se la llama transformacin
de salida. Lo que hace la funcin g es derivar a partir de
Ht tantos bits como se quieran en la salida de la funcin.
Frecuentemente g es la funcin identidad o un
truncamiento de Ht.
En este tipo de descripcin de funciones hash hay dos
elecciones importantes que afectarn a las propiedades
que tendr la funcin:

La eleccin de la regla de padding. Si lo que se


quiere es evitar colisiones es recomendable que la
regla de padding no permita que existan dos
mensajes que sean rellenados a el mismo mensaje.

La eleccin de valor inicial (IV). Debera ser definido


como parte de la descripcin de la funcin hash.

A las funciones que se construyen mediante el anterior


sistema se dice que son son funciones hash iterativas.
A esta forma de construccin recursiva se la conoce
tambin como de Merkle-Damgrd debido a que fue
usado por primera vea por R. Merkle y I. Damgrd
independientemente en 1989.

Aplicaciones[editar]
Las funciones hash son usadas en mltiples campos.
Ejemplos:

Herramienta bsica para la construccin de utilidades


ms complejas:

Construccin de estructuras de datos: Su uso en


distintas estructuras de datos hacen ms
eficientes las bsquedas. Ej. tablas hash.

Construccin 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
eleccin hasta si acaso el momento final (la
eleccin puede permanecer oculta).

Construccin de algoritmos de cifrado/descifrado.


Por ejemplo se usa en la construccin
de cifradores de flujo y decifradores de bloque.

Construccin de algoritmos generadores de


nmeros pseudoaleatorios.

Construccin de cadenas pseudoaleatorias. Por


ejemplo el llamado modelo de orculo
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
criptogrficos.

Construccin de algoritmos de testeo de


pertenencia o no a un conjunto.- Se han usado
funciones hash para la construccin
de acumuladores criptogrficos y filtros de Bloom.
Estas tecnologas permiten establecer
mecanismos que permiten pronunciarse, a veces
con cierto grado de error, sobre la pertenencia o
no a cierto conjunto.

Construccin de mtodos de generacin 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
slo el valor hash del mismo. Algunas de las
motivaciones para hacer esto son:32

Cuando se usa para firmar algoritmos de


firma por bloques donde los mensajes
son ms largos que el bloque, no es
seguro firmar mensajes bloque a bloque
ya que un enemigo podra borrar bloques
del mensaje firmado o insertar bloques
de su eleccin en el mensaje antes de
que sea firmado. Al usar una funcin
hash hacemos una transformacin que

hace a la firma dependiente de todas las


partes del mensaje.

Normalmente los valores hash son


mucho ms 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 criptoanlisis 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
elesquema de firma de Merkle.

Suma de verificacin (del ingls checksum):


Cuando queremos almacenar o transmitir
informacin, para protegernos frente a errores
fortuitos en el almacenamiento o transmisin, es
til acompaar a los datos de valores hash
obtenidos a partir de ellos aplicando funciones
hash con ciertas propiedades de forma que
puedan ser usados para verificar hasta cierto
punto el propio dato. A el valor hash se le
llama Suma de verificacin.

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 hash del contenido de forma
que ese valor tiene que obtenerse al aplicar la
funcin hash sobre el contenido distribuido
asegurando as la integridad. A esto se le suele
llamar checksum criptogrfico debido a que es
un checksum que requiere el uso defunciones
hash criptogrficas para que sea difcil generar
otros ficheros falso que tengan el mismo valor
hash. Otro ejemplo de uso esta tecnologa para
verificar la integridad es calcular y guardar el
valor hash 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

hash como los rboles de Merkle que se basan


en aplicar reiteradamente las funciones hash
sobre los elementos del conjunto y sobre los
valores hash resultantes.

Herramientas vinculadas a la autenticacin y control


de acceso

Autenticacin de entidades: Por ejemplo es


frecuente el uso para este propsito de funciones
hash deterministas con clave secreta que tienen
ciertas propiedades (Cdigos de autenticacin
de mensajes). En estos esquemas tanto el
servicio de autenticacin, o verificador, como la
entidad que se quiere autenticar mantienen en
secreto la clave de la funcin hash. El esquema
funciona de la siguiente forma: El que se quiere
autenticar genera un mensaje y calcula su valor
hash. Estos dos datos se mandan al verificador.
El verificador comprueba que el valor hash 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 hash). 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 tambin los valores hash.

Proteccin de claves: Para comprobar la


correccin 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 hash resultante de aplicar
una funcin hash determinista. De esta forma
para verificar si una clave es correcta basta con
aplicar la funcin hash y verificar si el resultado
coincide con el que tenemos almacenado.

Derivacin de claves: Por ejemplo en algunas


aplicaciones usan funciones hash para derivar
una clave de sesin a partir de un nmero de
transaccin y una clave maestra. Otro ejemplo de
aplicacin sera el uso de funciones hash para
conseguir sistemas de autenticacin con claves
de un solo uso o OTP (del ingls One Time
Password). En este tipo de sistemas la clave es
vlida 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 hash) que pueden tener un solo uso y
as evitar ataques de REPLAY.

Herramienta para la identificacin y la rpida


comparacin de datos: Se pueden usar funciones

hash para proporcionar una identificacin de objetos


o situaciones. Una buena funcin hash para este
propsito debera ser rpida 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
idnticos. Por ejemplo podemos considerar iguales a
dos ficheros que son distintos bit a bit porque
realmente son la digitalizacin de la misma pelcula.
Es labor del diseo de la funcin hash capturar la
esencia del criterio de igualdad. Por otra parte la
evaluacin de la funcin hash debera ser poco
costosa para facilitar la rpida comparacin de
elementos candidatos a ser iguales y de esta forma
poder implementar algoritmos de bsqueda rpidos.

Huellas digitales.- El uso de funciones hash


aplicados a cadenas permiten obtener valores
hash que pueden usarse detectar fcilmente la
aparicin de esos datos en distintos sitios.
Pueden ser usados para distintos usos como
bsqueda de virus, autenticacin con datos
biomtricos, deteccin de copias,...La idea puede
usarse ms all de textos y ser aplicado a
cualquier tipo de contenido multimedia:33 34 Las
funciones hash especficamente diseadas para
este propsito obtienen valores hash que
permiten detectar caractersticas intrnsecas del
contenido multimedia, de forma que se pueda
identificar si dos archivos diferentes se
corresponden con el mismo contenido
multimedia. Como aplicacin prctica de este tipo
de algoritmo tenemos los programas que se
ejecutan en dispositivos mviles y que son
capaces de adivinar el ttulo de la cancin que
est sonando en la habitacin solamente
capturando el sonido y comparndolo con estos
valores hash. Este tipo de algoritmos tambin se
puede utilizar para proteccin de contenidos
multimedia ya que permite validar
automticamente si cierto fichero multimedia est
protegido o no por derechos de autor.

Identificacin de contenidos: En algunas


aplicaciones se usa el valor hash de un contenido
multimedia para identificar ese contenido
independientemente de su nombre o ubicacin.
Esto es ampliamente usado en redesPeer-topeer 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 ms rpido a los
registros (incluso ms rpido que teniendo
ndices).

Algortmos de bsqueda de subcadenas: Los


algoritmos de bsqueda de subcadenas tratan el
problema de buscarsubcadenas, a la que llaman
patrn, dentro de otra cadena a la que llaman
texto. Hay algoritmos de este tipo que usan
funciones hash en su implementacin.
Ejemplo: algoritmo Karp-Rabin.

Deteccin 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 criptografa ( Cifradores, acumuladores
criptogrficos, firma digital, protocolos criptogrficos de
autenticacin,...). La Criptografa es una rama de las
matemticas que proporciona herramientas para
conseguir seguridad en los sistemas de informacin. Las
funciones hash interesantes en el rea de
la criptografa se caracterizan por cumplir una serie de
propiedades que permiten a las utilidades criptogrficas
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 criptogrficas.

También podría gustarte