Интегрирование высоконадежных функций в приложение посредством разложения приложения

Иллюстрации

Показать все

Изобретение относится к средствам обработки данных. Техническим результатом является обеспечение универсальной среды обработки данных для выполнения большинства функций. Функции приложения разбивают на две группы в соответствии с тем, содержит или нет заданное действие обработку уязвимых данных, создают отдельные программные объекты (процессоры) для выполнения действий, относящихся к двум упомянутым группам, доверенный процессор обрабатывает защищенные данные и исполняет в высоконадежной среде. Когда другой процессор встречает защищенные данные, эти данные передаются в доверенный процессор. Данные заключают в оболочку таким способом, чтобы можно было направлять данные в доверенный процессор и предотвратить дешифрование данных любым другим объектом, кроме доверенного процессора. Инфраструктура заключает объекты в оболочки, направляет объекты в надлежащий процессор и позволяет заверять целостность объектов в обратной доверенной последовательности до базового компонента, который известен как доверенный компонент. 4 н. и 29 з.п. ф-лы, 8 ил.

Реферат

Область техники, к которой относится изобретение

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

Предшествующий уровень техники

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

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

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

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

Краткая формулировка сущности изобретения

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

Упомянутые две среды обеспечиваются базовым компонентом, который предоставляет инфраструктуру (или «средства связи»), необходимые для информационного взаимодействия двух сред. Например, информационный объект, который следует обрабатывать в высоконадежной среде, может обладать оболочкой, созданной базовым компонентом. Данная оболочка может идентифицировать среду, в которую следует направить информационный объект для обработки, а также может обеспечивать так называемое «клеймо», которое позволяет проверить тот факт, что информационный объект не изменялся с момента его заключения в оболочку базовым компонентом. В соответствии с вышеизложенным, программный объект может передавать информационный объект в базовый компонент, а базовый компонент выполнен с возможностью: (1) определить среду, в которую следует передать информационный объект, и (2) проверить, что неправомерного использования информационного объекта не происходило с момента его создания. Упомянутое последнее из двух действий обеспечивает инфраструктуру, которая позволяет устанавливать достоверность объекта на всех платформах: если объект создается на первой машине (с базовым компонентом), то первый базовый компонент подписывает объект в качестве свидетельства того, что объект является точным объектом, который создан в высоконадежной среде, известной данному базовому компоненту. Когда объект после этого открывается на другой машине, то эта другая машина может проверить подпись и принять решение о том, следует ли доверять подписавшемуся. (Например, некоторые машины и/или базовые компоненты могут лучше обеспечивать надлежащее поведение размещаемых на них сред, чем другие машины; причем каждая машина может решать самостоятельно, доверяет ли она платформе, на которой создан заданный информационный объект).

Ниже приведено описание других признаков настоящего изобретения.

Перечень фигур чертежей

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

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

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

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

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

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

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

фиг.7 - блок-схема иллюстративного информационного объекта для использования в среде, которая поддерживает использование разложенного на компоненты приложения;

фиг.8 - блок-схема последовательности операций процесса, посредством которого можно обрабатывать данные в разложенном на компоненты приложении.

Подробное описание изобретения

Общие сведения

Настоящее изобретение обеспечивает механизм, который позволяет разбивать или «разлагать» приложение на незащищенные компоненты и защищенные компоненты и который позволяет этим компонентам работать совместно, чтобы обеспечить пользователю комплексное восприятие приложения. Например, программу обработки текстов можно разбить на незащищенный компонент, который выполняет большую часть компоновки, редактирования, печати, орфографической проверки, грамматической проверки и других функций, которые относятся к текстовому процессору, и защищенный компонент, который обеспечивает отображение и редактирование информационных объектов, которые нуждаются в определенной степени защиты. Незащищенный компонент может исполняться в обычной открытой среде, например в типичной коммерческой операционной системе. Защищенный компонент может исполняться в высоконадежной среде, которая обеспечивает то, что исполнение программного обеспечения определенных типов с высокой степенью надежности будет соответствовать правильному поведению программного обеспечения. Изобретение обладает различными признаками для реализации описанного сценария. Во-первых, изобретение предусматривает для пользователя комплексное восприятие обоих компонентов, чтобы пользователю представлялось, насколько возможно, что он использует единое приложение. Во-вторых, изобретение предусматривает инфраструктуру (или «средства связи»), которая позволяет приложению манипулировать как требующими, так и не требующими защиты данными, а также позволяет использовать такие данные в разных частях.

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

Что касается инфраструктуры, изобретение предлагает механизмы, которые позволяют направлять информационные объекты, находящиеся в одной среде, в другую среду. Как правило, информационный объект, который является секретным или уязвимым и потому должен обрабатываться защищенной частью, будет шифроваться, чтобы его не могла прочитать незащищенная часть. Следовательно, такой объект обычно будет заключаться в набор оболочек каждым компонентом, который участвовал в создании информационного объекта. В предпочтительном варианте каждая оболочка содержит идентификатор компонента, который присоединил оболочку, а также «клеймо», которое обеспечивает возможность верификации сохранности данных внутри оболочки. В предпочтительном варианте внешнюю оболочку присоединяет корневой доверенный элемент на машине, создавшей оболочку, т.е. базовый компонент, который обеспечивает различные среды в отдельной машине и который проверен определенным известным органом на достоверность его поведения. Эта внешняя оболочка позволяет базовому компоненту выполнять функцию маршрутизатора. Следовательно, когда незащищенная часть встречает объект, она может не прочитать объект, но может идентифицировать объект как объект, который следует передать в другую среду для обработки. Следовательно, незащищенная часть передает объект в базовый компонент, который затем направляет объект в надлежащую среду на основании идентификатора среды, предусмотренного в оболочке.

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

Далее приведено описание систем, способов и механизмов, которые поддерживают использование разложенных или разбитых на компоненты приложений.

Иллюстративная вычислительная система

Фиг.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 показано, как приложение можно разбить на несколько разных выполняемых им функций.

Приложение 135 содержит несколько разных функций 202(1), 202(2), …, 202(n), 202(n+1), 202(n+2), …, 202(n+m). Например, приложение 135 может представлять собой программу обработки текстов, а отдельными функциями могут быть редактирование, просмотр, печать, отслеживание изменений и т.д. Следует отметить, что хотя приложение 135 показано на фиг.2 как обладающее n+m дискретными функциями, существует определенная свобода действий при принятии решения в отношении того, что есть дискретная функция. Например, все операции печати можно считать одной функцией, либо печать можно считать содержащей две или более разных функций (например, функцию печати одной страницы и функцию печати документа в целом). Кроме того, как показано ниже, одну и ту же базовую операцию можно рассматривать как набор из нескольких функций, зависящих от типа обрабатываемых данных. (Например, базовую операцию просмотра документа можно считать одной из двух функций в зависимости от того, нуждаются ли просматриваемые данные в защите или нет). Следовательно, могут быть две отдельных функции просмотра, одна - защищенная в определенном отношении, а другая - нет. По сути, разбиение программы на составляющие функции является вопросом проведения границ, окружающих разные действия, выполняемые программой (и/или различных типов данных, с которыми программа работает), и конкретные требования к тому, как проводить упомянутые границы, обычно отсутствуют.

В соответствии с одним примером, функции можно сгруппировать вместе, чтобы функции 202(1)-202(n) составляли часть первого «сегмента» 206(1), а функции 202(n+1)-202(n+m) составляли часть второго сегмента 206(2). Возможно, функции было бы удобно сгруппировать так, чтобы единообразно работать с функциями, относящимися к одному сегменту. Например, сегмент 206(1) может содержать такие функции приложения 135, которые относятся к обычным незащищенным данным, а сегмент 206(2) может содержать такие функции приложения 135, которые относятся к секретным или защищенным данным (или данным, которые иным образом требуют определенной степени защиты). Следовательно, функции, составляющие сегмент 206(1), могут выполняться в обычной открытой среде (например, среде, которую обеспечивает обычная коммерческая операционная система), а функции, составляющие сегмент 206(2), могут исполняться в высоконадежной среде. (Ниже приведено более подробное описание высоконадежных сред).

На фиг.3 приведен пример возможного использования сегментов для того, чтобы одно приложение 135 могло обрабатывать как защищенные, так и незащищенные данные. В примере по фиг.3 приложение 135 выполняет операции 302, которые нуждаются в высокой степени защиты (например, операции с секретными данными), а также выполняет операции 304, которые нуждаются в защите более низкой степени или совсем не нуждаются в защите (например, операции без использования секретных данных). («Операции» с данными, в данном примере, могут содержать любые типы обработки данных, например выполнение ввода или вывода данных, выполнение вычислений с данными и т.д.). В приведенном примере функцией, не содержащей работы с секретными данными, манипулирует сегмент 206(1) приложения 135, а функцией, содержащей работу с секретными данными (или данными, которые иным образом требуют определенной степени защиты) манипулирует сегмент 206(2). Например, если приложение 135 является программой обработки текстов, то отображение обычного (незащищенного) документа может выполняться сегментом 206(1), а отображение секретного документа может выполняться сегментом 206(2). В соответствии с другим примером, если приложение 135 представляет собой программу продажи акций, сегмент 206(1) может содержать функцию, которая позволяет пользователю просматривать текущую цену акций, а сегмент 206(2) может позволить пользователю покупать и продавать акции после аутентификации пользователя (в данном случае, пользовательские полномочия для аутентификации и другие данные финансовых счетов пользователя относятся к типу секретных данных).

Следует понимать, что на фиг.3 показано, что различные сегменты приложения можно использовать для работы с секретными и несекретными данными, однако содержание фиг.3 не ограничивается каким-либо конкретным механизмом реализации или использования разбитого на сегменты приложения. Описание примерной архитектуры приведено ниже со ссылками на фиг.4 - 8, на которых показано разбиение приложения и использование сегментов разбиения таким способом, который обеспечивает пользователю комплексное восприятие.

Пример разбитого на сегменты приложения

В соответствии с вышеизложенным, различные функции приложения можно разбивать в соответствии с любыми критериями. В примере по фиг.3, функции приложения разбиты соответственно тому, работает ли приложение с защищенными или незащищенными данными. Если приложение разбито, то различные сегменты желательно интегрировать так, чтобы обеспечить пользователю единое восприятие. На фиг.4 приведен пример пользовательского интерфейса для разбитого приложения. (Следует понимать, что термин «защищенные» данные относится к данным, которые нуждаются в определенной степени защиты, хотя изобретение не ограничивается каким-либо конкретным типом защиты. Например, данные могут нуждаться в защите в смысле «секретности», и тогда данные могут шифроваться. В другом случае, данные могут нуждаться в защите в смысле возможности верификации, т.е. возможности определения того, что данные не подвергались изменению с некоторого момента начала отсчета времени, и тогда данные можно подписывать).

Пользовательский интерфейс 400 представляет собой интерфейс для программы обработки текстов. (Следует понимать, что программа обработки текстов является удобным примером приложения, хотя и ни в коем случае не единственным примером). В примере по фиг.4 пользовательский интерфейс 400 отображает различные элементы 402(1)-402(5), которые являются частью документа для обработки текста. Элемент 402(1) представляет собой обычный незащищенный текст. Элемент 402(2) представляет собой незащищенный графический объект 404. Элементы 402(3), 402(4) и 402(5) представляют собой элементы защищенного текста. Незащищенный сегмент приложения выполняет всю обработку, которая не включает в себя манипулирование защищенными данными. В настоящем примере к указанной обработке относится отображение (и, возможно, редактирование, печать, сохранение и т.д.) незащищенных элементов 402(1) и 402(2), а также компоновки всех элементов (даже защищенных элементов). Незащищенный сегмент способен компоновать защищенные элементы, поскольку предполагается, что хотя контент (информационно значимое содержимое) элементов 402(3), 402(4) и 402(5) может быть секретным, само существование таких элементов не секретно. Следовательно, незащищенный сегмент способен отображать элементы 402(3)-402(5) как недешифруемые волнистые линии 405, тем самым обеспечивая пользователю, по меньшей мере, какое-то восприятие контента, который не доступен для обработки незащищенным сегментом.

Если пользователь намерен просмотреть контент элементов 402(3), 402(4) и 402(5), то пользователь может, например, щелкнуть мышью на волнистых линиях 405, которые символически представляют контент данного элемента. Указанное действие может вызвать защищенный сегмент. Тогда контент одного из защищенных элементов может быть передан в защищенный сегмент для работы. В соответствии с одним из примеров, защищенный сегмент может после этого отобразить фактический контент в окне, которое налагается на участок для контента, который размещается незащищенным сегментом, например, если защищенный сегмент отображает контент элемента 402(3), то данный сегмент может выполнять указанное действие размещением изображения упомянутого контента элемента поверх зоны, в которой ранее были показаны волнистые линии 405, которые представляют контент элемента 402(3). Хотя вышеописанный сценарий предусматривает взаимодействие пользователя с двумя различными частями программного обеспечения (т.е. защищенным и незащищенным сегментами), пользователю может представляться, что он взаимодействует с одним приложением, что обеспечивает пользователю комплексное восприятие при взаимодействии с двумя сегментами.

На фиг.4 приведен пример, в котором разбитое на сегменты приложение является программой обработки текстов. К другим примерам относятся:

Электронная таблица, в которую пользователь может вводить формулы, встроенные таблицы и т.д. в незащищенном приложении, но в которой подлежащие обработке реальные данные доступны только защищенному сегменту. Следовательно, незащищенный сегмент отображает некоторые данные метками-заполнителями (например, "xxxx") в каждой ячейке. Вычисление и визуализация данных в ячейках выполняется защищенным сегментом приложения. Если пользователь нажимает кнопку «вычислить», то появляется окно (созданное защищенным сегментом) и отображает в соответствующих строках и столбцах значения ячеек, которые вычислены с использованием базовых данных, доступных защищенному сегменту. В соответствии с данным вариантом осуществления, защищенный сегмент будет обладать вычислительным средством и (простой) стандартной программой визуализации, но не будет нуждаться во встраивании других аспектов пользовательского интерф