REDOC II | |
---|---|
Creador | miguel madera |
Creado | 1990 _ |
publicado | 1990 _ |
Tamaño de clave | 70 a 17920 bits, efectivo: 70 bits |
Tamaño de bloque | 70 bits |
Número de rondas | diez |
Tipo de | propio |
REDOC III | |
---|---|
Creador | miguel madera |
Tamaño de clave | Variable, hasta 2560 bytes (20480 bits) |
Tamaño de bloque | 80 bits |
Número de rondas | diez |
Tipo de | propio |
REDOC es un algoritmo criptográfico de bloques simétricos desarrollado por Michael Wood en 1990 para Cryptech y llamado REDOC II. Todas las operaciones: sustituciones , permutaciones, XOR se realizan con bytes, lo que permite que se implemente de manera efectiva mediante programación. El algoritmo utiliza conjuntos de tablas ( S-boxes ) dependientes del texto sin formato clave y original que utilizan funciones de tabla variables . El algoritmo se distingue por el uso de máscaras., es decir. números obtenidos de la tabla clave. Las máscaras se utilizan para seleccionar las tablas de una función particular de una ronda particular. Esto utiliza tanto el valor de la máscara como el valor de los datos [1] .
REDOC-II es un criptosistema de diez rondas (pero se ha sugerido que una versión de 1 o dos rondas es segura) [2] . Cada ronda en la versión original de REDOC II implica un conjunto de manipulaciones en un bloque de 10 bytes. Se utilizan siete bits de cada byte para valores de datos, y el octavo bit es el bit de paridad .
Sin embargo, dado que solo los primeros 7 bits de cada byte se utilizan para el cifrado , el espacio alfabético para cada byte es de 0 a 127. Y todas las operaciones se realizan en módulo 128 [3] .
La longitud de la clave en la versión original de REDOC II es de 10 bytes. El tamaño efectivo de la clave es de 70 bits. Cabe aclarar que REDOC II puede soportar una longitud de clave en el rango de 70 a 17920 bits [3] .
Cada ronda consta de seis fases:
Durante cada fase, los datos se procesan mediante tablas [4] .
1) 16 tablas de búsqueda predefinidas que se utilizan en las fases de búsqueda de variables. (Fijado)
Ejemplo de tabla de búsqueda | |||||||
---|---|---|---|---|---|---|---|
Original | = | Sub 0 | Sub 1 | Sub 4 | sub10 | Sub 14 | Sub15 |
valor | |||||||
0 | = | 90 | 47 | 25 | 66 | 73 | 0 |
una | = | 46 | 89 | 51 | 13 | 36 | 52 |
2 | = | 66 | 87 | 103 | 31 | 107 | 44 |
3 | = | 21 | veinte | 116 | 7 | 43 | 83 |
… | = | ||||||
126 | = | 24 | catorce | 105 | 114 | 77 | 6 |
127 | = | 122 | 62 | once | 63 | 49 | 79 |
2) 128 tablas de permutación predefinidas utilizadas por fases de permutación variables. (Fijado)
Ejemplo de tabla de permutaciones | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Original | = | una | 2 | 3 | cuatro | 5 | 6 | 7 | ocho | 9 | diez |
Permutación 1 | = | una | 6 | 7 | 9 | diez | 2 | 5 | ocho | 3 | cuatro |
Permutación 2 | = | diez | cuatro | ocho | 3 | una | 7 | 2 | 9 | 5 | 6 |
Permutación 3 | = | una | 6 | cuatro | 9 | ocho | 5 | diez | 2 | 3 | 7 |
… | = | ||||||||||
Permutación 86 | = | 9 | 7 | 2 | 6 | 5 | ocho | 3 | diez | una | cuatro |
Permutación 87 | = | 5 | 3 | ocho | una | 9 | 7 | diez | 2 | cuatro | 6 |
… | = | ||||||||||
Permutación 126 | = | 9 | ocho | 3 | 7 | una | diez | 5 | 6 | 2 | cuatro |
Permutación 127 | = | 7 | ocho | 5 | diez | 9 | 3 | cuatro | 2 | una | 6 |
3) 128 tablas de enclave predefinidas utilizadas por fases de enclave variables. (Fijado)
Ejemplo de tabla de enclave | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
a | b | C | d | ||||||||||||
Entrada 0: | 5 | 2 | 3 | 3 | 5 | 2 | 5 | cuatro | 2 | 5 | cuatro | 2 | |||
cuatro | 3 | una | una | 3 | 5 | cuatro | 3 | una | 2 | 5 | una | ||||
2 | 5 | cuatro | 2 | cuatro | una | una | 5 | 3 | una | 3 | 5 | ||||
una | cuatro | 5 | cuatro | una | cuatro | 3 | 2 | 5 | 3 | 2 | cuatro | ||||
3 | una | 2 | cuatro | 2 | 3 | 2 | una | cuatro | cuatro | una | 3 | ||||
Entrada 1: | 3 | una | 2 | 3 | 2 | 5 | cuatro | 2 | una | cuatro | 2 | 3 | |||
cuatro | 3 | una | 5 | una | cuatro | 3 | cuatro | 5 | 5 | 3 | una | ||||
2 | 5 | cuatro | 2 | cuatro | 3 | 5 | una | cuatro | 2 | una | 5 | ||||
5 | 2 | 3 | cuatro | 3 | una | una | 3 | 2 | 3 | 5 | cuatro | ||||
una | cuatro | 5 | una | 5 | 2 | 2 | 5 | 3 | una | cuatro | 2 | ||||
… | |||||||||||||||
Entrada 31: | 2 | cuatro | una | 2 | cuatro | 3 | una | 5 | 3 | cuatro | una | 5 | |||
3 | 5 | cuatro | cuatro | una | 2 | 2 | cuatro | una | 3 | 5 | 2 | ||||
5 | una | 3 | 3 | 5 | cuatro | cuatro | 3 | 2 | una | cuatro | 3 | ||||
una | 2 | 5 | 5 | 2 | una | 5 | 2 | cuatro | 2 | 3 | cuatro | ||||
cuatro | 3 | 2 | una | 3 | 5 | 3 | una | 5 | 5 | 2 | una |
4) Además, el algoritmo de procesamiento de claves calcula 128 tablas de claves de diez bytes y nueve tablas de máscaras para cada clave. (Computable, creado cuando se inicializa el cifrado) [3] [4]
Ejemplo de tabla de claves | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Clave 0 | = | 0 | 34 | 5 | 63 | 9 | 73 | 74 | 107 | 109 | 33 |
Clave 1 | = | diez | 62 | 48 | 85 | 32 | 101 | ocho | 0 | 63 | 56 |
Clave 2 | = | 26 | 59 | 75 | 97 | 33 | 80 | ocho | 6 | 73 | 26 |
… | = | ||||||||||
Clave 107 | = | 36 | 123 | 45 | diez | 55 | 59 | 109 | 45 | 98 | 24 |
… | = | ||||||||||
Clave 118 | = | 95 | 25 | 48 | 47 | una | veinte | 117 | 55 | 19 | 67 |
… | = | ||||||||||
Clave 126 | = | 62 | 110 | 70 | 27 | 124 | 31 | 119 | 97 | 9 | 2 |
Clave 127 | = | once | 54 | 25 | 87 | 107 | 73 | cuatro | 118 | 62 | 34 |
Ejemplo de tabla de máscaras | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
máscara 1 | = | 48 | 2 | 121 | Dieciocho | 60 | 105 | 33 | cincuenta | once | 60 |
Máscara 2 | = | 26 | 78 | 24 | 72 | 69 | 13 | 77 | 43 | 9 | 99 |
máscara 3 | = | 64 | 113 | 72 | 61 | 37 | 13 | 49 | 71 | 24 | 60 |
máscara 4 | = | 104 | 62 | 69 | 87 | Dieciocho | 31 | 102 | 101 | 32 | 125 |
En cada fase de la variable de permutación, se agregan los diez bytes de datos (módulo 128), y el resultado se somete a XOR con un byte específico de la tabla de máscaras. El valor resultante es el número de la tabla de permutaciones. Todos los bytes de datos se reemplazan por la permutación seleccionada [4] .
Se selecciona un byte de los datos y el byte correspondiente de la tabla de máscaras, entre los cuales se realiza la operación XOR. El valor resultante es el número de tabla clave. (Vale la pena recordar que se utilizan 7 bits de cada byte para el cifrado. Por lo tanto, el número de la tabla de claves resultante se encuentra en el rango de 0 a 127). Todos los bytes de datos, excepto el seleccionado, se someten a XOR con los bytes correspondientes de la tabla de claves con el número recibido.
Tal operación se realiza para todos los bytes de los datos. [cuatro]
Se selecciona un byte de los datos y el byte correspondiente de la tabla de máscaras, entre los cuales se realiza la operación XOR. El valor resultante, tomado módulo 16, es el número de la tabla de sustitución. Todos los bytes, excepto el seleccionado, se reemplazan con valores de la tabla de sustitución con el número recibido.
Tal operación se realiza para todos los bytes de los datos [4] .
La tabla de enclave predefinida tiene cinco filas y 3 columnas. Cada entrada contiene un número del 1 al 5. Hay 2 propiedades que la tabla de enclave debe cumplir:
Esto se debe a que la tabla se procesa línea por línea y de la siguiente manera: Cada número en la tabla de enclave significa una posición de byte. Los tres bytes que se especifican utilizando una fila de la tabla se suman (módulo 128). El byte especificado en la primera columna se reemplaza por la cantidad recibida. [3]
Cada fase de enclave variable usa 4 tablas de enclave de la siguiente manera:
En la versión original de REDOC-II, la tabla de claves y la tabla de máscaras se llenan utilizando la clave K de 70 bits.
El algoritmo para llenar la tabla de claves es el siguiente:
En total, se forman 128 subclaves.
El algoritmo para llenar la tabla de máscaras se ve así:
En total, se forman 4 máscaras.
La fuerza bruta se considera la forma más efectiva de abrir la llave; se requerirán 2.160 operaciones para lograr el objetivo. Casi el único criptoanálisis efectivo fue la apertura de una de las rondas del algoritmo por parte de Thomas Kuzik, pero no fue posible extender la apertura a más rondas. Con la ayuda de 2300 textos abiertos , una de las rondas fue criptoanalizado por Shamir y Biham , después de 4 rondas se obtuvieron 3 valores de máscara, pero esto no trajo éxito como tal y por el momento el algoritmo se considera criptorresistente [ 1] .
También hay una versión mucho más simplificada del algoritmo: REDOC III , creada por Michael Wood. Se utiliza un bloque de 80 bits, la longitud de la clave es variable, puede llegar a 20480 bits. Se excluyen las permutaciones y sustituciones, todas las operaciones en el bloque y la clave se basan únicamente en el uso de XOR, por lo que la velocidad de cifrado aumenta significativamente a expensas de la resistencia al criptoanálisis diferencial . El algoritmo se basa en 256 claves de 10 bytes generadas a partir de la clave secreta y dos bloques de máscara de 10 bytes obtenidos a partir de XOR 128 claves de 10 bytes. Se necesitan 223 textos sin formato para recuperar con éxito ambas máscaras del algoritmo REDOC III. Este algoritmo es simple y rápido. En un procesador 80386 de 33 MHz, cifra los datos a una velocidad de 2,75 Mbps [1] . El sistema criptográfico REDOC II es capaz de cifrar 800 kbps a una frecuencia de reloj de 20 MHz. [6]
El algoritmo REDOC II y su versión simplificada están patentados en EE . UU. [1] .
Criptosistemas simétricos | |
---|---|
Cifrados de flujo | |
Red Feistel | |
red SP | |
Otro |