El cifrado Vigenère ( pronunciación francesa: [viʒnɛːʁ] ) es un método de cifrado de texto alfabético donde cada letra del texto simple se codifica con un cifrado César diferente , cuyo incremento está determinado por la letra correspondiente de otro texto, la clave .
Por ejemplo, si el texto sin formato es attacking tonight
y la clave es oculorhinolaryngology
, entonces
a
del texto sin formato se desplaza 14 posiciones en el alfabeto (porque la primera letra o
de la clave es la 14.ª letra del alfabeto, contando desde cero), lo que da como resultado o
:t
se desplaza 2 (porque la segunda letra C
de la clave es la segunda letra del alfabeto, contando desde cero), dando como resultado v
:t
se desplaza 20 ( U
) dando como resultado n
, con envoltura;y así sucesivamente; obteniendo el mensaje ovnlqbpvt eoegtnh
. Si el destinatario del mensaje conoce la clave, puede recuperar el texto sin formato invirtiendo este proceso.
El cifrado Vigenère es, por tanto, un caso especial de sustitución polialfabética . [1] [2]
Descrito por primera vez por Giovan Battista Bellaso en 1553, el código es fácil de entender e implementar, pero resistió todos los intentos de descifrarlo hasta 1863, tres siglos después. Esto le valió el nombre de le chiffrage indéchiffrable ( en francés, 'el código indescifrable'). Muchas personas han intentado implementar esquemas de cifrado que son esencialmente códigos Vigenère. [3] En 1863, Friedrich Kasiski fue el primero en publicar un método general para descifrar códigos Vigenère.
En el siglo XIX, el proyecto fue atribuido erróneamente a Blaise de Vigenère (1523-1596), por lo que adquirió su nombre actual. [4]
La primera descripción bien documentada de un cifrado polialfabético fue realizada por Leon Battista Alberti alrededor de 1467 y utilizó un disco de cifrado de metal para cambiar entre alfabetos cifrados. El sistema de Alberti solo cambiaba de alfabeto después de varias palabras, y los cambios se indicaban escribiendo la letra del alfabeto correspondiente en el texto cifrado. Más tarde, Johannes Trithemius , en su obra Polygraphia (que se completó en forma de manuscrito en 1508 pero se publicó por primera vez en 1518), [5] inventó la tabula recta , un componente crítico del cifrado de Vigenère. [6] El cifrado de Trithemius , sin embargo, proporcionó un sistema progresivo, bastante rígido y predecible para cambiar entre alfabetos cifrados. [nota 1]
En 1586 Blaise de Vigenère publicó un tipo de cifrado polialfabético llamado cifrado autoclave (porque su clave se basa en el texto original) ante la corte de Enrique III de Francia . [7] Sin embargo, el cifrado ahora conocido como cifrado Vigenère se basa en el descrito originalmente por Giovan Battista Bellaso en su libro de 1553 La cifra del Sig. Giovan Battista Bellaso . [8] Se basó en la tabula recta de Trithemius, pero agregó un "contrasigno" repetitivo (una clave ) para cambiar los alfabetos cifrados en cada letra.
Mientras que Alberti y Trithemius utilizaban un patrón fijo de sustituciones, el esquema de Bellaso implicaba que el patrón de sustituciones podía modificarse fácilmente, simplemente seleccionando una nueva clave. Las claves eran normalmente palabras sueltas o frases cortas, conocidas por ambas partes de antemano, o transmitidas "fuera de banda" junto con el mensaje; por lo tanto, el método de Bellaso requería una fuerte seguridad solo para la clave. Como es relativamente fácil obtener una frase clave corta, como por ejemplo mediante una conversación privada previa, el sistema de Bellaso era considerablemente más seguro. [ cita requerida ]
Sin embargo, cabe señalar que, a diferencia del cifrado moderno de Vigenère, el cifrado de Bellaso no tenía 26 "cambios" diferentes (diferentes cifrados de César) para cada letra, sino que tenía 13 cambios para pares de letras. En el siglo XIX, la invención de este cifrado, diseñado esencialmente por Bellaso, se atribuyó erróneamente a Vigenère. David Kahn, en su libro The Codebreakers , lamentó esta atribución errónea, diciendo que la historia había "ignorado esta importante contribución y, en cambio, había nombrado un cifrado regresivo y elemental para él [Vigenère] aunque no tuvo nada que ver con él". [9]
El cifrado Vigenère se ganó la reputación de ser excepcionalmente fuerte. El conocido autor y matemático Charles Lutwidge Dodgson ( Lewis Carroll ) dijo que el cifrado Vigenère era indescifrable en su artículo de 1868 " The Alphabet Cipher " en una revista infantil. En 1917, Scientific American describió el cifrado Vigenère como "imposible de traducir". [10] [11] Esa reputación no era merecida. Se sabe que Charles Babbage descifró una variante del cifrado en 1854, pero no publicó su trabajo. [12] Kasiski descifró por completo el cifrado y publicó la técnica en el siglo XIX, pero incluso en el siglo XVI, algunos criptoanalistas expertos podían descifrar el cifrado ocasionalmente. [9]
El cifrado Vigenère es lo suficientemente simple como para ser un cifrado de campo si se utiliza junto con discos de cifrado. [13] Los Estados Confederados de América , por ejemplo, utilizaron un disco de cifrado de latón para implementar el cifrado Vigenère durante la Guerra Civil estadounidense . Los mensajes de la Confederación estaban lejos de ser secretos, y la Unión descifraba sus mensajes con regularidad. A lo largo de la guerra, el liderazgo confederado se basó principalmente en tres frases clave: "Manchester Bluff", "Victoria completa" y, cuando la guerra estaba llegando a su fin, "Venga la retribución". [14]
Un cifrado Vigenère con una clave completamente aleatoria (y no reutilizable) que dura tanto como el mensaje se convierte en un bloc de un solo uso , un cifrado teóricamente irrompible. [15] Gilbert Vernam intentó reparar el cifrado roto (creando el cifrado Vernam-Vigenère en 1918), pero la tecnología que utilizó era tan engorrosa que era impracticable. [16]
En un cifrado César , cada letra del alfabeto se desplaza una cierta cantidad de posiciones. Por ejemplo, en un cifrado César con un desplazamiento de 3, a
se convertiría en D
, b
se convertiría en E
, y
se convertiría en B
y así sucesivamente. El cifrado Vigenère tiene varios cifrados César en secuencia con diferentes valores de desplazamiento.
Para cifrar, se puede utilizar una tabla de alfabetos, denominada tabula recta , cuadrado de Vigenère o tabla de Vigenère . En ella, el alfabeto se escribe 26 veces en filas diferentes, y cada alfabeto se desplaza cíclicamente hacia la izquierda en comparación con el alfabeto anterior, lo que corresponde a los 26 posibles cifrados César. En diferentes puntos del proceso de cifrado, el cifrado utiliza un alfabeto diferente de una de las filas. El alfabeto utilizado en cada punto depende de una palabra clave repetida. [ cita requerida ]
Por ejemplo, supongamos que el texto sin formato que se va a cifrar es
attackatdawn
.La persona que envía el mensaje elige una palabra clave y la repite hasta que coincida con la longitud del texto sin formato, por ejemplo, la palabra clave "LIMÓN":
LEMONLEMONLE
Cada fila comienza con una letra clave. El resto de la fila contiene las letras de la A a la Z (en orden de desplazamiento). Aunque se muestran 26 filas de claves, un código utilizará solo tantas claves (alfabetos diferentes) como letras únicas haya en la cadena de claves, en este caso solo 5 claves: {L, E, M, O, N}. Para las letras sucesivas del mensaje, se tomarán letras sucesivas de la cadena de claves y cada letra del mensaje se cifrará utilizando su fila de claves correspondiente. Cuando se selecciona un nuevo carácter del mensaje, se elige la siguiente letra de la clave y se recorre la fila correspondiente a ese carácter para encontrar el encabezado de columna que coincide con el carácter del mensaje. La letra en la intersección de [key-row, msg-col] es la letra cifrada.
Por ejemplo, la primera letra del texto sin formato, a
, se empareja con L
, la primera letra de la clave. Por lo tanto, se utilizan la fila L
y la columna A
del cuadrado de Vigenère, es decir L
. De manera similar, para la segunda letra del texto sin formato, se utiliza la segunda letra de la clave. La letra en la fila E
y la columna T
es X
. El resto del texto sin formato se cifra de manera similar:
El descifrado se realiza yendo a la fila de la tabla correspondiente a la clave, buscando la posición de la letra del texto cifrado en esa fila y luego usando la etiqueta de la columna como texto sin formato. Por ejemplo, en la fila L
(from LEMON
), el texto cifrado L
aparece en la columna A
, por lo que también a
lo está la primera letra del texto sin formato. A continuación, en la fila E
(from ), el texto cifrado se encuentra en la columna . Por lo tanto, es la segunda letra del texto sin formato.LEMON
X
T
t
El cifrado de Vigenère también se puede describir algebraicamente. Si las letras A
– Z
se toman como los números del 0 al 25 ( , , etc.) y se realiza la suma módulo 26, el cifrado de Vigenère con la clave se puede escribir como
y descifrado utilizando la clave como
en el que está el mensaje, es el texto cifrado y es la clave que se obtiene al repetir la palabra clave veces en el que es la longitud de la palabra clave.
Así, utilizando el ejemplo anterior, para cifrar con la letra clave el cálculo daría como resultado .
Por lo tanto, para descifrar con la letra clave , el cálculo daría como resultado .
En general, si es el alfabeto de longitud , y es la longitud de la clave, el cifrado y descifrado de Vigenère se puede escribir:
denota el desplazamiento del i -ésimo carácter del texto sin formato en el alfabeto . Por ejemplo, al tomar los 26 caracteres ingleses como el alfabeto , el desplazamiento de A es 0, el desplazamiento de B es 1, etc. y son similares.
La idea detrás del cifrado Vigenère, como todos los demás cifrados polialfabéticos, es disfrazar la frecuencia de las letras del texto simple para interferir con una aplicación directa del análisis de frecuencia . Por ejemplo, si P
es la letra más frecuente en un texto cifrado cuyo texto simple está en inglés , uno podría sospechar que P
corresponde a e
ya que e
es la letra más utilizada en inglés. Sin embargo, al usar el cifrado Vigenère, e
se pueden cifrar como diferentes letras del texto cifrado en diferentes puntos del mensaje, lo que derrota al simple análisis de frecuencia.
La principal debilidad del cifrado Vigenère es la naturaleza repetitiva de su clave . Si un criptoanalista adivina correctamente la longitud de la clave n , el texto cifrado puede tratarse como n cifrados César intercalados , que pueden descifrarse fácilmente de forma individual. La longitud de la clave puede descubrirse mediante pruebas de fuerza bruta de cada valor posible de n , o mediante el examen de Kasiski y la prueba de Friedman, que pueden ayudar a determinar la longitud de la clave (véase a continuación: § Examen de Kasiski y § Prueba de Friedman).
En 1863, Friedrich Kasiski fue el primero en publicar un ataque general exitoso al cifrado Vigenère. [17] Los ataques anteriores dependían del conocimiento del texto simple o del uso de una palabra reconocible como clave. El método de Kasiski no tenía tales dependencias. Aunque Kasiski fue el primero en publicar un relato del ataque, está claro que otros lo habían notado. En 1854, Charles Babbage se vio incitado a descifrar el cifrado Vigenère cuando John Hall Brock Thwaites presentó un "nuevo" cifrado al Journal of the Society of the Arts . [18] [19] Cuando Babbage demostró que el código de Thwaites era esencialmente otra recreación del código de Vigenère, Thwaites le planteó un desafío: dado un texto original (de La tempestad de Shakespeare : Acto 1, Escena 2) y su versión cifrada, debía encontrar las palabras clave que Thwaites había usado para cifrar el texto original. Babbage pronto encontró las palabras clave: "dos" y "combinado". Babbage luego cifró el mismo pasaje de Shakespeare usando diferentes palabras clave y desafió a Thwaites a encontrar las palabras clave de Babbage. [20] Babbage nunca explicó el método que utilizó. Los estudios de las notas de Babbage revelan que había usado el método publicado más tarde por Kasiski y sugieren que había estado usando el método desde 1846. [21]
El examen de Kasiski , también llamado test de Kasiski, aprovecha el hecho de que las palabras repetidas se cifran, por casualidad, a veces con las mismas letras clave, lo que da lugar a grupos repetidos en el texto cifrado. Por ejemplo, considere el siguiente cifrado con la palabra clave ABCD
:
Clave: ABCDAB CDABCDABCD ABCDAB CDABCDTexto sin formato: crypto es la abreviatura de cryptographyTexto cifrado: CSASTP KVSIQUTGQU CSASTP IUAQJB
Hay una repetición fácilmente detectable en el texto cifrado, por lo que la prueba de Kasiski será efectiva.
La distancia entre las repeticiones de CSASTP
es 16. Si se supone que los segmentos repetidos representan los mismos segmentos de texto simple, eso implica que la clave tiene 16, 8, 4, 2 o 1 caracteres de longitud. (Todos los factores de la distancia son longitudes de clave posibles; una clave de longitud uno es simplemente un cifrado César simple , y su criptoanálisis es mucho más fácil). Dado que las longitudes de clave 2 y 1 son irrealmente cortas, uno necesita probar solo longitudes 16, 8 y 4. Los mensajes más largos hacen que la prueba sea más precisa porque generalmente contienen más segmentos de texto cifrado repetidos. El siguiente texto cifrado tiene dos segmentos que se repiten:
Texto cifrado: VHVS SP QUCE MRVBVBBB VHVS URQGIBDUGRNICJ QUCE RVUAXSSR
La distancia entre las repeticiones de VHVS
es 18. Si se supone que los segmentos repetidos representan los mismos segmentos de texto simple, eso implica que la clave tiene una longitud de 18, 9, 6, 3, 2 o 1 caracteres. La distancia entre las repeticiones de QUCE
es 30 caracteres. Eso significa que la longitud de la clave podría ser de 30, 15, 10, 6, 5, 3, 2 o 1 caracteres. Al tomar la intersección de esos conjuntos, se podría concluir con seguridad que la longitud de clave más probable es 6, ya que 3, 2 y 1 son irrealmente cortos.
La prueba de Friedman (a veces conocida como prueba kappa) fue inventada durante la década de 1920 por William F. Friedman , quien utilizó el índice de coincidencia , que mide la desigualdad de las frecuencias de las letras del código para descifrarlo. Al conocer la probabilidad de que dos letras del idioma de origen elegidas al azar sean iguales (alrededor de 0,067 para el inglés que no distingue entre mayúsculas y minúsculas ) y la probabilidad de una coincidencia para una selección aleatoria uniforme del alfabeto ( 1 ⁄ 26 = 0,0385 para el inglés), la longitud de la clave se puede estimar de la siguiente manera:
de la tasa de coincidencia observada
donde c es el tamaño del alfabeto (26 para inglés), N es la longitud del texto y n 1 a n c son las frecuencias de letras del texto cifrado observadas , como números enteros.
Sin embargo, esto es sólo una aproximación; su precisión aumenta con la longitud del texto. En la práctica, sería necesario probar varias longitudes de clave que se acerquen a la estimación. [22] Un mejor enfoque para los cifrados de clave repetitiva es copiar el texto cifrado en filas de una matriz con tantas columnas como una longitud de clave supuesta y luego calcular el índice de coincidencia promedio con cada columna considerada por separado. Cuando se hace eso para cada longitud de clave posible, el índice de coincidencia promedio más alto corresponde entonces a la longitud de clave más probable. [23] Estas pruebas se pueden complementar con información del examen de Kasiski.
Una vez que se conoce la longitud de la clave, el texto cifrado se puede reescribir en esa cantidad de columnas, y cada columna corresponde a una sola letra de la clave. Cada columna consta de texto sin formato que se ha cifrado con un único cifrado César . La clave César (desplazamiento) es simplemente la letra de la clave Vigenère que se utilizó para esa columna. Mediante métodos similares a los utilizados para descifrar el cifrado César, se pueden descubrir las letras del texto cifrado.
Una mejora del examen de Kasiski, conocida como el método de Kerckhoffs , hace coincidir las frecuencias de las letras de cada columna con las frecuencias del texto sin formato desplazado para descubrir la letra clave (desplazamiento de César) para esa columna. Una vez que se conocen todas las letras de la clave, todo lo que tiene que hacer el criptoanalista es descifrar el texto cifrado y revelar el texto sin formato. [24] El método de Kerckhoffs no es aplicable si se ha alterado la tabla de Vigenère, en lugar de utilizar secuencias alfabéticas normales, pero el examen de Kasiski y las pruebas de coincidencia aún se pueden utilizar para determinar la longitud de la clave.
El cifrado Vigenère, con alfabetos normales, utiliza esencialmente aritmética de módulo, que es conmutativa. Por lo tanto, si se conoce (o se adivina) la longitud de la clave, al restar el texto cifrado de sí mismo, compensado por la longitud de la clave, se obtendrá el texto simple restado de sí mismo, también compensado por la longitud de la clave. Si se conoce o se puede adivinar alguna "palabra probable" en el texto simple, se puede reconocer su auto-sustracción, lo que permite recuperar la clave restando el texto simple conocido del texto cifrado. La eliminación de claves es especialmente útil en el caso de mensajes cortos. Por ejemplo, si se utiliza LION
como clave lo siguiente:
Luego reste el texto cifrado de sí mismo con un desplazamiento de la longitud de la clave de 4 para LION
.
Lo que equivale casi a restar el texto simple de sí mismo con el mismo desplazamiento.
Lo cual se representa algebraicamente como:
En este ejemplo, las palabras brownfox
son conocidas.
Este resultado omaz
corresponde a las letras 9 a 12 del resultado de los ejemplos más grandes anteriores. Se verifica la sección conocida y su ubicación.
Restar brow
de ese rango el texto cifrado.
Esto produce el resultado final, la revelación de la clave LION
.
La variante de clave de ejecución del cifrado Vigenère también se consideró indescifrable en su momento. Para la clave, esta versión utiliza un bloque de texto tan largo como el texto sin formato. Como la clave es tan larga como el mensaje, las pruebas de Friedman y Kasiski ya no funcionan, ya que la clave no se repite.
Si se utilizan varias claves, la longitud de clave efectiva es el mínimo común múltiplo de las longitudes de las claves individuales. Por ejemplo, utilizando las dos claves GO
y CAT
, cuyas longitudes son 2 y 3, se obtiene una longitud de clave efectiva de 6 (el mínimo común múltiplo de 2 y 3). Esto puede entenderse como el punto en el que ambas claves se alinean.
Cifrar dos veces, primero con la clave GO
y luego con la clave, CAT
es lo mismo que cifrar una vez con una clave producida al cifrar una clave con la otra.
Esto se demuestra cifrando attackatdawn
con IOZQGH
, para producir el mismo texto cifrado que en el ejemplo original.
Si las longitudes de las claves son relativamente primos, la longitud efectiva de la clave crece exponencialmente a medida que aumentan las longitudes de las claves individuales. Por ejemplo, mientras que la longitud efectiva de las claves de 10, 12 y 15 caracteres es de solo 60, la de las claves de 8, 11 y 15 caracteres es de 1320. Si esta longitud efectiva de la clave es mayor que el texto cifrado, logra la misma inmunidad a las pruebas de Friedman y Kasiski que la variante de la clave en ejecución.
Si se utiliza una clave verdaderamente aleatoria, que tenga al menos la misma longitud que el mensaje cifrado y que se utilice una sola vez, el cifrado Vigenère es teóricamente indescifrable. Sin embargo, en ese caso, la clave, no el cifrado, es la que proporciona la solidez criptográfica, y a esos sistemas se los denomina colectivamente sistemas de libreta de un solo uso , independientemente de los cifrados que se empleen.
Una variante sencilla es cifrar mediante el método de descifrado Vigenère y descifrar mediante el cifrado Vigenère. Ese método a veces se denomina "variante Beaufort". Es diferente del cifrado Beaufort , creado por Francis Beaufort , que es similar al Vigenère pero utiliza un mecanismo de cifrado y una tabla ligeramente modificados. El cifrado Beaufort es un cifrado recíproco .
A pesar de la aparente fortaleza del cifrado Vigenère, nunca llegó a ser ampliamente utilizado en toda Europa. El cifrado Gronsfeld es una variante atribuida por Gaspar Schott al conde Gronsfeld (Josse Maximilaan van Gronsveld né van Bronckhorst), pero en realidad fue utilizado mucho antes por un embajador del duque de Mantua en los años 1560-1570. Es idéntico al cifrado Vigenère, excepto que utiliza sólo 10 alfabetos de cifrado diferentes, correspondientes a los dígitos del 0 al 9: una clave Gronsfeld de 0123 es la misma que una clave Vigenère de ABCD. El cifrado Gronsfeld se fortalece porque su clave no es una palabra, pero se debilita porque tiene sólo 10 alfabetos de cifrado. Es el cifrado de Gronsfeld el que se utilizó ampliamente en Alemania y Europa, a pesar de sus debilidades.
Vigenère inventó un sistema de cifrado más fuerte, un sistema de cifrado de clave automática . El nombre de "sistema de cifrado Vigenère" se asoció con un sistema de cifrado polialfabético más simple. De hecho, los dos sistemas de cifrado se confundían a menudo y a ambos se los llamaba a veces le chiffre indéchiffrable . Babbage descifró el sistema de cifrado de clave automática, mucho más fuerte, pero a Kasiski se le atribuye generalmente la primera solución publicada para los sistemas de cifrado polialfabético de clave fija.