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 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 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 agrega 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 esponja "absorbe" (en la metáfora de la esponja ) todos los bloques de una cadena de entrada acolchada 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 " grupo de entropía ", con entradas "vertidas en" el grupo y la función de transformación denominada "agitación del grupo de entropía". [3]

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

Construcción dúplex

También es posible absorber y exprimir de forma alterna. [1] Esta operación se denomina construcción dúplex o dúplex. Puede ser la base de un sistema de cifrado autenticado de un solo paso.

Modo de sobrescritura

Es posible omitir las operaciones XOR durante la absorción, manteniendo 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 por adelantado y solo se debe conservar la parte C.

Aplicaciones

Las funciones de esponja tienen usos tanto teóricos como prácticos. En 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. [4]

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

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

Referencias

  1. ^ abc Bertoni, Guido; Daemen, Joan; Peeters, Michael; van Assche, Giles. "Duplexación de la esponja: cifrado autenticado de un solo paso y otras aplicaciones" (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: una función hash y cifrado de flujo esponjoso similar 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 del concurso de 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 a 5. arXiv : 1807.05764 . doi :10.1109/ISCAS.2019.8702498.

enlaces externos