stringtranslate.com

Código (criptografía)

Fragmento del " Telegrama Zimmermann " descifrado por los descifradores de códigos de la Inteligencia Naval británica . La palabra Arizona no figuraba en el libro de códigos alemán, por lo que hubo que dividirla en sílabas fonéticas.
Páginas parcialmente quemadas de un libro de códigos de dos partes de la KGB soviética de la Segunda Guerra Mundial

En criptología , un código es un método utilizado para cifrar un mensaje que opera a nivel de significado; es decir, las palabras o frases se convierten en otra cosa. Un código puede transformar "cambio" en "CVGDK" o "salón de cócteles". La Agencia de Seguridad Nacional de los Estados Unidos definió un código como "Un criptosistema de sustitución en el que los elementos de texto simple son principalmente palabras, frases u oraciones, y los equivalentes de código (llamados "grupos de códigos") generalmente consisten en letras o dígitos (o ambos) en combinaciones de longitud idéntica que de otro modo no tendrían sentido". [1] : Vol I, p. 12  Se necesita un libro de códigos para cifrar y descifrar las frases o palabras.

En cambio, los cifrados codifican los mensajes a nivel de letras individuales, de pequeños grupos de letras o, incluso, en el caso de los cifrados modernos, de bits individuales . Los mensajes pueden transformarse primero mediante un código y luego mediante un cifrado. [2] Este tipo de cifrado múltiple , o "supercifrado", tiene como objetivo dificultar el criptoanálisis .

Otra comparación entre códigos y cifras es que un código representa típicamente una letra o un grupo de letras directamente sin el uso de matemáticas. Por lo tanto, los números están configurados para representar estos tres valores: 1001 = A, 1002 = B, 1003 = C, ... . El mensaje resultante sería entonces 1001 1002 1003 para comunicar ABC. Los cifrados, sin embargo, utilizan una fórmula matemática para representar letras o grupos de letras. Por ejemplo, A = 1, B = 2, C = 3, ... . Por lo tanto, el mensaje ABC resulta de multiplicar el valor de cada letra por 13. El mensaje ABC, entonces, sería 13 26 39.

Los códigos tienen una variedad de desventajas, incluida la susceptibilidad al criptoanálisis y la dificultad de administrar los engorrosos libros de códigos , por lo que los cifrados son ahora la técnica dominante en la criptografía moderna.

Por el contrario, debido a que los códigos son representativos, no son susceptibles de análisis matemático de los elementos individuales del libro de códigos. En el ejemplo, el mensaje 13 26 39 se puede descifrar dividiendo cada número por 13 y luego ordenándolos alfabéticamente. Sin embargo, el objetivo del criptoanálisis del libro de códigos es la frecuencia comparativa de los elementos de código individuales que coinciden con la misma frecuencia de letras dentro de los mensajes de texto simple mediante el análisis de frecuencia . En el ejemplo anterior, el grupo de códigos, 1001, 1002, 1003, podría aparecer más de una vez y esa frecuencia podría coincidir con la cantidad de veces que ABC aparece en los mensajes de texto simple.

(En el pasado, o en contextos no técnicos, código y cifrado se utilizaban a menudo para referirse a cualquier forma de cifrado ).

Códigos de una y dos partes

Los códigos se definen mediante "libros de códigos" (físicos o nocionales), que son diccionarios de grupos de códigos enumerados con su texto simple correspondiente. Originalmente, los códigos tenían los grupos de códigos asignados en "orden de texto simple" para conveniencia del código diseñado o del codificador. Por ejemplo, en un código que utiliza grupos de códigos numéricos, una palabra de texto simple que comience con "a" tendría un grupo de valor bajo, mientras que una que comience con "z" tendría un grupo de valor alto. El mismo libro de códigos podría usarse para "codificar" un mensaje de texto simple en un mensaje codificado o "texto codificado", y "decodificar" un texto codificado nuevamente en un mensaje de texto simple.

Para complicarles la vida a los descifradores, los creadores de códigos diseñaron códigos sin una relación predecible entre los grupos de códigos y el orden del texto simple correspondiente. En la práctica, esto significaba que ahora se necesitaban dos libros de códigos, uno para encontrar los grupos de códigos para codificar y el otro para buscar grupos de códigos para encontrar el texto simple para descifrar. Estos códigos "de dos partes" requerían más esfuerzo para desarrollarlos y el doble para distribuirlos (y descartarlos de manera segura cuando se los reemplazaba), pero eran más difíciles de descifrar. El telegrama Zimmermann de enero de 1917 utilizó el sistema de código diplomático alemán de dos partes "0075", que contenía más de 10 000 frases y palabras individuales. [3]

Código de un solo uso

Un código de un solo uso es una palabra, frase o símbolo preestablecido que se utiliza una sola vez para transmitir un mensaje simple, a menudo la señal para ejecutar o abortar un plan o confirmar que ha tenido éxito o ha fracasado. Los códigos de un solo uso suelen estar diseñados para incluirse en lo que parecería ser una conversación inocente. Si se hacen correctamente, son casi imposibles de detectar, aunque un analista capacitado que controle las comunicaciones de alguien que ya ha despertado sospechas podría reconocer un comentario como "La tía Bertha se ha puesto de parto" como algo que tiene un significado ominoso. Algunos ejemplos famosos de códigos de un solo uso incluyen:

En ocasiones, los mensajes no están previamente acordados y se basan en un conocimiento compartido que, con suerte, solo conocen los destinatarios. Un ejemplo es el telegrama enviado al presidente de los Estados Unidos, Harry Truman , que se encontraba en la Conferencia de Potsdam para reunirse con el primer ministro soviético, Joseph Stalin , en el que se informaba a Truman de la primera prueba exitosa de una bomba atómica .

"Me operaron esta mañana. El diagnóstico aún no está completo, pero los resultados parecen satisfactorios y ya superan las expectativas. Es necesario un comunicado de prensa local porque el interés se extiende a grandes distancias. El Dr. Groves está satisfecho. Regresará mañana. Los mantendré informados".

Véase también block de un solo uso , un algoritmo de cifrado no relacionado

Código idiota

Un código idiota es un código creado por las partes que lo utilizan. Este tipo de comunicación es similar a las señales manuales que utilizan los ejércitos en el campo de batalla.

Ejemplo: Cualquier oración en la que se utilicen "día" y "noche" significa "ataque". La ubicación mencionada en la siguiente oración especifica el lugar que se atacará.

Un uso temprano del término parece ser el de George Perrault, un personaje del libro de ciencia ficción Friday [5] de Robert A. Heinlein :

El tipo más simple [de código] y, por lo tanto, imposible de descifrar. El primer anuncio le decía a la persona o personas involucradas que realizaran el número siete o que esperaran el número siete o decía algo sobre algo designado como siete. Este dice lo mismo con respecto al elemento de código número diez. Pero el significado de los números no se puede deducir mediante análisis estadístico porque el código se puede cambiar mucho antes de que se pueda alcanzar un universo estadístico útil. Es un código idiota... y un código idiota nunca se puede descifrar si el usuario tiene el buen sentido de no recurrir demasiado a la fuente.

El experto en terrorismo Magnus Ranstorp dijo que los hombres que llevaron a cabo los ataques del 11 de septiembre en Estados Unidos utilizaron correo electrónico básico y lo que él llama "código idiota" para discutir sus planes. [6]

Criptoanálisis de códigos

Aunque resolver un cifrado de sustitución monoalfabético es fácil, resolver incluso un código simple es difícil. Descifrar un mensaje codificado es un poco como intentar traducir un documento escrito en un idioma extranjero, y la tarea consiste básicamente en construir un "diccionario" de los grupos de códigos y las palabras de texto simple que representan.

Un ejemplo de código simple es el hecho de que algunas palabras son más comunes que otras, como "the" o "a" en inglés. En los mensajes telegráficos, el grupo de códigos para "STOP" (es decir, final de oración o párrafo) suele ser muy común. Esto ayuda a definir la estructura del mensaje en términos de oraciones, si no de su significado, y esto es útil desde el punto de vista criptoanalítico.

Se pueden lograr más avances con respecto a un código recopilando muchos textos de código cifrados con el mismo código y luego utilizando información de otras fuentes.

Por ejemplo, un grupo de códigos particular que se encuentra casi exclusivamente en mensajes de un ejército en particular y en ningún otro lugar podría indicar perfectamente quién es el comandante de ese ejército. Un grupo de códigos que aparece en mensajes que preceden a un ataque a una ubicación en particular puede perfectamente representar esa ubicación.

Las cunas pueden ser una pista inmediata de las definiciones de los grupos de códigos. A medida que se determinan los grupos de códigos, pueden formar gradualmente una masa crítica, con cada vez más grupos de códigos revelados a partir del contexto y de conjeturas fundamentadas. Los códigos de una sola parte son más vulnerables a estas conjeturas fundamentadas que los códigos de dos partes, ya que si se determina que el número de código "26839" de un código de una sola parte representa "bulldozer", entonces el número de código inferior "17598" probablemente representará una palabra de texto simple que comience con "a" o "b". Al menos, para códigos simples de una sola parte.

Se pueden utilizar diversos trucos para " plantar " o "sembrar" información en un mensaje codificado, por ejemplo, ejecutando una incursión en un momento y lugar determinados contra un enemigo y examinando después los mensajes codificados enviados después de la incursión. Los errores de codificación son una pista especialmente útil para acceder a un código; la gente comete errores con frecuencia, a veces desastrosos. Plantar datos y explotar errores también funciona contra los códigos cifrados.

Construir un nuevo código es como construir un nuevo lenguaje y escribir un diccionario para él; era una tarea especialmente ardua antes de que existieran las computadoras. Si un código se ve comprometido, toda la tarea debe repetirse desde el principio, y eso significa mucho trabajo tanto para los criptógrafos como para los usuarios del código. En la práctica, cuando los códigos eran de uso generalizado, generalmente se cambiaban periódicamente para frustrar a los descifradores y limitar la vida útil de los libros de códigos robados o copiados.

Una vez que se han creado los códigos, la distribución de los libros de códigos es logísticamente complicada y aumenta las posibilidades de que el código se vea comprometido. Hay un dicho que dice que "tres personas pueden guardar un secreto si dos de ellas están muertas" (Benjamin Franklin - Wikiquote) y, aunque puede ser una exageración, un secreto se vuelve más difícil de guardar si se comparte entre varias personas. Se puede pensar que los códigos son razonablemente seguros si solo los usan unas pocas personas cuidadosas, pero si ejércitos enteros usan el mismo libro de códigos, la seguridad se vuelve mucho más difícil.

En cambio, la seguridad de los cifrados depende generalmente de la protección de las claves cifradas. Las claves cifradas pueden ser robadas y la gente puede traicionarlas, pero son mucho más fáciles de cambiar y distribuir.

Supercifrado

Era común cifrar un mensaje después de codificarlo primero, para aumentar la dificultad del criptoanálisis. Con un código numérico, esto se hacía comúnmente con un "aditivo": simplemente un número clave largo que se añadía dígito a dígito a los grupos de códigos, módulo 10. A diferencia de los libros de códigos, los aditivos se cambiaban con frecuencia. El famoso código de la Armada japonesa, JN-25 , tenía este diseño.

Referencias

  1. ^ Una historia de la seguridad de las comunicaciones en Estados Unidos; las conferencias David G. Boak Archivado el 18 de septiembre de 2016 en Wayback Machine , Agencia de Seguridad Nacional (NSA), volúmenes I, 1973, volúmenes II, 1981, publicado parcialmente en 2008, partes adicionales desclasificadas el 14 de octubre de 2015
  2. ^ "16.2: Cifrados de sustitución". Matemáticas LibreTexts . 2020-01-22. Archivado desde el original el 2021-09-19 . Consultado el 2021-09-19 .
  3. ^ "Telegrama Zimmermann: El borrador original" Archivado el 27 de abril de 2021 en Wayback Machine , 2007, Joachim von zur Gathen, "Cryptologia", Volumen 31, Número 1
  4. ^ 1 Samuel 20:20-22
  5. ^ Viernes (1982) de Robert A. Heinlein
  6. ^ Radio Free Europe / Radio Liberty: "Oriente Medio: los militantes islámicos llevan la yihad a Internet" por Jeffrey Donovan Archivado el 15 de enero de 2008 en Wayback Machine , 16 de junio de 2004.

Fuentes

Véase también