Você está na página 1de 13

2.3.

DATA ENCRYPTION STANDARD (DES) 17

con un número entero de 0 a n, y posteriormente se aplica un corrimiento de


k posiciones, esto es equivalente a realizar la suma modular descrita lı́neas
arriba:

(a + k) mód n

donde a es el caracter, k el corrimiento y n el tamaño del alfabeto. En la


sección correspondiente a teorı́a de números, se abordará éste tema con más
detalle.

2.3. Data Encryption Standard (DES)


A mediados de los 60’s y principios de los 70’s, debido a la evolución
de las computadoras y a que en consecuencia el costo y el tamaño de las
mismas disminuyó considerablemente, diversas empresas e instituciones co-
menzaron a utilizarlas. Al mismo tiempo, era necesario cifrar comunicaciones
importantes como las transferencias de dinero. Pero para que dos compañı́as
intercambiaran información cifrada debı́an poseer el mismo algoritmo. Esto
era un problema entre 1960 y 1970 ya que no existı́a un único algoritmo de
cifrado, es decir no habı́a un estándar. Por tal razón en mayo de 1973, la Ame-
rican National Bureau of Standards hoy la National Institute of Standards
and Technology (NIST) decidió resolver el problema y solicitó formalmente
propuestas para establecer un sistema de cifrado estándar. Una de esas pro-
puestas fue un algoritmo propuesto por la IBM, resultado de un proyecto de
investigación a cargo de Walter Tuchman y Carl Meyer. [STA03, SIN99]
A finales de los 60’s IBM estableció un proyecto de investigación en crip-
tografı́a conducido por Horst Feistel, un emigrado alemán que llegó a E.U.A.
en 1934. El proyecto concluyó en 1971 con el desarrollo de un algoritmo de-
nominado LUCIFER, el cual operaba con bloques de 64 bits y una clave de
128 bits y que fue vendido a la LLoyd’s de Londres para ser usado en un
sistema de cajero automático, igualmente desarrollado por la IBM.
Posteriormente, dado que la IBM deseaba que LUCIFER se volviese un
producto más comercial inició un nuevo proyecto a cargo de Walter Tuchman
y Carl Meyer. Cabe mencionar que en dicho proyecto no sólo estuvieron
involucrados investigadores de la IBM, sino también la consultorı́a y el apoyo
técnico de la National Security Agency (NSA). El resultado fue una versión
refinada del LUCIFER que era más resistente al criptoanálisis pero que usaba
una clave de tamaño más pequeño: 56 bits. Este último fue el algoritmo
18 CAPÍTULO 2. CRIPTOGRAFÍA DE CLAVE SECRETA

que la IBM sometió a consideración del National Institute of Standards and


Technology (NIST) en 1973, y que de hecho se adoptó formalmente como
el algoritmo de cifrado estándar en 1977. A partir de ese momento se le
denominó: Data Encryption Standard (DES). [STA03]
Cabe señalar que el DES ha generado mucha controversia principalmente
en dos áreas. La primera era el tamaño de clave de 56 bits, puesto que
inicialmente era de 128 bits, y la segunda era el diseño de las S-cajas, en
las cuales se basa la seguridad del DES, ya que éste era material clasificado.
Además corrió el rumor, de que la NSA habı́a impuesto tales criterios porque
de esa manera podrı́a leer cualquier mensaje cifrado sin conocer la clave,
utilizando sus propios recursos. [SIN99]
Aunque el DES, actualmente ya no es el estándar, se considera un objeto
de estudio interesante en la criptografı́a y por ello se aborda a continuación
usando una versión simplificada: DES simplificado (S-DES).
El DES simplificado (S-DES) fue diseñado por el profesor Edward Schae-
fer de la universidad de Santa Clara, como una herramienta para ser usada
con fines educativos más que de seguridad. Dicha versión permitirá que el
lector pueda realizar fácilmente, cada paso del algoritmo usando lápiz y pa-
pel.

S-DES
El S-DES es un algoritmo de cifrado por bloques [STA03]. Utiliza un ta-
maño de bloque de 8 bits, y una clave secreta de 10 bits. Esto significa que
si tenemos un mensaje de tamaño mayor, éste deberá partirse en bloques de
8 bits. Esto puede resultar muy conveniente, sobretodo si se esta trabajan-
do con caracteres codificados en código ASCII2 en el cual cada caracter se
codifica con 8 bits, de esta manera tomarı́amos caracter por caracter y lo
cifrarı́amos usando la clave. El S-DES es un algoritmo de clave secreta, cuyo
funcionamiento esta basado en el uso de permutaciones y sustituciones, que
ya han sido analizadas previamente. Su estructura general, se muestra en la
figura 2.2.
Como se puede observar en la figura, para cifrar un bloque, inicial-
mente se aplica una permutación inicial (IP); una función fk , la cual se
2
ASCII, significa American Standard Code for Information Interchange. Dado que las
computadoras entienden sólo números, un código ASCII es la representación numérica de
un caracter como ’a’ o ’ !’.
2.3. DATA ENCRYPTION STANDARD (DES) 19

CLAVE
(10 bits) DESCIFRADO
CIFRADO
Texto claro
Texto claro (8 bits)
(8 bits)
P 10

SHIFT
IP −1
IP

P8 K1
K1
f f k
k

SHIFT

SW SW

P8 K2
K2
fk fk

−1
IP IP

Texto cifrado Texto cifrado


(8 bits) (8 bits)

Figura 2.2: Diagrama general del DES

describirá más adelante; una permutación simple SW que lo único que hace
es intercambiar las mitades derecha e izquierda del bloque; luego se vuelve
a aplicar la función fk y finalmente se aplica nuevamente una permutación,
que de hecho es la permutación inversa (IP −1 ).
Para descifrar un bloque, se llevan a cabo las mismas operaciones, lo
único que cambia es el orden en el que se utilizan las subclaves k1 y k2 que
son generadas de la clave k como se explica a continuación.

Generación de claves para S-DES


Como ya se habı́a mencionado anteriormente, tanto DES como S-DES,
son algoritmos de clave secreta, lo cual implica que dos entidades que deseen
comunicarse deben compartir la misma clave, pues depende de dicho dato,
que se puedan cifrar y descifrar los mensajes fácilmente.
20 CAPÍTULO 2. CRIPTOGRAFÍA DE CLAVE SECRETA

S-DES utiliza una clave k de 10 bits, de la cual, se derivarán un par de


subclaves k1 y k2 , que se utilizarán en distintas etapas del proceso de cifrado
y descifrado. La forma de generar dichas subclaves se muestra en la figura
2.3. A continuación ayudándonos de dicha figura, veremos con un ejemplo,

CLAVE
(10 bits)

P10

CI−1 CI−1

P8
K1

CI−2 CI−2

P8

K2

Figura 2.3: Generación de subclaves del S-DES

cómo se obtienen las subclaves. Supónga que la clave es k = 1010000010.


A dicha k, se le aplicará la permutación P 10, que se muestra enseguida:

P10
3 5 2 7 4 10 1 9 8 6

Dicha permutación nos indica, que ahora colocaremos primero el bit que se
encuentra en la tercera posición, luego el bit que se encuentra en la quinta
posición, luego el que se encuentra en la segunda posición, y ası́ sucesivamente
hasta que al último colocaremos el bit que se encuentra en la sexta posición.
Antes de aplicar la permutación, la clave se verı́a como en la siguiente tabla
2.3. DATA ENCRYPTION STANDARD (DES) 21

Clave k
k1 k2 k3 k4 k5 k6 k7 k8 k9 k10
1 0 1 0 0 0 0 0 1 0
Después de haber aplicado la permutación, se observarı́a de la siguiente forma
k3 k5 k2 k7 k4 k10 k1 k9 k8 k6
1 0 0 0 0 0 1 1 0 0
A dicho resultado, se le divide en dos partes:
1 0 0 0 0 0 1 1 0 0
a cada una de las cuales se le hace un corrimiento circular a la izquierda.
Esto es el bit más a la izquierda se coloca más a a la derecha, y los demás se
corren un lugar, lo cual se observa en la siguiente tabla:
0 0 0 0 1 1 1 0 0 0
Este resultado nos va a servir para realizar dos operaciones. La primera de
ellas será tomar el conjunto de 10 bits concatenando ambos bloques como
sigue
k1 k2 k3 k4 k5 k6 k7 k8 k9 k10
0 0 0 0 1 1 1 0 0 0
y se le aplica la permutación P 8 que aparece a continuación:
P8
6 3 7 4 8 5 10 9
Observa que dicha permutación no incluye los bits 1 y 2 y que por lo tanto,
después de aplicarla nos quedarán solamente 8 bits, a este tipo de permuta-
ciones, se les conoce como permutaciones de compresión. Después de lo
cual habremos obtenido la subclave k1 :
Subclave k1
k6 k3 k7 k4 k8 k5 k10 k9
1 0 1 0 0 1 0 0
La segunda operación que se llevará a cabo será tomar ambos bloques de 5
bits, y a cada uno de ellos, hacerle un corrimiento circular izquierdo de
2 posiciones, esto es, haremos 2 corrimientos hacia la izquierda, después de
lo cual cada uno de los bloques se verá ası́:
22 CAPÍTULO 2. CRIPTOGRAFÍA DE CLAVE SECRETA

0 0 1 0 0 0 0 0 1 1
Por último se juntan los dos bloques anteriores en uno sólo:
k1 k2 k3 k4 k5 k6 k7 k8 k9 k10
0 0 1 0 0 0 0 0 1 1
al cual se le aplicará la permutación P8 que ya conocı́amos, obteniendo la
siguiente subclave k2 :
Subclave k2
k6 k3 k7 k4 k8 k5 k10 k9
0 1 0 0 0 0 1 1
De esta manera hemos ya generado nuestras subclaves k1 y k2 , que se utili-
zarán en el proceso de cifrado y descifrado de mensajes.

Cifrando con S-DES


Como se mencionó anteriormente, S-DES toma bloques de 8 bits, cada uno
de los cuales se cifra y formará ası́ parte del mensaje cifrado. Para comprender
mejor, el proceso de cifrado y descifrado del S-DES, haremos un ejemplo,
ayudándonos con el diagrama que aparece en la figura 2.2. Para simplificarnos
aún más la tarea, supondremos que nuestro mensaje esta constituido por un
sólo bloque de exactamente 8 bits.
Supongamos que el mensaje M, que se desea cifrar es:
Texto o mensaje en claro M
m1 m2 m3 m4 m5 m6 m7 m8
1 0 1 1 1 1 0 1
A dicho mensaje se le aplicará un permutación inicial IP, que aparece a
continuación:
IP
2 6 3 1 4 8 5 7
Después de lo cual, los bits del mensaje quedarán asi:
m2 m6 m3 m1 m4 m8 m5 m7
0 1 1 1 1 1 1 0
2.3. DATA ENCRYPTION STANDARD (DES) 23

IP

fk
F
E/P

K1

S0 S1

P4

Figura 2.4: Primera ronda del DES Simplificado

Ronda 1
Parte del proceso de cifrado, son las rondas (rounds en inglés), que no
son más que una serie de pasos que se repiten. A continuación, veremos cómo
se lleva a cabo la ronda 1.
El mensaje que constituye el bloque anterior se separa en dos partes de
4 bits cada una, las cuales seran el bloque izquierdo, denotado por L y el
bloque derecho, denotado por R:
L R
0 1 1 1 1 1 1 0
A continuación, se aplica la función fk que también se muestra en la figura
2.4.
Si seguimos el diagrama, podemos continuar con el cifrado. Primero se
toman los 4 bits que conforman la parte derecha y se les aplicará la permu-
tación de expansión que se muestra a continuación:
E/P
4 1 2 3 2 3 4 1
24 CAPÍTULO 2. CRIPTOGRAFÍA DE CLAVE SECRETA

Como se podrá observar esta permutación tomará los 4 bits de la parte


derecha y nos devolverá 8 bits, por esa razón se le denomina de expansión.
De esta manera los bits a los cuales se les aplicará la permutación son:

R
b1 b2 b3 b4
1 1 1 0

y después de aplicar la permutación queda ası́:

b4 b1 b2 b3 b2 b3 b4 b1
0 1 1 1 1 1 0 1

Estos 8 bits, se sumaran xor con la subclave k1 = 10100100 que habiamos


generado anteriormente

0 1 1 1 1 1 0 1
⊕ 1 0 1 0 0 1 0 0
1 1 0 1 1 0 0 1

Los 4 bits más a la izquierda nos servirań para hacer una consulta en la tabla
S0 y los 4 bits más a la derecha para hacer una consulta en la tabla S1 . A
dichas tablas S0 y S1 se les conoce como las S-cajas.
Consideremos los cuatro bits más a la izquierda: 1101, para realizar la
consulta en S0 , será necesario ubicar un renglón y una columna. El renglón
lo conforman el primero y el cuarto, de estos cuatro bits, es decir: 11 y la
columna la conforman el segundo y el tercer bit, esto es: 10. Con estos datos
buscamos en S0

S0 00 01 10 11
00 01 00 11 10
01 11 10 01 00
10 00 10 01 11
11 11 01 11 10

Y obtenemos 11. Luego, hacemos lo mismo, pero ahora tomando en cuenta


los cuatro bits más a la derecha: 1001. Nuevamente, tomamos el primero y el
cuarto bit, que conformaran el renglón, esto es: 11 y el segundo y el tercero
la columna, es decir, 00. Y realizamos la búsqueda pero ahora en S1 .
2.3. DATA ENCRYPTION STANDARD (DES) 25

S1 00 01 10 11
00 00 01 10 11
01 10 00 01 11
10 11 00 01 00
11 10 01 00 11
Y obtenemos 10. Ahora concatenamos los 2 bits que encontramos en la S0
con los 2 bits que encontramos en la S1 . Y nos queda: 1110. A esta cadena
le aplicamos la permutación P4 que aparece a continuación:
P4
2 4 3 1
Y como resultado se tendrá: 1011. Esto lo sumamos xor con los cuatro bits
de la izquierda denotados por L:
0 1 1 1
⊕ 1 0 1 1
1 1 0 0
El resultado constituirá el bloque izquierdo L y el bloque derecho, será el del
principio:
L R
1 1 0 0 1 1 1 0
Hasta aqui, se ha realizado la ronda 1 del DES-Simplificado.

Ronda 2
Para llevar a cabo la ronda 2 del DES simplificado, se intercambiarán los
bloques L y R, anteriores, quedando de la siguiente manera:
L R
1 1 1 0 1 1 0 0
Al igual que en la ronda 1, se toma el bloque derecho R y se le aplica la
permutación de expansión E/P, después de lo cual, nos queda: 01101001.
Esta cadena se suma xor con la subclave k2 de la siguiente manera:
0 1 1 0 1 0 0 1
⊕ 0 1 0 0 0 0 1 1
0 0 1 0 1 0 1 0
26 CAPÍTULO 2. CRIPTOGRAFÍA DE CLAVE SECRETA

Dicho resultado lo dividimos en dos partes: 0010 y 1010. La primera de ellas,


la utilizamos para buscar en S0 los 2 bits que serán izquierdos:
S0 00 01 10 11
00 01 00 11 10
01 11 10 01 00
10 00 10 01 11
11 11 01 11 10
La segunda de ellas, la usamos para buscar en S1 los 2 bits que estarán a la
derecha:
S1 00 01 10 11
00 00 01 10 11
01 10 00 01 11
10 11 00 01 00
11 10 01 00 11
Tomando los bits que encontramos tanto en S0 , como en S1 se forma el
bloque 0000 al cual se le aplica la permutación P4 mencionada anteriormente,
después de lo cual, el bloque nos queda igual, este se sumará xor con el bloque
izquierdo L:
0 0 0 0
⊕ 1 1 1 0
1 1 1 0
Este resultado se concatena con el bloque derecho R original, quedandonos,
el siguiente resultado
L R
1 1 1 0 1 1 0 0
Al bloque anterior se le aplica la permutación inversa, denotada por IP−1 ,
que se muestra a continuación:
IP−1
4 1 3 5 7 2 8 6
Quedando como resultado final:
Mensaje cifrado C
0 1 1 1 0 1 0 1
El proceso completo de cifrado se muestra en el diagrama que aparece en la
figura 2.5.
2.3. DATA ENCRYPTION STANDARD (DES) 27

10111101

IP 01111110
L=0111 R=1110

fk
1110
F
E/P

01111101
10100100
K1
1101 1001

S0 S1

11 10
P4

1011
0111

1100 1110

SW

L=1110 R=1100

fk
1100
F
E/P

01101001
01000011
K2
0010 1010

S0 S1

00 00

P4

0000
1110

1110 1100

I P −1

011101100

Figura 2.5: Proceso de cifrado


28 CAPÍTULO 2. CRIPTOGRAFÍA DE CLAVE SECRETA

Descifrando con DES-S


Para descifrar se necesita conocer la clave con la cual fue cifrado un
mensaje y por supuesto tener el mensaje cifrado. Teniendo ambos, se realiza
el mismo proceso que se llevó a cabo para cifrar el mensaje, con la diferencia
de que ahora se usará primero la subclave k2 y luego la subclave k1 , como se
puede observar en la figura 2.2.
Teniendo el mensaje cifrado de la sección anterior, este se dividirá en dos
partes L y R:

L R
0 1 1 1 0 1 0 1

Dado que ya se ha descrito el procedimiento con todo detalle en la sec-


ción anterior, ahora para ser más breves, se proporciona un diagrama con los
datos que pasan por cada etapa, como se puede ver en la figura 5. Es impor-
tante recordar que para hallar los bits en las S-cajas, el renglón se obtiene
tomando el primer y el cuarto bit del dato precedente, y la columna tomando
el segundo y tercer bit del dato precedente. Se deja al lector, que realice las
permutaciones necesarias para comprobar cada uno de los resultados inter-
medios. Como se podrá observar, al final se obtiene nuevamente el texto en
claro M, que tenı́amos al principio.
Regresando al DES, funciona de forma similar que el S-DES. El tamaño de
bloque es de 64 bits, con una clave de 56 bits y 16 rondas. Si se desea consultar
a detalle la estructura de las permutaciones y de las cajas de sustitución, el
lector puede revisar [MEN97, STA03]. Aunque como se ha mencionado antes,
el DES ya no es seguro, se utiliza una variante del mismo conocido como triple
DES, es decir se cifra, se descifra y se vuelve a cifrar, utilizando tres claves
k1 , k2 , k3 respectivamente. El triple DES, es lento en comparación con otros
cifrados modernos como el AES, pero sigue siendo ampliamente usado.
2.3. DATA ENCRYPTION STANDARD (DES) 29

01110101

IP 11101100
L: 1110 R: 1100

fk
1100
F
E/P

01101001
01000011
K2
0010 1010

S0 S1

00 00
P4

0000
1110

1110 1100

SW

1100 1110

fk
1110
F
E/P

01111101
10100100
K1
1101 1001

S0 S1

11 10
P4

1011
1100

0111 1110

I P −1

10111101

Figura 2.6: Proceso de descifrado

Você também pode gostar