密码处理器中差分功率分析(DPA)弹性安全性的方法和装置与流程

文档序号:22481021发布日期:2020-10-09 22:30阅读:346来源:国知局
密码处理器中差分功率分析(DPA)弹性安全性的方法和装置与流程

优先权要求

本专利申请要求于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”和),并且输出一对互补输出(标记为“out”和)。在下文的讨论中,输入in被称为真实输入,并且输入被称为互补输入。此外,输出out被称为真实输出,而输出被称为互补输出。

在该示例中,差分逻辑门210还包括两个负载电容器(其被标记为“cl”),其中一个负载电容器耦合到真实输出out,而另一负载电容器耦合到互补输出当到差分逻辑门210的真实输入in从1切换为0(即,1->0转换)时,耦合到真实输出out的负载电容器放电到接地,并且耦合到互补输出的负载电容器被充电到电源电压vdd。当逻辑门210的真实输入in从0切换到1(即,0->1转换)时,耦合到真实输出out的负载电容器被充电到电源电压vdd,并且耦合到互补输出的负载电容器放电到接地。注意,互补输入在与真实输入in相反的方向上切换。

因此,当真实输入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对于两个相邻输入位保持相同时,几乎没有电流流动。注意,在这种情况下,互补输入也保持相同。因此,针对两个相邻位(即,1->1或0->0)的真实输入in保持相同的情况的功率分布图与针对真实输入in切换逻辑值的情况(即,1->0或0->1)的功率分布图不同。结果,攻击者仍然可以使用功率测量来区分针对两个相邻输入位的真实输入in保持相同的情况和真实输入in切换逻辑值的情况。这允许攻击者使用dpa确定何时在输入in处发生了数据转换。因此,虽然差分逻辑门210向攻击者提供的信息少于在图1中的逻辑门110所提供的,但是差分逻辑门210仍然易受dpa攻击的影响。因而,需要一种更好的解决方案来免受dpa攻击的影响。

为了改善针对dpa攻击的保护,根据本公开的各个方面,提供了动态差分逻辑门。如下文进一步讨论的,动态差分逻辑门对于所有可能的输入转换(即,1->0、1->1、0->0和0->1)具有近似均匀的功率分布图。均匀的功率分布图使攻击者更难以基于功率测量来识别逻辑位值,因此使攻击者更难于检索密钥或其他敏感信息。

图3示出了根据本公开的某些方面的动态差分逻辑门310的示例。该动态差分逻辑门310包括静态差分逻辑门315,该静态差分逻辑门315在一对或多对互补输入(其被标记为“in”和)上执行逻辑运算,以生成一对互补输出(其被标记为“out”和)。尽管为了简单起见,图1中示出了一对互补输入,应当领会的是,多对互补输入可以被输入到静态差分逻辑门315。差分静态逻辑门315可以执行多种不同逻辑运算中的任一逻辑运算,包括例如异或(xor)运算、或运算、与运算等。

动态差分逻辑门310还包括时钟晶体管,如下文所进一步讨论的,晶体管使动态差分逻辑门310动态。时钟晶体管包括第一pfet322、第二pfet324以及nfet326。第一pfet322耦合在静态差分逻辑门315的真实输出out与供电轨vdd之间,而第二pfet324耦合在静态差分逻辑门315的互补输出与供电轨vdd之间。nfet326耦合在静态差分逻辑门315与接地之间。第一pfet322和第二pfet324的栅极以及nfet326的栅极由时钟信号(其被标记为“clk”)驱动。

当时钟信号clk为低(其被称为“时钟低阶段”)时,接通第一pfet322和第二pfet324,并且关断nfet326。结果,第一pfet322和第二pfet324将差分逻辑门315的输出out和两者耦合到供电轨vdd。这将输出out和两者预设为vdd(即,逻辑1),而不依赖于输入in和的位值。

当时钟信号clk为高(其被称为“时钟高阶段”)时,关断第一pfet322和第二pfet324,并且接通nfet326。这允许静态差分逻辑门315在输入in和上执行逻辑运算,并且生成对应的成对互补输出out和因为静态差分逻辑门315的输出out和互补,所以输出out和置位到相反的逻辑值(即,输出中的一个输出保持在预设值1,而另一输出变为0)。因此,在两个输出在时钟低阶段中都被预设为1之后,在输出中的一个输出在时钟高阶段中从1切换为0,而另一输出保持为1。从1切换为0的输出取决于在输入in和处的位值和由差分逻辑门315所执行的逻辑运算。

因此,在时钟信号clk的每个周期(即,时段)期间,在相应时钟低阶段中,输出out和预设为1,并且由于输出out和的互补性,所以在相应时钟高阶段中,输出中的一个输出从1切换为0。如果差分逻辑门315被平衡(即,差分逻辑门315的两侧上的电容相同),则用于从1切换为0的真实输出out的功率分布图与用于互补输出从1切换为0的功率分布图近似相同。

因为在每个时钟周期的时钟高阶段期间,输出out和中的一个输出从1切换为0、并且用于真实输出out从1切换为0的功率分布图与用于互补输出从1切换为0的功率分布图近似相同,所以每个时钟周期的功率分布图近似相同。注意,即使相邻输入位相同,在每个时钟周期中输出out和中的一个输出也会从1切换为0。这是因为在每个时钟周期的时钟低阶段期间,两个输出out和都被预设为1,从而导致输出out和中的一个输出在随后的时钟高阶段期间从1切换为0。换句话说,在时钟低阶段期间将输出out和预设为1确保在时钟高阶段期间即使输入位保持相同,在输出中的一个输出从1切换为0。

因此,动态差分逻辑门310的功率分布图跨时钟周期近似均匀,而与输入转换无关(即,1->0、1->1、0->0和0->1)。均匀的功率分布图使攻击者很难基于功率测量来识别逻辑位值。

在上述示例中,在每个时钟周期期间,两个输出out和被预设为1。然而,应当领会的是,本公开不限于该示例。备选地,在每个时钟周期期间,两个输出out和都可以被预设为0。在该示例中,由于输出的互补性本质,所以在每次预设之后,输出out和中的一个输出从0切换为1。输出的互补性本质确保在每个预设之后输出中的一个输出切换逻辑值,并且平衡差分逻辑门315的结构有助于确保功率分布图相同,而不管输出中哪个输出切换逻辑值。

在上述示例中,在时钟低阶段期间预设输出out和out,并且在时钟高阶段期间对它们进行评估。然而,本公开不限于该示例。备选地,可以在时钟高阶段期间预设输出out和并且在时钟低阶段期间对它们进行评估。例如,这可以通过使时钟信号clk反相、并且使用经反相的时钟信号驱动时钟晶体管322、324和326的栅极来实现。

图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,b和如下文所进一步讨论的,输入a和被配置为接收第一对互补数据位,而输入b和被配置为接收第二对互补数据位。可以使用耦合到在静态差分异或门中的晶体管的相应子集的栅极的金属结构来实现输入的每个输入。

静态差分异或门510被配置为在第一对互补数据位和第二对互补数据位上执行差分异或运算,以生成一对互补输出数据位,该对互补输出数据位从输出out和输出。在下文的讨论中,输出out被称为真实输出,而输出被称为互补输出。

静态差分异或门510包括单输出异或门520和单输出异或非门530。单输出异或门520提供差分异或门510的真实输出out,而单输出异或非门530提供差分异或门510的互补输出异或非门530是异或门520的互补(即,逆)。因此,在该示例中,静态差分异或门510使用一对互补单输出逻辑门来实现。

异或门520和异或非门530中的每个门都使用电路块410的单独实例(即,副本)来实现。在异或门520中每个晶体管的附图标记包括在小括号中的1,而在xnor530中每个晶体管的附图标记包括在小括号中的2,以便在电路块410的两个单独实例(即,副本)之间进行区分。

在图5中示出的示例中,通过将输入a耦合到第一pfet412(1)和第一nfet416(1)的栅极,将输入耦合到第四nfet428(1)和第四pfet424(1)的栅极,将输入b耦合到第二nfet418(1)和第三pfet422(1)的栅极并且将输入耦合到第二pfet414(1)和第三nfet426(1)的栅极来实现异或门520。在第一nfet416(1)与第二nfet418(1)之间的节点被耦合到在第三nfet426(1)与第四nfet428(1)之间的节点。输出节点430(1)提供差分异或门510的真实输出out。

通过将输入a耦合到第一pfet412(2)和第一nfet416(2),将输入耦合到第四pfet424(2)和第四nfet428(2)的栅极,将输入b耦合到第二pfet414(2)和第三nfet426(2)的栅极,并且将输入耦合到第二nfet418(2)和第三pfet422(2)的栅极来实现异或非门530。在第一pfet412(2)与第二pfet414(2)之间的节点被耦合到在第三pfet422(2)与第四pfet424(2)之间的节点。输出节点430(2)提供差分异或门510的互补输出。

图6a示出了用于差分异或门510的真值表,其中输入a和具有互补逻辑值,输入b和具有互补逻辑值。从真值表可以看出,输出out和具有互补逻辑值。当输入a和b具有不同的逻辑值时,真实输出out为1;而当输入a和b具有相同的逻辑值时,则真实输出out为0。

静态差分异或门510可以用于实现动态差分异或门。就这点而言,图7示出了根据本公开的某些方面的动态差分异或门710的示例。动态差分异或门710包括静态差分异或门510和时钟晶体管。时钟晶体管包括第一时钟pfet722、第二时钟pfet724和时钟nfet726。第一时钟pfet722耦合在静态差分异或门510的真实输出out与供电轨vdd之间。由于单输出异或门520提供静态差分异或门510的真实输出out,所以第一时钟pfet722耦合在异或门520的输出out与供电轨vdd之间。第二pfet724耦合在差分异或门510的互补输出与供电轨vdd之间。由于单输出异或非门530提供静态差分异或门510的互补输出所以第二时钟pfet724耦合在异或非门530的输出与供电轨vdd之间。时钟nfet726耦合在静态差分异或门510与接地之间。更具体地,时钟nfet726耦合在单输出异或门520与接地之间,并且耦合在单输出异或非门530与接地之间。第一时钟pfet722和第二时钟pfet724的栅极以及时钟nfet726的栅极由时钟信号(其被标记为“clk”)驱动。

当时钟信号clk为低时(其被称为“时钟低阶段”),接通第一时钟pfet722和第二时钟pfet724,并且关断时钟nfet726。结果,第一时钟pfet722和第二时钟pfet724将动态差分异或门710的输出out和两者都耦合到供电轨vdd。因此,在该示例中,两个输出out和都被预设为vdd(即,逻辑1)。

当时钟信号clk为高(其被称为“时钟高阶段”)时,关断第一时钟pfet722和第二时钟pfet724,并且接通时钟nfet726。这允许静态差分异或门510根据在图6a中的真值表,将输出out和中的一个输出拉到0。

因此,在时钟信号clk的每个周期(即,时段)期间,在相应时钟低阶段中,输出out和预设为高(即,1),并且在相应时钟高阶段中,输出out和中的一个输出变低(即,0),同时输出out和中的另一输出保持为高(即,1)。因此,在时钟高阶段期间,异或门520和异或非门530中的一个门的输出切换逻辑状态。由于异或门520和异或非门530的结构相似(即,两者均使用在图4中的电路块410实现),所以相同数目的电容器节点被充电/放电,而不依赖于输出out和中的一个输出切换逻辑状态。结果,在时钟高阶段期间,差分异或门510的功率分布图近似相同,而与输出out和中的一个输出切换逻辑状态无关。因而,在时钟周期期间,动态差分异或门710的功率分布图对于每个时钟周期近似相同,而与输出out和的一个输出在时钟周期期间变低无关。因此,功率分布图跨时钟周期近似均匀,从而使得攻击者很难基于功率测量来识别逻辑位值。

如上所示,将差分异或门510的输出out和都预设为高(即,1)会导致更均匀的功率分布图,该功率分布图对dpa攻击具有弹性。相反,这可以通过将差分异或门510的输出out和两者都预设为低(即,0)来实现。在这种情况下,在两个输出都被预设为低之后,在输出out和中的一个输出从低切换为高。

通过向静态差分异或门510的输入来输入预设输入值,静态差分异或门510还可以被预设。例如,通过向静态差分异或门510的所有输入来输入预设输入值0,静态差分异或门510的输出out和两者可以被预设为高(即,1)。在这点上,图6b示出了第一预设表,其中预设输入值0被输入到静态差分异或门510的输入a、b和从而使得将输出out和二者都预设为高(即,1)。因此,在预设期间,相同的值(即,0)被输入到所有输入,以将输出out和预设为高(即,1)。

在该示例中,逻辑电路(在图5中未示出)可以耦合到静态差分异或门的输入。在预设阶段期间,逻辑电路向静态差分异或门510的输入a、b和输入预设输入值0,以将输出out和预设为高(即,1)。在预设阶段之后的评估阶段期间,逻辑电路向输入a和输入第一对互补数据位,并且向输入b和输入第二对互补数据位。数据位可以包括密码数据或其他安全数据。响应于数据位,静态差分异或门510根据在图6a中的真值表,将输出out和中的一个输出从高切换为低。向静态差分异或门510的输入来输入预设输入值以预设输出out和移除了对时钟晶体管722、724和726预设输出out和的需要。这通过移除与切换时钟晶体管722、724和726相关联的切换功率而降低了功耗。逻辑电路可以包括一个或多个动态差分逻辑门、一个或多个静态差分逻辑门、或动态差分逻辑门和静态差分逻辑门的组合,其示例在下文参考图14进行了讨论。

在另一示例中,通过向静态差分异或门510的所有输入来输入预设输入值1,静态差分异或门510的输出out和可以被预设为低(即,0)。在这点上,图6c示出了第二预设表,其中1的预设输入值被输入到静态差分异或门510的输入a、b和从而使得输出out和两者均预设为低(即,0)。

在该示例中,逻辑电路(在图5中未示出)可以耦合到静态差分异或门的输入。在预设阶段期间,逻辑电路向静态差分异或门510的输入a、b和输入预设输入值1,以将输出out和预设为低(即,0)。在预设阶段之后的评估阶段期间,逻辑电路向输入a和输入第一对互补数据位,并且向输入b和输入第二对互补数据位。数据位可以包括密码数据或其他安全数据。响应于数据位,静态差分异或门510根据在图6a中的真值表,将输出out和中的一个输出从低切换为高。逻辑电路可以包括一个或多个动态差分逻辑门、一个或多个静态差分逻辑门、或动态差分逻辑门和静态差分逻辑门的组合,其示例在下文参考图14进行了描述。

当对应于逻辑门的不同输入的数据位在不同时间到达逻辑门时,逻辑门可能易受毛刺影响。就这点而言,图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、b和的时序图的示例,该静态差分异或门510将输出out和预设为高(即,1)。在该示例中,1的位值被发送到输入a,并且1的位值被发送到输入b。注意,由于输入的位值是输入a的位值的互补,所以输入保持为0,并且由于输入的位值是输入b的位值的互补,所以输入保持为0。

在该示例中,用于输入a的位值在用于输入b的位值之前到达。如在图9a中示出的,当用于输入a的位值1首先到达输入a时,两个输出out和均保持为高(即,保持为预设输出值1)。这是因为两个输入b和仍为预设输入值0,这会使两个输出out和保持为高(即,处于预设输出值1)。这可以参考图5来说明。当两个输入b和都处于预设输入值0时,接通异或门510中的第二pfet414(1)和第三pfet422(1)两者。结果,通过第三pfet422(1)和第四pfet424(1)维持输出节点430(1)与供电轨vdd之间的传导路径。这使真实输出out保持为高(即,保持为预设输出值1)。可以对异或非门530执行类似分析,以示出互补输出也保持为高(即,保持为预设输出值1)。

当用于输入b的位值到达输入b时,静态差分逻辑门510的真实输出out根据在图6a中的真值表从高切换为低。因此,真实输出out在评估阶段期间(即,在用于输入b的1的位值到达时)仅切换逻辑状态一次,从而避免了毛刺。注意,在该示例中,互补输出保持为高(即,不会切换逻辑状态)。

图9b示出了其中用于输入b的位值1在用于输入a的位值1之前到达的示例。如在图9b中示出的,当用于输入b的位值1首先到达输入b时,两个输出out和都保持为高(即,保持为预设输出值1)。这是因为两个输入a和仍为预设输入值0,这会使两个输出out和均保持为高(即,处于预设输出值1)。这可以参考图5来说明。当两个输入a和处于预设输入值0时,接通异或门510中的第一pfet412(1)和第四pfet424(1)两者。结果,通过第一pfet412(1)和第二pfet414(1)维持输出节点430(1)与供电轨vdd之间的传导路径。这使真实输出out保持为高(即,保持为预设输出值1)。可以对异或非门530执行类似分析,以示出互补输出也保持为高(即,保持为预设输出值1)。

当用于输入a的位值1到达输入a时,静态差分逻辑门510的真实输出out根据在图6a中的真值表从高切换为低。因此,真实输出out在评估阶段期间(即,在用于输入a的1的位值到达时)仅切换逻辑状态一次,从而避免了毛刺。

针对数据位值的其他组合,可以执行上文参考图9a和图9b所讨论的分析,以表明预设静态差分异或门510大大减少了数据位值的其他组合的毛刺。一般而言,在预设阶段期间预设静态差分异或门510有助于确保在随后的评估阶段期间,没有一个输出会改变逻辑状态一次以上,从而避免了毛刺。

图10示出了根据本公开的某些方面的、基于在图4中示出的电路块410实现的静态差分与门1010的示例。在该示例中,静态差分与门1010包括输入a、b和如下文所进一步讨论的,输入a和被配置为接收第一对互补数据位,而输入b和被配置为接收第二对互补数据位。输入中的每个输入可以使用金属结构来实现,该金属结构耦合到在静态差分与门中的晶体管的相应子集的栅极。

静态差分与门1010被配置为在第一对互补数据位和第二对互补数据位上执行差分与(and)运算,以生成一对互补输出数据位,该对互补输出数据位从输出out和输出。在下文的讨论中,输出out被称为真实输出,而输出被称为互补输出。

静态差分与门1010包括单输出与门1020和单输出与非门1030。单输出与门1020提供差分与门1010的真实输出out,而单输出与非门1030提供差分与门1010的互补输出与门1020和与非门1030中的每个门都使用电路块410的单独实例(即,副本)来实现。在与门1020中的每个晶体管的附图标记包括在括号中的1,而与非门1030中的每个晶体管的附图标记包括在括号中的2,以便在电路块410的两个单独实例(即,副本)之间进行区分。

在图10中示出的示例中,通过将输入耦合到第一pfet412(1)、第一nfet416(1)、第二nfet418(1)和第四pfet424(1)的栅极,并且将输入耦合到第二pfet414(1)、第三pfet422(1)、第三nfet426(1)和第四nfet428(1)的栅极来实现与门1020。输出节点430(1)提供差分与门1010的真实输出out。

通过将输入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和具有互补逻辑值,输入b和具有互补逻辑值。从真值表可以看出,输出out和具有互补逻辑值。当输入a和b均为1时,真实输出out为1;而当输入a和b中一个或两个输入为0时,真实输出out为0。

通过向静态差分与门1010的输入来输入预设输入值,静态差分与门1010可以被预设。例如,通过向静态差分与门1010的所有输入输入预设输入值1,静态差分与门1010的输出out和可以被预设为高(即,1)。就这点而言,图11b示出了第一预设表,其中预设输入值0被输入到静态差分与门1010的输入a、b和从而使得输出out和预设高(即,1)。

在该示例中,逻辑电路(在图10中未示出)可以耦合到静态差分与门的输入。在预设阶段期间,逻辑电路向静态差分与门1010的输入a、b和输入预设输入值0,以将输出out和预设为高(即,1)。在预设阶段后的评估阶段期间,逻辑电路向输入a和输入第一对互补数据位,并且向b和输入第二对互补数据位。数据位可以包括密码数据或其他安全数据。响应于数据位,静态差分与门1010根据图11a中的真值表将out和中的一个从高切换为低。逻辑电路可以包括一个或多个动态差分逻辑门、一个或多个静态差分逻辑门、或动态差分逻辑门和静态差分逻辑门的组合,其示例在下文参考图14进行了讨论。

在另一示例中,通过向静态差分与门1010的所有输入来输入预设输入值1,静态差分与门1010的输出out和两者可以被预设为低(即,0)。就这点而言,图11c示出了第二预设表,其中预设输入值1被输入到静态差分与门1010的输入a、b和从而使得输出out和预设为低(即,0)。

在该示例中,逻辑电路(图10中未示出)可以耦合到静态差分与门的输入。在预设阶段期间,逻辑电路向静态差分与门510的输入a、b和输入预设输入值1,以将输出out和二者预设为低(即,0)。在预设阶段后的评估阶段期间,逻辑电路向输入a和输入第一对互补数据位,并且向b和输入第二对互补数据位。数据位可以包括密码数据或其他安全数据。响应于数据位,静态差分与门1010根据在图11a中的真值表,将out和中的一个从低切换为高。逻辑电路可以包括一个或多个动态差分逻辑门、一个或多个静态差分逻辑门、或动态差分逻辑门和静态差分逻辑门的组合,其示例在下文参考图14进行了讨论。

在上述示例中,在预设阶段期间预设输出out和确保在评估阶段期间,输出out和out中的一个输出切换逻辑状态。因此,与门1020和与非门1030中的一个门的输出在评估阶段期间切换逻辑状态。由于与门1020和与非门1030的结构相似(即,两者均使用在图4中的电路块410实现),所以相同数目的电容器节点被充电/放电,而不依赖于输出out和中的一个输出切换逻辑状态。结果,在评估阶段期间,差分与门1010的功率分布图近似相同,而与输出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耦合在互补输出与供电轨之间,以及将时钟nfet耦合在静态差分与门1010与接地之间。在该示例中,时钟晶体管的栅极由时钟信号驱动。

图12示出了根据本公开的某些方面的、基于在图4中示出的电路块410实现的静态差分或门1210的示例。静态差分或门1210的结构与静态差分与门1010的结构相似,其中输入被重新布置为执行差分or运算。差分与门1010和差分或门1210通用的部件由相同的附图标记标识。

在该示例中,静态差分或门1210包括输入a、b和如下文所进一步讨论的,输入a和被配置为接收第一对互补数据位,而输入b和被配置为接收第二对互补数据位。输入中的每个输入可以被实现为金属结构,该金属结构耦合到在静态差分或门中的晶体管的相应子集的栅极。

静态差分或门1210被配置为在第一对互补数据位和第二对互补数据位上执行差分或(or)运算,以生成一对互补输出数据位,该对互补输出数据位从输出out和out输出。在下文的讨论中,输出out被称为真实输出,而输出out被称为互补输出。

静态差分或门1210包括单输出或门1220和单输出或非门1230。单输出或门1220提供差分或门1210的真实输出out,而单输出或非门1230提供差分或门1210的互补输出或门1020和或非门1230中的每个门都使用电路块410的单独实例(即,副本)来实现。在或门1220中的每个晶体管的附图标记包括在括号中的1,而在或非门1230中的每个晶体管的附图标记包括在括号中的2,以便在电路块410的两个单独实例(即,副本)之间进行区分。

在图12中示出的示例中,通过将输入耦合到第一pfet412(1)、第二pfet414(1)、第二nfet418(1)和第三nfet426(1)的栅极,并且将输入耦合到第三pfet422(1)、第四pfet424(1)、第一nfet416(1)和第四nfet428(1)的栅极来实现或门1220。输出节点430(1)提供差分或门1210的真实输出out。

通过将输入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和具有互补逻辑值,并且输入b和具有互补逻辑值。从真值表可以看出,输出out和具有互补逻辑值。当在输入a和b中的一个或两个输入为1时,真实输出out为1,而当输入a和b均为0时,真实输出out为0。

通过向静态差分或门1210的输入来输入预设输入值,静态差分或门1210可以被预设。例如,通过向静态差分或门1210的所有输入来输入预设输入值0,静态差分或门1210的输出out和可以被预设为高(即,1)。关于这一点,图13b示出了第一预设表,其中预设输入值0输入到静态差分或门1210的输入a、b和从而使得输出out和二者都预设为高(即,1)。

在该示例中,逻辑电路(在图12中未示出)可以耦合到静态差分或门的输入。在预设阶段期间,逻辑电路向静态差分或门1210的输入a、b和输入预设输入值0,以将输出out和二者预设为高(即,1)。在预设阶段之后的评估阶段期间,逻辑电路向输入a和输入第一对互补数据位,并且向输入b和输入第二对互补数据位。数据位可以包括密码数据或其他安全数据。响应于数据位,静态差分或门1210根据在图13a中的真值表,将out和中的一个从高切换为低。逻辑电路可以包括一个或多个动态差分逻辑门、一个或多个静态差分逻辑门、或动态差分逻辑门和静态差分逻辑门的组合,其示例在下文参考图14进行了讨论。

在另一示例中,通过向静态差分或门1210的所有输入来输入预设输入值1,静态差分或门1210的输出out和二者可以被预设为低(即,0)。就这点而言,图13c示出了第二预设表,其中预设输入值1被输入到静态差分或门1210的输入a、b和从而使得输出out和二者被预设为低(即,0)。

在该示例中,逻辑电路(在图12中未示出)可以耦合到静态差分或门的输入。在预设阶段期间,逻辑电路向静态差分或门1210的输入a、b和输入预设输入值1,以将输出out和二者预设为低(即,0)。在预设阶段之后的评估阶段期间,逻辑电路向输入a和输入第一对互补数据位,并且向输入b和输入第二对互补数据位。数据位可以包括密码数据或其他安全数据。响应于数据位,静态差分或门1210根据在图13a中的真值表,将out和中的一个从低切换为高。逻辑电路可以包括一个或多个动态差分逻辑门、一个或多个静态差分逻辑门、或动态差分逻辑门和静态差分逻辑门的组合,其示例在下文参考图14进行了讨论。

在上述示例中,在预设阶段期间预设输出out和确保输出out和中的一个输出在评估阶段期间切换逻辑状态。因此,或门1220和或非门1230中的一个门的输出,在评估阶段期间切换逻辑状态。由于或门1220和或非门1230的结构相似(即,两者均使用在图4中的电路块410实现),因此相同数目的电容器节点被充电/放电,而不依赖于输出out和out中的一个输出切换逻辑状态。结果,差分或门1210的功率分布图近似相同,而不管在评估阶段期间输出out和中的哪个输出切换逻辑状态。因此,功率分布图近似均匀,从而使得攻击者很难基于功率测量来识别逻辑位值。

如在图12中示出的,或门1220包括上文所讨论的第一传导路径1040和第二传导路径1050,并且或非门1230包括上文所讨论的第一传导路径1060和第二传导路径1070。为了简单起见,本文中不再重复对这些传导路径的描述。

静态差分或门1210可以用于实现动态差分或门。例如,这可以通过以下方式来完成:将第一时钟pfet耦合在真实输出out与供电轨之间,将第二时钟pfet耦合在互补输出与供电轨之间,以及将时钟nfet耦合在静态差分或门1210与接地之间。在该示例中,时钟晶体管的栅极由时钟信号驱动。

上文所讨论的示例性差分逻辑门可以被级联,以实现对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、b和的特定布置。就这点而言,应当领会,对于在这些中图所示出的差分逻辑门510、1010和1210中的每个差分逻辑门,输入a、b和存在实现上文所讨论的差分逻辑门的功能的数种可能布置。例如,在图5中,可以使输入a和到第一pfet412(1)和第二pfet414(1)的栅极的布置反转,使得输入耦合到第一pfet412(1)的栅极,并且将输入a耦合到第二pfet414(1)的栅极。在该示例中,上文所讨论的异或门520的功能保持不变。因而,应当领会,本公开涵盖针对每个门的输入a、b和的其他可能布置。

在本文中使用的诸如“第一”、“第二”等名称对元件的任何引用,通常不会限制那些元件的数量或次序。相反,这些名称在本文中用作区分两个或更多个元件或元件实例的便利方式。因此,对第一元件和第二元件的引用并不意味着只能采用两个元件,或者第一元件必须在第二元件之前。

在本公开中,词语“示例性”用于意指“用作示例、实例或说明”。本文中描述为“示例性”的任何实现方式或方面不必被解释为比本公开的其他方面优选或有利。同样,术语“方面”并不要求本公开的所有方面都包括所讨论的特征、优点或运算模式。术语“耦合”在本文中用于指两个结构之间的直接电耦合或间接电耦合。

提供本公开的先前描述,以使得本领域的任何技术人员能够制造或使用本公开。对于本领域技术人员而言,对本公开的各种修改将是显而易见的,并且在不脱离本公开的精神或范围的情况下,本文中所定义的一般原理可以应用于其他变型。因此,本公开内容不旨在限于本文中所描述的示例,而是符合与本文中所公开的原理和新颖性特征一致的最宽范围。

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