stringtranslate.com

Код (криптография)

Часть " Телеграммы Циммермана ", расшифрованной британскими дешифровальщиками военно-морской разведки . Слово Arizona не было в немецкой кодовой книге, поэтому его пришлось разбить на фонетические слоги.
Частично сгоревшие страницы из двухчастной кодовой книги КГБ времен Второй мировой войны

В криптологии код — это метод, используемый для шифрования сообщения , который работает на уровне смысла; то есть слова или фразы преобразуются во что-то еще. Код может преобразовать «change» в «CVGDK» или «cocktail lounge». Агентство национальной безопасности США определило код как «криптосистему подстановки, в которой элементы открытого текста в основном являются словами, фразами или предложениями, а эквиваленты кода (называемые «кодовыми группами») обычно состоят из букв или цифр (или и того, и другого) в иначе бессмысленных комбинациях одинаковой длины». [1] : Том I, стр. 12  Для шифрования и расшифровки фраз или слов необходима кодовая книга .

Напротив, шифры шифруют сообщения на уровне отдельных букв или небольших групп букв, или даже, в современных шифрах, отдельных битов . Сообщения могут быть преобразованы сначала кодом, а затем шифром. [2] Такое многократное шифрование , или «супершифрование», направлено на то, чтобы затруднить криптоанализ .

Другое сравнение между кодами и шифрами заключается в том, что код обычно представляет букву или группы букв напрямую, без использования математики. Таким образом, числа настроены для представления этих трех значений: 1001 = A, 1002 = B, 1003 = C, ... . Результирующее сообщение тогда будет 1001 1002 1003 для передачи ABC. Однако шифры используют математическую формулу для представления букв или групп букв. Например, A = 1, B = 2, C = 3, ... . Таким образом, сообщение ABC получается путем умножения значения каждой буквы на 13. Тогда сообщение ABC будет 13 26 39.

Коды имеют ряд недостатков, включая восприимчивость к криптоанализу и сложность управления громоздкими кодовыми книгами , поэтому шифры в настоящее время являются доминирующей техникой в ​​современной криптографии.

Напротив, поскольку коды являются репрезентативными, они не поддаются математическому анализу отдельных элементов кодовой книги. В этом примере сообщение 13 26 39 можно взломать, разделив каждое число на 13, а затем ранжировав их в алфавитном порядке. Однако фокус криптоанализа кодовой книги заключается в сравнительной частоте отдельных элементов кода, соответствующих той же частоте букв в текстовых сообщениях с использованием частотного анализа . В приведенном выше примере кодовая группа 1001, 1002, 1003 может встречаться более одного раза, и эта частота может соответствовать количеству раз, которое ABC встречается в текстовых сообщениях.

(В прошлом или в нетехническом контексте термины «код» и «шифр» часто использовались для обозначения любой формы шифрования ).

Одно- и двухкомпонентные коды

Коды определяются «кодовыми книгами» (физическими или условными), которые представляют собой словари кодовых групп, перечисленных с соответствующим им открытым текстом. Первоначально кодовые группы были назначены в «порядке открытого текста» для удобства разработанного кода или кодировщика. Например, в коде, использующем числовые кодовые группы, слово открытого текста, начинающееся с «a», будет иметь группу с низким значением, в то время как слово, начинающееся с «z», будет иметь группу с высоким значением. Та же самая кодовая книга может использоваться для «кодирования» сообщения открытого текста в кодированное сообщение или «кодовый текст» и «декодирования» кода обратно в сообщение открытого текста.

Чтобы усложнить жизнь дешифровальщикам, шифровальщики разработали коды без предсказуемой связи между кодовыми группами и порядком соответствующего открытого текста. На практике это означало, что теперь требовались две кодовые книги, одна для поиска кодовых групп для кодирования, другая для поиска кодовых групп для поиска открытого текста для декодирования. Такие «двухчастные» коды требовали больше усилий для разработки и в два раза больше усилий для распространения (и безопасного удаления при замене), но их было сложнее взломать. Телеграмма Циммермана в январе 1917 года использовала немецкую дипломатическую двухчастную кодовую систему «0075», которая содержала свыше 10 000 фраз и отдельных слов. [3]

Одноразовый код

Одноразовый код — это заранее подготовленное слово, фраза или символ, который предназначен для использования только один раз, чтобы передать простое сообщение, часто сигнал для выполнения или отмены какого-либо плана или подтверждения его успеха или провала. Одноразовые коды часто разрабатываются для включения в то, что, казалось бы, является невинным разговором. При правильном использовании их почти невозможно обнаружить, хотя обученный аналитик, отслеживающий сообщения человека, который уже вызвал подозрения, может распознать комментарий типа «У тети Берты начались роды», как имеющий зловещий смысл. Известные примеры одноразовых кодов включают:

Иногда сообщения не готовятся заранее и полагаются на общие знания, которые, как мы надеемся, известны только получателям. Примером может служить телеграмма, отправленная президенту США Гарри Трумэну , который тогда находился на Потсдамской конференции , чтобы встретиться с советским премьером Иосифом Сталиным , информирующая Трумэна о первом успешном испытании атомной бомбы .

«Оперирован сегодня утром. Диагноз еще не поставлен, но результаты кажутся удовлетворительными и уже превосходят ожидания. Необходим местный пресс-релиз, поскольку интерес распространяется на большие расстояния. Доктор Гроувс доволен. Он вернется завтра. Я буду держать вас в курсе».

См. также одноразовый блокнот , не связанный с этим алгоритм шифрования.

Код идиота

Код идиота — это код, который создается сторонами, использующими его. Этот тип коммуникации сродни ручным сигналам, используемым армиями в полевых условиях.

Пример: Любое предложение, где используются «день» и «ночь», означает «атака». Место, упомянутое в следующем предложении, указывает место, которое будет атаковано.

Вероятно, одним из первых этот термин использовал Жорж Перро, персонаж научно-фантастического романа « Пятница » [5] Роберта А. Хайнлайна :

Самый простой вид [кода] и, следовательно, не поддающийся взлому. Первая реклама говорила человеку или лицам, которых это касается, выполнить номер семь или ожидать номер семь, или что-то говорилось о чем-то, обозначенном как семь. Эта говорит то же самое относительно элемента кода номер десять. Но значение чисел не может быть выведено с помощью статистического анализа, потому что код может быть изменен задолго до того, как будет достигнута полезная статистическая вселенная. Это идиотский код... и идиотский код никогда не может быть взломан, если у пользователя есть здравый смысл не ходить слишком часто к колодцу.

Эксперт по терроризму Магнус Рансторп заявил, что люди, осуществившие атаки 11 сентября на Соединенные Штаты, использовали обычную электронную почту и то, что он называет «идиотским кодом», чтобы обсуждать свои планы. [6]

Криптоанализ кодов

В то время как разгадывание моноалфавитного подстановочного шифра является простым, разгадывание даже простого кода является сложным. Расшифровка закодированного сообщения немного похожа на попытку перевода документа, написанного на иностранном языке, причем задача в основном сводится к созданию «словаря» кодовых групп и слов открытого текста, которые они представляют.

Одной из опор в простом коде является тот факт, что некоторые слова встречаются чаще других, например, "the" или "a" в английском языке. В телеграфных сообщениях кодовая группа для "STOP" (т. е. конец предложения или абзаца) обычно очень распространена. Это помогает определить структуру сообщения в терминах предложений, если не их смысла, и это полезно с точки зрения криптоанализа.

Дальнейший прогресс в отношении кода может быть достигнут путем сбора множества текстов кода, зашифрованных с помощью одного и того же кода, а затем использования информации из других источников.

Например, конкретная кодовая группа, встречающаяся почти исключительно в сообщениях от определенной армии и больше нигде, может вполне указывать на командующего этой армией. Кодовая группа, которая появляется в сообщениях, предшествующих атаке на определенное место, вполне может обозначать это место.

Шпаргалки могут быть немедленной раздачей определений кодовых групп. По мере определения кодовых групп они могут постепенно накапливать критическую массу, при этом все больше и больше кодовых групп раскрываются из контекста и обоснованных догадок. Однокомпонентные коды более уязвимы для таких обоснованных догадок, чем двухкомпонентные коды, поскольку если кодовый номер "26839" однокомпонентного кода определен как "бульдозер", то меньший кодовый номер "17598", скорее всего, будет обозначать открытое текстовое слово, начинающееся с "a" или "b". По крайней мере, для простых однокомпонентных кодов.

Различные трюки могут быть использованы для " подбрасывания " или "посеивания" информации в закодированное сообщение, например, путем проведения рейда в определенное время и в определенном месте против врага, а затем изучения кодовых сообщений, отправленных после рейда. Ошибки кодирования являются особенно полезным способом проникновения в код; люди надежно делают ошибки, иногда катастрофические. Подбрасывание данных и эксплуатация ошибок также работают против шифров.

Создание нового кода похоже на создание нового языка и написание словаря для него; это была особенно большая работа до появления компьютеров. Если код скомпрометирован, всю задачу придется выполнять заново, а это означает много работы как для криптографов, так и для пользователей кода. На практике, когда коды широко использовались, их обычно периодически меняли, чтобы помешать взломщикам кодов и ограничить срок службы украденных или скопированных кодовых книг.

После создания кодов распространение кодовых книг становится логистически неуклюжим и увеличивает вероятность того, что код будет скомпрометирован. Существует поговорка: «Три человека могут хранить секрет, если двое из них мертвы» (Бенджамин Франклин - Wikiquote), и хотя это может быть некоторым преувеличением, секрет становится сложнее хранить, если он доступен нескольким людям. Коды можно считать достаточно безопасными, если их используют только несколько осторожных людей, но если целые армии используют одну и ту же кодовую книгу, безопасность становится намного сложнее.

Напротив, безопасность шифров, как правило, зависит от защиты ключей шифра. Ключи шифра могут быть украдены, и люди могут их предать, но их гораздо легче изменить и распространить.

Супершифрование

Было принято шифровать сообщение после его предварительного кодирования, чтобы увеличить сложность криптоанализа. С числовым кодом это обычно делалось с помощью «добавки» — просто длинного ключевого числа, которое цифра за цифрой добавлялось к группам кода по модулю 10. В отличие от кодовых книг, добавки часто менялись. Знаменитый японский военно-морской код JN-25 имел такую ​​конструкцию.

Ссылки

  1. ^ История безопасности коммуникаций США; Лекции Дэвида Г. Боука, архив 2016-09-18 в Wayback Machine , Агентство национальной безопасности (АНБ), том I, 1973, том II, 1981, частично выпущены в 2008, дополнительные части рассекречены 14 октября 2015
  2. ^ "16.2: Подстановочные шифры". Mathematics LibreTexts . 2020-01-22. Архивировано из оригинала 2021-09-19 . Получено 2021-09-19 .
  3. ^ "Телеграмма Циммермана: Первоначальный черновик" Архивировано 27.04.2021 на Wayback Machine , 2007, Иоахим фон цур Гатен, "Cryptologia", том 31, выпуск 1
  4. ^ 1 Царств 20:20-22
  5. Пятница (1982) Роберта А. Хайнлайна
  6. Радио Свободная Европа / Радио Свобода: «Ближний Восток: исламские боевики переносят джихад в Интернет». Джеффри Донован. Архивировано 15 января 2008 г. на Wayback Machine , 16 июня 2004 г.

Источники

Смотрите также