El sistema de cifrado VIC era un lápiz y papel de cifrado utilizado por la Unión Soviética espía Reino Häyhänen , con nombre en código "VICTOR".
Si se diera al cifrado un nombre técnico moderno, se lo conocería como una "sustitución monoalfabética bipartita a horcajadas superencifrada por doble transposición modificada". [1] Sin embargo, según la clasificación general, es parte de la familia de cifrados nihilistas .
Podría decirse que fue el cifrado manual más complejo jamás visto, cuando se descubrió por primera vez. El análisis inicial realizado por la Agencia Estadounidense de Seguridad Nacional (NSA) en 1953 no concluyó absolutamente que se trataba de un cifrado a mano, pero su ubicación en una moneda ahuecada de 5 centavos implicaba que podía decodificarse con lápiz y papel. El cifrado VIC permaneció intacto hasta que hubo más información disponible sobre su estructura.
Aunque ciertamente no es tan complejo o seguro como los cifrados de flujo o de bloque modernos operados por computadora , en la práctica los mensajes protegidos por ellos resistieron todos los intentos de criptoanálisis por lo menos por parte de la NSA desde su descubrimiento en 1953 hasta la deserción de Häyhänen en 1957.
Un salto revolucionario
El cifrado VIC puede considerarse como el pináculo evolutivo de la familia de cifrado nihilista .
El cifrado VIC tiene varios componentes integrados importantes, incluida la adición de cadena mod 10 , un generador de Fibonacci retrasado (una fórmula recursiva utilizada para generar una secuencia de dígitos pseudoaleatorios ), un tablero de ajedrez a caballo entre las dos y una transposición doble interrumpida .
Hasta el descubrimiento de VIC, generalmente se pensaba que una doble transposición por sí sola era el cifrado más complejo que un agente, en la práctica, podía utilizar como cifrado de campo.
Historia
Durante la Segunda Guerra Mundial , varios anillos de espías soviéticos se comunicaron con el Centro de Moscú utilizando dos cifrados que son esencialmente mejoras evolutivas del cifrado nihilista básico. Max Clausen utilizó una versión muy fuerte en la red de Richard Sorge en Japón y Alexander Foote en la red de espías de Lucy en Suiza . [2] La red Rote Kapelle utilizó una versión ligeramente más débil . [3]
En ambas versiones, el texto sin formato se convirtió primero a dígitos mediante el uso de un tablero de ajedrez a horcajadas en lugar de un cuadrado de Polibio . Esto tiene la ventaja de comprimir ligeramente el texto plano, aumentando así su distancia de unicidad y también permitiendo que los operadores de radio completen sus transmisiones más rápido y se apaguen antes. Apagar antes reduce el riesgo de que los radiogoniómetros enemigos encuentren al operador . Aumentar la distancia de unicidad aumenta la fuerza contra los ataques estadísticos.
Clausen y Foote escribieron su texto llano en inglés y memorizaron las 8 letras más frecuentes del inglés (para llenar la fila superior del tablero de ajedrez) a través de la frase mnemotécnica "a sin to err" (dejando caer la segunda "r"). El tablero de ajedrez estándar inglés tiene 28 espacios de caracteres y en este cifrado los dos adicionales se convirtieron en "punto final" y "cambio de números". Los números se enviaron mediante un cambio de números, seguido de los dígitos de texto sin formato reales en pares repetidos, seguidos de otro cambio. Luego, de manera similar al Nihilista básico, se agregó un aditivo digital, que se llamó "cierre". Sin embargo, cada vez se usó un aditivo diferente, por lo que finalmente se tuvo que insertar un "grupo indicador" oculto para indicar qué aditivo se usó.
A diferencia del Nihilista básico, el aditivo se agregó mediante una adición no portadora (módulo de adición de dígitos 10), lo que produce una salida más uniforme que no filtra tanta información. Más importante aún, el aditivo no se generó a través de una palabra clave, sino seleccionando líneas al azar de almanaques de estadísticas industriales. Dichos libros se consideraron lo suficientemente aburridos como para no despertar sospechas si se registraba a un agente (particularmente porque las historias de portada de los agentes eran como hombres de negocios), y tenían una densidad de entropía tan alta como para proporcionar un aditivo muy seguro. Por supuesto, las cifras de un libro de este tipo no están distribuidas de manera uniforme (hay un exceso de "0" y "1" (ver la ley de Benford ), y es probable que los números secuenciales sean algo similares), pero sin embargo tienen una entropía mucho mayor. densidad que las frases de contraseña y similares; en cualquier caso, en la práctica parece que nunca se han criptoanalizado con éxito.
La versión más débil generó el aditivo a partir del texto de una novela o libro similar (al menos un miembro de Rote Kapelle realmente usó The Good Soldier Schweik ). Este texto se convirtió en un aditivo digital usando una técnica similar a un tablero de ajedrez a horcajadas.
El último desarrollo en esta línea fue el cifrado VIC, utilizado en la década de 1950 por Reino Häyhänen . En ese momento, la mayoría de los agentes soviéticos usaban almohadillas de una sola vez . Sin embargo, a pesar de la perfección teórico de la almohadilla de una sola vez, en la práctica se rompen , mientras VIC no lo era. Sin embargo, el cifrado de una sola vez solo se podía romper cuando las páginas de cifrado se reutilizaban, debido a problemas logísticos, y por lo tanto ya no era realmente de una sola vez. [4]
Descripción general de la mecánica
La clave secreta para el cifrado es la siguiente:
- Una frase corta (por ejemplo, la primera línea de una canción)
- Una fecha (en formato de 6 dígitos)
- Un número personal (exclusivo del agente, un número de 1 o 2 dígitos)
La encriptación también fue ayudada por el adversario que no conocía un grupo de claves de 5 dígitos que era único para cada mensaje. El grupo de claves no era estrictamente un "secreto" (ya que estaba incrustado en claro en el texto cifrado), pero estaba en un lugar del texto cifrado que no era conocido por un adversario.
En términos generales, el cifrado funcionó de la siguiente manera:
- Utilice los secretos anteriores (frase, fecha, grupo de claves y número personal) cree un bloque de 50 dígitos de números pseudoaleatorios
- Utilice este bloque para crear las claves de mensaje para:
- Cifre el mensaje de texto sin formato a través del tablero de ajedrez a horcajadas
- Aplicar dos transposiciones al texto cifrado resultante (intermedio) a través de dos columnas
- Una transposición en columnas 'estándar'
- Una transposición columnar diagonal
- Inserción del grupo de claves en el texto cifrado, según lo determinado por el número personal
Mecánica detallada
Nota: esta sección rastrea los cálculos haciendo referencia a [Line-X] o similar. Esto está en consonancia con la notación indicada en la descripción del archivo de la CIA [5] .
Derivación de bloques pseudoaleatorios
- [Línea-A] : genera un grupo de claves de 5 dígitos aleatorio
- [Línea-B] : escribe los primeros 5 dígitos de la fecha secreta
- [Línea-C] : Reste [Línea-B] de [Línea-A] mediante aritmética modular (dígito por dígito, sin 'pedir prestado' ninguna decena de una columna vecina)
- [Línea-D] : escribe las primeras 20 letras de la Frase secreta
- [Línea-E.1 y 2] : secuencia (ver más abajo) el primer y segundo diez caracteres por separado (para obtener [Línea-E.1] y [Línea-E.2] respectivamente)
- [Línea-F.1] : escriba los 5 dígitos de [Línea-C], luego aplique la suma en cadena (ver más abajo) aplicada para crear cinco dígitos más
- [Línea-F.2] : La secuencia de dígitos '1234567890' se escribe (debajo de [Línea-E.2]) como ayuda para la codificación al crear [Línea-H]
- [Línea-G] : Adición de [Línea-E.1] a [Línea-F.1] - esto es dígito por dígito por aritmética mod-10, es decir, no "trasladar" decenas a la siguiente columna
- [Línea-H] : codificación (ver más abajo) de los dígitos en [Línea-G] debajo de [Línea-E.2] como clave
- [Línea-I]: No se utilizó [Línea-I], presumiblemente para evitar confusiones (ya que "I" puede malinterpretarse como "1" o "J")
- [Line-J] : La secuenciación de [Line-H]
- [Líneas-K, L, M, N, P]: estas son cinco líneas de 10 dígitos creadas por la suma en cadena de [Línea-H]. Los dos últimos dígitos no iguales se agregan al número personal del agente para determinar la longitud de la clave de las 2 transposiciones. (Las líneas K a P son de hecho un bloque pseudoaleatorio controlado por clave que se utiliza para la siguiente etapa de cifrado)
- [Line-O]: No se usa [Line-O], presumiblemente para evitar confusiones (ya que la 'O' puede malinterpretarse como un cero o una 'Q')
Derivación de clave de mensaje
- [Line-Q] : Los primeros dígitos 'a' extraídos de [Lines-K, L, M, N, P] cuando se transpone a través de [Line-J]. (Donde 'a' es el primer valor resultante de la suma de los últimos dígitos no iguales en [Línea-P] al Número personal). Estos se utilizan para teclear la transposición columnar.
- [Línea-R] : Los siguientes dígitos 'b' extraídos (después de que se hayan extraído los dígitos 'a') de [Líneas-K, L, M, N, P] cuando se transponen a través de [Línea-J]. (Donde 'b' es el segundo valor resultante de la suma de los últimos dígitos no iguales en [Línea-P] al Número personal). Se utilizan para introducir la transposición diagonal.
- [Line-S] : La secuenciación de [Line-P], esto se usa como la clave para el tablero de ajedrez a horcajadas
Ejemplo de generación de claves
Número personal: 6Fecha: 13 de septiembre de 1959 // Aterrizaje lunar - 13 de septiembre de 1959 ('139195' - truncado a 6 dígitos) Frase: 'Era la noche antes de Navidad' // de 'Una visita de San Nicolás' - poemaGrupo de claves: 72401 // generado aleatoriamente[Línea-A]: 72401 // Grupo de claves[Línea-B]: 13919 // Fecha: truncada a 5 dígitos [Línea-C]: 69592 // reste [Línea-B] de [Línea-A][Línea-D]: TWASTHENIG HTBEFORECH // Frase - truncada a 20 caracteres[Line-E]: 8017942653 6013589427 // vía secuenciación[Línea-F]: 6959254417 1234567890 // desde [Línea-C] y adición de cadena, luego '1234567890'[Line-G]: 4966196060 // agregue [Line-E.1] a [Line-F.1][Line-H]: 3288628787 // codifica [Line-G] con [Line-E.2], [Line-F.2] ayuda [Line-J]: 3178429506 // La secuenciación de [Line-H][Line-K]: 5064805552 // BLOCK: suma en cadena de [Line-H] para 50 dígitos[Línea-L]: 5602850077[Línea-M]: 1620350748[Línea-N]: 7823857125[Línea-P]: 5051328370Los dos últimos dígitos no iguales son '7' y '0', agregados al Número personal (6) significa que las teclas de permutación tienen 13 y 6 dígitos de longitud. [Line-Q]: 0668005552551 // primeros 13 dígitos del bloque[Line-R]: 758838 // próximos 6 dígitos del bloque[Line-S]: 5961328470 // Secuenciación de [Line-P]
Cifrado de mensajes
Tablero de ajedrez a horcajadas
Una vez que se ha generado la clave, la primera etapa para realmente cifrar el Mensaje es convertirlo en una serie de dígitos, esto se hace a través de un tablero de ajedrez de Straddling . La clave (fila de encabezado) para el tablero de ajedrez se basa en [Línea-S]. Luego, una serie previamente acordada de letras comunes utilizadas en la segunda fila. El siguiente ejemplo usa el mnemónico inglés 'AT ONE SIR', sin embargo, el mnemónico cirílico usado por Hayhanen era 'snegopad', la palabra rusa para nevadas.
Las celdas restantes se completan, y el resto del alfabeto / símbolos se completa en orden.
5 | 9 | 6 | 1 | 3 | 2 | 8 | 4 | 7 | 0 | |
---|---|---|---|---|---|---|---|---|---|---|
A | T | O | norte | mi | S | I | R | |||
6 | B | C | D | F | GRAMO | H | J | K | L | METRO |
8 | PAG | Q | U | V | W | X | Y | Z | . | / |
A continuación, se muestra un ejemplo de codificación:
MENSAJE: 'Ataque al amanecer. Por amanecer me refiero a las 05:00. No a las 09:15, como hiciste la última vez. 59956 96459 66583 38765 88665 83376 02538 00005 55000 00080 87319 80000 99911 15558 06776 4288186667 66675 49976 0287-
Transposiciones: transposición columnar
El mensaje se transpone a través de la transposición en columnas estándar tecleada por [Line-Q] arriba. (Nota: si la longitud codificada del mensaje no es múltiplo de 5 en esta etapa, se agrega un dígito adicional)
A continuación, el mensaje se transpone a través de la transposición diagonal tecleada por [Line-R] arriba.
Inserción de grupo de claves
El grupo de claves (sin cifrar) se inserta en los grupos de texto cifrado 'P' desde el final; donde 'P' es el sexto dígito no utilizado de la fecha.
Suma / resta modular
La suma o resta modular, también conocida como 'falsa suma / resta', en este contexto (y muchos cifrados de lápiz y papel) es suma y resta dígito por dígito sin 'llevar' o 'pedir prestado'. Por ejemplo:
- 1234 + 6789 = 7913
- 1234 - 6789 = 5555
Secuenciación
La secuenciación en este contexto es ordenar los elementos de una entrada del 1 al 10 (donde '0' representa 10). Esto ocurre con las letras (donde se usa el orden alfabético) o con los números (donde se usa el valor numérico). En el caso de valores iguales, primero se secuencia el valor más a la izquierda. Por ejemplo:
- LETRAS: La palabra 'Pulpo' está secuenciada como '2163475' - (es decir, C = 1, primera 'O' = 2, segunda 'O' = 3, ...)
- NÚMEROS: El número '90210' se secuencia como '34215' - (por orden numérico. Cero se valora en '10' en términos de orden)
Adición de cadena
La adición en cadena es similar a un registro de desplazamiento de retroalimentación lineal , mediante el cual se genera un flujo de número como salida (y se retroalimenta como entrada) a un número semilla. Dentro de la cadena de cifrado VIC, la suma funciona (1) tomando el número original (semilla), (2) agregando falsamente los primeros dos dígitos, (3) colocando este nuevo número al final de la cadena. Esto continúa, sin embargo, los dígitos que se agregan se incrementan en uno. Por ejemplo, si la semilla era '90210', las primeras 5 iteraciones se muestran a continuación:
90210 // Valor semilla inicial90210 9 // 9 = 9 + 0 (primeros dos dígitos)90210 9 2 // 2 = 0 + 2 (dos siguientes ...)90210 92 3 // 3 = 2 + 190210923 1 // 1 = 1 + 090210 9231 9 // 9 = 0 + 9; observe cómo el primer '9' generado se retroalimenta en
Codificación de dígitos
El paso de codificación reemplaza cada dígito en un número (es decir, [Línea-G] en el cifrado) con uno de una secuencia de teclas (es decir, [Línea-E.2]) que representa su posición en el orden 1-10. Debe verse que al escribir la serie '1234567890' (mostrada como [Línea-F.2]) debajo de [Línea.E.2], cada valor de 0-9 tiene otro encima. Simplemente reemplace cada dígito del número a codificar con el que está arriba en la secuencia de teclas.
Clave | (Línea E.2) | 6 | 0 | 1 | 3 | 5 | 8 | 9 | 4 | 2 | 7 |
---|---|---|---|---|---|---|---|---|---|---|---|
Ayudante | (Línea F.2) | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 |
Por ejemplo, el número '90210' tendría las siguientes codificaciones; .
Entonces la salida sería: '27067'.
Descifrado
Para descifrar el cifrado VIC es el siguiente:
- Extraiga el grupo de claves : conociendo el número personal del agente, elimine los 5 dígitos del grupo de claves del texto cifrado.
- Genere las claves de mensaje : utilizando el conocimiento de los diversos secretos (frase, fecha, número personal, grupo de claves), genere las claves de la misma manera que el proceso de cifrado
- Descifre el texto cifrado : utilizando el conocimiento de las claves de mensaje para las transposiciones y el tablero de ajedrez a horcajadas, descifrelas
Criptoanálisis
El cifrado es uno de los cifrados de papel y lápiz más fuertes que se utilizan realmente en el mundo real, y la NSA no lo rompió (en términos de determinar el algoritmo subyacente) en ese momento. [1] Sin embargo, con el advenimiento de la informática moderna y la divulgación pública del algoritmo, esto no se consideraría un cifrado sólido. Se puede observar que la mayor parte de la entropía en la clave secreta converge a un número de 10 dígitos [Línea-H]. Este número de 10 dígitos es aproximadamente 34 bits de entropía, combinado con el último dígito de la fecha (necesario para identificar dónde está el grupo de claves) generaría aproximadamente 38 bits de entropía en términos de fuerza de la clave del mensaje. 38 bits están sujetos a un ataque de fuerza bruta en menos de un día en la informática moderna.
Ver también
- Temas de criptografía
Referencias
- ^ a b David Kahn. "Número uno de Moscú" . 1993.
- ^ Kahn, David (1996). Los Codebreakers . Scribner. pag. 650.
- ^ Kahn, David (1996). Los Codebreakers . Scribner. pag. 652.
- ^ https://web.archive.org/web/20160304100650/https://www.nsa.gov/public_info/_files/crypto_almanac_50th/VENONA_An_Overview.pdf
- ^ "Número uno de Moscú - Agencia Central de Inteligencia" . www.cia.gov . Consultado el 12 de enero de 2020 .
enlaces externos
- Página del FBI sobre el estuche de níquel hueco con imágenes del níquel hueco que contenía el mensaje cifrado de VIC
- "El cifrado en un níquel hueco"
- El cifrado VIC
- A caballo entre tableros de ajedrez Varias versiones diferentes de tableros de ajedrez en máquinas de cifrado y criptología
- SECOM, una variante de VIC con tablero de ajedrez extendido
- "El ascenso de los cifrados de campo: cifrados de tablero de ajedrez a ambos lados" por Greg Goebel 2009