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.
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 .
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.
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).
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.
El texto original (bloque de 64 bits) se convierte utilizando la permutación inicial, que viene determinada por la tabla 1:
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.
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.
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
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.
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.
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.
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
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.
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.
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
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 |
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.
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 |
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.
DES se puede utilizar en cuatro modos.
Ventajas y desventajas de los modos:
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.
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 .
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.
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
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 |
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.
Para aumentar la fuerza criptográfica de DES, aparecen varias opciones: doble DES ( 2DES ), triple DES ( 3DES ), DESX , G-DES .
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.
Criptosistemas simétricos | |
---|---|
Cifrados de flujo | |
Red Feistel | |
red SP | |
Otro |