Noekeon

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 13 de enero de 2018; las comprobaciones requieren 2 ediciones .
NOEKEON
Creador Joan Dymen
Michaël Peeters
Gilles Van Assche
Vincent Raymen
publicado 2000  _
Tamaño de clave 128 bits
Tamaño de bloque 128 bits
Número de rondas dieciséis

NOEKEON  es una familia de cifrados de dos bloques desarrollados por Joan Dymen ,  Michaël Peeters , Gilles Van Assche y Vincent Raymen y presentados en el proyecto de investigación NESSIE [1] . Los dos cifrados son NOEKEON en modo directo y modo indirecto. Los modos difieren solo en el procedimiento de expansión clave.

Información general

La longitud de la clave en NOEKEON es de 128 bits. En cada ronda, NOEKEON utiliza una secuencia de transformaciones autoinversas que se pueden implementar fácilmente en hardware o software, incluso en uno donde existe la posibilidad de un ataque de canal lateral . El cifrado tiene una implementación compacta en varios lenguajes de programación , se ejecuta rápidamente en una variedad de hardware y es muy eficiente en una amplia gama de plataformas [2] . Sin embargo, NOEKEON no cumplió con los requisitos de la estrategia de diseño de senderos amplios , como lo demuestra el criptoanálisis realizado por Lars Knudsen y Håvard Raddum en abril de 2001. Knudsen y Raddum demostraron que este cifrado podría ser atacado en base a claves vinculadas [3] , debido a cuyo cifrado no se seleccionó en el proyecto NESSIE.

Descripción del algoritmo

Cifrado

El algoritmo NOEKEON [4] realiza 16 rondas de transformaciones seguidas de la aplicación de la función Theta. El bloque de datos de entrada Stateson cuatro palabras de 32 bits de a[0]a a[3].

Algoritmo NOEKEON en notación de pseudocódigo estilo C.

Noekeon ( WorkingKey , State ) { For ( i = 0 ; i < Nr ; i ++ ) Round ( WorkingKey , State , Roundct [ i ], 0 ); Estado [ 0 ] ^= Roundct [ Nr ]; Theta ( Clave de trabajo , Estado ); }

La inversión de cifrado se ve así:

InverseNoekeon ( Tecla de trabajo , Estado ) { Theta ( NullVector , WorkingKey ); For ( i = Nr ; i > 0 ; i -- ) Round ( WorkingKey , State , 0 , Roundct [ i ]); Theta ( Clave de trabajo , Estado ); Estado [ 0 ] ^= Roundct [ 0 ]; }

El número de rondas Nres 16. La única diferencia entre NOEKEON y su inversa es el cálculo WorkingKeyde la inversa de NOEKEON y el uso de constantes de ronda.

Ronda de transformación

Cada ronda del algoritmo hace lo siguiente:

  1. La primera palabra de los datos de entrada se agrega mediante la operación XOR con la constante de ronda RC[r], donde r es el número de la ronda actual.
  2. Se realiza una transformación Theta lineal en las palabras de entrada con la participación de la tecla de trabajo WorkingKey.
  3. La primera palabra se agrega nuevamente mediante XORing con RC[r].

Descripción de las rondas del algoritmo en pseudocódigo:

Redondo ( Clave , Estado , Constante1 , Constante2 ) { Estado [ 0 ] ^= Constant1 ; Theta ( Clave , Estado ); Estado [ 0 ] ^= Constant2 ; Pi1 ( Estado ); Gama ( Estado ); Pi2 ( Estado ); }

Todas las funciones operan en state State, al que se proporciona un puntero. Una de las constantes de entrada siempre se establece en 0. Si la transformación redonda se usa en el cifrado directo, entonces se Constant2establece en 0, si la transformación redonda se usa para el cifrado inverso, entonces Constant1 = 0.

gama

Gamma es un mapeo no lineal involutivo que es esencialmente un simple reemplazo de tabla. Gammarealiza operaciones independientes en 32 sub-bloques de bits llamados cajas. Estas casillas están formadas por 4 bits que están en la misma posición en cada una de las cuatro palabras de 32 bits , es decir, la casilla con el número i se forma a partir de los valores de los i -ésimos bits de cada una de las palabras de 32 bits. palabras:

Sea además el i -ésimo bit de una palabra de 32 bits , es decir, el n -ésimo bit de la caja . Entonces Gamma actúa sobre las cajas de la siguiente manera: State

  • .

Descripción del algoritmo Gamma en pseudocódigo:

Gama ( a ){ a [ 1 ] ^= ~ a [ 3 ] &~ a [ 2 ]; un [ 0 ] ^= un [ 2 ] & un [ 1 ]; tmp = un [ 3 ]; un [ 3 ] = un [ 0 ]; a [ 0 ] = tmp ; un [ 2 ] ^= un [ 0 ] ^ un [ 1 ] ^ un [ 3 ]; a [ 1 ] ^= ~ a [ 3 ] &~ a [ 2 ]; un [ 0 ] ^= un [ 2 ] & un [ 1 ]; }

Gammase puede definir como una alternativa a un S-box aplicado a cada uno de los cuadros en State, con los valores de cada cuadro Gammacambiados de la siguiente manera:

Valor de entrada 0 una 2 3 cuatro 5 6 7 ocho 9 A B C D mi F
valor de salida 7 A 2 C cuatro ocho F 0 5 9 una mi 3 D B 6

Teta

Thetaes un mapeo lineal que se aplica a un estado Statecon una clave de trabajo k. Statees una matriz de ocho columnas de 16 bits. Cada columna consta de cuatro conjuntos de 4 bits en las posiciones módulo 8 de las palabras. Por ejemplo, la columna 5 consta de los bits 5, 13, 21 y 29 de la palabra , los bits 5, 13, 21 y 29 de la palabra 13, 21 y 29 palabras y bits 5, 13, 21 y 29 palabras . realiza la siguiente secuencia de acciones: Theta

Criterios utilizados en el diseño de la transformación Theta:

  • Posibilidad de usar NOEKEON tanto hacia adelante como hacia atrás.
  • Relativamente pocas operaciones.
  • Suficiente difusión de datos
  • Simetría.
  • Facilidad de descripción.

Función Thetaen pseudocódigo:

theta ( k , a ){ temperatura = un [ 0 ] ^ un [ 2 ]; temperatura ^= temperatura >>> 8 ^ temperatura <<< 8 ; a [ 1 ] ^= temporal ; a [ 3 ] ^= temporal ; un [ 0 ] ^= k [ 0 ]; un [ 1 ] ^= k [ 1 ]; un [ 2 ] ^= k [ 2 ]; un [ 3 ] ^= k [ 3 ]; temperatura = una [ 1 ] ^ una [ 3 ]; temperatura ^= temperatura >>> 8 ^ temperatura <<< 8 ; a [ 0 ] ^= temporal ; a [ 2 ] ^= temporal ; }

La inversión Thetase puede obtener utilizando las propiedades algebraicas de las aplicaciones lineales y el hecho de que la primera y la última componentes Thetaconmutan:

theta ( k ' , a );

La nueva clave de trabajo k' se obtiene aplicando Thetaa la clave inicial kcon clave de trabajo cero:

Theta ( NullVector , k );

Esto significa que la inversa Thetaes igual a sí misma Theta, solo que con un valor diferente de la clave de trabajo, que se puede obtener aplicando Thetaa la clave de trabajo inicial.

Operaciones de cambio

Las operaciones de cambio Pi1y Pi2realizan cambios cíclicos en tres de las cuatro palabras con diferentes valores de cambio. Los valores de sesgo se seleccionan de acuerdo con los siguientes criterios:

  • La operación Pi2 debe ser inversa a la operación Pi1 para poder usar las mismas transformaciones redondas en cifrado directo e inverso.
  • Las cuatro compensaciones de palabra en estas operaciones deben diferir módulo 8.
  • El desplazamiento de palabra nula a[0] debe ser cero.
  • Se selecciona una matriz de compensaciones de un conjunto de matrices que optimizan la difusión dentro de un ciclo, y se selecciona la primera de todas las matrices resultantes en orden lexicográfico .

Una medida de difusión es el número de casillas a la salida de la parte lineal del algoritmo, que cambian bajo la influencia de un cambio en una de las casillas a la entrada. La parte lineal del algoritmo es una secuencia de funciones Pi1, Theta, Pi2. En otras palabras, la medida de difusión es el número de casillas de salida distintas de cero, siempre que solo una casilla de entrada sea distinta de cero. Debido a la simetría de estas tres funciones, el número de casillas de salida distintas de cero no depende de la posición de la casilla de entrada distinta de cero. El número de cuadros de salida distintos de cero para la matriz de desplazamiento [0,1,5,2]es 23, que es el mejor resultado que satisface los criterios de selección para los desplazamientos. Las mismas declaraciones son verdaderas para las operaciones inversas.

Operaciones de cambio en pseudocódigo:

Pi1 ( a ){ a [ 1 ] <<<= 1 ; un [ 2 ] <<<= 5 ; un [ 3 ] <<<= 2 ; } Pi2 ( un ){ un [ 1 ] >>>= 1 ; un [ 2 ] >>>= 5 ; un [ 3 ] >>>= 2 ; }

Extensión clave

En modo indirecto, la clave de trabajo WorkingKeyse deriva de la clave privada CipherKeyusándola NOEKEONcon nulo WorkingKey:

Clave de trabajo = Clave de cifrado ; Noekeon ( NullVector , WorkingKey );

En modo directo, la clave de trabajo es la misma que la secreta, es decir, no hay extensión de clave:

Clave de trabajo = Clave de cifrado ;

En ambos casos, la clave de trabajo no cambia entre rondas.

Constantes redondas

Las constantes de ronda se superponen en cada ronda del algoritmo sobre el significado de la palabra usando la operación de suma de módulo 2 y se usan en el cifrado para eliminar algunas propiedades de simetría:

  • La transformación redonda se realiza en diferentes cuadros de datos de la misma manera.
  • Las transformaciones de ronda son las mismas para todas las rondas del cifrado.

Vale la pena señalar que solo el último byte de las constantes de ronda es distinto de cero, es decir, en cada ronda del algoritmo, solo el cuarto byte de la palabra se cambia usando las constantes de ronda . Además, los valores de las constantes de a en este byte se pueden calcular recursivamente . En base a esto, las constantes redondas se pueden escribir en pseudocódigo de la siguiente manera: RC[1]RC[Nr]

Roundct [ i ] = ( ' 00 ' , ' 00 ' , ' 00 ' , RC [ i ]); RC [ 0 ] = 0x80 ; if ( RC [ i ] & 0x80 != 0 ) RC [ i + 1 ] = RC [ i ] << 1 ^ 0x1B else RC [ i + 1 ] = RC [ i ] << 1 ;

Tal cálculo corresponde a un registro de desplazamiento de retroalimentación lineal . Si es necesario, las constantes se pueden calcular en orden inverso:

if ( RC [ i ] & 0x01 != 0 ) RC [ i -1 ] = RC [ i ] >> 1 ^ 0x8D else RC [ i -1 ] = RC [ i ] >> 1 ;

Las constantes de ronda se calculan de la misma manera que en el algoritmo de Rijndael , excepto por el valor dado RC[0].

Algoritmo de criptoanálisis

Ambos modos del algoritmo Noekeon [5] fueron aceptados para su consideración en el marco del concurso NESSIE . Ambos modos eran susceptibles al ataque de clave enlazada propuesto por los criptólogos Lars Knudsen y Håvard Raddum en su trabajo [3] . Además, también probaron que los criterios para crear tablas de sustitución en la operación Gamma no contribuyen a la alta fortaleza criptográfica del algoritmo: al generar una tabla de sustitución, el algoritmo resultante con una probabilidad de aproximadamente 86% estará sujeto a lineal y/o criptoanálisis diferencial . También se ha demostrado que es posible encontrar claves relacionadas con alta probabilidad . Estas razones resultaron ser suficientes para que el algoritmo de Noekeon no ingresara a la segunda ronda de la competencia.

Notas

  1. Algoritmos de cifrado: participantes en el concurso NESSIE . Consultado el 24 de noviembre de 2014. Archivado desde el original el 4 de marzo de 2016.
  2. La página de NOEKEON . Fecha de acceso: 18 de noviembre de 2014. Archivado desde el original el 1 de marzo de 2015.
  3. 1 2 [[Knudsen, Lars|Lars Knudsen]] y [[Håvard Raddum]] en NOEKEON . Consultado el 18 de noviembre de 2014. Archivado desde el original el 3 de marzo de 2016.
  4. [[Dymen, Joan|Joan Dymen]], [[ Michaël Peeters]], [[Gilles Van Assche]] y [[Raymen, Vincent|Vincent Raemen]] Propuesta de Nessie: NOEKEON . Consultado el 28 de diciembre de 2014. Archivado desde el original el 5 de marzo de 2015.
  5. [[Håvard Raddum]] La evaluación estadística de la presentación de NESSIE . Consultado el 24 de noviembre de 2014. Archivado desde el original el 19 de enero de 2022.

Enlaces