Перекрестные ссылки на родственные заявки
Данная заявка заявляет право на предварительные заявки с номерами 60/337617 от 4 декабря 2001 и 60/339143 от 10 декабря 2001 и связана с обычным образом переуступленной совместно поданной заявкой № 10/125170 на патент США, поданной 18 апреля 2002.
Извещение об авторском праве и разрешение
Часть раскрытия в данном патентном документе может содержать материал, который охраняется авторским правом. Обладатель авторского права не имеет возражений против факсимильного воспроизведения кем бы то ни было этого патентного документа или раскрытия патента, как оно представлено в делах и записях Ведомства по патентам и товарным знакам, но во всех иных случаях оставляет за собой все авторские права. К данному документу должно прилагаться следующее указание: Авторское право © 2001, Microsoft Corp.
Область изобретения
Настоящее изобретение относится к способам и системам для криптографической защиты охраняемого содержимого. В частности, настоящее изобретение относится к методам криптографической защиты содержимого, направляемого через графический канал, с обеспечением для этого содержимого как конфиденциальности, так и защиты от подделки.
Существующий уровень техники
Интернет и многие другие источники и приложения предоставляют огромный массив меняющейся или фиксированной информации или иного содержимого для прослушивания, просмотра, обработки, хранения и иной визуализации. Однако в настоящее время не существует практического пути для сбора, записи или визуализации меняющейся или фиксированной информации или иного содержимого защищенным от копирования образом, чтобы пираты не смогли подключиться к потоку в какой-нибудь точке вдоль канала - в процессе ли обработки содержимого или в процессе визуализации содержимого, - для получения в собственность копии или изменения этого содержимого. Данная проблема существовала в прошлом и в связи с другими устройствами визуализации и записи информации, например, - видеомагнитофонами для телевизионного содержимого или ленточными магнитофонами для аудиосигналов, - но по меньшей мере с одним ключевым отличием. Поскольку содержимое цифровой информации может быть записано фактически без потерь сигнала, это создает для обладателей авторских прав «риск» того, что их работы будут свободно (пиратски) распространяться без компенсации. С использованием видеомагнитофонов и ленточных магнитофонов устройство(а) и среда передачи вносят в процесс записи шум или искажение данных. При меняющейся (потоковой) или фиксированной цифровой среде передачи не имеет значения, почему не могут осуществляться фактически свободные от потерь преобразования и повторные передачи, хотя бы в пределах способностей человеческих слуха и зрения, и не имеет значения, почему естественные цифровые данные не могут сохраняться и свободно распределяться. Таким образом, было бы желательно предотвратить неограниченное перераспределение цифровых данных, потому что нет ни малейшей разницы между тем, что могут предоставить владельцы авторского права за плату, и тем, что могут свободно предоставить пираты. Кроме того, в отношении передач, которые желательно иметь конфиденциальными, - таких как транзакции электронной коммерции, - для пользователя, участвующего в диалоге, важно, чтобы никто третий не стал участником этих транзакций. Таким образом, по отношению к содержимому от достоверного источника в настоящее время нет практического способа для «защищенной» обработки или визуализации данных на пользовательском компьютере без предотвращения пиратства или искажения.
В частности, когда содержимое передается по каналу между главной вычислительной системой, одним или более блоками графической обработки (БГО) и визуализирующим устройством, например монитором, для пирата или иной несанкционированной третьей стороны имеется несколько возможностей подключиться к линии или сигналу и либо незаконно получить сигнал, либо исказить его. Кроме того, поскольку диалог пользователей становится все более усложненным благодаря услугам передачи сообщений и организации видеотелеконференций, обеспечение достоверного канала передачи для охраняемого содержимого, откуда бы оно ни исходило, становится все более важным движением вперед.
Далее, ясно, что будущие поколения операционных систем, вычислительных устройств или программных приложений будут использовать более мощные в вычислительном отношении БГО для коммерческих приложений, по сравнению с привлечением более мощных в вычислительном отношении центральных процессоров (ЦП), как в современных персональных компьютерах. Таким образом, гарантирование того, что содержимое посылается на БГО посредством «достоверных программных приложений», станет фундаментальным свойством для будущих вычислительных устройств, но не обеспечивается в должной мере нынешними вычислительными системами.
Можно считать, что эта проблема предоставления защищенного канала передачи для достоверного содержимого состоит из двух частей: (1) необходимо гарантировать, что достоверное содержимое нельзя скопировать или просмотреть в некой уязвимой точке в канале передачи (конфиденциальность), и (2) необходимо гарантировать, что канал передачи предотвращает несанкционированное искажение данных в канале (защищенность). В контексте системной защиты сложность является препятствием, потому что она усложняет обеспечение защищенности системы. Как в случае с аэропортом или иного сценария обеспечения безопасности, чем больше входов и выходов имеет система, тем труднее становится обеспечить ее безопасность. В этом отношении в настоящее время не имеется средств, с помощью которых объем функций БГО и драйвера(ов) дисплея может быть сделан достоверным в терминах как конфиденциальности, так и защищенности. Таким образом, было бы желательно реализовать достоверную графическую среду в связи с вычислительным устройством, которое принимает содержимое от достоверного источника, так что пользователь этого устройства может быть уверен, что это содержимое не может быть скопировано без разрешения и не может быть фальсифицировано или изменено третьей стороной.
Сущность изобретения
Ввиду вышеизложенного, настоящее изобретение обеспечивает способы и системы для криптографической защиты охраняемого содержимого в связи с графической подсистемой вычислительного устройства. Для зашифровки содержимого видеопамяти применяются такие методы, что несанкционированное программное обеспечение не может получить к нему доступа, благодаря чему удовлетворяется цель конфиденциальности. Кроме того, предложен механизм обнаружения фальсификации, обеспечивающий осведомленность о том, когда данные изменены каким-либо образом, благодаря чему удовлетворяется цель защищенности. В различных вариантах осуществления изобретения раскрывает, как шифровать содержимое оверлейных поверхностей и/или командных буферов, и/или раскрывает, как разрешить БГО работать с зашифрованным содержимым при предотвращении его доступности для не доверенных сторон, устройств или программного обеспечения.
Способы по изобретению различным образом включают в себя методы криптографической защиты охраняемого содержимого в связи с достоверными графическими системами, имеющими память видеоданных, блок(и) графической обработки (БГО) и устройство криптографической обработки, соединенное для осуществления связи с БГО, причем способы содержат запрашивание графической системы программным приложением либо устройством на выполнение обработки или визуализации охраняемого содержимого, при этом запрашивание включает в себя передачу сеансового ключа программным приложением либо устройством в графическую систему и передачу охраняемого содержимого в зашифрованную часть(и) памяти видеоданных, дешифрирование содержимого зашифрованной части(ей) памяти видеоданных блоком(ами) графической обработки при осуществлении связи с устройством криптографической обработки, выполнение обработки или визуализации дешифрированного содержимого блоком(ами) графической обработки и выведение этого содержимого из БГО.
Сходные способы по изобретению различным образом включают в себя запрашивание графической системы программным приложением либо устройством на выполнение обработки или визуализации охраняемого содержимого, причем запрашивание включает в себя передачу сеансового ключа программным приложением либо устройством в графическую систему для удостоверения устройством криптографической обработки и передачу охраняемого содержимого в зашифрованную часть(и) памяти видеоданных, дешифрирование содержимого зашифрованной части(ей) памяти видеоданных механизмом дешифрирования блока ввода БГО, при этом механизм дешифрирования осуществляет связь с устройством криптографической обработки, выполнение обработки или визуализации дешифрированного содержимого блоком(ами) графической обработки, зашифровку содержимого механизмом зашифровки/дешифрирования блока вывода БГО и выведение зашифрованного содержимого из БГО.
Другие признаки и варианты осуществления настоящего изобретения описываются ниже.
Краткое описание чертежей
Способы и системы для криптографической защиты охраняемого содержимого в соответствии с настоящим изобретением описываются далее со ссылками на сопровождающие чертежи, на которых представлено следующее:
фиг. 1А - блок-схема, представляющая примерную сетевую среду с разнообразными вычислительными устройствами, в которой может быть реализовано настоящее изобретение;
фиг. 1В - блок-схема, представляющая не ограничивающий пример вычислительного устройства, в котором может быть реализовано настоящее изобретение;
фиг. 2 - блок-схема алгоритма, иллюстрирующая незащищенные части графического канала, которые защищаются в соответствии с изобретением;
фиг. 3А и 3В - блок-схемы, иллюстрирующие примерные аспекты первого уровня защищенности в соответствии с изобретением;
фиг. 4А-4С - блок-схемы, иллюстрирующие примерные аспекты второго уровня защищенности в соответствии с изобретением;
фиг. 5А-5В - приведенное для примера смешивание форматов AYUV/ARGB в соответствии с изобретением;
фиг. 6А-6В - приведено для примера смешивание форматов YUY2 в соответствии с изобретением;
фиг. 7А-7В - приведенное для примера смешивание упакованного плоского формата в соответствии с изобретением;
фиг. 8А и 8В - блок-схемы, иллюстрирующие примерные аспекты третьего уровня защищенности в соответствии с изобретением;
фиг. 9А и 9В - блок-схемы, иллюстрирующие приведенные для примера методы шифрования, которые могут применяться для выходного сигнала блока графической обработки в соответствии с изобретением.
Подробное описание изобретения
Обзор
Данное изобретение обеспечивает системы и способы для расширения операционной системы или иного посредника между содержимым от достоверного источника и графической системой для обработки и/или визуализации этого содержимого, чтобы разрешить работу приложений «достоверной графики», таких как защищенные от фальсификации конфиденциальные диалоги, и воспроизведение первичного содержимого, защищенного от несанкционированного дублирования. Один из аспектов изобретения состоит в том, что оно обеспечивает три «уровня» защищенности: (1) шифрование содержимого оверлейных поверхностей, (2) разрешение блоку графической обработки или иному совместно работающему устройству (сопроцессору) оперировать с зашифрованным содержимым, не делая его доступным для недостоверных сторон, и (3) разрешение зашифровывания командных буферов.
Как упоминалось, в контексте системной защищенности сложность является препятствием, потому что она усложняет обеспечение защищенности системы. В результате изобретение исходит из того, что весь объем функций БГО и драйвера(ов) дисплея должен рассматриваться как ненадежный (уязвимый). Изобретение затем применяет методы, которые увеличивают шансы корректной реализации в терминах конфиденциальности и защищенности путем ограничения объема аппаратных средств, которые могут быть реализованы для удовлетворения критериям защищенности.
Терминология, в соответствующая изобретению, уже обсуждалась выше. Однако в целях ясности некоторые термины будут определены ниже. Термин «конфиденциальный» относится к предотвращению получения доступа к информации достоверного (защищенного) содержимого не доверительной (недостоверной) третьей стороной, такой как устройство или программное обеспечение третьей стороны. Пример такой конфиденциальности включает в себя предотвращение получения доступа не доверительной третьей стороной к воспроизведению зашифрованного первичного содержимого видеоданных где бы то ни было вдоль канала графики. Термин «защищенный» относится к предотвращению получения доступа к информации достоверного содержимого или ее изменения не доверительной третьей стороной, такой как устройство или программное обеспечение третьей стороны, без обнаружения этого факта. Пример такой защищенности включает в себя предотвращение получения доступа к дисплею охраняемого диалога или его изменения не доверительной третьей стороной, который может происходить во время транзакции электронной коммерции.
В этом отношении изобретение рассматривает перекрывающиеся окна, например пользовательский интерфейс поверх видеопотоков первичного содержимого, а также незатемняемые окна, которые могут представляться во время диалогов электронной коммерции.
Примерная сетевая среда
Специалисту может быть понятно, что компьютер или иное клиентское или серверное устройство может применяться как часть компьютерной сети, или в распределенной вычислительной среде. В этом отношении настоящее изобретение применимо для любой компьютерной системы, имеющей любое число блоков памяти или хранения и любое число программных приложений и процессов, реализуемых в любом количестве блоков хранения, или объемов, которые могут использовать режим достоверной графики по изобретению. Настоящее изобретение может применяться к среде с серверными компьютерами и клиентскими компьютерами, размещенными в сетевой среде или в распределенной вычислительной среде, имеющей удаленную или локальную память. Настоящее изобретение может также применяться в автономных вычислительных устройствах, имеющих функцию языка программирования, способности интерпретации и исполнения для генерирования, приема и передачи информации в связи с удаленными или локальными услугами.
Распределенное вычисление облегчает совместное использование компьютерных ресурсов и услуг путем прямого обмена между вычислительными устройствами и системами. Эти ресурсы и услуги включают в себя обмен информацией, кэш-память и дисковую память для файлов. Распределенное вычисление получает преимущества от сетевой связности, позволяя клиентам выравнивать их коллективную производительность для обеспечения преимуществ всему предприятию. В этом отношении различные устройства могут иметь программные приложения, объекты и ресурсы, которые могут взаимодействовать с использованием каналов достоверной графики по настоящему изобретению.
Фиг. 1А представляет условную схему примерной сетевой или распределенной вычислительной среды. Эта распределенная вычислительная среда содержит вычислительные объекты 10а, 10b и т.д. и вычислительные объекты или устройства 110а, 110b, 110с и т.д. Эти объекты могут содержать программы, способы, банки данных, программируемую логику и т.п. Объекты могут содержать части одного и того же или различных устройств, таких как персональные цифровые ассистенты (ПЦА), телевизоры, проигрыватели стандарта МР3, персональные компьютеры и т.п. Каждый объект может осуществлять связь с другим объектом посредством сети 14 связи. Эта сеть сама может содержать другие вычислительные объекты и вычислительные устройства, которые предоставляют услуги системе по фиг. 1А. В соответствии с одним аспектом изобретения каждый объект 10 или 110 может содержать программное приложение, которое может запрашивать достоверные графические ресурсы.
Следует также иметь в виду, что объект, такой как 110с, может выполнять функции главного устройства в другом вычислительном устройстве 10 или 110. Таким образом, хотя отображенная физическая среда может представлять подсоединенные устройства как компьютеры, такая иллюстрация является просто примером, а физическая среда может альтернативно отображаться и описываться содержащей разные цифровые устройства, такие как ПЦА, телевизоры, проигрыватели стандарта МР3 и т.п., программные объекты, такие как интерфейсы, объекты связи и тому подобные.
Имеется множество систем компонентов и сетевых конфигураций, которые поддерживают распределенные вычислительные среды. К примеру, вычислительные системы могут соединяться вместе системами проводных или беспроводных линий, локальными сетями или глобальными распределенными сетями. В настоящее время многие сети связаны с Интернетом, который обеспечивает инфраструктуру для распределенных в глобальном масштабе вычислений и заключает в себя многие различные сети.
В домашних сетевых средах имеется по меньшей мере четыре совершенно разных сетевых канала переноса, каждый из которых может поддерживать единственный протокол, такие как линия электропитания, канал данных (как беспроводный, так и проводной), речевой канал (например, телефон) и развлекательные каналы. Большинство домашних управляющих устройств, таких как выключатели света и домашняя техника, могут использовать линию электропитания для подключения. Услуги данных могут вводиться в дом как широкополосные (например, либо цифровая абонентская линия (ЦАЛ) (DSL), либо как кабельный модем) и быть доступными в домашних условиях с помощью либо беспроводного (например, HomeRF или 802.11b), либо проводного (например, Home PNA, Cat 5, даже линия электропитания) подключения. Речевой трафик может вводиться в дом либо как проводной (например, Cat 3), либо как беспроводный (например, сотовые телефоны) и может распределяться в доме с помощью проводки Cat 3. Развлекательные каналы могут вводиться в дом либо через спутник, либо по кабелю и обычно распределяются в доме с помощью коаксиального кабеля. Стандарты IEEE 1394 и DVI также представляют собой цифровые межсоединения для группы медиаустройств. Все эти сетевые среды и иное, что может представлять собой стандарты протоколов, могут соединяться друг с другом для формирования внутрикорпоративной сети (интрасети), которая может подключаться к внешнему миру посредством Интернета. Короче говоря, существует множество самых разных источников для хранения и передачи данных, а следовательно, вычислительные устройства потребуют способов защиты содержимого во всех частях канала обработки данных.
Понятием Интернет обычно обозначают совокупность сетей и шлюзов, использующих набор протоколов TCP/IP, который общеизвестен в области компьютерных сетей. "TCP/IP" является акронимом от "Transport Control Protocol/Interface Program" («Транспортный управляющий протокол/Интерфейсная программа»). Интернет можно описать как систему географически распределенных удаленных компьютерных сетей, соединенных между собой компьютерами, исполняющими сетевые протоколы, которые позволяют пользователям взаимодействовать и совместно использовать информацию по сетям. Вследствие такого широкого совместного использования информации удаленные сети, такие как Интернет, в общем случае в большой степени включены практически без ограничений в открытую систему, для которой разработчики могут проектировать программные приложения для выполнения специализированных операций или услуг.
Таким образом, сетевая инфраструктура обеспечивает главную часть сетевых топологий, таких как клиент-сервер, одноранговые или гибридные архитектуры. «Клиент» является членом класса или группы, использующим услуги другого класса или группы, к которым он не относится. Таким образом, при вычислении клиент представляет собой процесс, т.е., грубо говоря, набор команд или задач, который требует услугу, предоставляемую другой программой. Клиентский процесс использует требуемую услугу без «знания» каких-либо рабочих подробностей о самой этой другой программе или услуге. В архитектуре клиент/сервер, в частности в сетевой системе, клиентом обычно является компьютер, который имеет доступ к совместно используемым сетевым ресурсам, предоставляемым другим компьютером, например сервером. В примере фиг. 1А компьютеры 110а, 110b и т.д. могут рассматриваться как клиенты, а компьютеры 10а, 10b и т.д. могут рассматриваться как сервер, где сервер 10а, 10b и т.д. обслуживает данные, которые затем копируются в клиентские компьютеры 110а, 110 b и т.д.
Сервер обычно представляет собой удаленную компьютерную систему, доступ к которой возможен по удаленной сети, такой как Интернет. Клиентский процесс может быть активным в первой компьютерной системе, а серверный процесс может быть активным во второй компьютерной системе, осуществляющим связь друг с другом через среду передачи данных, тем самым обеспечивая распределенные функции и позволяя множеству клиентов получать преимущества вследствие функциональных возможностей сервера собирать информацию.
Клиент и сервер осуществляют связь друг с другом, используя функции, предоставляемые протокольным уровнем. К примеру, протокол гипертекстового переноса (ПГТП) (HTTP) является общим протоколом, который используется совместно со Всемирной паутиной (World Wide Web - WWW). Обычно для идентификации серверным или клиентским компьютерами друг друга используется компьютерный сетевой адрес, такой как унифицированный указатель ресурсов (URL) или адрес межсетевого протокола (IP). На сетевой адрес могут ссылаться как на адрес унифицированного указателя ресурсов. К примеру, связь может обеспечиваться по среде передачи данных. В частности, клиент и сервер могут быть связаны друг с другом через соединения TCP/IP для осуществления связи с высокой пропускной способностью.
Таким образом, фиг. 1А иллюстрирует примерную сетевую или распределенную среду с сервером, осуществляющим связь с клиентскими компьютерами по сети/шине, где может использоваться настоящее изобретение. Подробнее, несколько серверов 10а, 10b и т.д. взаимосвязаны через сеть/шину 14 связи, которая может быть локальной сетью (LAN), глобальной сетью (WAN), корпоративной сетью, Интернетом и т.п. с клиентскими или удаленными вычислительными устройствами 110а, 110b, 110с, 110d, 110е и т.д., такими как переносной компьютер, ручной компьютер, «тонкий» клиент (или клиент-терминал), сетевое оборудование или другое устройство, такое как видеомагнитофон, телевизор, печь, светильник, нагреватель и тому подобное в соответствии с настоящим изобретением. Тем самым ожидается, что настоящее изобретение может применяться к любому вычислительному устройству, с использованием которого желательно обрабатывать, хранить или визуализировать защищенное содержимое от достоверного источника.
В сетевой среде, в которой сетью/шиной 14 связи является, к примеру, Интернет, серверы 10 могут быть Web-серверами, с которыми клиенты 110а, 110b, 110c, 110d, 110е и т.д. осуществляют связь посредством любых известных протоколов, таких как НТТР. Серверы 10 могут также служить в качестве клиентов 110, что может быть свойством распределенной вычислительной среды. Связь может быть проводной или беспроводной, как удобнее. Клиентские устройства 110 могут осуществлять или не осуществлять связь по сети/шине 14 связи и могут иметь связанные с ними независимые средства связи. К примеру, в случае телевизора или видеомагнитофона для управления им может использоваться или не использоваться сетевой аспект. Каждый клиентский компьютер 110 и серверный компьютер 10 может быть снабжен различными прикладными программными модулями или объектами 135 и иметь соединения или доступ к различным типам запоминающих элементов или объектов, в которых могут сохраняться файлы или в которые можно загружать или перемещать часть(и) файлов. Таким образом, настоящее изобретение можно использовать в компьютерной сетевой среде, имеющей клиентские компьютеры 110а, 110b и т.д., которые могут обращаться к и взаимодействовать с компьютерной сетью/шиной 14, и серверные компьютеры 10а, 10b и т.д., которые могут взаимодействовать с клиентскими компьютерами 110а, 110b и т.д. и другими устройствами 111 и базами 20 данных.
Примерное вычислительное устройство
Фиг. 1В и последующее обсуждение представляют краткое общее описание подходящей вычислительной среды, в которой может быть реализовано изобретение. Следует, однако, иметь в виду, что для использования в связи с настоящим изобретением пригодны портативные, переносные и другие вычислительные устройства и вычислительные объекты всех видов. Хотя ниже описывается универсальный компьютер, это всего лишь пример, и настоящее изобретение может быть реализовано и в связи с «тонким» клиентом, имеющим возможность совместной работы (по сети/шине) и взаимодействия. Таким образом, настоящее изобретение может быть реализовано под управлением главной программы в среде сетевых услуг, в которую вовлечены очень малые или минимальные клиентские ресурсы, например, в сетевой среде, в которой клиентское устройство служит просто как интерфейс для сети/шины, как объект, помещенный в оборудование. По существу, все, где могут сохраняться данные и откуда эти данные могут извлекаться или визуализироваться, представляет собой желательную или подходящую среду для работы криптографической защиты защищенного содержимого согласно изобретению.
Хотя это и не требуется, изобретение может быть реализовано посредством операционной системы, прикладного программного интерфейса (ППИ) и/или включено в прикладное программное обеспечение, которое взаимодействует с достоверным содержимым. В различных вариантах осуществления изобретение также применимо к аппаратному обеспечению, которое приспособлено для взаимодействия, и к методам шифрования, описанным ниже. Программное обеспечение может описываться в общем контексте исполняемых компьютером команд, таких как программные модули, исполняемые одним или более компьютерами, такими как клиентские рабочие станции, серверы или иные устройства. В общем случае, программные модули включают в себя подпрограммы, программы, объекты, компоненты, структуры данных и иные средства, что выполняющие конкретные задачи или реализующие конкретные абстрактные типы данных. Обычно функции программных модулей в различных вариантах выполнения могут комбинироваться или распределяться по желанию. Кроме того, специалистам понятно, что изобретение может осуществляться с другими конфигурациями компьютерных систем. Другие общеизвестные вычислительные системы, среды и/или конфигурации, которые могут быть пригодны для использования с изобретением, включают в себя - но не ограничиваются ими - персональные компьютеры (ПК) (РС), банковские автоматы, серверные компьютеры, портативные или компактные устройства, многопроцессорные системы, программируемая пользовательская электроника, сетевые ПК, оборудование, светильники, элементы контроля за окружающей средой, миникомпьютеры, мэйнфреймы и тому подобное. Изобретение может быть также осуществлено в распределенных вычислительных средах, где задачи выполняются удаленными устройствами обработки, которые соединены через сеть/шину связи или иную среду передачи данных. В распределенной вычислительной среде программные модули могут размещаться как в локальных, так и в удаленных компьютерных запоминающих средах, в том числе в запоминающих устройствах, а клиентские узлы в свою очередь могут вести себя как серверные узлы.
Фиг. 1В также иллюстрирует пример подходящей среды 100 вычислительной системы, в которой может быть реализовано изобретение, хотя, как пояснено выше, эта среда 100 вычислительной системы является лишь примером подходящей вычислительной среды и не накладывает каких-либо ограничений ни на объем использования, ни на функции изобретения. Не следует интерпретировать эту вычислительную среду 100 как имеющую какую бы то ни было зависимость или требование, связанное с любым из компонентов или их комбинацией, проиллюстрированными в примерной рабочей среде 100.
На фиг. 1В примерная система для осуществления изобретения включает в себя универсальное вычислительное устройство в виде компьютера 110. Компоненты этого компьютера могут включать в себя - но не ограничиваться ими - блок 120 обработки, системную память 130 и системную шину 121, которая связывает различные системные компоненты, включая и системную память, с блоком 120 обработки. Системная шина 121 может быть любой из различных типов шинных структур, в том числе шиной памяти или контроллером памяти, периферийной шиной и локальной шиной, с использованием любой из различных шинных архитектур. В качестве примера - но не ограничения - такие архитектуры включают в себя шину стандарта ISA (архитектуры промышленного стандарта), шину стандарта МСА (микроканальной архитектуры), шину стандарта EISA (расширенной архитектуры промышленного стандарта), локальную шину стандарта VESA (Ассоциации по стандартам в видеоэлектронике) и шину стандарта PCI (взаимных соединений периферийных компонентов) (известную также как шину расширения).
Компьютер 110 обычно включает в себя различные машиночитаемые носители. Машиночитаемыми носителями могут быть любые доступные носители, к которым может обращаться компьютер 110, и включают в себя как энергозависимые, так и энергонезависимые носители, как сменяемые, так и несменяемые носители. В качестве примера - но не ограничения - машиночитаемые носители могут содержать компьютерные запоминающие среды и среды передачи данных. Компьютерные запоминающие среды включают в себя как энергозависимые, так и энергонезависимые, как сменяемые, так и несменяемые носители, осуществленные любым способом или с использованием любой технологии для хранения информации, такой как машиночитаемые команды, структуры данных, программные модули и иные данные. Машиночитаемые носители включают в себя - но не ограничиваются ими - ОЗУ, ПЗУ, ЭСППЗУ, флэш-память или иную технологию памяти, ПЗУ-КД (CDROM), цифровой многоцелевой диск (DVD) или иную память на оптических дисках, магнитные кассеты, магнитную ленту, память на магнитных дисках или иные магнитные запоминающие устройства, или любой другой носитель, который может использоваться для сохранения желательной информации и к которому может обращаться компьютер 110. Среды передачи данных обычно реализуют машиночитаемые команды, структуры данных, программные модули или иные данные в сигнале, модулированном данными, таком как несущее колебание или другой механизм переноса, и включают в себя любые среды доставки информации. Выражение «сигнал модулированный данными» означает сигнал, который имеет одну или более характеристик, установленных или измененных для кодирования информации в сигнале. В качестве примера - но не ограничения - среды передачи данных включают в себя проводные среды, такие как проводная сеть и непосредственное проводное подключение, и беспроводные среды, такие как звуковые, радиочастотные, инфракрасные и другие беспроводные среды. Комбинации любых из вышеназванных средств также включаются в объем машиночитаемых носителей.
Системная память 130 включает в себя компьютерный носитель данных в виде энергозависимой и/или энергонезависимой памяти, такой как постоянное запоминающее устройство (ПЗУ) (ROM) 131 и оперативное запоминающее устройство (ОЗУ) (RAM) 132. Базовая система ввода-вывода (БСВВ) (BIOS) 133, содержащая базовые подпрограммы, которые помогают переносить информацию между элементами внутри компьютера 110, как во время запуска, обычно хранится в ПЗУ 131. ОЗУ 132 обычно содержит данные и/или программные модули, которые сразу же доступны для блока 121 обработки и/или обрабатываются им в данный момент. В качестве примера - но не ограничения - фиг. 1В иллюстрирует операционную систему 134, прикладные программы 135, другие программные модули 136 и программные данные 137.
Компьютер 110 может также включать в себя другие съемные-несъемные энергозависимые-энергонезависимые компьютерные носители данных. Только в качестве примера фиг. 1В иллюстрирует дисковод 141 жесткого диска, который считывает с несъемного энергонезависимого магнитного носителя или записывает на него, дисковод 151 магнитного диска, который считывает со съемного энергонезависимого диска 152 или записывает на него, дисковод 155 оптического диска, который считывает со съемного энергонезависимого оптического диска, такого как CD 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 обработки через пользовательский интерфейс ввода, который соединяется с системной шиной 121, но могут соединяться и с другими интерфейсными и шинными структурами, такими как параллельный порт, игровой порт или универсальная последовательная шина (УПШ) (USB). К системной шине 121 может быть также подключен графический интерфейс 182, такой как Northbridge. Northbridge представляет собой набор микросхем, который осуществляет связь с ЦП или главным блоком 120 обработки и обеспечивает информационный обмен для ускоренного графического порта (УГП). Один или более блоков 184 графической обработки (БГО) могут осуществлять связь с графическим интерфейсом 182. В этом отношении БГО 184 в общем случае включают в себя встроенную память, такую как регистровая память, и БГО 184 осуществляют связь с видеопамятью 186. БГО 184, однако являются не единственным примером сопроцессора, и поэтому множество сопроцессорных устройств могут быть включены в компьютер 110. Монитор 191 или устройство иного типа также подключается к системной шине 121 через интерфейс, такой как видеоинтерфейс 190, который, в свою очередь, может осуществлять связь с видеопамятью 186. В общем случае, именно эта часть вычислительного устройства является уязвимой, и, соответственно, настоящее изобретение обеспечивает защиту и конфиденциальность обрабатываемым или визуализируемым в ней данным. В дополнение к монитору 191 компьютеры могут содержать и другие периферийные выходные устройства, такие как громкоговорители 197 и принтер 196, которые могут подключаться через выходной периферийный интерфейс 195.
Компьютер 110 может работать в сетевой или распределенной среде с помощью подключений к одному или более удаленным компьютерам, таким как удаленный компьютер 180. Этот удаленный компьютер 180 может быть персональным компьютером, сервером, маршрутизатором, сетевым ПК, одноранговым устройством или другим общим сетевым узлом и обычно включает в себя многие или все элементы, описанные выше по отношению к компьютеру 110, хотя на фиг. 1В проиллюстрировано только запоминающее устройство 181. Логические соединения, показанные на фиг. 1В, включают в себя локальную сеть (ЛС) 171 и глобальную сеть (ГС) 173, но могут также включать в себя другие сети/шины. Такие сетевые среды являются обычными в домах, офисах, компьютерных сетях в масштабах предприятий, корпоративных сетях и Интернете.
При использовании в сетевой среде ЛС компьютер 110 подключается к ЛС 171 через сетевой интерфейс или адаптер 170. При использовании в сетевой среде ГС компьютер 110 обычно включает в себя модем 172 или иное средство для установления связи по ГС 173, такой как Интернет. Модем 172, который может быть внутренним или внешним, может подключаться к системной шине 121 через пользовательский входной интерфейс 160 или иной подходящий механизм. В сетевой среде программные модули, показанные в отношении компьютера 110, или их части могут храниться в удаленном запоминающем устройстве. В качестве примера - но не ограничения - фиг. 1В иллюстрирует удаленные прикладные программы 185 как находящиеся в запоминающем устройстве 181. Понятно, что показанные сетевые соединения являются примерными, и можно использовать и другие средства для установления линии связи между компьютерами.
Примерные распределенные вычислительные оболочки или архитектуры
Различные распределенные вычислительные оболочки разработаны или разрабатываются в свете сближения персональных вычислений и Интернета. Индивидуальные и деловые пользователи одинаково снабжены эффективно взаимодействующим и обеспечивающим подключение к всемирной сети интерфейсом для программных приложений и вычислительных устройств, резко расширяя способности компьютеров в отношении поисковых средств и сетей.
Например, оболочка .Net platform MICROSOFT® кампании включает в себя серверы, услуги унифицированных модулей, такие как основанная на сети память данных и загружаемое программное обеспечение устройства. Вообще говоря, оболочка .Net platform обеспечивает: (1) возможность работы всего диапазона вычислительных устройств совместно, и автоматическое обновление и синхронизацию пользовательской информации, на них всех, (2) увеличенные интерактивные возможности для Web-сайтов, обеспечиваемую более широким использованием XML, а не HTML, (3) услуги в реальном времени, которые отличаются приспосабливаемым к заказчику доступом и доставкой продуктов и услуг пользователю из центрального исходного пункта для управления различными программными приложениями, такими как электронная почта, к примеру, или программным обеспечением, таким как Office.Net, (4) централизованную память, что повысит эффективность и легкость доступа к информации, а также синхронизацию информации между пользователями и устройствами, (5) возможность интеграции различных сред передачи данных, таких как электронная почта, факсы и телефоны, (6) для разработчиков возможность создавать многократно используемые модули, тем самым увеличивая производительность и снижая число ошибок программирования, и (7) а также многие другие особенности интеграции между платформами.
Хотя примерные варианты осуществления описываются здесь в связи со способами, реализуемыми программным обеспечением, находящимся в вычислительном устройстве, одна или более частей изобретения могут также быть реализованы посредством операционной системы, интерфейса прикладного программирования или объекта посредника между сопроцессором и неизмененным содержимым, так что услуги достоверного содержимого могут выполняться, поддерживаться или к ним может быть получен доступ посредством всех языков и услуг .NET, а также в других распределенных вычислительных оболочках. Кроме того, понятно, что один или более методов, описанных в соответствии с изобретением, могут повлечь за собой изменения в аппаратном обеспечении, таком как БГО, чтобы поддерживать эти методы.
Криптографически защищаемое охраняемое содержимое
Настоящее изобретение, таким образом, предлагает способы и системы для расширения операционных систем или любой платформы, чтобы обеспечить программные приложения «достоверной графики», такие как защищенные от несанкционированного доступа конфиденциальные диалоги, и чтобы обеспечить воспроизведение содержимого таким способом, который противостоит несанкционированному копированию. Проблема, решаемая настоящим изобретением, иллюстрируется фиг. 2, на которой зашифрованное первичное содержимое 200 показано проходящим к достоверному программному приложению TS или генерируемым им. Содержимое 200 может использовать функции БГО 265 до визуализации (или иного использования) содержимого 200 посредством устройства 295 визуализации, как это свойственно использованию достоверного программного обеспечения TS. Такое содержимое 200 будет проходить от системной или главной памяти 230 в память 260 видеоданных для обработки блоком 265 графической обработки. Пунктирная линия на фиг. 2 иллюстрирует, где имеется проблема защиты. Как указано в разделе, характеризующем существующий уровень техники, никакие из ныне существующих систем должным образом не защищают и не доставляют конфиденциально содержимое через элементы, показанные как окруженные пунктиром. С точки зрения достоверного программного обеспечения TS, первая проблема состоит в том, можно ли доверить содержимое компонентам внутри пунктира перед передачей этого содержимого в БГО. В предположении, что достоверное программное обеспечение TS может удостоверить должным образом компоненты внутри пунктирной линии, вторая проблема с точки зрения достоверного программного обеспечения TS состоит в том, что достоверное программное обеспечение TS должно быть более или менее уверено в том, что когда данные передаются в среду, очерченную пунктирной линией, эти данные не будут изменены. Настоящее изобретение в различных описанных ниже вариантах осуществления направлено на решение проблем обоих этих типов. Разными путями эти способы и системы реализуются: (1) зашифровкой содержимого перекрывающихся поверхностей, (2) разрешением для БГО работать с зашифрованным содержимым, не делая его доступным для недостоверных программных приложений или сторон, и (3) зашифровкой содержимого командных буферов.
Первый аспект проблемы обработки и визуализации достоверной графики, на решение которого направлено данное изобретение, относится к получению криптографического (иногда называемого здесь «крипто») процессора и индексированного управления ключами. Обычным образом переуступленная совместно поданная заявка на патент США, условно обозначенная № АА/ИИИССС (далее «заявка ССС»), озаглавленная «Способы и системы для аутентификации компонентов в графической системе», раскрывают методы аутентификации компонента(ов) в связи с графической системой, как описывается ниже. Следует понимать, однако, что данное изобретение предполагает, что аутентификация произошла, а тем самым любые методы аутентификации могут применяться для обеспечения достоверной графической платформы, как описывается ниже в различных вариантах осуществления изобретения.
Примерная аутентификация
В этом отношении, защищенные графические адаптеры должны быть способны аутентифицировать самих себя как таковых. В частности, достоверное программное обеспечение должно иметь возможность различать защищенные графические адаптеры или обходные устройства, такие как спуф [обман]. Вдобавок, достоверное программное обеспечение должно быть способно обнаруживать криптографические ключи для графических адаптеров и должно иметь возможность проверить, что приемником этих ключей является действительно защищенный графический адаптер. Для этой цели защищенные графические адаптеры в соответствии с изобретением снабжаются криптопроцессорами, которые выполняют криптографические задачи аутентификации и переноса ключей.
По отношению к аппаратному обеспечению в соответствии с изобретением предусматриваются криптопроцессоры, которые индивидуализируются и сертифицируются в процессе производства. Каждый криптопроцессор содержит уникальный частный ключ Кчастн дешифровки. Хотя согласно данному изобретению для контекста предполагаются и известны в области криптографии многие алгоритмы шифрования и дешифрации, алгоритмом, описанным здесь, является RSA, а длина ключа составляет 1024 битов, однако это не является ограничением, и выбор быть сделан согласно общеизвестным компромиссам в зависимости от желательных программного приложения и уровня(ей) защищенности.
В этом отношении криптопроцессор постоянно связан с графическим адаптером либо путем добавления его к существующей микросхеме, либо добавления его в качестве отдельной микросхемы на адаптере. Криптопроцессор реализует криптоалгоритм открытого ключа, как подробнее описывается ниже, и скрывает уникальный секретный ключ. В этом отношении такой криптопроцессор может быстро выполнять дешифрацию открытым ключом при использовании современных полупроводниковых технологий. Однако криптопроцессор может быть также включен в ускоритель открытого ключа и может реализовывать симметричный шифр и некоторую управляющую логику.
В одном примерном неограничивающем варианте осуществления криптопроцессор включает в себя следующие энергозависимые регистры: (1) регистр S на 256 битов для сеансового ключа. Срок службы этого ключа обычно составляет время выполнения достоверного программного обеспечения, и (2) матрицу из множества указательных ключей. Каждый ключ может иметь длину 128 битов, хотя могут быть пригодны и другие выборы. Каждый ключ связан с конкретным окном и используется графическим адаптером для дешифрации своего содержимого. Срок службы каждого ключа управляется командами от достоверного программного обеспечения.
Как упомянуто, криптопроцессор по изобретению постоянно связан с графическим адаптером. Тем самым требуется средство для защищенного взаимодействия с криптопроцессором, чтобы использовать его функции. В том, что касается взаимодействия с криптопроцессором, настоящее изобретение рассматривает по меньшей мере два метода: (а) внешний интерфейс к достоверному программному обеспечению TS и (б) интерфейс к БГО 265. Первый из этих интерфейсов - по меньшей мере, его криптографические аспекты - должны быть стандартизованы. Последний из этих интерфейсов может быть реализован в специализированной форме, но должен придерживаться всех принципов, установленных ниже.
Что касается реализации внешнего интерфейса этот внешний интерфейс использует протокол шифрования секретным ключом (СК) для аутентификации и переноса ключа. По этому протоколу достоверное программное обеспечение зашифровывает сеансовый ключ открытым ключом криптопроцессора. Криптопроцессор принимает результирующий криптографический двоично кодированный массив и дешифрирует его своим секретным ключом, получая тем самым сеансовый ключ. Теперь достоверное программное обеспечение и криптопроцессор совместно используют защиту. Достоверное программное обеспечение может использовать этот сеансовый ключ, чтобы посылать команды на криптопроцессор.
В одном неограничивающем варианте осуществления криптопроцессор воздействует на внешний интерфейс следующими функциями:
Функция УстановкаСеансовогоКлюча() выполняет шаг начальной аутентификации и перенос ключа. Это единственная функция, обращающаяся к функции открытого ключа криптопроцессора. Таким образом, в одном варианте осуществления настоящее изобретение предполагает вызывать эту функцию один раз за загрузку. Следующий примерный псевдокод представляет следующую не ограничивающую реализацию функции УстановкаСеансовогоКлюча():
УстановкаСеансовогоКлюча(криптодвоичныймассив){
ЧКРасшифр(частныйКлюч, криптодвоичныймассив, сеансовыйКлюч);
}
После успешного завершения этой операции регистр сеансовыйКлюч содержит ключ, такой как ключ из 256 битов, из криптографического двоично-кодированного массива. Алгоритм открытого ключа может быть, к примеру, алгоритмом RSA длиной 1024 битов.
Когда симметричный сеансовый ключ К установлен между достоверным программным обеспечением и криптопроцессором, этот ключ может использоваться, чтобы обезопасить всю дальнейшую передачу данных к криптопроцессору и от него. Достоверное программное обеспечение и криптопроцессор могут осуществлять связь посредством простых способов «Получить и Установить», параметры которых криптографически защищены для конфиденциальности и целостности. В частности, блок В параметров каждого вызова может обрабатываться следующим неограничивающим способом:
AES( M | HMAC( M, K1 ), K2 ),
где:
К1 - это первая половина К (биты 0 - 127),
К2 - это вторая половина К (биты 128 - 255),
AES(M,K) представляет собой результат шифрования сообщения М ключом К в стандарте AES в режиме СВС,
НМАС(М,К) представляет собой результат вычисления НМАС через подходящую хеш-функцию на массиве М ключом К,
A | B представляет собой результат конкатенации А и В.
Этот формат можно использовать для ввода параметров и для вывода параметров следующих функций:
Установить ([IN] BOOL needsAck, [IN] BITS128 nonce, [IN] ENUM propertyID, [IN] BYTESEQUENCE propertyParamters, [OUT] BYTESEQUENCE ack)
где:
needsAck является булевым значением, которое позволяет достоверному программному обеспечению указывать, требуется ли квитирование.
nonce является 128-битовым значением, выбранным достоверным программным обеспечением. nonce можно использовать в квитировании, если запрашивалось квитирование.
propertyID идентифицирует свойство, которое устанавливается. Примерный перечень поддерживаемых свойств дан ниже в Таблице 1.
propertyParamters является последовательностью параметров, которая специфична для каждого propertyID.
Наконец, ack представляет собой квитирование операции. Криптопроцессор вырабатывает ack, если и только если устанавливалось needsAck. Ack составлен из nonce, за которым следует сообщение, которое специфично для каждого propertyID.
Таблица 1 - Перечень propertyID для функции Установить
По отношению к propertyID (идентификатор свойства) «указательный ключ» данный способ записывает новый ключ и метку назначения в ключевой регистр, идентифицированный указателем.
По отношению к propertyID «блокировка выхода» данный способ устанавливает флаг блокировки выхода. Когда установлен этот флаг, геометрия экрана (ширина, высота, глубина цвета, частота обновления), а также выход графического адаптера (VGA, DVI) не могут быть изменены. В частности, графический адаптер не будет выполнять команды для изменения этих установок, пока установлен флаг блокировки выхода.
По отношению к propertyID L2KEYMGMT данный способ устанавливает (управление ключом на уровне 2) частоту обновления ключа под вторым уровнем защиты, как описано в соответствии с изобретением, т.е. шифрование входов и выходов, подробнее описанное ниже.
Аналогично, функция Get (Получить) предлагается следующим образом:
Get ([IN] BITS128 nonce, [IN] ENUM propertyID, [IN] BYTESEQUENCE propertyParamters, [OUT] BYTESEQUENCE response)
где:
nonce является 128-битовым значением, выбранным достоверным программным обеспечением для использования в отклике.
propertyID идентифицирует устанавливаемое свойство. Перечень поддерживаемых свойств дан ниже в Таблице 2.
propertyParamters является последовательностью параметров, которая специфична для каждого propertyID.
Response содержит результаты операции. Response состоит из nonce, за которым следует сообщение, которое специфично для каждого propertyID.
Таблица 2 - Перечень propertyID для функции Get Получить
По отношению к Выходным портам данный способ выдает в ответ установки выходов графического адаптера, например VGA, DVI и т.п.
По отношению к Коду аутентификации данный способ выдает в ответ хеш-функцию содержимого окна согласно первому уровню защиты, описанному в соответствии с изобретением, например шифрование оверлеев.
По отношению к версии DX-SEC данный способ выдает в ответ версию DX-SEC, поддерживаемую графическим адаптером.
По отношению к Подсчету поверхностей защиты данный способ выдает в ответ число поверхностей защиты, поддерживаемых графическим адаптером.
По отношению к Подсчету перекрывающихся поверхностей данный способ выдает в ответ число перекрывающихся поверхностей, поддерживаемых графическим адаптером.
По отношению к Первичному типу данный способ выдает в ответ 1 и обеспечивает гибкость на будущее.
По отношению к Геометрии данный способ выдает в ответ ширину, высоту, частоту обновления и глубину цвета первичной поверхности.
Функция Set (Установить) может дополнительно включать в себя способ, который устанавливает местоположение или размер защищенного перекрытия областей либо местоположение и размер части основной (первичной) поверхности, которая должна дешифрироваться.
Таким образом, вышеуказанные функции SetSessionKey (УстановитьСеансовыйКлюч), Get (Получить) и Set (Установить) относятся к не ограничивающим вариантам выполнения внешнего интерфейса. Выражение «внутренний интерфейс» относится к интерфейсу между криптопроцессором и остальной частью графического адаптера. Подробности этого вида интерфейса согласно изобретению вплоть до реализации каждого отдельного графического адаптера должны подчиняться следующим ограничениям: (1) криптопроцессор должен быть постоянно связан с графическим адаптером и (2) соединение между криптопроцессором и остальной частью графического адаптера не должно раскрываться.
В этом отношении удаление криптопроцессора из графического адаптера не должно быть тривиальным. Если криптопроцессор выполняется как отдельная микросхема, это главным образом ограничение на механический интерфейс, который обеспечит прикрепление криптопроцессора к графическому адаптеру. В типовом случае криптопроцессор должен припаиваться на графический адаптер. Альтернативно, криптопроцессор может находиться в той же самой микросхеме, что и главный ЦП. Использование стандартизованных механических интерфейсов, которые позволяют удалять криптопроцессор, например считыватели интеллектуальных карточек, гнездовые патроны и тому подобное, неприемлемы.
Кроме того, физическое соединение между криптопроцессором и остальной частью графического адаптера не должно быть доступно и не должно раскрываться через стандартные интерфейсы. К примеру, соединитель USB на этой шине неприемлем в соответствии с изобретением.
По отношению к правилам для управления ключами каждый указательный ключ может использоваться только в соответствии с его связанным параметром назначения. В одном варианте осуществления значения параметра назначения означают следующее:
L1STREAM: Этот ключ может использоваться только с поточным шифром DX-SEC, описанным ниже в связи с первым уровнем защиты, предусмотренным изобретением, например шифрование оверлеев.
L2BLOCK: Этот ключ может использоваться только с блоковым шифром в режиме ЕСВ второго уровня защиты, предусмотренного изобретением, например шифрование входов и выходов, описанное ниже. Блоковый шифр в режиме ЕСВ используется для дешифрирования текстурных блоков, которые записаны достоверным программным обеспечением.
В этом отношении не должно поддерживаться никаких копий ключей, когда указатель заполняется новым значением.
Первый уровень защиты - зашифрованные оверлеи
Поскольку видеопамять может отображаться и считываться недостоверным программным обеспечением, исполняемым в ЦП, видеопамять не может содержать информацию в виде открытого текста. Видеопамять, подчиняющаяся этому требованию, включает в себя видеопамять, используемую для обновления дисплея. Исходная реализация системы, которая удовлетворяет этому критерию в соответствии с изобретением, шифрует содержимое оверлейной поверхности. Оверлей затем будет дешифрироваться в процессе работы аппаратурой ЦАП или непосредственно перед достижением аппаратуры ЦАП, когда изображение посылается на дисплей.
Фиг. 3А иллюстрирует примерное осуществление такого метода. Зашифрованное первичное содержимое 200, где бы оно ни бралось или генерировалось, присущее достоверному программному приложению 210, принимается этим достоверным программным приложением 210. Следует обмен аутентификациями с криптопроцессором 220, такой как процедура(ы) обмена аутентификациями, описанные выше в примерных вариантах осуществления, или другим методом для надежной доставки ключей, либо криптографическим, либо по пути, защищенному иными средствами. Содержимое 200 проходит из системной памяти 230 к зашифрованной оверлейной поверхности 240, которая перекрывает первичную поверхность 270 видеопамяти 260. В сочетании с криптопроцессором 220 секция 250 дешифрирования в ЦП дешифрирует уровень шифрования, обеспеченный зашифрованным перекрытием (оверлеем) 240, и пропускает содержимое на секцию 280 выбора пикселов для вывода на цифровой видеоинтерфейс (ЦВИ) / цифроаналоговый преобразователь (ЦАП) 290 для вывода на визуализирующее устройство, такое как монитор. Однако система, показанная на фиг. 3А, не отвечает всем описанным выше критериям, поскольку имеется лишь один оверлей. Чтобы соответствовать минимальному пределу функциональности, необходимому для достоверной среды, такой как достоверные окна, изобретение допускает два оверлея в альтернативном варианте осуществления. Первый «конфиденциальный» оверлей представляет собой, в основном, оверлей, который существует в платформах сегодня, в первую очередь для воспроизведения видео, расширенный так, что его содержимое можно шифровать. Второй оверлей специально разработан для обеспечения чувствительного пользовательского интерфейса, такого как диалоги электронной коммерции. Этот «защищенный оверлей» находится всегда наверху и не закрывается, т.е. не имеет цветового кодирования и имеет предпочтение перед первым оверлеем. Второй оверлей может подвергаться некоторым ограничениям для минимизации стоимости. К примеру, второй оверлей может быть получен так, что данные находятся в том же пиксельном формате, что и первичные поверхности, и не способен растягиваться или заносится во множество буферов. Вдобавок, содержимое защищенного оверлея может проверяться аппаратным обеспечением. Таблица 3 обобщает примерные различия между конфиденциальным слоем и защищенным слоем.
Таблица 3.
Сопоставление конфиденциального и защищенного оверлеев
Фиг. 3В показывает систему, которая включает в себя как конфиденциальные слои, например слои 310а, 310b и 310с цепочки 310, отражающей конфиденциальные оверлеи, так и защищенные оверлеи 320. Когда это возможно, потоковые шифры используются для шифрования охраняемых поверхностей, потому что они быстрее и проще для осуществления, чем блоковые шифры (дополнительная информация приведена в Приложении А). Потоковые шифры шифруют данные по принципу «позиция байта в потоке». Тем самым первый уровень защиты по изобретению инициализирует потоковый шифр ключом шифрования пикселов в левом верхнем углу поверхности. Потоковый шифр продвигается для каждого пиксела, содержащегося в оверлейной поверхности, независимо от того, будет ли этот пиксел отображаться. Предложенная система содержит два компонента 300а и 300b дешифрирования потокового шифра, один для конфиденциального оверлея и один для защищенного оверлея соответственно. Когда дешифрированные пиксельные значения доступны, аппаратное обеспечение 280 выбирает пиксельные значения защищенного оверлея 320, конфиденциального оверлея 310 (если первичная поверхность 270 одинакова с цветовым кодом и/или если разрешается цветовое кодирование) или первичной поверхности 270 и посылает это пиксельное значение на дисплейную аппаратуру через ЦВИ/ЦАП 290.
Отметим, что противник может получить доступ к оверлеям любым числом средств и при этом либо сделать отображенное изображение невидимым, либо заменить защищенное содержимое шумовым содержимым, поскольку данные, записанные противником, также будут дешифрироваться. Хотя изобретение не защищает непосредственно от таких атак, все же изобретение обеспечивает проверку целостности, чтобы гарантировать, что ожидаемое содержимое было представлено конечному пользователю. Таким образом, если выходной результат в чем-либо отличается от входного, пользователь достоверного программного обеспечения 210 может быть предупрежден о том, что имела место фальсификация содержимого.
По отношению к программному интерфейсу с оверлеями, помимо обычной оверлейной информации, такой как рамка, ограничивающая источник или место назначения, целевой цветовой код и т.п., конфиденциальный оверлей 310 поддерживает то, что определен ключевой указатель шифрования, а защищенный оверлей 320 дополнительно поддерживает то, что определена ячейка памяти, куда должен записываться циклический избыточный код (ЦИК) (CRC) дешифрируемого оверлейного содержимого.
Интерфейс конфиденциального оверлея аналогичен существующим оверлеям за исключением того, что зеркальный способ определяет ключевой указатель шифрования для содержимого оверлейного обратного буфера 310а, т.е. буфера, в который зеркально отражаются данные.
Интерфейс защищенного оверлея проще и создает резерв для ЦИК поверхности, подлежащей направлению в ячейку памяти после того, как она отображена в первый раз. Стандартизованный аппаратный интерфейс управляет местоположением оверлея и делает ЦИК доступным для заинтересованного программного обеспечения на основе опроса. Например, один регистр может указывать, доступен ли ЦИК, а другой может разрешать считывать ЦИК. К примеру, нижеследующий примерный псевдокод может использоваться в связи с интерфейсом защищенного оверлея:
HRESULT UpdateOverlay( LPPOINT ppntUL );
где:
ppntUL определяет верхний левый угол защищенного оверлея.
В этом отношении программное обеспечение 210 вычисляет значение ЦИК, которое ожидается, если оно относится к целостности.
Второй уровень защиты - зашифрованные входы и выходы
В соответствии с изобретением, чтобы расширить БГО 265 для обработки зашифрованного содержимого в качестве входа (входных данных) и выдачи зашифрованного содержимого в качестве выхода выходных данных, аппаратура шифрования и дешифрования добавляется к блоку отображения текстуры (на входной стороне) и блок смешивания по альфа-каналу (на выходной стороне), и разработчики аппаратных средств взаимодействуют, чтобы следовать некоторым правилам при реализации этих функций. Поскольку потоковые шифры не обеспечивают случайного доступа к зашифрованным данным, система использует блоковые шифры, шифрующие данные, например 128 битов за раз. Блок отображения текстуры дешифрирует по заполнению строки кэш-памяти, а блок смешивания по альфа-каналу дешифрирует, когда считывает строку кэш-памяти из цветового буфера и шифрует перед записью. Ключи шифрования, используемые в этих операциях, могут быть различны.
Вычислительные задачи иные, нежели трехмерная визуализация, такие как видеодекодирование, представляют собой непосредственные расширения только что описанной парадигмы. Шифруемым входом вместо текстур служат видеомакроблоки; а шифруемым выходом вместо цветового буфера служит декодируемый выходной кадр. Если содержимое подлежит защите, когда оно доставляется по сети в потоке команд к БГО 265, то метод, которым командный буфер также может быть зашифрован, описывается ниже.
Фиг. 4А показывает вышеописанную систему, выполняющую операцию предварительной обработки, принимая зашифрованную поверхность 420 в качестве входа и выдавая зашифрованную поверхность в качестве выхода, т.е. методы предварительной обработки зашифрованной текстуры и цветового буфера, через компонент 440 шифрования и дешифрирования. Изобретение далее обеспечивает зашифрованную текстуру 400b, а текстура 400b может быть обычной текстурой видеопамяти 260. Зашифрованная текстура 400а выдается на компонент 450 дешифрирования в БГО 265, который работает вместе с криптопроцессором 220, чтобы дешифрировать эту текстуру и применить компонентом 430а графические алгоритмы, такие как затенение и т.п., к дешифрированным данным из компонента 440.
В предвидении развертывания сложного отражающего страницы настольного ПК система, описанная со ссылками на фиг. 4А, может защищать весь настольный ПК при условии, что аппаратура ЦАП может дешифрировать первичную поверхность 270, а также оверлейные поверхности 310 и 320, описанные выше. Отметим, что в таком случае аппаратура ЦАП дешифрирует с помощью блокового шифра, а не потокового шифра. Такая система допускает использование произвольного числа конфиденциальных поверхностей в работе настольного ПК с произвольным упорядочиванием по координате Z, плавным сочленением или даже с применением к ним трехмерных или иных эффектов, без ухудшения защиты. Защищенные оверлейные поверхности 320, которые должны быть всегда наверху и содержимое которых должно проверяться, находятся в отдельных поверхностях. Конфиденциальный оверлей 310, описанный выше, сохраняется до тех пор, пока не сможет быть эмулирован в программном обеспечении настольным ПК или платформой защищенного отражения страниц.
В одном варианте осуществления в дополнение к обеспечению возможности дешифрировать первичную поверхность 270 система требует, чтобы БГО 265 также обеспечивал шифрование открытого текста из обычных приложений настольного ПК, такого как достоверные текстовые процессоры, поэтому они тоже могут использоваться в настольном ПК. Фиг. 4В иллюстрирует такой сценарий, в котором шифруется цепочка 510, отражающая первичные поверхности, в том числе переднюю 510b и заднюю 510а. Таким образом, настольным наборщиком 430 могут выполняться операции над первичными поверхностями, защищенными компонентом 440а шифрования-дешифрирования соответственно для выдачи из него или введения в него. Затем вместе с криптопроцессором 220 компонент 500 дешифрирования дешифрирует переднюю поверхность 510b для вывода к ЦВИ/ЦАП 290. Это подвергает систему некоторым типам атак, которые подробно описываются ниже в связи с обеспечением защиты, где раскрыты некоторые стратегии для борьбы против этих атак.
Альтернатива варианту по фиг. 4В показана на фиг. 4С, где осуществляется копирование в цепочку 310, отражающую конфиденциальные оверлеи. Так, в качестве альтернативы к шифрованию первичной поверхности 270 в соответствии с изобретением аппаратное обеспечение может обеспечить возможность шифрования потоковым шифром для потребления конфиденциальной оверлейной аппаратурой 300а, которая может дешифрировать данные потокового шифра вместе с криптопроцессором 220. Этот механизм представления может быть менее дорогим, чем шифрование первичной поверхности блоковым шифром, но может оказаться в меньшей степени масштабируемым или гибким, как компромисс разработки. Поскольку конфиденциальный оверлей 310 использует потоковый шифр для шифрования, обоснованной операцией для поддержки в этом контексте является «копирующая» операция, в которой вход дешифрируется компонентом 440b дешифрирования с помощью блокового шифра входной поверхности 510а и повторно шифруется компонентом 440b с помощью оверлейного потокового шифра.
Эти варианты выполнения и их различные комбинации полезны, например, когда достаточно одного зашифрованного входа за раз при условии, что любое число открытых текстовых входов может комбинироваться с зашифрованным входом для генерирования зашифрованного выхода.
По отношению к долговременной защите имеется ряд мер, которые можно реализовать в соответствии с изобретением. Прежде всего, вышеуказанный второй уровень защиты опирается на ту идею, что открытый текст нельзя раскрыть из БГО 265, когда он дешифрирован. К примеру, не существует никаких отладочных регистров или иных средств, которые позволяют считывать открытый текст из микросхемы центральным процессором (ЦП) главного компьютера. В дополнение к тщательной разработке аппаратуры, чтобы избежать таких утечек, набор команд БГО 265 проектируется так, чтобы было невозможно разрешить дешифрирование входа без разрешения шифровать и выход. Кроме того, аппаратное обеспечение предотвращает утечки данных открытого текста инородным драйвером, посторонним кодом или случайные.
Вдобавок, аппаратное обеспечение не может допускать утечки ключей. Когда ключи доставляются в БГО 265 через криптографический протокол, описанный согласно аутентификационному обмену, они доступны только для компонентов шифрования и дешифрирования.
Как обсуждалось выше, если БГО 265 способен зашифровывать открытый текст для отображения в первичной поверхности 270, это считается уязвимым местом в системе, т.к. это средство шифрования представляет собой единственный описанный механизм, в котором противник мог бы иметь открытый текст и соответствующий шифротекст доступными одновременно. При преобразовании первичной поверхности так, чтобы она была видна центральному процессору, и создании окна, которое должно зашифровываться, противник может сконструировать поднабор блоков зашифрованного текста, который соответствует известным блокам открытого текста. Эти так называемые «словарные атаки» работают лучше, когда число «интересующих» блоков невелико. К примеру, для отображения черно-белых диалоговых полей в режиме отображения 32bpp, поскольку имеется 4 пиксела на блок, лишь 16 блоков нужны для отображения такого диалога. Одним возможным путем для противника, который откроет 16 шифротекстовых блоков, было бы сфальсифицировать диалог для конечного пользователя за счет создания содержимого, которое имеет смысл даже после дешифрирования в БГО 265. По этой причине защищенное наложение (оверлей) лучше всего подходит для защищенных от несанкционированного доступа диалогов, потому что он дает возможность программным приложениям обнаруживать, когда конечный пользователь не видит то, что ожидает.
Есть две хорошие стратегии, чтобы свести на нет усилия противника, который желает создать словари. Прежде всего, поскольку словари хороши только для данного ключа, смена ключа и повторное шифрование содержимого заставляют противника начинать с нового словаря. Далее, для шифрования первичной поверхности не нужно делать ключ доступным для программного обеспечения, он может прокручиваться в аппаратуре, а программному обеспечению нужно лишь уведомление, что ключ изменен. Поскольку предыдущий ключ все еще доступен, программное обеспечение может использовать этот предыдущий ключ для дешифрирования и повторного шифрования частей первичной поверхности, которые не изменялись. Следовательно, криптопроцессор 220 периодически прокручивает ключ шифрования для первичной поверхности 270 так, что предыдущий ключ все еще доступен, т.е. осуществляет двойную буферизацию ключевых указателей шифрования, и так, что извещает программное обеспечение, что ключ прокручен.
Другая стратегия включает в себя кодирование местоположения в изображении перед шифрованием. Например, пиксельное местоположение (х, у) в изображении (или некоторое производное значение, такое как сдвиг изображения) может преобразовываться перед его шифрованием операцией ИСКЛЮЧАЮЩЕЕ ИЛИ (XOR) в пиксельные данные; эта операция затем может отменяться после дешифрирования. В результате блоки пикселов в различных областях поверхности зашифровываются различным образом, и преобразование открытого текста в зашифрованный текст имеет смысл только для данного местоположения в поверхности, которое недоступно для противника.
Настоящее изобретение также обеспечивает заранее определенные смешанные форматы. Поскольку текстуры и поверхности за пределами экрана требуют случайного доступа, они должны кодироваться блоковыми шифрами. Имеется хорошая синергия между обычным размером блоков для блокового шифра и обычным размером строки кэш-памяти для современных трехмерных ускорителей, например, если строка кэш-памяти и размер блока оба имеют 128 битов, тогда эффективное шифрование и дешифрирование могут быть реализованы в аппаратном обеспечении. Даже если имеются небольшие различия (например, блоковый размер 128 битов, а размер строки кэш-памяти 256 битов), аппаратная реализация все еще должна быть эффективной.
Одна проблема с зашифрованными текстурными данными состоит в том, что схема блокового шифрования требует, чтобы смежные блоки байтов были доступны до того, как они могут зашифровываться или дешифрироваться; а заполнение строки кэш-памяти требует, чтобы пиксельные данные «смешивались», т.е. чтобы перевод из положения (X,Y) в изображении к адресу формировался таким образом, что заполнение строки кэш-памяти вырабатывало двумерную область пикселов. Ныне поставщики аппаратного обеспечения предлагают зрительно линейные форматы поверхностей при смешивании данных изображения без знания программного приложения. Однако, поскольку достоверное программное обеспечение будет выдавать зашифрованные текстурные данные, это программное обеспечение должно иметь априорное знание схемы смешивания, чтобы оно могло шифровать смежные блоки данных и сохранять двумерное местоположение. В ответ на это изобретение определяет словарь форматов смешанных изображений, в том числе YUV 4:4:4б 4:2:2 и 4:2:0, а также форматы RGB для использования программным приложением. Качество этих форматов может быть столь же высоким, как если бы изображения смешивались в формат, специфичный для аппаратуры, но шифрование достигается за счет некоторого ухудшения качества, т.е. защищенность в обмен на скорость.
Что касается AYUV/ARGB (32bpp, упаковано), то этот формат поверхности 32bpp содержит альфа-канал в дополнение к 8-битовым цветовым каналам для отсчетов яркости (Y) и цветности (U и V). Альтернативно, он может содержать стандартный формат ARGB 32bpp, поскольку оба формата имеют 32bpp и упакованы. Нижеследующее обсуждение предполагает формат AYUV. Линейная схема та же, что и на фиг. 5А.
Сдвиг пиксела (X,Y) в изображения таков:
Offset=Y*Pitch+X*4
В предположении 128-битового размера блоков шифрования и размера строки кэш-памяти 4 пиксела могут попадать в один блок. Перемежение младших битов Х и Y перед генерированием адреса приведет к улучшенной двумерной локализации в заполнении строки кэш-памяти. Эти блоки компонуются линейно согласно формату.
Слой результирующего изображения иллюстрируется фиг. 5В. Каждый пронумерованный прямоугольник представляет собой пиксел, а жирные прямоугольники являются зашифрованными блоками. Примерный псевдокод для функции смешивания по изобретению для этого формата, который преобразует местоположение (х,у) в изображении в сдвиг, имеет следующий вид:
DWORD
SwizzleAYUV( DWORD x, DWORD y, DWORD Pitch )
{
// pitch - это число байтов на строку сканирования макроблоков
DWORD BlockOffset = (y≫1)*Pitch+(x≫1)*(128/8);
DWORD IntraBlockOffset = ((y&2)≪2)|((x&2)≪1)|(
(y&1)≪1)|(x&1);
return BlockOffset+IntraBlockOffset*4;
}
Что касается YUV2 (16bpp, упаковано), то этот формат поверхности осуществляет дополнительную дискретизацию отсчетов U и V «цветности» с коэффициентом 2. Результатом является формат упакованного изображения, который усредняет по 16 битов на пиксел. Линейная схема показана на фиг. 6А. Формат смешивания по изобретению распределяет зашифрованные блоки из 4×2 пикселов, как показано на фиг. 6В. Как и для фиг. 5А и 5В, 128-битовые блоки тоже смешиваются. Отметим, что для фиг. 6В и для нижеследующего примерного смешивающего псевдокода, который переводит пары координат (х,у) в сдвиги изображения, предполагается, что U и V имеют даже координаты Х:
DWORD
SwizzleYUY2Y(DWORD x, DWORD y, const SURFACEDESC& sd)
{
assert( x<sd.Width );
assert( y<sd.Height );
DWORD BlockOffset = (y≫1)*sd.Pitch+(x≫2)*(128/8);
DWORD IntraBlockOffset = ((x&2)≪1)|
((y&1)≪1)|
((x&1)≪0);
DWORD dwRet = BlockOffset+(IntraBlockOffset≪1);
Return dwRet;
}
DWORD
SwizzleYUY2U(DWORD x, DWORD y, const SURFACEDESC& sd)
{
assert( x<sd.Width );
assert( 0==(x & 1) );
assert( y<sd.Height );
DWORD BlockOffset = (y≫1)*sd.Pitch+(x≫2)*(128/8);
DWORD IntraBlockOffset = ((x&2)≪1)|
((y&1)≪1)|
((x&1)≪0);
return BlockOffset+(IntraBlockOffset≪1)+1;
}
DWORD
SwizzleYUY2V(DWORD x, DWORD y, const SURFACEDESC& sd)
{
assert( x<sd.Width );
assert( 0==(x & 1) );
assert( y<sd.Height );
DWORD BlockOffset = (y≫2)*sd.Pitch+(x≫3)*(512/8);
DWORD IntraBlockOffset = ((x&2)≪1)|
((y&1)≪1)|
((x&1)≪0);
return BlockOffset+(IntraBlockOffset≪1)+3;
}
В этом отношении для псевдокода, сопровождающего смешивание по фиг. 5А, 5В, 6А и 6В, шаг (pitch) поверхности определяется как число байтов на линию сканирования из 128 битовых блоков.
Что касается упакованного планарного формата (12bpp), то этот формат поверхности осуществляет дополнительную дискретизацию отсчетов U и V с коэффициентом 2 по горизонтали и вертикали. Отсчеты яркости и цветности компонуются двумя отдельными частями поверхности. Линейная схема упакованного планарного формата (12bpp) показана на фиг. 7А.
Шаг поверхности определяется числом байтов на линию сканирования из 512-битовых блоков в плоскости Y. Шаг плоскости UV составляет половину от шага плоскости Y, потому что имеется только четверть отсчетов, но вдвое больше цветовых элементов на отсчет. Результирующий формат смешанного изображения в соответствии с изобретением показан на фиг. 7В.
Примерный псевдокод для функции смешивания по изобретению для этого формата, который переводит координаты (х,у) в сдвиги для элементов Y, U и V, имеет следующий вид:
DWORD
SwizzlePP12Y(DWORD x, DWORD y, const SURFACEDESC& sd)
{
assert( x<sd.Width );
assert( y<sd.Height );
DWORD BlockOffset = (y≫2)*sd.Pitch+(x≫2)*(128/8);
DWORD IntraBlockOffset = ((x&2)≪2)|
((x&2)≪1)|
((y&1)≪1)|
((x&1);
return BlockOffset+IntraBlockOffset;
}
DWORD
SwizzlePP12U(DWORD x, DWORD y, const SURFACEDESC& sd)
{
DWORD PlaneOffset = (sd.Height≫3)*sd.Pich;
if ((0!=(x&1))||(0!=(y&1)))
_asm int 3
x≫=1;
y≫=1;
DWORD BlockOffset = (y≫1)*sd.Pitch/2+(x≫2)*(128/8);
DWORD IntraBlockOffset = ((x&2)≪1)|
((y&1)≪1)|
(x&1);
return PlaneOffset+BlockOffset+(IntraBlockOffset≪1);
}
DWORD
SwizzlePP12V(DWORD x, DWORD y, const SURFACEDESC& sd)
{
DWORD PlaneOffset = (sd.Height≫3)*sd.Pich;
if ((0!=(x&1))||(0!=(y&1)))
_asm int 3
x≫=1;
y≫=1;
DWORD BlockOffset = (y≫1)*sd.Pitch/2+(x≫2)*(128/8);
DWORD IntraBlockOffset = ((x&2)≪1)|
((y&1)≪1)|
(x&1);
return PlaneOffset+BlockOffset+(IntraBlockOffset≪1)+1;
}
Третий уровень защиты - зашифрованные командные буферы
Функции вариантов осуществления, описанных выше в отношении первого и второго уровней защиты, могут быть усилены в соответствии с изобретением для шифрования командных буферов, предлагаемых в БГО 265 в дополнение к данным изображения, с которыми работает БГО 265. Эти функции желательны, если программное приложение 210 желает защитить содержимое, которое посылается на аппаратное обеспечение по сети в командный буфер. Фиг. 9А показывает видеодекодирование с помощью зашифрованного командного буфера 900, благодаря чему содержимое доставляется к зашифрованной текстуре 400а и дешифрируется компонентом 450 дешифрирования и декодируется видеодекодером 430b. Хотя только командный буфер может быть зашифрован, содержимое шифруется в видеопамяти, как и командный буфер, как показано зашифрованным декодированным кадром 420а. Шифрование командного буфера, таким образом, уместно в ситуации наподобие этой, когда макроблоки находятся в видеопамяти, и с векторами движения и другими командами, посылаемыми в потоке команд.
Ограничение элементарности для зашифрованных текстурных данных также применяется к зашифрованным данным командного буфера с предупреждением о том, что шифрование цветового буфера может быть недостаточным для защиты рассматриваемого содержимого. Промежуточные буферы, например Z буфер, могут также шифроваться для защиты системы от атак на открытый текст. Фиг. 9В показывает примерную трехмерную визуализацию с помощью зашифрованного командного буфера в соответствии с изобретением. Как проиллюстрировано, команды 810 трехмерной визуализации шифруются по пути к видеодекодеру 430с. Текстурные данные 400а дешифрируются компонентом 450 дешифрирования и обрабатываются в соответствии с командами 810 видеодекодером 430с. Присущие ему данные в цветовом буфере 820 шифруются посредством компонента 830 шифрования-дешифрирования.
Обнаружение несанкционированного доступа может осуществляться перед использованием командного буфера с помощью двух проходов или после того, как командный буфер использован. В одном варианте выполнения обнаружение несанкционированного доступа разрешается после отображения или визуализации содержимого.
Дальнейшие альтернативные варианты выполнения - шифрование выходов из графического адаптера
В каждом из приведенных выше вариантов осуществления, хотя конфиденциальность и целостность описаны и продемонстрированы в отношении обведенной пунктирной линией части фиг. 2, конфиденциальность и целостность не продемонстрированы по отношению к видеовыходу, т.е. теоретически интерфейс между графическим адаптером и визуализирующим устройством, таким как монитор, и/или само визуализирующее устройство подвержены атаке.
Таким образом, в вышеприведенных вариантах осуществления, как показано на фиг. 9А, в некоторой точке во время процесса, даже хотя содержимое защищается в видеопамяти и во время обработки в графическом адаптере, данные посылаются на ЦВИ/ЦАП 290 в открытом виде. В результате данные могут быть перехвачены или изменены по пути к визуализирующему устройству и в визуализирующем устройстве.
Таким образом, в соответствии с альтернативным вариантом осуществления изобретения, которое может дополнительно комбинироваться с другими вариантами осуществления, описанными здесь, в визуализирующем устройстве предусматривается однотипный криптопроцессор 220b для дополнения функций, выполняемых криптопроцессором 220а. В этом отношении компонент 910а шифрования, соединенный для осуществления связи с криптопроцессором 220а, зашифровывает данные перед их доставкой к компоненту 290 ЦВИ/ЦАП, а компонент 910b дешифрирования, соединенный для осуществления связи с криптопроцессором 220b, дешифрирует данные как часть отображения или визуализации, которая имеет место, предупреждая перехват данных. Компонент 910 шифрования может быть альтернативно включен в компонент 290 ЦВИ/ЦАП. Короче говоря, при применении того же самого шифрования и дешифрирования содержимое может защищаться по всему графическому каналу для криптографически защищенной надежной доставки и обработки содержимого.
Как упомянуто выше, хотя примерные варианты осуществления настоящего изобретения описаны в связи с разными вычислительными устройствами, аппаратным обеспечением, программным обеспечением и сетевыми архитектурами, основополагающие принципы могут применяться к любому вычислительному устройству или системе, в которых желательно защищать содержимое из достоверного источника. Таким образом, методы криптографически защищенного охраняемого содержимого в соответствии с настоящим изобретением могут применяться ко множеству программных приложений и устройств. К примеру, способы криптографической защиты охраняемого содержимого по изобретению могут применяться к операционной системе вычислительного устройства, предусмотренного как отдельный объект в устройстве, как часть другого объекта, как загружаемый объект из сервера, как распределенный объект и т.д. Хотя в качестве представителей различных возможностей здесь выбраны примерные языки программирования, псевдокоды, названия и примеры, эти языки, псевдокоды, названия и примеры не направлены на ограничение.
Описанные здесь разнообразные методы могут быть реализованы как в аппаратном обеспечении, так и в программном обеспечении, или, когда это уместно, в их комбинации. Так, способы и устройства по настоящему изобретению или некоторые его аспекты или части могут принимать форму программного кода (т.е. команд), реализованного на реальном носителе, таком как гибкие дискеты, CD-ROM, накопители жестких дисков или любой иной машиночитаемый носитель данных, причем, когда программный код загружается машиной, такой как компьютер, эта машина становится устройством для осуществления изобретения. В случае выполнения программного кода на программируемых компьютерах вычислительное устройство будет в общем случае включать в себя процессор, считываемый этим процессором носитель данных (в том числе энергозависимые и энергонезависимые элементы памяти и/или хранения), по меньшей мере одно входное устройство и по меньшей мере одно выходное устройство. Одна или более программ, которые могут применять методы настоящего изобретения, например, через использование обрабатывающего данные ППИ, операционной системы, достоверного программного приложения и тому подобного, предпочтительно реализуются в высокоуровневом процедурно или объектно ориентированном языке программирования для связи с компьютерной системой. Однако программа(ы) может быть реализована в ассемблере или машинном языке, если это желательно. В любом случае, язык может быть скомпилированным или интерпретированным языком и в различных вариантах осуществления изобретения налагает условия на варианты осуществления аппаратуры БГО 265.
Способы и устройства по настоящему изобретению могут также осуществляться через передачи данных, реализованные в виде программного кода, который передается по некоторой среде передачи, такой как электрические провода или кабель, через волоконную оптику или через любой иной вид передачи, причем, когда программный код принимается, загружается и исполняется в машине, такой как СППЗУ, вентильная матрица, устройство программируемой логики (УПЛ) (PLD), клиентский компьютер, видеомагнитофон или тому подобное, или в принимающей машине с графическим адаптером и функциональными возможностями шифрования, как описывается выше в примерных вариантах осуществления, эта машина становится устройством для осуществления изобретения. При реализации на универсальном компьютере программный код комбинируется с процессором для обеспечения единого устройства, которое работает, чтобы вызвать функции по настоящему изобретению. Дополнительно, любой метод запоминания, использованный в связи с настоящим изобретением, может неизменно быть комбинацией аппаратного и программного обеспечения.
Хотя настоящее изобретение описано в связи с предпочтительными вариантами осуществления, показанными на чертежах, следует иметь в виду, что можно использовать и другие подобные варианты осуществления или что в описанных вариантах осуществления можно выполнить изменения или дополнения для реализации той же самой функции по настоящему изобретению без изменения его сущности. К примеру, хотя в контексте сетевой среды описываются примерные сетевые среды по изобретению, такие как одноранговая сетевая среда, специалисту понятно, что настоящее изобретение не ограничивается этим и что способы, как они описаны в настоящей заявке, могут применяться к любому вычислительному устройству или среде, таким как игровая консоль, ручной компьютер, портативный компьютер и т.п., проводной или беспроводный, и может применяться к любому числу таких вычислительных устройств, соединенных через сеть связи и взаимодействующих по этой сети. Далее, следует подчеркнуть, что подразумеваются множество компьютерных платформ, в том числе операционные системы ручных устройств и иные специфичные для программных приложений операционные системы, особенно по мере постоянного возрастания количества беспроводных сетевых устройств. Далее, настоящее изобретение может быть реализовано на множестве сопроцессорных микросхем или устройств, таких как устройство со множеством БГО, а память может аналогичным образом выполняться на множестве устройств. Поэтому настоящее изобретение не должно ограничиваться никаким единственным вариантом осуществления, а должно интерпретироваться в своей широте и объеме в соответствии с прилагаемой формулой изобретения.
Приложение А. Потоковые шифры в сравнении с блоковыми шифрами
Это приложение детализирует различия между потоковыми шифрами и блоковыми шифрами в той мере, как они связаны с содержанием данного документа.
Как правило, потоковые шифры быстрее и проще для реализации, нежели блоковые шифры.
Как подразумевает название, потоковые шифры зашифровывают и дешифрируют поток байтов. Для дешифрирования N-го байта в потоке, шифр начинается в начале и проходит по одному байту за раз до желательного сдвига в потоке.
В противоположность этому, блоковые шифры, которые исполняются в режиме электронной кодовой книги, могут шифровать или дешифрировать произвольные блоки в данных, но должны шифровать-дешифрировать полный блок за раз. Обычный размер блока равен 16 байтам.
Потоковые шифры используются таким образом, что одни и те же данные никогда не шифруются дважды, т.е. ключ, использованный для шифрования и дешифрирования, должен меняться часто. При использовании, например, для воспроизведения первичной поверхности достаточно изменения ключей один раз за кадр.
В качестве последнего замечания, следует отметить, что имеются блоковые шифры хорошего качества, доступные для свободного копирования.
Изобретение относится к способам и системам криптографической защиты данных в графических подсистемах вычислительного устройства. Технический результат заключается в обеспечении конфиденциальности и защищенности данных, направляемых через графический канал. Осуществляются методы для шифрования содержимого видеопамяти, так что несанкционированное программное обеспечение не может получить к нему существенного доступа, благодаря чему поддерживается конфиденциальность. Кроме того, предложен механизм для обнаружения несанкционированного доступа, так что обеспечивается предупреждение, когда данные изменяются некоторым образом, за счет чего поддерживается целостность. В различных вариантах выполнения шифруется содержимое оверлейных поверхностей и/или командные буферы, и/или блок графической обработки способен оперировать с зашифрованным содержимым, ограничивая доступ к содержимому для несанкционированных сторон, устройств или программного обеспечения. 3 н. и 51 з.п. ф-лы, 18 ил., 3 табл.
запрашивание графической системы программным приложением либо устройством выполнить обработку либо визуализацию охраняемого содержимого, при этом упомянутое запрашивание включает в себя передачу сеансового ключа упомянутым программным приложением либо устройством в графическую систему и передачу упомянутого охраняемого содержимого к зашифрованным оверлейным поверхностям, которые перекрывают, по меньшей мере, одну первичную поверхность упомянутой видеопамяти, включая первый зашифрованный конфиденциальный оверлей для базовой визуализации охраняемого содержимого и второй зашифрованный защищенный оверлей, специально спроектированный для существующих чувствительных пользовательских интерфейсов, причем упомянутый второй зашифрованный защищенный оверлей находится всегда наверху и не закрывается, и содержимое второго зашифрованного защищенного оверлея проверяется упомянутым, по меньшей мере, одним БГО;
дешифрирование содержимого упомянутой, по меньшей мере, одной зашифрованной части видеопамяти упомянутым, по меньшей мере, одним БГО при осуществлении связи с устройством криптографической обработки, при этом упомянутое дешифрирование включает в себя дешифрирование содержимого первого зашифрованного конфиденциального оверлея первым компонентом дешифрирования потокового шифра и дешифрирование содержимого второго зашифрованного защищенного оверлея вторым компонентом дешифрирования потокового шифра;
выполнение, по меньшей мере, обработки или визуализации упомянутого дешифрированного содержимого, по меньшей мере, одним БГО и
выведение упомянутого содержимого, по меньшей мере, из одного БГО.
повторное шифрование упомянутого содержимого упомянутым, по меньшей мере, одним БГО при осуществлении связи с устройством криптографической обработки перед упомянутым выведением; и
дешифрирование упомянутого повторно зашифрованного содержимого, по меньшей мере, вторым устройством криптографической обработки во внешнем вычислительном устройстве.
передачу упомянутого криптографического содержимого к программному приложению либо устройству, чтобы гарантировать, что отображенные пикселы являются пикселами, переданными в связи с упомянутым запрашиванием от программного приложения либо устройства.
средство для запрашивания графической системы программным приложением либо устройством выполнить обработку либо визуализацию охраняемого содержимого, при этом упомянутое средство для запрашивания включает в себя средство для передачи сеансового ключа упомянутым программным приложением либо устройством в графическую систему, и средство для передачи упомянутого охраняемого содержимого к зашифрованным перекрывающим поверхностям, которые перекрывают, по меньшей мере, одну первичную поверхность упомянутой видеопамяти, включая первый зашифрованный конфиденциальный оверлей для базовой визуализации охраняемого содержимого и второй зашифрованный защищенный оверлей, специально спроектированный для существующих чувствительных пользовательских интерфейсов, причем упомянутый второй зашифрованный защищенный оверлей находится всегда наверху и не закрывается, и содержимое второго зашифрованного защищенного оверлея проверяется упомянутым, по меньшей мере, одним БГО,
средство для дешифрирования содержимого упомянутой, по меньшей мере, одной зашифрованной части видеопамяти упомянутым, по меньшей мере, одним БГО при осуществлении связи с упомянутым устройством криптографической обработки, при этом упомянутое дешифрирование включает в себя дешифрирование содержимого первого зашифрованного защищенного оверлея вторым компонентом дешифрирования потокового шифра;
средство для выполнения, по меньшей мере, обработки или визуализации упомянутого дешифрированного содержимого, по меньшей мере, одним БГО; и
средство для выведения упомянутого содержимого, по меньшей мере, из одного БГО.
средство для повторного шифрования упомянутого содержимого упомянутым, по меньшей мере, одним БГО при осуществлении связи с устройством криптографической обработки перед упомянутым выведением упомянутым средством для выведения; и
средство для дешифрирования упомянутого повторно зашифрованного содержимого, по меньшей мере, вторым устройством криптографической обработки во внешнем вычислительном устройстве.
средство для запрашивания графической системы программным приложением либо устройством выполнить обработку либо визуализацию охраняемого содержимого, при этом упомянутое средство для запрашивания включает в себя средство для передачи сеансового ключа упомянутым программным приложением либо устройством в графическую систему и средство для передачи упомянутого охраняемого содержимого к зашифрованным перекрывающимся поверхностям, которые перекрывают, по меньшей мере, одну первичную поверхность упомянутой видеопамяти, включая первый зашифрованный конфиденциальный оверлей для базовой визуализации охраняемого содержимого и второй зашифрованный защищенный оверлей, специально спроектированный для существующих чувствительных пользовательских интерфейсов, причем упомянутый второй зашифрованный защищенный оверлей находится всегда наверху и не закрывается, и содержимое второго зашифрованного защищенного оверлея проверяется упомянутым, по меньшей мере, одним БГО,
средство для дешифрирования содержимого упомянутой, по меньшей мере, одной зашифрованной части видеопамяти упомянутым, по меньшей мере, одним БГО при осуществлении связи с упомянутым устройством криптографической обработки, при этом упомянутое дешифрирование включает в себя дешифрирование содержимого первого зашифрованного конфиденциального оверлея первым компонентом дешифрирования потокового шифра и дешифрирование содержимого второго зашифрованного защищенного оверлея вторым компонентом дешифрирования потокового шифра;
средство для выполнения, по меньшей мере, обработки или визуализации упомянутого дешифрированного содержимого, по меньшей мере, одним БГО; и
средство для выведения упомянутого содержимого, по меньшей мере, из одного БГО.
средство для повторного шифрования упомянутого содержимого упомянутым, по меньшей мере, одним БГО при осуществлении связи с устройством криптографической обработки перед упомянутым выведением упомянутым средством для выведения; и
средство для дешифрирования упомянутого повторно зашифрованного содержимого, по меньшей мере, вторым устройством криптографической обработки во внешнем вычислительном устройстве.
УСТРОЙСТВО ЗАЩИТЫ ОТ НЕСАНКЦИОНИРОВАННОГО ДОСТУПА К ИНФОРМАЦИИ, ХРАНИМОЙ В ПЕРСОНАЛЬНОЙ ЭВМ | 1995 |
|
RU2067313C1 |
МЕХАНИЗМ ВЗАИМОАУТЕНТИФИКАЦИИ В РАСПРЕДЕЛЕННЫХ ИНФОРМАЦИОННО-УПРАВЛЯЮЩИХ СИСТЕМАХ РЕАЛЬНОГО ВРЕМЕНИ | 1999 |
|
RU2154856C1 |
US 6314518 B1, 06.11.2001 | |||
US 6301660 B1, 09.10.2001 | |||
Печь для непрерывного получения сернистого натрия | 1921 |
|
SU1A1 |
Печь для непрерывного получения сернистого натрия | 1921 |
|
SU1A1 |
Авторы
Даты
2007-10-10—Публикация
2002-12-03—Подача