用于受信数据处理的方法和系统的制作方法

文档序号:7653302阅读:174来源:国知局
专利名称:用于受信数据处理的方法和系统的制作方法
技术领域
本发明涉及用于受信数据处理(trusted data processing)的安全中央处理单元,更具体地说,涉及一种用于处理加密指令和数据的安全中央处理单元。
背景技术
终端用户正越来越多的通过数据网络将内容和应用程序直接下载到位于住宅和办公室中的电脑上。一种用于接收内容和程序的常用方法是使用电视机机顶盒。这些电视机机顶盒扮演着家庭娱乐中心的角色,提供音频盒视频内容、计算机游戏、软件升级和其他应用。由于所提供的内容和软件很有价值,机顶盒已经成为黑客眼中的重要目标。
在应对早期的黑客威胁时,内容和软件在从内容/应用服务器到机顶盒的传输过程中,由提供商对其进行加密。然而,这些技术只能保护服务器和机顶盒之间的数据路径。在接收之后,内容和软件以明文方式存储在位于机顶盒中央处理单元(CPU)外部的存储器中。在面对狡猾的黑客时,以明文方式存储在可读存储器中的内容和/或软件是极易受到攻击的。一旦读取到内容或者获得了主要的代码,恶意黑客便可绕过访问控制机制,接收信道和/或内容,而无需付费,并有可能开发蠕虫、病毒或其他恶意代码来中断提供给合法用户的服务。
因此,需要一种系统和方法来保护存储在终端设备上的内容和软件,并还需要一种安全CPU架构来为各种应用高效地处理加密后的软件程序。

发明内容
根据本发明的一个方面,提供了一种在具有非对称公共和私有密钥对的处理器中进行受信处理的方法,包括
从第一存储器的明文数据区中获取经加密的对称密钥;使用非对称解密算法解密所述经加密的对称密钥,其中所述非对称解密算法将所述处理器的非对称私有密钥用作解密密钥;从所述第一存储器的加密数据区中获取经加密的指令;使用对称解密算法解密所述经加密的指令,其中所述对称解密算法将所述被解密的对称密钥用作解密密钥。
优选地,所述方法还包括将所述处理器的所述非对称私有密钥存储在位于所述处理器内的第二存储器中。
优选地,所述方法还包括将所述被解密的对称密钥存储在位于所述处理器内的第二存储器中。
优选地,所述方法还包括将所述处理器的所述非对称私有密钥存储在一次性可编程存储器中。
优选地,所述方法还包括通过通信接口接收对所述非对称解密算法的更新;将更新后的所述非对称解密算法存储在位于所述处理器内的第二存储器中。
优选地,所述方法还包括通过通信接口接收对所述对称解密算法的更新;将更新后的所述对称解密算法存储在位于所述处理器内的第二存储器中。
优选地,所述方法还包括在处理所述被解密的指令的过程中生成中间数据;加密所述中间数据;将加密后的所述中间数据存储在所述第一存储器中。
优选地,所述方法还包括生成随机数。
优选地,加密所述中间数据的步骤还包括将所述中间数据与生成的随机数进行异或运算。
优选地,加密所述中间数据的步骤还包括使用对称加密算法加密所述中间数据,其中所述对称加密算法将所述被解密的对称密钥用作加密密钥。
优选地,所述方法还包括在处理所述被解密的指令的过程中获取中间数据;解密所述中间数据。
优选地,所述方法还包括生成随机数。
优选地,解密所述中间数据的步骤还包括将所述被解密的中间数据与所述生成的随机数进行异或运算。
优选地,解密所述中间数据的步骤还包括使用所述对称解密算法解密所述中间数据,其中所述对称解密算法将所述被解密的对称密钥用作解密密钥。
根据本发明的一个方面,提供了一种用于受信数据处理的系统,包括第一存储器,所述第一存储器包含加密数据区和明文数据区;中央处理单元,所述中央处理单元包括非易失性存储器,其中包括有所述中央处理单元的非对称公共和私有密钥对以及被解密的对称密钥;非对称加密引擎,用于将所述中央处理单元的私有密钥用作解密密钥,来对从所述第一存储器中获取的经加密的对称密钥进行解密;对称加密引擎,用于使用所述被解密的对称密钥对从所述第一存储器的所述加密数据区内的地址中获取的经加密的指令进行解密。
优选地,所述加密数据区包括用户可定义的地址范围。
优选地,所述中央处理单元还包括随机数生成器。
优选地,所述非易失性存储器为一次性可编程存储器。
优选地,所述非对称加密引擎由硬件实现。
优选地,所述非对称加密引擎由软件实现。
优选地,所述对称加密引擎由硬件实现。
优选地,所述对称加密引擎由软件实现。
优选地,所述系统还包括数字签名引擎,用于使用服务器的非对称公共密钥对来自所述服务器的消息中附加的数字签名进行验证。
根据本发明的一个方面,提供了一种在具有非对称公共和私有密钥对的处理器中进行受信处理的方法,包括从服务器接收经加密的程序和经加密的对称密钥,其中所述经加密的程序是使用所述对称密钥进行加密的,所述对称密钥是使用所述处理器的非对称私有密钥进行加密的;将所述经加密的程序存储在存储器的加密数据区中;将所述经加密的对称密钥存储在所述存储器的明文数据区中;使用所述处理器的私有密钥解密所述经加密的对称密钥;当访问到所述存储器的加密数据区内的地址时,使用所述被解密的对称密钥调用所述处理器中的对称解密算法。
优选地,所述方法还包括接收包含有所述经加密的程序的消息中的数字签名;使用所述服务器的公共密钥来验证所述数字签名。


图1是典型的处理系统的示意图;图2是典型的取指周期(fetch cycle)内的数据流示意图;图3是典型的间接周期(indirect cycle)中的数据流示意图;图4是典型的中断周期(interrupt cycle)中的数据流示意图;图5是依据本发明实施例的用于受信数据处理的安全系统的结构示意图;图6是依据本发明实施例的安全系统500的工作环境的示意图;
图7是依据本发明实施例的用于受信数据处理的方法的流程图;图8是依据本发明实施例从存储器中获取安全指令的方法的流程图;图9A为将中间数据写入存储器的方法的流程图;图9B为从存储器中获取中间数据的方法的流程图;图10是依据本发明实施例的中断处理方法的流程图;图11是依据本发明实施例的取指周期内数据流的示意图;图12是依据本发明实施例的间接周期内数据流的示意图;图13是依据本发明实施例的中断周期内数据流的示意图。
具体实施例方式
下面将结合附图及实施例对本发明作进一步说明,附图中相似的标号表示相同或功能相似的部件。此外,图中标号最左边的一位数字表示该标号第一次出现的附图序号。
1、概要1.1CPU结构图1是典型的处理系统100的结构示意图。系统100包括中央处理单元(CPU)110、存储器170和总线结构160。存储器170可与CPU 110位于同一芯片上,也可安装在包含CPU 110的芯片的外部。
在更高一层上,典型的CPU如CPU 110执行下列任务从存储器中读取指令(取指令);对指令解码确定需要进行何种动作(解释指令);在执行指令过程中从存储器或I/O模块中读取数据(取数据);对数据执行某种算法或逻辑操作(处理数据);将数据写入存储器或I/O模块中(写数据)。为执行这些任务,CPU 110需要临时存储一些数据。此外,CPU 110必须记住最近一条指令的位置,以便获知在何处读取下一指令。在执行指令的过程,CPU 110必须临时存储指令和数据。
图1中展示了CPU 110的简化结构。CPU 110包括算法和逻辑单元(ALU)120、内部CPU总线130、一个或多个寄存器140、控制单元150和内部CPU存储器155。由于ALU 120只对内部CPU存储器中的数据进行操作,因此使用内部CPU总线130在一个或多个寄存器140和ALU 120之间传送数据。除其他部件外,ALU 120可包括移位器122、累加器124、状态标志126和算法一逻辑电路128。
CPU 110在工作过程中会使用多种寄存器。例如,程序计数器142中包含将要读取的指令的地址。通常,程序计数器142由CPU 110在每次取指令后进行更新,以便使其总是指向将要执行的下一条指令。指令寄存器148包含最近读取的指令。读取的指令将加载到指令寄存器148中,在这里对操作码和操作数描述符进行分析。存储器地址寄存器146包含存储器中位置的地址。存储器缓冲寄存器144包含将要写入存储器的数据的字和最近读取的字。通常,使用存储器地址寄存器146和存储器缓冲寄存器144来与存储器170交换数据。本领域的技术人员应当明白,寄存器组织是由处理器决定的,因此,不同的处理器还可包含不同的或其他的寄存器。
CPU 110通过总线结构160与存储器170通信。总线结构160可包含地址总线162、数据总线164和控制总线166。
存储器170中存储有CPU 110将要执行的程序的指令和数据。数据通常视为CPU 110在其上执行计算的数据。指令通常视为将要解释为代码以便生成控制信号的数据。
1.2指令周期本领域的技术人员应当明白,指令周期内事件的准确顺序由CPU的设计决定。如图2所示,典型的CPU 110使用了存储器地址寄存器146、存储器缓冲寄存器144、程序计数器142和指令寄存器148。
在取指周期内,将从存储器170中读取指令。图2是典型的取指周期内数据流的示意图。程序计数器142包含有将要读取的下一指令的地址。该地址将被装入存储器地址寄存器146,并放到地址总线162上。控制单元请求读取存储器。读取的结果将放到数据总线164上,并复制到存储器缓冲寄存器144中,然后装入指令寄存器148中。同时,程序计数器142将增1,为下一次取指操作做准备。
在取指周期结束之后,控制单元150检查指令寄存器148中的内容,判断其中是否包含有使用间接寻址的操作数描述符。若是,则由CPU执行间接周期(indirect cycle)。图3描述了典型的间接周期中的数据流。
在间接周期过程中,存储器缓冲寄存器144中包含地址引用的最右边的N位将被发往存储器地址寄存器146。控制单元150随后请求读取存储器,以将操作数的期望地址装入存储器缓冲寄存器144中。
取指周期和间接周期很简单并且可以预测。指令周期可以采用多种形式,这是由指令寄存器中的机器指令的类型决定的。在这个周期包括在寄存器之间传送数据、从存储器端口I/O进行读写操作和/或ALU 120的激活。
与取指周期和间接周期一样,中断周期也是很简单并且可以预测的。图4描述了典型的中断周期中的数据流。在中断周期中,程序计数器142的当前内容必须进行保存,以便CPU 110能够在中断后恢复正常的活动。因此,程序计数器142中的内容将被传送到存储器缓冲寄存器144中,以便写入到存储器中。为此目的而保留的特定存储器位置将从控制单元150加载到存储器地址寄存器146中。例如,该存储器位置可能是栈指针。在程序计数器142中加载中断程序的地址。这样一来,便可通过读取对应的指令来开始下一周期。
2、受信数据处理架构图5是依据本发明实施例的用于守信数据处理的安全系统500的结构示意图。图5展示的安全系统在CPU中提供有用的信任和安全功能,而成本仍然低于现有加密协处理器。此外,通过为多种应用处理加密软件程序,图5中的架构还可提供一种机制来保护平台中的软件环境。
系统500包括CPU 510、存储器570和总线结构560。总线结构560包括地址总线562、数据总线564和控制总线566。总线结构560用于在CPU 510和存储器570之间传送指令和/或数据。本领域的技术人员应当明白,在本发明中还可使用其他架构来在CPU 510和存储器570之间传送指令和/或数据。存储器570可与CPU 510位于同一芯片上,也可安装在包含CPU 510的芯片的外部。
存储器570包括加密数据区572和明文数据区574。加密数据区572是这样一个存储器地址范围,当CPU 510访问这一范围内的地址时,将导致调用解密处理。一个实施例中,加密数据区572存储有一个或多个程序的指令,这些指令已使用对称密钥算法进行了加密。明文数据区574也是一个存储器地址范围,但当CPU 510访问这一范围内的地址时将不会调用解密处理。一个实施例中,与存储在加密数据区572中的程序指令相关联的、由CPU 510的公共密钥进行了加密的对称密钥,存储在明文数据区574中。在一个实施例中,在经加密的对称密钥被解密并存储到非易失性存储器(NVM)582中之后,该经加密的对称密钥将从存储器570中擦除。若在加密数据区572中存储了多个程序,则明文数据区574中将存储有多个经加密的对称密钥,一个密钥对应一个程序。
图5中展示了CPU 510的简化结构示意图。CPU 510包括ALU 520、内部CPU总线530、一个或多个寄存器540以及控制单元550。ALU 520、内部CPU总线530和寄存器540已经在上文中结合图1进行了讨论。
CPU 510还包括有密钥保护单元580、非易失性存储器582、非对称加密引擎584、对称加密引擎586和可选的随机数生成器588。非易失性存储器582中存储有CPU 510的非对称公共/私有密钥对、一个或多个被解密的对称密钥,可选的,还可存储有由随机数生成器588生成的随机数。非易失性存储器582可以是一次性可编程(OTP)存储器阵列。本领域的技术人员应当明白,本发明还可使用其他结构的非易失性存储器582。
每个CPU 510都具有非对称密钥(公共/私有)密钥对。在一个实施例中,该非对称密钥对对于CPU而言是唯一的。CPU的非对称密钥对可以在制造过程中生成,或者由用户或系统集成商输入。该非对称密钥对中的私有密钥是CPU 510的根标识。因此,私有密钥必须以高度安全的方式来操作,这一点非常关键。在CPU 510中,只有密钥保护单元580能够读取私有密钥。此外,私有密钥永远不会离开CPU 510的安全边界。也就是说,私有密钥无法由用户或者CPU 510外部的组件读取。相比之下,公共密钥则可由用户或者外部组件通过控制总线566从CPU中读出。
非对称加密引擎584提供CPU 510所需的非对称加密和解密处理。例如,非对称加密引擎584将CPU 510的私有密钥用作解密密钥来解密明文数据区574中经加密的对称密钥。非对称加密引擎584可使用RSA加密算法。本领域的技术人员应当明白,非对称加密引擎584中还可使用其他非对称加密算法。在一个实施例中,还可对非对称加密引擎584所使用的非对称加密算法进行更新(例如升级或者下载)或者替换。
非对称公共/私有密钥对的格式与非对称加密引擎所使用的加密算法兼容。例如,若使用的是RSA加密算法,则CPU 510的根密钥将是一个2048位(或者等效的格式)的RSA私有密钥。非对称加密引擎584可设置在密钥保护单元580中。或者,非对称加密引擎584也可独立于密钥保护单元580。
对称加密引擎586提供CPU 510所需的对称加密和解密处理。例如,对称加密引擎586使用由非对称加密引擎584解密的对称密钥作为解密密钥来解密存储在加密数据区572中的指令/数据。本领域的技术人员应当明白,在本发明中还可使用其他合适的对称加密算法,包括但不限于DES、3DES或者高级加密标准(AES)。在一个实施例中,还可对称加密引擎586所使用的对称加密算法进行更新(例如升级或者下载)或者替换。
CPU 510还可包含有随机数生成器588。随机数生成器588具有生成加密处理过程中使用的随机数的功能。在一个实施例中,随机数生成器588在上电后生成随机数。在断电之前,生成的随机数一直存储在非易失性存储器582中。在断电后,存储的随机数将被擦除。再次上电后,将生成一个新的随机数。本领域的技术人员应当明白,本发明还可使用其他技术来生成加密过程中使用的随机数。
CPU 510还可包含有存储器范围检查器,其中存储有加密数据区572和明文数据区574的存储器边界地址。在一个实施例中,存储器范围检查器包含在密钥保护单元580中。系统500的用户通过设置每个区域的存储器范围来对受信数据处理过程进行配置。例如,若要禁用加密/解密功能,则用户可不为加密数据区572分配存储器地址。
图6是依据本发明实施例的安全系统500的工作环境600的示意图。工作环境包括一个或多个设备602a-n、通信网络604和内容/应用服务器690。在一个实施例中,设备602a-n为机顶盒,服务器690为头端设备。
设备602a-n和服务器690通过通信网络604交换信息。通信网络604可以是能够传输数据流的任意网络。通信网络604可以是公共数据网例如互联网、私有数据网、公共交换电话网(PSTN)、无线通信网、有线网或类似的网络。
服务器690中存储有设备602所使用的内容和应用,还具有与设备602进行安全通信的功能。服务器690包括存储器694、对称加密引擎691、非对称加密引擎692和可选的数字签名引擎693。存储器694存储有服务器690的非对称(公共/私有)密钥对695、一个或多个安全应用程序696a-n以及由应用服务器690提供服务的设备的公共密钥698a-n。每个安全应用程序696a-n都与一个对称加密密钥697a-n相关联。在一个实施例中,安全程序696的一部分将使用其关联的对称密钥697进行加密,并以加密格式存储在存储器中。或者,在将程序发往用户设备602时,服务器690使用该程序相关联的对称密钥来加密这个安全应用程序。
在需要时,设备602向服务器690请求安全应用程序696。一个安全程序696可由多个设备602访问。当设备602请求安全程序时,服务器690使用请求该安全程序的设备的公共密钥来加密该安全程序相关联的对称密钥。例如,若设备602a请求程序696A,则服务器使用设备602a的公共密钥来加密对称密钥697A。经加密的对称密钥与经加密的安全程序一起发往发出请求的设备。
非对称加密引擎692提供服务器690所需的非对称加密和解密处理。例如,非对称加密引擎692使用设备的公共密钥698作为加密密钥来加密该设备请求的应用程序的对称密钥。非对称加密引擎692可使用RSA加密算法。本领域的技术人员应当明白,非对称加密引擎692还可使用其他非对称加密算法。非对称加密引擎692使用的非对称加密算法与CPU 510的非对称加密引擎584所使用的算法相同或由其赠送。
对称加密引擎691提供服务器690所需的对称加密和解密处理。例如,对称加密引擎691使用安全应用程序相关联的对称密钥作为加密密钥来加密安全应用程序。本领域的技术人员应当明白,本发明还可使用任何合适的对称加密算法,包括但不限于DES、3DES或高级加密标准(AES)。对称加密引擎691使用的对称加密算法与CPU 510的对称加密引擎586所使用的算法相同或由其赠送。
数字签名引擎693具有对将要发往设备602的消息进行数字签名的功能。数字签名引擎693使用服务器690的私有密钥来对发往设备602的消息进行数字签名。在一个实施例中,数字签名引擎693对经加密的消息进行散列(hash)操作和签名。本领域的技术人员应当明白,本发明还可使用任何合适的散列/签名算法,例如密钥散列消息认证码(HMAC)、消息认证码(MAC)、安全散列算法(SHA)或加密块锁链消息认证码协议(CCMP)。
设备602包括上述图5中描述的系统500。设备602还可包含有用于验证接收自服务器或其他实体的签名的数字签名引擎。如上文及图6所示,每个设备都存储有其CPU 510的非对称密钥对,可选的,还可存储有服务器690的公共密钥。服务器690的公共密钥通常用于验证附加在来自服务器690的消息中的数字签名。
3、用于受信数据处理的方法图7是依据本发明实施例的受信数据处理所使用方法的流程图。图7的描述过程中继续引用图5和图6中的系统和环境。但是流程图700并不仅限于上述实施例。应注意,流程图700中的一些步骤并非必须按照下文中的顺序进行。
在步骤710,服务器690收到来自设备602的安全程序请求。
在步骤715,服务器690获取发出请求的设备602的公共密钥698。在一个实施例中,设备602的公共密钥698存储在服务器690。或者,公共密钥698可从设备602中请求获得。
在步骤720,收到请求的安全程序696和相关联的对称密钥697。应注意,在步骤720之前,安全程序696可能已经使用其关联的对称密钥697进行了加密,并以加密的形式存储在存储器692中。在这种情况下,收到的安全程序696是经过加密的。
在步骤725,所请求的安全程序696将由对称加密引擎691使用与所请求的安全程序696相关联的对称密钥697进行加密。这一步骤是可选的。若安全程序是以加密形式存储在692之中的,则无需执行步骤725。
在步骤730,与所请求的安全程序696相关联的对称密钥697由非对称加密引擎692使用发出请求的设备602的公共密钥698进行加密。经加密的对称密钥可以包含在包括有经加密后的所请求安全程序的消息的包头中。或者,该经加密的对称密钥还可通过独立于包含经加密的所请求安全程序的消息以外的另一条消息发送。
在步骤735,经加密的安全程序和/或经加密的对称密钥由数字签名引擎693进行数字签名。步骤735是可选的。在使用步骤735时,数字签名方式使得接收消息的设备602能够验证消息发起方的身份,并验证消息内容的真实性。在一个实施例中,为了生成数字签名,首先通过对文件数据(例如经加密的安全程序)进行散列操作(hashing)生成消息摘要。随后使用应用服务器690的私有密钥对该消息摘要进行加密。加密后的消息摘要便是将要附在消息之中的签名。本领域的技术人员应当明白,数字签名引擎693还可使用任何数字签名算法来生成该签名。典型的数字签名算法包括SHA、数字签名算法(DSA)或ElGamal签名。
在步骤740,设备602收到经加密的安全程序和经加密的对称密钥。
在步骤745,将经加密的安全程序写入存储器570的加密数据区572,将经加密的对称密钥写入存储器570的明文数据区574。
在步骤750,对附加在消息中的数字签名进行验证。步骤750是可选的,只在收到数字签名的时候才需要执行。应注意,步骤750可在步骤745之前执行。步骤750包括步骤752和步骤754。
在步骤752,获取应用服务器690的公共密钥。在一个实施例中,设备602将应用服务器690的公共密钥存储在本地。或者,设备602还可从应用服务器690或其他安全公共数据存储器中获取应用服务器690的公共密钥。
在步骤754,对附加的签名进行验证。如上所述,应用服务器690和设备602中的数字签名引擎均使用相同或一致的数字签名算法。例如,为验证数字签名,设备602使用应用服务器690的公共密钥来解密签名后的消息摘要,以此来获取第一消息摘要。设备602随后对该消息进行散列运算,生成第二消息摘要。如果第二消息摘要与第一消息摘要匹配,则设备602便有理由确信该消息是来自应用服务器690的,并且没有经过修改。
在流程图700完成之后,安全程序696的指令和/或数据便可由CPU 510来执行了。
图8是依据本发明实施例从存储器中获取安全指令的方法的流程图。流程图800中读取操作之前和之后事件的准确顺序由CPU的设计决定。流程图800中的方法可应用在任何CPU架构中,包括但不限于顺序处理、并行处理和指令流水线架构。流程图800继续引用图5中描述的系统。但是流程图800并不仅限于该实施例。应注意,流程图800中的一些步骤并非必须按照下文中的顺序进行。
在步骤810,从存储器570中获取与经加密的指令相关联的经加密的对称密钥。
在步骤820,由非对称加密引擎584使用CPU 510的私有密钥作为解密密钥来解密该经加密的对称密钥。被解密后的对称密钥存储在非易失性存储器582中。
步骤810和步骤820可在开始执行经加密的安全程序时执行。在一个实施例中,步骤810和步骤820在安全程序的执行过程中只执行一次。步骤830到步骤880(描述获取和处理经加密的指令的过程)将对安全程序执行过程中获取的每条指令和/或经加密的数据重复执行。
在步骤830,从存储器570中读取一条指令。
在步骤840,判断该指令的地址是否处于存储器570的加密数据区572之中。例如,在步骤840,CPU 510读取加密数据区572和/或明文数据区574的存储器边界地址。若上述地址位于加密数据区572中,操作转向步骤850,开始执行解密处理。若上述地址没在加密数据区572之中,则操作将转到步骤895,跳过解密处理步骤。
在步骤850,由对称加密引擎586使用存储的对称密钥作为解密密钥来解密收到的经加密的指令。
在步骤860,将被解密的指令装入适当的寄存器或存储器位置,以由CPU510解码和执行。
在步骤865,判断被解密的指令是否包含有使用间接寻址的操作数描述符。若包含有使用间接寻址的操作数描述符,则操作继续进行步骤870。若不包含使用间接寻址的操作数描述符,则操作继续进行步骤890。
在步骤870,读取地址引用,然后从存储器570中读取该地址上的指令或数据。
在步骤875,判断该地址引用是否处于存储器570的加密数据区572之中。例如,在步骤875,CPU 510读取加密数据区572和/或明文数据区574的存储器边界地址。若该地址引用位于加密数据区572中,操作转向步骤880,开始执行解密处理。若上述地址引用没在加密数据区572之中,则操作将转到步骤895,跳过解密处理步骤。
在步骤880,由对称加密引擎586使用存储的对称密钥作为解密密钥来解密收到的经加密的指令。
在步骤885,将被解密的指令装入适当的寄存器中,以由CPU 510执行。
在步骤890,CPU 510继续正常的处理过程。
在步骤895,CPU 510执行正常的处理过程。
在执行指令的过程中,CPU可能会生成将要写入存储器中以供将来指令的执行过程中使用的数据。该数据在这里称为“中间数据”。此外,在指令的执行过程中,CPU可能要求读取存储的中间数据。图9A和图9B分别描述了将中间数据写入存储器和从存储器中读取中间数据的方法的流程图900和950。流程图900和950中操作之前和之后事件的准确顺序由CPU的设计决定。流程图900和950中的方法可应用在任何CPU架构中,包括但不限于顺序处理、并行处理和指令流水线架构。流程图900和950中的描述将继续引用图5中的系统。但是流程图900和950并不仅限于该实施例。应注意,流程图900和950中的一些步骤并非必须按照下文中的顺序进行。
图9A开始于步骤910,判断是否要将中间数据写入存储器570。若要将中间数据写入存储器570,则操作转到步骤920。若没有中间数据将要写入存储器570,则操作转到步骤990,CPU 510继续进行正常的处理。
在步骤920,CPU 510加密中间数据。在一个实施例中,CPU 510将生成的中间数据与随机数生成器588生成的随机数进行异或运算,以此来加密中间数据。例如,随机数可在CPU 510上电时生成。当CPU 510保持上电的过程中,将生成的随机数进行存储并应用于所有的本地异或加密。在断电后,该随机数将被擦除。或者,CPU 510通过对称加密引擎586将存储的对称密钥用作加密密钥来加密中间数据。本领域的技术人员应当明白,本发明还可使用其他技术来加密中间数据。
在步骤930,将经加密的中间数据存储在存储器570中的指定位置。
图9B开始于步骤960,判断是否要从存储器570中读取中间数据。若要从存储器570中读取中间数据,则操作转到步骤970。若没有中间数据要从存储器570中读取,则操作转到步骤990,CPU 510继续正常的处理。
在步骤960,从存储器570中的指定位置读取经加密的中间数据。
在步骤970,CPU 510解密该中间数据。在一个实施例中,CPU 510将经加密的中间数据与随机数生成器588生成的随机数进行异或运算,以此来得到原始的中间数据。或者,CPU 510通过对称加密引擎586将存储的对称密钥用作解密密钥来解密该中间数据。本领域的技术人员应当明白,本发明还可使用其他技术来解密中间数据。
图10是依据本发明实施例的中断处理的方法的流程图1000。流程图1000中中断操作之前和之后事件的准确顺序由CPU的设计决定。流程图1000中的方法可应用在任何CPU架构中,包括但不限于顺序处理、并行处理和指令流水线架构。流程图1000继续引用图5中描述的系统。但是流程图1000并不仅限于该实施例。应注意,流程图1000中的一些步骤并非必须按照下文中的顺序进行。
在步骤1010之前,随机数可由随机数生成器588生成。在一个实施例中,该随机数可在CPU 510上电时生成。然后将该随机数存储起来,并在CPU 510保持上电的过程中应用于所有的本地异或加密。在断电后,该随机数将被擦除。
在步骤1020,CPU 510接收中断信号或请求。在收到中断时,CPU 510必须保存当前正在执行的安全程序的状态。这一过程包括存储一个或多个寄存器540中的内容。
在步骤1030,CPU 510加密一个或多个寄存器中的内容。例如,CPU 510可加密将要读取的下一指令的地址。在一个实施例中,CPU 510将寄存器数据与生成的随机数进行异或运算,以此来对数据进行加密。或者,CPU 510还可通过对称加密引擎586将存储的对称密钥用作加密密钥来加密中间数据。本领域的技术人员应当明白,本发明还可使用其他方法来加密寄存器数据。
在步骤1040,将经加密的寄存器数据存储在存储器570为此目的而保留的位置中。
在步骤1050,恢复安全程序指令的处理。
在步骤1060,CPU 510从保留的存储器位置中读取经加密的寄存器数据。
在步骤1070,对经加密的寄存器数据进行解密。在一个实施例中,CPU 510将经加密的寄存器数据与随机数生成器588生成的随机数进行异或运算,得到原始的寄存器数据。或者,CPU 510还可通过对称加密引擎586将存储的对称密钥用作解密密钥来解密该寄存器数据510。本领域的技术人员应当明白,本发明还可使用其他技术来解密寄存器数据。
在步骤1080,将被解密的数据重新装入合适的寄存器中,以便恢复正在执行的安全程序的状态。
在步骤1090,继续进行安全程序指令的处理。
图11是依据本发明实施例的取指周期内的数据流的示意图。在取指周期内,从存储器570的加密数据区572中读取经加密的指令。然后由对称加密引擎586将该程序的对称密钥用作解密密钥来解密该经加密的指令。
程序计数器542中包含有由将要读取的下一指令的地址。该地址被装入存储器地址寄存器546中,并放到地址总线562上。控制单元550请求读取存储器,然后将结果放到数据总线564上。该指令由对称加密引擎586进行解密,然后被复制到存储器缓冲寄存器544中,并装入指令寄存器548中。同时,程序计数器542增1,为下一次取操作做准备。
一旦取指周期结束,控制单元550便检查指令寄存器548中的内容,判断其中是否包含有使用间接寻址的操作数描述符。若是,则执行间接周期。图12是依据本发明实施例的间接周期内的数据流的示意图。包含有地址引用的存储器缓冲寄存器544中最右边的N位将发往存储器地址寄存器546。随后,控制单元550请求读取存储器,然后将结果放到数据总线564上。该结果将由对称加密引擎586进行解密,以将操作数的地址存入存储器缓冲寄存器544中。
指令周期可以采用多种形式,这是由指令寄存器548中的机器指令的类型决定的。这个周期包括在寄存器之间传送数据、从存储器端口I/O进行读取解密操作或者加密写入操作,和/或ALU120的激活。
图13是依据本发明实施例的中断周期内的数据流的示意图。在中断周期内,必须保存程序计数器542中的内容,以便CPU 510能够在中断后恢复正常的活动。因此,程序计数器542中的内容将传送到存储器缓冲寄存器544中进行加密,然后写入到存储器中。为此目的而保留的特定存储器位置将从控制单元550加载到存储器地址寄存器546中。它可以是例如栈指针。在程序计数器142中加载中断程序的地址。这样一来,便可通过读取适当的指令来开始进行下一周期。
4、结论虽然上文中描述了本发明的多个实施例,但本领域的技术人员应当明白,这些实施例仅是举例,不起限定作用。相关领域的技术人员应当明白,在不脱离本发明主旨和范围的情况下,可对形式和细节进行许多改变。因此,本发明的范围不应仅限于上文描述的示范性实施例,而是由权利要求及其等同方案来定义的。
权利要求
1.一种在具有非对称公共和私有密钥对的处理器中进行受信处理的方法,其特征在于,包括从第一存储器的明文数据区中获取经加密的对称密钥;使用非对称解密算法解密所述经加密的对称密钥,其中所述非对称解密算法将所述处理器的非对称私有密钥用作解密密钥;从所述第一存储器的加密数据区中获取经加密的指令;使用对称解密算法解密所述经加密的指令,其中所述对称解密算法将所述被解密的对称密钥用作解密密钥。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括将所述处理器的所述非对称私有密钥存储在位于所述处理器内的第二存储器中。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括将所述被解密的对称密钥存储在位于所述处理器内的第二存储器中。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括将所述处理器的所述非对称私有密钥存储在一次性可编程存储器中。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括通过通信接口接收对所述非对称解密算法的更新;将更新后的所述非对称解密算法存储在位于所述处理器内的第二存储器中。
6.一种用于受信数据处理的系统,其特征在于,包括第一存储器,所述第一存储器包含加密数据区和明文数据区;中央处理单元,所述中央处理单元包括非易失性存储器,其中包括有所述中央处理单元的非对称公共和私有密钥对以及被解密的对称密钥;非对称加密引擎,用于将所述中央处理单元的私有密钥用作解密密钥,来对从所述第一存储器中获取的经加密的对称密钥进行解密;对称加密引擎,用于使用所述被解密的对称密钥对从所述第一存储器的所述加密数据区内的地址中获取的经加密的指令进行解密。
7.根据权利要求6所述的系统,其特征在于,所述加密数据区包括用户可定义的地址范围。
8.根据权利要求6所述的系统,其特征在于,所述中央处理单元还包括随机数生成器。
9.根据权利要求6所述的系统,其特征在于,所述非易失性存储器为一次性可编程存储器。
10.一种在具有非对称公共和私有密钥对的处理器中进行受信处理的方法,其特征在于,包括从服务器接收经加密的程序和经加密的对称密钥,其中所述经加密的程序是使用所述对称密钥进行加密的,所述对称密钥是使用所述处理器的非对称私有密钥进行加密的;将所述经加密的程序存储在存储器的加密数据区中;将所述经加密的对称密钥存储在所述存储器的明文数据区中;使用所述处理器的私有密钥解密所述经加密的对称密钥;当访问到所述存储器的加密数据区内的地址时,使用所述被解密的对称密钥调用所述处理器中的对称解密算法。
全文摘要
本发明提供了一种用于受信数据处理的系统和方法。所述系统包括具有加密数据区和明文数据区的存储器,和包含非易失性存储器、非对称加密引擎、对称加密引擎的中央处理单元(CPU)。所述加密数据区包括有可由用户定义的地址范围。所述系统接收经加密的程序指令和经加密的对称密钥。经加密的程序指令存储在加密数据区中,经加密的对称密钥存储在明文数据区中。CPU使用其非对称私有密钥解密该经加密的对称密钥。当CPU访问分配给加密数据区的地址范围内的地址时,将在CPU中调用对称解密处理,该对称解密处理使用所述被解密的对称密钥。本发明还提供了一种安全写入和获取中间数据的方法。
文档编号H04N7/167GK101072097SQ20071010498
公开日2007年11月14日 申请日期2007年5月11日 优先权日2006年5月11日
发明者陈雪敏 申请人:美国博通公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1