Son pares de algoritmos:

  • Gen:
  • Hash: , donde es la longitud del hash

Una diferencia importante es que no es una clave, simplemente es un selector. En muchas implementaciones (solo hay una función de hash en una familia). Se las suele llamar funciones de resumen, y son análogas a los MACs pero sin clave, por lo que funcionan como etiquetadores universales.

Se denomina colisión cuando pero . Si hay mensajes y valores de salida, existe al menos una colisión.

Propiedades

Resistencia a preimagenes: Para todo , es computacionalmente imposible hallar Resistencia a segundas imagenes: Para todo , es computacionalmente imposible hallar Resistencia a colisiones: Es computacionalmente imposible hallar y

Modelo General Iterativo

Es un modelo propuesto por merkle en 1989 que permite generar una función de hash. Es utilizado por muchas funciones #todo Revisar la clase donde se dio y rellenar.

En el paso de preprocesamiento, se ajusta el tamaño del mensaje, y se agrega un bloque con el tamaño original. Luego, se utiliza una función de compresión, que es similar al hash pero opera sobre bloques pequeños.

NOTE

La seguridad está dada por la función de compresión

Ejemplos de Funciones

  • MD5
    • Entrada: Secuencia de hasta bits
    • Salida: Secuencia de 128 bits
    • Aplicación iterativa
    • Quebrada
  • SHA-1
    • Entrada: Secuencia de hasta bits
    • Salida: Secuencia de 160 bits
    • Aplicación iterativa
    • Construida sobre la base de MD5
  • SHA-2/256
    • Salida: 256 bits
  • SHA-3/256-512
    • Fue recientemente seleccionada, antes era conocida como Keccak
    • Esta basada en un nuevo modelo llamado esponja

Funciones de Hash y MACs

Es posible construir un MAC a partir de una función de Hash. Dado una función de hash libre de colisiones, la función es infalsificable (pasa la prueba MAC-Forge), donde :

  • GEN:
  • MAC: , donde y .

El valor de y no importa, siempre y cuando sean diferentes.

Privacidad e Integridad

Hay tres formas posibles de cifrar y autentificar un mensaje:

  • Cifrar y autentificar: ,
  • Autentificar, luego cifrar: ,
  • Cifrar, luego autentificar: ,

De estas tres formas, la única que esta garantizada que es segura es “Cifrar, luego Autentificar”. El resto depende de las primitivas criptográficas utilizadas, y requiere de un análisis complejo.