3 ноября 1990 года была открыта скульптура Криптос перед центральным офисом ЦРУ в Лэнгли. Джеймс Санборн, автор, поместил на свой арт-объект шифр, полностью раскодировать который пока не удалось. Для тех, кому лень читать статью полностью, вот краткая выжимка: Шифр разделили на 4 части. Первые две части зашифрованы шифром Виженера, третья - методом перестановки, а последнюю до сих пор не удалось разгадать. Под катом я расскажу подробнее о том, как были расшифрованы первые части, почему не удается расшифровать четвертую и свои мысли о том, как закодирована последняя часть. Внешний вид объекта напоминает свиток. Если смотреть с одной стороны (ракурс на фото выше), то левая часть свитка содержит шифротекст: Если смотреть с противоположной стороны, то можно увидеть такую таблицу: Вторая часть явно имеет регулярную структуру, поэтому рассмотрим ее подробнее. Добавлю немного цветового кодирования Красным цветом я выделил правые 4 столбца, которые повторяют первые 4 столбца в невыделенной части. Зеленым цветом обозначен английский алфавит в обычном порядке. Синим выделена буква L, которая "выбивается" из общего списка. Собственно, предлагается выкинуть все, что выделено цветом: красное - явный повтор, зеленый - видимо, для индексации, синий - встречается информация, что вроде как Санборн добавил эту букву из эстетических соображений и на маленькой версии скульптуры такой отдельной буквы нет. То, что осталось - это строка английского алфавита, где буквы слова KRYPTOS переставлены в начало, а каждая последующая строка это циклический сдвиг на одну букву влево от предыдущей. Это очень сильно напоминает шифр Виженера. Рассмотрим простой шифр, например шифр Цезаря. В таком шифре мы заменяем каждую букву на букву на 3 позиции правее по алфавиту. A -> D, B -> E, C -> F, D ->G ... W -> Z, X -> A, Y -> B, Z -> C. В общем смысле не обязательно использовать сдвиг на 3, а можно использовать любое число. Это будет называться шифр простого сдвига. Такой шифр относительно легко вскрыть - можно перебрать все варианты сдвига или посчитать частотную характеристику текста. Чтобы усложнить шифрование было предложено использовать не фиксированный сдвиг, а на разных позициях использовать разные числа. Поскольку для английского алфавита сдвигать можно на 26 разных вариантов, то можно каждый сдвиг представить в виде буквы: A - сдвиг на 0 (не меняет буквы), B - сдвиг на 1, C - сдвиг на 2, D - сдвиг на 3 (шифр цезаря). Теперь можно использовать некоторое слово как ключ: первый символ текста менять по первому символу ключа, второй - по второму и так далее. Когда буквы ключа кончатся, повторить ключ сначала. Пример: закодируем текст MY SECRET TEXT с помощью ключа CODE Считалось это так: для первого символа текста M, первый символ ключа C, значит нужно сдвинуть на 2, и первый символ шифротекста O. для второго символа текста Y, второй символ ключа O, значит сдвиг на 14 и второй символ шифротекста M... Такие замены удобно не считать сдвигами, а воспользоваться таблицей, например в вики. У нас таблица с измененным алфавитом (слово KRYPTOS вынесено вперед), поэтому приведу пример как ей пользоваться. Предположим, что нам надо закодировать BET с помощью ключа PAL. Символ B кодируем с помощью символа ключа P. Для этого ищем пересечение строки, которая начинается с символа P со столбцом, начинающимся с символа B - получаем символ E (строка и столбец выделены красным). Аналогично E с ключом A кодируется в M (выделено зеленым), а T с ключом L шифруется в U (выделено синим). Теперь, когда разобрались с таблицей, перейдем к самому шифротексту. Для начала необъяснимо воспользуемся тем фактом, что шифротекст разбит на 4 части. Реально простого объяснения как был поделен текст нет. Скорее всего, это было так - начали дешифровать и обнаружили, что один метод расшифровывает только начало текста. Расшифровали, отделили, начали дешифровать вторую. Опять дешифровалась только часть, снова отделили и продолжили. Как бы то ни было... Фрагмент назвали K1 и он довольно короткий. Довольно логично предположить, что здесь используется измененный шифр Виженера, раз уж таблица приведена рядом. При атаке на шифр Виженера первое что обычно делается - пытаемся определить длину ключа. Представим себе, что шифром Виженера закодирован довольно объемный текст на английском языке. В этом тексте, вероятно, будет довольно часто встречаться триграф (комбинация из трех символов) "the". Более того, есть большая вероятность, что некоторые из этих трех символов будут приходится на одни и те же позиции ключа. Таким образом, если мы найдем большие повторения подстрок, то довольно вероятно, что это один и тот же текст, который приходится на одни и те же позиции ключа. А, значит, длина ключа будет кратна расстоянию между фрагментами (по сути здесь описан тест Касиски). В тексте выше два раза встречается подстрока JYQT на 32 и 52 позициях. Расстояние 20, из чего следует вывод, что, с большой вероятностью, длина ключа 5, 10 или 20. Рассмотрим самую маленькую длину и разобьем текст в соответствии с предполагаемым числом. Если мы угадали с длиной ключа, то при кодировании все символы в столбике кодируются на одном и том же символе ключа, что позволяет делать нам некоторые статистические выводы в рамках столбиков. Например, в 3 столбце целых пять букв Y. Вполне вероятно, что с такой частотой может встречаться символ, который чаще всего встречается в тексте на английском языке - E. Дополнительно обратим внимание, что в 4 столбце по 3 буквы R и Q, что тоже довольно часто. Но вместе с этим, можно обратить внимание, что 4 из 5 букв E отстоят на расстояние кратное 10, 3 из 3 R тоже. Поэтому здесь мы изменим наше предположение о длине ключа в 5 и заменим его на длину 10. Поскольку мы посчитали, что Y соответствует E, то потенциально мы установили третий символ ключа - L. Не густо, но теперь мы можем прикинуть статистические зависимости для букв, которые стоят на одних и тех же позициях. На первой позиции находятся EADVQVM. Запишем их количества под нашим "алфавитом": Такие буквы, соответствовали бы букве K для ключа. Если мы возьмем букву ключа R, то это сдвинет цифры вправо (после расшифровывания). Давайте пройдемся по всем вариантам, вооружившись знанием, что буквы V, K, J, X, Q, Z встречаются довольно редко. Я записал алфавит дважды, чтобы не переносить циклически влево. Профильтровав варианты, когда сдвиг дает "редкие" буквы, осталось не много. Проведем аналогичную фильтрацию для букв на второй позиции и тоже получим не много "хороших" вариантов. Совместив всего 12 вариантов, мы получим вариант текстов, где нам будут известны по три буквы подряд. Из всех вариантов хорошо выглядит только тот, который дают ключ, начинающийся с PAL. BET, AND, ION, LIE - довольно нормальные части английских слов. Проверяя всякие слова, которые начинаются на BET и слова содержащие TLE довольно неплохо ложатся слова BETween subTLE. Итоговый результат получается вполне читаемым. Итог: BETWEENSUBTLESHADINGANDTHEABSENCEOFLIGHTLIESTHENUANCEOFIQLUSION. Или с пробелами: BETWEEN SUBTLE SHADING AND THE ABSENCE OF LIGHT LIES THE NUANCE OF IQLUSION. Примерный перевод на русский: «Между затемнением и отсутствием света лежит нюанс иллюзии.». Важно обратить внимание, что слово ILLUSION написано с ошибкой - вместо первой буквы L написана Q. Это нужно чтобы затруднить анализ или пригодится позже? Неизвестно. К слову, ключом является вполне осмысленное слово PALIMSEST - рукопись, на которой что-то писали, но потом использовали для записей повторно. Фрагмент K2 уже большего объема, он идет до горизонтальной линии делящей скульптуру. Обилие символов Z в шифротексе очень намекает, что опять был использован шифр с заменами букв. Но еще в тексте появились знаки вопроса в количестве трех. Поскольку адекватно их в кодирование не встроить, то будем просто игнорировать. Начнем атаку с поиска длинных подстрок и тут с этим все отлично. Подстрока GWHKK встречается на позициях 16 и 32 (разница 16), а подстрока NUVPD встречается на позициях 257 и 329 (разница 72). Поскольку НОД(16, 72)=8, то, вероятно, что длина ключа 2, 4 или 8. Возьмем 8, как наиболее вероятную длину и поделим на группы по длине ключа. Снова посчитаем частоту букв, выстроенную вдоль измененного алфавита. При таком хорошем распределении нам нужно сделать очень простую вещь - найти такие сдвиги в каждой строке, чтобы частые буквы E, T, A, O, I содержали числа побольше, а редкие Z, Q, J, X, K попадали на пустые или хотя бы на единички. Долго перебирать не придется. Дольно быстро найдется вариант, который максимально подходит. Такой набор сдвигов соответствует осмысленному ключевому слову ABSCISSA. Расшифрованный текст: Вернем знаки вопроса на свои места и добавим пробелов: IT WAS TOTALLY INVISIBLE HOWS THAT POSSIBLE? THEY USED THE EARTHS MAGNETIC FIELD X THE INFORMATION WAS GATHERED AND TRANSMITTED UNDERGRUUND TO AN UNKNOWN LOCATION X DOES LANGLEY KNOW ABOUT THIS? THEY SHOULD ITS BURIED OUT THERE SOMEWHERE X WHO KNOWS THE EXACT LOCATION? ONLY WW THIS WAS HIS LAST MESSAGE X THIRTY EIGHT DEGREES FIFTY SEVEN MINUTES SIX POINT FIVE SECONDS NORTH SEVENTY SEVEN DEGREES EIGHT MINUTES FORTY FOUR SECONDS WEST ID BY ROWS. Примерный перевод на русский: «Он был абсолютно невидим. Как это возможно? Использовалось магнитное поле Земли. Информация была получена и передана под землю в неизвестное место. Знают ли об этом в Лэнгли? Он где-то там зарыт. Кто знает точное местоположение? Только WW. Вот его последнее сообщение. Тридцать восемь градусов пятьдесят семь минут шесть целых пять десятых секунд северной широты, семьдесят семь градусов восемь минут сорок четыре секунды западной долготы ID у рядов.». Интересности в этом тексте: опять есть слово с измененной буквой UNDERGRUUND вместо UNDERGROUND; вместо точек в предложении используется буква X; конец предложения какой-то странный - что еще за WEST ID BY ROWS? С последним помог автор скульптуры. Он объяснил, что при формировании текста допустил ошибку - пропустил одну букву X в конце текста. В таком случае конец предложения выглядит так: WEST X LAYER TWO. И здесь уже все лучше - после координат идет точка, и указание на второй слой. Осмысленность ID BY ROWS автор назвал случайным совпадением. Координаты в тексте указывают на место в нескольких метрах от скульптуры, но там ничего интересного не нашлось, вроде как. Есть предположение, что это место где сам объект должен был быть, но его установили немного в другом месте. Снова у нас есть указание на некий другой слой, на что в первом фрагменте отсылало ключевое слово. Фрагмент K3 снова с большим объемом текста. Большое количество букв E, T, A, O и маленькое количество букв Z, Q, J, X, K прям довольно сильно нам подсказывает, что здесь не используется шифр замены, а используется шифр перестановки. То есть, все буквы, что уже есть в тексте - они корректные, надо только найти порядок в котором они расположены. В тексте ровно одна буква Q. С ней связана довольно интересная особенность - в английском языке слов в которых бы была буква Q, но после нее находилась буква отличная от U довольно мало. Попробуем соотнести букву Q и U, вместе с их соседями, поскольку скорее всего соседние буквы тоже будут стоять рядом. Подчеркнем буквы U и Q, и по четыре соседа слева-справа. ENDYAHROHNLSRHEOCPTEOIBIDYSHNAIA CHTNREYULDSLLSLLNOHSNOSMRWXMNE TPRNGATIHNRARPESLNNELEBLPIIACAE WMTWNDITEENRAHCTENEUDRETNHAEOE TFOLSEDTIWENHAEIOYTEYQHEENCTAYCR EIFTBRSPAMHHEWENATAMATEGYEERLB TEEFOASFIOTUETUAEOTOARMAEERTNRTI BSEDDNIAAHTTMSTEWPIEROAGRIEWFEB AECTDDHILCEIHSITEGOEAOSDDRYDLORIT RKLMLEHAGTDHARDPNEOHMGFMFEUHE ECDMRIPFEIMEHNLSSTTRTVDOHW Теперь составим пары букв, как если бы QU оказались рядом, то какие бы соседние буквы были рядом. Потенциально, каждый столбец - это буквы, которые будут рядом в итогом тексте. Надо выбрать столбец, с которым будем работать. В первом есть диграф YY, а в последнем HH. Маловероятно, что такое встретится в тексте. Остальные варианты, в целом, довольно неплохи. Но остановимся на центральном столбце, в нем, например, есть HE, что прям хорошо может лечь на THE. Посмотрим на еще последовательности символов, которые можно было бы подставить к нашим, чтобы все еще получались осмысленные части слов. Например, неплохо выглядит так (подчеркнуты строки, выбранные на предыдущем шаге и новая). ENDYAHROHNLSRHEOCPTEOIBIDYSHNAIA CHTNREYULDSLLSLLNOHSNOSMRWXMNE TPRNGATIHNRARPESLNNELEBLPIIACAE WMTWNDITEENRAHCTENEUDRETNHAEOE TFOLSEDTIWENHAEIOYTEYQHEENCTAYCR EIFTBRSPAMHHEWENATAMATEGYEERLB TEEFOASFIOTUETUAEOTOARMAEERTNRTI BSEDDNIAAHTTMSTEWPIEROAGRIEWFEB AECTDDHILCEIHSITEGOEAOSDDRYDLORIT RKLMLEHAGTDHARDPNEOHMGFMFEUHE ECDMRIPFEIMEHNLSSTTRTVDOHW Сопоставленные символы выглядят так: Довольно неплохо, можно прикидывать наборы слов: прилагательное оканчивающееся на LY и слово начинающееся на F, пара слов THE ONLY и прочие. Продолжая можно взять еще пару строк. ENDYAHROHNLSRHEOCPTEOIBIDYSHNAIA CHTNREYULDSLLSLLNOHSNOSMRWXMNE TPRNGATIHNRARPESLNNELEBLPIIACAE WMTWNDITEENRAHCTENEUDRETNHAEOE TFOLSEDTIWENHAEIOYTEYQHEENCTAYCR EIFTBRSPAMHHEWENATAMATEGYEERLB TEEFOASFIOTUETUAEOTOARMAEERTNRTI BSEDDNIAAHTTMSTEWPIEROAGRIEWFEB AECTDDHILCEIHSITEGOEAOSDDRYDLORIT RKLMLEHAGTDHARDPNEOHMGFMFEUHE ECDMRIPFEIMEHNLSSTTRTVDOHW Сопоставленные символы выглядят так: Части OWLY F, AME TI, ING QU, ED THE, WIDE T, RWAY T выглядят отлично. Продолжив смотреть варианты, мы сможем восстановить текст, который довольно сильно будет отличаться от текущих подстановок, но и близок к ним. SLOWLYDESPARATLYSLOWLYTHEREMAINSOFPASSAGEDEBRISTHATENCUMBEREDTHELOWERPARTOFTHEDOORWAYWASREMOVEDWITHTREMBLINGHANDSIMADEATINYBREACHINTHEUPPERLEFTHANDCORNERANDTHENWIDENINGTHEHOLEALITTLEIINSERTEDTHECANDLEANDPEEREDINTHEHOTAIRESCAPINGFROMTHECHAMBERCAUSEDTHEFLAMETOFLICKERBUTPRESENTLYDETAILSOFTHEROOMWITHINEMERGEDFROMTHEMISTXCANYOUSEEANYTHINGQ. Какие же перестановки привели к ответу? Были выделены 4 больших группы букв, где символы надо было читать справа-налево, через 7, циклически в рамках группы. Звучит довольно сложно, да и визуализировать это непросто. Зато относительно просто показать как был зашифрован текст. Возьмем текст и разобьем его на 8 строк по 42 символа. Повернем весь текст по часовой стрелке. Теперь весь этот текст запишем в 24 строки. И снова повернем по часовой стрелке. Вот мы и получили зашифрованный текст. Значит в идеальном виде расшифровка должна выглядеть была так: зашифрованный текст разбиваем на 14 строк по 24 символов, поворачиваем его против часовой стрелки, разбиваем его на 42 строки по 8 символов и снова поворачиваем против часовой стрелки. Что же с текстом? Запишем с пробелами и знаками. SLOWLY DESPARATLY SLOWLY THE REMAINS OF PASSAGE DEBRIS THAT ENCUMBERED THE LOWER PART OF THE DOORWAY WAS REMOVED. WITH TREMBLING HANDS I MADE A TINY BREACH IN THE UPPER LEFT HAND CORNER AND THEN WIDENING THE HOLE A LITTLE I INSERTED THE CANDLE AND PEERED IN. THE HOT AIR ESCAPING FROM THE CHAMBER CAUSED THE FLAME TO FLICKER BUT PRESENTLY DETAILS OF THE ROOM WITHIN EMERGED FROM THE MIST X CAN YOU SEE ANYTHING Q. Здесь X использовался как некоторый разделитель текста, но не точка, а буква Q, вероятно, означает вопросительный знак. Сам текст - это немного измененная цитата Говарда Картера, который в 1922 году открыл гробницу фараона Тутанхамона. Опять в расшифровке есть слово с ошибкой: вместо DESPARATLY должно быть DESPERATELY. Вместо буквы E расшифрована A, и еще одна буква E пропущена. Это выбивается из схемы использования слов с одной неправильной буквой. Последний фрагмент K4. И вот тут начинаются проблемы. Во первых, нет точного понимания относится ли знак вопроса к этой части или это разделитель между K3 и K4. Во вторых, мы снова видим обилие букв Z, что явно намекает на кодирование связанное со сдвигами, но дешифровать тем же Виженером не удалось. Даже после 4 подсказок автора, в которых он раскрыл часть итогового текста ясности не прибавилось. Автор раз в несколько лет сказал, что некоторые фрагменты текста являются словами BERLIN, CLOCK, NORTHEAST и EAST. Предположительно, совмещается это так: На этом этапе стало точно ясно, что здесь не шифр Виженера, поскольку зная открытый текст и шифрованный, можно восстановить ключ, а он явно не восстановился. На что можно обратить внимание? Если мы разделим текст на 14 строк, то получим такие столбцы. Если посмотрим на последние два символа в строках, то увидим частые пары: BB, QQ, SS, ZZ, TT. Это очень похоже, что если мы повернем текст против часовой стрелки, то получим текст, в котором есть две явные подстроки BQS*Z, расстояние между которыми 14. Выглядит прям хорошо - использование и перестановки, как в K3 и Виженера, как в K1 и K2. Только все равно не удается расшифровать, не смотря на знание части открытого текста. Если знак вопроса не входит в K4 (а часто упоминается именно так, без него), то всего символов 97 и тогда теряется идея перестановок (97 - это простое число, нельзя записать 97 символов в некоторую матрицу без пропусков, чтобы вращать ее). Если символов все же 98, то все равно вариантов разбиения на матрицы не так много, поскольку 98 = 2 * 7 * 7. Почему граница между K3 и K4 не совпадает с границами строк на скульптуре? Может быть здесь вообще два фрагмента с разными вариантами шифрования? А может Санборн всех обманул и оставил случайные символы, чтобы его работа привлекала внимание всегда, но разгадку нельзя было найти? Тогда зачем автор публикует подсказки? Более того, сам автор сказал в 2013 году, что есть еще что-то, что надо будет раскодировать после решения K4 и подтвердил, что K4 может быть раскодировано без расшифровки K1-K3. Пока вопросов больше чем ответов. Я потратил довольно много времени ковыряя K4, и хоть осознанного результата нет, мне было очень интересно. Много полезных материалов было взято с сайта http://www.thekryptosproject.com/ и интересно было почитать один из отчетов Агентства Национальной Безопасности. Windows Privilege Escalator