2003 г
Доверительная открытая платформа
Пол Инглэнд, Батлер Лэмпсон, Джон Манферделли, Маркус Пейнадо, Брайан Уиллман
07.08.2003
Открытые системы, #07-08/2003
Предлагаемая Microsoft схема Next-Generation Secure Computing Base расширяет возможности персональных компьютеров, оснащая их механизмами, обеспечивающими программное обеспечение средствами защиты от операционной системы, от драйверов устройств, от BIOS и от других программных средств, выполняемых на данной машине.
Каждый день люди заносят в компьютеры все новые персональные и другие ценные данные, и вполне понятно, что локальным и удаленным пользователям требуются механизмы, обеспечивающие защиту данных от несанкционированного использования. Уже сейчас имеется ряд механизмов, предназначенных для решения этой проблемы [1]. Так, для регистрации в практически любой коммерческой системе пользователь должен ввести пароль. Пользователи и администраторы системы могут настроить ее таким образом, чтобы доступ к ресурсам — например, к файлам, содержащим конфиденциальную информацию, — был ограничен.
Однако в среде, предназначенной для массового рынка, эффективность таких механизмов ограничена, ибо нет возможности обеспечить целостность самого ядра системы. Одна из главных причин этого состоит в том, что подобная среда требует открытости программных и аппаратных компонентов; и в результате появляются операционные системы с большим набором периферийных устройств и драйверов устройств, которые содержат миллионы строк кода. Для того чтобы организовать атаку, парализующую систему контроля доступа, достаточно одной программной ошибки или намеренно оставленного «черного хода» в обширном и разношерстном программном коде. Вирусы и разрушительные «троянские кони» сплошь и рядом используют такие ошибки на огромном количестве машин, подключенных к Internet.
Назовем причины, под воздействием которых пользователи открытых систем подвергаются тем или иным опасностям.
- Корпоративный документ, подготовленный надежным приложением, стал доступен для вируса.
- Выполняемые с домашнего компьютера финансовые транзакции пользователя и его данные, хранимые на этой машине, попали в сферу действия "троянских коней", которые перехватывают действия пользователя и пароли.
- Служащие банка не могут отличить осуществляемые клиентом допустимые транзакции от недопустимых или представляющих собой прямой саботаж транзакций, инициализированных вовлеченным в атаку приложением.
Одно из решений перечисленных проблем состоит в том, чтобы обеспечить более жесткий контроль за аппаратными и программными компонентами платформы путем перехода к использованию закрытых систем. На этом принципе построены телеприставки, игровые машины и смарт-карты. В ситуации, когда изменение кода операционной системы или выполнение неизвестного либо несанкционированного приложения затруднено, а то и вовсе невозможно, проще обеспечить целостность как данных, так и транзакций. Но все дело в том, что по универсальности закрытые системы намного уступают открытым, и вряд ли заменят собой персональные компьютеры.
Next-Generation Secure Computing Base
Цель разработанной корпорацией Microsoft схемы Next-Generation Secure Computing Base (NGSCB) состоит в том, чтобы обеспечить надежные средства контроля доступа при сохранении открытости архитектуры персональных компьютеров. В отличие от закрытых систем NGSCB дает возможность использовать любое программное обеспечение, однако при этом операционные системы и приложения защищают себя от других программ, выполняемых на той же машине. К примеру, данная платформа может сделать касающиеся домашних финансов данные недоступными для программ, которым пользователь не дал санкции на такой доступ.
Для обеспечения описанного режима функционирования платформы NGSCB реализуют:
- изоляцию друг от друга операционных систем и процессов (изоляция ОС связана с мониторами виртуальных машин, однако благодаря реализации ряда важных нововведений NGSCB надежнее, нежели традиционные решения категории VMM: небольшой монитор может изолировать себя и другие надежные компоненты от BIOS, драйверов устройств и прочих низкоуровневых модулей):
- аппаратные и программные примитивы безопасности, позволяющие программным модулям хранить свои секреты и предъявлять свои полномочия локальным и удаленным объектам (эти примитивы обеспечивают надежность реализованных в ОС средств защиты доступа, не лишая платформу возможности запуска других операционных систем).
Режим безопасности, который позволяет запускать любые программы, однако требует, чтобы в них были четко идентифицированы решения, касающиеся прав доступа, мы будем называть функционированием с аутентификацией, а аппаратно-программную платформу, обеспечивающую такой режим, — доверительной открытой системой (trusted open system).
Разработка NGSCB осуществлялась с учетом целого ряда требований, предъявляемых к коммерческим средам. И главное из этих требований состояло в сохранении открытости архитектуры, обеспечивающей возможность добавления к платформе любых аппаратных периферийных устройств и выполнения любых программ без привлечения «центральной инстанции». Более того, система должна функционировать на устаревших персональных компьютерах. Мы внесли изменения в важнейшие компоненты платформы, однако архитектура ПК по большей части оставалась неизменной. Система должна была оставаться совместимой с подавляющей частью существующих периферийных устройств. Наконец, изменения в аппаратной части не должны были оказывать существенного влияния на стоимость производства ПК.
Нашей главной заботой была надежность (assurance, это слово можно перевести также как «гарантия, уверенность, твердость» — прим. пер.) Данное понятие — не конкретная функция защиты; оно отражает степень уверенности владельца системы в ее корректном функционировании, особенно в ситуации, когда на нее предпринимается атака. Еще одна задача состояла в том, чтобы обеспечить функционирование с аутентификацией.
К рассматриваемым аппаратным платформам не предъявляются требования обеспечения защиты от несанкционированных манипуляций с аппаратными компонентами. Такая защита стоит денег; между тем, ясно, что посягательства на безопасность пользовательских систем по большей части инициируются вредоносными программами или проводятся дистанционно с использованием ошибок в программном обеспечении, которое во всех иных отношениях не вызывает нареканий.
Функционирование с аутентификацией
Традиционные системы контроля доступа защищают данные от несанкционированного доступа с помощью механизмов аутентификации, таких, как пароли, биометрические средства или смарт-карты. По поступлении каждого запроса на допуск запускается системный компонент, страж (guard), являющийся частью доверительной вычислительной платформы (trusted computing base). Страж предоставляет доступ или отказывает в нем, проверяя запросы на доступ по таким критериям, как пользователь, запрос и политика контроля доступа, применяемая данной системой [1]. Решения о предоставлении доступа отчасти зависят от того, какая программа направляет запрос. К примеру, пользователь может санкционировать доступ к содержащим финансовую информацию файлам лишь для нескольких программ.
Расширение практически любой построенной на идентификации пользователей системы контроля доступа до уровня модели доступа на базе программ проблемы не представляет [2]. Например, для какого-нибудь ресурса можно составить список доступа, который будет разрешать доступ входящим в этот перечень программам, но не пользователям, выполняющим эти программы. Мы полагаем, что большинство систем, обеспечивающих режим функционирования с аутентификацией, будут принимать решения по предоставлению доступа по запросам на использование ресурса, исходящим как от программ, так и от пользователей.
Определение программного идентификатора
Для организации управления доступом на основе кода необходимо располагать методом идентификации программ. Если операционная система может гарантировать целостность файловой системы, она может просто исходить из того, что программа и является «именно тем, за что она себя выдает». Но когда дело доходит до распределенных систем или до платформ, обеспечивающих функционирование «испытывающих взаимную подозрительность» операционных систем, без идентификации программного обеспечения на основе криптографических средств не обойтись.
Простейший пример — «контрольный код» (cryptographic digest) или «хэш» исполнимого образа программы. В рамках этой модели операционная система не строит предположений относительно безопасности приложений, хранимых на диске или в сети. Если данное приложение будет модифицировано, изменится его «хэш» — а значит, и его «индивидуальность», а также услуги, на которые оно вправе претендовать [3-5].
Использование программных идентификаторов
Программные идентификаторы используются, в частности механизмами хранилищ запечатанных данных (sealed storage) и засвидетельствования (attestation).
Хранилище запечатанных данных. Реализованный с помощью средств криптографии механизм контроля доступа, в котором предполагается, что запечатывающий компонент (sealer) указывает, какие программы (определяемые по идентификатору кода) могут прочитать, или «распечатывать» данный секрет. Данный метод обеспечивает конфиденциальность и целостность хранимых данных. В принципе примитивы метода могут быть реализованы на любом системном уровне. К примеру, его можно реализовать аппаратно в форме службы для операционной системы, либо в операционной системе в форме службы для приложений.
На рис. 1 представлены примитивы Seal и Unseal. Программы могут вызывать примитив Seal и называть свой программный идентификатор (так происходит в большинстве случаев) или программный идентификатор какой-либо другой программы как объекта, имеющего доступ к данной информации. Если примитив Unseal вызывается программой, идентификатор которой «запечатан», он возвращает «запечатанный» секрет и программный идентификатор запечатывающего компонента (sealer). Если обратившаяся с запросом программа имеет другой идентификатор, Unseal возвращает ошибку.
Seal предназначен для локального хранения секретных данных. «Запечатанные» секреты недоступны для других компьютеров. Существует достаточно широкий диапазон возможностей реализации примитивов Seal и Unseal [6]. В общем случае уровень реализации — будь то аппаратный уровень или операционная система — должен иметь доступ к криптографическому ключу K.
В демонстрационной реализации Seal создает структуру данных, содержащую секретную строку, предоставленную программой, которая запустила механизм, идентификатор программы, для которой должны быть открыты запечатанные данные, а также идентификатор программы, вызвавшей Seal, — чтобы распечатывающий элемент мог идентифицировать источник данных [7]. Для шифрования этой структуры данных и защиты ее целостности в механизме Seal используется примитив шифрования с аутентификацией (authenticated encryption primitive), который может сочетать шифрование и аутентификацию сообщения.
На вход Unseal поступают данные, полученные ранее при выполнении операции Seal. Эти данные дешифруются и проверяются на целостность. Проверка будет считаться успешной, лишь если данные не были изменены и если они были получены ранее в результате выполнения операции Seal на данной машине. В случае невыполнения указанных условий механизм Unseal отвергает запрос на доступ к данным.
Если же проверка целостности дает положительный результат, механизм Unseal удостоверяется в том, что программный идентификатор объекта, вызывающего Unseal, был признан действительным на момент запечатывания данных. При выполнении этого условия Unseal открывает вызывающему объекту секретную строку и идентификатор запечатывающего компонента. Если же программный идентификатор вызывающего объекта не был признан действительным, Unseal возвращает ошибку.
Unseal возвращает идентификатор запрашивающего объекта потому, что механизм Seal может быть запущен любой программой; между тем, безопасность данных в ряде случаев зависит от того, относится ли к категории известных источник запечатанных данных. К примеру, распечатанная информация часто может использоваться в качестве криптографического ключа, и распечатывающий компонент должен быть уверен, что источником ключа не является злоумышленник.
Засвидетельствование. Хранение запечатанных данных есть ограниченная форма симметричного шифрования, при использовании которой программы обеспечивают длительное хранение долгосрочных секретов. Засвидетельствование же — это вариант шифрования с открытым ключом, обеспечивающий программам возможность предъявления удаленным контрагентам своих прав доступа через предоставление своих программных идентификаторов [8].
Для реализации механизма засвидетельствования платформа должна располагать сертифицированной парой открытый/секретный ключ. Рассмотрим вариант подписи, который мы называем Quote. В ходе операции Quote осуществляется конкатенация строки, предоставленной программой, которая хочет засвидетельствовать свои права доступа, и программного идентификатора данной программы; затем созданная таким образом структура данных подписывается секретным ключом для конфиденциальных данных, а полученный результат возвращается вызывающему объекту. Запрашивающая программа может направить эту подписанную структуру данных удаленному контрагенту. Как правило, к таким сообщениям прилагаются сертификаты платформы, обеспечивающие возможность использования ключа данной платформы.
Получатель может проверить подпись, а значит, и программный идентификатор отправителя, и если в результате проверки будет получен идентификатор отправителя, получатель может приступить к выполнению запрашиваемой транзакции или передать запрашиваемые данные. Разумеется, Quote и остальные компоненты транзакции должны являться частью того или иного криптографического протокола.
Загрузка ядра и функционирование с аутентификацией
Поскольку идентичность фрагмента программы подтверждается его контрольным кодом, операционная система может определить и записать программный идентификатор приложения при формировании процесса. Однако эти функции должны быть выполнены в интересах операционной системы аппаратными средствами.
Ответственность за определение и запись контрольного кода загружаемого ядра и за его инициализацию в операционном состоянии, определяемом архитектурой, возлагается на аппаратные компоненты системы и на микрокод. Платформа должна иметь защищенное пространство для хранения криптографических ключей, необходимых для реализации хранения запечатанных данных и выполнения процедуры засвидетельствования. По нашему мнению, одно из наиболее приемлемых решений будет состоять в использовании недорогого криптографического процессора. Мы называем его сопроцессором безопасности (security coprocessor, SCP). SCP подключается к набору микросхем платформы или является его частью.
Этот аппаратный компонент оказывает услуги аутентификации размещенным на нем ядрам — он может, например, предоставить ядру возможность хранить секреты и предъявлять права доступа. В свою очередь, ядро будет использовать эти секреты для предоставления аналогичных услуг выполняемым на нем приложениям.
Реализация режима функционирования с аутентификацией
Почти все существующие модели управления доступом предусматривают конкретные решения конкретных проблем, связанных с удобством эксплуатации и степенью управляемости систем. Введение режима функционирования с аутентификацией влечет возникновение как хорошо известных, так и неизвестных проблем.
Модернизация
В ядре может быть реализована любая форма политики модернизации. Возможна, к примеру, такая схема: администратор вводит программный идентификатор модернизированного ядра, и выполняемое ядро повторно выполняет операции по запечатыванию секретов с использованием нового программного идентификатора.
Другой пример предполагает использование криптографических средств с открытым ключом для группирования операционных систем на базе криптографической сертификации. Допустим, что в ядре n встроен открытый ключ. Ядро n + 1 сопровождается заявлением, содержащим контрольный код ядра n + 1 с подписью, которую можно проверить с помощью открытого ключа, встроенного в ядро n.
Если ядро n получает запрос на обновление, включающий должным образом сформированное и подписанное заявление о модернизации, это ядро откроет все секреты — или главный секрет, защищающий все остальные, — контрольному коду ядра, указанного в заявлении о модернизации. Когда пользователь загрузит это новое ядро, оно будет иметь доступ ко всем старым секретам.
Модернизация приложений может осуществляться с использованием аналогичных приемов; в то же время, ядро может оказывать приложениям услуги по содействию в их модернизации.
Программная идентичность родовых программ
Конкретные действия запущенных на выполнение программ часто зависят от данных, получаемых ими из внешних источников. Самый яркий тому пример — интерпретатор. Программная идентификация интерпретатора особого значения не имеет; в данном случае его лучше всего определять как «интерпретатор A, выполняющий сценарий B». Для отражения этого обстоятельства мы можем определить программный идентификатор «родовой» программы как хэш конкатенации программы и вводимых в нее данных.
В числе примеров можно назвать программу, которая дает «добро» на собственную отладку, если получает соответствующую команду от данных, или защищенную программу «чата», которая вступает во взаимодействие с диалоговым сервером, указанным в открытом ключе, который содержится в получаемых ею данных. Программный идентификатор допускающей отладку программы будет отличаться от идентификатора не предусматривающего отладку приложения, а программу «чата», применяемую для совместной работы в корпоративной среде, можно будет отличить от аналогичной программы, применяемой для ведения частных бесед.
Резервное копирование и перенос данных
Реализованные в платформе средства хранения запечатанных данных предполагают также прочную «привязку» данных к конкретной машине, однако пользователи обычно организуют свою работу так, что данные кочуют с машины на машину.
В этих условиях совершенно не обязательно обременять аппаратные средства негибкими механизмами для совместного использования и миграции данных. Ядра ОС и приложения могут реализовывать собственные правила экспорта данных. Реализация целого семейства защищенных и универсальных механизмов совместного использования данных, построенных на примитивах режима функционирования с аутентификацией доступа, не составит особого труда.
Обзор NGSCB
В NGSCB режим функционирования с аутентификацией реализуется в контексте полной системы.
Выделение разделов
Один из возможных подходов к удовлетворению требований безопасности состоит в том, чтобы оснащать средствами безопасности, такими, как хранение запечатанных данных и засвидетельствование, унаследованные программные системы. Но мы полагаем, что такая стратегия, скорее всего, не принесет успеха.
Обычные, предназначенные для массового рынка операционные системы имеют гигантские размеры. Они содержат десятки миллионов строк кода и оптимизированы для обеспечения максимальной функциональности и быстродействия. Постоянно разрастается разнородная коллекция периферийных устройств и соответствующих драйверов устройств. Зачастую они тоже не отличаются компактностью и оптимизированы по функциональности и быстродействию. В итоге получается, что для набора программ, на которые приходится возлагать задачу обеспечения безопасности, характерны такие свойства, как большие размеры, децентрализованность и разнородность. К тому же, их код часто меняется. По-видимому, использование таких программ противоречит основным принципам проектирования систем безопасности.
Теоретически можно примирить эти взаимоисключающие требования с помощью выделения на машине разделов (machine partitioning) и одновременного выполнения на одном и том же оборудовании двух или большего числа изолированных друг от друга операционных систем [9]. Одна из них может быть традиционной массовой системой, ответственной за управление большинством устройств и за выполнение любых старых приложений. Другие системы могут быть специально предназначены для создания высоконадежной вычислительной среды. Такую среду можно реализовать с помощью высоконадежных операционных систем, с помощью обычных операционных систем, помещенных в изолированную ограниченную область («песочницу») средствами монитора виртуальных машин, или через автономные приложения.
|
Рис. 2. Схема NGSCB. Монитор делит машину на два раздела, один из которых (на рисунке слева) предназначен для немодифицированной старой операционной системы, а второй (справа) — для более компактного, обеспечивающего защиту данных диспетчера системы, именуемого nexus. Во втором разделе выполняются приложения, называемые агентами. Они функционируют в изолированном адресном пространстве и имеют доступ к примитивам режима с проверкой прав доступа. Nexus и его агенты могут иметь доступ к защищенным средствам пользовательского ввода и вывода
|
На рис. 2 представлена конфигурация NGSCB, построенная на базе специальной высоконадежной операционной системы. В левой части рисунка показаны программные средства, выполняемые на современных компьютерах массовой архитектуры — операционная система, драйверы устройств и приложения. В правой части рисунка представлено компактное ядро высоконадежной ОС (nexus), а также выполняемые на нем приложения и агенты. Обе системы сосуществуют в пространстве одного компьютера. Монитор машины изолирует системы, чтобы ни одна из них не могла влиять на работу другой.
Аппаратная платформа NGSCB позволяет запускать и выполнять любую программу. Но примитивы режима функционирования с проверкой прав доступа дают каждой операционной системе возможность функционировать, не подвергаясь риску разрушительного воздействия или надзора со стороны других операционных систем. Подобным же образом, операционные системы могут обеспечивать выполнение любых приложений, но в то же время они предоставляют примитивы режима функционирования с аутентификацией, защищающие эти приложения от других приложений или операционных систем.
Надежные маршруты
Вероятно, что многие платформы предоставят локальным пользователям возможность безопасного ввода и безопасного получения данных. Такие средства позволят под управлением монитора машины отображать на экране лишь часть данных, причем монитор не должен будет содержать полную версию графического драйвера. Мы полагаем, что будут разработаны также безопасные методы ввода данных с клавиатуры и с помощью мыши.
Инициализация
NGSCB предусматривает облегченный вариант загрузки монитора машины из уже запущенной операционной системы. Таким образом, процесс загрузки ядра nexus отделяется от процесса инициализации платформы, в котором часто используется BIOS и факультативные аппаратно-программные компоненты из многих источников.
В данном процессе загрузки участвует и сопроцессор безопасности, необходимый для реализации режима функционирования с проверкой прав доступа; он может определять идентичность запущенного монитора или получать о ней надежную информацию. Кроме того, он реализует во встроенных программах примитивы хранения запечатанных данных и засвидетельствования. В качестве сопроцессора безопасности можно будет использовать Trusted Platform Module [10], который разрабатывается в рамках альянса Trusted Computing Platform Alliance.
Сопроцессор предоставляет также и другие услуги, как связанные, так и не связанные с режимом проверки прав доступа. Так, он оснащен генератором случайных чисел, а также аппаратно реализованными монотонными счетчиками.
Конфиденциальность
Режим функционирования с аутентификацией содержит элементы, на базе которых можно создавать гораздо более мощные средства защиты персональных и секретных данных на персональных компьютерах. Так, если в программе для торговли акциями маркер аутентификации (authentication token), санкционирующий торговые операции с акциями, хранится с использованием механизма хранения запечатанных данных, вирусы и другие неизвестные приложения не смогут получить доступ к данным и использовать их либо направить их некоему удаленному получателю. Другой пример: если даже средства безопасности машины неверно настроены — скажем, в нарушение требований безопасности файловая система открыта для совместного использования — при копировании запечатанных данных на другую машину они теряют всякий смысл. Наконец, у локального приложения, зараженного «троянским конем», изменится программный идентификатор, в результате чего он не сможет распечатать секретные данные и, соответственно, использовать их во вред владельцу этих данных.
Короче говоря, неизвестным или ненадежным программам будет очень трудно взломать персональные данные, защищенные с помощью упомянутых механизмов.
Операции хеширования
Реализация режима функционирования с аутентификацией невозможна без использования уникальных криптографических ключей. Если не уникальны «ключи запечатывания», запечатанные данные могут быть прочитаны другими машинами; если же не уникальны «ключи подписи», другие машины могут выдавать себя за данную машину в процессе сетевого взаимодействия.
Однако если ключи используются ненадлежащим образом или если оставляет желать лучшего реализация примитивов режима функционирования с аутентификацией, сами ключи становятся своего рода угрозой для секретных данных — например, за действиями машины могут следить в то время, как пользователь путешествует по Сети.
В NGSCB предусмотрен ряд программных и аппаратных механизмов, позволяющих снять остроту этих проблем. Так, разработчики средств хранения запечатанных данных позаботились о том, чтобы они не «разглашали» сведений, позволяющих идентифицировать платформу. Механизм Seal, как на аппаратном, так и на программном уровне, добавляет к объекту «запечатанные данные» случайную информацию, так что злонамеренные программы, неоднократно обращающиеся к Seal с запросом о получении одних и тех же данных, каждый раз получают другое значение.
Кроме того, все новые аппаратные и программные службы в NGSCB используются лишь по желанию пользователя и находятся под его контролем. А значит, пользователи могут отказываться от применения любого из служб режима функционирования с аутентификацией — или они могут использовать примитивы запечатанного хранения данных, но не функции засвидетельствования.
Поставщики услуг идентификации
Сами по себе операции платформы по засвидетельствованию не предполагают раскрытия данных о платформах. Однако в сочетании с открытым ключом платформы операция Quote предназначена для выполнения «полной» проверки полномочий платформы. Следовательно, операционные системы должны обеспечивать тщательный контроль за раскрытием открытого ключа платформы и за использованием функций засвидетельствования.
На аппаратном уровне осуществляется контроль за доступом к открытому ключу платформы и к функции засвидетельствования: для того, чтобы та или иная программа могла выполнять операции, предполагающие раскрытие информации о платформе, пользователь должен явным образом санкционировать такие действия. На программном уровне nexus дает пользователям возможность ограничивать число сторон, которым он будет предоставлять касающуюся засвидетельствований информацию или вообще блокировать предоставление этих данных.
Выгоды от проведения засвидетельствований очевидны; с другой стороны, бесконтрольное раскрытие идентификатора платформы чревато серьезными последствиями. Исходя из этого, Microsoft поощряет создание независимыми производителями программ-поставщиков услуг идентификации (identity service provider), которые должны выступать в качестве доверенных посредников между поставщиками услуг и их клиентами. Пользователи могут настраивать свои платформы таким образом, чтобы выполнение процедуры засвидетельствования было разрешено одной или нескольким программам-поставщикам услуг идентификации. Затем они могут запрашивать вторичные маркеры засвидетельствования, которые подтверждают идентичность доверенной платформы, не раскрывая информации о ней. Пользователи могут получать неограниченное число этих псевдонимов для выполнения повседневных транзакций в среде Web.
Кроме того, поощряется и использование так называемых механизмов с нулевой информацией (zero knowledge mechanism), которые дадут сопроцессору безопасности возможность проверять полномочия выполняемых программ, не раскрывая данных идентифицирующих машину.
Приложения
NGSCB обеспечивает мощную инфраструктуру защиты для выполнения широкого набора прикладных программ.
Программируемые смарт-карты
Обычно смарт-карты реализуют криптографические протоколы и обеспечивают защиту секретных ключей. На случай потери или кражи они часто оснащаются защитным механизмом: чтобы такая карта могла начать работу, в главное устройство должен быть введен короткий пароль или персональный идентификационный код (personal identification number, PIN).
Для того чтобы выполняемая на платформе NGSCB прикладная программа с использованием смарт-карты могла получить доступ к ключам авторизации и к запечатанным данным и, соответственно, обеспечить защиту ключей, можно прибегнуть к процедуре засвидетельствования. Затем это приложение с использованием смарт-карты может реализовать криптографический протокол как макрокод.
Кроме того, выполняемые на платформе NGSCB приложения могут защищать PIN-коды с помощью защищенных средств ввода-вывода и обеспечивать пользователей надежными описаниями санкционируемых ими транзакций. Существующие варианты смарт-карт обычно не располагают такими средствами защиты.
Регистрация в сети
Чтобы воспрепятствовать перехвату паролей или вторжениям в сети, клиенты и серверы применяют криптографические протоколы, однако пароли часто остаются уязвимыми перед лицом «троянских коней» и анализаторов ключей.
Применение программируемых смарт-карт может воспрепятствовать получению ненадежной программой аутентификационного ключа пользователя, и тем самым повысить надежность процедуры сетевой регистрации. Если для санкционирования использования этих ключей приложение будет применять защищенные средства ввода, проникшему на локальную машину вирусу будет сложнее устроить автоматическую регистрацию против желания пользователя.
Если служба намерена сохранить процедуру проверки прав доступа с использованием учетных записей/паролей на сервере, на этом сервере можно установить заверенную программу регистрации, которая получает пароли от располагающих защищенными средствами ввода пользователей; это позволит повысить надежность процедуры регистрации в сети. Засвидетельствование позволяет серверам отвергать попытки регистрации, исходящие от неизвестных программ, которые каким-то образом получили верительные данные для регистрации.
Санкционирование транзакций
Web-службы обычно проверяют полномочия пользователей с помощью учетных записей и паролей. По завершении процедуры регистрации служба исходит из того, что предоставившая пароль и затем направившая запрос о выполнении транзакции программа действует по поручению пользователя и в его интересах. Но в условиях, когда вирусы получают все более широкое распространение, такое предположение не всегда обосновано.
Для повышения надежности процедуры санкционирования транзакций ответственная за санкционирование транзакций программа может воспользоваться реализованными в NGSCB защищенными средствами вывода, чтобы предъявить пользователю именно ту транзакцию, которая запрашивается. Например, поставщик направляет пользователю оформленное в виде HTML-страницы описание транзакции, и агент отображает его с помощью защищенных средств вывода.
Агент может также использовать защищенные средства ввода для получения локальной санкции на выполнение отображенной транзакции. Приложение может использовать средства засвидетельствования для передачи запроса на транзакцию и гарантировать надежность клиента, направившего запрос.
Данные, управляемые правами доступа
По всему миру на смену централизованных (и централизованно управляемых) хранилищ данных приходят разнородные собрания локально администрируемых сетевых узлов. В таких условиях пользователи и серверы не могут быть уверены в том, что документы, сообщения электронной почты и мультимедийная информация, направляемые ими адресатам, не станут объектами посягательств злоумышленников.
Засвидетельствование позволяет узлам проверять идентичность платформы и программных средств, которым они открывают свои данные. Если отправители могут установить идентичность получателя, они могут присоединить к своим данным ограничения по правам с большей степенью уверенности, что получатель будет уважать эти права.
Удостоверение документов подписью
Вместо бумажных посланий люди все чаще направляют друг другу сообщения электронной почты и другие документы в электронных форматах, но простота, с которой можно модифицировать содержание электронных документов, говорит в пользу физических носителей.
Чтобы обеспечивать целостность документов, приложение может использовать технологии цифровых подписей, которые выявляют любые изменения, внесенные в текст после подписания документа. Однако сама открытая природа клиентских компьютеров облегчает выполнение вредоносными программами их задач: раскрывать ключи подписи или изменять содержание подписанных документов.
Чтобы противостоять этим посягательствам, система может использовать средства хранения запечатанных данных для защиты ключей подписи, отображать подписываемый пользователем документ с помощью защищенных средств вывода и использовать средства защищенного ввода для авторизации подписи под документом. Кроме того, приложения могут использовать средства засвидетельствования для получения или сертифицирования ключей подписи.
Модели угроз
С учетом широкого распространения распределенных систем надо подчеркнуть, что описанные нами приемы повышения надежности компьютеров — особенно в том, что касается конфиденциальности и целостности данных, — имеют как сильные, так и слабые стороны.
В принципе отдельные машины должны быть безусловно стойкими к атакам, совершаемым с помощью программных средств. Точнее говоря, если компьютер оснащен исправными аппаратными средствами, а его программные компоненты правильно сконфигурированы, никакие действия со стороны внешних программ не должны нарушать заданные для него правила контроля доступа. Такая защита сохранить конфиденциальность данных даже при наличии занесенных из Сети вирусов, «троянских коней», «червей» и т.п.
На практике же достижение безусловной стойкости к программным атакам будет в решающей степени зависеть от способности создавать аппаратные и программные компоненты, свободные от ошибок, имеющих отношение к системе безопасности. NGSCB предусматривает меры по сокращению числа опасностей, угрожающих конкурентоспособным с коммерческой точки зрения системам. К примеру, соответствующие решения на уровне архитектуры дают нам возможность исключить из надежной базы обработки данных основную операционную систему, большинство драйверов устройств и BIOS.
С другой стороны, существует целый спектр вариантов физических атак на аппаратные компоненты, которые вполне могут достичь своей цели при наличии у злоумышленников достаточного опыта и вычислительных средств достаточной мощности. Поэтому мы полагаем, что какая-то часть машин все-таки будет взломана.
В худшем случае противник может получить в свое распоряжение все конфиденциальные данные, которые хранились на взломанной машине (запечатанные данные), а также секретный ключ засвидетельствования. Завладение последним позволяет противнику выдавать себя за легитимную систему при взаимодействии с удаленными компьютерами. Если раскрытая информация будет широко использоваться (к примеру, если секретный ключ засвидетельствования будет размещен в Internet), эту информацию можно установить и отозвать ключ засвидетельствования. В противном случае для выявления нужно будет задействовать какой-нибудь дополнительный механизм, например, проверки аппаратных средств корпоративной сети ответственным за безопасность служащим.
NGSCB гарантирует защиту конфиденциальности и целостности данных, если они хранятся на компьютерах, физический доступ к которым контролирует владелец данных. На практике это означает, что при совершении онлайновых банковских операций, покупок через Сеть и при сохранении различных персональных данных потребители могут рассчитывать на более высокую надежность ПК и на более совершенные средства защиты частной информации.
Столь же благоприятными будут последствия внедрения новой платформы и для корпоративных сетей. Кстати, стоит отметить, что хорошо управляемые корпоративные сети представляют собой распределенные системы, физически доступ к которым находится под контролем организации. В такой среде данные могут быть распределены по группе управляемых корпоративных машин с достаточно высокой степенью уверенности в том, что целостность и конфиденциальность данных не будет нарушена.
Прикладные программы систем NGSCB, предоставляющие конфиденциальные данные машинам, которые расположены в потенциально доступной для представителей недружественных организаций физической среде, должны учитывать возможность взлома некоторых машин и попадания конфиденциальных данных в чужие руки. Вытекающие из этого последствия для таких приложений зависят от множества факторов, которые определяются спецификой самого приложения. Так, если речь идет о предназначенных для широкого распространения и защищенных законом об авторских правах развлекательных приложениях, их дистрибьютор должен исходить из того, что какая-то часть получателей работает на взломанных машинах, и что эти люди могут обойти систему защиты соответствующих копий и заняться их распространением в собственных интересах. Коммерческие последствия этого зависят, помимо прочего, от эффективности избранного канала распространения [11].
Сложность, разнообразие и скорость изменения программной составляющей современных открытых систем противоречат базовым принципам проектирования защищенных систем. Задача NGSCB состоит в том, чтобы сохранить, обеспечить безопасность и открытость, удовлетворяя в то же время требования коммерчески успешных массовых операционных систем.
С тем, чтобы обеспечить NGSCB соответствующими аппаратными компонентами, Microsoft сотрудничает с большой группой поставщиков оборудования. Основные аппаратные модули нового поколения — такие, как центральные процессоры, наборы микросхем, а также видеокомпоненты и средства ввода — находятся на разных этапах разработки.
Литература
- B. Lampson, "Protection", Proc. 5th Princeton Symp. Information Sciences and Systems, Princeton Univ., Mar. 1971; reprinted in ACM Operating Systems Review, 1974, Jan.
- J. McLean, "Security Models", Encyclopedia of Software Engineering, 3rd ed., J. Marciniak, ed., Wiley Press, 1994.
- E. Meijer, J. Gough, "Technical Overview of the Common Language Runtime", tech. report, Microsoft, 2001; http://research.microsoft.com/~emeijer/Papers/CLR.pdf.
- P. Johns, "Signing and Marking ActiveX Controls", Developer Network News, 1996. 15 Oct.
- D.S. Wallach et al., "Extensible Security Architectures for Java", tech. report 546-97, Dept. of Computer Science, Princeton Univ., 1997. Apr.
- P. England, M. Peinado, "Authenticated Operation of Open Computing Devices", Proc. 7th Australasian Conf. Information Security and Privacy (ACISP), Springer-Verlag, 2002.
- M. Bellare, C. Namprempre, "Authenticated Encryption: Relations among Notions and Analysis of the Generic Composition Paradigm", Advances in Cryptology, Asiacrypt 00, Springer-Verlag, 2000.
- B. Lampson et al., "Authentication in Distributed Systems: Theory and Practice", ACM Trans. Computer Systems, 1992. Nov.
- R. Goldberg, "Survey of Virtual Machine Research", Computer, 1974. June
- Trusted Computing Platform Alliance, TCPA Main Specification Version 1.1, 2001.
- P. Biddle et al., "The Darknet and the Future of Content Protection", Proc. 2002 ACM Workshop on Digital Rights Management, Springer-Verlag, 2003.
Пол Инглэнд (pengland@microsoft.com) — специалист по архитектуре программных средств подразделения Microsoft Security Business Unit. Батлер Лэмпсон (blampson@microsoft.com) — заслуженный инженер подразделения Microsoft Research. Джон Манферделли (jmanfer@microsoft.com) — генеральный менеджер подразделения Microsoft Windows Trusted Platform and Infrastructure. Маркус Пейнадо (marcuspe@microsoft.com) — специалист в области архитектуры. Брайан Уиллман (bryanwi@microsoft.com) — специалист в области программной архитектуры.
Paul England, Butler Lampson, John Manferdelli, Marcus Peinado, Bryan Willman, A Trusted Open Platform. IEEE Computer, July 2003. IEEE Computer Society, 2003, All rights reserved. Reprinted with permission.