Documente Academic
Documente Profesional
Documente Cultură
A las funciones resumen también se les llama funciones hash o funciones digest.123 Una función hashH es
una función computable mediante un algoritmo tal que:
Tiene como entrada un conjunto de elementos, que suelen ser cadenas, y los convierte en un rango de salida
finito, normalmente cadenas de 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.
Terminología asociada[editar]
Al conjunto U se le llama dominio de la función resumen. A un elemento de U se le llama pre-imagen 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.
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:
De rango variable
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.
Formalización:
{\displaystyle k1\neq k2} k1 \neq k2 implica {\displaystyle h(k1)\neq h(k2)} h(k1) \neq h(k2)
Cuando no se cumple la propiedad de inyectividad se dice que hay colisiones. Hay una colisión cuando
{\displaystyle k1\neq k2} k1 \neq k2 y {\displaystyle h(k1)=h(k2)} h(k1) = h(k2).
Determinista
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 hash no 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.
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]
7
Una 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:
2
Una 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
11
Una función resumen con clave K, se dice que tiene resistencia a la computación de nuevos
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ía para los
llamados códigos de autenticación de mensajes.
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
uniformemente elementos de .
es computable en tiempo polinomial, es decir, hay un algoritmo de tiempo polinomial (en l) que sobre
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.
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
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).
Una k-familia de funciones resumen universal es un conjunto H de funciones tal que para cada
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.
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').
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
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:
Aplicaciones[editar]
Las funciones resumen son usadas en múltiples campos. Ejemplos: