Криптование и Рупопись Войнича
artyom_ferrier — 02.03.2019Когда Лёшке, моему Исчадию, было десять лет, он увлёкся программированием, желая ваять игрушки и мультики, а для разминки склепал «абсолютную шифровальную программу». Которая была одновременно и довольно простенькая, и удобная в использовании, и, на Лёшкин тогдашний взгляд, необычайно криптоустойчивая, ибо «никто не догадается».
Что он сделал? Для начала — загнал в массив кириллический алфавит, чтобы каждый символ был в своей номерной ячеечке. Потом, при шифровании текста, запускается генератор случайных чисел, от нуля до 33. И, соответственно, вываливаются буковки. Чисто мусор, «фоновый шум». Ну, когда тебе не приходится экономить дорогущий пергамент, когда у тебя объём запросто может исчисляться мегабайтами — можно набить сообщение таким мусором.
Но когда «в лотерее» выпадает заранее определённая буква (например, «к») - после неё вставляется буква из криптуемого текста. А на дешифровке, соответственно, программа знает, что вот символ, идущий после «к» - он значимый, тогда как всё остальное — не принимать в расчёт.
Однако ж, чтоб было ещё хитрее, Лёшка сделал ещё один финт. Создал процедуру перевода латинских букв в кириллицу. Ну, чтобы, скажем, “r” переходило в «ж», “u” в «з», «a”, “e”, “o” - рандомно в одну из двух кириллических букв (благо, кириллица имеет больше символов). То есть, он немножко приморочился, чтобы размазать частотность (и для десяти лет, я считаю, это неплохо).
И при этом — исходный текст набирал по-английски. Но преобразовывался он в бессмысленный поток кириллических буквочек, из которых абсолютное большинство было просто шлаком для отвлечения внимания.
Лёшка — очень гордился своим изобретением. Особенно — тем, как легко двум людям, владеющим программой, перенастроить её незаметно от наблюдателя, контролирующего их переписку. Просто договориться изначально, что если нужно поменять «тригерную» букву (ту, после которой вставляется значимый символ), то новая — будет первой в постскриптуме. “Да, чуть не забыл...» - и новая буква «д». «Но при всём при этом» - новая буква «н».
Он знал, конечно, как производится обмен ключами для ассиметричного шифрования, но считал, что его система и проще, и надёжнее.
Ей-богу, я был рад, что он в принципе морочится такими занятными вещами, саморазвивается, но — уж слишком он загордился.
Пришлось, пользуясь служебным положением, устроить ему экскурсию в нашу Аналитику. «Сам-то я не шифровальщик, оценить не могу — но вдруг ты действительно прорыв устроил? Пусть ребята попробуют взломать».
Да, может, жестоко по отношению к ребёнку — но пусть привыкает, решил я, к мысли, что этот мир вообще жесток. Что в нём не бывает таких чудес, чтобы парень, без году неделя занимающийся программированием, удивил профи, которые посвятили этому всю жизнь.
Хотя, ради справедливости, на какое-то время Лёшкино творение озадачило наших «головастиков» (одного, в действительности, Жору, поскольку коллективного мозгового штурма там не потребовалось).
Нет, конечно, самой программы не давали — иначе б Жора выявил алгоритм сходу, галлопом. Только — получившуюся шифровку. Мы взяли рассказ «Убийство на улице Морг» (поскольку «Золотой жук» - просто сразу подозревается как материал для любительского подстановочного шифрования), запечатали, представили.
Ну, само собой, проанализировав частотность символов — Жора сразу понял, что текст набит мусором. Ибо не может же быть в естественном языке, чтобы все буквы повторялись примерно с равной частотой. Только если RND их забивал.
Отсюда стал в общих чертах понятен принцип. Что по большей части символы от балды-эр-эн-ды внесены, но какой-то (или какие-то) - «триггерные», после которых символ читается. Скорее всего, как рассудил Жора, именно непосредственно идущий после «триггера» символ. Хотя, в случае неудачи данной гипотезы, конечно, проанализировал бы иные варианты.
Ведь мог бы Лёшка запрограммировать и так, что после выпадения заветной буквы «к» - значимый символ должен быть, скажем, третий после неё. Или, наоборот, программа должна вернуться на пяток символов назад — и там изменить на значимый.
Но отработка таких версий — заняла бы не сильно больше времени. Прогонка была бы автоматической. Поскольку главная задача-то — заключалась в поиске хоть каких-то закономерностей в тексте, которые бы намекали на письменность естественного языка (и изначально было понятно, что исходная запись — вокалическим алфавитом).
Одна из главных закономерностей, которая пробивается при таких подозрениях — след от сдвоенных букв.
Вот возьмите любой текст на любом языке с устоявшейся письменностью — и посчитайте, сколько будет сдвоенных букв.
Ладно, за любой не поручусь — но что в русском, что в английском таких случаев будет дохрена (ну вот «письменность», «сдвоенный», чуть раньше была «программа»).
Соответственно, если мы заподозрили, что имеется некий «триггерный» символ — ищем повторяющиеся комбинации одного символа с другим. Повторяющиеся — чаще, чем возможно по RND.
И вот нашли несколько раз «кс», потом снова «кс», без «к» с чем-то другим в промежутке - делаем вывод, что «к» - это триггер, а «с» - значимый символ из шифруемого текста, представляющий сдвоенное буквосочетание. Хотя, конечно, вовсе необязательно, что он значит именно «с».
Ну а что он может значить и на каком языке — выявляется, уже когда обнаружен «триггер» и вычленены, отделены от мусора, все буковки, которые он за собой тащит.
И вот Жора смотрит на получившийся уже изрядно похудевший ряд буковок, который шли за триггерным «к» - и ему пофиг, что они имеют кириллический вид. Он привык, что и ряд чисел в шифровке — может быть вовсе не в десятичной системе. Он привык, что — не верь своим глазам, но — анализируй статистические закономерности, проходясь по тексту бульдозером всяких специальных программ.
И по анализу закономерностей — тут же влёт выявляется очень частое сочетание «рг», которое наводит на мысль, что это английское th.
Лёшка, к чести своей, не заплакал, когда его «абсолютно неломаемый» шифр Жора расколол минут за десять, из которых большую часть — объяснял, что делает. Ну, Лёшка — крепкий парень, и сумел оценить полученную прививку от излишней самонадеянности и гордыни.
К тому же, его утешили, сказав, что на шифры СВР у нашей Аналитики уходит меньше времени (это неправда, мы их вообще не дешифруем, мы их просто знаем раньше, чем узнают агенты этой конторы, но это больше социальная инженерия, а не криптография -:) ).
Ну и это, конечно, совершенно детский пример был. Но тем не менее он «иллюстративен» на тему того, как легко взламывается подстановочный шрифт, даже если он усложнён какими-то наворотами.
Если предположить, что это хоть какой-то язык и что в тексте соблюдаются какие-то закономерности его структуры — уж по крайней мере эту структуру выявят легко. И по крайней мере некоторые слова — выявят легко.
Вот я сейчас взял, чисто по приколу, совершенно случайные тексты на финском, венгерском и турецком. Это языки, которых я не знаю вообще, от слова совсем. Притом — не индоевропейские.
И я смотрю на эти тексты, не имея ни малейшего понятия, о чём они — и тут же выделяю слова, соответственно, ja, es, ve. И почти абсолютно уверен в значении этих слов. Это всё — соединительный союз «и».
Почему я так легко его выделил? Ну потому, что есть некие общие соображения о том, как работает и формируется язык. Как бы ни различались культуры — но мы все разумные существа, мы все проводим логическую операцию конъюнкции, и очень часто, и это отражается в нашей речи, поэтому слово, означающее «и», должно быть очень употребимым и коротеньким.
Обычно — самым употребимым. Но в иных языках в дело вмешиваются артикли. Вот когда на венгерский текст смотрел — поначалу смутило наличие многих «az”. Но по положению словечка во фразе — ясно, что это либо указательное местоимение «тот», либо определённый артикль (что, в принципе, одно и то же, и размыт момент, когда указательные местоимения переходят в артикль).
К чему это?
Да к тому, что я давно как-то, ещё студентом филфака, приморочился проблемой манускрипта Войнича. Ну вот эта загадочная рукопись, выполненная на пергаменте, датируемом (радиоуглеродно) концом пятнадцатого века, хотя никто не поручится, что текст и рисунки не были нанесены на завалявшийся пергамент (уже неординарно) века на полтора позже.
Там довольно аляповатые рисунки непонятных растений, как бы астрологические схемы, как бы незамысловатая эротика с голыми бабами в купальнях — и на этом фоне текст, вроде бы разбитый на слова.
И вот некоторые исследователи заявляли, что будто бы структура текста соответствует естественному языку.
Нет, абсолютно не соответствует. Там нет, для начала, ничего, что можно было бы принять за союз «и». Нет устойчивых кратеньких сочетаний, что могло бы быть предлогами. Нет и того, что могло бы быть отрицанием (и что неизбежно часто должно встречаться).
А самое главное — в тексте нет исправлений. Он довольно длинный, две с лихом сотни страниц — но нет корректив. Это совершенно нетипичная картина для рукописных текстов. На такой объём в любой летописи, которая велась самым аккуратным и ответственным монахом — будут десятки исправлений, ибо человек несовершенен, он не может писать, как робот, но он проверяет, что написал, и редактирует. Это если ему не пофиг, будет ли правильно воспринят его текст.
Но что в рукописи Войнича нет исправлений — пожалуй, говорит о том, что автору абсолютно пофиг было, как тот текст воспримут. Ибо он, думается, изначально не имел никакого смысла.
Ну вот действительно, с какой целью ты, сооружая некий секретный текст, будешь помещать в него картинки растений (и созвездий, и голых баб), когда бы эти картинки могли дать ключ?
Но и с какой целью при этом ты будешь рисовать такие растения, что хрен кто вообще на Земле сей грешной такие опознает, не накушавшись мескалина?
Я думаю, цель одна.
Шестнадцатый век, открытие и освоение Америки. Всё ещё очень загадочной страны, где много тайн. И вот мне, от знакомого конкистадора в порту, досталась тайная рукопись жрецов майя с рецептом эликсира бессмертия. К сожалению, на их языке, а сам я ни бельмеса в лингвистике. Но вы, благородный дон, искушённый в науках — конечно, всё прочтёте, всё познаете.
Я думаю, тут примерно такая была разводка.
И я думаю, что если б там был смысл — его бы давно расщёлкали. Но все заявления вроде «учёные нашли ключ к рукописи Войнича и уже расшифровали одну фразу» - это, конечно, журналистская дичь.
Если ты реально нашёл ключ — ты очень быстро расшифруешь весь текст (если, конечно, он в принципе подлежит расшифровке, если изначально имеет смысл, имеет какие-то внутренние закономерности).
|
</> |