De Wikipedia, la enciclopedia libre
Saltar a navegación Saltar a búsqueda
Ilustración de la construcción de la esponja.
La construcción de esponja para funciones hash. P i son bloques de la cadena de entrada, Z i son bloques de salida con hash.

En criptografía , una función de esponja o construcción de esponja es cualquiera de una clase de algoritmos con estado interno finito que toman un flujo de bits de entrada de cualquier longitud y producen un flujo de bits de salida de cualquier longitud deseada. Las funciones de la esponja tienen usos tanto teóricos como prácticos. Se pueden usar para modelar o implementar muchas primitivas criptográficas , incluidos hashes criptográficos , códigos de autenticación de mensajes , funciones de generación de máscaras , cifrados de flujo , generadores de números pseudoaleatorios y cifrado autenticado.. [1]

Construcción [ editar ]

Una función de esponja se construye a partir de tres componentes: [2]

  • Estado , que contiene bits ,
  • una función que transforma la memoria de estado (a menudo es una permutación pseudoaleatoria de los valores de estado)
  • una función de relleno del cojín

La memoria de estado se divide en dos secciones: Bitrate y la parte restante la Capacidad .

Pad agrega suficientes bits a la cadena de entrada para que la longitud de la entrada rellenada sea un múltiplo entero de | Bitrate | . Por tanto, la entrada acolchada se puede dividir en | Bitrate | -Bloques de bits.

Operación [ editar ]

La función de esponja funciona de la siguiente manera:

  • El estado se inicializa a cero
  • La cadena de entrada se rellena. Esto significa que la entrada se transforma en bloques de | Bitrate | bits usando Pad .
  • para cada | Bitrate | -Bit Bloque de la entrada acolchada:
    • Bitrate se reemplaza con Bitrate XOR Block (usando XOR bit a bit )
    • El estado se reemplaza por f ( estado )

Este proceso "absorbe" (en la metáfora de la esponja ) todos los bloques de la cadena de entrada acolchada.

La salida de la función de esponja ahora está lista para ser producida ("exprimida") de la siguiente manera:

  • se emite la parte de la velocidad de bits de la memoria de estado
  • repita hasta que salgan suficientes bits:
    • El estado se reemplaza por f ( estado )
    • se emite la parte de la velocidad de bits de la memoria de estado

Si es menor que | Bitrate | quedan bits por emitir, entonces la tasa de bits se truncará (solo se emitirá una parte de la tasa de bits ).

Otra metáfora describe la memoria de estado como una " reserva de entropía ", con la entrada "vertida en" la piscina y la función de transformación denominada "agitación de la reserva de entropía". [3]

Tenga en cuenta que los bits de entrada nunca se convierten en XOR en la parte de Capacidad de la memoria de estado, ni los bits de Capacidad se envían directamente. La medida en que la capacidad es alterada por la entrada depende completamente de la función de transformación f. En las aplicaciones hash, la resistencia a los ataques de colisión o preimagen depende de la Capacidad , y su tamaño ( | Capacidad | ) suele ser el doble del nivel de resistencia deseado.

Construcción dúplex [ editar ]

También es posible absorber y apretar de forma alterna. [4] Esta operación se denomina construcción dúplex o dúplex. Puede ser la base de un sistema de cifrado autenticado de una sola pasada.

  • El estado se inicializa a cero
  • Bitrate se XORed con el primer | Bitrate | -Bloque de bits de la entrada
  • El estado se reemplaza por f ( estado )
  • Bitrate es ahora el primero | Bitrate | bits de la salida.
  • Bitrate se XORed con el siguiente | Bitrate | -Bloque de bits de la entrada
  • El estado se reemplaza por f ( estado )
  • Bitrate es ahora el siguiente | Bitrate | bits de la salida.
  • ...

Modo de sobrescritura [ editar ]

Es posible omitir las operaciones XOR durante la absorción, manteniendo el nivel de seguridad elegido . [4] En este modo, en la fase de absorción, el siguiente bloque de la entrada sobrescribe la parte Bitrate del estado. Esto permite mantener un estado más pequeño entre los pasos. Dado que la parte Bitrate se sobrescribirá de todos modos, se puede descartar por adelantado, solo se debe conservar la parte Capacity .

Aplicaciones [ editar ]

Las funciones de la esponja tienen usos tanto teóricos como prácticos. En el criptoanálisis teórico, una función de esponja aleatoria es una construcción de esponja donde f es una permutación o transformación aleatoria, según corresponda. Las funciones de esponja aleatoria capturan más limitaciones prácticas de las primitivas criptográficas que el modelo de oráculo aleatorio ampliamente utilizado , en particular el estado interno finito. [5]

La construcción de la esponja también se puede utilizar para construir primitivas criptográficas prácticas. Por ejemplo, la esponja criptográfica Keccak con un estado de 1600 bits ha sido seleccionada por NIST como la ganadora en la competencia SHA-3 . La fuerza de deriva Keccak de la intrincada, de varias rondas de permutación f que sus autores desarrollaron. [6] El rediseño RC4 llamado Spritz se refiere a la construcción de esponja para definir el algoritmo.

Para otros ejemplos, se puede usar una función de esponja para construir cifrado autenticado con datos asociados (AEAD), [3] así como esquemas de hash de contraseñas . [7]

Referencias [ editar ]

  1. ^ El equipo de Keccak. "Duplicar la esponja" (PDF) .
  2. ^ Guido Bertoni, Joan Daemen, Michaël Peeters y Gilles Van Assche. "Funciones de la esponja" . Taller de Ecrypt Hash 2007.CS1 maint: varios nombres: lista de autores ( enlace )
  3. ^ a b Rivest, Ron; Schuldt, Jacob (27 de octubre de 2014). "Spritz: una función de cifrado y hash de flujo esponjoso similar a RC4" (PDF) . Consultado el 29 de diciembre de 2014 .
  4. ↑ a b Guido Bertoni, Joan Daemen, Michaël Peeters y Gilles Van Assche. "Duplicar la esponja: cifrado autenticado de una sola pasada y otras aplicaciones" (PDF) . CS1 maint: varios nombres: lista de autores ( enlace )
  5. ^ Guido Bertoni, Joan Daemen, Michaël Peeters y Gilles Van Assche. "Sobre la indiferenciabilidad de la construcción de la esponja" . EuroCrypt 2008.CS1 maint: varios nombres: lista de autores ( enlace )
  6. ^ Boutin, Chad (2 de octubre de 2012). "NIST selecciona ganador de la competencia de algoritmo de hash seguro (SHA-3)" . NIST . Consultado el 4 de octubre de 2012 .
  7. van Beirendonck, M .; Trudeau, L .; Giard, P .; Balatsoukas-Stimming, A. (29 de mayo de 2019). Un núcleo Lyra2 FPGA para criptomonedas basadas en Lyra2REv2 . Simposio Internacional de Circuitos y Sistemas de IEEE (ISCAS). Sapporo, Japón: IEEE. págs. 1-5. arXiv : 1807.05764 . doi : 10.1109 / ISCAS.2019.8702498 .