stringtranslate.com

Cifrado de Pudding apresurado

El cifrado Hasty Pudding ( HPC ) es un cifrador de bloques de tamaño variable diseñado por Richard Schroeppel , que fue un candidato fallido en la competencia para seleccionar el Estándar de cifrado avanzado (AES) de EE. UU . Tiene una serie de propiedades inusuales para un cifrador de bloques: su tamaño de bloque de entrada y la longitud de clave son variables, e incluye un parámetro de entrada adicional llamado "spice" para usar como clave secundaria no secreta. El cifrado Hasty Pudding fue el único candidato AES diseñado exclusivamente por criptógrafos estadounidenses. [1] [2]

El código Hasty Pudding es de dominio público . [3]

El código

El cifrado Hasty Pudding consta de cinco subcifrados diferentes: [4]

Todos los algoritmos de cifrado Hasty Pudding utilizan internamente palabras de 64 bits. El cifrado está diseñado para ejecutarse en máquinas de 64 bits , que pueden realizar fácilmente operaciones simples en palabras de 64 bits.

Expansión de claves

El cifrado Hasty Pudding puede tomar una clave de cualquier número de bits para cualquiera de los cinco subcifrados. El cifrado en sí utiliza una tabla de claves de 16.384 bits (256 palabras de 64 bits). Para derivar la tabla de claves a partir de la clave, la función de expansión de claves utiliza el siguiente algoritmo: [4]

  1. Las primeras tres palabras, KX [0], KX [1], KX [2] se configuran en función de constantes, el subcifrado y la longitud de la clave. KX [1] se calcula con una multiplicación; las otras operaciones involucradas son una suma y un desplazamiento de bits.
  2. Cada palabra sucesiva, KX [ i ], se determina a partir de las tres palabras anteriores mediante una fórmula recursiva eficiente.
  3. Los bits de la clave se combinan con los bits de la tabla de claves, comenzando en KX [0], hasta que se utilicen todos los bits de la clave. (Las claves con una longitud superior a 8192 bits utilizan un procedimiento más complicado).
  4. Se realizan varias pasadas sobre la tabla de claves. Cada vez, se aplica una "función de agitación" a cada palabra de la tabla de claves, en secuencia. La función de agitación utiliza ocho variables internas y emplea 14 operaciones de bits lógicas, 5 desplazamientos de bits y 14 adiciones/sustracciones. Cada uso de la función de agitación modifica una palabra en la tabla de claves, en función de su valor anterior, los valores de ciertas otras palabras y las variables internas de la función de agitación. (3 pasadas en total es el valor predeterminado).

Cifrado y descifrado

Cada uno de los subcifrados utiliza un algoritmo diferente, pero existen ciertas similitudes. Se utilizan tres entradas para determinar el texto cifrado: el texto simple (en varias palabras de 64 bits más un "fragmento"), el spice (ocho palabras de 64 bits, con valor predeterminado 0) y la tabla de claves. Las operaciones dentro del cifrado consisten en revolver , que combina variables internas de varias maneras con valores de la tabla de claves y spice a intervalos regulares. HPC-Short utiliza dos permutaciones fijas además, y HPC-Tiny consta de muchos subcasos especiales.

El descifrado implica deshacer los pasos del cifrado uno por uno. Muchas operaciones se pueden deshacer fácilmente (por ejemplo, s 0 = s 0  +  s 1 se deshace calculando s 0 = s 0  −  s 1 ). Otras operaciones son más complejas de deshacer. Algunas de las ideas involucradas incluyen:

El cifrado Hasty Pudding también se puede utilizar para cifrar valores en un rango que no se traducen a cadenas con un número entero de bits; por ejemplo, puede cifrar un número de 0 a N generando otro número de 0 a N. Para ello, utiliza el subcifrado más pequeño que puede manejar la entrada como una cadena de bits y lo aplica a la entrada como una cadena de bits, repetidamente, hasta que la salida esté en el rango adecuado. [4]

Actuación

Schroeppel afirmó que el cifrado Hasty Pudding era el candidato AES más rápido en una arquitectura de 64 bits; [5] Schroeppel afirmó que era dos veces más rápido que su competidor más cercano, DFC , y tres veces más rápido que los otros candidatos, y que su rendimiento en una máquina de 32 bits era adecuado. [5] Los comentarios de otros no respaldaron esta opinión; por ejemplo, el análisis de Schneier et al. clasificó al cifrado Hasty Pudding en el cuarto lugar (376 ciclos) en una máquina de 64 bits, aunque para Rijndael y Twofish , el rendimiento solo fue estimado. [6] En un Pentium de 32 bits , el cifrado Hasty Pudding fue calificado por Schneier et al. en 1600 ciclos de reloj, el décimo mejor de los 15 candidatos. [6] Schneier et al. y Schroeppel observaron que la velocidad del cifrado se vería significativamente afectada en una máquina de 32 bits debido al uso intensivo de operaciones de 64 bits, en particular desplazamientos de bits. [3] [6]

La configuración de la clave del cifrado Hasty Pudding fue calificada como relativamente lenta: 120.000 ciclos en un Pentium. [6]

El cifrado fue criticado por su rendimiento en tarjetas inteligentes . En concreto, algunos comentarios señalaron la dificultad de mantener más de 2 KB de RAM para la tabla de claves. [7]

Trabajos futuros

Ha habido relativamente pocos resultados en los ataques al cifrado Hasty Pudding. Al principio del proceso AES, David Wagner observó que clases relativamente grandes de claves Hasty Pudding eran equivalentes en el sentido de que conducían a la misma tabla de claves. [8] Esto fue ampliado por D'Halluin et al., quienes observaron que para claves de 128 bits, aproximadamente 2 120 claves son claves débiles que tienen cada una 2 30 claves equivalentes. [9] En respuesta a este ataque, Schroeppel modificó el algoritmo de expansión de claves para incluir un paso adicional. [4]

A pesar de la relativa falta de criptoanálisis, el cifrado Hasty Pudding fue criticado por su diseño difícil de entender y su falta de fundamento en los resultados de la investigación. [8] [10] Schroeppel ha ofrecido una botella de champán Dom Pérignon al mejor artículo que presente avances en el cifrado Hasty Pudding. [3] No pasó la segunda ronda de consideración para AES. [11]

El cifrado Hasty Pudding se considera el primer cifrado de bloque modificable . [12]

Referencias

  1. ^ Eli Biham , A Note on Comparing the AES Candidates , abril de 1999, comentario público sobre AES.
  2. ^ Susan Landau , Seguridad de las comunicaciones para el siglo XXI: el estándar de cifrado avanzado , Avisos de la AMS, vol. 47, número 4, 2000.
  3. ^ abc Rich Schroeppel y Hilarie Orman, Una descripción general del cifrado Hasty Pudding, julio de 1998.
  4. ^ abcd Schroeppel, Rich (junio de 1998), Hasty Pudding Cipher Specification (edición revisada de mayo de 1999), archivado desde el original el 17 de julio de 2011 , consultado el 10 de junio de 2009
  5. ^ de Rich Schroeppel, The Hasty Pudding Cipher: Un año después , consultado el 01-09-2008
  6. ^ abcd Bruce Schneier , John Kelsey , Doug Whiting, David Wagner , Chris Hall y Niels Ferguson , Comparación del desempeño de las presentaciones de la AES , Segunda Conferencia de candidatos de la AES, 1999.
  7. ^ Emanoil Daneliuc, Comentario público sobre los candidatos de AES, febrero de 1999.
  8. ^ ab David Wagner, Claves equivalentes para HPC , charla de sesión breve en la 2.ª Conferencia de la AES, Roma , marzo de 1999.
  9. ^ Carl D'Halluin, Gert Bijnens, Bart Preneel y Vincent Rijmen , Claves equivalentes de HPC , Avances en criptología - Actas de ASIACRYPT 1999, 1999.
  10. ^ Olivier Baudron, Henri Gilbert, Louis Granboulan, Helena Handschuh, Antoine Joux , Phong Nguyen , Fabrice Noilhan, David Pointcheval , Thomas Pornin, Guillaume Poupard, Jacques Stern y Serge Vaudenay , Informe sobre los candidatos de la AES , Segunda conferencia de la AES, marzo de 1999 .
  11. ^ James Nechvatal, Elaine Barker, Lawrence Bassham, William Burr, Morris Dworkin, James Foti y Edward Roback, Informe sobre el desarrollo del estándar de cifrado avanzado (AES) , comunicado oficial del NIST , 2 de octubre de 2000.
  12. ^ Moses Liskov, Ronald Rivest y David Wagner , Cifrados de bloques modificables , en Avances en criptología — Actas de CRYPTO '02, 2002.

Véase también