专利名称:密码系统的密钥恢复机制的制作方法
技术领域:
一般来说,本申请案的标的物涉及密码系统。
背景技术:
高级加密标准(AEQ是针对密码算法的国家标准与技术研究院技术规范,其可保护对称密钥密码中所使用的电子数据。AES算法可加密(加密器)及解密(解密器)呈电子数据形式的信息。加密将电子数据转换为称作密文的难理解的形式;解密所述密文将电子数据转换回成其称作明文的原始形式。AES算法是能够使用1观、192及256个位的密码密钥来加密及解密1 位块中的电子数据的迭代对称密钥块密码编译器。公钥密码编译器可使用一对密码密钥。然而,AES算法使用相同的密码密钥来加密及解密电子数据。AES算法是一种块密码编译器。由块密码编译器返回的经加密数据可具有与输入数据相同的位数目。AES算法对数据块执行其密码编译,从而使其成为迭代密码编译器。迭代密码编译器可使用重复执行输入数据的排列与置换的环路结构。每一经密码编译的数据块均使用相同的密码密钥来加密或解密数据。AES算法加密或解密1 位块中的数据。所述1 位数据块通过AES算法的每一加密或解密可使用多个AES运算。1 位数据块使用多个AES运算(其中迭代地执行连续运算群组)的加密或解密可称为一回合。AES算法还取得密码密钥且执行密钥扩展来产生供在AES加密算法中使用的密钥调度。或者,在1 位数据块的解密中,AES算法以经调度的密钥开始且执行逆密钥调度运算来产生加密中所使用的密码密钥以便解密所述1 位块中的数据。128位数据块的每一加密需要密码密钥连同1 位输入数据块一起作为输入。用于加密的大于1 个位的输入电子数据可被划分成多个1 位块。每一 1 位块均可使用 AES算法进行加密。AES算法采用密码密钥且执行密钥扩展例程来产生密钥调度,从而变换原始密码密钥。128位数据块的每一解密需要经调度的密钥连同1 位输入数据块一起作为输入。用于解密的大于1 个位的输入电子数据可被划分成多个1 位块。每一 1 位块可使用AES算法进行解密。AES算法可逆转且以相反次序执行用于加密的AES运算。AES算法取得经调度的密钥且执行逆密钥调度运算来确定用于加密的原始密码密钥。常规密码系统将加密所需的密钥或解密所需的密钥调度保存于缓冲器中,所述缓冲器与AES算法在加密或解密运算期间所使用的工作空间缓冲器分开。在每一 1 位块加密或解密之前,所述系统从单独的缓冲器分别还原所述密钥或经调度的密钥。或者,一些常规密码系统分别向针对经加密或经解密的每一 1 位数据块执行加密或解密的密码编译引擎提供所述密钥或经调度的密钥。此可导致对密码密钥或密钥调度的额外处置及操纵。 此额外处置及操纵可损害对所述密钥及其调度的保密。
发明内容
在一些实施方案中,密码系统可执行密钥恢复运算。在加密情况下,在加密1 位数据块结束时,所述系统可对用于加密的经调度密钥执行逆密钥调度运算以恢复原始密码密钥。此密钥可放置于密钥缓冲器中以供在下一加密过程中使用。在解密情况下,在解密 1 位数据块结束时,所述系统可对用于解密的密码密钥执行密钥调度运算以恢复密钥调度。在密码编译运算期间执行密钥恢复运算可消除需要密码编译引擎维持分别用于加密或解密的密钥或密钥调度的副本。另外,其可消除对密钥及密钥调度的不必要的处置及操纵。在加密情况下,密码系统无需针对用于加密的每一 1 位数据块将密钥重新加载到密码编译引擎中。在解密情况下,密码系统无需针对用于解密的每一 1 位数据块将密钥调度重新加载到密码编译引擎中。
图1是高级加密标准(AEQ密码编译引擎的实例性实施方案的框图。图2是高级加密标准(AES)块中所包含的AES系统的实例性实施方案的框图。图3A是展示高级加密标准(AES)运算寄存器中的位及与位值相关联的运算的表。图;3B是展示使用AES运算寄存器选择的高级加密标准(AEQ运算的执行次数的表。图4是展示AES块中的实例性高级加密标准(AES)密钥状态的状态图。图5是密码系统中的加密过程的实例性实施方案的流程图。图6是密码系统中的解密过程的实例性实施方案的流程图。图7是可包含密码系统的系统的实例性实施方案的框图。
具体实施例方式AES密码编译引擎的实施方案图1是高级加密标准(AES)密码编译引擎100的实例性实施方案的框图。引擎 100可执行AES计算,所述AES计算可包含对电子数据块进行的分别产生密文及明文的AES 加密及解密运算。引擎100可包含于密码系统中。如图1中所示,引擎100包含可向AES块102提供可启用并控制由AES块102执行的AES加密及解密运算的输入的寄存器。寄存器可为AES运算提供数据(例如,密文或明文)。寄存器可提供密码密钥数据以供在AES加密及解密运算中使用。另外,寄存器可提供与由AES块102执行的AES运算有关的结果及状态信息。寄存器可提供所述AES运算的所得数据(例如,密文或明文)。除非另有指示,否则所述寄存器含有八位(一字节)值。 下文将更详细地描述特定寄存器、其值及功能。密码系统中所包含的电力管理控制寄存器中的AES ON位可控制AES密码编译引擎100的启用。当AES ON位设定为等于0时,所述密码系统可关闭引擎100,从而使所述引擎的电流消耗最小化且将引擎100置于断电模式中。在断电模式期间,引擎100的寄存器中所含有的值不可用于读取或写入。此情况的例外情况是AES屏蔽寄存器116。所述密码系统可读取AES屏蔽寄存器116,屏蔽寄存器116可含有AES密码编译引擎100的版本号。 另外,引擎100中所包含的大多数寄存器的内容可在断电模式期间得以维持。将AES ON位设定为等于1将引擎100通电并启用所述引擎,从而将其置成计算模式。将引擎100通电
5增加其电流消耗。引擎100可使用AES运算来执行AES计算。使用AES ON位可通过在AES 密码编译引擎100未在使用中时将其断电来使包含引擎100的密码系统中的功率消耗最小化。AES运算寄存器(AESOP)可包含可输入到AES块102的六个位10 到104f。六个位10 到104f可选择密码编译类型(加密或解密)、密钥调度及AES运算中所使用的密码密钥中所含有的位数目。当被设定为等于1时,AES开始位104b (AESOP. START)可在AES块 102中开始所请求的密码编译运算(加密或解密)。当AES块102完成所请求的密码编译 (加密或解密)时,清除AES开始位104b (将其设定为等于0)。AES密码编译位10 (AES0P. CIPHER)可为加密方向(或密码编译类型选择)位。将AES密码编译位10 设定为等于1 通知AES块102其将执行AES加密。将AES密码编译位10 设定为等于0通知AES块102 其将执行AES解密。AES 密钥选择位 104e、104f (分别为 AESOP. KEYSEL0 及 AESOP. KEYSEL1)可为输入密码密钥选择三个可能的输入大小中的一者1观、192或256个位。AES块102可将所述密码密钥用于AES运算。在将AES开始位104b设定为等于1 (此开始AES运算)之前设定 AES密钥选择位l(Me、104f。在AES开始位104b等于1时对AES密钥选择位104e、104f做出的改变致使在AES块102中发生故障状况。AES块102通过清除AES开始位104b (将其设定为等于0)及将AES状态寄存器故障检测位108a设定为等于1来指示发生了故障。AES 输入数据寄存器106 (AESDI [OF])、AES输出数据寄存器114(AESD0
)及AES密钥寄存器112(AESK
)保持不变。下文将更详细地描述这些寄存器。AES 运算位 l(Mc、104d (分别为 AESOP. AES0P0 及 AESOP. AESOP 1)可在 AES 开始位 104b设定为等于1时选择起动可能的四个AES运算中的一者。清除AES运算位104c、104d 两者(将其设定为等于0)为由密码编译位10 的值确定的选定密码编译运算选择不具有密钥恢复。将AES运算位104c、104d两者设定为等于1选择循环冗余校验(CRC)密钥计算来检验输入密码密钥的完整性。清除AES运算位l(Mc (将其设定为等于0)且将AES运算位104d设定为等于1为由密码编译位10 的值确定的选定密码编译运算选择密钥恢复。 将AES运算位l(Mc设定为等于1且清除AES运算位104d (将其设定为等于0)选择AES密钥调度运算。下文将参考图3更详细地描述使用AES运算寄存器来设置且开始AES运算。密码系统可设定或清除可包含四个位IlOa到IlOd的AES控制寄存器(AESCR) 的位以控制AES块102中所执行的AES运算的方面。将XOR密钥数据输入位110a(AESCR. XKDI)设定为等于1允许对写入到选定输入数据寄存器(例如,AES输入数据寄存器 106(AESDI
))的输入数据与所述寄存器中已含有的数据进行“异或”运算(X0R运算)。清除XOR密钥数据输入位IlOa(将其设定为等于0)允许AES密码编译引擎100直接将数据写入到选定输入数据寄存器(例如,AES输入数据寄存器106),从而盖写所述数据寄存器中所含有的任何先前数据。将M)R密钥数据输入位IlOa设定为等于1还可允许对写入到选定密钥寄存器(例如,密钥寄存器112(AESKW...31]))的输入数据与所述密钥寄存器中已含有的数据进行 “异或”运算(X0R运算)。清除XOR密钥数据输入位IlOa(将其设定为等于0)允许AES密码编译引擎100直接将数据写入到选定密钥寄存器(例如,密钥寄存器11 ,从而盖写所述密钥寄存器中所含有的任何先前数据。
在一些实施方案中,密码系统可在实施基于AES的密码编译块链接消息验证代码 (CBC-MAC)算法时将XOR密钥数据输入位IlOa设定为等于1。对XOR密钥数据输入位IlOa的设定或清除可在将AES开始位104b设定为等于 1(此起始密码编译运算)之前发生或与其同时发生。可不在AES计算期间(以将AES开始位104b设定为等于1之后开始到AES计算结束时)写入XOR密钥数据输入位110a。密钥数据寄存器位IlOb及IlOc (分别为AESCR. RTKDRO及AESCR. RTKDR1)的结果可确定将AES块运算的结果存储于何处。在图1中所示的实施方案中,清除密钥数据寄存器位IlOb的结果(将其设定为等于0)。在清除密钥数据寄存器位IlOb的结果(将其设定为等于0)时将密钥数据寄存器位IlOc的结果设定为等于1将AES块102中所执行的AES 块运算的结果存储于输出数据寄存器114(AESD0
)及输入数据寄存器106中。在保持密钥数据寄存器位IlOb的结果被清除的同时清除密钥数据寄存器位IlOc的结果(将其设定为等于0)将AES块102中所执行的AES块运算的结果存储于输出数据寄存器114 中。对密钥数据寄存器位IlOb及IlOc的设定或清除可与将AES开始位104b设定为等于1同时发生。在已将AES开始位104b设定为等于1时设定或清除密钥数据寄存器位 IlOb及IlOc的结果可致使在AES块102中发生故障状况。AES块102通过清除AES开始位 104b (将其设定为等于0)及将AES状态寄存器故障检测位108a设定为等于1指示发生了故障。AES输入数据寄存器106 (AESDI
)、AES输出数据寄存器114(AESD0
) 及AES密钥寄存器112(AE9(
)保持不变。AES数据屏蔽启用位IlOd(AESCR. DATAMSK)控制AES密码编译引擎100中的数据屏蔽特征。将AES数据屏蔽启用位IlOd设定为等于1启用所述数据屏蔽特征。清除AES 数据屏蔽启用位IlOd(将其设定为等于0)停用所述数据屏蔽特征。当被启用时,所述数据屏蔽特征可用AES屏蔽寄存器116 (AESMSK)的内容屏蔽AES输入数据寄存器106中所含有的用于加密或解密的输入数据。下文将更详细地对此进行描述。AES密码编译引擎100可包含AES CRC寄存器118 (AESCRC0及AESCRC1),当组合时,所述AES CRC寄存器含有对用于AES运算的输入密码密钥执行的循环冗余校验(CRC)的 16位结果。引擎100可对1观、192及256个位的输入密码密钥执行CRC校验。AES块102 可使用对所述密钥执行的CRC的结果来在所述密钥用于任何AES运算之前检测所述密钥的任何数据损坏。AES密码编译引擎100可包含可含有一字节(八位)屏蔽值的AES屏蔽寄存器 Iie(AESMSK)。密码系统给屏蔽寄存器116加载一字节屏蔽值。在AES运算开始之前,引擎 100可在逐字节基础上借助屏蔽寄存器116屏蔽输入密码密钥数据。与AES运算开始同时, 引擎100还可在逐字节基础上借助所述屏蔽寄存器屏蔽用于加密或解密的输入数据。AES密码编译引擎100可在逐字节基础上通过对屏蔽寄存器116中的值与输入密码密钥的每一字节进行“异或”运算(X0R运算)来用所述密钥的值屏蔽屏蔽寄存器116的内容。引擎100可将所得的经屏蔽密钥写入到密钥寄存器112中。密钥屏蔽可在任何AES 运算开始之前发生。如果清除XOR密钥数据输入位IlOa(将其设定为等于0),那么可发生以刚刚描述的方式对输入密码密钥的屏蔽。将XOR密钥数据输入位IlOa设定为等于1允许对写入到密钥寄存器112的输入密钥数据与密钥寄存器112中已含有的数据进行“异或”运算(X0R运算)。在一些实施方案中,AES密码编译引擎100可执行密码密钥CRC计算。可在逐字节基础上对输入密码密钥数据与屏蔽寄存器116的内容进行“异或”运算(X0R运算)。引擎 100可将所得的经XOR运算的密钥字节写入到密钥寄存器112。密钥寄存器112可为AES CRC计算引擎的输入(例如,包含于AES块102中)。所述CRC计算引擎可使用AES CRC寄存器118中所含有的值作为供在CRC计算中使用的初始值来执行所述CRC计算。如果在AES运算开始时将AES屏蔽寄存器116中的AES数据屏蔽启用位IlOd设定为等于1,那么AES密码编译引擎100可借助输入数据寄存器106中的每一者屏蔽屏蔽寄存器116。AES密码编译引擎100可通过对屏蔽寄存器116中的值与输入数据寄存器中的值进行“异或”运算(X0R运算)来执行所述屏蔽。AES块102可接收所得的经屏蔽输入数据寄存器。当AES ON位设定为等于0时,可将AES密码编译引擎100置于关闭模式中。在此模式中,所述密码系统可读取可含有引擎100的版本号的AES屏蔽寄存器116。所述密码系统可读取屏蔽寄存器116且确定所述系统中所包含的引擎100的版本号。AES输出数据寄存器114(AESD0
)可为16个八位(一字节)寄存器,其含有由AES密码编译引擎100中的AES块102执行的AES计算的结果。AES输入数据寄存器 114(AESDI
)可为16个八位(一字节)寄存器,其含有由AES密码编译引擎100中的AES块102执行的AES计算中所使用的用于加密或解密的输入数据。在起始引擎100中的AES运算的开始之前,密码系统从数据总线120给输入数据寄存器114加载用于加密或解密的输入数据。如先前所描述,还可在起始AES运算的开始之前对输入数据寄存器114 中所含有的输入数据有条件地执行屏蔽操作。AES密钥寄存器112(AESKW...31])可为32个八位(一字节)寄存器,其含有供在由AES密码编译引擎100中的AES块102执行的AES计算中使用的密码密钥值。所述密码系统针对数据总线120给密钥寄存器112加载可为1观、192或256个位(分别为16个字节、M个字节或32个字节)的密码密钥。如先前所描述,还可对密钥寄存器112选择性地执行屏蔽操作。所述密码系统可读取AES状态寄存器(AESSR)的位以确定与AES密码编译引擎 100有关的状态信息及与由AES块102执行的AES运算有关的状态信息。当AES块102已完成AES计算时,可将AES中断旗标位108b (AESSR. AESIRQ)设定为等于1。如果所述密码系统中所包含的额外寄存器位经适当设定,那么设定中断旗标位108b可致使在所述密码系统中产生中断。当被设定为等于1时,故障检测位108a(AESSR. FAULT)指示在AES块102正执行 AES运算时发生了问题。在一些实施方案中,AES块102可通过将其内部状态与所请求的运算进行比较来检测所述问题。举例来说,AES块102可在AES块102接收到无效请求时将故障检测位108a设定为等于1。在另一实例中,AES块102可在内部校验其运算一致性且可在发生不一致时将故障检测位108a设定为等于1。在替代实例中,AES块102可计数其对输入数据块执行的 AES回合的数目。AES块102可确定所述AES块应对1 位数据块执行的回合数目,因为所述回合数目是基于AES运算中所使用的密钥的大小(例如,使用1 位密钥的AES密码编译器对1 位数据块执行10个回合)。如果实际回合数目与所计算的回合数目不同,那么 AES块102可将故障检测位108a设定为等于1。如果在AES块102进行AES计算期间发生故障,那么在所述AES计算结束时由AES 块102将故障检测位108a设定为等于1,同时将中断旗标位108b设定为等于1。在一些情况下,AES块102检测AES计算期间的故障可导致AES块102继续错误的AES计算。举例来说,AES块102可使用损坏的密钥或者AES块102的由所述AES计算产生的输出数据可被损坏。在一些情况下,AES块102可准备故障检测位108a的设定且在完成从而导致错误的输出数据之前停止所述AES计算。基本AES算法AES算法可对称作如下状态的4X4矩阵执行AES运算,在所述状态中所述矩阵中的每一元是一个数据字节(八个位)。所述状态含有总共16个数据字节或1 个数据位。 AES算法的用于加密或解密的输入字节阵列还为组织成4X4矩阵的1 个数据位。对使用所述状态的输入数据执行AES运算以产生输出数据,所述输出数据也呈4X4矩阵的形式, 其中所述矩阵中的每一元是一个字节(八个位)。AES算法对每一 1 位数据块执行多个 AES运算回合。可基于密码密钥的大小来确定回合数目。密码系统可将大于1 个位的输入数据划分成若干1 个数据位。可将这些数据块连续地输入到如图1中所示的AES块 102 中。—回合中的所有AES运算均为可逆的。AES块102可逆转且以相反次序执行用于执行输入数据的加密的运算以执行输入数据的解密。在输入数据的加密中,AES块102可将密码密钥扩展为密钥调度。AES算法可取得所述密钥且执行密钥扩展例程来产生密钥调度。所述密钥调度可将密钥扩展成若干单独的密钥(子密钥),其中AES块102可将所述子密钥用于AES算法的每一回合。所述子密钥还可称作回合密钥。密钥扩展例程可使用AES运算来扩展密钥,其中经扩展密钥的长度可等于块大小*回合数目+1(例如,1 位密钥扩展为176字节密钥,192位密钥扩展为208字节密钥,且256位密钥扩展为240字节密钥)。AES块102可将所述经扩展密钥的不同部分用于AES算法的每一回合。在输入数据的解密中,AES块102可使用密钥调度来解密所述输入数据。AES块102可执行逆密钥调度运算来产生用于加密所述输入数据的密码密钥。使用密钥恢复的AES块的实施方案图2是图1的高级加密标准(AES)块102中所包含的AES系统200的实施方案的框图。系统200可使用密钥恢复来执行用于1 位输入数据块的加密或解密的AES运算。 一旦所述1 位输入数据块的加密或解密完成,便将结果输出到AES密码编译引擎100且系统200可接收用于下一 1 位数据块加密或解密的输入数据。如图2中所示,系统200包含输入/输出数据块202。输入/输出数据块202可将用于加密或解密的1 位输入数据块提供到AES数据处理加密/解密块204。输入/输出数据块202还可从AES数据处理加密/解密块204接收所得的经加密或或经解密1 位输出数据块。数据处理加密/解密块204可对由输入/输出数据块202接收的每一 1 位数据块执行AES运算。在使用AES密码编译引擎100开始数据加密或解密之前,密码系统可将密码密钥加载到密钥寄存器112中,如图1中所示。在第一 1 位输入数据块的加密或解密开始之前,可将密钥寄存器112加载到密钥寄存器块208中。当执行数据加密或解密时,AES密钥处理加密/解密块206可使用密码密钥执行密钥扩展例程以产生密钥调度。密钥寄存器块208可在任何AES加密运算开始之前最初存储所述密码密钥。密钥寄存器块208可足够大以缓冲整个密钥(例如,256个位或32个字节(例如,密钥寄存器112)),其中所述密钥可为1观、192或最大256个位。在对系统200中的第一 1 位输入数据块的加密或解密运算期间,可盖写从密钥寄存器112加载到密钥寄存器块208中的初始密码密钥。在执行密码编译运算时可使用含有密钥值的寄存器作为工作空间。在对下一 1 位输入数据块执行后续加密或解密运算之前,系统200可将所述密码密钥还原到密钥寄存器块208中。不同密钥寄存器块及密钥调度运算的实施方案在一些实施方案中,在每一 1 位输入数据块加密或解密运算之前,AES密码编译系统100可将密钥寄存器112加载到寄存器块208中。此实施方案可需要针对已处理的每一 1 位数据块处置密码密钥一次。对于大的数据块,此可导致对密码密钥的大数目次操纵。另外,在一些实施方案中,系统200可每次在将密码密钥从密钥寄存器112加载到寄存器块208中时校验所述密码密钥的完整性。此可增加AES密码编译引擎100的计算吞吐量。在一些实施方案中,系统100可将所述密码密钥的两个副本存储于密钥寄存器块 208中。在执行加密或解密运算时,可保存所述密钥的一个副本且将其用于还原可在工作空间计算期间被盖写的所述密钥的另一副本。此实施方案可需要密钥寄存器块208中的额外寄存器以用于存储所述密码密钥,从而增加密钥寄存器块208的门计数。此增加包含AES 密码编译引擎100的集成处理器的门计数。增加的门计数可增加集成处理器的占用面积且增加其能量消耗。在一些实施方案中,系统200可在系统200执行第一 1 位输入数据块的加密之后将密码密钥还原到密钥寄存器块208中。系统200可对用于加密第一 1 位输入数据块的密钥调度执行使用逆密钥调度的密钥恢复运算以恢复加密下一 1 位输入数据块所需的密码密钥。产生密钥调度并将其用于加密1 位输入数据块导致更改密钥数据,使得初始密码密钥值不再可用于系统200。系统200可在第一 1 位输入数据块经加密之后且在加密下一 1 位输入数据块之前执行密钥恢复运算。系统200可将所恢复的密钥存储于保存从密钥寄存器112接收的初始密码密钥的相同寄存器中的密钥寄存器块208中。系统 200可在第一 1 位输入数据块已经加密且输出到输出数据块202时盖写可能已用作用于加密运算的工作空间的这些寄存器中所含有的任何数据。在一些实施方案中,系统200可在系统200执行第一 1 位输入数据块的解密之后将密钥调度还原到密钥寄存器块208中。解密可使用加密所使用的相同的AES运算。然而,将所述运算逆转且接着以相反次序实施。第一 1 位输入数据块的解密以初始密钥调度开始。逆密钥调度运算可确定用于加密原始数据的原始密码密钥。所述逆密钥调度运算及其在解密1 位输入数据块中的使用可导致更改密钥调度数据,使得初始密钥调度数据不再可用于系统200。系统200可在第一 1 位输入数据块经解密之后且在解密下一 1 位输入数据块之前执行密钥恢复运算。所述密钥恢复运算通过对所得的密码密钥运行密钥扩展运算来执行密钥调度运算以产生并还原密钥调度。系统200可将所恢复的密钥调度存储于保存初始密钥调度的相同寄存器中的密钥寄存器块208中。系统200可在第一 1 位输入数据块已经解密且输出到输出数据块202时盖写可能已用作用于解密的工作空间的这些寄存器中所含有的任何数据。密钥恢复运算可增加AES密码编译引擎100的计算吞吐量。然而,AES块102不需要引擎100将密钥寄存器112加载到密钥寄存器块208中以还原密码密钥,从而导致较少的密钥操纵及计算,因为系统200可每次在将密钥值加载到系统200中时校验所述密钥值的完整性。另外,由于因密码密钥也不保存于密钥寄存器块208中而使用较少的寄存器, 因此密钥寄存器块208中可需要较少的门。在一些实施方案中,图1中的AES密码编译引擎100可为密码系统中所包含的集成处理器,所述密码系统可包含用于在所述密码系统中执行特定运算的额外集成处理器。 可期望使引擎100的占用面积最小化以帮助使所述密码系统的占用面积最小化。减少引擎 100中的AES块102中所包含的系统200中的密钥存储所需的寄存器的数目可帮助减小集成处理器的大小及密码系统整体的大小。AES运算寄存器图3A是展示高级加密标准(AEQ运算寄存器中的位及与位值相关联的运算的表300。参考图1,AES运算寄存器(AESOP)包含AES运算位l(Mc、104d(分别为AESOPO 及AES0P1)、AES密钥选择位l(Me、104f (分别为KEYSEL0及KEYSEL1)及AES密码编译位 104a (CIPHER)。当AES开始位104b设定为等于1时,AES运算位104c、104d可选择起动可能的四个AES运算中的一者具有密钥恢复的密码编译运算、不具有密钥恢复的密码编译运算、密钥调度运算或CRC计算。AES密码编译位10 可在加密与解密运算之间进行选择。AES密钥选择位104e、104f可选择三个可能的输入大小中的一者用于输入密码密钥1观、192或 256个位。清除AES运算位104c、104d两者(将其设定为等于0)选择不具有密钥恢复的运算。另外,清除AES密钥选择位104e、104f两者(将其设定为等于0)选择使用1 位密钥的不具有密钥恢复的AES运算。清除AES密码编译位104a(将其设定为等于0)或将其设定为等于1分别确定所述运算将是解密还是加密。清除AES运算位104c、104d两者(将其设定为等于0)选择不具有密钥恢复的运算。另外,将AES密钥选择位l(Me设定为等于1且清除AES密钥选择位104f (将其设定为等于0)选择使用192位密钥的不具有密钥恢复的AES运算。清除AES密码编译位104a (将其设定为等于0)或将其设定为等于1分别确定所述运算将是解密还是加密。清除AES运算位104c、104d两者(将其设定为等于0)选择不具有密钥恢复的运算。另外,清除AES密钥选择位l(Me (将其设定为等于0)且将AES密钥选择位104f设定为等于1选择使用256位密钥的不具有密钥恢复的AES运算。清除AES密码编译位104a (将其设定为等于0)或将其设定为等于1分别确定所述运算将是解密还是加密。清除AES运算位104d (将其设定为等于0)且将AES运算位l(Mc设定为等于1选择密钥调度运算。另外,清除AES密钥选择位l(Me、104f两者(将其设定为等于0)选择使用1 位密钥的密钥调度运算。清除AES密码编译位10 (将其设定为等于0)或将其设定为等于1分别确定所述密钥调度运算将是密钥调度运算还是逆密钥调度运算。清除AES运算位104d (将其设定为等于0)且将AES运算位l(Mc设定为等于1选择
11密钥调度运算。另外,将AES密钥选择位l(Me设定为等于1且清除AES密钥选择位104f (将其设定为等于0)选择使用192位密钥的密钥调度运算。清除AES密码编译位104a(将其设定为等于0)或将其设定为等于1分别确定所述密钥调度运算将是密钥调度运算还是逆密钥调度运算。清除AES运算位104d (将其设定为等于0)且将AES运算位l(Mc设定为等于1选择密钥调度运算。另外,清除AES密钥选择位l(Me (将其设定为等于0)且将AES密钥选择位104f设定为等于1选择使用256位密钥的密钥调度运算。清除AES密码编译位104a (将其设定为等于0)或将其设定为等于1分别确定所述密钥调度运算将是密钥调度运算还是逆密钥调度运算。清除AES运算位l(Mc (将其设定为等于0)且将AES运算位104d设定为等于1选择具有密钥恢复的运算。另外,清除AES密钥选择位l(Me、104f两者(将其设定为等于0) 选择使用1 位密钥的具有密钥恢复的AES运算。清除AES密码编译位104a(将其设定为等于0)或将其设定为等于1分别确定所述运算将是解密还是加密。 清除AES运算位l(Mc (将其设定为等于0)且将AES运算位104d设定为等于1选择具有密钥恢复的运算。另外,将AES密钥选择位10 设定为等于1且清除AES密钥选择位104f (将其设定为等于0)选择使用192位密钥的具有密钥恢复的AES运算。清除AES 密码编译位104a (将其设定为等于0)或将其设定为等于1分别确定所述运算将是解密还是加密。清除AES运算位l(Mc (将其设定为等于0)且将AES运算位104d设定为等于1选择具有密钥恢复的运算。另外,清除AES密钥选择位10 (将其设定为等于0)且将AES密钥选择位104f设定为等于1选择使用256位密钥的具有密钥恢复的AES运算。清除AES 密码编译位104a(将其设定为等于0)或将其设定为等于1分别确定所述运算将是解密还是加密。将AES运算位l(Mc、104d两者设定为等于1选择密钥CRC计算。另外,清除AES 密钥选择位104e、104f两者(将其设定为等于0)且清除AES密码编译位104a (将其设定为等于0)选择AES-U8密钥CRC运算。将AES运算位l(Mc、104d两者设定为等于1选择密钥CRC计算。另外,将AES密钥选择位l(Me设定为等于1、清除AES密钥选择位104f (将其设定为等于0)且清除AES密码编译位104a (将其设定为等于0)选择AES-192密钥CRC运算。将AES运算位l(Mc、104d两者皆设定为等于1选择一密钥CRC计算。另外,清除 AES密钥选择位l(Me (将其设定为等于0)、将AES密钥选择位104f设定为等于1且清除 AES密码编译位104a (将其设定为等于0)选择AES-256密钥CRC运算。AES计算定时图;3B是展示使用AES运算寄存器选择的AES运算354的执行次数352 (以中央处理单元(CPU)循环计)的表350。图3A中的表300展示用于选择AES运算3M的AES运算寄存器的位的值。一般来说,使用较大密码密钥的AES运算需要完成较多CPU循环。使用密钥恢复的AES运算还使用较多CPU循环。然而,CPU循环的增加可由存储密码密钥所需的密钥寄存器的数目的减少(从而减小集成处理器的大小)而抵消。另外,密钥恢复减少密码密钥的不必要操纵量,从而减少密码系统中的安全性问题。AES密钥状态4是展示AES块(例如,图1中的AES块102)中的实例性高级加密标准(AES) 密钥状态的状态图400。图示400展示加密及解密中所使用的AES密码密钥的可能的密钥状态及密钥值。图示400展示所述密钥可演变的方式与AES块所执行的运算之间的联系。 图4中所示的AES运算可为由图3中所示的高级加密标准(AES)运算寄存器中的位选择且由AES块102中所包含的图2中的AES系统200执行的AES运算。互连线展示AES运算。实线展示符合FIPS-197 AES标准的运算。虚线展示不符合FIPS-197 AES标准的运算,所述FIPS-197 AES标准可涉及AES运算的不寻常使用。当AES块处于密钥状态402中时,执行具有密钥恢复的AES加密运算404可使AES 块返回到密钥状态402。当AES块处于密钥调度状态406中时,执行具有密钥恢复的AES解密运算408可使AES块返回到密钥调度状态404。当AES块处于密钥状态402中时,执行不具有密钥恢复的AES加密运算410可将 AES块置于密钥调度状态406中。当AES块处于密钥调度状态406中时,执行不具有密钥恢复的AES解密运算412可将AES块置成密钥调度状态402。当AES块处于密钥状态402中时,执行密钥调度运算414可将AES块置于密钥调度状态402中。当AES块处于密钥调度状态406中时,执行逆密钥调度运算416可将AES 块置于密钥调度状态406中。不符合的运算可导致AES块转变成非预期状态。当AES块处于密钥状态402中时,执行不具有密钥恢复的AES解密运算418可将AES块置成非预期密钥状态420。当AES 块处于密钥状态402中时,执行逆密钥调度运算420可将AES块置成非预期密钥状态422。 当AES块处于密钥状态402中时,执行具有密钥恢复的AES解密运算432可将AES块置成密钥状态402。然而,AES解密运算使用密钥调度作为其输入密钥,因此所述AES块将不可能执行此运算。当处于密钥调度状态406中时,执行不具有密钥恢复的AES加密运算4M可将AES 块置成非预期密钥状态426。当处于密钥调度状态406中时,执行密钥调度运算4 可将 AES块置成非预期密钥状态430。当AES块处于密钥调度状态406中时,执行具有密钥恢复的AES加密运算434可将AES块置成密钥调度状态402。然而,AES加密运算使用密钥作为其输入密钥,因此所述AES块将不可能执行此运算。加密过程的实施方案图5是密码系统中的加密过程500的实施方案的流程图。所述密码系统可包含图 1中所示的AES密码编译引擎100。所述加密过程可使用如图1到图4中所描述的AES算法。过程500以密码系统接收用于加密的数据块开始(步骤502)。所述密码系统确定数据子块中所包含的位数目,其中所述数据子块的大小小于所接收数据块的大小(步骤 504)。举例来说,如参考图1所描述,供在AES算法中使用的数据子块可为1 个位。可将输入数据块划分成若干数据子块,其中每一数据子块为1 个位。所述密码系统确定所述输入数据块中所包含的1 位数据块的数目η (步骤506)。接下来,所述密码系统获得密码密钥(步骤508)。所述密码系统使用AES算法及所述密码密钥来加密第η个1 位数据子块(步骤510)。举例来说,所述密码系统中所包含的AES密码编译引擎100可加密第η个 1 位数据子块。所述密码系统使用密钥恢复运算来恢复所述密码密钥(步骤512)。举例来说,所述密码系统中的AES密码编译引擎100中的AES块102可包含恢复所述密钥以供在下一子块加密中使用的密钥恢复运算。所述密码系统可使数据子块的数目递减(步骤514)。如果存在待加密的剩余数据子块(在步骤516中η不等于0),那么过程500继续到步骤510。 接着,所述密码系统使用步骤512中恢复的密钥来加密另一数据子块。如果不存在待加密的剩余数据子块(在步骤516中η等于0),那么所述密码系统可输出经加密的所接收数据块(步骤518)。过程500结束。在一些实施方案中,过程500可以第一子块开始且以第η个子块结束来加密所述数据子块,其中输入数据块包含η个子块。解密过程的实施方案图6是密码系统中的解密过程600的实施方案的流程图。所述密码系统可包含图 1中所示的AES密码编译引擎100。所述解密过程可使用如图1到图4中所描述的AES算法。过程600以密码系统接收用于解密的数据块开始(步骤602)。所述密码系统确定数据子块中所包含的位数目,其中所述数据子块的大小小于所接收数据块的大小(步骤 604)。举例来说,如参考图1所描述,供在AES算法中使用的数据子块可为1 个位。可将输入数据块划分成若干数据子块,其中每一数据子块为1 个位。所述密码系统确定所述输入数据块中所包含的1 位数据块的数目η (步骤606)。接下来,所述密码系统获得密钥调度(步骤608)。所述密码系统使用AES算法及所述密钥调度来解密第η个1 位数据子块(步骤610)。举例来说,所述密码系统中所包含的AES密码编译引擎100可解密第η个 1 位数据子块。所述密码系统使用逆密钥恢复运算来恢复所述密钥调度(步骤612)。举例来说, 所述密码系统中的AES密码编译引擎100中的AES块102可包含恢复所述密钥调度以供在下一子块解密中使用的逆密钥恢复运算。所述密码系统可使数据子块的数目递减(步骤 614)。如果存在待解密的剩余数据子块(在步骤616中η不等于0),那么过程600继续到步骤610。接着,所述密码系统使用步骤612中恢复的密钥来解密另一数据子块。如果不存在待解密的剩余数据子块(在步骤616中η等于0),那么所述密码系统可输出经解密的所接收数据块(步骤618)。过程600结束。在一些实施方案中,过程600可以第一子块开始且以第η个子块结束来解密所述数据子块,其中输入数据块包含η个子块。系统架构图7是可包含密码系统的系统的实施方案的框图,所述密码系统可包含如图1中所示的高级加密标准(AEQ密码编译引擎。系统700包含处理器710、存储器720、存储装置730及输入/输出装置740。组件710、720、730及740中的每一者是使用系统总线750 互连的。处理器710能够处理用于在系统700内执行的指令。在一些实施方案中,处理器 710为单线程处理器。在另一实施方案中,处理器710为多线程处理器。处理器710能够处理存储器720中或存储装置730上所存储的指令以在输入/输出装置740上显示用户接口的图形信息。存储器720存储系统700内的信息。在一些实施方案中,存储器720为计算机可读媒体。在其它实施方案中,存储器720为易失性存储器单元。在又一些实施方案中,存储器720为非易失性存储器单元。存储装置730能够为系统700提供大容量存储。在一些实施方案中,存储装置730 为计算机可读媒体。在各种不同实施方案中,存储装置730可为软盘装置、硬盘装置、光盘装置或磁带装置。输入/输出装置740为系统700提供输入/输出操作。在一些实施方案中,输入/ 输出装置740包含键盘及/或指向装置。在其它实施方案中,输入/输出装置740包含用于显示图形用户接口的显示单元。所描述的特征可实施于数字电子电路中或计算机硬件、固件、软件中或其组合中。 所述特征可实施于有形地体现于信息载体中(例如,机器可读存储装置中或所传播的信号中)以供可编程处理器执行的计算机程序产品中;且方法步骤可由可编程处理器执行,所述可编程处理器执行指令程序以通过对输入数据进行操作并产生输出来执行所描述实施方案的功能。所描述的特征可有利地实施于可在可编程系统上执行的一个或一个以上计算机程序中,所述可编程系统包含至少一个可编程处理器(其经耦合以从数据存储系统接收数据及指令且将数据及指令传输到所述数据存储系统)、至少一个输入装置及至少一个输出装置。计算机程序是计算机中可直接或间接用于执行某一活动或引起某一结果的指令集。可以任一形式的程序设计语言(包含编译语言或解释语言)写入计算机程序,且可以任一形式部署所述计算机程序,包含部署为独立程序或部署为模块、组件、子例程或适合在计算环境中使用的其它单元。举例来说,用于执行指令程序的适合处理器包含通用及专用微处理器两者及任一种计算机的唯一处理器或多个处理器中的一者。一般来说,处理器将从只读存储器或随机存取存储器或两者接收指令及数据。计算机的基本元件为用于执行指令的处理器及用于存储指令及数据的一个或一个以上存储器。一般来说,计算机还将包含用于存储数据文件的一个或一个以上大容量存储装置或以操作方式耦合以与其通信;此些装置包含磁盘(例如,内部硬盘及可装卸磁盘);磁光盘;及光盘。适合于有形地体现计算机程序指令及数据的存储装置包含所有形式的非易失性存储器,举例来说,包含半导体存储器装置(例如, EPROM、EEPROM及快闪存储器装置);磁盘(例如,内部硬盘及可装卸磁盘);磁光盘;以及 CD-ROM及DVD-ROM磁盘。所述处理器及所述存储器可由ASIC (专用集成电路)补充或并入于ASIC中。为实现与用户的交互,所述特征可实施于具有用于向所述用户显示信息的显示装置(例如,CRT(阴极射线管)或LCD(液晶显示器)监视器)及所述用户可借以向计算机提供输入的键盘及指向装置(例如,鼠标或轨迹球)的计算机上。所述特征可实施于包含后端组件(例如数据服务器)或包含中间软件组件(例如应用程序服务器或因特网服务器)或包含前端组件(例如具有图形用户接口或因特网浏览器的客户端计算机)或其任一组合的计算机系统中。所述系统的组件可通过任一数字数据通信形式或媒体(例如通信网络)来连接。通信网络的实例包含(例如)LAN、WAN以及形成因特网的计算机及网络。
所述计算机系统可包含客户端及服务器。客户端与服务器通常彼此远离且通常经由网络交互。客户端与服务器的关系借助运行于相应计算机上且彼此之间具有客户端-服务器关系的计算机程序而出现。已描述若干实施方案。然而,将理解,可做出各种修改。举例来说,可组合、删除、 修改或补充一个或一个以上实施方案的元件以形成其它实施方案。所述图中所描绘的逻辑流程未必需要所展示的特定次序或顺序次序来实现所要的结果。另外,可提供其它步骤,或可从所描述的流程消除若干步骤,且可向所描述的系统添加或从所描述的系统移除其它组件。因此,其它实施方案也在以上权利要求书的范围内。
权利要求
1.一种密码系统,其包括 寄存器,其含有密钥;处理器,其耦合到所述寄存器且可操作以用于执行第一加密运算,所述加密运算包含使用所述寄存器作为工作空间来计算密钥调度;及在所述第一加密运算结束时,从所述寄存器恢复所述密钥以供在第二加密运算中使用。
2.根据权利要求1所述的系统,其中恢复所述密钥包括 运行逆密钥调度运算。
3.一种密码系统,其包括 寄存器,其含有密钥;处理器,其耦合到所述寄存器且可操作以用于执行第一解密运算,所述解密运算包含使用所述寄存器作为工作空间来计算逆密钥调度;及在所述第一解密运算结束时,从所述寄存器恢复所述密钥以供在第二解密运算中使用。
4.根据权利要求4所述的系统,其中恢复所述密钥包括 运行密钥调度运算。
5.一种用于在密码系统中加密数据的方法,所述方法包括 接收用于加密的数据块;确定数据子块中的位数目,其中数据子块中的所述位数目小于或等于所述数据块中的位数目;确定构成所述数据块的多个数据子块; 获得密钥;对第一数据子块执行加密运算,其中所述加密运算包括 使用所述密钥加密所述第一数据子块;及恢复所述密钥;及使用所述所恢复的密钥对第二数据子块执行所述加密运算。
6.根据权利要求5所述的方法,其中恢复所述密钥包括 运行逆密钥调度运算。
7.根据权利要求5所述的方法,其中所述位数目为128。
8.一种用于在密码系统中解密数据的方法,所述方法包括 接收用于解密的数据块;确定数据子块中的位数目,其中数据子块中的所述位数目小于或等于所述数据块中的位数目;确定构成所述数据块的多个数据子块; 获得密钥调度;对第一数据子块执行解密运算,其中所述解密运算包括 使用所述密钥调度解密所述第一数据子块;及恢复所述密钥调度;及使用所述所恢复的密钥调度对第二数据子块执行所述解密运算。
9.根据权利要求8所述的方法,其中恢复所述密钥包括 运行密钥调度运算。
10.根据权利要求8所述的方法,其中所述位数目为128。
11.一种用于在密码系统中加密数据的系统,所述系统包括 接口,其可操作以用于接收用于加密的数据块;及处理器,其耦合到所述接口,所述处理器可操作以用于 确定数据子块中的位数目,其中数据子块中的所述位数目小于或等于所述数据块中的位数目;确定构成所述数据块的多个数据子块; 获得密钥;对第一数据子块执行加密运算,其中所述加密运算包括 使用所述密钥加密所述第一数据子块;及恢复所述密钥;及使用所述所恢复的密钥对第二数据子块执行所述加密运算。
12.根据权利要求11所述的系统,其中恢复所述密钥包括 运行逆密钥调度运算。
13.根据权利要求11所述的系统,其中所述位数目为128。
14.一种用于在密码系统中解密数据的系统,所述系统包括 接口,其可操作以用于接收用于解密的数据块;及处理器,其操作地耦合到所述接口,所述处理器可操作以用于 确定数据子块中的位数目,其中数据子块中的所述位数目小于或等于所述数据块中的位数目;确定构成所述数据块的多个数据子块; 获得密钥调度;对第一数据子块执行解密运算,其中所述解密运算包括 使用所述密钥调度解密所述第一数据子块;及恢复所述密钥调度;及使用所述所恢复的密钥调度对第二数据子块执行所述解密运算。
15.根据权利要求14所述的系统,其中恢复所述密钥包括 运行密钥调度运算。
16.根据权利要求14所述的系统,其中所述位数目为128。
全文摘要
本发明涉及一种密码系统,其可包含含有密钥的寄存器及耦合到所述寄存器的处理器。所述处理器可为可操作的以用于执行第一加密运算,其中所述加密运算包含使用所述寄存器作为工作空间来计算密钥调度。在所述第一加密运算结束时,从所述寄存器恢复所述密钥以供在第二加密运算中使用。
文档编号H04L9/06GK102334307SQ201080009480
公开日2012年1月25日 申请日期2010年2月25日 优先权日2009年2月27日
发明者文森特·杜帕丘斯, 米歇尔·杜盖 申请人:爱特梅尔卢梭公司