Código (criptografía)

format_list_bulleted Contenido keyboard_arrow_down
ImprimirCitar
Método utilizado para encriptar un mensaje
Una parte del "Zimmermann Telegram" como descifrado por los codificadores de Inteligencia Naval Británica. La palabra Arizona no estaba en el libro de código alemán y por lo tanto debía dividirse en sílabas fonéticas.
páginas parcialmente quemadas de un libro de código de dos partes soviético de la Segunda Guerra Mundial

En criptología, una código es un método utilizado para cifrar un mensaje que opera al nivel de significado; es decir, palabras o frases se convierten en algo más. Un código podría transformar "cambiar" en "CVGDK" o "cocktail lounge". La Agencia Nacional de Seguridad de EE.UU. definió un código como "Un criptosistema de sustitución en el que los elementos de texto simple son principalmente palabras, frases o oraciones, y los equivalentes de código (llamados "grupos de código") normalmente consisten en letras o dígitos (o ambos) en combinaciones sin sentido de longitud idéntica." A codebook es necesario encriptar, 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. 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, código y 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 listados con su correspondiente texto plano. Los códigos originalmente tenían los grupos de códigos asignados en 'orden de texto plano' por 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 comienza con "a" tendría un grupo de bajo valor, mientras que uno que comience con "z" Tendría un grupo de alto valor. El mismo libro de códigos podría usarse para "codificar" un mensaje de texto sin formato en un mensaje codificado o "codetext", 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. Este tipo de "dos partes" los códigos 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 de Zimmermann de enero de 1917 utilizó el mensaje diplomático alemán "0075" Sistema de código de dos partes que contenía más de 10.000 frases y palabras individuales.

Código de un solo uso

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 que ha tenido éxito o ha fallado. 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:

  • En la Biblia, Jonathan ordena un código con David, que va a esconderse del padre de Jonathán, el rey Saúl. Si, durante la práctica del tiroteo, Jonathan le dice al sirviente que siente flechas "las flechas están en este lado de ustedes", es seguro que David regrese a la corte, si el comando es "las flechas están más allá de ustedes," David debe huir.
  • "Uno si por tierra; dos si por mar" en "Pablo Revere's Ride" hecho famoso en el poema de Henry Wadsworth Longfellow
  • "Climb Mount Niitaka" - la señal a los aviones japoneses para comenzar el ataque a Pearl Harbor
  • Durante la Segunda Guerra Mundial, el servicio exterior de la British Broadcasting Corporation incluyó frecuentemente "mensajes personales" como parte de su programa regular de radiodifusión. El flujo aparentemente no sensorial de mensajes leídos por los anunciantes eran en realidad un código de tiempo destinado a los agentes ejecutivos de operaciones especiales que operan detrás de líneas enemigas. Un ejemplo podría ser "La princesa usa zapatos rojos" o "El gato de Mimi está dormido bajo la mesa". Cada mensaje de código fue leído dos veces. Por tal motivo, se ordenó a la Resistencia Francesa que empezara a sabotear el ferrocarril y otros enlaces de transporte la noche anterior al día D.
  • "En toda España, el cielo está claro" fue una señal para iniciar la revuelta militar nacionalista en España el 17 de julio de 1936.

A veces los mensajes no están organizados de antemano 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 es completo, pero los resultados parecen satisfactorios y ya superan las expectativas. Comunicado de prensa local necesario ya que el interés extiende gran distancia. El Dr. Groves está contento. Vuelve mañana. Te mantendré informado".

Ver 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 'día' y 'noche' se utilizan medios 'ataque'. La ubicación mencionada en la siguiente oración especifica el lugar que se va a atacar.

  • Plaintext: Ataque X.
  • Codetext: Caminamos día y noche a través de las calles pero no pudimos encontrarlo! Mañana iremos a X.

Uno de los primeros usos del término parece ser el de George Perrault, un personaje del libro de ciencia ficción Friday de Robert A. Heinlein:

El tipo más simple [de código] y por lo tanto imposible de romper. El primer anuncio le dijo a la persona o a las personas interesadas que realizaran el número siete o que esperaran el número siete o que dijo algo sobre algo designado como siete. Este dice lo mismo con respecto al ítem de código número diez. Pero el significado de los números no puede deducirse a través del análisis estadístico porque el código puede cambiarse 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 romper si el usuario tiene el buen sentido de no ir demasiado a menudo al pozo.

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

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: la tarea consiste básicamente en crear un "diccionario" en el que se escribe. de los grupos de códigos y las palabras de texto plano que representan.

Un código sencillo se debe a que algunas palabras son más comunes que otras, como "the" o "un" 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 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.

  • espías
  • periódicos
  • Coctel diplomático
  • la ubicación desde donde se envió un mensaje
  • donde se estaba enviando a (es decir, análisis de tráfico)
  • el tiempo que el mensaje fue enviado,
  • eventos ocurridos antes y después del mensaje
  • los hábitos normales de la gente que envía los mensajes codificados
  • etc.

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 el número de código "26839" Si se determina que un código de una sola parte significa "bulldozer", el número de código inferior "17598" probablemente representará una palabra de texto sin formato que comience 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.

  • La forma más obvia y, en principio, la forma más simple de romper un código es robar el libro de códigos a través de sobornos, robos o partidos de allanamiento — procedimientos a veces glorificados por la frase "criptografía práctica" — y esta es una debilidad tanto para códigos como para cifrados, aunque los códigos son generalmente más grandes y se utilizan más tiempo que las claves de cifrado. Mientras que un buen código puede ser más difícil de romper que un cifrado, la necesidad de escribir y distribuir libros de código es seriamente problemático.

Construir un nuevo código es como crear 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 pueda parecer 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 código "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.

Contenido relacionado

Lanzamiento de SQL

SQL Slammer es un gusano informático de 2003 que provocó una denegación de servicio en algunos hosts de Internet y redujo drásticamente el tráfico...

Protocolo Needham-Schroeder

El protocolo Needham-Schroeder es uno de los dos protocolos de transporte clave destinados a su uso en una red insegura, ambos propuestos por Roger Needham y...

Encuadernación tardía

En informática, el enlace tardío o enlace dinámico es un mecanismo de programación informática en el que el método que se invoca en un objeto, o la...

David A. Wagner

David A. Wagner es profesor de informática en la Universidad de California, Berkeley y un conocido investigador en criptografía y seguridad informática. Es...

Alma-0

Alma-0 es un lenguaje de programación informática multiparadigma. Este lenguaje es una versión aumentada del lenguaje imperativo Modula-2 con...
Más resultados...
Tamaño del texto:
undoredo
format_boldformat_italicformat_underlinedstrikethrough_ssuperscriptsubscriptlink
save