CN106487510B - 模幂计算的保护 - Google Patents

模幂计算的保护 Download PDF

Info

Publication number
CN106487510B
CN106487510B CN201610104644.4A CN201610104644A CN106487510B CN 106487510 B CN106487510 B CN 106487510B CN 201610104644 A CN201610104644 A CN 201610104644A CN 106487510 B CN106487510 B CN 106487510B
Authority
CN
China
Prior art keywords
register
content
index
stored
result
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
Application number
CN201610104644.4A
Other languages
English (en)
Other versions
CN106487510A (zh
Inventor
Y·特戈利亚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Italian Semiconductor (russell) Co
Original Assignee
Italian Semiconductor (russell) Co
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Italian Semiconductor (russell) Co filed Critical Italian Semiconductor (russell) Co
Publication of CN106487510A publication Critical patent/CN106487510A/zh
Application granted granted Critical
Publication of CN106487510B publication Critical patent/CN106487510B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3006Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters
    • H04L9/302Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters involving the integer factorization problem, e.g. RSA or quadratic sieve [QS] schemes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods 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/72Methods 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/723Modular exponentiation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/002Countermeasures against attacks on cryptographic mechanisms
    • H04L9/004Countermeasures against attacks on cryptographic mechanisms for fault attacks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/72Indexing scheme relating to groups G06F7/72 - G06F7/729
    • G06F2207/7219Countermeasures against side channel or fault attacks

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Error Detection And Correction (AREA)
  • Executing Machine-Instructions (AREA)
  • Storage Device Security (AREA)

Abstract

本公开的实施例涉及模幂计算的保护。一种使用第一寄存器和第二寄存器来保护由电子电路所执行的模幂计算的方法,包括连续地针对指数的每个比特:将寄存器中根据指数的比特的状态从第一寄存器和第二寄存器之中选择的一个寄存器的内容乘以第一寄存器和第二寄存器中的另一个寄存器的内容并且将结果放置在寄存器中的所述一个寄存器中的第一步骤;通过将结果放置在所述另一个寄存器中来对寄存器中的所述另一个寄存器的内容求平方的第二步骤,其中,寄存器中的所述另一个寄存器的内容在第一步之前被存储在第三寄存器中并且在第二步之前被恢复在寄存器中的所述另一个寄存器中。

Description

模幂计算的保护
技术领域
本公开内容总体上涉及电子电路,并且更具体地涉及执行模幂运算操作的电路。本公开内容更具体地涉及保护这样的计算免受故障注入攻击。
背景技术
在许多应用中,电子电路实施加密、认证、签名计算的算法,并且更一般地实施操纵对其的访问期望被保留给特定用户或电路的数据(被称为秘密数据)的算法。在这样的算法之中,一些算法使用对包括秘密数据中的全部或部分的模幂运算操作。
存在用于尝试发现或盗取这样的秘密数据的许多方法(被称为攻击)。在这样的攻击之中,所谓的故障注入攻击包括在对电路操作的执行的特定时间扰乱该操作。对这样的故障注入对电路操作或所提供的结果的后果的解译给出了与秘密数据有关的盗取信息。
发明内容
实施例有助于克服用于保护由执行模幂运算的算法操纵的数据免受故障注入攻击的常用方法和电路的缺点中的全部或部分。
在实施例中,由电子电路对模幂运算的计算的方法有助于克服常用方法的缺点中的全部或部分。
实施例提供一种验证故障注入攻击对执行模幂计算的电子电路的敏感度的方法。
实施例提供使用第一寄存器和第二寄存器来保护由电子电路所执行的模幂计算的方法,连续地包括针对指数的每个比特:
第一步骤:将寄存器中根据指数比特的状态从第一寄存器和第二寄存器之间选择的一个寄存器的内容乘以第一寄存器和第二寄存器中的另一个寄存器的内容,并且将结果放置在寄存器中的一个寄存器中;
第二步骤:对寄存器中的另一个寄存器的内容求平方,并且将结果放置在该另一个寄存器中,
其中寄存器中的另一个寄存器的内容在第一步之前被存储在第三寄存器中并且在第二步之前被恢复在寄存器中的所述另一个寄存器中。
根据实施例,寄存器中的一个寄存器是针对状态1处的指数的比特的第一寄存器。
根据实施例,模幂运算的结果被包含在所述第一寄存器中。
根据实施例,该方法包括以下步骤:
将第一寄存器初始化为值1;
将第二寄存器初始化为要提交给模幂运算的数的值;
连续地针对指数的每个比特;
如果指数的当前比特的状态是1:
则将第二寄存器的内容传送到第三寄存器中;
将第一寄存器的内容乘以第二寄存器的内容并且将结果存储在第一寄存器中;
将第三寄存器的内容传送到第二寄存器中;
对第二寄存器的内容求平方并且将结果存储在第二寄存器中;或者
如果指数的当前比特的状态是0:
则将第一寄存器的内容传送到第三寄存器中;
将第二寄存器的内容乘以第一寄存器的内容并且将结果存储在第二寄存器中;
将第三寄存器的内容传送到第一寄存器中;
对第一寄存器的内容求平方并且将结果存储在第一寄存器中;以及
当已经处理指数的所有比特时,恢复第一寄存器的内容。
根据实施例,在RSA模幂运算中实施模幂运算。
实施例提供电子电路,其在操作时实现本文所公开的方法中的一种或多种方法。
在实施例中,一种方法包括:在电子电路的模幂计算的执行期间,使用第一寄存器和第二寄存器并通过以下步骤来保护电子电路免受攻击,连续地针对计算的指数的每个比特:将第一寄存器和第二寄存器中的一个寄存器的内容存储在第三寄存器中,第一寄存器和第二寄存器中的一个基于指数的当前比特的状态;将第一寄存器和第二寄存器中的另一个寄存器的内容乘以第一寄存器和第二寄存器中的一个寄存器的内容,并且将乘法的结果存储在第一寄存器和第二寄存器中的另一个寄存器中;将第三寄存器的内容存储在第一寄存器和第二寄存器中的一个中;并且对第一寄存器和第二寄存器中的一个寄存器的内容求平方并且将求平方的结果存储在第一寄存器和第二寄存器中的一个寄存器中。在实施例,所述寄存器中的一个寄存器是针对状态1处的指数位的第一寄存器。在实施例中,模幂运算的结果被包含在第二寄存器中。在实施例中,该方法包括:将第二寄存器初始化为值1;将第一寄存器初始化为要提交给模幂运算的数的值;连续地针对指数的每个比特:如果指数的当前比特的状态是1:则将第一寄存器的内容传送到第三寄存器中;将第二寄存器的内容乘以第一寄存器的内容并且将乘法的结果存储在第二寄存器中;将第三寄存器的内容传送到第一寄存器中;并且对第一寄存器的内容求平方并且将求平方的结果存储在第一寄存器中;并且如果指数的当前比特的状态是0:则将第二寄存器的内容传送到第三寄存器中;将第一寄存器的内容乘以第二寄存器的内容并且将乘法的结果存储在第一寄存器中;将第三寄存器的内容传送到第二寄存器中;并且对第二寄存器的内容求平方并且将结果存储在第二寄存器中;并且当已经处理指数的所有比特时,输出第二寄存器的内容。在实施例中,在RSA算法中实施模幂运算。
在实施例中,一种装置包括:多个寄存器;和耦合到多个寄存器的电路装置,电路装置在操作时通过连续地针对计算的指数的每个比特执行以下操作来执行模幂计算:将第一寄存器和第二寄存器中的一个寄存器的内容存储在第三寄存器中,第一寄存器和第二寄存器中的一个寄存器基于指数的当前比特的状态;将第一寄存器和第二寄存器中的另一个寄存器的内容乘以第一寄存器和第二寄存器中的一个寄存器的内容,并且乘法的结果存储在第一寄存器和第二寄存器中的所述另一个寄存器中;将第三寄存器中的内容存储在第一寄存器和第二寄存器中的一个寄存器中;并且对第一寄存器和第二寄存器中的一个寄存器的内容求平方并且将求平方的结果存储在第一寄存器和第二寄存器中的一个寄存器中。在实施例中,第一寄存器和第二寄存器中的一个寄存器是针对状态1处的指数的比特的第一寄存器。在实施例中,模幂运算的结果被包含在第二寄存器中。在实施例中,电路装置在操作时:将第二寄存器初始化为值1;将第一寄存器初始化为要提交给模幂运算的数的值;连续地针对指数的每个比特:如果指数的当前比特的状态是1:则将第一寄存器的内容传送到第三寄存器中;将第二寄存器的内容乘以第一寄存器的内容并且将乘法的结果存储在第二寄存器中;将第三寄存器的内容传送到第一寄存器中;并且对第一寄存器的内容求平方并且将求平方的结果存储在第一寄存器中;并且如果指数的当前比特的状态是0:则将第二寄存器的内容传送到第三寄存器中;将第一寄存器的内容乘以第二寄存器的内容并且将乘法的结果存储在第一寄存器中;将第三寄存器的内容传送到第二寄存器中;并且对第二寄存器的内容求平方并且将结果存储在第二寄存器中;并且当已经处理指数的所有比特时,输出第二寄存器的内容。在实施例中,在RSA算法中实施模幂运算。
在实施例中,系统包括:一个或多个存储器;和耦合到一个或多个存储器并且被配置为执行模幂计算的电路装置,其中电路装置连续地针对计算的指数的每个比特:将第一寄存器和第二寄存器中的一个寄存器的内容存储在第三寄存器中,第一寄存器和第二寄存器中的一个寄存器基于指数的当前比特的状态;将第一寄存器和第二寄存器中的另一个寄存器的内容乘以第一寄存器和第二寄存器中的一个寄存器的内容;将乘法的结果存储在第一寄存器和第二寄存器中的另一个寄存器中;将第三寄存器中的内容存储在第一寄存器和第二寄存器中的一个寄存器中;并且对第一寄存器和第二寄存器中的一个寄存器的内容求平方并且将求平方的结果存储在第一寄存器和第二寄存器中的一个寄存器中。在实施例中,所述第一寄存器和第二寄存器中的一个寄存器是针对状态1处的指数的比特的第一寄存器。在实施例中,模幂运算的结果被包含在第二寄存器中。在实施例中,电路装置在操作时:将第二寄存器初始化为值1;将第一寄存器初始化为要提交给模幂运算的数的值;连续地针对指数的每个比特:如果指数的当前比特的状态是1:则将第一寄存器的内容传送到第三寄存器中;将第二寄存器的内容乘以第一寄存器的内容并且将乘法的结果存储在第二寄存器中;将第三寄存器的内容传送到第一寄存器中;并且对第一寄存器的内容求平方并且将求平方的结果存储在第一寄存器中;并且如果指数的当前比特的状态是0:则将第二寄存器的内容传送到第三寄存器中;将第一寄存器的内容乘以第二寄存器的内容并且将乘法的结果存储在第一寄存器中;将第三寄存器的内容传送到第二寄存器中;并且对第二寄存器的内容求平方并且将结果存储在第二寄存器中;并且当已经处理指数的所有比特时,输出第二寄存器的内容。在实施例中,系统集成电路,该集成电路包括电路装置。在实施例中,集成电路包括第一寄存器、第二寄存器和第三寄存器。
在实施例中,系统包括:多个寄存器;和耦合到多个寄存器的、用于执行模幂计算的装置,其中执行模幂计算包括连续地针对计算的指数的每个比特:将第一寄存器和第二寄存器中的一个寄存器的内容存储在第三寄存器中,第一寄存器和第二寄存器中的一个寄存器基于指数的当前比特的状态;将第一寄存器和第二寄存器中的另一个寄存器的内容乘以第一寄存器和第二寄存器中的一个寄存器的内容;将乘法的结果存储在第一寄存器和第二寄存器中的另一个寄存器中;将第三寄存器中的内容存储在第一寄存器和第二寄存器中的一个寄存器中;对第一寄存器和第二寄存器中的一个寄存器的内容求平方;并且将平方的结果存储在第一寄存器和第二寄存器中的一个寄存器中。在实施例中,用于执行的装置包括以下中各项的至少一项:状态机;微处理器;可编程逻辑电路和接线逻辑。在实施例中,用于执行的装置在操作时:将第二寄存器初始化为值1;将第一寄存器初始化为要提交给模幂运算的数的值;连续地针对指数的每个比特:如果指数的当前比特的状态是1:则将第一寄存器的内容传送到第三寄存器中;将第二寄存器的内容乘以第一寄存器的内容并且将乘法的结果存储在第二寄存器中;将第三寄存器的内容传送到第一寄存器中;并且对第一寄存器的内容求平方并且将求平方的结果存储在第一寄存器中;并且如果指数的当前比特的状态是0:则将第二寄存器的内容传送到第三寄存器中;将第一寄存器的内容乘以第二寄存器的内容并且将乘法的结果存储在第一寄存器中;将第三寄存器的内容传送到第二寄存器中;并且对第二寄存器的内容求平方并且将结果存储在第二寄存器中;以及当已经处理指数的所有比特时,输出第二寄存器的内容。在实施例中,系统包括集成电路,该集成电路包括用于执行的装置、第一寄存器、第二寄存器和第三寄存器。
附图说明
图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 (20)

1.一种保护模幂计算的方法,包括:
在电子电路的模幂计算的执行期间,使用第一寄存器和第二寄存器并通过以下步骤来保护电子电路免受攻击:
连续地针对所述计算的指数的每个比特:
将所述第一寄存器和所述第二寄存器中的一个寄存器的内容存储在第三寄存器中,所述第一寄存器和所述第二寄存器中的所述一个寄存器基于所述指数的当前比特的状态;
将所述第一寄存器和所述第二寄存器中的另一个寄存器的内容乘以所述第一寄存器和所述第二寄存器中的所述一个寄存器的内容,并且将乘法的结果存储在所述第一寄存器和所述第二寄存器中的所述另一个寄存器中;
将所述第三寄存器的内容存储在所述第一寄存器和所述第二寄存器中的所述一个寄存器中;以及
对所述第一寄存器和所述第二寄存器中的所述一个寄存器的内容求平方,并且将所述求平方的结果存储在所述第一寄存器和所述第二寄存器中的所述一个寄存器中。
2.根据权利要求1所述的方法,其中所述第一寄存器和所述第二寄存器中的所述一个寄存器是针对状态1处的所述指数的所述比特的所述第一寄存器。
3.根据权利要求2所述的方法,其中所述模幂计算的结果被包含在所述第二寄存器中。
4.根据权利要求1所述的方法,包括:
将所述第二寄存器初始化为值1;
将所述第一寄存器初始化为要提交给所述模幂计算的数的值;
连续地针对所述指数的每个比特;
如果所述指数的所述当前比特的所述状态是1:
则将所述第一寄存器的内容传送到所述第三寄存器中;
将所述第二寄存器的内容乘以所述第一寄存器的内容并且将所述乘法的结果存储在所述第二寄存器中;
将所述第三寄存器的内容传送到所述第一寄存器中;以及
对所述第一寄存器的内容求平方并且将所述求平方的结果存储在所述第一寄存器中;以及
如果所述指数的所述当前比特的所述状态是0:
则将所述第二寄存器的内容传送到所述第三寄存器中;
将所述第一寄存器的内容乘以所述第二寄存器的内容并且将所述乘法的结果存储在所述第一寄存器中;
将所述第三寄存器的内容传送到所述第二寄存器中;以及
对所述第二寄存器的内容求平方并且将所述求平方的结果存储在所述第二寄存器中;以及
当已经处理所述指数的所有比特时,输出所述第二寄存器的内容。
5.根据权利要求1所述的方法,其中所述模幂计算以RSA算法实施。
6.一种保护模幂计算的装置,包括:
多个寄存器;以及
电路装置,所述电路装置耦合到所述多个寄存器,所述电路装置在操作时通过以下操作执行模幂计算,连续地针对所述计算的指数的每个比特:
将第一寄存器和第二寄存器中的一个寄存器的内容存储在第三寄存器中,所述第一寄存器和所述第二寄存器中的所述一个寄存器基于所述指数的当前比特的状态;
将所述第一寄存器和所述第二寄存器中的另一个寄存器的内容乘以所述第一寄存器和所述第二寄存器中的所述一个寄存器的内容,并且将乘法的结果存储在所述第一寄存器和所述第二寄存器中的所述另一个寄存器中;
将所述第三寄存器的内容存储在所述第一寄存器和所述第二寄存器中的所述一个寄存器中;以及
对所述第一寄存器和所述第二寄存器中的所述一个寄存器的内容求平方,并且将所述求平方的结果存储在所述第一寄存器和所述第二寄存器中的所述一个寄存器中。
7.根据权利要求6所述的装置,其中所述第一寄存器和所述第二寄存器中的所述一个寄存器是针对状态1处的所述指数的比特的所述第一寄存器。
8.根据权利要求7所述的装置,其中所述模幂计算的结果被包含在所述第二寄存器中。
9.根据权利要求6所述的装置,其中所述电路装置在操作时:
将所述第二寄存器初始化为值1;
将所述第一寄存器初始化为要提交给所述模幂计算的数的值;
连续地针对所述指数的每个比特;
如果所述指数的所述当前比特的所述状态是1:
则将所述第一寄存器的内容传送到所述第三寄存器中;
将所述第二寄存器的内容乘以所述第一寄存器的内容并且将所述乘法的结果存储在所述第二寄存器中;
将所述第三寄存器的内容传送到所述第一寄存器中;以及
对所述第一寄存器的内容求平方并且将所述求平方的结果存储在所述第一寄存器中;以及
如果所述指数的所述当前比特的所述状态是0:
则将所述第二寄存器的内容传送到所述第三寄存器中;
将所述第一寄存器的内容乘以所述第二寄存器的内容并且将所述乘法的结果存储在所述第一寄存器中;
将所述第三寄存器的内容传送到所述第二寄存器中;以及
对所述第二寄存器的内容求平方并且将所述求平方的结果存储在所述第二寄存器中;以及
当已经处理所述指数的所有比特时,输出所述第二寄存器的内容。
10.根据权利要求6所述的装置,其中所述模幂计算以RSA算法实施。
11.一种保护模幂计算的系统,包括:
一个或多个存储器;以及
电路装置,所述电路装置耦合到所述一个或多个存储器并且被配置为执行模幂计算,其中所述电路装置连续地针对所述计算的指数的每个比特:
将第一寄存器和第二寄存器中的一个寄存器的内容存储在第三寄存器中,所述第一寄存器和所述第二寄存器中的所述一个寄存器基于所述指数的当前比特的状态;
将所述第一寄存器和所述第二寄存器中的另一个寄存器的内容乘以所述第一寄存器和所述第二寄存器的所述一个寄存器的内容;
将乘法的结果存储在所述第一寄存器和所述第二寄存器的另一个寄存器中;
将所述第三寄存器的内容存储在所述第一寄存器和所述第二寄存器中的所述一个寄存器中;
对所述第一寄存器和所述第二寄存器的所述一个寄存器的内容求平方;以及
将所述求平方的结果存储在所述第一寄存器和所述第二寄存器中的所述一个寄存器中。
12.根据权利要求11所述的系统,其中所述第一寄存器和所述第二寄存器中的所述一个寄存器是针对状态1处的所述指数的比特的所述第一寄存器。
13.根据权利要求12所述的系统,其中所述模幂计算的结果被包含在所述第二寄存器中。
14.根据权利要求12所述的系统,其中所述电路装置在操作时:
将所述第二寄存器初始化为值1;
将所述第一寄存器初始化为要提交给所述模幂计算的数的值;
连续地针对所述指数的每个比特;
如果所述指数的所述当前比特的所述状态是1:
则将所述第一寄存器的内容传送到所述第三寄存器中;
将所述第二寄存器的内容乘以所述第一寄存器的内容并且将所述乘法的结果存储在所述第二寄存器中;
将所述第三寄存器的内容传送到所述第一寄存器中;以及
对所述第一寄存器的内容求平方并且将所述求平方的结果存储在所述第一寄存器中;以及
如果所述指数的所述当前比特的所述状态是0:
则将所述第二寄存器的内容传送到所述第三寄存器中;
将所述第一寄存器的内容乘以所述第二寄存器的内容并且将所述乘法的结果存储在所述第一寄存器中;
将所述第三寄存器的内容传送到所述第二寄存器中;以及
对所述第二寄存器的内容求平方并且将所述求平方的结果存储在所述第二寄存器中;以及
当已经处理所述指数的所有比特时,输出所述第二寄存器的内容。
15.根据权利要求12所述的系统,包括集成电路,所述集成电路包括所述电路装置。
16.根据权利要求15所述的系统,其中所述集成电路包括所述第一寄存器、所述第二寄存器和所述第三寄存器。
17.一种保护模幂计算的系统,包括:
多个寄存器;以及
耦合到所述多个寄存器的、用于执行模幂计算的装置,其中执行所述模幂计算包括连续地针对所述计算的指数的每个比特:
将第一寄存器和第二寄存器中的一个寄存器的内容存储在第三寄存器中,所述第一寄存器和所述第二寄存器中的所述一个寄存器基于所述指数的当前比特的状态;
将所述第一寄存器和所述第二寄存器中的另一个寄存器的内容乘以所述第一寄存器和所述第二寄存器的所述一个寄存器的内容;
将乘法的结果存储在所述第一寄存器和所述第二寄存器的另一个寄存器中;
将所述第三寄存器的内容存储在所述第一寄存器和所述第二寄存器中的所述一个寄存器中;
对所述第一寄存器和所述第二寄存器的所述一个寄存器的内容求平方;以及
将所述求平方的结果存储在所述第一寄存器和所述第二寄存器中的所述一个寄存器中。
18.根据权利要求17所述的系统,其中用于执行的装置包括以下各项中的至少一项:
状态机;
微处理器;
可编程逻辑电路;以及
布线逻辑。
19.根据权利要求17所述的系统,其中用于执行的装置在操作时:
将所述第二寄存器初始化为值1;
将所述第一寄存器初始化为要提交给所述模幂计算的数的值;
连续地针对所述指数的每个比特;
如果所述指数的所述当前比特的所述状态是1:
则将所述第一寄存器的内容传送到所述第三寄存器中;
将所述第二寄存器的内容乘以所述第一寄存器的内容并且将所述乘法的结果存储在所述第二寄存器中;
将所述第三寄存器的内容传送到所述第一寄存器中;以及
对所述第一寄存器的内容求平方并且将所述求平方的结果存储在所述第一寄存器中;以及
如果所述指数的所述当前比特的所述状态是0:
则将所述第二寄存器的内容传送到所述第三寄存器中;
将所述第一寄存器的内容乘以所述第二寄存器的内容并且将所述乘法的结果存储在所述第一寄存器中;
将所述第三寄存器的内容传送到所述第二寄存器中;以及
对所述第二寄存器的内容求平方并且将所述求平方的结果存储在所述第二寄存器中;以及
当已经处理所述指数的所有比特时,输出所述第二寄存器的内容。
20.根据权利要求17所述的系统,包括集成电路,所述集成电路包括用于执行的装置、所述第一寄存器、所述第二寄存器和所述第三寄存器。
CN201610104644.4A 2015-08-27 2016-02-25 模幂计算的保护 Active CN106487510B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR1557977 2015-08-27
FR1557977A FR3040512B1 (fr) 2015-08-27 2015-08-27 Protection d'un calcul d'exponentiation modulaire

Publications (2)

Publication Number Publication Date
CN106487510A CN106487510A (zh) 2017-03-08
CN106487510B true CN106487510B (zh) 2019-10-29

Family

ID=55129984

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610104644.4A Active CN106487510B (zh) 2015-08-27 2016-02-25 模幂计算的保护

Country Status (4)

Country Link
US (1) US10229264B2 (zh)
EP (1) EP3136226B1 (zh)
CN (1) CN106487510B (zh)
FR (1) FR3040512B1 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10367637B2 (en) * 2016-07-22 2019-07-30 Qualcomm Incorporated Modular exponentiation with transparent side channel attack countermeasures
WO2023141933A1 (en) 2022-01-28 2023-08-03 Nvidia Corporation Techniques, devices, and instruction set architecture for efficient modular division and inversion
WO2023141934A1 (en) 2022-01-28 2023-08-03 Nvidia Corporation Efficient masking of secure data in ladder-type cryptographic computations
WO2023141935A1 (en) * 2022-01-28 2023-08-03 Nvidia Corporation Techniques, devices, and instruction set architecture for balanced and secure ladder computations

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103164187A (zh) * 2011-12-09 2013-06-19 深圳市证通电子股份有限公司 Rsa模幂电路及rsa安全加密芯片
CN103221917A (zh) * 2010-09-29 2013-07-24 纳格拉影像股份有限公司 加密运算中模幂的保护
CN103246494A (zh) * 2013-05-27 2013-08-14 上海爱信诺航芯电子科技有限公司 一种抵抗能量分析和错误攻击的安全模幂计算方法
CN103814370A (zh) * 2011-09-22 2014-05-21 英特尔公司 利用蒙哥马利乘法结果的分区和分散式存储的模幂运算

Family Cites Families (15)

* Cited by examiner, † Cited by third party
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
FR2847402B1 (fr) 2002-11-15 2005-02-18 Gemplus Card Int Procede de division entiere securise contre les attaques a canaux caches
EP1715410B1 (fr) * 2005-04-22 2011-01-12 St Microelectronics S.A. Protection d'un calcul effectué par un circuit intégré
US8150029B2 (en) * 2005-12-29 2012-04-03 Proton World International N.V. Detection of a disturbance in 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
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
DE102006014353B4 (de) 2006-03-28 2007-11-22 Siemens Ag Verfahren zum sicheren Ermitteln von Daten
US7912886B2 (en) * 2006-12-14 2011-03-22 Intel Corporation Configurable exponent FIFO
US8205097B2 (en) 2007-07-05 2012-06-19 Nxp B.V. Microprocessor in a security-sensitive system
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
US8930435B2 (en) * 2010-01-28 2015-01-06 Cisco Technology Inc. Exponentiation system

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103221917A (zh) * 2010-09-29 2013-07-24 纳格拉影像股份有限公司 加密运算中模幂的保护
CN103814370A (zh) * 2011-09-22 2014-05-21 英特尔公司 利用蒙哥马利乘法结果的分区和分散式存储的模幂运算
CN103164187A (zh) * 2011-12-09 2013-06-19 深圳市证通电子股份有限公司 Rsa模幂电路及rsa安全加密芯片
CN103246494A (zh) * 2013-05-27 2013-08-14 上海爱信诺航芯电子科技有限公司 一种抵抗能量分析和错误攻击的安全模幂计算方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Efficient architectures for modular exponentiation using Montgomery powering ladder;Yiruo He等;《IEEE》;20110511;全文 *

Also Published As

Publication number Publication date
EP3136226A1 (fr) 2017-03-01
FR3040512B1 (fr) 2017-09-08
US20170061119A1 (en) 2017-03-02
CN106487510A (zh) 2017-03-08
EP3136226B1 (fr) 2018-04-04
US10229264B2 (en) 2019-03-12
FR3040512A1 (fr) 2017-03-03

Similar Documents

Publication Publication Date Title
JP6707024B2 (ja) 非対称マスク済み乗算
CN107040362B (zh) 模乘设备和方法
Verbauwhede et al. The fault attack jungle-a classification model to guide you
CN106487510B (zh) 模幂计算的保护
US8402287B2 (en) Protection against side channel attacks
US10025559B2 (en) Protection of a modular exponentiation calculation
US10354063B2 (en) Protection of a modular calculation
CN105991292A (zh) 用于操作安全椭圆曲线密码系统的系统和方法
CN102638341A (zh) 用于计算标量乘法的结果的设备和方法
Joye et al. Side-Channel Analysis.
US8688995B2 (en) Method and apparatus for detection of a fault attack
CN103221917A (zh) 加密运算中模幂的保护
WO2007113697A2 (en) Secure decryption method
EP3503459B1 (en) Device and method for protecting execution of a cryptographic operation
CN106484365B (zh) 验证执行模幂计算的电子电路的敏感度
KR102515381B1 (ko) 반복적인 사이드 채널 공격 대응책
CN113032797B (zh) 在处理设备中执行加密操作的方法
Danger et al. Improving the big mac attack on elliptic curve cryptography
Järvinen et al. Single-trace side-channel attacks on scalar multiplications with precomputations
CN109299621B (zh) 对迭代计算的防范水平攻击的保护
CN103326861A (zh) 一种对数据进行rsa安全签名的方法、装置及安全芯片
CN104298897B (zh) 基于混沌技术的嵌入式版权认证方法及专用处理器
US11902412B2 (en) Fault attack resistant cryptographic systems and methods
EP1501236A1 (en) Error correction for cryptographic keys
Fournaris Fault and power analysis attack protection techniques for standardized public key cryptosystems

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