Universidad Aut´onoma onoma Metropolitana Unidad Iztapalapa Divisi´ on on de Ciencias B´asicas asi cas e Ingeni Ing enier er´ ´ıa Departamento de Matem´aticas aticas
Semina Seminari rio o de Cripto Cri ptogra graff´ıa “DES Simplificado” Por Sandra Sand ra D´ıaz ıaz Santiag Sant iagoo
Introducci´ on on Debido a la evoluci´on on de las computadoras y a que en consecuencia el costo y el tama˜no de las mismas disminuy´o considerablemente, diversas empresas e instituciones comenzaron a utilizarlas. Al mismo tiempo, fue necesario cifrar comunicaciones importantes como las transferencias de dinero. Pero para que dos compa˜n´ıas intercambia interc ambiaran ran inforinfo rmaci´ on on cifrada deb´ deb´ıan poseer el mismo algoritmo. Esto era un problema entre 1960 y 1970 ya que no exist´ exist´ıa un unico u ´nico algoritmo de cifrado, es decir no hab´ıa ıa un est´ andar. andar. Por tal raz´on o n en mayo de 1973, la A Americ merican an National Bureau Bureau of Standards Standards hoy la National Institute of Standards and Technology (NIST) decidi´o resolver el problema y solicit´ o formalmente propuestas para establecer un sistema de cifrado est´andar. andar. Una de esas propuestas fue un algoritmo propuesto por la IBM, resultado de un proyecto de investigaci´on on a cargo de Walter Tuchman y Carl Meyer. [STA03, SIN99] A finales de los 60’s IBM estableci´o un proyecto de investigaci´on on en criptograf criptogr af´´ıa conducido por Horst por Horst Feistel , un emigrado alem´an an que lleg´o a E.U.A. en 1934. El proyecto concluy´ o en 1971 con el desarrollo de un algoritmo denominado LUCIFER, 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´atico, atico, igualmente desarrollado por la IBM. Posteriormente, dado que la IBM deseaba que LUCIFER se volviese un producto m´as as comercial inici´o un nuevo proyecto a cargo de Walter Tuchman y Carl Meyer. Cabe mencionar que en dicho proyecto no s´olo olo estuvieron involucrados investigadores de la IBM, sino tambi´en en la consultor consulto r´ıa y el apoyo t´ecnico ecnico de la la National Security Agency (NSA). (NSA). El resultado fue una versi´on on refinada del LUCIFER que era m´as as resistente al criptoan´ alisis pero que usaba una clave de tama˜no alisis no m´as as peque˜ no: no: 56 bits. Este ultimo u ´ ltimo fue el algoritmo que la IBM someti´o a consideraci´on on del National del National Institute of Standards and Technology (NIST) en (NIST) en 1973, y que de hecho se adopt´o formalmente como el algoritmo de cifrado est´andar andar en 1977. A partir de ese momento se le denomin´o: Data o: Data Encryption Standard (DES). (DES). [STA03] 1
Cabe se˜nalar que el DES ha generado mucha controversia principalmente en dos ´areas. La primera era el tama˜no de clave de 56 bits, puesto que inicialmente era de 128 bits, y la segunda era el dise˜no de las S-cajas, en las cuales se basa la seguridad del DES, ya que ´este era material clasificado. Adem´ as corri´o 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´andar, se considera un objeto de estudio interesante en la criptograf´ıa y por ello se aborda a continuaci´ on usando una versi´on simplificada: DES simplificado (S-DES). El DES simplificado (S-DES) fue dise˜nado por el profesor Edward Schaefer de la universidad de Santa Clara, como una herramienta para ser usada con fines educativos m´as que de seguridad. Dicha versi´on permitir´ a que el lector pueda realizar f´acilmente, cada paso del algoritmo usando l´ apiz y papel.
S-DES El S-DES es un algoritmo de cifrado por bloques [STA03]. Utiliza un tama˜no de bloque de 8 bits, y una clave secreta de 10 bits. Esto significa que si tenemos un mensaje de tama˜ no mayor, ´este deber´a partirse en bloques de 8 bits. Esto puede resultar muy conveniente, sobretodo si se esta trabajando con caracteres codificados en c´odigo ASCII1 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 1. Como se puede observar en la figura, para cifrar un bloque, inicialmente se aplica una permutaci´ as adelante; una on inicial (IP); una funci´ on f k , la cual se describir´a m´ permutaci´ on simple SW que lo ´unico que hace es intercambiar las mitades derecha e izquierda del bloque; luego se vuelve a aplicar la funci´on f k y finalmente se aplica nuevamente una permutaci´on, que de hecho es la permutaci´ on inversa ( I P −1). Para descifrar un bloque, se llevan a cabo las mismas operaciones, lo ´unico 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´on. 1
ASCII, significa American Standard Code for Information Interchange . Dado que las computadoras entienden s´olo n´ umeros, un c´ odigo ASCII es la representaci´on num´ erica de un caracter como ’a’ o ’!’.
2
CLAVE (10 bits)
CIFRADO
DESCIFRADO Texto claro (8 bits)
Texto claro (8 bits) P 10
SHIFT
IP
IP P8
K1 f
−1
K1 f k
k SHIFT
SW
SW
K2
P8
K2
f k
IP
f k
−1
IP
Texto cifrado
Texto cifrado
(8 bits)
(8 bits)
Figura 1: Diagrama general del DES
Generaci´ on 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´acilmente. S-DES utiliza una clave k de 10 bits, de la cual, se derivar´an un par de subclaves k1 y an en distintas etapas del proceso de cifrado y descifrado. La forma k2 , que se utilizar´ de generar dichas subclaves se muestra en la figura 2. A continuaci´on ayud´ andonos de dicha figura, veremos con un ejemplo, c´omo se obtienen las subclaves. Sup´onga que la clave es k = 1010000010. A dicha k , se le aplicar´a la permutaci´on P 10, que se muestra enseguida:
3 5
2 7
P10 4 10 1
9 8
6
Dicha permutaci´on nos indica, que ahora colocaremos primero el bit que se encuentra 3
CLAVE (10 bits)
P10
CI−1
CI−1
P8 K1
CI−2
CI−2
P8 K2
Figura 2: Generaci´on de subclaves del S-DES en la tercera posici´on, luego el bit que se encuentra en la quinta posici´on, luego el que se encuentra en la segunda posici´on, y as´ı sucesivamente hasta que al u ´ltimo colocaremos el bit que se encuentra en la sexta posici´on. Antes de aplicar la permutaci´on, la clave se ver´ıa como en la siguiente tabla Clave k k1
k2
k3
k4
k5
k6
k7
k8
k9
k10
1
0
1
0
0
0
0
0
1
0
Despu´es de haber aplicado la permutaci´on, 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 4
1
1 0
0
a cada una de las cuales se le hace un corrimiento circular a la izquierda . Esto es el bit m´as a la izquierda se coloca m´as a a la derecha, y los dem´as 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´a 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´on P 8 que aparece a continuaci´on: P8 7 4 8 5 10 9
6 3
Observa que dicha permutaci´on no incluye los bits 1 y 2 y que por lo tanto, despu´ es de aplicarla nos quedar´an solamente 8 bits, a este tipo de permutaciones, se les conoce como permutaciones de compresi´ on. Despu´es de lo cual habremos obtenido la subclave k1 : Subclave k 1 k6
k3
k7
k4
k8
k5
k10
k9
1
0
1
0
0
1
0
0
La segunda operaci´on que se llevar´a a cabo ser´a 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´es de lo cual cada uno de los bloques se ver´a as´ı: 0
0 1
0
0
0
0
0 1
1
Por u ´ ltimo se juntan los dos bloques anteriores en uno s´olo: k1
k2
k3
k4
k5
k6
k7
k8
k9
k10
0
0
1
0
0
0
0
0
1
1
5
al cual se le aplicar´a la permutaci´on P8 que ya conoc´ıamos, obteniendo la siguiente subclave k2 : Subclave k 2 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 utilizar´an en el proceso de cifrado y descifrado de mensajes.
Cifrando con S-DES Como se mencion´o anteriormente, S-DES toma bloques de 8 bits, cada uno de los cuales se cifra y formar´a as´ı parte del mensaje cifrado. Para comprender mejor, el proceso de cifrado y descifrado del S-DES, haremos un ejemplo, ayud´andonos con el diagrama que aparece en la figura 1. Para simplificarnos a´un m´as la tarea, supondremos que nuestro mensaje esta constituido por un s´olo 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´a un permutaci´on inicial IP, que aparece a continuaci´on: IP 2 6 3 1 4 8 5 7 Despu´ es de lo cual, los bits del mensaje quedar´ an asi: m2
m6
m3
m1
m4
m8
m5
m7
0
1
1
1
1
1
1
0
6
IP
fk F E/P
K1
S0
S1
P4
Figura 3: Primera ronda del DES Simplificado Ronda 1 Parte del proceso de cifrado, son las rondas (rounds en ingl´es), que no son m´ as que una serie de pasos que se repiten. A continuaci´on, veremos c´o 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´on, se aplica la funci´on f k que tambi´en se muestra en la figura 3. Si seguimos el diagrama, podemos continuar con el cifrado. Primero se toman los 4 bits que conforman la parte derecha y se les aplicar´a la permutaci´ on de expansi´ on que se muestra a continuaci´on: E/P 4 1 2 3 2 3 4 1 7
Como se podr´a observar esta permutaci´on tomar´a los 4 bits de la parte derecha y nos devolver´a 8 bits, por esa raz´ on se le denomina de expansi´on. De esta manera los bits a los cuales se les aplicar´a la permutaci´on son: R b1
b2
b3
b4
1
1
1
0
y despu´es de aplicar la permutaci´on 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´as a la izquierda nos servira´n para hacer una consulta en la tabla S 0 y los 4 bits m´as a la derecha para hacer una consulta en la tabla S1 . A dichas tablas S 0 y S 1 se les conoce como las S-cajas. Consideremos los cuatro bits m´as a la izquierda: 1101, para realizar la consulta en S 0 , ser´a necesario ubicar un rengl´on y una columna. El rengl´on 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 S 0 S 0 00
00 01 10 11
01 11 00 11
01 10 11 00 11 10 10 01 00 10 01 11 01 11 10
Y obtenemos 11. Luego, hacemos lo mismo, pero ahora tomando en cuenta los cuatro bits m´ as a la derecha: 1001. Nuevamente, tomamos el primero y el cuarto bit, que conformaran el rengl´on, esto es: 11 y el segundo y el tercero la columna, es decir, 00. Y realizamos la b´ usqueda pero ahora en S 1 . 8
00 00 00 01 10 10 11 11 10 S 1
01 01 00 00 01
10 10 01 01 00
11 11 11 00 11
Y obtenemos 10. Ahora concatenamos los 2 bits que encontramos en la S 0 con los 2 bits que encontramos en la S 1 . Y nos queda: 1110. A esta cadena le aplicamos la permutaci´ on P4 que aparece a continuaci´on: P4 2 4 3 1 Y como resultado se tendr´a : 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´a el bloque izquierdo L y el bloque derecho, ser´a 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´an 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´on de expansi´on E/P, despu´es de lo cual, nos queda: 01101001. Esta cadena se suma xor con la subclave k2 de la siguiente manera: 9
⊕
0 1 1 0 1 0 0 1 0 1 0 0 0 0 1 1 0 0 1 0 1 0 1 0
Dicho resultado lo dividimos en dos partes: 0010 y 1010. La primera de ellas, la utilizamos para buscar en S 0 los 2 bits que ser´an izquierdos: 00 01 10 11 00 01 00 11 10 01 11 10 01 00 10 00 10 01 11 11 11 01 11 10 S 0
La segunda de ellas, la usamos para buscar en S 1 los 2 bits que estar´an a la derecha: 00 01 10 11 00 00 01 10 11 01 10 00 01 11 10 11 00 01 00 11 10 01 00 11 S 1
Tomando los bits que encontramos tanto en S 0, como en S 1 se forma el bloque 0000 al cual se le aplica la permutaci´on P4 mencionada anteriormente, despu´es de lo cual, el bloque nos queda igual, este se sumar´a 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´on inversa, denotada por IP−1, que se muestra a continuaci´on: 10
10111101
01111110
I P
L=0111
R=1110
fk
1110
F E/P
01111101 10100100 1101
K1
1001
S0
S1
11
10 P4
1011 0111 1110
1100
SW L=1110
R=1100
fk
1100
F E/P
01101001 01000011 0010
1010
S0
S1
00
00 P4
0000 1110 1110
1100
I P
−1
011101101
Figura 4: Proceso de cifrado 11
K2
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 4.
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´ o a cabo para cifrar el mensaje, con la diferencia de que ahora se usar´a primero la subclave k2 y luego la subclave k1 , como se puede observar en la figura 1. Teniendo el mensaje cifrado de la secci´on anterior, este se dividir´a 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 secci´on anterior, ahora para ser m´as breves, se proporciona un diagrama con los datos que pasan por cada etapa, como se puede ver en la figura 5. Es importante recordar que para hallar los bits en las S-cajas, el rengl´on se obtiene tomando el primer y el cuarto bit del dato precedente, y la columna tomando el segundo y tercer bit del dato precedente. Dejamos al lector, que realice las permutaciones necesarias para comprobar cada uno de los resultados intermedios. Como se podr´a observar, al final se obtiene nuevamente el texto en claro M, que ten´ıamos al principio. 12
01110101
11101100
I P
L: 1110
R: 1100
fk
1100
F E/P
01101001 01000011 0010
K2
1010
S0
S1
00
00 P4
0000 1110 1110
1100
SW 1100
1110
fk
1110
F E/P
01111101 10100100 1101
S0
S1
11
10 P4
1011 1100 0111
1110
I P
K
1
1001
−1
10111101
Figura 5: Proceso de descifrado 13
Referencias [SIN99] S. Singh. The codebook. The science of secrecy from ancient Egypt to quantum cryptography . First Anchor Book Edition, 1999. [STA03] W. Stallings Cryptography and Network Security , Prentice Hall, 2003.
14