DES

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 22 de marzo de 2015; las comprobaciones requieren 72 ediciones .
DES, estándar de cifrado de datos
Creador IBM
Creado 1977 _
publicado 1977 _
Tamaño de clave 56 bits + 8 de prueba
Tamaño de bloque 64 bits
Número de rondas dieciséis
Tipo de Red Feistel
 Archivos multimedia en Wikimedia Commons

DES ( English  Data Encryption Standard ) es un algoritmo para el cifrado simétrico desarrollado por IBM y aprobado por el gobierno de EE . UU. en 1977 como estándar oficial ( FIPS 46-3). El tamaño de bloque para DES es de 64 bits . El algoritmo se basa en una red Feistel con 16 ciclos ( rondas ) y una clave de 56 bits . El algoritmo utiliza una combinación de transformaciones no lineales (cajas S) y lineales (permutaciones E, IP, IP-1). Se recomiendan varios modos para DES:

Un desarrollo directo de DES es actualmente el algoritmo Triple DES (3DES). En 3DES, el cifrado/descifrado se realiza ejecutando el algoritmo DES tres veces.

Historia

En 1972, se llevó a cabo un estudio sobre la necesidad de seguridad informática del gobierno de EE . UU. La "Oficina Nacional de Estándares" (NBS) estadounidense (ahora conocida como NIST - "Instituto Nacional de Estándares y Tecnología") identificó la necesidad de un estándar gubernamental para cifrar información no crítica.

El NBS consultó con la NSA (Agencia de Seguridad Nacional de EE. UU.) y el 15 de mayo de 1973 anunció el primer concurso para la creación de un cifrado. Se formularon requisitos estrictos para el nuevo cifrado. IBM entró en la competencia con un cifrado que había desarrollado llamado "Lucifer " . Los cifrados de ninguno de los concursantes (incluido "Lucifer") no aseguraron el cumplimiento de todos los requisitos. Durante 1973-1974, IBM finalizó su "Lucifer": utilizó el algoritmo Horst Feistel creado anteriormente. El 27 de agosto de 1974 comenzó la segunda competencia. Esta vez se consideró aceptable el cifrado "Lucifer".

El 17 de marzo de 1975, el algoritmo DES propuesto se publicó en el Registro Federal. En 1976, se realizaron dos simposios públicos para discutir DES. En los simposios, los cambios realizados en el algoritmo por la NSA fueron fuertemente criticados. La NSA redujo la longitud de la clave original y las S-boxes (cajas de sustitución), cuyos criterios de diseño no fueron revelados. Se sospechaba que la NSA debilitaba deliberadamente el algoritmo para que la NSA pudiera ver fácilmente los mensajes cifrados. El Senado de los Estados Unidos revisó las acciones de la NSA y emitió una declaración en 1978 que decía lo siguiente:

En 1990, Eli Biham y Adi Shamir realizaron una investigación independiente sobre el criptoanálisis diferencial  , el método principal para romper los algoritmos de cifrado simétrico de bloques . Estos estudios eliminaron algunas de las sospechas sobre la debilidad oculta de las permutaciones S. Las cajas S del algoritmo DES resultaron ser mucho más resistentes a los ataques que si se eligieran al azar. Esto significa que la NSA conocía esta técnica de análisis desde la década de 1970.

El algoritmo DES fue "hackeado" en 39 días usando una enorme red de decenas de miles de computadoras [1] .

La organización pública " EFF ", que se ocupa de los problemas de seguridad de la información y privacidad personal en Internet , inició un estudio "DES Challenge II" para identificar problemas con DES. Como parte del estudio, los empleados de RSA Laboratory construyeron una supercomputadora de $250 000. En 1998, la supercomputadora descifró datos codificados en DES usando una clave de 56 bits en menos de tres días. La supercomputadora se llamó "EFF DES Cracker". Especialmente para esta ocasión, los científicos organizaron una conferencia de prensa y hablaron con la preocupación de que es poco probable que los atacantes pierdan la oportunidad de aprovechar tal vulnerabilidad.

Algunos funcionarios gubernamentales y expertos han argumentado que descifrar el código DES requiere una supercomputadora multimillonaria. "Es hora de que el gobierno reconozca la inseguridad de DES y apoye la creación de un estándar de cifrado más fuerte", dijo el presidente de EFF, Barry Steinhardt. Las restricciones de exportación impuestas por el gobierno de EE. UU. se aplican a las tecnologías de encriptación con claves de más de 40 bits. Sin embargo, como mostraron los resultados del experimento del Laboratorio RSA, existe la posibilidad de descifrar un código aún más poderoso. El problema se vio agravado por el hecho de que el costo de construir una supercomputadora de este tipo estaba disminuyendo constantemente. “En cuatro o cinco años, estas computadoras estarán en todas las escuelas”, dijo John Gilmour, líder del proyecto DES Challenge y uno de los fundadores de EFF.

DES es un cifrado de bloque. Para entender cómo funciona DES, es necesario considerar el principio de funcionamiento de un cifrado de bloque , la red Feistel .

Bloque de cifrado

Los datos de entrada para el cifrado de bloques son:

La salida (después de aplicar transformaciones de encriptación) es un bloque encriptado de tamaño n bits, y las diferencias menores en los datos de entrada, por regla general, conducen a un cambio significativo en el resultado.

Los cifrados de bloque se implementan aplicando repetidamente ciertas transformaciones básicas a bloques de texto fuente .

Transformaciones básicas:

Dado que las transformaciones se realizan bloque por bloque, es necesario dividir los datos de origen en bloques del tamaño requerido. En este caso, no importa el formato de los datos de origen (ya sean documentos de texto, imágenes u otros archivos). Los datos deben interpretarse en forma binaria (como una secuencia de ceros y unos) y solo después de eso deben dividirse en bloques. Todo lo anterior se puede implementar tanto en software como en hardware.

Transformaciones de la red Feistel

Esta es una transformación sobre vectores ( bloques ) que representan las mitades izquierda y derecha del registro de desplazamiento. El algoritmo DES utiliza la transformación directa de la red Feistel en el cifrado (ver Fig. 1) y la transformación inversa de la red Feistel en el descifrado (ver Fig. 2).

esquema de cifrado DES

El esquema de cifrado del algoritmo DES se muestra en la Fig.3.

El texto fuente es un bloque de 64 bits.

El proceso de cifrado consta de una permutación inicial, 16 ciclos de cifrado y una permutación final.

Permutación inicial

El texto original (bloque de 64 bits) se convierte utilizando la permutación inicial, que viene determinada por la tabla 1:

Tabla 1. Permutación inicial de IP
58 cincuenta 42 34 26 Dieciocho diez 2 60 52 44 36 28 veinte 12 cuatro
62 54 46 38 treinta 22 catorce 6 64 56 48 40 32 24 dieciséis ocho
57 49 41 33 25 17 9 una 59 51 43 35 27 19 once 3
61 53 45 37 29 21 13 5 63 55 47 39 31 23 quince 7

Según la tabla, los primeros 3 bits del bloque resultante después de la permutación inicial son los bits 58, 50, 42 del bloque de entrada y sus últimos 3 bits son los bits 23, 15, 7 del bloque de entrada.

Ciclos de cifrado

El bloque de 64 bits IP(T) obtenido después de la permutación inicial participa en 16 ciclos de la transformación de Feistel.

- 16 ciclos de la transformación de Feistel :

Dividir IP(T) en dos partes , donde  hay respectivamente 32 bits altos y 32 bits bajos del bloque IP(T)=

Sea el resultado una (i-1) iteración, entonces el resultado de la i-ésima iteración está determinado por:

La mitad izquierda es igual a la mitad derecha del vector anterior . Y la mitad derecha es el módulo 2 de  suma bit a bit.

En los 16 ciclos de la transformada de Feistel , la función f desempeña el papel de un cifrado . Consideremos la función f en detalle.

Función de encriptación básica (función Feistel)

Los argumentos de la función son un vector de 32 bits y una clave de 48 bits , que es el resultado de transformar la clave de cifrado original de 56 bits . Para calcular la función , utilice sucesivamente

  1. función de extensión ,
  2. suma modulo 2 con llave
  3. transformación , que consta de 8 bloques de transformación ,
  4. permutación _

La función expande un vector de 32 bits a un vector de 48 bits duplicando algunos bits de ; el orden de bits del vector se da en la Tabla 2.

Tabla 2. Función de extensión E
32 una 2 3 cuatro 5
cuatro 5 6 7 ocho 9
ocho 9 diez once 12 13
12 13 catorce quince dieciséis 17
dieciséis 17 Dieciocho 19 veinte 21
veinte 21 22 23 24 25
24 25 26 27 28 29
28 29 treinta 31 32 una

Los primeros tres bits del vector son los bits 32, 1, 2 del vector . La Tabla 2 muestra que los bits 1, 4, 5, 8, 9, 12, 13, 16, 17, 20, 21, 24, 25, 28, 29, 32 están duplicados. Los últimos 3 bits del vector  son los bits 31, 32, 1 del vector . El bloque obtenido después de la permutación se suma módulo 2 con las claves y luego se presenta en forma de ocho bloques consecutivos .

Cada uno es un bloque de 6 bits. Además, cada uno de los bloques se transforma en un bloque de 4 bits mediante transformaciones . Las transformaciones se definen en la Tabla 3.

Tabla 3. Transformaciones , i=1…8
0 una 2 3 cuatro 5 6 7 ocho 9 diez once 12 13 catorce quince
0 catorce cuatro 13 una 2 quince once ocho 3 diez 6 12 5 9 0 7
una 0 quince 7 cuatro catorce 2 13 una diez 6 12 once 9 5 3 ocho
2 cuatro una catorce ocho 13 6 2 once quince 12 9 7 3 diez 5 0
3 quince 12 ocho 2 cuatro 9 una 7 5 once 3 catorce diez 0 6 13
0 quince una ocho catorce 6 once 3 cuatro 9 7 2 13 12 0 5 diez
una 3 13 cuatro 7 quince 2 ocho catorce 12 0 una diez 6 9 once 5
2 0 catorce 7 once diez cuatro 13 una 5 ocho 12 6 9 3 2 quince
3 13 ocho diez una 3 quince cuatro 2 once 6 7 12 0 5 catorce 9
0 diez 0 9 catorce 6 3 quince 5 una 13 12 7 once cuatro 2 ocho
una 13 7 0 9 3 cuatro 6 diez 2 ocho 5 catorce 12 once quince una
2 13 6 cuatro 9 ocho quince 3 0 once una 2 12 5 diez catorce 7
3 una diez 13 0 6 9 ocho 7 cuatro quince catorce 3 once 5 2 12
0 7 13 catorce 3 0 6 9 diez una 2 ocho 5 once 12 cuatro quince
una 13 ocho once 5 6 quince 0 3 cuatro 7 2 12 una diez catorce 9
2 diez 6 9 0 12 once 7 13 quince una 3 catorce 5 2 ocho cuatro
3 3 quince 0 6 diez una 13 ocho 9 cuatro 5 once 12 7 2 catorce
0 2 12 cuatro una 7 diez once 6 ocho 5 3 quince 13 0 catorce 9
una catorce once 2 12 cuatro 7 13 una 5 0 quince diez 3 9 ocho 6
2 cuatro 2 una once diez 13 7 ocho quince 9 12 5 6 3 0 catorce
3 once ocho 12 7 una catorce 2 13 6 quince 0 9 diez cuatro 5 3
0 12 una diez quince 9 2 6 ocho 0 13 3 cuatro catorce 7 5 once
una diez quince cuatro 2 7 12 9 5 6 una 13 catorce 0 once 3 ocho
2 9 catorce quince 5 2 ocho 12 3 7 0 cuatro diez una 13 once 6
3 cuatro 3 2 12 9 5 quince diez once catorce una 7 6 0 ocho 13
0 cuatro once 2 catorce quince 0 ocho 13 3 12 9 7 5 diez 6 una
una 13 0 once 7 cuatro 9 una diez catorce 3 5 12 2 quince ocho 6
2 una cuatro once 13 12 3 7 catorce diez quince 6 ocho 0 5 9 2
3 6 once 13 ocho una cuatro diez 7 9 5 0 quince catorce 2 3 12
0 13 2 ocho cuatro 6 quince once una diez 9 3 catorce 5 0 12 7
una una quince 13 ocho diez 3 7 cuatro 12 5 6 once 0 catorce 9 2
2 7 once cuatro una 9 12 catorce 2 0 6 diez 13 quince 3 5 ocho
3 2 una catorce 7 cuatro diez ocho 13 quince 12 9 0 3 5 6 once

Supongamos que , y queremos encontrar . Los primeros y últimos dígitos son la representación binaria del número a, 0<=a<=3, los 4 dígitos del medio representan el número b, 0<=b<=15. Las filas de la tabla S3 están numeradas del 0 al 3, las columnas de la tabla S3 están numeradas del 0 al 15. El par de números (a, b) determina el número en la intersección de la fila a y la columna b. La representación binaria de este número da . En nuestro caso , , , y el número definido por el par (3,7) es 7. Su representación binaria es =0111. El valor de la función (32 bits ) se obtiene permutando P aplicado a un bloque de 32 bits . La permutación P viene dada por la Tabla 4.

Tabla 4. Permutación P
dieciséis 7 veinte 21 29 12 28 17
una quince 23 26 5 Dieciocho 31 diez
2 ocho 24 catorce 32 27 3 9
19 13 treinta 6 22 once cuatro 25


Según la Tabla 4, los primeros cuatro bits del vector resultante después de la acción de la función f son los bits 16, 7, 20, 21 del vector

Generación de claves

Las claves se obtienen a partir de la clave inicial (56 bits = 7 bytes o 7 caracteres en ASCII ) de la siguiente manera. Los bits se agregan en las posiciones 8, 16, 24, 32, 40, 48, 56, 64 de la clave para que cada byte contenga un número impar de unos. Esto se utiliza para detectar errores en el intercambio y almacenamiento de claves. Luego se realiza una permutación para la clave extendida (excepto los bits agregados 8, 16, 24, 32, 40, 48, 56, 64). Tal permutación se define en la Tabla 5.

Tabla 5
57 49 41 33 25 17 9 una 58 cincuenta 42 34 26 Dieciocho
diez 2 59 51 43 35 27 19 once 3 60 52 44 36
63 55 47 39 31 23 quince 7 62 54 46 38 treinta 22
catorce 6 61 53 45 37 29 21 13 5 28 veinte 12 cuatro

Esta permutación está determinada por dos bloques de 28 bits cada uno. Los primeros 3 bits son los bits 57, 49, 41 de la clave extendida. Y los primeros tres bits son los bits 63, 55, 47 de la clave extendida. i=1,2,3…se obtienen de uno o dos desplazamientos cíclicos a la izquierda según la Tabla 6.

Tabla 6
i una 2 3 cuatro 5 6 7 ocho 9 diez once 12 13 catorce quince dieciséis
Número de turno una una 2 2 2 2 2 2 una 2 2 2 2 2 2 una

La clave , i=1,…16 consta de 48 bits seleccionados de los bits del vector (56 bits ) según la tabla 7. El primer y segundo bit son los bits 14, 17 del vector

Tabla 7
catorce 17 once 24 una 5 3 28 quince 6 21 diez 23 19 12 cuatro
26 ocho dieciséis 7 27 veinte 13 2 41 52 31 37 47 55 treinta 40
51 45 33 48 44 49 39 56 34 53 46 42 cincuenta 36 29 32

Permutación final

La permutación final actúa sobre (donde ) y es la inversa de la permutación original. La permutación final está determinada por la Tabla 8.

Tabla 8. Permutación inversa
40 ocho 48 dieciséis 56 24 64 32 39 7 47 quince 55 23 63 31
38 6 46 catorce 54 22 62 treinta 37 5 45 13 53 21 61 29
36 cuatro 44 12 52 veinte 60 28 35 3 43 once 51 19 59 27
34 2 42 diez cincuenta Dieciocho 58 26 33 una 41 9 49 17 57 25

Esquema de descifrado

Al descifrar datos, todas las acciones se realizan en orden inverso. En 16 rondas de desencriptación, en contraste con la encriptación que usa la transformación directa por la red Feistel , aquí se usa la transformación inversa por la red Feistel.


El esquema de descifrado se muestra en la Fig.6.
Clave , i=16,…,1, función f, permutación de IP y son las mismas que en el proceso de encriptación. El algoritmo de generación de claves depende únicamente de la clave del usuario, por lo que son idénticas cuando se descifran.

Modos de uso de DES

DES se puede utilizar en cuatro modos.

  1. Modo de libro de códigos electrónico ( ECB )  : uso común de DES como cifrado de bloque . El texto encriptado se divide en bloques, y cada bloque se encripta por separado sin interactuar con otros bloques (ver Fig. 7).
  2. Modo Cipher Block Chaining ( CBC  - Cipher Block Chaining ) (ver Fig. 8). Cada siguiente bloque i>=1, antes del cifrado, se agrega el módulo 2 con el bloque anterior de texto cifrado . El vector  es el vector inicial, cambia diariamente y se mantiene en secreto.
  3. Modo de retroalimentación de cifrado ( ver Fig.9). En el modo CFB , se produce una gamma en bloques . El vector inicial es un mensaje de sincronización y está diseñado para garantizar que diferentes conjuntos de datos se cifren de manera diferente utilizando la misma clave secreta. El mensaje de sincronización se envía al destinatario en texto claro junto con el archivo cifrado. El algoritmo DES, a diferencia de los modos anteriores, se utiliza únicamente como cifrado (en ambos casos).
  4. Modo de realimentación de salida ( OFB  - Realimentación de salida ) (ver Fig. 10). En el modo OFB se genera un bloque "gamma" , i>=1. El modo también usa DES solo como cifrado (en ambos casos).

Ventajas y desventajas de los modos:

Fuerza criptográfica del algoritmo DES

La no linealidad de las transformaciones en DES por medio de solo S-boxes y el uso de S-boxes débiles le permite ejercer control sobre la correspondencia cifrada. La elección de las cajas S requiere que se cumplan varias condiciones:

Debido al pequeño número de claves posibles (solo ), es posible enumerarlas exhaustivamente en computadoras de alta velocidad en tiempo real. En 1998, Electronic Frontier Foundation , utilizando una computadora especial DES-Cracker, logró descifrar DES en 3 días.

Claves débiles

Las claves débiles son claves k tales que , donde x  es un bloque de 64 bits.

Se conocen 4 claves débiles, se enumeran en la Tabla 9. Para cada clave débil, hay puntos fijos , es decir, bloques x de 64 bits para los cuales .

Tabla 9. Claves débiles DES
Claves débiles (hexadecimales)
0101-0101-0101-0101
FEFE-FEFE-FEFE-FEFE
1F1F-1F1F-0E0E-0E0E
E0E0-E0E0-F1F1-F1F1

denota un vector que consta de 28 bits cero.

Teclas parcialmente débiles

Hay claves débiles y parcialmente débiles en el algoritmo DES. Las claves parcialmente débiles son pares de claves tales que

Hay 6 pares de claves parcialmente débiles, se enumeran en la Tabla 10. Para cada una de las 12 claves parcialmente débiles, hay "puntos antifijos", es decir, bloques x tales que

Tabla 10. Claves parcialmente débiles
Pares de claves parcialmente débiles
01FE-01FE-01FE-01FE,----FE01-FE01-FE01-FE01
1FE0-1FE0-1FE0-1FE0,----E0F1-E0F1-E0F1-E0F1
01E0-01E0-01F1-01F1,----E001-E001-F101-F101
1FFE-1FFE-0EFE-0EFE,----FE1F-FE1F-FE0E-FE0E
011F-011F-010E-010E,----1F01-1F01-0E01-0E01
E0FE-E0FE-F1FE-F1FE,----FEE0-FEE0-FEF1-FEF1

Ataques conocidos contra DES

Tabla 11. Ataques conocidos a DES.
métodos de ataque Descubrimientos conocidos textos Abierto seleccionado textos Tamaño de la memoria Número de operaciones
Búsqueda completa qweqweqweqerqe - Menor
Criptoanálisis lineal - para texto
Criptoanálisis lineal - para texto
Diferir de. criptoanálisis - para texto
Diferir de. criptoanálisis - para texto

Para el criptoanálisis lineal y diferencial, se requiere una cantidad de memoria suficientemente grande para almacenar textos sin formato seleccionados (conocidos) antes de que comience el ataque.

Aumentando la fuerza de DES

Para aumentar la fuerza criptográfica de DES, aparecen varias opciones: doble DES ( 2DES ), triple DES ( 3DES ), DESX , G-DES .

El tipo más popular cuando se usa 3DES es DES-EDE3, para el cual el algoritmo se ve así: Cifrado : . Descifrado : Al ejecutar el algoritmo 3DES, las claves se pueden elegir de la siguiente manera:

Aplicación

DES fue el estándar nacional de EE . UU. en 1977-1980 ,  pero actualmente DES se usa (con una clave de 56 bits) solo para sistemas heredados, con mayor frecuencia usando su forma criptográficamente más fuerte ( 3DES , DESX ). 3DES es un reemplazo simple y efectivo para DES y ahora se considera el estándar. En un futuro próximo, DES y Triple DES serán reemplazados por el algoritmo AES (Advanced Encryption Standard). El algoritmo DES se usa ampliamente para proteger la información financiera: por ejemplo, el módulo THALES (Racal) HSM RG7000 es totalmente compatible con las operaciones TripleDES para emitir y procesar VISA , EuroPay y otras tarjetas de crédito. Los codificadores de canal THALES (Racal) DataDryptor 2000 utilizan TripleDES para cifrar de forma transparente los flujos de datos. El algoritmo DES también se utiliza en muchos otros dispositivos y soluciones de THALES-eSECURITY.

Notas

  1. distribuido.net: proyecto RSA DES II-1 . Consultado el 1 de enero de 2018. Archivado desde el original el 31 de diciembre de 2017.

Literatura