Introducción al cifrado mediante DES

Agosto 2017

DES (Estándar de Cifrado de Datos), descifrado de la clave secreta

El 15 de mayo de 1973, el NBS (National Bureau of Standars, en castellano: Agencia Nacional de Normalización) hoy en día denominada NIST (National Institute of Standars and Technology, en castellano: Instituto Nacional de Normalización y Tecnología), hizo un llamamiento en el Federal Register (el equivalente en España del Boletín Oficial del Estado) para la creación de un algoritmo de cifrado que cumpliera con los siguientes requisitos:

  • ofrecer un alto nivel de seguridad relacionado con una pequeña clave utilizada para cifrado y descifrado
  • ser comprensible
  • no depender de la confidencialidad del algoritmo
  • ser adaptable y económico
  • ser eficaz y exportable

A finales de 1974, IBM propuso "Lucifer", que gracias a la NSA (National Standard Agency, en castellano: Agencia Nacional de Seguridad) fue modificado el 23 de noviembre de 1976, convirtiéndose en DES (Data Encryption Standard, en castellano: Estándar de Cifrado de Datos). El DES fue aprobado por el NBS en 1978. El DES fue estandarizado por el ANSI (American National Standard Institute, en castellano: Instituto Nacional Americano de Normalización) bajo el nombre de ANSI X3.92, mas conocido como DEA (Data Encrytion Algorithm, en castellano: Algoritmo de Cifrado de Datos).

Principio de funcionamiento del DES

Se trata de un sistema de cifrado simétrico por bloques de 64 bits, de los que 8 bits (un byte) se utilizan como control de paridad (para la verificación de la integridad de la clave). Cada uno de los bits de la clave de paridad (1 cada 8 bits) se utiliza para controlar uno de los bytes de la clave por paridad impar, es decir, que cada uno de los bits de paridad se ajusta para que tenga un número impar de "1" dentro del byte al que pertenece. Por lo tanto, la clave tiene una longitud "útil" de 56 bits, es decir, realmente sólo se utilizan 56 bits en el algoritmo.

El algoritmo se encarga de realizar combinaciones, sustituciones y permutaciones entre el texto a cifrar y la clave, asegurándose al mismo tiempo de que las operaciones puedan realizarse en ambas direcciones (para el descifrado). La combinación entre sustituciones y permutaciones se llama cifrado del producto.

La clave es codificada en 64 bits y se compone de 16 bloques de 4 bits, generalmente anotadas de k1 a k16. Dado que "solamente" 56 bits sirven para el cifrado, ¡puede haber hasta 256 (o 7.2*1016) claves diferentes!

El algoritmo DES

Las partes principales del algoritmo son las siguientes:

  • fraccionamiento del texto en bloques de 64 bits (8 bytes),
  • permutación inicial de los bloques,
  • partición de los bloques en dos partes: izquierda y derecha, denominadas I y D respectivamente,
  • fases de permutación y de sustitución repetidas 16 veces (denominadas rondas),
  • reconexión de las partes izquierda y derecha, seguida de la permutación inicial inversa.

Algoritmo DES

Fraccionamiento del texto

Permutación inicial

En primer lugar, cada bit de un bloque está sujeto a una permutación inicial, que puede representarse mediante la siguiente matriz de permutación inicial (anotada como PI):

IP
585042342618102
605244362820124
625446383022146
645648403224168
57494133251791
595143352719113
615345372921135
635547393123157

Esta tabla de permutación muestra, al leerla de izquierda a derecha y de arriba a abajo, que el 58o bit de un bloque de 64 bits está en la primera posición, el 50o está en la segunda posición y así sucesivamente.

División en bloques de 32 bits

Una vez que la permutación inicial se completó, el bloque de 64 bits se divide en dos bloques de 32 bits denominados I y D respectivamente (para izquierda y derecha, siendo la anotación en anglo-sajón L y R por Left y Right). El estado inicial de estos dos bloques se denomina L0 y R0:

L0
585042342618102
605244362820124
625446383022146
645648403224168

R0
57494133251791
595143352719113
615345372921135
635547393123157

Es interesante observar que L0 contiene todos los bits que se encuentran en posición par en el mensaje inicial, mientas que R0 contiene los bits en posición impar.

Rondas

Los bloques Ln y Rn están sujetos a un conjunto de transformaciones iterativas denominadas rondas, que se muestran en este esquema y que detallamos a continuación:

rondas

Función de expansión

Los 32 bits del bloque R0 se expanden a 48 bits gracias a una tabla (matriz) llamadatabla de expansión (que se anota como E), en la que los 48 bits se mezclan y 16 de ellos se duplican:

E
3212345
456789
8910111213
121314151617
161718192021
202122232425
242526272829
28293031321

Así, el último bit de R0 (es decir, el 7o bit del bloque de origen) se convierte en el primero, el primero en el segundo, etc.
Además, los bits 1,4,5,8,9,12,13,16,17,20,21,24,25,28 y 29 de R0 (respectivamente los bits 57, 33, 25, l, 59, 35, 27, 3, 6l, 37, 29, 5, 63, 39, 31 y 7 del bloque de origen) son duplicados y diseminados en la matriz.

OR exclusiva con la clave

La tabla resultante de 48 bits se denomina D'0 o E[D0]. El algoritmo DES aplica después OR exclusivas entre la primera clave K1 y E[D0]. El resultado de este OR exclusivo es una tabla de 48 bits que, por comodidad, llamaremos D0 (¡no es la D0 inicial!).

Función de sustitución

Después, D0 se divide en 8 bloques de 6 bits, denominado D0i. Cada uno de estos bloques se procesa a través de funciones de selección (a veces llamadas cajas de sustitución o funciones de compresión), denominadas generalmente Si.
Los primeros y últimos bits de cada D0i determinan (en valor binario) la línea de la función de selección; los otros bits (2, 3, 4 y 5 respectivamente) determinan la columna. Como la selección de la línea se basa en dos bits, existen 4 posibilidades (0,1,2,3). Como la selección de la columna se basa en 4 bits, existen 16 posibilidades (0 a 15). Gracias a esta información, la función de selección "selecciona" un valor cifrado de 4 bits.

Esta es la primera función de sustitución, representada en una tabla de 4 por 16:

S1
 0123456789101112131415
01441312151183106125907
10157414213110612119538
24114813621115129731050
31512824917511314100613

Sea R01 igual a 101110. El primer y último bit dan 10, es decir, 2 en valor binario. Los bits 2,3,4 y 5 dan 0111, o 7 en valor binario. Por lo tanto, el resultado de la función de selección es el valor ubicado en la línea nº 2, de la columna nº 7. Es el valor 11 o 111 en binario.

Cada uno de los 8 bloques de 6 bits pasa a través de la función de selección correspondiente, dando un resultado de 8 valores con 4 bits cada uno. A continuación están las otras funciones de selección:

S2
 0123456789101112131415
01518146113497213120510
13134715281412011069115
20147111041315812693215
31381013154211671205149

S3
 0123456789101112131415
01009146315511312711428
11370934610285141211151
21364981530111212510147
31101306987415143115212

S4
 0123456789101112131415
07131430691012851112415
11381156150347212110149
21069012117131513145284
331506101138 94511127214

S5
 0123456789101112131415
02124171011685315130149
11411212471315015103986
24211110137815912563014
31181271142136150910453

S6
 0123456789101112131415
01211015926801334147511
11015427129561131401138
29141552812370410113116
34321295151011141760813

S7
 0123456789101112131415
04112141508133129751061
11301174911014351221586
21411131237141015680592
36111381410795015142312

S8
 0123456789101112131415
01328461511110931450127
11151381037412561101492
17114191214206101315358
12114741081315129035611

Por lo tanto, cada bloque de 6 bits se sustituye por un bloque de 4 bits. Estos bits se combinan para formar un bloque de 32 bits.

Permutación

Finalmente, el bloque de 32 bits se somete a una permutación P. A continuación, mostramos la tabla:

P
167202129122817
11523265183110
282414322739
19133062211425

OR exclusivo

El conjunto de estos resultados salidos de P están sujetos a un OR exclusivo con I0 inicial (como se muestra en el primer esquema) para devolver D1, en tanto que la D0 inicial devuelve I1.

Iteración

El conjunto de los pasos anteriores (rondas) se reitera 16 veces.

Permutación inicial inversa

Al final de las iteraciones, los dos bloques L16 y R16 se vuelven a conectar y se someten a una permutación inicial inversa:

IP-1
408481656246432
397471555236331
386461454226230
375451353216129
364441252206028
353431151195927
342421050185826
33141949175725

¡El resultado que surge es un texto cifrado de 64 bits.

Generación de claves

Dado que el algoritmo DES mencionado anteriormente es público, toda la seguridad se basa en la complejidad de las claves de cifrado.

El algoritmo que sigue a continuación muestra cómo obtener a partir una clave de 64 bits (compuesta por cualquier de los 64 caracteres alfanuméricos), 8 claves diferentes de 48 bits, cada una de ellas utilizadas en el algoritmo DES:

Algoritmo de creación de claves DES

En primera instancia, se eliminan los bits de paridad de la clave para obtener una clave que posea una longitud de 56 bits.

El primer paso es una permutación denominada PC-1, cuya tabla se presentará a continuación:

PC-1
57494133251791585042342618
10259514335271911360524436
635547393123157625446383022
1466153453729211352820124

Esta matriz puede escribirse en forma de dos matriz Li y Ri (para la izquierda y la derecha respectivamente), cada una ellas de 28 bits:

Li
5749413325179
1585042342618
1025951433527
1911360524436

Ri
63554739312315
7625446383022
1466153453729
211352820124

El resultado de esta primera permutación se denomina I0 y D0.

Luego, estos dos bloques se rotan hacia la izquierda, de manera que los bits que estaban en la segunda posición pasan a la primera, aquellos que estaban en tercera posición pasan a la segunda, etc.
Los bits que estaban en la primera posición se mueven hacia la última posición.

Los dos bloques de 28 bits se agrupan en un bloque de 56 bits. Este pasa por una permutación, denominada PC-2, dando como resultado un bloque de 48 bits que representa la clave Ki.

pc-2
14171124153281562110
23191242681672720132
415231374755304051453348
444939563453464250362932

Realizando iteraciones del algoritmo es posible obtener las 16 claves K1 a K16 utilizadas en un algoritmo DES.

LS
124681012141517192123252728

TDES (en castellano: Triple Estándar de Cifrado de Datos), una alternativa para DES

En 1990, Eli Biham y Adi Shamir desarrollaron el criptoanálisis diferencial, que buscaba pares de textos planos y pares de textos cifrados. Este método funciona con un máximo de 15 rondas, mientras que en el algoritmo presentado anteriormente admite 16 rondas.

Por otro lado, aunque una clave de 56 bits ofrece una enorme cantidad de posibilidades, muchos procesadores pueden calcular más de 106 claves por segundo. Con lo que, cuando se utilizan al mismo tiempo una gran cantidad de máquinas, es posible que un gran organismo (un Estado, por ejemplo) encuentre la clave correcta...

Una solución a corto plazo requiere que se encadenen tres cifrados DES mediante dos claves de 56 bits (esto equivale a una clave de 112 bits). Este proceso se llama Triple DES, denominado TDES (algunas veces 3DES o 3-DES).

Triple DES - 3DES

El TDES permite aumentar de manera significativa la seguridad del DES, pero posee la desventaja de requerir más recursos para el cifrado y descifrado.

Por lo general, se reconocen diversos tipos de cifrado triple DES:

  • DES-EEE3: Cifrado triple DES con 3 claves diferentes,
  • DES-EDE3: una clave diferente para cada una de las operaciones de triple DES (cifrado, descifrado, cifrado),
  • DES-EEE2 y DES-EDE2: una clave diferente para la segunda operación (descifrado).

En 1997, elNIST lanzó una nueva convocatoria para que desarrollar el AES (Advanced Encryption Standard, en castellano: Estándar de Cifrado Avanzado), un algoritmo de cifrado cuyo objetivo era reemplazar al DES.

El sistema de cifrado DES se actualizaba cada 5 años. En el año 2000, durante su última revisión y después de un proceso de evaluación que duró 3 años, el NIST seleccionó como nuevo estándar un algoritmo diseñado conjuntamente por dos candidatos belgas, el Sr. Vincent Rijmen y el Sr. Joan Daemen. El nuevo algoritmo, llamado por sus inventores RIJNDAEL reemplazará, de ahora en adelante, al DES.

Más información

Consulta también


Introduction to encryption with DES
Introduction to encryption with DES
Introduction au chiffrement avec DES
Introduction au chiffrement avec DES
Introduzione alla cifratura con DES
Introduzione alla cifratura con DES
Introdução à codificação DES
Introdução à codificação DES
Última actualización: 16 de octubre de 2008 a las 15:43 por Jeff.
El documento «Introducción al cifrado mediante DES» se encuentra disponible bajo una licencia Creative Commons. Puedes copiarlo o modificarlo libremente. No olvides citar a CCM (es.ccm.net) como tu fuente de información.