Algoritmo de cifrado DES Jorge Ariel Orozco Hernández.
DES(Data Encryption Standard, estándar de cifrado de datos) es un algoritmo
desarrollado originalmente por IBM a requerimiento del NBS (National Bureau of
Standards, Oficina Nacional de Estandarización, en la actualidad denominado NIST,
National Institute of Standards and Technology, Instituto Nacional de Estandarización y
Tecnología) de [Link]. y posteriormente modificado y adoptado por el gobierno de
[Link]. en 1977 como estándar de cifrado de todas las informaciones sensibles no
clasificadas. Posteriormente, en 1980, el NIST estandarizó los diferentes modos de
operación del algoritmo. Es el más estudiado y utilizado de los algoritmos de clave
simétrica.
El nombre original del algoritmo, tal como lo denominó IBM, era Lucifer. Trabajaba sobre
bloques de 128 bits, teniendo la clave igual longitud. Se basaba en operaciones lógicas
booleanas y podía ser implementado fácilmente, tanto en software como en hardware.
Tras las modificaciones introducidas por el NBS, consistentes básicamente en la
reducción de la longitud de clave y de los bloques, DES cifra bloques de 64 bits, mediante
permutación y sustitución y usando una clave de 64 bits, de los que 8 son de paridad
(esto es, en realidad usa 56 bits), produciendo así 64 bits cifrados.
Algoritmo
DES tiene 19 etapas diferentes. La primera etapa es una transposición, una
permutación inicial (IP) del texto plano de 64 bits, independientemente de la clave. La
última etapa es otra transposición (IP-1), exactamente la inversa de la primera. La
penúltima etapa intercambia los 32 bits de la izquierda y los 32 de la derecha. Las 16
etapas restantes son una Red de Feistel de 16 rondas. En cada una de las 16 iteraciones
se emplea un valor, Ki, obtenido a partir de la clave de 56 bits y distinto en cada iteración
Algoritmo de cifrado DES Jorge Ariel Orozco Hernández.
Procesar la clave:
1. Pedir la clave de 64 bits al usuario
2. Dividir la clave en 8 bytes y eliminar el último bit (menos significativo) de cada
byte, así quedarán sólo 56 de los 64 bits
3. Realizar la siguiente permutación:
4. Se realizan las 16 rondas de
permutación de la clave:
a) Se divide la clave permutada en 2 mitades de 28 bits cada una (C y D)
b) Para C y D, se debe realizar un desplazamiento de 1 ó 2 bits a la izquierda
dependiendo de la siguiente tabla:
c) Una vez realizado el desplazamiento, se concatenan C y D
d) Se realiza la siguiente permutación:
Nota: Algunos bits desaparecen en esta permutación,
De los 56 que entran sólo quedan 48
e) Se debe repetir el inciso a) hasta tener las 16 sub-claves, tomando en cuenta que
esta i-esima clave se toma como entrada a la siguiente ronda
Algoritmo de cifrado DES Jorge Ariel Orozco Hernández.
Procesar el bloque de datos de 64 bits
1. El mensaje a cifrar se divide en bloques de 64 bits, si un bloque tiene menos de 64
se debe completar el bloque
2. Se aplica la siguiente permutación al bloque:
3. Se divide el bloque resultante en L
yR
4. Aplicar las 16 subclaves:
a) Expandir R de 32 bits a 48 aplicando la siguiente permutación:
Nota: en la permutación se percibe la repetición de algunos bits,
esto con la intención de expandir de 32 a 48 bits
b) Se realiza la operación XOR entre el bloque resultante y la i – esima clave
c) Dividir el resultado en 8 bloques de 6 bits cada uno (B1,B2,…,B8)
d) Para cada bloque, tomar el primer y último bit y formar un número llamado m de 2
bits
e) Para cada bloque, tomar los bits 2, 3, 4 y 5 y formar un número llamado n de 4 bits
f) Los números m y n representan una fila y columna respectivamente, en la siguiente
tabla se muestran las cajas de sustitución para cada bloque, se debe seleccionar la fila y
Algoritmo de cifrado DES Jorge Ariel Orozco Hernández.
la columna (obtenidas de m y n) y sustituir el valor de Bj por el de Sj para cada uno de los
8 bloques
Nota: cada bloque Bj era originalmente de 6 bits, tras
realizar la sustitución su tamaño queda en 4 bits
g) Una vez realizada la sustitución, concatenar los 8 bloques, quedará un bloque de
32 bits
h) Realizar la siguiente permutación:
Algoritmo de cifrado DES Jorge Ariel Orozco Hernández.
i) Realizar la un XOR entre la permutación anterior y el bloque L (obtenido en el paso
3)
j) El resultado obtenido será la entrada para el siguiente ciclo (se repite desde el
inciso a) hasta aplicar las 16 sub-claves
5. Realizar la concatenación R L (siendo R el resultado del paso anterior) y aplicar la
siguiente permutación:
Desecncriptación
Usar el mismo proceso descrito con anterioridad pero empleando las subclaves en
orden inverso, esto es, en lugar de aplicar K(1) para la primera iteración aplicar K(16),
K(15) para la segunda y así hasta K(1).
Referencias:
Jorge Sánchez Arriazu, Descripción del algoritmo DES (artículo en pdf:
[Link] diciembre de 1999
[Link]
[Link]