Уведомление об авторском праве и разрешение
Часть раскрытия этого патентного документа может содержать материал, который является предметом защиты авторским правом. Владелец авторского права не имеет возражений на факсимильное воспроизведение данного патентного документа или раскрытия данного патента, как он представлен в патентных файлах или записях Ведомства по патентам и торговым маркам, но в остальном сохраняет за собой все авторские права. Следующее уведомление должно применяться к данному документу: Copyright © 2001, Microsoft Corp. (Авторское право © 2001, корпорация Майкрософт).
Ссылки на связанные заявки
Данная патентная заявка соотносится с совместно переуступленной совместно поданной патентной заявкой США номер 10/124922 от 18 апреля 2002 на "Способы и системы для криптографической защиты защищаемого содержимого".
Область техники
Настоящее изобретение относится к способам и системам аутентификации (проверки подлинности) компонента(ов) в связи с использованием высоконадежной графической системы. Более конкретно, настоящее изобретение относится к методам аутентификации графической платы в связи с системой, которая обеспечивает криптографическую защиту содержимого, направляемого через графический конвейер.
Предшествующий уровень техники
Интернет и многие другие источники и приложения в настоящее время обеспечивают обширный массив потоковых и фиксированных носителей или другого содержимого для прослушивания, просмотра, выполнения, сохранения и другой обработки. Однако в настоящее время нет никакого практического способа захвата, записи или обработки потоковых или фиксированных носителей или содержимого защищенным от копирования способом так, чтобы пират не мог подключиться к потоку в некоторой точке по конвейеру, когда содержимое обрабатывается или когда содержимое воспроизводится, и овладеть копией или изменить содержимое. Эта проблема существовала в связи с другими устройствами воспроизведения и записи носителей в прошлом, например с видеомагнитофонами для телевизионного содержимого или магнитофонами для аудиосигналов, но по меньшей мере с одним существенным отличием. Так как содержимое цифровых носителей может быть записано фактически без потери сигнала для владельцев авторского права существует "риск", что их работы будут свободно распространяться (выпускаться пиратским образом) без компенсации. В случае с видеомагнитофонами и магнитофонами устройства и средства передачи информации вызывают шум или искажение данных в процесс записи. При наличии потоковых или фиксированных цифровых носителей не существует причины, почему фактическое преобразование без потерь и повторная передача не может быть выполнено, по меньшей мере по отношению к пределам возможностей человеческого уха и глаза, и не существует причины, почему нефальсифицированные цифровые данные не могут сохраняться и свободно распространяться. Таким образом, было бы желательно предотвратить свободное распространение цифровых данных, потому что то, что владельцы авторского права могут обеспечить за плату и что пират может обеспечить бесплатно, мало отличается между собой. Кроме того, в отношении связи, которая должна быть конфиденциальной, так же как сделки электронной коммерции, для занятого в диалоге пользователя важно, чтобы никакое неправомочное третье лицо не было посвящено в сделки. Таким образом, относительно содержимого из высоконадежного источника, в настоящее время нет никакого практического способа "защищенной" обработки или воспроизведения данных на компьютере пользователя, который предотвращает пиратство или искажение.
В частности, когда содержимое передается по конвейеру главного компьютера вычислительной системы одному или более графических процессоров (ГП) и устройству воспроизведения, такому как монитор, существует множество возможностей для пирата или другого неправомочного третьего лица подключиться к линии или сигналу и незаконно скопировать или исказить сигнал. Кроме того, поскольку пользовательские диалоги становятся более сложными за счет услуг передачи сообщений и организации видеотелеконференций, обеспечение высоконадежного конвейера для защиты содержимого, где бы оно ни создавалось, становится тем более важной задачей для продвижения вперед.
Кроме того, ясно, что будущие поколения операционных систем, вычислительных устройств и приложений будут использовать для деловых приложений большую вычислительную мощность ГП, в противоположность извлечению основной вычислительной мощности от центральных процессоров (ЦП), как происходит в сегодняшних персональных компьютерах (ПК). Таким образом, гарантирование того, что содержимое посылают к ГП через "высоконадежные графические" приложения, будет фундаментальной особенностью будущих вычислительных устройств, которая не обеспечивается соответствующим образом в существующих вычислительных системах.
Эта проблема обеспечения защищенного конвейера для высоконадежного содержимого может рассматриваться как двойная проблема: (1) нужно гарантировать, что высоконадежное содержимое не может быть скопировано или просмотрено в некотором слабом пункте конвейера (конфиденциальность), и (2) нужно гарантировать, что конвейер предотвращает неправомочное искажение данных в конвейере (защита). В контексте защиты системы сложность является помехой, потому что она делает более трудным обеспечение защиты системы. Как в случае с аэропортом или при другом сценарии обеспечения защиты, чем больше количество точек входа и выхода существует в системе, тем труднее становится гарантировать защиту. В этом отношении в настоящее время не существует никакого средства, с помощью которого можно гарантировать, что множеству функциональных возможностей ГП и драйверов дисплея можно доверять и в терминах конфиденциальности, и в терминах защиты. Совместно переуступленная совместно поданная патентная заявка США номер 10/124922 ('922 заявка) от 18 апреля 2002 на "Способы и системы для криптографической защиты защищаемого содержимого", раскрывает системы и способы, которые обеспечивают такую высоконадежную графическую платформу.
Однако при доставке, обработке и/или воспроизведении содержимого в связи с такой высоконадежной графической платформой существует важная проблема, которая состоит в том, что высоконадежное приложение или устройство, которые взаимодействуют с высоконадежной графической платформой, в настоящее время не имеет адекватного средства гарантирования того, что графическая платформа, с которой оно взаимодействует, является высоконадежной. Кроме того, в настоящее время нет никакого защищенного, адекватного пути для высоконадежного приложения сообщить графической платформе, что оно является высоконадежным приложением, так что оно может использовать высоконадежные услуги высоконадежной графической платформы. Соответственно, существует потребность в улучшенных методах аутентификации в связи с использованием высоконадежной графической платформы.
Сущность изобретения
Ввиду вышеизложенного, настоящее изобретение обеспечивает способы и системы аутентификации компонента(ов) в связи с использованием высоконадежной графической системы. Обеспечиваются методы аутентификации графической платы в соединении с системой, которая обеспечивает криптографическую защиту содержимого, направляемого через графический конвейер, таким образом, приложение или устройство могут показать высоконадежной графической платформе, что приложение или устройство являются высоконадежным пользователем высоконадежной графической платформы, и таким образом графическая платформа может сообщить высоконадежному приложению или устройству, что приложение или устройство может доверять графической платформе.
Способы в различных вариантах включают в себя методы аутентификации в связи с использованием высоконадежной графической платформы, имеющей графическую плату, которые содержат запрос от приложения или устройства к графической плате для проверки того, что графическая плата является защищенной графической платой, и в ответ на этот запрос, генерацию ключа сеанса с помощью криптографического процессора, который коммуникативным и защищенным образом связан с графической платой, и передачу ключа сеанса приложению или устройству.
Системы в различных вариантах включают в себя вычислительное устройство, содержащее приложение или устройство, и графическую плату, имеющую ГП и криптографический процессор, который коммуникативным и защищенным образом связан с ГП, причем приложение или устройство запрашивает, чтобы графическая плата подтвердила, что она является защищенной графической платой, и в ответ на запрос криптографический процессор генерирует ключ сеанса и передает ключ сеанса приложению или устройству.
Другие особенности и варианты осуществления настоящего изобретения описаны ниже.
Краткое описание чертежей
Способы и системы подтверждения подлинности компонента(ов) в связи с использованием высоконадежной графической системы в соответствии с настоящим изобретением далее описаны со ссылками на чертежи, на которых:
Фиг.1A - структурная схема, представляющая примерную сетевую среду, содержащую разные вычислительные устройства, в которой может быть осуществлено настоящее изобретение;
Фиг.1B - структурная схема, представляющая примерное не являющееся ограничением вычислительное устройство, в котором может быть осуществлено настоящее изобретение;
Фиг.2 - структурная схема, иллюстрирующая незащищенные части графического конвейера, которые защищены в соответствии с данным изобретением;
Фиг.3A и 3B - структурные схемы, иллюстрирующие типичные аспекты первого уровня защиты в соответствии с данным изобретением;
Фиг.4A-4C - структурные схемы, иллюстрирующие типичные аспекты второго уровня защиты в соответствии с данным изобретением;
Фиг.5A-5B иллюстрируют пример переформатирования формата AYUV/ARGB в соответствии с изобретением;
Фиг.6A-6B иллюстрируют пример переформатирования формата YUY2 в соответствии с изобретением;
Фиг.7A-7B иллюстрируют пример переформатирования упакованного планарного формата в соответствии с изобретением;
Фиг.8A и 8B - структурные схемы, иллюстрирующие типичные аспекты третьего уровня защиты в соответствии с изобретением; и
Фиг.9A и 9B - структурные схемы, иллюстрирующие типичные методы шифрования, которые могут применяться к выходным сигналам графического процессора в соответствии с изобретением.
Подробное описание изобретения
Краткий обзор
Настоящее изобретение обеспечивает системы и методы расширения операционной системы, или другого посредника, между содержимым из высоконадежного (доверенного) источника и графической системой для целей аутентификации так, чтобы обработка и/или воспроизведение содержимого могли быть осуществлены 'высоконадежными графическими' приложениями, такими как защищенные от вмешательства конфиденциальные диалоги и воспроизведение высококачественного содержимого, которое является защищенным от неправомочного дублирования. Одним из способов осуществления высоконадежной графической платформы является обеспечение трех 'уровней' защиты: (1) шифрование содержимого оверлейных поверхностей, (2) предоставление возможности ГП или другому устройству совместной обработки оперировать с зашифрованным содержимым, не делая его доступным ненадежным (недоверенным) сторонам, и (3) предоставление возможности шифрования буферов команд. Настоящее изобретение обеспечивает услуги аутентификации для использования в связи с подобной высоконадежной графической платформой.
Как уже упоминалось, в контексте системной защиты сложность является препятствием, потому что она затрудняет обеспечение защиты системы. В результате, высоконадежная графическая платформа полагает, что множество функциональных возможностей ГП и драйвер(ы) дисплея нужно рассматривать, как являющиеся ненадежными. Ограничивая объем аппаратных средств, которые могут быть реализованы, для удовлетворения критериям защиты, высоконадежная графическая платформа увеличивает шансы корректной реализации в терминах конфиденциальности и защищенности. Некоторая терминология в соответствии с изобретением уже обсуждалась выше. Однако, для ясности, на некоторых терминах будет теперь акцентировано внимание. Термин "конфиденциальный" относится к предотвращению получения доступа к высоконадежному информационному содержимому ненадежного третьего лица, например устройства или программного обеспечения третьего лица. Пример такой конфиденциальности включает в себя предотвращение получения доступа ненадежного третьего лица к воспроизведению зашифрованного высококачественного видеосодержимого в любом месте графического конвейера. Термин "защищенный" относится к предотвращению получения доступа или изменения высоконадежного информационного содержимого без обнаружения ненадежным третьим лицом, например устройством или программным обеспечением третьего лица. Пример такой защищенности включает в себя предотвращение получения доступа ненадежного третьего лица или изменения отображения защищенного диалога, который мог бы произойти во время сделки электронной коммерции.
В этом отношении высоконадежная графическая платформа рассматривает накладывающиеся окна, например пользовательский интерфейс поверх видеопотока высококачественного содержимого, так же как незакрываемые окна, которые могут присутствовать во время диалогов электронной коммерции. Однако до того, как высоконадежная графическая платформа начнет работать, используется механизм в соответствии с настоящим изобретением, который гарантирует, что приложения и устройства, использующие высоконадежную графическую платформу, и сама высоконадежная графическая платформа на самом деле являются достоверными частями всей высоконадежной системы. Изобретение обеспечивает системы и методы для осуществления такой аутентификации. Его подробности и варианты осуществления описаны ниже.
Типичные сетевые среды
Специалисту должно быть ясно, что компьютер или другое клиентское или серверное устройство может использоваться как часть компьютерной сети, или в распределенной вычислительной среде. В этом отношении, настоящее изобретение подходит любой компьютерной системе, имеющей любое количество устройств хранения или запоминающих устройств, и любое количество приложений и процессов, происходящих на любом количестве или объеме запоминающих устройств, которые могут использовать методы аутентификации для использования с высоконадежным графическим режимом. Настоящее изобретение может применяться в среде с компьютерами-серверами и клиентскими компьютерами, расположенными в сетевой среде или распределенной вычислительной среде, имеющей удаленные или локальные запоминающие устройства. Настоящее изобретение может также применяться на автономных вычислительных устройствах, имеющих функциональные возможности использования языка программирования, интерпретации и возможности выполнения генерации, приема и передачи информации в связи с удаленными или местными услугами.
Распределенное вычисление облегчает совместное использование компьютерных ресурсов и услуг с помощью прямого обмена между вычислительными устройствами и системами. Эти ресурсы и услуги включают в себя обмен информацией, кэшируемую память и дисковую память (запоминающее устройство) для файлов. Распределенное вычисление использует преимущества связности по сети, давая возможность клиентам усилить их коллективную мощность для того, чтобы принести пользу всему предприятию. В этом отношении, различные устройства могут иметь приложения, задачи или ресурсы, которые могут взаимодействовать для привлечения методов аутентификации настоящего изобретения для высоконадежного графического конвейера(ов).
Фиг.1A обеспечивает схематическую диаграмму типичной сетевой или распределенной вычислительной среды. Распределенная вычислительная среда содержит объекты 10a, 10b и т.д. вычислительной среды и объекты вычислительной среды или устройства 110a, 110b, 110c и т.д. Эти объекты могут содержать программы, способы, информационные хранилища, программируемую логику и т.д. Объекты могут содержать части тех же самых или других устройств, таких как персональный цифровой секретарь (PDA), телевизионные приемники, проигрыватели файлов формата MP3, персональные компьютеры и т.д. Каждый объект может связаться с другим объектом посредством коммуникационной сети 14. Эта сеть сама может содержать другие объекты вычислительной среды и вычислительные устройства, которые обеспечивают услуги системе, показанной на фиг.1A. В соответствии с одним из аспектов изобретения, каждый объект 10 или 110 может содержать приложение, которое может запрашивать методы аутентификации высоконадежного графического конвейера(ов) в соответствии с настоящим изобретением.
Следует также иметь в виду, что объект, такой как 110c, может располагаться на другом вычислительном устройстве 10 или 110. Таким образом, хотя изображенная физическая среда показывает соединенные между собой устройства, как компьютеры, такая иллюстрация просто является примером, и физическая среда может альтернативно быть изображена или описана, как содержащая различные цифровые устройства, такие как персональный цифровой секретарь (PDA), телевизионный приемник, проигрыватель файлов формата MP3 и т.д., объекты программного обеспечения, такие как интерфейс, COM-объекты и т.п.
Существуют разнообразные системы, компоненты и сетевые конфигурации, которые поддерживают распределенные вычислительные среды. Например, вычислительные системы могут быть связаны вместе проводным или беспроводным образом, с помощью локальных сетей или распределенных сетей. В настоящее время многие из сетей присоединены к Интернет, который обеспечивает инфраструктуру для распределенного вычисления и охватывает много различных сетей.
В домашних сетевых средах существует по меньшей мере четыре несоизмеримые сетевые транспортные среды, каждая из которых может поддерживать уникальный протокол, такие как линия электропитания, данные (передаваемые и беспроводным образом, и проводным), голос (например, телефон) и среда передачи развлечений. Большинство домашних устройств управления, такие как выключатели освещения и приборы, могут использовать линию электропитания для обеспечения связи. Услуги по передаче данных могут вводиться в дом, как широкополосная передача (например, как цифровая абонентская линия или кабельный модем), и доступны в пределах дома с использованием беспроводной (например, спецификация HomeRF или стандарт 802.11b) или проводной связи (например, спецификация HomePNA, кабельная система категории 5, даже линия электропитания). Голосовой трафик может вводиться в дом проводным способом (например, по кабельной системе категории 3) или беспроводным способом (например, с помощью сотовых телефонов) и может распространяться в пределах дома по кабельной системе категории 3. Развлекательные передачи могут вводиться в дом или через спутниковое оборудование, или через кабель, и в типовом случае распространяются по дому с использованием коаксиального кабеля. Стандарты IEEE 1394 и интерактивного цифрового видео также используются для цифрового соединения в группе устройств аудиовизуального отображения. Все эти сетевые среды и другие, которые могут появиться в качестве стандартов протоколов, могут быть объединены для формирования внутренней сети, которая может быть связана с внешним миром посредством Интернет. Короче говоря, существует многообразие несопоставимых источников для хранения и передачи данных, и следовательно, в перспективе, вычислительные устройства потребуют способов защиты содержимого во всех частях конвейера обработки данных.
К Интернет обычно относят совокупность сетей и шлюзов, которые используют комплект протоколов TCP/IP, которые известны из предшествующего уровня техники при работе с компьютерными сетями. TCP/IP - акроним для выражения "протокол управления транспортировкой/программа интерфейса". Интернет может быть описан как система географически распределенных удаленных компьютерных сетей, связанных с помощью компьютеров, выполняющих сетевые протоколы, которые позволяют пользователям взаимодействовать и совместно использовать информацию через сети. Из-за такого широко распространенного совместного использования информации, удаленные сети, такие как Интернет, к настоящему времени вообще развились в открытую систему, для которой разработчики могут, по существу без ограничения, разрабатывать приложения для выполнения специализированных операций или услуг.
Таким образом, сетевая инфраструктура допускает, чтобы главный компьютер узла сети имел такую топологию, как клиент-сервер, точка-точка (одноранговая сеть), или гибридную архитектуру. "Клиент" является элементом класса или группы, который использует услуги другого класса или группы, к которой он не принадлежит. Таким образом, при вычислениях, клиент является процессом, т.е., грубо говоря, набором команд или задач, которые запрашивают услуги, которые обеспечиваются другой программой. Клиентский процесс использует запрашиваемые услуги, не "зная" каких-либо подробностей о работе другой программы или самой услуги. В архитектуре клиент-сервер, особенно в сетевой системе, клиентом обычно является компьютер, который обращается к общедоступным сетевым ресурсам, которые обеспечиваются другим компьютером, например сервером. В примере, приведенном на фиг.1A, компьютеры 110a, 110b и т.д. могут считаться клиентами, а компьютеры 10a, 10b и т.д. могут считаться серверами, причем серверы 10a, 10b и т.д. поддерживают (обслуживают) данные, которые затем копируются в клиентские компьютеры 110a, 110b и т.д.
Сервер обычно является удаленной компьютерной системой, доступной по удаленной сети, такой как Интернет. Клиентский процесс может быть активен в первой компьютерной системе, и серверный процесс может быть активен во второй компьютерной системе, поддерживая связь друг с другом по средству связи, таким образом обеспечивая распределенные функциональные возможности и давая возможность многочисленным клиентам использовать возможности сервера по сбору информации.
Клиент и сервер связываются друг с другом, используя функциональные возможности, которые обеспечиваются уровнем протокола. Например, протокол передачи гипертекстовых данных (HTTP) является обычным протоколом, который используется во взаимосвязи с Всемирной паутиной (WWW). Как правило, компьютерный сетевой адрес, такой как унифицированный указатель информационного ресурса (URL) или адрес Интернет протокола (IP), используется для идентификации друг для друга сервера или клиентских компьютеров. Сетевой адрес может упоминаться как унифицированный указатель информационного ресурса. Например, связь может обеспечиваться по среде передачи данных. В частности, клиент и сервер могут соединяться друг с другом через подключения по протоколу TCP/IP для связи с высокой пропускной способностью.
Таким образом, фиг.1A иллюстрирует типичную сетевую или распределенную среду, в которой может использоваться настоящее изобретение, причем сервер соединен с клиентскими компьютерами через сеть/магистраль. Более конкретно, множество серверов 10a, 10b и т.д., связано через коммуникационную сеть/магистраль 14, которая может быть ЛС, ГС, корпоративной сетью (интранет), Интернет и т.д., с множеством клиентских или удаленных вычислительных устройств 110a, 110b, 110c, 110d, 110e и т.д., таких как переносной компьютер, карманный компьютер, клиент-терминал ("тонкий" клиент), сетевое устройство или другое устройство, такое как видеомагнитофон, телевизионный приемник, печь, освещение, нагреватель и т.п., в соответствии с настоящим изобретением. Таким образом, рассматривается, что настоящее изобретение может применяться к любому вычислительному устройству, в связи с которым необходимо обрабатывать, хранить или воспроизводить защищенное содержимое из высоконадежного источника.
В сетевой среде, в которой коммуникационной сетью/магистралью 14 является Интернет, например, серверы 10 могут быть Web-серверами, с которыми клиенты 110a, 110b, 110с, 110d, 110e и т.д. осуществляют связь с помощью любого из множества известных протоколов, такого как протокол передачи гипертекста HTTP. Серверы 10 могут также выступать в качестве клиентов 110, что является характеристикой распределенной вычислительной среды. Связь может быть проводной или беспроводной, в зависимости от того, какая является более целесообразной. Клиентские устройства 110 могут осуществлять связь через коммуникационную сеть/магистраль 14, а могут иметь присущее им независимое соединение. Например, в случае с телевизионным приемником или видеомагнитофоном, сетевой аспект для управления ими может существовать, а может и отсутствовать. Каждый клиентский компьютер 110 и компьютер-сервер 10 может быть оснащен различными модулями прикладных программ или объектами 135 и подключениями или доступом к различным типам запоминающих элементов или объектов, с помощью которых файлы могут сохраняться или на которые часть файлов может быть загружена или перенесена. Таким образом, настоящее изобретение может использоваться в компьютерной сетевой среде, имеющей клиентские компьютеры 110a, 110b и т.д., которые могут обращаться и взаимодействовать с компьютерной сетью/магистралью 14 и компьютерами-серверами 10a, 10b и т.д., которые могут взаимодействовать с клиентскими компьютерами 110a, 110b и т.д. и другими устройствами 111 и базами данных 20.
Типичное вычислительное устройство
Фиг.1B и последующее обсуждение предназначены для обеспечения краткого общего описания подходящей вычислительной среды, в которой изобретение может быть осуществлено. Однако должно быть понятно, что карманные, переносные и другие вычислительные устройства и объекты вычислительной среды всех видов рассматриваются для использования в связи с настоящим изобретением. Хотя ниже описан универсальный компьютер, это - всего лишь один из примеров, настоящее изобретение может быть осуществлено с помощью клиента-терминала, имеющего функциональную совместимость и взаимодействие с сетью/магистралью. Таким образом, настоящее изобретение может быть осуществлено в среде расположенных в сети услуг, в которой участвуют очень немного или минимальное количество клиентских ресурсов, например сетевая среда, в которой клиентское устройство служит просто средством сопряжения с сетью/магистралью, например объект, размещенный в приборе. В сущности, то, где данные могут быть сохранены или откуда данные могут быть восстановлены или воспроизведены, является желательной или подходящей средой для действия методов аутентификации согласно настоящему изобретению.
Хотя это не требуется, изобретение может быть осуществлено с помощью операционной системы, интерфейса прикладного программирования (API) и/или его может включать в себя прикладное программное обеспечение, которое используется для применения методов аутентификации в соответствии с изобретением. В различных вариантах осуществления данное изобретение также использует аппаратные средства, которые соответствуют сопряжению и методам шифрования, описанным ниже. Программное обеспечение может быть описано в общем контексте выполняемых компьютером команд, например, модулей программ, выполняемых одним или более компьютерами, такими как клиентские рабочие станции, серверы или другие устройства. В общем случае, модули программ включают в себя подпрограммы, программы, объекты, компоненты, структуры данных и т.п., которые выполняют определенные задачи или воплощают определенные абстрактные типы данных. Как правило, функциональные возможности модулей программ могут быть объединены или распределены, как требуется в различных вариантах осуществления. Кроме того, специалисты должны признать, что изобретение может использоваться другими конфигурациями компьютерной системы. Другие хорошо известные вычислительные системы, среды и/или конфигурации, которые могут быть подходящими для использования данным изобретением, включают в себя персональные компьютеры (ПК), банкоматы, серверы, карманные или портативные компьютеры, многопроцессорные системы, системы на основе микропроцессора, программируемую бытовую электронику, сетевые ПК, приборы, освещение, элементы контроля окружающей среды, миникомпьютеры, универсальные компьютеры и т.п., но не ограничены ими. Изобретение может также использоваться в распределенных вычислительных средах, где задачи выполняются удаленными устройствами обработки, которые связаны через коммуникационную сеть/магистраль или другую среду передачи данных. В распределенной вычислительной среде модули программ могут быть расположены и в местных, и в удаленных компьютерных носителях данных, которые включают в себя запоминающие устройства, и клиентские узлы могут в свою очередь вести себя как серверные узлы.
Таким образом, фиг.1B иллюстрирует пример подходящей вычислительной системной среды 100, в которой изобретение может быть осуществлено, хотя как разъяснено выше, вычислительная системная среда 100 - только один из примеров подходящей вычислительной среды и он не является ограничением диапазона использования или функциональных возможностей изобретения. Также вычислительная среда 100 не должна интерпретироваться, как имеющая какую-либо зависимость или требования, касающиеся какого-либо одного из компонентов или их комбинации, иллюстрированных в примерной среде 100.
Согласно фиг.1B примерная система для осуществления изобретения включает в себя универсальное вычислительное устройство в форме компьютера 110. Компоненты компьютера 110 могут включать в себя процессор 120, системную память 130 и системную шину 121, которая соединяет различные системные компоненты, которые включают в себя системную память процессора 120, но не ограничены ими. Системная шина 121 может быть любым из нескольких видов шинных структур, которые включают в себя шину памяти или контроллер памяти, периферийную шину и локальную шину, используя любую из разнообразия шинных архитектур. Для примера, а не в качестве ограничения, такая архитектура включает в себя шину архитектуры, соответствующей промышленному стандарту (ISA), шину микроканальной архитектуры (MCA), шину расширенной стандартной архитектуры для промышленного применения (EISA), локальную шину Ассоциации по стандартам в области видеоэлектроники (VESA) и шину соединения периферийных устройств (PCI) (также известную, как шина расширения).
Компьютер 110 обычно включает в себя разнообразие считываемых компьютером носителей. Считываемые компьютером носители могут быть любыми доступными носителями, к которым может обращаться компьютер 110, и они включают в себя и энергозависимые, и энергонезависимые носители, съемные и несъемные носители. Для примера, а не в качестве ограничения, считываемые компьютерные носители могут содержать компьютерные носители данных и средства связи. Компьютерные носители данных включают в себя и энергозависимые, и энергонезависимые, съемные и несъемные носители, осуществленные любым способом или технологией для хранения информации, такой как считываемые компьютером команды, структуры данных, модули программ или другие данные. Компьютерные носители данных включают в себя оперативную память (ОП), постоянное запоминающее устройство (ПЗУ), стираемое программируемое постоянное запоминающее устройство (СППЗУ), флэш-память или память другой технологии, компакт-диски (CD ROM), цифровые многофункциональные диски (DVD) или другие запоминающие устройства на оптическом диске, магнитные кассеты, магнитную ленту, запоминающие устройства на магнитном диске или другие магнитные запоминающие устройства, или любой другой носитель, который может использоваться для хранения требуемой информации и к которому может обращаться компьютер 110, но не ограничены ими. Средства связи типично воплощают считываемые компьютером команды, структуры данных, модули программ или другие данные в модулированном сигнале данных, таком как несущая, или используют другой механизм транспортировки и включают в себя любые средства доставки информации. Термин "модулированный сигнал данных" означает сигнал, одна или более характеристик, которого устанавливаются или изменяются таким образом, чтобы кодировать информацию в сигнале. Для примера, а не в качестве ограничения, средства связи включают в себя проводные каналы связи, такие как проводные сети или прямое проводное подключение, и беспроводные каналы связи, такие как акустический, радиочастотный (РЧ), инфракрасный и другие беспроводные каналы связи. Считываемые компьютером носители должны также включать в себя комбинации любого из вышеупомянутых носителей.
Системная память 130 включает в себя компьютерные носители данных в форме энергозависимой и/или энергонезависимой памяти, такой как постоянное запоминающее устройство (ПЗУ) 131 и оперативная память (ОП) 132. Базовая система ввода-вывода 133 (BIOS), содержащая основные подпрограммы, которые помогают перемещать информацию между элементами в пределах компьютера 110, например, во время запуска, обычно хранятся в ПЗУ 131. ОП 132 обычно содержит данные и/или модули программ, которые мгновенно доступны для обработки и/или в данный момент обрабатываются процессором 120. Для примера, а не в качестве ограничения, фиг.1B показывает операционную систему 134, прикладные программы 135, другие модули 136 программ и данные 137 программ.
Компьютер 110 может также включать в себя другие съемные/несъемные, энергозависимые/энергонезависимые компьютерные носители данных. Только для примера, фиг.1B иллюстрирует накопитель 141 на жестком диске, который считывают информацию или который записывает информацию на несъемный энергонезависимый магнитный носитель, накопитель 151 на магнитном диске, который считывает информацию или записывает информацию на съемный энергонезависимый магнитный диск 152, и накопитель 155 на оптическом диске, который считывает информацию или записывает информацию на съемный энергонезависимый оптический диск 156, такой как компакт-диск (CD ROM) или другой оптический носитель. Другие съемные/несъемные, энергозависимые/энергонезависимые компьютерные носители данных, которые могут использоваться в типичной рабочей среде, включают в себя: кассеты с магнитной лентой, платы флэш-памяти, цифровые многофункциональные диски, цифровую видеоленту, полупроводниковую ОП, полупроводниковое ПЗУ и т.п., но не ограничены ими. Накопитель 141 на жестком диске обычно подключается к системной шине 121 через интерфейс (средство сопряжения) с несъемным запоминающим устройством, например, через средство 140 сопряжения, и накопитель 151 на магнитном диске и накопитель 155 на оптическом диске обычно подключается к системной шине 121 через средство сопряжения со съемным запоминающим устройством, такое как средство 150 сопряжения.
Устройства и связанные с ними компьютерные носители данных, обсуждаемые выше и показанные на фиг.1B, обеспечивают хранение считываемых компьютером команд, структур данных, модулей программ и других данных для компьютера 110. На фиг.1B, например, накопитель 141 на жестком диске показан в качестве устройства хранения операционной системы 144, прикладных программ 145, других модулей 146 программ и данных 147 программ. Следует обратить внимание, что эти компоненты могут быть теми же самыми или отличаться от операционной системы 134, прикладных программ 135, других модулей 136 программ и данных 137 программ. Операционной системе 144, прикладным программам 145, другим модулям 146 программ и данным 147 программ присвоены другие ссылочные порции для того, чтобы показать, что они, как минимум, являются различными копиями. Пользователь может вводить команды и информацию в компьютер 110 через устройства ввода данных, такие как клавиатура 162 и устройство 161 позиционирования, обычно называемое "мышь", шаровой манипулятор ("трекбол") или сенсорная панель. Другие устройства ввода данных (не показаны) могут включать в себя микрофон, джойстик, игровую клавиатуру, спутниковую антенну, сканер или подобные им. Эти и другие устройства ввода данных часто подключаются к процессору 120 через входное средство 160 сопряжения с пользователем (входной пользовательский интерфейс), которое подсоединено к системной шине 121, но может быть соединено с помощью другого интерфейса и шинных структур, таких как параллельный порт, игровой порт или универсальная последовательная шина (USB). Графический интерфейс 182, такой как Northbridge ("северный мост"), может также быть связан с системной шиной 121 и представляет собой набор микросхем, который связывается с центральным процессором, или ведущим процессором 120 и отвечает за связь с ускоренным графическим портом (AGP). Один или более графических процессоров (ГП) 184 могут соединяться с графическим интерфейсом 182. В этом отношении, ГП 184 в общем случае включают в себя встроенную память, такую как регистровая память, и ГП 184 связываются с видеопамятью 186. Однако ГП 184 является всего лишь одним из примеров сопроцессора, и таким образом компьютер 110 может включать в себя разнообразие устройств совместной обработки. Монитор 191 или другой тип устройства отображения также связан с системной шиной 121 через интерфейс, такой как видеоинтерфейс 190, который может в свою очередь быть связан с видеопамятью 186. В общем случае именно эта часть вычислительного устройства уязвима, и соответственно, настоящее изобретение обеспечивает защиту и конфиденциальность данных, свойственных обработке или воспроизведению. Кроме монитора 191, компьютеры могут также включать в себя другие периферийные устройства вывода, такие как динамики 197 и принтер 196, которые могут быть связаны через средство 195 сопряжения с периферийными устройствами вывода информации.
Компьютер 110 может работать в сетевой или распределенной среде, используя логические подключения к одному или более удаленным компьютерам, таким как удаленный компьютер 180. Удаленный компьютер 180 может быть персональным компьютером, сервером, маршрутизатором, сетевым ПК, одноранговым маршрутизатором или другим обычным сетевым узлом и обычно включает в себя многие или все элементы, описанные выше относительно компьютера 110, хотя только запоминающее устройство 181 показано на фиг.1B. Логические подключения, изображенные на фиг.1B, включают в себя локальную сеть (ЛС) 171 и глобальная сеть (ГС) 173, но могут также включать в себя другие сети/магистрали. Такие сетевые среды обычно используются в домах, офисах, в компьютерных сетях в масштабе предприятия, корпоративных сетях (интранет) и Интернет.
При работе в среде локальной сети (ЛС) компьютер 110 соединяется с ЛС 171 через средство сопряжения с сетью, или сетевой адаптер 170. При работе в среде глобальной сети (ГС) компьютер 110 обычно включает в себя модем 172 или другие средства для установления связи с ГС 173, такой как Интернет. Модем 172, который может быть внутренним или внешним, может быть связан с системной шиной 121 через пользовательский входной интерфейс 160 или другой соответствующий механизм. В сетевой среде модули программ, изображенные относительно компьютера 110, или его частей, могут храниться в удаленном запоминающем устройстве. Для примера, а не в качестве ограничения, фиг.1B показывает, что удаленные прикладные программы 185 находятся в запоминающем устройстве 181. Следует признать, что показанные сетевые связи являются примерными и что могут использоваться другие средства установления связи между компьютерами.
Типичные распределенные вычислительные структуры или архитектуры
Различные распределенные вычислительные структуры развивались и развиваются в свете конвергенции вычисления на персональном компьютере и Интернет. Индивидуальные и корпоративные пользователи одинаково обеспечены интерфейсом, не требующим дополнительной настройки и с поддержкой сети, для приложений и вычислительных устройств, делая вычислительную деятельность все более и более ориентированной на Web-браузер или работу в сети.
Например, платформа.Net корпорации MICROSOFT ® включает в себя серверы, унифицированные (стандартные) услуги (сервисы, службы), такие как доступное через сеть хранение данных и загружаемое программное обеспечение для устройств. Вообще говоря, платформа.Net обеспечивает (1) возможность заставить весь диапазон вычислительных устройств работать вместе и автоматически модифицировать пользовательскую информацию и синхронизировать их между собой, (2) увеличенную интерактивную возможность web-узлов, которую предоставляет более широкое использование языка XML (расширяемая спецификация языка, предназначенного для создания страниц WWW), а не HTML, (3) интерактивные услуги (сетевые сервисы), которые предоставляют настроенный доступ и доставку программных продуктов и услуг пользователю от центральной отправной точки для управления различными приложениями, такими как электронная почта, например, или программным обеспечением, таким как Office.Net, (4) централизованное хранение данных, которое увеличит эффективность и легкость доступа к информации, так же как синхронизацию информации между пользователями и устройствами, (5) способность интегрировать различные средства связи, такие как электронная почта, факсы и телефоны, (6) для разработчиков, возможность создавать модули многократного использования, таким образом, увеличивая производительность и сокращая количество ошибок программирования и (7) также много других особенностей для интеграции различных платформ.
Хотя примерные варианты осуществления в общем случае описываются в связи со способами, осуществленными с помощью программного обеспечения, находящегося на вычислительном устройстве, одна или более частей изобретения могут также быть осуществлены через операционную систему, интерфейс прикладного программирования (API) или объект-"посредник" между сопроцессором и содержимым, которое не должно разрушаться, так что услуги по использованию высоконадежного содержимого могут выполняться, поддерживаться или обеспечивать доступ с помощью всех языков и услуг.NET, а также в других распределенных вычислительных структурах. Кроме того, следует признать, что один или больше методов, описанных в соответствии с изобретением, могут повлечь за собой изменения в аппаратных средствах, например изменения в ГП, чтобы соответствовать данным методам.
Обеспечение криптографической защиты содержимого
Высоконадежная графическая платформа 'ZZZ заявки обеспечивает способы и системы для дополнения операционной системы, или любой платформы, которая дает возможность "высоконадежным графическим" приложениям, таким как защищенные от несанкционированного вмешательства, вести конфиденциальные диалоги, и дает возможность воспроизведения содержимого способом, который является устойчивым к неправомочному дублированию. Проблема, решенная в соответствии с настоящим изобретением, иллюстрируется на фиг.2, где показано, что зашифрованное высококачественное содержимое 200 передается или генерируется высоконадежным приложением TS. Для использования высоконадежного программного обеспечения TS характерно, что содержимое 200 может использовать функциональные возможности ГП 265 до воспроизведения (или другого использования) содержимого 200 через устройство воспроизведения 295. Такое содержимое 200 будет передаваться от системной или основной памяти 230 к видеопамяти 260 для обработки с помощью ГП 265. Пунктирная линия на фиг.2 показывает, где существует проблема защиты. Обращаясь к предшествующему уровню техники, можно заключить, что в настоящее время никакие системы должным образом не гарантируют защищенную и конфиденциальную доставку содержимого через элементы, окруженные пунктирной линией. С точки зрения высоконадежного программного обеспечения TS, первая проблема, решенная в соответствии с изобретением, состоит в том, следует ли доверять содержимое компонентам, обозначенным в пределах пунктирной линии, перед передачей содержимого к ГП. Предполагая, что высоконадежное программное обеспечение TS может должным образом аутентифицировать компоненты, расположенные внутри пунктирной линии, вторая проблема с точки зрения высоконадежного программного обеспечения TS, рассмотренная в 'ZZZ патентной заявке, состоит в том, что высоконадежное программное обеспечение TS должно быть достаточно уверено, что, когда данные будут переданы внутрь пунктирной линии, эти данные не будут изменены. Настоящее изобретение рассматривает обе проблемы в различных вариантах осуществления, описанных ниже. Сначала описаны системы и способы обеспечения услуги аутентификации в соответствии с изобретением. Затем, различными способами, способы и системы высоконадежной графической платформы осуществлены с помощью (1) шифрования содержимого оверлейных поверхностей, (2) предоставления ГП возможности оперировать зашифрованным содержимым, не делая его доступным ненадежным приложениям или сторонам и (3) шифрования содержимого буферов команд.
Аутентификация графической платы
Первый аспект проблемы обработки и воспроизведения высоконадежной графики, на решение которого направлено данное изобретение, относится к обеспечению криптографических процессоров (которые иногда называются 'криптопроцессорами') и управлению индексированными ключами.
В этом отношении, защищенные графические платы должны быть способны подтвердить свою подлинность (аутентифицировать себя как таковых). В частности, полагается, что высоконадежное программное обеспечение должно быть способно отличить защищенную графическую плату от традиционной графической платы или обманного устройства, такого как имитация графической платы. Кроме того, высоконадежное программное обеспечение должно быть способно продемонстрировать криптографические ключи графической плате и должно быть способно проверить, что получатель ключей - действительно защищенная графическая плата. Для этой цели защищенные графические платы оборудуются криптопроцессором в соответствии с изобретением, который выполняет криптографические задачи аутентификации и транспортировки ключа.
Что касается аппаратных средств, то криптопроцессоры, которые обеспечиваются в соответствии с данным изобретением, индивидуализируются и сертифицируются во время изготовления. Каждый криптопроцессор содержит уникальный секретный (частный) ключ дешифрования Kpriv. Хотя множество различных видов алгоритмов шифрования и дешифрования рассматриваются в соответствии с данным изобретением и известны специалистам в области криптографии, описанный в данном контексте алгоритм является алгоритмом ассиметричного шифрования с открытым ключом (RSA) и длина ключа равна 1024 бит, причем оба конструктивных выбора не являются ограничением, они могут быть разработаны согласно известным возможностям выбора в зависимости от приложения и требуемого уровня(ней) защиты.
В этом отношении, криптопроцессор постоянно присоединен к графической плате, или с помощью добавления его к существующему чипу, или с помощью добавления его как отдельного чипа к плате. Криптопроцессор осуществляет криптоалгоритм с открытым ключом, как описано более подробно ниже, и скрывает уникальный секретный ключ. В этом отношении, такой криптопроцессор при сегодняшних кремниевых технологиях может быстро выполнять дешифрование с открытым ключом. Однако криптопроцессор может также включать в себя акселератор для открытого ключа и управляющую логику и может осуществить симметричное шифрование (улучшенный алгоритм шифрования AES).
В одном из примерных, не являющихся ограничением вариантов осуществления криптопроцессор включает в себя следующие энергозависимые регистры: (1) 256-битный регистр S для ключа сеанса. Продолжительность жизни этого ключа обычно является продолжительностью работы высоконадежного программного обеспечения; и (2) массив множества индексных ключей. Каждый ключ может быть длиной 128 битов, хотя могут использоваться другие варианты. Каждый ключ связан с конкретным окном и используется графической платой для дешифрования его содержимого. Продолжительность жизни каждого ключа управляется командами от высоконадежного программного обеспечения.
Как уже упоминалось, криптопроцессор изобретения постоянно присоединен к графической плате. Таким образом, требуется средство надежного сопряжения с криптопроцессором, чтобы использовать его функциональные возможности. Что касается сопряжения с криптопроцессором, настоящее изобретение рассматривает по меньшей мере два метода: (a) внешний интерфейс с высоконадежным программным обеспечением TS и (b) интерфейс с ГП 265. Первый интерфейс - по меньшей мере в его криптографических аспектах - должен быть стандартизирован. Второй интерфейс может зависеть от воплощения, но должен придержаться всех рекомендаций, сформулированных ниже.
Относительно воплощений внешнего интерфейса, внешний интерфейс использует протокол шифрования с секретным ключом (PK) для аутентификации и транспортировки ключа. Согласно этому протоколу высоконадежное программное обеспечение TS зашифровывает ключ сеанса с помощью открытого ключа криптопроцессора. Криптопроцессор принимает результирующий криптографический большой двоичный объект ("криптоблоб") и дешифрует его с помощью своего секретного ключа, таким образом получая ключ сеанса. Теперь высоконадежное программное обеспечение и криптопроцессор совместно используют секретную информацию. Высоконадежное программное обеспечение может использовать этот ключ сеанса для того, чтобы посылать команды криптопроцессору.
В одном из неограничивающих вариантов осуществления внешний интерфейс раскрыт через следующие функции, выполняемые криптопроцессором:
Функция SetSessionKey() выполняет этап начальной аутентификации и транспортировки ключа. Это - единственная функция, которая обращается к функциональным возможностям криптопроцессора, связанным с открытым ключом. Таким образом, в одном из вариантов осуществления, настоящее изобретение рассматривает вызов этой функции один раз во время начальной загрузки. Следующий примерный псевдокод представляет одно из не являющихся ограничением воплощений функции SetSessionKey():
SetSessionKey (cryptoblob){
PKDecrypt (privateKey, cryptoblob, sessionKey),
}
После успешного завершения операции, регистр sessionKey содержит ключ, например 256-битный ключ, полученный из "криптоблоба". Алгоритм шифрования с открытым ключом может быть, например, алгоритмом с открытым ключом (RSA) с длиной ключа 1024 бит.
Как только симметричный ключ сеанса K был установлен между высоконадежным программным обеспечением и криптопроцессором, этот ключ может использоваться для обеспечения всей дальнейшей связи с криптопроцессором. Высоконадежное программное обеспечение и криптопроцессор могут связываться посредством простого способа команд Get и Set, параметры которых криптографически защищены для конфиденциальности и целостности. В частности блок B параметра каждого запроса может быть обработан следующим неограничивающим способом:
AES (М | HMAC (М, K1), K2),
где:
K1 - первая половина K (биты от 0 до 127)
K2 - вторая половина K (биты 128 - 255)
AES (М, K) - результат шифрования сообщения М с ключом K с помощью AES в режиме CBC
HMAC (М, K) - результат вычисления HMAC по соответствующей хеш-функции сообщения М с ключом K
A | B - результат сцепления (конкатенации) A и B.
Этот формат может использоваться для входных параметров и для выходных параметров следующих функций:
Set( [IN] BOOL needsAck, [IN] BITS 128 nonce, [IN] ENUM propertyID, [IN] BYTESEQUENCE propertyParamters, [OUT] BYTESEQUENCE ack )
где:
needsAck - булево значение, которое позволяет высоконадежному программному обеспечению указывать, требуется ли подтверждение.
nonce - 128-битное значение, выбранное высоконадежным программным обеспечением. Данное значение может использоваться при подтверждении, если подтверждение требуется.
propertyID идентифицирует свойство, которое устанавливается. Типичный список поддерживаемых свойств дается ниже в таблице 1.
propertyParamters - последовательность параметров, которая является определенной для каждого параметра propertyID.
Наконец, Ack - подтверждение операции. Криптопроцессор вырабатывает ack, тогда и только тогда, когда needsAck был установлен. Ack составлен из значения параметра nonce, сопровождаемого сообщением, которое является определенным для каждого параметра propertyID.
Список идентификаторов свойств (propertyID) для функции Get
Относительно идентификатора свойства "индексный ключ", этот способ записывает новый ключ и тэг (указатель) назначения в регистр ключа, который идентифицируется индексом.
Относительно идентификатора свойства "блокировка вывода", этот способ устанавливает флажок блокировки вывода. Когда этот флажок установлен, экранная геометрия (ширина, высота, глубина представления цвета, частота регенерации), а также тип выхода графический платы (VGA, DVI) не могут быть изменены. В частности, графическая плата не будет выполнять команды на изменение этих параметров настройки, пока установлен флажок блокировки вывода.
Относительно идентификатора свойства "L2KeyMgmt", этот способ устанавливает частоту обновления ключа при втором уровне защиты, описанном в соответствии с изобретением, т.е. шифрование входной и выходной информации, описанное более подробно ниже.
Точно также функция Get предложена следующим образом:
Get( [IN] BITS128 nonce, [IN] ENUM propertyID, [IN] BYTESEQUENCE propertyParamters, [OUT] BYTESEQUENCE response)
где:
nonce - 128-битное значение, выбранное высоконадежным программным обеспечением, которое используется в ответе.
propertyID идентифицирует свойство, которое устанавливается. Список поддерживаемых свойств дается ниже в таблице 2,
propertyParamters - последовательность параметров, которая определяется propertyID.
Ответ содержит результат операции. Ответ составлен из значения "nonce", сопровождаемого сообщением, которое определяется propertyID.
Список идентификаторов свойств (propertyID) для функции Set
Относительно "портов вывода", этот способ выдает в ответ установки для графических выводов платы, например, VGA, DVI и т.д.
Относительно "кода аутентификации", этот способ выдает в ответ хеш содержимого окна согласно первому уровню защиты, описанному в соответствии с изобретением, т.е. шифрованию оверлеев.
Относительно "версии DX-SEC", этот способ выдает в ответ версию DX-SEC, которая поддерживается графической платой.
Относительно "счета защищенных поверхностей", этот способ выдает в ответ количество защищенных поверхностей, которое поддерживается графической платой.
Относительно "счета перекрывающихся поверхностей", этот способ выдает в ответ количество защищенных перекрывающихся поверхностей, которое поддерживается графической платой.
Относительно "типа первичной поверхности", этот способ выдает в ответ 1 и обеспечивает будущую гибкость.
Относительно "геометрии", этот способ выдает в ответ ширину, высоту, частоту регенерации и глубину представления цвета первичной поверхности.
Функция Set может еще дополнительно включать в себя способ, который устанавливает местоположение или размер области защищающего оверлея, или местоположение и размер части основной (первичной) поверхности, которая должна быть дешифрована.
Таким образом, вышеупомянутые функции SetSessionKey, Get и Set относятся к неограничивающим вариантам осуществления внешнего интерфейса. Термин "внутренний интерфейс" относится к интерфейсу между криптопроцессором и остальной частью графической платы. Подробности этого вида интерфейса в соответствии с изобретением определяются воплощением каждой отдельной графической платы, они подвергаются следующим ограничениям: (1) криптопроцессор должен постоянно обеспечивать защиту графической платы, и (2) соединение между криптопроцессором и остальной частью графической платы не должно быть обнаруживаемым.
В этом отношении, удаление криптопроцессора из графической платы не должно быть тривиальным. Если криптопроцессор осуществлен как отдельный чип, то главным образом должно существовать ограничение на механическое сопряжение, с помощью которого криптопроцессор присоединяется к графической плате. Как правило, криптопроцессор должен быть впаян в графическую плату. Альтернативно, криптопроцессор может находиться в том же самом чипе, в котором находится основной ГП. Использование стандартизованных механических средств сопряжения, которые позволяют удалять криптопроцессор, например, считыватели смарт-карт, крепление с помощью разъема и т.п., не приемлемо.
Кроме того, физическая связь между криптопроцессором и остальной частью графической платы не должна быть доступна и не должна быть обнаруживаемой с помощью стандартного интерфейса. Например, соединитель для шины USB не приемлем в соответствии с данным изобретением.
Относительно правил управления ключом, каждый индексный ключ может использоваться только в соответствие со связанным с ним параметром назначения. В одном из вариантов осуществления параметр назначения имеет следующие значения:
L1STREAM: этот ключ может использоваться только с потоковым шифром DX-SEC, описанным ниже в связи с первым уровнем защиты, обеспеченным в соответствии с данным изобретением, т.е. при шифровании оверлеев.
L2BLOCK: этот ключ может использоваться только с блочным шифром в режиме электронной кодовой книги (ECB) второго уровня защиты, обеспеченного в соответствии с данным изобретением, т.е. при шифровании входной и выходной информации, которое описано ниже. Блочный шифр в режиме электронной кодовой книги (ECB) используется для дешифрования текстурных блоков, которые были записаны высоконадежным программным обеспечением.
В этом отношении, копии ключей не должны сохраниться, когда индекс заполнен новым значением.
Альтернативным механизмом установления ключа является высоконадежный маршрут, встраиваемый в аппаратные средства платформы для транспортировки ключа. Например, если программное обеспечение или аппаратные средства, запрашивающие аутентификацию защищенной графической платы, знают заранее, что высоконадежная платформа гарантирует, что записи по адресу 0x12345678, например, всегда отображаются на запоминающее устройство ключа видеоплаты, тогда нет необходимости для криптопроцессора защищенным образом посылать ключ сеанса, потому что вместо этого может использоваться данный "закрытый маршрут". Эта альтернатива может использовать небольшой защищенный механизм связи для усовершенствования объемного защищенного канала. Такой механизм защищенной связи может представлять собой соединение с низкой шириной полосы.
Дополнительное воплощение должно показать, что механизм транспортировки большого количества данных является защищенным. Например, в системах защищенных оверлеев, описанных ниже, защищенное приложение или устройство использует защищенный маршрут для передачи видеоданных на видеоплату напрямую (избегая этапа защищенного обмена ключами, который происходит при использовании a) криптопроцессора или b) описанного выше защищенного маршрута для обмена ключами.
Высоконадежная графическая платформа, такая как описанная в 'ZZZ патентной заявке, описана ниже и включает в себя зашифрованные оверлеи, зашифрованные входы и выходы и зашифрованные буферы команд. Такая высоконадежная графическая платформа описана ниже для примера, и следует понимать, что методы аутентификации данного изобретения могут применяться к разнообразным воплощениям высоконадежной графической платформы.
Первый уровень защиты - шифрование оверлеев
Так как видеопамять может отображаться и считываться с помощью ненадежного программного обеспечения, которое выполняется в центральном процессоре, видеопамять не может содержать информацию в форме открытого текста. Видеопамять в соответствии с данными требованиями включает в себя видеопамять, используемую для обновления информации дисплея. Первоначальная реализация системы, которая отвечает этому критерию, зашифровывает содержимое оверлейной поверхности. Затем оверлей будет дешифроваться на лету аппаратными средствами цифроаналогового преобразователя (ЦАП), или непосредственно перед аппаратными средствами ЦАП, когда изображение посылается на дисплей.
Фиг.3 иллюстрирует пример воплощения такого метода. Зашифрованное высококачественное содержимое 200, где бы оно ни находилось или было генерировано по отношению к высоконадежному приложению 210, принимается высоконадежным приложением 210. Затем следует аутентификация с помощью криптопроцессора 220, например процедура(ы) аутентификации, описанная выше в примерных вариантах осуществления, или с помощью любого другого метода для защищенной доставки ключа, или криптографически, или через маршрут, защищенный другими средствами. Содержимое 200 проходит от системной памяти 230 к зашифрованной оверлейной поверхности 240, которая является оверлеем первичной поверхности 270 из видеопамяти 260. Вместе с криптопроцессором 220 дешифрующая часть 250 ГП 265 дешифрует уровень шифрования, обеспеченный зашифрованным оверлеем 240, и содержимое проходит к компоненту 280 выбора пикселя для вывода на цифровой видеоинтерфейс (ЦВИ, DVI)/цифроаналоговый преобразователь (ЦАП) 290 для вывода на устройство воспроизведения, такое как монитор. Однако система, изображенная на фиг.3A не отвечает всем критериям, описанным выше, поскольку существует только один оверлей. Чтобы соответствовать минимальному уровню функциональных возможностей, необходимых для высоконадежной среды, такой как высоконадежные окна, в дополнительном варианте осуществления допускаются два оверлея. Первый "конфиденциальный" оверлей является в основном оверлеем, который существует в сегодняшних платформах, прежде всего для воспроизведения видеоданных, доработанный таким образом, чтобы его содержимое могло быть зашифровано. Второй оверлей предназначен конкретно для представления чувствительного (связанного с важной информацией) интерфейса пользователя, такого как диалоги электронной коммерции. Этот 'защищенный оверлей' всегда расположен наверху и является нескрываемым, т.е. отсутствует использование цветового ключа, и он имеет старшинство по отношению к первому оверлею. Второй оверлей может быть подвергнут некоторым ограничениям для минимизации стоимости. Например, второй оверлей не может иметь данные в том же самом формате пикселя, как первичные данные, и не может быть растянут или мультибуферизирован. Кроме того, содержимое защищенного оверлея может быть проверено с помощью аппаратных средств. Таблица 3 суммирует типичные различия между конфиденциальным оверлеем и защищающим оверлеем.
Отличия конфиденциального и защищающего оверлея
Фиг.3B показывает систему, которая включает в себя и конфиденциальные оверлеи, например, оверлеи 310a, 310b и 310c цепочки 310 транспонирования (переброски, переключения) конфиденциального оверлея, и защищенный оверлей 320. Когда это возможно, потоковые шифры используются для шифрования защищенной поверхности, потому что они быстрее и более просты в осуществлении, чем блочные шифры (см. приложение A для более подробной информации). Потоковые шифры шифруют данные, основываясь на "позиции байта в потоке". Таким образом, первый уровень защиты инициализирует потоковый шифр с ключом шифрования пикселя с верхнего левого угла поверхности. Потоковый шифр продвигается для каждого пикселя, содержащегося в пределах оверлейной поверхности, независимо от того, будет ли данный пиксел отображен. Предложенная система содержит два компонента 300a и 300b дешифрования потокового шифра, один - для конфиденциального оверлея, и один - для защищенного оверлея, соответственно. Когда дешифрованные значения пиксела доступны, аппаратные средства 280 выбирают значение пиксела защищенного оверлея 320, конфиденциального оверлея 310 (если первичная поверхность 270 эквивалента цветовому ключу и/или если допускается использование цветового ключа) или первичной поверхности 270 и посылает значение пиксела аппаратным средствам дисплея через ЦВИ/ЦАП 290.
Следует отметить, что противник может получить доступ к оверлеям с помощью множества средств и таким образом или сделать отображаемое изображение невидимым, или заменить защищенное содержимое шумом, так как данные, записанные противником, также будут дешифроваться. Хотя описываемая в данной работе высоконадежная графическая платформа непосредственно не защищает от этих нападений, она на самом деле обеспечивает проверку целостности для гарантирования того, что ожидаемое содержимое было представлено конечному пользователю. Таким образом, если выходная информация отличается от вводимой информации, то пользователь или высоконадежное программное обеспечение 210 могут быть предупреждены, что в содержимое было осуществлено вмешательство.
Относительно программного интерфейса к оверлеям, помимо обычной оверлейной информации, такой как источник и ограничивающий прямоугольник адресата, цветовой ключ адресата и т.д., конфиденциальный оверлей 310 устанавливает, чтобы индекс ключа шифрования был определен, и защищенный оверлей 320 дополнительно устанавливает, чтобы ячейка памяти была определена, где должен быть записан циклический избыточный код (ЦИК, CRC) дешифрованного содержимого оверлея.
Интерфейс конфиденциального оверлея подобен существующим оверлеям, за исключением того, что способ транспонирования определяет индекс ключа шифрования содержимого обратного ("заднего") буфера 310a оверлея, т.е. буфера, в который данные транспонируются.
Интерфейс защищенного оверлея более прост и предусматривает, чтобы ЦИК поверхности был отправлен в ячейку памяти после того, как поверхность была отображена впервые. Стандартизованный аппаратный интерфейс управляет местоположением оверлея, и делает ЦИК доступным заинтересованному программному обеспечению на основании запроса. Например, один из регистров может указывать, доступен ли ЦИК, а другой может давать возможность считывать ЦИК. Например, следующий примерный псевдокод может использоваться в связи с интерфейсом защищенного оверлея:
HRESULT UpdateOverlay (LPPOINT ppntUL), где:
ppntUL определяет левый верхний угол защищенного оверлея.
В этом отношении программное обеспечение 210 вычисляет значение ЦИК, которое ожидается, если должна быть обеспечена целостность.
Второй уровень защиты - шифрование входов и выходов
Чтобы расширить ГП 265 для обеспечения приема зашифрованного содержимого на вход и выдачи зашифрованного содержимого на выход, к модулю отображения текстуры (со стороны входа) и модулю альфа-сопряжения (со стороны вывода) добавляются аппаратные средства шифрования и дешифрования, и проектировщики аппаратного обеспечения взаимодействуют для соблюдения некоторых правил в осуществлении этих функциональных возможностей. Так как потоковые шифры не допускают произвольного доступа к зашифрованным данным, система использует блочные шифры для шифрования данных, например, 128 бит за один раз. Модуль отображения текстуры дешифрует заполненные строки кэша, и модуль альфа-сопряжения дешифрует при чтении строки кэша из буфера цвета и шифрует перед записью. Ключи шифрования, используемые при этих операциях, могут быть различны.
Другие вычислительные задачи кроме трехмерного воспроизведения, например декодирование видеоданных, являются прямыми расширениями вышеописанного примера. Вместо текстур, зашифрованными входными данными служат макроблоки видеоданных, а вместо буфера цвета зашифрованным выходными данными является декодируемый выходной кадр. Если содержимое должно быть защищено, когда оно доставляется к ГП 265 по тому же самому каналу, что и поток команд, то буфер команд может также шифроваться, как описано ниже.
Фиг.4A изображает вышеописанную систему, выполняющую предварительную операцию, используя зашифрованную поверхность 420 в качестве входной информации и выводя зашифрованную поверхность в качестве выходной информации, т.е. предварительную часть метода шифрования текстуры и буфера цвета с помощью компонента 440 шифрования и дешифрования. Дополнительно обеспечивается зашифрованная текстура 400a, тогда как текстура 400b может быть типичной текстурой видеопамяти 260. Зашифрованная текстура 400a выводится к компоненту 450 дешифрования из ГП 265, который работает вместе с криптопроцессором 220 для дешифрования текстуры и применения графических алгоритмов, таких как затенение и т.д., к дешифрованным данным от компонента 440 с помощью компонента 430a.
В предположении внедрения составного, с транспонированной страницей, рабочего стола, вышеописанная система, показанная на фиг.4A, может обеспечить защиту всего рабочего стола, если аппаратные средства ЦАП могут дешифровать первичную поверхность 270 так же, как описанные выше оверлейные поверхности 310 и 320. Следует отметить, что в таком случае аппаратные средства ЦАП выполняют дешифрование с использованием блочного шифра, а не потокового шифра. Такая система дает возможность произвольному количеству конфиденциальных поверхностей присутствовать на рабочем столе, с произвольным Z-упорядочением, альфа-сопряжением или даже трехмерными или другими эффектами, применяемыми к ним, не ставя под угрозу защиту. Защищенные оверлейные поверхности 320, которые должны быть всегда поверх остальных окон, и содержимое которых должно поддаваться проверке, находятся на отдельных поверхностях. Описанный выше конфиденциальный оверлей 310 сохраняется до тех пор, пока он не сможет быть эмулированным программным обеспечением с помощью защищенного рабочего стола с транспонированием страницы или платформой.
В одном из вариантов осуществления, в дополнение к способности дешифровать первичную поверхность 270, система требует, чтобы ГП 265 был также способен шифровать открытый текст обычных приложений рабочего стола, таких как высоконадежный текстовый процессор, так чтобы они также могли находиться на рабочем столе. Фиг.4B иллюстрирует такой сценарий, в котором шифруется цепочка 510 транспонирования первичной поверхности, которая включает в себя переднюю поверхность 510b и заднюю поверхность 510a. Таким образом, первичные поверхности можно обрабатывать с помощью компонента 430 смешивания рабочего стола, защищая компонентом 440a шифрования/дешифрования для вывода из него/ввода в него соответственно. Вместе с криптопроцессором 220 компонент 500 дешифрования затем дешифрует переднюю поверхность 510b для вывода к ЦВИ/ЦАП 290. Это делает систему уязвимой к некоторым видам атак (попыток нарушения защиты), которые подробно описаны ниже по отношению к обеспечению защиты, где обсуждается стратегия защиты от таких атак.
Фиг.4C изображает альтернативу фиг.4B, в котором производится переписывание в конфиденциальный оверлей цепочки 310 транспонирования. Таким образом, как альтернатива шифрованию первичной 270 поверхности, аппаратные средства могут допускать шифрование с помощью потокового шифра для использования аппаратными средствами 300a конфиденциального оверлея, которые могут дешифровать данные потокового шифра вместе с криптопроцессором 220. Этот представленный механизм может быть более экономичным, чем шифрование первичной поверхности с помощью блочного шифра, но не может быть столь же масштабируемым или гибким, как разработанная альтернатива. Поскольку конфиденциальный оверлей 310 использует для шифрования потоковый шифр, то разумной операцией поддержания в этом контексте является операция 'копирования', в которой входная информация дешифруется с помощью компонента 440b дешифрования, с использованием блочного шифра входной поверхности 510a, и повторно шифруется компонентом 440b с использованием потокового шифра оверлея.
Эти варианты осуществления и различные их комбинации используются, например, когда достаточно существование в определенный момент времени одного зашифрованного входа, при условии, что любое количество вводов данных открытого текста может быть объединено с вводом зашифрованных входных данных для генерации зашифрованных выходных данных.
Относительно устойчивости защиты, существует множество мер, которые могут быть осуществлены. Прежде всего, вышеописанный второй уровень защиты основывается на идее, что невозможны утечки открытого текста из ГП 265 после его дешифрования. Например, не существует никаких регистров отладки или других средств, которые дают возможность открытому тексту читаться из чипа центральным процессором (ЦП) главного компьютера. В дополнение к тщательной конструкции аппаратуры, чтобы избежать таких утечек, система команд ГП 265 разработана так, чтобы было невозможно допустить дешифрование входной информации без шифрования выходной информации. Кроме того, аппаратные средства предотвращают утечку данных открытого текста за счет использования нестандартного драйвера, кода программы соперника или случайным образом.
Кроме того, аппаратные средства не могут допускать утечку ключей. Как только ключи доставляются ГП 265 посредством криптографического протокола, описанного в соответствии с обменом аутентификацией, они являются доступными только компонентам дешифрования и шифрования.
Как описано выше, если ГП 265 способен шифровать открытый текст для отображения на первичной поверхности 270, то эта особенность рассматривается как уязвимость системы, так как это средство шифрования является единственным из описанных механизмов, в котором противник может одновременно получить открытый текст и соответствующий зашифрованный текст. При отображении первичной поверхности так, чтобы она могла просматриваться центральным процессором, и создании окна, которое должно быть зашифровано, противник может создать подмножество блоков зашифрованного текста, которые соответствуют известным блокам открытого текста. Эти так называемые "атаки с помощью словаря" работают лучше всего, когда количество блоков, которые "представляют интерес", невелико. Например, для отображения черно-белых диалоговых окон в режиме визуального отображения 32 бит на пиксел, поскольку используется 4 пиксела на блок, для отображения такого диалога необходимы только 16 блоков. Одним из возможных средств для противника, который обнаружил 16 блоков зашифрованного текста, была бы фальсификация диалога с конечным пользователем путем создания содержимого, которое имеет смысл даже после дешифрования посредством ГП 265. По этой причине защищающий оверлей лучше всего подходит для создания устойчивых к вмешательству диалогов, потому что он дает возможность приложениям обнаружить, когда конечный пользователь не видит то, что ожидалось.
Таким образом, существуют две хорошие стратегии расстроить планы противников, которые хотят создать словари. Во-первых, поскольку словари подходят только для данного ключа, то изменяя ключ и повторно шифруя содержимое, можно вынудить противника начинать создавать новый словарь. Затем, для шифрования первичной поверхности ключ не должен быть доступен программному обеспечению - он может меняться в аппаратных средствах и программное обеспечение должно только уведомляться, что ключ изменился. Так как предыдущий ключ все еще доступен, программное обеспечение может использовать предыдущий ключ для дешифрования и повторного шифрования части первичной поверхности, которая не изменились. Следовательно, криптопроцессор 220 периодически меняет ключ шифрования для первичной поверхности 270 таким образом, чтобы предыдущий ключ был все еще доступным, например, с помощью двойной буферизации индексов ключа шифрования, и таким образом, чтобы уведомлять программное обеспечение, что ключ был изменен.
Другая стратегия использует кодирование местоположения в пределах изображения перед шифрованием. Например, местоположение (x, y) пиксела в изображении (или некоторое производное значение, такое как смещение изображения) может быть обработано с помощью операции "исключающее или" (XOR) и передано в данные пиксела перед его шифрованием, эта операция может быть затем выполнена в обратном направлении после дешифрования. В результате блоки пикселов в различных областях поверхности шифруются по-разному, и отображение зашифрованного текста и открытого текста имеет смысл только для данной позиции на поверхности, что недоступно противнику.
Также обеспечиваются предварительно определенные переформатированные форматы. Поскольку текстуры и закадровые (внеэкранные) поверхности требуют произвольного доступа, они должны кодироваться с помощью блочных шифров. Существует оптимальное соответствие между типичным размером блока для блочного шифра и типичным размером строки кэша для современного трехмерного акселератора, например, если и строка кэша, и размер блока равны 128 битов, то в аппаратных средствах может быть осуществлено эффективное шифрование и дешифрование. Даже если существуют небольшие различия (например, размер блока 128 битов и размера строки кэша 256 битов), то аппаратное воплощение, вероятно, будет эффективным.
Одной из проблем с зашифрованными данными текстуры является то, что схема блочного шифрования требует, чтобы блок смежных байтов был доступен прежде, чем он может быть зашифрован или дешифрован; и заполнение строки кэша требует, чтобы данные пиксела были 'переформатированы', т.е. чтобы преобразование позиции (X, Y) в изображении в адрес было сформировано так, чтобы заполнение строки кэша приводило к 2-мерной области пикселов. К настоящему времени поставщики аппаратных средств объявили о якобы линейных форматах поверхности при переформатировании данных изображения без знания приложения. Хотя высоконадежное программное обеспечение будет выводить зашифрованные данные текстуры, однако программное обеспечение должно иметь предварительное знание схемы переформатирования, так чтобы оно могло зашифровать блоки смежных данных и сохранить 2-хмерное местоположение. В ответ определяется словарь переформатированных форматов изображения, который включает в себя формат YUV (яркость, цветность синего - цветность красного) 4:4:4, 4:2:2 и 4:2:0 так же, как формат RGB (красный, зеленый, синий), для использования приложением. Производительность этих форматов может быть не такой высокой, как если бы изображения были бы переформатированы к аппаратно-зависимому формату, но шифрование реализуется ценой небольшого уменьшения производительности, т.е. защищенность в обмен на скорость.
Что касается формата AYUV/ARGB (32 бит на пиксел, упакованные), этот формат поверхности с 32 бит на пиксел содержит альфа-канал в дополнение к 8-битным каналам цвета выборки сигнала яркости (Y) и информации о цвете (U и V). Альтернативно, может использоваться стандартный формат ARGB (альфа-канал, красный, зеленый, синий) с 32 бит на пиксел, так как оба формата имеют 32 бит на пиксел и упакованы. Следующее обсуждение предполагает использование формата AYUV. Линейное размещение приведено на фиг.5A.
Смещение пиксела (X, Y) в изображении определяется следующим образом:
Offset=Y*Pitch+X*4
Принимая размер блока шифрования и размер строки кэша равным 128 битов, 4 пиксела могут соответствовать одному блоку. Чередование наименьших значащих битов X и Y перед генерацией адреса приведет к улучшенной 2-хмерной локальности в заполнении строки кэша. Эти блоки размещаются линейно согласно формату.
Результирующее размещение изображения показано на фиг.5B. Каждый пронумерованный прямоугольник - пиксел, а полужирные прямоугольники - зашифрованные блоки. Примерный псевдокод для функции переформатирование для этого формата, который преобразует местоположение (x, y) в изображении в смещение, является следующим:
DWORD
SwizzleAYUV (DWORD x, DWORD y, DWORD Pitch)
{
// pitch - количество байтов в строке макро блоков
DWORD BlockOffset = (y >> l) *Pitch + (x >> l) * (128/8);
DWORD IntraBlockOffset = ((y&2) << 2) | ((x&2) << l) | ((y&l) << l) | (x&l);
return BlockOffset+IntraBlockOffset*4;
}
Что касается формата YUY2 (16 бит на пиксел, упакованный), этот формат поверхности по горизонтали производит подвыборку выборки 'информации о цвете' U и V с коэффициентом 2. Результатом является упакованный формат изображения, который усредняется до 16 бит на пиксел. Линейное размещение показано на фиг.6A. Переформатированный формат распределяет зашифрованные блоки 4x2 пиксела, как показано на фиг.6B. Как и в случае с фиг.5A и 5B, также переформатируются 128-битные блоки. Следует отметить, что при рассмотрении фиг.6B и следующего примерного переформатирующего псевдокода, который преобразует пару координат (x, y) в смещение изображения, принимается, что значение U и V существует только для координат X:
DWORD
SwizzleYUY2Y( DWORD x, DWORD y, const SURFACEDESC& sd)
{
assert( x < sd.Width);
asert( y < sd.Height);
DWORD BlockOffset = (y>>l)*sd.Pitch+(x>>2)*(128/8);
DWORD IntraBlockOffset = ((x&2)<<l)|
((y&1)<<1)|
((y&1)<<0)
DWORD dwRet = BlockOffset+(IntraBlockOffset<<l);
return dwRet;
}
DWORD
SwizzleYUY2U( DWORD x, DWORD y, const SURFACEDESC& sd )
{
assert( x < sd.Width);
assert(0 == (x&l));
assert( y < sd.Height);
DWORD BlockOffset = (y>>l)*sd.Pitch+(x>>2)*(128/8);
DWORD IntraBlockOffset = ((x&2)<<l)|
((y&1)<<1)|
((y&1)<<0);
return BlockOffset+(IntraBlockOffset<<l )+l;
}
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)<<l)|
((y&1)<<1)|
((y&1)<<0);
return BlockOffset+(IntraBlockOffset<<l)+3;
}
В этом отношении, для псевдокода, осуществляющего переформатирование, показанное на фиг.5 A, 5B, 6A и 6B, шаг поверхности определяется как количество байтов в строке 128-битовых блоков.
Что касается упакованного плоского формата (12 бит на пиксел), этот формат поверхности производит подвыборку значений U и V с коэффициентом 2 по горизонтали и по вертикали. Выборки сигнала яркости и информации о цвете размещаются в двух отдельных частях поверхности. Линейное размещение упакованного плоского формата (12 бит на пиксел) показано на фиг.7A
Шаг поверхности определяется как количество байтов в строке 512-битных блоков в плоскости Y. Шаг плоскости UV - половина шага в плоскости Y, потому что там существует 1/4 выборок, но вдвое больше элементов цвета в выборке. Результирующий переформатированный формат изображения показан на фиг.7B.
Примерный псевдокод для функции переформатирования для этого формата, который преобразует координаты (x, y) в смещения для элементов 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 = ((y&2)<<2)|
((y&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.Pitch;
if((0!=(x&l))||(0!=(y&l)))
_asm int 3
x>>=1;
y>>=1;
DWORD BlockOffset = (y>>l)*sd.Pitch/2+(x>>2)*(128/8);
DWORD IntraBlockOffset = ((x&2) <<l)|
((y&1)<<1)|
(x&1);
return PlaneOffset+BlockOffset+(IntraBlockOffset<<l );
}
DWORD
SwizzlePP12V( DWORD x, DWORD y, const SURFACEDESC& sd )
{
DWORD PlaneOffset = (sd.Height>>3)*sd.Pitch;
if((0!=(x&l)) || (0!=(y&l)))
_asm int 3
x>>=l;
y>>=l;
DWORD BlockOffset = (y>>l)*sd.Pitch/2+(x>>2)*(128/8);
DWORD IntraBlockOffset = ((x&2)<<l)|
((y&1)<<1)|
(x&1);
return PlaneOffset+BlockOffset+(IntraBlockOffset<<l)+l;
}
Третий уровень защиты - шифрование буферов команд
Средства вариантов осуществления, описанных выше относительно первого и второго уровней защиты, могут быть расширены для облегчения шифрования буферов передаваемых ГП 265 команд, в дополнение к данным изображения, которые ГП 265 обрабатывает. Эти функциональные возможности желательны, если для приложения 210 необходимо защитить содержимое, которое передается к аппаратным средствам в буфер команд в том же самом канале, что и команды. Фиг.9A показывает декодирование видеоданных с использованием зашифрованного буфера 900 команд, посредством чего содержимое доставляется к зашифрованной текстуре 400a и дешифруется компонентом 450 дешифрования и декодируется видеодекодером 430b. Хотя шифрование возможно только для буфера команд, содержимое шифруется в видеопамяти так же, как в буфере команд, как показано с помощью зашифрованного декодированного кадра 420a. Таким образом, шифрование буфера команд является подходящим в ситуациях подобной этой, когда макроблоки находятся в видеопамяти и векторы движения и другие команды посылаются в потоке команд.
Ограничение элементарности для зашифрованных данных текстуры также применимо к зашифрованным данным буфера команд, с предупреждением, что шифрование буфера цветности может быть не достаточным для защиты рассматриваемого содержимого. Промежуточные буфера, например Z-буфер, могут также шифроваться, чтобы защитить систему от атак на открытый текст. Фиг.9B показывает пример воспроизведения трехмерной информации с использованием зашифрованного буфера команд. Как показано, команды 810 3-мерного воспроизведения шифруются по пути к видеодекодеру 430c. Данные 400a текстуры дешифруются с помощью компонента 450 дешифрования и обрабатываются согласно командам 810 с помощью видеодекодера 430c. В этом случае данные в буфере 820 цвета шифруются с помощью компонента 830 шифрования/дешифрования.
Обнаружение атаки может быть осуществлено перед применением буфера команд с использованием двух проходов, или после применения буфера команд. В одном из вариантов осуществления обнаружение атаки обеспечивается после отображения или воспроизведения содержимого.
Дополнительные альтернативные варианты осуществления - шифрование выходной информации графической платы
В каждом из вышеупомянутых вариантов осуществления, хотя конфиденциальность и целостность были описаны и показаны относительно части фиг.2, расположенной внутри пунктирной линии, конфиденциальность и целостность не были показаны относительно видеовыхода, то есть, теоретически, интерфейс между графической платой и устройством воспроизведения, таким как монитор, и/или само устройство воспроизведения, могут подвергаться атаке.
Таким образом, в вышеописанных вариантах осуществления, как показано на фиг.9A, в некоторой точке в течение процесса, даже при том, что содержимое защищено в видеопамяти и во время обработки графической платой, данные посылают на ЦВИ/ЦАП 290 в явном виде. В результате, данные могут быть скопированы незаконным путем или изменены по пути к устройству воспроизведения и в то время, когда они находятся в устройстве воспроизведения.
Таким образом, в соответствии с дополнительным вариантом осуществления, который может быть произвольно объединен с другими описанными вариантами осуществления, однотипный криптопроцессор 220b обеспечивается в устройстве воспроизведения для дополнения функциональных возможностей, выполняемых криптопроцессором 220a. В этом отношении, компонент 910a шифрования, коммуникативно связанный с криптопроцессором 220a, зашифровывает данные до доставки к компоненту 290 ЦВИ/ЦАП и компоненту 910b дешифрования, который коммуникативно связан с криптопроцессором 220b, дешифрует данные как часть осуществляемого отображения или воспроизведения, предотвращая незаконное присвоение данных. Альтернативно, компонент 290 ЦВИ/ЦАП может включать в себя компонент 910a шифрования. Короче говоря, применяя те же самые методы шифрования, дешифрования и управления ключом, содержимое может быть защищено по всему графическому конвейеру для криптографически защищенной надежной доставки и обработки содержимого.
Как упоминалось выше, хотя примерные варианты осуществления настоящего изобретения описаны в связи с различными вычислительными устройствами, аппаратными средствами, программным обеспечением и сетевыми архитектурами, основные концепции могут применяться к любому вычислительному устройству или системе, в которой необходимо защитить содержимое из высоконадежного источника. Таким образом, методы аутентификации компонента(ов) в связи с использованием высоконадежной графической системы в соответствии с настоящим изобретением могут применяться к разнообразию приложений и устройств. Например, части способов подтверждения подлинности компонента(ов) в связи с использованием высоконадежной графической системы, соответствующей изобретению, могут применяться к операционной системе вычислительного устройства, обеспеченного как отдельный объект в устройстве, как часть другого объекта, как объект, загружаемый с сервера, как распределенный объект и т.д. Хотя типичные языки программирования, псевдокод, имена и примеры выбраны для представления различных вариантов, данные языки, псевдокод, имена и примеры не должны быть ограничением.
Различные описанные методы могут быть осуществлены в связи с аппаратными средствами или программным обеспечением или, когда возможно, с помощью комбинации обоих. Таким образом, способы и устройство, соответствующие настоящему изобретению, или некоторые его аспекты или части, могут принимать форму кода программы (т.е. команд), воплощенной на материальных носителях, таких как гибкие дискеты, компакт-диски (CD-ROM), жесткие диски или любой другой машинно-читаемый носитель данных, причем, когда код программы загружается и выполняется машиной, например компьютером, такая машина становится устройством для реализации изобретения. В случае выполнения кода программы на программируемых компьютерах, вычислительное устройство будет в общем случае включать в себя процессор, считываемый процессором носитель данных (причем процессор включает в себя энергозависимую и энергонезависимую память и/или запоминающие элементы), по меньшей мере одно устройство ввода данных и по меньшей мере одно устройство вывода. Одна или более программ, которые могут использовать методы настоящего изобретения, например, с помощью обработки данных интерфейсом прикладного программирования (API), операционной системой, высоконадежным приложением или подобными им, предпочтительно осуществляются на высокоуровневом процедурном или объектно-ориентированном языке программирования для связи с компьютерной системой. Однако, если необходимо, программа(ы) может осуществляться на языке ассемблера или машинном языке. В любом случае, язык может быть транслируемым или интерпретируемым языком, и в различных вариантах осуществления изобретения он налагает условия на аппаратное воплощение ГП 265.
Способы и устройства, соответствующие настоящему изобретению, могут также быть реализованы посредством связи, воплощенной в форме кода программы, который передается в среде передачи данных, например, по электрическим проводам или кабелям, волоконной оптике или в любой другой форме передачи, причем, когда код программы принят, загружается и выполняется машиной, такой как программируемое ПЗУ, вентильная матрица, программируемое логическое устройство (PLD), клиентский компьютер, видеомагнитофон и т.п., или принимающая машина, имеющая графическую плату и возможности шифрования, как описано в примерных вариантах осуществления выше, становится устройством для реализации изобретения. При осуществлении на универсальном процессоре, код программы объединяется с процессором для обеспечения уникального устройства, которое действует для активизации функциональных возможностей согласно настоящему изобретению. Дополнительно, любые методы хранения, используемые в связи с настоящим изобретением, могут неизменно быть комбинацией аппаратных средств и программного обеспечения.
Хотя настоящее изобретение описано в связи с предпочтительными вариантами осуществления, показанными на различных чертежах, следует понимать, что могут использоваться другие подобные варианты осуществления или их модификации, и к описанному варианту осуществления могут быть сделаны добавления для выполнения той же самой функции настоящего изобретения без изменения его сущности. Например, хотя примерные сетевые среды для изобретения описаны в контексте сетевой среды, такой как среда одноранговой сети, специалисту должно быть ясно, что настоящее изобретение не ограничено этим и что описанные в настоящей заявке способы могут применяться на любом вычислительном устройстве или среде, таком как игровая приставка, карманный компьютер, переносной компьютер и т.д., проводной или беспроводный, и могут применяться к любому количеству таких вычислительных устройств, связанных через коммуникационную сеть и взаимодействующих по этой сети. Кроме того, следует подчеркнуть, что рассматривается разнообразие компьютерных платформ, которые включают в себя операционные системы для карманных устройств и другие приложения, которые являются специфическими для операционных систем, тем более, что количество беспроводных сетевых устройств продолжает быстро увеличиваться. Дополнительно, настоящее изобретение может быть воплощено в множестве чипов или устройств совместной обработки данных, таких как устройство, имеющее множество ГП, и любых запоминающих устройствах, в которых выполнение присущих им функций может производиться множеством устройств. Кроме того, приложение или устройство, которое воплощает методы аутентификации изобретения, даже не обязательно должно находиться на том же самом вычислительном устройстве, имеющем высоконадежную графическую платформу. Дополнительно, графическая плата в соответствии с данным изобретением может быть сменной платой, например платой с ускоренным графическим портом (AGP), или "интегрированной платой", т.е. такой, которая встроена в набор микросхем. Поэтому, настоящее изобретение не должно быть ограничено никаким единственным вариантом осуществления, а скорее должно рассматриваться в соответствии с широтой и формой приведенной в конце формулы изобретения.
Приложение A. Потоковые шифры по сравнению с блочными шифрами
Это приложение детализирует различия между потоковыми шифрами и блочными шифрами, поскольку они относятся к содержимому этого документа.
Как правило, потоковые шифры быстрее и проще в осуществлении, чем блочные шифры.
Как следует из названия, потоковые шифры шифруют и дешифруют поток байтов. Чтобы дешифровать N-й байт в потоке, шифрование начинается сначала и продвигается по одному байту к требуемому смещению в потоке.
Напротив, блочные шифры, которые выполняются в режиме электронной кодовой книги, могут шифровать или дешифровать произвольные блоки данных, но должны шифровать/дешифровать весь блок одновременно. Типичный размер блока - 16 байтов.
Потоковые шифры используются таким образом, что те же самые данные никогда не шифруются дважды, т.е. ключ, используемый для шифрования и дешифрования, должен часто меняться. Например, при использовании для высококачественного видеовоспроизведения достаточно менять ключ один раз за кадр.
В заключение следует отметить, что существуют блочные шифры хорошего качества, доступные среди свободно копируемых программ.
Изобретение относится к способам и системам проверки подлинности компонентов при использовании графической системы, которая обеспечивает криптографическую защиту содержимого, направляемого через графический конвейер. Техническим результатом является обеспечение аутентификации при использовании высоконадежной графической платформы. Указанный результат достигается за счет того, что обеспечиваются методы аутентификации графической платы в связи с системой, которая обеспечивает криптографическую защиту содержимого, направляемого через графический конвейер, таким образом приложение или устройство могут показать высоконадежной графической платформе, что это приложение или устройство является высоконадежным пользователем графической платформы. Графическая платформа может сообщить высоконадежному приложению или устройству, что приложение или устройство может доверять графической платформе. 4 н. и 46 з.п. ф-лы, 9 ил., 3 табл.
запрашивают приложением или устройством графическую плату для проверки того, что графическая плата является защищенной графической платой,
в ответ на указанный запрос генерируют ключ сеанса с помощью криптографического процессора, который защищенным образом и с возможностью осуществления информационного обмена связан с графической платой, и
передают указанный ключ сеанса упомянутому приложению или устройству,
при этом криптографический процессор включает в себя (1) мультиразрядный энергозависимый регистр S для ключа сеанса и (2) массив множества индексных ключей, и
продолжительность жизни ключа сеанса равна времени работы приложения или устройства, и продолжительность жизни каждого ключа из множества ключей управляется командами от приложения или устройства.
шифруют в упомянутом приложении или устройстве ключ сеанса с использованием открытого ключа криптографического процессора, таким образом создавая "криптоблоб" ключа сеанса,
принимают криптографическим процессором "криптоблоб" ключа сеанса, и
дешифруют с помощью криптографического процессора "криптоблоб" ключа сеанса с использованием секретного ключа криптографического процессора, таким образом получая ключ сеанса,
при этом упомянутое приложение или устройство и криптографический процессор совместно используют секретную информацию, предоставляя упомянутому приложению или устройству возможность использовать ключ сеанса для передачи команд криптографическому процессору.
функцию Set Session Key, которая вызывает прием, прием и дешифрование, при этом упомянутый ключ сеанса используется для обеспечения всей дальнейшей связи между криптографическим процессором и упомянутым приложением или устройством, соответственно
функцию Set и
функцию Get,
при этом упомянутое приложение или устройство и криптографический процессор осуществляют связь посредством функций Set и Get, параметры которых криптографически защищены для конфиденциальности и целостности.
ключ L1STREAM, используемый с потоковым шифром, который используется в связи с шифрованием оверлейных поверхностей, и
ключ L2BLOCK, используемый с блочным шифром, который используется при дешифровании блоков текстуры, которые были записаны упомянутым приложением или устройством.
приложение или устройство и
графическую плату, имеющую, по меньшей мере, один ГП и криптографический процессор, который защищенным образом и с возможностью осуществления информационного обмена связан с упомянутым, по меньшей мере, одним ГП,
причем упомянутое приложение или устройство запрашивает, чтобы графическая плата удостоверила, что графическая плата является защищенной графической платой, и при этом в ответ на запрос криптографический процессор генерирует ключ сеанса и передает ключ сеанса упомянутому приложению или устройству,
при этом криптографический процессор включает в себя (1) мультиразрядный энергозависимый регистр S для ключа сеанса и (2) массив множества индексных ключей, и
продолжительность жизни ключа сеанса равна времени работы приложения или устройства, и продолжительность жизни каждого ключа из множества ключей управляется командами от приложения или устройства.
шифруют с помощью упомянутого приложения или устройства ключ сеанса с использованием открытого ключа криптографического процессора, таким образом создавая "криптоблоб" ключа сеанса,
принимают криптографическим процессором "криптоблоб" ключа сеанса, и
дешифруют с помощью криптографического процессора "криптоблоб" ключа сеанса с использованием секретного ключа криптографического процессора, таким образом получая ключ сеанса,
при этом упомянутое приложение или устройство и криптографический процессор совместно используют секретную информацию, что дает возможность упомянутому приложению и устройству использовать ключ сеанса для передачи команд криптографическому процессору.
функцию SetSessionKey, которая вызывает прием, прием и дешифрование, при этом упомянутый ключ сеанса используется для обеспечения всей дальнейшей связи между криптографическим процессором и упомянутым приложением или устройством, соответственно
функцию Set и
функцию Get,
при этом упомянутое приложение или устройство и криптографический процессор осуществляют связь посредством функций Set и Get, параметры которых криптографически защищены для конфиденциальности и целостности.
ключ L1STREAM, используемый с потоковым шифром, который используется в связи с шифрованием оверлейных поверхностей, и
ключ L2BLOCK, используемый с блочным шифром, который используется для дешифрования блоков текстуры, которые были записаны упомянутым приложением или устройством.
средство выдачи запроса приложением или устройством графической плате для проверки того, что графическая плата является защищенной графической платой,
средство генерации ключа сеанса криптографическим процессором, который защищенным образом и с возможностью осуществления информационного обмена связан с графической платой, в ответ на запрос средства запроса, и
средство передачи ключа сеанса упомянутому приложению или устройству,
при этом криптографический процессор включает в себя (1) мультиразрядный энергозависимый регистр S для ключа сеанса и (2) массив множества индексных ключей, и
продолжительность жизни ключа сеанса равна времени работы приложения или устройства, и продолжительность жизни каждого ключа из множества ключей управляется командами от приложения или устройства.
средство предъявления ключа сеанса графической плате в связи с запросом о ресурсах графической платы.
при этом физическая связь между криптографическим процессором и остальной частью графической платы не доступна и не обнаруживается.
средство шифрования упомянутым приложением или устройством ключа сеанса с использованием открытого ключа криптографического процессора, таким образом создавая "криптоблоб" ключа сеанса,
средство приема криптографическим процессором "криптоблоба" ключа сеанса, и
средство дешифрования криптографическим процессором "криптоблоба" ключа сеанса с использованием секретного ключа криптографического процессора, таким образом получая ключ сеанса,
при этом упомянутые приложение или устройство и криптографический процессор совместно используют секретную информацию, предоставляя упомянутому приложению или устройству возможность использовать ключ сеанса для передачи команд криптографическому процессору.
функцию SetSessionKey, которая вызывает средство приема, средство приема и средство дешифрования, при этом ключ сеанса используется для обеспечения защиты всей дальнейшей связи между криптографическим процессором и упомянутым приложением или устройством, соответственно
функцию Set и
функцию Get,
причем упомянутые приложение или устройство и криптографический процессор осуществляет связь посредством функций Set и Get, параметры которых криптографически защищены для конфиденциальности и целостности.
ключ L1STREAM, используемый с потоковым шифром, который используется в связи с шифрованием оверлейных поверхностей, и
ключ L2BLOCK, используемый с блочным шифром, который используется для дешифрования блоков текстуры, которые были записаны упомянутым приложением или устройством.
средство выдачи запроса приложением или устройством к графической плате для проверки того, что графическая плата является защищенной графической платой,
средство генерации ключа сеанса криптографическим процессором, который защищенным образом и с возможностью осуществления информационного обмена связан с графической платой, в ответ на запрос средства выдачи запроса, и
средство передачи ключа сеанса упомянутому приложению или устройству,
при этом криптографический процессор включает в себя (1) мультиразрядный энергозависимый регистр S для ключа сеанса и (2) массив множества индексных ключей, и
продолжительность жизни ключа сеанса равна времени работы приложения или устройства, и продолжительность жизни каждого ключа из множества ключей управляется командами от приложения или устройства.
средство предъявления ключа сеанса графической плате в связи с запросом о ресурсах графической платы.
при этом физическая связь между криптографическим процессором и остальной частью графической платы не доступна и не обнаруживается.
средство шифрования упомянутым приложением и устройством ключа сеанса с использованием открытого ключа криптографического процессора, таким образом создавая "криптоблоб" ключа сеанса,
средство приема криптографическим процессором "криптоблоба" ключа сеанса, и
средство дешифрования криптографическим процессором "криптоблоба" ключа сеанса с использованием секретного ключа криптографического процессора, таким образом получая ключ сеанса,
при этом упомянутое приложение или устройство и криптографический процессор совместно используют секретную информацию, предоставляя возможность упомянутому приложению или устройству использовать ключ сеанса для передачи команд криптографическому процессору.
функцию SetSessionKey, которая вызывает средство приема, средство приема и средство дешифрования, при этом ключ сеанса используется для обеспечения всей дальнейшей связи между криптографическим процессором и упомянутым приложением или устройством, соответственно
функцию Set и
функцию Get,
при этом упомянутое приложение или устройство и криптографический процессор осуществляет связь посредством функций Set и Get, параметры которых криптографически защищены для конфиденциальности и целостности.
ключ L1STREAM, используемый с потоковым шифром, который используется в связи с шифрованием оверлейных поверхностей, и
ключ L2BLOCK, используемый с блочным шифром, который используется для дешифрования блоков текстуры, которые были записаны упомянутым приложением или устройством.
US 6064739 А, 16.05.2000 | |||
УПРАВЛЕНИЕ ДОСТУПОМ С ИСПОЛЬЗОВАНИЕМ ПАРАМЕТРИЗИРОВАННОЙ ХЭШ-ФУНКЦИИ | 1996 |
|
RU2142674C1 |
Способ обратного выделения йода из угля | 1935 |
|
SU43879A1 |
WO 0225416 A, 28.03.2002. |
Авторы
Даты
2007-11-10—Публикация
2003-04-17—Подача