本申请要求于2001年12月4日申请的临时申请序列号60/337,617以及于2001年12月10申请的60/339,143的优先权,并且与于2002年4月18日申请的共同转让的待审美国专利申请10/125,170相关。
本专利文件的公开部分可能含有版权受保护的内容。版权拥有者并不反对任何人传真复制如在美国专利商标局的专利文档或记录内出现的这个专利文件或专利公开内容,但在其它方面却保留全部版权。以下标志应适用于本文件:Copyright2001,Microsoft Corp。
具体实施方式
概述
本发明提供一种扩大来自于受托来源的内容和图形系统之间用于处理和/或再现内容的操作系统或其它媒介物,以便实现诸如防止篡改的机密对话之类的“受托图形”应用和防范擅自复制的收费内容的重放的系统和技术。考虑本发明的一种方式是本发明提供三“级”安全:(1)重叠面的内容的加密;(2)使GPU或者其它处理装置能够处理加密内容,而不会使不可信赖方获得所述加密内容;和(3)使命令缓冲器能够被加密。
如上所述,在系统安全性方面,由于会使得更难以证明系统的安全性,因此复杂性是一个不利条件。从而,通过认为必须把大部分GPU功能和显示驱动器看作是不可信赖的,开始本发明。随后本发明应用通过限制为了满足安全标准,要实现的硬件的范围,从而增大在机密性和保护能力方面的正确实现的机会的技术。
上面已讨论了根据本发明的一些术语。但是,为了清楚起见,现在要强调一些术语。术语“机密”指的是防止非受托第三方,例如第三方设备或软件接触受托内容信息。这种机密性的一个例子包括防止非受托第三方在沿着图形流水线的任意地方,接触加密收费内容的重放。术语“受保护”指的是防止非受托第三方,例如第三方设备或软件在未被发觉的情况下,接触或改变受托内容信息。这种保护能力的一个例子包括防止非受托第三方接触或改变可能在电子商务交易中产生的保密对话的显示。
在这方面,本发明考虑重叠窗口,例如位于收费内容视频流上面的用户界面,以及在电子商务对话中可能呈现的不能隐慝的窗口。
例证的网络环境
本领域的普通技术人员能够认识到,计算机或其它客户机或者服务器设备可被用作计算机网络的一部分,或者在分布式计算环境中应用。在这方面,本发明和包括任意数目的存储器或存储单元,以及在任意数目的存储单元或容量之间产生的任意数目的应用程序和进程的任意计算机系统有关,所述任意数目的存储器或存储单元以及任意数目的应用程序和进程会牵涉本发明的受托图形方式。本发明可应用于带有在网络环境或分布式计算环境中采用的,具有远程或本地存储器的服务器计算机和客户机计算机的环境。本发明还可应用于具有编程语言功能,产生、接收和传送与远程或本地服务有关的信息的解释和执行能力的独立计算设备。
分布式计算设施通过计算设备和系统之间的直接交换,共享计算机资源和服务。这些资源和服务包括信息的交换,超高速缓存,和文件的磁盘存储。分布式计算利用网络连通性,允许客户机补充它们的集体能力,从而有益于整个组织。在这方面,各种设备可具有能够互相作用,从而牵涉本发明的受托图形流水线的应用程序、对象或资源。
图1A是例证的组网或分布式计算环境的示意图。分布式计算环境包括计算对象10a、10b等,和计算对象或设备110a、110b、110c等。这些对象可包括程序、方法、数据仓库、可编程逻辑等等。这些对象可包括相同或不同设备,例如PDA、电视机、MP3播放机、个人计算机等的多个部分。每个对象可借助通信网络14与另一对象通信。通信网络14本身可包括向图1A的系统提供服务的其它计算对象和计算设备。根据本发明的一方面,每个对象10或110可包含能够请求受托图形资源的应用程序。
还可认识到诸如110c之类的对象可寄宿在另一计算设备10或110上。从而,虽然描绘的物理环境把连接的设备表示成计算机,不过这样的图解说明仅仅是例证性的,物理环境也可被描绘或描述成包括诸如PDA、电视机、MP3播放机之类的各种数字设备,诸如界面之类的软件对象、COM对象等等。
支持分布式计算环境的系统、组件和网络构形很多。例如,计算系统可通过有线或无线系统,通过本地网络或者分布广泛的网络连接在一起。目前,许多网络都与因特网耦接,因特网为分布广泛的计算提供基础结构,并且包含许多不同的网络。
在本地组网环境中,至少存在分别支持独特协议的四种完全不同的网络传送媒介,例如电力线,数据(无线和有线的),语音(例如电话)和娱乐媒体。大多数本地控制设备,例如照明开关和电器可使用电力线进行连通。数据服务可以宽带(例如DSL或电缆调制解调器)的形式进入本地,并且通过利用无线(例如HomeRF或者802.11b)或者有线(例如Home PNA,Cat 5,甚至电力线)连通可访问数据服务。语音通信可以有线(例如Cat 3)或者无线(例如蜂窝电话)的形式进入本地,并且通过利用Cat 3布线可在本地分布。娱乐媒体可通过卫星或电缆进入本地,并且一般利用同轴电缆在本地分布。IEEE 1394和DVI也正在显现为成群媒体设备的数字互连。所有这些网络环境和可显现为协议标准的其它环境都可互连,从而形成可通过因特网与外界相连的企业内部网。总之,对于数据的存储和传输来说,存在各种各不相同的来源,计算设备需要在数据处理流水线的所有部分保护内容的各种方法。
因特网一般指的是利用TCP/IP协议组的网络和网关的集合,在计算机组网领域中,TCP/IP协议组众所周知。TCP/IP是“传输控制协议/接口程序”的缩字母缩写词。因特网可被描述成由执行组网协议的计算机互连的地理分布遥远的计算机网络的系统,所述组网协议允许用户通过网络相互作用和共享信息。由于这种分布广泛的信息共享,迄今诸如因特网之类远程网络已发展成开放式系统,开发人员可基本上无限制地为其设计执行专门操作或者服务的应用软件。
从而,网络基础结构能够实现许许多多的网络布局,例如客户机/服务器,对等或者混合结构。“客户程序”是使用与其无关的另一类或另一组的服务的一类或一组成员。从而就计算来说,客户程序是请求由另一程序提供的服务的进程,即一般说来是一组指令或任务。客户程序在不必“知道”和其它程序或服务本身有关的任何工作细节的情况下,利用所请求的服务。在客户机/服务器结构中,特别是组网系统中,客户机一般是访问由另一计算机,例如服务器提供的共享网络资源的计算机。在图1A的例子中,计算机110a、110b等可被看作是客户机,计算机10a、10b等可被看作是服务器,这里服务器10a、10b等保存随后在客户机110a、110b等中被复制的数据。
服务器通常是可通过诸如因特网之类远程网络访问的远程计算机系统。客户程序可在第一计算机系统中处于活动状态,服务程序可在第二计算机系统中处于活动状态,通过通信媒介相互通信,从而提供分布式功能,并且允许多个客户机利用服务器的信息聚集能力。
客户机和服务器通过利用协议层提供的功能相互通信。例如,超文本传送协议(HTTP)是与万维网(WWW)一起使用的常用协议。一般来说,诸如通用资源定位符(URL)或网际协议(IP)地址之类的计算机网络地址被用于相互识别服务器或客户机。网络地址可被称为通用资源定位符地址。例如,可通过通信媒体提供通信。特别地,客户机和服务器可通过TCP/IP连接相互耦接,以便实现高容量通信。
从而图1A图解说明了服务器通过网络/总线与客户机通信的例证组网或分布式环境,本发明可用在所述组网或分布式环境中。更具体地说,根据本发明,若干服务器10a、10b等通过通信网络/总线14与若干客户机或远程计算设备110a、110b、110c、110d和110e等,例如便携式计算机、手持式计算机、瘦(thin)客户机、组网电器或者诸如VCR、TV、烤箱、灯具、加热器之类其它设备相连,所述通信网络/总线14可以是LAN、WAN、企业内部网、因特网等。从而预期本发明可应用于希望处理、保存或再现来自受托来源的保密内容的任意计算设备。
在其中通信网络/总线14是因特网的网络环境中,服务器10可以是Web服务器,客户机110a、110b、110c、110d、110e等通过若干已知协议中的任意一种,例如HTTP与所述Web服务器通信。
作为分布式计算环境的特征,服务器10也可用作客户机110。在适当的情况下,通信可以是有线的或者无线的。客户机110可通过通信网络/总线14通信,也可不通过通信网络/总线14通信,并且可具有与其相关的独立通信。例如在TV或VCR情况下,对其控制来说,可存在组网情况,也可不存在组网情况。每个客户机110和服务器10都可配备各种应用程序模块或对象135,以及相对于各种存储元件或对象的连接或访问,在所述各种存储元件或对象上可保存文件,或者文件的多个部分可被下载或移植到所述种种存储元件或对象上。从而,可在具有客户机110a、110b等和服务器10a、10b等的计算机网络环境中应用本发明,所述客户机110a、110b等可访问和与计算机网络/总线14相互作用,服务器10a、10b等可与客户机110a、110b等、其它设备111及数据库20相互作用。
例证的计算设备
图1B和下述说明用于简要概述其中可实现本发明的适宜计算环境。但是应注意,手持式、便携式和其它计算设备及计算对象预期可和本发明一起应用。虽然下面描述了通用计算机,不过这只是一个例子,本发明可和具有网络/总线互用性和交互作用的瘦客户机一起被实现。从而,可在网络宿主(hosted)服务环境中实现本发明,在所述网络宿主服务环境中,涉及很少或者最少的客户资源,例如其中客户机仅仅用作相对于网络/总线的接口,例如置于器具中的对象的网络环境。本质上,可保存数据或者可从其取回或再现数据的任意地方都是本发明的保密内容的加密保护的操作的理想或者适宜环境。
虽然没有要求,可借助操作系统,应用程序编程接口(APU)实现本发明,和/或本发明可包含在与受托内容对接的应用软件内。在各个实施例中,本发明还可应用于符合接口技术,以及下面描述的加密技术的硬件。可在计算机可执行指令的一般意义上描述软件,例如由诸如客户机工作站,服务器或者其它设备之类的一个或多个计算机执行的程序模块。一般来说,程序模块包括执行特殊任务或者实现特殊的抽象数据类型的例程、程序、对象、组件、数据结构等。通常,如同各个实施例中所需那样,可组合或者分布程序模块的功能。此外,本领域的技术人员会认识到可利用其它计算机系统结构实现本发明。适合于供本发明使用的其它众所周知的计算系统,环境和/或结构包括(但不局限于)个人计算机(PC)、自动柜员机、服务计算机、手持式或膝上型设备、多处理器系统、微处理器系统、可编程消费电子设备、网络PC、家用器具、灯具、环境控制元件、微型计算机、大型计算机等等。还可在分布式计算环境中实践本发明,在所述分布式计算环境中,任务由通过通信网络和/或总线或者其它数据传输媒介连接的远程处理设备执行。在分布式计算环境中,程序模块既可位于本地计算机存储媒介中,又可位于远程计算机存储媒介中,所述存储媒介包括存储器存储设备,客户机节点又可起服务器节点的作用。
这样,图1B图解说明了其中可实现本发明的适宜的计算系统环境100的一个例子,不过如上所述,计算系统环境100只是适宜的计算环境的一个例子,并不意味着对本发明的应用或功能范围的任何限制。计算环境100不应被理解成具有和例证的工作环境100中举例说明的任意一个组件或者组件的组合相关的任何依赖性或要求。
参考图1B,用于实现本发明的例证系统包括呈计算机110形式的通用计算设备。计算机110的组件可包括(但不限于)处理器120,系统存储器130,使包括系统存储器在内的各个系统组件与处理器120耦接的系统总线121。系统总线121可以是几种类型的总线结构中的任意一种,包括存储器总线或存储控制器,外围总线和使用各种总线结构中的任意一种的局部总线。举例来说(但是局限于),这种结构包括工业标准结构(ISA)总线,微通道结构(MCA)总线,增强ISA(EISA)总线,视频电子标准协会(VESA)局部总线,和外设部件互连(PCI)总线(也称为Mezzanine总线)。
计算机110一般包括各种计算可读媒介。计算机可读媒介可以是可被计算机110访问的任意可用媒介,并且包括易失性媒介和非易失性媒介,可卸的媒介和不可卸的媒介。举例来说(但不局限于),计算机可读媒介可包括计算机存储媒介和通信媒介。计算机存储媒介包括按照任意方法或技术实现的,用于存储诸如计算机可读指令、数据结构、程序模块或其它数据之类信息的易失性媒介和非易失性媒介,可更换媒介和不可更换媒介。计算机存储媒介包括(但不限于)RAM、ROM、EEPROM、快速存储器或者其它存储器技术,CDROM,数字通用光盘(DVD)或者其它光盘存储器,盒式磁带、磁带、磁盘存储器或者其它磁性存储设备,或者可用于保存所需信息并且可被计算机110访问的其它任意媒介。通信媒介一般在诸如载波或其它传送机制之类的调制数据信号,具体体现计算机可读指令、数据结构、程序模块或其它数据,并且包括任意信息传送媒介。术语“调制数据信号”指的是以这样的方式设置或改变其一个或多个特性,以便在其中对信息编码的信号。举例来说(但不局限于),通信媒介包括诸如有线网络或直接有线连接之类的有线媒介,和无线媒介,例如声音、RF、红外和其它无线媒介。上述任意的组合也应包含在计算机可读媒介的范围之内。
系统存储器130包括呈易失性和/或非易失性存储器形式的计算机存储媒介,例如只读存储器(ROM)131和随机存取存储器(RAM)132。基本输入/输出系统133(BIOS)一般保存在ROM 131中,基本输入/输出系统133(BIOS)包含例如在启动过程中,帮助在计算机110内的组件之间传送信息的基本例程。RAM 132一般包含处理器120可立即访问和/或目前正被处理器120处理的数据和/或程序模块。举例来说(但是不是限制),图1B图解说明了操作系统134、应用程序135、其它程序模块136和程序数据137。
计算机110还可包括其它可更换/不可更换,易失性/非易失性计算机存储媒介。举例来说,图1B图解说明了相对于不可更换的非易失性磁性媒介进行读写操作的硬盘驱动器141,相对于可更换的非易失性磁盘152进行读写操作的磁盘驱动器151,和相对于可更换的非易失性光盘156,例如CD ROM或者其它光学媒介进行读取操作的光盘驱动器155。例证的操作环境中可使用的其它可更换/不可更换的,易失性/非易失性计算机存储媒介包括(但不局限于)盒式磁带、快速存储卡、数字通用光盘、数字录像带、固态RAM、固态ROM等等。硬盘驱动器141一般通过诸如接口140之类的不可更换存储器接口与系统总线121相连,磁盘驱动器151和光盘驱动器155一般通过诸如接口150之类的可更换存储器接口与系统总线121相连。
上面描述并在图1B中图解说明的驱动器及它们的相关计算机存储媒介为计算机110提供计算机可读指令、数据结构、程序模块和其它数据的存储。例如,在图1B中,硬盘驱动器141被图解表示成存储操作系统144、应用程序145、其它程序模块146和程序数据147。注意这些部件可以和操作系统134、应用程序135、其它程序模块136和程序数据137相同,也可不同。这里,操作系统144、应用程序145、其它程序模块146和程序数据147被赋予不同的数字,以便说明至少它们是不同的副本。用户可通过诸如键盘162和指示器161,通常称为鼠标、跟踪球或触摸垫之类的输入装置,把命令和信息输入计算机110。其它输入装置(未示出)可包括麦克风、操纵杆、游戏柄、卫星碟形天线、扫描仪等等。这些及其它输入装置通常通过与系统总线121耦接的用户输入接口160与处理器120相连,不过也可由其它接口和总线结构,例如并行端口、游戏端口或通用串行总线(USB)相连。诸如Northbridge之类的图形接口182也可与系统总线121相连。Northbridge是与CPU或者主处理器通信的芯片组,并且承担加速图形接口(AGP)通信的职责。一个或多个图形处理器(GPU)184可与图形接口182通信。在这方面,GPU 184一般包括单片存储器,例如寄存存储器,并且GPU 184与视频存储器186通信。但是,GPU 184只是协处理器的一个例子,从而各种协处理器可包括在计算机110中。监视器191或者其它类型的显示器也通过接口,例如视频接口190也与系统总线121相连,视频接口190再与视频存储器186通信。一般来说,正是计算设备的该部分易受攻击,因此本发明提供伴随其而来的正被处理或再现的数据的保护和机密性。除了监视器191之外,计算机还可包括可通过输出外围接口195连接的其它外围输出装置,例如扬声器197和打印机196。
通过利用相对于一个或多个远程计算机,例如远程计算机180的逻辑连接,计算机110可在网络或分布式环境中工作。远程计算机180可以是个人计算机、服务器、路由器、网络PC、对等设备或者其它常见网络节点,并且一般包括上面相对于计算机110说明的许多或者所有元件,不过图1B中只图解说明了内存存储器181。图1B中描述的逻辑组件包括局域网(LAN)171和广域网(WAN)173,但是也可包括其它网络/总线。在家庭、办公室、公司计算机网络、企业内部网和因特网中,这样的组网环境是平凡的。
当用在LAN组网环境中时,计算机110通过网络接口或适配器170与LAN 171相连。当用在WAN组网环境中时,计算机110一般包括调制解调器172或者通过WAN 173,例如因特网建立通信的其它装置。调制解调器172(可以是内置的或者外置的)可通过用户输入接口160或者其它适当的机构与系统总线121相连。在网络环境中,关于计算机110描述的程序模块或者其多个部分可保存在远程存储设备中。举例来说(但不是限制),图1B把远程应用程序185图解表示成驻留在存储器181上。要认识到所示的网络连接只是例证性的,也可使用在计算机之间建立通信链路的其它装置。
例证的分布式计算框架或结构
鉴于个人计算和因特网的会聚,已开发并且正在开发各种分布式计算框架。个人及商业用户同样配有用于应用程序和计算设备的能够无缝共同使用的,允许Web的接口,使计算活动日益面向Web浏览器或网络。
例如,MICROSOFT的。Net平台包括服务器,积木式服务,例如基于Web的数据存储和可下载的设备软件。一般来说,.Net平台提供(1)使所有的计算设备一起工作,并且在所有计算设备上,使用户信息自动被更新和同步,(2)通过大量使用XML,而不是HTML,提高Web站点的交互能力,(3)从中央出发点到用户的产品及服务的特征定制访问和传送的在线服务,以便管理各种应用程序,例如电子邮件,或者软件,例如Office.Net,(4)集中式数据存储,这将提高对信息存取效率,并且方便信息存取以及用户和设备之间信息的同步,(5)集成各种通信媒介,例如电子邮件、传真和电话的能力,(6)对于开发人员来说,产生可重用模块的能力,从而提高生产率,并降低编程错误的数目,和(7)以及其它许多跨平台综合特征。
虽然这里关于驻留在计算设备上的软件实现的方法概述了例证实施例,不过也可通过操作系统,应用编程接口(API)或者协处理器和未受侵犯内容之间的“中人(middle man)”对象,实现本发明的一个或多个部分,以致受托内容服务可被所有.Net的语言和服务执行,得到所有.Net的语言和服务的支持或者通过所有.Net的语言和服务被访问,并且在其它分布式计算框架中也一样。此外,可认识到根据本发明描述的一种或多种技术可能涉及对硬件的改变,例如对GPU的改变,以便符合所述技术。
加密保护保密内容
从而,本发明提供扩大操作系统,或者任意平台,从而实现诸如防篡改的机密对话之类的“受托图形”应用,并且能够以防范擅自复制的方式实现内容的再现的方法和系统。图2图解说明了本发明解决的问题,其中加密收费内容200被表示成正在通过受托应用软件TS或者正在由受托应用软件TS产生。伴随受托软件TS的应用而来的是,在通过再现设备295再现内容200(或者其它应用)之前,内容200会涉及GPU 265的功能。这样的内容200将从系统或主存储器230传送给视频存储器260,以便由GPU 265处理。图2中的虚线图解说明安全问题的所在。如背景技术中所述,目前不存在完全确保通过虚线围绕的部件的内容的受保护和保密传送的系统。从受托软件TS的立场来看,第一个问题是在把内容交出给GPU之前,是否可把内容托付给虚线内的组件。假定受托软件TS能够正确验证虚线内的组件,则从受托软件TS的立场来看的第二个问题是受托软件TS必须合理地确信,一旦数据被交出到虚线内,则数据不会被改变。本发明在下面描述的各个实施例中解决这两种问题。按照不同的方式,通过(1)对重叠面的内容加密;(2)使GPU能够处理加密内容,而不会使非受托应用程序或非受托方获得所述加密内容;和(3)对命令缓冲器的内容加密,实现本发明的方法和系统。
本发明解决的受托图形处理和再现问题的第一方面涉及加密(这里有时称为“密码机”)处理器和索引密钥管理的提供。普通转让的同时待审的美国专利申请No.AA/BBB,CCC(‘CCC申请),“Methods andSystems for Authentication of Components in a Graphics System”(申请日YYYY,DD月)公开如下所述的验证和图形系统有关的组件的技术。但是,要明白本发明认为验证已发生,从而如下在本发明的各个实施例中所述,任意验证技术可被用于提供受托的图形平台。
例证的验证
在这方面,保密图形卡必须能够照这样验证它们自己。特别地,受托软件必须能够区分保密图形卡和传统图形卡或者欺骗设备,例如诱骗设备。另外,受托软件必须能够向图形卡显示加密密钥,并且能够核实密钥的接收者确实是保密图形卡。为此,保密图形卡配有根据本发明的加密处理器,所述加密处理器执行验证和密钥传送的加密任务。
对于硬件来说,根据本发明提供加密处理器,在制造中使所述加密处理器个别化,并出具证明。每个加密处理器包括唯一的专用解密密钥Kpriv。虽然根据本发明预期许多不同的加密和解密算法,并且所述许多不同的加密和解密算法为加密领域中的技术人员已知,不过,这里描述的算法是RSA,密钥长度为1024位,这两者都是非限制性的设计选择,可根据应用和所需的保密等级,按照众所周知的折衷,改变算法和密钥长度。
在这方面,通过把加密处理器添加到现有芯片上,或者通过把加密处理器作为独立芯片添加到图形卡上,把加密处理器永久安装在图形卡上。加密处理器实现公共密钥加密算法,如下更详细说明的一样,并且隐藏唯一的专用密钥。在这方面,这种加密处理器可利用现今的硅技术快速进行公共密钥解密。但是,加密处理器还可包括公共密钥加速器,并且可实现对称密码(AES)和某一控制逻辑。
在一个例证的非限制性实施例中,加密处理器包括下述易失性寄存器:(1)用于话路密钥的256位寄存器。该密钥的寿命一般为受托软件的运行时间,和(2)若干索引密钥的阵列。每个密钥为128位长,不过其它选择也是适宜的。每个密钥与特定的窗口相关,并被图形卡用于对其内容解密。每个密钥的寿命由来自受托软件的指令管理。
如上所述,本发明的加密处理器永久安装在图形卡上。从而,需要一种安全地与加密处理器连系,以便利用其功能的方法。就与加密处理器连系来说,本发明至少考虑两种技术:(1)相对于受托软件TS的外部接口和(2)GPU 265的接口。前一接口-至少就其加密特征来说-必须标准化。后一接口可以是特定实现,但是应遵守下面陈述的全部准则。
对于外部接口实现来说,外部接口把专用密钥(PK)加密协议用于验证和密钥传送。按照该协议,受托软件TS利用加密处理器的公共密钥对话路密钥加密。加密处理器接收作为结果获得的密码团(cryptoblob),并用其专用密钥译解所述密码团,从而获得话路密钥。现在,受托软件和加密处理器共享机密。受托软件可使用该话路密钥向加密处理器发送指令。
在一个非限制性实施例中,加密处理器通过下述函数暴露外部接口:
函数SetSessionKey()执行初始验证步骤和密钥传送。这是访问加密处理器的公共密钥功能的唯一函数。从而在一个实施例中,本发明计划每次引导时调用该函数。下述例证的伪代码代表SetSessionKey()的一人非限制性实现:
SetSessionKey(cryptoblob){
PKDecrypt(privateKey,cryptoblob,sessionKey);
}
在成功完成操作之后,话路密钥寄存器包含来自于密钥团的一个密钥,例如一个256位的密钥。公共密钥算法可以是,例如1024位的RSA。
一旦在受托软件和加密处理器之间确定了对称的话路密钥K,则该密钥可被用于保护往来于加密处理器的所有其它通信。受托软件和加密处理器可借助简单的Get和Set方法进行通信,考虑到机密性和完整性,所述Get和Set方法的参数得到加密保护。特别地,可按照下述非限制性方式处理每个调用的参数块B:
AES(M|HMAC(M,K1),K2),
这里:
K1是K的前半部分(位0-127)
K2是K的后半部分(位128-255)
AES(M,K)是利用CBC模式下的AES,按照密钥K对消息M加密的结果
HMAC(M,K)是利用密钥K,对于消息M的恰当散列函数计算HMAC的结果
A|B是并置A和B的结果。
该格式可用于下述函数的输入参数及输出参数:
Set([IN] BOOL needsAck,[IN]BITS128 nonce,[IN]ENUMpropertyID,[IN]BYTESEQUENCE propertyParameters,[OUT]BYTESEQUENCE ack)
这里:
needsAck是布尔值,它允许受托软件指示是否需要确认。
nonce为受托软件选择的一个128位的值。如果请求确认,则nonce可用在确认中。
propertyID识别正被设置的性质。下表1中给出了所支持性质的例证列表。
propertyParameters是特定于每个propertyID的一系列参数。
最后,Ack是操作的确认。当且仅当设置needsAck时,加密处理器才产生ack。Ack由其后跟随特定于每个propertyID的消息的nonce构成。
Property ID |
Needs Ack |
Parameters |
Acknowledgement |
索引密钥 |
是 |
索引,密钥,目的 |
好,失败 |
输出锁定 |
是 |
{锁定,开锁} |
锁定操作后的状态 |
L2KEYMGMT |
是 |
更新频率 |
好,失败 |
表1-Get函数的propertyID列表
对于索引密钥propertyID来说,该方法把新的密钥和目的标记写入由索引识别的密钥寄存器中。
对于输出锁定propertyID来说,该方法设置输出锁定标志。当设置该标志时,屏幕几何结构(宽度、高度、颜色深度、刷新率)以及图形卡输出(VGA,DVI)不能被改变。具体地说,在设置输出锁定标志时,图形卡不会执行改变这些设置的指令。
对于L2KeyMgmt propertyID来说,该方法在根据本发明描述的第二层保护,即下面更详细说明的对输入和输出加密情况下,设置密钥更新频率。
类似于,如下提出Get函数:
Get([IN]BITS128 nonce,[IN]ENUM propertyID,[IN]BYTESEQUENCE propertyParameters,[OUT]BYTESEQUENCEresponce)
这里:
nonce是受托软件选择的用在响应中的128位的值。
propertyID识别正被设置的性质。下表2中给出了所支持的性质的列表。
propertyParamters是特定于每个propertyID的一系列参数。
Response包含操作的结果。响应由其后跟随特定于每个propertyID的消息的nonce组成。
Property ID |
Parameters |
Response |
输出端口 |
密钥索引 |
VGA、AGP等 |
验证代码 |
密钥索引 |
X-位数字 |
DX-SEC版本 |
无 |
版本号 |
保密面计数 |
无 |
支持的保密面的数目 |
重叠面计算 |
无 |
支持的重叠面的数目 |
主要类型 |
无 |
1 |
几何结构 |
无 |
主面的宽度、高度、刷新率、颜色深度 |
表2-Set函数的Property ID的列表
对于输出端口,该方法返回图形卡输出的设置,例如VGA、DVI等。
对于验证代码,按照根据本发明描述的第一层保护,即覆盖图的加密,该方法返回窗口的内容的无用信息。
对于DX-SEC版本,该方法返回图形卡所支持的DX-SEC的版本。
对于保密面计数,该方法返回图形卡所支持的保密面的数目。
对于重叠面计数,该方法返回图形卡所支持的重叠保密面的数目。
对于主要类型,该方法返回1,并且提供未来的灵活性。
对于几何结构,该方法返回主面的宽度、高度、刷新率和颜色深度。
Set函数还包括设置受保护区覆盖图的位置或大小,或者应被解密的主面的一部分的位置和大小的方法。
从而,上面的SetSessionKey,Get和Set和外部接口的非限制性实施例有关。术语“内部接口”指的是加密处理器和图形卡剩余部分之间的接口。根据本发明的这种接口的细节由每个单独的图形卡的实现决定,服从下述限制:(1)加密处理器应永久安装在图形卡上,和(2)加密处理器和图形卡剩余部分之间的连接不应被暴露。
在这方面,从图形卡取下加密处理器不应是无关紧要的。如果加密处理器被实现成独立芯片,则这主要是关于把加密处理器安装在图形卡上的机械接口的限制。一般来说,加密处理器应被焊接在图形卡上。另一方面,加密处理器应驻留在和主GPU相同的芯片上。允许取下加密处理器的标准化机械接口,例如智能卡阅读器,插槽底座等的使用是不可接受的。
此外,必须不能接触加密处理器和图形卡剩余部分之间的物理连接,并且不能通过标准接口暴露所述物理连接。例如,根据本发明,该总线上的USB连接件是不可接受的。
对于密钥管理的规则来说,只可根据其相关目的参数使用各个索引密钥。在一个实施例中,目的参数的值具有下述含意:
L1STREAM:该密钥只可和下面关于本发明提供的第一层保密性,即覆盖图的加密说明的DX-SEC流密码一起使用。
L2BLOCK:该密钥只可在下面描述的本发明提供的第二层保密性,即对输入和输出加密的ECB模式下,和块密码一起使用。ECB模式下的块密钥被用于译解受托软件写入的纹理块。
在这方面,当索引已被填入新值时,不应保持密钥的任何副本。
第一层保密性-加密的覆盖图
由于视频存储器可被运行于CPU上的非受托软件映射和读取,因此视频存储器不能包含呈明文形式的信息。服从该要求的视频存储器包括用于刷新显示器的视频存储器。根据本发明满足该标准的系统的初始实现对重叠面的内容加密。随后当图像被发送给显示器时,覆盖图在传输过程中由DAC硬件解密,或者刚好在到达DAC硬件之前被解密。
图3A图解说明了这种技术的一个例证实现。来自任意地方的,易被受托应用软件210发现或产生的加密收费内容200被受托应用软件210接收。跟着发生与加密处理器220的验证交换,例如上面在例证实施例中描述的验证交换程序,或者由保密地或者通过受其它方法保护的路径传送保密密钥的任意其它技术实现。内容200从系统存储器230传到加密的覆盖面240,覆盖面240覆盖视频存储器260的主面270。结合加密处理器220,GPU 265的解密部分250对加密覆盖图240提供的加密层解密,并把内容传送给象素选择280,以便输出给数字视频接口(DVI)/数-模转换器(DAC)290,从而输出给再现设备,例如监视器。但是,图3A中描绘的系统不满足上面说明的所有标准,因为只存在一个覆盖图。为了满足受托环境所需的最小功能,例如受托窗口,本发明在一个备选实施例中实现两个覆盖图。第一个“保密”覆盖图实质上是目前存在于平台中的覆盖图,主要用于播放视频,被扩充以致其内容可被加密。第二个覆盖图是专用设计的用于呈现敏感的用户界面,例如电子商务对话。该“受保护覆盖图”总在最前面,并且是不可遮蔽的,即无颜色调节,并且优先权高于第一覆盖图。为了使费用降至最小,第二覆盖图可能受到某些限制。例如,可这样形成第二覆盖图,以致数据处于和主面相同的象素格式,并且不能被拉伸或多重缓冲。另外,受保护覆盖图的内容可由硬件核实。表3总结了保密覆盖图和受保护覆盖图之间的例证差异。
项目 |
保密覆盖图 |
受保护覆盖图 |
和主面相同的象素格式 |
是 |
否 |
可被拉伸 |
否 |
是 |
可被目的地(destination)调色 |
是 |
否 |
可被多重缓冲 |
是 |
否 |
总在最前面 |
否 |
是 |
内容可被核实 |
否 |
是 |
表3对比保密覆盖图和受保护覆盖
图3B表示包括保密覆盖图,例如保密覆盖图翻转链(flipping chain)310的覆盖图310a、310b和310c,和受保护覆盖图320。可能的时候,流密码被用于保密面加密,因为和块密码相比,它们实现更快并且更简单(更多细节参见附录A)。流密码根据“流中字节的位置”对数据加密。从而,本发明的第一级保密性利用位于该面左上角的象素加密密钥初始化流密码。为包含在覆盖面内的每个象素预置流密码,而不考虑象素是否将被显示。提议的系统包括两个流密码加密组件300a和300b,一个用于保密覆盖图,一个用于受保护覆盖图。一旦存在解密象素值,则硬件280选择受保护覆盖图320,保密覆盖图310(如果主面(primary)270等于颜色密钥(key)和/或如果允许颜色调节)或者主面270的象素值,并通过DVI/DAC 290把象素值发送给显示硬件。
注意对手通过任意数目的手段,可接触覆盖图,从而使显示图像看不见,或者用噪声内容替换保密内容,因为对手写入的数据也将被加密。虽然本发明并不直接防范这些攻击,不过本发明确实提供完整性检查,以便确保向最终用户呈现的是预期的内容。从而,如果输出不同于输入,则用户或受托软件210可被警告存在对内容的篡改。
对于覆盖图的软件接口来说,除了通常的覆盖图信息,例如源和目的地边界框,目的地颜色密钥等,保密覆盖图310保持规定的加密密钥索引,受保护覆盖图320另外保持规定的存储器位置,解密后的覆盖图内容的循环冗余码(CRC)应被写入所述存储器位置。
保密覆盖图接口类似于现有的覆盖图,除了翻转(flip)方法规定覆盖图后端缓冲器310a,即相对于其正在翻转数据的缓冲器的内容的加密密钥索引之外。
受保护覆盖图接口更简单,并且为在首次显示之后,要转发给存储器位置的面的CRC作为准备。标准化硬件接口控制覆盖图的位置,并且基于轮询,使CRC适用于关心的软件。例如,一个寄存器可指示CRC是否适用,另一个寄存器可使CRC能够被读取。例如,在受保护覆盖图接口方面,可利用下述例证伪代码:
HRESULT UpdateOverlay(LPPOINT ppntUL);
这里:
ppntUL指定受保护覆盖图的左上角。
在这方面,如果与完整性有关,则软件210计算预期的CRC值。
第二层保密性-加密的输入和输出
根据本发明,为了把GPU 265扩充到处理作为输入的加密内容,并发出作为输出的加密内容,加密和解密硬件被添加到纹理映射装置(在输入一侧)和字母混合装置(在输出一侧),硬件设计人员协作,遵守实现该功能方面的一些规则。由于流密码不能实现对加密数据的随机存取,因此系统使用块密码对数据加密,例如每次128位。在超高速缓冲存储器行填充(cache line fill)状态下,纹理映射装置解密,当从颜色缓冲器读取超高速缓冲存储器时,字母混合装置解密,并在写入之前,字母混合装置加密。这些操作中使用的加密密钥可以不同。
除3D再现之外的计算任务,例如视频解码是刚刚描述的范例的直接扩展。视频宏数据块代替纹理用作加密输入;正被解码的输出帧代替颜色缓冲器用作加密输出。如果当在命令流中把内容带内传送给GPU 265时,要保护所述内容,那么下面描述如何对命令缓冲器加密。
图4A描绘了刚刚描述的借助加密和解密组件440执行前端操作的系统,把加密面420用作输入,发出作为输出的加密面,即加密纹理和颜色缓冲器技术的前端。本发明还提供加密纹理400a,而纹理400b可以是视频存储器260的典型纹理。加密纹理400a输出给GPU 265的解密组件450,解密组件450和加密处理器220一起工作,对纹理解密,并且借助组件430a,对来自组件440的解密数据应用图形算法,例如阴影法等等。
就预测合成的页面翻转桌面的配置来说,刚刚描述的图4A的系统可保护整个桌面,只要DAC硬件能够如上所述对主面以及覆盖面310和320解密。注意在这种情况下,DAC硬件利用块密码,而不是流密码进行解密。这样的系统允许任意数目的保密面参与桌面,同时对它们施加任意Z轴排序,混合或者甚至3D或者效果,而不会损害保密性。必须总在最前面并且其内容必须可核实的受保护覆盖面320驻留在单独的表面中。上面描述的保密覆盖图310继续存在,直到可借助保密页面翻转桌面或者平台,用软件模拟它为止。
在一个实施例中,除了能够对主面270解密之外,系统要求GPU 265还能够对来自普通桌面应用程序,例如受托字处理器的明文加密,以致它们也能够参与桌面。图4B图解说明了这样的情况,其中包括前表面510b和后表面510a的主翻转链510被加密。从而,主面可由桌面合成器430处理,由加密/解密组件440a分别保护相对于其的输入输出。在与加密处理器220通信的情况下,解密组件500随后对前表面510b解密,以便输出给DVI/DAC 290。这使系统暴露于下面相对于确保保密性说明的某些类型的攻击之下,在所述下述说明中讨论防范这些攻击的一些策略。
图4C描绘了图4B的替换物,其中实现了对保密覆盖图翻转链310的抄录。从而,作为对主面270加密的替换,根据本发明,硬件能够实现供保密覆盖图硬件300a消耗的流密码加密,保密覆盖图硬件300a和加密处理器220一起对流密码数据解密。和利用块密码对主面加密相比,这种表示机制花费不高,但是作为设计折衷,可能不能象利用块密码对主面加密那样可升级和灵活。由于保密覆盖图310使用流密码进行加密,这种情况下合理的支持操作是‘复制’操作,‘复制’操作中,解密组件440b利用输入面510a的块密码对输入解密,并且组件440b利用覆盖图的流密码重新加密。
在每次一个加密输入就足够的情况下,这些实施例,以及它们的各种组合是实用的,只要任意数目的明文输入可和加密输入相结合,产生加密输出即可。
对于确保保密性来说,根据本发明可实现的措施有很多种。首先,上面描述的第二层保密性依赖于这样的思想,即一旦明文被解密,则明文不能泄漏出GPU 265。例如,不存在能够借助主机的中央处理器(CPU)从芯片读出明文的调试寄存器或者其它工具。除了小心进行硬件设计以避免这种泄漏之外,GPU 265指令集被设计成使得不能实现对输入的解密,又不能实现对输出的加密。此外,硬件防止明文数据的泄漏,不论是由劣种(rogue)驱动器,由对抗性代码,还是由意外引起的泄漏。
另外,硬件不可能泄漏密钥。一旦通过按照验证交换描述的加密协议,密钥被传送给GPU 265,则这些密钥只适用于加密和解密组件。
如上所述,如果GPU 265能够对明文加密,以便在主面270中显示,则这种功能被看成是系统中的弱点,因为这种加密功能是描述的其中对手能够同时获得明文和对应的加密文本的唯一机制。通过映射主面,以致CPU可看到所述主面,并且产生必须被加密的窗口,对手可构建对应于已知明文块的加密文本子集。当“有趣的”文本块的数目较小时,这些所谓的“字典攻击”效果很好。例如,对于以32bpp显示模式下黑白对话框的显示来说,由于每个块存在4个象素,这样的对话只需要显示16个块。对于已发现这16个加密文本块的对手来说,一种可能的途径是通过产生即使在被GPU 265解密之后,仍然有意义的内容,向最终用户伪选对话。由此,受保护覆盖图最适合于防范篡改的对话,因为当最终用户还没有看到预期应看到的内容时,它可使应用程序检测出。
从而,挫败希望产生字典的对手的良好策略有两种。首先,由于字典只适用于指定的密钥,因此改变密钥并对内容重新加密可迫使对手开始准备新的字典。此外,对于主面的加密来说,不需使软件能够得到密钥-它可在硬件中滚动,软件只需被告知密钥已改变。由于先前的密钥仍然存在,因此软件可使用先前的密钥对未改变的主面部分解密和重新加密。从而,加密处理器220以选前的密钥仍然存在,例如加密密钥索引的双重缓存的方式,并且以通知软件密钥已滚动的方式,定期滚动主面270的加密密钥。
另一种策略涉及在加密之前,对图像内的位置编码。例如,在对其加密之前,图像中的(x,y)象素位置(或者其它衍生值,例如图像偏移)可被异-或(XOR)成象素数据;从而可在解密之后进行操作。其结果是,表面的不同区域中的象素块被不同加密,明文-加密文本映射只对该表面中的指定位置有意义,对于攻击者来说这是无效的。
本发明还提供预定的混合(swizzled)格式。由于纹量和离屏面要求随机存取,因此必须利用块密码对它们编码。在块密码的典型块大小和用于现代的3D加速器的典型超高速缓冲存储器行大小之间存在良好的协同作用,例如如果超高速缓冲存储器行和块大小都为128位,则可在硬件中实现有效的加密和解密。甚至如果存在轻微的差别(例如128位的块大小和256位的超高速缓冲存储器行大小),硬件实现也很可能是高效的。
关于加密纹理数据的一个问题在于块加密方案要求在可被加密或解密之前,要存在相邻的字节块;并且超高速缓冲存储器行填充要求象素数据被‘混合’,即形成从图像中的(X,Y)位置到地址的变换,以致超高速缓冲存储器行填充产生2D区域的象素。至今,硬件厂家表面上揭示了线性面格式,同时在不通知应用程序的情况下,搅和图像数据。但是,由于受托软件将发出加密纹理数据,因此软件必须预先知晓混合方案,从而它能够对相邻的数据块加密,并保存2D位置。作为响应,本发明确定混合图像格式的字典,包括YUV 4∶4∶4,4∶2∶2和4∶2∶0以及RGB格式,供应用程序之用。这些格式的性能可能不象图像被混合成硬件专用格式的性能那么高,但是加密是值得的,虽然性能稍微被降低,即用保密性换取速度。
对于AYUV/ARGB(32bpp,压缩)来说,除了用于亮度(Y)和色度(U和V)样本的8位颜色通道之外,该32bpp面格式还包含一个字母通道。另一方面,它可以包含标准的ARGB 32bpp,因为两种格式都为32bPP并且都被压缩。下面的讨论假定AYUV。线性布局如图5中所示。
图像中象素(X,Y)的偏移如下:
Offset=Y*Pitch+X*4
假定128位加密块大小和超高速缓冲存储器行大小,4个象素可适合单个加密块。在产生地址之前,交织X和Y的最低有效位会导致超高速缓冲存储器行填充中改进的2D位置。
图5B中图解说明了得到的图像布局。每个编号矩形是一个象素,粗体矩形是加密块。本发明的用于这种格式的把图像中的(x,y)位置转换成偏移的混合函数的例证伪代码如下:
DWORD:
SwizzleAYUV(DWORDx,DWORDy,DWORD Pitch)
{
//pitch is number of bytes per scanline of macro blocks
DWORD BlockOffset=(v>>1)*Pitch+(x>>1)*(128/8);
DWORD IntraBlockOffset=((y&2)<<2)|(x&2)<<1)|((y&1)
<<1)|(x&1);
return BlockOffset+IntraBlockOffset*4;
}
对于YUY2(16bpp,压缩)来说,该面格式以为2的系数对‘色度’样本U和V进行水平二次抽样。结果是平均每个象素16位的压缩图像格式。图6A中表示了该线性布局。本发明的混合格式分配4×2象素的加密块,如图6B中所示。和图5A和5B的情况相同,128位的块也被混合。注意对于图6B和对于把(x,y)坐标转换成图像偏移的下述例证混合伪代码来说,U和V被假定为具有相等的X坐标:
DWORD
SwizzleYUY2Y(DWORDx,DWORDy,const
SURFACEDESC&sd)
{
assert(x<sd.Width);
assert(y<sd.Height)
DWORD BlockOffset=(y>>1)*sd.Pitch+(x>>2)*(128/8);
DWORD IntraBlockOffset=((x&2)<<1)|
((y&1)<<1)|
((x&1)<<0);
DWORD dwRet=BlockOffset+(IntraBlockOffset<<1);
return dwRet;
}
DWORD
SwizzleYUY2U(DWORDx,DWORDy,const
SURFACEDESC&sd)
{
assert(x<sd.Width);
assert(0==(x&1));
assert(y<sd.Height)
DWORD BlockOffset=(y>>1)*sd.Pitch+(x>>2)*(128/8);
DWORD IntraBlockOffset=((x&2)<<1)|
((y&1)<<1)|
((x&1)<<0);
return BlockOffset+(IntraBlockOffset<<1)+1;
<!-- SIPO <DP n="26"> -->
<dp n="d26"/>
}
DWORD
SwizzleYUY2V(DWORDx,DWORDy,const
SURFACEDESC&sd)
{
assert(x<sd.Width);
assert(0==(x&1));
assert(y<sd.Height)
DWORD BlockOffset=(y>>2)*sd.Pitch+(x>>3)*(512/8);
DWORD IntraBlockOffset=((x&2)<<1)|
((y&1)<<1)|
((x&1)<<0);
return BlockOffset+(IntraBlockOffset<<1)+3;
}
在这方面,对于附随图5A、5B、6A和6B的伪代码来说,面间距被定义成128位块的每条扫描线的字节数。
对于压缩平面(12bpp)来说,该面格式以为2的系数水平地和垂直地对U和V二次抽样。在该表面的两个独立部分中展开亮度和色度样本。图7A中表示了压缩平面(12bpp)的线性布局。
面间距被定义成Y平面中512位块的每条扫描线的字节数。UV平面的间距为Y平面的间距的一半,因为UV平面上存在的样本为Y平面上样本的1/4,但是每个样本的颜色元素为Y平面上样本的2倍。图7B中表示了根据本发明的混合图像格式。
本发明的用于该格式的,把(x,y)坐标转换成Y、U和V元素的偏移的混合函数的例证伪代码如下:
DWORD
SwizzlePP12Y(DWORDx,DWORDy,const SURFACEDESC&sd)
{
assert(x<sd.Width);
<!-- SIPO <DP n="27"> -->
<dp n="d27"/>
assert(y<sd.Height)
DWORD BlockOffset=(y>>2)*sd.Pitch+(x>>2)*(128/8);
DWORD IntraBlockOffset=((y&2)<<2)|
((x&2)<<1)|
((y&1)<<1)|
(x&1);
return BlockOffset+IntraBlockOffset;
}
DWORD
SwizzlePP12U(DWORDx,DWORDy,const SURFACEDESC&sd)
{
DWORD PlaneOffset=(sd.Height>>3)*sd.Pitch;
if((0!=(x&1))||(0!=(y&1)))
_asm int 3
x>>=1;
y>>=1;
DWORD BlockOffset=(y>>1)*sd.Pitch/2+(x>>2)*(128/8);
DWORD IntraBlockOffset=((x&2)<<1)|
((y&1)<<1)|
(x&1);
return PlaneOffset+BlockOffset+(IntraBlockOffset<<1);
}
DWORD
SwizzlePP12V(DWORDx,DWORDy,const SURFACEDESC&sd)
{
DWORD PlaneOffset=(sd.Height>>3)*sd.Pitch;
if((0!=(x&1))||(0!=(y&1)))
_asm int 3
x>>=1;
<!-- SIPO <DP n="28"> -->
<dp n="d28"/>
y>>=1;
DWORD BlockOffset=(y>>1)*sd.Pitch/2+(x>>2)*(128/8);
DWORD IntraBlockOffset=((x&2)<<1)|
((y&1)<<1)|
(x&1);
return PlaneOffset+BlockOffset+(IntraBlockOffset<<1)+1;
}
第三层保密性-加密的命令缓冲器
根据本发明,可扩充上面关于第一层和第二层保密性说明的实施例的功能,以便除了GPU 265正在处理的图像数据外,还对提供给GPU 265的命令缓冲器加密。如果应用程序210希望保护发送给命令缓冲器中的硬件的内容,则这种功能是合乎需要的。图9A表示使用加密命令缓冲器900的视频解码,由此,内容被传递全加密纹理400a,并由解密组件450解密,以及由视频解码器430b解码。虽然可以只相对于命令缓冲器被加密,但是内容在视频存储器以及在命令缓冲器中被加密,如同由加密的解码帧420a所示。从而在类似于此的情况下,对命令缓冲器加密是恰当的,在所述情况下,宏数据块在视频存储器中,同时在命令流中发送运动矢量和其它命令。
在颜色缓冲器加密不足以保护所考虑的内容的警告下,关于加密纹理数据的可分性约束也适用于加密命令缓冲器数据。中间缓冲器,例如Z缓冲器也可被加密,以便保护系统防止明文攻击。图9B表示了根据本发明利用加密命令缓冲器的例证3D再现。如图所示,3d再现命令810在到达视频解码器430c的途中被加密。纹理数据400a被解密组件450解密,并由视频解码器430c按照命令810进行处理。随之而来的是,借助加密/解密组件830对颜色缓冲器820中的数据加密。
可利用两种途径,在命令缓冲器的消耗之前,或者在已消耗命令缓冲器之后,进行篡改检测。在一个实施例,在显示或再现内容之后,启动篡改检测。
其它备选实施例-图形卡的输出的加密
在上述各个实施例中,虽然关于图2的虚线部分证明并描述了保密性和完整性。但是还没有关于视频输出证明保密性和完整性,即,理论上,图形卡和诸如监视器之类的再现设备之间的接口,和/或再现设备本身受到攻击。
从而,在上述实施例中,如图9A中所示,在过程中的某一点,即使在视频存储器中和在图形卡处理过程中,内容受到保护,但是该数据被不用密码地发送给DVI/DAC 290。从而,在到达再现设备的途中,以及在再现设备之内时,数据可能被剽窃或者被改变。
从而,根据本发明的一个备选实施例,所述备选实施例可和这里描述的其它实施例随意组合,在再现设备中设置一个同型的加密处理器220b,补充加密处理器220a执行的功能。在这方面,在通信上与加密处理器220a耦接的加密组件910a在把数据传送给DVI/DAC组件290之前,对数据加密,通信上与加密处理器220b耦接的解密组件910b译解该数据,作为所进行的显示或再现的一部分,防止数据的剽窃。另一方面,加密组件910a可和DVI/DAC组件290包含在一起。总之,通过应用相同的加密和解密,以及密钥管理技术,可在整个图形流水线内保护内容,实现内容的加密保护保密传送和处理。
如上所述,虽然已关于各种计算设备、硬件、软件和网络结构说明了本发明的例证实施例,不过基础概念可应用于其中希望保护来自于受托来源的内容的任意计算设备或系统。从而,根据本发明的加密保护保密内容的技术可应用于各种应用程序和设备。例如,本发明的加密保护保密内容的方法可应用于计算设备的操作系统,以设备上的独立对象的形式,以另一对象的一部分的形式,以可从服务器下载的对象的形式,以分布式对象的形式等提供。虽然这里例证的编程语言、伪代码、名称和例子被选为各种选择的代表,不过,这些编程语言、伪代码、名称和例子并不意味着对本发明的限制。
这里描述的各种技术可结合硬件或软件,或者它们的组合一起实现。从而,本发明的方法和设备,或者本发明的方法和设备的某些方面或部分可采取嵌入有形媒介,例如软盘、CD-ROM、硬盘驱动器或者其它任意机器可读的存储介质中的程序代码(即指令)的形式,其中当程序被载入诸如计算机之类的机器,并被所述机器执行时,所述机器变成实践本发明的设备。在程序代码在可编程计算机上执行的情况下,计算设备一般包括处理器、处理器可读的存储介质(包括易失性和非易失性存储器和/或存储元件),至少一个输入装置,和至少一个输出装置。为了与计算机系统通信,最好用面向过程或对象的高级编程语言实现通过利用数据处理API,操作系统,受托应用程序等,可应用本发明的技术的一个或多个程序。但是,需要的话,也可用汇编或机器语言实现程序。总之,语言可以是被编译语言或者被解释语言,并且在本发明的各个实施例中,对GPU 265的硬件实现强加各种条件。
也可借助以通过某些传输媒介,例如通过电线或电缆,通过光纤或者借助其它形式的传输,传送的程序代码的形式体现的通信实践本发明的方法和设备,其中当程序代码被诸如EPROM,门阵列,可编程逻辑器件(PLD),客户机,视频记录器等,或者具有图形卡和上面在例证实施例中描述的加密能力的接收机器之类的机器接收,被载入所述机器中,并被所述机器执行时,所述机器变成实践本发明的设备。当在通用处理器上实现时,程序代码与处理器结合,形成调用本发明的功能的独特设备。另外,结合本发明使用的存储技术可以总是硬件和软件的组合。
虽然已结合各个附图中的优选实施例说明了本发明,但是要明白也可使用其它类似的实施例,或者可对所述实施例进行修改和添加,以便在不脱离本发明的情况下,实现本发明的相同功能。例如,虽然在网络环境,例如对等网络环境方面描述本发明的例证网络环境,不过本领域的技术人员将认识到本发明并不局限于此,如同本申请中说明的方法可应用于任意计算设备或环境(不论是有线还是无线),例如游戏控制台,手持式计算机,便携式计算机等等,并且可应用于通过通信网络连接,并跨越网络交互作用的任意数目的这种计算设备。此外,应强调的是各种计算机平台,包括手持式设备操作系统和其它应用程序专用操作系统在预期范围之内,尤其是当无线网络设备的数目继续激增时。此外,可在若干协处理芯片或设备,例如具有若干GPU的设备中,或者跨越所述若干协处理芯片或设备实现本发明,并且可跨越若干设备类似地实现存储。于是,本发明不应局限于任意单个实施例,相反本发明的宽度和范围应根据附加的权利要求限定。
附录A:流密码与块密码的比较
本附录详述了当与本文献的内容相关时,流密码和块密码之间的差别。
问题 |
流密码 |
块密码 |
间隔尺寸 |
字节 |
16字节(128位) |
随机存取 |
困难/不可能 |
直接 |
密钥变换 |
频繁(每帧) |
不频繁 |
复杂性 |
1X |
流密码的4倍 |
IP状态 |
专有 |
公用域 |
一般来说,和块密码相比,流密码的实现更快速和更简单。
如同名称所暗示的,流密码对字节流加密和解密。为了对流中的第N个字节加密,密码从起点开始,并且朝着所需的偏移量每次前进一个字节进入该流中。
相反,以电子源码书方式运行的块密码可对数据中的任意块加密或解密,但是每次必须对完整的数据块加密/解密。典型的块大小为16个字节。
以这样的方式使用流密码,以致相同的数据不会被加密两次,即用于加密和解密的密钥必须频繁更换。例如,当用于收费视频播放时,每帧改变密钥就足够了。
最后要指的是,存在适用于公用域中的质量良好的块密码。