DESPERTARSE

WAKE ( English  Word Auto Key Encryption , cifrado de palabras en una clave automática ) es un algoritmo de cifrado de flujo en una clave automática desarrollado por David Wheeler en 1993. Inicialmente diseñado como un sistema de cifrado de velocidad media (la velocidad en los cifrados de flujo se mide en ciclos por byte de texto sin formato cifrado ) bloques (la cantidad mínima de información que puede procesar el algoritmo; en este caso, el bloque es 32bit ) con alta seguridad. Según el autor, se trata de un sencillo algoritmo de cifrado rápido apto para procesar grandes cantidades de datos, así como mensajes cortos, donde solo se cambia la clave secreta . Adecuado para usar hashes en claves secretas utilizadas en la verificación . Un ejemplo de un posible uso práctico de este algoritmo es el cifrado de un flujo de datos de texto en SMS . Debido al gran tamaño del bloque, no se puede utilizar en comunicaciones en tiempo real [1] [2] [3] [4] [5] .

Propiedades

El algoritmo funciona en modo CFB  : la palabra anterior de la secuencia cifrada sirve como base para generar la siguiente. Sin embargo, existen modificaciones del algoritmo relacionadas con cambiar el proceso de generación de claves y permitir trabajar en modos OFB y ROFB (Reverse OFB) [6] . El cifrado gamma utiliza palabras de 32 bits y la longitud de la clave de inicio es de 128 bits [1] . El algoritmo también utiliza el S-box de reemplazo , que consta de 256 palabras de 32 bits. En el trabajo se utilizan cuatro variables , se deben utilizar registros como tal para un mejor desempeño . El trabajo se basa en la reutilización de tablas en el caché y la presencia de un gran espacio de estado . Esto significa que la caché de datos debería caber en una tabla de 256 palabras sin problemas [2] .

El algoritmo es lo suficientemente rápido: en los procesadores de 32 bits de la arquitectura VLIW , el rendimiento estimado es de 6,38 ciclos por byte, lo que supera al algoritmo SEAL , pero es inferior a RC4 (3,5 y 10,6 ciclos por byte, respectivamente) [3 ] .

El cifrado se presta al criptoanálisis, es decir, ataques al texto sin formato elegido y al texto cifrado elegido [7] .

Estructura del algoritmo

El algoritmo se basa en el uso en cascada de la función de mezcla ( es un signo de conjunción  bit a bit , [7])lógicoes, el cambio de bitbitXORoperaciónuna es Además, las palabras en el bloque están compuestas de tal manera que el conjunto de bytes altos de estas palabras es una permutación de 0 a 255 (los primeros bytes de cada palabra son únicos), mientras que los 3 bytes restantes se llenan aleatoriamente [ 8] . La función de mezcla se hace reversible a partir de tales consideraciones que el conocimiento de una de las palabras en la entrada y la palabra en la salida será suficiente para restaurar la segunda incógnita en la entrada [9] .

WAKE consta de cuatro etapas de la función con retroalimentación para cada una y una más para todo el grupo de etapas. Esta cantidad se elige como la mínima posible para una difusión completa.de datos en una palabra (es decir, cuando al menos un bit de la clave cambia, el resultado del algoritmo de cifrado cambia por completo), debido al hecho de que el bloque realiza una transformación no lineal , y el uso de un bit a bit "Y" y "O" exclusivo también introducen una ligera no linealidad [2] .

Descripción del algoritmo

El proceso de cifrado tiene lugar en tres etapas [1] :

  1. proceso de generación de S-box;
  2. Proceso de generación de claves automáticas;
  3. Cifrado y descifrado directo.

Proceso de generación de S-box

En primer lugar, los primeros valores del bloque - (tabla de reemplazo) se inicializan con una clave secreta. Se da un ejemplo del algoritmo para llenar esta tabla [1] :

  1. Inicialice una tabla auxiliar que consta de 8 palabras con una permutación de los tres primeros bits:
  2. Copie la clave en las primeras 4 palabras de tal manera que: , donde  es el resultado de dividir la clave en cuatro partes iguales.
  3. Forme las palabras restantes en un ciclo :
  4. Realiza la sumatoria: . Así que incluso las primeras palabras dependerán de todos los bits .
  5. Definir variables auxiliares:
  6. Realiza una permutación en el primer byte de las palabras de la tabla:
  7. Inicialice las siguientes variables:
  8. Mezcla las palabras en :

El método de construcción se puede modificar fácilmente y el algoritmo anterior es solo un ejemplo. Lo principal es que el resultado del algoritmo tenga todas las propiedades presentadas por razones de fortaleza criptográfica del bloque . Así, por ejemplo, se puede llenar la tabla de palabras con números aleatorios , pero en este caso se filtra información sobre las entradas repetidas y nulas de la tabla , no superando los 1,5 bits por cada entrada. Sin embargo, el creador del algoritmo afirma que el proceso de permutación en los bytes altos de palabras ayuda significativamente a reducir las fugas. Y la permutación en los cuatro bytes nivela aún más la probabilidad de leer la tabla. Por lo tanto, el algoritmo de llenado dado anteriormente es un compromiso entre la seguridad y la velocidad, ya que son los bytes altos de las palabras del bloque los que se permutan en él [10] .

Proceso de generación de claves automáticas

La generación se realiza de acuerdo con el diagrama de bloques del algoritmo [7] :

  1. Primero debe inicializar los valores de registro con una clave (posiblemente diferente): son responsables de la misma división de la clave en partes iguales.
  2. Las palabras en la secuencia de teclas se calculan de la siguiente manera:
  3. La siguiente palabra de la secuencia de teclas está determinada por el valor del registro extremo:

La clave debe cambiarse cuando hay un texto sin formato grande (el período de cambio de clave es de aproximadamente 10,000 palabras; en este caso, el algoritmo se ralentiza en aproximadamente un 2-3%) [11] .

Cifrado y descifrado

Ambos métodos son la gamificación del texto sin formato (o texto cifrado) con una secuencia de teclas. El cifrado y el descifrado se realizan según la fórmula [12] :

, donde  es una palabra de texto sin formato o de texto cifrado, dependiendo de si se está realizando el cifrado o el descifrado.

Uso

Hay bastantes formas de usar este cifrado, pero el autor formula solo tres métodos principales [13] :

  1. Complementando los datos encriptados con dos palabras en ambos extremos y luego llenando todos los bits de estas palabras con los mismos valores aleatorios. Por lo tanto, el decodificador podrá reconocer cuándo es necesario usar la siguiente clave en la secuencia de claves para descifrar con éxito el mensaje;
  2. Cambiar la clave de inicio para cada nuevo bloque de datos;
  3. Cifrado de las últimas cuatro palabras del texto sin formato, gamificación adicional con la tecla de inicio de toda la secuencia y haciendo lo mismo en orden inverso con otra tecla de inicio. Este método también puede implicar el uso de alguna función hash de clave privada estándar que tenga la misma clave de inicio y la misma tabla de reemplazo para generar un hash de 128 bits. Este hash se mezcla con las primeras cuatro palabras del texto sin formato, de hecho, se produce un cifrado adicional de la misma manera que antes. Entonces, cada nuevo mensaje forma un nuevo resultado a la salida del algoritmo. Además, en el caso de utilizar una función hash, la velocidad de ejecución se incrementa unas 5 veces respecto al método convencional. El método es bueno porque es adecuado para mensajes cortos, donde el cálculo repetido de la tabla de reemplazo reduce significativamente la eficiencia de la aplicación. Entonces, usar la misma mesa de reemplazo es un movimiento razonable.

Ejemplo de trabajo

Un ejemplo del funcionamiento de este algoritmo de cifrado se presenta a continuación [1] :

  1. Inicialización de la tecla de inicio : "legitosinarhusni". En hexadecimal , se verá así:
  2. Es necesario dividir la clave en cuatro partes iguales e inicializar los valores iniciales de los registros:
  3. Cálculo de la siguiente palabra de la secuencia de teclas ( el bloque ya se ha generado en función de la tecla de inicio disponible):  - una nueva llave.
  4. A continuación, tomemos "ROBBI RAHIM" como texto sin formato. En la representación HEX, esto sería . Es necesario gamificar esta secuencia numérica con la clave:
No.carácter de texto sin formatocódigo ASCIIproceso gammaresultado ASCIISímbolo de salida
unaR5252 XOR C290
2O4F4F X O 5D12_( ej. símbolo )
3B4242 XOR 0341A
cuatroB4242 X O 3072r
5I4949 XOR C28B
6SPACEveinte20 X O 5D7D}
7R5252 XOR 0351Q
ochoA4141 X O 3071q
9H4848 XOR C28AŠ
diezI4949 XOR 5Dcatorce_(ej. símbolo)
onceM4D4D XOR 034EN

Entonces, la secuencia cifrada de palabras es "•_Ar‹}QqŠ_N".

Criptoanálisis

El algoritmo de cifrado de flujo es susceptible de descifrado a través de ataques al texto sin formato elegido y al texto cifrado elegido [7] . En el caso de la primera variante del ataque, se intenta restaurar la tabla de reemplazo clasificando las opciones de texto sin formato en la entrada, la segunda es la selección del texto cifrado para determinar con precisión los mismos valores desconocidos de - bloquear. Se sabe que la complejidad computacional de un ataque de texto sin formato emparejado es aproximadamente o depende de la modificación elegida del ataque (en el primer caso, se utilizan más variantes del texto sin formato). La complejidad computacional de un ataque de fuerza bruta es aproximadamente , es decir, la eficiencia relativa de un ataque de texto sin formato emparejado es obvia [14] . Otra ventaja del ataque propuesto en este artículo [15] es que no depende del rekeying [16] . Sin embargo, los algoritmos mediante los cuales se realiza el criptoanálisis se vuelven inviables si se aumenta la longitud de la palabra ( bits, donde ). Por lo tanto, pueden mejorarse significativamente en el futuro [17] [15] .

Además, un cambio continuo de datos en cualquier lugar del algoritmo de cifrado durante la operación puede comprometer la tabla de reemplazo. En caso de que ya se conozca el bloque, solo se requieren 5 pares de palabras de texto cifrado sin formato para determinar con precisión los valores de registro [11] .

Notas

  1. 1 2 3 4 5 Legito, Robbi Rahim .
  2. 1 2 3 Wheeler, 1993-12-09 , pág. 127.
  3. 1 2 Craig, 1997-01-20 , pág. 276.
  4. Wheeler, 1993-12-09 , pág. 132.
  5. Hui-Mei Chao , pág. 2.
  6. Craig, 1997-01-20 , pág. 279.
  7. 1 2 3 4 Schneier, 1996 , pág. 336.
  8. Shamkin, 2006 , pág. 64.
  9. Craig, 1997-01-20 , pág. 278.
  10. Wheeler, 1993-12-09 , pág. 129.
  11. 12 Ruedas, 1993-12-09 , pág. 130.
  12. Pudovkina, 2001-01-01 , pág. 2.
  13. Wheeler, 1993-12-09 , pág. 131.
  14. Pudovkina, 2001-01-01 , pág. 7.
  15. 1 2 Pudovkina, 2001-01-01 .
  16. Pudovkina, 2001-01-01 , pág. 2.7.
  17. Pudovkina, 2001-01-01 , pág. 1.7.

Literatura

Libros

Artículos