优先权要求
本专利申请要求于2018年2月23日提交的题为“密码处理器中差分功率分析(dpa)弹性安全性的方法和装置”的、申请号为15/904,222的优先权,并且转让给本申请的受让人,并且明确地通过引用并入于此。
本公开的各方面总体上涉及处理器,并且更具体地涉及对差分功率分析(dpa)攻击具有弹性的处理器。
背景技术:
可以在发送设备上对敏感数据进行加密,以提供数据到接收设备的安全通信。例如,发送设备可以使用密钥来加密数据,并且接收设备可以使用密钥来解密经加密的数据,其中密钥仅对于发送设备和接收设备是已知的。为了维持安全性,需要保护密钥免受软件攻击和硬件攻击。攻击者检索密钥的越来越流行的技术是差分功率分析(dpa),其中攻击者测量在发送设备和/或接收设备上的密码处理器的功率分布图,以辨别1和0的唯一功率签名。这允许攻击者在编译和分析足够功率测量之后检索密钥。
技术实现要素:
下面呈现了一个或多个实现方式的简化概述,以便提供对这样的实现方式的基本理解。该概述不是对所有预期实现方式的广泛概述,并且既不旨在标识所有实现方式的关键元素或重要元素,也不旨在描绘任何实现方式或所有实现方式的范围。其唯一目的是以简化形式呈现一个或多个实现方式的一些概念,以作为稍后呈现的具体实施方式的序言。
第一方面涉及一种电路。该电路包括动态差分逻辑门,具有第一输出和第二输出;以及第一静态差分逻辑门,具有第一输出和第二输出以及分别耦合到该动态差分逻辑门的第一输出和第二输出的第一输入和第二输入。动态差分逻辑门被配置为接收时钟信号,并且被配置为在时钟信号的第一阶段期间将动态差分逻辑门的第一输出和第二输出两者预设为第一预设值。第一静态差分逻辑门被配置为当第一预设值被输入到第一静态差分逻辑门的第一输入和第二输入两者时,将第一静态差分逻辑门的第一输出和第二输出两者预设为第二预设值。
第二方面涉及一种处理器。该处理器包括第一差分锁存器,该第一差分锁存器被配置为锁存第一互补数据,并且输出锁存的第一互补数据。该处理器还包括第一管线,该第一管线被配置为在锁存的第一互补数据上执行第一运算,以生成第二互补数据。第一管线包括在第一管线的第一级中的一个或多个动态差分逻辑门,以及在第一管线的第二级中的一个或多个静态差分逻辑门。在第一级中的一个或多个动态差分逻辑门中的每个动态差分逻辑门被配置为,接收时钟信号、并且在时钟信号的第一阶段期间将相应输出预设为第一预设值。
第三方面涉及一种差分逻辑门。该差分逻辑门包括第一逻辑门和第二逻辑门。第一逻辑门包括串联耦合在第一输出与供电轨之间的第一多个p型场效应晶体管(pfet),串联耦合在第一输出与供电轨之间的第二多个pfet,串联耦合在第一输出与接地之间的第一多个n型场效应晶体管(nfet),以及串联耦合在第一输出与接地之间的第二多个nfet。第二逻辑门包括串联耦合在第二输出与供电轨之间的第三多个pfet,串联耦合在第二输出与供电轨之间的第四多个pfet,串联耦合在第二输出与接地之间的第三多个nfet输出,以及串联耦合在第二输出和接地之间的第四多个nfet。差分逻辑门还包括多个输入,该多个输入耦合到第一多个pfet、第二多个pfet、第三多个pfet和第四多个pfet的栅极,以及第一多个nfet、第二多个nfet、第三多个nfet和第四多个nfet的栅极,使得当第一对互补位输入到多个输入中的第一个输入和第二个输入、并且第二对互补位输入到多个输入中的第三个输入和第四个输入时,差分逻辑门执行差分逻辑功能。
附图说明
图1示出了容易受到dpa攻击的逻辑门的示例。
图2示出了静态差分逻辑门的示例。
图3示出了根据本公开的某些方面的动态差分逻辑门的示例。
图4示出了根据本公开的某些方面的可以用于实现差分逻辑门的电路块的示例。
图5示出了根据本公开的某些方面的静态差分异或门的示例。
图6a示出了根据本公开的某些方面的用于静态差分异或门的真值表。
图6b示出了根据本公开的某些方面的用于静态差分异或门的第一预设表。
图6c示出了根据本公开的某些方面的用于静态差分异或门的第二预设表。
图7示出了根据本公开的某些方面的动态差分异或门的示例。
图8示出了在不同时间到达逻辑门的、由输入数据位所导致的毛刺的示例。
图9a示出了根据本发明的某些方面的在不同时间到达静态差分异或门的数据位的示例的时序图。
图9b示出了根据本发明的某些方面的在不同时间到达静态差分异或门的数据位的另一示例的时序图。
图10示出了根据本公开的某些方面的静态差分与门的示例。
图11a示出了根据本公开的某些方面的用于静态差分与门的真值表。
图11b示出了根据本公开的某些方面的用于静态差分与门的第一预设表。
图11c示出了根据本公开的某些方面的用于静态差分与门的第二预设表。
图12示出了根据本公开的某些方面的静态差分或门的示例。
图13a示出了根据本发明的某些方面的用于静态差分或门的真值表。
图13b示出了根据本公开的某些方面的用于静态差分或门的第一预设表。
图13c示出了根据本公开的某些方面的用于静态差分或门的第二预设表。
图14示出了根据本公开的某些方面的包括多个差分逻辑门的管线的示例。
图15示出了根据本公开的某些方面的差分锁存器的示例。
图16a示出了根据本发明的某些方面的差分锁存器的示例性实现方式。
图16b示出了根据本发明的某些方面的差分锁存器的另一示例性实现方式。
图17a示出了根据本公开的某些方面的示例性加密处理器。
图17b示出了根据本公开的某些方面的加密处理器的一部分的示例性实现方式。
图18a示出了根据本公开的某些方面的示例性解密处理器。
图18b示出了根据本公开的某些方面的解密处理器的一部分的示例性实现方式。
具体实施方式
下文结合附图阐述的具体实施方式旨在作为各种配置的描述,并且不旨在表示可以实践本文中所描述的概念的唯一配置。具体实施方式包括具体细节,以提供对各种概念的透彻理解。然而,对于本领域技术人员而言显而易见的是,可以在没有这些具体细节的情况下实践这些概念。在一些实例中,以框图形式示出了公知结构和部件,以免使这些概念晦涩难懂。
图1示出了易受差分功率分析(dpa)攻击影响的静态逻辑门110的示例。该静态逻辑门110包括p型场效应晶体管(pfet)p1和n型场效应晶体管(nfet)n1,其中pfetp1和nfetn1的栅极耦合到逻辑门110的输入(其被标记为“in”),而pfetp1和nfetn1的漏极耦合到逻辑门110的输出(其被标记为“out”)。逻辑门110还包括耦合到输出的负载电容器(其被标记为“cl”)。在该示例中,逻辑门110实现反相器。
当逻辑门110的输入从1切换为0(即,1->0转换)时,通过pfetp1,电容器cl充电到电源电压vdd,导致在供电电流流动中的大尖峰。当逻辑门110的输入从0切换到1时(即,0->1转换),通过nfetn1,电容器cl放电到接地。最后,当到逻辑门110的输入对于两个相邻输入位保持相同时,几乎没有电流流动。在这种情况下,输入对于两个相邻位保持为1(即,1->1转换),或者对于两个相邻位保持为0(即,0->0转换)。
因此,逻辑门110的供电电流流动(以及因此功率分布图)取决于输入处的位值。功率分布图对输入位值的依赖性使攻击者可以基于功率测量来识别输入位值。
图2示出了与逻辑门110相比更不易受dpa攻击影响的静态差分逻辑门210的示例。静态差分逻辑门210包括第一pfetp1、第二pfetp2、第一nfetn1以及第二nfetn2,其中第一pfetp1和第二pfetp2交叉耦合。差分逻辑门210被配置为接收一对互补输入(标记为“in”和
在该示例中,差分逻辑门210还包括两个负载电容器(其被标记为“cl”),其中一个负载电容器耦合到真实输出out,而另一负载电容器耦合到互补输出
因此,当真实输入in切换逻辑值(即,1->0或0->1)时,在负载电容器中的一个负载电容器被充电,而另一负载电容器被放电。如果负载电容器被平衡(即,具有近似相同的电容),则用于1->0转换的供电电流流动与用于0->1转换的供电电流流动近似相同。换句话说,1->0转换和0->1转换的功率分布图近似相同。这使得攻击者难以基于功率测量来在1->0转换和0->1转换之间进行区分。相比之下,在图1中的用于逻辑门110的1->0转换的功率分布图与0->1转换的功率分布图不同。因此,与逻辑门110相比,差分逻辑门210更不易受dpa攻击的影响。
当到差分逻辑门210的真实输入in对于两个相邻输入位保持相同时,几乎没有电流流动。注意,在这种情况下,互补输入
为了改善针对dpa攻击的保护,根据本公开的各个方面,提供了动态差分逻辑门。如下文进一步讨论的,动态差分逻辑门对于所有可能的输入转换(即,1->0、1->1、0->0和0->1)具有近似均匀的功率分布图。均匀的功率分布图使攻击者更难以基于功率测量来识别逻辑位值,因此使攻击者更难于检索密钥或其他敏感信息。
图3示出了根据本公开的某些方面的动态差分逻辑门310的示例。该动态差分逻辑门310包括静态差分逻辑门315,该静态差分逻辑门315在一对或多对互补输入(其被标记为“in”和
动态差分逻辑门310还包括时钟晶体管,如下文所进一步讨论的,晶体管使动态差分逻辑门310动态。时钟晶体管包括第一pfet322、第二pfet324以及nfet326。第一pfet322耦合在静态差分逻辑门315的真实输出out与供电轨vdd之间,而第二pfet324耦合在静态差分逻辑门315的互补输出
当时钟信号clk为低(其被称为“时钟低阶段”)时,接通第一pfet322和第二pfet324,并且关断nfet326。结果,第一pfet322和第二pfet324将差分逻辑门315的输出out和
当时钟信号clk为高(其被称为“时钟高阶段”)时,关断第一pfet322和第二pfet324,并且接通nfet326。这允许静态差分逻辑门315在输入in和
因此,在时钟信号clk的每个周期(即,时段)期间,在相应时钟低阶段中,输出out和
因为在每个时钟周期的时钟高阶段期间,输出out和
因此,动态差分逻辑门310的功率分布图跨时钟周期近似均匀,而与输入转换无关(即,1->0、1->1、0->0和0->1)。均匀的功率分布图使攻击者很难基于功率测量来识别逻辑位值。
在上述示例中,在每个时钟周期期间,两个输出out和
在上述示例中,在时钟低阶段期间预设输出out和out,并且在时钟高阶段期间对它们进行评估。然而,本公开不限于该示例。备选地,可以在时钟高阶段期间预设输出out和
图4示出了根据本公开的某些方面的示例性电路块410。如下文所进一步讨论的,电路块410可以用于实现异或门、异或非门、或门、或非门、与门、或者与非门。电路块410包括第一晶体管堆叠415和第二晶体管堆叠425。
第一晶体管堆叠415包括第一pfet412、第二pfet414、第一nfet416以及第二nfet418。第一pfet412和第二pfet414串联耦合在供电轨vdd与第二pfet414之间,而输出节点430和第一nfet416和第二nfet418串联耦合在输出节点430与接地之间。
第二晶体管堆叠425包括第三pfet422、第四pfet424、第三nfet426、以及第四nfet428。第三pfet422和第四pfet424串联耦合在供电轨vdd与输出节点430之间,而第三nfet426和第四nfet428串联耦合在输出节点430与接地之间。
如在图4中示出的,第一晶体管堆叠415在输出节点430处被耦合到第二晶体管堆叠425。输出节点430向使用电路块410实现的逻辑门提供输出。在输出节点430处的电容可以包括第二pfet414、第四pfet424、第一nfet416和第三nfet426的漏栅电容。
如上文所讨论的,电路块410可以被用于实现异或门、异或非门、或门、或非门、与门、或者与非门。就这点而言,如下文所进一步讨论的,块电路410可以被配置为通过根据将要实现的逻辑门,将输入耦合到晶体管412、414、416、418、422、424、426和428的栅极来实现上述逻辑门中的任一逻辑门。
图5示出了根据本公开的某些方面的基于在图4中示出的电路块410实现的静态差分异或门510的示例。在该示例中,静态差分异或门510包括输入a,
静态差分异或门510被配置为在第一对互补数据位和第二对互补数据位上执行差分异或运算,以生成一对互补输出数据位,该对互补输出数据位从输出out和
静态差分异或门510包括单输出异或门520和单输出异或非门530。单输出异或门520提供差分异或门510的真实输出out,而单输出异或非门530提供差分异或门510的互补输出
异或门520和异或非门530中的每个门都使用电路块410的单独实例(即,副本)来实现。在异或门520中每个晶体管的附图标记包括在小括号中的1,而在xnor530中每个晶体管的附图标记包括在小括号中的2,以便在电路块410的两个单独实例(即,副本)之间进行区分。
在图5中示出的示例中,通过将输入a耦合到第一pfet412(1)和第一nfet416(1)的栅极,将输入
通过将输入a耦合到第一pfet412(2)和第一nfet416(2),将输入
图6a示出了用于差分异或门510的真值表,其中输入a和
静态差分异或门510可以用于实现动态差分异或门。就这点而言,图7示出了根据本公开的某些方面的动态差分异或门710的示例。动态差分异或门710包括静态差分异或门510和时钟晶体管。时钟晶体管包括第一时钟pfet722、第二时钟pfet724和时钟nfet726。第一时钟pfet722耦合在静态差分异或门510的真实输出out与供电轨vdd之间。由于单输出异或门520提供静态差分异或门510的真实输出out,所以第一时钟pfet722耦合在异或门520的输出out与供电轨vdd之间。第二pfet724耦合在差分异或门510的互补输出
当时钟信号clk为低时(其被称为“时钟低阶段”),接通第一时钟pfet722和第二时钟pfet724,并且关断时钟nfet726。结果,第一时钟pfet722和第二时钟pfet724将动态差分异或门710的输出out和
当时钟信号clk为高(其被称为“时钟高阶段”)时,关断第一时钟pfet722和第二时钟pfet724,并且接通时钟nfet726。这允许静态差分异或门510根据在图6a中的真值表,将输出out和
因此,在时钟信号clk的每个周期(即,时段)期间,在相应时钟低阶段中,输出out和
如上所示,将差分异或门510的输出out和
通过向静态差分异或门510的输入来输入预设输入值,静态差分异或门510还可以被预设。例如,通过向静态差分异或门510的所有输入来输入预设输入值0,静态差分异或门510的输出out和
在该示例中,逻辑电路(在图5中未示出)可以耦合到静态差分异或门的输入。在预设阶段期间,逻辑电路向静态差分异或门510的输入a、
在另一示例中,通过向静态差分异或门510的所有输入来输入预设输入值1,静态差分异或门510的输出out和
在该示例中,逻辑电路(在图5中未示出)可以耦合到静态差分异或门的输入。在预设阶段期间,逻辑电路向静态差分异或门510的输入a、
当对应于逻辑门的不同输入的数据位在不同时间到达逻辑门时,逻辑门可能易受毛刺影响。就这点而言,图8示出了针对执行异或功能的逻辑门810的毛刺的示例。在该示例中,逻辑门810具有两个输入(其被标记为“a”和“b”)和一个输出(其被标记为“out”)。图8示出了其中1的位值被发送到逻辑门810的输入a,并且1的位值被发送到逻辑门810的输入b的时序图。在该示例中,用于输入a的1的位值在用于输入b的1的位值之前到达逻辑门810。这使得逻辑门810的输出out,在用于输入a的1的位值到达逻辑门810的时间与用于输入b的1的位值到达逻辑门810的时间之间暂时变高,从而产生毛刺820。
预设静态差分异或门510大大减少数据位在不同时间到达静态差分异或门510的输入时发生的毛刺。就这点而言,图9a示出了其中预设输入值0被初始地输入到静态差分异或门510的输入a、
在该示例中,用于输入a的位值在用于输入b的位值之前到达。如在图9a中示出的,当用于输入a的位值1首先到达输入a时,两个输出out和
当用于输入b的位值到达输入b时,静态差分逻辑门510的真实输出out根据在图6a中的真值表从高切换为低。因此,真实输出out在评估阶段期间(即,在用于输入b的1的位值到达时)仅切换逻辑状态一次,从而避免了毛刺。注意,在该示例中,互补输出
图9b示出了其中用于输入b的位值1在用于输入a的位值1之前到达的示例。如在图9b中示出的,当用于输入b的位值1首先到达输入b时,两个输出out和
当用于输入a的位值1到达输入a时,静态差分逻辑门510的真实输出out根据在图6a中的真值表从高切换为低。因此,真实输出out在评估阶段期间(即,在用于输入a的1的位值到达时)仅切换逻辑状态一次,从而避免了毛刺。
针对数据位值的其他组合,可以执行上文参考图9a和图9b所讨论的分析,以表明预设静态差分异或门510大大减少了数据位值的其他组合的毛刺。一般而言,在预设阶段期间预设静态差分异或门510有助于确保在随后的评估阶段期间,没有一个输出会改变逻辑状态一次以上,从而避免了毛刺。
图10示出了根据本公开的某些方面的、基于在图4中示出的电路块410实现的静态差分与门1010的示例。在该示例中,静态差分与门1010包括输入a、
静态差分与门1010被配置为在第一对互补数据位和第二对互补数据位上执行差分与(and)运算,以生成一对互补输出数据位,该对互补输出数据位从输出out和
静态差分与门1010包括单输出与门1020和单输出与非门1030。单输出与门1020提供差分与门1010的真实输出out,而单输出与非门1030提供差分与门1010的互补输出
在图10中示出的示例中,通过将输入
通过将输入a耦合到第一pfet412(2)、第二pfet414(2)、第二nfet418(2)和第三nfet426(2)的栅极,并且将输入b耦合到第一nfet416(2)、第三pfet422(2)、第四pfet424(2)和第四nfet428(2)的栅极来实现与非门1030。输出节点430(2)提供差分与门1010的互补输出
图11a示出了差分与门1010的真值表,其中输入a和
通过向静态差分与门1010的输入来输入预设输入值,静态差分与门1010可以被预设。例如,通过向静态差分与门1010的所有输入输入预设输入值1,静态差分与门1010的输出out和
在该示例中,逻辑电路(在图10中未示出)可以耦合到静态差分与门的输入。在预设阶段期间,逻辑电路向静态差分与门1010的输入a、
在另一示例中,通过向静态差分与门1010的所有输入来输入预设输入值1,静态差分与门1010的输出out和
在该示例中,逻辑电路(图10中未示出)可以耦合到静态差分与门的输入。在预设阶段期间,逻辑电路向静态差分与门510的输入a、
在上述示例中,在预设阶段期间预设输出out和
在图10中示出的示例中,与门1020包括在第一内部节点1042与第二内部节点1044之间的第一传导路径1040。第一内部节点1042在第一pfet412(1)的漏极与第二pfet414的源极之间,而第二内部节点1044在第一nfet416(1)的源极与第二nfet418(1)的漏极之间。与门1020还包括在第三内部节点1052与第四内部节点1054之间的第二传导路径1050。第三内部节点1052在第三pfet422(1)的漏极与第四pfet424的源极之间,而第四内部节点1054在第二nfet426(1)的源极与第四nfet428(1)的漏极之间。
第一传导路径1040和第二传导路径1050用于在与门1020的预设期间,将在内部节点1042、1044、1052和1054处的电容设置为已知充电状态。例如,如果预设输入值1输入到与门1020的所有输入以将输出out预设为0,则在节点1042、1044、1052和1054处的电容放电到接地。在这种情况下,在内部节点1042处的电容通过第一传导路径1040和第二nfet418(1)放电到接地,并且在节点1044处的电容通过第二nfet418(1)放电到接地。此外,在内部节点1052处的电容通过第二传导路径1050和第四nfet428(1)放电到接地,并且在节点1054处的电容通过第四nfet428(1)放电到接地。在每个预设期间将在内部节点1042、1044、1052和1054处的电容设置为已知充电状态减少了功率分布图对数据位值的依赖性,从而产生更均匀的功率分布图。
同与门1020相似,与非门1030包括在第一内部节点1062与第二内部节点1064之间的第一传导路径1060。第一内部节点1062在第一pfet412(2)的漏极与第二pfet414(2)的源极之间,而第二内部节点1064在第一nfet416(2)的源极与第二nfet418(2)的漏极之间。与非门1030还包括在第三内部节点1072与第四内部节点1074之间的第二传导路径1070。第三内部节点1072在第三pfet422(2)的漏极与第四pfet424的源极之间,而第四内部节点1074在第二nfet426(2)的源极与第四nfet428(2)的漏极之间。同与门1020相似,在与非门1030预设期间,第一传导路径1060和第二传导路径1070用于将在内部节点1062、1064、1072和1074处的电容设置为已知充电状态。
静态差分与门1010可以用于实现动态差分与门。例如,这可以通过以下方式来实现:将第一时钟pfet耦合在真实输出out与供电轨之间,将第二时钟pfet耦合在互补输出
图12示出了根据本公开的某些方面的、基于在图4中示出的电路块410实现的静态差分或门1210的示例。静态差分或门1210的结构与静态差分与门1010的结构相似,其中输入被重新布置为执行差分or运算。差分与门1010和差分或门1210通用的部件由相同的附图标记标识。
在该示例中,静态差分或门1210包括输入a、
静态差分或门1210被配置为在第一对互补数据位和第二对互补数据位上执行差分或(or)运算,以生成一对互补输出数据位,该对互补输出数据位从输出out和out输出。在下文的讨论中,输出out被称为真实输出,而输出out被称为互补输出。
静态差分或门1210包括单输出或门1220和单输出或非门1230。单输出或门1220提供差分或门1210的真实输出out,而单输出或非门1230提供差分或门1210的互补输出
在图12中示出的示例中,通过将输入
通过将输入a耦合到第一pfet412(2)、第一nfet416(2)、第二nfet418(2)和第四pfet424(2)的栅极,并且将输入b耦合到第二pfet414(2)、第三pfet422(2)、第三nfet426(2)和第四nfet428(2)的栅极来实现或非门1230。输出节点430(2)提供差分或门1210的互补输出
图13a示出了差分或门1210的真值表,其中输入a和
通过向静态差分或门1210的输入来输入预设输入值,静态差分或门1210可以被预设。例如,通过向静态差分或门1210的所有输入来输入预设输入值0,静态差分或门1210的输出out和
在该示例中,逻辑电路(在图12中未示出)可以耦合到静态差分或门的输入。在预设阶段期间,逻辑电路向静态差分或门1210的输入a、
在另一示例中,通过向静态差分或门1210的所有输入来输入预设输入值1,静态差分或门1210的输出out和
在该示例中,逻辑电路(在图12中未示出)可以耦合到静态差分或门的输入。在预设阶段期间,逻辑电路向静态差分或门1210的输入a、
在上述示例中,在预设阶段期间预设输出out和
如在图12中示出的,或门1220包括上文所讨论的第一传导路径1040和第二传导路径1050,并且或非门1230包括上文所讨论的第一传导路径1060和第二传导路径1070。为了简单起见,本文中不再重复对这些传导路径的描述。
静态差分或门1210可以用于实现动态差分或门。例如,这可以通过以下方式来完成:将第一时钟pfet耦合在真实输出out与供电轨之间,将第二时钟pfet耦合在互补输出
上文所讨论的示例性差分逻辑门可以被级联,以实现对dpa攻击具有弹性的管线。就这点而言,图14示出了具有多个级(其被标记为“级1”至“级5”)的示例性管线1410,其中每个级包括一个或多个差分逻辑门1415、1420、1425、1430、1440和1450。
管线1410的第一级(其被标记为“级1”)包括第一动态差分逻辑门1415和第二动态差分逻辑门1420。动态差分逻辑门中的每个动态差分逻辑门可以使用在图3中示出的动态差分逻辑门310或在图7中示出的动态差分异或逻辑门710来实现。管线1410的后续级中的每个级(其被标记为“级2”至“级5”)包括一个或多个静态差分逻辑门1425、1430、1440和1450。静态差分逻辑门中的每个静态差分逻辑门可以使用在图5中示出的静态差分异或门510、在图10中示出的静态差分与门1010或在图12中示出的静态差分或门1210实现。因此,在该示例中,管线1410的第一级包括动态差分逻辑门1415和1420,而管线1410的后续级包括静态差分逻辑门1425、1430、1440和1450。
如下文所进一步讨论的,在管线1410的第一级中的动态差分逻辑门1415和1420用于预设在管线1410的后续级中的静态差分逻辑门1425、1430、1435和1440,而不需要在后续级中的动态差分逻辑门。在后续阶段中使用静态差分逻辑门降低了管线1410的功率。这是因为静态差分逻辑门不会消耗用于切换时钟晶体管的切换功率。
在该示例中,每个静态差分逻辑门被配置为当相应预设输入值被输入到静态差分逻辑门的输入时,将每个静态差分逻辑门的输出预设为相应预设输出值(即,1或0)。此外,每个静态差分逻辑门被配置为将其输出预设为与输入到静态差分逻辑门的预设输入值相反的预设输出值。例如,如果预设输入值1(即,高)被输入到静态差分逻辑门,则静态差分逻辑门将其输出预设为预设输出值0(即,低),反之亦然。
第一动态差分逻辑门1415和第二动态差分逻辑门1420接收时钟信号clk,该时钟信号clk驱动在第一动态差分逻辑门1415和在第二动态差分逻辑门1420中的时钟晶体管(在图14中未示出)。时钟信号clk的每个周期(即,时段)包括预设阶段和评估阶段。在一个示例中,当时钟信号clk为低时,预设阶段发生,而当时钟信号clk为高时,评估阶段发生。在该示例中,预设阶段与上文所讨论的时钟低阶段相对应,并且评估阶段与上文所讨论的时钟高阶段相对应。
在每个预设阶段期间,第一动态差分逻辑门1415和第二动态差分逻辑门1420将其输出1416和1424预设为高(即,1)。在图14中示出的示例中,第一动态差分逻辑门1415的输出1416耦合到在第二级(其标记为“级2”)中的静态差分逻辑门1425的输入1426。因此,在每个预设阶段期间,第一动态差分逻辑门1415向在第二级中的静态差分逻辑门1425输出预设值1,这使得在第二级中的静态差分逻辑门1425将其输出1428预设为低(即,0)。这是因为静态差分逻辑门1425将其输出1428预设为与输入到静态差分逻辑门1425的预设值相反的预设值。
在第二级中的静态差分逻辑门1425将预设值0输出到在第三级(其被标记为“级3”)中的静态差分逻辑门1430的输入1432,这导致在第三级中的静态差分逻辑门1430将其输出1434预设为高(即,1)。在第三级中的静态差分逻辑门1430将预设值1输出到在第四级(其被标记为“级4”)中的静态差分逻辑门1440的输入1442,这导致在第四级中的静态差分逻辑门1440将其输出1444预设为低(即,0)。最终,在第四级中的静态差分逻辑门1440将预设值0输出到在第五级中的静态差分逻辑门1450的输入1452(其被标记为“级5”),这使得在第五级中的静态差分逻辑门1450将其输出1465预设为高(即,1)。
因此,在每个预设阶段期间,在第一动态差分逻辑门1415的输出1416处的预设值使得在管线1410的后续阶段中的静态差分逻辑门1425、1430、1440和1450预设其输出。静态差分逻辑门1425、1430、1440和1450的预设输出值在从第二级移动到第五级时,在低和高之间交替。在图14中,标签“ph”指示对应差分逻辑门具有高预设输出值,而标签“pl”指示对应差分逻辑门具有低预设输出值。
在每个评估阶段期间,第一动态差分逻辑门1415在其输入1412处接收一对或多对互补输入数据位,并且在该一对或多对互补输入数据位上执行差分逻辑运算(例如,差分异或运算),以生成互补输出数据位。数据位可以包括密码数据或其他安全数据。
动态差分逻辑门1415将互补输出数据位输出到在第二级中的静态差分逻辑门1425。在第二级中的静态差分逻辑门1425在来自第一动态差分逻辑门1415的互补数据位上执行差分逻辑运算,以生成互补输出数据位,并且动态差分逻辑门1415将互补输出数据位输出到在第三级中的静态差分逻辑门1430。该过程继续进行到管线的后续级,其中静态差分逻辑门1430、1440和1450中的每个静态差分逻辑门从前一级中的一个或多个差分逻辑门接收互补数据位,在接收到的数据位上执行差分逻辑运算,以生成互补输出数据位,并且将互补输出数据位输出到后续级中的一个或多个差分逻辑门。在第五级中的静态互补逻辑门1450可以从管线1410中输出其互补输出位。
因此,在每个评估阶段期间,管线1410接收输入数据位,并且在输入数据位上执行运算(例如,加密运算或解密运算),其中在管线1410中的差分逻辑门1415、1420、1425、1430、1440和1450中的每个差分逻辑门执行运算的子集。在先前预设阶段期间预设差分逻辑门1415、1420、1425、1430、1440和1450有助于确保在评估阶段期间通过管线1410的单调信号传播,从而防止毛刺。另外,预设差分逻辑门使得差分逻辑门的功率分布图更加均匀(即,水平),这使得攻击者很难使用功率测量来识别在管线1410内侧的数据位值。
图14示出了可以在管线1410中进行的附加连接的示例。图14示出了其中第二动态差分逻辑门1420的输出1424耦合到在第四级中的静态差分逻辑门1440的输入1446的示例。在该示例中,在每个预设阶段期间,静态差分逻辑门1440从在第三级中的静态差分逻辑门1430接收预设值1,并且从第二动态差分逻辑门1420接收预设值1。因此,在每个预设阶段期间,在第四级中的静态差分逻辑门1440在所有输入1442和1446处接收相同的预设值1,从而使得静态差分逻辑门1440将输出1444预设为低(即,0)。在每个评估阶段期间,静态差分逻辑门1440从在第三级中的静态差分逻辑门1430接收互补数据位,并且从第二动态差分逻辑门1420接收互补数据位。静态差分逻辑门1440在接收到的数据位上执行差分逻辑运算(例如,差分异或运算)以生成互补输出数据位,并且在输出1444处输出互补输出位。
图14还示出了其中在第二级中的静态差分逻辑门1425的输出1428,耦合到在第五级中的静态差分逻辑门1450的输入1454的示例。在该示例中,在每个预设阶段期间,静态差分逻辑门1450从在第四级中的静态差分逻辑门1440接收预设值0,并且从在第二级中的静态差分逻辑门1425接收预设值0。因此,在每个预设阶段期间,静态差分逻辑门1450在所有输入1452和1454处接收相同的预设值0,从而导致静态差分逻辑门1450将输出1456预设为高(即,1)。在每个评估阶段期间,静态差分逻辑门1450从第四级中的静态差分逻辑门1440接收互补数据位,并且从在第二级中的静态差分逻辑门1425接收互补数据位。静态差分逻辑门1450在接收到的数据位上执行差分逻辑运算(例如,差分异或运算),以生成互补输出数据位,并且在输出1456处输出互补输出位。
作为总体规则,静态差分逻辑门的输入应当在预设阶段期间接收相同的预设值,以使静态差分逻辑门正确预设其输出。就这点而言,图14示出了违反该规则的连接的示例(以虚线示出),因此在管线1410中不允许该连接。该连接将第一动态差分逻辑门1415的输出连接到在第三级中的第一静态差分逻辑门1430。该连接违反了上述规则,这是因为在预设阶段期间,第一动态差分逻辑门1415输出的预设值与在第二级中的静态差分逻辑门1425输出的预设值不同(即,在第二级中的动态差分逻辑门1415输出预设值1,而逻辑微分逻辑门1425输出预设值0)。结果,如果进行连接(以虚线示出),则在第三级中的静态差分逻辑门1430将从第二级中的第一动态差分逻辑门1415和静态差分逻辑门1425接收不同的预设值。在图14中,在连接上的大“x”指示不允许该连接。注意,在图14中示出的其他示例性连接符合上述规则。
应当领会,管线1410可以包括数目与在图14中示出的级的数目不同的级。可以选择由在管线1410中的差分逻辑门所执行的逻辑运算,以及在管线1410中的差分逻辑门之间的连接,以执行期望运算(例如,加密运算)。在某些方面中,在差分逻辑门之间的连接要求符合以下规则:在预设阶段期间,静态差分逻辑门在所有输入处接收相同的预设值。
尽管在图14的示例中的第一级中示出了两个动态差分逻辑门1425和1420,但是应当领会,第一级可以包括更大数目的动态差分逻辑门。另外,应当领会,每个动态差分逻辑门可以在每时钟周期接收一对或多对互补数据位。
在某些方面中,呼入输入数据位可以在被输入到管线1410之前被锁存。就这点而言,图15示出了第一差分锁存器1510和第二差分锁存器1520的示例。第一差分锁存器1510具有被配置为接收互补输入数据位的输入1512,以及耦合到第一动态差分逻辑门1415的输入1412的输出1514。第二差分锁存器1520具有被配置为接收互补输入数据位的输入1522,以及耦合到第二动态差分逻辑门1420的输入1422的输出1524。差分锁存器1510和1520中的每个差分锁存器接收时钟信号clk,以用于锁存器的时序运算。
在运算中,当时钟信号为低(即,时钟低阶段)时,差分锁存器1510和1520中的每个差分锁存器可以被断开。在该时间期间,动态差分逻辑门1415和1420可以处于预设阶段,其中动态差分逻辑门1415和1420将其输出预设为高。
差分锁存器1510和1520中的每个差分锁存器可以在时钟信号的上升沿上锁存在相应输入处的数据位,并且在时钟信号为高时(即,时钟高阶段),将锁存的数据位输出到相应动态差分逻辑门。在该时间期间,动态差分逻辑门1415和1420可以处于评估阶段。来自差分锁存器1510和1520的锁存的数据位,有助于确保输入到动态差分逻辑门1415和1420的数据位在评估阶段是稳定的。
在上述示例中,差分锁存器1510和1520在时钟低阶段期间断开,并且动态差分逻辑门1415和1420在时钟低阶段期间预设其输出。然而,应当领会,本公开不限于该示例。例如,差分锁存器1510和1520可以在时钟高阶段期间断开,并且动态差分逻辑门1415和1420可以在时钟高阶段期间预设其输出。在该示例中,差分锁存器1510和1520可以在时钟信号的下降沿上锁存在相应输入处的数据位,并且在时钟信号为低时(即,时钟低阶段),将锁存的数据位输出到相应动态差分逻辑门。在该时间期间,动态差分逻辑门1510和1520可以处于评估阶段。
图16a示出了根据本发明的某些方面的差分锁存器1610的示例性实现方式。差分锁存器1610可以用于实现在图15中的差分锁存器1510和1520中的每个差分锁存器。换句话说,差分锁存器1510和1520中的每个差分锁存器可以是差分锁存器1610的单独实例(即,副本)。
差分锁存器1610包括反相器1612和1614,反相器1612和1614串联耦合以用于从时钟信号clk生成信号cb和c,其中信号cb是时钟信号clk的反相版本,并且信号c是时钟信号clk的延迟版本。差分锁存器1610还包括第一传输门1620、第二传输门1625、第一反相器1630和第二反相器1635。第一传输门1620通过反相器1616耦合到锁存器的真实输入(其被标记为“din”),而第二传输门1625通过反相器1618耦合到锁存器的互补输入(其被标记为“dinb”)。传输门中的每个传输门接收信号c和cb,并且被配置为当信号c和cb分别为低和高时断开(即,时钟信号clk为低)并且当信号c和cb分别为高和低时闭合(即,时钟信号clk为高)。当传输门1620和1625断开时,第一传输门1620将真实输入耦合到第一信号路径1632,并且第二传输门1625将互补输入耦合到第二信号路径1634。第一信号路径1632通过反相器1640耦合到锁存器的真实输出(其被标记为“q”),并且第二信号路径1634通过反相器1645耦合到锁存器的互补输出(其被标记为“qb”)。因此,在该示例中,差分锁存器1610在时钟低阶段期间断开。
第一反相器1630具有耦合到第二信号路径1634的输入以及耦合到第一信号路径1632的输出,并且第二反相器1635具有耦合到第一信号路径1632的输入以及耦合到第二信号路径1634的输出。第一反相器1630和第二反相器1635中的每个反相器接收信号c和cb,并且被配置为当信号c和cb分别为低和高时而被禁用(即,时钟信号clk为低),并且当信号c和cb分别为高和低时而被启用(即,时钟信号clk为高)。因此,第一反相器1630和第二反相器1635在传输门1620和1625断开的时间期间被禁用,并且在传输门1620和1625闭合的时间期间被启用。
当第一反相器1630和第二反相器1635被启用时,第一反相器1630和第二反相器1635(背对背耦合)锁存在信号路径1632和1634上的互补数据位。在锁存器的真实输出q和互补输出qb处输出锁存的互补数据位。因此,在该示例中,差分锁存器1610在时钟信号的上升沿上锁存在锁存器的输入din和dinb处的互补数据位,并且在时钟高阶段期间,在锁存器的输出q和qb处输出锁存的互补数据位。
在该示例中,差分锁存器1610用于锁存真实数据位和互补数据位,而不是使用单独锁存器分别锁存真实数据位和互补数据位。与针对真实数据位和互补数据位使用单独锁存器相比较,差分锁存器1610对时序攻击更具弹性。
图16b示出了根据本公开的某些方面的另一示例性差分锁存器1650。差分锁存器1650与在图16b中的差分锁存器1610相似,其中由两个锁存器所共通的部件由相同的附图标记标识。如在图16b中示出的,差分锁存器1650与图16a的差分锁存器1610不同之处在于,输入到传输门1620和1625以及反相器1630和1635的信号c和cb被反相。结果,当时钟信号clk为高(即,时钟高阶段)时,差分锁存器1650被断开。差分锁存器1650在时钟信号的下降沿上锁存在输入din和dinb处的数据位,并且在时钟信号为低(即,时钟低阶段)时,将锁存的数据位输出到相应动态差分逻辑门。
上文所讨论的示例性差分逻辑门和管线可以用于实现对dpa攻击具有弹性的加密和/或解密处理器。就这点而言,图17a示出了示例性加密处理器1705,其被配置为将输入数据(其被标记为“明文”)加密为加密数据(其被标记为“密文”)。在该示例中,加密处理器1705根据由美国国家标准技术研究院(nist)所建立的高级加密标准(aes)对数据进行加密。如下文所进一步讨论的,在该示例中,加密涉及密钥添加运算、字节替换运算、移位行运算以及混合列运算。
加密处理器1705包括第一锁存器1710、混合列处理器1720、第一密钥添加器1730、多路复用器1735、第二锁存器1740、移位行和s-box处理器1745、第二密钥添加器1725、第三密钥添加器1750以及第三锁存器1755。多路复用器1735被配置为基于回合选择信号来将第一密钥添加器1730或第二密钥添加器1725的输出耦合到第二锁存器1740。如下文所进一步讨论的,加密处理器1705被配置为在多个回合(例如,12回合)上加密数据,其中数据在多个回合上由混合列处理器1720、第一密钥添加器1730以及移位行和s-box处理器1745重复处理,以生成加密数据(其被标记为“密文”)。
在运算中,第二密钥添加器1725接收要加密的输入数据(其被标记为“明文”),并且根据aes将密钥添加到输入数据中。第二密钥添加器1725可以使用差分异或门来实现。然后,多路复用器1735将数据从第二密钥添加器1725耦合到第二锁存器1740,该第二锁存器1740锁存数据,并且将锁存的数据输出到移位行和s-box处理器1745。移位行和s-box处理器1745根据aes(例如,使用差分异或门和交叉布线)在数据上执行移位行运算和字节替换运算。然后,从移位行和s-box处理器1745输出的数据经由回路1712输入第一锁存器1710。第一锁存器1710锁存数据,并且将锁存的数据输出到混合列1720。混合列处理器1720根据aes(例如,使用差分逻辑门)在数据上执行混合列运算。第一密钥添加器1730(例如,使用差分异或门)将密钥添加到从混合列处理器1720输出的数据。然后,多路复用器1735将从第一密钥添加器1730输出的数据耦合到第二锁存器1740。然后,重复上述过程。就这点而言,多路复用器1735在多个回合上将第一密钥添加器1730的输出耦合到第二锁存器1740,以在多个回合中重复上述过程。
在最后一个回合结束时,第三密钥添加器1750将密钥添加到从移位行和s-box处理器1745输出的数据。第三锁存器1755锁存来自第三密钥添加器1750的数据,并且输出锁存的数据作为加密数据(其被标记为“密文”)。
在某些方面中,可以使用管线来实现混合列处理器1720、第一密钥添加器1730、以及移位行和s-box处理器1745。就这点而言,图17b示出了根据本公开的某些方面的第一管线1760和第二管线1765。第一管线1760可以实现在图17a中示出的混合列处理器1720和第一密钥添加器1730。在该示例中,第一管线1760具有多个级,其中每个级包括一个或多个差分逻辑门。第一级可以包括一个或多个动态差分逻辑门,而后续级中的每个级均包括一个或多个静态差分逻辑门。注意,为了便于说明,在差分逻辑门之间的各个连接未在图17b中明确示出。
在运算中,当时钟信号为低(即,时钟低阶段)时,第一差分锁存器1710断开,并且当时钟信号为低(即,时钟低阶段)时,第一管线1760的第一级中的动态差分逻辑门将其输出预设为高。在动态差分逻辑门的输出处的高预设值使得在第一管线1760的后续级中的静态差分逻辑门预设其输出。在第一管线1760中的差分逻辑门的预设输出值跨管线1760在高和低之间交替。在图17b中,标签“ph”指示高预设输出值,而标签“pl”指示低预设输出值。
在时钟信号为高(即,时钟高阶段)的同时,第一差分锁存器1710在时钟信号的上升沿上锁存数据位,并且将锁存的数据位输出到第一管线1760。然后,在第一管线1760中的差分逻辑门分别执行混合列处理器1720和第一密钥添加器1730的混合列运算和密钥添加运算。第一管线1760的输出数据被输入到第二锁存器1740。在该示例中,第一管线1760的预设阶段与时钟低阶段相对应,并且第一管线1760的评估阶段与时钟高阶段相对应,如图17b所示。第一差分锁存器1710可以使用在图15中示出的一个或多个差分锁存器1510和1520来实现。
第二管线1765可以实现在图17a中示出的移位行和s-box处理器1745。在该示例中,第二管线1765具有多个级,其中每个级包括一个或多个差分逻辑门。第一级可以包括一个或多个动态逻辑门,而在后续级中的每个级均包括一个或多个静态逻辑门。备选地,第一级还可以包括一个或多个静态差分逻辑门。
在运算中,当时钟信号为高(即,时钟高阶段)时,第二差分锁存器1740断开。对于第二管线1765的第一级包括动态差分逻辑门的示例,差分逻辑门在时钟高阶段期间将其输出预设为高,从而使得在第二管线1765的后续级中的静态差分逻辑门预设其输出。对于其中第二管线1765的第一级包括静态差分逻辑门的示例,第一管线1760的最后一级的预设输出值可以在第二差分锁存器1740断开的时间期间,通过第二差分锁存器1740流入第二管线1765的第一级中。如在图17b中示出的,在第二管线1765中的差分逻辑门的预设输出值在高和低之间交替。
在时钟信号为低(即,时钟低阶段)的同时,第二差分锁存器1740在时钟信号的下降沿上锁存数据位,并且将锁存的数据位输出到第二管线1765。然后,在第二管线1765中的差分逻辑门在数据位上执行移位行和s-box处理器1745的运算。如在图17b中示出的,在该示例中,第二管线1765的预设阶段与时钟高阶段相对应,并且第二管线1765的评估阶段与时钟低阶段相对应。
因此,第一管线1760和第二管线1765的预设阶段对应于时钟信号的相反阶段,并且第一管线1760和第二管线1765的评估阶段对应于时钟信号的相反阶段。在上述示例中,第一管线1760的预设阶段和评估阶段分别与时钟低阶段和时钟高阶段相对应,并且第二管线1765的预设阶段和评估阶段分别与时钟高阶段和时钟低阶段相对应。然而,应当领会,这是可逆的,使得第一管线1760的预设阶段和评估阶段分别与时钟高阶段和时钟低阶段相对应,并且第二管线1765的预设阶段和评估阶段分别与时钟低阶段和时钟高阶段相对应。在这种情况下,第一差分锁存器1710在时钟高阶段中断开而在时钟低阶段中被锁存,并且第二差分锁存器1740在时钟低阶段中断开而在时钟高阶段中被锁存。第一差分锁存器1710和第二差分锁存器1720中的每个差分锁存器可以使用在图15中示出的差分锁存器1510和1520中的一个或多个差分锁存器来实现。
在上述示例中,第一管线1760实现了混合列处理器1720和第一密钥添加器1730,并且第二管线1765实现了移位行和s-box处理器1745。然而,应当领会,本公开不限于该示例。总体上,在不影响功能的情况下,只要维持正确的运算次序,可以以不同方式在第一管线1760和第二管线1765之间拆分混合列处理器1720、第一密钥添加器1730以及移位行和s-box处理器1745的运算。
图18a示出了示例性解密处理器1805,其被配置为将加密数据(其被标记为“密文”)解密为解密数据(其被标记为“明文”)。在该示例中,解密处理器1805根据aes对加密数据进行解密。如下文所进一步讨论的,在该示例中,解密涉及密钥添加运算、逆字节替换运算、逆移位行运算以及逆混合列运算。
解密处理器1805包括第一锁存器1810、逆混合列处理器1820、第一密钥添加器1830、多路复用器1835、第二锁存器1840、逆移位行和s-box处理器1845、第二密钥添加器1825、第三密钥添加器1850以及第三锁存器1855。多路复用器1835被配置为基于回合选择信号来将逆混合列处理器1820或第二密钥添加器1825的输出耦合到第二锁存器1840。如下文所进一步讨论的,解密处理器1805被配置为在多个回合(例如,12个回合)中对数据进行解密,其中数据在多个回合中,通过逆混合列处理器1820、第一密钥添加器1830以及逆移位行和s-box处理器1845进行重复处理,以生成解密数据(其被标记为“明文”)。
在运算中,第二密钥添加器1825接收加密数据(其被标记为“密文”),并且根据aes将密钥添加到加密数据中。第二密钥添加器1825可以使用差分异或门来实现。然后,多路复用器1835将来自第二密钥添加器1825的数据耦合到第二锁存器1840,第二锁存器1840锁存数据,并且将锁存的数据输出到逆移位行和s-box处理器1845。逆移位行和s-box处理器1845根据aes(例如,使用差分异或门和交叉布线)在数据上执行逆移位行运算和逆字节替换运算。然后,从逆移位行和s-box处理器1845输出的数据经由回路1812输入第一锁存器1810。第一锁存器1810锁存该数据,并且将锁存的数据输出到第一密钥添加器1830,该第一密钥添加器将密钥添加到数据。逆混合列处理器1820根据aes(例如,使用差分逻辑)在来自第一密钥添加器1830的数据上执行逆混合列运算。然后,多路复用器1835将从逆混合列处理器1820输出的数据耦合到第二锁存器1840。然后,重复上述过程。就这点而言,多路复用器1835在多个回合上将逆混合列处理器1820的输出耦合到第二锁存器1840,以在多个回合上重复上述过程。
在最后一个回合结束时,第三密钥添加器1850将密钥添加到从逆移位行和s-box处理器1845输出的数据。第三锁存器1855锁存来自第三密钥添加器1850的数据,并且输出锁存的数据作为解密数据(其被标记为“明文”)。
在某些方面中,可以使用管线来实现逆混合列处理器1820、第一密钥添加器1830以及逆移位行和s-box处理器1845。就这点而言,图18b示出了根据本公开的某些方面的第一管线1860和第二管线1865。第一管线1860可以实现在图18a中示出的第一密钥添加器1830和逆混合列处理器1820。在该示例中,第一管线1860具有多个级,其中每个级包括一个或多个差分逻辑门。第一级可以包括一个或多个动态逻辑门,而在后续级中的每个级均包括一个或多个静态逻辑门。注意,为了便于说明,差分逻辑门之间的各个连接未在图18b中明确示出。
在运算中,当时钟信号为低(即,时钟低阶段)时,第一差分锁存器1810断开,并且当时钟信号为低时(即,时钟低阶段),在第一管线1860的第一级中的动态差分逻辑门将其输出预设为高。在动态差分逻辑门的输出处的高预设值使得在第一管线1860的后续级中的静态差分逻辑门预设其输出。如在图18b中示出的,在第一管线1860中的差分逻辑门的预设输出值跨越管线1860在高和低之间交替。
在时钟信号为高(即,时钟高阶段)的同时,第一差分锁存器1810在时钟信号的上升沿上锁存数据位,并且将锁存的数据位输出到第一管线1860。然后,在第一管线1860中的差分逻辑门分别执行第一密钥添加器1830和逆混合列处理器1820的密钥添加运算和逆混合列运算。第一管线1860的输出数据输入到第二锁存器1840。如在图18b中示出的,在该示例中,第一管线1860的预设阶段与时钟低阶段相对应,而第一管线1860的评估阶段与时钟高阶段相对应。
第二管线1865可以实现在图18a中示出的逆移位行和s-box处理器1845。在该示例中,第二管线1865具有多个级,其中每个级包括一个或多个差分逻辑门。第一级可以包括一个或多个动态逻辑门,而在后续级中的每个级均包括一个或多个静态逻辑门。备选地,第一级也可以包括一个或多个静态差分逻辑门。
在运算中,当时钟信号为高(即,时钟高阶段)时,第二差分锁存器1840断开。对于其中第二管线1865的第一级包括动态差分逻辑门的示例,在时钟高阶段期间,差分逻辑门将其输出预设为高,从而使得在后续级中的静态差分逻辑门预设其输出。对于其中第二管线1865的第一级包括静态差分逻辑门的示例,第一管线1860的最后一级的预设输出值可以在第二差分锁存器1840断开的时间期间,通过第二差分锁存器1840流入第二管线1865的第一级中。如中图18b中示出的,在第二管线1865中的差分逻辑门的预设输出值在高和低之间交替。
在时钟信号为低(即,时钟低阶段)的同时,第二差分锁存器1840在时钟信号的下降沿上锁存数据位,并且将锁存的数据位输出到第二管线1865。然后,在第二管线1865中的差分逻辑门在数据位上执行逆移位行和s-box处理器1845的运算。如在图18b中示出的,在该示例中,第二管线1865的预设阶段与时钟高阶段相对应,而第二管线1865的评估阶段与时钟低阶段相对应。
因此,第一管线1860和第二管线1865的预设阶段对应于时钟信号的相反阶段,并且第一管线1860和第二管线1865的评估阶段对应于时钟信号的相反阶段。在上述示例中,第一管线1860的预设阶段和评估阶段分别与时钟低阶段和时钟高阶段相对应,第二管线1865的预设阶段和评估阶段分别与时钟高阶段和时钟低阶段相对应。然而,应当领会,这是可逆的,使得第一管线1860的预设阶段和评估阶段分别与时钟高阶段和时钟低阶段相对应,并且第二管线1865的预设阶段和评估阶段分别与时钟低阶段和时钟高阶段相对应。在这种情况下,第一差分锁存器1810在时钟高阶段中断开而在时钟低阶段中被锁存,并且第二差分锁存器1840在时钟低阶段中断开而在时钟高阶段中被锁存。第一差分锁存器1810和第二差分锁存器1820中的每个差分锁存器可以使用在图15中示出的一个或多个差分锁存器1510和1520来实现。
在上述示例中,第一管线1860实现第一密钥添加器1830和逆混合列处理器1820,并且第二管线1865实现逆移位行和s-box处理器1845。然而,应当领会,本公开不限于该示例。总体上,在不影响功能的情况下,只要维持正确的运算次序,可以以不同的方式在第一管线1860和第二管线1865之间划分第一密钥添加器1830、逆混合列处理器1820以及逆移位行和s-box处理器1845的运算。
应当理解,本公开不限于上文用于描述本公开的各个方面的术语。例如,应当领会,逻辑1和0也可以分别称为高和低,动态也可以称为计时的,预设也可以称为预充电,逻辑值也可以称为逻辑状态,并且逻辑运算也可以称为逻辑功能。
还应当理解,本公开不限于图5、图7、图10和图12中的每个图所示的a、
在本文中使用的诸如“第一”、“第二”等名称对元件的任何引用,通常不会限制那些元件的数量或次序。相反,这些名称在本文中用作区分两个或更多个元件或元件实例的便利方式。因此,对第一元件和第二元件的引用并不意味着只能采用两个元件,或者第一元件必须在第二元件之前。
在本公开中,词语“示例性”用于意指“用作示例、实例或说明”。本文中描述为“示例性”的任何实现方式或方面不必被解释为比本公开的其他方面优选或有利。同样,术语“方面”并不要求本公开的所有方面都包括所讨论的特征、优点或运算模式。术语“耦合”在本文中用于指两个结构之间的直接电耦合或间接电耦合。
提供本公开的先前描述,以使得本领域的任何技术人员能够制造或使用本公开。对于本领域技术人员而言,对本公开的各种修改将是显而易见的,并且在不脱离本公开的精神或范围的情况下,本文中所定义的一般原理可以应用于其他变型。因此,本公开内容不旨在限于本文中所描述的示例,而是符合与本文中所公开的原理和新颖性特征一致的最宽范围。