White Papers

Настоящая статья посвящена принципам новой коммерчески распространяемой архитектуры, которая может быть реализована уже сегодня и обеспечивает значительное повышение эффективности центра обработки данных.

Внесение ясности в процесс разработки встраиваемых систем и приложений реального времени с целью повышения продуктивности и качества продуктов

Операционные системы

Доверительная открытая платформаВерсия для печати

Предлагаемая Microsoft схема Next-Generation Secure Computing Base расширяет возможности персональных компьютеров, оснащая их механизмами, обеспечивающими программное обеспечение средствами защиты от операционной системы, от драйверов...

Батлер Лэмпсон,Брайан Уиллман,Джон Манферделли,Маркус Пейнадо,Пол Инглэнд

Предлагаемая 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.


1 2 3

07.08.2003г


Также в разделе:

Новости ОСП-ТВ - 15.03.10



Содержание

Современные архитектуры

Новость

Руководителю проекта

Разработчику

Книги

Системы управления базами данных

Советы и мнения

Интернет

Операционные системы

Книжная полка ОС

Академия ОС

Программная инженерия

Безопасность

Приложения

Разное

Менеджмент ИТ

Платформы

Новости

От редакции



Эта рубрика в архиве
Список номеров за

OSP.RU :: Написать письмо.