Panamá [1] es una primitiva criptográfica que se puede utilizar como una función hash criptográfica o como un cifrado de flujo. Fue desarrollado en 1998 por Joan Dymen y Craig Klep para mejorar la eficiencia del software para arquitecturas de 32 bits. Es uno de los progenitores del algoritmo hash Keccak , que se convirtió en el ganador de la competencia de primitivas criptográficas del Instituto Nacional de Estándares y Tecnología de EE. UU . [2] . Se basa en gran medida en el módulo hash de transmisión StepRightUp. [3]
Según los desarrolladores, "Panamá" en el momento del desarrollo tenía un alto nivel de seguridad, pero esto se logró a costa de una gran carga computacional. Por lo tanto, resultó que "Panamá" como función hash resultó ser menos adecuada para enviar mensajes hash que sus rivales. Si hablamos de "Panamá" como un cifrado de flujo, entonces un largo procedimiento de inicialización resultó ser una característica distintiva de su uso. Por lo tanto, al usarlo en tareas que requieren altas velocidades, es necesario proporcionar todas las condiciones que estarán encaminadas a reducir el número de desincronizaciones. [cuatro]
Se asumió que "Panamá" se usaría para cifrar o descifrar videos para acceder a algunas aplicaciones, en particular, "TV paga". [5] La lógica de los desarrolladores era que los decodificadores y los televisores digitales usarían procesadores de alta velocidad, y Panamá no cargaría demasiado estos procesadores durante el descifrado.
"Panamá" se basa en una máquina de estados finitos, que consta de dos grandes bloques: 544 bits de estado y un búfer de 8192 bits, que funcionan según el principio de un registro de desplazamiento de retroalimentación . La retroalimentación asegura que los bits de entrada pasen por varias iteraciones después de la entrada, lo que a su vez asegura la difusión bit a bit. Debo decir que se usa un búfer similar en la función de compresión SHA. [6] El objeto de trabajo de Panamá es una palabra de 32 bits y el estado consta de 17 palabras de este tipo, mientras que el búfer tiene 32 celdas, cada una de las cuales contiene 8 palabras de este tipo. [7]
Panamá puede actualizar el búfer y los estados iterando. Y para la función iterativa, se implementan tres modos: "Reset", "Push" y "Pull". En el modo "Push", la máquina recibe alguna entrada pero no emite nada. En el modo "Pull", por el contrario, se forman los datos de salida, pero no se toma nada como entrada. Además, una "iteración de extracción vacía" significa que la salida de esa iteración se descarta. En el modo "Restablecer", el estado y el búfer se restablecen a cero. [ocho]
El cambio de estado se caracteriza por una alta difusión y una no linealidad distribuida. [9] Esto significa que un pequeño número de iteraciones es suficiente para lograr una buena dispersión. Esto se hace usando 4 bloques, cada uno de los cuales resuelve su propia tarea.
Si consideramos a "Panamá" como una función hash, entonces el algoritmo para su funcionamiento es el siguiente. Inicialmente, la función hash acepta todos los bloques de mensajes. Después de eso, se llevan a cabo varias iteraciones "Push" más, lo que permite que los últimos bloques de mensajes recibidos se dispersen dentro del búfer y el estado. Después de eso, se realiza la última iteración "Pull", que le permite obtener el resultado del hash. El esquema de cifrado de transmisión se inicializa de la siguiente manera: primero, se realizan dos iteraciones "Push" para obtener la clave y el parámetro de diversificación. Después de eso, se producen una serie de iteraciones "Pull" para dispersar la clave y el parámetro dentro del búfer y los estados. Esto completa la inicialización y Panamá está listo para crear bits de la secuencia de salida realizando iteraciones "Pull". [3]
Puede designar el estado como , y las 17 palabras que definen los estados pueden designarse como . El búfer se denota como , el -ésimo de su celda-as , y una de las palabras que se encuentran dentro de esta celda-as . Inicialmente, tanto el estado como el búfer se llenan solo con ceros. En el modo "Push", "Panamá" recibe una palabra de 8 bits como entrada, en el modo "Pull", se forma una palabra de 8 bits como salida. [7]
Si designamos la función que actualiza el búfer como , entonces, si aceptamos que , podemos obtener las siguientes reglas para actualizar el búfer:
en , , pordonde en el modo "Push" hay un bloque de entrada , y en el modo "Pull" es una parte del estado , es decir, 8 de sus componentes, definidos como
porEl estado se actualiza de acuerdo con la siguiente regla , que es una superposición de 4 transformaciones diferentes:
donde es una transformación lineal inversa, es, de nuevo, una transformación lineal inversa, es una combinación de rotación de bits de palabra y barajado de posición de palabra, y la transformación es una suma bit a bit del búfer y la palabra de entrada.
En este caso, determinará la suma de operaciones, donde se realiza primero la de la derecha.
Ahora podemos considerar cada una de estas operaciones. se define de la siguiente manera:
para ,donde todos los índices se toman módulo . Tenga en cuenta que la reversibilidad de esta transformación se deriva del hecho de que es coprima con .
Puede ser definido como:
para ,donde todos los índices se toman módulo .
Si para la conversión se determina que existe un desplazamiento en posiciones desde el bit menos significativo al más significativo, entonces:
,y , y
Si para la transformación se realizará eso , entonces
, para , porEn el modo "Push" es el mensaje de entrada , y en el modo "Pull" - .
La palabra de salida en el modo "Pull" se define de la siguiente manera:
. [once]"Panamá" como función hash asigna un resultado hash de 256 bits a un mensaje de longitud arbitraria. [11] En este caso, el hash ocurre en 2 etapas
Se puede denotar como una secuencia de bloques de entrada . Luego, en el momento cero del tiempo, se genera el modo Reset, luego, durante los ciclos, se cargan los bloques de entrada. Después de eso, se realizan 32 iteraciones "Pull" vacías. Y luego, en la iteración 33 "Pull", se devuelve el resultado hash .
La principal tarea de desarrollar la función hash de Panamá fue encontrar una función hash "hermética" [11] , es decir, una función para la cual (si el resultado del hash consta de bits):
Además, no es posible detectar correlaciones sistemáticas entre cualquier combinación lineal de bits de entrada y cualquier combinación lineal de bits de resultado hash. [once]
Esta función hash ha sido atacada con éxito dos veces. Ya en 2001 se demostró que esta función hash no es criptográficamente segura, ya que se encontraron colisiones para las operaciones. Además, Joan Dymen demostró que es posible encontrar colisiones ya para operaciones, y para satisfacer los parámetros de confiabilidad, es necesario que las colisiones se localicen al menos para operaciones. [12]
Funciones hash | |
---|---|
propósito general | |
Criptográfico | |
Funciones de generación de claves | |
Número de cheque ( comparación ) | |
Hachís |
|