Universidad Autonoma Metropolitana Unidad Iztapalapa
Division de Ciencias Basicas e Ingeniera
Departamento de Matematicas Seminario de Criptografa DES Simplicado Por Sandra Daz Santiago Introduccion Debido a la evoluci 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 comen- zaron a utilizarlas. Al mismo tiempo, fue necesario cifrar comunicaciones importantes como las transferencias de dinero. Pero para que dos compa nas intercambiaran infor- maci on cifrada deban poseer el mismo algoritmo. Esto era un problema entre 1960 y 1970 ya que no exista un unico algoritmo de cifrado, es decir no haba un est andar. Por tal raz on en mayo de 1973, la American National Bureau of 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. Una de esas propuestas fue un algoritmo propuesto por la IBM, resultado de un proyecto de investigaci on a cargo de Walter Tuchman y Carl Meyer. [STA03, SIN99] A nales de los 60s IBM estableci o un proyecto de investigaci on en criptografa con- ducido por Horst Feistel, un emigrado alem an que lleg o a E.U.A. en 1934. El proyecto concluy o en 1971 con el desarrollo de un algoritmo denominado LUCIFER, el cual operaba con bloques de 64 bits y una clave de 128 bits y que fue vendido a la LLoyds de Londres para ser usado en un sistema de cajero autom atico, igualmente desarrollado por la IBM. Posteriormente, dado que la IBM deseaba que LUCIFER se volviese un producto m as comercial inici o un nuevo proyecto a cargo de Walter Tuchman y Carl Meyer. Cabe mencionar que en dicho proyecto no s olo estuvieron involucrados investigadores de la IBM, sino tambien la consultora y el apoyo tecnico de la National Security Agency (NSA). El resultado fue una versi on renada del LUCIFER que era m as resistente al criptoan alisis pero que usaba una clave de tama no m as peque no: 56 bits. Este ultimo fue el algoritmo que la IBM someti o a consideraci on del National Institute of Standards and Technology (NIST) en 1973, y que de hecho se adopt o formalmente como el algoritmo de cifrado est andar en 1977. A partir de ese momento se le denomin o: Data Encryption Standard (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 clasicado. Adem as corri o el rumor, de que la NSA haba impuesto tales criterios porque de esa manera podra 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 criptografa y por ello se aborda a continuaci on usando una versi on simplicada: DES simplicado (S-DES). El DES simplicado (S-DES) fue dise nado por el profesor Edward Schaefer de la uni- versidad de Santa Clara, como una herramienta para ser usada con nes 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 signica que si tenemos un mensaje de tama no mayor, este deber a partirse en bloques de 8 bits. Esto puede resultar muy con- veniente, sobretodo si se esta trabajando con caracteres codicados en c odigo ASCII 1 en el cual cada caracter se codica con 8 bits, de esta manera tomaramos caracter por caracter y lo cifraramos 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 gura 1. Como se puede observar en la gura, para cifrar un bloque, inicialmente se aplica una permutaci on inicial (IP); una funci on f k , la cual se describir a m as adelante; una 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 nalmente se aplica nuevamente una permutaci on, que de hecho es la permutaci on inversa (IP 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 k 1 y k 2 que son generadas de la clave k como se explica a continuaci on. 1 ASCII, signica American Standard Code for Information Interchange. Dado que las computado- ras entienden s olo n umeros, un c odigo ASCII es la representaci on numerica de un caracter como a o !. 2 CLAVE (10 bits) P 10 P 8 SHIFT (8 bits) CIFRADO I P 1 f k S W k f I P I P S W I P 1 f k f k P 8 SHIFT DESCIFRADO Texto claro Texto claro (8 bits) Texto cifrado Texto cifrado (8 bits) (8 bits) K K K K 1 2 1 2 Figura 1: Diagrama general del DES Generacion de claves para S-DES Como ya se haba mencionado anteriormente, tanto DES como S-DES, son algoritmos de clave secreta, lo cual implica que dos entidades que deseen comunicarse deben com- partir 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 k 1 y k 2 , que se utilizar an en distintas etapas del proceso de cifrado y descifrado. La forma de generar dichas subclaves se muestra en la gura 2. A continuaci on ayud andonos de dicha gura, 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 P10, que se muestra enseguida: P10 3 5 2 7 4 10 1 9 8 6 Dicha permutaci on nos indica, que ahora colocaremos primero el bit que se encuentra 3 CLAVE P 8 K 1 CI2 CI2 CI1 CI1 P 8 K 2 P10 (10 bits) 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 ultimo colocaremos el bit que se encuentra en la sexta posici on. Antes de aplicar la permutaci on, la clave se vera como en la siguiente tabla Clave k k 1 k 2 k 3 k 4 k 5 k 6 k 7 k 8 k 9 k 10 1 0 1 0 0 0 0 0 1 0 Despues de haber aplicado la permutaci on, se observara de la siguiente forma k 3 k 5 k 2 k 7 k 4 k 10 k 1 k 9 k 8 k 6 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 4 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 to- mar el conjunto de 10 bits concatenando ambos bloques como sigue k 1 k 2 k 3 k 4 k 5 k 6 k 7 k 8 k 9 k 10 0 0 0 0 1 1 1 0 0 0 y se le aplica la permutaci on P8 que aparece a continuaci on: P8 6 3 7 4 8 5 10 9 Observa que dicha permutaci on no incluye los bits 1 y 2 y que por lo tanto, despues de aplicarla nos quedar an solamente 8 bits, a este tipo de permutaciones, se les conoce como permutaciones de compresion. Despues de lo cual habremos obtenido la subclave k 1 : Subclave k 1 k 6 k 3 k 7 k 4 k 8 k 5 k 10 k 9 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, despues de lo cual cada uno de los bloques se ver a as: 0 0 1 0 0 0 0 0 1 1 Por ultimo se juntan los dos bloques anteriores en uno s olo: k 1 k 2 k 3 k 4 k 5 k 6 k 7 k 8 k 9 k 10 0 0 1 0 0 0 0 0 1 1 5 al cual se le aplicar a la permutaci on P8 que ya conocamos, obteniendo la siguiente subclave k 2 : Subclave k 2 k 6 k 3 k 7 k 4 k 8 k 5 k 10 k 9 0 1 0 0 0 0 1 1 De esta manera hemos ya generado nuestras subclaves k 1 y k 2 , 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 gura 1. Para simplicarnos 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 m 1 m 2 m 3 m 4 m 5 m 6 m 7 m 8 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 Despues de lo cual, los bits del mensaje quedar an asi: m 2 m 6 m 3 m 1 m 4 m 8 m 5 m 7 0 1 1 1 1 1 1 0 6 E/P S0 S1 P4 F K 1 I P f k Figura 3: Primera ronda del DES Simplicado Ronda 1 Parte del proceso de cifrado, son las rondas (rounds en ingles), que no son m as que una serie de pasos que se repiten. A continuaci on, veremos c omo 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 tambien se muestra en la gura 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 permutacion de expansion 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 b 1 b 2 b 3 b 4 1 1 1 0 y despues de aplicar la permutaci on queda as: b 4 b 1 b 2 b 3 b 2 b 3 b 4 b 1 0 1 1 1 1 1 0 1 Estos 8 bits, se sumaran xor con la subclave k 1 = 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 S 1 . 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 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 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 S 1 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 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-Simplicado. Ronda 2 Para llevar a cabo la ronda 2 del DES simplicado, 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, despues de lo cual, nos queda: 01101001. Esta cadena se suma xor con la subclave k 2 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 utili- zamos para buscar en S 0 los 2 bits que ser an izquierdos: S 0 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 S 1 los 2 bits que estar an a la derecha: S 1 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 S 0 , como en S 1 se forma el bloque 0000 al cual se le aplica la permutaci on P4 mencionada anteriormente, despues 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 I P k f I P 1 f k E/P S0 S1 P4 F K 10111101 01111110 L=0111 R=1110 01111101 1110 E/P S0 S1 P4 F K 1 2 10100100 1101 1001 11 10 1011 0111 1110 1100 L=1110 R=1100 01101001 1100 01000011 0010 1010 00 00 0000 1110 1110 1100 011101101 SW Figura 4: Proceso de cifrado 11 IP 1 4 1 3 5 7 2 8 6 Quedando como resultado nal: 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 gura 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 k 2 y luego la subclave k 1 , como se puede observar en la gura 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 gura 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 nal se obtiene nuevamente el texto en claro M, que tenamos al principio. 12 I P E/P S0 S1 P4 F K 1 11101100 L: 1110 R: 1100 1100 01101001 01000011 0010 1010 00 00 0000 01110101 1110 1110 1100 k f I P 1 1100 1110 1110 01111101 10100100 1101 1001 11 10 1011 1100 0111 1110 10111101 f k E/P S0 S1 P4 F K 2 SW 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