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] .
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] .
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] .
El proceso de cifrado tiene lugar en tres etapas [1] :
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] :
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] .
La generación se realiza de acuerdo con el diagrama de bloques del algoritmo [7] :
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] .
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.Hay bastantes formas de usar este cifrado, pero el autor formula solo tres métodos principales [13] :
Un ejemplo del funcionamiento de este algoritmo de cifrado se presenta a continuación [1] :
No. | carácter de texto sin formato | código ASCII | proceso gamma | resultado ASCII | Símbolo de salida |
---|---|---|---|---|---|
una | R | 52 | 52 XOR C2 | 90 | • |
2 | O | 4F | 4F X O 5D | 12 | _( ej. símbolo ) |
3 | B | 42 | 42 XOR 03 | 41 | A |
cuatro | B | 42 | 42 X O 30 | 72 | r |
5 | I | 49 | 49 XOR C2 | 8B | ‹ |
6 | SPACE | veinte | 20 X O 5D | 7D | } |
7 | R | 52 | 52 XOR 03 | 51 | Q |
ocho | A | 41 | 41 X O 30 | 71 | q |
9 | H | 48 | 48 XOR C2 | 8A | Š |
diez | I | 49 | 49 XOR 5D | catorce | _(ej. símbolo) |
once | M | 4D | 4D XOR 03 | 4E | N |
Entonces, la secuencia cifrada de palabras es "•_Ar‹}QqŠ_N".
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] .