| Artículos | 01 ABR 1997

Encriptación

Tags: Histórico
Eloy Anguiano.

A lo largo de toda la historia la humanidad ha estado buscando la forma de comunicar ideas. A partir de este deseo y necesidad surgieron los sistemas de comunicación. Sin embargo, en muchos casos una tercera persona o grupo de personas deseaba escuchar el mensaje que otras dos personas o grupos de personas intercambiaban. Así surgió el espionaje. Una vez que las dos primeras personas (o grupos de personas) descubrieron que terceros estaban escuchando la conversación pretendieron inventar un sistema de comunicación que escondiese el mensaje tras un galimatías más o menos complejo. El problema fue que los terceros descubrieron que se utilizaba un sistema de ocultación de la información e intentaron descubrirlo a partir del mensaje que oían. Estas dos últimas tareas conforman lo que se denomina criptología (del griego ciencia de lo oculto o de la ocultación). Consecuentemente, a la primera parte de este proceso se le llama encriptación y a la segunda desencriptación.

Uno de los primeros sistemas de encriptación, atribuido a Julio Cesar es el método que consiste en trasladar las letras del alfabeto a la derecha un número de veces, poniendo las que se salen por la derecha en el lado izquierdo. Debajo de este alfabeto se escribe otro idéntico pero sin rotar, de tal forma que se busca en el de abajo la letra a encriptar y se ve en el de arriba la letra encriptada. Por ejemplo, utilizando la rotación 5 tendríamos los siguientes alfabetos:

VWXYZABCDEFGHIJKLMNÑOPQRSTU

ABCDEFGHIJKLMNÑOPQRSTUVWXYZ

De esta forma el mensaje HOLA QUE TAL ESTAS se convertiría en CKGV MPZ OVG ZÑOVÑ. Para que el que recibía la frase entendiese el mensaje bastaba con que supiese la clave de rotación y procediese a la inversa.

Pero, esto era demasiado sencillo bastaba con probar la treintena de posibilidades de rotación para descubrir la clave (evidentemente, aquella rotación en la que apareciese un resultado inteligible). La escalada de encriptación y desencriptación sólo acababa de comenzar.

Desde entonces y hasta la actualidad, se han construido muchos sistemas de encriptación y desencriptación en una loca carrera por cifrar y descifrar la comunicación.

A esta tarea, ya de por si compleja, han venido a unírsenos los ordenadores, dándonos una capacidad para cifrar y descifrar que nunca habíamos tenido y que nos permite hacer cálculos mucho más complejos que los que se hacían hace unas décadas y de forma mucho más rápida. Asímismo, los ordenadores nos han dado la capacidad de realizar muchísimas más pruebas para descifrar un código de las que hubiésemos podido hacer manualmente por muchos individuos que hubiese dedicados a tal menester.

En las siguientes líneas voy a intentar esbozar de la forma más simple que sea capaz uno de estos complejos algoritmos de encriptación. El diagrama de flujo de este algoritmo es como se ve en la figura adjunta. Como se puede comprobar, una clave de 64 bits es codificada para sacar 16 subclaves de 48 bits que son utilizadas en cada una de las iteraciones necesarias para encriptar el mensaje. En la encriptación de la clave intervienen los algoritmos PC1 (permutación de clave 1), RI (rotar a la izquierda) y PC2 (permutación de clave 2).

PC1 y PC2 funcionan de la siguiente forma: se mira valor que hay en el lugar n-ésimo de la tabla PC1 (supongamos k) entonces el bit k-ésimo de la clave se colocará en el lugar n-ésimo del resultado. De igual forma funciona el algoritmo PC2 y más adelante los algoritmos E, P, PI e IP. PC1 toma una clave de 64 bits que se ve reducida a 56 y que es dividida en dos grupos de 28 bits. A cada uno de estos grupos de 28 bits se le aplica por separado el RI para después volver a unirlos. El algoritmo RI rota a la izquierda un determinado número de bits que depende del número de iteración.

Una vez unidos los resultados de las dos rotaciones en un grupo de 56 bits, el resultado se pasa al PC2 que obtiene un código de 48 bits que será usado como clave de la primera iteración. Por otro lado, estos mismos dos grupos de 28 bits pero sin unir continúan en la iteración de claves hasta completar las 16 subclaves.

En el módulo principal del encriptador tenemos que colocar las letras del mensaje a codificar de tal forma que un número binario esté siempre asociado de forma única con una letra. Basta con 5 bits para poder identificar 32 letras y por tanto, juntando adecuadamente grupos de 5 bits se puede hacer un grupo de 60 con ocho caracteres consecutivos del texto y todavía nos sobran cuatro bits.

En el módulo principal, esta ristra de 64 bits se ve originalmente encriptada por un permutador inicial de bits (PI). El resultado se divide en dos grupos de 32 bits que interaccionan 16 veces con las subclaves para volver a unirse tras las 16 iteraciones en un grupo de 64 bits a los que se les aplica la transformación inversa a PI que es IP.

¿Qué es lo que se hace en cada una de las iteraciones descritas anteriormente?. Los bits de la izquierda harán un O-EXCLUSIVO con los 32 bits resultantes del proceso de los bits de la derecha y el resultado serán los 32 bits de la derecha de la siguiente iteración. A su vez, los 32 bits de la derecha sufrirán una nueva permutación con ampliación a 48 bits, el resultado interaccionará con la subclave correspondiente haciendo un O-EXCLUSIVO. El resultado de éste se divide en 8 grupos de 6 bits que a través de un código de sustitución que ahora explicaremos se convierten en códigos de 4 bits. Estos, a su vez, vueltos a unir forman un grupo de 32 cuyo orden se ve de nuevo permutado por P.

El código de substitución consiste en mirar en una tabla el grupo que le corresponde (S1, S2, ..., S8). Dentro del grupo la fila correspondiente al número que se forma al juntar el primer y último bit del grupo de 6 bits y como número de columna el código central. El número encontrado será un número de 4 bits que habrá substituido al anterior de 6.

Como puede comprobar el lector, la clave es tan compleja y el número mensaje ha sido mareado de tal forma que es prácticamente imposible desencriptar el texto sin conocer la clave, basta con guardar la clave con el suficiente secreto y será un código indesencriptable (pero claro, para algo se crearon los servicios de espionaje ¿no?). Si alguno de ustedes está interesado en los valores exactos de estas tablas puede encontrarlos en la bibliografía o en mi página WEB (http://www.ii.uam.es/~eloy).

Bibliografía

- D.E.R. Denning, Data Security, Addison-Wesley Publishing Co., 1983.

- Data Encription Standard, National Bureau of Standards, Federal Information Processing Standards Publication 46. National Technical Information Service, 1977.

Contenidos recomendados...

Comentar
Para comentar, es necesario iniciar sesión
Se muestran 0 comentarios
X

Uso de cookies

Esta web utiliza cookies técnicas, de personalización y análisis, propias y de terceros, para facilitarle la navegación de forma anónima y analizar estadísticas del uso de la web. Consideramos que si continúa navegando, acepta su uso. Obtener más información