Articulo de referencia

cifrado VIC

Diagrama de flujo del cifrado VIC El cifrado VIC era un cifrado de lápiz y papel utilizado por el espía soviético Reino Häyhänen , cuyo nombre en clave era "VICTOR". Si se le di...

Diagrama de flujo del cifrado VIC

El cifrado VIC era un cifrado de lápiz y papel utilizado por el espía soviético Reino Häyhänen , cuyo nombre en clave era "VICTOR".

Si se le diera al cifrado un nombre técnico moderno, se le conocería como una "sustitución monoalfabética bipartita supercifrada por transposición doble modificada". [ 1 ] Sin embargo, según la clasificación general, forma parte de la familia de cifrados nihilistas.

Podría decirse que fue el cifrado manual más complejo jamás visto cuando se descubrió. El análisis inicial realizado por la Agencia de Seguridad Nacional (NSA) estadounidense en 1953 no concluyó definitivamente que se tratara de un cifrado manual, pero su ubicación en una moneda de 5 centavos ahuecada (conocida posteriormente como la Caja Hueca de Níquel ) sugería que podía descifrarse con lápiz y papel. El cifrado VIC permaneció sin descifrar hasta que se dispuso de más información sobre su estructura.

Si bien no es tan complejo ni seguro como los cifrados de flujo o de bloques modernos operados por computadora , en la práctica, los mensajes protegidos por él resistieron todos los intentos de criptoanálisis, al 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 la cúspide evolutiva de la familia de cifrados nihilistas .

El cifrado VIC tiene varios componentes integrados importantes, incluyendo la suma de cadenas módulo 10 , un generador de Fibonacci retardado (una fórmula recursiva utilizada para generar una secuencia de dígitos pseudoaleatorios ), un tablero de ajedrez a caballo y una transposición doble interrumpida .

Hasta el descubrimiento de VIC, se creía generalmente que la 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 , varias redes de espionaje soviéticas se comunicaron con el Centro de Moscú utilizando dos cifrados que son esencialmente mejoras evolutivas del cifrado nihilista básico. Una versión muy robusta fue utilizada por Max Christiansen-Clausen en la red de Richard Sorge en Japón , y por Alexander Foote en la red de espionaje Lucy en Suiza . [ 2 ] Una versión ligeramente más débil fue utilizada por la red Rote Kapelle . [ 3 ]

En ambas versiones, el texto plano se convirtió primero a dígitos mediante un tablero de ajedrez superpuesto en lugar de un cuadrado de Polybius . Esto tiene la ventaja de comprimir ligeramente el texto plano, aumentando así su distancia de unicidad y permitiendo a los operadores de radio completar sus transmisiones más rápidamente y desconectarse antes. Desconectarse antes reduce el riesgo de que el operador sea detectado por radiotelegrafistas enemigos . Aumentar la distancia de unicidad incrementa la resistencia contra ataques estadísticos.

Clausen y Foote escribieron su texto plano en inglés y memorizaron las 8 letras más frecuentes del inglés (para completar la fila superior del tablero de ajedrez) mediante la frase mnemotécnica "a sin to err" (omitiendo la segunda "r"). El tablero de ajedrez estándar inglés tiene 28 caracteres, y en este cifrado, los dos adicionales se convirtieron en "punto final" y "desplazamiento numérico". Los números se enviaban mediante un desplazamiento numérico, seguidos de los dígitos del texto plano en pares repetidos, seguidos de otro desplazamiento. Luego, de forma similar al cifrado nihilista básico, se añadía un aditivo digital, denominado "cierre". Sin embargo, se utilizaba un aditivo diferente en cada ocasión, por lo que finalmente se tuvo que insertar un "grupo indicador" oculto para indicar qué aditivo se había utilizado.

A diferencia del método nihilista básico, el aditivo se sumó mediante suma sin acarreo (suma dígito a dígito módulo 10), lo que produjo un resultado más uniforme que no filtró tanta información. Más importante aún, el aditivo se generó no a través de una palabra clave, sino seleccionando líneas al azar de almanaques de estadísticas industriales. Se consideró que dichos libros eran lo suficientemente aburridos como para no despertar sospechas si se registraba a un agente (especialmente porque sus historias de tapadera eran las de empresarios), y que tenían una densidad de entropía tan alta que proporcionaban un aditivo muy seguro. Por supuesto, las cifras de dichos libros no están distribuidas uniformemente (hay un exceso de "0" y "1" (véase la Ley de Benford ), y es probable que los números secuenciales sean algo similares), pero no obstante, tienen una densidad de entropía mucho mayor 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 utilizó El buen soldado Schweik ). Este texto se convirtió en un aditivo digital mediante una técnica similar a un tablero de ajedrez superpuesto.

El desarrollo más importante en este sentido fue el cifrado VIC, utilizado en la década de 1950 por Reino Häyhänen . Para entonces, la mayoría de los agentes soviéticos ya utilizaban libretas de un solo uso . Sin embargo, a pesar de la perfección teórica de la libreta de un solo uso, en la práctica a veces se rompía debido a la reutilización de páginas de cifrado de un solo uso, [ 4 ] mientras que con VIC no ocurría.

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, de al menos 20 letras).
  • Una fecha (escrita numéricamente, sin ceros iniciales)
  • Un número personal (único para cada agente, un número de 1 o 2 dígitos).

El cifrado también se vio facilitado por el hecho de que el adversario desconocía un grupo de claves de 5 dígitos , único para cada mensaje. Este grupo de claves no era estrictamente un secreto (ya que estaba incrustado en texto plano en el texto cifrado), pero se encontraba en una ubicación del texto cifrado desconocida para el adversario.

El cifrado funcionaba, a grandes rasgos, de la siguiente manera:

  1. Utilice los secretos anteriores (frase, fecha, grupo de claves y número personal) para crear un bloque de 50 dígitos de números pseudoaleatorios.
  2. Utilice este bloque para crear las claves de mensaje para:
    1. Un tablero de ajedrez a horcajadas
    2. Dos transposiciones columnares
  3. Encripta el mensaje de texto plano mediante el tablero de ajedrez superpuesto.
  4. Aplicar dos transposiciones al texto cifrado resultante (intermedio) a través de dos columnas
    1. Una transposición columnar 'estándar'
    2. Una transposición columnar diagonal
  5. Inserción del grupo de claves en el texto cifrado, según lo determine el sexto dígito de la fecha.

Mecánica detallada

Nota: esta sección realiza el seguimiento de los cálculos haciendo referencia a [Línea-X] o similar. Esto es para alinearse con la notación indicada en la descripción del archivo de la CIA. [ 1 ]

Derivación de bloques pseudoaleatorios

  • [Línea A] : Generar un grupo de claves aleatorio de 5 dígitos
  • [Línea B] : Escriba los primeros 5 dígitos de la fecha secreta.
  • [Línea-C] : Restar [Línea-B] de [Línea-A] mediante aritmética modular (dígito por dígito, sin "tomar prestadas" decenas de una columna adyacente).
  • [Línea-D] : Escribe las primeras 20 letras de la frase secreta
  • [Línea-E.1&2] : Secuenciar (ver abajo) los diez primeros y los diez segundos 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) 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] : Suma de [Línea-E.1] a [Línea-F.1] - esto es dígito por dígito mediante aritmética módulo 10, es decir, no se "llevan" las decenas a la siguiente columna.
  • [Línea-H] : Codificación (ver más abajo) de los dígitos en [Línea-G] bajo [Línea-E.2] como clave
  • [Línea-I]: No se utiliza [Línea-I], presumiblemente para evitar confusiones (ya que la 'I' puede interpretarse erróneamente como un '1' o una 'J').
  • [Línea-J] : La secuenciación de [Línea-H]
  • [Líneas K, L, M, N, P]: Se trata de cinco líneas de 10 dígitos creadas mediante la suma en cadena de [Línea H]. Los dos últimos dígitos no iguales se suman al número personal del agente para determinar la longitud de la clave de las dos transposiciones. (Las líneas K a P constituyen, en efecto, un bloque pseudoaleatorio controlado por clave que se utiliza para la siguiente etapa del cifrado).
  • [Línea-O]: No se utiliza [Línea-O], presumiblemente para evitar confusiones (ya que la 'O' puede interpretarse erróneamente como un cero o una 'Q').

Derivación de clave de mensaje

  • [Línea-Q] : Los primeros 'a' dígitos (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) extraídos de [Líneas-K, L, M, N, P] al transponerlos mediante [Línea-J]. Esta transposición se realiza escribiendo las columnas de números debajo de los dígitos en [Línea-J], comenzando con la columna de números debajo del dígito '1', luego la columna debajo del dígito '2', y así sucesivamente en orden numérico, hasta que se hayan escrito 'a' dígitos (en el ejemplo siguiente, el valor de 'a' sería 13, por lo que esta transposición continuaría durante 13 dígitos). Estos dígitos se utilizan como clave para la Transposición Columnar.
  • [Línea-R] : Los siguientes 'b' dígitos (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) extraídos (después de que se hayan extraído los dígitos 'a') de [Líneas-K, L, M, N, P] al transponerse a través de [Línea-J]. Esta transposición se realiza de la misma manera que [Línea-Q], pero continúa desde la transposición anterior, lo que significa que puede comenzar a mitad de columna debajo del dígito de [Línea-J] donde terminó la última transposición (en el ejemplo a continuación, [Línea-R] comienza a mitad de la columna debajo del dígito '3' en [Línea-J]). Estos dígitos resultantes se utilizan para la clave de la Transposición Diagonal.
  • [Línea-S] : La secuencia de [Línea-P], que se utiliza como clave para el tablero de ajedrez a caballo.

Ejemplo de generación de claves

Número personal: 6 Fecha: 13 de septiembre de 1959 // Aterrizaje en la Luna - 13 de septiembre de 1959 ('139195' - truncado a 6 dígitos) Frase: 'Era la noche antes de Navidad' // del poema 'Una visita de San Nicolás' Grupo 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 // restar [Línea-B] de [Línea-A] [Línea-D]: TWASTHENIG HTBEFORECH // Frase - truncada a 20 caracteres [Línea-E]: 8017942653 6013589427 // vía secuenciación [Línea-F]: 6959254417 1234567890 // de [Línea-C] y adición en cadena, luego '1234567890' [Línea-G]: 4966196060 // agregar [Línea-E.1] a [Línea-F.1] [Línea-H]: 3288628787 // codificar [Línea-G] con [Línea-E.2], [Línea-F.2] ayuda [Línea-J]: 3178429506 // La secuenciación de [Línea-H] [Línea-K]: 5064805552 // BLOQUE: Suma en cadena de [Línea-H] durante 50 dígitos [Línea-L]: 5602850077 [Línea-M]: 1620350748 [Línea-N]: 7823857125 [Línea-P]: 5051328370 Los dos últimos dígitos no iguales son '7' y '0', que al sumarse al Número Personal (6) significa que las claves de permutación tienen 13 y 6 dígitos de longitud. [Línea-Q]: 0668005552551 // primeros 13 dígitos del bloque [Línea-R]: 758838 // siguientes 6 dígitos del bloque [Línea-S]: 5961328470 // Secuenciación de [Línea-P] 

Cifrado de mensajes

Tablero de ajedrez a horcajadas

Como se indica en "Kahn on Codes" [ 5 ] , antes de que comience el cifrado del texto plano, este se divide por la mitad: se utiliza una posición arbitraria del texto plano para cortar el mensaje en dos, y ambas partes se invierten para evitar que el adversario utilice formatos de mensaje conocidos o frases comunes que aparecen siempre al principio, como un número de mensaje o entradas De/Para. Un marcador insertado entre las dos partes invertidas permite al receptor identificar el lugar correcto para revertir el mensaje decodificado posteriormente.

Una vez generada la clave, la primera etapa del cifrado del mensaje consiste en convertirlo en una serie de dígitos mediante un tablero de ajedrez . La clave (fila de encabezado) del tablero se basa en [Línea-S]. A continuación, se utiliza una serie de letras comunes previamente acordadas en la segunda fila. El ejemplo que se muestra a continuación utiliza la mnemotecnia inglesa «AT ONE SIR»; sin embargo, la mnemotecnia cirílica utilizada por Hayhanen fue «snegopad», palabra rusa que significa nevada.

Las celdas restantes se rellenan, con el resto del alfabeto rellenado en orden, seguido de .(punto) y /(símbolo de cambio de número, que indica que los siguientes símbolos hasta el siguiente cambio de número son números; véase el ejemplo a continuación).

A continuación se muestra un ejemplo de codificación, donde los números  :

Mensaje: 'Ataque al amanecer. Con amanecer me refiero a las 05:00. No a las 09:15 como hiciste la última vez.' Mensaje dividido: 'significa 0500. No 0915 como hiciste la última vez./Ataque al amanecer. Al amanecer yo'
Codificación de símbolos individuales: MEDIA 0 5 0 0 . NO AQUÍ 60 2 5 3 80 000 555 000 000 80 87 3 1 9 (...) 83 3 7
Código final: 60253 80000 55500 00008 08731 98000 09991 11555 80677 64288 18666 76667 54997 60287 59956 96459 66583 38765 88665 8337-

Transposiciones: transposición columnar

El mensaje se transpone mediante transposición columnar estándar, utilizando la clave [Line-Q] mencionada anteriormente. (Nota: si la longitud del mensaje codificado no es múltiplo de 5 en esta etapa, se añaden dígitos adicionales hasta que la longitud sea múltiplo de 5).

El mensaje se transpone mediante la transposición diagonal indicada por [Line-R] arriba. El término "diagonal" en este caso se refiere a que se emplearon zonas de interrupción triangulares para que la transposición fuera irregular.

Inserción de grupo clave

El grupo de claves (sin cifrar) se inserta en los grupos 'P' del texto cifrado 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 "suma/resta falsa", en este contexto (y en muchos cifrados de lápiz y papel) es una suma y resta dígito por dígito sin "acarrear" ni "tomar prestado". Por ejemplo:

  • 1234 + 6789 = 7913
  • 1234 - 6789 = 5555
Secuenciación

En este contexto, la secuenciación consiste en ordenar los elementos de una entrada del 1 al 10 (donde '0' representa el 10). Esto se aplica tanto a letras (en cuyo caso se utiliza el orden alfabético) como a números (en cuyo caso se utiliza el valor numérico). En caso de valores iguales, se ordena primero el valor situado más a la izquierda. Por ejemplo:

  • LETRAS: La palabra 'Octopus' se secuencia como '2163475' - (es decir, C=1, primera 'O'=2, segunda 'O'=3, ...)
  • NÚMEROS: El número '90210' se secuencia como '34215' (en orden numérico. El cero tiene un valor de '10' en términos de ordenación).
Adición en cadena

La suma en cadena es similar a un registro de desplazamiento con retroalimentación lineal , donde se genera una secuencia de números como salida (y se realimenta como entrada) a un número semilla. En el cifrado VIC, la suma en cadena funciona de la siguiente manera: (1) se toma el número original (semilla), (2) se suman falsamente los dos primeros dígitos y (3) se coloca este nuevo número al final de la cadena. Este proceso continúa, pero los dígitos que se suman se incrementan en uno. Por ejemplo, si la semilla fuera '90210', las primeras 5 iteraciones se muestran a continuación:

90210 // Valor inicial de la semilla      90210 9 // 9 = 9+0 (primeros dos dígitos)     90210 9 2 // 2 = 0+2 (los dos siguientes...)     90210 92 3 // 3 = 2+1    90210 923 1 // 1 = 1+0    90210 9231 9 // 9 = 0+9; observe cómo el primer '9' generado se retroalimenta  
Codificación de dígitos

El paso de codificación reemplaza cada dígito de un número (es decir, [Línea-G] en el cifrado) con uno de una secuencia clave (es decir, [Línea-E.2]) que representa su posición en el orden del 1 al 10. Cabe destacar que al escribir la serie '1234567890' (mostrada como [Línea-F.2]) debajo de [Línea.E.2], cada valor del 0 al 9 tiene otro encima. Simplemente se reemplaza cada dígito del número a codificar con el que se encuentra encima en la secuencia clave.

Por ejemplo, el número '90210' tendría las siguientes codificaciones:(92),(07),(20),(16),(07){\displaystyle ({\ce {9->2}}),\,({\ce {0->7}}),\,({\ce {2->0}}),\,({\ce {1->6}}),\,({\ce {0->7}})}.

Entonces el resultado sería: '27067'.

Descifrado

El descifrado del cifrado VIC es el siguiente:

  • Extraer el grupo de claves : Conociendo el sexto dígito de la fecha secreta, elimine los 5 dígitos del grupo de claves del texto cifrado.
  • Generar las claves del mensaje : utilizando el conocimiento de los distintos secretos (frase, fecha, número personal, grupo de claves), genere las claves de la misma manera que en el proceso de cifrado.
  • Descifra el texto cifrado : utilizando el conocimiento de las claves del mensaje para las transposiciones y el método de tablero de ajedrez, descifralas.

Criptoanálisis

El cifrado es uno de los más fuertes que se utilizan en la práctica, y la NSA no logró descifrarlo (en cuanto a la determinación del algoritmo subyacente) en su momento. [ 1 ] Sin embargo, con el avance de la informática moderna y la divulgación pública del algoritmo, este ya no se consideraría un cifrado fuerte. Se puede observar que la mayor parte de la entropía de la clave secreta converge a un número de 10 dígitos [Línea-H]. Este número de 10 dígitos representa aproximadamente 34 bits de entropía, que, combinados con el último dígito de la fecha (necesario para identificar dónde se encuentra el Grupo de Claves), darían como resultado unos 38 bits de entropía en términos de la fuerza de la Clave del Mensaje. 38 bits son vulnerables a un ataque de fuerza bruta en menos de un día en ordenadores modernos.

Véase también

Referencias

  1. 1 2 3 David Kahn. "Número uno de Moscú" Archivado el 19 de marzo de 2023 en Wayback Machine . 1993.
  2. Kahn, David (1996). Los descifradores de códigos . Scribner. pág.  650.
  3. Kahn, David (1996). Los descifradores de códigos . Scribner. pág. 652. 
  4. "VENONA: Una descripción general" (PDF) . www.nsa.gov . Archivado del original (PDF) el 4 de marzo de 2016. Consultado el 12 de enero de 2022 .
  5. Kahn, David (1984). Kahn sobre los códigos . Macmillan. pág. 151. 
  • Página del FBI sobre el caso de la moneda de níquel hueca con imágenes de la moneda de níquel hueca que contenía el mensaje cifrado VIC.
  • "El cifrado en una moneda de níquel hueca" Archivado el 17/12/2007 en Wayback Machine
  • El cifrado VIC
  • Tableros de ajedrez entrelazados: Diversas versiones de tableros de ajedrez en máquinas de cifrado y criptología.
  • SECOM, una variante de VIC con tablero de ajedrez extendido.
  • "El auge de los cifrados de campo: a caballo entre los cifrados de tablero de ajedrez" por Greg Goebel, 2009
  • "Kahn sobre los códigos", pág. 151, por David Kahn, 1984
Obtenido de " https://en.wikipedia.org/w/index.php?title=VIC_cipher&oldid=1350985598 "