RU2308077C2 - Methods and systems for cryptographic protection of protected content - Google Patents
Methods and systems for cryptographic protection of protected content Download PDFInfo
- Publication number
- RU2308077C2 RU2308077C2 RU2004110622/09A RU2004110622A RU2308077C2 RU 2308077 C2 RU2308077 C2 RU 2308077C2 RU 2004110622/09 A RU2004110622/09 A RU 2004110622/09A RU 2004110622 A RU2004110622 A RU 2004110622A RU 2308077 C2 RU2308077 C2 RU 2308077C2
- Authority
- RU
- Russia
- Prior art keywords
- encrypted
- content
- overlay
- bgo
- decryption
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/82—Protecting input, output or interconnection devices
- G06F21/83—Protecting input, output or interconnection devices input devices, e.g. keyboards, mice or controllers thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/78—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
- G06F21/79—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Health & Medical Sciences (AREA)
- Storage Device Security (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
Description
Перекрестные ссылки на родственные заявкиCross references to related applications
Данная заявка заявляет право на предварительные заявки с номерами 60/337617 от 4 декабря 2001 и 60/339143 от 10 декабря 2001 и связана с обычным образом переуступленной совместно поданной заявкой № 10/125170 на патент США, поданной 18 апреля 2002.This application claims the provisional application numbers 60/337617 dated December 4, 2001 and 60/339143 dated December 10, 2001 and is related to the commonly reassigned co-filed US Patent Application No. 10/125170 filed April 18, 2002.
Извещение об авторском праве и разрешениеCopyright Notice and Permission
Часть раскрытия в данном патентном документе может содержать материал, который охраняется авторским правом. Обладатель авторского права не имеет возражений против факсимильного воспроизведения кем бы то ни было этого патентного документа или раскрытия патента, как оно представлено в делах и записях Ведомства по патентам и товарным знакам, но во всех иных случаях оставляет за собой все авторские права. К данному документу должно прилагаться следующее указание: Авторское право © 2001, Microsoft Corp.Part of the disclosure in this patent document may contain material that is protected by copyright. The copyright holder has no objection to the facsimile reproduction by anyone of this patent document or patent disclosure, as it is presented in the files and records of the Patent and Trademark Office, but in all other cases reserves all copyrights. The following notice must be attached to this document: Copyright © 2001, Microsoft Corp.
Область изобретенияField of Invention
Настоящее изобретение относится к способам и системам для криптографической защиты охраняемого содержимого. В частности, настоящее изобретение относится к методам криптографической защиты содержимого, направляемого через графический канал, с обеспечением для этого содержимого как конфиденциальности, так и защиты от подделки.The present invention relates to methods and systems for cryptographic protection of protected content. In particular, the present invention relates to methods for cryptographic protection of content sent through a graphic channel, while ensuring that the content is both confidential and anti-counterfeit.
Существующий уровень техникиThe current level of technology
Интернет и многие другие источники и приложения предоставляют огромный массив меняющейся или фиксированной информации или иного содержимого для прослушивания, просмотра, обработки, хранения и иной визуализации. Однако в настоящее время не существует практического пути для сбора, записи или визуализации меняющейся или фиксированной информации или иного содержимого защищенным от копирования образом, чтобы пираты не смогли подключиться к потоку в какой-нибудь точке вдоль канала - в процессе ли обработки содержимого или в процессе визуализации содержимого, - для получения в собственность копии или изменения этого содержимого. Данная проблема существовала в прошлом и в связи с другими устройствами визуализации и записи информации, например, - видеомагнитофонами для телевизионного содержимого или ленточными магнитофонами для аудиосигналов, - но по меньшей мере с одним ключевым отличием. Поскольку содержимое цифровой информации может быть записано фактически без потерь сигнала, это создает для обладателей авторских прав «риск» того, что их работы будут свободно (пиратски) распространяться без компенсации. С использованием видеомагнитофонов и ленточных магнитофонов устройство(а) и среда передачи вносят в процесс записи шум или искажение данных. При меняющейся (потоковой) или фиксированной цифровой среде передачи не имеет значения, почему не могут осуществляться фактически свободные от потерь преобразования и повторные передачи, хотя бы в пределах способностей человеческих слуха и зрения, и не имеет значения, почему естественные цифровые данные не могут сохраняться и свободно распределяться. Таким образом, было бы желательно предотвратить неограниченное перераспределение цифровых данных, потому что нет ни малейшей разницы между тем, что могут предоставить владельцы авторского права за плату, и тем, что могут свободно предоставить пираты. Кроме того, в отношении передач, которые желательно иметь конфиденциальными, - таких как транзакции электронной коммерции, - для пользователя, участвующего в диалоге, важно, чтобы никто третий не стал участником этих транзакций. Таким образом, по отношению к содержимому от достоверного источника в настоящее время нет практического способа для «защищенной» обработки или визуализации данных на пользовательском компьютере без предотвращения пиратства или искажения.The Internet and many other sources and applications provide a huge array of changing or fixed information or other content for listening, viewing, processing, storage and other visualization. However, at present, there is no practical way to collect, record or visualize changing or fixed information or other content in a copy-protected manner so that pirates cannot connect to the stream at any point along the channel - during the content processing or during visualization content - to obtain ownership of a copy or change of this content. This problem existed in the past and in connection with other devices for visualizing and recording information, for example, video recorders for television content or tape recorders for audio signals, but with at least one key difference. Since the content of digital information can be recorded virtually without signal loss, this creates a “risk” for copyright owners that their work will be freely distributed (pirated) without compensation. Using video recorders and tape recorders, the device (a) and the transmission medium introduce noise or data distortion into the recording process. With a changing (streaming) or fixed digital transmission medium, it does not matter why transformations and retransmissions that are practically free of loss, even at least within the limits of human hearing and vision, cannot be performed, and it does not matter why natural digital data cannot be stored and freely distributed. Thus, it would be desirable to prevent the unlimited redistribution of digital data, because there is not the slightest difference between what copyright owners can provide for a fee and what pirates can freely provide. In addition, in relation to transmissions that are desired to be kept confidential, such as e-commerce transactions, for the user participating in the dialogue, it is important that no one third becomes involved in these transactions. Thus, with respect to content from a reliable source, there is currently no practical way to “securely” process or visualize data on a user computer without preventing piracy or distortion.
В частности, когда содержимое передается по каналу между главной вычислительной системой, одним или более блоками графической обработки (БГО) и визуализирующим устройством, например монитором, для пирата или иной несанкционированной третьей стороны имеется несколько возможностей подключиться к линии или сигналу и либо незаконно получить сигнал, либо исказить его. Кроме того, поскольку диалог пользователей становится все более усложненным благодаря услугам передачи сообщений и организации видеотелеконференций, обеспечение достоверного канала передачи для охраняемого содержимого, откуда бы оно ни исходило, становится все более важным движением вперед.In particular, when the content is transmitted through the channel between the main computing system, one or more graphic processing units (BGO) and a visualizing device, such as a monitor, there are several possibilities for a pirate or other unauthorized third party to connect to a line or signal and or to illegally receive a signal, either distort it. In addition, as user dialogue is becoming more complicated due to messaging and video teleconferencing services, providing a reliable transmission channel for protected content, wherever it comes from, is becoming an increasingly important advance.
Далее, ясно, что будущие поколения операционных систем, вычислительных устройств или программных приложений будут использовать более мощные в вычислительном отношении БГО для коммерческих приложений, по сравнению с привлечением более мощных в вычислительном отношении центральных процессоров (ЦП), как в современных персональных компьютерах. Таким образом, гарантирование того, что содержимое посылается на БГО посредством «достоверных программных приложений», станет фундаментальным свойством для будущих вычислительных устройств, но не обеспечивается в должной мере нынешними вычислительными системами.Further, it is clear that future generations of operating systems, computing devices, or software applications will use more computationally powerful BGOs for commercial applications, compared with the use of more computationally powerful central processors (CPUs), as in modern personal computers. Thus, guaranteeing that content is sent to the BGO through “reliable software applications” will become a fundamental property for future computing devices, but is not adequately provided by current computing systems.
Можно считать, что эта проблема предоставления защищенного канала передачи для достоверного содержимого состоит из двух частей: (1) необходимо гарантировать, что достоверное содержимое нельзя скопировать или просмотреть в некой уязвимой точке в канале передачи (конфиденциальность), и (2) необходимо гарантировать, что канал передачи предотвращает несанкционированное искажение данных в канале (защищенность). В контексте системной защиты сложность является препятствием, потому что она усложняет обеспечение защищенности системы. Как в случае с аэропортом или иного сценария обеспечения безопасности, чем больше входов и выходов имеет система, тем труднее становится обеспечить ее безопасность. В этом отношении в настоящее время не имеется средств, с помощью которых объем функций БГО и драйвера(ов) дисплея может быть сделан достоверным в терминах как конфиденциальности, так и защищенности. Таким образом, было бы желательно реализовать достоверную графическую среду в связи с вычислительным устройством, которое принимает содержимое от достоверного источника, так что пользователь этого устройства может быть уверен, что это содержимое не может быть скопировано без разрешения и не может быть фальсифицировано или изменено третьей стороной.We can assume that this problem of providing a secure transmission channel for reliable content consists of two parts: (1) it is necessary to ensure that the reliable content cannot be copied or viewed at some weak point in the transmission channel (confidentiality), and (2) it must be guaranteed that The transmission channel prevents unauthorized data distortion in the channel (security). In the context of system protection, complexity is an obstacle because it complicates the security of the system. As in the case of an airport or other security scenario, the more entrances and exits the system has, the more difficult it is to ensure its security. In this regard, at present, there are no means by which the scope of the BGO functions and the display driver (s) can be made reliable in terms of both confidentiality and security. Thus, it would be desirable to implement a reliable graphical environment in connection with a computing device that receives content from a reliable source, so that the user of this device can be sure that this content cannot be copied without permission and cannot be falsified or altered by a third party .
Сущность изобретенияSUMMARY OF THE INVENTION
Ввиду вышеизложенного, настоящее изобретение обеспечивает способы и системы для криптографической защиты охраняемого содержимого в связи с графической подсистемой вычислительного устройства. Для зашифровки содержимого видеопамяти применяются такие методы, что несанкционированное программное обеспечение не может получить к нему доступа, благодаря чему удовлетворяется цель конфиденциальности. Кроме того, предложен механизм обнаружения фальсификации, обеспечивающий осведомленность о том, когда данные изменены каким-либо образом, благодаря чему удовлетворяется цель защищенности. В различных вариантах осуществления изобретения раскрывает, как шифровать содержимое оверлейных поверхностей и/или командных буферов, и/или раскрывает, как разрешить БГО работать с зашифрованным содержимым при предотвращении его доступности для не доверенных сторон, устройств или программного обеспечения.In view of the foregoing, the present invention provides methods and systems for cryptographic protection of protected content in connection with a graphics subsystem of a computing device. Such methods are used to encrypt the contents of the video memory that unauthorized software cannot gain access to it, thereby satisfying the purpose of confidentiality. In addition, a fraud detection mechanism has been proposed that provides awareness of when the data has been changed in any way, thereby satisfying the purpose of security. In various embodiments, the invention discloses how to encrypt the contents of overlay surfaces and / or command buffers, and / or discloses how to allow BGO to work with encrypted content while preventing it from being accessible to untrusted parties, devices, or software.
Способы по изобретению различным образом включают в себя методы криптографической защиты охраняемого содержимого в связи с достоверными графическими системами, имеющими память видеоданных, блок(и) графической обработки (БГО) и устройство криптографической обработки, соединенное для осуществления связи с БГО, причем способы содержат запрашивание графической системы программным приложением либо устройством на выполнение обработки или визуализации охраняемого содержимого, при этом запрашивание включает в себя передачу сеансового ключа программным приложением либо устройством в графическую систему и передачу охраняемого содержимого в зашифрованную часть(и) памяти видеоданных, дешифрирование содержимого зашифрованной части(ей) памяти видеоданных блоком(ами) графической обработки при осуществлении связи с устройством криптографической обработки, выполнение обработки или визуализации дешифрированного содержимого блоком(ами) графической обработки и выведение этого содержимого из БГО.The methods of the invention in various ways include cryptographic protection methods for protected content in connection with reliable graphic systems having video data memory, a graphic processing unit (s) and a cryptographic processing device connected to communicate with the BGO, the methods comprising requesting a graphic system software application or device to perform processing or visualization of protected content, while the request includes the transfer of session key by a software application or device into the graphics system and transferring the protected content to the encrypted part (s) of the video data memory, decrypting the contents of the encrypted part (s) of the video data memory by the graphic processing unit (s) while communicating with the cryptographic processing device, processing or visualizing the decrypted content block (s) of graphic processing and the removal of this content from the BGO.
Сходные способы по изобретению различным образом включают в себя запрашивание графической системы программным приложением либо устройством на выполнение обработки или визуализации охраняемого содержимого, причем запрашивание включает в себя передачу сеансового ключа программным приложением либо устройством в графическую систему для удостоверения устройством криптографической обработки и передачу охраняемого содержимого в зашифрованную часть(и) памяти видеоданных, дешифрирование содержимого зашифрованной части(ей) памяти видеоданных механизмом дешифрирования блока ввода БГО, при этом механизм дешифрирования осуществляет связь с устройством криптографической обработки, выполнение обработки или визуализации дешифрированного содержимого блоком(ами) графической обработки, зашифровку содержимого механизмом зашифровки/дешифрирования блока вывода БГО и выведение зашифрованного содержимого из БГО.Similar methods of the invention in various ways include requesting a graphic system by a software application or device to process or visualize protected content, the request including transmitting a session key by a software application or device to a graphics system to authenticate the cryptographic processing device and transferring the protected content to encrypted part (s) of video memory, decrypting the contents of the encrypted part (s) of video memory OF DATA input mechanism decryption unit BGO, wherein the decryption mechanism is in communication with the cryptographic processing device, performing the processing or rendering the decrypted content unit (s) of image-crypting mechanism content encryption / decryption block output BGO encrypted content and excretion of BGO.
Другие признаки и варианты осуществления настоящего изобретения описываются ниже.Other features and embodiments of the present invention are described below.
Краткое описание чертежейBrief Description of the Drawings
Способы и системы для криптографической защиты охраняемого содержимого в соответствии с настоящим изобретением описываются далее со ссылками на сопровождающие чертежи, на которых представлено следующее:Methods and systems for cryptographic protection of protected content in accordance with the present invention are described below with reference to the accompanying drawings, in which the following is presented:
фиг. 1А - блок-схема, представляющая примерную сетевую среду с разнообразными вычислительными устройствами, в которой может быть реализовано настоящее изобретение;FIG. 1A is a block diagram representing an example network environment with various computing devices in which the present invention may be implemented;
фиг. 1В - блок-схема, представляющая не ограничивающий пример вычислительного устройства, в котором может быть реализовано настоящее изобретение;FIG. 1B is a block diagram showing a non-limiting example of a computing device in which the present invention may be implemented;
фиг. 2 - блок-схема алгоритма, иллюстрирующая незащищенные части графического канала, которые защищаются в соответствии с изобретением;FIG. 2 is a flowchart illustrating unprotected portions of a graphic channel that are protected in accordance with the invention;
фиг. 3А и 3В - блок-схемы, иллюстрирующие примерные аспекты первого уровня защищенности в соответствии с изобретением;FIG. 3A and 3B are block diagrams illustrating exemplary aspects of a first level of security in accordance with the invention;
фиг. 4А-4С - блок-схемы, иллюстрирующие примерные аспекты второго уровня защищенности в соответствии с изобретением;FIG. 4A-4C are block diagrams illustrating exemplary aspects of a second level of security in accordance with the invention;
фиг. 5А-5В - приведенное для примера смешивание форматов AYUV/ARGB в соответствии с изобретением;FIG. 5A-5B show an example mix of AYUV / ARGB formats in accordance with the invention;
фиг. 6А-6В - приведено для примера смешивание форматов YUY2 в соответствии с изобретением;FIG. 6A-6B are an example of mixing YUY2 formats in accordance with the invention;
фиг. 7А-7В - приведенное для примера смешивание упакованного плоского формата в соответствии с изобретением;FIG. 7A-7B show an exemplary mixing of a packaged flat format in accordance with the invention;
фиг. 8А и 8В - блок-схемы, иллюстрирующие примерные аспекты третьего уровня защищенности в соответствии с изобретением;FIG. 8A and 8B are block diagrams illustrating exemplary aspects of a third level of security in accordance with the invention;
фиг. 9А и 9В - блок-схемы, иллюстрирующие приведенные для примера методы шифрования, которые могут применяться для выходного сигнала блока графической обработки в соответствии с изобретением.FIG. 9A and 9B are flowcharts illustrating exemplary encryption methods that can be used for the output of a graphics processing unit in accordance with the invention.
Подробное описание изобретенияDETAILED DESCRIPTION OF THE INVENTION
ОбзорOverview
Данное изобретение обеспечивает системы и способы для расширения операционной системы или иного посредника между содержимым от достоверного источника и графической системой для обработки и/или визуализации этого содержимого, чтобы разрешить работу приложений «достоверной графики», таких как защищенные от фальсификации конфиденциальные диалоги, и воспроизведение первичного содержимого, защищенного от несанкционированного дублирования. Один из аспектов изобретения состоит в том, что оно обеспечивает три «уровня» защищенности: (1) шифрование содержимого оверлейных поверхностей, (2) разрешение блоку графической обработки или иному совместно работающему устройству (сопроцессору) оперировать с зашифрованным содержимым, не делая его доступным для недостоверных сторон, и (3) разрешение зашифровывания командных буферов.The present invention provides systems and methods for expanding an operating system or other intermediary between content from a trusted source and a graphics system for processing and / or visualizing this content to enable the operation of "reliable graphics" applications, such as tamper-proof confidential dialogs, and reproduction of the primary content protected against unauthorized duplication. One of the aspects of the invention is that it provides three "levels" of security: (1) encryption of the contents of the overlay surfaces, (2) allowing the graphic processing unit or other collaborative device (coprocessor) to operate with encrypted content, without making it accessible to unreliable parties, and (3) permission to encrypt command buffers.
Как упоминалось, в контексте системной защищенности сложность является препятствием, потому что она усложняет обеспечение защищенности системы. В результате изобретение исходит из того, что весь объем функций БГО и драйвера(ов) дисплея должен рассматриваться как ненадежный (уязвимый). Изобретение затем применяет методы, которые увеличивают шансы корректной реализации в терминах конфиденциальности и защищенности путем ограничения объема аппаратных средств, которые могут быть реализованы для удовлетворения критериям защищенности.As mentioned, in the context of system security, complexity is an obstacle because it complicates the security of the system. As a result, the invention proceeds from the fact that the entire scope of the BGO functions and the display driver (s) should be considered unreliable (vulnerable). The invention then applies methods that increase the chances of a correct implementation in terms of confidentiality and security by limiting the amount of hardware that can be implemented to meet the security criteria.
Терминология, в соответствующая изобретению, уже обсуждалась выше. Однако в целях ясности некоторые термины будут определены ниже. Термин «конфиденциальный» относится к предотвращению получения доступа к информации достоверного (защищенного) содержимого не доверительной (недостоверной) третьей стороной, такой как устройство или программное обеспечение третьей стороны. Пример такой конфиденциальности включает в себя предотвращение получения доступа не доверительной третьей стороной к воспроизведению зашифрованного первичного содержимого видеоданных где бы то ни было вдоль канала графики. Термин «защищенный» относится к предотвращению получения доступа к информации достоверного содержимого или ее изменения не доверительной третьей стороной, такой как устройство или программное обеспечение третьей стороны, без обнаружения этого факта. Пример такой защищенности включает в себя предотвращение получения доступа к дисплею охраняемого диалога или его изменения не доверительной третьей стороной, который может происходить во время транзакции электронной коммерции.The terminology in accordance with the invention has already been discussed above. However, for clarity, some terms will be defined below. The term "confidential" refers to preventing access to information of reliable (protected) content by a non-trusted (inaccurate) third party, such as a third-party device or software. An example of such confidentiality includes preventing non-trusted third parties from accessing the encrypted primary video content anywhere along the graphics channel. The term "secure" refers to preventing access to information of reliable content or its modification by a non-trusted third party, such as a third-party device or software, without detecting this fact. An example of such security includes preventing access to the display of a protected dialogue or changing it by a non-trusted third party that may occur during an e-commerce transaction.
В этом отношении изобретение рассматривает перекрывающиеся окна, например пользовательский интерфейс поверх видеопотоков первичного содержимого, а также незатемняемые окна, которые могут представляться во время диалогов электронной коммерции.In this regard, the invention contemplates overlapping windows, for example a user interface on top of primary content video streams, as well as dimming windows that may appear during e-commerce dialogs.
Примерная сетевая средаSample network environment
Специалисту может быть понятно, что компьютер или иное клиентское или серверное устройство может применяться как часть компьютерной сети, или в распределенной вычислительной среде. В этом отношении настоящее изобретение применимо для любой компьютерной системы, имеющей любое число блоков памяти или хранения и любое число программных приложений и процессов, реализуемых в любом количестве блоков хранения, или объемов, которые могут использовать режим достоверной графики по изобретению. Настоящее изобретение может применяться к среде с серверными компьютерами и клиентскими компьютерами, размещенными в сетевой среде или в распределенной вычислительной среде, имеющей удаленную или локальную память. Настоящее изобретение может также применяться в автономных вычислительных устройствах, имеющих функцию языка программирования, способности интерпретации и исполнения для генерирования, приема и передачи информации в связи с удаленными или локальными услугами.One skilled in the art may understand that a computer or other client or server device may be used as part of a computer network, or in a distributed computing environment. In this regard, the present invention is applicable to any computer system having any number of memory or storage units and any number of software applications and processes implemented in any number of storage units, or volumes that can use the reliable graphics mode of the invention. The present invention can be applied to an environment with server computers and client computers located in a network environment or in a distributed computing environment having remote or local memory. The present invention can also be applied in stand-alone computing devices having a programming language function, interpretation and execution capabilities for generating, receiving and transmitting information in connection with remote or local services.
Распределенное вычисление облегчает совместное использование компьютерных ресурсов и услуг путем прямого обмена между вычислительными устройствами и системами. Эти ресурсы и услуги включают в себя обмен информацией, кэш-память и дисковую память для файлов. Распределенное вычисление получает преимущества от сетевой связности, позволяя клиентам выравнивать их коллективную производительность для обеспечения преимуществ всему предприятию. В этом отношении различные устройства могут иметь программные приложения, объекты и ресурсы, которые могут взаимодействовать с использованием каналов достоверной графики по настоящему изобретению.Distributed computing facilitates the sharing of computer resources and services through direct exchange between computing devices and systems. These resources and services include information exchange, cache and disk storage for files. Distributed computing benefits from network connectivity, enabling customers to align their collective performance to provide benefits to the entire enterprise. In this regard, various devices may have software applications, objects, and resources that can interact using reliable graphics channels of the present invention.
Фиг. 1А представляет условную схему примерной сетевой или распределенной вычислительной среды. Эта распределенная вычислительная среда содержит вычислительные объекты 10а, 10b и т.д. и вычислительные объекты или устройства 110а, 110b, 110с и т.д. Эти объекты могут содержать программы, способы, банки данных, программируемую логику и т.п. Объекты могут содержать части одного и того же или различных устройств, таких как персональные цифровые ассистенты (ПЦА), телевизоры, проигрыватели стандарта МР3, персональные компьютеры и т.п. Каждый объект может осуществлять связь с другим объектом посредством сети 14 связи. Эта сеть сама может содержать другие вычислительные объекты и вычислительные устройства, которые предоставляют услуги системе по фиг. 1А. В соответствии с одним аспектом изобретения каждый объект 10 или 110 может содержать программное приложение, которое может запрашивать достоверные графические ресурсы.FIG. 1A is a schematic diagram of an example network or distributed computing environment. This distributed computing environment comprises computing objects 10a, 10b, etc. and computing objects or devices 110a, 110b, 110c, etc. These objects may contain programs, methods, data banks, programmable logic, etc. Objects may contain parts of the same or different devices, such as personal digital assistants (PDAs), televisions, MP3 players, personal computers, etc. Each object can communicate with another object via the communication network 14. This network itself may contain other computing entities and computing devices that provide services to the system of FIG. 1A. In accordance with one aspect of the invention, each object 10 or 110 may comprise a software application that may request reliable graphic resources.
Следует также иметь в виду, что объект, такой как 110с, может выполнять функции главного устройства в другом вычислительном устройстве 10 или 110. Таким образом, хотя отображенная физическая среда может представлять подсоединенные устройства как компьютеры, такая иллюстрация является просто примером, а физическая среда может альтернативно отображаться и описываться содержащей разные цифровые устройства, такие как ПЦА, телевизоры, проигрыватели стандарта МР3 и т.п., программные объекты, такие как интерфейсы, объекты связи и тому подобные.It should also be borne in mind that an object, such as 110c, can act as the host device in another computing device 10 or 110. Thus, although the displayed physical environment can represent connected devices as computers, this illustration is just an example, and the physical environment can alternatively displayed and described containing various digital devices, such as PDA, televisions, MP3 players, etc., software objects, such as interfaces, communication objects and the like.
Имеется множество систем компонентов и сетевых конфигураций, которые поддерживают распределенные вычислительные среды. К примеру, вычислительные системы могут соединяться вместе системами проводных или беспроводных линий, локальными сетями или глобальными распределенными сетями. В настоящее время многие сети связаны с Интернетом, который обеспечивает инфраструктуру для распределенных в глобальном масштабе вычислений и заключает в себя многие различные сети.There are many component systems and network configurations that support distributed computing environments. For example, computing systems can be connected together by wired or wireless line systems, local area networks, or wide area networks. Currently, many networks are connected to the Internet, which provides the infrastructure for globally distributed computing and encompasses many different networks.
В домашних сетевых средах имеется по меньшей мере четыре совершенно разных сетевых канала переноса, каждый из которых может поддерживать единственный протокол, такие как линия электропитания, канал данных (как беспроводный, так и проводной), речевой канал (например, телефон) и развлекательные каналы. Большинство домашних управляющих устройств, таких как выключатели света и домашняя техника, могут использовать линию электропитания для подключения. Услуги данных могут вводиться в дом как широкополосные (например, либо цифровая абонентская линия (ЦАЛ) (DSL), либо как кабельный модем) и быть доступными в домашних условиях с помощью либо беспроводного (например, HomeRF или 802.11b), либо проводного (например, Home PNA, Cat 5, даже линия электропитания) подключения. Речевой трафик может вводиться в дом либо как проводной (например, Cat 3), либо как беспроводный (например, сотовые телефоны) и может распределяться в доме с помощью проводки Cat 3. Развлекательные каналы могут вводиться в дом либо через спутник, либо по кабелю и обычно распределяются в доме с помощью коаксиального кабеля. Стандарты IEEE 1394 и DVI также представляют собой цифровые межсоединения для группы медиаустройств. Все эти сетевые среды и иное, что может представлять собой стандарты протоколов, могут соединяться друг с другом для формирования внутрикорпоративной сети (интрасети), которая может подключаться к внешнему миру посредством Интернета. Короче говоря, существует множество самых разных источников для хранения и передачи данных, а следовательно, вычислительные устройства потребуют способов защиты содержимого во всех частях канала обработки данных.In home networking environments, there are at least four completely different network transfer channels, each of which can support a single protocol, such as a power line, a data channel (both wireless and wired), a voice channel (such as a telephone), and entertainment channels. Most home control devices, such as light switches and home appliances, can use a power line to connect. Data services can be entered into the house as broadband (for example, either a digital subscriber line (DSL) or as a cable modem) and be accessible at home using either wireless (for example, HomeRF or 802.11b) or wired (for example , Home PNA,
Понятием Интернет обычно обозначают совокупность сетей и шлюзов, использующих набор протоколов TCP/IP, который общеизвестен в области компьютерных сетей. "TCP/IP" является акронимом от "Transport Control Protocol/Interface Program" («Транспортный управляющий протокол/Интерфейсная программа»). Интернет можно описать как систему географически распределенных удаленных компьютерных сетей, соединенных между собой компьютерами, исполняющими сетевые протоколы, которые позволяют пользователям взаимодействовать и совместно использовать информацию по сетям. Вследствие такого широкого совместного использования информации удаленные сети, такие как Интернет, в общем случае в большой степени включены практически без ограничений в открытую систему, для которой разработчики могут проектировать программные приложения для выполнения специализированных операций или услуг.The term Internet usually refers to a collection of networks and gateways using the TCP / IP protocol suite, which is well known in the field of computer networks. "TCP / IP" is an acronym for "Transport Control Protocol / Interface Program". The Internet can be described as a system of geographically distributed remote computer networks interconnected by computers that execute network protocols that allow users to interact and share information over networks. Due to such wide sharing of information, remote networks, such as the Internet, are generally largely included, with little or no restriction, in an open system for which developers can design software applications to perform specialized operations or services.
Таким образом, сетевая инфраструктура обеспечивает главную часть сетевых топологий, таких как клиент-сервер, одноранговые или гибридные архитектуры. «Клиент» является членом класса или группы, использующим услуги другого класса или группы, к которым он не относится. Таким образом, при вычислении клиент представляет собой процесс, т.е., грубо говоря, набор команд или задач, который требует услугу, предоставляемую другой программой. Клиентский процесс использует требуемую услугу без «знания» каких-либо рабочих подробностей о самой этой другой программе или услуге. В архитектуре клиент/сервер, в частности в сетевой системе, клиентом обычно является компьютер, который имеет доступ к совместно используемым сетевым ресурсам, предоставляемым другим компьютером, например сервером. В примере фиг. 1А компьютеры 110а, 110b и т.д. могут рассматриваться как клиенты, а компьютеры 10а, 10b и т.д. могут рассматриваться как сервер, где сервер 10а, 10b и т.д. обслуживает данные, которые затем копируются в клиентские компьютеры 110а, 110 b и т.д.Thus, the network infrastructure provides the bulk of network topologies such as client-server, peer-to-peer or hybrid architectures. A “Client” is a member of a class or group using the services of another class or group to which it does not belong. Thus, in computing, the client is a process, i.e., roughly speaking, a set of commands or tasks that requires a service provided by another program. The client process uses the required service without “knowing” any working details about this other program or service itself. In a client / server architecture, in particular in a network system, the client is usually a computer that has access to shared network resources provided by another computer, such as a server. In the example of FIG. 1A, computers 110a, 110b, etc. can be considered as clients, and computers 10a, 10b, etc. can be considered as a server, where the server 10a, 10b, etc. serves data that is then copied to client computers 110a, 110b, etc.
Сервер обычно представляет собой удаленную компьютерную систему, доступ к которой возможен по удаленной сети, такой как Интернет. Клиентский процесс может быть активным в первой компьютерной системе, а серверный процесс может быть активным во второй компьютерной системе, осуществляющим связь друг с другом через среду передачи данных, тем самым обеспечивая распределенные функции и позволяя множеству клиентов получать преимущества вследствие функциональных возможностей сервера собирать информацию.A server is typically a remote computer system that can be accessed over a remote network, such as the Internet. The client process can be active in the first computer system, and the server process can be active in the second computer system, communicating with each other through a data transmission medium, thereby providing distributed functions and allowing multiple clients to take advantage of the server’s functionality to collect information.
Клиент и сервер осуществляют связь друг с другом, используя функции, предоставляемые протокольным уровнем. К примеру, протокол гипертекстового переноса (ПГТП) (HTTP) является общим протоколом, который используется совместно со Всемирной паутиной (World Wide Web - WWW). Обычно для идентификации серверным или клиентским компьютерами друг друга используется компьютерный сетевой адрес, такой как унифицированный указатель ресурсов (URL) или адрес межсетевого протокола (IP). На сетевой адрес могут ссылаться как на адрес унифицированного указателя ресурсов. К примеру, связь может обеспечиваться по среде передачи данных. В частности, клиент и сервер могут быть связаны друг с другом через соединения TCP/IP для осуществления связи с высокой пропускной способностью.The client and server communicate with each other using the functions provided by the protocol layer. For example, the Hypertext Transfer Protocol (CTP) (HTTP) is a common protocol that is used in conjunction with the World Wide Web (WWW). Typically, server or client computers identify each other using a computer network address, such as a Unified Resource Locator (URL) or Internet Protocol (IP) address. The network address may be referred to as the address of a unified resource locator. For example, communication may be provided over a data medium. In particular, the client and server can be connected to each other via TCP / IP connections for high bandwidth communications.
Таким образом, фиг. 1А иллюстрирует примерную сетевую или распределенную среду с сервером, осуществляющим связь с клиентскими компьютерами по сети/шине, где может использоваться настоящее изобретение. Подробнее, несколько серверов 10а, 10b и т.д. взаимосвязаны через сеть/шину 14 связи, которая может быть локальной сетью (LAN), глобальной сетью (WAN), корпоративной сетью, Интернетом и т.п. с клиентскими или удаленными вычислительными устройствами 110а, 110b, 110с, 110d, 110е и т.д., такими как переносной компьютер, ручной компьютер, «тонкий» клиент (или клиент-терминал), сетевое оборудование или другое устройство, такое как видеомагнитофон, телевизор, печь, светильник, нагреватель и тому подобное в соответствии с настоящим изобретением. Тем самым ожидается, что настоящее изобретение может применяться к любому вычислительному устройству, с использованием которого желательно обрабатывать, хранить или визуализировать защищенное содержимое от достоверного источника.Thus, FIG. 1A illustrates an example network or distributed environment with a server communicating with client computers over a network / bus where the present invention can be used. More details, several servers 10a, 10b, etc. interconnected via a communication network / bus 14, which may be a local area network (LAN), wide area network (WAN), corporate network, Internet, and the like. with client or remote computing devices 110a, 110b, 110c, 110d, 110e, etc., such as a laptop computer, a hand computer, a thin client (or client terminal), network equipment, or another device, such as a VCR, a television, oven, lamp, heater and the like in accordance with the present invention. Thus, it is expected that the present invention can be applied to any computing device using which it is desirable to process, store or visualize protected content from a reliable source.
В сетевой среде, в которой сетью/шиной 14 связи является, к примеру, Интернет, серверы 10 могут быть Web-серверами, с которыми клиенты 110а, 110b, 110c, 110d, 110е и т.д. осуществляют связь посредством любых известных протоколов, таких как НТТР. Серверы 10 могут также служить в качестве клиентов 110, что может быть свойством распределенной вычислительной среды. Связь может быть проводной или беспроводной, как удобнее. Клиентские устройства 110 могут осуществлять или не осуществлять связь по сети/шине 14 связи и могут иметь связанные с ними независимые средства связи. К примеру, в случае телевизора или видеомагнитофона для управления им может использоваться или не использоваться сетевой аспект. Каждый клиентский компьютер 110 и серверный компьютер 10 может быть снабжен различными прикладными программными модулями или объектами 135 и иметь соединения или доступ к различным типам запоминающих элементов или объектов, в которых могут сохраняться файлы или в которые можно загружать или перемещать часть(и) файлов. Таким образом, настоящее изобретение можно использовать в компьютерной сетевой среде, имеющей клиентские компьютеры 110а, 110b и т.д., которые могут обращаться к и взаимодействовать с компьютерной сетью/шиной 14, и серверные компьютеры 10а, 10b и т.д., которые могут взаимодействовать с клиентскими компьютерами 110а, 110b и т.д. и другими устройствами 111 и базами 20 данных.In a network environment in which the communication network / bus 14 is, for example, the Internet, the servers 10 may be Web servers with which clients 110a, 110b, 110c, 110d, 110e, etc. communicate through any known protocols, such as HTTP. Servers 10 may also serve as clients 110, which may be a property of a distributed computing environment. Communication can be wired or wireless, as convenient. Client devices 110 may or may not communicate over the communication network / bus 14 and may have independent communications means associated with them. For example, in the case of a television or VCR, the network aspect may or may not be used to control it. Each client computer 110 and server computer 10 can be equipped with various application program modules or
Примерное вычислительное устройствоExample computing device
Фиг. 1В и последующее обсуждение представляют краткое общее описание подходящей вычислительной среды, в которой может быть реализовано изобретение. Следует, однако, иметь в виду, что для использования в связи с настоящим изобретением пригодны портативные, переносные и другие вычислительные устройства и вычислительные объекты всех видов. Хотя ниже описывается универсальный компьютер, это всего лишь пример, и настоящее изобретение может быть реализовано и в связи с «тонким» клиентом, имеющим возможность совместной работы (по сети/шине) и взаимодействия. Таким образом, настоящее изобретение может быть реализовано под управлением главной программы в среде сетевых услуг, в которую вовлечены очень малые или минимальные клиентские ресурсы, например, в сетевой среде, в которой клиентское устройство служит просто как интерфейс для сети/шины, как объект, помещенный в оборудование. По существу, все, где могут сохраняться данные и откуда эти данные могут извлекаться или визуализироваться, представляет собой желательную или подходящую среду для работы криптографической защиты защищенного содержимого согласно изобретению.FIG. 1B and the following discussion provide a brief, general description of a suitable computing environment in which the invention may be implemented. However, it should be borne in mind that portable, portable and other computing devices and computing objects of all kinds are suitable for use in connection with the present invention. Although a universal computer is described below, this is just an example, and the present invention can be implemented in connection with a thin client that has the ability to work together (over a network / bus) and interact. Thus, the present invention can be implemented under the control of the main program in a network services environment in which very small or minimal client resources are involved, for example, in a network environment in which a client device serves simply as an interface for a network / bus, as an object placed into equipment. Essentially, everything where data can be stored and from where this data can be retrieved or visualized is a desirable or suitable environment for the cryptographic protection of the protected content of the invention to operate.
Хотя это и не требуется, изобретение может быть реализовано посредством операционной системы, прикладного программного интерфейса (ППИ) и/или включено в прикладное программное обеспечение, которое взаимодействует с достоверным содержимым. В различных вариантах осуществления изобретение также применимо к аппаратному обеспечению, которое приспособлено для взаимодействия, и к методам шифрования, описанным ниже. Программное обеспечение может описываться в общем контексте исполняемых компьютером команд, таких как программные модули, исполняемые одним или более компьютерами, такими как клиентские рабочие станции, серверы или иные устройства. В общем случае, программные модули включают в себя подпрограммы, программы, объекты, компоненты, структуры данных и иные средства, что выполняющие конкретные задачи или реализующие конкретные абстрактные типы данных. Обычно функции программных модулей в различных вариантах выполнения могут комбинироваться или распределяться по желанию. Кроме того, специалистам понятно, что изобретение может осуществляться с другими конфигурациями компьютерных систем. Другие общеизвестные вычислительные системы, среды и/или конфигурации, которые могут быть пригодны для использования с изобретением, включают в себя - но не ограничиваются ими - персональные компьютеры (ПК) (РС), банковские автоматы, серверные компьютеры, портативные или компактные устройства, многопроцессорные системы, программируемая пользовательская электроника, сетевые ПК, оборудование, светильники, элементы контроля за окружающей средой, миникомпьютеры, мэйнфреймы и тому подобное. Изобретение может быть также осуществлено в распределенных вычислительных средах, где задачи выполняются удаленными устройствами обработки, которые соединены через сеть/шину связи или иную среду передачи данных. В распределенной вычислительной среде программные модули могут размещаться как в локальных, так и в удаленных компьютерных запоминающих средах, в том числе в запоминающих устройствах, а клиентские узлы в свою очередь могут вести себя как серверные узлы.Although not required, the invention can be implemented through an operating system, application programming interface (API) and / or included in application software that interacts with valid content. In various embodiments, the invention is also applicable to hardware that is interoperable, and to the encryption methods described below. Software may be described in the general context of computer-executable instructions, such as program modules, being executed by one or more computers, such as client workstations, servers, or other devices. In general, program modules include routines, programs, objects, components, data structures, and other means that perform particular tasks or implement particular abstract data types. Typically, the functions of program modules in various embodiments may be combined or distributed as desired. In addition, it will be apparent to those skilled in the art that the invention may be practiced with other computer system configurations. Other well-known computing systems, environments and / or configurations that may be suitable for use with the invention include, but are not limited to, personal computers (PCs), automated banking machines, server computers, portable or compact devices, and multiprocessors systems, programmable user electronics, networked PCs, equipment, lights, environmental controls, minicomputers, mainframes and the like. The invention may also be practiced in distributed computing environments where tasks are performed by remote processing devices that are connected through a communication network / bus or other data transmission medium. In a distributed computing environment, program modules can be located in both local and remote computer storage environments, including storage devices, and client nodes, in turn, can behave like server nodes.
Фиг. 1В также иллюстрирует пример подходящей среды 100 вычислительной системы, в которой может быть реализовано изобретение, хотя, как пояснено выше, эта среда 100 вычислительной системы является лишь примером подходящей вычислительной среды и не накладывает каких-либо ограничений ни на объем использования, ни на функции изобретения. Не следует интерпретировать эту вычислительную среду 100 как имеющую какую бы то ни было зависимость или требование, связанное с любым из компонентов или их комбинацией, проиллюстрированными в примерной рабочей среде 100.FIG. 1B also illustrates an example of a suitable computing system environment 100 in which the invention may be implemented, although, as explained above, this computing system environment 100 is only an example of a suitable computing environment and does not impose any restrictions on the scope of use or the functions of the invention . This computing environment 100 should not be interpreted as having any dependency or requirement associated with any of the components or their combination illustrated in the example operating environment 100.
На фиг. 1В примерная система для осуществления изобретения включает в себя универсальное вычислительное устройство в виде компьютера 110. Компоненты этого компьютера могут включать в себя - но не ограничиваться ими - блок 120 обработки, системную память 130 и системную шину 121, которая связывает различные системные компоненты, включая и системную память, с блоком 120 обработки. Системная шина 121 может быть любой из различных типов шинных структур, в том числе шиной памяти или контроллером памяти, периферийной шиной и локальной шиной, с использованием любой из различных шинных архитектур. В качестве примера - но не ограничения - такие архитектуры включают в себя шину стандарта ISA (архитектуры промышленного стандарта), шину стандарта МСА (микроканальной архитектуры), шину стандарта EISA (расширенной архитектуры промышленного стандарта), локальную шину стандарта VESA (Ассоциации по стандартам в видеоэлектронике) и шину стандарта PCI (взаимных соединений периферийных компонентов) (известную также как шину расширения).In FIG. 1B, an exemplary system for practicing the invention includes a general-purpose computing device in the form of a computer 110. The components of this computer may include, but are not limited to, a
Компьютер 110 обычно включает в себя различные машиночитаемые носители. Машиночитаемыми носителями могут быть любые доступные носители, к которым может обращаться компьютер 110, и включают в себя как энергозависимые, так и энергонезависимые носители, как сменяемые, так и несменяемые носители. В качестве примера - но не ограничения - машиночитаемые носители могут содержать компьютерные запоминающие среды и среды передачи данных. Компьютерные запоминающие среды включают в себя как энергозависимые, так и энергонезависимые, как сменяемые, так и несменяемые носители, осуществленные любым способом или с использованием любой технологии для хранения информации, такой как машиночитаемые команды, структуры данных, программные модули и иные данные. Машиночитаемые носители включают в себя - но не ограничиваются ими - ОЗУ, ПЗУ, ЭСППЗУ, флэш-память или иную технологию памяти, ПЗУ-КД (CDROM), цифровой многоцелевой диск (DVD) или иную память на оптических дисках, магнитные кассеты, магнитную ленту, память на магнитных дисках или иные магнитные запоминающие устройства, или любой другой носитель, который может использоваться для сохранения желательной информации и к которому может обращаться компьютер 110. Среды передачи данных обычно реализуют машиночитаемые команды, структуры данных, программные модули или иные данные в сигнале, модулированном данными, таком как несущее колебание или другой механизм переноса, и включают в себя любые среды доставки информации. Выражение «сигнал модулированный данными» означает сигнал, который имеет одну или более характеристик, установленных или измененных для кодирования информации в сигнале. В качестве примера - но не ограничения - среды передачи данных включают в себя проводные среды, такие как проводная сеть и непосредственное проводное подключение, и беспроводные среды, такие как звуковые, радиочастотные, инфракрасные и другие беспроводные среды. Комбинации любых из вышеназванных средств также включаются в объем машиночитаемых носителей.Computer 110 typically includes various computer readable media. Machine-readable media can be any available media that can be accessed by computer 110, and includes both volatile and non-volatile media, both removable and non-removable media. By way of example, but not limitation, computer-readable media may include computer storage media and data transmission media. Computer storage media includes both volatile and non-volatile, removable and non-removable media implemented in any way or using any technology for storing information, such as machine-readable instructions, data structures, program modules and other data. Computer-readable media include, but are not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, ROM-CD (CDROM), digital multi-purpose disk (DVD) or other optical disk memory, magnetic tapes, magnetic tape , memory on magnetic disks or other magnetic storage devices, or any other medium that can be used to store the desired information and which can be accessed by computer 110. Communication media typically implement machine-readable instructions, data structures, software modules or other data in a modulated data signal such as a carrier wave or other transport mechanism and include any information delivery media. The expression "modulated data signal" means a signal that has one or more of the characteristics set or changed to encode information in the signal. By way of example, but not limitation, communication media includes wired media such as a wired network and direct wired connection, and wireless media such as audio, radio frequency, infrared, and other wireless media. Combinations of any of the above are also included in the scope of computer-readable media.
Системная память 130 включает в себя компьютерный носитель данных в виде энергозависимой и/или энергонезависимой памяти, такой как постоянное запоминающее устройство (ПЗУ) (ROM) 131 и оперативное запоминающее устройство (ОЗУ) (RAM) 132. Базовая система ввода-вывода (БСВВ) (BIOS) 133, содержащая базовые подпрограммы, которые помогают переносить информацию между элементами внутри компьютера 110, как во время запуска, обычно хранится в ПЗУ 131. ОЗУ 132 обычно содержит данные и/или программные модули, которые сразу же доступны для блока 121 обработки и/или обрабатываются им в данный момент. В качестве примера - но не ограничения - фиг. 1В иллюстрирует операционную систему 134, прикладные программы 135, другие программные модули 136 и программные данные 137.
Компьютер 110 может также включать в себя другие съемные-несъемные энергозависимые-энергонезависимые компьютерные носители данных. Только в качестве примера фиг. 1В иллюстрирует дисковод 141 жесткого диска, который считывает с несъемного энергонезависимого магнитного носителя или записывает на него, дисковод 151 магнитного диска, который считывает со съемного энергонезависимого диска 152 или записывает на него, дисковод 155 оптического диска, который считывает со съемного энергонезависимого оптического диска, такого как CD ROM или иного оптического носителя, или записывает на него. Другие съемные-несъемные энергозависимые-энергонезависимые компьютерные носители данных, которые можно использовать в примерной операционной среде, включают в себя - но ограничиваются ими - кассеты магнитной ленты, миниатюрные карты флэш-памяти, многоцелевые цифровые диски, цифровые видеоленты, твердотельные ОЗУ, твердотельные ПЗУ и тому подобное. Дисковод 141 жесткого диска обычно соединяется с системной шиной 121 через интерфейс несъемной памяти, такой как интерфейс 140, а дисковод 151 магнитного диска и дисковод 155 оптического диска обычно соединяются с системной шиной 121 интерфейсом съемной памяти, таким как интерфейс 150.Computer 110 may also include other removable, non-removable, volatile, non-volatile computer storage media. By way of example only, FIG. 1B illustrates a
Дисководы и связанные с ними компьютерные носители данных, упомянутые выше и проиллюстрированные на фиг. 1В, вводят в память компьютера считываемые команды, структуры данных, программные модули и другие данные для компьютера 110. На фиг. 1В, к примеру, дисковод 141 жесткого диска проиллюстрирован как хранящий операционную систему 144, прикладные программы 145, другие программные модули 146 и программные данные 147. Отметим, что эти составляющие могут быть либо теми же самыми, что и операционная система 134, прикладные программы 135, другие программные модули 136 и программные данные 137, либо отличными от них. Операционная система 144, прикладные программы 145, другие программные модули 146 и программные данные 147 здесь обозначены отличающимися ссылочными позициями для иллюстрации того, что они, как минимум, являются отличающимися копиями. Пользователь может вводить команды и информацию в компьютер 110 через устройства ввода, такие как клавиатура 162 и координатное устройство 161, обычно называемое мышью, шаровым манипулятором или сенсорным планшетом. Другие устройства ввода (не показаны) могут включать в себя микрофон, джойстик, игровой планшет, антенну спутниковой связи, сканер или тому подобное. Эти и другие устройства ввода часто соединяются с блоком 120 обработки через пользовательский интерфейс ввода, который соединяется с системной шиной 121, но могут соединяться и с другими интерфейсными и шинными структурами, такими как параллельный порт, игровой порт или универсальная последовательная шина (УПШ) (USB). К системной шине 121 может быть также подключен графический интерфейс 182, такой как Northbridge. Northbridge представляет собой набор микросхем, который осуществляет связь с ЦП или главным блоком 120 обработки и обеспечивает информационный обмен для ускоренного графического порта (УГП). Один или более блоков 184 графической обработки (БГО) могут осуществлять связь с графическим интерфейсом 182. В этом отношении БГО 184 в общем случае включают в себя встроенную память, такую как регистровая память, и БГО 184 осуществляют связь с видеопамятью 186. БГО 184, однако являются не единственным примером сопроцессора, и поэтому множество сопроцессорных устройств могут быть включены в компьютер 110. Монитор 191 или устройство иного типа также подключается к системной шине 121 через интерфейс, такой как видеоинтерфейс 190, который, в свою очередь, может осуществлять связь с видеопамятью 186. В общем случае, именно эта часть вычислительного устройства является уязвимой, и, соответственно, настоящее изобретение обеспечивает защиту и конфиденциальность обрабатываемым или визуализируемым в ней данным. В дополнение к монитору 191 компьютеры могут содержать и другие периферийные выходные устройства, такие как громкоговорители 197 и принтер 196, которые могут подключаться через выходной периферийный интерфейс 195.The drives and related computer storage media mentioned above and illustrated in FIG. 1B, readable instructions, data structures, program modules, and other data for computer 110 are inserted into computer memory. FIG. 1B, for example, the
Компьютер 110 может работать в сетевой или распределенной среде с помощью подключений к одному или более удаленным компьютерам, таким как удаленный компьютер 180. Этот удаленный компьютер 180 может быть персональным компьютером, сервером, маршрутизатором, сетевым ПК, одноранговым устройством или другим общим сетевым узлом и обычно включает в себя многие или все элементы, описанные выше по отношению к компьютеру 110, хотя на фиг. 1В проиллюстрировано только запоминающее устройство 181. Логические соединения, показанные на фиг. 1В, включают в себя локальную сеть (ЛС) 171 и глобальную сеть (ГС) 173, но могут также включать в себя другие сети/шины. Такие сетевые среды являются обычными в домах, офисах, компьютерных сетях в масштабах предприятий, корпоративных сетях и Интернете.Computer 110 may operate in a networked or distributed environment by connecting to one or more remote computers, such as
При использовании в сетевой среде ЛС компьютер 110 подключается к ЛС 171 через сетевой интерфейс или адаптер 170. При использовании в сетевой среде ГС компьютер 110 обычно включает в себя модем 172 или иное средство для установления связи по ГС 173, такой как Интернет. Модем 172, который может быть внутренним или внешним, может подключаться к системной шине 121 через пользовательский входной интерфейс 160 или иной подходящий механизм. В сетевой среде программные модули, показанные в отношении компьютера 110, или их части могут храниться в удаленном запоминающем устройстве. В качестве примера - но не ограничения - фиг. 1В иллюстрирует удаленные прикладные программы 185 как находящиеся в запоминающем устройстве 181. Понятно, что показанные сетевые соединения являются примерными, и можно использовать и другие средства для установления линии связи между компьютерами.When used in a LAN network environment, computer 110 connects to the
Примерные распределенные вычислительные оболочки или архитектурыSample distributed computing shells or architectures
Различные распределенные вычислительные оболочки разработаны или разрабатываются в свете сближения персональных вычислений и Интернета. Индивидуальные и деловые пользователи одинаково снабжены эффективно взаимодействующим и обеспечивающим подключение к всемирной сети интерфейсом для программных приложений и вычислительных устройств, резко расширяя способности компьютеров в отношении поисковых средств и сетей.Various distributed computing shells are or are being developed in the light of the convergence of personal computing and the Internet. Individual and business users are equally equipped with an interface that effectively interacts and provides connectivity to the worldwide network for software applications and computing devices, dramatically expanding the ability of computers with respect to search tools and networks.
Например, оболочка .Net platform MICROSOFT® кампании включает в себя серверы, услуги унифицированных модулей, такие как основанная на сети память данных и загружаемое программное обеспечение устройства. Вообще говоря, оболочка .Net platform обеспечивает: (1) возможность работы всего диапазона вычислительных устройств совместно, и автоматическое обновление и синхронизацию пользовательской информации, на них всех, (2) увеличенные интерактивные возможности для Web-сайтов, обеспечиваемую более широким использованием XML, а не HTML, (3) услуги в реальном времени, которые отличаются приспосабливаемым к заказчику доступом и доставкой продуктов и услуг пользователю из центрального исходного пункта для управления различными программными приложениями, такими как электронная почта, к примеру, или программным обеспечением, таким как Office.Net, (4) централизованную память, что повысит эффективность и легкость доступа к информации, а также синхронизацию информации между пользователями и устройствами, (5) возможность интеграции различных сред передачи данных, таких как электронная почта, факсы и телефоны, (6) для разработчиков возможность создавать многократно используемые модули, тем самым увеличивая производительность и снижая число ошибок программирования, и (7) а также многие другие особенности интеграции между платформами.For example, the .Net platform MICROSOFT® campaign shell includes servers, unified module services, such as network-based data storage and device downloadable software. Generally speaking, the .Net platform shell provides: (1) the ability to work the entire range of computing devices together, and automatically update and synchronize user information on all of them, (2) increased interactive features for Web sites, provided by the wider use of XML, and non-HTML, (3) real-time services that differ in customer-friendly access and delivery of products and services to a user from a central source point for managing various software applications, such as email, for example, or software such as Office.Net, (4) centralized memory, which will increase the efficiency and ease of access to information, as well as synchronization of information between users and devices, (5) the ability to integrate various transmission media data, such as e-mail, faxes and telephones, (6) for developers the ability to create reusable modules, thereby increasing productivity and reducing the number of programming errors, and (7) as well as many other features and tegratsii between platforms.
Хотя примерные варианты осуществления описываются здесь в связи со способами, реализуемыми программным обеспечением, находящимся в вычислительном устройстве, одна или более частей изобретения могут также быть реализованы посредством операционной системы, интерфейса прикладного программирования или объекта посредника между сопроцессором и неизмененным содержимым, так что услуги достоверного содержимого могут выполняться, поддерживаться или к ним может быть получен доступ посредством всех языков и услуг .NET, а также в других распределенных вычислительных оболочках. Кроме того, понятно, что один или более методов, описанных в соответствии с изобретением, могут повлечь за собой изменения в аппаратном обеспечении, таком как БГО, чтобы поддерживать эти методы.Although exemplary embodiments are described herein in connection with methods implemented by software residing in a computing device, one or more parts of the invention may also be implemented by an operating system, an application programming interface, or an intermediary between the coprocessor and the unchanged content, so that the services are valid content can be executed, maintained, or accessed through all .NET languages and services, as well as in other distributions computing shells. In addition, it is understood that one or more of the methods described in accordance with the invention may entail changes in hardware, such as BGO, to support these methods.
Криптографически защищаемое охраняемое содержимоеCryptographically Protected Protected Content
Настоящее изобретение, таким образом, предлагает способы и системы для расширения операционных систем или любой платформы, чтобы обеспечить программные приложения «достоверной графики», такие как защищенные от несанкционированного доступа конфиденциальные диалоги, и чтобы обеспечить воспроизведение содержимого таким способом, который противостоит несанкционированному копированию. Проблема, решаемая настоящим изобретением, иллюстрируется фиг. 2, на которой зашифрованное первичное содержимое 200 показано проходящим к достоверному программному приложению TS или генерируемым им. Содержимое 200 может использовать функции БГО 265 до визуализации (или иного использования) содержимого 200 посредством устройства 295 визуализации, как это свойственно использованию достоверного программного обеспечения TS. Такое содержимое 200 будет проходить от системной или главной памяти 230 в память 260 видеоданных для обработки блоком 265 графической обработки. Пунктирная линия на фиг. 2 иллюстрирует, где имеется проблема защиты. Как указано в разделе, характеризующем существующий уровень техники, никакие из ныне существующих систем должным образом не защищают и не доставляют конфиденциально содержимое через элементы, показанные как окруженные пунктиром. С точки зрения достоверного программного обеспечения TS, первая проблема состоит в том, можно ли доверить содержимое компонентам внутри пунктира перед передачей этого содержимого в БГО. В предположении, что достоверное программное обеспечение TS может удостоверить должным образом компоненты внутри пунктирной линии, вторая проблема с точки зрения достоверного программного обеспечения TS состоит в том, что достоверное программное обеспечение TS должно быть более или менее уверено в том, что когда данные передаются в среду, очерченную пунктирной линией, эти данные не будут изменены. Настоящее изобретение в различных описанных ниже вариантах осуществления направлено на решение проблем обоих этих типов. Разными путями эти способы и системы реализуются: (1) зашифровкой содержимого перекрывающихся поверхностей, (2) разрешением для БГО работать с зашифрованным содержимым, не делая его доступным для недостоверных программных приложений или сторон, и (3) зашифровкой содержимого командных буферов.The present invention thus provides methods and systems for expanding operating systems or any platform to provide “reliable graphics” software applications, such as tamper-proof confidential dialogs, and to ensure that content is reproduced in a manner that resists unauthorized copying. The problem solved by the present invention is illustrated in FIG. 2, in which the encrypted
Первый аспект проблемы обработки и визуализации достоверной графики, на решение которого направлено данное изобретение, относится к получению криптографического (иногда называемого здесь «крипто») процессора и индексированного управления ключами. Обычным образом переуступленная совместно поданная заявка на патент США, условно обозначенная № АА/ИИИССС (далее «заявка ССС»), озаглавленная «Способы и системы для аутентификации компонентов в графической системе», раскрывают методы аутентификации компонента(ов) в связи с графической системой, как описывается ниже. Следует понимать, однако, что данное изобретение предполагает, что аутентификация произошла, а тем самым любые методы аутентификации могут применяться для обеспечения достоверной графической платформы, как описывается ниже в различных вариантах осуществления изобретения.The first aspect of the problem of processing and visualizing reliable graphics, the solution of which this invention is directed, relates to obtaining a cryptographic (sometimes referred to as “crypto”) processor and indexed key management. The commonly reassigned jointly filed US patent application, conventionally labeled No. AA / IIISSS (hereinafter referred to as “CCC Application”), entitled “Methods and Systems for Authenticating Components in a Graphic System”, disclose methods for authenticating a component (s) in connection with a graphic system, as described below. It should be understood, however, that the invention assumes that authentication has occurred, and thus any authentication methods can be used to provide a reliable graphic platform, as described below in various embodiments of the invention.
Примерная аутентификацияSample Authentication
В этом отношении, защищенные графические адаптеры должны быть способны аутентифицировать самих себя как таковых. В частности, достоверное программное обеспечение должно иметь возможность различать защищенные графические адаптеры или обходные устройства, такие как спуф [обман]. Вдобавок, достоверное программное обеспечение должно быть способно обнаруживать криптографические ключи для графических адаптеров и должно иметь возможность проверить, что приемником этих ключей является действительно защищенный графический адаптер. Для этой цели защищенные графические адаптеры в соответствии с изобретением снабжаются криптопроцессорами, которые выполняют криптографические задачи аутентификации и переноса ключей.In this regard, secure graphics cards must be able to authenticate themselves as such. In particular, reliable software should be able to distinguish between secure graphics adapters or workarounds, such as spoofing. In addition, reliable software must be able to detect cryptographic keys for graphics adapters and should be able to verify that the receiver of these keys is a truly secure graphics adapter. For this purpose, the secure graphics adapters in accordance with the invention are equipped with crypto processors that perform cryptographic authentication and key transfer tasks.
По отношению к аппаратному обеспечению в соответствии с изобретением предусматриваются криптопроцессоры, которые индивидуализируются и сертифицируются в процессе производства. Каждый криптопроцессор содержит уникальный частный ключ Кчастн дешифровки. Хотя согласно данному изобретению для контекста предполагаются и известны в области криптографии многие алгоритмы шифрования и дешифрации, алгоритмом, описанным здесь, является RSA, а длина ключа составляет 1024 битов, однако это не является ограничением, и выбор быть сделан согласно общеизвестным компромиссам в зависимости от желательных программного приложения и уровня(ей) защищенности.With respect to the hardware in accordance with the invention, cryptoprocessors are provided that are individualized and certified during production. Each crypto processor contains a unique private key to the private decryption. Although many encryption and decryption algorithms are assumed and known in the field of cryptography according to this invention, the algorithm described here is RSA and the key length is 1024 bits, but this is not a limitation and the choice should be made according to well-known compromises depending on the desired software application and security level (s).
В этом отношении криптопроцессор постоянно связан с графическим адаптером либо путем добавления его к существующей микросхеме, либо добавления его в качестве отдельной микросхемы на адаптере. Криптопроцессор реализует криптоалгоритм открытого ключа, как подробнее описывается ниже, и скрывает уникальный секретный ключ. В этом отношении такой криптопроцессор может быстро выполнять дешифрацию открытым ключом при использовании современных полупроводниковых технологий. Однако криптопроцессор может быть также включен в ускоритель открытого ключа и может реализовывать симметричный шифр и некоторую управляющую логику.In this regard, the crypto processor is constantly connected to the graphics adapter either by adding it to an existing chip or by adding it as a separate chip on the adapter. The cryptoprocessor implements a public key cryptographic algorithm, as described in more detail below, and hides a unique secret key. In this regard, such a crypto processor can quickly perform public key decryption using modern semiconductor technologies. However, the crypto processor can also be included in the public key accelerator and can implement a symmetric cipher and some control logic.
В одном примерном неограничивающем варианте осуществления криптопроцессор включает в себя следующие энергозависимые регистры: (1) регистр S на 256 битов для сеансового ключа. Срок службы этого ключа обычно составляет время выполнения достоверного программного обеспечения, и (2) матрицу из множества указательных ключей. Каждый ключ может иметь длину 128 битов, хотя могут быть пригодны и другие выборы. Каждый ключ связан с конкретным окном и используется графическим адаптером для дешифрации своего содержимого. Срок службы каждого ключа управляется командами от достоверного программного обеспечения.In one exemplary non-limiting embodiment, the crypto processor includes the following volatile registers: (1) a 256-bit S register for the session key. The life of this key is usually the runtime of reliable software, and (2) a matrix of many index keys. Each key can be 128 bits long, although other choices may be suitable. Each key is associated with a specific window and is used by the graphics adapter to decrypt its contents. The life of each key is controlled by commands from reliable software.
Как упомянуто, криптопроцессор по изобретению постоянно связан с графическим адаптером. Тем самым требуется средство для защищенного взаимодействия с криптопроцессором, чтобы использовать его функции. В том, что касается взаимодействия с криптопроцессором, настоящее изобретение рассматривает по меньшей мере два метода: (а) внешний интерфейс к достоверному программному обеспечению TS и (б) интерфейс к БГО 265. Первый из этих интерфейсов - по меньшей мере, его криптографические аспекты - должны быть стандартизованы. Последний из этих интерфейсов может быть реализован в специализированной форме, но должен придерживаться всех принципов, установленных ниже.As mentioned, the crypto processor of the invention is constantly connected to the graphics adapter. Thus, a tool is required for secure interaction with the cryptoprocessor in order to use its functions. In terms of interaction with a crypto processor, the present invention considers at least two methods: (a) an external interface to reliable TS software and (b) an interface to
Что касается реализации внешнего интерфейса этот внешний интерфейс использует протокол шифрования секретным ключом (СК) для аутентификации и переноса ключа. По этому протоколу достоверное программное обеспечение зашифровывает сеансовый ключ открытым ключом криптопроцессора. Криптопроцессор принимает результирующий криптографический двоично кодированный массив и дешифрирует его своим секретным ключом, получая тем самым сеансовый ключ. Теперь достоверное программное обеспечение и криптопроцессор совместно используют защиту. Достоверное программное обеспечение может использовать этот сеансовый ключ, чтобы посылать команды на криптопроцессор.As for the implementation of the external interface, this external interface uses the secret key encryption protocol (SC) for authentication and key transfer. According to this protocol, reliable software encrypts the session key with the public key of the crypto processor. The crypto processor accepts the resulting cryptographic binary encoded array and decrypts it with its private key, thereby obtaining a session key. Reliable software and a crypto processor now share security. Trusted software can use this session key to send commands to the crypto processor.
В одном неограничивающем варианте осуществления криптопроцессор воздействует на внешний интерфейс следующими функциями:In one non-limiting embodiment, the crypto processor acts on the external interface with the following functions:
Функция УстановкаСеансовогоКлюча() выполняет шаг начальной аутентификации и перенос ключа. Это единственная функция, обращающаяся к функции открытого ключа криптопроцессора. Таким образом, в одном варианте осуществления настоящее изобретение предполагает вызывать эту функцию один раз за загрузку. Следующий примерный псевдокод представляет следующую не ограничивающую реализацию функции УстановкаСеансовогоКлюча():The Set Session Key () function performs the initial authentication step and key transfer. This is the only function that refers to the cryptoprocessor public key function. Thus, in one embodiment, the present invention contemplates calling this function once per load. The following example pseudo-code represents the following non-limiting implementation of the Session Key () function:
УстановкаСеансовогоКлюча(криптодвоичныймассив){Setting the Session Key (crypto-binary array) {
ЧКРасшифр(частныйКлюч, криптодвоичныймассив, сеансовыйКлюч);ChC Decryption (private Key, crypto binary array, session Key);
}}
После успешного завершения этой операции регистр сеансовыйКлюч содержит ключ, такой как ключ из 256 битов, из криптографического двоично-кодированного массива. Алгоритм открытого ключа может быть, к примеру, алгоритмом RSA длиной 1024 битов.Upon successful completion of this operation, the session-key register contains a key, such as a 256-bit key, from a cryptographic binary-encoded array. The public key algorithm may be, for example, an RSA algorithm with a length of 1024 bits.
Когда симметричный сеансовый ключ К установлен между достоверным программным обеспечением и криптопроцессором, этот ключ может использоваться, чтобы обезопасить всю дальнейшую передачу данных к криптопроцессору и от него. Достоверное программное обеспечение и криптопроцессор могут осуществлять связь посредством простых способов «Получить и Установить», параметры которых криптографически защищены для конфиденциальности и целостности. В частности, блок В параметров каждого вызова может обрабатываться следующим неограничивающим способом:When a symmetric session key K is installed between the trusted software and the crypto processor, this key can be used to secure all further data transfer to and from the crypto processor. Reliable software and a crypto processor can communicate using the simple Get and Install methods, the parameters of which are cryptographically protected for confidentiality and integrity. In particular, the parameter block B of each call can be processed in the following non-limiting way:
AES( M | HMAC( M, K1 ), K2 ),AES (M | HMAC (M, K1), K2),
где:Where:
К1 - это первая половина К (биты 0 - 127),K1 is the first half of K (bits 0 - 127),
К2 - это вторая половина К (биты 128 - 255),K2 is the second half of K (bits 128 - 255),
AES(M,K) представляет собой результат шифрования сообщения М ключом К в стандарте AES в режиме СВС,AES (M, K) is the result of encrypting the message M with the key K in the AES standard in the CBC mode,
НМАС(М,К) представляет собой результат вычисления НМАС через подходящую хеш-функцию на массиве М ключом К,NMAC (M, K) is the result of calculating NMAC through a suitable hash function on an array M with key K,
A | B представляет собой результат конкатенации А и В.A | B is the result of concatenation of A and B.
Этот формат можно использовать для ввода параметров и для вывода параметров следующих функций:This format can be used to enter parameters and to output parameters of the following functions:
Установить ([IN] BOOL needsAck, [IN] BITS128 nonce, [IN] ENUM propertyID, [IN] BYTESEQUENCE propertyParamters, [OUT] BYTESEQUENCE ack)Set ([IN] BOOL needsAck, [IN] BITS128 nonce, [IN] ENUM propertyID, [IN] BYTESEQUENCE propertyParamters, [OUT] BYTESEQUENCE ack)
где:Where:
needsAck является булевым значением, которое позволяет достоверному программному обеспечению указывать, требуется ли квитирование.needsAck is a boolean value that allows reliable software to indicate whether acknowledgment is required.
nonce является 128-битовым значением, выбранным достоверным программным обеспечением. nonce можно использовать в квитировании, если запрашивалось квитирование.nonce is a 128-bit value selected by trusted software. nonce can be used in acknowledgment if acknowledgment is requested.
propertyID идентифицирует свойство, которое устанавливается. Примерный перечень поддерживаемых свойств дан ниже в Таблице 1.propertyID identifies the property that is being set. An approximate list of supported properties is given below in Table 1.
propertyParamters является последовательностью параметров, которая специфична для каждого propertyID.propertyParamters is a sequence of parameters that is specific to each propertyID.
Наконец, ack представляет собой квитирование операции. Криптопроцессор вырабатывает ack, если и только если устанавливалось needsAck. Ack составлен из nonce, за которым следует сообщение, которое специфично для каждого propertyID.Finally, ack is an acknowledgment of an operation. The crypto processor produces ack if and only if needsAck was installed. Ack is made up of nonce, followed by a message that is specific to each propertyID.
Таблица 1 - Перечень propertyID для функции УстановитьTable 1 - List of propertyID for the Set function
По отношению к propertyID (идентификатор свойства) «указательный ключ» данный способ записывает новый ключ и метку назначения в ключевой регистр, идентифицированный указателем.In relation to the propertyID (property identifier) "index key", this method writes the new key and destination label to the key register identified by the pointer.
По отношению к propertyID «блокировка выхода» данный способ устанавливает флаг блокировки выхода. Когда установлен этот флаг, геометрия экрана (ширина, высота, глубина цвета, частота обновления), а также выход графического адаптера (VGA, DVI) не могут быть изменены. В частности, графический адаптер не будет выполнять команды для изменения этих установок, пока установлен флаг блокировки выхода.In relation to the propertyID “output blocking”, this method sets the flag for blocking the output. When this flag is set, the screen geometry (width, height, color depth, refresh rate), as well as the output of the graphics adapter (VGA, DVI) cannot be changed. In particular, the graphics adapter will not execute commands to change these settings while the output lock flag is set.
По отношению к propertyID L2KEYMGMT данный способ устанавливает (управление ключом на уровне 2) частоту обновления ключа под вторым уровнем защиты, как описано в соответствии с изобретением, т.е. шифрование входов и выходов, подробнее описанное ниже.With respect to propertyID L2KEYMGMT, this method sets (key management at level 2) the key update frequency under the second security level, as described in accordance with the invention, i.e. encryption of inputs and outputs, described in more detail below.
Аналогично, функция Get (Получить) предлагается следующим образом:Similarly, the Get function is proposed as follows:
Get ([IN] BITS128 nonce, [IN] ENUM propertyID, [IN] BYTESEQUENCE propertyParamters, [OUT] BYTESEQUENCE response)Get ([IN] BITS128 nonce, [IN] ENUM propertyID, [IN] BYTESEQUENCE propertyParamters, [OUT] BYTESEQUENCE response)
где:Where:
nonce является 128-битовым значением, выбранным достоверным программным обеспечением для использования в отклике.nonce is a 128-bit value selected by trusted software for use in response.
propertyID идентифицирует устанавливаемое свойство. Перечень поддерживаемых свойств дан ниже в Таблице 2.propertyID identifies the property to set. The list of supported properties is given below in Table 2.
propertyParamters является последовательностью параметров, которая специфична для каждого propertyID.propertyParamters is a sequence of parameters that is specific to each propertyID.
Response содержит результаты операции. Response состоит из nonce, за которым следует сообщение, которое специфично для каждого propertyID.Response contains the results of the operation. Response consists of nonce followed by a message that is specific to each propertyID.
Таблица 2 - Перечень propertyID для функции Get ПолучитьTable 2 - List of propertyID for the Get function Get
По отношению к Выходным портам данный способ выдает в ответ установки выходов графического адаптера, например VGA, DVI и т.п.In relation to the Output ports, this method responds by setting the outputs of the graphics adapter, for example VGA, DVI, etc.
По отношению к Коду аутентификации данный способ выдает в ответ хеш-функцию содержимого окна согласно первому уровню защиты, описанному в соответствии с изобретением, например шифрование оверлеев.With respect to the Authentication Code, this method responds with a hash function of the contents of the window according to the first level of protection described in accordance with the invention, for example, encryption of overlays.
По отношению к версии DX-SEC данный способ выдает в ответ версию DX-SEC, поддерживаемую графическим адаптером.In relation to the DX-SEC version, this method responds with the DX-SEC version supported by the graphics adapter.
По отношению к Подсчету поверхностей защиты данный способ выдает в ответ число поверхностей защиты, поддерживаемых графическим адаптером.In relation to the calculation of protection surfaces, this method returns the number of protection surfaces supported by the graphics adapter.
По отношению к Подсчету перекрывающихся поверхностей данный способ выдает в ответ число перекрывающихся поверхностей, поддерживаемых графическим адаптером.With respect to Counting overlapping surfaces, this method responds with the number of overlapping surfaces supported by the graphics adapter.
По отношению к Первичному типу данный способ выдает в ответ 1 и обеспечивает гибкость на будущее.In relation to the Primary type, this method returns 1 and provides flexibility for the future.
По отношению к Геометрии данный способ выдает в ответ ширину, высоту, частоту обновления и глубину цвета первичной поверхности.In relation to Geometry, this method responds with the width, height, refresh rate, and color depth of the primary surface.
Функция Set (Установить) может дополнительно включать в себя способ, который устанавливает местоположение или размер защищенного перекрытия областей либо местоположение и размер части основной (первичной) поверхности, которая должна дешифрироваться.The Set function may further include a method that sets the location or size of the protected area overlap, or the location and size of the portion of the primary (primary) surface to be decrypted.
Таким образом, вышеуказанные функции SetSessionKey (УстановитьСеансовыйКлюч), Get (Получить) и Set (Установить) относятся к не ограничивающим вариантам выполнения внешнего интерфейса. Выражение «внутренний интерфейс» относится к интерфейсу между криптопроцессором и остальной частью графического адаптера. Подробности этого вида интерфейса согласно изобретению вплоть до реализации каждого отдельного графического адаптера должны подчиняться следующим ограничениям: (1) криптопроцессор должен быть постоянно связан с графическим адаптером и (2) соединение между криптопроцессором и остальной частью графического адаптера не должно раскрываться.Thus, the above functions SetSessionKey (SetSession Key), Get (Set) and Set (Install) are non-limiting options for the execution of the external interface. The expression "internal interface" refers to the interface between the crypto processor and the rest of the graphics adapter. The details of this type of interface according to the invention, up to the implementation of each individual graphic adapter, must be subject to the following restrictions: (1) the crypto processor must be constantly connected to the graphic adapter and (2) the connection between the crypto processor and the rest of the graphic adapter must not be opened.
В этом отношении удаление криптопроцессора из графического адаптера не должно быть тривиальным. Если криптопроцессор выполняется как отдельная микросхема, это главным образом ограничение на механический интерфейс, который обеспечит прикрепление криптопроцессора к графическому адаптеру. В типовом случае криптопроцессор должен припаиваться на графический адаптер. Альтернативно, криптопроцессор может находиться в той же самой микросхеме, что и главный ЦП. Использование стандартизованных механических интерфейсов, которые позволяют удалять криптопроцессор, например считыватели интеллектуальных карточек, гнездовые патроны и тому подобное, неприемлемы.In this regard, removing the crypto processor from the graphics adapter should not be trivial. If the cryptoprocessor is run as a separate chip, this is mainly a limitation on the mechanical interface that will secure the cryptoprocessor to the graphics adapter. In a typical case, the crypto processor should be soldered to the graphics adapter. Alternatively, the crypto processor may reside in the same chip as the main CPU. The use of standardized mechanical interfaces that allow the cryptoprocessor to be removed, such as smart card readers, socket cartridges, and the like, is unacceptable.
Кроме того, физическое соединение между криптопроцессором и остальной частью графического адаптера не должно быть доступно и не должно раскрываться через стандартные интерфейсы. К примеру, соединитель USB на этой шине неприемлем в соответствии с изобретением.In addition, the physical connection between the crypto processor and the rest of the graphics adapter should not be accessible and should not be opened through standard interfaces. For example, the USB connector on this bus is not acceptable in accordance with the invention.
По отношению к правилам для управления ключами каждый указательный ключ может использоваться только в соответствии с его связанным параметром назначения. В одном варианте осуществления значения параметра назначения означают следующее:With respect to key management rules, each index key can only be used in accordance with its associated assignment parameter. In one embodiment, the values of the destination parameter mean the following:
L1STREAM: Этот ключ может использоваться только с поточным шифром DX-SEC, описанным ниже в связи с первым уровнем защиты, предусмотренным изобретением, например шифрование оверлеев.L1STREAM: This key can only be used with the DX-SEC stream cipher described below in connection with the first level of protection provided by the invention, for example, encryption of overlays.
L2BLOCK: Этот ключ может использоваться только с блоковым шифром в режиме ЕСВ второго уровня защиты, предусмотренного изобретением, например шифрование входов и выходов, описанное ниже. Блоковый шифр в режиме ЕСВ используется для дешифрирования текстурных блоков, которые записаны достоверным программным обеспечением.L2BLOCK: This key can only be used with a block cipher in the ECB mode of the second level of protection provided by the invention, for example, encryption of inputs and outputs, described below. Block cipher in the ECB mode is used to decrypt texture blocks, which are recorded by reliable software.
В этом отношении не должно поддерживаться никаких копий ключей, когда указатель заполняется новым значением.In this regard, no copies of keys should be supported when the pointer is populated with a new value.
Первый уровень защиты - зашифрованные оверлеиFirst level of protection - encrypted overlays
Поскольку видеопамять может отображаться и считываться недостоверным программным обеспечением, исполняемым в ЦП, видеопамять не может содержать информацию в виде открытого текста. Видеопамять, подчиняющаяся этому требованию, включает в себя видеопамять, используемую для обновления дисплея. Исходная реализация системы, которая удовлетворяет этому критерию в соответствии с изобретением, шифрует содержимое оверлейной поверхности. Оверлей затем будет дешифрироваться в процессе работы аппаратурой ЦАП или непосредственно перед достижением аппаратуры ЦАП, когда изображение посылается на дисплей.Since video memory can be displayed and read by unreliable software running on the CPU, video memory cannot contain plaintext information. Video memory that obeys this requirement includes the video memory used to update the display. The original implementation of a system that satisfies this criterion in accordance with the invention encrypts the contents of the overlay surface. The overlay will then be decrypted during operation of the DAC equipment or immediately before reaching the DAC equipment when the image is sent to the display.
Фиг. 3А иллюстрирует примерное осуществление такого метода. Зашифрованное первичное содержимое 200, где бы оно ни бралось или генерировалось, присущее достоверному программному приложению 210, принимается этим достоверным программным приложением 210. Следует обмен аутентификациями с криптопроцессором 220, такой как процедура(ы) обмена аутентификациями, описанные выше в примерных вариантах осуществления, или другим методом для надежной доставки ключей, либо криптографическим, либо по пути, защищенному иными средствами. Содержимое 200 проходит из системной памяти 230 к зашифрованной оверлейной поверхности 240, которая перекрывает первичную поверхность 270 видеопамяти 260. В сочетании с криптопроцессором 220 секция 250 дешифрирования в ЦП дешифрирует уровень шифрования, обеспеченный зашифрованным перекрытием (оверлеем) 240, и пропускает содержимое на секцию 280 выбора пикселов для вывода на цифровой видеоинтерфейс (ЦВИ) / цифроаналоговый преобразователь (ЦАП) 290 для вывода на визуализирующее устройство, такое как монитор. Однако система, показанная на фиг. 3А, не отвечает всем описанным выше критериям, поскольку имеется лишь один оверлей. Чтобы соответствовать минимальному пределу функциональности, необходимому для достоверной среды, такой как достоверные окна, изобретение допускает два оверлея в альтернативном варианте осуществления. Первый «конфиденциальный» оверлей представляет собой, в основном, оверлей, который существует в платформах сегодня, в первую очередь для воспроизведения видео, расширенный так, что его содержимое можно шифровать. Второй оверлей специально разработан для обеспечения чувствительного пользовательского интерфейса, такого как диалоги электронной коммерции. Этот «защищенный оверлей» находится всегда наверху и не закрывается, т.е. не имеет цветового кодирования и имеет предпочтение перед первым оверлеем. Второй оверлей может подвергаться некоторым ограничениям для минимизации стоимости. К примеру, второй оверлей может быть получен так, что данные находятся в том же пиксельном формате, что и первичные поверхности, и не способен растягиваться или заносится во множество буферов. Вдобавок, содержимое защищенного оверлея может проверяться аппаратным обеспечением. Таблица 3 обобщает примерные различия между конфиденциальным слоем и защищенным слоем.FIG. 3A illustrates an exemplary implementation of such a method. The encrypted
Таблица 3.Table 3.
Сопоставление конфиденциального и защищенного оверлеевMatch confidential and secure overlays
Фиг. 3В показывает систему, которая включает в себя как конфиденциальные слои, например слои 310а, 310b и 310с цепочки 310, отражающей конфиденциальные оверлеи, так и защищенные оверлеи 320. Когда это возможно, потоковые шифры используются для шифрования охраняемых поверхностей, потому что они быстрее и проще для осуществления, чем блоковые шифры (дополнительная информация приведена в Приложении А). Потоковые шифры шифруют данные по принципу «позиция байта в потоке». Тем самым первый уровень защиты по изобретению инициализирует потоковый шифр ключом шифрования пикселов в левом верхнем углу поверхности. Потоковый шифр продвигается для каждого пиксела, содержащегося в оверлейной поверхности, независимо от того, будет ли этот пиксел отображаться. Предложенная система содержит два компонента 300а и 300b дешифрирования потокового шифра, один для конфиденциального оверлея и один для защищенного оверлея соответственно. Когда дешифрированные пиксельные значения доступны, аппаратное обеспечение 280 выбирает пиксельные значения защищенного оверлея 320, конфиденциального оверлея 310 (если первичная поверхность 270 одинакова с цветовым кодом и/или если разрешается цветовое кодирование) или первичной поверхности 270 и посылает это пиксельное значение на дисплейную аппаратуру через ЦВИ/ЦАП 290.FIG. 3B shows a system that includes both confidential layers, for
Отметим, что противник может получить доступ к оверлеям любым числом средств и при этом либо сделать отображенное изображение невидимым, либо заменить защищенное содержимое шумовым содержимым, поскольку данные, записанные противником, также будут дешифрироваться. Хотя изобретение не защищает непосредственно от таких атак, все же изобретение обеспечивает проверку целостности, чтобы гарантировать, что ожидаемое содержимое было представлено конечному пользователю. Таким образом, если выходной результат в чем-либо отличается от входного, пользователь достоверного программного обеспечения 210 может быть предупрежден о том, что имела место фальсификация содержимого.Note that the adversary can access the overlays by any number of means and at the same time either make the displayed image invisible or replace the protected content with noise content, since the data recorded by the adversary will also be decrypted. Although the invention does not directly protect against such attacks, the invention nevertheless provides an integrity check to ensure that the expected content has been presented to the end user. Thus, if the output result differs in any way from the input, a user of
По отношению к программному интерфейсу с оверлеями, помимо обычной оверлейной информации, такой как рамка, ограничивающая источник или место назначения, целевой цветовой код и т.п., конфиденциальный оверлей 310 поддерживает то, что определен ключевой указатель шифрования, а защищенный оверлей 320 дополнительно поддерживает то, что определена ячейка памяти, куда должен записываться циклический избыточный код (ЦИК) (CRC) дешифрируемого оверлейного содержимого.In relation to the program interface with overlays, in addition to the usual overlay information, such as a frame restricting the source or destination, the target color code, etc., the
Интерфейс конфиденциального оверлея аналогичен существующим оверлеям за исключением того, что зеркальный способ определяет ключевой указатель шифрования для содержимого оверлейного обратного буфера 310а, т.е. буфера, в который зеркально отражаются данные.The confidential overlay interface is similar to existing overlays except that the mirror method defines an encryption key pointer for the contents of the overlay
Интерфейс защищенного оверлея проще и создает резерв для ЦИК поверхности, подлежащей направлению в ячейку памяти после того, как она отображена в первый раз. Стандартизованный аппаратный интерфейс управляет местоположением оверлея и делает ЦИК доступным для заинтересованного программного обеспечения на основе опроса. Например, один регистр может указывать, доступен ли ЦИК, а другой может разрешать считывать ЦИК. К примеру, нижеследующий примерный псевдокод может использоваться в связи с интерфейсом защищенного оверлея:The secure overlay interface is simpler and creates a reserve for the CEC of the surface to be sent to the memory cell after it is displayed for the first time. A standardized hardware interface manages the location of the overlay and makes the CEC available to interested survey-based software. For example, one register may indicate whether the CEC is available, and the other may allow the CEC to read. For example, the following example pseudo-code can be used in connection with the secure overlay interface:
HRESULT UpdateOverlay( LPPOINT ppntUL );HRESULT UpdateOverlay (LPPOINT ppntUL);
где:Where:
ppntUL определяет верхний левый угол защищенного оверлея.ppntUL defines the upper left corner of the secure overlay.
В этом отношении программное обеспечение 210 вычисляет значение ЦИК, которое ожидается, если оно относится к целостности.In this regard, the
Второй уровень защиты - зашифрованные входы и выходыSecond level of protection - encrypted inputs and outputs
В соответствии с изобретением, чтобы расширить БГО 265 для обработки зашифрованного содержимого в качестве входа (входных данных) и выдачи зашифрованного содержимого в качестве выхода выходных данных, аппаратура шифрования и дешифрования добавляется к блоку отображения текстуры (на входной стороне) и блок смешивания по альфа-каналу (на выходной стороне), и разработчики аппаратных средств взаимодействуют, чтобы следовать некоторым правилам при реализации этих функций. Поскольку потоковые шифры не обеспечивают случайного доступа к зашифрованным данным, система использует блоковые шифры, шифрующие данные, например 128 битов за раз. Блок отображения текстуры дешифрирует по заполнению строки кэш-памяти, а блок смешивания по альфа-каналу дешифрирует, когда считывает строку кэш-памяти из цветового буфера и шифрует перед записью. Ключи шифрования, используемые в этих операциях, могут быть различны.In accordance with the invention, in order to expand
Вычислительные задачи иные, нежели трехмерная визуализация, такие как видеодекодирование, представляют собой непосредственные расширения только что описанной парадигмы. Шифруемым входом вместо текстур служат видеомакроблоки; а шифруемым выходом вместо цветового буфера служит декодируемый выходной кадр. Если содержимое подлежит защите, когда оно доставляется по сети в потоке команд к БГО 265, то метод, которым командный буфер также может быть зашифрован, описывается ниже.Computational tasks other than three-dimensional visualization, such as video decoding, are immediate extensions of the paradigm just described. Instead of textures, the encrypted input is video macroblocks; and the encrypted output instead of the color buffer is the decoded output frame. If the content is to be protected when it is delivered over the network in a command stream to
Фиг. 4А показывает вышеописанную систему, выполняющую операцию предварительной обработки, принимая зашифрованную поверхность 420 в качестве входа и выдавая зашифрованную поверхность в качестве выхода, т.е. методы предварительной обработки зашифрованной текстуры и цветового буфера, через компонент 440 шифрования и дешифрирования. Изобретение далее обеспечивает зашифрованную текстуру 400b, а текстура 400b может быть обычной текстурой видеопамяти 260. Зашифрованная текстура 400а выдается на компонент 450 дешифрирования в БГО 265, который работает вместе с криптопроцессором 220, чтобы дешифрировать эту текстуру и применить компонентом 430а графические алгоритмы, такие как затенение и т.п., к дешифрированным данным из компонента 440.FIG. 4A shows the above-described system performing the pre-processing operation, taking the
В предвидении развертывания сложного отражающего страницы настольного ПК система, описанная со ссылками на фиг. 4А, может защищать весь настольный ПК при условии, что аппаратура ЦАП может дешифрировать первичную поверхность 270, а также оверлейные поверхности 310 и 320, описанные выше. Отметим, что в таком случае аппаратура ЦАП дешифрирует с помощью блокового шифра, а не потокового шифра. Такая система допускает использование произвольного числа конфиденциальных поверхностей в работе настольного ПК с произвольным упорядочиванием по координате Z, плавным сочленением или даже с применением к ним трехмерных или иных эффектов, без ухудшения защиты. Защищенные оверлейные поверхности 320, которые должны быть всегда наверху и содержимое которых должно проверяться, находятся в отдельных поверхностях. Конфиденциальный оверлей 310, описанный выше, сохраняется до тех пор, пока не сможет быть эмулирован в программном обеспечении настольным ПК или платформой защищенного отражения страниц.In anticipation of the deployment of a complex reflective desktop page, the system described with reference to FIG. 4A can protect an entire desktop PC, provided that the DAC equipment can decrypt the
В одном варианте осуществления в дополнение к обеспечению возможности дешифрировать первичную поверхность 270 система требует, чтобы БГО 265 также обеспечивал шифрование открытого текста из обычных приложений настольного ПК, такого как достоверные текстовые процессоры, поэтому они тоже могут использоваться в настольном ПК. Фиг. 4В иллюстрирует такой сценарий, в котором шифруется цепочка 510, отражающая первичные поверхности, в том числе переднюю 510b и заднюю 510а. Таким образом, настольным наборщиком 430 могут выполняться операции над первичными поверхностями, защищенными компонентом 440а шифрования-дешифрирования соответственно для выдачи из него или введения в него. Затем вместе с криптопроцессором 220 компонент 500 дешифрирования дешифрирует переднюю поверхность 510b для вывода к ЦВИ/ЦАП 290. Это подвергает систему некоторым типам атак, которые подробно описываются ниже в связи с обеспечением защиты, где раскрыты некоторые стратегии для борьбы против этих атак.In one embodiment, in addition to being able to decrypt the
Альтернатива варианту по фиг. 4В показана на фиг. 4С, где осуществляется копирование в цепочку 310, отражающую конфиденциальные оверлеи. Так, в качестве альтернативы к шифрованию первичной поверхности 270 в соответствии с изобретением аппаратное обеспечение может обеспечить возможность шифрования потоковым шифром для потребления конфиденциальной оверлейной аппаратурой 300а, которая может дешифрировать данные потокового шифра вместе с криптопроцессором 220. Этот механизм представления может быть менее дорогим, чем шифрование первичной поверхности блоковым шифром, но может оказаться в меньшей степени масштабируемым или гибким, как компромисс разработки. Поскольку конфиденциальный оверлей 310 использует потоковый шифр для шифрования, обоснованной операцией для поддержки в этом контексте является «копирующая» операция, в которой вход дешифрируется компонентом 440b дешифрирования с помощью блокового шифра входной поверхности 510а и повторно шифруется компонентом 440b с помощью оверлейного потокового шифра.An alternative to the embodiment of FIG. 4B is shown in FIG. 4C, where copying to
Эти варианты выполнения и их различные комбинации полезны, например, когда достаточно одного зашифрованного входа за раз при условии, что любое число открытых текстовых входов может комбинироваться с зашифрованным входом для генерирования зашифрованного выхода.These embodiments and their various combinations are useful, for example, when one encrypted input at a time is sufficient, provided that any number of open text inputs can be combined with the encrypted input to generate an encrypted output.
По отношению к долговременной защите имеется ряд мер, которые можно реализовать в соответствии с изобретением. Прежде всего, вышеуказанный второй уровень защиты опирается на ту идею, что открытый текст нельзя раскрыть из БГО 265, когда он дешифрирован. К примеру, не существует никаких отладочных регистров или иных средств, которые позволяют считывать открытый текст из микросхемы центральным процессором (ЦП) главного компьютера. В дополнение к тщательной разработке аппаратуры, чтобы избежать таких утечек, набор команд БГО 265 проектируется так, чтобы было невозможно разрешить дешифрирование входа без разрешения шифровать и выход. Кроме того, аппаратное обеспечение предотвращает утечки данных открытого текста инородным драйвером, посторонним кодом или случайные.With respect to long-term protection, there are a number of measures that can be implemented in accordance with the invention. First of all, the above second level of protection is based on the idea that plaintext cannot be disclosed from
Вдобавок, аппаратное обеспечение не может допускать утечки ключей. Когда ключи доставляются в БГО 265 через криптографический протокол, описанный согласно аутентификационному обмену, они доступны только для компонентов шифрования и дешифрирования.In addition, the hardware cannot allow key leaks. When keys are delivered to
Как обсуждалось выше, если БГО 265 способен зашифровывать открытый текст для отображения в первичной поверхности 270, это считается уязвимым местом в системе, т.к. это средство шифрования представляет собой единственный описанный механизм, в котором противник мог бы иметь открытый текст и соответствующий шифротекст доступными одновременно. При преобразовании первичной поверхности так, чтобы она была видна центральному процессору, и создании окна, которое должно зашифровываться, противник может сконструировать поднабор блоков зашифрованного текста, который соответствует известным блокам открытого текста. Эти так называемые «словарные атаки» работают лучше, когда число «интересующих» блоков невелико. К примеру, для отображения черно-белых диалоговых полей в режиме отображения 32bpp, поскольку имеется 4 пиксела на блок, лишь 16 блоков нужны для отображения такого диалога. Одним возможным путем для противника, который откроет 16 шифротекстовых блоков, было бы сфальсифицировать диалог для конечного пользователя за счет создания содержимого, которое имеет смысл даже после дешифрирования в БГО 265. По этой причине защищенное наложение (оверлей) лучше всего подходит для защищенных от несанкционированного доступа диалогов, потому что он дает возможность программным приложениям обнаруживать, когда конечный пользователь не видит то, что ожидает.As discussed above, if
Есть две хорошие стратегии, чтобы свести на нет усилия противника, который желает создать словари. Прежде всего, поскольку словари хороши только для данного ключа, смена ключа и повторное шифрование содержимого заставляют противника начинать с нового словаря. Далее, для шифрования первичной поверхности не нужно делать ключ доступным для программного обеспечения, он может прокручиваться в аппаратуре, а программному обеспечению нужно лишь уведомление, что ключ изменен. Поскольку предыдущий ключ все еще доступен, программное обеспечение может использовать этот предыдущий ключ для дешифрирования и повторного шифрования частей первичной поверхности, которые не изменялись. Следовательно, криптопроцессор 220 периодически прокручивает ключ шифрования для первичной поверхности 270 так, что предыдущий ключ все еще доступен, т.е. осуществляет двойную буферизацию ключевых указателей шифрования, и так, что извещает программное обеспечение, что ключ прокручен.There are two good strategies to negate the efforts of an adversary who wants to create dictionaries. First of all, since dictionaries are only good for a given key, changing the key and re-encrypting the contents force the adversary to start with a new dictionary. Further, to encrypt the primary surface, it is not necessary to make the key available for software, it can be scrolled in the hardware, and the software only needs to be notified that the key has been changed. Since the previous key is still available, the software can use this previous key to decrypt and re-encrypt parts of the primary surface that have not changed. Therefore, the crypto processor 220 periodically scrolls the encryption key for the
Другая стратегия включает в себя кодирование местоположения в изображении перед шифрованием. Например, пиксельное местоположение (х, у) в изображении (или некоторое производное значение, такое как сдвиг изображения) может преобразовываться перед его шифрованием операцией ИСКЛЮЧАЮЩЕЕ ИЛИ (XOR) в пиксельные данные; эта операция затем может отменяться после дешифрирования. В результате блоки пикселов в различных областях поверхности зашифровываются различным образом, и преобразование открытого текста в зашифрованный текст имеет смысл только для данного местоположения в поверхности, которое недоступно для противника.Another strategy involves encoding the location in the image before encryption. For example, the pixel location (x, y) in an image (or some derived value, such as an image shift) can be converted, before being encrypted by an EXCLUSIVE OR (XOR) operation, into pixel data; this operation can then be canceled after decryption. As a result, blocks of pixels in different areas of the surface are encrypted in different ways, and converting plain text to encrypted text makes sense only for a given location in the surface that is not accessible to the adversary.
Настоящее изобретение также обеспечивает заранее определенные смешанные форматы. Поскольку текстуры и поверхности за пределами экрана требуют случайного доступа, они должны кодироваться блоковыми шифрами. Имеется хорошая синергия между обычным размером блоков для блокового шифра и обычным размером строки кэш-памяти для современных трехмерных ускорителей, например, если строка кэш-памяти и размер блока оба имеют 128 битов, тогда эффективное шифрование и дешифрирование могут быть реализованы в аппаратном обеспечении. Даже если имеются небольшие различия (например, блоковый размер 128 битов, а размер строки кэш-памяти 256 битов), аппаратная реализация все еще должна быть эффективной.The present invention also provides predetermined mixed formats. Because textures and surfaces off the screen require random access, they must be encoded in block ciphers. There is good synergy between the usual block size for a block cipher and the usual cache line size for modern three-dimensional accelerators, for example, if the cache line and block size both have 128 bits, then effective encryption and decryption can be implemented in hardware. Even if there are slight differences (for example, a block size of 128 bits and a cache line size of 256 bits), the hardware implementation should still be efficient.
Одна проблема с зашифрованными текстурными данными состоит в том, что схема блокового шифрования требует, чтобы смежные блоки байтов были доступны до того, как они могут зашифровываться или дешифрироваться; а заполнение строки кэш-памяти требует, чтобы пиксельные данные «смешивались», т.е. чтобы перевод из положения (X,Y) в изображении к адресу формировался таким образом, что заполнение строки кэш-памяти вырабатывало двумерную область пикселов. Ныне поставщики аппаратного обеспечения предлагают зрительно линейные форматы поверхностей при смешивании данных изображения без знания программного приложения. Однако, поскольку достоверное программное обеспечение будет выдавать зашифрованные текстурные данные, это программное обеспечение должно иметь априорное знание схемы смешивания, чтобы оно могло шифровать смежные блоки данных и сохранять двумерное местоположение. В ответ на это изобретение определяет словарь форматов смешанных изображений, в том числе YUV 4:4:4б 4:2:2 и 4:2:0, а также форматы RGB для использования программным приложением. Качество этих форматов может быть столь же высоким, как если бы изображения смешивались в формат, специфичный для аппаратуры, но шифрование достигается за счет некоторого ухудшения качества, т.е. защищенность в обмен на скорость.One problem with encrypted texture data is that the block cipher scheme requires adjacent byte blocks to be available before they can be encrypted or decrypted; and filling the cache line requires that the pixel data be “mixed”, i.e. so that the translation from the position (X, Y) in the image to the address is formed in such a way that filling the cache line produces a two-dimensional region of pixels. Nowadays, hardware vendors offer visually linear surface formats when mixing image data without knowledge of a software application. However, since reliable software will provide encrypted texture data, this software must have a priori knowledge of the mixing scheme so that it can encrypt adjacent blocks of data and maintain a two-dimensional location. In response to this invention, it defines a dictionary of mixed image formats, including YUV 4: 4: 4b 4: 2: 2 and 4: 2: 0, as well as RGB formats for use by the software application. The quality of these formats can be as high as if the images were mixed in a format specific to the equipment, but encryption is achieved due to some deterioration in quality, i.e. security in exchange for speed.
Что касается AYUV/ARGB (32bpp, упаковано), то этот формат поверхности 32bpp содержит альфа-канал в дополнение к 8-битовым цветовым каналам для отсчетов яркости (Y) и цветности (U и V). Альтернативно, он может содержать стандартный формат ARGB 32bpp, поскольку оба формата имеют 32bpp и упакованы. Нижеследующее обсуждение предполагает формат AYUV. Линейная схема та же, что и на фиг. 5А.For AYUV / ARGB (32bpp, packed), this 32bpp surface format contains an alpha channel in addition to 8-bit color channels for luminance (Y) and color (U and V) samples. Alternatively, it may contain the standard 32GBpp ARGB format, since both formats are 32bpp and are packaged. The following discussion assumes AYUV format. The linear circuit is the same as in FIG. 5A.
Сдвиг пиксела (X,Y) в изображения таков:The pixel shift (X, Y) in the image is as follows:
Offset=Y*Pitch+X*4Offset = Y * Pitch + X * 4
В предположении 128-битового размера блоков шифрования и размера строки кэш-памяти 4 пиксела могут попадать в один блок. Перемежение младших битов Х и Y перед генерированием адреса приведет к улучшенной двумерной локализации в заполнении строки кэш-памяти. Эти блоки компонуются линейно согласно формату.Assuming a 128-bit encryption block size and cache line size, 4 pixels can fall into one block. The interleaving of the lower X and Y bits before generating the address will result in improved two-dimensional localization in filling the cache line. These blocks are arranged linearly according to the format.
Слой результирующего изображения иллюстрируется фиг. 5В. Каждый пронумерованный прямоугольник представляет собой пиксел, а жирные прямоугольники являются зашифрованными блоками. Примерный псевдокод для функции смешивания по изобретению для этого формата, который преобразует местоположение (х,у) в изображении в сдвиг, имеет следующий вид:The resulting image layer is illustrated in FIG. 5B. Each numbered rectangle is a pixel, and bold rectangles are encrypted blocks. An exemplary pseudo-code for the mixing function of the invention for this format, which converts the location (x, y) in the image into a shift, has the following form:
DWORDDWORD
SwizzleAYUV( DWORD x, DWORD y, DWORD Pitch )SwizzleAYUV (DWORD x, DWORD y, DWORD Pitch)
{{
// pitch - это число байтов на строку сканирования макроблоков// pitch is the number of bytes per macroblock scan string
DWORD BlockOffset = (y≫1)*Pitch+(x≫1)*(128/8);DWORD BlockOffset = (y≫1) * Pitch + (x≫1) * (128/8);
DWORD IntraBlockOffset = ((y&2)≪2)|((x&2)≪1)|(DWORD IntraBlockOffset = ((y & 2) ≪2) | ((x & 2) ≪1) | (
(y&1)≪1)|(x&1);(y & 1) ≪1) | (x &1);
return BlockOffset+IntraBlockOffset*4;return BlockOffset + IntraBlockOffset * 4;
}}
Что касается YUV2 (16bpp, упаковано), то этот формат поверхности осуществляет дополнительную дискретизацию отсчетов U и V «цветности» с коэффициентом 2. Результатом является формат упакованного изображения, который усредняет по 16 битов на пиксел. Линейная схема показана на фиг. 6А. Формат смешивания по изобретению распределяет зашифрованные блоки из 4×2 пикселов, как показано на фиг. 6В. Как и для фиг. 5А и 5В, 128-битовые блоки тоже смешиваются. Отметим, что для фиг. 6В и для нижеследующего примерного смешивающего псевдокода, который переводит пары координат (х,у) в сдвиги изображения, предполагается, что U и V имеют даже координаты Х:As for YUV2 (16bpp, packed), this surface format additionally discretizes the U and V “color” samples with a coefficient of 2. The result is a packed image format that averages 16 bits per pixel. A line diagram is shown in FIG. 6A. The mixing format of the invention distributes encrypted blocks of 4 × 2 pixels, as shown in FIG. 6B. As for FIG. 5A and 5B, 128-bit blocks are also mixed. Note that for FIG. 6B and for the following exemplary mixing pseudo-code that translates coordinate pairs (x, y) into image shifts, it is assumed that U and V even have X coordinates:
DWORDDWORD
SwizzleYUY2Y(DWORD x, DWORD y, const SURFACEDESC& sd)SwizzleYUY2Y (DWORD x, DWORD y, const SURFACEDESC & sd)
{{
assert( x<sd.Width );assert (x <sd.Width);
assert( y<sd.Height );assert (y <sd.Height);
DWORD BlockOffset = (y≫1)*sd.Pitch+(x≫2)*(128/8);DWORD BlockOffset = (y≫1) * sd.Pitch + (x≫2) * (128/8);
DWORD IntraBlockOffset = ((x&2)≪1)|DWORD IntraBlockOffset = ((x & 2) ≪1) |
((y&1)≪1)|((y & 1) ≪1) |
((x&1)≪0);((x & 1) ≪0);
DWORD dwRet = BlockOffset+(IntraBlockOffset≪1);DWORD dwRet = BlockOffset + (IntraBlockOffset≪1);
Return dwRet;Return dwRet;
}}
DWORDDWORD
SwizzleYUY2U(DWORD x, DWORD y, const SURFACEDESC& sd)SwizzleYUY2U (DWORD x, DWORD y, const SURFACEDESC & sd)
{{
assert( x<sd.Width );assert (x <sd.Width);
assert( 0==(x & 1) );assert (0 == (x &1));
assert( y<sd.Height );assert (y <sd.Height);
DWORD BlockOffset = (y≫1)*sd.Pitch+(x≫2)*(128/8);DWORD BlockOffset = (y≫1) * sd.Pitch + (x≫2) * (128/8);
DWORD IntraBlockOffset = ((x&2)≪1)|DWORD IntraBlockOffset = ((x & 2) ≪1) |
((y&1)≪1)|((y & 1) ≪1) |
((x&1)≪0);((x & 1) ≪0);
return BlockOffset+(IntraBlockOffset≪1)+1;return BlockOffset + (IntraBlockOffset≪1) +1;
}}
DWORDDWORD
SwizzleYUY2V(DWORD x, DWORD y, const SURFACEDESC& sd)SwizzleYUY2V (DWORD x, DWORD y, const SURFACEDESC & sd)
{{
assert( x<sd.Width );assert (x <sd.Width);
assert( 0==(x & 1) );assert (0 == (x &1));
assert( y<sd.Height );assert (y <sd.Height);
DWORD BlockOffset = (y≫2)*sd.Pitch+(x≫3)*(512/8);DWORD BlockOffset = (y≫2) * sd.Pitch + (x≫3) * (512/8);
DWORD IntraBlockOffset = ((x&2)≪1)|DWORD IntraBlockOffset = ((x & 2) ≪1) |
((y&1)≪1)|((y & 1) ≪1) |
((x&1)≪0);((x & 1) ≪0);
return BlockOffset+(IntraBlockOffset≪1)+3;return BlockOffset + (IntraBlockOffset≪1) +3;
}}
В этом отношении для псевдокода, сопровождающего смешивание по фиг. 5А, 5В, 6А и 6В, шаг (pitch) поверхности определяется как число байтов на линию сканирования из 128 битовых блоков.In this regard, for the pseudo-code accompanying the mixing of FIG. 5A, 5B, 6A, and 6B, the pitch of a surface is defined as the number of bytes per scan line of 128 bit blocks.
Что касается упакованного планарного формата (12bpp), то этот формат поверхности осуществляет дополнительную дискретизацию отсчетов U и V с коэффициентом 2 по горизонтали и вертикали. Отсчеты яркости и цветности компонуются двумя отдельными частями поверхности. Линейная схема упакованного планарного формата (12bpp) показана на фиг. 7А.As for the packed planar format (12bpp), this surface format additionally discretizes the samples U and V with a factor of 2 both horizontally and vertically. Luminance and color readings are composed of two separate parts of the surface. A linear diagram of a packed planar format (12bpp) is shown in FIG. 7A.
Шаг поверхности определяется числом байтов на линию сканирования из 512-битовых блоков в плоскости Y. Шаг плоскости UV составляет половину от шага плоскости Y, потому что имеется только четверть отсчетов, но вдвое больше цветовых элементов на отсчет. Результирующий формат смешанного изображения в соответствии с изобретением показан на фиг. 7В.The surface step is determined by the number of bytes per scan line of 512-bit blocks in the Y plane. The step of the UV plane is half the step of the Y plane, because there are only a quarter of the samples, but twice as many color elements per sample. The resulting mixed image format in accordance with the invention is shown in FIG. 7B.
Примерный псевдокод для функции смешивания по изобретению для этого формата, который переводит координаты (х,у) в сдвиги для элементов Y, U и V, имеет следующий вид:An example pseudo-code for the mixing function according to the invention for this format, which translates the coordinates (x, y) into offsets for the elements Y, U and V, has the following form:
DWORDDWORD
SwizzlePP12Y(DWORD x, DWORD y, const SURFACEDESC& sd)SwizzlePP12Y (DWORD x, DWORD y, const SURFACEDESC & sd)
{{
assert( x<sd.Width );assert (x <sd.Width);
assert( y<sd.Height );assert (y <sd.Height);
DWORD BlockOffset = (y≫2)*sd.Pitch+(x≫2)*(128/8);DWORD BlockOffset = (y≫2) * sd.Pitch + (x≫2) * (128/8);
DWORD IntraBlockOffset = ((x&2)≪2)|DWORD IntraBlockOffset = ((x & 2) ≪2) |
((x&2)≪1)|((x & 2) ≪1) |
((y&1)≪1)|((y & 1) ≪1) |
((x&1);((x &1);
return BlockOffset+IntraBlockOffset;return BlockOffset + IntraBlockOffset;
}}
DWORDDWORD
SwizzlePP12U(DWORD x, DWORD y, const SURFACEDESC& sd)SwizzlePP12U (DWORD x, DWORD y, const SURFACEDESC & sd)
{{
DWORD PlaneOffset = (sd.Height≫3)*sd.Pich;DWORD PlaneOffset = (sd.Height≫3) * sd.Pich;
if ((0!=(x&1))||(0!=(y&1)))if ((0! = (x & 1)) || (0! = (y & 1)))
_asm int 3
x≫=1;x≫ = 1;
y≫=1;y≫ = 1;
DWORD BlockOffset = (y≫1)*sd.Pitch/2+(x≫2)*(128/8);DWORD BlockOffset = (y≫1) * sd.Pitch / 2 + (x≫2) * (128/8);
DWORD IntraBlockOffset = ((x&2)≪1)|DWORD IntraBlockOffset = ((x & 2) ≪1) |
((y&1)≪1)|((y & 1) ≪1) |
(x&1);(x &1);
return PlaneOffset+BlockOffset+(IntraBlockOffset≪1);return PlaneOffset + BlockOffset + (IntraBlockOffset≪1);
}}
DWORDDWORD
SwizzlePP12V(DWORD x, DWORD y, const SURFACEDESC& sd)SwizzlePP12V (DWORD x, DWORD y, const SURFACEDESC & sd)
{{
DWORD PlaneOffset = (sd.Height≫3)*sd.Pich;DWORD PlaneOffset = (sd.Height≫3) * sd.Pich;
if ((0!=(x&1))||(0!=(y&1)))if ((0! = (x & 1)) || (0! = (y & 1)))
_asm int 3
x≫=1;x≫ = 1;
y≫=1;y≫ = 1;
DWORD BlockOffset = (y≫1)*sd.Pitch/2+(x≫2)*(128/8);DWORD BlockOffset = (y≫1) * sd.Pitch / 2 + (x≫2) * (128/8);
DWORD IntraBlockOffset = ((x&2)≪1)|DWORD IntraBlockOffset = ((x & 2) ≪1) |
((y&1)≪1)|((y & 1) ≪1) |
(x&1);(x &1);
return PlaneOffset+BlockOffset+(IntraBlockOffset≪1)+1;return PlaneOffset + BlockOffset + (IntraBlockOffset≪1) +1;
}}
Третий уровень защиты - зашифрованные командные буферыThird level of protection - encrypted command buffers
Функции вариантов осуществления, описанных выше в отношении первого и второго уровней защиты, могут быть усилены в соответствии с изобретением для шифрования командных буферов, предлагаемых в БГО 265 в дополнение к данным изображения, с которыми работает БГО 265. Эти функции желательны, если программное приложение 210 желает защитить содержимое, которое посылается на аппаратное обеспечение по сети в командный буфер. Фиг. 9А показывает видеодекодирование с помощью зашифрованного командного буфера 900, благодаря чему содержимое доставляется к зашифрованной текстуре 400а и дешифрируется компонентом 450 дешифрирования и декодируется видеодекодером 430b. Хотя только командный буфер может быть зашифрован, содержимое шифруется в видеопамяти, как и командный буфер, как показано зашифрованным декодированным кадром 420а. Шифрование командного буфера, таким образом, уместно в ситуации наподобие этой, когда макроблоки находятся в видеопамяти, и с векторами движения и другими командами, посылаемыми в потоке команд.The functions of the embodiments described above with respect to the first and second security levels can be enhanced in accordance with the invention for encrypting the command buffers proposed in the
Ограничение элементарности для зашифрованных текстурных данных также применяется к зашифрованным данным командного буфера с предупреждением о том, что шифрование цветового буфера может быть недостаточным для защиты рассматриваемого содержимого. Промежуточные буферы, например Z буфер, могут также шифроваться для защиты системы от атак на открытый текст. Фиг. 9В показывает примерную трехмерную визуализацию с помощью зашифрованного командного буфера в соответствии с изобретением. Как проиллюстрировано, команды 810 трехмерной визуализации шифруются по пути к видеодекодеру 430с. Текстурные данные 400а дешифрируются компонентом 450 дешифрирования и обрабатываются в соответствии с командами 810 видеодекодером 430с. Присущие ему данные в цветовом буфере 820 шифруются посредством компонента 830 шифрования-дешифрирования.The elementary restriction for encrypted texture data also applies to encrypted command buffer data with a warning that encryption of the color buffer may not be sufficient to protect the content in question. Intermediate buffers, such as the Z buffer, can also be encrypted to protect the system from attacks on plain text. FIG. 9B shows an exemplary three-dimensional visualization using an encrypted command buffer in accordance with the invention. As illustrated, 3D rendering instructions 810 are encrypted along the path to
Обнаружение несанкционированного доступа может осуществляться перед использованием командного буфера с помощью двух проходов или после того, как командный буфер использован. В одном варианте выполнения обнаружение несанкционированного доступа разрешается после отображения или визуализации содержимого.Unauthorized access can be detected before using the command buffer with two passes or after the command buffer is used. In one embodiment, unauthorized access detection is permitted after the content is displayed or visualized.
Дальнейшие альтернативные варианты выполнения - шифрование выходов из графического адаптераFurther alternative embodiments are encryption of outputs from the graphics adapter
В каждом из приведенных выше вариантов осуществления, хотя конфиденциальность и целостность описаны и продемонстрированы в отношении обведенной пунктирной линией части фиг. 2, конфиденциальность и целостность не продемонстрированы по отношению к видеовыходу, т.е. теоретически интерфейс между графическим адаптером и визуализирующим устройством, таким как монитор, и/или само визуализирующее устройство подвержены атаке.In each of the above embodiments, although confidentiality and integrity are described and demonstrated with respect to the dotted line portion of FIG. 2, confidentiality and integrity are not demonstrated with respect to the video output, i.e. in theory, the interface between a graphics adapter and a visualizing device, such as a monitor, and / or the visualizing device itself is susceptible to attack.
Таким образом, в вышеприведенных вариантах осуществления, как показано на фиг. 9А, в некоторой точке во время процесса, даже хотя содержимое защищается в видеопамяти и во время обработки в графическом адаптере, данные посылаются на ЦВИ/ЦАП 290 в открытом виде. В результате данные могут быть перехвачены или изменены по пути к визуализирующему устройству и в визуализирующем устройстве.Thus, in the above embodiments, as shown in FIG. 9A, at some point during the process, even though the contents are protected in the video memory and during processing in the graphics adapter, the data is sent to the CVI /
Таким образом, в соответствии с альтернативным вариантом осуществления изобретения, которое может дополнительно комбинироваться с другими вариантами осуществления, описанными здесь, в визуализирующем устройстве предусматривается однотипный криптопроцессор 220b для дополнения функций, выполняемых криптопроцессором 220а. В этом отношении компонент 910а шифрования, соединенный для осуществления связи с криптопроцессором 220а, зашифровывает данные перед их доставкой к компоненту 290 ЦВИ/ЦАП, а компонент 910b дешифрирования, соединенный для осуществления связи с криптопроцессором 220b, дешифрирует данные как часть отображения или визуализации, которая имеет место, предупреждая перехват данных. Компонент 910 шифрования может быть альтернативно включен в компонент 290 ЦВИ/ЦАП. Короче говоря, при применении того же самого шифрования и дешифрирования содержимое может защищаться по всему графическому каналу для криптографически защищенной надежной доставки и обработки содержимого.Thus, in accordance with an alternative embodiment of the invention, which may be further combined with the other embodiments described herein, the same type of crypto processor 220b is provided in the imaging device to complement the functions performed by the
Как упомянуто выше, хотя примерные варианты осуществления настоящего изобретения описаны в связи с разными вычислительными устройствами, аппаратным обеспечением, программным обеспечением и сетевыми архитектурами, основополагающие принципы могут применяться к любому вычислительному устройству или системе, в которых желательно защищать содержимое из достоверного источника. Таким образом, методы криптографически защищенного охраняемого содержимого в соответствии с настоящим изобретением могут применяться ко множеству программных приложений и устройств. К примеру, способы криптографической защиты охраняемого содержимого по изобретению могут применяться к операционной системе вычислительного устройства, предусмотренного как отдельный объект в устройстве, как часть другого объекта, как загружаемый объект из сервера, как распределенный объект и т.д. Хотя в качестве представителей различных возможностей здесь выбраны примерные языки программирования, псевдокоды, названия и примеры, эти языки, псевдокоды, названия и примеры не направлены на ограничение.As mentioned above, although exemplary embodiments of the present invention are described in connection with various computing devices, hardware, software, and network architectures, the fundamental principles can be applied to any computing device or system in which it is desirable to protect content from a trusted source. Thus, the methods of cryptographically secure protected content in accordance with the present invention can be applied to a variety of software applications and devices. For example, the cryptographic protection methods of protected content according to the invention can be applied to the operating system of a computing device provided as a separate object in the device, as part of another object, as a downloadable object from a server, as a distributed object, etc. Although exemplary programming languages, pseudo-codes, names and examples are chosen as representatives of various possibilities, these languages, pseudo-codes, names and examples are not aimed at limiting.
Описанные здесь разнообразные методы могут быть реализованы как в аппаратном обеспечении, так и в программном обеспечении, или, когда это уместно, в их комбинации. Так, способы и устройства по настоящему изобретению или некоторые его аспекты или части могут принимать форму программного кода (т.е. команд), реализованного на реальном носителе, таком как гибкие дискеты, CD-ROM, накопители жестких дисков или любой иной машиночитаемый носитель данных, причем, когда программный код загружается машиной, такой как компьютер, эта машина становится устройством для осуществления изобретения. В случае выполнения программного кода на программируемых компьютерах вычислительное устройство будет в общем случае включать в себя процессор, считываемый этим процессором носитель данных (в том числе энергозависимые и энергонезависимые элементы памяти и/или хранения), по меньшей мере одно входное устройство и по меньшей мере одно выходное устройство. Одна или более программ, которые могут применять методы настоящего изобретения, например, через использование обрабатывающего данные ППИ, операционной системы, достоверного программного приложения и тому подобного, предпочтительно реализуются в высокоуровневом процедурно или объектно ориентированном языке программирования для связи с компьютерной системой. Однако программа(ы) может быть реализована в ассемблере или машинном языке, если это желательно. В любом случае, язык может быть скомпилированным или интерпретированным языком и в различных вариантах осуществления изобретения налагает условия на варианты осуществления аппаратуры БГО 265.The diverse methods described herein can be implemented in hardware as well as in software, or, when appropriate, in a combination thereof. Thus, the methods and devices of the present invention, or some aspects or parts thereof, can take the form of program code (i.e., instructions) implemented on real media, such as floppy disks, CD-ROMs, hard drives, or any other computer-readable storage medium moreover, when the program code is downloaded by a machine, such as a computer, this machine becomes a device for implementing the invention. If the program code is executed on programmable computers, the computing device will generally include a processor, a data carrier read by this processor (including volatile and non-volatile memory and / or storage elements), at least one input device and at least one output device. One or more programs that can apply the methods of the present invention, for example, through the use of a data processing API, an operating system, a reliable software application, and the like, are preferably implemented in a high-level procedural or object-oriented programming language for communication with a computer system. However, the program (s) may be implemented in assembler or machine language, if desired. In any case, the language may be a compiled or interpreted language, and in various embodiments of the invention imposes conditions on embodiments of
Способы и устройства по настоящему изобретению могут также осуществляться через передачи данных, реализованные в виде программного кода, который передается по некоторой среде передачи, такой как электрические провода или кабель, через волоконную оптику или через любой иной вид передачи, причем, когда программный код принимается, загружается и исполняется в машине, такой как СППЗУ, вентильная матрица, устройство программируемой логики (УПЛ) (PLD), клиентский компьютер, видеомагнитофон или тому подобное, или в принимающей машине с графическим адаптером и функциональными возможностями шифрования, как описывается выше в примерных вариантах осуществления, эта машина становится устройством для осуществления изобретения. При реализации на универсальном компьютере программный код комбинируется с процессором для обеспечения единого устройства, которое работает, чтобы вызвать функции по настоящему изобретению. Дополнительно, любой метод запоминания, использованный в связи с настоящим изобретением, может неизменно быть комбинацией аппаратного и программного обеспечения.The methods and devices of the present invention can also be implemented through data communications, implemented in the form of program code that is transmitted over some transmission medium, such as electric wires or cable, through fiber optics or through any other type of transmission, moreover, when the program code is received, loaded and executed in a machine, such as EPROM, gate array, programmable logic device (PLD), a client computer, VCR, or the like, or in a receiving machine with graphical m adapter encryption capabilities and functionalities as described above in exemplary embodiments, the machine becomes an apparatus for practicing the invention. When implemented on a universal computer, program code is combined with a processor to provide a single device that works to invoke the functions of the present invention. Additionally, any storage method used in connection with the present invention may invariably be a combination of hardware and software.
Хотя настоящее изобретение описано в связи с предпочтительными вариантами осуществления, показанными на чертежах, следует иметь в виду, что можно использовать и другие подобные варианты осуществления или что в описанных вариантах осуществления можно выполнить изменения или дополнения для реализации той же самой функции по настоящему изобретению без изменения его сущности. К примеру, хотя в контексте сетевой среды описываются примерные сетевые среды по изобретению, такие как одноранговая сетевая среда, специалисту понятно, что настоящее изобретение не ограничивается этим и что способы, как они описаны в настоящей заявке, могут применяться к любому вычислительному устройству или среде, таким как игровая консоль, ручной компьютер, портативный компьютер и т.п., проводной или беспроводный, и может применяться к любому числу таких вычислительных устройств, соединенных через сеть связи и взаимодействующих по этой сети. Далее, следует подчеркнуть, что подразумеваются множество компьютерных платформ, в том числе операционные системы ручных устройств и иные специфичные для программных приложений операционные системы, особенно по мере постоянного возрастания количества беспроводных сетевых устройств. Далее, настоящее изобретение может быть реализовано на множестве сопроцессорных микросхем или устройств, таких как устройство со множеством БГО, а память может аналогичным образом выполняться на множестве устройств. Поэтому настоящее изобретение не должно ограничиваться никаким единственным вариантом осуществления, а должно интерпретироваться в своей широте и объеме в соответствии с прилагаемой формулой изобретения.Although the present invention has been described in connection with the preferred embodiments shown in the drawings, it should be borne in mind that other similar embodiments may be used or that changes or additions may be made to the described embodiments to realize the same function of the present invention without changing its essence. For example, although exemplary network environments of the invention, such as a peer-to-peer network environment, are described in the context of a network environment, one skilled in the art will understand that the present invention is not limited thereto and that the methods as described herein can be applied to any computing device or environment, such as a game console, a handheld computer, a laptop computer, etc., wired or wireless, and can be applied to any number of such computing devices connected through a communication network and interacting on it th network. Further, it should be emphasized that many computer platforms are implied, including operating systems of hand-held devices and other operating systems specific to software applications, especially as the number of wireless network devices constantly increases. Further, the present invention can be implemented on a variety of coprocessor chips or devices, such as a device with multiple BGOs, and memory can likewise be executed on multiple devices. Therefore, the present invention should not be limited to any single embodiment, but should be interpreted in its breadth and scope in accordance with the appended claims.
Приложение А. Потоковые шифры в сравнении с блоковыми шифрамиAppendix A. Stream ciphers versus block ciphers
Это приложение детализирует различия между потоковыми шифрами и блоковыми шифрами в той мере, как они связаны с содержанием данного документа.This application details the differences between stream ciphers and block ciphers to the extent that they are related to the contents of this document.
Как правило, потоковые шифры быстрее и проще для реализации, нежели блоковые шифры.As a rule, stream ciphers are faster and easier to implement than block ciphers.
Как подразумевает название, потоковые шифры зашифровывают и дешифрируют поток байтов. Для дешифрирования N-го байта в потоке, шифр начинается в начале и проходит по одному байту за раз до желательного сдвига в потоке.As the name implies, stream ciphers encrypt and decrypt a stream of bytes. To decrypt the Nth byte in the stream, the cipher starts at the beginning and passes one byte at a time until the desired shift in the stream.
В противоположность этому, блоковые шифры, которые исполняются в режиме электронной кодовой книги, могут шифровать или дешифрировать произвольные блоки в данных, но должны шифровать-дешифрировать полный блок за раз. Обычный размер блока равен 16 байтам.In contrast, block ciphers, which are executed in the electronic codebook mode, can encrypt or decrypt arbitrary blocks in the data, but must encrypt-decrypt the complete block at a time. The usual block size is 16 bytes.
Потоковые шифры используются таким образом, что одни и те же данные никогда не шифруются дважды, т.е. ключ, использованный для шифрования и дешифрирования, должен меняться часто. При использовании, например, для воспроизведения первичной поверхности достаточно изменения ключей один раз за кадр.Stream ciphers are used in such a way that the same data is never encrypted twice, i.e. The key used for encryption and decryption should change frequently. When used, for example, to reproduce the primary surface, changing the keys once per frame is sufficient.
В качестве последнего замечания, следует отметить, что имеются блоковые шифры хорошего качества, доступные для свободного копирования.As a final note, it should be noted that there are good quality block ciphers available for free copying.
Claims (54)
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US33761701P | 2001-12-04 | 2001-12-04 | |
US60/337,617 | 2001-12-04 | ||
US33914301P | 2001-12-10 | 2001-12-10 | |
US60/339,143 | 2001-12-10 | ||
US10/124,922 | 2002-04-18 |
Publications (2)
Publication Number | Publication Date |
---|---|
RU2004110622A RU2004110622A (en) | 2005-09-10 |
RU2308077C2 true RU2308077C2 (en) | 2007-10-10 |
Family
ID=35847687
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
RU2004110622/09A RU2308077C2 (en) | 2001-12-04 | 2002-12-03 | Methods and systems for cryptographic protection of protected content |
Country Status (2)
Country | Link |
---|---|
BR (1) | BRPI0205818B1 (en) |
RU (1) | RU2308077C2 (en) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
RU2509424C2 (en) * | 2009-08-07 | 2014-03-10 | Долби Интернешнл Аб | Data stream authentication |
RU2511637C2 (en) * | 2009-12-30 | 2014-04-10 | Интел Корпорейшн | Display data management technology |
RU2647631C1 (en) * | 2017-05-30 | 2018-03-16 | Акционерное общество "Российская корпорация ракетно-космического приборостроения и информационных систем" (АО "Российские космические системы") | Satellite communication system with protection of the remote operation management channel |
-
2002
- 2002-12-03 BR BRPI0205818-9A patent/BRPI0205818B1/en not_active IP Right Cessation
- 2002-12-03 RU RU2004110622/09A patent/RU2308077C2/en not_active IP Right Cessation
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
RU2509424C2 (en) * | 2009-08-07 | 2014-03-10 | Долби Интернешнл Аб | Data stream authentication |
US8885818B2 (en) | 2009-08-07 | 2014-11-11 | Dolby International Ab | Authentication of data streams |
RU2511637C2 (en) * | 2009-12-30 | 2014-04-10 | Интел Корпорейшн | Display data management technology |
RU2647631C1 (en) * | 2017-05-30 | 2018-03-16 | Акционерное общество "Российская корпорация ракетно-космического приборостроения и информационных систем" (АО "Российские космические системы") | Satellite communication system with protection of the remote operation management channel |
Also Published As
Publication number | Publication date |
---|---|
RU2004110622A (en) | 2005-09-10 |
BRPI0205818B1 (en) | 2015-06-02 |
BR0205818A (en) | 2004-01-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
RU2310227C2 (en) | Methods and systems for authentication of components in graphic system | |
JP4522645B2 (en) | Method and system for cryptographically protecting secure content | |
CA2771080C (en) | Secure media path methods, systems, and architecture | |
RU2327215C2 (en) | System and method for protecting output signal of video card | |
US7093134B1 (en) | Method and apparatus for signing and sealing objects | |
RU2308077C2 (en) | Methods and systems for cryptographic protection of protected content |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | The patent is invalid due to non-payment of fees |
Effective date: 20121204 |