Зашифрованное сообщение alos arfxi idymmy alsetr

Обновлено: 21.05.2024

Positive Hack Days CTF — международные соревнования по защите информации, которые проводятся по игровому принципу Capture the Flag. Несколько команд в течение заранее отведенного времени защищают свои сети и атакуют чужие. Основная задача участников — выявлять уязвимости в системах противников и получать доступ к секретной информации (флагам), при этом обнаруживая и устраняя подобные уязвимости в своей системе.

В сегодняшнем топике мы представим разбор некоторых интересных заданий, с которыми сталкивались участники прошедших соревнований.

История и география

В этом году PHDays CTF состоится уже в четвертый раз. Впервые соревнования прошли во время форума Positive Hack Days в 2011 году, тогда победителями стали участники американской команды PPP, в следующем году победила российская команда Leet More, а на PHDays III чемпионами стали Eindbazen из Голландии. Каждый год в PHDays CTF принимают участие команды со всего мира — от США до Японии.

Для участия в отборочных соревнованиях в этом году зарегистрировалось больше 600 команд.

image

Задания и атмосфера

По сложившейся традиции игровые задания и инфраструктура подготавливаются в соответствии с легендой соревнований — специальной сюжетной линией, которая превращает простой набор задач PHDays CTF в увлекательное состязание, у которого есть цель. Например, в прошлом году участники спасали от гибели вымышленный мир D’Errorim. Предстоящие соревнования продолжат этот сюжет.

Задания соревнований, как правило, основаны на реальных прототипах: уязвимости, заложенные в задания и сервисы CTF, можно встретить в различных системах в реальной жизни. Соревнования PHDays CTF интересны и оригинальными игровыми механиками, которые делают возможной реализацию разных и непохожих друг на друга стратегий ведения игры (подробнее на сайте PHDays).

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

Разбор

Квалификационный этап соревнования (PHDays CTF Quals) относится к типу task-based CTF, то есть команды должны решать задания и получать за них очки. Задания могут относиться к одной из следующих категорий:

  • Forensic — компьютерно-криминалистическая экспертиза,
  • Reverse (reverse engineering) — анализ бинарного кода,
  • Pwn — эксплуатация уязвимостей,
  • Admin — навыки администрирования,
  • Network — знание сетевой инфраструктуры и протоколов,
  • Crypto — криптография,
  • Stegano — стеганография,
  • PPC (professional programming and coding) — олимпиадное программирование,
  • Web — поиск и использование веб-уязвимостей,
  • Misc — разное.

Неочевидные задания

image

В нашем случае все несколько иначе. Если открыть предложенный файл в текстовом редакторе, то он выглядит вот так:

В начале файла располагаются метаданные в формате ID3. Сначала идет тег TRCK (track number), а потом — какие-то куски текста:

RGB7 5,183, NULL RGB6 0,42,159 RGB5 194,244,68 RGB4 47,77,6 RGB3 44,73,141 RGB2 140,207,72 RGB1 120,156,203

Эту информацию можно разбить на семь записей (от RGB7 до RGB1):

RGB7 5,183, NULL
RGB6 0,42,159
RGB5 194,244,68
RGB4 47,77,6
RGB3 44,73,141
RGB2 140,207,72
RGB1 120,156,203

После каждого из RGB-идентификаторов стоит три значения. Обычно это числа, но в одном случае — NULL. Легко предположить, что это массив записей, каждая из которых содержит до трех однобайтовых значений. Можно записи отсортировать, объединить, превратить десятичные коды в символы и вывести в шестнадцатеричном виде, например, при помощи вот такой программы:

>>> a = [120,156,203, 140,207,72, 44,73,141, 47,77,6, 194,244,68, 0,42,159, 5,183]
>>> print "".join(map(chr, a)).encode("hex")

В результате получим:

Шестнадцатеричная последовательность начинается с байтов с кодами 0x78 0x9С, а это подсказывает нам, что используется алгоритм сжатия данных zlib. Если использовать zlib в режиме компрессии с параметрами по умолчанию, выходная последовательность будет начинаться именно с этих байтов.


И тогда будет выведен текст:

i_hate_ucucuga

Именно этот флаг нужно было отослать организаторам соревнований.

Неправильная криптография

Задание называется mars, можно предположить, что это означает Modified RSA.

Если это действительно что-то похожее на RSA, то ci = pow(mi, ei, ni). Требуется найти m1 и m2.
pow — функция модульного возведения в степень, pow(val, еxp, modulus) == val exp % modulus.

Согласно алгоритму RSA:

  • mi = pow(ci, di, ni),
  • di*ei ≡ 1 mod φ(ni),
  • ni — произведение нескольких простых чисел,
  • φ(n) — функция Эйлера, количество натуральных чисел взаимно простых с n и меньших n.

Воспользуемся реализацией расширенного алгоритма Евклида на Python:


Найдем НОД (наибольший общий делитель) чисел n1 и n2:


НОД(n1, n2) имеет длину 1024 бита. Найдем другие делители чисел n1 и n2:


p1 и p2 — простые числа длиной 512 бит, gcd — составное число длиной 1024 бита (скорее всего 512*512), и оно также слишком велико для факторизации…

Криптографическое задание secc

Дано: архив source.tar.gz, содержащий файлы ecc.py и task.py, в которых содержится схема верификации ключа, реализованная с помощью эллиптической криптографии. Известно, что подключившись по адресу 195.133.87.171 на порт 5555, можно установить соединение с каким-то сервером:

nc 195.133.87.171 5555
password: secch4l*

Поскольку даны исходники, то стоит начать с их анализа. Можно их даже запустить.
Так как у меня не было модуля libnum, пришлось написать его самому. В нем достаточно реализовать уже упомянутую ранее функцию модульной инверсии и используемый ею расширенный алгоритма Евклида:


Итак, функция main из task.py :

Следующий фрагмент кода соединяется с сервером, отправляет пароль, получает префикс, вычисляет и отправляет ответ:


После выполнения этого кода на стороне клиента сервер выполняет функцию goflag(), выводящей примерно следующий текст:

EC PASSWORD CHECK
R = 572115218124168948525078362547166172445820217705568707355669424304224832114
SHARED SECRET = R ^ PASSWORD
ENCRYPTED MESSAGE: 7a93846a011e0d0382e94f32d705239e6298169dcec20da5d6

Что же происходит в функции goflag из task.py :


Используется асимметричная криптография на эллиптических кривых. Выбрана кривая P-256, рекомендованная NIST. Реализация операций над точками кривой не содержит очевидных уязвимостей.

Мы знаем значение R, но без знания значения PASSWORD (которое читается сервером из файла password.txt) мы не можем вычислить S. Знание S позволило бы нам легко вычислить key. Так может быть шифрование реализовано с ошибкой?

Функция encrypt из task.py :

Функция derive из task.py:


Оказывается, значение точки S (состоящее из двух координат — x и y) используется как вход SHA-256. Фактически на вход хеша подается значение str(int(x*1024/y)). Так как x и y имеют близкие значения (это большие целые числа), то результат арифметических действий должен близок к 1024 (хотя может и превышать его в разы).

Реверс-инжиниринг. Shadelt900

Обратная разработка — еще одна популярная категория заданий. Помимо CTF, в конкурсной программе PHDays присутствует конкурс Best Reverser.

Задание Shadelt900, так же как и три предыдущих, было частью программы PHDays IV CTF Quals, прошедших в январе 2014 года. Команды должны были расшифровать изображение под названием 'derrorim_enc.bmp'. Было известно средство, примененное для его зашифрования, — оно как раз и называется Shadelt9000.exe, но декриптор обнаружить не удалось. Вот это изображение:

image

При ближайшем рассмотрении файла Shadelt9000.exe становится ясно, что приложение использует OpenGL. Также есть копирайт inflate 1.2.8 Copyright 1995-2013 Mark Adler, указывающий на то, что в программе используется популярная библиотека компрессии zlib.

Если в дизассемблере посмотреть, откуда идут обращения к функциям zlib, можно довольно быстро найти вот такой кусок кода:

image

По адресам 0x47F660 и 0x47F7B8 расположены массивы данных, упакованные zlib. Распакуем их:


После распаковки файл 1.txt содержит пиксельный шейдер:

Файл 2.txt содержит вершинный шейдер:


Главная информация о пиксельном шейдере выделена красным:

image

В переменной t оказывается текущий элемент обрабатываемой текстуры (входного файла),
а в переменной g — текущий элемент гаммы (сгенерированной псевдослучайным образом).
В переменной s мы видим некоторое значение, используемое позже для циклического сдвига s.
Выходное значение фактически вычисляется как

Причем если запускать программу несколько раз с одним и тем же входным файлом, то для каждого элемента значение g будет меняться от запуска к запуску, а t и s будут оставаться одними и теми же.

Найдем, как генерируется гамма:


Видно, что она зависит от текущего времени.

Из исходного архива можно узнать, что файл derrorim_enc.bmp создан 21.01.2014 в 18:37:52.
Получаем значение, которое в тот момент вернула бы функция time():

Теперь копируем файл ShadeIt9000.exe в ShadeIt9000_f.exe и исправляем его.

По смещению 00015557 надо байты

Это эквивалентно замене

call _time на mov eax,52de8640h .

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


В файле 00_enc.bmp окажется результат зашифрования картинки, состоящий из нулевых байтов. Это и будет гамма в чистом виде.

В файле XX_enc.bmp окажется результат зашифрования картинки, состоящий из байтов со значением 2. Это поможет нам узнать, на сколько битов циклически сдвигался каждый байт.

Наконец, расшифровыванием Shadelt9000:

image

Выше был описан верный, но не самый эффективный путь решения задания. Есть способ короче.

Сразу за вершинным шейдером по адресам 0x47F848 и 0x47F9A0 лежит упакованный zlib-код пиксельного и вершинного шейдера для выполнения обратного преобразования. Возможно, он был случайно забыт разработчиком задания. А может и оставлен намеренно.

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

Копируем ShadeIt9000_f.exe в ShadeIt9000_d.exe и исправляем его:

00015775: 60 F6 ==> 48 F8

Затем запускаем ShadeIt9000_d.exe derrorim_enc.bmp. И получаем на выходе расшифрованный файл derrorim_enc_enc.bmp, который (за исключением мелких артефактов) совпадает с тем, который мы расшифровали скриптом на Python.

На сегодня все! Всем спасибо за внимание, будем рады ответить на вопросы в комментариях.

Напоминаем, что финал PHDays IV CTF состоится 21 и 22 мая во время проведения форума Positive Hack Days. Следить за ходом соревнований можно будет не только непосредственно на площадке, но и с помощью мобильных приложений. Следите за новостями!

P. S. Архив всех заданий PHDays CTF и CTF Quals можно найти на сайте PHDays. Так что, если есть желание испытать себя — вперед!

Шифр Цезаря, также известный как шифр сдвига, код Цезаря или сдвиг Цезаря — один из самых простых и наиболее широко известных методов шифрования.

Шифр Цезаря — это вид шифра подстановки, в котором каждый символ в открытом тексте заменяется символом находящимся на некотором постоянном числе позиций левее или правее него в алфавите. Например, в шифре со сдвигом 3 А была бы заменена на Г, Б станет Д, и так далее.

Шифр Цезаря

Шифр Цезаря со сдвигом на 3 (английский алфавит):

A заменяется на D

B заменяется на E

Z заменяется на C

Шифр назван в честь римского императора Гая Юлия Цезаря, использовавшего его для секретной переписки со своими генералами.

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

Стандартные шифры

Сумели? Напишите в комментариях, что у вас получилось.

Шифр транспонирования

Ещё можно использовать столбчатый шифр транспонирования, в котором каждый символ написан горизонтально с заданной шириной алфавита, а шифр создаётся из символов по вертикали. Пример:

Из этого способа мы получим шифр holewdlo lr. А вот столбчатая транспозиция, реализованная программно:

Азбука Морзе

Азбука Морзе: кириллица

В азбуке Морзе каждая буква алфавита, цифры и наиболее важные знаки препинания имеют свой код, состоящий из череды коротких и длинных сигналов:
Чаще всего это шифрование передаётся световыми или звуковыми сигналами.

Шифр Цезаря

Это не один шифр, а целых 26, использующих один принцип. Так, ROT1 — лишь один из вариантов шифра Цезаря. Получателю нужно просто сообщить, какой шаг использовался при шифровании: если ROT2, тогда А заменяется на В, Б на Г и т. д.

А здесь использован шифр Цезаря с шагом 5:

Моноалфавитная замена

Коды и шифры также делятся на подгруппы. Например, ROT1, азбука Морзе, шифр Цезаря относятся к моноалфавитной замене: каждая буква заменяется на одну и только одну букву или символ. Такие шифры очень легко расшифровываются с помощью частотного анализа.

Шифр Виженера

Шифр Виженера

Чтобы расшифровать шифр Виженера, для начала угадывают длину кодового слова и применяют частотный анализ к каждой n-ной букве послания.

Попробуйте расшифровать эту фразу самостоятельно:

Подсказка длина кодового слова — 4.

Шифр Энигмы

Есть несколько колёс и клавиатура. На экране оператору показывалась буква, которой шифровалась соответствующая буква на клавиатуре. То, какой будет зашифрованная буква, зависело от начальной конфигурации колес.

Цифровые шифры

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

Двоичный код

Шифр A1Z26

Это простая подстановка, где каждая буква заменена её порядковым номером в алфавите. Только нижний регистр.

Попробуйте определить, что здесь написано:

Шифрование публичным ключом

шифр публичным ключом

Алгоритм шифрования, применяющийся сегодня буквально во всех компьютерных системах. Есть два ключа: открытый и секретный. Открытый ключ — это большое число, имеющее только два делителя, помимо единицы и самого себя. Эти два делителя являются секретным ключом, и при перемножении дают публичный ключ. Например, публичный ключ — это 1961, а секретный — 37 и 53.

Как-то RSA выделила 1000 $ в качестве приза тому, кто найдет два пятидесятизначных делителя числа:

Почувствуйте себя детективом: сможете разгадать эти 10 шифров и кодов?

Как расшифровать код или шифр?

Для этого применяются специальные сервисы. Выбор такого инструмента зависит от того, что за код предстоит расшифровать. Примеры шифраторов и дешифраторов:

Шифр ADFGVX. 8 Квантовый прыжок в будущее. Книга шифров. Тайная история шифров и их расшифровки.

Шифр ADFGVX. 8 Квантовый прыжок в будущее. Книга шифров. Тайная история шифров и их расшифровки.

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

Шифр ADFGVX. 8 Квантовый прыжок в будущее. Книга шифров. Тайная история шифров и их расшифровки.

В этом виде шифртекст будет затем передан с помощью кода Морзе; получателю, чтобы восстановить первоначальный текст, потребуется выполнить действия, обратные зашифровыванию. Шифртекст состоит всего лишь из шести букв (т. е. А, D, F, G, V, X), так как этими буквами обозначаются строки и столбцы исходной сетки 6 x 6. Люди часто удивляются, почему были выбраны именно эти буквы, а не, скажем, А, В, С, D, Е и F. Все дело в том, что если буквы А, D, F, G, V и X представить в виде точек и тире кода Морзе, то они будут существенно отличаться одна от другой; тем самым выбор этих букв минимизирует опасность появления ошибок во время передачи.

Приложение G.

Слабости повторного использования одноразового шифрблокнота.

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

Восстанавливая фрагменты слов, которые мы отыскали во втором открытом тексте, до полных слов, мы можем узнать больше об одноразовом шифрблокноте, а затем выявить новые фрагменты в первом открытом тексте. Путем восстановления этих фрагментов в первом открытом тексте, мы можем узнать еще больше об одноразовом шифрблокноте, а затем определить новые фрагменты во втором открытом тексте. Мы можем продолжать этот процесс до тех пор, пока не расшифруем оба открытых текста.

Приложение H.

8 Квантовый прыжок в будущее. Книга шифров. Тайная история шифров и их расшифровки.

Упражнения для заинтересовавшихся читателей.

Некоторые самые значительные дешифрования в истории были сделаны непрофессионалами. Так, Георг Гротефенд, положивший начало дешифрованию клинописи, был школьным учителем. Для тех читателей, кого влечет последовать по его стопам, есть несколько письменностей, которые по-прежнему представляют загадку. Линейное письмо А — минойская письменность — успешно противостоит всем попыткам дешифрования, отчасти из-за недостаточности материала. Этрусская письменность не страдает от этой проблемы — для изучения имеется более 10 000 надписей, — но и она также ставит в тупик ученых с мировым именем. Равно непостижимо и иберийское письмо — еще одна доримская письменность.

За пределами Европы одной из самых значительных задач является дешифрование письменности бронзового века протоиндийской цивилизации, которую можно обнаружить на тысячах печатей, начиная с третьего тысячелетия до н. э. На каждой печати изображено какое-либо животное и имеется короткая надпись, но что они означают — до сих пор ставит в тупик всех специалистов. В одном необычном случае надпись обнаружили на большой деревянной доске, и она была выполнена гигантскими буквами 37 см высотой. Это мог быть самый древний в мире рекламный щит. Что, в свою очередь, означает, что грамотность не являлась привилегией исключительно элиты, и возникает вопрос, о чем же говорится в объявлении? Вероятнее всего, что это была часть рекламной кампании по выборам короля, и если бы можно было установить его личность, то этот рекламный щит проложил бы путь к остальной части письменности.

Приложение J.

Математика RSA.

Ниже в несложном виде дается математическое описание принципа шифрования и дешифрования с помощью RSA.

(1) Алиса выбирает два гигантских простых числа р и q. Простые числа должны быть громадными, но мы, для простоты, предположим, что Алиса выбрала числа р = 17, q = 11. Она должна хранить эти числа в секрете.

(2) Алиса перемножает их и получает число N. В нашем случае N = 187. Теперь она выбирает еще одно число — е; в нашем случае она выбрала е = 7.

(е и (р- 1) х (q — 1) должны быть взаимно простыми[39], но это — техническая сторона дела).

(5) Представьте, что Боб хочет послать Алисе простой поцелуй — всего лишь букву X. В ASCII-коде она представляется числом 1011000, которое эквивалентно 88 в десятичном виде. Поэтому М — 88.

С = 88 7 (mod 187).

88 7 (mod 187) = [88 4 (mod 187) х 88 2 (mod 187) х 88 1 ] (mod 187)] (mod 187) 88 1 = 88 = 88 (mod 187).

88 2 = 7744 = 77 (mod 187).

88 4 = 59969536 = 132 (mod 187).

88 7 = 88 1 х 88 2 х 88 4 = 88 х 77 х 132 = 894432 = 11 (mod 187).

Теперь Боб отправляет Алисе зашифрованный текст: С = 11.

(9) Алиса, однако, способна расшифровать его, поскольку у нее есть определенная специальная информация: ей известны значения р и q. Она вычисляет особое число d — ключ для расшифровывания, иначе известный как ее секретный ключ. Число d рассчитывается по следующей формуле:

7 Х d (mod 16 $x 10).

7 X d = 1 (mod 160).

(Вычислить значение d не просто, но с помощью метода, известного как алгоритм Евклида, Алиса сможет быстро и без труда найти d.).

M = [11 1 (mod 187) х 11 2 (mod 187) х 11 4 (m od 187) х 11 16 (mod 187)] (mod 187).

M = 11 х 121 х 55 х 154 (mod 187).

М = 88 = Х в виде ASCII-кода.

Словарь специальных терминов.

ASCII — американский стандартный код для обмена информацией; стандарт для перевода букв и других символов в числа.

DES — стандарт шифрования данных, разработан IBM и принят в качестве стандарта в 1976 году.

RSA — первая система, которая удовлетворяла условиям шифрования с открытым ключом; была придумана Роном Ривестом, Ади Шамиром и Леонардом Адлеманом в 1977 году.

Агентство национальной безопасности (АНБ) — подразделение министерства обороны США, отвечающее за безопасность американских средств связи и за проникновение в линии связи других стран.

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

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

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

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

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

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

Криптоанализ — наука получения открытого текста из шифртекста без знания ключа.

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

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

Криптология — наука тайнописи во всех ее проявлениях; включает в себя как криптографию, так и криптоанализ.

Многоалфавитный шифр замены — шифр замены, при котором шифралфавит меняется в процессе шифрования, например, шифр Виженера. Изменение шифралфавита задается ключом.

Одноалфавитный шифр замены — шифр замены, при котором шифралфавит остается неизменным на протяжении всего процесса шифрования.

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

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

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

Благодарности.

При написании этой книги мне выпала честь встретиться с некоторыми из самых выдающихся в мире создателей кодов и теми, кто их взламывает, начиная с тех, кто трудился в Блечли-Парке, до тех, кто и в настоящее время разрабатывает шифры, которые обогатят информационный век. Я бы хотел поблагодарить Уитфилда Диффи и Мартина Хеллмана, выбравших время, чтобы рассказать мне, когда я был в солнечной Калифорнии, о своей работе. Точно также в огромной степени помогли мне Клиффорд Кокс, Малькольм Уильямсон и Ричард Уолтон во время моей поездки в хмурый Челтенхем. В частности, я выражаю признательность группе информационной безопасности колледжа Ройял Холоуэй в Лондоне, позволившей мне посетить магистерский курс по информационной безопасности. Профессор Фред Пайпер, Саймон Блэкберн, Джонатан Тулиани и Фозан Мирца — все они дали мне бесценные знания о кодах и шифрах.

Когда я был в Вирджинии, мне повезло, и я совершил экскурсию по следам сокровища Биля под руководством Питера Виемейстера, знатока этой загадки. Кроме того, музей округа Бедфорд и Стивен Коварт из Ассоциации шифров Биля и сокровищ помогли мне провести исследование данного предмета. Я также благодарен Дэвиду Дойчу и Мишель Моска из оксфордского центра квантовых вычислений, Чарльзу Беннету и его группе из исследовательской лаборатории Томаса Дж. Уотсона компании IВМ, Стивену Виснеру, Леонарду Адлеману, Рональду Ривесту, Паулю Ротемунду, Джиму Джиллольи, Паулю Лейланду и Нейлу Барретту.

Я бы посоветовал читателям посетить национальный криптологический музей неподалеку от Вашингтона в округе Колумбия и бункер Черчилля в Лондоне, и надеюсь, что вы будете столь же увлечены, как и я во время своего приезда. Благодарю хранителей и библиотекарей этих музеев за помощь в моих исследованиях. Когда мне не хватало времени, Джеймс Ховард, Бинду Матур,

Наконец, мне выпала огромная удача работать с некоторыми из превосходных людей в издательской системе. Патрик Уолш — это агент, отличающийся любовью к науке, заботой о своих авторах и безграничным энтузиазмом. Он связал меня с самыми лучшими и самыми талантливыми издателями — это, главным образом, касается Fourth Estate, чьи сотрудники сносят мой постоянный поток вопросов с большим присутствием духа. Последнее, но не менее важное, — мои редакторы Кристофер Поттер, Лео Холлис и Петернелле ван Арсдале — помогли мне следовать ясным путем по предмету, чей путь сквозь три тысячелетия был так извилист. За это я благодарен чрезвычайно.

Примечания.

В английском языке слово codebreaker употребляется в значении взлома и кодов, и шифров, слово же ciphbreaker практически не используется; в русском языке в указанном значении слово дешифровальщик является, по-видимому, более распространенным, чем взломщик кодов, поэтому в переводе книги использовалось слово дешифровальщик. — Прим. пер.

Клеомен — царь Лаконики в 520–491 гг. до н. э. — Прим. пер.

Леонид I — царь Лаконики в 491–480 гг. до н. э. — Прим. пер.

Правительница города Геликарнас, в этой битве командовала отрядом кораблей персидского флота. — Прим. пер.

Персидский сатрап и военачальник. — Прим. пер.

Рассматривается алфавит с 26 буквами. — Прим. пер.

В иврите отдельных букв для гласных звуков нет. — Прим. пер.

Восстание 1536—37 гг. на севере Англии, охватившее Йоркшир и соседние графства; проходило под религиозными лозунгами — за восстановление католицизма и монастырей. — Прим. пер.

Отче! В руки Твои предаю дух мой. — Прим. пер.

Здесь и далее, если не оговаривается особо, имеются в виду Россия, Франция, Великобритания и присоединившиеся к ним в ходе Первой мировой войны другие государства. — Прим. пер.

Адрес на открытке — 184, King’s Road, Tighnabruaich, Scotland; Третья книга царств — First Book of Kings. — Прим. пер.

Применяется также термин одноразовый криптографический ключ или криптографический ключ одноразового использования. — Прим. пер.

В ряде публикаций он упоминается, как генерал Максимилиан Чиецкий. — Прим. пер.

Воздушные бои в 1940–1941 гг. — Прим. пер.

Иногда ее называют дифференциальный вычислитель. — Прим. пер.

Криб — наиболее вероятный вариант открытого текста для некоторого отрезка шифрованного текста. — Прим. пер.

Agnus Dei — Агнец божий, Agnes — Агнес (женское имя). — Прим. пер.

25 Октября 1415 года (в День Святого Криспина) Генрих V разбил французские войска в битве при Азенкуре. — Прим. пер.

Видимо, фонемы. — Прим. пер.

По-видимому, автор имел в виду идеограммы. — Прим. пер.

4-Й царь XXVI династии, правил в 589–570 гг. до н. э. — Прим. пер.

Имеется в виду Британская школа археологии. — Прим. пер.

3Десь под числом ключей автор, вероятно, имеет в виду длину ключей. — Прим. пер.

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

Freeware — свободно и бесплатно распространяемая программа или программный продукт, banditware — бандитская программа. — Прим. пер.

Законодательная программа правительства, объявляемая при открытии новой сессии парламента. Программу объявляет королева, однако готовит ее правительство. — Прим. пер.

Программы, вводящие некоторые дополнительные команды, которые открывают доступ к защищаемой информации. — Прим. пер.

Точнее говоря, в неиндексированной базе данных. — Прим. пер.

Университет имени Пьера и Марии Кюри. — Прим. пер.

Иногда называют также прямолинейной. — Прим. пер.

Для английского текста книги; для русского варианта такой последовательностью будет манисовж… — Прим. пер.

Числа называются взаимно простыми, если их наибольший делитель равен единице. — Прим. пер.

Читайте также: