lunes, 24 de septiembre de 2007

Criptosistemas

Alien [blackhat4all@gmail.com]

Criptografía, según el diccionario de la real academia española, es el Arte de escribir con clave secreta o de un modo enigmático. La palabra proviene del griego Kryptos, que significa ocultar y unido con grafos (escritura), vendría significando algo así como texto oculto.

La criptografía, contrario a lo que muchos podrían pensar, data de miles de años atrás. Desde las primeras guerras, fue necesario enviar información de un lado a otro, teniendo la seguridad que en caso de que el mensaje fuese capturado por el enemigo, no pudiera entender su significado y así no llevar a cabo una acción de defensa o contra ataque, lo que se conoce hoy en día como contrainteligencia, pero eso ya es otra historia.

Hoy en día se conocen varios sistemas de encriptación, unos muy buenos, otros regulares, otros… y casi cualquier persona, con un poco de ingenio, puede llegar a crear una nueva clave. De hecho, dudo que alguien en su vida no haya tenido un intercambio con otra persona en la que no disfrutara usado algún tipo de clave o enigma el cual es desconocido para el resto de los presentes, pudo suceder cuando niños y hablábamos en jerigonzas o ahora de grandes, cuando tratamos de con guiños y señas de tener comunicación única y exclusivamente con una persona dentro de un grupo de varias. En general, la criptografía esta presente en nuestras vidas aunque no la reconozcamos como tal.

Pero no se puede hablar de criptografía sin mencionar el criptoanálisis, como no se puede hablar de virus sin mencionar lo contrario. Así como los Hacker han modificado y fortalecido los sistemas de seguridad. El criptoanálisis ha perfeccionado la criptografía.

Hay disímiles formas de cifrar un texto, pero las dos mas utilizadas por personas no expertas en el tema, son la sustitución y la trasposición. El primero, como su nombre lo indica, consiste en sustituir caracteres, palabras o conjunto de palabras por otras, cambiando por completo el significado de la frase. Este método es utilizado para encriptar textos sencillos y cuyo contenido no sea tan secreto como podrían ser otros, y es sobre todo por la facilidad y rapidez con que se puede programar o generar un algoritmo que lo haga. En pseudocódigo vendría siendo algo como:

10 hacer un ciclo que recorra todo el texto.
20 tomar el código ASCII de cada carácter
30 aplicar a dicho código ASCII una función matemática que le haga cambiar el valor (suma, resta, multiplicación, división, exponente, etc.)
40 escribir luego el carácter correspondiente al nuevo número generado.

Para casos de emergencias y poca seguridad, este algoritmo puede resultar útil, siempre que se tenga en consideración que la tabla de caracteres ASCII sólo llega hasta 256, es decir, si alguien colocase en el texto a encriptar (o texto claro como generalmente se le llama) el carácter 250, al sumársele 10 sería el 260, y como está fuera de la tabla de caracteres ASCII, no sería representado, quedando al decodificarse un texto no similar al original.

Nota: Ver en la sección de códigos este algoritmo representado en Visual Basic 6.0

El otro método es un poco más complejo de programar, ya que consiste en usar una formula matemática para cambiar de posición las letras que conforman el texto claro. Un método podría ser el facilitado por Gandalf, y que consiste en tomar del texto grupos de 6 caracteres y darles una organización determinada, luego tomar las siguientes 6 letras hacer la misma operación y colocarlas en el medio de los anteriores. La organización se daría cambiando la posición delas letras, para esto se utilizarían los número del 1 al 6, sin repetir ni que falte ninguno. Utilizando para esto la clave 624351quedaría el 6to carácter en la primera posición, el segundo quedaría en su mismo lugar, intercambiar el tercer y cuarto carácter, el 5to conservaría su lugar y el primero se desplazaría hasta el final. Con este método, la palabra frase “esto es una prueba” se codificaría de la siguiente forma:

Texto claro: Esto es una prueba
Dividido en 6 letras:
“Esto e”
“s una ”
“prueba”
Fíjense que se cuentan los espacios también como caracteres.

Luego, aplicando la clave de codificación, cada una de estos conjuntos de palabras quedarían como:
“Esot E”
“ nuas” ‘aquí los dos espacios están al principio
“areubp”

Después de esto, sólo debemos tomar cada una de las palabras y situarlas en el medio de la anterior. Como la primera no tiene antecesor se quedaría de igual forma.
“esot E”
Pero al colocarle en el medio la segunda palabra codificada, el resultado sería:
“eso nuast E”
Y por último:
“eso nareubpuast E”
Siendo este el resultado final.

Si bien el método es un poco más complejo que el mostrado anteriormente, también es valido decir que el buscar una técnica para revertir el proceso es más difícil también, asegurando que no sea tan fácil dar con el texto claro.

Este procedimiento de encriptación puede facilitar que con una buena programación, se pueda cambiar la clave de encriptación en cualquier momento, haciéndolo un algoritmo complejo, ya que el mismo código con el que se encriptó no será el utilizado para aplicar el criptoanálisis, sino que habría que reorganizar la clave de encriptación, lo que nos daría un nuevo número, que será el utilizado para revertir el proceso.
El único inconveniente que tiene, es que como se tomaran cadenas de sólo 6 caracteres, se debe asegurar que el texto claro tenga una longitud equivalente a un múltiplo de 6, lo que se puede asegurar añadiendo espacios al final del texto antes de llevar a cabo el proceso de encriptación.

De igual forma, cualquiera que fuese el método de encriptación, se debe asegurar que tenga un proceso inverso, ya que sin el todo lo anterior carece de sentido.

Para los estudiantes de carreras informáticas o relacionadas con esta, el crear un programa de encriptación puede ser casi tan fascinante como crear un virus. Resulta para algunos hasta excitante, fabricar un programa que basado en un número de serie sea capaz de modificar un texto haciéndolo ilegible para cualquiera a quien no valla dirigido el mensaje.

Puede resultar un poco absurdo crear un criptosistema, sabiendo que la mayoría de los gestores de correo permiten cifrar mensajes, sin embargo, debe ser del conocimiento público el hecho de que por problemas de seguridad, no son todos los servidores que permiten la circulación a través de ellos de mensajes enigmáticos. Lo que hace de este método algo útil para aquellos que desean tener una correspondencia más segura, además, estos dos métodos sencillos pueden ser utilizados tanto para codificar archivos de texto como binarios.

Vale aclarar para evitar futuras confusiones, que los códigos citados en este artículo, así como las nociones de encriptación aquí mostradas son sólo como base de estudio, no queremos con esto que nadie se dedique a crear sistemas complejos de encriptación, sino sólo que sepan que es una realidad que existe, y que por lo tanto no se puede ignorar.



Artículos relacionados


No hay comentarios: