DES - Ing. Aldo Jiménez Arteaga

Criptografía – Criptografía de Clave Secreta
Planificación de claves
DES
En 1973, el gobierno de EUA publicó una solicitud de propuestas para algoritmos
criptográficos para proteger la transmisión y almacenamiento de datos. En 1974 IBM entregó
su algoritmo candidato, conocido internamente con el nombre de LUCIFER. En 1977 fue
evaluado y adoptado, con ciertas modificaciones, como el nuevo estándar.
Primero se seleccionan 56 bits de la clave de los 64 iniciales mediante la permutación 1 (PC1).
Los 56 bits se dividen entonces en dos mitades de 28 bits; a continuación cada mitad se trata
independientemente. En rondas sucesivas, ambas mitades se desplazan hacia la izquierda
uno o dos bits (dependiendo de cada ronda), y entonces se seleccionan 48 bits de subclave
mediante la permutación 2 (PC2). Los corrimientos implican un conjunto diferente de bits en
cada subclave; cada bit se usa en aproximadamente 14 de las 16 subclaves.
La Agencia Nacional de Seguridad (NSA) de EUA, intervino en el desarrollo de este algoritmo.
LUCIFER sufrió varias revisiones hasta concluir con una versión liberada en 1971. IBM estaba
listo para comenzar su comercialización. La NSA, encargada del espionaje de las
comunicaciones de todo el mundo, se preocupó por tener que lidiar con un paquete comercial
que superaba su capacidad de análisis. La primera intervención de la NSA fue la disminución
de la clave de 128 bits a 56; la segunda fue el diseño de las cajas de sustitución, dejando
como secretos los detalles de las transformaciones o cálculos para la obtención de las cajas.
k (64 bits)
PC1
<<<
Subclave 1 (48 bits)
PC2
Subclave 2 (48 bits)
<<<
PC2
<<<
<<<
Subclave 16 (48 bits)
PC2
Cifrado y descifrado
Descripción
Cifrado por bloques de 64 bits.
Clave inicial de 64 bits; 56 de ellos son empleados por el algoritmo, los otros 8 son de
paridad.
16 rondas de cifrado.
Implementa una permutación inicial y una final denominadas PI y PF, inversas entre sí.
Consiste en una función Feistel donde se combinan la clave, y tablas de expansión y
sustitución con el mensaje en claro.
1
<<<
<<<
Se considera inseguro para muchas aplicaciones. Esto se debe principalmente a que el
tamaño de clave es corto; las claves se han roto en menos de 24 horas. Existen también
resultados analíticos que demuestran debilidades teóricas en su cifrado, aunque no son
viables en la práctica. Se cree, que en la práctica el algoritmo es seguro en su variante Triple
DES, aunque existan ataques teóricos.



D
C
El Data Encryption Standart (DES) es un algoritmo de cifrado en bloques que implementa la
difusión y la confusión a lo largo de una serie de vueltas, tanto de los datos que se cifran como
de la clave original. Fue criticado por universidades como Stanford y compañías como la Bell
Telephone Company. Sin embargo, las voces no fueron escuchadas por una comisión del
Senado estadounidense. Así fue como DES fue adoptado comercialmente.


2015
Ing. Aldo Jiménez Arteaga
El algoritmo utiliza el bloque de 64 bits aplicándole una permutación inicial (PI) para
desordenar los bits. Al término de este paso, se trabaja sobre dos bloques (izquierdo y
derecho) de 32 bits aplicando cuatro pasos:
1.
Expansión 𝐸(𝑅𝑖−1 ). El bloque derecho de 32 bits se expande a 48 bits mediante la
permutación de expansión (E), duplicando algunos de los bits.
Criptografía – Criptografía de Clave Secreta
2.
3.
4.
Mezcla 𝐸(𝑅𝑖−1 ) ⊕ 𝐾𝑖 . El resultado anterior se combina con una subclave utilizando
una operación XOR. La subclave utilizada depende de la ronda (subclave 1 en la ronda
1, subclave 2 en la 2, etc.).
Sustitución 𝑆(𝐸(𝑅𝑖−1 ) ⊕ 𝐾𝑖 ). Tras mezclar el mensaje con la subclave de ronda, el
bloque es dividido en ocho segmentos de 6 bits antes de ser procesados por la
sustitución (S). Se utilizan ocho cajas S, y cada una de ellas reemplaza sus seis bits de
entrada con cuatro bits de salida, de acuerdo con una trasformación no lineal,
especificada por una búsqueda de coordenadas. Éste paso constituye el núcleo de la
seguridad de DES; sin ellas, el cifrado sería lineal, y fácil de romper.
Permutación 𝑃�𝑆(𝐸(𝑅𝑖−1 ) ⊕ 𝐾𝑖 )�. Finalmente, la salida de la sustitución sufre una
permutación fija (P).
2015
Texo plano (64 bits)
PI
F
F
Bloque R (32 bits)
E
Subclave (48 bits)
F
S1
S2
S3
S4
S5
S6
S7
S8
PI-1
P
Bloque F(R) (32 bits)
A la salida de la red Feistel se le aplica una XOR con el bloque izquierdo que aún no ha sido
trabajado. Finalmente, la ronda termina al intercambiar los bloques; es decir, la última XOR
pasa a ser el bloque derecho y el bloque derecho original (antes de entrar a la función Feistel)
se convierte en bloque izquierdo. Este proceso se realiza en 16 rondas. Terminando todas las
rondas de cifrado, ambos bloques se concatenan y entra a una permutación final (PI-1). El
resultado es el criptograma.
2
Ing. Aldo Jiménez Arteaga
Texto cifrado (64 bits)
El descifrado ocupa la misma estructura que el cifrado. Las permutaciones inicial y final son
inversas, entonces se puede revertir el proceso de esos pasos a ambos lados del algoritmo.
La red Feistel permite el descifrado correcto al operar las mismas subclaves pero en sentido
inverso; es decir, para descifrar la primera subclave es la número 16, la segunda la número
15, y así sucesivamente hasta que la subclave en la ronda 16 de descifrado es la 1.