密码芯片和相关方法与流程

文档序号:12168273阅读:619来源:国知局
密码芯片和相关方法与流程

本发明涉及密码(cryptographic)芯片和相关方法。特别地,本发明涉及用于执行密码操作的芯片、执行密码操作的芯片实现方法以及向芯片的规则存储模块中加载新规则的方法。



背景技术:

数字内容的广播递送常常使用广播流的加扰来保护内容免于未授权观看。用以对广播流加扰和解扰的密钥称为控制字(CW)。条件访问(CA)或数字权限管理(DRM)系统仅实现CW到已授权接收机的选择性分发。常见的攻击使用CW是将所有接收机上的内容解锁的共享密钥的事实。敌人可以破坏密钥递送基础设施的部分以获得CW并可以将这些密钥重新分发给未授权接收机。通过保护CW到解扰和解码芯片组的递送来防止该CW共享攻击。当前芯片组支持密钥层级以基于在制造过程期间安装的秘密密钥来保护CW递送。在图1中示意性地图示了典型的接收机图。图1的示例性芯片组100使用对称密码算法,但是将公钥密码术用于将CW安全地递送到解扰和解码芯片组也是可能的。

参考图1,芯片制造商利用用于芯片组唯一密钥(CSUK)的伪随机值将解扰和解码芯片组100个性化并向芯片组序号(CSSN)赋值。CSUK是芯片组的最有价值的资产,由于这是从其导出所有其它密钥的密钥。制造商向CA/DRM供应商供应(CSSN,CSUK)对的列表,使得能够将芯片组加载密钥(CSLK)的值加载到特定芯片组中。特别地,CSLK被以已加密形式供应给芯片组100,并且仅可使用芯片组100的CSUK被解密。CSLK被用来将CW安全地加载到芯片组100中,如图1中所描绘的。特别地,CW被以已加密形式供应给芯片组100,并且仅可使用芯片组100的CSLK被解密。随后,可使用CW来将供应给芯片组100的已加密内容解密。

在EP2362575、WO2012/072703、WO2012/072704、WO2013/060391、WO2012/072707以及WO2013/120538中描述了该CW加载机制的变体,其全部被通过引用结合到本文中。

还存在用以使用安全(secured)片上模块将密钥加载到芯片中的供应商特定的专有机制。这些模块通常由条件访问供应商或数字权限管理供应商指定,并且在片上系统(SoC)的安全处理器模块内实现其。安全处理模块是以保护模块中的函数和数据的方式实现的SoC上的单独计算平台。图2是此类SoC 200中的某些典型组件的示意图。

图2示意性地图示了包括安全处理器模块210和应用处理器模块220的SoC 200的架构。安全处理器模块210包括安全存储器模块,诸如密钥寄存器、SRAM、ROM和一次性可编程(OTP)存储器。安全处理器模块210还包括密码组件,诸如数据加密标准(DES)和高级加密标准(AES)模块。安全处理器模块210还包括随机数发生器、私有CPU和定制硬件模块。还存在用于与应用处理器模块220的串行链路通信的串行链路。应用处理器模块220包括主CPU、功能模块和存储器模块(例如ROM和SRAM)。应用处理器模块220还包括用以从安全处理器模块210的密钥寄存器直接地接收CW的内容解密模块。

为了实现在Error! Reference source not found.(错误!未找到引用源)中示出的密钥梯,用固件对安全处理器模块210中的私有CPU进行初始化以(a)经由串行链路从应用处理器模块220接收已加密输入消息,(b)从密钥寄存器检索在输入消息中指示的密钥,(c)设置AES/DES模块以处理输入消息的已加密部分,(d)检索结果,以及(e)将内容解密密钥(即CW)发送到应用处理器模块220的内容解密模块。完全在安全处理器模块210内存储和使用密钥。在应用处理器模块220中不存在可以直接地访问安全处理器模块210内的内部数据的组件。结果得到的CW被使用专用数据路径传输到内容解密模块,其不能被应用处理器模块220的主CPU读或修改。

制造商可以使用应用处理器模块220和/或安全处理器模块210中的专用固件来实现大部分专有安全功能。然而,对于某些非常特定的专有安全功能而言,使用定制硬件的实现可能是必需的;因此使用安全处理器模块210中的定制硬件模块的实现可能是必需的。在制造过程期间,可选择性地使能定制硬件模块,如被通过引用结合到本文中的2012年10月10日提交的PCT/EP2012/004267中所描述的那样。



技术实现要素:

诸如密钥加载机制之类的多个专有安全功能的存在和选择性使能激发芯片制造商使这些模块中的每个中的公共组件(例如,解扰块、安全密钥存储和安全(OTP)数据初始化)的使用最大化。因此,存在对仅以最低限度的固件和/或定制硬件覆盖区支持宽范围的密钥梯实现的安全处理器模块的需要。

专有密钥加载模块的主要目的是保护该实现免于逆向工程攻击。实现这一点的一个方式是通过防止安全处理器模块中的私有CPU访问安全处理器模块的密钥寄存器中的数据。然而,已知安全处理器模块的威胁模型没有考虑修改安全处理器模块的固件的攻击。此类攻击可以利用安全处理器模块中的任何组件(例如私有CPU、SRAM或ROM)中的错误,或者其可能旨在修改某些安全处理器模块组件的功能。用此类攻击,安全处理器模块中的密钥可能变得经由公共接口可观察。因此,需要对较不易受此类攻击的影响的安全处理器模块的需要。

本发明设法提供一种密码芯片和关联方法,比起现有技术的那些,其提供各种优点。

本发明的芯片和关联方法旨在使敏感的对称块密码操作免于由芯片上的通用处理器(GPP)进行的直接访问。GPP可编程的事实增加了其使用的特殊质量(quality)和风险。本发明通过不允许GPP访问明文密钥(clear-key)并通过经由根据规则将密码操作群集来简化用于密码操作的界面而帮助移除该风险。

例如,用于现今的消费设备(诸如机顶盒、TV和智能电话)中的芯片组访问已加扰内容的最常见方式是使用片上密码协处理器来解开加扰CW。安全要求和安全设计在谈到这些操作及关联密钥和输出如何被处理时变化很多;与用于平板电脑芯片组和移动设备芯片组的较不严格得多的要求相比,存在对机顶盒芯片组相当严格的要求。一般地,非常少的芯片组虑及在确保关键(高安全)密钥不受损害时的灵活性。通常,GPP可以在没有系统集成商或安全供应商关断该访问的可能性的情况下访问明文密钥或已解开秘密。

相比之下,本发明使用软件和硬件屏蔽密钥和密码操作的混合。该混合旨在通过在处理密钥和密码操作时使用基于规则的访问控制和关注分离来封闭前述脆弱性间隙。

根据本发明的第一方面,提供了一种用于执行密码操作的芯片。芯片包括密钥存储模块、规则存储模块、接口模块和密码模块。密钥存储模块被配置成存储一个或多个密码密钥。规则存储模块被配置成存储一个或多个规则,每个规则包括相应的规则数据,规则数据标识与规则相关联的相应的预定密码操作并进一步标识一个或多个密码密钥中的要被用在相应的预定密码操作中的至少一个。接口模块被配置成接收规则执行请求,其中规则执行请求包括用以标识一个或多个规则中的要被执行的特定规则的规则标识符。密码模块被配置成响应于规则执行请求而执行特定规则,从而实行相应的预定密码操作。芯片被配置成使得仅可通过响应于由接口模块接收到的关联的规则执行请求而执行来自一个或多个规则的规则来使用密码密钥和密码模块。

根据本发明的第二方面,提供了一种包括第一方面的芯片的机顶盒。

根据本发明的第三方面,提供了一种执行密码操作的芯片实现方法。芯片包括密钥存储模块和规则存储模块。密钥存储模块被配置成存储一个或多个密码密钥。规则存储模块被配置成存储一个或多个规则,每个规则包括相应的规则数据,规则数据标识与规则相关联的相应的预定密码操作并进一步标识一个或多个密码密钥中的要被用在相应的预定密码操作中的至少一个。方法包括:(ⅰ)接收规则执行请求,其中规则执行请求包括用以标识一个或多个规则中的要被执行的特定规则的规则标识符;以及(ⅱ)响应于规则执行请求而使用密码模块来执行特定规则,从而实行相应的预定密码操作。芯片被配置成使得仅可通过响应于关联的规则执行请求而执行来自一个或多个规则的规则来使用密码密钥和密码模块。

根据本发明的第四方面,提供了一种向芯片的规则存储模块中加载新规则的方法。芯片进一步包括被配置成存储一个或多个密码密钥的密钥存储模块。规则存储模块被配置成存储一个或多个规则,每个规则包括相应的规则数据,规则数据标识与规则相关联的相应的预定密码操作并进一步标识一个或多个密码密钥中的要被用在相应的预定密码操作中的至少一个。方法包括:(a)接收规则加载请求,其中规则加载请求包括用以标识要加载的新规则的新规则标识符并且进一步包括定义新规则的新规则数据,新规则数据标识与新规则相关联的特定密码操作并且进一步标识一个或多个密码密钥中的要被用在特定密码操作中的至少一个;(b)评定规则加载请求是否是可允许的;以及(c)响应于规则加载请求已被评定为可允许,将新规则加载到规则存储模块的可编程部分中,使得新规则变成一个或多个规则中的一个。

在所附权利要求中阐述了本发明的其他优选特征。

附图说明

现在将参考附图通过示例的方式描述本发明的实施例,在所述附图中:

图1示意性地图示了具有标准密钥梯实现的解扰和解码芯片组。

图2示意性地图示了包括安全处理器模块和应用处理器模块的SoC的架构。

图3示意性地图示了根据本发明的用于执行密码操作的芯片。

图3A示意性地图示了图3的芯片的密码存储模块的一个实施例。

图3B示意性地图示了图3的芯片的规则存储模块的一个实施例。

图3B示意性地图示了图3的芯片的接口模块的一个实施例。

图4A和4B示意性地图示了根据本发明的一个实施例的执行密码操作的芯片实现方法。

图5示意性地图示了根据本发明的一个实施例的向芯片的规则存储模块中加载新规则的方法。

具体实施方式

在随后的描述和图中,描述了本发明的某些实施例。然而,将领会的是本发明不限于所描述的实施例,并且某些实施例可不包括下面描述的所有特征。然而,将明显的是可在不脱离如在所附权利要求中阐述的本发明的更宽泛精神和范围的情况下在本文中做出各种修改和改变。

密码芯片

图3示出了根据本发明的一个实施例的用于执行密码操作的芯片300。该芯片包括接口模块310、密钥存储模块320、规则存储模块330和密码模块340。密钥存储模块320被配置成存储一个或多个密码密钥K1、K2……Kn。规则存储模块330被配置成存储一个或多个规则R1、R2……Rn。图3中的标记R1、R2……Rn可被视为用来标识每个规则的“规则标识符”(或“规则标签”)。每个规则Ri包括相应的规则数据,其标识与规则相关联的相应的预定密码操作XRi并进一步标识一个或多个密码密钥中的要被用在相应的预定密码操作XRi中的至少一个密钥KRi。接口模块310被配置成接收规则执行请求350,其包括用以标识一个或多个规则中的要被执行的特定规则的规则标识符Ri。密码模块340被配置成响应于规则执行请求350而执行特定规则Rj,从而实行相应的预定密码操作XRi。芯片被配置成使得仅可通过响应于由接口模块310接收到的关联的规则执行请求350而执行来自一个或多个规则R的规则来使用密码密钥K和密码模块340。

接口模块310有效地控制涉及密钥存储模块320、规则存储模块330和密码模块340的操作。重要的是,接口模块310在由接口模块310接收到的规则执行请求350的基础上提供对密钥存储模块320规则存储模块330和密码模块340的间接访问。换言之,接口模块310阻止对密钥存储模块320、规则存储模块330和密码模块340的直接外部访问(例如,通过主CPU或GPP)。密码模块340未被直接耦合到芯片300的通用总线(未示出),而是仅可经由接口模块310来访问。在一个实施例中,密钥存储模块320中的密钥K和规则存储模块330中的规则R都不是可通过物理存储器地址直接地访问的。替代地,规则被规则标识符Ri寻址且密钥被密钥标识符(或“密钥标签”)Ki寻址。尤其,由于密钥标识符被用来标识各种密钥,所以每个密钥标识符是唯一的。类似地,每个规则标识符是唯一的。由于规则执行请求350包括用以标识要被执行的规则的规则标识符,并且由于每个规则与相应的预定密码操作和至少一个相应密钥两者相关联,所以这对于密码模块可如何被使用放置限制,即芯片300实施对密码模块340的有规律的(即正常的、预期的、经允许的、基于规则的)使用。芯片300的架构定义了允许以其使用密码模块340的特定方式。每个规则定义密码模块340所规定或允许的操作以及密码密钥。换言之,存在叙述什么被允许的“肯定约束”:密码模块340仅可如在存储于规则存储模块300中的规则R中所指定的那样被使用。这与替换实现成对比,所述替换实现可能定义了不允许以其使用芯片300或密码模块340的方式(即叙述什么不被允许的“否定约束”的使用)。肯定约束的使用使得芯片300更加难以攻击,由于否定约束可具有未预见的漏洞,而肯定约束明确地定义到底什么被允许。

接口模块310、密钥存储模块320、规则存储模块330和密码模块340通常全部被包括在芯片300的安全模块370(诸如类似于SoC 200的安全处理器模块210的安全处理器模块)中。可以可选地将其它电路380包括在芯片300上,使得芯片300可被配置成除由安全模块370提供的功能之外还执行其它功能。在本实施例中,可以根据其它电路380的该其它功能来控制(即对接)安全模块370。其它电路380可包括应用处理器模块,其类似于SoC 200的应用处理器模块320。因此,规则执行请求350可源自于其它电路380,或者可源自于芯片外部,如图3中所示。密钥存储模块320和规则存储模块330可相互不同。替换地,密钥存储模块320的至少部分和规则存储模块330的至少部分可形成同一存储器的部分。

密码模块

密码模块340被操作地耦合到接口模块310,从而能够在必要时对由接口模块310接收到的规则执行请求350进行响应。密码模块340还被操作地耦合到密钥存储模块320和规则存储模块330,从而使得密码模块340能够选择(一个或多个)适当的密码操作X和(一个或多个)适当的密码密钥K以供使用。

此类操作耦合可以是直接的或间接的。密码模块340能够执行至少一个密码操作X。密码操作一般地涉及借助于密码操作和密钥将输入数据变换成输出数据。密码操作可涉及加密、解密、密码散列、数字签名生成、数字签名验证、消息认证代码(MAC)生成、MAC验证等中的一个或多个,其中此类密码操作对于本领域的技术人员而言是众所周知的。例如,密码模块340可使用存储的密码密钥K中的一个或多个对输入数据进行加密或解密,从而提供已加密或已解密输出数据。在一个实施例中,密码模块340能够执行多个不同的密码操作X。替换地,密码操作340可仅能执行单个密码操作X。

密钥存储模块

如上面提及的那样,密钥存储模块320被配置成存储一个或多个密码密钥K1、K2……Kn。因此,密钥存储模块320是密钥存储器模块或密钥高速缓存。密钥存储模块320优选地包括如图3A中示出的第一和第二密钥存储子模块321和322。

第一密钥存储子模块321是可编程的,使得其可被用来存储一个或多个密码密钥中的至少一个进一步密钥。因此,第一密钥存储子模块321是可写存储器组件,并且可包括例如一个或多个锁存器或一个或多个可写寄存器。第一密钥存储子模块321的“可写”性质意味着第一密钥存储子模块321是易失性存储器组件。

相比之下,第二密钥存储子模块322包括一个或多个密码密钥中的一个或多个经预编程的密钥。因此,第二密钥存储子模块322可包括预编程或硬接线的存储器组件。替换地/另外,第二密钥存储子模块322可包括自动地在芯片300的通电复位(PoR)之后自动地从OTP存储器加载密钥的存储器组件。第二密钥存储子模块322被用来存储相对于存储在第一密钥存储子模块321中的密钥而言要求高安全水平的那些密钥。例如,第二密钥存储子模块322将被用来存储芯片300的CSUK。

密钥存储模块320可借助于一个或多个寄存器来实现。寄存器提供可用作CPU或其它数字处理器的部分的小量存储。寄存器正常地在存储器层级的顶部处,并且提供用以访问数据的最快速方式。如果借助于一个或多个寄存器实现第二密钥存储子模块322,则这些寄存器可被视为“恒定值寄存器”,由于第二密钥存储子模块322的高安全密钥是硬接线的或者在PoR之后被用OTP秘密自动地填充。相比之下,如上面提及的那样,第一密钥存储子模块321可包括一个或多个可写寄存器。

在一个实施例中,密钥K可被以已加密格式存储在密钥存储模块320中。在该情况下,可以在已加密密钥被要求用于特定密钥操作X时使用密码模块340将已加密密钥解密。替换地,可将明文密钥存储在密钥存储模块320中。

在一个实施例中,芯片300被配置成通过执行一个或多个规则R中的密钥导出规则RKD来向第一密钥存储子模块321中加载新密钥Knew。密钥导出规则RKD被布置成提供新密钥Knew,如来自相应的预定密码操作XRKD的输出数据。更进一步地,密钥导出规则RKD被布置成将输出数据(即新密钥Knew)存储在第一密钥存储模块321中。用于密钥导出规则RKD的规则数据还应包括针对新密钥的相应密钥标识符Knew

现在将描述密钥存储模块320的优选实施例。在本实施例中,密钥存储模块320具有阵列数据结构,其中阵列的每个元素涉及相应密钥。例如,阵列的每个元素包括相应密钥标识符和密钥值。阵列的每个元素可以进一步包括密钥的相应安全标志(例如,第一密钥存储子模块321中的可编程密钥的低安全以及第二密钥存储子模块322中的预编程密钥的高安全)。有利地,每个安全标志位被硬接线以提供附加的安全。阵列的每个元素可以进一步包括密钥的相应初始化标志(即已初始化或未初始化)。第二密钥存储子模块322中的硬接线密钥始终被初始化。第二密钥存储子模块322中的其它密钥(例如自动地在PoR之后自动地从OTP存储器加载的密钥)可在芯片30的启动时间(即在芯片300的PoR之后) 被初始化。第一密钥存储子模块321中的密钥可以或可以不被初始化。第一密钥存储子模块321中的密钥Knew可在关联密钥导出规则RKD的执行之后被初始化。换言之,密钥导出规则RKD的执行定义新密钥Knew并将其保存到第一密钥存储子模块321,并且该新密钥Knew在该密钥导出规则RKD的执行之后被初始化。

规则存储模块

如上面提及的那样,规则存储模块330被配置成存储一个或多个规则R1、R2……Rn。因此,规则存储模块330是用于存储规则R的文件或存储器模块,从而定义存储在密钥存储模块320中的各种密钥K的允许使用。规则存储模块330优选地包括第一和第二规则存储子模块331和332,如图3B中所示。

第一规则存储子模块331是可编程的,使得其可用来存储一个或多个规则中的至少一个进一步规则。因此,第一规则存储子模块331是可写存储器组件,并且可包括例如一个或多个锁存器或一个或多个可写寄存器。第一规则存储子模块331的“可写”性质意味着第一规则存储子模块331是易失性存储器组件。

相比之下,第二规则存储子模块332包括一个或多个规则中的一个或多个预编程规则。因此,第二规则存储子模块332是预编程或硬接线的存储器组件。

替换地,第二规则存储子模块332可以是自动地在芯片300的通电复位(PoR)之后自动地从OTP存储器加载规则的存储器组件。第二规则存储子模块332被用来存储相对于存储在第一规则存储子模块331中的规则而言要求高安全水平的那些规则。例如,第二规则存储子模块332将被用来存储使用CSUK的规则。

规则存储模块330具有阵列数据结构,其中阵列的每个元素与相应的规则相关。规则存储模块330中的规则R的数目受阵列的尺寸限制。一般地,其与密钥K的数目无关,由于多个规则R可以针对单个密钥K共存。如上面提及的那样,每个规则Ri包括相应的规则数据,其标识与规则相关联的相应的预定密码操作XRi并进一步标识一个或多个密码密钥KRi中的要被用在相应的预定密码操作中的至少一个。用于每个规则Ri的规则数据可包括以下中的至少一个:

a)标识将在其上执行相应的预定密码操作的输入数据的位置的数据。输入数据的位置可被直接地(通过物理存储器地址)或间接地标识。优选的是在每个规则基础上标识输入数据位置,由于这使能输入数据位置对于不同的规则而言是不同的。这使得能够针对不同的规则将不同的安全水平应用于输入数据的存储器位置。例如,对于使用高安全CSUK来执行密码操作的规则而言,高安全输入数据位置将是期望的。然而,在替换实施例中,具有用于输入数据的预定位置将是可能的。

b)标识用于存储来自相应的预定密码操作的输出数据的位置的数据。输出数据的位置可被直接地(通过物理存储器地址)或间接地标识。优选的是在每个规则基础上标识输出数据位置,由于这使能输出数据位置对于不同的规则而言是不同的。这使得能够针对不同的规则将不同的安全水平应用于输出数据的存储器位置。例如,对于使用高安全CSUK来执行密码操作的规则而言,高安全输出数据位置可能是期望的。在每个规则基础上标识输出数据位置的另一优点是某些密码操作的输出可能是另一密码密钥,并且将该密钥存储在密钥存储模块320中可能是期望的。在该情况下,用于存储输出数据的位置在密钥存储模块320的第一密钥存储子模块321中。因此,在此类实例下,在每个规则基础上标识输出数据位置使得能够将密钥存储模块320规范为输出数据位置。然而,在替换实施例中,具有用于输出数据的预定位置将是可能的。

c)标识将在相应的预定密码操作中使用的特定密码算法的数据。特定密码算法可以是对称密钥算法,其中同一密钥被用于明文的加密和用于密文的解密。示例性对称密钥算法包括高级加密标准(AES)、数据加密标准(DES)、三重DES、Blowfish以及Serpent。替换地,特定密码算法可以是不对称密钥算法,其要求两个单独的密钥,其中的一个是秘密的(或私有的)且其中的一个是公共的;公钥被用来将明文加密或验证数字签名,而私钥被用来将密文解密或创建数字签名。示例性不对称密钥算法包括Rivest-Shamir-Adleman(RSA)、El-Gamal、椭圆曲线密码术(ECC)。然而,在替换实施例中,如果始终使用同一密码算法,则不需要标识特定密码算法。例如,在优选实施例中,仅使用AES算法,因此不存在标识将在相应的预定密码操作中使用的特定密码算法的需要。

d)标识将在相应的预定密码操作中使用的特定密码算法的操作模式的数据。只有当特定密码算法具有多个操作模式时才要求此类数据。例如,如果特定密码算法是AES,则规则数据可包括标识AES链接模式的数据和/或涉及AES块的数目的数据(例如指示是否存在多个AES数据块的数据)和/或标识将在密码操作中使用的一个或多个密码密钥中的至少一个的密钥长度的数据。

e)指示相应的预定密码操作将被用于输入数据的加密还是解密的数据。这是标识相应的预定密码操作的规则数据的特定示例。该特定示例可被用在例如在上面(c)中提及的仅AES实施例中。

有利地,用于每个规则Ri的规则数据不包括关于密钥值或存储器内容的信息。

有利地,关于每个规则是否被初始化应是从用于每个规则的规则数据隐含的。第二规则存储子模块332中的硬接线规则始终被初始化。第二规则存储子模块322中的其它规则(例如自动地在PoR之后自动地从OTP存储器加载的规则)可在芯片30的启动时间(即在芯片300的PoR之后)被初始化。第一规则存储子模块331中的规则可以或可以不被初始化。下面给出关于规则的初始化的进一步细节。

接口模块

在有利实施例中,接口模块310被进一步配置成评定规则执行请求350是否是可允许的。在本实施例中,密码模块340被配置成执行特定规则Rj,从而仅响应于已被接口模块310评定为可允许的规则执行请求350而执行相应的预定密码操作。另外,芯片300可被配置成响应于规则执行请求350已被接口模块310评定为不可允许而执行安全事件过程。

如图3中所示,接口模块310还可被配置成接收规则加载请求360。规则加载请求360包括用以标识要加载的新规则的新规则标识符Rnew。规则加载请求360进一步包括定义新规则的新规则数据。新规则数据标识与新规则相关联的特定密码操作Xnew,并且进一步标识一个或多个密码密钥K中的要在特定密码操作Xnew中使用的至少一个密钥Knew。芯片300被配置成响应于规则加载请求360将新规则Rnew加载到第一规则存储子模块331中,使得新规则Rnew变成一个或多个规则R中的一个。在该阶段处,新规则Rnew在第一规则存储子模块331中被初始化。因此,本实施例提供了用于向规则存储模块330的可写部分中加载新规则的机制。

在有利实施例中,接口模块310被进一步配置成评定规则加载请求360是否是可允许的。在本实施例中,芯片300被配置成仅响应于规则加载请求360已被接口模块310评定为可允许而将新规则Rnew加载到第一规则存储子模块331中。另外,芯片300可被配置成响应于规则加载请求360已被接口模块310评定为不可允许而执行安全事件过程。

执行密码操作的芯片实现方法

现在将参考图3的芯片300来描述执行密码操作X的芯片实现方法。如图4A中所示,方法400包括在步骤S410处接收规则执行请求350,其中规则执行请求350包括用以标识一个或多个规则中的要被执行的特定规则的规则标识符Rj。在步骤S420处,密码模块340被用来响应于规则执行请求350而执行特定规则Rj,从而实行相应的预定密码操作XRj。如上面所讨论的,芯片300被配置成使得仅可通过响应于相关联的规则执行请求350而执行来自一个或多个规则R的规则来使用密码密钥K和密码模块340。

在图4B中示出了方法400的有利实现。在该情况下,在步骤S410中接收到规则执行请求之后,存在评定规则执行请求350是否可允许的附加步骤S415。如果规则执行请求350被评定为可允许,则方法400返回至步骤S420,并且使用密码模块来执行特定规则Rj,从而执行相应的预定密码操作XRj。替换地,如果规则执行请求350被评定为不可允许,则在步骤S425处执行安全事件过程。步骤S425是可选的但是有利的,因为其增加安全。

有利地,步骤S420中的规则的执行是原子操作;即,规则的执行将要么成功要么失败。规则执行可以不被分离成单独的操作,诸如:“密钥加载”、“加载输入”、“执行”以及“存储输出”,因为这将使得执行是非原子的。类似地,步骤S530中的规则的加载是原子操作。

作为在步骤S415中评定规则执行请求350是否可允许的部分,可执行各种检查。例如,可检查要被执行的规则是否被初始化。可仅执行初始化的规则。因此,如果规则执行请求350涉及未初始化的规则,则规则执行请求350被认为不可允许,并且方法400继续在步骤S425中执行安全事件过程。替换地/另外,可检查在规则数据中指定的各种数据位置以确保其是可允许的。特别地,期望检查输入数据位置、输出数据位置以及密码密钥位置。例如,标识未初始化的密钥的密钥标识符将不是可允许的。在另一示例中,与低安全输出数据位置组合的高安全密钥的使用将不是可允许的。如果规则执行请求350涉及不允许的数据位置(单独地或者当其被组合时),则认为规则执行请求350不是可允许的,并且方法400继续在步骤S425中执行安全事件过程。下面在表1中给出了允许和不允许的数据位置组合的示例,其中HS代表“高安全”且LS代表“低安全”。可根据期望执行附加/替换检查。

表格1。

加载新规则的方法

现在将参考图3的芯片300来描述一种向芯片的规则存储模块中加载新规则的方法。如图5中所示,方法500包括在步骤S510处接收规则加载请求360。规则加载请求360包括用以标识要加载的新规则的新规则标识符Rnew,并且进一步包括定义新规则的新规则数据。新规则数据标识与新规则相关联的特定密码操作XRnew,并且进一步标识一个或多个密码密钥K中的要在特定密码操作XRnew中使用的至少一个密钥KRnew。在步骤S520处,方法500评定规则加载请求360是否是可允许的。在步骤S530处,响应于规则加载请求360已被评定为可允许的,新规则Rnew被加载到规则存储模块330的第一规则存储子模块331(即可编程部分)中,使得新规则Rnew变成一个或多个规则R中的一个。可选地,但有利地,方法500进一步包括响应于规则加载请求已被评定为不可允许,在步骤S540处执行安全事件过程。

作为在步骤S520中评定规则加载请求360是否可允许的部分,可执行各种检查。例如,可检查新规则将被加载到第一规则存储模块331(即可编程部分)中还是第二规则存储模块332(即预编程部分)中。出于安全原因,新规则仅被允许加载到第一规则存储模块331中。因此,如果规则加载请求360涉及要加载到第二规则存储模块332中的新规则,则认为规则加载请求360不是可允许的,并且方法500继续在步骤S540中执行安全事件过程。这可发生在新规则标识符Rnew涉及第二规则存储模块332中的规则的情况下。可替换地/另外检查要加载的新规则是否已被初始化。如果规则加载请求360涉及已被初始化的规则,则认为规则加载请求360不是可允许的,并且方法500继续在步骤S540中执行安全事件过程。这可发生在新规则标识符Rnew涉及第一规则存储模块331中的已被初始化的规则的情况下。可替换地/另外检查新规则是否包括具有高安全水平的任何字段(例如,源、目的地、密钥标识符)。要加载到第一规则存储模块331中的新规则隐含地具有比在第二规则存储模块332中经预编程的规则更低的安全水平。因此,例如,如果新规则数据指定了来自第二密钥存储子模块322的高安全密钥(例如芯片300的CSUK)的使用,则规则加载请求360被认为不可允许,并且方法500继续在步骤S540中执行安全事件过程。

因此,将理解的是芯片300的安全模块370的使用局限于用以执行特定规则的请求350或用以加载新规则的请求360。不允许安全模块370的其它使用。特别地,对密码模块340的访问仅借助于经由接口模块310提交的规则执行请求350。芯片300因此实施密码模块340的有规律的、预定的、基于规则的、正常的、预期的使用。如果芯片300检测到无规律的、未知的、异常的、非预期的使用请求,则执行安全事件过程。

安全事件过程

现在将描述安全事件过程的优选实施例。该优选程序将适合于作为步骤S425的部分和/或作为步骤S540的部分执行,如上面提及的那样。

在优选实施例中,安全事件过程被存储在非易失性存储器(例如ROM)中。安全事件过程可被配置成借助于针对该目的指定的硬件线路而清理第一密钥存储子模块321和第一规则存储子模块331(即密钥存储模块320和规则存储模块330的可写部分)。例如,安全事件过程可能能够借助于在专用寄存器设置中位来清除第一密钥存储子模块321和第一规则存储子模块的内容,其中该位的设置被硬接线以清理易失性存储器。本实现是有利的,因为其优先于软件环路使用了硬件实现。替换地/另外,安全事件过程可被配置成要求芯片300的冷复位以使得芯片300的安全模块370能够再一次变得可操作。

AES 实施例

现在将描述芯片300的优选实施例的方面,其中密码模块340是AES模块。

在本实施例中,接口模块310包括命令寄存器311和状态寄存器312,如图3C中所示。命令寄存器311从芯片300的安全模块370外部可写,而状态寄存器312仅从芯片300的安全模块370外部可读。

命令寄存器311被用于两个目的,即用于将新规则加载到第一规则存储子模块331中,以及用于执行来自规则存储模块330的任何现有规则。命令寄存器311由三个字段组成:规则标识符、规则动作和规则有效负荷(payload)。规则标识符或规则标签(例如R34)标识规则)。规则动作列举动作;这是加载或执行相关规则。规则有效负荷被链接到规则动作。如果规则动作是“加载新规则”,则规则有效负荷位对新规则进行编码。如果规则动作是“执行规则”,则规则有效负荷位对关联的输入数据的AES块的数目进行编码。

在本实施例中,状态寄存器312具有两个主字段:状态字段和报告字段。状态字段可在已提交规则之后列举四个可能状态中的一个。报告字段可更详细地提供关于所列举状态的细节。用于状态字段的第一可能状态是“空闲”,指示命令寄存器311可以被立即使用。在命令寄存器311的先前使用之后,“空闲”状态进一步指示先前发出的命令已被成功地完成。用于状态字段的第二可能状态时“忙碌”,指示在使用命令寄存器311之前必须等待“空闲”。用于状态字段的第三可能状态是“不使用”,指示硬件实现问题,并且进一步指示对“恐慌(panic)”模式的刺激(例如在安全事件过程的使用之后)。用于状态字段的第四可能状态是“错误”,指示先前发出的命令生成错误,并且导致安全事件过程的使用。再次地,在该情况下可刺激“恐慌”模式。

在本实施例中,可以用以下伪序列来描述命令和状态寄存器311和312的正常的、有规律的使用。

1. 读状态寄存器312并评估状态字段:

a. 在“空闲”的情况下,移动至序列中的下一操作(积极情况);

b. 在“忙碌”的情况下,重复该操作直至检测到“空闲”为止(中性情况);

c. 在“错误”的情况下,转到“恐慌”模式(消极情况);

d. 在“不使用”的情况下,转到“恐慌”模式(消极情况)。

2. 写入命令寄存器311以执行或加载已标识规则。

3. 读回KCMI状态寄存器并评估状态字段:

a. 在“空闲”的情况下,进一步继续进行(积极情况);

b. 在“忙碌”的情况下,重复该操作直至检测到“空闲”为止(中性情况);

c. 在“错误”的情况下,转到“恐慌”模式(消极情况);

d. 在“不使用”的情况下,转到“恐慌”模式(消极情况)。

为了处理可重入代码,伪序列中的第一操作是必需的。伪序列中的第二操作是标准操作。伪序列中的第三操作充当通过第二操作完成的条件同步。

在本AES相关的实施例中,规则存储模块330的阵列的优选结构包括以下字段:源、密钥标识符、目的地、链接模式、加密/解密、密钥长度以及多块。源字段可指定来自可允许的专用寄存器的选择的特定专用寄存器。可允许的专用寄存器中的一个或多个可以是可从芯片300的安全模块370外部访问的。可允许的专用寄存器中的一个或多个可以不是可从芯片300的安全模块370外部访问的。密钥标识符字段是不解自明的并且指定将在相应的预定密码操作中使用的(一个或多个)密码密钥的(一个或多个)密钥标识符。替换地,密钥标识符字段可指定可从芯片300的安全模块370外部访问的专用寄存器,使得可在相应的预定密码操作中使用用户指定密钥。目的地字段可指定特定密钥标识符(如果规则是密钥导出规则的话)或特定专用寄存器或解扰器。链接模式字段指定特定AES链接模式(例如ECB、CBC、PBCB等)。加密/解密字段指定AES模块将被用于加密还是解密。密钥长度字段指定AES密钥长度(即128位或192位或256位)。多块字段指定规则是否适用于多个AES块。还可按照要求包括其它字段。规则是否已被初始化是从存储在阵列的每个元素中的数据隐含的。

将领会的是所描述的方法已被示为以特定顺序执行的单独步骤。然而,技术人员将领会这些步骤可被组合或者以不同的顺序执行,而仍实现期望的结果。

将领会的是可使用多种不同的信息处理系统来实现本发明的实施例。特别地,虽然图及其讨论提供了示例性计算系统和方法,但这些被呈现仅为了在讨论本发明的各种方面中提供有用参考。可在任何适当的数据处理设备上执行本发明的实施例,所述任何适当的数据处理设备诸如个人计算机、膝上型计算机、个人数字助理、移动电话、机顶盒、电视、服务器计算机等。当然,已出于讨论的目的简化了系统和方法的描述,并且其仅是可被用于本发明的实施例的许多不同类型的系统和方法中的一个。将领会的是逻辑块之间的边界仅是说明性的,并且替换实施例可将逻辑块或元件合并,或者可对各种逻辑块或元件施加功能的替换分解。

将领会的是可将上面提及的功能实现为一个或多个相应模块,如硬件和/或软件。例如,可将上面提及的功能实现为一个或多个软件组件,用于由系统的处理器执行。替换地,可将上面提及的功能实现为硬件,诸如在一个或多个现场可编程门阵列(FPGA)和/或一个或多个专用集成电路(ASIC)和/或一个或多个数字信号处理器(DSP)和/或其它硬件布置上。在被包含在本文中的流程图中实现的或者如上面描述的方法步骤中的每个可由相应的各模块实现;在被包含在本文中的流程图中实现的或者如上面描述的方法步骤可一起由单个模块实现。

将领会的是在由计算机程序实现本发明的实施例的情况下,则承载计算机程序的存储介质和传输介质形成本发明的方面。计算机程序可具有一个或多个程序指令或程序代码,其在被计算机执行时实现本发明的实施例。如本文中使用的术语“程序”可以是被设计用于在计算机系统上执行的指令序列,并且可包括子例程、函数、过程、模块、对象方法、对象实现、可执行应用程序、小应用程序、小服务程序、源代码、目标代码、共享库、动态链接库和/或被设计用于在计算机系统上而设计的其它指令序列。存储介质可以是磁盘(诸如硬驱或软盘)、光盘(诸如CD-ROM、DVD-ROM或蓝光盘)或存储器(诸如ROM、RAM、EEPROM、EPROM、闪存或便携式/可移除存储器设备)等。传输介质可以是通信信号、数据广播、两个或更多计算机之间的通信链路等。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1