Обеспечение защищенного ввода и вывода для доверенного агента в системе с высоконадежной средой исполнения программ
Иллюстрации
Показать всеИзобретение относится к области безопасности компьютеров, в частности к использованию нескольких сред исполнения программ в одном вычислительном устройстве. Техническим результатом является повышение безопасности вводимой и передаваемой в другие системы информации. В способах обеспечения защиты пользовательских данных вывода и ввода в случае, когда первая операционная система-хозяин (хост) применяется совместно со второй высоконадежной операционной системой (связующей системой), первая система предоставляет, по меньшей мере, часть инфраструктуры второй системы. Средство доверенного пользовательского интерфейса (UI) содержит доверенный менеджер ввода и доверенный менеджер вывода. Доверенный менеджер ввода управляет доступом к доверенным данным ввода на основе того, что распределяет дешифрованные данные ввода операционной системе-хозяину при соответствующих условиях или соответствующей процедуре, исполняемой в связующей системе. Доверенный менеджер вывода управляет выводом данных на дисплей и позволяет доверенным агентам связующей системы выводить данные для отображения без обязательного получения подробной информации о зависимости от устройств вывода. 3 н. и 17 з.п. ф-лы, 6 ил.
Реферат
Область техники, к которой относится изобретение
Настоящее изобретение относится, в общем, к области безопасности компьютеров. В частности, изобретение относится к использованию нескольких сред исполнения программ (например, операционных систем) в одном вычислительном устройстве и обеспечивает средства, которые позволяют сохранить целостность данных ввода и вывода для доверенного агента в наиболее надежной среде исполнения программ из нескольких сред исполнения программ.
Предшествующий уровень техники
В современной обработке данных с использованием вычислительной техники многие задачи, которые могут выполняться в компьютере, требуют определенного уровня безопасности. Чтобы обеспечить определенный уровень безопасности, существует несколько возможностей. Одна из возможностей заключается в том, чтобы выполнять все требующие защиты приложения в компьютере, который полностью отделен от любых возможных незащищенных элементов, или использовать монитор (средство мониторинга) виртуальных машин (VMM) для обеспечения полного разделения между двумя средами исполнения программ (например, операционными системами), выполняемыми в одной компьютерной системе. Однако указанное решение может быть практически невыполнимым. С целью снижения стоимости или для удобства, возможно, потребуется, чтобы защищенная среда исполнения программ использовала ресурсы совместно с ненадежно защищенными приложениями, в связи с чем упомянутые приложения и упомянутые ресурсы могут быть уязвимыми к взлому. Кроме того, в случае применения VMM, поскольку VMM требует полной виртуализации машины и всех ее устройств (и в связи с этим требуется, чтобы VMM обеспечивал собственный драйвер устройства для каждого возможного устройства), VMM малопригоден для машины с открытой архитектурой, которая позволяет дополнять машину практически не ограниченными по типу устройствами.
Один из способов обеспечения возможности совместного использования ресурсов двумя средами исполнения программ заключается в создании компьютерной системы, в которой существует одна «главная» операционная система, которая управляет большинством процессов и устройств в машине, и существует также вторая операционная система. Эта вторая операционная система является малой операционной системой ограниченного назначения, которая совместно с главной операционной системой выполняет определенные ограниченные задачи. Один из способов создания «малой» или «ограниченной по назначению» операционной системы заключается в том, чтобы обеспечить малой операционной системе возможность заимствовать определенную инфраструктуру (например, средство планирования, средство управления памятью, драйверы устройств и т.д.) у «главной» операционной системы. Поскольку VMM фактически изолирует одну операционную систему от другой, то такое совместное использование инфраструктуры практически неосуществимо при использовании VMM.
Существует ряд других способов, позволяющих операционным системам существовать бок о бок в одной машине без использования VMM. Один из таких способов заключается в том, чтобы обеспечить действие одной операционной системы в качестве «хозяина» («хост-системы») по отношению к другой операционной системе. (Операционную систему, по отношению к которой «хост-система» выполняет функцию хозяина, иногда называют «гостем» («гостевой системой»)). В данном случае, операционная система-хозяин предоставляет гостевой системе такие ресурсы, как память и процессорное время. Другой из упомянутых способов заключается в использовании «внешнего ядра». Внешнее ядро управляет определенными устройствами (например, процессором и памятью) а также управляет некоторыми видами взаимодействия между операционными системами, хотя внешнее ядро - в отличие от VMM - не визуализирует машину в целом. Даже при использовании внешнего ядра, возможен случай, когда одна операционная система (например, «главная» операционная система) предоставляет значительную часть инфраструктуры другой операционной системе, и в данном случае главную операционную систему, по-прежнему, можно называть «хозяином» или «хост-системой», а ограниченную операционную систему - «гостевой системой». Как модель с операционной системой-хозяином, так и модель с внешним ядром обеспечивают возможность таких практически осуществимых вариантов взаимодействия между операционными системами, которые поддерживают совместное использование инфраструктуры.
В соответствии с вышеизложенным, указанные способы можно использовать для создания в компьютерной системе, по меньшей мере, двух сред исполнения программ. Одной из таких сред может быть «высоконадежная» операционная система, именуемая в настоящем описании «связующей системой». Операционную систему называют высоконадежной потому, что она обеспечивает определенный уровень надежности своего поведения. Например, связующую систему можно использовать для того, чтобы работать с секретной информацией (например, с криптографическими ключами и т.д.), которая не подлежит разглашению, посредством предоставления защищенной памяти, которая гарантированно не допускает утечки информации в окружающую среду из связующей системы, а также посредством допуска только определенных сертифицированных приложений к исполнению под управлением связующей системы и к защищенной памяти.
В компьютерной системе с двумя средами исполнения программ, одна из которых является связующей системой, возможно, потребуется, чтобы связующая система была гостевой операционной системой, а вторая операционная система, не способная обеспечить аналогичный уровень надежности своего поведения, была операционной системой-хозяином. Это позволяет насколько возможно ограничить размер связующей системы. Ограниченная связующая система обеспечивает более высокую степень уверенности в надежности, которую обеспечивает связующая система.
Однако высоконадежный характер связующей системы требует высокой надежности ввода и вывода в процессы, исполняемые в связующей системе, чтобы ни один процесс или другой объект из операционной системы-хозяина не мог считывать или изменять данные, введенные пользователем, или данные, отображаемые или выводимые для пользователя. Тем не менее, предоставление операционной системе-хозяину возможности манипулировать вводом и выводом и передавать информацию в связующую систему для использования в ее процессах могло бы снизить уровень надежности связующей системы. Кроме того, вводимые данные могут исходить из доверенного пользовательского устройства ввода, которое шифрует вводимые данные, что может создавать необходимость дешифровки данных с использованием ключа, хранящегося в связующей системе, который не должен стать известным хост-системе.
Такие функции ввода/вывода (I/O), как визуализация, определение и обработка пользовательских событий в элементах графического пользовательского интерфейса, которые отображаются для пользователя, часто предоставляются ресурсом, общим для всех процессов. Однако предоставление указанных функциональных возможностей в операционной системе-хозяине требует, чтобы подлежащие визуализации данные передавались ей для отображения. Это создает возможность для совершения попыток разрушения высоконадежного характера процесса, передающего данные во внешнюю систему для визуализации, поскольку данные, передаваемые для визуализации, могут считываться или изменяться объектом хост-системы, который не должен иметь доступа к данным. Аналогичная уязвимость связана с уведомлением о том, что произошло пользовательское событие.
В связи с вышеизложенным, существует потребность в системе, которая лишена недостатков известных систем.
Краткая формулировка сущности изобретения
Безопасность защищенной среды исполнения программ в системе, содержащей упомянутую защищенную среду исполнения программ и вторую среду исполнения программ, поддерживается с использованием средства доверенного пользовательского интерфейса (UI). Средство доверенного UI осуществляет арбитраж вводимых пользователем данных в защищенную среду исполнения программ и данных вывода из процессов, исполняемых в защищенной среде исполнения программ, на дисплей или устройство вывода.
В соответствии с одним из вариантов осуществления, одним из компонентов средства доверенного UI является доверенное средство управления (менеджер) вводом. Когда из доверенного устройства ввода поступают зашифрованные входные данные ввода, доверенный менеджер ввода дешифрует эти данные ввода. Затем выполняется определение того, должны ли данные ввода оставаться в защищенной среде исполнения программ или должны передаваться во вторую среду исполнения программ. Зашифрованные данные ввода передаются во вторую среду исполнения программ только после того, как выполняется определение в защищенной среде исполнения программ.
Одним из компонентов средства доверенного UI является доверенный менеджер вывода. Чтобы обеспечить безопасность вывода, доверенный менеджер вывода выполняет функцию пункта контакта для всех объектов, существующих в защищенной среде исполнения программ и связанных с устройством вывода.
Другие признаки настоящего изобретения очевидны из нижеследующего описания.
Перечень чертежей
Более полное понимание вышеприведенной краткой формулировки сущности изобретения, а также нижеследующего подробного описания предпочтительных вариантов осуществления изобретения достигается ссылками на прилагаемые чертежи. В целях иллюстрации изобретения на чертежах представлены типичные конструкции, осуществляющие изобретение, однако настоящее изобретение не ограничивается конкретными описанными способами и средствами. На чертежах:
Фиг.1 - блок-схема иллюстративной вычислительной среды, в которой можно реализовать аспекты настоящего изобретения;
Фиг.2 - блок-схема двух иллюстративных сред исполнения программ, которые поддерживают некоторое взаимодействие и некоторое разделение между собой;
Фиг.3 - блок-схема компьютерной системы с двумя средами исполнения программ и с вводом данных в соответствии с одним из вариантов осуществления настоящего изобретения;
Фиг.4 - схема последовательности операций способа обеспечения защищенного ввода данных из объектов в защищенной среде исполнения программ в соответствии с одним из вариантов осуществления настоящего изобретения;
Фиг.5 - блок-схема компьютерной системы с двумя средами исполнения программ и с выводом данных в соответствии с одним из вариантов осуществления настоящего изобретения; и
Фиг.6 - схема последовательности операций способа обеспечения защищенного вывода данных из объектов в защищенной среде исполнения программ в соответствии с одним из вариантов осуществления настоящего изобретения.
Подробное описание изобретения
Общие сведения
Когда две среды исполнения программ, например операционные системы, совместно исполняются в одной машине, необходимо определить, как операционные системы получают доступ к пользовательским данным ввода и вывода. Кроме того, возможно, потребуется исключить для одной из операционных систем возможность доступа к пользовательским данным ввода или вывода, которые, соответственно, направляются во вторую операционную систему или в объект, исполняемый во второй операционной системе, или исходят из упомянутых системы или объекта. Настоящее изобретение обеспечивает способы, которые позволяют защищать пользователем данные ввода и вывода, направляемые в высоконадежный объект в связующей системе или исходящие из упомянутого объекта, от возможного раскрытия объектами операционной системы-хозяина.
Типичная схема вычислительной среды
Фиг.1 представляет иллюстративную вычислительную среду, в которой можно реализовать аспекты настоящего изобретения. Вычислительная среда 100 представляет собой лишь один пример подходящей вычислительной среды и не должна предполагать никаких ограничений области применения или функций настоящего изобретения. Кроме того, вычислительную среду 100 нельзя трактовать как связанную какой-либо зависимостью или каким-либо требованием, имеющими отношение к какому-либо компоненту или сочетанию компонентов, показанным на схеме иллюстративной операционной среды 100.
Настоящее изобретение способно работать с другими многочисленными средами или конфигурациями вычислительных систем общего или специального назначения. Примеры широко известных вычислительных систем, сред и/или конфигураций, которые могут подходить для использования с изобретением, включают в себя, но не в ограничительном смысле, персональные компьютеры, компьютеры-серверы, карманные или носимые устройства, мультипроцессорные системы, микропроцессорные системы, телевизионные приставки, программируемую бытовую электронику, сетевые персональные компьютеры (ПК), миникомпьютеры, универсальные компьютеры (мейнфреймы), встроенные системы, распределенные вычислительные среды, которые содержат любые вышеперечисленные системы или устройства, и т.п.
Изобретение можно изложить в контексте машиноисполняемых команд, например программных модулей, исполняемых в компьютере. В общем случае программные модули содержат стандартные программы, программы, объекты, компоненты, структуры данных и т.д., которые выполняют конкретные задания или реализуют определенные абстрактные типы данных. Изобретение можно также практически реализовать в распределенных вычислительных средах, в которых задания выполняются удаленными устройствами обработки данных, которые связаны через сеть связи или другую среду передачи данных. В распределенных вычислительных средах программные модули и другие данные могут находиться как на локальных, так и на удаленных компьютерных носителях информации, в том числе в запоминающих устройствах.
Как видно из фиг.1, иллюстративная система для осуществления настоящего изобретения содержит универсальное вычислительное устройство в виде компьютера 110. Компонентами компьютера 110 могут быть, без ограничения перечисленным, блок обработки 120 данных (процессор), системная память 130 и системная шина 121, которая связывает различные компоненты системы, включая системную память, с блоком обработки 120 данных. Блок обработки 120 данных может представлять собой несколько логических блоков обработки данных, например таких, которые поддерживаются в многопоточном процессоре. Системная шина 121 может относиться к любому из нескольких типов шинных структур, включая шину памяти или контроллер памяти, периферийную шину и локальную шину, которые используют любую из множества шинных архитектур. В качестве примера, но не ограничения, такие архитектуры включают в себя шину промышленной стандартной архитектуры (ISA), шину микроканальной архитектуры (MCA), шину расширенной промышленной стандартной архитектуры (EISA), локальную шину Ассоциации по стандартизации в области видеоэлектроники (VESA) и шину межсоединения периферийных компонентов (PCI) (называемую также шиной расширения (Mezzanine)). Системную шину 121 можно также реализовать как двухточечное соединение, коммутирующую структуру и т.п. между взаимодействующими устройствами.
Компьютер 110 обычно содержит различные машиночитаемые носители информации. Машиночитаемые носители информации могут представлять собой любые доступные носители информации, к которым может обращаться компьютер 110, и содержат как энергозависимые, так и энергонезависимые носители информации, как съемные, так и несъемные носители информации. В качестве примера, но не ограничения, машиночитаемые носители информации могут содержать компьютерные носители данных и среды передачи данных. Компьютерные носители данных включают в себя энергозависимые и энергонезависимые, съемные и несъемные носители информации, реализованные любым способом или технологией для хранения такой информации, как машиночитаемые команды, структуры данных, программные модули или другие данные. Компьютерные носители данных включают в себя, но не в ограничительном смысле, оперативное запоминающее устройство (RAM, ОЗУ), постоянное запоминающее устройство (ROM, ПЗУ), электрически стираемое перепрограммируемое постоянное запоминающее устройство (EEPROM), флэш-память или память, использующую другую технологию, постоянное запоминающее устройство на компакт-диске (CDROM), запоминающее устройство на цифровом многофункциональном диске (DVD) или запоминающее устройство на других оптических дисках, запоминающие устройства на магнитных кассетах, магнитной ленте и магнитных дисках или другие магнитные запоминающие устройства, или любой другой носитель информации, который можно использовать для хранения необходимой информации и к которому может обращаться компьютер 110. Среда передачи информации обычно воплощает машиночитаемые команды, структуры данных, программные модули или другие данные в виде модулированного информационного сигнала, например сигнала несущей или другого транспортного механизма, и содержит любые среды доставки информации. Термин «модулированный информационный сигнал» означает сигнал, у которого, по меньшей мере, одна характеристика устанавливается или изменяется таким образом, чтобы кодировать этот сигнал информацией. В качестве примера, но не ограничения, среды передачи информации включают в себя проводные среды, такие как проводная сеть или прямое проводное соединение, и беспроводные среды, такие как акустические, радиочастотные, инфракрасные и другие беспроводные среды. Любые комбинации вышеперечисленных сред и носителей также охватываются понятием «машиночитаемый носитель».
Системная память 130 содержит компьютерные носители данных в виде энергозависимой и/или энергонезависимой памяти, например постоянного запоминающего устройства (ROM) 131 и оперативного запоминающего устройства (RAM) 132. Базовая система ввода-вывода 133 (BIOS), содержащая основные процедуры, которые обеспечивают передачу информации между элементами компьютера 110, например, при пуске, обычно хранится в ROM 131. RAM 132 обычно содержит данные и/или программные модули, к которым может непосредственно обращаться, и/или с которыми на текущий момент работает блок обработки 120 данных. В качестве примера, но не ограничения, на фиг.1 показаны операционная система 134, прикладные программы 135, другие программные модули 136 и данные 137 программ.
Компьютер 110 может также содержать другие съемные и несъемные, энергозависимые и энергонезависимые компьютерные носители данных. Исключительно для примера, на фиг.1 показан накопитель 141 на жестких дисках, который считывает или записывает на несъемный энергонезависимый магнитный носитель, дисковод 151 для магнитного диска, который считывает или записывает на съемный энергонезависимый магнитный диск 152, и дисковод 155 для оптического диска, который считывает или записывает на съемный энергонезависимый оптический диск 156, например на диск CD ROM или на другой оптический носитель. К другим съемным и несъемным, энергозависимым и энергонезависимым средам хранения данных для компьютера, которые можно использовать в составе иллюстративной операционной среды, относятся, но не в ограничительном смысле, кассеты с магнитными лентами, платы флэш-памяти, цифровые многофункциональные диски, цифровые видеоленты, твердотельные RAM, твердотельные ROM и т.п. Накопитель 141 на жестких дисках обычно подсоединен к системной шине 121 через интерфейс несъемного запоминающего устройства, например интерфейс 140, а дисковод 151 для магнитного диска и дисковод 155 для оптического диска обычно подсоединены к системной шине 121 через интерфейс съемного запоминающего устройства, например интерфейс 150.
Рассмотренные выше и показанные на фиг.1 накопители и дисководы и относящиеся к ним компьютерные носители данных обеспечивают хранение машиночитаемых команд, структур данных, программных модулей и других данных для компьютера 110. Например, на фиг.1 показано, что накопитель 141 на жестких дисках хранит операционную систему 144, прикладные программы 145, другие программные модули 146 и данные программ 147. Следует отметить, что указанные компоненты могут быть идентичны операционной системе 134, прикладным программам 135, другим программным модулям 136 и данным программ 137 или отличаться от них. В изображенном случае операционной системе 144, прикладным программам 145, другим программным модулям 146 и данным программы 147 присвоены другие номера, чтобы показать, что они представляют собой, по меньшей мере, другие копии. Пользователь может вводить команды и информацию в компьютер 110 посредством таких устройств ввода, как клавиатура 162 и указательный манипулятор 161, обычно называемый мышью, трекболом или сенсорным планшетом. Другими устройствами ввода (не показаны) могут быть микрофон, джойстик, игровой планшет, спутниковая тарелка, сканер и т.п. Упомянутые и другие устройства ввода часто подсоединены к блоку обработки 120 данных через интерфейс 160 пользовательского ввода, который связан с системной шиной, но могут быть подсоединены другим интерфейсом и с использованием других шинных структур, например параллельного порта, игрового порта или универсальной последовательной шины (USB). Монитор 191 или устройство отображения другого типа также подсоединены к системной шине 121 через интерфейс, например видеоинтерфейс 190. Кроме монитора, компьютеры могут также содержать другие периферийные устройства вывода, например громкоговорители 197 и принтер 196, которые могут быть подсоединены через интерфейс 195 вывода на периферийные устройства.
Компьютер 110 может работать в сетевой среде с использованием логических соединений, по меньшей мере, с одним удаленным компьютером, например с удаленным компьютером 180. Удаленный компьютер 180 может представлять собой персональный компьютер, сервер, маршрутизатор, сетевой персональный компьютер (PC), одноранговое устройство или другой обычный сетевой узел и обычно содержит многие или все элементы, указанные выше применительно к компьютеру 110, хотя на фиг.1 показано только запоминающее устройство 181. Показанные на фиг.1 логические соединения включают в себя локальную сеть (LAN) 171 и глобальную сеть (WAN) 173, но возможно также использование других сетей. Такие сетевые среды широко применяются в офисных и корпоративных компьютерных сетях, внутрикорпоративных сетях и сети Internet.
При использовании в сетевой среде LAN компьютер 110 подсоединен к LAN 171 через сетевой интерфейс или адаптер 170. При использовании в сетевой среде WAN компьютер 110 обычно содержит модем 172 или другое устройство для организации связи через WAN 173, такую как сеть Internet. Модем 172, который может быть внутренним или внешним, может быть подсоединен к системной шине 121 через интерфейс 160 пользовательского ввода или с использованием другого соответствующего средства. В сетевой среде программные модули, упомянутые применительно к компьютеру 110, или их составные части могут храниться в удаленном запоминающем устройстве. В качестве примера, но не ограничения, на фиг.1 показано, что удаленные прикладные программы 185 хранятся в запоминающем устройстве 181. Специалистам в данной области техники очевидно, что показанные сетевые соединения приведены для примера и что можно применить другие средства организации линии связи между компьютерами.
Несколько вычислительных сред в одной вычислительной машине
Из вышеизложенного следует, что из уровня техники известно, что две операционные системы могут совместно исполняться в одном вычислительном устройстве. Одна из проблем, которую можно решить с использованием настоящего изобретение, состоит в том, как добиться определенной степени разделения между этими двумя операционными системами при одновременном обеспечении определенной степени взаимодействия между этими двумя операционными системами.
На фиг.2 представлена система, в которой две операционные системы 134(1) и 134(2) исполняются в одном компьютере 110. Между двумя операционными системами 134(1) и 134(2) существует определенный логический разделитель 202, который допускает некоторую степень взаимосвязи 204 между операционными системами 134(1) и 134(2), но при этом позволяет, по меньшей мере, одной из операционных систем быть защищенной от событий, которые исходят из другой операционной системы. В примере по фиг.2, операционная система 134(1) является операционной системой-хозяином, а операционная система 134(2) является гостевой операционной системой, например «связующей» системой в описанном выше смысле. Как указано ранее, если операционная система 134(2) является связующей системой, то разделитель 202 следует организовать так, чтобы операционная система 134(2) могла взаимодействовать с операционной системой 134(1) для заимствования инфраструктуры операционной системы 134(1), но чтобы при этом у операционной системы 134(2) оставалась возможность защитить себя от действий (злонамеренных или неумышленных), которые выполняются в операционной системе 134(1) и могли бы вынудить операционную систему 134(2) функционировать иначе, чем предусмотрено спецификациями на ее поведение. (Однако следует понимать, что изобретение не ограничивается вариантом, в котором операционная система 134(2) является связующей системой.)
Разделитель 202 между операционными системами 134(1) и 134(2) может быть в отдельных случаях организован при посредстве монитора безопасности. Монитор безопасности является внешним компонентом относительно обеих операционных систем 134(1) и 134(2), который обеспечивает определенные услуги защиты, которыми можно воспользоваться для защиты операционной системы 134(2) от операционной системы 134(1). Например, монитор безопасности может управлять доступом к некоторым аппаратным средствам, может управлять использованием памяти (предоставлять операционной системе 134(2) исключительное право использования некоторых сегментов памяти) или может способствовать передаче данных из операционной системы 134(1) в операционную систему 134(2) с засекречиванием. Следует отметить, что использование монитора безопасности представляет одну из моделей возможных способов защиты операционной системы 134(2) от операционной системы 134(1), хотя использование монитора безопасности необязательно. В соответствии с другим вариантом, операционная система 134(2) может содержать все функции, необходимые для того, чтобы защитить себя от операционной системы 134(1).
Следует отметить, что на фиг.2 операционная система 134(1) представлена как «хост-система», («система-хозяин»), а операционная система 134(2) - как «гостевая система». В общем, подобная характеризация обусловлена тем, что в приведенных примерах операционная система 134(1) обеспечивает определенную инфраструктуру операционной системы, которую используют обе операционные системы 134(1) и 134(2) (например, драйверы устройств, средства планирования и т.д.), а операционная система 134(2) является «гостевой системой», в том смысле, что в предпочтительном варианте она не располагает упомянутой инфраструктурой, а использует инфраструктуру операционной системы 134(1). Однако следует отметить гибкость параметров средств, которые превращают операционную систему в «хост-систему» или «гостевую систему». Кроме того, следует отметить, что традиционные концепции «хост» и «гостевых» операционных систем предполагают, что хост-система нуждается в том, чтобы защитить себя от действий гостевой системы. Однако в примере по фиг.2 предполагается, что именно гостевая операционная система 134(2) является высоконадежной операционной системой, которая нуждается в том, чтобы защитить себя от операционной системы-хозяина 134(1). В последующих примерах операционная система 134(1) будет называться, как правило, «хост-системой» или «хозяином», а операционная система 134(2) - «гостевой системой» или «связующей системой» для проведения различия между ними. Следует понимать, что способы, приведенные в настоящем описании, можно применить к вариантам взаимодействия любых, по меньшей мере, двух операционных систем, исполняемых в одной машине (или даже в одной группе связанных между собой машин).
Защищенные ввод и вывод данных для доверенного агента
Чтобы обеспечить защищенный ввод и вывод данных для связующей системы и процессов, исполняемых в связующей системе, («доверенных агентов» или «агентов связующей системы»), на стороне связующей системы обеспечивается модуль средства доверенного пользовательского интерфейса (UI). Средство доверенного UI обеспечивает общий ресурс для функции защищенного ввода и вывода данных для доверенных агентов.
Чтобы обеспечить высокую надежность пользовательского ввода данных, средство доверенного UI принимает доверенные вводимые пользователем данные. Безопасность ввода данных пользователем можно обеспечить шифрованием вводимых данных. В соответствии c другими вариантами осуществления, безопасность вводимых пользователем данных проверяется другими средствами верификации, например по цифровой подписи, или обеспечивается другими средствами, например с использованием защищенных доверенных аппаратных средств. Средство доверенного UI содержит доверенный менеджер ввода, который в данном случае определяет надлежащего адресата вводимых пользователем данных. В некоторых случаях вводимые пользователем данные должны применяться на стороне хост-системы. В таких случаях вводимые пользователем данные будут помещаться во входной стек на стороне хост-системы для использования операционной системой-хозяином. Однако в некоторых случаях вводимые пользователем данные являются высоконадежными и направляются доверенным менеджером ввода надлежащему адресату, например агенту связующей системы.
Чтобы обеспечить высокую надежность данных вывода, средство доверенного UI принимает доверенные данные, выводимые из агентов и других процессов в доверенный менеджер вывода. Доверенный менеджер вывода принимает упомянутые доверенные данные вывода и манипулирует отображением доверенных данных вывода с использованием способа, зависящего от типа устройства, и на основе способов, которыми компьютерная система 110 обеспечивает доверенные данные вывода для связующей системы. В соответствии с одним из вариантов осуществления, для описания выделенных зон отображения на дисплее применяется зашифрованная память. Указанная зашифрованная память передается на сторону хост-системы. Поскольку память зашифрована, на стороне хост-системы невозможно дешифровать память или создать фиктивное содержимое для выделенных зон отображения. В соответствии с другим вариантом осуществления, применяют защищенную память совместно с встроенным видеоадаптером для этой памяти. Доверенный менеджер вывода дает агентам связующей системы возможность выводить отображаемые данные с использованием способа, зависящего от типа устройства. Хотя описание данных вывода обычно предполагает визуальный вывод данных, специалистам должно быть очевидно, что доверенный менеджер вывода и изложенные в настоящем описании способы можно применить к любому типу доверенных данных вывода (например, аудиоданным, данным для принтера или другим данным вывода) и что настоящее изобретение не ограничено визуальным выводом данных.
Функция защищенного ввода средства доверенного UI
Применительно к вводу, в соответствии с одним из вариантов осуществления, средство доверенного UI управляет доступом к доверенным данным ввода. Если пользователь взаимодействует с программами в компьютерной системе, содержащей высоконадежную операционную систему, то пользователь осуществляет такое взаимодействие при посредстве пользовательского устройства ввода, например мыши 161 или клавиатуры 162 (как показано на фиг.1). В соответствии с одним из вариантов осуществления, некоторые или все пользовательские устройства ввода могут поддерживать шифрование. Указанные устройства шифрования позволяют устройству ввода и связующей системе устанавливать защищенное соединение и, следовательно, могут предотвратить попытку нарушения защиты аппаратных средств. Другие устройства ввода могут быть незашифрованными, однако данные, вводимые с незашифрованных пользовательских устройств ввода, принимаются только для хост-системы, но не для связующей системы или объектов, исполняемых под управлением связующей системы.
Следовательно, чтобы обеспечить защищенный ввод, управление исходным потоком, по меньшей мере, одного потока вводимых пользователем данных осуществляется средством доверенного UI, а не объектом на стороне хост-системы. Фиг.3 представляет блок-схему компьютерной системы с двумя средами исполнения программ и с вводом данных в соответствии с одним из вариантов осуществления настоящего изобретения. Как показано на фиг.3, доверенное устройство ввода 300 передает зашифрованные вводимые пользователем данные в компьютерную систему 110. Зашифрованные данные поступают во входной стек 305 в операционной системе 134(1) на стороне хост-системы. Поскольку данные ввода зашифрованы, операционная система 134(1) на стороне хост-системы не может использовать эти данные. Следовательно, данные ввода защищены от возможной попытки нарушения защиты на стороне хост-системы. Зашифрованные данные передаются в связующую систему 134(2).
На фиг.3, как сторона хост-системы (справа от логического разделителя 202), так и сторона связующей системы (слева от логического разделителя 202) дополнительно разделены на уровень 310 пользователя и уровень 320 ядра. Эти уровни соответствуют различиям между исполнением программ на уровне пользователя и на уровне ядра в операционных системах. Когда связующая система 134(2) принимает зашифрованные введенные пользователем данные, эти данные передаются доверенному поставщику услуг (ТСР) 325 для ввода, в котором дешифруются зашифрованные введенные пользователем данные. В соответствии с некоторыми вариантами осуществления, защищенное устройство ввода 300 должно организовать канал связи, например, с применением совместно используемых ключа и средств верификации для информационного взаимодействия с компьютерной системой 110. Если требуется канал связи с защищенным устройством ввода 300, то TSP 325 устанавливает канал связи с защищенным устройством ввода и управляет данным каналом. В соответствии с другим вариантом осуществления, вводимые пользователем данные могут проверяться, и TSP 325 обеспечивает верификацию вводимых пользователем данных, например, посредством верификации цифровой подписи вводимых пользователем данных.
Затем дешифрованные введенные пользователем данные ввода передаются в средство 330 (TUE) доверенного пользовательского интерфейса (UI), в частности в доверенный менеджер 340 ввода. Доверенный менеджер ввода определяет, должны ли введенные пользователем данные направляться на сторону хост-системы или эти данные предназначены для связующей системы или агента связующей системы, например агента 375 связующей системы. Если данные ввода адресуются для использования на стороне хост-системы, то они перезаписываются во входной стек 305 для использования на стороне хост-системы, как показано стрелкой С 390. Следовательно, дешифрованные введенные пользователем данные попадают на сторону хост-системы только после их анализа на стороне связующей системы.
В соответствии с одним из вариантов осуществления, компьютерная система 110 предоставляет пользователю среду многооконного интерфейса, содержащую элементы графического пользовательского интерфейса, например окна, диалоговые панели и пиктограммы. Элементы графического пользовательского интерфейса могут относиться к процессам на стороне хост-системы или к процессам на стороне связующей системы или «принадлежать» упомянутым процессам. При использовании системы управления окнами на дисплее пользователя могут отображаться окна, т.е. зоны на экране, которые представляют информацию из приложения. Приложение может быть одно- или многооконным. Одно окно среди всех отображаемых окон может быть с «фокусом ввода» (активным). Активное окно может выделяться, например, отличающейся от остальных рамкой вокруг окна.
В традиционных системах управления окнами, если окно является активным, то обычно по