Концепция LaGrande:

аппаратная защита одних программ от других


Вы слышали о новой технологии под кодовым названием LaGrande, разрабатываемой Intel и сотоварищи? Да, но боялись спросить? Вам несомненно сюда.

Теория

Защита данных, основные понятия

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

Когда мы говорим о защите информации, мы всегда (так или иначе) подразумеваем процесс передачи информации. Ибо сама по себе накопленная каким-либо образом и хранимая где-либо информация никогда не нанесет нам вреда (по крайней мере, пока она лежит мертвым грузом), а вот ее попадания в нежелательные или случайные руки мы, разумеется, хотели бы избежать. Попасть к кому-либо она может только в результате процесса передачи информации из некоего места А в место B:

Причем как по дороге, в момент передачи, так и от ненадежных участников процесса — самих «A» или «B». Другими словами, будем говорить о том, что наш процесс передачи информации и его участники погружен в некоторую агрессивную среду, которая только и ищет возможности нашу информацию умыкнуть:

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

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

(Эффективность метода защиты) = (Цена Взлома) / (Цена Защиты).

А понятие эффективности защиты в конкретном случае — соотношение ценности информации и затрат, необходимых для ее добычи. Итак:

(Эффективность защиты) = (Цена Взлома) / (Цена Информации).
(Выгодность защиты) = (Цена Информации) / (Цена Защиты).

Соответственно, можно сделать формальный вывод о том что:

(Эффективность метода защиты) = (Эффективность защиты) * (Выгодность защиты)

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

Вернемся к нашей базовой схеме. Комплекс защитных мер (зеленый цвет) распадается на три группы:

Защита источника (A), защита приемника (B) и защита канала передачи информации между ними. Защитные меры, не допускающие утечку информации в агрессивную среду, называют «стеной», на нашей схеме она зеленого цвета. Разумеется, как и любая конечная по высоте (читай стойкости) стена, она преодолима, но может успешно помогать от конкретного класса атак (попыток нашу информации похитить) при соблюдении конкретных условий. Именно поэтому, говоря о защите информации, необходимо четко понимать, от какого рода попыток ее украсть мы защищаемся, и в случае соблюдения каких условий наша защита обречена на успех.

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

Концепция и цели LaGrande

Итак, теперь мы можем приступить к рассказу о концепции LaGrande. Как минимум, у нас появились первые вопросы — что и от кого мы будем защищать, кто будет играть роль A, B и агрессивной среды, и каков тот самый набор защитных мер (зеленая стена). А также, разумеется, мы желаем узнать набор условий, в рамках которых защита будет выполнять свои функции.

По порядку:

  1. Что мы будем защищать? — Критические данные. Такие как номера кредитных карт, пароли и прочую важную информацию, которая, так или иначе, может быть перехвачена после ее ввода.
    В последнее время на обычных клиентских рабочих станциях (ПК), зачастую плохо защищенных как с программной, так и аппаратной точки зрения находится множество критических данных, способных нанести серьезный (в том числе прямой финансовый) ущерб владельцу, в случае попадания в чужие руки.
  2. От кого мы будем их защищать? — От несанкционированного перехвата различными приложениями, выполняющимися в данный момент в многозадачной операционной системе.
    В наше время наиболее распространены два типа атак — прямой несанкционированный доступ к ПК (злоумышленник так или иначе оказался за клавиатурой вашего компьютера в вашей рабочей среде) и программный несанкционированный доступ (так или иначе на ваш компьютер попала программа злоумышленника, способная осуществлять сбор и передачу информации злоумышленнику тем или иным образом). Причем, если от первого класса атак в наше время существует множество средств защиты даже в рамках стандартных операционных систем (пароли, скрываемые звездочками, автоматически запускаемые хранители экрана с требованием повторной идентификации и просто разделенный доступ пользователей к данным в ОС), то уязвимость распространенных ОС ко второму сценарию атаки до сих пор остается высокой.
  3. Каков набор защитных мер? — программно-аппаратный комплекс, включающий в себя специальное программное обеспечение в операционной системе и в BIOS, работающее при поддержке аппаратных средств.
    Текущая аппаратная платформа ПК и API распространенных операционных систем (особенно семейства Microsoft) исторически содержит множество слабых мест, позволяющих программам получать несанкционированны доступ к аппаратным ресурсам и не принадлежащим им областям памяти.
  4. Каковы условия успешной работы защиты? — подразумевается, что мы можем доверять аппаратной части компьютера, т. е. она совместима с технологией LaGrande и не содержит неизвестных нам вредоносных «закладок».

Перечислим наиболее распространенные типы атак на критическую информацию со стороны так или иначе внедренного в систему «вредоносного» программного обеспечения (например, троянских программ и вирусов):

  1. Перехват вводимых на клавиатуре данных
  2. Перехват и модификация видеопамяти (выводимого на экран содержимого окон), например создание, фальшивых окон запроса паролей или чтение выводимых номеров кредитных карт.
  3. Перехват и модификация содержимого оперативной памяти с критическими данными в незашифрованном виде прямым (получение 0 уровня исполнения кода) или косвенным (используя возможности устройств по DMA доступу) путем.
  4. Перехват и модификация содержимого оперативной памяти на основе использования информации об аппаратной конфигурации банков памяти и особенностей чипсета (т. н. «заворачивания» адресного пространства или генерации специальных несуществующих, фантомных адресов памяти для доступа в адресное пространство других задач в обход защиты адресного пространства на уровне процессора.)

Для пресечения этих атак необходим целый комплекс программных (новая OS) и аппаратных (новые возможности системной платы, процессора, клавиатуры и видеокарты) мер. Вся совокупность разрабатываемых для этой цели фирмой Intel аппаратных технологий и носит название LaGrande.

Но, прежде чем описать принципы функционирования LaGrande, мы обсудим причины ее появления.

Издержки Дарвинизма

Сейчас будет произнесена достаточно радикальная и обличающая фраза:

Необходимость введения дополнительных аппаратных возможностей для обеспечения защиты критических данных от перехвата продиктована несовершенством архитектуры современных пользовательских ОС семейства Microsoft Windows.

В качестве доказательства мы приведем факт существования куда как более защищенных в этом плане операционных систем семейства *nix.

В данный момент, основным источником потенциальных возможностей перехвата, упомянутых выше, являются эволюционировавшие из «незащищенной» среды старых версий Windows API, а также недостаточно хорошо продуманная архитектура подсистем GDI и DirectX, имеющих доступ ко всем аппаратным ресурсам на уровне 0-кольца (ядра). Фактически, в операционных системах семейства *nix подобный перехват возможен только по «оказии», связанной с обнаружением ошибок в безопасности системы и получением абсолютных прав доступа, в то время как в Microsoft Windows некоторые типы перехвата могут осуществляться обычным приложением, без использования каких-либо дополнительных ошибок в системе (которые могут быть устранены в последующих обновлениях, что и происходит в *nix системах), а просто за счет несовершенства архитектуры ОС Windows: большинство мультимедийных API которой разрабатывались без оглядки на нужды разграничения доступа или защиты информации.

Итак, как это ни банально, во всем вновь виновата компания Microsoft ;-)

Воспримем этот печальный факт как данность и будем искать методы эффективного устранения этих проблем. Известно, что еще в архитектуре 386 процессора были заложены все необходимые для защиты одних программ от других средства, включая поддержку перехвата несанкционированного доступа к памяти и обращения к аппаратным ресурсам. Соответственно, можно выпустить новую версию Windows с отдельной программной подсистемой содержащей все критические программы и данные (подсистемы ввода данных, аутентификации, защиты контента, криптографическую подсистему и т. д.) и защитить эту подсистему от доступа со стороны других, потенциально ненадежных программ:

На схеме зеленым у нас показана стена защиты. Белая территория — защищенная подсистема, в которой и хранятся в незашифрованном виде критические данные во время их ввода и обработки. На первый взгляд, обычное приложение не может получить доступ к этой подсистеме. По крайней мере, напрямую. Однако, в первую очередь, в силу несовершенства мультимедийных и прочих незащищенных API (серый блок на схеме) возникает целый ряд путей для получения информации. Доступ к видеопамяти, доступ к клавиатуре, наконец, даже доступ к памяти защищенной подсистемы с использованием прямого аппаратного доступа к памяти мультимедийными устройствами. Итак, используя особенности аппаратуры и несовершенство API и ядра системы, приложение получает доступ к критической информации:

Дабы предотвратить подобные проблемы, новая система должна бы была выглядеть следующим образом:

Т. е. проверять правомочность любых попыток доступа к оборудованию, запрещая те операции, которые могут, так или иначе, привести к утечке данных из защищенной подсистемы. Фактически, в более стройных с точки зрения архитектуры безопасности системах семейства *nix так и сделано, все API рано или поздно спускаются до базового API ядра системы, а ядро в свою очередь контролирует правомочность доступа к аппаратным ресурсам, в том числе, исходя из прав исполняемого процесса (программы). Однако в реальности такая схема была бы для Windows слишком медленной — контроль всех параметров занимал бы немалое время, особенно в случае игровых DirectX-приложений! Разумеется, иная, изначально разработанная с учетом аспектов защиты, архитектура API позволила бы защитить систему практически без потерь в скорости, но мы имеем то, что имеем — операционную систему и API достаточно спонтанно эволюционировавшие из старых, однопользовательских и незащищенных версий ОС Windows.

Вспомним, что именно из-за вопроса скорости мультимедийных приложений был принесен в жертву важный аспект безопасности Windows NT — если в версии вплоть до 3.51 драйверы устройств выполнялись на третьем уровне и не могли творить «что попало» то, начиная с 4 версии этой ОС и по сей день некоторые драйверы и даже некоторый код DirectX исполняется на уровне нулевого кольца, т. е. потенциально опасны.

Итак, игровые и мультимедийные интересы вступают в конфликт с интересами безопасности. Очевидно, что если в серверной ОС этот вопрос будет однозначно решен в пользу безопасности, то в пользовательской версии Windows притеснение мультимедийных функций, мягко говоря, не станет популярной мерой. Решение проблемы с производительностью такой «защищенной» версии Windows (т. е. залезание на елку малой кровью без особенных повреждений пятой точки) есть, и оно лежит в области модификации аппаратной части платформы:

Для создания защищенного канала доступа от защищенной подсистемы к клавиатуре и видеокарте, а также для защиты данных защищенной подсистемы, расположенных в оперативной памяти, от несанкционированного доступа со стороны способных выполнять DMA-операции устройств.

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

Защищенная подсистема, соответственно, должна иметь собственное независимое от незащищенной части Windows ядро и собственный HAL, работающий с аппаратно поддерживающими защиту устройствами (чипсет, клавиатура, видеокарта). Аппаратная часть этой системы защиты (зеленая стена) называется LaGrande и разрабатывается Intel, программная часть (белая защищенная подсистема) называется Palladium и разрабатывается в данный момент Microsoft.

Конкретика

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

Домены

Прекращение доступа к защищенной подсистеме со стороны ненадежных драйверов и прочих программ, исполняемых на нулевом уровне. Т. к. часть незащищенных API и драйверов операционной системы исполняется на нулевом уровне, для защиты нашей подсистемы мы должны предусмотреть соответствующие аппаратные возможности не только чипсета, но и процессора. В этом плане LaGrande во многом будет базироваться на другой разрабатываемой в данный момент аппаратной технологии Vanderpool, позволяющей создавать на одной физической PC-платформе несколько работающих доменов (виртуальных PC), полностью отделенных друг от друга аппаратно:

Фактически, эта технология требует модификации BIOS, CPU и чипсета, а операционная система может даже не догадываться о ней. При этом на каждом домене (виртуальном PC) можно запускать собственную ОС, более того, каждый из доменов может самостоятельно перезагружаться, не затрагивая работу остальных, например, в случае сбоя программного обеспечения. Аппаратные ресурсы (процессоры или HT части одного процессора, память, накопители) делятся между доменами:

(на схеме разным доменам принадлежат области разного цвета) и аппаратная часть технологии Vanderpool, в процессоре и чипсете, гарантирует невозможность доступа из одного домена к аппаратным ресурсам, распределенным в данный момент под второй домен. Никаких конкретных спецификаций этих технологий (LaGrande и Vanderpool) пока еще не было объявлено, однако мы можем предполагать, что у обычных PC число поддерживаемых доменов, скорее всего, составит два, как и число виртуальных HT-процессоров, а вот в серверных платформах оно, возможно, будет больше — как минимум 4.

Итак, хорошо известная еще по большим ЭВМ 70-х годов технология доменов найдет свое возрождение в PC и небольших серверах завтрашнего дня, обеспечивая им удобство использования (а самое главное смены и настройки) различных ОС, бесперебойные сервисы (мультимедиа-серверы или серверы данных в отдельном домене) и другие потенциальные полезности.

Идентификация платформы (TPM)

Между тем, пытливая голова не преминет задать два каверзных вопроса:

  1. Как гарантировать, что в защищенную подсистему, еще до ее загрузки с диска, не будет внедрен чужеродный код
  2. Как приложение или ОС может однозначно определить, что имеет дело с защищенной подсистемой безопасности и что платформа, на которой оно исполняется, поддерживает технологию LaGrande.

Ответы на оба вопроса даст специальный аппаратный модуль — TPM (Trusted Platform Module) который в скором времени станет вполне привычной частью платформы PC. Фактически он представляет собою некое устройство на базе одного или нескольких специализированных чипов, подключаемое к чипсету (как отдельный модуль в специальном разъеме материнской платы или просто еще одна схема на материнской плате) и обеспечивающее однозначную идентификацию платформы путем хранения сертификатов (цифровых подписей и ключей), которые, могут быть использованы для доверительной идентификации конкретного PC, с помощью стандартного протокола на основе несимметричной криптографии. Более того, вкупе с соответствующим чипсетом можно рассматривать этот аппаратный модуль не только как систему для хранения, но и для безопасной аппаратной проверки на подлинность цифровой подписи конкретного PC и конкретных установленных на нем программных служб. В этом случае, TPM обязан находиться за зеленой стеной защиты:

Итак, LaGrande-совместимый PC обеспечивает сложную аппаратную процедуру запуска защищенной подсистемы, включающую обмен информацией с TPM и проверку целостности ядра защищенной подсистемы. Для этого будут предусмотрены специальные команды процессора SINIT и SENTER — инициализация процедуры входа в защищенный режим и, соответственно, активации домена защищенной подсистемы. В ходе исполнения второй команды процессор и связка чипсет+TPM самостоятельно проверяют целостность и, следовательно, подлинность загрузчика (ядра) защищенной подсистемы. Для проверки используется хранимая в TPM информация (по всей видимости, контрольные суммы, подписанные сертификатом). Ядро, в свою очередь, будучи признанным подлинным, запускается в защищенном домене и может проверить (одним из многочисленных методов), все подлежащие загрузке в защищенную подсистему модули. Вопрос сертификации таких модулей остается открытым, однако будем надеяться, что утечек сертификатов из компаний, производящих данные модули, не произойдет, т. к. Microsoft будет раздавать оные только действительно надежным компаниям.

Интересно, что Palladium не будет замыкаться только на собственных службах безопасности и идентификации ОС — в защищенной подсистеме могут исполняться модули, отвечающие за проверку и защиту авторских прав, в том числе, для медиа сторонних фирм. И, в первую очередь, пресловуто известный Windows Media DRM, в силу определенных причин (основною из которых и была архитектурная незащищенность мультимедиа-сервисов ОС) приносящий больше неудобств легальным пользователям, чем пиратам. C появлением Palladium и аппаратных технологий наподобие LaGrande можно ожидать явления нового поколения защищенного контента, копируемого бит в бит уже не так просто, как это было ранее. Однако, все это лишь вопрос доверия аппаратному обеспечению — если что-либо проигрывается и может быть увидено или услышано, то оно может быть скопировано, так или иначе. Пускай для этого понадобится специальная видео- или специальная аудиосистема, карта с перехватом идущего на выход трафика, в то время как большинство видео и аудиорешений будут защищены от такого перехвата в рамках LaGrande. Нет сомнений, как только случится такая необходимость, на рынке появятся и подобные решения (вспомним зоны DVD).

Таким образом, в случае вдумчивой политики сертификации, создание подписанных поддельных (троянских) модулей третьими лицами станет невозможным. Как минимум, можно всегда гарантировано информировать пользователя о появлении новых установленных в системе модулей (В рамках терминологии Palladium они называются "агентами"). Разумеется, появление нежданного агента насторожит пользователя, и он сможет предпринять соответствующие меры.

Для поддержки LaGrande необходим TPM версии 1.2 и старше (стандарт TMP -модулей уже разработан, более того, доступны первые аппаратные решения с их использованием, однако описанная здесь функциональность по проверке защищенности ОС требует поддержки и со стороны чипсета, а без нее TPM может быть использован только для идентификации PC и хранения различных сертификатов доступа (ключей).

Cуммируем, что такое LaGrande

Недорогой комплекс программно-аппаратных мер для PC, призванный защитить критические данные от перехвата программным путем. Включает:

  1. Дополнительные возможности процессора
    • Поддержка защищенных доменов
    • Поддержка защищенной памяти (политика для разделенной памяти)
    • Поддержка верификации запускаемого защищенного домена с использованием TPM (команды SINIT/SENTER)
  2. Дополнительные возможности чипсета
    • Поддержка защищенных доменов
    • Дополнительная защита доступа к памяти (меры против генерации фантомных адресов)
    • Поддержка защищенного канала к видеокарте
    • Поддержка защищенного канала от клавиатуры и мыши (USB устройств)
    • Потенциально — поддержка защищенного канала к другой периферии
    • Поддержка защищенного канала и протокола обмена с TPM
  3. Дополнительные возможности видеокарты
    • Поддержка защищенного канала
    • Поддержка защищенных от считывания зон буфера кадра
  4. Дополнительные возможности USB клавиатуры и мыши
    • Поддержка защищенного канала
  5. Специальный BIOS с поддержкой доменов
  6. Возможности TPM (версии 1.2 и старше, соединен с чипсетом шиной LPC)
    • Хранение ключей, цифровых сертификатов и аттестатов.
    • Аутентификация платформы

Жесткие диски, сетевые контроллеры и другая периферия какой-то специальной поддержки LaGrande не требуют, хотя, для дополнительных задач (связанных с защитой контента) она может понадобиться, например, у звуковых карт.

Ждем анонсов конкретных платформ и сроков (конец 2004/2005 год).





Дополнительно

iXBT BRAND 2016

«iXBT Brand 2016» — Выбор читателей в номинации «Процессоры (CPU)»:
Подробнее с условиями участия в розыгрыше можно ознакомиться здесь. Текущие результаты опроса доступны тут.

Нашли ошибку на сайте? Выделите текст и нажмите Shift+Enter

Код для блога бета

Выделите HTML-код в поле, скопируйте его в буфер и вставьте в свой блог.