

En criptología , un código es un método utilizado para encriptar 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 del texto plano son principalmente palabras, frases u oraciones, y los equivalentes del código (llamados "grupos de código") suelen consistir en letras o dígitos (o ambos) en combinaciones sin significado de idéntica longitud". [ 1 ] : Vol. I, pág. 12 Se necesita un libro de códigos para encriptar y desencriptar las frases o palabras.
Por el contrario, los cifrados encriptan los mensajes a nivel de letras individuales, o pequeños grupos de letras, o incluso, en los cifrados modernos, bits individuales . Los mensajes pueden transformarse primero mediante un código y luego mediante un cifrado. [ 2 ] Este 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 generalmente representa una letra o grupos de letras directamente sin usar matemáticas. Así, los números se configuran para representar estos tres valores: 1001 = A, 1002 = B, 1003 = C, ... . El mensaje resultante sería 1001 1002 1003 para comunicar ABC. Los cifrados, en cambio, utilizan una fórmula matemática para representar letras o grupos de letras. Por ejemplo, A = 1, B = 2, C = 3, ... . De esta forma, el mensaje ABC se obtiene multiplicando el valor de cada letra por 13. El mensaje ABC sería entonces 13 26 39.
Los códigos presentan diversos inconvenientes, como la susceptibilidad al criptoanálisis y la dificultad de gestionar los engorrosos libros de códigos , por lo que los cifrados son ahora la técnica dominante en la criptografía moderna.
En cambio, dado que los códigos son representacionales, no son susceptibles al análisis matemático de los elementos individuales del diccionario de códigos. En el ejemplo, el mensaje 13 26 39 se puede descifrar dividiendo cada número entre 13 y ordenándolos alfabéticamente. Sin embargo, el enfoque del criptoanálisis de diccionarios de códigos radica en la frecuencia comparativa de los elementos individuales del código, comparándolos con la frecuencia de las letras en los mensajes de texto plano mediante 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 aparece ABC en los mensajes de texto plano.
(En el pasado, o en contextos no técnicos, los términos código y cifrado se utilizan a menudo para referirse a cualquier forma de encriptación ).
Códigos de una y dos partes
Los códigos se definen mediante "libros de códigos" (físicos o conceptuales), que son diccionarios de grupos de códigos con su texto plano correspondiente. Originalmente, los grupos de códigos se asignaban en el orden del texto plano para facilitar su diseño o codificación. Por ejemplo, en un código que utiliza grupos de códigos numéricos, una palabra en texto plano que comience con "a" tendría un grupo de bajo valor, mientras que una que comience con "z" tendría un grupo de alto valor. El mismo libro de códigos podía utilizarse para "codificar" un mensaje en texto plano en un mensaje codificado o "texto codificado", y para "decodificar" un texto codificado de nuevo en un mensaje en texto plano.
In order to make life more difficult for codebreakers, codemakers designed codes with no predictable relationship between the codegroups and the ordering of the matching plaintext. In practice, this meant that two codebooks were now required, one to find codegroups for encoding, the other to look up codegroups to find plaintext for decoding. Such "two-part" codes required more effort to develop, and twice as much effort to distribute (and discard safely when replaced), but they were harder to break. The Zimmermann Telegram in January 1917 used the German diplomatic "0075" two-part code system which contained upwards of 10,000 phrases and individual words.[3]
One-time code
A one-time code is a prearranged word, phrase or symbol that is intended to be used only once to convey a simple message, often the signal to execute or abort some plan or confirm that it has succeeded or failed. One-time codes are often designed to be included in what would appear to be an innocent conversation. Done properly they are almost impossible to detect, though a trained analyst monitoring the communications of someone who has already aroused suspicion might be able to recognize a comment like "Aunt Bertha has gone into labor" as having an ominous meaning. Famous example of one time codes include:
- In the Bible, Jonathan prearranges a code with David, who is going into hiding from Jonathan's father, King Saul. If, during archery practice, Jonathan tells the servant retrieving arrows "the arrows are on this side of you," David may safely return to court; if the command is "the arrows are beyond you," David must flee.[4]
- "One if by land; two if by sea" in "Paul Revere's Ride" made famous in the poem by Henry Wadsworth Longfellow
- "Climb Mount Niitaka" - the signal to Japanese planes to begin the attack on Pearl Harbor
- During World War II the British Broadcasting Corporation's overseas service frequently included "personal messages" as part of its regular broadcast schedule. The seemingly nonsensical stream of messages read out by announcers were actually one time codes intended for Special Operations Executive (SOE) agents operating behind enemy lines. An example might be "The princess wears red shoes" or "Mimi's cat is asleep under the table". Each code message was read out twice. By such means, the French Resistance were instructed to start sabotaging rail and other transport links the night before D-day.
- "Sobre toda España, el cielo está despejado" fue la señal (transmitida por radio) que dio inicio a la revuelta militar nacionalista en España el 17 de julio de 1936.
A veces, los mensajes no se planifican con antelación y se basan en información compartida que, idealmente, solo conocen los destinatarios. Un ejemplo es el telegrama enviado al presidente estadounidense Harry Truman , que se encontraba en la Conferencia de Potsdam para reunirse con el primer ministro soviético Joseph Stalin , informándole del primer ensayo exitoso 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 debido al gran interés que ha despertado. El Dr. Groves está satisfecho. Regresa mañana. Les mantendré informados."
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 usan los ejércitos en el campo de batalla.
Ejemplo: Cualquier oración donde se usen las palabras "día" y "noche" significa "ataque". La ubicación mencionada en la siguiente oración especifica el lugar que será atacado.
- Texto plano: Ataque X.
- Código: Caminamos día y noche por las calles, ¡pero no pudimos encontrarlo! Mañana nos dirigiremos a X.
Un uso temprano del término parece ser por George Perrault, un personaje en el libro de ciencia ficción Friday [ 5 ] de Robert A. Heinlein :
- El código más simple, y por lo tanto imposible de descifrar. El primer anuncio indicaba a la persona o personas interesadas que realizaran la acción número siete, o que esperaran la número siete, o mencionaba algo designado como siete. Este 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, ya que el código puede modificarse mucho antes de alcanzar un universo estadístico útil. Es un código para idiotas... y un código para idiotas nunca se puede descifrar si el usuario tiene el buen juicio de no recurrir a él con demasiada frecuencia.
El experto en terrorismo Magnus Ranstorp afirmó 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 denomina "código idiota" para discutir sus planes. [ 6 ]
Criptoanálisis de códigos
Si bien resolver un cifrado de sustitución monoalfabética es fácil, descifrar 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; la tarea consiste básicamente en crear un "diccionario" de los grupos de códigos y las palabras en texto plano que representan.
Una pista clave para comprender un código simple es 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, fin 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 bien no necesariamente su significado, lo cual resulta útil desde el punto de vista criptoanalítico.
Se puede avanzar más en la lucha contra un código recopilando muchos textos cifrados con el mismo código y luego utilizando información de otras fuentes.
- espías
- periódicos
- Charla diplomática en un cóctel
- el lugar desde donde se envió un mensaje
- a dónde se enviaba (es decir, análisis de tráfico )
- la hora en que se envió el mensaje,
- eventos ocurridos antes y después de que se enviara el mensaje
- los hábitos normales de las personas que envían los mensajes codificados
- etc.
Por ejemplo, un grupo de códigos específico que se encuentra casi exclusivamente en mensajes de un ejército determinado y en ningún otro lugar podría indicar perfectamente al comandante de ese ejército. Un grupo de códigos que aparece en mensajes previos a un ataque a una ubicación específica podría representar precisamente esa ubicación.
Las pistas pueden revelar de inmediato las definiciones de los grupos de códigos. A medida que se determinan, estos grupos pueden acumular gradualmente una masa crítica, revelándose cada vez más a partir del contexto y las conjeturas fundamentadas. Los códigos simples de una sola parte son más vulnerables a estas conjeturas que los de dos partes, ya que si se determina que el código "26839" de un código de una sola parte significa "bulldozer", entonces es probable que el código inferior "17598" signifique una palabra en texto plano que comience con "a" o "b".
Se pueden utilizar diversas técnicas para introducir información en un mensaje cifrado, por ejemplo, realizando una incursión en un lugar y hora específicos contra un enemigo y analizando posteriormente los mensajes cifrados enviados. Los errores de codificación son una herramienta especialmente útil para descifrar un código; es común que las personas cometan errores, a veces desastrosos. La introducción de datos y la explotación de errores también funcionan contra los cifrados.
- La forma más obvia y, al menos en principio, la más sencilla de descifrar un código es robar el libro de códigos mediante sobornos, robos o asaltos —procedimientos que a veces se glorifican con la expresión "criptografía práctica" —, y esta es una debilidad tanto para los códigos como para las claves de cifrado, aunque los libros de códigos suelen ser más grandes y se utilizan durante más tiempo que las claves de cifrado . Si bien un buen código puede ser más difícil de descifrar que una clave de cifrado, la necesidad de escribir y distribuir libros de códigos resulta sumamente problemática.
Crear un nuevo código es como construir un nuevo idioma y escribir su diccionario; antes de la llegada de las computadoras, era una tarea sumamente compleja. Si un código se ve comprometido, hay que rehacer todo el proceso, lo que implica mucho trabajo tanto para los criptógrafos como para los usuarios. En la práctica, cuando los códigos se utilizaban ampliamente, solían modificarse periódicamente para dificultar la labor de los descifradores y limitar la vida útil de los libros de códigos robados o copiados.
Una vez creados los códigos, la distribución del libro de códigos resulta logísticamente engorrosa y aumenta las probabilidades de que el código se vea comprometido. Existe un dicho que afirma que "tres personas pueden guardar un secreto si dos de ellas están muertas" ( Benjamin Franklin - Wikiquote ), y aunque pueda 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 utilizan 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 generalmente depende de la protección de las claves de cifrado. Si bien las claves de cifrado pueden ser robadas y reveladas, son mucho más fáciles de cambiar y distribuir.
Supercifrado
Era común cifrar un mensaje después de codificarlo, para aumentar la dificultad del criptoanálisis. Con un código numérico, esto se hacía habitualmente con un aditivo: simplemente un número clave largo que se añadía dígito a dígito a los grupos del código, 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 , era de este tipo.
Referencias
- ↑ 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), volumen I, 1973, volumen II, 1981, publicado parcialmente en 2008, partes adicionales desclasificadas el 14 de octubre de 2015.
- ↑ "16.2: Cifrados de sustitución" . Matemáticas LibreTexts . 22 de enero de 2020. Archivado del original el 19 de septiembre de 2021. Consultado el 19 de septiembre de 2021 .
- ↑ "Telegrama Zimmermann: El borrador original" Archivado el 27/04/2021 en Wayback Machine , 2007, Joachim von zur Gathen, "Cryptologia", Volumen 31, Número 1
- ↑ 1 Samuel 20:20-22
- ↑ Viernes (1982) de Robert A. Heinlein
- ↑ Radio Free Europe / Radio Liberty: "Oriente Medio: militantes islámicos llevan la yihad a Internet" Por Jeffrey Donovan , 16 de junio de 2004.
Fuentes
- Kahn, David (1996). Los descifradores de códigos : La historia completa de la comunicación secreta desde la antigüedad hasta Internet . Scribner.
- Pickover, Cliff (2000). Criptorronas: Códigos y escritura secreta . Pomegranate Communications. ISBN 978-0-7649-1251-1.
- Boak, David G. (julio de 1973) [1966]. "Códigos" (PDF) . Historia de la seguridad de las comunicaciones en EE. UU.; las conferencias de David G. Boak, vol. I (edición de revisión de desclasificación de 2015 ). Ft. George G. Meade, MD: Agencia de Seguridad Nacional de EE. UU. págs. 21–32 . Recuperado el 23 de abril de 2017 .
- Códigos de campo del ejército estadounidense en las fuerzas expedicionarias estadounidenses durante la Primera Guerra Mundial , William Friedman, Departamento de Guerra de EE. UU., junio de 1942. Incluye numerosos ejemplos en su apéndice, entre ellos un "código de béisbol" (pág. 254).
Véase también
- Cifrar
- Código , su significado más general en las comunicaciones.
- Código de trinchera
- JN-25
- Telegrama de Zimmermann
- descifradores de códigos
- Este artículo, o una versión anterior del mismo, incorpora material del libro Codes, Ciphers, & Codebreaking de Greg Goebel .
- Criptografía