Система и способ для защищенной начальной загрузки операционной системы с использованием проверки состояния

Иллюстрации

Показать все

Изобретение относится к вычислительной технике, а конкретнее к механизмам для защищенной начальной загрузки операционной системы, которая препятствует мошенническим компонентам быть загруженным операционной системой и таким образом предотвращает разглашение системного ключа при несоответствующих обстоятельствах. Техническим результатом является обеспечение загрузки операционной системы при обстоятельствах, когда загрузка может быть проверена на правильность выполнения. После того как часть процедуры запуска машины произошла, загрузчик операционной системы запускается, загрузчик проверяется на правильность, и корректное состояние машины или проверяется на существование, и/или создается. Как только загрузчик был проверен, что он является законным загрузчиком, и состояние машины, на которой он выполняется, проверено на корректность, известно, что будущее поведение загрузчика защищает от загрузки мошеннических компонентов, которые могут вызвать разглашение системного ключа. С поведением загрузчика, известного как безопасного для системного ключа, блок проверки правильности может разблокировать системный ключ и предоставить его загрузчику. 3 н. и 19 з.п. ф-лы, 6 ил.

Реферат

ОБЛАСТЬ ТЕХНИКИ

Данное изобретение относится, в общем случае, к области компьютерной техники. Более конкретно, изобретение предоставляет механизм для обеспечения того, что система продолжает работу из известного безопасного состояния, и этот механизм может использоваться для загрузки системы способом, который до известной степени обеспечивает достаточную гарантию корректного поведения системы. Эта гарантия корректного поведения, в свою очередь, может предотвратить один или более ключей от распределения при несоответствующих обстоятельствах.

УРОВЕНЬ ТЕХНИКИ

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

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

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

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

Одна из проблем, связанных с проверкой защиты процесса загрузки операционной системы, состоит в том, что законные загрузки операционной системы могут вовлечь много различных программ (например, есть многочисленные различные «опции ПЗУ», которые являются программами, загружаемыми до операционной системы, которые выполняются во время процедуры начальной системной загрузки), и есть многочисленные различные процедуры, которые могут быть выполнены как часть загрузки операционной системы. Таким образом, есть практически бесчисленное число различных законных состояний машины во время загрузки, и идентификация всех таких состояний и проверка того, что машина находится в заведомо правильном состоянии, может оказаться неосуществимой задачей. Однако не все части процедуры загрузки имеют включение защиты. Может быть, более эффективно позволить загрузке происходить без какой-либо попытки оценить ее защиту, но затем установить среду в заведомо правильное состояние перед стартом любой процедуры, которая могла бы затронуть связанную с защитой функцию, такую как распределение ключей. Более широко, произвольной системе можно позволить работать в течение некоторого времени без оценки какого-либо типа защиты до тех пор, пока система не будет установлена в заведомо исправное состояние перед разрешением любых действий, при которых имеет место включение защиты.

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

СУЩНОСТЬ ИЗОБРЕТЕНИЯ

Данное изобретение обеспечивает загрузку операционной системы при обстоятельствах, когда загрузка может быть проверена на правильность выполнения. Когда машина стартовала, выполняется очень ранняя процедура запуска (например, BIOS, опции ПЗУ, главный блок начальной загрузки, загрузочный сектор, и т.д.). После того как эти ранние процедуры выполнены, загрузчик операционной системы стартует и может выполнить различные предварительные задачи. После того как загрузчик операционной системы стартовал и выполнил такие предварительные задачи, проверка правильности загрузчика операционной системы выполнена.

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

Предпочтительно, проверка правильности выполняется блоком проверки правильности, который выполняется в среде высокой гарантии. Среда высокой гарантии - это среда, в которой возможно обеспечить относительно высокую степень гарантии, что процессы, выполняемые в ней, будут работать ожидаемым от них способом. Таким образом, гарантия того, что блок проверки правильности будет работать корректно, получена из факта, что блок проверки правильности проверяется процессом, который выполняется в среде высокой гарантии (например, проверяя сигнатуру его двоичного кода), и основывается на доверии на то, что процессы в среде высокой гарантии будут выполняться корректно (или, по меньшей мере, есть уровень гарантии того, что среда высокой гарантии не будет влиять или разрешать вмешательство в корректную работу процесса, который оперирует в пределах такой среды; нужно все еще иметь отдельное основание для доверия тому, что программа, которая реализует процесс в среде высокой гарантии, будет корректно выполнена способом, выполнение которого ожидается). Среда высокой гарантии может обеспечить изолированную (отделенную) память, которая является таким средством хранения, в котором данные могут быть изолированы для конкретного объекта (например, конкретной программы), и что среда высокой гарантии управляется таким способом, что изолированные данные не будут разблокированы ни для какого другого объекта чем тот, для которого данные изолированы (что проверяется средой высокой гарантии). Блок проверки правильности может использовать эту изолированную память для изолирования ключа (например, SYSKEY) для себя, и может отказаться снять изоляцию (разблокировать) ключа за исключением корректного объекта, и когда обстоятельства (например, состояние машины) удовлетворяют некоторому стандарту.

Другие признаки изобретения описаны ниже.

КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ

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

фиг.1 - блок-схема примерной компьютерной среды, в которой аспекты изобретения могут быть осуществлены;

фиг.2 - блок-схема системы, которая использует процесс, корректная операция которого зависит от системного ключа;

фиг.3 - блок-схема шифрованной файловой системы, которая защищает зашифрованные данные от неавторизованной расшифровки, делая расшифровку зависимой от системного ключа;

фиг.4 - блок-схема примерного процесса загрузки с проверкой правильности, в соответствии с аспектами изобретения;

фиг.5 - блок-схема примера блока проверки правильности в соответствии с аспектами изобретения; и

фиг.6 - блок-схема примерного процесса защиты системного ключа в соответствии с аспектами изобретения.

ПОДРОБНОЕ ОПИСАНИЕ ИЛЛЮСТРАТИВНЫХ ВОПЛОЩЕНИЙ

Краткий обзор

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

Примерная компьютерная структура

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

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

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

Со ссылкой на фиг.1, примерная система для осуществления изобретения включает в себя универсальное компьютерное устройство в форме компьютера 110. Компоненты компьютера 110 могут включать в себя, но не ограничены этим, процессорный модуль 120, системную память 130 и системную шину 121, которая подсоединяет различные системные компоненты, включая системную память, к процессорному модулю 120. Процессорный модуль 120 может представлять множественные логические процессоры, такие как те, что поддерживаются на многопоточном процессоре. Системная шина 121 может быть любой из нескольких типов шинных структур, включая шину памяти или контроллер памяти, периферийную шину, и локальную шину, использующие любую из множества шинных архитектур. В качестве примера, но не ограничения, такая архитектура включает в себя шину архитектуры промышленного стандарта (ISA), шину микроканальной архитектуры (MCA), усовершенствованную ISA шину (EISA), локальную шину ассоциации видеостандартов электроники (VESA) и шину стандарта PCI (PCI) (также известную как шина Mezzanine). Системная шина 121 может также быть осуществлена как соединение точка-точка, коммутационное подключение или подобное им среди коммуникационных устройств.

Компьютер 110 обычно включает в себя множество читаемых компьютером носителей. Читаемые компьютером носители могут быть любыми доступными носителями, к которым можно обратиться компьютером 110, и включают в себя энергозависимые и энергонезависимые носители, сменные и несменные носители. В качестве примера, но не ограничения, читаемые компьютером носители могут включать в себя компьютерные носители данных и коммуникационные носители. Компьютерные носители данных включают в себя и энергозависимые, и энергонезависимые, сменные и несменные носители, осуществленные любым способом или технологией для хранения информации, типа читаемых компьютером команд, структур данных, программных модулей или других данных. Компьютерные носители данных включают в себя, но не ограничены этим, оперативную память (RAM), постоянное запоминающее устройство (ROM), электрически перепрограммируемое постоянное запоминающее устройство (EEPROM), флэш-память или память другой технологии памяти, CDROM, цифровые универсальные диски (DVD) или другую оптическую память на диске, магнитные кассеты, магнитную ленту, магнитную память на диске или другие магнитные запоминающие устройства, или любую другую среду, которая может использоваться для хранения желательной информации и к которой можно обратиться компьютером 110. Коммуникационные носители обычно воплощают компьютерные читаемые команды, структуры данных, программные модули или другие данные в модулируемом сигнале данных типа несущей или другом транспортном механизме и включают в себя любые информационные носители. Термин «модулированный сигнал данных» означает сигнал, который имеет одну или более из его набора характеристик установленных или измененных таким способом, чтобы кодировать информацию в сигнале. В качестве примера, но не ограничения, коммуникационные носители включают в себя проводные носители типа проводного сетевого или прямого проводного подключения, и беспроводные носители типа акустического, радиочастотного, инфракрасного и других беспроводных носителей. Комбинации любого вышеупомянутого должны также быть включены в объем читаемых компьютерных носителей.

Системная память 130 включает в себя компьютерные носители данных в форме энергозависимой и/или энергонезависимой памяти типа постоянного запоминающего устройства 131 (ROM) и оперативной памяти 132 (RAM). Базовая система 133 ввода-вывода (BIOS), содержащая основные подпрограммы, которые помогают передавать информацию между элементами в компьютере 110, например во время запуска, обычно сохраняется в ROM 131. Оперативная память 132 обычно содержит данные и/или программные модули, которые являются немедленно доступными и/или могут быть позднее обработаны процессорным модулем 120. В качестве примера, но не ограничения, фиг.1 иллюстрирует операционную систему 134, прикладные программы 135, другие программные модули 136 и программные данные 137.

Компьютер 110 может также включать в себя другие сменные/несменные, энергозависимые/энергонезависимые компьютерные носители данных. Только в качестве примера, фиг.1 иллюстрирует накопитель 141 на жестком диске, который читает или записывает на несменные энергонезависимые магнитные носители дисковод 151 магнитных дисков, который читает или записывает на сменный энергонезависимый магнитный диск 152, и дисковод 155 оптических дисков, который читает или записывает на сменный энергонезависимый оптический диск 156, типа CDROM или другие оптические носители. Другие сменные/несменные энергозависимые/энергонезависимые компьютерные носители данных, которые могут использоваться в примерной среде, включают в себя, но не ограничены этим, кассеты магнитной ленты, платы флэш-памяти, цифровые универсальные диски, цифровую видеоленту, твердотельную оперативную память, твердотельную постоянную память и т.п. Жесткий диск 141 обычно подключается к системной шине 121 через интерфейс несменной памяти типа интерфейса 140, и магнитный дисковод 151 и оптический дисковод 155 обычно подключаются к системной шине 121 интерфейсом сменной памяти, типа интерфейса 150.

Накопители на дисках и связанные с ними компьютерные носители данных, описанные выше и проиллюстрированные на фиг.1, обеспечивают хранение читаемых компьютером команд, структур данных, программных модулей и других данных для компьютера 110. На фиг.1, например, накопитель 141 на жестком диске проиллюстрирован как хранилище операционной системы 144, прикладных программ 145, других программных модулей 146 и данных программ 147. Следует заметить, что эти компоненты могут или быть теми же самыми, или отличными от операционной системы 134, прикладных программ 135, других программных модулей 136 и программных данных 137. Операционной системе 144, прикладным программам 145, другим программным модулям 146 и программным данным 147 здесь даны различные номера для иллюстрации того, что они, как минимум, являются различными копиями. Пользователь может ввести команды и информацию в компьютер 110 через устройства ввода данных типа клавиатуры 162 и устройства 161 управления позицией, обычно называемые мышью, координатным шаром или сенсорной клавиатурой. Другие устройства ввода данных (не показанные здесь) могут включать в себя микрофон, джойстик, игровую клавиатуру, спутниковую антенну, сканер или подобные устройства. Эти и другие устройства ввода данных часто подключаются к процессорному модулю 120 через пользовательский входной интерфейс 160, который соединен с системной шиной, но может быть связан другим интерфейсом и шинными структурами, типа параллельного порта, игрового порта или универсальной последовательной шины (USB). Монитор 191 или другой тип устройства отображения также связан с системной шиной 121 через интерфейс, типа видеоинтерфейса 190. В дополнение к монитору, компьютеры могут также включать в себя другие периферийные устройства вывода типа динамиков 197 и принтера 196, которые могут быть связаны через интерфейс 195 внешних периферийных устройств вывода.

Компьютер 110 может работать в сетевой среде, используя логические подключения к одному или более удаленным компьютерам, типа удаленного компьютера 180. Удаленный компьютер 180 может быть персональным компьютером, сервером, маршрутизатором, сетевым PC, одноранговым устройством или другим обычным сетевым узлом и обычно включает в себя многие или все элементы, описанные выше относительно компьютера 110, хотя только запоминающее устройство 181 памяти было проиллюстрировано на фиг.1. Логические подключения, изображенные на фиг.1, включают в себя локальную сеть 171 (LAN) и глобальную сеть 173 (WAN), но могут также включать в себя другие сети. Такие сетевые среды являются обычными в офисах, компьютерных сетях масштаба предприятия, интранет и сети Интернет.

При использовании в среде работы с сетями LAN компьютер 110 связан с LAN 171 через сетевой интерфейс или адаптер 170. При использовании в среде работы с сетями WAN компьютер 110 обычно включает в себя модем 172 или другие средства для установления связи через глобальную сеть 173, типа сети Интернет. Модем 172, который может быть внутренним или внешним, может быть связан с системной шиной 121 через пользовательский входной интерфейс 160 или другой соответствующий механизм. В сетевой среде программные модули, изображенные относительно компьютера 110 или частей его, могут быть сохранены в удаленном запоминающем устройстве хранения. В качестве примера, но не ограничения, фиг.1 иллюстрирует удаленные прикладные программы 185 как постоянно находящиеся на устройстве хранения 181. Необходимо оценить, что показанные сетевые подключения являются примерными, и другие средства установления связи между компьютерами могут использоваться.

Действие, защищенное ключами

Компьютерная среда может использовать ключ, от которого для некоторых процессов, которые имеют место в среде, зависит их корректное функционирование. Системный ключ, или “SYSKEY”, используемый операционными системами MICROSOFT WINDOWS, является одним примером такого ключа, но это не является ограничивающим примером. В предпочтительном варианте осуществления ключ, от которого зависит процесс, является уникальным, криптографическим случайным зависимым от платформы ключом, то есть, взяв две машины, вероятно то, что эти две машины имеют различные ключи. Таким образом, процесс, который зависит от таких ключей, вряд ли будет переносимым от одной платформы на другую - по меньшей мере до той степени, пока используются эффективные механизмы для гарантии того, что ключ платформы недоступен вне этой платформы.

Фиг.2 показывает примерную систему, в которой выполняется процесс, который зависит от ключа. Процесс 202 зависит от ключа 204 для того, чтобы корректно функционировать. Необходимо отметить, что процесс 202 не ограничен традиционным понятием процесса, то есть, модуль выполнения, который может управляться операционной системой и которому назначено адресное пространство, скорее относится, более широко, к любой операции или ряду операций, которые могут быть выполнены на компьютере. Необходимо также отметить, что, в то время как этот пример показывает процесс, который зависит от криптографического ключа, термин «процесс», который используется здесь, не ограничен процессами, которые выполняют криптографические операции.

Как показано на фиг.2, если ключ 204 доступен в качестве входа в процесс 202, то процесс 202 работает корректно. С другой стороны, если ключ 204 недоступен в качестве входа в процесс 202, то процесс 202 не работает корректно. Механизм 206 защиты ключа управляет доступом к ключу 204, то есть механизм 206 или обеспечивает, или не обеспечивает процессу 202 ключ 204 в зависимости от того, были ли соответствующие условия защиты выполнены. Например, пользователю, вероятно, придется войти и предоставить корректный пароль прежде, чем механизм 206 допустит использование ключа 204.

Необходимо отметить, что отказ от ключа 204 для того, чтобы предотвратить процесс 202 от корректной работы, является иногда желательным результатом. Например, кодирование/расшифровка файлов является одним примером процесса 202, который защищен ключом 204. Корректная расшифровка файла может зависеть от доступа к ключу 204. Если пользователь не может корректно войти и себя аутентифицировать, то может быть желательно не переходить к расшифровке файла, так как неспособность пользователя войти в систему может указывать на то, что компьютер используется кем-то другим, а не его предназначенным пользователем (например, в случае украденного портативного компьютера). Таким образом, механизм 206 защиты ключа может давать доступ к ключу 204 в зависимости от выполнения соответствующих условий защиты и может использовать отказ от ключа 204, чтобы прервать процессы, которые должны быть прерваны, когда эти условия защиты не выполнены. Способность механизма 206 прерывать процессы, таким образом, зависит от ключа 204, требуемого для этих процессов для их корректного функционирования, так как это является той зависимостью, которая разрешает действие по отказу от ключа 204 для прерывания процесса.

Фиг.3 показывает конкретный (но неограничивающий) примерный процесс, который зависит от ключа 204. В примере на фиг.3 примерный процесс является шифрованной Файловой системой 302 (EFS), которая хранит файлы в зашифрованной форме, а также расшифровывает зашифрованные файлы. Необходимо отметить, что одна из целей такого шифрования файла состоит в том, чтобы защитить данные на портативном компьютере от восстановления их вором в случае, когда портативный компьютер украден. Когда файл 304 сгенерирован для хранения, файл передается EFS 302. EFS 302 после этого зашифровывает файл 304 и превращает файл 304 в зашифрованный файл 306, который сохраняется на жестком диске 141. Когда делается запрос на получение зашифрованного файла 306, EFS 302 извлекает зашифрованный файл 306 и расшифровывает его для генерации расшифрованного файла 308 (практически, сущность расшифрованного файла 308 является той же самой, что и у оригинального файла 304, хотя для ясности на фиг.3 показаны эти два экземпляра файла отдельно - файл 304 является оригинальным файлом и расшифрованный файл 308 является этим же самым файлом после того, как он был зашифрован, сохранен, извлечен и расшифрован EFS 302).

Отметим, что одним из входных данных в EFS 302 является ключ 310 содержания. Ключ 310 содержания является предпочтительно симметричным ключом, который функционирует как входные данные для криптографического метода. Ключ 310 содержания используется для шифрования файла 304 для того, чтобы создать зашифрованный файл 306, и также используется для расшифровки зашифрованного файла 306 для того, чтобы создать расшифрованный файл 308. Можно оценить, что сохранение ключа 310 в некоторое легкодоступное место может быстро привести к неэффективности EFS 302 в способности защитить данные - если ключ содержимого легко доступен на жестком диске или если он легко получаем из некоторого известного элемента портативного компьютера (например, серийного номера процессора), то нет никакого различия, были ли файлы сохранены в зашифрованной форме, так как вор может легко найти ключ и расшифровать их. Таким образом, желательно защитить ключ, получая его некоторым способом, который может быть выполнен только при взаимодействии с истинным владельцем. Один из способов защищать ключ состоит в том, чтобы использовать модуль 312 генерации ключей, который получает ключ 204 как входные данные и выводит ключ 310 содержания как функцию ключа 204. Таким образом, в той степени, когда ключ 204 будет предоставлен только при соответствующих безопасных условиях, также верно то, что ключ 310 содержания будет получен только при соответствующих условиях. Другими словами, делая получение ключа 310 содержания зависимым от доступности ключа 204, любая защита, предоставленная ключу 204, может быть распространена на ключ 310 содержания. Например, если предоставление ключа 204 требует, чтобы пользователь при входе в систему предоставлял правильный пароль, тогда можно быть уверенным, что ключ 310 содержания не будет доступен, если только пользователь не войдет в систему корректно.

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

Процесс загрузки с проверкой состояния

Фиг.4 показывает типичную последовательность событий, которые используются в процедуре начальной загрузки.

Первоначально машину включают. Типичная машина сконфигурирована так, чтобы начать выполнять команды с некоторого фиксированного адреса в момент включения. Команды, обычно содержащиеся по этому адресу, известны как «BIOS» 402, или «базовая система ввода-вывода». В результате выполнения BIOS 402, BIOS 402 выполняет запуски маленьких программ, называемых «опции 404 ROM». Опции ROM (ПЗУ) являются программами, которые исполняют самые основные функции ранней начальной загрузки, типа установки аппаратного пароля для машины или выбора, какая из нескольких операционных систем должна быть загружена. После того как опции 404 ROM выполнены, машине будет дана команда загрузить главный блок 406 начальной загрузки (MBR).

MBR 406 является исполняемой программой. Как правило, MBR 406 постоянно находится на первом секторе жесткого диска компьютера и начинает работу с поиска в таблице разделов того, какой раздел использовать для дальнейшей загрузки (например, диск может быть разделен для использования с различными операционными системами, и каждая операционная система может требовать различной процедуры начальной загрузки). После того как корректный раздел найден, MBR 406 передает управление загрузочному сектору 408, связанному с этим разделом. Загрузочный сектор после этого начинает процесс загрузки загрузчика 410 операционной системы, который в конечном счете загрузит операционную систему. Необходимо отметить, что MBR 406 показан на фиг.4 просто для того, чтобы показать, как такой компонент может вписаться в примерный процесс загрузки, и изобретение не ограничено процедурой загрузки, которая использует MBR 406.

В то время, когда выполняется загрузчик 410 операционной системы, загрузчик и состояние машины проверяются (450) («машина» в этом контексте может относиться или к физической машине или к виртуальной машине). Проверка правильности выполняется доверенным программным компонентом, который работает в среде высокой гарантии (вариант осуществления которой более подробно описано ниже), и поэтому есть некоторая степень гарантии/доверия тому, что проверка правильности загрузчика 410 делается корректно. В сущности, подтверждением правильности соответствующих аспектов состояния машины, в то время как загрузчик операционной системы 410 управляет машиной, и подтверждением правильности загрузчика 410 можно обеспечить некоторый уровень гарантии того, что незаконная версия или мошенническая версии компонентов операционной системы (например, уровня аппаратной абстракции, ядра, драйверов и т.д. (416)) не будут загружены до того, как программа 418 входа в систему будет выполнена. Препятствование мошенническим компонентам, загружаемым до того как программа 418 входа в систему выполнена, важно потому, что одна из первых вещей, которые операционная система сделает после того, как она будет загружена, является выполнение программы 418 входа в систему, которая разрешает доступ к ключу 204, и если мошеннические компоненты могли быть загружены, то эти компоненты могут заставить программу 418 входа в систему вести себя таким способом, который может привести к выдаче ключа 204 при несоответствующих условиях, таким образом компрометируя защиту всех компонентов, которые зависят от защиты ключа 204, как описывалось выше. Таким образом, защита ключа 204 может быть достигнута, приводя в действие жесткий контроль над состоянием машины со времени, когда загрузчик операционной системы 410 выполняется, и до тех пор, пока программа входа в систему не будет завершена.

Проверка 450 правильности имеет место в течение времени, когда выполняется загрузчик 410 операционной системы. Проверка правильности включает в себя проверку достоверности (правильности) загрузчика и состояния машины и может также включать в себя установку состояния машины в заведомо исправное состояние. Основная идея, помимо проверки достоверности и установки состояния машины, состоит в переводе машины в состояние, где, если загрузчик выполняется, пока машина находится в этом состоянии, загрузчик не будет загружать никаких мошеннических компонентов или вести себя иначе способами, которые могут привести к нарушениям защиты. Проверка 450 правильности гарантирует, что код загрузчика является, фактически, кодом, который был предварительно проверен на корректное поведение, и также гарантирует, что машина находится в состоянии, при котором этот известный код будет вести себя корректно(или проверяя, что машина уже находится в этом состоянии, или переводя машину в это состояние). Необходимо оценить, что эта методика способна усилить существующее (безопасное) состояние машины, чтобы гарантировать, что будущие состояния машины также будут безопасны, и это усиление сделано возможным благодаря тому факту, что поведение загрузчика 410 операционной системы не только известно и понято, но также и сильно ограничено. Основываясь на этом наблюдении, следует отметить, что проверка 450 правильности не должна иметь место слишком рано (например, в то время, когда выполняются опции 404 ROM, или MBR 406), поскольку из-за широкого разнообразия кода из многочисленных различных источников и огромного разнообразия состояний, в которые машина может быть переведена в результате выполнения такого кода, становится трудным, если не невозможным, определить поведение машины при выполнении всех этих различных модулей кода. Таким образом, предпочтительно не беспокоиться о том, в каких состояниях машина находится до выполнения загрузчика 410, до тех пор, пока машина не будет переведена в законное состояние в то время, когда загрузчик 410 выполняется.

В предпочтительном варианте осуществления, выполнение загрузчика 410 разделено на две стадии - стадия 1 (412) и стадия 2 (414). Предпочтительно, перед входом на стадию 2 проверяется (450) код, который осуществляет стадию 2, и доверительный код, который производит проверку 450 правильности, после этого переходит на стадию 2 в четко определенную точку входа («доверительным кодом», который выполняет проверку правильно