Область техники
Настоящее изобретение относится к способам и системам для обработки данных с использованием видеоплат.
Предшествующий уровень техники
В типовом случае информационное содержание, находящееся в компьютере, может подвергаться попыткам взлома (несанкционированного доступа) лицами, которые стремятся похитить или модифицировать такое содержательное наполнение. В качестве примера рассмотрим случай автора содержательных материалов, такого как киностудия или пользователь, публикующего содержательные материалы на web-странице. В типовом случае эти лица будут публиковать видеосодержание, которое имеет ограничения на то, каким образом пользователи могут просматривать их. Это содержание в типовом случае может просматриваться или визуализироваться на компьютере, например на персональном компьютере. Большое количество времени, усилий и финансовых средств тратится каждый год недобросовестными людьми и организациями в попытках похитить или иным образом заполучить такое видеосодержание. Кроме того, рассмотрим случай программного обеспечения электронной коммерции, которое позволяет пользователям осуществлять сделки, например, банковские транзакции. Данные, которые отображаются на мониторе дисплея пользователю для просмотра и манипулирования данными, могут подвергаться попыткам взлома приложениями инородного программного обеспечения, исполняемого на компьютере пользователя. Т.е. инородные программы или устройства могут и часто пытаются несанкционированно получить содержание, как только оно получено на компьютере, таком как персональный компьютер.
Возможное решение, обеспечивающее защиту, может включать различные, основанные на программном обеспечении решения по цифровому управлению правами (ЦУП). Проблема в данном случае состоит в том, что не имеет значения, насколько хороша основанная на программном обеспечении, защищенная от несанкционированного доступа, «защищенная от наблюдения» система ЦУП, которая осуществляет программную визуализацию, - в конечном счете биты переходят в состояние записи на видеоплату, где их может «увидеть» и даже скопировать другое программное обеспечение. Это представляет сферу уязвимости. Таким образом, видеоплата, которая обрабатывает видеосодержание, может оказаться объектом попыток нарушения защиты.
На фиг. 1 представлен пример видео (или графической) платы 100, которая включает шинный разъем 102, который вставляется в порт на типовом компьютере. Видеоплата 100 также включает разъем 104 монитора (например, вилку на 15 выводов) для подсоединения кабеля, который соединяется с монитором. Видеоплата 100 может включать в себя цифровое гнездо 106 видеовыхода, которое может использоваться для передачи видеоизображений на жидкокристаллические (ЖК) и плоскопанельные мониторы и т.п.
Современная видеоплата состоит из четырех основных компонентов: графического процессора (ГП) 108, видеопамяти 110, цифроаналогового преобразователя оперативной памяти (ЦАП ОЗУ) 112 и программного обеспечения драйвера, который может быть включен в базовую систему ввода/вывода видеоданных (видео BIOS) 114.
ГП 108 представляет собой специализированную микросхему обработки графики, которая управляет всеми аспектами разрешения, глубины цвета и всеми элементами, связанными с воспроизведением изображений на экране монитора. Центральный процессор (ЦП) компьютера посылает набор инструкций и данных для рисования, которые интерпретируются специализированным драйвером графической платы и выполняются ГП 108 платы. ГП 108 выполняет такие операции, как переносы битовых карт и рисование, изменение размеров окна и изменение позиционирования, вычерчивание линий, масштабирование шрифта и рисование многоугольниками. ГП 108 проектируется для обработки этих задач в аппаратных средствах с намного более высокими скоростями, чем у программного обеспечения, исполняемого в системном ЦП. ГП затем записывает данные кадров в кадровый буфер (или во встроенную память 110 видеоданных). ГП в значительной степени сокращает нагрузку системного ЦП.
Память для хранения видеоизображения также называется кадровым буфером и обычно реализуется на самой видеоплате. В данном примере кадровый буфер реализован на видеоплате в форме памяти 110. Ранние системы реализовывали память видеоданных в стандартной динамической оперативной памяти (DRAM). Однако это требует постоянного обновления данных, чтобы предотвратить их потери, причем данные не могут модифицироваться в течение этого процесса обновления. Вследствие этого, в частности на очень высоких тактовых скоростях, требуемых современными графическими платами, рабочие характеристики существенным образом ухудшаются.
Преимуществом реализации памяти видеоданных на самой видеоплате является то, что она может настраиваться на конкретную задачу и, на самом деле, это привело в результате к быстрому разрастанию новых технологий памяти:
- оперативная память видеоданных (Video RAM(VRAM)): специальный тип двухпортовой DRAM, в которую одновременном может осуществляться запись и считывание. Она также требует намного менее частого обновления, чем обычная DRAM, и, следовательно, обеспечивает намного лучшие рабочие характеристики;
- Windows RAM (WRAM - двухпортовая память): в том виде, как она используется платой Matrox Millennium, эта память также представляет собой двухпортовую память и может работать несколько быстрее, чем обычная VRAM;
- EDO RAM (динамическая память с увеличенным временем доступности данных): обеспечивает большую ширину полосы, чем DRAM, может тактироваться с более высокой частотой, чем обычная DRAM, и более эффективно управляет циклами записи/считывания;
- SDRAM (синхронная динамическая память): подобна EDO RAM, за исключением того, что микросхемы памяти и графики работают с общим тактовым сигналом, используемым для фиксации данных, позволяя SDRAM работать более быстро, чем обычная память EDO RAM;
- SGRAM (синхронная графическая оперативная память): то же самое, что и SDRAM, но также поддерживает блочную запись и побитовую запись, что дает лучшие рабочие характеристики на графических микросхемах, которые поддерживают эти улучшенные функциональные возможности; и
- DRDRAM: прямая RDRAM, представляющая собой совершенно новую универсальную архитектуру памяти, которая обеспечивает 20-кратное улучшение рабочих характеристик по сравнению с обычной динамической оперативной памятью DRAM.
Некоторые конструкции интегрируют графические схемы в саму материнскую плату и используют часть системной оперативной памяти для кадрового буфера. Это определяется как «объединенная архитектура памяти» и используется только по причинам снижения стоимости и может привести к ухудшению эффективности графики.
Информация в кадровом буфере памяти видеоданных представляет собой изображение, которое появляется на экране, сохраненное как цифровая битовая карта. Но в то время как память видеоданных содержит цифровую информацию, ее выходной носитель, монитор, может использовать аналоговые сигналы. Аналоговые сигналы требуют более чем простого сигнала включения или выключения, как это используется для определения того, где, когда и какой интенсивностью электронная пушка должна быть инициирована, по мере того как она сканирует по монитору. Именно в этом случае используется память ЦАП ОЗУ (RAMDAC) 112, как описано ниже. Некоторые блоки памяти RAMDAC также поддерживают выходные данные цифрового видеоинтерфейса (DVI) для цифровых дисплеев, таких как ЖК мониторы. В таких конфигурациях RAMDAC преобразует внутреннее цифровое представление в форму, понятную для цифрового дисплея. Память RAMDAC выполняет функцию «цифрового преобразователя», поскольку она преобразует внутренние цифровые данные в форму, которая понятна для дисплея.
Даже если полный объем памяти видеоданных, инсталлированной на видеоплате, может не потребоваться для конкретного разрешения, дополнительная память часто используется для кэширования информации для графического процессора 108. Например, кэширование обычно используемых графических элементов, таких как текстовые шрифты и пиктограммы или изображения, устраняет необходимость в графических подсистемах для загрузки их каждый раз, когда записывается новый символ или перемещается пиктограмма, и при этом улучшаются рабочие характеристики.
Много раз за секунду RAMDAC 112 считывает содержание памяти видеоданных, преобразует его в сигнал и передает его по видеокабелю к монитору. Для аналоговых дисплеев в типовом случае имеется один цифроаналоговый преобразователь (ЦАП) для каждого из трех первичных цветов, которые ЭЛТ использует для создания полного спектра цветов. Для цифровых дисплеев память RAMDAC выдает единый поток RGB (красный-синий-зеленый) данных для интерпретации и отображения на выходном устройстве. Предусматриваемым результатом является корректная смесь, необходимая для создания цвета одного пиксела (элемента изображения). Скорость, с которой RAMDAC может преобразовывать информацию, и собственно конструкция графического процессора 108 определяет диапазон частот обновления, которые может поддерживать графика. RAMDAC 112 также определяет число цветов, доступных при заданном разрешении, в зависимости от его внутренней архитектуры.
Шинный разъем 102 может поддерживать одну или более шин, которые используются для соединения с видеоплатой. Например, шина ускоренного графического порта (AGP) может обеспечить прямой доступ видеоплаты к системной памяти. Непосредственный доступ к памяти позволяет сделать пиковую ширину полосы во много раз большей, чем у шины стандарта PCI (взаимного соединения периферийных компонентов). Это может позволить графическому процессору системы выполнять другие задачи в то время, когда графический процессор на видеоплате получает доступ к системной памяти.
В процессе работы данные, содержащиеся в памяти видеоданных на плате, могут быть выданы в системную память компьютера и могут управляться, как если бы они были частью системной памяти. Это включает использование, например, методов управления виртуальной памятью, которые использует программа-менеджер памяти компьютера. Кроме того, когда данные, содержащиеся в системной памяти, необходимы для операции графики на видеоплате, данные могут быть посланы по шине (такой как шина PCI или AGP) на видеоплату и сохраняться в памяти 110 видеоданных на плате. Затем к данным может быть обеспечен доступ и обработка со стороны графического процессора 108, как описано выше.
Настоящее изобретение вытекает из соображений, связанных с обеспечением способов и систем для защиты данных. В частности, изобретение вытекает из соображений, связанных с обеспечением способов и систем, которые являются устойчивыми по отношению к попыткам несанкционированного доступа, которые реализуются инородными приложениями, выполняемыми на компьютере пользователя.
Сущность изобретения
Различные способы и системы, описанные здесь, направлены на обеспечение защищенного канала для программного обеспечения, исполняемого на главном компьютере (хосте). Эти способы и системы обеспечивают решения для модели попыток несанкционированного доступа, в которой инородное программное обеспечение, исполняемое на компьютере-хосте, пытается несанкционированным образом получить доступ к данным или иным образом манипулировать данными. Некоторые варианты осуществления могут обеспечить данные элементов изображения, в отношении которых может поддерживаться конфиденциальность (состоящая в том, что не являющиеся доверительными приложения программного обеспечения не могут считывать данные с экрана дисплея). Кроме того, другие варианты осуществления могут сохранять целостность данных элементов изображения путем обнаружения того, имело ли место несанкционированное манипулирование данными элементов изображения.
Различные варианты осуществления базируются на процессоре дешифрирования, который располагается на видеоплате и действует на самом позднем этапе в последовательности обработки видеоданных, так что программный доступ к дешифрованным данным элементов изображения отклоняется.
Краткое описание чертежей
Фиг. 1 - блок-схема, показывающая различные компоненты приведенной для примера видео или графической платы, предназначенной для использования в компьютерной системе.
Фиг. 2 - блок-схема приведенной для примера компьютерной системы, которая может использовать видеоплаты в соответствии с описанным вариантом осуществления.
Фиг. 3 - блок-схема, показывающая различные компоненты приведенной для примера видео или графической платы, соответствующей изобретению.
Фиг. 4 - блок-схема, показывающая приведенную для примера основную поверхность, имеющую защищенные и незащищенные области.
Фиг. 5 - блок-схема последовательности этапов в способе, соответствующей возможному варианту осуществления.
Фиг. 6 - блок-схема последовательности этапов в способе, соответствующей возможному варианту осуществления.
Фиг. 7 - блок-схема, показывающая приведенную для примера основную поверхность, имеющую защищенную область и незащищенную область.
Фиг. 8 - блок-схема, показывающая экран дисплея, имеющий перекрывающиеся окна.
Фиг. 9 - диаграмма, показывающая приведенные для примера данные элементов изображения и связанную с этим таблицу вспомогательных функций.
Фиг. 10 - блок-схема последовательности этапов в способе, соответствующей возможному варианту осуществления.
Фиг. 11 - диаграмма, показывающая приведенную для примера таблицу ключей для каждого элемента изображения, соответствующую возможному варианту осуществления.
Фиг. 12- блок-схема последовательности этапов в способе, соответствующей возможному варианту осуществления.
Фиг. 13 - диаграмма, иллюстрирующая приведенную для примера таблицу, соответствующую возможному варианту осуществления.
Детальное описание
Примерная компьютерная система
На фиг. 2 представлен пример соответствующей среды 200 вычислительной системы, в которой могут быть реализованы система и соответствующие способы.
Следует иметь в виду, что среда 200 вычислительной системы является всего лишь примером подходящей вычислительной среды и не означает никаких ограничений объема или функциональных возможностей системы обработки медийных данных. Вычислительная среда 200 также не должна интерпретироваться как имеющая какую-либо зависимость или требующая связи с каким-либо одним компонентом или комбинацией компонентов, показанных в иллюстрируемом примере вычислительной среды 200.
Различные описанные варианты осуществления могут быть реализованы с использованием многочисленных других сред или конфигураций универсальных или специализированных вычислительных систем. Примеры хорошо известных вычислительных систем, сред и/или конфигураций, которые могут подходить для использования с системой обработки медийных данных, включают, без какого-либо ограничения, персональные компьютеры, компьютеры-серверы, тонкие клиенты, толстые клиенты, портативные или переносные устройства, мультипроцессорные системы, микропроцессорные системы, приставки, программируемые потребительские электронные приборы, сетевые персональные компьютеры, миникомпьютеры, универсальные компьютеры (мэйнфреймы), распределенные вычислительные среды, которые включают любые из вышеуказанных систем или устройств и т.п.
В некоторых реализациях система и связанные с ней способы могут быть описаны в общем контексте выполняемых компьютером инструкций, таких как программные модули, выполняемые компьютером. В общем случае программные модули включают в себя стандартные подпрограммы, программы, объекты, компоненты, структуры данных и т.д., которые выполняют конкретные задачи или реализуют конкретные абстрактные типы данных. Эти варианты осуществления также могут быть реализованы в распределенных вычислительных средах, где задачи выполняются удаленными устройствами обработки, связанными посредством коммуникационных сетей. В распределенной вычислительной среде программные модули могут находиться как на локальных, так и на удаленных компьютерных носителях информации, включая устройства памяти.
Как показано на фиг. 2, приведенная для примера вычислительная система 200 содержит один или более процессоров или процессорных блоков 202, системную память 204 и шину 206, которая связывает различные компоненты системы, включая системную память 204, с процессором 202.
Шина 206 представляет одну или более из различных типов шинных структур, включая шину памяти или контроллер памяти, периферийную шину, ускоренный графический порт и процессор или локальную шину, использующую любую из шинных архитектур. В качестве примера, но не для ограничения, могут быть указаны такие архитектуры, как шина ISA (архитектура промышленного стандарта), шина MCA (микроканальная архитектура), усовершенствованная шина ISA (EISA), локальная шина VESA (ассоциации стандартов по видеоэлектронике), шина PCI (межсоединений периферийных компонентов), также известная как шина Mezzanine.
Компьютер 200 в типовом случае содержит множество носителей информации, считываемых компьютером. Такие носители могут представлять собой любую доступную среду, к которой осуществляется локальный и/или удаленный доступ компьютером 200, и могут включать энергозависимые и энергонезависимые носители, съемные и несъемные носители.
На фиг. 2 системная память 204 включает считываемые компьютером носители информации в форме энергозависимой памяти (ОЗУ (RAM)) 210 и/или энергонезависимой памяти, такой как ПЗУ (ROM) 208. Базовая система ввода/вывода (BIOS) 212, содержащая базовые стандартные подпрограммы для обеспечения переноса информации между элементами в компьютере 200, такими как в процессе запуска, в типовом случае сохранена в ПЗУ 208. ОЗУ 210 в типовом случае содержит данные и/или программные модули, которые являются непосредственно доступными для процессорного блока 202 и/или в текущее время обрабатываемыми им.
Компьютер 200 может также включать в себя другие съемные/несъемные, энергозависимые/энергонезависимые компьютерные носители информации. В качестве примера, фиг. 2 иллюстрирует накопитель 228 на жестких дисках, который считывает или записывает на несъемные энергонезависимые магнитные носители информации (не показаны, в типовом случае называются жесткими дисками), накопитель 230 на магнитных дисках, который считывает или записывает на съемный, энергонезависимый магнитный диск 232 (например, «гибкий диск») и накопитель 234 на оптических дисках, который считывает или записывает на съемный энергонезависимый оптический диск 236, такой как ПЗУ на компакт-диске (CD-ROM), ПЗУ на многоцелевом цифровом диске (DVD-ROM) или иные оптические носители информации. Накопитель 228 на жестких дисках, накопитель 230 на магнитных дисках и накопитель 234 на оптических дисках соединены с шиной 206 одним или более интерфейсов 226.
Накопители и связанные с ними считываемые компьютером носители обеспечивают энергонезависимую память для считываемых компьютером инструкций, структур данных, программных модулей и других данных для компьютера 200. Хотя в описываемом примере осуществления используются жесткий диск 228, съемный магнитный диск 232 и съемный оптический диск 236, специалистам в данной области техники должно быть понятно, что другие типы считываемых компьютером носителей информации также могут быть использованы в приведенной для примера операционной среде, включая кассеты на магнитных лентах, платы флэш-памяти, цифровые многофункциональные диски, цифровые видеомагнитные ленты, RAM, ROM и т.п.
Ряд программных модулей может быть сохранен на жестком диске 228, магнитном диске 232, оптическом диске 236, ПЗУ 208 или ОЗУ 210, включая, для примера, но не в качестве ограничения, операционную систему 214, одну или более прикладных программ 216 (например, мультимедийное приложение 224), другие программные модули 218 и программные данные 220. Пользователь может ввести команды и информацию в компьютер 200 посредством устройств ввода, таких как клавиатура 238 и координатно-указательное устройство 240 (например, мышь). Другие устройства ввода могут включать в себя устройство (устройства) 253 ввода аудио/видеоданных, микрофон, джойстик, игровую панель, антенну спутниковой связи, сканер и т.п. (не показаны). Эти и другие устройства ввода часто подсоединяются к процессорному блоку 202 через интерфейс 242 ввода, который связан с шиной 206, но может быть подсоединен посредством других структур интерфейсов и шин, таких как параллельный порт, игровой порт или универсальная последовательная шина (USB).
Монитор 256 или устройство отображения другого типа также соединено с шиной 206 через интерфейс, такой как видеоадаптер или видео/графическая плата 244. В дополнение к монитору, персональные компьютеры в типовом случае включают другие периферийные устройства вывода (не показаны), такие как громкоговорители и принтеры, которые могут быть подключены через интерфейс 246 периферийных устройств вывода.
Компьютер 200 может работать в сетевой среде с использованием логических соединений с одним или более удаленных компьютеров, таких как удаленный компьютер 250. Удаленный компьютер 250 может включать многие или все из элементов и признаков, описанных выше в связи с компьютером.
Как показано на фиг. 2, вычислительная система 200 связана с удаленными устройствами (например, с удаленным компьютером 250) через локальную сеть (LAN) 251 и глобальную сеть (WAN) 252. Такие сетевые среды широко используются в офисах, компьютерных сетях предприятий, интранетах и в Интернете.
При использовании в сетевой среде LAN компьютер 200 подключен к локальной сети LAN 251 через соответствующий сетевой интерфейс или адаптер 248. При использовании в среде глобальной сети WAN компьютер 200 обычно включает в себя модем 254 или иное средство для установления связи в глобальной сети WAN 252. Модем 254, который может быть внутренним или внешним, может соединяться с системной шиной 206 через интерфейс 242 пользовательского ввода или иной подходящий механизм.
В сетевой среде программные модули, показанные на чертеже в связи с компьютером 200, или их части могут храниться в удаленных устройствах памяти. В качестве примера, но не ограничения, фиг. 2 иллюстрирует удаленные прикладные программы 216 как находящиеся в устройстве памяти удаленного компьютера 250. Ясно, что показанные сетевые соединения приведены для примера и могут быть использованы другие средства установления линий связи между компьютерами.
Обзор
Различные способы и системы, описанные здесь, направлены на обеспечение защищенного канала для программного обеспечения, исполняемого на компьютере-хосте. Эти способы и системы обеспечивают решения для модели попыток несанкционированного доступа, в которой инородное программное обеспечение, выполняемое на компьютере-хосте, пытается несанкционированным образом получить доступ или манипулировать данными иным образом. Различные варианты осуществления могут обеспечить среду защищенного выполнения, в которой данные могут защищенным образом воспроизводиться на дисплее для пользователя, чтобы взаимодействовать с ним. Описанные варианты осуществления могут воплощать, в числе других характеристик, одну или более из следующих характеристик.
Первая характеристика состоит в том, что данные, например данные элементов изображений, которые находятся на видеоплате, могут сохраняться конфиденциальными. Это означает, что недостоверные приложения (или инородные приложения) не могут считывать данные с экрана дисплея или из памяти видеоданных. Аспект конфиденциальности полезен в цифровой рабочей области, так как если некто визуализирует видеоданные или данные элементов изображения, желательно иметь возможность посылать видеоданные на видеоплату таким образом, чтобы инструментальное средство взлома, исполняемое на компьютере, не могло считать данные. Например, рассмотрим случай, когда пользователь работает в защищенной программе электронной почты, которая позволяет ему принимать данные в зашифрованной форме. Различные варианты осуществления могут обеспечить возможность визуализации данных на экране дисплея без риска того, что инородное приложение получит доступ к данным.
Вторая характеристика заключается в целостности. Под этим понимается, что, в принципе, пользователю нежелательно, чтобы недостоверное программное обеспечение (или инородное программное обеспечение) имело возможность манипулирования данными, которые отображаются на отдельных частях дисплея. Рассмотрим, например, осуществление электронной сделки, в которой пользователь реализует посредством исполнения программного обеспечения на своем компьютере оплату некоторой компании 10 долларов США. Пользователь может просто напечатать сумму в долларах в окне, отображенном на его экране. Однако возможно, что инородное приложение изменило "$1000" на "10$". Ясно, что это нежелательно: пользователь авторизовал платеж более крупной суммы, чем подразумевалось.
Кроме того, если некоторое недостоверное программное обеспечение ненадлежащим образом манипулирует данными определенным способом, было бы желательным иметь возможность сообщить, что это имело место. Соответственно, некоторые из вариантов осуществления, описанные ниже, обеспечивают средство, позволяющее обнаружить манипулирование данными.
Варианты осуществления, описанные ниже, направлены на обеспечение защищенных выходных видеоданных, т.е. выходных видеоданных, которые не подвержены взлому посредством программного обеспечения. Различные варианты осуществления могут обеспечить защиту на основе окна, которая может селективным образом применяться к областям (т.е. окнам) на экране пользовательского дисплея, а не ко всей области экрана, хотя защита всего экрана тоже не исключается. Защищенные выходные видеоданные в типовом случае не могут считываться недостоверным программным обеспечением. Такое поведение обеспечивает защиту для содержания, такого как платное содержание (например, видеофильмы, книги), а также широкое разнообразие общей электронной коммерции и защищенных приложений. Кроме того, различные варианты осуществления могут обеспечить так называемые защищенные диалоги, которые не могут быть сделаны непонятными (частично или полностью) недостоверными диалогами. Данный режим наиболее полезен в контексте транзакций общей электронной коммерции.
Варианты осуществления, описанные ниже, являются решениями, основывающимися на шифровании, которое обеспечивает защищенные выходные видеоданные. Преимуществом различных вариантов осуществления является то, что эти варианты осуществления в типовом случае просты для реализации и, по-видимому, не оказывают влияния на существующие архитектуры программного обеспечения.
Некоторые из вариантов осуществления, которые будут описаны, основываются на процессоре дешифрирования, который находится на видеоплате, для применения на позднем этапе в последовательности видеообработки. В примерах, описанных в настоящем документе, многие аспекты вариантов осуществления реализованы аппаратными средствами, другие аспекты могут быть реализованы как программно-аппаратными средствами, так и программным обеспечением.
Желательное свойство соответствующих изобретению вариантов осуществления состоит в том, что различные данные, которые должны отображаться на экране пользовательского дисплея, зашифровываются. Соответственно, попытки взлома, направленные на кражу данных, приведут в результате только к краже зашифрованных данных. Методы шифрования могут быть использованы таким образом, чтобы любые похищенные данные математически невозможно было дешифрировать. Дополнительно, дешифрирование зашифрованных данных производится в такой момент (в таком месте) в последовательности обработки, где не имеется программного доступа к дешифрированным битам, которые должны отображаться. Т.е. программному обеспечению запрещен доступ к дешифрированным битам, так что инородное программное обеспечение, исполняемое на пользовательском компьютере, не может получить доступа к дешифрированным битам.
В одном варианте осуществления дешифратор размещается на видеоплате и находится между графическим процессором и преобразователем дисплея (например, RAMDAC). Дешифратор реализован желательным образом аппаратными средствами и может обрабатывать зашифрованные данные в реальном времени, так как видеоплата растеризует кадровый буфер в преобразователь дисплея.
Примерные архитектуры
На фиг. 3 показана приведенная для примера видео (или графическая) плата 300, соответствующая возможному варианту осуществления изобретения. Плата 300 содержит разъем 302 шины, который вставляется в порт на типовом компьютере. Видеоплата 300 также включает разъем 304 монитора (например, штепсельный разъем на 15 выводов), который сопрягается с кабелем, подсоединяемым к монитору. Видеоплата 300 может, но не обязательно должна, включать в себя гнездо 306 цифрового видеовыхода (например, стандарта DVI), которое может быть использовано для передачи видеоизображений к цифровым дисплеям и т.п.
Подобно видеоплате по фиг. 1, видеоплата 300 содержит графический процессор 308, память 310 видеоданных, преобразователь дисплея или ЦАП ОЗУ (RAMDAC) 312 и программное обеспечение драйверов, которое может быть введено в базовую систему ввода/вывода (BIOS) 314.
Графический процессор 308 является специализированной микросхемой обработки графики, которая управляет всеми аспектами разрешения, глубины изображения и всеми элементами, связанными с воспроизведением изображений на экране монитора. Контроллер памяти (иногда интегрируемый в графический процессор) управляет распределением памяти на видеоплате. Центральный процессор (не показан) компьютера передает набор инструкций рисования и данных, которые интерпретируются специализированным драйвером графической платы и выполняются графическим процессором 308 платы. Графический процессор 308 платы выполняет такие операции, как перенос битовой карты и раскрашивание, изменение размеров окна и изменение позиционирования, рисование линий, масштабирование шрифта и рисование многоугольниками. Графический процессор может затем записать данные кадра в кадровый буфер (или в память 310 видеоданных на плате).
Информация в кадровом буфере памяти видеоданных представляет собой изображение того, что появляется на экране, сохраненное как цифровая битовая карта. RAMDAC 312 используется для преобразования цифровой битовой карты в форму, которая может использоваться для визуализации на мониторе, как описано выше.
В дополнение к этим компонентам, в данном варианте осуществления видеоплата 300 содержит контроллер 316 памяти и управляющий процессор 318, который может включать программу управления ключами защиты. Видеоплата также содержит дешифратор 320. Эти компоненты могут быть реализованы в виде любых подходящих аппаратных средств, программного обеспечения, программно-аппаратного обеспечения или комбинации любых указанных средств.
Контроллер 316 памяти принимает данные на видеоплате и распределяет данные в памяти 310 видеоданных. Контроллер памяти может также нести ответственность за управление переносами данных между видеоплатой и системной памятью.
Предусмотрен управляющий процессор 318, который может включать в себя программу управления 319 ключами защиты. Управляющий процессор может нести ответственность за организацию криптографических функций, которые реализуются на видеоплате. Например, управляющий процессор 318 может осуществлять информационный обмен по специализированной шине или защищенному каналу с дешифратором 320 для обеспечения того, чтобы дешифратор имел возможности, которые необходимы ему для надлежащего дешифрирования данных элементов изображения, которые были зашифрованы в целях обеспечения защиты. Управляющий процессор 318 посредством программы управления 319 ключами защиты может управлять ключами защиты, которые связаны с шифрованием и дешифрированием соответствующих данных элементов изображения. В некоторых вариантах осуществления управляющий процессор может быть реализован как отдельная микросхема на видеоплате.
Дешифратор 320 конфигурирован или имеет возможность конфигурирования для дешифрирования соответствующих данных элементов изображения. Например, как описано более детально ниже, данные, которые должны быть защищены, могут быть зашифрованы и записаны в защищенную область, содержащую часть так называемой «основной поверхности» или поверхности рабочего стола памяти видеоплаты, которая содержит данные, используемые блоком RAMDAC 512 для воспроизведения изображения на мониторе. Зашифрованное изображение может копироваться во временную ячейку в памяти видеоданных перед копированием на основную поверхность. Управляющий процессор 318 может устанавливать ключи шифрования, которые должны использоваться для шифрования данных, и может обеспечивать ключи дешифрирования для дешифратора 320 для использования при дешифрировании зашифрованных данных элементов изображения. После того как данные дешифрированы, данные могут быть переданы в блок RAMDAC для последующей обработки.
Следует иметь в виду, что хотя дешифратор показан как отдельный компонент, RAMDAC может быть снабжен соответствующими функциональными средствами, чтобы эффективно действовать в качестве дешифратора.
В процессе работы защищенное или достоверное приложение 322 программного обеспечения может устанавливать совместно используемый ключ для дешифратора 320 и приложения. Приложение затем может использовать ключ для генерации зашифрованных данных элементов изображения, которые могут быть сохранены в памяти (в памяти 310 видеоданных или в системной памяти).
В типовом случае имеется ряд различных путей, чтобы можно было записать данные элементов изображения в защищенные области основной поверхности или в кадровый буфер. Во-первых, данные элементов изображения могут быть записаны непосредственно в кадровый буфер посредством операции «move» (переместить), которую реализует контроллер памяти. Во-вторых, приложение (например, защищенное приложение 322) может собрать данные элементов изображения, которые должны быть защищены в системной памяти, где они зашифровываются. Зашифрованные данные в системной памяти в конечном счете будут скопированы на основную поверхность для дешифрирования и визуализации.
Управляющий процессор может затем обеспечить, что дешифратор будет знать, какой ключ следует использовать для дешифрирования данных элементов изображения, прежде чем послать данные в блок RAMDAC 312 (или перед их визуализацией на мониторе).
Таким образом, в данном примере имеется механизм, посредством которого один или более ключей защиты могут совместно использоваться всеми доверительными сторонами. Данные могут зашифровываться на видеоплате и дешифрироваться в такой точке в последовательности обработки данных, чтобы незашифрованные данные, которые должны визуализироваться на мониторе дисплея, не были подвержены попыткам несанкционированного доступа посредством программного обеспечения. Недостоверные или инородные стороны, которые пытаются считать зашифрованные данные из защищенных областей основной поверхности, будут иметь возможность считать только зашифрованные данные, которые эффективно бесполезны для них. Кроме того, это справедливо, когда память VRAM отображается на системную память посредством методов виртуального распределения памяти. Таким образом, независимо от того, располагаются ли данные, находящиеся в защищенных областях основной поверхности, на видеоплате или отображаются в системную память, они остаются зашифрованными и, следовательно, защищенными.
Защищенные окна
В одном из вариантов осуществления предусмотрены одно или несколько защищенных окон, которые могут быть использованы для отображения конфиденциальных данных на экране пользовательского дисплея. Защищенные окна на экране пользовательского дисплея связаны и соответствуют защищенным областям на основной поверхности в памяти видеоплаты (или в системной памяти, если используются методы виртуального распределения памяти). Например, рассмотрим фиг. 4, где показано схематичное представление основной поверхности видеоплаты, обозначенное в целом ссылочной позицией 400. Основная поверхность 400 содержит область 402 (заштрихована), которая содержит незашифрованные данные, и одну или более областей, которые содержат зашифрованные данные. В этом конкретном примере две приведенные для примера защищенные области 404, 406 могут содержать зашифрованные данные. Каждое защищенное окно, соответствующее защищенной области, показано как 404а, 406а.
В данном варианте осуществления дешифратор 320 (фиг. 3) выполнен с возможностью прохождения по всем данным элементов изображения в области 402 без их модификации (т.е. дешифрирования). То есть, поскольку данные, находящиеся в области 402, не зашифрованы, то нет необходимости для дешифратора 320 дешифрировать данные. Однако дешифратор дешифрирует зашифрованные данные, которые находятся в областях 404 и 406. Данные элементов изображения в областях 404, 406 могут быть дешифрированы дешифратором с использованием ключа, ассоциированного с защищенной областью. В некоторых вариантах осуществления один ключ может быть ассоциирован со всеми защищенными областями. В других вариантах осуществления каждая зашифрованная область может иметь свой собственный ассоциированный с ней ключ. Причина использования отдельных ключей для каждой из защищенных областей состоит в том, что некоторые защищенные области могут не быть связанными с определенными приложениями, которые могут иметь доступ к другим защищенным областям. Например, предположим, что приложение защищенной электронной почты связано с одной защищенной областью, в которой должна находиться защищенная электронная почта. Предположим также, что приложение электронной коммерции связано с другой защищенной областью. В действительности нет причины для приложения электронной почты, по которой оно должно иметь доступ к защищенной области, связанной с приложением электронной коммерции. А если имеется только один ключ для всех защищенных областей, то подразумевается, что все приложения, которые имеют доступ к одной защищенной области, могут иметь доступ ко всем другим защищенным областям. Соответственно, за счет обеспечения отличающегося ключа для каждой из защищенных областей доступ к каждой защищенной области ограничивается только теми приложениями, для которых должен быть обеспечен доступ.
Альтернативно, в другом варианте осуществления, некоторая сторона (с функциями «смесителя» или «компоновщика») может взять несколько областей и переписать их на общий ключ, чтобы обеспечить возможность дешифрирования аппаратными средствами дисплея. Каждое приложение должно тогда доверять стороне-компоновщику.
На фиг. 5 представлена блок-схема последовательности операций, которая описывает этапы способа шифрования в соответствии с одним из вариантов осуществления. Способ может быть реализован с помощью любых подходящих аппаратных средств, программного обеспечения, программно-аппаратных средств или их комбинаций. В приведенном примере способ может быть реализован, по меньшей мере частично, путем соответственно конфигурированной видеоплаты, как приведено для примера выше.
На этапе 500 определяется одна или более защищенных областей на основной поверхности. Области могут иметь любую форму и размер. В приведенном выше примере защищенные области имеют прямоугольную форму. Области желательно иметь меньших размеров, чем необходимо для того, чтобы занять весь экран дисплея при визуализации на экране дисплея. На этапе 502 осуществляется ассоциирование по меньшей мере одного ключа с индивидуальными защищенными областями на основной поверхности. Ключ или ключи могут быть использованы для шифрования и/или дешифрирования данных элементов изображения, которые должны находиться в защищенной области. На этапе 504 используется ключ или ключи для шифрования данных элементов изображения. Этот этап может быть реализован программным обеспечением, программно-аппаратными средствами и/или аппаратными средствами доверительной системы. Например, защищенное приложение, такое как приложение 322, может обусловить шифрование данных элементов изображения. На этапе 506 осуществляется запись или иное перемещение зашифрованных данных элементов изображения в защищенную область основной поверхности. Заметим, что после того как данные элементов изображения зашифрованы, лежащие в их основе дешифрируемые данные элементов изображения оказываются защищенными от кражи.
На фиг. 6 показана блок-схема последовательности операций, которая описывает этапы способа дешифрирования в соответствии с одним из вариантов осуществления. Способ может быть реализован с помощью любых подходящих аппаратных средств, программного обеспечения, программно-аппаратных средств или их комбинаций. В приведенном примере способ может быть реализован, по меньшей мере частично, путем соответственно конфигурированной видеоплаты, как приведено для примера выше.
На этапе 600 обеспечиваются зашифрованные данные в защищенной области основной поверхности видеоплаты. На этапе 602 обеспечивается ключ, ассоциированный с защищенной областью. Этот этап может быть реализован управляющим процессором 318 (фиг. 3). Например, управляющий процессор может обеспечить один или более ключей для дешифратора для использования при дешифрировании зашифрованных данных элементов изображения. На этапе 604 ключ используется для дешифрирования зашифрованных данных в защищенной области на основной поверхности. Этот этап может быть реализован дешифратором 320 (фиг. 3). Заметим, что место (этап) в последовательности обработки данных элементов изображения, где производится дешифрирование, недоступно программными средствами. Тем самым дешифрированные данные элементов изображения защищены от реализуемых программными средствами попыток несанкционированного доступа. На этапе 606 дешифрированные данные передаются в преобразователь дисплея для последующей обработки, которая включает визуализацию данных элементов изображения на экране пользовательского дисплея.
Пример реализации
В возможной реализации шифрование и дешифрирование производятся с использованием процессора, основанного на открытом ключе. Протокол управления может дать возможность программному приложению, такому как защищенное приложение, посылать команды в зашифрованной форме в управляющий процессор 318 (фиг. 3) и получать криптографические подтверждения приема, чтобы гарантировать, что команды выполнены.
Может использоваться любая подходящая команда. В качестве примера могут быть использованы следующие команды (или иные, подобные им команды):
- GetPK() Выдать в ответ открытый ключ шифрования устройства
- SetSec() Установить форму защищенной области и ключ шифрования для этой формы области
- ClearSec() Установить в исходное состояние шифрование для области
В некоторых вариантах осуществления дешифратор 320 может логически выводить геометрию защищенной области таким образом, что он может дешифрировать зашифрованные данные элементов изображения в пределах области. В еще одном варианте осуществления дешифратор может быть информирован о геометрии. Это может быть полезным, когда, например, защищенное окно перетащили и сбросили в другое местоположение на экране пользовательского дисплея. Например, графический процессор 308 может реализовывать процессор геометрии (особым образом не показан), который поддерживает список защищенных областей основной поверхности и различные защищенные данные, которые связаны с этими областями. Защищенные данные могут включать в себя х- и y-координаты областей, размерности по ширине и высоте области и ключ, ассоциированный с конкретной областью. Дешифратор 320 может уведомляться об этих защищенных данных, так что когда он начинает обрабатывать данные элементов изображения, он знает, принадлежит ли конкретный элемент изображения одной из этих областей и должен ли он дешифрироваться, или не следует ли пропустить конкретные данные элементов изображения через RAMDAC. Если защищенное окно перемещено, то процессор геометрии может уведомить дешифратор о новых координатах защищенного окна.
В приведенной для примера архитектуре открытый ключ и функции управления могут быть реализованы в модульном виде как дискретное внешнее устройство со встроенной флэш-памятью (подобно смарт-карте). В противоположность этому, дешифратор 320 может быть встроен в интегральную схему графического процессора (т.е. интегрирован в графический процессор). Управляющий процессор 318 может затем переслать ключи дешифрирования непосредственно в графический процессор. В качестве дополнительной превентивной меры против попыток несанкционированного доступа с использованием программного обеспечения, может быть использована специализированная шина между управляющим процессором 318 и графическим процессором 308.
В процессе работы управляющий процессор 318 может быть аутентифицирован защищенным программным обеспечением/аппаратными средствами и может получить зашифрованные команды типа «установить ключ шифрования для данной защищенной области на х». Управляющий процессор затем выдает в ответ криптографический отклик для обеспечения того, чтобы команда была выполнена надлежащим образом.
Ключ шифрования может затем использоваться для переноса видеоданных в защищенную область. В данном примере, код противника может иметь возможность считать эти зашифрованные данные. Однако любые данные, которые считываются таким кодом, являются зашифрованными и эффективно бесполезны для кода противника. В некоторых реализациях для кода противника может оказаться возможным модифицировать зашифрованные данные. Зашифрованные данные, которые модифицированы, будут, однако, дешифрироваться в данные, которые при воспроизведении на экране дисплея будут представляться логически вне контекста. Например, такие данные могут проявляться при воспроизведении на экране дисплея как случайный шум/серый выходной сигнал. Данный тип попытки взлома несомненно будет обнаружен пользователем.
Кроме того, использование информации аутентификации может обеспечить то, что если данные элементов изображения модифицируются посторонним кодом, то пользователь будет уведомлен об этом. В качестве примера рассмотрим следующее. Может потребоваться, что формат защищенных данных должен содержать некоторое число битов на элемент изображения, например 24 бита на элемент. Из 24 битов на элемент изображения может потребоваться, чтобы 8 битов всегда имели нулевое значение. Дешифратор может затем конфигурироваться так, чтобы выработать индикацию мерцающего сиреневого цвета о несоответствующих элементах изображения и может уведомить управляющий процессор, что имела место попытка несанкционированного доступа.
Кроме того, другие методы могут использоваться для обеспечения того, чтобы ненадлежащим образом модифицированные данные элементов изображения могли быть обнаружены. В качестве примера рассмотрим следующее. Может быть вычислен хеш (хеш-функция) для данных элементов изображения, связанных с каждым элементом изображения, который должен быть визуализирован. Когда данные элементов изображений обрабатываются преобразователем дисплея (например, блоком RAMDAC 312), преобразователь дисплея может затем вычислить хеш для данных элементов изображения и сравнить вычисленный хеш с ранее вычисленным хешем для данных элементов изображения. Если имеет место ненадлежащая модификация данных, то сравнение хешей покажет, что это имело место.
Примеры методов шифрования
Различные методы шифрования могут быть использованы для обеспечения того, чтобы данные элементов изображения, находящиеся в защищенных областях основной поверхности, зашифровывались и затем надлежащим образом дешифрировались дешифратором. Ниже описаны два приведенных для примера метода шифрования, хотя и другие методы могут быть использованы без отклонения от сущности и объема заявленной сущности изобретения. Первый метод шифрования, который может быть использован, представляет собой поточное шифрование. Поточное шифрование в типовом случае является весьма быстродействующим и простым для реализации в аппаратных средствах. Поточное шифрование представляет собой некоторый тип алгоритма симметричного шифрования, который в типовом случае работает с малыми блоками открытого текста, обычно битами. Поточное шифрование генерирует так называемый «ключевой поток» (последовательность битов, используемую в качестве ключа). Шифрование выполняется путем комбинирования последовательности ключа с открытым текстом или битами, обычно с помощью логической операции «исключающее ИЛИ». Генерирование последовательности ключа может быть независимым от открытого текста и зашифрованного текста, давая в результате так называемое синхронное поточное шифрование, или оно может зависеть от данных и их шифрования, и в этом случае потоковое шифрование определяется как самосинхронизирующееся. Большинство алгоритмов поточного шифрования предназначаются для синхронного поточного шифрования. Тот же самый алгоритм поточного шифрования может быть затем использован для дешифрирования данных, которые были зашифрованы.
Поточное шифрование может выполняться по всей основной поверхности таким способом, что дешифрируются только данные в защищенных областях основной поверхности. Однако это не является наилучшим вариантом выбора, так как поточное шифрование нет необходимости выполнять по всей основной поверхности, а требуется только в областях, которые являются защищенными. Соответственно, диапазон, где должно выполняться поточное шифрование, может быть ограничен таким образом, что он определяется только в границах защищенной области или областей. Желательным способом реализации поточного шифрования в ограниченном диапазоне является определение для каждого обновления данных на дисплее начального местоположения для поточного шифрования, например, левого верхнего элемента изображения в защищенной области. Поточное шифрование может затем выполняться в пределах защищенной области до тех пор, пока не будет обработан нижний правый элемент изображения защищенной области.
В качестве примера рассмотрим фиг. 7. Основная поверхность 700 содержит область 702, в которой находятся незашифрованные данные элементов изображения, и защищенную область 704, в которой должны находиться зашифрованные данные элементов изображения (зашифрованные посредством поточного шифрования). С использованием соответствующего ограничения по диапазону поточное шифрование может быть выполнено, начиная с местоположения, указанного в верхнем левом элементе изображения, и заканчивая в местоположении, указанном в правом нижнем элементе изображения. Когда зашифрованные данные должны быть дешифрированы, дешифратор (в данном случае дешифратор 320) может быть уведомлен о координатах начального и конечного местоположений поточного шифрования. Одной из привлекательных характеристик данной реализации является то, что если защищенное окно, связанное с одной из защищенных областей, перемещено и сброшено в другом местоположении (что может вызвать перемещение недостоверного программного обеспечения относительно окна), операция шифрования может быть продолжена для ее осуществления в новом местоположении. Для реализации этого режима сторона, осуществляющая шифрование, должна только быть уведомлена о новых координатах защищенного окна (и, следовательно, защищенной области на основной поверхности), так чтобы сторона, осуществляющая шифрование, могла выполнить свою обработку шифрования в новом местоположении. Аналогичным образом, дешифратор 320 может быть также уведомлен о таком местоположении, так чтобы он мог провести поточное шифрование в необходимом местоположении для дешифрирования зашифрованных данных элементов изображения.
Шифратор может обеспечить возможность продолжения поточного шифрования по различным кадрам, тем самым делая более затруднительными попытки взлома дифференциальным методом. Ключ для поточного шифрования может быть изменен после каждой группы кадров. Для уменьшения количества ключей может быть согласован фиксированный массив ключей перед их использованием. Шифратор может циклически проходить по массиву ключей, выбирая отличающийся ключ для каждой группы кадров.
Второй метод шифрования, который может использоваться, представляет блочное шифрование. Блочное шифрование является некоторым типом алгоритма шифрования с использованием симметричного ключа, который преобразует блок фиксированной длины данных открытого текста или битов (незашифрованный текст или биты) в блок зашифрованного текста (зашифрованный текст или биты) той же самой длины. Это преобразование имеет место под действием обеспеченного пользователем секретного ключа. Дешифрирование выполняется применением обратного преобразования к зашифрованному блоку с использованием того же самого секретного ключа. Фиксированная длина определяется как размер блока, и для многих процедур блочного шифрования размер блока составляет 64 бита. В ближайшие годы ожидается, что размер блока увеличится до 128 битов, поскольку процессоры становятся все более сложными.
Из двух методов шифрования, описанных выше, поточное шифрование является предпочтительным вариантом выбора, поскольку оно обладает более высоким быстродействием, чем блочное шифрование.
Аутентификация
В некоторых вариантах осуществления для обеспечения целостности и идентификации видеоплаты могут быть использованы методы аутентификации. Важными целями для приложений защищенного программного обеспечения, которые должны взаимодействовать с видеоплатой, является то, что приложение должно иметь возможность надежно аутентифицировать, что (1) приложение надежным образом осуществляет информационный обмен с видеоплатой, а не с фрагментом программного обеспечения, которое эмулирует видеоплату, и (2) приложение надежным образом осуществляет информационный обмен с видеоплатой, которая подчиняется или согласуется с предварительно определенными правилами, относящимися к воспроизведению данных элементов изображения.
Методы аутентификации могут быть реализованы рядом способов, например, посредством криптографической сертификации и других протоколов информационного обмена.
Криптографическая сертификация относится к построению видеоплаты, которая снабжена сертифицированным ключом и цифровым сертификатом. Используя свой ключ и сертификат, видеоплата может вступать в криптографический диалог с защищенными программными приложениями. Например, цифровой сертификат может использоваться для аутентификации видеоплаты, а сертифицированный ключ может использоваться для шифрования информационного обмена, который имеет место с защищенным приложением. Для реализации криптографической сертификации каждая видеоплата может иметь отдельную защищенную интегральную микросхему. Методы криптографической сертификации хорошо известны и понятны специалистам в данной области техники. Соответственно, и для краткости, криптографическая сертификация здесь подробно не описывается.
Другое средство аутентификации может быть связано с защищенным протоколом, который устанавливается между защищенными приложениями и видеоплатой. Защищенные протоколы могут позволить приложению иметь некоторые гарантии того, что оно осуществляет информационный обмен с действительной видеоплатой. Например, достоверное приложение может выдать запрос видеоплате для того, чтобы она идентифицировала себя, и плата может выдать ответное сообщение, что она является достоверной видеоплатой. Могут использоваться различные известные защищенные протоколы.
Описанные выше варианты осуществления обеспечивают ряд преимуществ. Во-первых, предусмотрены методы, которые могут обеспечивать, что данные (как на видеоплате, так и вне ее) защищаются от программных попыток несанкционированного доступа. Защита обеспечивается в форме методов шифрования, которые могут использоваться для шифрования данных, находящихся на основной поверхности видеоплаты. Дешифрирование может затем осуществляться в той точке (на таком этапе) в последовательности обработки данных, к которой нет программного доступа. Таким образом, любые несанкционированные попытки считывания инородным программным обеспечением приведут к получению только зашифрованных и, следовательно, бесполезных данных. Таким образом, данные элементов изображения могут поддерживаться конфиденциальными. Кроме того, различные методы могут обеспечить то, что обеспечивается целостность данных. Т.е. в случае несанкционированных попыток модифицирования данных могут быть использованы различные методы обнаружения, чтобы обеспечить генерирование соответствующих уведомлений (как уведомлений со стороны приложений, так и пользовательских приложений). Кроме того, достигаются преимущества, состоящие в возможности определения защищенных областей основной поверхности, которые идентифицируются конкретной геометрией.
Дополнительные функциональные возможности для отдельных элементов изображения
В некоторых вариантах осуществления может оказаться желательным предусмотреть функциональные возможности на уровне гранулярности индивидуальных элементов изображений. Например, защищенные области основной поверхности в типовом случае не перекрываются. В некоторых случаях, однако, пользователям может быть желательным перемещать окна на дисплее, чтобы они перекрывались. Области перекрытия могут вводить дополнительные условия проектирования в конструкцию компонентов, которые выполняют функции шифрования и дешифрирования.
В качестве примера рассмотрим фиг. 8, где показан экран 800 дисплея, который в типовом случае может наблюдаться пользователем. Предусмотрено защищенное окно 802 и, дополнительно, показано незащищенное окно 804, которое перекрывается в нижнем правом углу защищенного окна для определения перекрывающейся области 806. Одна проблема, которая может возникнуть в данной ситуации, состоит в следующем. Область 806, при ее воплощении на основной поверхности видеоплаты, не включает зашифрованных данных. Однако соседняя область, соответствующая защищенному окну 802, содержит зашифрованные данные. Если никаких регулировок не делается, чтобы принять это во внимание, то, возможно, что дешифратор будет дешифрировать данные элементов изображения, связанные с перекрывающейся областью 806. Поскольку эти данные элементов изображения не зашифровывались, дешифрирование данных приведет к получению ошибочных данных.
Соответственно, варианты осуществления, которые описаны ниже, обеспечивают методы и системы, которые реализуют функциональные возможности на уровне отдельных элементов изображения. В одном примере может быть обеспечена защищенность на поэлементной (попиксельной) основе.
На фиг. 9 показано представление 900 в виде диаграммы данных элементов изображения. В этом примере данные элементов изображения содержат 32 бита данных. Значения красного (R), зеленого (G) и синего (В) показаны как восемь битов для каждого цвета. Следует отметить, что хотя показанные для примера данные элементов изображения содержат 32 бита на элемент изображения, данные элементов изображения могут содержать больше или меньше битов на элемент изображения. Заметим, что в этом примере предусмотрено сверх этого еще восемь битов, которые обозначены как «дополнительные». Для того чтобы сделать доступ к памяти более эффективным, графические процессоры предпочитают считывать данные фрагментами, которые представляют собой значения, кратные степеням числа 2. Следовательно, данные по 24 бита считываются как блоки из 32 битов, оставляя 8 битов «неиспользуемыми», но всегда считываемыми и записываемыми вместе с «используемыми» битами. Эти дополнительные биты могут повторно использоваться для определения различных вспомогательных функций, которые могут быть реализованы в связи с отдельными элементами изображения, которые должны воспроизводиться на экране дисплея. Примеры вспомогательных функций могут включать, без каких-либо ограничений, альфа-информацию или информацию прозрачности, информацию глубины, информацию идентификации области или информацию цветового ключа (для индикации областей, которые должны быть заменены другими данными).
Другие общие видеоформаты используют 16 битов на элемент изображения (пиксел) вместо 24 или 32 битов на элемент изображения. Например, RGB-данные могут быть сохранены как 5 битов на элемент изображения, оставляя один бит неиспользуемым, который может быть использован для определения 2 вспомогательных функций. Одним из способов реализации вспомогательных функциональных возможностей является обеспечение таблицы, такой как таблица 902, которая обеспечивает ссылки или определяет вспомогательные функциональные возможности. Например, использование восьми битов для определения вспомогательных функций может обеспечить возможность определения 256 вспомогательных функций. Соответственно, когда данные элементов изображения обрабатываются, биты данных элементов изображения, относящиеся к вспомогательным функциям, могут обрабатываться для получения доступа к различным дополнительным функциям.
На фиг. 10 показана блок-схема, описывающая этапы способа, соответствующего одному из вариантов осуществления. Способ может быть реализован любыми пригодными аппаратными средствами, программным обеспечением, программно-аппаратными средствами или их комбинацией. В представленном примере способ может быть реализован, по меньшей мере частично, посредством соответствующим образом конфигурированной видеоплаты, пример которой приведен выше.
На этапе 1000 обеспечиваются данные элементов изображения, имеющие определенное число битов на элемент изображения. В примере, показанном на фиг. 9, имеется 32 бита на элемент изображения. Однако может быть использовано любое подходящее число битов на элемент изображения. На этапе 1002 используется один или более битов данных элементов изображения для определения дополнительной функции. В примере, показанном на фиг. 9, используется восемь битов для определения дополнительных функций путем использования так называемого «альфа-канала» (четвертый «неиспользуемый» канал). Путем использования восьми битов альфа-канала можно определить 256 отдельных дополнительных функций. На этапе 1004 осуществляется обработка битов для доступа к дополнительной функции. Этот этап может быть реализован с использованием значения дополнительных битов в качестве индекса в таблицу дополнительных функций, такую как таблица 902 (фиг. 9). Таблица затем дает ссылки, для индивидуальных значений, на дополнительную функцию, которая может быть реализована в связи с данными элементов изображения для конкретного элемента изображения. Ссылка в таблице 902 может представлять собой указатель на программный код, который реализует дополнительную функцию, или она может содержать часть или всю дополнительную функцию. На этапе 1006 реализуется дополнительная функция.
Если функция 0 определила нулевую функцию, то старое приложение будет автоматически совместимым с новой схемой, которая использует новые дополнительные функции.
Защищенность по элементам изображения
Дополнительные биты данных элементов изображения могут быть использованы для обеспечения функциональности дешифрирования на уровне элементов изображения (попиксельно). Например, предположим, что на основной поверхности имеется защищенная область, которая используется для хранения данных элементов изображения, которые необходимо защитить. Эти данные элементов изображения могут шифроваться на уровне элементов изображения с использованием ключа шифрования. Предположим, что дополнительные биты зашифрованных данных элементов изображения определяют ключ дешифрирования, который может использоваться для дешифрирования данных элементов изображения. Рассмотрим, например, фиг. 11, где показана таблица 1100 дополнительных функций для отдельных элементов изображения. В ней каждое значение таблицы связано с конкретным ключом. Например, значение «1» связано со значением «Ключ 1», значение «2» - со значением «Ключ 2» и т.д. Соответственно, когда дополнительные данные элементов изображения указывают, что конкретный ключ связан с данными элементов изображений, то дешифратор может получить доступ к соответствующему ключу и использовать ключ для дешифрирования данных элементов изображения (в типовом случае 0). Дополнительные данные элементов изображения могут также содержать значение, которое указывает, что данные элементов изображения не зашифрованы. В этом случае дешифратор может просто пропустить соответствующие данные элементов изображения на преобразователь дисплея для последующей обработки, обеспечивая возможность плавной интеграции незашифрованных данных из приложений с новой схемой.
Таблица ключей для отдельных элементов изображения может содержать индивидуальные ключи, которые могут быть использованы для дешифрирования связанных зашифрованных данных элементов изображения, или она может содержать ссылки на ключи, которые могут использоваться для дешифрирования соответствующих зашифрованных данных элементов изображения.
Таблица также может содержать вторичные (незащищенные) дополнительные связанные данные, такие как альфа-значения. Это позволяет селективно повторно использовать значения - относящиеся к защите или относящиеся к предшествующему исходному использованию дополнительного канала. Например, значения 1 - 3 могут быть использованы для определения ключей (с их собственным альфа-значением, при сохранении значений 0 и от 4 до 255 доступными для определения их исходных альфа-значений.
На фиг. 12 представлена блок-схема, которая описывает этапы способа в соответствии с возможным вариантом осуществления. Способ может быть реализован любыми пригодными аппаратными средствами, программным обеспечением, программно-аппаратными средствами или их комбинацией. В представленном примере способ может быть реализован, по меньшей мере частично, посредством соответствующим образом конфигурированной видеоплаты, пример которой приведен выше.
На этапе 1200 осуществляется шифрование данных элементов изображения, которые связаны с отдельными элементами изображения. Предпочтительно, шифрование может осуществляться на уровне элементов изображения (попиксельно). Этот этап может быть реализован любым подходящим способом. Например, защищенное приложение может обусловить шифрование данных элементов изображения. Как вариант, другие процессы могут быть использованы для шифрования данных элементов изображения, примеры которых приведены выше. На этапе 1202 дополнительные данные связываются с данными элементов изображения. Дополнительные данные определяют один или более ключей дешифрирования, которые могут быть использованы для дешифрирования данных элементов изображения. В некоторых случаях дополнительные данные могут рассматриваться как образующие сами данные элементов изображения, когда они содержат часть битов, которые образуют данные элементов изображения (например, альфа-канал). На этапе 1204 осуществляется прием данных элементов изображения, включая любые связанные дополнительные данные. Этот этап может быть реализован, например, с помощью соответственно конфигурированного дешифратора. На этапе 1206 определяется, необходимо ли дешифрировать данные элементов изображения. Этот этап может быть реализован путем анализа дополнительных данных. Если дополнительные данные содержат значения, которые связаны с функциональными возможностями дешифрирования, то дешифрирование необходимо. Если дешифрирование необходимо, то этап 1208 использует дополнительные данные для доступа к ключу дешифрирования для данных элементов изображения. Этот этап может быть реализован путем поддержки таблицы, такой как таблица 1100, и использования таблицы для доступа к соответствующему ключу дешифрирования. Этап 1210 затем дешифрирует данные элементов изображения с использованием ключа дешифрирования. Если, с другой стороны, на этапе 1206 определяется, что дешифрирование не является необходимым, то на этапе 1212 не производится дешифрирование данных. Этот этап может быть реализован путем присвоения конкретного значения (например, 0) дополнительным данным и использования этого значения для указания, что дешифрирование не является необходимым. Данные затем могут быть пересланы в преобразователь дисплея для дальнейшей обработки.
Одно из преимуществ селективного попиксельного шифрования состоит в том, что приложения могут определить непрямоугольные области шифрования. Каждый элемент изображения в прямоугольной области, который не зашифрован, может быть определен нулевой функцией шифрования (индекс 0).
Вторичная таблица
В дополнение к вышеописанной таблице, может быть предусмотрена так называемая вторичная таблица, содержащая дополнительную информацию, которая полезна при обработке данных изображения. В качестве примера, рассмотрим фиг. 13, где показана вторичная таблица 1300 элементов изображения. В данном примере каждый элемент изображения в защищенной области основной поверхности может иметь связанную с ним запись в данной таблице. Таким образом, столбец «элемент изображения» идентифицирует конкретную область элемента изображения на основной поверхности. В этом примере таблица 1300 содержит столбец «ИД процесса», который может быть использован для идентификации процесса или стороны, которая «владеет» конкретной областью. Этот столбец может быть использован, например, для ограничения доступа к конкретным данным элементов изображения только теми сторонами, которые должны иметь доступ.
Целостность данных
Дополнительно или альтернативно, таблица 1300 может быть использована для проверки целостности данных элементов изображения. Например, может быть вычислен хеш незашифрованных данных элементов изображения и сохранен в столбце «ожидаемый хеш» таблицы 1300. Затем, когда данные элементов изображения дешифрируются, например, посредством дешифратора, может быть вычислен другой хеш дешифрированных данных элементов изображения и помещен в столбец «текущий хеш». Путем сравнения ожидаемого хеша с текущим хешем защищенное приложение или дешифратор могут определить, было ли осуществлено манипулирование или внесено изменение в данные элементов изображения. Если, например, инородное приложение успешно манипулирует незашифрованными данными элементов изображения, то сравнение хешей покажет, что это имело место. С другой стороны, если инородное приложение манипулирует зашифрованными данными, данные будут дешифрироваться по-разному. Затем, когда вычисляется текущий хеш для дешифрированных данных, текущий хеш несомненно будет безуспешно сравниваться с ожидаемым хешем. Аппаратные средства дешифрирования могут уведомить приложение (или агента по поручению приложения) о компрометации данных. Уведомление может пересылаться по защищенному каналу к стороне шифрования.
Для обеспечения целостности данных в защищенных областях могут быть использованы другие методы. Например, взломщик может по некоторой причине иметь адресацию на попиксельной основе и, тем самым, иметь возможность манипулировать данными элементов изображения (включая дополнительные данные). Для разрешения этой ситуации может быть реализован процесс, который для каждой защищенной области принуждает дополнительные данные принимать значение, которое будет вызывать дешифрирование данных. Соответственно, это минимизирует влияние любых инородных приложений, которые предпринимают попытки взлома дополнительных данных путем, например, изменения данных на значение, которое будет обусловливать то, что данные не будут дешифрироваться.
Некоторые из преимуществ дополнительной функциональности на попиксельной основе (включая защиту на попиксельной основе) включают, без каких-либо ограничений, то, что связанные таблицы (например, таблицы ключей) относительно малы и могут кэшироваться. Кроме того, никакая дополнительная полоса видеообработки не требуется, если дополнительные данные содержат часть битов, которые уже распределены для данных элементов изображения (например, альфа-канал). Кроме того, альфа-значения могут продолжать использоваться в случае, когда альфа-канал не используется, для поддержки дополнительной функциональности. Кроме того, управление ключом на покадровой попиксельной основе может обеспечить сложные переходы ключей. Т.е. ключи могут циклироваться на покадровой основе, что может уменьшить проблемы переключения ключей в процессе воспроизведения видеоматериала. Вышеописанные методы могут также использоваться с не-RGB-данными с непосредственными копиями из памяти на рабочий стол и с видео-оверлеями.
Наконец, когда область сдвигается, индекс дополнительного шифрования перемещается с видеоданными, обеспечивая то, что информация шифрования надлежащим образом синхронизируется и не требует каких-либо дополнительных изменений аппаратных средств.
Выводы
Различные способы и системы, описанные выше, обеспечивают защищенный канал для программного обеспечения, выполняемого на компьютере-хосте, а также выявляют и обеспечивают решения для модели попыток несанкционированного доступа, в которой инородное программное обеспечение, выполняемое на компьютере-хосте, пытается несанкционированным образом получить и каким-либо образом манипулировать данными. Несмотря на это видеоданные заявленных способов, подлежащие обработке и визуализации на пользовательском дисплее, могут сохранять конфиденциальность, и во многих случаях целостность данных может быть защищена.
Хотя изобретение описано в терминах, специфических для структурных признаков и/или методологических этапов, следует иметь в виду, что изобретение, определенное в прилагаемой формуле изобретения, не обязательно должно быть ограничено конкретными описанными признаками или этапами. Напротив, конкретные признаки и этапы раскрываются как предпочтительные формы реализации заявленного изобретения.
название | год | авторы | номер документа |
---|---|---|---|
СПОСОБЫ И СИСТЕМЫ ДЛЯ КРИПТОГРАФИЧЕСКОЙ ЗАЩИТЫ ОХРАНЯЕМОГО СОДЕРЖИМОГО | 2002 |
|
RU2308077C2 |
СПОСОБЫ СОЗДАНИЯ, СИСТЕМЫ И АРХИТЕКТУРЫ ЗАЩИЩЕННЫХ МЕДИАКАНАЛОВ | 2003 |
|
RU2323473C2 |
СПОСОБЫ И СИСТЕМЫ ДЛЯ АУТЕНТИФИКАЦИИ КОМПОНЕНТОВ В ГРАФИЧЕСКОЙ СИСТЕМЕ | 2003 |
|
RU2310227C2 |
СПОСОБ И УСТРОЙСТВО ДЛЯ ЗАЩИТЫ ОПЕРАЦИОННЫХ ДАННЫХ ИГРОВОГО УСТРОЙСТВА | 2002 |
|
RU2265885C2 |
УПРАВЛЕНИЕ ДОСТУПОМ С ИСПОЛЬЗОВАНИЕМ ПАРАМЕТРИЗИРОВАННОЙ ХЭШ-ФУНКЦИИ | 1996 |
|
RU2142674C1 |
СИСТЕМА И СПОСОБ ДЛЯ ПЕРЕДАЧИ СОКРАЩЕННОЙ ИНФОРМАЦИИ ИЗ СЕРТИФИКАТА ДЛЯ ВЫПОЛНЕНИЯ ОПЕРАЦИЙ ШИФРОВАНИЯ | 2003 |
|
RU2346398C2 |
БЕЗОПАСНЫЙ ТРАНСПОРТ ЗАШИФРОВАННЫХ ВИРТУАЛЬНЫХ МАШИН С НЕПРЕРЫВНЫМ ДОСТУПОМ ВЛАДЕЛЬЦА | 2015 |
|
RU2693313C2 |
АУТЕНТИФИКАЦИЯ В ЗАЩИЩЕННОЙ КОМПЬЮТЕРИЗОВАННОЙ ИГРОВОЙ СИСТЕМЕ | 2003 |
|
RU2302276C2 |
СИСТЕМА И СПОСОБ ЗАЩИТЫ ОТ КОПИРОВАНИЯ | 1999 |
|
RU2213991C2 |
СИСТЕМА ЗАЩИТЫ ОТ КОПИРОВАНИЯ ЦИФРОВЫХ ДАННЫХ | 2000 |
|
RU2251146C2 |
Изобретение относится к способам и системам для обработки данных с использованием видеоплат. Технический результат заключается в обеспечении защиты от несанкционированного копирования видеоданных. Технический результат достигается благодаря использованию памяти, которая содержится на видеоплате и имеет защищенные и незащищенные области, и видеоданные, подлежащие защите, содержатся в защищенных областях основной поверхности памяти на видеоплате. 15 н. и 43 з.п. ф-лы, 13 ил.
обеспечение зашифрованных данных на видеоплате, причем видеоплата содержит память, содержащую одну или более защищенных областей и одну или более незащищенных областей, и зашифрованные видеоданные сохранены в одной или более защищенных областях; и
дешифрирование зашифрованных видеоданных в точке в процедуре обработки данных, где отсутствует программный доступ к зашифрованным видеоданным.
средство для обеспечения зашифрованных данных на видеоплате, причем видеоплата содержит память, содержащую одну или более защищенных областей и одну или более незащищенных областей, и зашифрованные видеоданные сохранены в одной или более защищенных областях;
средство для дешифрирования зашифрованных видеоданных на видеоплате и средство для запрещения доступа программному обеспечению к зашифрованным видеоданным.
графический процессор для обработки видеоданных, которые должны визуализироваться на мониторе,
память, функционально связанную с графическим процессором, для хранения данных, которые должны обрабатываться или были обработаны графическим процессором, причем память содержит основную поверхность, и основная поверхность содержит одну или более защищенных областей и одну или более незащищенных областей,
преобразователь дисплея для преобразования цифровых данных в сигналы для использования при визуализации данных на мониторе и
дешифратор, размещенный между графическим процессором и преобразователем дисплея и выполненный с возможностью дешифрирования данных элементов изображения для выдачи на преобразователь дисплея, причем дешифратор подключен к точке в процедуре обработки данных, где отсутствует программный доступ.
средство процессора на видеоплате для обработки видеоданных, которые должны визуализироваться на мониторе,
средство памяти на видеоплате, функционально связанное со средством процессора, для хранения данных, которые должны обрабатываться или были обработаны средством процессора, причем память содержит одну или более защищенных областей и одну или более незащищенных областей, средство преобразователя на видеоплате для преобразования цифровых данных в сигналы для использования при визуализации данных на мониторе и
средство дешифратора на видеоплате для дешифрирования данных элементов изображения для выдачи на средство преобразователя и
средство на видеоплате для запрещения доступа одному или более приложениям программного обеспечения к дешифрированным данным элементов изображения.
видеоплату,
память на видеоплате, часть которой содержит основную поверхность, которая содержит данные, предназначенные для воспроизведения на мониторе, причем основная поверхность содержит как защищенные области, так и незащищенные области;
одну или более защищенных областей на основной поверхности, которые хранят зашифрованные данные элементов изображения, и
по меньшей мере, один ключ, связанный с одной или более областями и выполненный с возможностью обеспечения дешифрирования зашифрованных данных элементов изображения.
определение одной или более защищенных областей на основной поверхности в памяти видеоплаты, причем упомянутая основная поверхность содержит как защищенные, так и незащищенные области;
ассоциирование, по меньшей мере, одного ключа с упомянутой одной или более защищенными областями, пригодного для использования при шифровании данных элементов изображения, сохраненных в упомянутых одной или более защищенных областях,
шифрование данных элементов изображения с помощью упомянутого по меньшей мере одного ключа и
выдачу зашифрованных данных элементов изображения в упомянутые одну или более защищенных областей.
упомянутое действие определения определяет множество защищенных областей и
упомянутое действие ассоциирования ассоциирует отличающийся ключ с каждой защищенной областью.
средство для определения одной или более защищенных областей на основной поверхности в памяти видеоплаты, причем основная поверхность содержит как защищенные области, так и незащищенные области;
средство для ассоциирования по меньшей мере одного ключа с упомянутой одной или более защищенными областями, пригодного для использования при шифровании данных элементов изображения, сохраненных в упомянутых одной или более защищенных областях,
средство для шифрования данных элементов изображения с помощью упомянутого по меньшей мере одного ключа и
средство для выдачи зашифрованных данных элементов изображения в упомянутые одну или более защищенных областей.
обеспечение ключа, ассоциированного с защищенной областью, который может быть использован для дешифрирования зашифрованных данных, и использование ключа для дешифрирования зашифрованных данных в защищенной области основной поверхности.
средство для обеспечения зашифрованных данных в защищенной области основной поверхности видеоплаты, причем основная поверхность содержит как защищенные области, так и незащищенные области;
средство для обеспечения ключа, ассоциированного с защищенной областью, который может быть использован для дешифрирования зашифрованных данных, и
средство для использования ключа для дешифрирования зашифрованных данных в защищенной области основной поверхности.
обеспечение зашифрованных данных в защищенной области основной поверхности видеоплаты, причем защищенная область имеет соответствующую связанную с ней геометрию, и основная поверхность содержит защищенные и незащищенные области;
обеспечение ключа, ассоциированного с защищенной областью, который может быть использован для дешифрирования зашифрованных данных,
информирования дешифратора на видеоплате о геометрии защищенной области,
обеспечение ключа для дешифратора и
дешифрирование с помощью дешифратора зашифрованных данных в защищенной области основной поверхности.
обеспечение зашифрованных данных в защищенной области основной поверхности видеоплаты, причем основная поверхность содержит защищенные и незащищенные области;
обеспечение ключа, ассоциированного с защищенной областью, который может быть использован для дешифрирования зашифрованных данных, использование ключа для дешифрирования зашифрованных данных в защищенной области основной поверхности и обнаружения того, были ли какие-либо из данных модифицированы.
US 5881287 A, 09.03.1999 | |||
US 6064739 A, 16.05.2000 | |||
WO 0225416 A2, 28.03.2002 | |||
УПРАВЛЕНИЕ ДОСТУПОМ С ИСПОЛЬЗОВАНИЕМ ПАРАМЕТРИЗИРОВАННОЙ ХЭШ-ФУНКЦИИ | 1996 |
|
RU2142674C1 |
Авторы
Даты
2008-06-20—Публикация
2003-06-23—Подача