stringtranslate.com

Código (criptografía)

Una parte del " Telegrama Zimmermann " descifrado por los descifradores de códigos de la Inteligencia Naval Británica . La palabra Arizona no estaba en el libro de códigos alemán y, por lo tanto, tuvo que dividirse 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 podría transformar "cambio" en "CVGDK" o "salón de cócteles". La Agencia de Seguridad Nacional de EE. UU. definió un código como "Un criptosistema de sustitución en el que los elementos de texto sin formato son principalmente palabras, frases u oraciones, y los equivalentes de código (llamados "grupos de códigos") normalmente consisten en letras o dígitos (o ambos) en otros casos. combinaciones sin sentido de longitud idéntica." [1] : Volumen I, pág. 12  Se necesita un libro de códigos para cifrar y descifrar las frases o palabras.

Por el contrario, los cifrados cifran mensajes a nivel de letras individuales, o pequeños grupos de letras, o incluso, en los cifrados modernos, bits individuales . Los mensajes se pueden transformar 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 cifrados es que un código normalmente representa una letra o grupos de letras directamente sin el uso de matemáticas. Como tal, los números están configurados para representar estos tres valores: 1001 = A, 1002 = B, 1003 = C, .... El mensaje resultante, entonces sería 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,.... Así 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 inconvenientes, 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 clasificá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 sin formato mediante el análisis de frecuencia . En el ejemplo anterior, el grupo de códigos, 1001, 1002, 1003, puede aparecer más de una vez y esa frecuencia puede coincidir con la cantidad de veces que aparece ABC en mensajes de texto sin formato.

(En el pasado, o en contextos no técnicos, el código y el cifrado se utilizan 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 correspondiente texto sin formato. Originalmente, los códigos tenían los grupos de códigos asignados en "orden de texto sin formato" 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 sin formato que comience con "a" tendrá un grupo de valor bajo, mientras que una que comience con "z" tendrá un grupo de valor alto. El mismo libro de códigos podría usarse para "codificar" un mensaje de texto sin formato en un mensaje codificado o "texto codificado", y "decodificar" un texto codificado nuevamente en un mensaje de texto sin formato.

Para hacer la vida más difícil a los descifradores de códigos, 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 sin formato coincidente. En la práctica, esto significaba que ahora se necesitaban dos libros de códigos, uno para encontrar grupos de códigos para codificar y el otro para buscar grupos de códigos y encontrar texto sin formato para decodificar. Estos códigos de "dos partes" requerían más esfuerzo para desarrollarse y el doble de esfuerzo para distribuirse (y descartarse de forma segura cuando se reemplazaban), 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 una sola vez

Un código de un solo uso es una palabra, frase o símbolo preestablecido que está destinado a usarse solo una vez para transmitir un mensaje simple, a menudo la señal para ejecutar o cancelar algún plan o confirmar si tuvo éxito o fracasó. 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 supervise 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 si tuviera un significado siniestro. Ejemplos famosos de códigos de un solo uso incluyen:

A veces los mensajes no están preestablecidos y se basan en conocimientos compartidos que, con suerte, sólo conocen los destinatarios. Un ejemplo es el telegrama enviado al presidente estadounidense Harry Truman , entonces en la Conferencia de Potsdam para reunirse con el primer ministro soviético Joseph Stalin , informándole a Truman de la primera prueba exitosa de una bomba atómica .

"Operado 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 ya que el interés se extiende a gran distancia. El Dr. Groves está satisfecho. Regresará mañana. Los mantendré informados".

Véase también bloc 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 utilizadas por los ejércitos en el campo.

Ejemplo: cualquier oración donde se usan "día" y "noche" significa "ataque". La ubicación mencionada en la siguiente oración especifica el lugar que se va a 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 [de código] más simple y, por lo tanto, imposible de descifrar. El primer anuncio decía a la persona o personas interesadas que llevaran a cabo el número siete o esperaran el número siete o decía algo sobre algo designado como siete. Éste dice lo mismo con respecto al 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 puede ser descifrado si el usuario tiene el buen sentido de no ir demasiado al pozo.

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

Si bien 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, donde la tarea consiste básicamente en construir un "diccionario" de los grupos de códigos y las palabras en texto plano que representan.

Un punto clave en un 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 "PARAR" (es decir, final de frase 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 criptoanalíticamente útil.

Se pueden lograr mayores avances con respecto a un código recopilando muchos textos codificados 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 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 bien puede representar esa ubicación.

Las cunas pueden ser un indicio inmediato de las definiciones de grupos de códigos. A medida que se determinan los grupos de códigos, estos pueden acumular gradualmente una masa crítica, con más y más grupos de códigos revelados a partir del contexto y de conjeturas fundamentadas. Los códigos de una parte son más vulnerables a este tipo de 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 parte representa "bulldozer", entonces el número de código inferior "17598" probablemente representará una palabra de texto plano que comienza con "a" o "b". Al menos, para códigos simples de una parte.

Se pueden utilizar varios 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 luego examinando los mensajes en código enviados después de la incursión. Los errores de codificación son un punto de acceso particularmente útil para comprender un código; la gente comete errores de manera confiable, a veces desastrosos. Plantar datos y explotar errores también funciona contra los cifrados.

Construir un nuevo código es como construir un nuevo lenguaje y escribir un diccionario para él; Era un trabajo especialmente importante antes de las computadoras. Si un código se ve comprometido, toda la tarea debe realizarse de nuevo, 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 de códigos 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 del libro 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 algo exagerado, un secreto se vuelve más difícil de guardar si se comparte entre varias personas. Se puede considerar que los códigos son razonablemente seguros si sólo los utilizan unas pocas personas cuidadosas, pero si ejércitos enteros utilizan el mismo libro de códigos, la seguridad se vuelve mucho más difícil.

Por el contrario, la seguridad de los cifrados generalmente depende de la protección de las claves de cifrado. Las claves de cifrado 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 agregaba dígito por 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 EE. UU.; las conferencias de David G. Boak Archivadas 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 19 de septiembre de 2021 . Consultado el 19 de septiembre de 2021 .
  3. ^ "Telegrama de 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: "Medio Oriente: 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

Ver también