fbpx
Wikipedia

Función hash

Una función resumen,[1][2]​ en inglés hash function,[3][4][5]​ también conocida con el híbrido función hash, convierte uno o varios elementos de entrada a una función en otro elemento.​​​ También se las conoce como función extracto, del inglés digest function, función de extractado y por el híbrido función digest.

Una función de hash en funcionamiento.

Una función hash H es una función computable mediante un algoritmo tal que:

La función hash 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.

Hay que tener en cuenta 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 cantidad de cifras. Cabe destacar que es posible convertir todos los números a una cantidad especifica 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 acotado de símbolos. La idea básica de un valor hash es que sirva como una representación compacta de la cadena de la entrada. Por esta razón, se dice que estas funciones permiten resumir datos del conjunto dominio.

Orígenes del término

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

Al conjunto U se le llama dominio de la función hash. 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

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

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

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

Calcular el valor hash necesita poco costo (computacional, de memoria, etc.).

Compresión

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

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

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

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 hash perfectas 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

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.

Propiedades para analizar la resistencia frente a colisiones

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

[4]​Se 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

[4]​Se 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)

[4]​Se 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.[6][7]​ Por otro lado se puede decir que la mayoría de las funciones resumen CRHF son resistentes a preimagen.[4]​ La resistencia a colisiones implica resistencia a preimagen para funciones hash con salida aleatoria uniforme.[8]

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)

[9]​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:

[4]​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

[10]​H 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.

[11]​Por 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

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

[12]​Una 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 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 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

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 hash iguales.

Continuidad. Efecto avalancha

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

[13]​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ía para los llamados códigos de autenticación de mensajes.

Familias de funciones resumen y propiedades asociadas

Motivación[14]

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

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. Rogaway[15]​ 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

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.[16]

Definición formal

[17]​Se 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.[18]​ 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

Una función resumen universal es una familia de funciones donde la probabilidad de colisión entre dos textos escogidos es despreciable.[19]

Definición formal[20]

Una k-familia de funciones resumen universal es un conjunto H de funciones   tal que para cada elemento   y todos los (no necesariamente distintos)  .

 

[21]​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

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

[22][23]​Se 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 CRHF[24]

Una familia UOWHF es una noción más débil que una familia CRHF. En una CRHF, al 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. Simon[25]​ ha demostrado que existe un oráculo relativo al cual UOWHF existe, pero no CRHF.

Punteros Hash

Un puntero hash está compuesto por dos partes:

  • Puntero a la zona donde se almacena la información.
  • Hash de dicha información.

El puntero puede ser utilizado para obtener la información, mientras que el valor hash puede ser utilizado para verificar que esa información no ha sido modificada, asegurando la autenticidad de esta.

 

Estructuras de datos construidas utilizando punteros hash

Blockchain

[26]​Una de las aplicaciones que tienen los punteros hash es que pueden ser utilizados para construir una cadena de bloques (blockchain), mediante la utilización de listas enlazadas.

 

El primer bloque (bloque 0) de la cadena se conoce como bloque génesis,[27]​ en el cual se origina la cadena de bloques. A partir del segundo bloque (bloque 1) se almacena un puntero hash al bloque anterior, el valor hash del bloque anterior y la información del bloque actual. Gracias a este mecanismo, es imposible interferir en un bloque de la cadena de bloques sin que los demás se den cuenta.

Para cualquier bloque de la cadena; el bloque i almacenará un puntero hash al boque i-1, el valor hash del bloque i-1 y la información del bloque i.

Propiedad a prueba de manipulación de Blockchain

Solamente es necesario mantener el puntero hash al último bloque de la cadena de bloques.

Entonces, cuando alguien muestra la cadena de bloques completa y afirma que los datos no se han modificado, podemos saber si algún bloque de la cadena fue alterado, ya que es posible recorrer los bloques hacia atrás y verificar todos los valores hash uno por uno.

Ejemplo de funcionamiento: Registro a prueba de manipulaciones
  • Un atacante quiere manipular un bloque de la cadena de bloques, por ejemplo, el bloque 1.
  • El atacante cambia el contenido del bloque. Debido a la propiedad de resistencia a colisiones de las funciones hash, no será capaz de encontrar otra información que tenga el mismo valor hash que el anterior. Por tanto, ahora el valor hash del bloque 1 ha cambiado.
  • Ahora, tras el cambio, se podría detectar la inconsistencia entre estos datos y el puntero hash del siguiente bloque, a menos que el atacante también cambie dicho puntero hash en el bloque siguiente, bloque 2.
  • Si el atacante modifica el puntero hash, estos dos coinciden, pero el contenido del bloque 2 ha cambiado. Esto significa que su valor hash no va a coincidir con el puntero hash del bloque 3, por lo que para que todo sea coherente, será necesario modificar el puntero hash del bloque 3.
  • Ocurrirá lo mismo con todos los bloques siguientes.
  • Finalmente, el atacante va al puntero hash del último bloque de la cadena de bloques, el cual es un obstáculo para el atacante, ya que nosotros guardamos y recordamos el puntero hash del último bloque. Detectaríamos la inconsistencia.


Si un atacante quiere modificar los datos en cualquier parte de la cadena, debe modificar todos los punteros hash desde el principio para conseguir la coherencia, pero al llegar al puntero hash que guarda el último bloque no podrá manipular el encabezado de la cadena

 

Puzles Hash

[28]​La propiedad puzzle-friendly permite la minería de las criptomonedas basadas en el algoritmo de prueba de trabajo. Un ejemplo de criptomoneda que está basado en este algoritmo es Bitcoin.

Dados los siguientes valores:

  • H(), una función hash SHA-256.
  • id, un número aleatorio elegido entre un conjunto de números, llamado PUZZLE-ID.
  • Y, un rango de resultados/valores hash válidos.

El objetivo es encontrar una solución x, que forma parte de la entrada de la función.

y =  (id || x) ϵ Y

Se dice que una función hash es amistosa a los puzles, si para cualquier valor de salida y dentro del rango de valores de Y, en este caso como es SHA-256 sería 2256 valores posibles; con una id perteneciente a una muestra de alta incertidumbre, encontrar una x específica sería imposible en un tiempo significativamente menor a 2256 computaciones. La única forma de encontrarla es recorrer el espacio de forma aleatoria, debido a su tamaño. Esto es la característica primordial de esta propiedad y hace posible la descentralización.

Se puede reformular diciendo que, para resolver el puzle, se debe encontrar una x que genere un resultado contenido en el intervalo de Y.

  • Si hay más posibles resultados y en el conjunto Y, hay más posibles soluciones de x. Si el rango del conjunto Y corresponde a todo el intervalo de este mismo rango, el problema es trivial.
  • Si solamente hay un único valor y en el conjunto Y, es lo más complicado posible, e incluso imposible si la función H es unidireccional.

La dificultad del puzle depende directamente del tamaño que tiene el rango Y.

La propiedad de resistencia a colisiones se cumple, pues existe un valor de x para cada valor de y del conjunto Y.

Funciones hash iterativas. Construcción de Merkle-Damgård

[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 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

Las funciones en 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 un 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:[32]
        • 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 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. 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 tenga 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 de esta tecnología para verificar la integridad es calcular y guardar el valor resumen de archivos para poder verificar posteriormente que nada (Ej un virus) los haya 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 se 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 para 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:[33][34]​ 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).
    • Algoritmos 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 resistentes frente ataques que intenten vulnerar la seguridad del sistema. A las funciones hash que cumplen estas propiedades se les llama funciones hash criptográficas.

Véase también

Referencias

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

Enlaces externos

  • Funciones hash para búsqueda en tablas hash (en inglés).
  • Generador de resúmenes: generador en línea de hashes (CRC, MD2, MD4, MD5, SHA1, Tiger, Snefru, RipeMD, Whirlpool, Haval, entre otros). Aproximadamente 123 algoritmos y 200 modos (Hex, Base64).
  • (en inglés) , Universidad de California en Irvine.
  •   Datos: Q183427

función, hash, función, resumen, inglés, hash, function, también, conocida, híbrido, función, hash, convierte, varios, elementos, entrada, función, otro, elemento, también, conoce, como, función, extracto, inglés, digest, function, función, extractado, híbrido. Una funcion resumen 1 2 en ingles hash function 3 4 5 tambien conocida con el hibrido funcion hash convierte uno o varios elementos de entrada a una funcion en otro elemento Tambien se las conoce como funcion extracto del ingles digest function funcion de extractado y por el hibrido funcion digest Una funcion de hash en funcionamiento Una funcion hash H es una funcion computable mediante un algoritmo tal que H U M displaystyle H U rightarrow M x h x displaystyle x rightarrow h x La funcion hash 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 funcion actua como una proyeccion del conjunto U sobre el conjunto M Hay que tener en cuenta 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 numeros de enteros ya que podemos considerar que la longitud fija es la del numero con mayor cantidad de cifras Cabe destacar que es posible convertir todos los numeros a una cantidad especifica de cifras simplemente anteponiendo ceros Normalmente el conjunto U tiene un numero elevado de elementos y M es un conjunto de cadenas con un numero acotado de simbolos La idea basica de un valor hash es que sirva como una representacion compacta de la cadena de la entrada Por esta razon se dice que estas funciones permiten resumir datos del conjunto dominio Indice 1 Origenes del termino 2 Terminologia asociada 3 Parametros adicionales 3 1 Funciones resumen con clave 4 Propiedades 4 1 Bajo costo 4 2 Compresion 4 3 Uniforme 4 4 De rango variable 4 5 Inyectividad y funcion hash perfecta 4 6 Determinista 4 7 Propiedades para analizar la resistencia frente a colisiones 4 7 1 Resistencia a la primera preimagen 4 7 2 Resistencia a la segunda preimagen 4 7 3 Resistencia a colisiones CRHF 4 7 4 Funcion resumen de un solo sentido OWHF 4 7 5 Resistencia a la casi colision 4 7 6 Funciones con colisiones de hash parciales 4 7 7 Resistencia a las preimagenes parciales 4 8 Con normalizacion de datos 4 9 Continuidad Efecto avalancha 4 10 Resistencia a la computacion de nuevos valores hash 5 Familias de funciones resumen y propiedades asociadas 5 1 Motivacion 14 5 2 Concepto 5 3 Familia de funciones resumen resistente a colisiones 5 3 1 Definicion formal 5 4 Funcion hash universal 5 4 1 Definicion formal 20 5 5 Familia de funciones hash universal de un solo sentido 5 5 1 Definicion formal 5 6 Comparacion UOWHF y CRHF 24 6 Punteros Hash 6 1 Estructuras de datos construidas utilizando punteros hash 6 1 1 Blockchain 6 1 1 1 Propiedad a prueba de manipulacion de Blockchain 6 1 1 2 Ejemplo de funcionamiento Registro a prueba de manipulaciones 7 Puzles Hash 8 Funciones hash iterativas Construccion de Merkle Damgard 9 Aplicaciones 10 Vease tambien 11 Referencias 12 Enlaces externosOrigenes del termino EditarEl termino hash proviene aparentemente de la analogia con el significado estandar en ingles 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 memorandum fechado en enero de 1953 Su utilizacion masiva no fue hasta despues de 10 anos Terminologia asociada EditarAl conjunto U se le llama dominio de la funcion hash 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 funcion hash A un elemento de M se le llama valor resumen codigo hash o simplemente hash Se dice que se produce una colision cuando dos entradas distintas de la funcion resumen producen la misma salida De la definicion de funcion resumen podemos decir que U el dominio de la funcion puede tener infinitos elementos Sin embargo M el rango de la funcion tiene un numero finito de elementos debido a que el tamano de sus cadenas es fijo Por tanto la posibilidad de existencia de colisiones es intrinseca a la definicion de funcion hash Una buena funcion resumen es una que tiene pocas colisiones en el conjunto esperado de entrada Es decir se desea que la probabilidad de colision sea muy baja Parametros adicionales EditarLa definicion formal dada a veces se generaliza para poder aprovechar las funciones hash en otros ambitos Para ello a la funcion resumen se le anaden nuevos parametros de forma que el valor hash no es solo funcion del contenido en si sino ademas de otros nuevos factores Para hallar valores resumen de ficheros a veces se usan ademas del contenido en si diversos parametros como el nombre del archivo su longitud hora de creacion etc Otras veces se anaden parametros que permiten configurar el comportamiento de la funcion Por ejemplo la funcion resumen puede recibir como parametro una funcion de generacion de valores pseudoaleatorios que es usada dentro del algoritmo de la funcion hash Otros ejemplos de parametros son el uso de valores sal el uso de claves secretas el uso de parametros que especifican el rango de la funcion funciones hash de rango variable el uso de parametros que especifican el nivel de seguridad que se quiere en el valor resumen de salida funciones hash dinamicas etc Funciones resumen con clave Editar Una funcion resumen con clave HK en ingles keyed hash function es una funcion resumen H que tiene un parametro secreto K que pertenece al conjunto posible de claves K displaystyle mathcal K 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 ingles unkeyed hash function Propiedades EditarLa calidad de una funcion resumen viene definida con base en la satisfaccion 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 Compresion Editar Una funcion hash comprime datos si puede mapear un dominio con datos de longitud muy grande a datos con longitud mas pequena Uniforme Editar Se dice que una funcion resumen es uniforme cuando para una clave elegida aleatoriamente es igualmente probable tener un valor resumen determinado independientemente de cualquier otro elemento Para una funcion hash H uniforme del tipo H 0 1 m 0 1 n es decir Las cadenas estan construidas sobre un alfabeto de 2 simbolos Alfabeto binario El dominio es el conjunto de las cadenas de longitud m El rango es el conjunto de las cadenas de longitud npodemos 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 nPara algoritmos de busqueda si todas las entradas son igualmente probables se busca esta propiedad para minimizar el numero de colisiones ya que cuantas mas colisiones haya sera mayor el tiempo de ejecucion de las busquedas 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 funcion hash se le debe pasar un parametro que le permita saber en que rango se mueve la ejecucion para hallar el valor resumen Inyectividad y funcion hash perfecta Editar Se dice que la funcion resumen es inyectiva cuando cada dato de entrada se mapea a un valor resumen diferente En este caso se dice que la funcion resumen es perfecta Para que se de es necesario que la cardinalidad del conjunto dominio sea inferior o igual a la cardinalidad del conjunto imagen Normalmente solo se dan funciones hash perfectas cuando las entradas estan preestablecidas Ejemplo mapear los dias del ano en numeros del 1 al 366 segun el orden de aparicion Formalizacion k 1 k 2 displaystyle k1 neq k2 implica h k 1 h k 2 displaystyle h k1 neq h k2 Cuando no se cumple la propiedad de inyectividad se dice que hay colisiones Hay una colision cuando k 1 k 2 displaystyle k1 neq k2 y h k 1 h k 2 displaystyle h k1 h k2 Determinista Editar Una funcion 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 parametros externos tales como generadores de numeros pseudoaleatorios o la fecha Tampoco son deterministas aquellas funciones hash que dependen de la direccion de memoria en la que esta almacenada la cadena de entrada Esa direccion es accidental y no se considera un cambio de la cadena entrada en si De hecho puede cambiar dinamicamente durante la propia ejecucion del algoritmo de la funcion hash Propiedades para analizar la resistencia frente a colisiones Editar El estudio de este tipo de propiedades es muy util en el campo de la criptografia para los llamados codigos de deteccion de modificaciones Resistencia a la primera preimagen Editar 4 Se dice que una funcion resumen tiene resistencia a la primera preimagen o simplemente que tiene resistencia a preimagen del ingles preimage resistant si dado un valor hash y es computacionalmente intratable encontrar x tal que h x y Resistencia a la segunda preimagen Editar 4 Se dice que una funcion resumen tiene resistencia a la segunda preimagen en ingles second preimage resistant si dado un mensaje x es computacionalmente intratable encontrar un x x x displaystyle x neq x tal que h x h x Resistencia a colisiones CRHF Editar 4 Se dice que una funcion hash tiene resistencia a colisiones o que es resistente a colisiones o CRHF del ingles Collision Resistant Hash Function si encontrar un par x y displaystyle x y con y x displaystyle y neq x tal que h x h y displaystyle h x h y es computacionalmente intratable Es decir es dificil encontrar dos entradas que tengan el mismo valor resumen Como encontrar una segunda preimagen no puede ser mas facil que encontrar una colision entonces la resistencia a colisiones incluye la propiedad de resistencia a la segunda preimagen 6 7 Por otro lado se puede decir que la mayoria de las funciones resumen CRHF son resistentes a preimagen 4 La resistencia a colisiones implica resistencia a preimagen para funciones hash con salida aleatoria uniforme 8 En algunos trabajos a estas funciones se les llama funciones resumen de un solo sentido fuertes del ingles strong one way hash function para resaltar que es fuerte debido a que hay libre eleccion de los dos valores x e y Funcion resumen de un solo sentido OWHF Editar 9 Una funcion hash se dice que es una funcion resumen de un solo sentido o que es OWHF del ingles One Way Hash Function si tiene las propiedades de resistencia a preimagen y de resistencia a segunda preimagen Es decir es dificil encontrar una entrada cuya hash sea un valor resumen preespecificado Observar que es diferente a la definicion general que se hace de funciones de un solo sentido 4 Una funcion se dice que es una funcion de un solo sentido o que es OWF si para cada x del dominio de la funcion es facil 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 funcion resumen ni que sea resistente a segunda preimagen En algunos trabajos a estas funciones se les llama funciones hash de un solo sentido debiles del ingles weak one way hash function para resaltar que es debil en contraste con CRHF que es fuerte debido a que al cumplir la propiedad de resistencia a segunda preimagen no hay libre eleccion en la seleccion del valor x y por tanto del valor h x en el que se tiene que producir la colision Resistencia a la casi colision Editar 10 H es resistente a la casi colision en ingles near colission resistance si es dificil encontrar dos mensajes m displaystyle m y m displaystyle m con m m displaystyle m neq m para las cuales sus imagenes H m displaystyle H m y H m displaystyle H m difieran solamente en unos pocos bits 11 Por ejemplo podemos tener una funcion resistente a colisiones de 256 bits que no es resistente a la casi colision porque se pueden encontrar casi colisiones para los 224 bits de mas 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 mas comunmente que sean iguales es los n bits mas significativos Por ejemplo con SHA1 para conseguir una colision total con fuerza bruta necesitariamos 2 160 displaystyle 2 160 comprobaciones o al menos 2 80 displaystyle 2 80 usando la paradoja del cumpleanos Sin embargo si vamos reduciendo el numero de bits mas significativos que tienen que coincidir el numero 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 preimagenes parciales Editar 12 Una funcion resumen tiene resistencia a preimagenes parciales en ingles Partial preimage resistance si es dificil 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 2n t operaciones de hash encontrarlo A una funcion resumen resistente a preimagenes parciales tambien se le dice que es localmente de un solo sentido del ingles local one wayness Con normalizacion de datos Editar En algunas aplicaciones las cadenas de entrada pueden contener caracteristicas que son irrelevantes cuando comparamos las cadenas Por ejemplo en algunas aplicaciones las mayusculas 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 funcion resumen es continua cuando una modificacion minuscula ej un bit en la cadena de entrada ocasiona pequenos cambios en el valor hash En una funcion resumen se dice que no hay correlacion cuando los bits de las cadenas de entrada y los bits de las cadenas de salida no estan relacionados es decir cuando una modificacion minuscula 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 avalanchaEn funciones resumen usadas para busqueda normalmente se buscan funciones tan continuas como sea posible de forma que entradas que difieran un poco deberian tener valores hash similares o iguales Sin embargo la continuidad no es deseable para funciones resumen usadas para sumas de verificacion o funciones criptograficas por evidentes razones Resistencia a la computacion de nuevos valores hash Editar 13 Una funcion resumen con clave K h K x displaystyle h K x se dice que tiene resistencia a la computacion de nuevos valores hash en ingles Computation resistance si a partir de un rango de pares conocidos x i h K x i displaystyle x i h K x i no puede ser computado para un nuevo dato x h K x displaystyle h K x con x x i displaystyle x neq x i para cualquier i sin que K sea conocida Observar que la propiedad anterior implica que no deberia ser posible calcular K a partir de un rango de pares conocidos x i h K x i displaystyle x i h K x i A esta propiedad se la llama propiedad de no recuperacion de clave en ingles key non recovery El estudio de este tipo de propiedades son muy utiles en el campo de la criptografia para los llamados codigos de autenticacion de mensajes Familias de funciones resumen y propiedades asociadas EditarMotivacion 14 Editar Podriamos imaginarnos un algoritmo probabilistico de tiempo polinomial con dos mensajes codificados en el algoritmo que dan lugar a una colision para una especifica funcion resumen El algoritmo simplemente devolveria los dos mensajes que causan la colision Crear tal algoritmo puede ser extremadamente dificil pero una vez construido podria ser ejecutado en tiempo polinomial Sin embargo definiendo una familia de funciones resumen como una familia infinita de funciones resumen impide que la busqueda de este algoritmo tenga exito para todas las funciones resumen de la familia porque hay infinitas Por tanto las familias resumen proporcionan un mecanismo interesante para el estudio y categorizacion de las funciones resumen respecto a su fortaleza frente a la busqueda de colisiones por parte de un adversario Este tipo de estudios es muy util en el campo de la criptografia para los llamados codigos de deteccion de modificaciones Concepto Editar Sea D S l displaystyle D Sigma l el dominio de la funcion sea R S n displaystyle R Sigma n el rango de la funcion Sea K displaystyle mathcal K el conjunto de todas las posibles claves teoricamente es infinito aunque en la practica es finito Una familia de funciones hash H displaystyle mathcal H es un conjunto infinito de funciones hash de la forma H K D R displaystyle H mathcal K times D rightarrow R notacion equivalente H K D R displaystyle H K D rightarrow R donde cada funcion de la familia es indexada por una clave K K displaystyle K in mathcal K que cumple las siguientes propiedades H displaystyle mathcal H es accesible es decir hay un algoritmo probabilistico de tiempo polinomial que sobre una entrada K displaystyle K devuelve una instancia H K displaystyle H K D displaystyle D es muestreable es decir hay un algoritmo probabilistico de tiempo polinomial que selecciona uniformemente elementos de D displaystyle D H K displaystyle H K es computable en tiempo polinomial es decir hay un algoritmo de tiempo polinomial en l que sobre una entrada M D displaystyle M in D computa M D displaystyle M in D Ejemplo SHA 1 es una sola instancia de funcion resumen no una familia Sin embargo SHA 1 puede ser modificado para construir una familia finita de funciones M Bellare y P Rogaway 15 modificaron SHA 1 de tal forma que la claves especifica las constantes usadas en la cuarta ronda de las funciones En este caso el tamano de la clave es de 128 bits y por tanto K S 128 displaystyle mathcal K Sigma 128 D S 2 64 displaystyle D Sigma 2 64 y R S 160 3 displaystyle R Sigma 160 3 Observar que en la definicion de una funcion resumen el dominio se puede formalizar como S displaystyle Sigma sin embargo en una funcion resumen definida como instancia de un elemento de una familia de funciones resumen el dominio es S l displaystyle Sigma l 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 H displaystyle mathcal H puede siempre ser definida con aquel tamano 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 tambien llamadas CRHF por sus siglas en ingles Collision Resistant Hash Function dada una funcion escogida aleatoriamente de la familia un adversario es incapaz de obtener una colision para ella 16 Definicion formal Editar 17 Se dice que una familia de funciones resumen es una t e familia resumen resistente a colisiones H displaystyle mathcal H con la forma H S k S n S l displaystyle mathcal H Sigma k times Sigma n rightarrow Sigma l con n l y k enteros positivos y n gt l que satisfacen la siguiente condicion Sea F displaystyle mathcal F un buscador de colisiones de cadenas que para una entrada K en el espacio de claves usa tiempo t displaystyle leq t y obtiene como salida displaystyle bot un par x x S n displaystyle x x in Sigma n tal que H K x H K x displaystyle mathcal H K x mathcal H K x Para cada F displaystyle mathcal F P r K F H lt ϵ displaystyle Pr K mathcal F mathcal H neq bot lt epsilon Observar que la probabilidad es tomada sobre las elecciones aleatorias de F displaystyle mathcal F Mirando esta definicion se ve que son interesantes aquellas familias que tienen un t e suficientemente grande Estrictamente hablando hablamos de familias CRHF pero por simplicidad se suele hablar simplemente de CRHF La definicion no se mete en como se eligen las funciones resumen de la familia Este punto es crucial 18 En realidad en cualquier aplicacion de funciones resumen resistentes a colisiones alguna parte P tienen que elegir una funcion de la familia de forma aleatoria para producir la descripcion de la funcion Es importante distinguir entre dos casos La eleccion aleatoria se puede hacer publica o public coin La eleccion aleatoria puede ser revelada como parte de la descripcion de la funcion La eleccion aleatoria se tiene que mantener secreta o secret coin La revelacion la eleccion aleatoria realizada puede que permita encontrar colisiones Por tanto P tiene que mantener secreta la eleccion despues de producir la descripcion de la funcion Evidentemente una familia CRHF elegible de forma publica public coin tambien puede trabajar si uno elige o mantiene la eleccion de forma privada secret coin Funcion hash universal Editar Una funcion resumen universal es una familia de funciones donde la probabilidad de colision entre dos textos escogidos es despreciable 19 Definicion formal 20 Editar Una k familia de funciones resumen universal es un conjunto H de funciones h A B displaystyle h A to B tal que para cada elemento x 1 x 2 x k A displaystyle x 1 x 2 x k in A y todos los no necesariamente distintos b 1 b 2 b k B displaystyle b 1 b 2 b k in B P r h H h x 1 b 1 h x k b k B k displaystyle Pr h in H h x 1 b 1 land land h x k b k B k 21 Una familia de funciones resumen H displaystyle mathcal H es e casi universal o e AU del ingles e almost universal si es menor que e la probabilidad de que dos entradas distintas m n tengan el mismo valor resumen asociado estando la funcion resumen elegida aleatoriamente entre los miembros de H displaystyle mathcal H De la definicion se percibe que son interesantes aquellas familias que tienen un valor pequeno de e indicando que el adversario no puede encontrar un par de entradas que producen el mismo valor resumen para una funcion 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 tambien llamadas UOWHF por sus siglas en ingles 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 dificil encontrar un x distinta de x tal que hK x hK x Al par x x se le llama par de colision Definicion formal Editar 22 23 Se dice que una familia de funciones resumen F displaystyle mathcal F es t e funcion resumen universal de un solo sentido UOWHF si no existe ningun adversario que en tiempo menor que t pueda ganar el siguiente juego con probabilidad mayor o igual que e 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 esta compuesto por dos algoritmos F F 1 F 2 displaystyle mathcal F mathcal F 1 mathcal F 2 F 1 displaystyle F 1 solo tiene como parametro 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 informacion extra que puede ayudar a A2 a encontrar la colision F 2 displaystyle F 2 tiene como parametros de entrada K x y State y produce como salida x por tanto P r K F H lt ϵ displaystyle Pr K mathcal F mathcal H neq bot lt epsilon siendo displaystyle bot un par x x displaystyle x x con x x displaystyle x neq x tal que hK x hK x Observar que al igual que en la definicion de t e CRHF la probabilidad es tomada sobre las elecciones aleatorias de F displaystyle mathcal F La gran diferencia es que aqui la entrada x se fija primero Mirando esta definicion se ve que son interesantes aquellas familias que tienen un t e suficientemente grande Comparacion UOWHF y CRHF 24 Editar Una familia UOWHF es una nocion mas debil que una familia CRHF En una CRHF al oponente primero se le da la clave y despues ella o el tiene que producir la pareja de entradas que colisiona Encontrar colisiones para un parametro fijo de una UOWHF puede que sea bastante mas facil pero esto no ayudara a un oponente a violar la seguridad Simon 25 ha demostrado que existe un oraculo relativo al cual UOWHF existe pero no CRHF Punteros Hash EditarUn puntero hash esta compuesto por dos partes Puntero a la zona donde se almacena la informacion Hash de dicha informacion El puntero puede ser utilizado para obtener la informacion mientras que el valor hash puede ser utilizado para verificar que esa informacion no ha sido modificada asegurando la autenticidad de esta Estructuras de datos construidas utilizando punteros hash Editar Blockchain Editar 26 Una de las aplicaciones que tienen los punteros hash es que pueden ser utilizados para construir una cadena de bloques blockchain mediante la utilizacion de listas enlazadas El primer bloque bloque 0 de la cadena se conoce como bloque genesis 27 en el cual se origina la cadena de bloques A partir del segundo bloque bloque 1 se almacena un puntero hash al bloque anterior el valor hash del bloque anterior y la informacion del bloque actual Gracias a este mecanismo es imposible interferir en un bloque de la cadena de bloques sin que los demas se den cuenta Para cualquier bloque de la cadena el bloque i almacenara un puntero hash al boque i 1 el valor hash del bloque i 1 y la informacion del bloque i Propiedad a prueba de manipulacion de Blockchain Editar Solamente es necesario mantener el puntero hash al ultimo bloque de la cadena de bloques Entonces cuando alguien muestra la cadena de bloques completa y afirma que los datos no se han modificado podemos saber si algun bloque de la cadena fue alterado ya que es posible recorrer los bloques hacia atras y verificar todos los valores hash uno por uno Ejemplo de funcionamiento Registro a prueba de manipulaciones Editar Un atacante quiere manipular un bloque de la cadena de bloques por ejemplo el bloque 1 El atacante cambia el contenido del bloque Debido a la propiedad de resistencia a colisiones de las funciones hash no sera capaz de encontrar otra informacion que tenga el mismo valor hash que el anterior Por tanto ahora el valor hash del bloque 1 ha cambiado Ahora tras el cambio se podria detectar la inconsistencia entre estos datos y el puntero hash del siguiente bloque a menos que el atacante tambien cambie dicho puntero hash en el bloque siguiente bloque 2 Si el atacante modifica el puntero hash estos dos coinciden pero el contenido del bloque 2 ha cambiado Esto significa que su valor hash no va a coincidir con el puntero hash del bloque 3 por lo que para que todo sea coherente sera necesario modificar el puntero hash del bloque 3 Ocurrira lo mismo con todos los bloques siguientes Finalmente el atacante va al puntero hash del ultimo bloque de la cadena de bloques el cual es un obstaculo para el atacante ya que nosotros guardamos y recordamos el puntero hash del ultimo bloque Detectariamos la inconsistencia Si un atacante quiere modificar los datos en cualquier parte de la cadena debe modificar todos los punteros hash desde el principio para conseguir la coherencia pero al llegar al puntero hash que guarda el ultimo bloque no podra manipular el encabezado de la cadena Puzles Hash Editar 28 La propiedad puzzle friendly permite la mineria de las criptomonedas basadas en el algoritmo de prueba de trabajo Un ejemplo de criptomoneda que esta basado en este algoritmo es Bitcoin Dados los siguientes valores H una funcion hash SHA 256 id un numero aleatorio elegido entre un conjunto de numeros llamado PUZZLE ID Y un rango de resultados valores hash validos El objetivo es encontrar una solucion x que forma parte de la entrada de la funcion y H displaystyle mathrm H id x ϵ YSe dice que una funcion hash es amistosa a los puzles si para cualquier valor de salida y dentro del rango de valores de Y en este caso como es SHA 256 seria 2256 valores posibles con una id perteneciente a una muestra de alta incertidumbre encontrar una x especifica seria imposible en un tiempo significativamente menor a 2256 computaciones La unica forma de encontrarla es recorrer el espacio de forma aleatoria debido a su tamano Esto es la caracteristica primordial de esta propiedad y hace posible la descentralizacion Se puede reformular diciendo que para resolver el puzle se debe encontrar una x que genere un resultado contenido en el intervalo de Y Si hay mas posibles resultados y en el conjunto Y hay mas posibles soluciones de x Si el rango del conjunto Y corresponde a todo el intervalo de este mismo rango el problema es trivial Si solamente hay un unico valor y en el conjunto Y es lo mas complicado posible e incluso imposible si la funcion H es unidireccional La dificultad del puzle depende directamente del tamano que tiene el rango Y La propiedad de resistencia a colisiones se cumple pues existe un valor de x para cada valor de y del conjunto Y Funciones hash iterativas Construccion de Merkle Damgard 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 numero de bits de la entrada X en principio de longitud arbitraria tiene que ser multiplo 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 anadir al final de la entrada unos simbolos 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 dd Al valor IV se le llama valor inicial y se representa por esas siglas por el termino ingles Initial Value A la funcion f se la llama funcion de ronda o funcion de compresion A la funcion g se la llama transformacion de salida Lo que hace la funcion g es derivar a partir de Ht tantos bits como se quieran en la salida de la funcion Frecuentemente g es la funcion identidad o un truncamiento de Ht En este tipo de descripcion de funciones hash hay dos elecciones importantes que afectaran a las propiedades que tendra la funcion La eleccion 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 eleccion de valor inicial IV Deberia ser definido como parte de la descripcion de la funcion hash A las funciones que se construyen mediante el anterior sistema se dice que son funciones resumen iterativas A esta forma de construccion recursiva se la conoce tambien como de Merkle Damgard debido a que fue usado por primera vea por R Merkle y I Damgard independientemente en 1989 Aplicaciones EditarLas funciones en resumen son usadas en multiples campos Ejemplos Herramienta basica para la construccion de utilidades mas complejas Construccion de estructuras de datos Su uso en distintas estructuras de datos hacen mas eficientes las busquedas y o permiten asegurar los datos que contienen Ejemplos tablas resumen arboles de Merkle listas resumen Construccion de esquemas de compromiso Los esquemas de compromiso permiten que una entidad elija un valor entre un conjunto finito de posibilidades de tal forma que no pueda cambiarla Esa entidad no tiene que revelar su eleccion hasta si acaso el momento final la eleccion puede permanecer oculta Construccion de algoritmos de cifrado descifrado Por ejemplo se usa en la construccion de cifradores de flujo y de cifradores de bloque Construccion de algoritmos generadores de numeros pseudoaleatorios Construccion de cadenas pseudoaleatorias Por ejemplo el llamado modelo de oraculo 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 criptograficos Construccion de algoritmos de testeo de pertenencia o no a un conjunto Se han usado funciones hash para la construccion de acumuladores criptograficos y filtros de Bloom Estas tecnologias permiten establecer mecanismos que permiten pronunciarse a veces con cierto grado de error sobre la pertenencia o no a cierto conjunto Construccion de metodos de generacion 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 32 Cuando se usa para firmar algoritmos de firma por bloques donde los mensajes son mas largos que el bloque no es seguro firmar mensajes bloque a bloque ya que un enemigo podria borrar bloques del mensaje firmado o insertar bloques de su eleccion en el mensaje antes de que sea firmado Al usar una funcion hash hacemos una transformacion que hace a la firma dependiente de todas las partes del mensaje Normalmente los valores hash son mucho mas 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 criptoanalisis 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 verificacion del ingles checksum cuando se quiere almacenar o transmitir informacion para proteger frente a errores fortuitos en el almacenamiento o transmision es util acompanar 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 Al valor hash se le llama Suma de verificacion 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 esta emitiendo se proporciona un valor resumen del contenido de forma que ese valor tenga que obtenerse al aplicar la funcion resumen sobre el contenido distribuido asegurando asi la integridad A esto se le suele llamar checksum criptografico debido a que es un checksum que requiere el uso de funciones resumen criptograficas para que sea dificil generar otros ficheros falso que tengan el mismo valor resumen Otro ejemplo de uso de esta tecnologia para verificar la integridad es calcular y guardar el valor resumen de archivos para poder verificar posteriormente que nada Ej un virus los haya 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 arboles 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 autenticacion y control de acceso Autenticacion de entidades por ejemplo es frecuente el uso para este proposito de funciones resumen deterministas con clave secreta que tienen ciertas propiedades Codigos de autenticacion de mensajes En estos esquemas tanto el servicio de autenticacion o verificador como la entidad que se quiere autenticar mantienen en secreto la clave de la funcion 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 integro no ha sido modificado desde que se calculo 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 tambien los valores resumen Proteccion de claves para comprobar la correccion 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 funcion resumen determinista De esta forma para verificar si una clave es correcta basta con aplicar la funcion resumen y verificar si el resultado coincide con el que tenemos almacenado Si ademas queremos que la contrasena sea de un solo uso podemos usar cadenas de resumen como en S KEY Derivacion de claves por ejemplo en algunas aplicaciones se usan funciones resumen para derivar una clave de sesion a partir de un numero de transaccion y una clave maestra Otro ejemplo de aplicacion seria el uso de funciones resumen para conseguir sistemas de autenticacion con claves de un solo uso o OTP del ingles One Time Password En este tipo de sistemas la clave es valida 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 asi evitar ataques de REPLAY Herramienta para la identificacion y la rapida comparacion de datos Se pueden usar funciones hash para proporcionar una identificacion de objetos o situaciones Una buena funcion hash para este proposito deberia ser rapida 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 identicos Por ejemplo podemos considerar iguales a dos ficheros que son distintos bit a bit porque realmente son la digitalizacion de la misma pelicula Es labor del diseno de la funcion hash capturar la esencia del criterio de igualdad Por otra parte la evaluacion de la funcion hash deberia ser poco costosa para facilitar la rapida comparacion de elementos candidatos a ser iguales y de esta forma poder implementar algoritmos de busqueda rapidos Huellas digitales el uso de funciones hash aplicados a cadenas permiten obtener valores hash que pueden usarse para detectar facilmente la aparicion de esos datos en distintos sitios Pueden ser usados para distintos usos como busqueda de virus autenticacion con datos biometricos deteccion de copias etc La idea puede usarse mas alla de textos y ser aplicado a cualquier tipo de contenido multimedia 33 34 Las funciones hash especificamente disenadas para este proposito obtienen valores hash que permiten detectar caracteristicas intrinsecas del contenido multimedia de forma que se pueda identificar si dos archivos diferentes se corresponden con el mismo contenido multimedia Como aplicacion practica de este tipo de algoritmo tenemos los programas que se ejecutan en dispositivos moviles y que son capaces de adivinar el titulo de la cancion que esta sonando en la habitacion solamente capturando el sonido y comparandolo con estos valores hash Este tipo de algoritmos tambien se puede utilizar para proteccion de contenidos multimedia ya que permite validar automaticamente si cierto fichero multimedia esta protegido o no por derechos de autor Identificacion de contenidos en algunas aplicaciones se usa el valor hash de un contenido multimedia para identificar ese contenido independientemente de su nombre o ubicacion 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 mas rapido a los registros incluso mas rapido que teniendo indices Algoritmos de busqueda de subcadenas los algoritmos de busqueda de subcadenas tratan el problema de buscar subcadenas a la que llaman patron dentro de otra cadena a la que llaman texto Hay algoritmos de este tipo que usan funciones hash en su implementacion Ejemplo algoritmo Karp Rabin Deteccion 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 criptografia Cifradores acumuladores criptograficos firma digital protocolos criptograficos de autenticacion etc La criptografia es una rama de las matematicas que proporciona herramientas para conseguir seguridad en los sistemas de informacion Las funciones resumen interesantes en el area de la criptografia se caracterizan por cumplir una serie de propiedades que permiten a las utilidades criptograficas que las utilizan ser resistentes frente ataques que intenten vulnerar la seguridad del sistema A las funciones hash que cumplen estas propiedades se les llama funciones hash criptograficas Vease tambien EditarFuncion hash criptografica Codigo de deteccion de modificaciones Codigo de autenticacion de mensajesReferencias Editar S A Ediciones Diaz de Santos Guglieri J A Calle 1996 Reingenieria y seguridad en el ciberespacio Ediciones Diaz de Santos ISBN 978 84 7978 273 3 Consultado el 25 de mayo de 2021 AUTORES VARIOS 2002 Diccionario de Internet Editorial Complutense ISBN 978 84 7491 676 8 Consultado el 25 de mayo de 2021 H Tiwari K Asawa Cryptographic Hash Function An Elevated View European Journal of Scientific Research 2010 a b c d e f A J Menezes et all Handbook of Applied Cryptography CRC Press 2011 D Henrici Concepts Protocols And Architectures Lectures Notes in Electrical Engineering Springer Verlag 2008 Bart Preneel The State of Cryptographic Hash functions I B Damgard Collision free hash functions and public key signatures schemes Advances in Cryptology Crypto 89 LNCS 304 pages 203 216 Springer 1987 Kazumaro Aoki Yu Sasaki Meet in the midle preimage attacks against reduced SHA 0 and SHA 1 H Tiwari et all Cryptographic Hash Function An elevated View European Jorunal of Scientific Research Vol 43 pp 452 465 2010 W R Speirs Dynamic cryptographic hash functions Thesis Purdue University School 2007 Peter Stavroulakis et all Handbook of Information and Communication Security Spring 2010 Dirk Henric RFID security and privacy concepts protocols and architectures Springer 2008 Gunter Schafer Security in fixed and wireless networks an introduction to securing data communications Willey 2003 William Speirs Dynamic cryptographic hash functions Mihir Bellare and Phillip Rogaway Introduction to modern cryptography Chapter 5 Archivado el 31 de marzo de 2007 en Wayback Machine September 2005 Chum Yuan Hsiao et all Finding Collision on a Public Road or Do Secure Hash Functions Need Secret Coins Signature Scheme in Multi User Setting The Institute of Electronics Information and Communication Engineers 2006 Chun Yuan Hsiao et all Finding Collisions on a Public Road or Do Secure Hash Functions Need Secret Coins Mridul Nandi A Generic Method to Extend Message Space of a Strong Pseudorandom Permutation A R Caldebank et all Improved Range Summable Random Variable Construction Algorithms Proceedings of the 16 Annual ACM SIAM Symposium on Discrete Algorithms Ted Krovetz Message Authentication on 64 Bit Architectures Selected Areas in Cryptography LNCS 4356 Springer 2006 Ilya Mironov Collision Resistant No More Hash and Sign Paradigm Revisited Public Key Cryptography PKC 2006 LNCS 3958 Springer 2006 D Hong et all Higher Order Universal One Way Hash Functions Center for Information Security Technologies Korea University Seoul Korea Henk C A Van Tilborg Encyclopedia of Cryptography and Security Second Edition pg 1349 Springer 2011 D Simon Finding collisions on a one way street Can secure hash functions be based on general assumptions EUROCRYPT 98 pp 334 345 1998 Hash Pointers and Data Structures Bloque genesis Bitcoin Las 3 propiedades primordiales de las funciones Hash H Tiwari Cryptographic Hash Function An Elevated View European journal of Scientific Research Vol 43 pp 452 465 2010 Bart Preneel Cryptographic Primitives for Information Authentication State of the Art Katholieke Universiteit Leuven COSIC 97 LNCS 1528 1998 Chris Mitchell Developments in Security Mechanism Standards Internet and Intranet Security Management Risks and Solutions editado por L Janczewski Idea Group Publishing 2000 Ivan Bjerre Damgard Collision free hash functions and public key signature schemes Archivado el 22 de diciembre de 2015 en Wayback Machine Advances in Cryptology EUROCRYPT 87 Lncs 304 PP 203 216 Springer Verlag Berlin Heidelberg 1988 P Cano et all A Review of Audio Fingerprinting Journal of VLSI Signal Processing 41 271 284 2005 Loubna Bouarfa Research Assignment on Video Fingerprinting Faculty of Electrical Engineering Mathematics and Computer Science Delft University of TechnologyEnlaces externos EditarFunciones hash para busqueda en tablas hash en ingles Generador de resumenes generador en linea de hashes CRC MD2 MD4 MD5 SHA1 Tiger Snefru RipeMD Whirlpool Haval entre otros Aproximadamente 123 algoritmos y 200 modos Hex Base64 en ingles Dictionaries and hash tables David Eppstein Universidad de California en Irvine Datos Q183427Obtenido de https es wikipedia org w index php title Funcion hash amp oldid 137217578, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos