Содействие взаимодействия для запроса системных служб для аппаратно-защищенных приложений
Иллюстрации
Показать всеИзобретение относится к средствам обеспечения дополнительных служб операционной системы, например службы графического интерфейса пользователя (GUI), службы буфера обмена. Технический результат заключается в обеспечении адаптации приложений к платформе и безопасности их взаимодействия. В этом документе описаны реализации для обеспечения уровня адаптации к платформе, который обеспечивает возможность исполнения приложений внутри аппаратно-защищенного изоляционного контейнера пользовательского режима при использовании ресурсов платформы узла, которые находятся за пределами упомянутого изоляционного контейнера. Уровень адаптации к платформе осуществляет содействие взаимодействию для запроса системных служб между приложением и платформой узла. Как часть упомянутого содействия, компонент служб безопасности уровня адаптации к платформе выполняет относящееся к безопасности действие. 3 н. и 7 з.п. ф-лы, 5 ил.
Реферат
УРОВЕНЬ ТЕХНИКИ
Обычные приложения программного обеспечения полагаются на различные функции операционной системы. Операционная система может обеспечивать набор интерфейсов прикладного программирования (API) для обеспечения базовых вычислительных служб, например, планирования потоков, распределения памяти, виртуальной памяти, доступа к устройству и т.д. Кроме того, операционная система может обеспечивать обширный набор возможностей API, которые обеспечивают дополнительные службы операционной системы, например, службы графического интерфейса пользователя (GUI), службы буфера обмена и т.п.
Некоторые процессоры с поддержкой безопасности могут предоставлять безопасную среду исполнения. Такие процессоры с поддержкой безопасности обеспечивают защищенную область памяти, и эти процессоры с поддержкой безопасности обеспечивают то, что код и данные, хранящиеся в защищенной области памяти, являются недоступными для кода за пределами этой защищенной области памяти. Процессор с поддержкой безопасности обеспечивает четко определенные функции входа и выходы, далее в этом документе называемые вентилями, которые делают возможным передачу исполнения между кодом внутри защищенной области памяти и кодом за пределами среды. Процессор с поддержкой безопасности не предоставляет возможность доступа к устройствам ввода или вывода или исполнения в режиме ядра в пределах защищенной области памяти. В результате зоны защищенной памяти процессоров с поддержкой безопасности являются слишком ограниченными для выполнения обычных приложений программного обеспечения.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
Этот раздел "Сущность изобретения" предназначен для представления упрощенных концепций настоящего раскрытия предмета изобретения, которые также описаны ниже в разделе Подробное описание. Это краткое изложение не предназначено для идентификации существенных признаков заявленного изобретения, оно также не предназначено для использования при определении объема заявленного изобретения.
Приложение исполняется внутри аппаратно-защищенного изоляционного контейнера пользовательского режима (user-mode hardware-protected isolation container, UMHPIC), обеспечиваемого процессором с поддержкой безопасности. Библиотечная операционная система, исполняющаяся в пределах UMHPIC как часть приложения, выполняет большинство запросов операционной системы, включающих в себя высокоуровневые запросы. Поддерживающий UMHPIC уровень адаптации к платформе (U-PAL) обеспечивает исполнение приложений, у которых отсутствует специальное знание о UMHPIC, внутри UMHPIC, наряду с использованием ресурсов операционной системы, которые находятся за пределами UMHPIC. U-PAL включает в себя компонент служб безопасности, который исполняется в пределах UMHPIC, и от имени приложения обеспечивает надлежащую обработку планирования потоков, взаимодействий с файловой системой и распределений ресурсов. U-PAL включает в себя компонент преобразования с доверенной частью, которая находится внутри UMHPIC, и не являющейся доверенной частью, которая исполняется в пользовательском режиме во внешней среде исполнения. Доверенный компонент преобразования передает системные вызовы в не являющийся доверенным компонент преобразования через вентиль выхода, управляемый процессором с поддержкой безопасности. Не являющийся доверенным компонент преобразования, передает результаты системного вызова из операционной системы в UMHPIC через вентиль входа, управляемый процессором с поддержкой безопасности.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
Подробное описание изложено со ссылкой на прилагаемые чертежи. На этих чертежах крайняя(ие) левая(ые) цифра(ы) ссылочной позиции идентифицирует(ют) чертеж, в котором эта ссылочная позиция появляется впервые. Использование идентичных ссылочных позиций в разных чертежах указывает на аналогичные или идентичные элементы.
Фиг. 1 - блок-схема безопасной среды исполнения для исполнения приложения в UMHPIC.
Фиг. 2 - структурная схема иллюстративной вычислительной системы, используемой для обеспечения безопасной среды исполнения согласно вариантам осуществления.
Фиг. 3 - схема последовательности операций, демонстрирующая иллюстративный процесс для обеспечения безопасности приложению, исполняющемуся в UMHPIC.
Фиг. 4 - схема последовательности операций, демонстрирующая иллюстративный процесс для содействия взаимодействию для запроса ресурсов между приложением, исполняющимся в UMHPIC, и платформой узла, исполняющейся за пределами UMHPIC.
Фиг. 5 - схема последовательности операций, демонстрирующая иллюстративный процесс для обработки запросов на исполнение и асинхронных уведомлений из платформы узла.
Подробное описание
Общие сведения
Как описано выше, обычные приложения программного обеспечения полагаются на обширный набор возможностей функций операционной системы. Варианты осуществления настоящей заявки обеспечивают возможность исполнения приложения, которое не написано специально для выполнения в пределах безопасной среды исполнения (немодифицированное приложение), в пределах безопасной среды исполнения - далее в этом документе называемой аппаратно-защищенным изоляционным контейнером пользовательского режима (UMHPIC) - без доверия какому-либо коду за пределами этой безопасной среды исполнения. Наряду с тем, что код за пределами UMHPIC, например, операционная система узла, может отказывать в службах коду внутри UMHPIC, код за пределами UMHPIC не может вмешиваться в исполнение кода в пределах UMHPIC или следить за ним. Исполнение обычного немодифицированного приложения в пределах UMHPIC может обычно влечь за собой доверие операционной системе ”узла”, выполняющейся за пределами UMHPIC. Немодифицированное приложение обычно доверяет операционной системе узла по трем причинам: во-первых, обычные приложения используют обширные и разнообразные службы из операционной системы, во-вторых, немодифицированное приложение не сконфигурировано для активизации (вызова - “invoke”) специфичных вентилей входа и выхода процессора с поддержкой безопасности для обеспечения возможности передачи исполнения и данных между UMHPIC и внешней средой исполнения, и, в-третьих, упомянутое приложение для своей безопасности полагается на корректное функционирование операционной системы. Варианты осуществления настоящего Подробного описания также обеспечивают исполнение в пределах UMHPIC изолированной среды, например, такой, как та, которая описана в американской заявке № 12/834895 ("ULTRA-LOW COST SANDBOXING FOR APPLICATION APPLIANCES").
Варианты осуществления, описанные в настоящем Подробном описании, включают в себя поддерживающий UMHPIC уровень адаптации к платформе (U-PAL), который находится частично внутри UMHPIC, а частично, во внешней среде исполнения. U-PAL содействует взаимодействиям для запроса системных ресурсов между приложением, исполняющимся в UMHPIC, и платформой узла, исполняющейся за пределами UMHPIC. И как часть упомянутого содействия выполняется одно или более относящихся к безопасности действий. Относящиеся к безопасности действия, наряду с другим, предоставляют возможность приложению использовать платформу узла для доступа к ресурсам, даже если эта платформа узла исполняется за пределами UMHPIC, и, следовательно, является "не являющимся доверенным" кодом.
В вариантах осуществления, приложения включают в состав своих UMHPIC доверенную библиотечную операционную систему, большинство запросов операционной системы выполняются библиотечной операционной системой, которая по мере необходимости активизирует службы U-PAL, U-PAL в свою очередь активизирует службы из операционной системы узла. Доверенная часть U-PAL (то есть часть, которая находится и исполняется внутри UMHPIC) представляет интерфейс службы приложению, исполняющемуся в пределах UMHPIC. Не являющаяся доверенной часть U-PAL (то есть часть, которая находится и исполняется в пользовательском режиме за пределами UMHPIC) взаимодействует с операционной системой, например, через уровень адаптации к платформе (PAL), обеспечиваемый вычислительной системой узла.
U-PAL включает в себя компонент служб безопасности и компонент преобразования. Компонент служб безопасности исполняется в пределах UMHPIC, и, следовательно, с точки зрения приложения является "доверенным" компонентом. Компонент служб безопасности осуществляет верификацию того, что все системные службы, включающие в себя планирование потоков, взаимодействия с файловой системой и распределения ресурсов, обрабатываются от имени немодифицированного приложения должным образом, тем самым принимая во внимание не являющуюся доверенной операционную систему узла. Компонент преобразования включает в себя как доверенную часть, которая находится внутри UMHPIC, так и не являющуюся доверенной часть, которая исполняется в пользовательском режиме за пределами UMHPIC. Компонент преобразования обеспечивает доверенную часть U-PAL, включающую в себя компонент служб безопасности, доступом к функциям операционной системы узла, которые исполняются за пределами UMHPIC. Компонент преобразования и компонент служб безопасности вместе предоставляют возможность исполнения в пределах UMHPIC немодифицированного приложения, например, приложения, упакованного с библиотечной OS.
Процессы, системы и устройства, описанные в этом документе, могут быть реализованы несколькими способами. Ниже со ссылкой на нижеследующие чертежи обеспечены иллюстративные реализации.
Иллюстративная среда для исполнения немодифицированного приложения в UMHPIC
Фиг. 1 является блок-схемой безопасной среды исполнения для исполнения приложения в UMHPIC. Аспекты системы 100 могут быть реализованы на различных типах подходящих вычислительных устройств, которые могут реализовать безопасную среду исполнения для немодифицированного приложения. Подходящее вычислительное устройство или устройства могут включать в себя, или быть их частью, один или более персональных компьютеров, серверов, ферм серверов, центров данных, компьютеров специального назначения, планшетных компьютеров, игровых консолей, смартфонов, их комбинаций или любое другое вычислительное устройство(а), которое может хранить и исполнять всю безопасную среду исполнения или ее часть для исполнения немодифицированного приложения.
Система 100 включает в себя процессор 102 с поддержкой безопасности, выполненный с возможностью создания экземпляра безопасной среды исполнения, включающего в себя UMHPIC 104. UMHPIC 104 находится в зоне защищенной памяти в пределах памяти 106 пользовательского режима или памяти 108. Кроме как через специфичные вентили входа и выхода, обеспечиваемые процессором 102 с поддержкой безопасности, которые предоставляют возможность пересылки кодом, исполняющимся в UMHPIC 104, исполнения и данных в UMHPIC 104 и из него, причем код и данные, хранящиеся в UMHPIC 104, являются недоступными для кода за пределами UMHPIC 104.
Для возврата в незащищенную память потоки выходят из UMHPIC 104 через вентили выхода. Вентили выхода могут быть вызваны непосредственно, например, через инструкцию вызова, или опосредованно, например, через исключение процессора. UMHPIC 104 может быть защищен посредством механизмов шифрования, например, процессор 102 с поддержкой безопасности выполняется с возможностью шифрования во время операций записи в UMHPIC 104 и дешифрования во время операций считывания. Кроме того, UMHPIC 104 можно отслеживать посредством криптографического хэша (или встраиваемого или вне диапазона) так, что процессор 102 с поддержкой безопасности может осуществлять верификацию во время операций считывания того, что память не была изменена. В других вариантах осуществления область памяти, в которой находится UMHPIC 104, может находится на одной интегральной схеме процессора 102 с поддержкой безопасности, и эта область памяти может быть выделена для того, чтобы процессор 102 с поддержкой безопасности мог получать к ней доступ при входе исполнения в вентиль входа. В различных вариантах осуществления процессор 102 с поддержкой безопасности может быть реализован в пределах однокристальной интегральной схемы, например, системы на кристалле (system-on-chip, SOC), или он может быть реализован по совокупности процессора и дополнительных наборов микросхем системы 100.
Приложение 110 исполняется в пределах UMHPIC 104. Соответственно, процессор 102 с поддержкой безопасности исполняет приложение 110 таким образом, который предотвращает вмешательство или слежение кода, исполняющегося за пределами UMHPIC 104, включающего в себя не являющийся доверенным код 112 или операционную систему (OS) 114 узла, в/за код(-ом) или данные(-ми) внутри UMHPIC 104, или трансляцию операций, кроме как посредством четко определенных вентилей входа и выхода, описанных более подробно ниже. Например, поток, исполняющий код, хранящийся за пределами UMHPIC 104, не может получить доступ к данным, хранящимся в UMHPIC 104. Процессор 102 с поддержкой безопасности может защищать код и данные в пределах UMHPIC, от слежения или вмешательства посредством различных способов, включающих в себя, но без ограничения, шифрование данных, когда они покидают процессор, подписывание данных для обнаружения внешнего вмешательства, блокировку операций прямого доступа к памяти (direct memory access, DMA) из устройств ввода-вывода, отделение кэшей или использование памяти, хранящейся непосредственно в процессоре. Это обеспечивает защиту от не являющегося доверенным кода, то есть любого кода, который выполняется за пределами UMHPIC 104, следящего или вмешивающегося в содержимое UMHPIC 104.
Не являющийся доверенным код 112 исполняется в пользовательском режиме за пределами UMHPIC. Процессор 102 с поддержкой безопасности исполняет не являющийся доверенным код 112, способом, который препятствует его доступу к коду и данным в пределах UMHPIC 104. Возможны множественные UMHPIC, и процессор 102 с поддержкой безопасности может исполнять не являющийся доверенным код 112 в другом UMHPIC. Даже при исполнении в другом UMHPIC, не являющийся доверенным код 112 является "не являющимся доверенным" с точки зрения упомянутого UMHPIC 104. В некоторых процессорах с поддержкой безопасности, UMHPIC могут быть вложенными: внутренний UMPHIC является защищенным от кода во внешнем UMHPIC, и всего кода за пределами внешнего UMHPIC. В случае вложенных UMHPIC, код внешнего UMHPIC является не являющимся доверенным для внутреннего UMHPIC; код и данные внутреннего UMHPIC не могут быть подвержены вмешательству или отслежены кодом внешнего UMHPIC.
Для инициализации UMHPIC 104 способом, который обеспечивает клиентской системе уверенность в том, что UMHPIC 104 установлен с доверенными кодом и данными клиента, и без не являющихся доверенными кода или данных, посредством чего клиентской системе обеспечивается уверенность в том, что приложение 110 исполняется в системе 100 должным образом, может использоваться процесс инициализации - например, такой, как тот, который описан в родственной патентной заявке США № XXXXXX, поданной одновременно, и имеющей номер дела поверенного MS1-5267US.
Экземпляр UMHPIC 104 может быть создан в контексте вычислительной службы внешнего размещения, например, службы "облачных вычислений", в которой клиентская система инициализирует UMHPIC 104 для безопасного исполнения приложения 110 в упомянутой службе облачных вычислений. Соответственно, с точки зрения клиентской системы, все части системы 100 за пределами UMHPIC 104 и процессор 102 с поддержкой безопасности являются "не являющимися доверенными". В вариантах осуществления настоящей заявки приложению 110 обеспечивается возможность исполняться в пределах UMHPIC и по-прежнему иметь доступ к функциям операционной системы из " не являющейся доверенной" операционной системы узла, например, OS 114 узла.
В различных вариантах осуществления приложение 110 включает в себя один или более подкомпонентов. В общих вариантах осуществления, один или более из подкомпонентов приложения включают в себя библиотечную операционную систему (OS) 116, которая может быть идентичной или аналогичной обособленным подсистемам OS, описанным в патентной заявке США №12/834,895, поданной 13 июля 2010 г., и озаглавленной "ULTRA-LOW COST SANDBOXING FOR APPLICATION APPLIANCES". В патентной заявке США №12/834895 описываются "песочницы приложений", сконфигурированные для выполнения различных элементов операционной системы (иногда называемых "библиотечной OS") в пределах обособленного процесса приложения отдельно от других элементов операционной системы. Песочницы приложений, описанные в патентной заявке США №12/834,895, защищают операционную систему узла от вмешательства или слежения приложением, но не обязательно защищают приложение от вмешательства или слежения операционной системой хоста. Обособленная подсистема OS, описанная в патентной заявке США №12/834,895, обеспечивает приложение расширенным набором API для непосредственного обеспечения функций операционной системы, которые предусмотрены для использования в приложении. Обособленная подсистема OS также использует малое подмножество интерфейсов прикладного программирования (API) для связи с операционной системой хоста, через уровень адаптации к платформе (platform adaptation layer, PAL) операционной системы, для обеспечения приложения базовыми вычислительными службами. PAL 118 узла может быть идентичным, или аналогичным, PAL операционной системы узла, описанному в патентной заявке США №12/834,895. В вариантах осуществления PAL 118 узла может включать в себя инструкцию системного прерывания. В альтернативных вариантах осуществления PAL 118 узла включает в себя библиотеки, которые создают высокоуровневые абстракции из низкоуровневых абстракций OS 114 узла. В совокупности, PAL 118 узла (если присутствует) и OS 114 узла включены в платформу 130 узла.
Библиотечная OS 116 может быть сконфигурирована для обеспечения приложения 110 первым подмножеством служб операционной системы (например, в одном примере, которым не ограничивается изобретение, "расширенным" набором служб, описанным выше), и для вызова OS 114 узла для обеспечения приложения 110 вторым подмножеством служб операционной системы (например, в одном примере, которым не ограничивается изобретение, базовыми вычислительными службами, описанными выше). Варианты осуществления настоящего раскрытия не ограничиваются исполнением приложений, например, приложения 110, которые упакованы с библиотечной OS, например, библиотечной OS 116. В различных вариантах осуществления PAL 118 узла и/или библиотечная OS 116 отсутствуют. В по меньшей мере одном варианте осуществления библиотечная OS 116 отсутствует, и приложение 110 состоит из эмулятора процессора пользовательского режима, исполняющего виртуальную машину (которая в свою очередь может состоять из "гостевой" операционной системы и приложений).
Поддерживающий UMHPIC PAL (U-PAL) 120 находится частично внутри UMHPIC 104, а частично в не являющейся доверенной части памяти 106 пользовательского режима. В различных вариантах осуществления приложение 110 может быть немодифицированным для исполнения внутри UMHPIC 104, и приложение 110, в его немодифицированной версии, конфигурируют для взаимодействия непосредственно с платформой 130 узла посредством интерфейса службы, обеспечиваемого платформой 130 узла. U-PAL 120, следовательно, содействует взаимодействиям для запроса системных ресурсов между приложением 110, исполняющимся в UMHPIC, и одним или более компонентами платформы 130 узла, исполняющейся за пределами UMHPIC. И, компонент 122 служб безопасности из U-PAL 120 выполняет одно или более относящихся к безопасности действий. U-PAL 120 обеспечивает приложение 110 интерфейсом службы, в пределах UMHPIC 104, который эмулирует интерфейс, обеспечиваемый платформой 130 узла. Часть U-PAL 120, которая находится за пределами UMHPIC 104, конфигурируют для взаимодействия с OS 114 узла, например, посредством PAL 118 узла через интерфейс платформы. В альтернативных вариантах осуществления PAL 118 узла может являться подкомпонентом U-PAL 120. В еще одних вариантах осуществления, например, в тех, в которых отсутствует библиотечная OS 116 и PAL 118 узла, U-PAL 120 эмулирует весь интерфейс службы, обеспечиваемый OS 114 узла, или его часть. Например, U-PAL 120 может обеспечивать частичный или полный набор расширенных API, которые сконфигурированы для использования приложением 110.
U-PAL 120 включает в себя компонент 122 служб безопасности и компонент 124 преобразования. Компонент 122 служб безопасности целиком находится в пределах UMHPIC 104 и выполняет относящиеся к безопасности действия. Компонент служб безопасности выполняет относящиеся к безопасности действия, например, проверку достоверности дескрипторов, возвращаемых платформой узла, проверку достоверности распределений памяти, обеспечение того, что планирование потоков придерживается ожидаемой семантики (например, примитивы взаимного исключения действительно обеспечивают взаимное исключение), проверку достоверности результатов различных вызовов, сделанных в платформу 130 узла, обновление структур данных, необходимых для таких проверок достоверности, шифрование данных, защиту целостности данных посредством цифровых подписей или кодов аутентификации сообщений, защиту данных от атак повторного использования, безопасное обеспечение случайных чисел. Приложение 110 может являться немодифицированным, и не предназначенным для исполнения в пределах UMHPIC 104 в не являющейся доверенной вычислительной системе. Соответственно, приложение 110 может быть разработано с учетом того, что вычислительная система, в которой оно выполняется является доверенной. Соответственно, приложение 110 не обязательно сконфигурировано для проверки достоверности того, что OS 114 узла ведет себя должным образом. Но, так как с точки зрения UMHPIC 104 вычислительная система 100 может являться не являющейся доверенной, то не исходят из того, что платформа 130 узла ведет себя должным образом. Соответственно, компонент 122 служб безопасности выполняет относящиеся к безопасности действия, которые в результате приводят к виртуальной платформе, которая ведет себя ожидаемым и надлежащим образом.
В одном неограничивающем примере, например, компонент 122 служб безопасности проверяет достоверность того, что дескрипторы интерфейса, возвращаемые платформой 130 узла в ответ на вызовы API для доступа к устройству, сделанные приложением 110 и/или библиотечной OS 116, являются надлежащими. Например, он может определять, являются ли дескрипторы интерфейса дубликатами дескрипторов интерфейса, ранее обеспеченных в приложение 110 и/или библиотечную OS 116. Такие дескрипторы интерфейса могут использоваться для доступа к устройствам, например, устройствам ввода-вывода, сетевым устройствам или другим типам устройств. В другом неограничивающем примере, например, компонент 122 служб безопасности проверяет достоверность того, что распределения памяти, возвращаемые платформой 130 узла, являются надлежащими. Например, он может обеспечивать то, что новое распределение памяти не перекрывается с памятью, ранее распределенной приложению 110. Такое распределение памяти с перекрытием может вызывать неожиданную перезапись приложением 110 своих собственных данных, что может вызвать его непредсказуемое поведение.
В другом примере, например, компонент 122 служб безопасности сконфигурирован для защиты данных, которые должны быть записаны в файл в файловой системе платформы 130 узла. Эта защита может включать в себя шифрование, добавление цифровых подписей или кодов аутентификации сообщений и/или меры по защите от атак повторного использования, например, описанных в патенте США №7421579, опубликованном для England et al. 2 сентября 2008 г., и озаглавленном "Multiplexing a secure counter to implement second level secure counters", патенте США №7065607, опубликованном для England et al. 20 июня 2006 г., и озаглавленном "System and method for implementing a counter", и как описано в "Memoir: Practical State Continuity for Protected Modules", by Bryan Parno, Jacob R. Lorch, John R. Douceur, James Mickens, and Jonathan M. McCune, и оубликованном в Proceedings of the IEEE Symposium on Security and Privacy, IEEE, May 2011. Само приложение 110 может быть сконфигурировано для записи данных в файловую систему в незащищенной форме, потому что приложение 110, как отмечено выше, может быть разработано с учетом того, что вычислительная система, на которой оно выполняется, является доверенной. Соответственно, когда приложение 110 и/или библиотечная OS 116 выдает вызов API для записи данных в файловую систему, компонент 122 служб безопасности защищает упомянутые данные от имени приложения 110 до передачи этих защищенных данных в вызове в платформу 130 узла. Компонент служб безопасности, также сконфигурирован для снятия защиты с данных, считываемых из платформы узла, и/или их верификации, так как приложение 110 может не быть сконфигурировано для приема защищенных данных из файловой системы, и так как оно может не осуществлять верификацию цифровых подписей или кодов аутентификации сообщений, и может не выполнять проверку в отношении атак повторного использования. В другом варианте осуществления компонент 122 служб безопасности может реализовывать все доступы к файловой системе с использованием защищенной виртуальной файловой системы, возможно, с использованием шифрования, цифровых подписей, кодов аутентификации сообщений и/или мер по предотвращению атак повторного использования, избегая раскрытия доверенных имен файлов и метаданных платформе 130 узла.
Приложение 110 может быть сконфигурировано для запроса служб планирования потоков из платформы 130 узла. Однако не являющаяся доверенной, неправильно функционирующая платформа 130 узла может планировать потоки способом, вызывающим неправильное исполнение приложения 110. Например, если один поток приложения 110 получает блокировку (“lock”), то неправильно функционирующая операционная система может предоставить возможность другому потоку одновременно получить эту блокировку, что вызывает одновременное выполнение операций этими потоками, и приводит к непредсказуемым результатам. Соответственно компонент 122 служб безопасности может включать в себя планировщик потоков пользовательского режима, сконфигурированный для обработки планирования потоков от имени приложения 110 и/или библиотечной OS 116. Такой планировщик потоков пользовательского режима может не потребоваться, например, если приложение 110 и библиотечная OS 116 содержат только один поток исполнения. Если приложение 110 и/или библиотечная OS 116 активизируют вызов функциональности хоста, относящейся к планированию потоков, то компонент 122 служб безопасности может принять решение о самостоятельной обработке вызова планирования потоков, вместо того, чтобы передавать его в платформу 130 узла.
Компонент 124 преобразования U-PAL 120 обеспечивает возможность передачи вызовов API из компонента 122 служб безопасности в платформу 130 узла. Доверенная часть компонента преобразования, доверенный компонент 126 преобразования, исполняется внутри UMHPIC 104 и сконфигурирована для выполнения маршалинга (“marshal”) параметров, ассоциированных с вызовами в платформу 130 узла, активизации вентиля выхода, обеспечиваемого процессором 102 с поддержкой безопасности, и передачи маршалированных параметров наружу в не являющийся доверенным компонент 128 преобразования. Соответственно, доверенный компонент 126 преобразования действует как транспортное средство для вызовов из компонента 122 служб безопасности в платформу 130 узла.
Доверенный компонент 126 преобразования также принимает запросы исполнения из платформы 130 узла и результаты вызовов, сделанных в платформу 130 узла, через вентиль входа, активизируемый не являющимся доверенным компонентом 128 преобразования. Доверенный компонент 126 преобразования выполняет демаршалинг различных параметров, ассоциированных с этими запросами исполнения и результатами, и передает их в компонент 122 служб безопасности для проверки достоверности.
Не являющийся доверенным компонент 128 преобразования, также часть компонента 124 преобразования, исполняется за пределами UMHPIC 104. Он сконфигурирован для выполнения демаршалинга параметров, передаваемых в него доверенным компонентом 126 преобразования через вентиль выхода, и для выполнения соответствующих вызовов в платформу 130 узла (например, активизации вызовов операционной системы в OS 114 узла через PAL 118 узла) от имени UMHPIC 104. Не являющийся доверенным компонент 128 преобразования принимает из платформы 130 узла запросы исполнения и результаты системных вызовов, выполняет маршалинг соответствующих параметров для этих запросов исполнения и результатов, активизирует вентиль входа и передает эти маршалированные компоненты в доверенный компонент 126 преобразования. Соответственно, не являющийся доверенным компонент 128 преобразования действует как точка входа для результатов вызовов и запросов исполнения из платформы 130 узла.
В общем варианте осуществления, не являющийся доверенным компонент 128 преобразования исполняется в пользовательском режиме за пределами UMHPIC 104, и может быть активизирован доверенным компонентом 126 преобразования через явный вентиль выхода. В альтернативном варианте осуществления, не являющийся доверенным компонент 128 преобразования исполняется как подкомпонент платформы 130 узла, и может быть активизирован из системного вызова или инструкции системного прерывания, выдаваемой в пределах доверенного компонента 126 преобразования.
Компонент 124 преобразования сконфигурирован для активизации функций входа и выхода процессора 102 с поддержкой безопасности, тем самым обеспечивая ему возможность передавать параметры и исполнение между UMHPIC 104 и внешней средой исполнения и наоборот. Как отмечалось в другом месте этого документа, приложение 110 может являться немодифицированным, и может не знать о том, что оно исполняется в пределах UMHPIC 104, и, следовательно, может не быть сконфигурировано для активизации вентилей выхода процессора 102 с поддержкой безопасности для передачи вызовов наружу в платформу 130 узла. Аналогично, PAL 118 узла также может являться немодифицированным для обеспечения поддержки приложению, исполняющемуся в UMHPIC 104, и, следовательно, может не быть сконфигурирован для активизации вентилей входа процессора 102 с поддержкой безопасности для передачи запросов исполнения и результатов вызовов обратно в приложение 110. Соответственно, компонент 124 преобразования обеспечивает возможность активизации вентилей входа и выхода процессора 102 с поддержкой безопасности от имени приложения 110 и PAL 118 узла. Компонент 122 служб безопасности обеспечивает возможность обработки исполнения потоков, защиты данных приложения, записываемых на не являющееся доверенным запоминающее устройство, и проверки достоверности поведения платформы 130 узла от имени приложения 110, и предпринимает соответствующие действия, относящиеся к безопасности. Компонент 124 преобразования и компонент 122 служб безопасности вместе предоставляют возможность исполнения приложения 110 в пределах UMHPIC 104, наряду с продолжением использования системных ресурсов, обеспечиваемых "не являющейся доверенной" OS 114 узла.
Иллюстративное вычислительное устройство для обеспечения безопасной среды исполнения
Фиг. 2 является структурной схемой иллюстративной вычислительной системы, используемой для обеспечения безопасной среды исполнения согласно вариантам осуществления. Вычислительная система 200 может быть выполнена в виде любого подходящего вычислительного устройства, в котором может быть реализована безопасная среда исполнения. Согласно различным неограничивающим примерам, например, пригодные вычислительные устройства могут включать в себя персональные компьютеры (PC), серверы, фермы серверов, центры данных, компьютеры специального назначения, планшетные компьютеры, игровые консоли, смартфоны, их комбинации или любое другое вычислительное устройство(а), на котором может храниться и исполняться вся безопасная среда исполнения или ее часть.
В одной иллюстративной конфигурации, вычислительная система 200 содержит один или более процессоров 202 и память 204. Процессоры 202 включают в себя один или более процессоров с поддержкой безопасности, которые являются идентичными или аналогичными процессору 102 с поддержкой безопасности. Процессоры 202 могут включать в себя один или более универсальных или специализированных процессоров, отличных от процессора с поддержкой безопасности. Вычислительная система 200 также может содержать соединение(я) 206 связи, которое предоставляет возможность связей с различными другими системами. Вычислительная система 200 также может включать в себя одно или более устройств 208 ввода, например, клавиатуру, мышь, стилус, устройство речевого ввода, устройство ввода касанием и т.д., и одно или более устройств 210 вывода, например, устройство отображения, динамики, принтер и т.д., коммуникативно соединенные с процессором(ами) 202 и памятью 204.
В памяти 204 могут храниться инструкции программы, которые можно загружать и исполнять в процессоре(ах) 202, а также данные, генерируемые во время исполнения этих программ, и/или которые можно использовать вместе с ними. В проиллюстрированном примере, в памяти 204 хранится операционная система 212, которая обеспечивает базовую функциональность системы вычислительной системы 200, и, наряду с другим, предусматривает функционирование других программ и модулей вычислительной системы 200. Операционная система 212 может являться идентичной или аналогичной OS 114 узла.
Части памяти 204 могут быть включены в UMHPIC, как описано в другом месте этой заявки в этом Подробном описании. Память 204 может быть разделена между памятью на одной физической микросхеме с процессором, и памятью на других микросхемах. Память 204 включает в себя U-PAL 214, который может являться идентичным или аналогичным U-PAL 120. Память 204 включает в себя приложение 216, которое может являться идентичным или аналогичным приложению 110. Приложение 216 может включать в себя библиотечную OS, как описано в другом месте в этом Подробном описании, сконфигурированную для взаимодействия с PAL 218 узла, который может быть идентичным или аналогичным PAL 118 узла. Память 204 включает в себя не являющийся доверенным код 220, который может являться идентичным или аналогичным не являющемуся доверенным коду 112.
ИЛЛЮСТРАТИВНЫЕ ОПЕРАЦИИ ДЛЯ ИСПОЛНЕНИЯ ПРИЛОЖЕНИЯ В UMHPIC
Фиг. 3 является схемой последовательности операций, демонстрирующей иллюстративный процесс 300 для обеспечения безопасности такому приложению, как приложение 110, исполняющемуся в таком UMHPIC, как UMHPIC 104. На этапе 302, приложение исполняется внутри UMHPIC, как описано в другом месте в этом Подробном описании.
На этапе 304, U-PAL, например, U-PAL 120, осуществляет содействие взаимодействию для запроса распределения ресурсов между приложением, исполняющимся внутри UMHPIC, и платформой узла, исполняющейся за пределами UMHPIC. Упомянутое содействие может включать в себя передачу запросов из приложения и результатов из платформы узла, из UMHPIC и в него, например, так, как описано в другом месте в этом Подробном описании. Содействие может включать в себя активизацию вентилей входа и выхода и маршалинг параметров, описанных в другом месте в этом Подробном описании. Содействие может включать в себя передачу запросов системных ресурсов в платформу узла и прием ассоциированных результатов из нее.
На тапе 306, компонент служб безопасности U-PAL, например, компонент 122 служб безопасности, выполняет, как часть упомянутого содействия, относящееся к безопасности действие. Относящееся к безопасности действие может включать в себя, в различных вариантах осуществления, шифрование данных из приложения, ассоциированного с взаимодействием для запроса системных служб, дешифрование данных, ассоциированных с взаимодействием для запроса системных служб для приложения, поддержание структуры данных учета использования системных ресурсов для хранения информации, касающейся взаимодействия для запроса системных служб, верификацию корректности результата распределения ресурсов, который обеспечивается платформой узла как часть взаимодействия для запроса системных служб, проверку на предмет распределений памяти с перекрытием, определение, является ли дескриптор устройства дублированным дескриптором устройства, выполнение служб планирования потоков и т.д., как описано в другом месте в этом Подробном описании. Могут выполняться другие, относящиеся к безопасности действия, без отступления от объема настоящего раскрытия.
Фиг. 4 является схемой последовательности операций, демонстрирующей иллюстративный процесс 400 для содействия взаимодействию для запроса ресурсов между приложением, исполняющимся в UMHPIC, и платформой узла,