«Таинственные страницы. Занимательная криптография»

Мнение редакции может не совпадать с мнением автора

Книга Ивана Ефишова «Таинственные страницы. Занимательная криптография» построена как набор этюдов, в каждом из которых разбираются закономерности, связанные со знаками и символами, помогающими кодировать или декодировать те или иные сообщения. Эта книга вошла в лонг-лист премии научно-популярной литературы «Просветитель» 2017 года. Подведение итогов премии состоится 16 ноября; со списком книг и авторов, вошедших в шорт-лист премии, можно ознакомиться здесь.

Этюд IV Числа Фибоначчи

Американский писатель Дэн Браун (р. 1964) в своем «Коде да Винчи» использовал для декодирования информации числа Фибоначчи. Кратко напомним канву событий, связанных с этими загадочными числами.

В здании Лувра обнаружен труп куратора музея Жака Соньера. Убитый обнажен и лежит в позе, воспроизводящей знаменитый рисунок Леонардо да Винчи «Витрувианский человек». На теле — зашифрованная кровавая надпись: Соньер в последние минуты жизни «использовал собственную кровь в качестве чернил или краски, а собственный обнаженный живот — как полотно». Надпись была следующей:

13-3-2-21-1-1-8-5
На вид идола родич!
О мина зла!

Что за мина зла? Да еще родич какого-то идола... Что касается чисел — если их расположить по возрастанию (1, 1, 2, 3, 5, 8, 13, 21), то мы получим первые восемь чисел бесконечного ряда Фибоначчи. Впрочем, передадим теперь слово главному герою романа, профессору Гарвардского университета Роберту Лэнгдону: «Искаженный ряд Фибоначчи — это ключ. Числа являются намеком на то, как следует расшифровывать остальную часть послания. Соньер специально нарушил последовательность, намекая на то, что такой же подход можно применить и к тексту».

Таким образом, Жак Соньер оставил намек, что написанное им — криптограмма! То есть, переставив буквы в послании, мы получим другой смысл записки. Первая строка записки с искажениями (ведь ряд Фибоначчи тоже искажен) дает «Лиодардо да Винчи!», вторая декодируется как «Мона Лиза!». Смысл записки теперь более или менее ясен: она оставлена куратором Лувра, где и хранится знаменитая картина:

«Леонардо да Винчи! Мона Лиза!»

Указание на знаменитую картину позволило найти золотой ключ к сейфу швейцарского депозитарного банка. Кроме того, числа Фибоначчи оказались также и кодом доступа к этому сейфу.

Но почему Жак Соньер выбрал для кода доступа именно числа Фибоначчи? Вот как это объясняет сам Дэн Браун на страницах романа: «Если превратить последовательность Фибоначчи в простой набор из десяти цифр, она становится практически неузнаваемой. Запомнить легко, а на первый взгляд цифры кажутся выбранными наугад. Гениальный, потрясающий цифровой код, который Соньер никогда бы не забыл».

Рассмотрим историю этого «гениального, потрясающего цифрового кода». Откуда взялись эти цифры?

Совпадение! Их открыл тоже Леонардо, и тоже итальянец, но, увы, не знаменитый да Винчи, а некий купец Леонардо Фибоначчи (1170–1250). В своем первом математическом труде «Книга Абаки» (Liber Abaci, 1202 год) он рассмотрел задачу о размножении кроликов. В результате появились замечательные числа, позже названные именем Фибоначчи:

f1 = 1, f2 = 1, f3 = 2, f4 = 3, f5 = 5, f6 = 8, ... , f12 = 144, ...

Первые два числа в этой последовательности заданы и равны единице, то есть f1 = 1, f2 = 1, а каждое последующее число равно сумме двух предыдущих чисел. Например, f6 = f5 + f4 (или 8 = 5 + 3). Счет можно продолжить. Так, например, двенадцатое число Фибоначчи равно f12 = 144.

Числами Фибоначчи можно описать как корзинку подсолнуха, так и расположение спиральных рукавов Галактики.

Отметим, что в своем труде Леонардо Фибоначчи, который по делам торговли не раз оказывался в арабском Алжире, рассмотрел впервые в европейской математике арабскую систему счисления. Привычная нам десятичная позиционная система, которую все мы изучаем в школе, в свое время стала крупнейшим прорывом в математике. Не будь ее, нам пришлось бы до сих пор пользоваться римской нотацией, столь неудобной при вычислениях.

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

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

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

Рассмотрим аналогичную задачу [11], связанную с передачей информации, также состоящей из одиннадцати символов, но не сопровождающейся дополнительными подсказками.

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

•, —, • •, — —, • —, — •.

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

Сколькими способами можно прочесть переданное слово?

Сделаем задачу более наглядной. Предположим, что вам передали следующее слово:

• • — — • — — — • — •

Попробуйте для начала разобраться с этим частным случаем.

Задача полностью аналогична той, которую вы разгадывали в линейном кроссворде. Но там вы отделяли друг от друга слова, а здесь придется отделить закодированные буквы в слове. Известно, что при передаче телеграмм или радиограмм применяется азбука Морзе, в которой, например, буква А всегда кодируется двумя знаками • —, тогда как буква Е — это одна точка •, а буква Т — просто тире —. Таким образом, получив сообщение из двух знаков • — (в котором преднамеренно пропущен пробел), вы можете его декодировать либо как букву А, либо как две буквы ЕТ.

Теперь попробуйте применить подобный подход для слова из одиннадцати знаков. Не забудьте, что наш этюд называется «Числа Фибоначчи»!

Попробуйте сделать это самостоятельно, потратьте на задачу час, два, три... Столько, сколько вам понадобится. Но не забегайте вперед, чтобы просто прочитать ответ. Задача не так сложна: при ее решении вам не придется воспользоваться ни одной математической формулой!

Подсказка: ответ задачи — двенадцатое число Фибоначчи.

Решим эту задачу подробно — шаг за шагом. Итак, слово длиной в одиннадцать знаков уже задано. Предположим, что сначала нам дана последовательность из 1 знака, затем из 2, 3, ..., 11 знаков. Каждый знак, как вы помните, — это либо точка, либо тире.

Первый шаг. Вначале имеем слово длиной в один знак: *, где * обозначает либо точку, либо тире.

Очевидно, слово у нас прочитается единственным образом. Когда конкретное сообщение из одного знака у вас перед глазами, то вы увидите либо • либо —.

Второй шаг. Теперь задано слово длиной уже в два знака: **.

(*)(*), (**) — два способа декодирования. Других комбинаций попросту нет. Здесь круглыми скобками выделены отдельные буквы (однозначные либо двузначные) в полученном нами слове.

Третий шаг. Имеем слово длиной в три знака: ***.

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

Четвертый шаг. Имеем слово длиной в четыре знака: ****.

(*)(*)(*)(*), (*)(*)(**), (*)(**)(*), (**)(*)(*), (**)(**) — вот так сюрприз! У нас теперь не четыре, как можно было бы ожидать, а целых пять способов декодирования.

Пятый шаг. Имеем слово длиной в пять знаков: *****.

(*)(*)(*)(*)(*), (*)(*)(*)(**), (*)(*)(**)(*), (*)(**)(*)(*), (**)(*)(*)(*), (*)(**)(**), (**)(*)(**), (**)(**)(*) — восемь вариантов декодирования.

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

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

Первый шаг — 1 способ.

Второй шаг — 2 способа.

Третий шаг — 3 способа.

Четвертый шаг — 5 способов.

Пятый шаг — 8 способов.

И т. д...

Теперь хорошо видно, что справа у нас стоят числа Фибоначчи: f2 = 1, f3 = 2, f4 = 3, f5 = 5, f6 = 8, ... Так как при решении задачи на первом шаге мы получили второе число Фибоначчи f2 = 1, на втором шаге — третье число f3 = 2, то, следовательно, правильным ответом будет двенадцатое число Фибоначчи f12 = 144, так как полученное слово состоит из одиннадцати знаков.

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

Подробнее читайте:
Ефишов, Иван Иванович. Таинственные страницы. Занимательная криптография / Иван Ефишов. — М.: Манн, Иванов и Фербер, 2016. — 240 с.

Нашли опечатку? Выделите фрагмент и нажмите Ctrl+Enter.