Если мы делаем забор все выше и выше, а клубнику по-прежнему воруют – значит, в заборе есть дыра и надо не наращивать высоту, а найти и забить дыру. Эта аналогия касается всех мер защиты информации, принимаемых бессистемно, в нарушение положения диалектического материализма о всеобщности связи предметов и явлений (каждые предмет и явление имеют взаимную связь с каждым из всех остальных предметов и явлений).
Если мы все же используем компьютеры с принципиально уязвимой архитектурой, то у нас должно быть средство управления этой архитектурой: только контроль над архитектурой и возможность ее изменения в соответствии с выполняемой задачей могут дать обоснованную уверенность в том, что данный конкретный компьютер – ваш инструмент, а не чей-нибудь еще.
На практике это означает, что на время загрузки и проведения контрольных процедур компьютер должен утрачивать свойства машины Тьюринга (универсального исполнителя), а затем, после успешного завершения контрольных процедур, – снова приобретать эти свойства.
Контрольные процедуры требуется проводить для того, чтобы убедиться в неизменности аппаратной и программной среды компьютера. Однако очевидно, что если контрольные процедуры производятся компонентом, который был (или мог быть, что в данном случае равнозначно) в свою очередь модифицирован злоумышленником, то в них нет никакого смысла.
Именно поэтому контролировать неизменность среды программными средствами нельзя, так как программа может быть изменена. Для того чтобы убедиться, что она не была изменена, ее нужно сначала проверить. Если мы ее проверяем другой программой, то сначала нужно проверить ту программу, которой мы проверяем первую, и т. д. Мы попадаем в зону действия известного парадокса «Кто будет сторожить сторожей?». В защите информации попытки контролировать целостность среды программными средствами носят название «синдром Мюнхгаузена» (рис. 70), поскольку они аналогичны попыткам вытащить себя самого из болота за волосы [83, 84, 87].
Рис. 70. Проверка целостности программы средствами программы
Продолжая эту аналогию, легко прийти к правильным выводам: вытащить себя из болота за волосы нельзя, потому что нет точки опоры, а вот если тянуть за ветку дерева, растущего на кочке, – то можно, потому что у дерева есть точка опоры.
Что может означать «точка опоры» применительно к компьютерной системе фоннеймановского типа (а у абсолютного большинства современных настольных компьютеров именно такая архитектура), не различающей команды и данные, системе, в которой одним из основных действий является «запись», то есть системе принципиально модифицируемой?
«Точка опоры» может означать только одно: контролирующие процедуры должны быть вынесены из этой модифицируемой среды в среду немодифицируемую и легко проверяемую, то есть простую, небольшую по объему (тогда легко обеспечить ее верифицируемость). Это означает аппаратное устройство, независимое от компьютера, который оно проверяет.
Независимость контролирующего устройства – обязательное требование: если часть процедур или решений об обработке их результатов вынесены в основной (контролируемый) компьютер, то модифицированной системой могут быть навязаны любые результаты контроля. Эффект от применения аппаратуры сведется к нулю.
И, наконец, главное: независимое аппаратное контролирующее устройство должно стартовать первым, до старта операционной системы, иначе у модифицированной системы будет возможность отключить своего контролера. «Кто первый встал, того и тапки». Стартовать первым должно то, чему мы доверяем.
Такое аппаратное, простое, независимое от компьютера контролирующее устройство, стартующее первым, до загрузки ОС компьютера, называется резидентным компонентом безопасности (РКБ) [83, 84, 87].
Резидентный компонент безопасности – это встроенный в вычислительную систему объект, способный контролировать целостность среды путем сравнения ее параметров с эталонными.
Задача РКБ – сделать так, чтобы на этапе прохождения контрольных процедур защищаемый компьютер не был универсальным, или «машиной Тьюринга», а потом, после их успешного завершения, пользователю снова становились доступны все плюсы универсальности.
Перечислим ключевые характеристики РКБ. Это устройство памяти:
– с очень высоким уровнем защищенности (его внутреннее ПО должно быть немодифицируемым);
– примитивное (иначе обеспечение его собственной защищенности эквивалентно задаче защиты компьютера, который оно защищает);
– встроенное в контролируемую систему и стартующее до старта основной ОС (иначе его функционирование будет необязательным);
– независимое от контролируемой системы (функционирующее автономно);
– перестраиваемое (т. е. предполагающее функционирование в режиме управления, когда возможно изменение политик (только специальным привилегированным пользователем), и в пользовательском режиме, когда изменение политик невозможно и осуществляется только контроль их выполнения).