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