stringtranslate.com

Cifrado de clave en ejecución

En criptografía clásica , el cifrado de clave continua es un tipo de cifrado de sustitución polialfabética en el que se utiliza un texto, normalmente de un libro, para proporcionar una secuencia de claves muy larga . La primera descripción de un cifrado de este tipo la dio en 1892 el matemático francés Arthur Joseph Hermann (más conocido por fundar Éditions Hermann ). Por lo general, el libro que se utilizaría se acordaría de antemano, mientras que el pasaje que se utilizaría se elegiría al azar para cada mensaje y se indicaría secretamente en algún lugar del mensaje.

Ejemplo

El texto clave utilizado es El lenguaje de programación C (edición de 1978) y la tabla recta es el cuadro. El texto simple es "Huye de inmediato".

Página 63, se selecciona la línea 1 como clave de ejecución:

Los errores pueden ocurrir en varios lugares. Una etiqueta tiene...

La clave en ejecución se escribe entonces debajo del texto sin formato:

El mensaje se envía entonces como "JCVSR LQNPS". Sin embargo, a diferencia de un cifrado Vigenère , si el mensaje se extiende, la clave no se repite; el texto de la clave en sí (el texto del lenguaje de programación C ) se utiliza como clave y se puede extender hasta cualquier longitud arbitraria. Si el mensaje se extiende, como "Huyan de inmediato. Nos han descubierto", entonces la clave en ejecución continúa como antes:

Para determinar dónde se encuentra la clave de ejecución, se añade posteriormente un bloque falso de cinco caracteres de texto cifrado, tres de los cuales indican el número de página y dos el número de línea, utilizando A=0, B=1, etc. para codificar los dígitos. Este bloque se denomina bloque indicador . El bloque indicador se insertará como el segundo último de cada mensaje. (Son posibles muchos otros esquemas para ocultar los bloques indicadores). Por lo tanto, la página 63, línea 1 se codifica como "AGDAB" (06301).

Esto produce un mensaje final de "JCVSR LQNPS YGUIM QAWXS AGDAB MECTO".

Variantes

Las variantes modernas del cifrado de clave de ejecución a menudo reemplazan la tradicional tabula recta con cifrados exclusivos a nivel de bits o , operan sobre bytes completos en lugar de letras alfabéticas y derivan sus claves de ejecución de archivos grandes. Aparte de la posible mayor densidad de entropía de los archivos y la facilidad de automatización, hay poca diferencia práctica entre estas variantes y los métodos tradicionales.

Permutación de claves de ejecución generadas

Se puede utilizar una clave de ejecución más compacta si se genera un texto de forma combinatoria utilizando varios punteros de inicio (o reglas de combinación). Por ejemplo, en lugar de empezar en un lugar (un único puntero), se podrían utilizar varios punteros de inicio y aplicar una operación XOR a los flujos para formar una nueva clave de ejecución; de manera similar, se pueden utilizar reglas de salto. Lo que se intercambia entonces es una serie de punteros al libro de claves de ejecución y/o una serie de reglas para generar la nueva clave de ejecución permutada a partir del texto de la clave inicial. (Estas reglas se pueden intercambiar mediante cifrado de clave pública o en persona. También se pueden cambiar con frecuencia sin cambiar el libro de claves de ejecución).

Texto cifrado que parece texto simple

El texto cifrado tradicional parece ser bastante diferente del texto simple. Para solucionar este problema, una variante genera palabras de "texto simple" en lugar de letras de "texto simple" como salida de texto cifrado. Esto se hace creando un "alfabeto" de palabras (en la práctica, varias palabras pueden corresponder a cada carácter de salida de texto cifrado). El resultado es una salida de texto cifrado que parece una larga secuencia de palabras de texto simple (el proceso se puede anidar). En teoría, esto no es diferente de usar caracteres de texto cifrado estándar como salida. Sin embargo, el texto cifrado que parece texto simple puede dar lugar a que un "humano en el circuito" intente interpretarlo por error como texto simple decodificado.

Un ejemplo sería BDA (algoritmo de deflación de Berkhoff) [ cita requerida ] , cada carácter de salida de texto cifrado tiene al menos un sustantivo, verbo, adjetivo y adverbio asociado. (Por ejemplo, (al menos) uno de cada uno por cada carácter ASCII ). Las oraciones gramaticalmente plausibles se generan como salida de texto cifrado. El descifrado requiere mapear las palabras nuevamente a ASCII y luego descifrar los caracteres al texto simple real usando la clave en ejecución. Nested-BDA ejecutará la salida a través del proceso de reencriptación varias veces, produciendo varias capas de texto cifrado "con apariencia de texto simple", cada una de las cuales potencialmente requiere "una intervención humana" para intentar interpretar su significado semántico inexistente .

Cifrado Gromark

El "cifrado Gromark" (" cifrado Gronsfeld con alfabeto mixto y clave continua") utiliza una clave numérica continua formada mediante la adición de pares sucesivos de dígitos. [1] El cifrado VIC utiliza un generador de Fibonacci rezagado similar .

Seguridad y criptoanálisis

Si la clave de ejecución es verdaderamente aleatoria, nunca se reutiliza y se mantiene en secreto, el resultado es un block de un solo uso , un método que proporciona un secreto perfecto (no revela información sobre el texto simple). Sin embargo, si (como es habitual) la clave de ejecución es un bloque de texto en un lenguaje natural , la seguridad en realidad se vuelve bastante pobre, ya que ese texto tendrá características no aleatorias que se pueden usar para ayudar al criptoanálisis: por ejemplo, William F. Friedman sugirió un ataque de solo texto cifrado durante la Primera Guerra Mundial contra las letras más frecuentes codificadas por otras letras más frecuentes. [2] Como resultado, la entropía por carácter tanto del texto simple como de la clave de ejecución es baja, y la operación de combinación se invierte fácilmente.

Para atacar el código, un criptoanalista puede ejecutar textos planos probables a lo largo del texto cifrado, restándolos de cada posición posible. Cuando el resultado es un fragmento de algo inteligible, existe una alta probabilidad de que el texto plano adivinado sea correcto para esa posición (ya sea como texto plano real o como parte de la clave en ejecución). El "fragmento de algo inteligible" a menudo se puede extender en cualquiera de los extremos, lo que proporciona un texto plano aún más probable, que a su vez se puede extender, y así sucesivamente (para una explicación más detallada, consulte Cifrado de clave automática ). Finalmente, es probable que se identifique la fuente de la clave en ejecución, y el juego habrá terminado.

Existen varias formas de mejorar la seguridad. La primera y más obvia es utilizar una tabla secreta de alfabeto mixto en lugar de una tabula recta . Esto complica mucho las cosas, pero no es una solución completa. Como se explota en el método de Friedman, es mucho más probable que los pares de caracteres de texto simple y clave de ejecución sean pares de alta frecuencia, como 'EE', en lugar de, por ejemplo, 'QQ'. La desviación que esto provoca en la distribución de frecuencia de salida se ve atenuada por el hecho de que es muy posible que 'EE' y 'QQ' correspondan al mismo carácter de texto cifrado, pero, no obstante, la distribución no es plana. Esto puede permitir al criptoanalista deducir parte de la tabla y luego proceder como antes (pero con espacios en blanco donde faltan secciones de la tabla reconstruida).

Otra posibilidad es utilizar un texto clave que tenga más entropía por carácter que el inglés típico. Para ello, la KGB recomendó a los agentes que utilizaran documentos como almanaques e informes comerciales, que suelen contener largas listas de números de aspecto aleatorio.

Otro problema es que el espacio de claves es sorprendentemente pequeño. Supongamos que hay 100 millones de textos de claves que podrían usarse de manera plausible y que, en promedio, cada uno tiene 11 mil posiciones iniciales posibles. Para un oponente con una colección masiva de textos de claves posibles, esto deja la posibilidad de una búsqueda de fuerza bruta del orden de , que según los estándares de criptografía informática es un objetivo relativamente fácil. (Véase la permutación de claves generadas anteriormente para una aproximación a este problema).

Confusión

Como ambos sistemas de cifrado emplean novelas como parte de su material clave, muchas fuentes confunden el cifrado de libro con el cifrado de clave móvil. En realidad, sólo están relacionados de forma muy lejana. El cifrado de clave móvil es una sustitución polialfabética, mientras que el cifrado de libro es una sustitución homofónica. Tal vez la distinción se haga más clara en el hecho de que un cifrado móvil funcionaría mejor con un libro de números aleatorios, mientras que un libro de este tipo (que no contiene texto) sería inútil para un cifrado de libro.

Véase también

Referencias

  1. ^ Asociación Estadounidense de Criptógramas. "La ACA y usted" Archivado el 3 de abril de 2016 en Wayback Machine . 2016.
  2. ^ "Criptología: Cifrados de texto continuo – Criptoanálisis según Friedman". www.staff.uni-mainz.de . Consultado el 10 de enero de 2024 .