– И как ты этого добивался? – спросил я.
– Разными способами. Один из моих самых любимых – когда я привязал к игрушечному квадрокоптеру с дистанционным управлением корзинку, насыпал в нее конфет и запустил в программистское крыло здания «Санта-Аны». Коптер летал от стола к столу, программисты получали конфеты, а я – фото с их работающих мониторов. В тот день я добыл восемь хешей.
– Очень мило, – похвалил я.
– Все любят конфеты, – философски заметил Тони.
– Значит, кто угодно может украсть хеш и попасть в чью-нибудь сеть, – сказала Ванн, чтобы вернуть разговор в деловое русло.
– Верно, – подтвердил Тони. – Но даже с хешем проблема для хакера все равно остается, ведь ему надо зайти через парадную дверь. Все только и ждут украденных или подделанных хешей и злонамеренных кодов. Потому каждый патч сначала распаковывается и запускается в «песочнице» – это такая безопасная виртуальная машина. Если код содержит угрозу, она там проявится и будет устранена. Есть и другие меры безопасности. В общем, я все это к тому, что очень трудно протащить в сеть подозрительный код обычным путем. Даже для гениального хакера это долгий путь, причем в никуда. – Он повернулся к Ванн. – Поэтому я и говорил вам, что это маловероятно.
– А потом Риз попыталась меня убить, – напомнила Ванн.
– На самом деле в том, что я ошибся, меня убедило не это, – признался Тони. – Меня осенило, когда Крис сказал, что Риз попыталась бежать от взрыва, после того как умышленно выдернула чеку. Если предположить, что контроль все-таки осуществлялся через парадную дверь, должна была остаться запись – о том, что патчи установлены, несмотря на запрет, что «песочница» запустилась для их проверки и сам результат проверки, подтверждающий их подлинность, а также хеши программиста и компании, которая их отправила. Ничего подобного там не было.
– Значит, зашли с черного хода, – заключил я.
– Так и есть, – сказал Тони. – Догадайся как.
Первой догадалась Ванн:
– Мерзавец сделал это во время интегрирования.
– В точку! – подтвердил Тони. – Когда клиент соединяется с интегратором, следует процедура опознавания, а затем открывается двухсторонний информационный поток. По идее, этот процесс должен быть полностью отделен от внутренней работы сети, и так и есть, но… программа неидеальна. Если знаешь, где искать, можно найти точки доступа к сетевому софту. И тогда получается вот что. – Он увеличил изображение сети, сосредоточившись на узле, который включал ресивер для клиентского информационного потока. – Это интерполятор, – показал он. – Если информационный поток прерывается на миллисекунду или даже меньше, интерполятор подбирает данные по обе стороны разрыва и заполняет его усредненными значениями. Но для этого ему нужно иметь доступ к обработке данных из сети. Получается брешь в брандмауэре. Именно это Хаббард и использовал. – Фотография сети преобразовалась в схему. – Думаю, он сделал вот что. Сначала подтвердил обмен данными с интегратором. После чего намеренно начал создавать в информационном потоке пропуски именно такой продолжительности, чтобы сработал интерполятор. А потом использовал доступ интерполятора к процессору, чтобы сгрузить туда исполняемый файл. Делается это столько раз, сколько нужно, чтобы файл скачался целиком. Потом он распаковывается и переписывает софт. Поскольку файл поступает напрямую в процессор, не нужно никакой «песочницы». Стадия проверки тоже пропускается, значит хеш также не нужен. Это очень маленький файл, поэтому сети интегратора не нужно отключать сеанс, чтобы его запустить. Интегратор никогда даже не узнает, что его подправили.
– Так какого же черта этот дефект до сих не исправили? – спросила Ванн, как мне показалось, не на шутку встревожившись.
– Ну подумайте сами, – сказал Тони. – Это действительно серьезная программная ошибка, но дорожка, которая к ней ведет, очень и очень узкая. Для начала о ней надо просто знать. Потом надо получить техническую возможность ею воспользоваться. Плюс иметь для этого технические средства, ведь далеко не каждый среднестатистический хаден способен в своей голове внедрить в информационный поток умышленные пропуски. Это требует какого-то специфичного оборудования между клиентом и интегратором, а, насколько я знаю, его не существует. Значит, его надо создать. Никто не устранил этот косяк, потому что до сих пор никто вообще не считал это косяком. Так – безобидной странностью. Попросту говоря, нужен был Лукас Хаббард, чтобы им воспользоваться.
– Но Бренда Риз никогда не интегрировалась с Хаббардом, – возразил я. – Она работала с Сэмом Шварцем.
– Хаббард создал алгоритм и средства, – сказал Тони. – Когда они есть, их может применить кто угодно.
– Сэм Шварц – юрист Хаббарда, – напомнила Ванн. – Кому, как не ему, помогать своему боссу.
– К тому же не слишком нравственный юрист, – заметил Тони. – Но вы правы. Хаббард вполне мог привлечь Шварца и провернуть это вместе с ним.
– Похоже, ты твердо уверен, что главный виновник – Хаббард, – сказал я.
– Похоже, это ты твердо уверен, что главный виновник – Хаббард, Крис, – ответил Тони.
– Да, но я хочу знать: ты так считаешь, потому что я так считаю, или есть другая причина?
– Я так считаю, потому что так считаешь ты, – сказал Тони. – А еще потому, что масштаб подобных дел – я имею в виду и случай с Брендой Риз, и трагедию с Джонни Сани – требует ресурсов или небольшой страны, или очень богатого человека. Но главное, я так считаю из-за кода.
– Из-за кода, – повторила Ванн.
– Да, – подтвердил Тони; схема над нами исчезла, и на ее месте появились строчки кода. – Вы много знаете о Хомском? – спросил он. – Я говорю о языке программирования, а не о человеке.
– Ничего не знаю ни о том ни о другом, – ответила Ванн.
– Крис?
– Ничегошеньки.
Тони кивнул:
– Язык программирования назвали в честь ученого-лингвиста Хомского, потому что он создавался для общения с глубинными структурами мозга. Получился эдакий «глубинный язык» – почти каламбур. Прелесть этого языка в том, что он поразительно гибкий. Если его выучить, по-настоящему выучить, можно найти всевозможные пути для решения любой проблемы и любой задачи. Это крайне важно для нейронных сетей. Они должны быть гибкими, ведь каждый мозг уникален. Поэтому и язык, на котором вы пишете к ним программы, должен быть не менее гибким. Вы еще следите за моей мыслью?
– Как-то все очень таинственно, – заметил я.
– Этого я и добивался, – сообщил Тони. – Язык Хомского должен быть таинственным, потому что он создавался для прямой связи с мозгом. Но есть и оборотная сторона. Поскольку язык Хомского позволяет найти множество решений одной и той же конкретной проблемы, программисты, свободно пишущие на нем, в конце концов развивают свой собственный, ни на кого не похожий почерк. Если потратить действительно много времени для изучения кода, в конце концов можно сказать, кто его написал.