En clásica criptografía , el cifrado de clave correr es un tipo de sustitución polialfabética cifrado en el que un texto, por lo general de un libro, se utiliza para proporcionar una larga serie de claves . Por lo general, el libro que se utilizará se acordará de antemano, mientras que el pasaje que se utilizará se elegirá al azar para cada mensaje y se indicará secretamente en algún lugar del mensaje.
Ejemplo
El texto utilizado es The C Programming Language (edición de 1978), y la tabula recta es el cuadro. El texto sin formato es "Huye de una vez".
En la página 63, se selecciona la línea 1 como tecla de ejecución:
Los errores pueden ocurrir en varios lugares. Una etiqueta tiene ...
La clave de ejecución se escribe debajo del texto sin formato:
Texto sin formato | F | l | mi | mi | a | t | o | norte | C | mi |
---|---|---|---|---|---|---|---|---|---|---|
Ejecutando clave | mi | R | R | O | R | S | C | A | norte | O |
Texto cifrado | J | C | V | S | R | L | Q | norte | PAG | S |
A continuación, el mensaje se envía como "JCVSR LQNPS". Sin embargo, a diferencia de un cifrado de Vigenère , si el mensaje se extiende, la clave no se repite; el texto de la clave en sí se utiliza como clave. Si el mensaje se extiende, como "Huye de una vez. Nos descubren", la tecla de ejecución continúa como antes:
Texto sin formato | F | l | mi | mi | a | t | o | norte | C | mi | w | mi | a | r | mi | D | I | s | C | o | v | mi | r | mi | D |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Ejecutando clave | mi | R | R | O | R | S | C | A | norte | O | C | C | U | R | I | norte | S | mi | V | mi | R | A | L | PAG | L |
Texto cifrado | J | C | V | S | R | L | Q | norte | PAG | S | Y | GRAMO | U | I | METRO | Q | A | W | X | S | METRO | mi | C | T | O |
Para determinar dónde encontrar la clave en ejecución, posteriormente se agrega un bloque falso de cinco caracteres de texto cifrado, con tres indicando el número de página y dos el número de línea, usando A = 0, B = 1, etc. para codificar dígitos. Tal bloque se llama bloque indicador . El bloque indicador se insertará como el penúltimo de cada mensaje. (Son posibles muchos otros esquemas para ocultar bloques indicadores.) Así, en la página 63, la 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 en ejecución a menudo reemplazan la tabula recta tradicional con bit a bit exclusivo o , operan en bytes completos en lugar de letras alfabéticas, y derivan sus claves en 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.
Claves de ejecución generadas por permutación
Se puede utilizar una tecla de ejecución más compacta si una genera texto de forma combinatoria utilizando varios punteros de inicio (o reglas de combinación). Por ejemplo, en lugar de comenzar en un lugar (un solo puntero), se pueden usar varios punteros de inicio y combinar los flujos para formar una nueva clave de ejecución, de manera similar, se pueden usar reglas de omisión. Lo que se intercambia entonces es una serie de indicadores al libro de claves en 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. (Estos pueden intercambiarse mediante cifrado de clave pública o en persona. También se pueden cambiar con frecuencia sin cambiar el libro de claves en ejecución).
Texto cifrado que parece ser texto sin formato
El texto cifrado tradicional parece ser bastante diferente del texto plano. Para abordar este problema, una variante genera palabras de "texto sin formato" en lugar de letras de "texto sin formato" 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 secuencia larga de palabras de texto sin formato (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 con apariencia de texto sin formato puede dar como resultado que un "humano en el ciclo" intente interpretarlo erróneamente como texto sin formato decodificado.
Un ejemplo sería BDA (algoritmo deflater 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 de nuevo a ASCII y luego descifrar los caracteres al texto sin formato real utilizando la clave de ejecución. Nested-BDA ejecutará la salida a través del proceso de reencriptación varias veces, produciendo varias capas de texto cifrado de "apariencia de texto plano", cada una de las cuales potencialmente requerirá "humano en el ciclo" para tratar de interpretar su significado semántico inexistente .
Cifrado de Gromark
El "cifrado de Gromark" (" cifrado de Gronsfeld con alfabeto mixto y clave de ejecución") utiliza una clave numérica de ejecución formada mediante la adición de pares sucesivos de dígitos. [1] El cifrado VIC utiliza un generador de Fibonacci retrasado similar .
Seguridad
Si la clave de ejecución es verdaderamente aleatoria, nunca se reutiliza y se mantiene en secreto, el resultado es un bloc de notas de una sola vez , un método que proporciona un secreto perfecto (no revela información sobre el texto sin formato). Sin embargo, si (como de costumbre) 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 pueden usarse para ayudar al criptoanálisis. Como resultado, la entropía por carácter tanto del texto plano como de la clave en ejecución es baja, y la operación de combinación se invierte fácilmente.
Para atacar el cifrado, un criptoanalista ejecuta supuestos textos sin formato 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 sin formato adivinado sea correcto para esa posición (ya sea como texto sin formato real o como parte de la clave de ejecución). El "trozo de algo inteligible" puede extenderse a menudo en cualquier extremo, proporcionando así un texto llano aún más probable, que a su vez puede extenderse, y así sucesivamente. Eventualmente, es probable que se identifique la fuente de la clave en ejecución y la plantilla esté lista.
Hay varias formas de mejorar la seguridad. La primera y más obvia es utilizar un cuadro secreto de alfabeto mixto en lugar de una tabula recta . De hecho, esto complica enormemente las cosas, pero no es una solución completa. Es mucho más probable que los pares de texto plano y caracteres clave en ejecución sean pares de alta frecuencia como 'EE' en lugar de, digamos, 'QQ'. El sesgo que esto provoca en la distribución de la frecuencia de salida está manchado por el hecho de que es muy posible que 'EE' y 'QQ' se correspondan con el mismo carácter de texto cifrado, pero sin embargo la distribución no es plana. Esto puede permitir al criptoanalista deducir parte del cuadro y luego proceder como antes (pero con espacios en los que faltan secciones del cuadro reconstruido).
Otra posibilidad es utilizar un texto clave que tenga más entropía por carácter que el inglés típico. Para este propósito, la KGB aconsejó a los agentes que usaran documentos como almanaques e informes comerciales, que a menudo contienen largas listas de números aleatorios.
Otro problema es que el espacio de teclas es sorprendentemente pequeño. Supongamos que hay 100 millones de textos clave que podrían usarse de manera plausible y que, en promedio, cada uno tiene 11 mil posibles posiciones iniciales. Para un oponente con una colección masiva de posibles textos clave, esto deja posible 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. (Consulte las claves de ejecución generadas por permutación más arriba para ver un enfoque a este problema).
Confusión
Debido a que ambos cifrados empleaban clásicamente novelas como parte de su material clave, muchas fuentes confunden el cifrado de libro y el cifrado de clave en ejecución. En realidad, son parientes muy lejanos. El cifrado de clave corriente es una sustitución polialfabética, el cifrado de libro es una sustitución homofónica. Quizás la distinción se haga más claramente por el hecho de que un cifrado en ejecución 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.
Ver también
Referencias
- ^ Asociación americana de criptogramas. "La ACA y tú" . 2016.