En plena época donde ya se está hablando de la criptografía cuántica y los sistemas de cifrado post-cuántico, una noticia de un método criptográfico de hace 500 años se ha colado como noticia destacada en los principales medios de comunicación este país con polémica incluida. En concreto, la noticia habla del descifrado por parte del CNI del código secreto del Gran Capitán, que debe pasar ya como anécdota a la historia del Cifrado de las comunicaciones digitales.
Aunque parece ser que antes del CNI, un historiador inglés llamado Gustave Bergenroth ya lo descifró parcialmente (cierto que con bastante precisión) en el siglo XIX, en concreto en el año 1862. Dejando aparte la polémica sobre quién fue el primero en descifrarlo (aunque parece claro que fue Bergenroth) , a nosotros nos interesa más saber qué es y cómo funciona ese antiguo código secreto del Gran Capitán, que es una historia digna de pertenecer a la segunda parte del libro de nuestro libro de Microhistorias: Anécdotas y Curiosidades de la Historia de la Informática.
Centrándonos estrictamente en el campo de la criptografía, la base del método de cifrado utilizado por el Gran Capitán (Gonzalo Fernández de Córdoba) es el llamado sustitución o sustitución mono-alfabética. Aunque existen muchos tipos de cifrados por sustitución quizás el más famoso sea el Cifrado César donde básicamente se sustituyen letras por otras del alfabeto utilizando un desplazamiento de las mismas (por ejemplo, desplazando tres espacios a la derecha el alfabeto convierte la letra A en la letra D y así sucesivamente). El principal problema de este cifrado aparece en las repeticiones, ya que es posible identificar fácilmente letras o incluso palabras simplemente viendo las veces que estas se repiten en el texto.
El nombre de esta técnica de descifrado analizando repeticiones se llama análisis de frecuencias, pero la codificación del Gran Capitán intentaba eludir este problema aplicando el método homofónico, el cual permite que las letras más utilizadas no aparezcan en igual proposición. Es decir, las letras o palabras más comunes dentro del alfabeto se sustituyen por otras combinaciones de letras (principalmente códigos monosilábicos como por ejemplo "xnp" para la preposición "de") y también símbolos.
Para poder descifrar este tipo de codificación se hace imprescindible el uso de un diccionario o una tabla de sustitución el cual nos permita conocer las diferentes combinaciones asociadas a los símbolos que aparecen en el texto cifrado. Además, para añadir más complejidad, se incluían dos símbolos que no tenían ningún significado y otro llamado "anulante" cuya única función era añadir "ruido" en el texto final cifrado.
El Gran Capitán utilizó dos tipos de cifrado muy parecidos entre sí aplicando las técnicas que hemos explicado anteriormente, pero realizando algunos cambios en las tablas de códigos y símbolos. El primero aparece en las correspondencias entre Fernando el Católico y el Gran Capitán durante agosto de 1502. El otro tipo de cifrado, se utilizó entre mayo de 1502 y abril de 1506.
El primer método de cifrado que hemos comentado anteriormente utilizaba la siguiente tabla de símbolos y su correspondencia con las letras del alfabeto:
Y en esta tabla podemos ver un ejemplo de los códigos monosilábicos utilizados:
" xak -> ducado
" xik -> dos
" xap -> da
" xnp -> de
" xop -> dio
" xaq -> del
" xar -> después
" xix -> el
" ca -> Venecia
" cnc -> ver
" cng -> yo
…
El segundo método, sobre el cual se ha realizado el análisis del CNI (y también Bergenroth aunque este no lo descifró al completo), contiene 88 símbolos y 237 códigos creados a partir de combinaciones de letras. Además, la dificultad del descifrado era mayor al jugar con las separaciones entre las palabras evitando de esta forma conocer la longitud de las mismas y donde acaba o empieza la frase. La tabla de símbolos utilizadas en este segundo tipo de cifrado es la siguiente:
Y algunos ejemplos de los códigos monosilábicos:
" lezo -> ayuda
" liq -> el
" loc -> arma
" luq -> capitán
" moc -> con
" muc -> contra
" pux -> lo
" ran -> por
" ao -> Sicilia
…
Fijaos que, en ambas tablas de símbolos, las letras más utilizadas en el alfabeto castellano como la letra A, R o I tienen hasta seis símbolos distintos para representarlas (aplicación del método homofónico que hemos comentado anteriormente).
Aparentemente el cifrado era bastante robusto para la época, pero tenía algunos fallos que hacían factible descifrarlos por parte de un atacante que fuera capaz de interceptarlo. Como nos cuenta Arturo Quirantes en esta web, uno de los problemas del cifrado era la selección de palabras digamos "curiosas" para cifrar algunas tan comunes como por ejemplo el artículo "los". Este artículo se cifraba como "peluso" y el artículo "las" se cifraba como "pelusa" (no se usaban los monosílabos), lo cual llenaría el texto de esta peculiar palabra llamaría demasiado la atención y daría pistas para poder averiguar a qué palabra pertenecen.
Otro de los problemas, esta vez no de la cifra sino la persona que escribía el texto cifrado era incluir alguna palabra sin cifrar dentro del texto codificado. Esto, además de llamar un poco la atención, podría provocar que el símbolo que estaba antes o después de dicha palabra fuera fácilmente deducible si se analizaba el contexto del mismo.
Si quieres comprobar por ti mismo todas las cartas cifradas y revisar esta parte de nuestra historia, puedes acceder directamente al archivo de la Biblioteca Digital Hispánica online. Curiosamente, en el mismo archivo, podemos encontrar una detallada la solución al cifrado, en concreto en la sección MSS/20211/52, donde aparecen todos los apuntes tomados por Bergenroth hace más de un siglo.
Autor: Fran Ramírez, Security Researcher en ElevenPaths. Escritor del libro "Microhistorias: Anécdotas y curiosidades de la historia de la informática". Escritor del blog Cyberhades.
Figura 1: Criptografía del pasado muy presente: El código secreto del Gran Capitán |
Aunque parece ser que antes del CNI, un historiador inglés llamado Gustave Bergenroth ya lo descifró parcialmente (cierto que con bastante precisión) en el siglo XIX, en concreto en el año 1862. Dejando aparte la polémica sobre quién fue el primero en descifrarlo (aunque parece claro que fue Bergenroth) , a nosotros nos interesa más saber qué es y cómo funciona ese antiguo código secreto del Gran Capitán, que es una historia digna de pertenecer a la segunda parte del libro de nuestro libro de Microhistorias: Anécdotas y Curiosidades de la Historia de la Informática.
Figura 2: Libro de Microhistorias: Anécdotras y curiosidades de la historia de la informática |
Centrándonos estrictamente en el campo de la criptografía, la base del método de cifrado utilizado por el Gran Capitán (Gonzalo Fernández de Córdoba) es el llamado sustitución o sustitución mono-alfabética. Aunque existen muchos tipos de cifrados por sustitución quizás el más famoso sea el Cifrado César donde básicamente se sustituyen letras por otras del alfabeto utilizando un desplazamiento de las mismas (por ejemplo, desplazando tres espacios a la derecha el alfabeto convierte la letra A en la letra D y así sucesivamente). El principal problema de este cifrado aparece en las repeticiones, ya que es posible identificar fácilmente letras o incluso palabras simplemente viendo las veces que estas se repiten en el texto.
Figura 3: Ejemplo de texto cifrado con el código del Gran Capitán. Fuente. |
El nombre de esta técnica de descifrado analizando repeticiones se llama análisis de frecuencias, pero la codificación del Gran Capitán intentaba eludir este problema aplicando el método homofónico, el cual permite que las letras más utilizadas no aparezcan en igual proposición. Es decir, las letras o palabras más comunes dentro del alfabeto se sustituyen por otras combinaciones de letras (principalmente códigos monosilábicos como por ejemplo "xnp" para la preposición "de") y también símbolos.
Para poder descifrar este tipo de codificación se hace imprescindible el uso de un diccionario o una tabla de sustitución el cual nos permita conocer las diferentes combinaciones asociadas a los símbolos que aparecen en el texto cifrado. Además, para añadir más complejidad, se incluían dos símbolos que no tenían ningún significado y otro llamado "anulante" cuya única función era añadir "ruido" en el texto final cifrado.
El Gran Capitán utilizó dos tipos de cifrado muy parecidos entre sí aplicando las técnicas que hemos explicado anteriormente, pero realizando algunos cambios en las tablas de códigos y símbolos. El primero aparece en las correspondencias entre Fernando el Católico y el Gran Capitán durante agosto de 1502. El otro tipo de cifrado, se utilizó entre mayo de 1502 y abril de 1506.
El primer método de cifrado que hemos comentado anteriormente utilizaba la siguiente tabla de símbolos y su correspondencia con las letras del alfabeto:
Figura 4: Tabla de símbolos de los mensajes cifrados en agosto de 1502. Fuente. |
Y en esta tabla podemos ver un ejemplo de los códigos monosilábicos utilizados:
" xak -> ducado
" xik -> dos
" xap -> da
" xnp -> de
" xop -> dio
" xaq -> del
" xar -> después
" xix -> el
" ca -> Venecia
" cnc -> ver
" cng -> yo
…
El segundo método, sobre el cual se ha realizado el análisis del CNI (y también Bergenroth aunque este no lo descifró al completo), contiene 88 símbolos y 237 códigos creados a partir de combinaciones de letras. Además, la dificultad del descifrado era mayor al jugar con las separaciones entre las palabras evitando de esta forma conocer la longitud de las mismas y donde acaba o empieza la frase. La tabla de símbolos utilizadas en este segundo tipo de cifrado es la siguiente:
Figura 5: Tabla de símbolos del cifrado utilizado entre Mayo de 1502 y de 1506. Fuente |
Y algunos ejemplos de los códigos monosilábicos:
" lezo -> ayuda
" liq -> el
" loc -> arma
" luq -> capitán
" moc -> con
" muc -> contra
" pux -> lo
" ran -> por
" ao -> Sicilia
…
Fijaos que, en ambas tablas de símbolos, las letras más utilizadas en el alfabeto castellano como la letra A, R o I tienen hasta seis símbolos distintos para representarlas (aplicación del método homofónico que hemos comentado anteriormente).
Aparentemente el cifrado era bastante robusto para la época, pero tenía algunos fallos que hacían factible descifrarlos por parte de un atacante que fuera capaz de interceptarlo. Como nos cuenta Arturo Quirantes en esta web, uno de los problemas del cifrado era la selección de palabras digamos "curiosas" para cifrar algunas tan comunes como por ejemplo el artículo "los". Este artículo se cifraba como "peluso" y el artículo "las" se cifraba como "pelusa" (no se usaban los monosílabos), lo cual llenaría el texto de esta peculiar palabra llamaría demasiado la atención y daría pistas para poder averiguar a qué palabra pertenecen.
Figura 6: Detalle de las palabras "peluso" y "pelusa" en un texto cifrado. Fuente. |
Otro de los problemas, esta vez no de la cifra sino la persona que escribía el texto cifrado era incluir alguna palabra sin cifrar dentro del texto codificado. Esto, además de llamar un poco la atención, podría provocar que el símbolo que estaba antes o después de dicha palabra fuera fácilmente deducible si se analizaba el contexto del mismo.
Si quieres comprobar por ti mismo todas las cartas cifradas y revisar esta parte de nuestra historia, puedes acceder directamente al archivo de la Biblioteca Digital Hispánica online. Curiosamente, en el mismo archivo, podemos encontrar una detallada la solución al cifrado, en concreto en la sección MSS/20211/52, donde aparecen todos los apuntes tomados por Bergenroth hace más de un siglo.
Autor: Fran Ramírez, Security Researcher en ElevenPaths. Escritor del libro "Microhistorias: Anécdotas y curiosidades de la historia de la informática". Escritor del blog Cyberhades.
No hay comentarios:
Publicar un comentario