CN106484365B - 验证执行模幂计算的电子电路的敏感度 - Google Patents
验证执行模幂计算的电子电路的敏感度 Download PDFInfo
- Publication number
- CN106484365B CN106484365B CN201610101988.XA CN201610101988A CN106484365B CN 106484365 B CN106484365 B CN 106484365B CN 201610101988 A CN201610101988 A CN 201610101988A CN 106484365 B CN106484365 B CN 106484365B
- Authority
- CN
- China
- Prior art keywords
- register
- content
- multiplication
- result
- index
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
- G06F7/72—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
- G06F7/723—Modular exponentiation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/002—Countermeasures against attacks on cryptographic mechanisms
- H04L9/004—Countermeasures against attacks on cryptographic mechanisms for fault attacks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/72—Indexing scheme relating to groups G06F7/72 - G06F7/729
- G06F2207/7219—Countermeasures against side channel or fault attacks
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Error Detection And Correction (AREA)
- Storage Device Security (AREA)
Abstract
本公开的实施例涉及验证执行模幂计算的电子电路的敏感度。一种验证在第一寄存器和第二寄存器中执行模幂计算的电子电路的敏感度的方法,连续地包括针对指数的每个比特:将寄存器中根据指数的比特的状态从第一寄存器和第二寄存器之中选择的一个寄存器的内容乘以第一寄存器和第二寄存器中的另一个寄存器的内容、将结果放置在寄存器中的所述一个寄存器中的第一步骤;通过将该结果放置在该另一寄存器中来对寄存器中的所述另一个的内容求平方的第二步骤,其中在对第一步骤的执行期间,针对指数的每个比特,扰乱第一寄存器和第二寄存器中包含第一步骤的操作的乘数的内容。
Description
技术领域
本公开内容总体上涉及电子电路,并且更具体地涉及执行模幂运算操作的电路。本公开内容更具体地涉及保护这样的计算免受故障注入攻击。
背景技术
在许多应用中,电子电路实施加密、认证、签名计算的算法,并且更一般地实施操纵对其的访问期望被保留给特定用户或电路的数据(被称为秘密数据)的算法。在这样的算法之中,一些算法使用对包括秘密数据中的全部或部分的模幂运算操作。
存在用于尝试发现或盗取这样的秘密数据的许多方法(被称为攻击)。在这样的攻击之中,所谓的故障注入攻击包括在对电路操作的执行的特定时间扰乱该操作。对这样的故障注入对电路操作或所提供的结果的后果的解译给出了与秘密数据有关的盗取信息。
发明内容
实施例有助于克服用于保护由执行模幂运算的算法操纵的数据免受故障注入攻击的常用方法和电路的缺点中的全部或部分。
在实施例中,由电子电路对模幂运算的计算的方法有助于克服常用方法的缺点中的全部或部分。
实施例提供一种验证故障注入攻击对执行模幂计算的电子电路的敏感度的方法。
实施例提供一种验证在第一寄存器和第二寄存器中执行模幂计算的电子电路的敏感度的方法,所述方法包括连续地针对指数的每个比特(bit):
将寄存器中的根据指数的比特的状态从第一寄存器和第二寄存器之中选择的一个寄存器的内容乘以第一寄存器和第二寄存器中的另一个寄存器的内容并将结果放置在寄存器中的所述一个寄存器中的第一步骤;以及
对寄存器中的所述另一个的内容求平方并将结果放置在该另一寄存器中的第二步骤,
其中在对第一步骤的执行期间,针对指数的每个比特,第一寄存器和第二寄存器包含第一步骤的操作的乘数的内容被扰乱。
根据实施例,由Montgomery阶梯来实施第一步骤。
根据实施例,第一寄存器的内容在第一步骤的每次迭代之前被扰乱。
根据实施例,模幂运算的结果被包含在所述第一寄存器中。
根据实施例,在结果在多个利用相同操作数的计算的执行之间不同的情况下,电路被认为对故障注入敏感。
根据实施例,所述方法包括以下步骤:
将第一寄存器初始化为值1;
将第二寄存器初始化为要被提交到模幂运算的数的值;
连续地,针对指数的每个比特;
如果指数的当前比特的状态为1:
则将第一寄存器的内容乘以第二寄存器的内容并将结果存储在第一寄存器中;
对第二寄存器的内容求平方并将结果存储在第二寄存器中;或者
如果指数的当前比特的状态为0:
则将第二寄存器的内容乘以第一寄存器的内容并将结果存储在第二寄存器中;
对第一寄存器的内容求平方并将结果存储在第一寄存器中;以及
当指数的所有比特已经被处理时,恢复第一寄存器的内容。
根据实施例,无论指数的比特的状态如何,都在乘法步骤中执行扰乱。
根据实施例,在RSA算法中实施模幂运算。
实施例提供一种电子电路,其在操作时实施本文中描述的方法中的一个或多个方法。
在实施例中,一种方法包括:验证使用第一寄存器和第二寄存器执行模幂计算的电子电路的敏感度,其中:执行模幂计算包括,连续地针对计算的指数的每个比特:将寄存器中根据指数的当前比特的状态从第一寄存器和第二寄存器之中选择的一个寄存器的内容乘以第一寄存器和第二寄存器中的另一个寄存器的内容并将乘法的结果放置在寄存器中的所述一个寄存器中;并且对第一寄存器和第二寄存器中的所述另一个寄存器的内容求平方并将求平方的结果放置在第一寄存器和第二寄存器中的另一寄存器中;并且所述验证包括:在乘法期间,针对计算的指数的每个比特,扰乱第一寄存器和第二寄存器中的至少一个的内容;并且基于模幂计算的经扰乱的结果来确定电子电路的敏感度。在实施例中,使用Montgomery阶梯来实施乘法。在实施例中,验证包括在乘法的每次乘法之前扰乱第一寄存器的内容。在实施例中,模幂的结果被包含在所述第一寄存器中。在实施例中,如果计算的结果在多个利用相同操作数对计算的执行之间不同,则电子电路被认为对故障注入敏感。在实施例中,执行模幂计算包括:将第一寄存器初始化为值1;将第二寄存器初始化为要被提交到模幂运算的数的值;连续地针对指数中的每个比特;如果指数的当前比特的状态为1:则将第一寄存器的内容乘以第二寄存器的内容并将乘法的结果存储在第一寄存器中;对第二寄存器的内容求平方并将求平方的结果存储在第二寄存器中;并且如果指数的当前比特的状态为0:则将第二寄存器的内容乘以第一寄存器的内容并将乘法的结果存储在第二寄存器中;对第一寄存器的内容求平方并将求平方的结果存储在第一寄存器中;并且当指数的所有比特已经被处理时,输出第一寄存器的内容。在实施例中,无论指数的比特的状态如何,都在乘法步骤中执行扰乱。在实施例中,在RSA算法中实施模幂运算。在实施例中,在乘法期间扰乱第一寄存器和第二寄存器中的至少一个寄存器的内容包括:扰乱存储乘法的乘数的寄存器。
在实施例中,一种装置包括:接口,其被配置为耦合到包括第一寄存器和第二寄存器的加密电路;以及控制电路,其耦合到接口,其中,控制电路在操作时:生成用于使得加密电路执行模幂计算的信号,执行模幂计算包括,连续地针对计算的指数的每个比特:将第一寄存器和第二寄存器中根据指数的当前比特的状态从第一寄存器和第二寄存器之中选择的一个寄存器的内容乘以第一寄存器和第二寄存器中的另一个寄存器的内容并将乘法的结果放置在第一寄存器和第二寄存器中的所述一个寄存器中;并且对第一寄存器和第二寄存器中的所述另一个寄存器的内容求平方并将求平方的结果放置在第一寄存器和第二寄存器中的另一寄存器中;并且生成用于在模幂计算的乘法期间针对计算的指数的每个比特扰乱第一寄存器和第二寄存器中的至少一个寄存器的内容的信号。在实施例中,其中控制电路在操作时基于经扰乱的模幂计算的结果来提取计算的指数的至少一个比特。在实施例中,扰乱包括故障注入攻击。在实施例中,控制电路在操作时基于经扰乱的模幂计算的结果来验证加密电路对故障注入攻击的敏感度。在实施例中,如果计算的结果在多个利用相同操作数的计算的执行之间不同,则加密电路被认为对故障注入敏感。在实施例中,使用Montgomery阶梯来实施乘法。在实施例中,扰乱包括在乘法的每次乘法之前扰乱第一寄存器的内容。在实施例中,模幂运算的结果被包含在所述第一寄存器中。在实施例中,执行模幂计算包括:将第一寄存器初始化为值1;将第二寄存器初始化为要被提交到模幂运算的数的值;连续地针对指数中的每个比特;如果指数的当前比特的状态为1:则将第一寄存器的内容乘以第二寄存器的内容并将乘法的结果存储在第一寄存器中;对第二寄存器的内容求平方并将求平方的结果存储在第二寄存器中;并且如果指数的当前比特的状态为0:则将第二寄存器的内容乘以第一寄存器的内容并将乘法的结果存储在第二寄存器中;对第一寄存器的内容求平方并将求平方的结果存储在第一寄存器中;并且当指数的所有比特已经被处理时,输出第一寄存器的内容。在实施例中,在RSA算法中实施模幂运算。在实施例中,在乘法期间扰乱第一寄存器和第二寄存器中的至少一个寄存器的内容包括:扰乱第一寄存器和第二寄存器中的存储乘法的乘数的寄存器。
在实施例中,一种方法包括:使用包括第一寄存器和第二寄存器的加密电路执行模幂计算,执行模幂计算包括,连续地针对计算的指数的每个比特:将第一寄存器和第二寄存器中根据指数的当前比特的状态从第一寄存器和第二寄存器之中选择的一个寄存器的内容乘以第一寄存器和第二寄存器中的另一个寄存器的内容,并将乘法的结果放置在第一寄存器和第二寄存器中的所述一个寄存器中;并且对第一寄存器和第二寄存器中的所述另一个的内容求平方并将求平方的结果放置在第一寄存器和第二寄存器中的另一寄存器中;并且在模幂计算的乘法期间,针对计算的指数的每个比特,将故障注入到第一寄存器和第二寄存器中的至少一个寄存器的内容中。在实施例中,所述方法包括基于模幂计算的结果来提取计算的指数的至少一个比特。在实施例中,所述方法包括基于模幂计算的结果来验证加密电路对故障注入攻击的敏感度。在实施例中,注入故障包括在乘法的每次乘法之前扰乱第一寄存器的内容。在实施例中,注入故障包括:扰乱第一寄存器和第二寄存器中存储乘法的乘数的寄存器。
附图说明
图1示意性地示出了电子电路的实施例;
图2以方框的形式图示了由平方乘法方法进行的计算的步骤;
图3图示了在计算中使用的两个寄存器的内容的示例;
图4以方框图的形式图示了在Montgomery阶梯中执行的乘法的步骤;
图5以方框图形式示出了常用对策的实施例;并且
图6是图示了在Montgomery阶梯中执行的保护模幂计算的方法的实施例的方框图。
具体实施方式
除非上下文另行指出,否则在不同附图中已经利用相同的参考标记来指代相同的元件。具体地,不同实施例共同的结构元件和/或功能元件可以利用相同的附图标记来指代并且可以具有相同的结构属性、尺寸属性和材料属性。为清楚起见,已经示出了并将详细描述仅仅对理解所描述的实施例有用的那些步骤和元件。具体地,还没有详细描述对执行的计算的应用或对执行其的电路的应用,所描述的实施例与常用应用兼容。当对术语“约”、“大致”或“大约”进行引用时,这意味着在10%内,在一些实施例中在5%内。
在许多加密算法中能够找到模幂运算操作,例如被称为RSA、DSA、Diffie-Hellman等的算法。
模幂运算包括计算数b的整数e(指数)次幂并进行取n的模的结果c,也就是说,应用以下公式:
c=be(mod n)。
通常来说:
数b表示期望被加密、被认证、被签名、等等的数(或表示数的信息);并且
指数e和模数n(对(e,n))表示对密钥(或表示密钥的信息)进行加密、验证、签名、等等。
在对RSA加密的应用的示例中,加密密钥是对(e,n)并且解密密钥是对(e',n),其中n是加密模数,并且e'是解密指数。
由电子电路(状态机,以程序的形式执行方法的处理器,可编程逻辑电路,等等)对模幂运算的计算通常通过应用所谓的平方乘法方法而被执行。
图1正是示意性地示出了对将描述的实施例应用的类型的电子电路1。
电路1包括:
计算电路11(UC),例如,状态机、微处理器、可编程逻辑电路、等等,包括或使用任意地示出在图1中的在电路11的外部的寄存器2;
一个或多个易失性存储区和/或非易失性存储区13(MEM),其用于存储数据和密钥中的全部或一部分;
一个或多个数据总线、地址总线和/或控制总线15,其位于电路1内部的不同元件与输入输出接口17(I/O)之间以用于与电路1的外部进行通信。
电路1可以包括根据应用的各种其他电路,在图1中由框19(FCT)表示。例如,框19可以包括被配置为使计算电路11经受功耗分析攻击的电路(例如,控制器等),框19可以包括被配置为处理移动电话信号的电路,可以包括被配置为处理金融交易的电路等。框19可以在电路1外部。
根据平方乘法方法对模幂运算的计算使用对计算的多项式分解。
图2以方框的形式示出了由平方乘法方法进行的计算的步骤,包括保护免受简单功耗分析(SPA)攻击和计时攻击。
要被提交到模幂运算的消息(例如,数b)被加载到电路1的寄存器(记为M)中。指数e被加载到电路1的另一寄存器中。将di记为指数e的每个比特,其中i指代范围从0到n-1(或从1到n)的排序。
计算使用两个寄存器2,任意地被称为R0和R1,其中,操作将被执行。
在后文中,为简单起见,寄存器和它们的内容将被混在一起,也就是说,当对寄存器上的操作进行引用时,这意味着对它们的内容进行引用。
在第一步骤(框21)中,将寄存器R0初始化为1(R0=1)。
之后开始对指数e的比特的循环计算。例如,将计数器i初始化为n-1(框22,i=n-1),并且只要还没有处理完所有比特(框24,i=0?),i就在每次指数的比特di被处理时减1(框23,i=i-1)。
针对每次迭代,也就是说,针对每个比特di,通过对R0的内容求平方并将结果放置在寄存器R0中来开始(框25,R0=R02)。在此之后,执行对指数比特的值的测试(框26,di=1?)。如果当前比特di为1(框26的输出是),则将寄存器R0的内容乘以寄存器M的内容(框27,R0=R0*M)并将结果放置在寄存器R0中。如果当前比特di为0(框26的输出否),则通过将寄存器R0的内容乘以寄存器M的内容的结果放置在寄存器R1(框28,R1=R0*M)中来执行对实际计算无用的掩码操作。
只要还没有处理完指数的所有比特(框24的输出否),计数器i被减少并且返回到步骤25。一旦已经处理完所有指数比特(框24的输出是),寄存器R0包含模幂运算的结果(框29,R0=Me(mod n)),也就是说,值c=be(mod n)。
图2中图示的计算也被编写如下:
R0=1(步骤21)
对于i=n-1到0(框22,框24的输出否,框23):
R0=R02or R0*R0(框25)
如果di=1(框26的输出是)
则R0=R0*M(框27)
否则(框26的输出否)
则R1=R0*M(框28)
结束循环(框24的输出是)
返回R0(框29)。
没有被考虑在计算的结果中的步骤28使得能够通过执行相同数目的计算和相同类型的计算而无论指数比特的状态如何,来保护计算免受电路的简单功耗分析(SPA)攻击。
然而,特定故障注入攻击表现为针对图2的计算是有效的。具体地,现在能够将攻击集中在特定计算步骤上。
例如,通过在乘法R0*M的步骤的时间注入故障,也就是说,通过扰乱该步骤的结果(通过改变至少一个比特的值),如果指数比特处于1,则这将对结果具有影响。然而,如果指数比特为0,由于故障结果被存储在对最终结果(寄存器R0的最终结果)没有影响的寄存器R1中,所以后者不被修改。因此,根据最终结果是否受影响,攻击者能够推断指数比特的状态。
这种类型的攻击被称为“C安全错误攻击”。
为了对这种类型的攻击进行计数,其已经被提供以使用最终结果中的寄存器R0和R1的内容。这样的技术包括执行以下计算:
R0=1
R1=M
对于i=n-1到0:
如果di=1
则R0=R0*R1
R1=R12
否则
则R1=R0*R1
R0=R02
结束循环
返回R0。
因此,在对操作R0*R1进行攻击的情况下,最终结果总是被修改。
然而,该方法的弱点已经被突出在被称为“M安全错误攻击”的攻击中。这样的攻击包括将攻击集中在乘法R0*R1的乘数(在以上的示例中,R1)上。
该攻击使用其中乘法被执行在电子电路中的方式。一般使用被称为“Montgomery阶梯”的技术。
图3以方框的形式示出了寄存器R0和R1的示例和它们的相应内容。
每个寄存器包括p个比特,分别为R0[p-1]、…、R0[2]、R0[1]、R0[0]和R1[p-1]、…、R1[2]、R1[1]、R1[0]。
乘法操作R0*R1包括在第一寄存器中连续地将第一项R0(被乘数)的(至少一个比特的)每个字单独地乘以(乘数)的第二项R1的(至少一个比特的)所有字并将针对第一项的每个字的结果累积在另一寄存器中。
图4以方框图的形式图示了这样的乘法的步骤。为简单起见,在后文中假设一个比特字但是编写的全部对字粒度进行调换。
首先将寄存器T1初始化为0(框31,T1=0)。之后,针对寄存器R1的每个比特,(框41,T2=0)将寄存器T2的比特初始化并且连续地将寄存器R1的当前比特R1[j]乘以寄存器R0的所有比特R0[k]。
例如,利用值n-1来初始化第一计数器j(框32,j=n-1)。针对j的每个值,将寄存器T2初始化为0(框41)。之后,利用值n-1来初始化第二计数器k(框42,k=n-1)。将当前比特R0[k]乘以比特R1[j]的值并将结果存储在寄存器T2中(框43,T2=R1[j]*R0[k])。只要还没有处理完寄存器R0的所有比特(框44的输出否,k=0?),也就是说,只要计数器k还没有达到值0,计数器k就被减少(框45,k=k-1)并且其返回到步骤43以利用新结果来重写寄存器T2的内容。一旦已经处理完寄存器R0的所有比特(框44的输出是),就将寄存器T2的内容添加到寄存器T1的内容(框33,T1=T1+T2)并且将结果累积在寄存器T1中。针对寄存器R1的所有比特重复步骤41到45。只要还没有处理完寄存器R1的所有比特(框34的输出否,j=0?),也就是说,只要计数器j还没有达到值0,计数器j就被减少(框35,j=j-1)并且其返回到步骤41。一旦已经处理完寄存器R1的所有比特(框34的输出是),乘法就结束并且寄存器T1包含(框36,T1=R0*R1)结果R0*R1。
图4中图示的计算还可以被编写如下:
T1=0(步骤31)
对于j=n-1到0(步骤32,34(输出否),35):
T2=0(步骤41)
对于k=k-1到0(步骤42,44(输出否),45):
T2=R1[j]*R0[k](步骤43)
结束循环(框44的输出是)
T1=T1+T2(步骤33)
结束循环(框34的输出是)
返回T1(步骤36)。
根据指数的比特(di)的状态,将作为乘法R0*R1的结果的T1的值返回到寄存器R0中(di=1),或者返回到寄存器R1(di=0)中。
M安全错误攻击包括将攻击指向在乘法步骤43上,也就是说,指向在操作43期间的比特R1[j]中的一个比特上。通过扰乱该比特,扰乱寄存器T2的值,并且因此扰乱寄存器T1的值。根据指数的比特(di)的状态,能够在寄存器R0或寄存器R1中找到寄存器T1的内容。如果指数比特为1,则错误之后被传播到寄存器R0,其传达最终结果。然而,如果指数比特为0,则将寄存器T1的内容存储在寄存器R1中的事实将在某些情况下“删除”错误并且后者将对最终结果没有影响。通过多次执行对指数的相同比特的攻击,或者每次攻击都影响结果,并且能够推断指数比特为1,或者其仅仅具有针对攻击的部分的影响,并且能够推断指数比特为0。
在一些攻击中,为了使攻击更有效,至少最后一次“子”乘法被攻击,也就是说,在图4的示例中,至少比特R1[0]的值被扰乱。
另外,由于M安全错误攻击集中于指数比特,所以必须针对指数的每个比特执行M安全错误攻击。
用于克服这种类型的攻击的解决方案是交换乘法的第一项,也就是说,根据指数比特的值来计算R0=R0*R1或R1=R1*R0。在这种情况下,无论指数比特的值如何,攻击将扰乱最终结果并且因此不提供信息。这样的解决方案被描述在Marc Joye和Sung-Ming Yen的文章“The Montgomery Powering Ladder”(CHES 2002,LNCS 2523,第291页至第302页,2003)中。
图5以方框的形式示出了这样的对策的实施模式。
在第一步骤(框51,R0=1;R1=M)处,例如分别利用值1和M来初始化寄存器R0和R1。
之后开始对指数e的比特的循环计算。例如,将计数器i初始化为n-1(框22,i=n-1),并且只要还没有处理完所有比特(框24,i=0?),就在每次指数的比特di被处理时减1(框23,i=i-1)。
在每次迭代时,执行对指数比特的值的测试(框26,di=1?)。
如果当前比特di为1(框26的输出是),则将寄存器R0的内容乘以寄存器R1的内容(框52,R0=R0*R1)并将结果放置在寄存器R0中。之后(框52,R1=R12),对寄存器R1的内容求平方并将结果放置在寄存器R1中。
相反,如果当前比特di为0(框26的输出否),则将寄存器R1的内容乘以寄存器R0的内容(框54,R1=R1*R0)并将结果放置在寄存器R1中。之后(框25,R0=R02),对寄存器R0的内容求平方并将结果放置在寄存器R0中。
在最后(框24的输出是),寄存器R0包含模幂运算的最终结果(框29,R0=Me(modn))。
由于根据指数比特的在步骤52和54处的乘数与被乘数之间的作用的反转,对子乘法的攻击(图4的步骤43)能够总是影响最终结果。M安全错误攻击因此变得无效。
然而,如果攻击总是瞄准操作数R0而非乘数,则由电子电路对计算的执行再次变得易受攻击。实际上,从能够瞄准寄存器R0时的时间,易受攻击性位于最后一次迭代的层级处,也就是说最后的步骤52或54。实际上,在该最后的步骤处,对寄存器R0的攻击将在指数比特处于状态1时对最终结果具有影响并且在相反情况下不具有影响。因此,通过执行两次计算,一次没有扰乱并且一次具有扰乱,能够确定指数的最后一个比特的状态。
简单的方式是在每次迭代时攻击寄存器R0。然而,如果攻击者能够检测迭代序列,则对最后一次迭代的攻击是足够的。
为了确定两个寄存器2中的哪个起到寄存器R0的作用,在乘法的最后(步骤52或54)攻击两个寄存器是足够的。这使得能够标识使结果对攻击敏感的寄存器。之后在对能够发现秘密(密钥的值)的计算的许多执行期间将攻击集中在该寄存器上是足够的。
应当指出,该攻击也在攻击在对指数的倒数第二比特的迭代期间集中在寄存器R1的值上时起作用。
上述攻击在密钥(指数值)在每次执行被计算时不被电路修改时有效。
为了根据上述方法来验证电路是否对故障注入敏感,验证结果在利用相同操作数对计算的多次执行之间是否不同。如果结果是肯定的,则电路是敏感的。
发明人通过利用指数e的值针对多次迭代保持相同的事实来提供对这样的攻击的对策。这在实践中是正确的并且这生成上述弱点。
图6是图示了基于实施所谓的“Montgomery阶梯”方法的计算来保护模幂计算的方法的实施例的方框图。
根据该方法,额外的寄存器2(被记为T)被用作总是伴随计算的变量。
在第一步骤(框51,R0=1;R1=M)处,例如分别利用值1和M来初始化寄存器R0和R1。实际上,存储寄存器中的将被乘的最后一个字是足够的。寄存器T中包含的初始值是不重要的。
之后开始对指数e的比特的循环计算。例如,将计数器i初始化为n-1(框22,i=n-1),并且只要还没有处理完所有比特(框24,i=0?),就在每次指数的比特di被处理时减1(框23,i=i-1)。
针对每次迭代,执行对指数比特的值的测试(框26,di=1?)。
如果当前比特di为1(框26的输出是),则将(从先前迭代得到的)寄存器R1的内容转移到寄存器T中(框61,T=R1)。这相当于将从先前操作得到的寄存器R1的内容临时存储到寄存器T中。之后,将寄存器R0的内容乘以寄存器R1的内容(框52,R0=R0*R1)并且将结果放置在寄存器R0中。之后,将寄存器T的内容恢复到寄存器R1(框63,R1=T)。之后(框53,R1=R12),对寄存器R1的内容求平方并将结果放置在寄存器R1中。
相反,如果当前比特di为0(框26的输出否),则将(从先前迭代得到的)寄存器R0的内容传送到寄存器T中(框67,T=R0)。这相当于将从先前操作得到的寄存器R0的内容临时存储到寄存器T中。之后,将寄存器R1的内容乘以寄存器R0的内容(框54,R1=R1*R0)并且将结果放置在寄存器R1中。之后,将寄存器T的内容恢复到寄存器R0(框69,R0=T)。然后(框25,R0=R02),对寄存器R0的内容求平方并将结果放置在寄存器R0中。
在最后(框29),寄存器R0包含模幂运算的最终结果,也就是说,R0=Me(mod n)。
因此,即使在步骤52或54内执行对寄存器R0(或R1)的攻击,在步骤42的最后一次迭代处(图4),在求平方操作之前使用临时寄存器T和重新加载寄存器R0(或R1)的事实也使这样的攻击无效。
关于图6描述的方法相当于执行以下计算:
R0=1(框51)
R1=M(框51)
对于i=n-1到0(框22,框24的输出否,框23):
如果di=1(框26的输出是)
则T=R1(框61)
R0=R0*R1(框52)
R1=T(框63)
R1=R12(框53)
否则(框26的输出否)
则T=R0(框67)
R1=R1*R0(框54)
R0=T(框69)
R0=R02(框25)
结束循环(框24的输出是)
返回R0(框29)。
在实施例中,期望评估电子电路对诸如上文描述的攻击的抵抗力。出于该目的,攻击可以被执行并检测攻击是否有效。
在实施例中,期望针对这样的攻击保护对模幂计算的执行。验证对攻击的敏感性的方法的实施可以促进验证关于图6描述的对策的实施例是否要由电子电路实施。
已经描述了各种实施例。本领域技术人员将进行各种更改和修改。具体地,寄存器名称是任意的并且可以被交换。最后,基于上文给出的功能指示,已经描述的实施例的实际实施处在本领域技术人员的能力内。
这样的更改、修改和改进旨在为本公开内容的一部分,并且旨在处于本公开内容的精神和范围内。因此,前面的描述仅仅是通过举例的方式并且不旨在为限制性的。一些实施例可以采取计算机程序产品的形式或者包括计算机程序产品。例如,根据一个实施例,提供了一种计算机可读介质,其包括适于执行以上描述的方法或功能中的一个或多个的计算机程序。介质可以为物理存储介质,例如只读存储器(ROM)芯片、或磁盘,例如数字多用盘(DVD-ROM)、紧凑盘(CD-ROM)、硬盘、存储器、网络、或要由适当的驱动器或经由适当的连接读取的便携式介质产品,包括如被编码在存储在一个或多个这样的计算机可读介质上并且可由适当的阅读器设备读取的一个或多个条形码或其他相关联的代码中的便携式介质产品。
另外,在一些实施例中,可以以其他方式来实施或提供方法和/或功能中的一些或全部,例如至少部分地被实施或被提供在固件和/或硬件中,固件和/或硬件包括但不限于一个或多个专用集成电路(ASIC)、数字信号处理器、分立电路、逻辑门、标准集成电路、控制器(例如,通过执行适当的指令,并且包括微控制器和/或嵌入式控制器)、现场可编程门阵列(FPGA)、复杂可编程逻辑器件(CPLD)等以及采用RFID技术的设备、以及它们的各种组合。
以上描述的各种实施例能够被组合以提供进一步的实施例。在必要时,能够修改实施例的各方面以采用各种专利、申请和公开的构思来提供更进一步的实施例。
鉴于以上详细描述的说明书能够进行对实施例的这些和其他改变。总体上,在所附权利要求书中,使用的术语不应当被解释为将权利要求限于在说明书中公开的具体实施例,而是应当被解释为包括所有可能的实施例,只要在这样的权利要求有权要求的等效方案的全部范围内。因此,权利要求不受本公开内容限制。
Claims (25)
1.一种用于验证执行模幂计算的电子电路的敏感度的方法,包括:
验证使用第一寄存器和第二寄存器执行模幂计算的电子电路的敏感度,其中:
执行所述模幂计算包括连续地针对所述计算的指数的每个比特:
将所述寄存器中根据所述指数的当前比特的状态从所述第一寄存器和所述第二寄存器之中选择的一个寄存器的内容与所述第一寄存器和所述第二寄存器中的另一个寄存器的内容相乘,并且将所述相乘的结果放置在所述第一寄存器和所述第二寄存器中的所述一个寄存器中;并且
对所述第一寄存器和所述第二寄存器中的所述另一个寄存器的内容求平方,并且将所述求平方的结果放置在所述第一寄存器和所述第二寄存器中的所述另一个寄存器中;以及
所述验证包括:
在所述相乘期间,针对所述计算的所述指数的每个比特,扰乱所述第一寄存器和所述第二寄存器中的至少一个寄存器的内容;并且
基于所述模幂计算的经扰乱的结果来确定所述电子电路的所述敏感度。
2.根据权利要求1所述的方法,其中所述相乘使用Montgomery阶梯被实施。
3.根据权利要求1所述的方法,其中所述验证包括:在所述相乘中的每次乘法之前,扰乱所述第一寄存器的内容。
4.根据权利要求1所述的方法,其中所述模幂计算的结果被包含在所述第一寄存器中。
5.根据权利要求1所述的方法,其中如果所述计算的所述结果在利用相同操作数的所述计算的多个执行之间不同,则所述电子电路被认为对故障注入敏感。
6.根据权利要求1所述的方法,其中执行所述模幂计算包括:
将所述第一寄存器初始化为值1;
将所述第二寄存器初始化为要被提交到所述模幂计算的数的值;
连续地针对所述指数的每个比特;
如果所述指数的所述当前比特的所述状态为1:
则将所述第一寄存器的内容与所述第二寄存器的内容相乘,并且将所述相乘的结果存储在所述第一寄存器中;
对所述第二寄存器的内容求平方,并且将所述求平方的结果存储在所述第二寄存器中;以及
如果所述指数的所述当前比特的所述状态为0:
则将所述第二寄存器的内容与所述第一寄存器的内容相乘,并且将所述相乘的结果存储在所述第二寄存器中;
对所述第一寄存器的内容求平方,并且将所述求平方的结果存储在所述第一寄存器中;以及
当所述指数的所有比特已经被处理时,输出所述第一寄存器的所述内容。
7.根据权利要求6所述的方法,其中无论所述指数的比特的状态如何,都在所述相乘步骤中执行所述扰乱。
8.根据权利要求1所述的方法,其中所述模幂计算被实施在RSA算法中。
9.根据权利要求1所述的方法,其中在所述相乘期间扰乱所述第一寄存器和所述第二寄存器中的至少一个寄存器的内容包括:扰乱存储所述相乘的乘数的寄存器。
10.一种用于执行模幂计算的装置,包括:
接口,所述接口被配置为耦合到包括第一寄存器和第二寄存器的加密电路;以及
控制电路,所述控制电路耦合到所述接口,其中所述控制电路在操作时:
生成用于使得所述加密电路执行模幂计算的信号,执行所述模幂计算包括连续地针对所述计算的指数的每个比特:
将所述第一寄存器和所述第二寄存器中根据所述指数的当前比特的状态从所述第一寄存器和所述第二寄存器之中选择的一个寄存器的内容与所述第一寄存器和所述第二寄存器中的另一个寄存器的内容相乘,并且将所述相乘的结果放置在所述第一寄存器和所述第二寄存器中的所述一个寄存器中;并且
对所述第一寄存器和所述第二寄存器中的所述另一个寄存器的内容求平方,并且将所述求平方的结果放置在所述第一寄存器和所述第二寄存器中的所述另一个寄存器中;以及
生成用于在所述模幂计算的所述相乘期间针对所述计算的所述指数的每个比特而扰乱所述第一寄存器和所述第二寄存器中的至少一个寄存器的内容的信号。
11.根据权利要求10所述的装置,其中所述控制电路在操作时基于经扰乱的所述模幂计算的结果来提取所述计算的所述指数的至少一比特。
12.根据权利要求10所述的装置,其中所述扰乱包括故障注入攻击。
13.根据权利要求10所述的装置,其中所述控制电路在操作时基于经扰乱的所述模幂计算的结果来验证所述加密电路对故障注入攻击的敏感度。
14.根据权利要求13所述的装置,其中如果所述计算的所述结果在利用相同操作数的所述计算的多个执行之间不同,则加密电路被认为对故障注入敏感。
15.根据权利要求10所述的装置,其中所述相乘使用Montgomery阶梯被实施。
16.根据权利要求10所述的装置,其中所述扰乱包括:在所述相乘的每次乘法之前,扰乱所述第一寄存器的内容。
17.根据权利要求10所述的装置,其中所述模幂计算的结果被包含在所述第一寄存器中。
18.根据权利要求10所述的装置,其中执行所述模幂计算包括:
将所述第一寄存器初始化为值1;
将所述第二寄存器初始化为要被提交到所述模幂计算的数的值;
连续地针对所述指数的每个比特;
如果所述指数的所述当前比特的所述状态为1:
则将所述第一寄存器的内容与所述第二寄存器的内容相乘,并且将所述相乘的结果存储在所述第一寄存器中;
对所述第二寄存器的内容求平方,并且将所述求平方的结果存储在所述第二寄存器中;以及
如果所述指数的所述当前比特的所述状态为0:
则将所述第二寄存器的内容与所述第一寄存器的内容相乘,并且将所述相乘的结果存储在所述第二寄存器中;
对所述第一寄存器的内容求平方,并且将所述求平方的结果存储在所述第一寄存器中;以及
当所述指数的所有比特已经被处理时,输出所述第一寄存器的所述内容。
19.根据权利要求10所述的装置,其中所述模幂计算被实施在RSA算法中。
20.根据权利要求10所述的装置,其中所述相乘期间扰乱所述第一寄存器和所述第二寄存器中的至少一个寄存器的内容包括:扰乱所述第一寄存器和所述第二寄存器中存储所述相乘的乘数的寄存器。
21.一种用于执行模幂计算的方法,包括:
使用包括第一寄存器和第二寄存器的加密电路执行模幂计算,执行所述模幂计算包括连续地针对所述计算的指数的每个比特:
将所述第一寄存器和所述第二寄存器中根据所述指数的当前比特的状态从所述第一寄存器和所述第二寄存器之中选择的一个寄存器的内容与所述第一寄存器和所述第二寄存器中的另一个寄存器的内容相乘,并且将所述相乘的结果放置在所述第一寄存器和所述第二寄存器中的所述一个寄存器中;并且
对所述第一寄存器和所述第二寄存器中的所述另一个寄存器的内容求平方,并且将所述求平方的结果放置在所述第一寄存器和所述第二寄存器中的所述另一个寄存器中;以及
在所述模幂计算的所述相乘期间,针对所述计算的所述指数的每个比特,将故障注入到所述第一寄存器和所述第二寄存器中的至少一个寄存器的内容中。
22.根据权利要求21所述的方法,包括:基于所述模幂计算的结果来提取所述计算的所述指数的至少一比特。
23.根据权利要求21所述的方法,包括:基于所述模幂计算的结果来验证所述加密电路对故障注入攻击的敏感度。
24.根据权利要求21所述的方法,其中注入故障包括:在所述相乘的每次乘法之前,扰乱所述第一寄存器的内容。
25.根据权利要求21所述的方法,其中注入故障包括:扰乱所述第一寄存器和所述第二寄存器中存储所述相乘的乘数的寄存器。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR1557976 | 2015-08-27 | ||
FR1557976A FR3040511B1 (fr) | 2015-08-27 | 2015-08-27 | Verification de la sensibilite d'un circuit electronique executant un calcul d'exponentiation modulaire |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106484365A CN106484365A (zh) | 2017-03-08 |
CN106484365B true CN106484365B (zh) | 2019-03-19 |
Family
ID=55129983
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610101988.XA Active CN106484365B (zh) | 2015-08-27 | 2016-02-24 | 验证执行模幂计算的电子电路的敏感度 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10209961B2 (zh) |
EP (1) | EP3136227B1 (zh) |
CN (1) | CN106484365B (zh) |
FR (1) | FR3040511B1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023141935A1 (en) * | 2022-01-28 | 2023-08-03 | Nvidia Corporation | Techniques, devices, and instruction set architecture for balanced and secure ladder computations |
CN116830076A (zh) | 2022-01-28 | 2023-09-29 | 辉达公司 | 用于高效模除法和模求逆的技术、设备和指令集架构 |
WO2023141934A1 (en) | 2022-01-28 | 2023-08-03 | Nvidia Corporation | Efficient masking of secure data in ladder-type cryptographic computations |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1739094A (zh) * | 2002-11-15 | 2006-02-22 | 格姆普拉斯公司 | 防止隐蔽信道攻击的整数除法方法 |
CN101405988A (zh) * | 2006-03-28 | 2009-04-08 | 西门子公司 | 用于安全地确定数据的方法 |
CN101689233A (zh) * | 2007-07-05 | 2010-03-31 | Nxp股份有限公司 | 安全敏感系统中的微处理器 |
US8321691B2 (en) * | 2006-03-06 | 2012-11-27 | Stmicroelectronics S.A. | EMA protection of a calculation by an electronic circuit |
US8588407B2 (en) * | 2005-04-22 | 2013-11-19 | Stmicroelectronics S.A. | Protection of a calculation performed by an integrated circuit |
US8930435B2 (en) * | 2010-01-28 | 2015-01-06 | Cisco Technology Inc. | Exponentiation system |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
IL101623A (en) * | 1992-04-16 | 1997-06-10 | Fortress U & T 2000 Ltd | Digital signature device |
FR2724741B1 (fr) * | 1994-09-21 | 1996-12-20 | Sgs Thomson Microelectronics | Circuit electronique de calcul modulaire dans un corps fini |
US6317769B1 (en) * | 1996-09-18 | 2001-11-13 | International Business Machines Corporation | Apparatus for calculating of Bc (mod n) with repeatedly shifting a holding value |
FR2843507B1 (fr) * | 2002-08-12 | 2004-10-29 | Gemplus Card Int | Procede securise de realisation parallele d'une exponentiation modulaire, procede cryptographique et circuit de calcul associes |
WO2007104706A1 (fr) * | 2006-03-16 | 2007-09-20 | Gemplus | Procede de securisation d'un calcul d'une exponentiation ou d'une multiplication par un scalaire dans un dispositif electronique |
US7912886B2 (en) * | 2006-12-14 | 2011-03-22 | Intel Corporation | Configurable exponent FIFO |
EP2293185A1 (en) * | 2009-09-04 | 2011-03-09 | Thomson Licensing | Exponentiation method resistant against skipping attacks and apparatus for performing the method |
EP2334006B1 (en) * | 2009-12-10 | 2016-03-23 | Nxp B.V. | Side-channel resistant modular exponentiation |
-
2015
- 2015-08-27 FR FR1557976A patent/FR3040511B1/fr not_active Expired - Fee Related
-
2016
- 2016-02-09 EP EP16154855.7A patent/EP3136227B1/fr active Active
- 2016-02-24 CN CN201610101988.XA patent/CN106484365B/zh active Active
- 2016-02-29 US US15/056,586 patent/US10209961B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1739094A (zh) * | 2002-11-15 | 2006-02-22 | 格姆普拉斯公司 | 防止隐蔽信道攻击的整数除法方法 |
US8588407B2 (en) * | 2005-04-22 | 2013-11-19 | Stmicroelectronics S.A. | Protection of a calculation performed by an integrated circuit |
US8321691B2 (en) * | 2006-03-06 | 2012-11-27 | Stmicroelectronics S.A. | EMA protection of a calculation by an electronic circuit |
CN101405988A (zh) * | 2006-03-28 | 2009-04-08 | 西门子公司 | 用于安全地确定数据的方法 |
CN101689233A (zh) * | 2007-07-05 | 2010-03-31 | Nxp股份有限公司 | 安全敏感系统中的微处理器 |
US8930435B2 (en) * | 2010-01-28 | 2015-01-06 | Cisco Technology Inc. | Exponentiation system |
Non-Patent Citations (4)
Title |
---|
Fault Attacks on RSA with CRT:Concrete Results and Practical Countermeasures;C Aumuller,et al;《Springer Berlin Heidelberg》;20031231;第260-275页 * |
The Sorcer"s Apprentice Guide to Fault Attacks;H Bar-EI,et al;《proceedings of the IEEE》;20060228;第370-382页 * |
一种改进的CRT-RSA防御侧信道攻击算法;李子木;《信息传输与接入技术》;20131231;第60-62页 * |
一种针对采用SPA-FA防御措施的RSA故障分析算法;范黎恒,等;《兵工自动化》;20110630;第30卷(第6期);第91-96页 * |
Also Published As
Publication number | Publication date |
---|---|
EP3136227B1 (fr) | 2018-04-04 |
FR3040511A1 (fr) | 2017-03-03 |
CN106484365A (zh) | 2017-03-08 |
FR3040511B1 (fr) | 2017-09-08 |
US10209961B2 (en) | 2019-02-19 |
EP3136227A1 (fr) | 2017-03-01 |
US20170060535A1 (en) | 2017-03-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Verbauwhede et al. | The fault attack jungle-a classification model to guide you | |
JP6707024B2 (ja) | 非対称マスク済み乗算 | |
Anderson et al. | Cryptographic processors-a survey | |
US8402287B2 (en) | Protection against side channel attacks | |
CN102638341B (zh) | 用于计算标量乘法的结果的设备和方法 | |
US10354063B2 (en) | Protection of a modular calculation | |
US10025559B2 (en) | Protection of a modular exponentiation calculation | |
CN107040362B (zh) | 模乘设备和方法 | |
CN106487510B (zh) | 模幂计算的保护 | |
Joye et al. | Side-Channel Analysis. | |
CN105991292A (zh) | 用于操作安全椭圆曲线密码系统的系统和方法 | |
US8688995B2 (en) | Method and apparatus for detection of a fault attack | |
CN106484365B (zh) | 验证执行模幂计算的电子电路的敏感度 | |
WO2007113697A2 (en) | Secure decryption method | |
Tunstall | Smart card security | |
Danger et al. | Improving the big mac attack on elliptic curve cryptography | |
KR102515381B1 (ko) | 반복적인 사이드 채널 공격 대응책 | |
CN109299621B (zh) | 对迭代计算的防范水平攻击的保护 | |
Feix et al. | Defeating with fault injection a combined attack resistant exponentiation | |
CN104298897B (zh) | 基于混沌技术的嵌入式版权认证方法及专用处理器 | |
US11902412B2 (en) | Fault attack resistant cryptographic systems and methods | |
Fournaris | Fault and power analysis attack protection techniques for standardized public key cryptosystems | |
Cao et al. | Two lattice-based differential fault attacks against ECDSA with w NAF algorithm | |
US20210194689A1 (en) | Method for performing cryptographic operations in a processing device, corresponding processing device and computer program product | |
CN104573544B (zh) | 数据的防攻击方法及装置、rsa模幂运算方法、装置和电路 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |