用于安全处理处理器的虚拟机中的机密内容的方法和装置的制作方法

文档序号:7721865阅读:116来源:国知局

专利名称::用于安全处理处理器的虚拟机中的机密内容的方法和装置的制作方法
技术领域
:本发明涉及优质(premium)音频/视频内容的处理,且更具体地涉及在处理器环境之外的内容处理,其中内容播放器应用程序在该处理器环境下运行。
背景技术
:在常规的计算环境中,内容处理经常由分立的处理器执行。例如,可以提供这种硬件处理器以解码高清内容。到目前为止,将所有必需的内容处理集成到单一芯片上已经非常困难。而且,完全实施通常需要实施者成为第三方内容的被许可接受者,以获得使用用于处理被许可内容的算法的权利以及获得用于提取加密内容的被许可人密钥。这种许可通常包括服从和强制性规定以保证许可人秘密的机密性,并包括在实施有瑕疵而导致机密信息或内容受到损害时的责任和法律救济。因此,在将再加密的视频内容以更通用的格式转送给图形或图像处理器之前,通常要依赖第二方被许可人的软件应用程序至少部分地利用中央处理器等来处理内容。不幸的是,对中央处理器的依赖呈现出一些限制。例如,对在CPU上执行的应用程序中的被许可人密钥和算法的处理不可避免地涉及到在处理期间某些点处暴露处理器内部的该机密信息。使用所述机密处理方法和秘密对内容的处理包括来往于这种可能导致安全漏洞的单元进行传送。而且,尽管使用了防篡改技术,在设计用于虚拟化的中央处理器中的执行导致了不能保证坚固的防篡改执行环境,例如来自管理程序,或比执行虚拟机更高优先级的执行环境。另外,中央处理单元对利用其通用计算机架构的某些类型的处理(例如加密等)的效率较低。额外的防篡改和再加密处理导致对CPU极度的和浪费的过度使用,和在内容重放期间导致电池寿命降低的功率浪费。因此,需要解决与现有技术有关的这些和/或其他问题。
发明内容提供一种在处理器上实施的安全虚拟机系统、方法和计算机程序产品以用于处理输出的内容。提供至少一个处理器。另外,提供在该处理器上实现的至少一个安全虚拟机,以翻译用于处理和输出第三方内容的第二方的程序。虚拟机系统将提取基本的处理器硬件,这些处理器硬件允许在多个产品上实现变形以便同样地执行相同程序。另外,为了减轻由程序导致的潜在安全泄露,并确保第二方秘密和由第二方程序管理的第三方内容的机密性,将可编程操作的范围、输入和输出变量的类型和在处理器内的程序执行有意地限制在虚拟机环境内。图1A示出根据进行解密的方法;图1B示出根据个实施例的通过利用处理器执行程序以产生密钥以用于对内容个实施例的在处理器上实施的用于处理内容以输出的安全虚拟机;图2示出根据一个实施例的通过利用处理器来产生用以产生密钥来解密内容的程序、保护该程序安全并执行该程序的系统;图3示出根据图4示出根据虚拟机的系统;图5示出根据图6示出根据图7示出根据方法;图8示出根据-图9示出根据-一个实施例的使用翻译器翻译接收到的程序和内容的方法;一个实施例的用于翻译接收到的程序和内容的包括处理器和安全一个实施例的通过利用安全虚拟机以用于标题密钥提取的方法;一个实施例的通过利用安全虚拟机以用于内容流解密的方法;一个实施例的通过利用安全虚拟机以用于内容流修补和再加密的-个实施例的用于创建程序以生成密钥来解密内容的方法;-个实施例的用于保护生成密钥来解密内容的程序安全的系统;图10示出根据一个实施例的用于创建程序以产生密钥来解密内容并保护该程序安全的方法;图11示出能够实现各种先前实施例的各种构架和/或功能的示例性系统。具体实施例方式图1A示出根据一个实施例的利用处理器执行程序以产生密钥以对内容进行解密的方法100。如所示,产生用于对内容进行解密的程序。见操作102。一旦该程序产生,就保护该程序安全。见操作104。在一个实施例中,可以通过加密来保护该程序安全。在本说明书的上下文中,程序涉及能够利用处理器执行的任何程序。在一个实施例中,程序可以包括能够产生用于对内容进行解密的密钥的程序,其中内容涉及能够被加密的任何数据。作为选择,内容可以包括专有信息。在这个例子中,可以在处理器上接收内容和产生用于对该内容进行解密的密钥的程序。参见操作106。另外,可以利用处理器执行该程序以解密该内容。参见操作108。在本说明书的上下文中,处理器涉及能够处理用于显示的数据的任何处理器。例如,在不同实施例中,处理器可以包括图形处理器和视频处理器中的至少一个。在一个实施例中,处理器可以包括至少一个在处理器上实现的用于处理输出内容的安全虚拟机。图1B示出根据一个实施例的在处理器152上实现的用以处理输出内容的安全虚拟机150。如所示,提供至少一个处理器152。另外,提供在该处理器上实现的至少一个安全虚拟机150以处理内容以输出。在操作中,程序和内容可以由处理器152作为输入接收。在一个实施例中,虚拟机150能够执行该程序以处理该内容。例如,内容可以在由虚拟机150处理前进行加密。在这个例子中,该处理可以包括对该内容进行解密。该处理还可以包括对内容进行再加密。作为选择,再加密可以在从处理器152输出该内容之前发生。作为另一选择,再加密可以在从处理器输出该内容之后发生。在一个实施例中,可以在处理器152上实现多个安全虚拟机150。在这个例子中,可以限制在虚拟机152之间分享信息。例如,可以限制正在由虚拟机152处理的信息。在一个实施例中,该信息可以包括密钥。现在将阐述关于各种可选择的结构和特征的更多说明性信息,按照用户的需要,可以利用或不利用这些结构和特征来实现前述架构。应着重注意的是,阐述下列信息仅出于说明性的目的,而不应被视为以任何方式加以限制。任何以下的特征可以选择性地以排除或不排除所描述的其他特征的方式结合在本说明中。图2示出根据一个实施例的利用处理器产生、保护并执行程序以产生用于解密内容的密钥的系统200。作为选择,本系统200可以以图1A和1B的环境和细节来实施。但是,系统200当然也可以在任何期望的环境中实施。还应当注意的是,前述的定义也适用于本说明书。在操作中,可以从媒介202中接收内容。在这个例子中,可以将内容加密。例如,可以利用密钥对内容加密。如所示,可以由被许可的播放器供应商或其他独立的软件供应商(ISV)204接收内容。此外,播放器ISV204可以接收程序206以在处理器(例如图形处理器等)250上运行以处理内容。作为选择,作为执行应用程序的结果,程序206可以由播放器ISV204从存储器228中提取。在提取该程序后,播放器204可以将程序206发送到图形处理器250。在一个实施例中,在将程序206发送给处理器250之前,可以通过播放器ISV204将程序206加密。例如,程序206可以由播放器ISV204产生并通过加密而被保护。在一个实施例中,程序206可以由应用程序(例如内容播放器等)使用,处理器250通过该应用程序来接收内容。在这个例子中,程序206可以通过应用程序而受到保护。随后基于该内容,程序206可由应用程序从存储器228中取回。在一个实施例中,程序206在由应用程序取回前可以被加密。例如,在由应用程序取回前,可以利用公共密钥对程序206加密。在这个例子中,公共密钥206可以由处理器250的制造者提供。作为另一选择,程序206可以在由应用程序取回后被加密。在这个例子中,程序206可以在运行期间由应用程序取回后被加密。另外,可以利用短期密钥对程序206加密。例如,可以利用仅存储在处理器250上的信息产生该短期密钥。在一个实施例中,可以利用在应用程序和处理器250之间交换的至少一个证书对程序206加密。—旦由处理器250接收,就利用翻译器208从该内容中获得标题密钥210。在这个例子中,翻译器208可以认为是能够运行由处理器250接收的程序206以获得标题密钥210的安全虚拟机(VM)的一部分。这样,程序206可以包括允许虚拟机处理内容、获得标题密钥210、处理内容(例如通过将内容分为音频和视频流等)和将内容再加密的信息。在一个实施例中,由虚拟机处理的内容可以在处理前被加密。在这个例子中,该处理可以包括将内容解密。该处理还可以包括将内容再加密。例如,再加密可以在内容从处理器250输出之前发生。如上所讨论的,可以从应用程序中接收程序。在这个例子中,可以保护处理器250和应用程序之间的通讯通道安全。例如,可以利用至少一个证书以保护处理器250和应用程序之间的通讯通道安全。在一个实施例中,安全虚拟机可以包括能够用于将内容分为音频和视频流的多路信号分离器212。另外,程序206可以包括信息以允许与虚拟机有关的再加密视频模块220和再加密音频模块214在将内容输出(例如显示等)之前将内容再加密。应当注意的是,对音频流和视频流的再加密可以是任选的。使用系统200,内容和用于产生加密密钥以将内容解密的程序206可以由处理器250接收,且可以执行程序206以将内容解密。另外,也可以利用处理器250将密钥解密。在一个实施例中,密钥可以包括与内容相关的至少一个内容密钥和与通过其接收内容和程序206的应用程序相关的至少一个应用程序密钥。处理器250然后可以处理内容密钥和应用程序密钥以产生标题密钥210。在这个例子中,可以利用标题密钥210以将内容解密。因此,可以防止将密钥暴露给与播放器ISV204有关的中央处理单元(CPU)。—旦将内容分开,可以将视频内容发送给视频解码模块222以解码,并作为像素存储在帧缓冲器224中,然后输出给显示器226。可以通过PCIE总线将音频内容发送给(例如与播放器ISV204有关的)解密模块216,并最终发送给音频堆栈218以输出。通过这种方式,可以实施这样一种系统,所述系统包括图形处理单元(GPU)、能够在GPU上的安全嵌入式虚拟机上执行的安全微代码(例如固件)和在播放器ISV的CPU上执行的图形驱动软件,其共同地允许软件播放器供应商安全地卸载对于媒体的处理(例如AACS处理等)。通过将密钥处理(例如在AACS中使用的处理等)、内容流解密和解析以及内容流修改进程的这些处理步骤移动到GPU上的安全嵌入式处理器,并以应用于多个内容类型的方式将这些步骤抽象化,可以对装置密钥和序列密钥、媒介和与播放器ISV有关的标题密钥提供保护。另外,优质视频内容可以以压縮的、未解码的以及未加密的形式提供。另外,播放器ISV可以从对视频基本流解密和再加密的任务中释放出来,这些任务可以构成与处理音频/视频(AV)内容(例如受AACS保护的AV流数据等)有关的CPU利用和功率消耗的大部分。另外,利用系统200,可以实施和支持多个内容类型、加密和密钥许可模型。因此,可以避免CPU中的和通过总线的未保护内容和密钥的流动。例如,可以通过硬件来保护在GPU上运行的安全进程所处的环境安全,可以保护虚拟机使用的存储器安全,并且可以使用能由播放器ISV验证的芯片专用/公用密钥对程序签名。图3示出根据一个实施例的使用翻译器翻译接收到的程序和内容的方法300。作为选择,本方法300可以在图1至2的功能和架构的环境中实施。例如,在一个实施例中,方法300可以在图2的翻译器208的详情的环境中实施。但是,该方法300当然可以在任何想要的环境中实施。再次,前述的定义可以应用于当前描述。如所示,接收字节代码图像。见操作302。在一个实施例中,字节代码图像可以由GPU从播放器ISV中接收。在这个例子中,字节代码图像可以包括与播放器ISV发送的程序相关的代码。—旦接收,则检查字节代码图像的签名。见操作304。在这个例子中,检查可以包括校验与受信任的来源有关的签名。然后可以对字节代码图像解密。见操作306。一旦解密,可以翻译字节代码。见操作308。图4示出根据一个实施例的包括处理器402和安全虚拟机404以翻译接收的程序和内容的系统400。作为选择,系统400可以在图1至3的功能和架构的环境中实施。但是,该系统400当然可以在任何想要的环境中实施。另外,前述的定义可以应用于当前描述。如所示,系统400包括具有一个或多个安全嵌入式处理器406的GPU402和以嵌入式处理器406为主机的安全虚拟机404。安全虚拟机404可以包括支持字节代码指令的已签名的安全微代码翻译器,该字节代码指令能够执行密码基元和在视频流中基元的处理和修补。使用翻译器,虚拟机404可以作为翻译器以翻译由播放器ISV提供的程序。安全虚拟机404还可以包括诸如AES或SHA-l基元等硬件密码引擎。另外,安全虚拟机404可以包括机密存储器的安全沙盒(securesandbox),该安全沙盒不能由引擎访问但能够从虚拟机404的外部(例如从CPU或GPU渲染器等)访问。另外,提供安全字节代码以在虚拟机404中执行。在这个例子中,安全字节代码是与ISV提供给GPU402的程序有关的字节代码。例如,字节代码可以由被许可的播放器ISV产生以执行被许可的内容机构的核心工作。因此,可以利用字节代码在虚拟机404中执行内容和密钥的处理,内容和密钥由GPU402接收。安全虚拟机404也可以访问芯片专用和公用密钥和由认证机构签名的允许签名的ISV代码在安全虚拟机404中执行的证书。另外,这些密钥可以允许播放器ISV安全地加密ISV秘密并保证这些秘密仅在受信任的虚拟机404中使用时是可见的。密钥还允许播放器ISV识别有能力的GPU作为受信任的端点以实施内容解码的执行。安全虚拟机404也允许实现将安全虚拟机404的密钥部分加密的能力,使得其可以在执行后能页出(pagedout)到存储器以用支持不同内容流的另一安全虚拟机404的环境来代替。另外,可以擦除安全虚拟机404的内容,使得没有秘密留下。例如,可以在处理后删除虚拟机404正在处理的信息。安全虚拟机404还可以包括在CPU上运行的图形驱动器(例如软件),这些驱动器共同地允许软件内容播放器供应商来为将安全字节代码加载到在虚拟机404中而达成协议。另外,安全虚拟机404可以包括必需的编译器和工具以支持ISV被许可人来移植标题解密、编译程序(例如以汇编或C等写成的)以及发出翻译器支持的字节代码。图5示出根据一个实施例的利用安全虚拟机的标题密钥提取的方法500。作为选择,本方法500可以在图l至4的功能和架构的环境中实施。但是,该方法500当然可以在任何想要的环境中执行。再次,前述的定义可以应用于当前描述。在操作中,播放器ISV代码或程序可以描述进程以将机密的密钥组解密。这个代码可以和其他内容密钥和策略一起使用以形成用于将内容流解密的标题密钥。在这个例子中,ISV程序可以包括针对使用所识别的运行时间变量(例如立即间接变量、本地变量、流和缓冲器指针等)的翻译器的命令以允许解密。可以使用GPU和ISV识别为值得信任的密钥来为程序签名。—旦提取出标题密钥,则可以利用安全虚拟机解密内容流。图6示出根据一个实施例的利用安全虚拟机进行内容流解密的方法600。作为选择,现有方法600可以在图l至5的功能和架构的环境中实施。但是,当然该方法600可以在任何想要的环境中执行。前述的定义也应用于当前描述。ISV代码可以描述使用标题密钥将从磁盘、网络或其他媒介复制的流的内容进行解密的过程,在标题密钥提取期间可以存储该过程。输出可以保留在虚拟机内以随后处理。—旦将内容流解密,可以利用安全虚拟机对内容流进行修补和再加密。图7示出根据一个实施例的利用安全虚拟机对内容流修补和再加密的方法700。作为选择,本方法700可以在图1至6所示的功能和架构的环境中实施。但是,该方法700当然也可以在任何想要的环境中执行。再次,前述的定义也应用于当前描述。8在操作中,ISV程序可以根据变换描述符来封装修补内容流所需的命令。内容流可以被分开和再加密以将音频返回到播放器ISV以用于额外处理或返回到片外音频解码器。作为选择,可以将内容流分开到在随后的片上视频解码器使用的视频端口。在这个例子中,内容可以以未加密的形式保留,其中内容可以秘密地保存在除了视频解码器外任何都不能访问的专门存储器区域中。在一个实施例中,由播放器ISV提供的程序可以包括用于翻译器的不连续命令以作为一个不连续操作而完成。例如,在各种实施例中,这些命令可以包括用于在表l中示出的通用操作的密码基元。表1<table>tableseeoriginaldocumentpage9</column></row><table>在一个实施例中,这些基元可以包括针对于在GPU的嵌入式控制器上执行而进行优化的预编码的例行程序。在另一实施例中,基元可以是对性能很敏感的操作进行直接加速的硬件引擎的执行进行抽象化的界面包装器(interfacewra卯er)。作为另一选择,基元可以包括在安全虚拟机中的辅助操作。表2示出了根据一个实施例的一些辅助操作。表2<table>tableseeoriginaldocumentpage9</column></row><table><table>tableseeoriginaldocumentpage10</column></row><table>在另一实施例中,程序可以表达一套复杂操作以通过使用中间累加器执行逐字节基础上重复的操作,以形成总体处理子例行程序。当这样的循环发生时,子例行程序可以通过使用由处理器微代码制成的内部操作而被优化地再编译成更有效的形式,该处理器微代码在执行时不需要再翻译。一旦声明,则子例行程序可以作为不连续步骤在宏级别上执行。表4示出了根据一个实施例编写的作为虚拟机子例行程序的RC4加密算法操作的例子。表4RC4(氺S,氺D,size,氺K,length){I=J=0D0{J=*(M0D(K,length)J=ADD(J,*(ADD(S,I)))J=MOD(J,256)SWAP(*(ADD(S,I)),*(ADD(S,J)))I=ADD(I,1)}WHILE(LESST應(1,256))10<table>tableseeoriginaldocumentpage11</column></row><table>应当注意的是,利用具有视觉处理的安全虚拟机提供了处理密钥处理和流解析的视频解码器硬件已经存在于其中(例如在GPU中,等)的安全执行环境,因此避免了在CPU中和通过总线的未受保护内容和密钥的流动。另外,安全虚拟机的使用给第三方被许可人提供了为在GPU上的被许可内容建立安全兼容解码器的能力,而不需要GPU通过发送程序给虚拟机以产生解密该内容的密钥来成为被许可的设备。图8示出根据一个实施例建立程序以产生用于将内容解密密钥的方法800。作为选择,本方法800可以在图l至7的功能和架构的环境中实施。但是,该方法800当然也可以在任何想要的环境中执行。前述的定义可以应用于当前描述。如所示,提供了解释性语言说明书。见操作802。在这个例子中,播放器ISV可以由处理器的制造商提供解释性语言说明书。例如,语言说明书可以包括用于包括翻译器的安全虚拟机的说明书。在一个实施例中,说明书可以包括用于产生程序以产生将内容解密的密钥的编程语言。然后写程序。见操作804。例如,程序可以基于翻译的语言说明书由播放器ISV以源代码写成。然后程序通过例如编译器和/或翻译器的工具运行以处理。见操作806。作为处理的结果,产生字节代码。见操作808。这个字节代码可以包括用于由虚拟机在运行期间处理的代码。然后将字节代码输入到加密签名进程。见操作810。在一个实施例中,加密签名进程可以是由处理器制造商提供的进程。在实施加密签名进程后,提供可嵌入的加密图像。然后这个加密的图像可以嵌入到ISV播放器的程序中,使得播放器可以将程序提供给GPU的虚拟机以在运行操作期间处理。图9示出根据一个实施例的使程序安全以产生密钥来将内容解密的系统900。作为选择,系统900可以在图1至8的功能和架构的环境中实施。但是,该系统900当然也可以在任何想要的环境中实施。另外,前述的定义可以应用于当前描述。在操作中,可以利用系统900以实施用来保护产生密钥将内容解密的程序安全的方法,即如图IO所示的方法IOOO。如图IO所示,应用程序产生一对用于签名的密钥PA和PA。另夕卜,GPU产生一对用于签名的密钥Pe和pe和用于加密的密钥Ps。然后GPU可以通过使用GPU的签名秘密密钥对应用程序的签名公共密钥进行签名,导致可以将证书发送给应用程序(例如CERTe等)。然后,应用程序可以将虚拟机程序加密。可以对程序签名和编译。在运行时,应用程序可以建立短期密钥秘密(例如KSK等)。GPU也可以产生短期密钥秘密(例如K'm等)。然后,将加密的程序和密钥从应用程序传送给GPU。然后翻译器解密并验证应用程序的证书并执行虚拟机程序。使用这个技术,可以建立一对私用密钥和公共密钥用于由GPU提供者签名。私用密钥可以放置在内部签名服务器上。公共密钥可以公布在API说明书并嵌入到安全翻译器微代码中。然后,可以将硬件秘密或从硬件秘密获得的值用作芯片秘密密钥,且可以获得相应的公共密钥用于加密。应用程序提供者可以私下建立他独有的用于签名的一对私用密钥和公共密钥。应用程序提供者可以通过电子邮件或文件传输协议将公共密钥发送给GPU提供者。GPU提供者可以通过使用他们的签名秘密密钥来对应用程序提供者的签名公共密钥进行签名。结果签名是由GPU提供者发出的应用程序提供者的签名公共密钥的证书。该证书可以发送回应用程序提供者。应用程序提供者可以私下地写一些翻译器程序和高度机密的许可秘密(例如,诸如播放器/装置密钥),并将其编译为二进制的。应用程序提供者可以在GPU提供者的芯片公共密钥下私下地将该二进制程序加密。应用程序提供者可以在应用程序提供者的签名秘密密钥下私下地将该加密的二进制程序签名。加密的程序和签名以及应用程序提供者的证书可以静态地嵌入到应用程序提供者的可执行播放器中。在运行时,应用程序提供者可以通过使用在GPU中的片上随机数字产生器(RNG)建立短期的会话密钥秘密,并使用该密钥秘密来额外地将已经静态地加密的程序再加密为运行时间的加密有效负载。在运行时,GPU上的翻译器可以装载双倍加密的有效负载、签名和证书。翻译器可以使用GPU提供者的签名公共密钥以验证应用程序提供者的证书。翻译器可以使用应用程序提供者的签名公共密钥以验证加密的程序。翻译器可以通过使用在协商期间在GPU内建立的短期会话密钥秘密来解密运行时间的加密有效负载,并由此提取静态加密的程序(仍处于加密的形式)。然后翻译器可以从硬件秘密中获取GPU提供者的芯片秘密密钥并解密包括已翻译的程序的秘密和内容/播放器的秘密的静态加密的程序。然后翻译器可以安全地执行该程序并解除参照在GPU中的安全虚拟机内的高度机密内容秘密。由于在建立短期会话密钥中使用的秘密可以从随机数产生器中获得并在GPU中安全地保持,因此甚至对知晓GPU提供者的芯片秘密和其他签名密钥的人来说都不太可能解密有效负载。倘若ISV识别GPU的签名和执行ISV代码的翻译器,可以假定ISV相信翻译器和安全虚拟机环境,使得ISV相信其不会泄露机密信息。另外,倘若在虚拟机上执行的代码由ISV写成并在执行前签名/验证,ISV可以建立他们确信没有内容或机密秘密被泄露的环境,甚至是对于GPU提供者也没有泄露。为了进一步降低在有效负载加密过程中使用的暴露秘密的风险,额外的被许可人秘密可以由诸如ISV被许可人、产品被许可人或系统厂商的第二或第三方直接熔合到GPU中。为了进一步保证该秘密不被获知,甚至是对于GPU提供者也无法获知,编程过程允许在GPU退出GPU提供者的制造和库存过程之后的任何时间点来设置秘密。GPU厂商提供入口以允许秘密独立编程进入GPU中,例如在系统厂商的工厂组装期间在GPU放置在板上后。例如,在一个实施例中,秘密可以包含在一次性的芯片熔丝中,其能通过与被许可人秘密的值位匹配的位形式将较高电压施加在GPU封装上的特定管脚而熔断。在一个实施例中,秘密通过在只写寄存器中应用所述熔丝来保持机密,并只能由密码和GPU的其他内部密码进程用作密钥或者与其他密钥联合,其中所述只写寄存器不能从GPU读出。在一个实施例中,被许可人秘密可以用作AES密码的密钥值,其被设计为即使在纯文本输入和密码文本输出是外部可见的情况下,也不允许密钥值的恢复。另外,对熔丝秘密的编程限于一次性设置,以保护不受随后的将秘密再编程为公知以损害该秘密的改变或攻击手段的影响。在一个实施例中,用来启用被刚刚编程为由GPU使用的秘密的熔丝,其本身在对被许可人秘密编程结束时熔断,且所述熔丝一旦熔断就不允许对随后被许可人秘密熔丝的编程。被许可人秘密可以间接地与其他(不可读)GPU秘密结合以形成在建立和提取有效负载中使用的加密和解密密钥。倘若被许可人秘密可以独立地编程,且GPU提供者不知道这个秘密,并且倘若该秘密仅仅间接地在安全虚拟机中由GPU硬件在运行时联合,那么第二方的机密程序、算法和密钥则针对具有机密芯片秘密的详细知识的人而被进一步加强。因此,根据一个实施例,可以提供一种装置,其中该装置包括至少一个处理器、实施在该处理器上以处理第二方程序的至少一个第一方的安全虚拟机和至少一个用于处理第三方的内容以用于输出的程序。在这个例子中,第一方可以包括提供安全虚拟机和/或处理器的任何实体或个人,第二方可以包括许可软件的任何实体或个人(例如独立软件厂商被许可人等),以及第三方可以包括许可内容的任何实体或个人。当然,在各种实施例中,第一、第二和第三方可以是相同或不同方并可以包括任何个人或实体。使用该装置,剩余的机密程序信息、正在处理的信息和由至少一个虚拟机的每个建立的短期变量可以在处理后被删除。在一个实施例中,多个安全虚拟机可以在单个环境中在处理器上实施。在这个例子中,在多个安全虚拟机之间分享信息可以是受限制的。例如,可以限制由多个安全虚拟机正在处理的信息的存储和短期信息的类型。信息也可以包括在受保护内容解密中使用的密钥和中间密码值。在另一实施例中,可以提供至少一个虚拟机用于执行客户提供的程序(例如第二方的程序等)以处理受保护的内容。在这个例子中,客户提供的程序可以由第二方加密以确保由客户提供的程序在处理第三方的内容中使用的算法详情、秘密和密钥的机密性。客户提供的程序可以另外由第二方签名以允许对客户提供的程序的完整性的验证,并可以包括允许对客户提供的程序来源的真实性进行验证的证书。在一个实施例中,第三方的内容可以在由至少一个虚拟机处理之前由第三方单独地加密。在这个例子中,客户提供的程序、机密的算法和秘密可以在允许至少一个虚拟机内执行之前通过验证包括的签名和证书来解密和鉴别。作为另一选择,处理客户提供的程序可以包括对第三方内容的解密。该处理还可以包括对第三方内容或第三方内容中的流的一个或多个部分的至少之一进行再加密。在一个例子中,再加密可以发生在第三方的内容从至少一个虚拟机中退出之前。在另一例子中,再加密可以发生在第三方的内容从处理器输出之后。在一个实施例中,客户提供的程序可以从应用程序接收,且该客户提供的程序可以在处理器和应用程序之间建立安全通讯通道。在这个例子中,处理器和应用程序之间的通讯通道可以通过利用从处理器获取的密码值和至少一个证书来使其安全。在另一实施例中,至少一个虚拟机可以作为由应用程序提供的受保护的内容处理程序的翻译器。另外,处理器可以包括至少一个安全处理器并可以配置为将处理的内容提供给图形处理器、视频处理器或音频处理器的至少一个。在又一实施例中,处理器可以包括用于从数据包中打开的内容密钥和从在程序执行期间获取的中间密码值的安全机密存储装置。在任何例子中,在处理器的至少一个虚拟机中由第二方的程序对第三方内容进行的处理可以不需要该处理器包括被许可的秘密,也不需要具有先前已实施的被许可的算法。应当注意的是,至少一个虚拟机的设计和在至少一个虚拟机中由第二方的程序对第三方内容的处理可以由第二方针对许可符合性和鲁棒性规定进行审查,由此允许确定第三方内容的适宜性。另外,通过使用该装置,可以在处理器(例如由第一方制造的等)接收第三方的内容和用于产生机密密钥以对第三方内容解密的第二方的程序,且通过利用处理器以将第三方的内容解密,可以执行第二方的程序。在这个例子中,对第三方内容的解密可以需要提供给第二方的机密算法和密钥信息的使用。作为选择,用于解密第三方内容的机密密钥和算法可以由第二方再加密。机密密钥也可以利用处理器解密。在一个实施例中,机密运行时间值、中间密码机值和从第二方的程序产生的机密密钥可以存储在机密只写处理器寄存器中和/或变址的缓冲器中,寄存器和缓冲器配置为只间接地由处理器操作解除参照并配置为不可读。在这个例子中,只写处理器寄存器和被变址的缓冲器可以在第二方程序终止后擦除,由此确保随后的虚拟机会话不访问剩余的秘密。作为选择,机密密钥可以包括与第三方的内容有关的至少一个内容密钥和与第二方的应用程序有关的至少一个应用程序密钥,其中经由第二方的应用程序,在处理器接收第三方的内容和第二方的程序。在一个实施例中,第二方的应用程序可以包括内容播放器。另外,处理器可以处理至少一个第三方的内容密钥和至少一个第二方的应用程序密钥以产生至少一个标题密钥。在这个例子中,可以利用标题密钥以解密第三方的内容。在一个实施例中,通过第二方的应用程序可以使用第二方的程序,其中经由第二方的应用程序,接收第三方的内容和第二方的程序。在这个例子中,第二方的程序可以应用于解密第三方的内容并可以基于第三方的内容由第二方的应用程序得到。在一些例子中,第二方的程序和内容密钥可以在由第二方的应用程序取得之前被加密。在这些例子中,通过利用公共密钥在由第二方的应用程序取得之前可以将第二方的程序和内容密钥加密。作为选择,用于加密第二方程序和内容密钥的一个或多个密钥可以由处理器的制造者(例如第一方等)提供。作为另一选择,在结合到与第二方的应用程序有关的分配二进制中的包中之前可以将第二方的程序加密。在一个实施例中,第二方的应用程序在传送给处理器之前可以进一步将包括第二14方的程序和机密密钥的数据包再加密。应当注意的是,在一个实施例中,通过在加密的程序数据包中包含机密算法和机密密钥可以防止将该机密算法和机密密钥暴露给中央处理器,该加密的程序数据包直到在处理器中的虚拟机中执行时才解密。在这个例子中,通过使用短期值加密该数据包,可以进一步防止机密算法和机密密钥秘密的潜在暴露的可能性,该短期值由在第二方的应用程序和第二方的程序在其中解密的处理器之间的公共密钥交换而创建。另外,通过使用置于处理器中的且不用暴露给处理器厂商来使用的第二方许可秘密或第三方被许可人秘密,通过对第二方程序加密,可以防止机密算法和机密密钥的暴露。在这个例子中,一旦通过使用一次编程机制(例如计算机代码等)编程到处理器中,可以保护第二方许可秘密和第三方被许可人秘密的编程免于修改。在又一实施例中,通过使用该装置,用于加密和处理第三方内容的数据包可以由第二方产生,其中该数据包包括能够通过利用处理器执行的程序。另外,通过使用加密可以使程序安全以确保和该程序有关的秘密的机密性。另外,可以将该程序签名以确保该程序来源的真实性。而且,可以验证该程序来源的证书和使该程序安全的实体。该处理器可以包括图形处理器、视频处理器和/或音频处理器等。另外,该处理器可以包括安全处理器环境,其能够安全地对第二方应用程序提供的数据包、程序、机密算法、内容密钥和所有权秘密进行解密。在一些例子中,第三方内容对第三方是有重大价值的,使得必须保护防止截获和复制。在各种实施例中,该数据包可以包括需要用于解密和处理第三方内容的程序、机密算法、内容密钥和所有权秘密。另外,作为选择,该数据包可以通过加密来使其安全。在一个实施例中,程序、机密算法、内容密钥和所有权秘密可以由第二方的内容被许可人播放器应用程序提供,通过该应用程序,处理器接收第三方内容。在这个例子中,由第二方应用程序提供者可以使包括程序、机密算法、内容密钥和所有权秘密的数据包安全,并嵌入到应用程序中。在一个实施例中,应用程序可以包括至少一个播放器和数据包,或至少一个其他数据包,以处理并输出用户选择的内容。另外,可以基于第三方内容的类型和格式从应用程序中得到用于解密和处理第三方内容的数据包。另外,数据包、程序、机密算法、内容密钥和所有权秘密可以在由该应用程序得到之前加密。在这个例子中,在嵌入到应用程序中之前通过利用一个或多个公共和私用密钥签名,可以将数据包、程序、机密算法、内容密钥和所有权秘密加密。公共密钥和证书可以在第二方应用程序厂商和处理器厂商之间交换。作为选择,可以利用嵌入到处理器中的被许可人秘密奖程序加密。在一个实施例中,数据包可以在由应用程序提取之后在运行时间加密。在这里例子中,可以通过利用使用伪随机数字产生器产生的短期密钥和仅存储在处理器上的秘密来对程序加密。另外,可以通过利用使用伪随机数字产生器产生的短期密钥和仅存储在应用程序上的信息来对程序加密。作为选择,可以通过利用在应用程序和处理器厂商之间交换的至少一个证书的至少一个密钥对程序加密。在一个实施例中,可以通过利用在应用程序和处理器之间交换的至少一个证书的至少一个密钥对程序签名。在这个例子中,被许可人秘密可以嵌入到处理器中,不被处理器厂商所知,其中被许可人秘密不能由处理器厂商从处理器中推断出和/或回读出。在一些例子中,被许可人秘密只可以写一次并在编程后不能够改变或修改,以确保攻击者不能通过改变存储在处理器上的秘密来取得或泄漏秘密。图11示出可以实施各种先前所述实施例的各种构架和/或功能的示例性系统1100。如所示,提供了系统1100,其包括连接到通讯总线1102的至少一个主机处理器1101。该系统1100还包括主存储器1104。控制逻辑(软件)和数据存储在主存储器1104中,该主存储器1104可采取随机存取存储器(RAM)的形式。系统1100还包括图形处理器1106及显示器1108,即电脑监视器。在一个实施例中,图形处理器1106可以包括多个着色器模块、光栅化模块等。每个前述模块甚至可以位于单个半导体平台上以形成图形处理单元(GPU)。在当前描述中,单个半导体平台可以涉及单独整体式半导体——基于集成的电路或芯片。应该注意,术语单个半导体平台还可涉及模拟片上操作的增强连接性的多芯片模块,且相对于使用传统的中央处理器(CPU)和总线实施方式有显著改进。当然,根据用户的需要,各种模块也可以单独放置或者放置在每个用户期望的半导体平台的各种组合中。系统1100还包括辅助存储装置1110。辅助存储装置1110包括,例如,代表软盘驱动器、磁带驱动器、光碟驱动器等的例如硬盘驱动器和/或可移除存储装置驱动器。可移除存储装置驱动器以公知的方式从可移除存储单元读取和/或向可移除存储单元写入。计算机程序或计算机控制逻辑算法可存储在主存储器1104和/或辅助储存装置1110中。在执行时,这种计算机程序使系统1100能够实现各种功能。存储器1104、存储装置1110和/或其它任何存储装置都是计算机可读介质的可能示例。在一个实施例中,各先前附图中的构架和/或功能可以在主机处理器1101、图形处理器1106、能够实现主机处理器1101和图形处理器1106的至少一部分能力的集成电路(未示出)、芯片组(即设计用于执行相关功能的单元来工作及作为单元出售的集成电路组等),和/或任何其它用于所述事项的集成电路的环境中实施。此外,各种先前附图中的架构和/或功能可在下述的环境中实施通用计算机系统、电路板系统、专用于娱乐目的的游戏控制台系统、专用系统和/或其它任何所需的系统。例如,系统1100可采取台式计算机、膝上型计算机和/或任何其它类型的逻辑形式。另外,系统1100可采取各种其它设备的形式,包括但不限于个人数字助理(PDA)装置、移动电话装置、电视等。而且,尽管未显示,出于通讯目的,系统1100可以耦合到网络(例如,电信网络、局域网络(LAN)、无线网络、诸如因特网等的广域网络(WAN)、点对点网络、电缆网络等)。尽管上文已描述各种实施例,但应理解所述实施例仅以实例的方式而非限制的方式示出。因此,优选实施例的广度和范围不应受限于任何上文描述的示例性实施例,而应仅根据以下权利要求书及其等同内容来限定。权利要求一种装置,包括至少一个处理器;第一方的至少一个安全虚拟机,所述安全虚拟机实施在所述处理器上以处理第二方的程序;以及包含在计算机可读介质上的至少一个程序,所述程序用于处理第三方的内容以输出。2.根据权利要求1所述的装置,其中由所述至少一个虚拟机中的每个创建的剩余机密程序信息、正在处理的信息和短期变量在处理后被删除。3.根据权利要求1所述的装置,其中多个安全虚拟机在单独环境之内的所述处理器上实施。4.根据权利要求3所述的装置,其中在所述多个安全虚拟机之间分享信息是受限制的。5.根据权利要求4所述的装置,其中短期信息的类型和正在由所述多个安全虚拟机处理的信息的存储是受限制的。6.根据权利要求4所述的装置,其中所述信息包括在受保护内容的解密中使用的密钥和中间密码值。7.根据权利要求1所述的装置,其中提供所述至少一个虚拟机以执行客户提供的程序用于处理受保护内容。8.根据权利要求7所述的装置,其中所述客户提供的程序由所述第二方加密,以保证在处理所述第三方的所述内容中由所述客户提供的程序使用的算法详情、秘密和密钥的机密性。9.根据权利要求8所述的装置,其中所述客户提供的程序另外由所述第二方签名以允许对所述客户提供的程序的完整性进行验证,并包括允许对所述客户提供的程序来源的真实性进行验证的证书。10.根据权利要求7所述的装置,其中在由所述至少一个虚拟机处理之前,所述第三方的所述内容已经由所述第三方单独地加密。11.根据权利要求io所述的装置,其中在允许在所述至少一个虚拟机中执行之前,所述客户提供的程序、机密算法和所述秘密通过验证所包括的签名和所述证书而解密并鉴别。12.根据权利要求10所述的装置,其中处理所述客户提供的程序包括将所述第三方的所述内容解密。13.根据权利要求12所述的装置,其中所述处理还包括对所述第三方的所述内容中的流或所述第三方的所述内容的一个或多个部分的其中至少一个进行再加密。14.根据权利要求13所述的装置,其中在所述第三方的所述内容从所述至少一个虚拟机退出之前,发生所述再加密。15.根据权利要求13所述的装置,其中在所述第三方的所述内容从所述处理器输出后,发生所述再加密。16.根据权利要求7所述的装置,其中从应用程序中接收所述客户提供的程序,且所述客户提供的程序在所述处理器和所述应用程序之间建立安全的通讯通道。17.根据权利要求16所述的装置,其中通过利用来源于所述处理器的密码值和至少一个证书,保证所述处理器和所述应用程序之间的所述通讯通道安全。18.根据权利要求1所述的装置,其中所述至少一个虚拟机作为由应用程序提供的受保护的内容处理程序的翻译器。19.根据权利要求1所述的装置,其中所述处理器包括至少一个安全处理器,并配置为将处理的内容提供给图形处理器、视频处理器或音频处理器中的至少一个。20.根据权利要求1所述的装置,其中所述处理器包括用于从数据包打开的内容密钥和从在程序执行期间获取的中间密码值的安全机密存储装置。21.根据权利要求1所述的装置,其中在所述处理器的所述至少一个虚拟机中由所述第二方的所述程序对所述第三方的所述内容进行的处理不需要所述处理器包括被许可的秘密,也不需要具有先前已实施的被许可的算法。22.根据权利要求1所述的装置,其中所述至少一个虚拟机的设计和在所述至少一个虚拟机中由所述第二方的所述程序对所述第三方的所述内容进行的所述处理由所述第二方针对许可符合性和鲁棒性规则进行审查,由此允许确定所述第三方的所述内容的适宜性。全文摘要提供一种安全虚拟机系统、方法和在处理器上实施的计算机程序产品用于处理第三方的内容以输出。提供至少一个处理器。另外,提供在该处理器上实施的至少一个安全虚拟机以翻译处理和输出第三方内容的第二方的程序。虚拟机系统将允许遍布产品的实施变量相同地执行同样程序的基础处理器硬件抽象化。另外,为了缓解潜在的由程序产生的安全泄露,并确保第二方的秘密和由第二方的程序管理的第三方的内容的机密性,可在虚拟机环境内,审慎地限制编程操作的范围、输入和输出变量的类型和在处理器内程序的执行。文档编号H04N5/913GK101751529SQ200910249609公开日2010年6月23日申请日期2009年12月8日优先权日2008年12月9日发明者戴维·怀亚特,杰弗里·斯科特·塔克,石海霞申请人:辉达公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1