СОДЕЙСТВИЕ ВЗАИМОДЕЙСТВИЯ ДЛЯ ЗАПРОСА СИСТЕМНЫХ СЛУЖБ ДЛЯ АППАРАТНО-ЗАЩИЩЕННЫХ ПРИЛОЖЕНИЙ
PROMOTION OF INTERACTION FOR SYSTEM SERVICE REQUEST FOR HARDWARE-PROTECTED APPLICATIONS

УРОВЕНЬ ТЕХНИКИ
Обычные приложения программного обеспечения полагаются на различные функции операционной системы. Операционная система может обеспечивать набор интерфейсов прикладного программирования (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, и платформой узла, например, платформой узла 130, исполняющейся за пределами UMHPIC. На этапе 401, приложение исполняется в UMHPIC.
На этапе 402, приложение, исполняющееся в UMHPIC, выдает вызов для системной службы. UMHPIC обеспечивается процессором с поддержкой безопасности, например, процессором 102 с поддержкой безопасности. Процессор с поддержкой безопасности обеспечивает по меньшей мере один вентиль выхода для передачи исполнения из UMHPIC и по меньшей мере один вентиль входа для передачи исполнения в UMHPIC. Вызов может поступать из любого подкомпонента приложения, включающего в себя библиотечную OS, например, библиотечную OS 116, и приложение и любые подкомпоненты, включающие в себя библиотечную OS, могут быть немодифицированными для исполнения в пределах UMHPIC, и могут не обладать собственной возможностью для передачи исполнения за пределы UMHPIC.
На этапе 404, компонент служб безопасности U-PAL, например, компонент 122 служб безопасности U-PAL 120, принимает вызов из приложения. Компонент служб безопасности исполняется в пределах UMHPIC.
На этапе 405, U-PAL может выполнять операции для маскирования данных в параметрах вызова до их отправки в платформу узла. Например, U-PAL может шифровать данные, которые будут записаны на постоянное запоминающее устройство платформой узла.
На этапе 406, доверенный компонент преобразования U-PAL, например, доверенный компонент 126 преобразования U-PAL 120, выполняет маршалинг параметров вызова. Для некоторых параметров, например, для скалярных значений, операция маршалинга может являться нулевой (“NULL”) операцией. Для других параметров, операция маршалинга может быть более сложной. Например, если вызовом является вызов для записи буфера на диск, то доверенный компонент преобразования может распределить временный буфер в незащищенной памяти за пределами зоны защищенной памяти, скопировать содержимое из буфера в зоне защищенной памяти во временный буфер в незащищенной памяти, и обновить указатель буфера в параметрах вызова для указания на временный буфер. В другом примере, параметр может включать в себя структуру данных расширенного указателя, и доверенный компонент преобразования может выполнять ее сериализацию во временный буфер.
На этапе 408, доверенный компонент преобразования активизирует вентиль выхода UMHPIC, обеспечиваемого процессором с поддержкой безопасности, для передачи исполнения коду не являющегося доверенным компонента преобразования, например, не являющегося доверенным компонента 128 преобразования U-PAL 120, исполняющегося за пределами UMHPIC.
На этапе 410, не являющийся доверенным компонент преобразования выполняет демаршалинг параметров вызова. Для некоторых параметров, например, для скалярных значений, операция демаршалинга может являться нулевой операцией. Для других параметров, операция демаршалинга может быть более сложной. Например, операция демаршалинга может выполнять десериализацию структуры данных расширенного указателя. Различные варианты осуществления могут включать в себя оптимизации и/или дополнительную координацию между не являющимся доверенным компонентом переключения и доверенным компонентом переключения для улучшения производительности. Для маршалинга и демаршалинга могут использоваться различные оптимизации.
На этапе 412, не являющийся доверенным компонент преобразования выдает вызов в платформу узла, например, платформу 130 узла. На этапе 414, платформа узла выполняет запрошенную системную службу.
На этапе 416, когда исполнение возвращается из платформы узла в не являющийся доверенным компонент преобразования, этот не являющийся доверенным компонент выполняет маршалинг результатов вызова. Для некоторых результатов, например, для скалярных значений, операция маршалинга может являться нулевой операцией. Для других результатов, операция маршалинга может быть более сложной. Например, операция маршалинга может осуществлять сериализацию структуры данных расширенного указателя.
На этапе 418, не являющийся доверенным компонент преобразования активизирует вентиль входа UMHPIC, обеспечиваемую процессором с поддержкой безопасности, для передачи исполнения коду доверенного компонента преобразования, исполняющегося внутри UMHPIC.
На этапе 420, доверенный компонент преобразования выполняет демаршалинг результатов вызова. Для некоторых результатов, например, для скалярных значений, операция демаршалинга может являться нулевой операцией. Для других результатов, операция демаршалинга может быть более сложной. Например, если вызов является вызовом для считывания буфера с диска, то доверенный компонент преобразования может копировать данные из временного буфера в незащищенной памяти в буфер в зоне защищенной памяти, и обновить указатель буфера в параметрах результата для указания на конечный буфер. В другом примере, параметр может включать в себя структуру данных расширенного указателя, и доверенный компонент преобразования может выполнять ее десериализацию.
На этапе 421, компонент служб безопасности может выполнять дешифрование данных, считанных из запоминающего устройства, обеспечиваемого платформой узла, и также может осуществлять верификацию цифровых подписей или кодов аутентификации сообщений для верификации целостности данных. Он также может выполнять верификации, предназначенные для защиты от атак повторного использования. Эти этапы также могут применяться, например, к страницам виртуальной памяти, когда их считывают из файлов подкачки на жестком диске. Как отмечено в другом месте в этом Подробном описании, компонент служб безопасности защищает данные, записываемые в систему запоминающих устройств узла приложением, исполняющимся в UMHPIC. Это происходит потому, что платформа узла и ее службы хранения, включающие в себя любую файловую систему, обеспечиваемую платформой узла, не являются не являющимися доверенными приложениями, исполняющимися в UMHPIC. Но само приложение может быть немодифицированным для исполнения в UMHPIC, и, следовательно, может быть сконфигурировано для записи данных в файловую систему без их защиты. Соответственно, данные, считываемые из файловой системы дешифруются и/или верифицируются компонентом служб безопасности, так как приложение не сконфигурировано для приема защищенных данных, и может быть не приспособлено для их дешифровки и верификации. В вариантах осуществления, в качестве оптимизации, этап 421 дешифровки может быть объединен с этапом 420 демаршалинга.
На этапе 422, компонент служб безопасности осуществляет верификацию возвращенных результатов в сопоставлении со структурами данных учета использования системных ресурсов для верификации того, что эти результаты являются согласованными и заслуживают доверия. В вариантах осуществления, вызов может являться запросом системного ресурса или службы, и компонент служб безопасности осуществляет верификацию того, что результат, возвращенный в ответ на этот системный запрос, является достоверным для запрошенного ресурса или службы. Системный ресурс может являться, в различных вариантах осуществления, ресурсом распределенной памяти, сетевым ресурсом, ресурсом ввода/вывода или другим системным ресурсом.
Компонент служб безопасности может использовать структуру данных учета использования системных ресурсов для верификации выходных данных любых не являющихся доверенными служб из платформы узла. Например, структура данных учета использования системных ресурсов может обеспечивать возможность проверки достоверности компонентом служб безопасности того, что дескрипторы интерфейсов и распределения памяти из платформы узла являются надлежащими. В вариантах осуществления, где результатом является дескриптор интерфейса или ресурса, компонент служб безопасности осуществляет верификацию того, что возвращенный дескриптор интерфейса или ресурса не является дубликатом ранее обеспеченного дескриптора ресурса во избежание атак повторного использования дескриптора. В вариантах осуществления, где результатом является указание памяти, распределенной приложению, компонент служб безопасности осуществляет верификацию того, что распределенная память ранее не была распределена приложению (что может вызвать перезапись приложением своих собственных данных и его неожиданное поведение), является доступной для приложения, и не находится в пределах зарезервированного или недействительного диапазона адресов. В общих вариантах осуществления, структуры данных учета использования системных ресурсов включают в себя структуры для хранения данных, относящихся к одному или более из распределений памяти, дескрипторов ресурса и идентификаторов потока.
На этапе 424, если при верификации в сопоставлении со структурами данных учета использования системных ресурсов результатов вызова определяется, что результаты являются достоверными, и, следовательно, им можно доверять, то исполнение продолжается.
На этапе 426, если результат верификации на этапе 422 включает в себя то, что один или более из результатов являются недействительными, то компонент служб безопасности возвращает в приложение результат с отказом. В некоторых вариантах осуществления, результат с отказом является кодом ошибки, относящимся к запросу этой службы, например, известным результатом "ошибка считывания диска" при запросе службы считывания диска. В некоторых вариантах осуществления отказ может доставляться в приложение как катастрофический отказ, который вызывает немедленное завершение приложения.
На этапе 428, если результат верификации на этапе 422 включает в себя то, что результаты являются достоверными, компонент служб безопасности обновляет структуры данных учета использования системных ресурсов в установленном порядке для этого типа запроса службы. Например, если запрос службы был распределен новой области памяти, то компонент служб безопасности может обновлять таблицу распределений памяти, компонент служб безопасности также может выдавать инструкции в процессор с поддержкой безопасности для добавления новой области памяти к зане защищенной памяти UMPHIC.
На этапе 430, компонент служб безопасности обеспечивает успешные результаты вызова в приложение, которое продолжает свое исполнение.
Фиг. 5 является схемой последовательности операций, демонстрирующей иллюстративный процесс 500 для обработки запросов на исполнение и/или уведомлений о асинхронных событиях из платформы узла, например, платформы 130 узла. На этапе 502, не являющийся доверенным компонент преобразования, например, не являющийся доверенным компонент 128 преобразования, принимает запрос исполнения или асинхронное уведомление из платформы узла, например, OS 114 узла или PAL 118 узла. Запросы и асинхронные уведомления сопровождаются различными четко определенными параметрами.
На этапе 504, не являющийся доверенным компонент преобразования выполняет маршалинг параметров, которые сопровождают запросы и уведомления. То есть не являющийся доверенным компонент преобразования трансформирует параметры для того, чтобы они стали пригодными для передачи в UMHPIC, например, UMHPIC 104, через вентиль входа в процесс, исполняющийся внутри UMHPIC.
На этапе 506, не являющийся доверенным компонент преобразования активизирует вентиль входа, обеспечиваемый процессором с поддержкой безопасности, для передачи маршалированных параметров, ассоциированных с упомянутыми запросами и уведомлениями, в UMHPIC. И на этапе 508, доверенный компонент преобразования, исполняющийся внутри UMHPIC, например, доверенный компонент 126 преобразования, принимает маршалированные параметры через вентиль входа.
На этапе 510, доверенный компонент преобразования выполняет демаршалинг параметров, принятых из не являющегося доверенным уровня преобразования. Демаршалинг параметров содержит трансформирование маршалированных параметров для восстановления запроса исполнения или асинхронного уведомления. На этапе 512, доверенный компонент преобразования передает демаршалированные параметры в компонент служб безопасности, исполняющийся внутри UMHPIC, например, компонент 122 служб безопасности.
На этапе 514, компонент служб безопасности выполняет относящиеся к безопасности действия. Эти действия могут включать в себя верификацию того, что запрос исполнения или асинхронное уведомление, обеспеченные платформой узла, является достоверным.
На этапе 516, компонент служб безопасности передает запрос исполнения или асинхронное уведомление в приложение и/или библиотечную OS, исполняющуюся в UMHPIC.
На фиг. 3-5 изображены потоковые графы, которые демонстрируют иллюстративные процессы согласно различным вариантам осуществления. Операции этих процессов изображены в отдельных блоках и кратко сформулированы со ссылкой на эти блоки. Эти процессы изображены как логические потоковые графы, каждая операция которых может представлять набор операций, которые могут быть реализованы в аппаратном обеспечении, программном обеспечении или их комбинации. В контексте программного обеспечения, операции представляют исполнимые компьютером инструкции, хранящиеся на одном или более носителях информации компьютера, которые, при исполнении одним или более процессорами, обеспечивают возможность выполнения этими одним или более процессорами перечисленных операций. Обычно, исполняемые компьютером инструкции включают в себя процедуры, программы, объекты, модули, компоненты, структуры данных и т.п., которые выполняют конкретные функции или реализуют конкретные абстрактные типы данных. Не подразумевается, что порядок, в котором описаны операции, является ограничением, и для реализации процесса любое количество описанных операций может быть объединено в любом порядке, разделено на подоперации и/или выполняться параллельно. Процессы согласно различным вариантам осуществления настоящего раскрытия могут включать в себя только некоторые или все операции, изображенные в логическом потоковом графе.
СЧИТЫВАЕМЫЕ КОМПЬЮТЕРОМ НОСИТЕЛИ ИНФОРМАЦИИ
В зависимости от конфигурации и типа используемого вычислительного устройства, память 204 вычислительной системы 200 на фиг. 2 может включать в себя энергозависимую память (например, оперативное запоминающее устройство (ОЗУ, RAM) и/или энергонезависимую память (например, постоянное запоминающее устройство (ПЗУ, ROM), флэш-память и т.д.). Память 204 также может включать в себя дополнительное съемное запоминающее устройство и/или несъемное запоминающее устройство, включающее в себя, например, флэш-память, магнитное запоминающее устройство, оптическое запоминающее устройство и/или запоминающее устройство на ленте, которое может обеспечивать энергонезависимое запоминающее устройство считываемых компьютером инструкций, структур данных, программных модулей и других данных для вычислительной системы 200.
Память 204 является примером считываемых компьютером носителей информации. Считываемые компьютером носители информации включают в себя, по меньшей мере, два типа считываемых компьютером носителей информации, а именно, электронные носители информации и среды связи.
Носители информации компьютера включают в себя энергозависимые и энергонезависимые, съемные и несъемные носители информации, реализованные любым процессом или технологией хранения информации, например, считываемых компьютером инструкций, структур данных, программных модулей или других данных. Электронные носители информации включают в себя, например, память с изменением фазового состояния (PRAM), статическое запоминающее устройство с произвольной выборкой (SRAM), динамическую оперативную память (DRAM), другие типы оперативного запоминающего устройства (ОЗУ, RAM), постоянное запоминающее устройство (ПЗУ, ROM), электрически стираемое программируемое постоянное запоминающее устройство (EEPROM), флэш-память или другую технологию памяти, постоянное запоминающее устройство на компакт-диске (CD-ROM), универсальные цифровые диски (DVD) или другое оптическое запоминающее устройство, магнитофонные кассеты, магнитную ленту, накопитель на магнитных дисках или другие магнитные запоминающее устройства, или любую другую непередающую среду, которая может использоваться для хранения информации для доступа (к ней) вычислительным устройством.
Напротив, среды связи могут воплощать считываемые компьютером инструкции, структуры данных, программные модули или другие данные в модулированном сигнале данных, например, в несущей волне или другом механизме передачи. Как определено в этом документе, электронные носители информации не включают в себя среды связи.
Вывод
Несмотря на то, что в этом раскрытии используются формулировки, которые являются конкретными для структурных признаков и/или действий, относящихся к способу, изобретение не ограничивается конкретными признаками или описанными действиями. Наоборот, конкретные признаки и действия раскрыты как иллюстративные формы реализации этого изобретения.