stringtranslate.com

Función de esponja

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

En criptografía , una función de esponja o una construcción de esponja es cualquiera de una clase de algoritmos con un 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 esponja tienen usos tanto teóricos como prácticos. Se pueden utilizar 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

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

S se divide en dos secciones: una de tamaño r (la tasa de bits) y la parte restante de tamaño c (la capacidad). Estas secciones se denominan R y C respectivamente.

f produce una permutación pseudoaleatoria de los estados de S .

P añade suficientes bits a la cadena de entrada para que la longitud de la entrada rellenada sea un múltiplo entero de la tasa de bits, r . Esto significa que la entrada se segmenta en bloques de r bits.

Operación

La función de esponja "absorbe" (en la metáfora de la esponja ) todos los bloques de una cadena de entrada rellena de la siguiente manera:

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

Si quedan menos de r bits por emitir, entonces R se truncará (solo se emitirá una parte de R ).

Otra metáfora describe la memoria de estado como un " depósito de entropía ", con la entrada "vertida" en el depósito, y la función de transformación a la que se hace referencia como "revolver el depósito de entropía". [3]

Tenga en cuenta que los bits de entrada nunca se transfieren mediante XOR a la parte C de la memoria de estado, ni tampoco se transfieren bits de C directamente a la salida. El grado en que C se altera por la entrada depende completamente de la función de transformación f. En aplicaciones hash, la resistencia a los ataques de colisión o preimagen depende de C , y su tamaño (la "capacidad" c ) es típicamente el doble del nivel de resistencia deseado.

Construcción dúplex

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

Modo de sobrescritura

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

Aplicaciones

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

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 el NIST como ganadora en la competencia SHA-3 . La fortaleza de Keccak deriva de la intrincada permutación de múltiples rondas f que desarrollaron sus autores. [5] El rediseño RC4 llamado Spritz hace referencia a la construcción de la esponja para definir el algoritmo.

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

Referencias

  1. ^ abc Bertoni, Guido; Daemen, Joan; Peeters, Michaël; van Assche, Giles. "Duplexing the Sponge: Single-Pass Authenticated Encryption and Other Applications" (PDF) . Consultado el 27 de marzo de 2023 .
  2. ^ Bertoni, Guido; Daemen, Joan; Peeters, Michael; van Assche, Giles. «La esponja y las construcciones dúplex» . Consultado el 27 de marzo de 2023 .
  3. ^ ab Rivest, Ron; Schuldt, Jacob (27 de octubre de 2014). "Spritz: un cifrado de flujo y una función hash esponjosos similares a RC4" (PDF) . Consultado el 29 de diciembre de 2014 .
  4. ^ Bertoni, Guido; Daemen, Joan; Peeters, Michael; van Assche, Giles. "Sobre la indiferenciabilidad de la construcción esponja" (PDF) . Consultado el 27 de marzo de 2023 .
  5. ^ Boutin, Chad (2 de octubre de 2012). "NIST selecciona al ganador de la competencia del algoritmo hash seguro (SHA-3)". NIST . Consultado el 4 de octubre de 2012 .
  6. ^ van Beirendonck, M.; Trudeau, L.; Giard, P.; Balatsoukas-Stimming, A. (29 de mayo de 2019). Un núcleo FPGA Lyra2 para criptomonedas basadas en Lyra2REv2 . Simposio internacional IEEE sobre circuitos y sistemas (ISCAS). Sapporo, Japón: IEEE. págs. 1–5. arXiv : 1807.05764 . doi :10.1109/ISCAS.2019.8702498.

Enlaces externos