2.3. DATA ENCRYPTION STANDARD (DES) 17 con un número entero de 0 a n, yposteriormenteseaplicauncorrimientode k posiciones, esto es equivalente a realizar la suma modular descrita líneas arriba: (a + k) módn 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) Amediadosdelos60 syprincipiosdelos70 s,debidoalaevolución de las computadoras y a que en consecuencia el costo y el tamaño de las mismas disminuyó considerablemente, diversas empresas e instituciones comenzaron 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 American 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 propuestas 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 criptografía conducido por Horst Feistel, unemigradoalemánquellegóae.u.a. en 1934. El proyecto concluyó 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 LLoyd s de Londres para ser usado enun 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 ycarlmeyer.cabemencionarqueendichoproyectonosóloestuvieron 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 unobjeto 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 Schaefer 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 papel. S-DES El S-DES es un algoritmo de cifrado por bloques [STA03]. Utiliza un tamañ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 trabajando con caracteres codificados en código ASCII 2 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, inicialmente se aplica una permutación inicial (IP); unafunción,lacualse 2 ASCII, significa American Standard Code for Information Interchange. Dadoquelas 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 CIFRADO Texto claro (8 bits) CLAVE (10 bits) P 10 DESCIFRADO Texto claro (8 bits) I P SHIFT I P 1 f k K1 P 8 K1 SHIFT S W S W K2 P 8 K2 I P 1 I P Texto cifrado (8 bits) Texto cifrado (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 aaplicarlafunción yfinalmenteseaplicanuevamenteunapermutación, que de hecho es la permutación inversa (IP 1 ). Para descifrar un bloque, se llevan a cabo las mismas operaciones,lo ú n i c o q u e c a m b i a e s e l o r d e n e n e l q u e s e u t i l i z a n l a s s u b c l a v es k 1 y k 2 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 k 1 y k 2,queseutilizaránendistintasetapasdelprocesodecifrado ydescifrado.laformadegenerardichassubclavessemuestraenlafigura 2.3. A continuación ayudándonos de dicha figura, veremos con un ejemplo, CLAVE (10 bits) P10 CI 1 CI 1 P 8 K 1 CI 2 CI 2 P 8 K 2 Figura 2.3: Generación de subclaves del S-DES cómo se obtienen las subclaves. Supónga que la clave es k = 1010000010. Adichak, seleaplicarálapermutaciónp 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,yasí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 siguientetabla
2.3. DATA ENCRYPTION STANDARD (DES) 21 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 Después de haber aplicado la permutación, se observaría 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 Adichoresultado,seledivideendospartes: 1 0 0 0 0 0 1 1 0 0 acadaunadelascualesselehaceuncorrimiento circular a la izquierda. Esto es el bit más a la izquierda se coloca más a a la derecha, ylosdemásse 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 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 yseleaplicalapermutaciónp 8queapareceacontinuació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 permutaciones, se les conoce como permutaciones de compresión. Despuésdelo 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ón que se llevará a cabo será tomar ambos bloquesde5 bits, y a cada uno de ellos, hacerle un corrimiento circular izquierdo de 2posiciones,estoes,haremos2corrimientoshacialaizquierda,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: 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 al cual se le aplicará la permutación P8 que ya conocíamos, obteniendola 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,queseutilizará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 m 1 m 2 m 3 m 4 m 5 m 6 m 7 m 8 1 0 1 1 1 1 0 1 AdichomensajeseleaplicaráunpermutacióninicialIP,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: m 2 m 6 m 3 m 1 m 4 m 8 m 5 m 7 0 1 1 1 1 1 1 0
2.3. DATA ENCRYPTION STANDARD (DES) 23 I P F E/P K 1 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 4bitscadauna,lascualesseranelbloqueizquierdo,denotado por L yel bloque derecho, denotado por R: L R 0 1 1 1 1 1 1 0 Acontinuación,seaplicalafunción 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 permutació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 b 1 b 2 b 3 b 4 1 1 1 0 ydespuésdeaplicarlapermutaciónquedaasí: 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 =10100100quehabiamos 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 S 0 ylos4bitsmásaladerechaparahacerunaconsultaenlatabla S 1.A dichas tablas S 0 y S 1 se les conoce como las S-cajas. Consideremos los cuatro bits más a la izquierda: 1101, para realizar la consulta en S 0,seránecesarioubicarunrenglónyunacolumna.Elrengló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 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 Yobtenemos11.Luego,hacemoslomismo,peroahoratomandoencuenta 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 ens 1.
2.3. DATA ENCRYPTION STANDARD (DES) 25 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 Yobtenemos10.Ahoraconcatenamoslos2bitsqueencontramosenlaS 0 con los 2 bits que encontramos en la S 1.Ynosqueda:1110.Aestacadena 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,quedandodelasiguientemanera: L R 1 1 1 0 1 1 0 0 Al igual que en la ronda 1, se toma el bloque derecho R yseleaplicala permutación de expansión E/P, despuésdelocual,nosqueda:01101001. Esta cadena se suma xor con la subclave k 2 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 S 0 los 2 bits que serán 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án 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,comoenS 1 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: Quedando como resultado final: IP 1 4 1 3 5 7 2 8 6 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 I P 01111110 L=0111 R=1110 F E/P 1110 01111101 1101 1001 10100100 K1 S0 S1 11 10 P4 0111 1011 1100 1110 SW L=1110 R=1100 F E/P 1100 0010 1010 01101001 01000011 K2 S0 S1 00 00 P4 1110 0000 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 k 2 yluegolasubclavek 1,comose 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 lasecció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 importante 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, querealicelas permutaciones necesarias para comprobar cada uno de los resultados intermedios. 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 adetallelaestructuradelaspermutacionesydelascajasdesustitució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 k 1,k 2,k 3 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 I P 11101100 L: 1110 R: 1100 F E/P 1100 0010 1010 01101001 01000011 K 2 S0 S1 00 00 P4 1110 0000 1110 1100 SW 1100 1110 F E/P 1110 1101 1001 01111101 10100100 K 1 S0 S1 11 10 P4 1100 1011 0111 1110 I P 1 10111101 Figura 2.6: Proceso de descifrado
30 CAPÍTULO 2. CRIPTOGRAFÍA DE CLAVE SECRETA