Безопасная идентификация исполняемого файла для определяющего доверие логического объекта
Иллюстрации
Показать всеИзобретение относится к идентификации исполняемого файла или другого получателя ресурса для определяющего доверие объекта, чтобы этот объект могут предоставить ресурс для этого исполняемого файла. Изобретение позволяет повысить доверие к исполняемому файлу или другому получателю ресурса со стороны поставщика ресурса. Ресурс получают от поставщика ресурса (ПР) для запросчика ресурса (ЗР), функционирующего на вычислительном устройстве. ЗР имеет связанный с ним идентифицирующий описатель (ИО), при этом ИО включает в себя информацию, имеющую отношение к безопасности, задающую окружение, в котором ЗР функционирует. Вычисляют идентификационный код (код-ИД) в соответствии с загруженным ЗР и загруженным ИО и на основе загруженного ЗР и загруженного ИО. ПР удостоверяется в том, что вычисленный код-ИД в запросе на ресурс совпадает с одним из одного или более действительных кодов-ИД для идентифицированного ЗР, чтобы заключить, что ЗР и ИО можно доверять, и ПР отвечает на пересланный запрос посредством предоставления ЗР запрошенного ресурса. 4 н. и 32 з.п. ф-лы, 4 ил.
Реферат
ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
Настоящее изобретение связано со способом и средством, с помощью которых исполняемый файл или нечто подобное может безопасным образом идентифицировать себя для определяющего доверие объекта так, чтобы тот мог предоставить ресурс для этого исполняемого файла. Более конкретно, настоящее изобретение относится к таким способу и средству, посредством которых определяющий доверие объект может устанавливать подлинность (выполнять аутентификацию) исполняемого файла, прежде чем предоставить ему ресурсы.
ПРЕДШЕСТВУЮЩИЙ УРОВЕНЬ ТЕХНИКИ
Во многих компьютерных сценариях первый объект компьютерного типа предоставляет некоторый ресурс компьютерного типа второму объекту компьютерного типа. Следует понимать, что каждый из первого и второго объектов может быть аппаратным или программным объектом, таким как компьютерная программа или исполняемый файл, компьютерное запоминающее устройство, компьютерный сервер данных и т.п. Также, ресурсом могут быть необработанные данные, файл с необработанными данными в нем в некоторой систематизированной форме и т.п.
Особенно в том случае, когда ресурс имеет особую ценность или должен обрабатываться в соответствии с заранее определенными правилами, первый объект или "поставщик ресурса" может предоставлять ресурс для второго объекта или "получателя ресурса", только если второй объект или связанный с ним объект предоставляет информацию аутентификации для первого объекта, и первый объект, основываясь на ней, выполняет аутентификацию второго объекта. Например, если сервер в банковском учреждении (первый объект) обеспечивает ключ безопасности (ресурс) для банковской программы на компьютере пользователя (второй объект), посредством которого пользователь может проводить банковские сделки на компьютере, сервер может запрашивать некоторые гарантии того, что банковской программе может быть доверено применение ключа безопасности способом, который контролируется банком.
То есть, сервер нуждается в информации аутентификации либо от самой банковской программы, либо от средства аутентификации по поручению банковской программы, извещающей о том, что банковская программа относится к определенному типу, исполняется в определенном окружении на основе определенных переменных и/или т.п. Таким образом, сервер действительно обеспечивает ключ безопасности для банковской программы только после ее аутентификации на основе информации аутентификации. Особенно важно то, что сервер при аутентификации банковской программы на основе информации аутентификации желает удостовериться в том, что банковская программа не была изменена в некотором отношении, например, неправильно использовала ключ безопасности, и также желает удостовериться в том, что банковская программа является действующей и не будет действовать в окружении, где ключ безопасности может быть обойден или прочитан сомнительным объектом, таким как похититель.
Следовательно, существует необходимость в способе и средстве, посредством которых компьютерная программа, исполняемый файл или другие получатели ресурса могут быть обеспечены информацией аутентификации, при помощи которой получатель ресурса может быть аутентифицирован поставщиком ресурса для предоставления его ресурса. В частности, существует необходимость в идентифицирующем описателе (дескрипторе) для описания идентификационных данных получателя ресурса для поставщика ресурса, где идентифицирующий описатель включает в себя, среди прочего, набор переменных, которые описывают окружение получателя ресурса и аутентифицирующую подпись или т.п.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
Вышеупомянутая необходимость удовлетворяется, по меньшей мере частично, настоящим изобретением, в котором ресурс получают от поставщика ресурса (ПР, RP) для запросчика ресурса (ЗР, RR), функционирующего на вычислительном устройстве. При этом ЗР имеет связанный с ним идентифицирующий описатель (ИО, ID), причем ИО включает в себя информацию, имеющую отношение к безопасности, задающую окружение, в котором ЗР функционирует.
ЗР и ИО, соответствующий этому ЗР, загружают в вычислительное устройство и ЗР обеспечивают ссылкой на загруженный ИО. Идентификационный код (код-ИД, code-ID) вычисляют в соответствии с загруженным ЗР и загруженным ИО и на основе на загруженного ЗР и загруженного ИО. После приема запроса от ЗР на ресурс удостоверяются в том, что запрашивающий ЗР имеет права на этот ресурс, и что ресурс должен быть ему доверен. После этого запрос на ресурс пересылают от ЗР к ПР.
ПР проверяет принятый запрос, получает код-ИД, ИО и определение запрошенного ресурса из принятого запроса и определяет из принятого запроса идентификационные данные запрашивающего ЗР. Также ПР получает каждый из одного или более действительных идентификационных кодов (кодов-ИД) для идентифицированного ЗР и удостоверяется в том, что вычисленный код-ИД в принятом запросе совпадает с одним из действительных кодов-ИД для идентифицированного ЗР. Затем ПР может сделать вывод о том, что ЗР можно доверять как известному ЗР, которого можно считать заслуживающим доверия, а также о том, что информация, имеющая отношение к безопасности, на основе которой ЗР функционирует, является известной информацией, имеющей отношение к безопасности, которую можно считать заслуживающей доверия.
После этого, ПР отвечает на пересланный запрос предоставлением запрошенного ресурса ЗР. ЗР принимает запрошенный ресурс, предоставленный ПР, и применяет его способом, совместимым с доверием, которым ПР наделил ЗР, и в соответствии с информацией, имеющей отношение к безопасности, изложенной в ИО, соответствующем ЗР.
ПЕРЕЧЕНЬ ФИГУР ЧЕРТЕЖЕЙ
Вышеприведенное краткое описание сущности изобретения, а также последующее детальное описание вариантов осуществления настоящего изобретения будут лучше поняты при прочтении в сочетании с прилагаемыми чертежами. Для цели иллюстрации изобретения на чертежах показаны варианты осуществления, предпочтительные в настоящее время. Однако, как должно быть понятно, изобретение не ограничивается точными схемами и инструментальными средствами. На чертежах:
Фиг.1 - блок-схема, показывающая иллюстративную вычислительную среду, в которой может быть реализовано настоящее изобретение.
Фиг.2 - блок-схема, показывающая поставщика ресурса, получателя ресурса, идентифицирующий описатель получателя ресурса и соответствующие объекты, скомпонованные и действующие в соответствии с одним вариантом осуществления настоящего изобретения.
Фиг.3 - схема последовательности операций, показывающая ключевые этапы, выполняемые получателем ресурса и соответствующими объектами по Фиг.2 при запрашивании ресурса у поставщика ресурса по Фиг.2 в соответствии с одним вариантом осуществления настоящего изобретения.
Фиг.4 - схема последовательности операций, показывающая ключевые этапы, выполняемые поставщиком ресурса по Фиг.2 при предоставлении ресурса получателю ресурса по Фиг.2 в соответствии с одним вариантом осуществления настоящего изобретения.
ПОДРОБНОЕ ОПИСАНИЕ ИЗОБРЕТЕНИЯ
КОМПЬЮТЕРНАЯ СРЕДА
Фиг.1 и последующее описание предназначены для того, чтобы обеспечить короткое общее описание подходящей вычислительной среды, в которой настоящее изобретение и/или часть его может быть реализовано. Хотя не требуется, изобретение описано в общем контексте машиноисполняемых команд, таких как программные модули, исполняемые компьютером, таким как рабочая станция-клиент или сервер. Как правило, программные модули включают процедуры, программы, объекты, компоненты, структуры данных и т.п., которые выполняют конкретные задания или реализуют определенные абстрактные типы данных. Кроме того, должно быть принято во внимание, что изобретение и/или часть его может быть осуществлено на практике с другими конфигурациями компьютерных систем, включая карманные устройства, мультипроцессорные системы, основанную на микропроцессорах или программируемую бытовую электронику, сетевые персональные компьютеры (ПК), миникомпьютеры, универсальные компьютеры (мейнфреймы) и т.п. Изобретение может быть также реализовано на практике в распределенных вычислительных средах, где задания выполняются удаленными устройствами обработки данных, которые связаны через сеть связи. В распределенной вычислительной среде, программные модули могут быть размешены как на локальных, так и на удаленных запоминающих устройствах.
Как показано на Фиг.1, иллюстративная вычислительная система общего назначения включает в себя обычный персональный компьютер 120 или нечто подобное, включающий в себя процессор 121, системную память 122 и системную шину 123, которая связывает различные системные компоненты, включая системную память, с процессом 121. Системная шина 123 может относиться к любому из нескольких типов шинных структур, включая шину памяти или контроллер памяти, периферийную шину и локальную шину, используя любую из множества шинных архитектур. Системная память включает в себя постоянное запоминающее устройство (ПЗУ, ROM) 124 и оперативное запоминающее устройство (ОЗУ, RAM) 125. Базовая система 126 ввода-вывода (BIOS), содержащая базовые процедуры, которые помогают передавать информацию между элементами внутри персонального компьютера 120, например при запуске, хранится в ПЗУ 124.
Персональный компьютер 120 может дополнительно включать в себя накопитель 127 на жестких магнитных дисках для считывания с жесткого диска (не показан) или записи на него, дисковод 128 для магнитного диска для считывания со съемного магнитного диска 129 или записи на него и дисковод 130 для оптического диска для считывания со съемного оптического диска 131, например компакт-диска (CD-ROM) или другого оптического носителя, или записи на него. Накопитель 127 на жестких магнитных дисках, дисковод 128 для магнитного диска и дисковод 130 для оптического диска подсоединены к системной шине 123 при помощи интерфейса 132 накопителя на жестких магнитных дисках, интерфейса 133 дисковода для магнитного диска и интерфейса 134 дисковода для оптического диска, соответственно. Накопители и дисководы и соответствующие им машиночитаемые носители обеспечивают энергонезависимое хранение машиночитаемых команд, структур данных, программных модулей и других данных для персонального компьютера 120.
Хотя примерная описываемая иллюстративная среда использует жесткий диск, съемный магнитный диск 129 и съемный оптический диск 131, нужно понимать, что другие типы машиночитаемых носителей, которые могут хранить данные, к которым может осуществить доступ компьютер, могут также быть использованы в иллюстративной операционной среде. Такие другие типы сред включают магнитные кассеты, карты флэш-памяти, цифровой видеодиск, картридж Бернулли, оперативное запоминающее устройство (ОЗУ), постоянное запоминающее устройство (ПЗУ) и т.п.
Ряд программных модулей может храниться на жестком диске, магнитном диске 129, оптическом диске 131, ПЗУ 124, ОЗУ 125, включая операционную систему 135, одну или более прикладных программ 136, другие программные модули 137 и данные 138 программ. Пользователь может вводить команды и информацию в персональный компьютер 120 через устройства ввода, такие как клавиатура 140 и координатно-указательное устройство 142. Другие устройства ввода (не показаны) могут включать в себя микрофон, джойстик, игровой планшет, спутниковую тарелку, сканер или т.п. Эти и другие устройства ввода часто подсоединяются к процессору 121 через интерфейс 146 последовательного порта, который подсоединен к системной шине, но могут быть подсоединены при помощи других интерфейсов, таких как параллельный порт, игровой порт или USB (универсальная последовательная шина). Монитор 147 или другие типы устройств отображения также соединены с системной шиной 123 посредством интерфейса, такого как видеоадаптер 148. В добавлении к монитору 147 персональный компьютер обычно включает в себя другие периферийные устройства вывода (не показаны), такие как громкоговорители и принтеры. Иллюстративная система по Фиг.1 также включает в себя хост-адаптер 155, шину 156 интерфейса малых компьютерных систем (SCSI) и внешнее запоминающее устройство 162, присоединенное к шине SCSI 156.
Персональный компьютер 120 может функционировать в сетевой среде, используя логические соединения с одним или более удаленных компьютеров, таких как удаленный компьютер 149. Удаленный компьютер 149 может быть другим персональным компьютером, сервером, маршрутизатором, сетевым ПК, одноранговым устройством или другим обычным узлом сети и обычно включает в себя многие или все элементы, описанные выше относительно персонального компьютера 120, хотя только запоминающее устройство 150 показано на Фиг.1. Логические соединения, изображенные на Фиг.1, включают в себя локальную сеть (LAN) 151 и глобальную сеть (WAN) 152. Такие сетевые среды являются типичными для офисов, компьютерных сетей масштаба предприятия, интрасетей и Интернет.
При использовании в среде LAN персональный компьютер 120 подсоединяется к LAN 151 через сетевой интерфейс или адаптер 153. При использовании в среде WAN персональный компьютер 120 обычно включает в себя модем 154 или другие средства для установления связи через глобальную сеть 152, такую как Интернет. Модем 154, который может быть внутренним или внешним, соединен с системной шиной 123 посредством интерфейса 146 последовательного порта. В сетевой среде программные модули, изображенные относительно персонального компьютера 120, или их части, могут храниться в удаленном запоминающем устройстве. Следует понимать, что показанные сетевые соединения являются иллюстративными, и что могут использоваться и другие средства для установления линии связи между компьютерами.
ИДЕНТИФИЦИРУЮЩИЙ ОПИСАТЕЛЬ ДЛЯ ПОЛУЧАТЕЛЯ РЕСУРСА
Обратимся теперь к Фиг.2, на которой видно, что настоящее изобретение излагается в контексте того, что первый объект компьютерного типа действует как поставщик ресурса (ПР) 10, предоставляющий некоторый ресурс 12 компьютерного типа для получателя (запросчика) ресурса (ЗР) 14. Следует понимать, что в зависимости от обстоятельств любой заданной ситуации каждый из ПР 10 и ЗР 14 может быть аппаратным или программным объектом либо может быть аппаратным элементом программного объекта или программным элементом аппаратного объекта, во всех случаях не отходя от сущности и объема настоящего изобретения. Например, ПР 10 может быть сервером, предоставляющим данные, файл, ключ, контент (информационно значимым содержимым) или т.п. в качестве ресурса 12, а ЗР 14 может быть программным структурным компонентом, устройством хранения данных, компьютерной программой или т.п., нуждающимся в таком ресурсе. Более того, ПР 10 может быть принтером, сетью или т.п., а ЗР 14 может быть программой или другой логической структурой, пытающейся в качестве ресурса получить доступ к такому ПР 10.
В одном варианте осуществления настоящего изобретения ресурс 12 имеет особенную ценность или должен быть обработан в соответствии с заранее определенными правилами, и соответственно ПР 10 только предоставляет его для ЗР 14, если ЗР 14 или связанное с ним средство 16 аутентификации представляет информацию аутентификации для ПР 10, и ПР 10 на ее основе выполняет аутентификацию (устанавливает подлинность) ЗР 14. Этот ЗР и средство 16 аутентификации могут, например, оба находиться на вычислительном устройстве 18 пользователя, при этом средство 16 аутентификации является средством оценки доверия или некоторым другим системным объектом в вычислительном устройстве 18, таким как загрузчик или другая часть операционной системы на вычислительном устройстве 18.
Согласно предшествующему уровню техники ЗР 14 обычно включал в себя декларацию с информацией, имеющей отношение к ЗР 14, включая элементы, такие как описание окружения внутри процесса ЗР 14, цифровую подпись с верифицирующей цепочкой сертификатов, ключи, которые могут быть применены для проверки составляющих элементов ЗР 14 и т.п. Затем, при работе элементы, функционирующие на вычислительном устройстве 18, обращались к соответствующей декларации, например, чтобы получить ключ для проверки ЗР 14, или для того, чтобы определить, что процесс ЗР 14 должен действительно включать в себя определенные составляющие элементы, или чтобы получить определенные процедуры, которым необходимо следовать в течение работы, или т.п.
Таким образом, декларация ЗР 14 описывала ЗР 14, защищенное окружение для ЗР 14, входные данные для ЗР 14 и т.п. Однако такая декларация недостаточна по следующим причинам:
1) Декларация могла задать множество исполняемых файлов, которые могли быть загружены в один процесс. Хотя это допускает большую гибкость, ограничение декларации одним исполняемым файлом является более безопасным, так как одна декларация может быть соединена или иным образом скомбинирована с одним исполняемым файлом, и один идентификационный код или 'код-ИД' ('code-ID') может быть вычислен на основе такой одной комбинации. Как может быть принято во внимание, код-ИД является профилем комбинации и в частности входных данных, имеющих отношение к безопасности, как изложено в декларации и в самом исполняемом файле. Как будет изложено в многочисленных деталях ниже, идентифицирующий описатель или 'ИО', соответствующий настоящему изобретению, является структурой данных, которая содержит такие входные данные, имеющие отношение к безопасности.
2) Декларация увеличилась в объеме, чтобы включить в себя многочисленные признаки, что привело в результате к увеличению сложности и другим нежелательным эффектам. В отличие от этого ИО, соответствующий настоящему изобретению, может быть встроен непосредственно в декларацию, импортирован посредством ссылки из любого другого места или извлечен во время выполнения из декларации и/или любого другого места, при этом ИО специальным образом ориентирован на вышеупомянутые входные данные, имеющие отношение к безопасности, только для соответствующего исполняемого файла, и ИО имеет значимость а контексте безопасности на самом низком уровне системы управления доступом. Таким образом, ИО может иметь относительно простой формат.
Обратимся теперь конкретно к идентифицирующему описателю или ИО, соответствующему настоящему изобретению. ИО 20 является пакетом для входных данных, имеющих отношение к безопасности, для исполняемого файла в процессе, где этот исполняемый файл является предположительно ЗР 14 по Фиг.2. Следует понимать, что ИО 20 может быть встроен в исполняемый файл, извлечен из отдельного файла или извлечен из другого документа, такого как, например, декларация. По существу, ИО 20 является блоком окружения, задающим входные переменные, которые описывают окружение, в котором функционирует исполняемый файл/ЗР 14 (в дальнейшем "ЗР 14"), и в особенности окружение безопасности, и может быть использован ЗР 14 и операционной системой вычислительного устройства 18, на котором ЗР 14 постоянно находится для управления запуском и выполнением такого ЗР 14, и может также использоваться ПР 10, при принятии решения в отношении того, предоставить ли ресурс 12 такому ЗР 14. Идентификационный код или 'код-ИД' получают или вычисляют на основе профиля ЗР 14 и ИО 20, и обычно он представляет собой его хэшированное значение (хэш-значение), полученное способом, аналогичным тому, который применяется в цифровой подписи.
Существенным является то, что если ЗР 14 захочет изменить свое окружение безопасности, например, посредством считывания в файл, открытия порта отладки и т.п., такой ЗР 14 сам ответственен за выполнение этого. Однако если разработчик, создающий ЗР 14, желает, чтобы конкретное поведение было параметризовано, и параметр имеет отношение к безопасности (например, открытие другого файла на основе входных данных программы, или отладку на основе входных данных программы), тогда параметр может быть помещен в ИО 20, и ЗР 14 может быть написан для обращения только к ИО 20 в отношении параметра. Таким образом, хотя параметр мог потенциально быть изменен внутри ИО 20 злонамеренным объектом, измененный ИО 20 вызовет изменение вычисленного кода-ИД 20, при этом такое изменение может быть интерпретировано заинтересованной стороной, такой как ПР 10, как указание на то, что ЗР 14 не следует доверять.
В одном варианте осуществления настоящего изобретения ИО 20 имеет следующую функциональную форму:
Map<NameString, String> EnvironmentVariables
То есть, в данном случае ИО 20 включает в себя набор пар имя-значение, каждая из которых отображает имя, такое как, например, буквенно-цифровая строка с точками, на соответствующую строку-значение. Заметим, что ИО 20 может быть в форме документа расширяемого языка разметки (XML) или т.п., без отхода от сущности и объема настоящего изобретения, хотя такой документ XML может вносить излишнюю сложность при синтаксическом анализе. Заметим также, что, по меньшей мере, некоторые из переменных могут быть документами XML, выраженными как строки. Таким образом, ИО 20, представленный в виде списка, имеет следующую форму
Name1=StringValue1
Name2=StringValue2
Name3=StringValue3
…
Примеры использования ИО 20 следуют ниже. Заметим, что эти примеры являются пояснительными, и не обязательно всеобобщающими. Полагая для "имен" ("names") пространство имен с точками, пространство имен "_System" может быть зарезервировано для использования операционной системой вычислительного устройства 18, и ИО 20, соответствующий ЗР 14, может включать в себя:
_System.Debuggable="true"
_System.ProgramName="Excel"
_System.SealToLocalAdmin="true"
Таким образом, операционная система вычислительного устройства 18 может обращаться к ИО 20 для того, чтобы определить, что процесс ЗР 14, соответствующего ИО 20, допускает отладку, что исполняемый файл называется "Excel" и что переменная _System.SealToLocalAdmin установлена в значение "true" (истина).
ЗР 14 может использовать свой ИО 20 для принятия решения в отношении поведения на основе входных данных программы, безопасных по своей сущности. Полагая для "names" пространство имен с точками, пространство имен "MyProg" может быть зарезервировано для использования ЗР 14, и ИО 20, соответствующий ЗР 14, может включать в себя:
MyProg.ProgName="MS URT running Trusted Backup Script" ("инструментальное средство регистрации пользователя (URT) от Microsoft исполняет доверенный скрипт резервного копирования")
MyProg.script="main(){foreach(blob in blobs)printf(blob);}"
MyProg.UI="<xml>Some UI XML(некоторый UI в XML)</xml>";
MyProg.AllowedResourceFiles="0×1234, 0×3456, 0×89abb";
MyProg.KeyHolderWhoCanDebugMyProcess="0xfedcb";
Таким образом, ЗР 14 может определять, исходя из своего ИО 20, конкретное имя программы, программный сценарий (скрипт), пользовательский интерфейс (UI) программы в формате XML, количество файлов разрешенных ресурсов и конкретного держателя ключа, который может отладить процесс ЗР 14.
Следует понимать, что фактические пары имя-значение в любом конкретном ИО 20 могут быть любыми подходящими парами имя-значение без отхода от сущности и объема настоящего изобретения. Сверх того, такие пары имя-значение могут включать в себя типы значений, которые меняются от ЗР 14 к ЗР 14, такие как, например, конкретный программный скрипт или список действительных пользователей, а также типы значений, которые являются общими для почти всех ЗР 14, такие как, например, имя программы, и является ли процесс ЗР 14 отлаживаемым. Типично, что пары имя-значение в любом конкретном ИО 20 имеют отношение к безопасности, поскольку ИО 20 является, главным образом, блоком окружения, определяющим входные переменные, которые описывают окружение безопасности, функционирующего ЗР 14, хотя необходимо принять во внимание, что не имеющие отношения к безопасности пары имя-значение могут также быть в ИО 20 без отхода от сущности и объема настоящего изобретения.
Таким образом, и особенно, что касается сущностей, имеющих отношение к безопасности, конкретный ИО 20 может включать в себя пары имя-значение, которые описывают операционную систему, виртуальную машину, реальную машину, и/или т.п., соответствующие вычислительному устройству 18, на котором должен работать ЗР 14, а также то, должен ли ЗР 14 работать в изолированном процессе, который нельзя отслеживать посредством отладчика или т.п., или работать в допускающем отладку процессе, который в действительности можно отслеживать вышеупомянутым образом каждую точку входа, при помощи которой к ЗР 14 можно осуществить доступ, и входные данные, имеющие отношение к безопасности, которые предоставляются для ЗР 14, среди прочих сущностей, имеющих отношение к безопасности. Должно быть принято во внимание, что такие имеющие отношение к безопасности сущности в общем случае являются сущностями, влияющими на то, как ЗР 14 функционирует, где ЗР 14 получает данные и другие входные данные, и может ли ЗР 14 подвергаться внешнему воздействию или отслеживаться внешним образом, среди прочего. Таким образом, и также в общем случае, информация в ИО 20 описывает ЗР 14, описывает операционную систему и вычислительное устройство 18, на котором ЗР 14 должен функционировать и описывает аспекты ЗР 14, имеющие отношение к безопасности. Заметим, что поскольку код-ИД 22 для ЗР 14 основывается частично на его ИО 20 и код-ИД должен быть известен, как будет изложено более детально ниже, ИО 20 может не включать в себя пары имя-значение, которые специфичны для любого конкретного экземпляра ЗР 14 на конкретном вычислительном устройстве 18.
В одном варианте осуществления настоящего изобретения идентификационный код или 'код-ИД' 22, соответствующий конкретному ЗР 14, определяется как хэш-значение ЗР 14, объединенного с его ИО 20. Например, хэш-значение может быть основано на любом из нескольких известных безопасных алгоритмов хэширования (SHA), включая SHA-1 и SHA-256:
Code-ID 22 = SHA (RR 14 | ID 20)
В одном конкретном варианте осуществления код-ИД 22 является объединением двух вышеупомянутых хэш-значений, где одно хэш-значение базируется на SHA-1, а другое - на SHA-256:
Code-ID 22 = SHA-1(RR 14 | ID 20) | SHA-256 (RR 14 | ID 20)
Таким образом, и должно быть принято во внимание, исходя из знания ЗР 14 и его ИО 20, а также знания способа, при помощи которого код-ИД 22 должен вычисляться, ЗР 14 или связанное с ним средство 16 аутентификации может вычислить код-ИД 22, соответствующий такому ЗР 14, для представления ПР 10 способом, соответствующим цифровой подписи. Существенно то, что каждый из одного или более действительных кодов-ИД 22, соответствующих ЗР 14, должен быть хорошо известен, особенно для ПР 10, который должен быть запрошен в отношении предоставления для ЗР 14 ресурса 12. Заметим, что ЗР 14 может иметь более чем один действительный код-ИД 22, особенно если ЗР 14 поступает в многочисленных версиях, допускающих работу на множестве операционных систем, и т.д., каждая из которых неизбежно влечет за собой изменение ЗР 14 и/или его ИО 20.
Вероятно, в таком случае ПР 10 имеет сведения о ЗР 14 и каждом действительном коде-ИД 22 для ЗР 14, и такой ПР 10 предоставляет ресурс 12 для ЗР 14, только если действительный код-ИД 22 для ЗР 14 представлен для ПР 10 от имени такого ЗР 14. В одном варианте осуществления настоящего изобретения, и обращаясь к Фиг.3, ИО 20 и код-ИД 22, соответствующий ЗР 14, применяются следующим способом. Предварительно, экземпляр ЗР 14 создают в процессе операционной системы вычислительного устройства 18 путем такого создания экземпляра, инициируемого пользователем или другим процессом (этап 301). Обычно такое создание экземпляра достигается путем загрузчика 24, функционирующего в операционной системе вычислительного устройства 18, хотя такое создание экземпляра может быть достигнуто путем любого другого подходящего объекта без отхода от сущности и объема настоящего изобретения.
Как часть создания экземпляра ЗР 14 загрузчик 24 получает ЗР 14 из любого места, где такой ЗР 14 может быть расположен, и загружает его (этап 303). Следует понимать, что загрузчик 24 может выполнять такое получение и загрузку ЗР 14 любым подходящим способом без отхода от сущности и объема настоящего изобретения, при этом конкретный способ получения известен или должен быть очевиден для заинтересованной аудитории и поэтому не нуждается в раскрытии здесь в каких-либо деталях.
Так же, как часть создания экземпляра ЗР 14, загрузчик 24 получает ИО 20, соответствующий такому ЗР 14 из любого места, где такой ИО 20 может находиться, а также загружает его в соответствующее местоположение (этап 305). Как было изложено выше, такой ИО 20 может быть встроен в ЗР 14, получен из отдельного файла или извлечен из другого документа, такого как, например, декларация. В любом случае, загрузчик 24 может получить ИО 20 из его местоположения любым подходящим способом, не отходя от сущности и объема настоящего изобретения, в режиме, соответствующем такому местоположению, где конкретный способ получения известен или должен быть очевиден для заинтересованной аудитории и поэтому не нуждается в раскрытии здесь в каких-либо деталях. Местоположение, куда загрузчик загружает ИО 20, может быть любым подходящим местоположением без отхода от сущности и объема настоящего изобретения, таким как, например, таблица, кэш ИО, процесс ЗР 14 и т.д.
Заметим, что ЗР 14 и операционная система вычислительного устройства 18, на котором ЗР 14 работает, могут оба требовать доступа к загруженному ИО 20. Следовательно, загрузив ИО 20, загрузчик 24 обеспечивает по меньшей мере ЗР 14 указателем или другой ссылкой на местоположение ИО 20 (этап 307). Таким образом, ЗР 14 может найти соответствующую ему информацию, относящуюся к безопасности, в таком ИО 20. Более того, операционная система может также найти такую информацию, относящуюся к безопасности, или путем ЗР 14, или, также, посредством приема такого указателя или другой ссылки.
По-видимому, в некоторый момент во время работы ЗР 14 такой ЗР 14 может потребовать ресурс 12 от ПР 10, который, как установлено выше, предоставляет ресурс 12 такому ЗР 14, только если действительный код-ИД 22, соответствующий ЗР 14, предоставлен для ПР 10 от имени такого ЗР 14. Таким образом, после загрузки ЗР 14 и соответствующего ему ИО 20 вычисляют код-ИД 22, соответствующий таким загруженным ЗР 14 и ИО 20 (этап 309). Такой код-ИД 22 может быть вычислен загрузчиком или вышеупомянутым средством 16 аутентификации, которое представляет информацию аутентификации для ПР 10. Может быть принято во внимание, что средство 16 аутентификации может быть на самом деле частью загрузчика 24, или загрузчик 24 может быть на самом деле частью средства 16 аутентификации. Опять же, код-ИД может быть вычислен любым подходящим способом, не отходя от сущности и объема настоящего изобретения, лишь бы вычисленный код-ИД 22 был в форме, которую ожидает увидеть ПР 10.
Таким образом, в некоторый момент во время работы ЗР 14 такому ЗР 14 действительно требуется ресурс 12 от ПР 10 и поэтому он запрашивает средство 16 аутентификации получить такой ресурс от имени ЗР 14 (этап 311). Заметим, что перед тем, как попытаться таким образом получить такой ресурс 12, средство 16 аутентификации может выполнять различные функции аутентификации по отношению к ЗР 14 для того, чтобы удостовериться в том, что ЗР 14 имеет права на ресурс 12 и что ресурс 12 ему должен быть доверен, среди прочего (этап 313). Делая это, средство 16 аутентификации может само обращаться к информации, имеющей отношение к безопасности, в ИО 20, соответствующем ЗР 14, и может также подтверждать, что ЗР 14 не был модифицирован каким-либо способом, включая тот, который сводит на нет его доверие, среди прочего. В общем, средство 16 аутентификации может выполнять любые функции аутентификации по отношению к ЗР 14 без отхода от сущности и объема настоящего изобретения. Такие функции аутентификации известны или должны быть очевидны заинтересованной аудитории и поэтому не нуждаются здесь в подробном рассмотрении.
Предполагая, что средство 16 аутентификации удовлетворено ЗР 14, затем средство 16 аутентификации пересылает запрос на ресурс 12 от ЗР 14 к ПР 10 (этап 315). Такой пересланный запрос может быть дословной копией запроса от ЗР 14 или его модификацией. Таким образом, пересланный запрос может иметь любую подходящую форму, не выходя за рамки сущности и объема настоящего изобретения. Например, такая форма может быть в виде заранее определенной функции квотирования, которая включает в себя вычисленный код-ИД 22 для запрашивающего ЗР 14, ИО 20 для запрашивающего ЗР 14 и определение ресурса 12, запрошенного ЗР 14, среди прочего. Следует понимать, что функция квотирования может также включать в себя цифровую подпись или нечто подобное, основывающуюся на одном или более таких элементах, где подпись можно проверить на основе ключа безопасности, совместно используемого между средством 16 аутентификации и ПР 10.
Далее в ответ на принятую функцию квотирования или другой пересланный запрос со ссылкой на Фиг.4 ПР 10 принимает решение в отношении того, действительно ли удовлетворить запрос на ресурс от ЗР 14. В частности, ПР 10, среди прочего, проверяет пересланный запрос (этап 401), что в случае функции квотирования включает в себя проверку его подписи на основе совместно используемого ключа безопасности. Кроме того, ПР 10 получает код-ИД 22, ИО 20 и определение запрошенного ресурса 12 из пересланного запроса (этап 403), определяет из пересланного запроса идентификационные данные запрашивающего ЗР 14 (этап 405), получает каждый действительный код-ИД 22 для идентифицированного ЗР 14 (этап 407) и удостоверяется в том, что вычисленный код-ИД 22 в пересланном запросе совпадает с одним из действительных кодов-ИД 22 для идентифицированного ЗР 14 (этап 409).
Заметим, что ПР 10 может определять идентификационные данные запрашивающего ЗР 14 из пересланного запроса любым подходящим способом, без отхода от сущности и объема настоящего изобретения. Например, такие идентификационные данные могут быть заданы внутри ИО 20 в пересланном запросе как конкретная пара имя-значение. Конечно, злонамеренные объекты могут изменять такую идентификационную информацию ИО 20 в попытке ненадлежащим образом получить ресурс 12 от ПР 10. Однако так как код-ИД 22, вычисленный средством 16 аутентификации, основывается на части ИО 20, такой вычисленный код-ИД не должен совпадать с каким-либо действительным кодом-ИД, известным ПР 10. Более того, необходимо заметить, что ПР 10 доверяет средству 16 аутентификации в плане его надлежащего функционирования и, следовательно, доверяет в том плане, что оно не разрушит код-ИД 22.
Заметим также, что предполагается и ожидается, что ПР 10 имеет каждый действительный код-ИД 22 для ЗР 14. Опять же, каждый из одного или более действительных кодов-ИД 22, соответствующих ЗР 14, должен быть хорошо известен, особенно ПР 10, который должен быть запрошен на предоставление ресурса 12 для ЗР 14. Заметим наконец, что посредством нахождения действительного кода-ИД 22 в пересланном запросе ПР 10 может заключить, основываясь на действительном коде-ИД 22, который извлекается из ЗР 14 и его ИО 20, что ЗР 14 можно доверять как известному неизмененному ЗР 14, который можно считать заслуживающим доверия, а также что информация, относящаяся к безопасности, на основе которой ЗР 14 функционирует, является известной неизмененной информацией, относящейся к безопасности, которую можно считать заслуживающей доверия. Более того, должно быть принято во внимание, что посредством применения кодов-ИД 22 конкретному ЗР 14, который был скомпрометирован, может быть отказано попросту посредством удаления всех соответствующих его кодов-ИД из числа доступных ПР 10.
В добавление к проверке достоверности вычисленного кода-ИД 22 из запроса ПР 10 может также проверять достоверность пересланного запроса на основе другой содержащейся в нем информации (этап 411). Например, даже если достоверность кода-ИД 22 подтверждена, ПР 10 может быть запрограммирован так, чтобы удовлетворять или отклонять запрос на основе определенной информации в ИО 20, такой как, например, функционирует ли ЗР 14 в изолированном процессе. Также, если пересланный запрос включает в себя идентификационные данные пользователя вычислительного устройства 18 ЗР 14, то ПР 10 может быть запрограммирован так, чтобы удовлетворять или отклонять запрос на основе идентифицированного пользователя. Конечно, ПР 10 может проверять достоверность пересланного запроса на основе любого критерия, не выходя за рамки сущности и объема настоящего изобретения.
Если достоверность пересланного запроса подтверждена, как на этапах 409 и 411, ПР 10 затем определяет, что запрошенный ресурс 12 доступен и/и