Содержание: Радиоперехват | Немного теории | Шифр JN-25
Новая японская шифросистема 海軍暗号書D (кайгун анго сё D – военно-морская кодовая книга D), названная американцами сначала просто «пятизначной», а затем получившая рабочее обозначение «JN-25» (т.е. «25-й японский военно-морской») была введена в Императорском японском флоте 1 июня 1939 г. и представляла собой двухуровневый шифр, где исходный текст сначала кодировался, а затем шифровался. При работе с этой шифросистемой использовались две основные книги:
1. Кодовая книга. Своего рода словарь из около 27,5 тысяч значимых слов, специальных терминов и словосочетаний, каждому из которых соответствовала произвольно выбранная группа из пяти цифр. Книга была структурирована как обычный «двусторонний» словарь – в первой её части (предназначенной для кодирования) находились слова и фразы, записанные уже не с помощью фонетического алфавита катакана, как в японском телеграфном коде, а нормальным образом – иероглифами кандзи, хотя иноязычные термины – имена кораблей и географические названия – писались как катаканой, так и латинскими буквами. Они располагались в принятом для японских словарей порядке. Во второй части (предназначенной уже для декодирования) – был обратный порядок сортировки, и пункты были расположены уже по цифрам, в порядке увеличения.
2. Шифротаблицы. Набор расположенных в случайном порядке групп из пяти цифр, помещённых на каждой странице в таблицы, с пронумерованными строками и столбцами.
Практическое использование шифросистемы выглядело следующим образом. Шифровальщик брал исходный текст сообщения и заменял слова на соответсвующие им группы из пяти цифр из кодовой книги, записывая их в ряд. Когда строка заполнялась, две следующие строки пропускались и запись продолжалась. Далее начиналось собственно шифрование – шифровальщик брал уже шифротаблицы и с места, определяемого инструкцией по применению шифра (например, для данного дня это была страница 23, строка 7, столбец 4), начинал под каждой пятизначной комбинацией кода выписывать группы также из пяти цифр, взятые из шифротаблицы.
После чего оставалось лишь сложить «в столбик» цифры, что находились друг над другом, выкидывая «лишние» десятки (в криптографии это называется ложным сложением) – и текст зашифрован. К готовой шифрограмме добавлялся «ключ», метка, позволяющая получателю определить, с какой страницы, строки и столбца шифротаблицы нужно начинать брать цифры, что следует уже вычитать из принятых пятизначных групп (соответственно, теперь уже с помощью ложного вычитания, когда «недостающие» десятки берутся «из воздуха»), чтобы получить кодированный текст, который с помощью той же кодовой книги (теперь уже второй её части) опять превращался в осмысленное сообщение.
Кроме того, такие важные элементы сообщений как географические координаты уже на уровне исходного текста указывались не в градусах и минутах, а «по сетке» – специальными сочетаниями из трёх символов катакана и двузначного числа. Затем каждый из символов кодировался уже обычным порядком с помощью кодовой книги. Примерно так же обстояло дело с географическими наименованиями, а также датами и временем. В результате, наиболее критичная информация перед шифрованием подвергалась двойному кодированию, то есть, местами шифросистема превращалась уже в трёхуровневую:
В целом, это была неплохая для того времени шифросистема. Но у неё имелся существенный недостаток: разработчики не могли не учитывать несовершенство тогдашнего радиооборудования, а также «человеческий фактор», поэтому они решили встроить механизм проверки правильности приёма сообщения в саму шифросистему. Людям, хотя бы поверхностно знакомым с современными технологиями передачи данных, хорошо известен термин checksum – проверка контрольной суммы.
В шифре JN-25 эта процедура была встроена в каждую пятизначную группу, причём очень простым и надёжным образом – сумма всех пяти цифр каждой «правильной» группы кодированного текста обязана была делиться на три без остатка. Но это не только значительно сократило количество групп из пяти цифр, которые можно было использовать в кодовой книге (ровно в три раза, со 100 000 до 33 334), но и, что самое неприятное, этот механизм проверки был унаследован JN-25 от более ранних и гораздо более примитивных японских двухуровневых шифросистем, давно взломанных американскими криптоаналитиками.
Другой недостаток был скорей административным. Когда сотни кораблей, подводных лодок, вспомогательных судов и военно-морских баз разбросаны по огромному пространству от северных Курил до Новой Гвинеи, смена шифров становится не самой простой задачей. Надо ведь не только составить и отпечатать новые шифровальные книги, но и доставить их всем «абонентам», причём с соблюдением серьёзных мер безопасности, так как попадание в руки противника даже одного экземпляра делает бессмысленной всю эту операцию. А подобные замены жизненно необходимы – хотя в случае шифров статистический анализ и не является столь же быстрым и сокрушительным оружием, как в случае «просто кодов», но общее правило остаётся всё тем же: чем больше времени и материала для анализа, тем выше вероятность, что шифр в конце концов будет взломан.
Нельзя сказать, что японцы этого не осознавали. Но, во-первых, замены шифров носили половинчатый характер – полностью заменялись лишь шифротаблицы, а самой «Кодовой книги» изменения коснулись всего один раз, да и то речь шла не о полной её замене, а лишь о расширении «словаря», так что союзникам ни разу не пришлось начинать взлом каждой новой версии шифра JN-25 «с чистого листа».
Во-вторых, периодичность этих замен оставляла желать лучшего: Первая версия шифра использовалась 18 месяцев (01.06.39 – 01.12.40), вторая – 12 месяцев (02.12.40 – 04.12.41), третья (та что, собственно, и позволила «вычислить» планы Мидуэйской операции) – 6 месяцев (05.12.41 – 26.05.42) и т. д. Эта третья замена была запланирована ещё на 1 мая 1942 г., и если бы не задержка с доставкой новых шифротаблиц именно в тот период, когда в эфир шла информация о предстоящей Мидуэйской операции – история Тихоокеанской войны могла бы быть совершенно другой.
Содержание: Радиоперехват | Немного теории | Шифр JN-25