La criptografía hoy

En algunas ocasiones como sabéis hemos hablado en el blog sobre criptografía, sobre todo, hay una pequeña serie de artículos sobre criptografía clásica que podéis consultar.

Hoy os traigo algo de contenido externo. No es algo que me guste, ya que normalmente prefiero escribir las cosas de mi puño y letra tras haberlas mirado y estudiado, pero la verdad es que el artículo esta bastante bien y da un panorama general de los métodos de criptografía usados habitualmente hoy en día y de que métodos usan las aplicaciones más comunes.

El artículo está sacado de la Comunidad de DragonJAR, de la cual, personalmente, recomiendo sus foros en los cuales hay muchas cosas interesantes.

Sin más este es el artículo: Bits y Qubits, El camino de la criptografía – Parte I. Existe una segunda parte, aunque no me ha parecido tan trascendental. De todas formas, si queréis acceder a él, tenéis un enlace al final del artículo enlazado por mi.

Como siempre, aunque no lo haya escrito yo, si tenéis dudas, preguntas o sugerencias animaos a escribir. Un saludo

La criptografía hoy

Criptografía clásica (IV) – Vigenere

Como otro capítulo más del apartado de criptografía clásica vamos a ver el cifrado de Vigenere. Este tipo de cifrado entra en la categoría de los polialfabéticos, es decir, emplean varios alfabetos para cifrar, y de sustitución. Para entender esto un poco más, podemos decir que es similar al cifrado Caesar pero más complicado, ahora lo explicaré un poco más.

Para empezar, diremos que es tamaño de la clave de este tipo de codificación es variable, puede estar entre uno y la longitud del texto original. En caso de ser de longitud uno la clave, el cifrado sería igual que el Caesar.

Para cifrar, además de la clave, es muy útil tener una tabla de la siguiente forma. La tabla, no esta hecha por mi, sino que por facilidad esta sacada de la Wikipedia.

Tabla para cifrado/descifrado
Tabla para cifrado/descifrado

En la tabla podemos observar todos los desplazamientos posibles de un alfabeto, en este caso, el ingles ya que no posee la letra “ñ”.

El método consistirá en ir emparejando caracteres del texto original con caracteres de la clave para sacar el carácter codificado que corresponda. Buscaríamos la letra del texto original en la columnas y la letra de la clave en las filas. Como lo más fácil es verlo con un ejemplo, vamos a ello. Como en ejemplos anteriores de otros métodos la frase a codificar va a ser “Vamos a leer mundo informático” que posee 26 letras.

En primer lugar, como he comentado la clave puede tener extensiones diferentes. Así que ejemplos de claves validas para el texto dado serían los siguiente:

texto_: VAMOS A LEER MUNDO INFORMATICO

clave1: AHRID D EIAK QIURD ANJFKRVZPQW -> longitud de la clave 26 (tamaño del texto)

clave2: ASDFG -> longitud de la clave 5

clave3: OKMIJNUH -> longitud de la clave 8

clave4: G -> longitud de la clave 1 (sería como un Caesar)

Ahora vamos a cifrar el mensaje. Para que veáis como funciona vamos a utilizar la “clave1” para el primer ejemplo y la “clave2” para el segundo ejemplo.

Primer ejemplo:

texto: VAMOS A LEER MUNDO INFORMATICO

clave: AHRID D EIAK QIURD ANJFKRVZPQW

cifra: VHDWV D PMEB CCHUR IAOTBDVSXSK

Segundo ejemplo:

texto: VAMOS A LEER MUNDO INFORMATICO

clave: ASDFG A SDFG ASDFG ASDFGASDFGA

cifra: VSPTY A DHJX MMQIU IFITXMSWNIO

Como podéis ver los textos cifrados con diferente clave son completamente diferentes. Y para cada clave y longitud de clave que escojáis saldrá un texto cifrado diferente. Debido a esto, la cantidad de posibles textos que se puede obtener es enorme, lo que propicio que durante mucho tiempo este método se considerara indescifrable. De hecho, fue así hasta el siglo XIX.

Ahora vamos a ver como descifrar el texto. Realmente, teniendo la tabla delante es muy fácil, ya que solo es aplicar el proceso inverso. Es decir, buscaríamos la letra correspondiente de la clave en las filas y la letra del texto cifrado en el interior de la tabla (en la fila que nos ha indicado la clave) y miraríamos con que letra de las columnas concuerda. Igual que antes vamos a ver un ejemplo para entender esto mejor.

Primer ejemplo:

clave: AHRID D EIAK QIURD ANJFKRVZPQW

cifra: VHDWV D PMEB CCHUR IAOTBDVSXSK

texto: VAMOS A LEER MUNDO INFORMATICO

Para explicarlo un poco, veamos más a fondo como desencriptar una de las combinaciones, por ejemplo, letra de la clave “I“, letra del texto “W“. Miraríamos las filas buscando la “I” con lo cual nos situaríamos en la fila 9. En esta fila buscaríamos la “W” y veríamos que correspondería con la “O“.

Segundo ejemplo:

clave: ASDFG A SDFG ASDFG ASDFGASDFGA

cifra: VSPTY A DHJX MMQIU IFITXMSWNIO

texto: VAMOS A LEER MUNDO INFORMATICO

Finalmente, para todos aquellos que sean más puristas, decir que existe una función matemática para realizar el cifrado, que sería la siguiente:

Zi = (Xi + Yi) mod T

Donde “Xi” es la letra del texto original, “Yi” es la letra de la clave, “Zi” es la letra resultado y “T” es el tamaño del alfabeto.

Bueno, espero que os guste, como siempre, os animo a preguntar dudas o comentar algo. Nos vemos.

Criptografía clásica (IV) – Vigenere

Criptografía – Solución del problema 1

Como recordareis hace unas semanas publique un problemilla sobre criptografía para que pudierais poner en práctica un poco los métodos explicados hasta el momento. Para el que no se acuerde o acabe de llegar, el problema es este.

Para todos aquellos que lo habéis intentado la solución es esta (Seleccionar para visualizar):

TODOS LOS HOMBRES SOMOS IGUALES

Para llegar a esta solución habréis tenido que seguir los siguientes pasos:

Inicialmente teníamos la cadena siguiente:

ISIRIPIRHSJQIRHSGQIRKQGPGSJPHSHSIRKQIRHSHQKPJSKOJQJPHS

Como se puede observar con una simple ojeada en el mensaje cifrado no hay más de diez letras, lo cual nos puede dar una pista sobre el primer método de cifrado a aplicar. En este caso como solo hemos visto tres no es muy difícil decantarse por uno de ellos, el de Polybios.

Así pues nos dispondremos a distribuir las letras en filas y columnas como se vio en el artículo correspondiente. Para las columnas tendremos la siguiente secuencia: “g h i j k”. Y para las filas, “o p q r s”. Se que más de uno lo ha hecho al revés intercambiando las secuencias, pero este era uno de las pocas dificultades que tenía el problema.

Tras esto pasaremos a intentar descifrar el mensaje. Resultante que es el siguiente:

XSHSW OSW LSPFVIW WSPSW MKYEOIW

Evidentemente, esto de mensaje descifrado tiene muy poco, así que vamos a suponer que lo hemos hecho bien y que hay otro método de cifrado aplicado. Como se puede observar el mensaje que tenemos en este momento tiene catorce letras, por lo tanto el método Polybios queda descartado. De los otros dos métodos que han sido explicados vamos a probar el Caesar por ser más simple de probar.

Tras observar un poco el mensaje, se puede observar que la letra “S” es la que más se repite, con lo cual para simplificar el proceso de pruebas supondremos que es una vocal, de esta forma, simplificaremos las pruebas dejándolas en cinco posibles desplazamientos, uno por cada valor que puede tomar la “S”: “S = A”, “S = E”, “S = I”, “S = O” y “S = U”, de los veintisiete posibles, uno por letra del alfabeto español.

El resto del ejercicio es solo mecánico. Es ir probando con los cinco posibles desplazamientos hasta conseguir algo coherente. En este caso la solución arriba expuesta.

Para todos aquellos que lo hayan logrado resolver, ¡enhorabuena!, dentro de poco tendremos nuevas entregas y se ira incrementando la dificultad y la cantidad de algoritmos a aplicar, además que inventaremos nuestros propios métodos de cifrado. Para todos aquellos que no lo habéis conseguido, no os desaniméis, poco a poco iréis aprendiendo un poco más. Además, este ejercicio solo era de toma de contacto para abriros la mente un poco, pero en futuras entregas, no solo hablaremos de nuevos métodos de criptografía, sino que también empezaremos a tratar el criptoanálisis, como descifrarlos. Animo a todos y espero que os hayáis entretenido al menos.

Nos vemos.

Criptografía – Solución del problema 1

Criptografía – Problema 1

Realmente lo más divertido e interesante de estudiar criptografía, además de aprender curiosidades, es la posibilidad de leer mensajes codificados sin saber la clave. A la parte de la criptología que estudia este campo se la llama criptoanálisis. Ya comenté algo de ello en un post que puse hace tiempo con un problema de criptoanálisis. Para aquellos que no lo leyeran en su día aquí tenéis el post, y aquí la solución.

Como he empezado desde cero con el tema de la criptografía, el post enlazado en las lineas anteriores se va a quedar como un ejercicio puesto sin estar ubicado en ningún sitio. Sin embargo a partir de ahora, siempre que sea posible o lo consideré necesario, iré poniendo alguna actividad de criptoanálisis relacionada con los temas de los que este hablando o ya habla hablado. De esta forma, espero que además de leer los distintos post y a prender algo, os entretengáis resolviendo problemas.

Por supuesto, si alguien quiere que se publique algún problema creado por él, solo tiene que enviármelo y respetar unas pequeñas reglas.

  1. Que el mensaje cifrado o sin cifrar no incurra en insultos, ni palabras mal sonantes.
  2. Que el mensaje cifrado o sin cifrar no incurra en propaganda o spam.
  3. Que el mensaje cifrado o sin cifrar no incurra en propaganda política.
  4. Que el método o métodos de cifrado aplicados se hayan visto ya en alguno de los post del blog. Por la sencilla razón de que si alguien ha empezado en este mundo con el blog, pueda optar a hacer los problemas con los conocimientos adquiridos. Como comenté, a lo largo de los post de criptografía clásica se va a seguir un orden cronológico, por lo tanto si alguien juzga que me he saltado algún método interesante de cifrado que quiera usar para realizar su problema, solo tiene que comentarlo y se incluirá en la sección.

La solución de los criptogramas será publicada en un post entre una y dos semanas después de la publicación del problema. De este modo tendréis tiempo para analizarlo e intentar resolverlo. De todas formas que sea publicada no quiere decir que la miréis si no queréis. El formato será publicar la solución con el color de fondo del blog de forma que haya que seleccionarla para verla y se publicará una explicación de como llegar a ella.

Si algún problema despierta mucho interés y genera múltiples comentarios sobre opiniones de cara a su resolución, la fecha de resolución se pospondrá para dejar a los lectores más tiempo para su resolución, publicándose esta cuando se enfrié el post o las ideas para la resolución vayan muy desencaminada.

La idea de esta serie de problemas es estimular a los lectores y crear una actividad participativa y colaborativa. Como se suele decir, dos mentes piensan mejor que una.

Pero bueno, basta de introducciones y vamos con la primera actividad.

Problema 1:

ISIRIPIRHSJQIRHSGQIRKQGPGSJPHSHSIRKQIRHSHQKPJSKOJQJPHS

Espero que os divirtáis.

Intentad no poner la solución en los comentarios para que todo el mundo pueda participar. Si veo que la iniciativa de los problemas tiene exito ya intentaré establecer un modo competitivo o algo similar donde se reconozca la gente que lo ha resuelto correctamente y el orden de llegada.

Criptografía – Problema 1

Criptografía clásica (III) – Caesar

El siguiente método de cifrado que vamos a ver el el Caesar. Este método recibe su nombre en honor a “Julio Cesar” y en el se aplica una transformación mono-alfabética. En sus origines este sistema aplicaba al alfabeto un desplazamiento de tres caracteres.

El método consistía en la sustitución de los caracteres del mensaje original por los caracteres correspondientes aplicando un desplazamiento de tres posiciones en el alfabeto.

Para ejemplificar el funcionamiento vamos a ver el siguiente ejemplo:

Alfabetos

Original:  A B C D E F G H I J K L M N Ñ O P Q R S T U V W X Y Z
Desplaz: D E F G H I J K L M N Ñ O P Q R S T U V W X Y Z A B C

Mensajes

Original: VAMOS A LEER MUNDO INFORMATICO

Cifrado: YDORV D ÑHHU OXPGR LPORUODWLFR

Para formalizar un poco más la definición de este sistema, se definirá como un sistema con un desplazamiento tres con módulo n, donde n es el número de letras del alfabeto utilizado.

Más adelante este sistema sería ampliamente utilizado pero con diferentes desplazamientos, e includo con desplazamientos no lineales.

Criptografía clásica (III) – Caesar

Criptografía clásica (II) – Polybios

Siguiendo con el tema de métodos de cifrado clásicos, encontramos como siguiente en la lista el cifrador de Polybios que data de un par de siglos antes de Cristo. Es el cifrador por sustitución de caracteres más antiguo que se conoce.

Es sistema es bastante rudimentario, consistía en conseguir una correspondencia de una letra con otro par mediante una matriz en la que se colocaba el alfabeto completo. Para ilustrar esto, que así suena muy lioso, veamos el siguiente dibujo:

polybios

En primer lugar, para adaptarlo al lenguaje español hay que fijarse en que hay algunas combinaciones de letras como serían “ij” y “nñ”a las que le correspondería el mismo código de cifrado, pero son lo suficientemente diferentes para poder salir de dudas sobre el carácter correcto desencriptando el mensaje.

El método, consistía en corresponder la letra que se deseaba ocultar con otras dos según la fila y la columna de la matriz a la que pertenecía. Por ejemplo, la letra “a” sería “AA”, la “s” sería “DC”.

Para poner un ejemplo de mayores dimensiones trabajaremos con la frase: VAMOS A LEER MUNDO INFORMATICO. Cuyo resultado sería el siguiente: EAAACBCDDC AA CAAEAEDB CBDECCADCD BDCCBACDDBCBAADDBDACCD.

Como se puede ver, un gran problema de este tipo de cifrado es que el tamaño del mensaje se duplica, lo cual no siempre es deseable.

Evidentemente, las letras para las correspondecias se pueden alterar, no hace falta que sea la secuencia “A, B, C, D, E”, se puede elegir cualquier otra o incluso hacerlo con números.

Criptografía clásica (II) – Polybios

Criptografía clásica (I) – La escítala

Ya en la antigua Grecia se usaba un método llamado escítala para el cifrado de mensajes. El sistema consistía en una tira de cuero que se enrollaba en un bastón con un cierto diámetro especifico, y sobre esto se escribía el mensaje de forma longitudinal.

Una vez escrito el mensaje, la tira de cuero se desenrollaba del bastón y era llevada por un mensajero al destinatario correspondiente.

escitala

Para el caso que he planteado (perdón por el dibujo, no es lo mio) el mensaje original sería: VAMOS A LEER MUNDO INFORMÁTICO, y una vez desenrollado solo se podría observar: VMMAUAMNTODISOCAIOLNEFEORR.

Si en el trascurso del transporte un enemigo interceptaba al mensajero, solo obtenía una tira de cuero con un montón de letras inconexas y escritas al parecer de forma aleatoria.

Para descibrar el mensaje una vez llegado a su destinatario, este debía poseer un bastón del mismo diametro que el encargado de generar el mensaje. De este modo, enrollando la tira de cuero sobre él se podría volver a hacer legible el mensaje original.

Criptografía clásica (I) – La escítala