Отец сел на скамейку и начал, как мне показалось, новое занятие:
— Я придумал, как оптимизировать наши поиски. Нам надо построить вычислительный грид. Думаю, что рабочих компьютеров сотрудников моей лаборатории будет достаточно. Я напишу программу, которую установлю на их компьютеры, и эта программа в фоновом режиме будет делать генетический подбор. У нас в лаборатории примерно двадцать пять компьютеров, развернём грид на всех. Мой ноутбук сделаем базовым хостом, будем через него обмениваться информацией и распределять наиболее интересные варианты для дальнейших вычислений по всем компьютерам грида. Понятно?
Мы с Катей только помотали головами. Отец вздохнул и попробовал ещё раз:
— Я напишу программу и распространю её среди сотрудников своей лаборатории. Каждый из них установит её на свой рабочий компьютер. Эта программа будет работать в фоновом режиме на нескольких устройствах одновременно. Результаты работы будут приходить ко мне на ноутбук, который будет отбирать самые лучшие и посылать команды всем компьютерам в этой сети, чтобы они использовали новые варианты для дальнейшей работы. Это должно очень сильно ускорить процесс.
Я спросил:
— Если в этой работе будут участвовать твои сотрудники, то когда мы взломаем шифровку, славой придётся поделиться и с ними?
Отец задумался, но потом сказал:
— Никто не будет знать, что вычисляет программа. Я сделаю так, что это будут абстрактные строки без каких-либо пояснений. Только на моём ноутбуке мы сможем прочесть результаты.
В разговор вступила Катя:
— А если распространить эту программу на ещё большее количество компьютеров? Это возможно?
— Да, примерно так работают так называемые «ботнеты». При помощи компьютерных вирусов люди распространяют свои вычислительные модули, которые, заражая чужие компьютеры, производят на них какие-либо вычисления и отправляют результаты в командный центр. Также ботнеты используются, чтобы организовывать атаки, взламывать банковские счета, вычислять криптовалюты и ещё для многого другого. Но мы же не будем писать вирус и заражать им компьютеры тех, до кого удастся дотянуться. Я официально как руководитель лаборатории попрошу своих сотрудников установить и запустить эту программу. Всё будет честно.
После этих объяснений папа быстро свернул занятия и ушёл в штаб. Я так понял, что ему пришла в голову какая-то идея, и он сразу же отправился воплощать её. Поскольку в таком состоянии от отца добиться чего-либо было сложно, мы с Катей сели на велосипеды и поехали к тёте Кате.
Вернулся я поздно, когда уже стало темнеть. Отец даже не обратил внимания, когда я вошёл. Он сидел за компьютером и разговаривал с кем-то через мессенджер. Большую часть слов я не понимал, хотя они разговаривали вроде бы по-русски. Похоже, что отец обсуждал с кем-то из своих коллег тонкости развёртывания грида, как он это называет.
Я сходил в дом, сделал себе бутерброды и перекусил. Похоже, что отец не ел целый день, пока мы с Катей колобродили. Я принёс ему чай и пару бутербродов с ветчиной и сыром, но он как будто бы этого не заметил.
Так прошло ещё три дня. Мы с Катей не приставали к моему отцу, я только старался, чтобы у него под рукой всегда было что перекусить. Однажды он поблагодарил меня и попросил приносить больше чаю с мёдом, поскольку его мозгу требуется сейчас много глюкозы. В конце концов я просто принёс в штаб трёхлитровую банку с мёдом и поставил около него.
Ну а мы с Катей в основном катались на велосипедах и играли у меня на планшете. Я практически поселился у тёти Кати, поскольку на второй день этого режима я понял, что такое голод, так что чаще бывал у тётушки и подъедал всё, что она готовила. За это время мы объездили все закоулки в селе, но дальше окружной дороги вокруг огородов не бывали. Без отца я всё-таки опасался.
Вечером третьего дня, когда я уже вернулся домой и лежал в кровати, отец неожиданно откинулся от своего ноутбука и тихо сказал:
— Наконец-то…
Я подскочил как ужаленный и бросился к нему. На экране была непременная консоль с зелёными символами на чёрном фоне. И если до сих пор по ней постоянно бежали буквы и цифры, то сейчас поток остановился и в самом низу экрана горела строка: «ВАШЕ СИЯТЕЛЬСТВО СИМЪ УВЕДОМЛЯЮ ВАСЪ О ТО… E = 0,00001753». Отец вывел на экран полный текст шифровки:
ВАШЕ СИЯТЕЛЬСТВО СИМЪ УВЕДОМЛЯЮ ВАСЪ О ТОМЪ ЧТО ВАШЕ РАЗПОРЯЖЕНИЕ КАЪАТЕЛЬНО СБЕРЕЖЕНИЯ ИЧВЕСТНОЙ СДММЫ ВЫПОЛНЕНО СЕКРЕТС СХОРОНЕНЪ ВЪ ТАЙНИКЕ ВЪ ВАШЕЙ МУХАНСКОЙ УСАУЬБЕ КАРТД ПРИЛАГАЮ СС ПОКОРНОЪТИЮ ФЕОФАНЪ
Да уж! Это оказалось ещё круче, чем те загадки, которые папа загадывал мне в наведённых воспоминаниях. На этот раз речь идёт о чём-то реальном! Если вспомнить слова директора Моршанского музея, то эту шифровку никто не смог разгадать, а следовательно, высоки шансы, что спрятанные сокровища ещё никто не обнаружил. Правда, их могли найти случайно, но это менее вероятно в случае целенаправленных поисков.
Я переписал расшифрованное сообщение, исправив недочёты автоматической расшифровки, приведя к современной орфографии и расставив знаки препинания. Получилось более ясно: «Ваше Сиятельство. Сим уведомляю Вас о том, что Ваше распоряжение касательно сбережения известной суммы выполнено. Секрет схоронен в тайнике в вашей Муханской усадьбе. Карту прилагаю. С покорностью, Феофан».
Мы были так возбуждены, что не смогли лечь спать, хотя уже было темно. Мы пошли в дом и налили себе по большой кружке чаю с травами и мёдом. Отец трепал меня по волосам и радостно планировал наши следующие шаги. Я блаженно улыбался, размышляя о том, что летние каникулы складываются как нельзя хорошо.
Глава 9
Утром перед завтраком я сразу же сообщил Кате по рации, что нам удалось взломать шифр. Не успели мы выпить чаю, как она уже приехала, бросила велосипед прямо около ступеней крыльца и вбежала к нам. Отец безмятежно посмотрел на неё и пригласил за стол, достав ещё кружку и досыпав конфет. Но Катя воскликнула:
— Ну что же вы? Показывайте и рассказывайте, как у вас это получилось.
Мне папа ещё ничего толком не рассказал, поэтому я тоже посмотрел на него с ожиданием. И он начал свой рассказ…
— После того как мы придумали идею с вычислительным гридом, я задействовал все мощности своей лаборатории. Мы быстро написали нужные программы, это заняло у нас буквально несколько часов. Я говорю «мы», поскольку я привлёк к разработке нескольких своих сотрудников. Они мне очень помогли. Но я, как и обещал, не стал им рассказывать о сути этой работы. Да, в общем-то, они и не спрашивали: им была очень интересна задача разработки и развёртывания грида — мы в лаборатории такого ещё никогда не делали.
После этого мы затратили совсем немного времени, чтобы распространить написанную программу на лабораторные компьютеры, составить начальные варианты и запустить генетический алгоритм на паре десятков рабочих станций. Потом оказалось, что разные компьютеры работают с разной скоростью, но это ни к чему страшному не привело: просто кто-то быстрее решал свои задачи, а кто-то медленнее. Двое с половиной суток построенный грид считал биты, искал варианты. Время от времени каждый из компьютеров грида скидывал мне на ноутбук несколько самых интересных вариантов. Мой ноутбук был как бы руководителем, он изучал полученные варианты, сравнивал их друг с другом, скрещивал, отбирал интересные и отдавал их всем компьютерам грида — на новый виток эволюции.
Но иногда мне приходилось останавливать процесс и вмешиваться в него в ручном режиме. Время от времени я замечал, что алгоритм находит интересные варианты, в которых угадываются отдельные слова или буквосочетания, похожие на те, что могут появиться в тексте. А потом алгоритм отвергал эти варианты и возвращался к нечитаемой белиберде. И вот тогда я останавливал процесс, откатывал все назад, и мы начинали снова с того места, где алгоритм ушёл, как мне казалось, с правильного направления. Это происходило не меньше пяти раз. Потому-то сам процесс нельзя назвать автоматическим — я помогал алгоритму, так что получился автоматизированный взлом шифра.
Собственно, через два дня шифр поддался. В полученном варианте есть неточности, но надо отметить, что генетический алгоритм остановился сам, то есть он нашёл вариант, удовлетворяющий критерию остановки. А критерием было очень маленькое расстояние между целевым распределением частот и тем распределением, которое получилось. И результат, в принципе, можно прочитать — в нём всего несколько букв не на своих местах.
Я спросил:
— А почему так получилось?
Отец ответил:
— Я ещё не смотрел в деталях, но предполагаю, что в некоторых вариантах сопоставления букв и чисел произошёл взаимный обмен буквами, частоты которых очень близки друг к другу. И в этом случае в дешифрованном сообщении такие буквы поменялись местами. Таких пар должно быть совсем немного, иначе ошибка накопится и алгоритм должен будет отсечь вариант, слишком далекий от идеала. Впрочем, чтению дешифрованного послания такие пары мешать не должны, так что мы просто вручную поменяем всё так, как должно быть, и полностью восстановим ключ.
После этого отец пригласил нас в штаб, чтобы обсудить полученный результат. Катя тоже переписала дешифрованный текст в свой рабочий блокнот. Она несколько раз перечитала его, а потом спросила:
— А что такое «Муханская усадьба»?
Отец ответил:
— Здесь недалеко расположена местность, которая называется Муханскими оврагами. Овраги там действительно есть, но не такие уж и глубокие. Мне кажется, что была в этом месте какая-то усадьба, сегодня разрушенная. Я думаю, что скоро мы туда наведаемся.
Я снова перечитал дешифрованное сообщение и заявил:
— Что-то мне кажется, что нам снова предстоит детективное расследование. Прямо как в рассказе «Золотой жук». Мало расшифровать то, что зашифровано, надо ещё понять, что всё это значит.
Отец вскинул бровь:
— Снова?