CN109299621B - 对迭代计算的防范水平攻击的保护 - Google Patents
对迭代计算的防范水平攻击的保护 Download PDFInfo
- Publication number
- CN109299621B CN109299621B CN201810758773.4A CN201810758773A CN109299621B CN 109299621 B CN109299621 B CN 109299621B CN 201810758773 A CN201810758773 A CN 201810758773A CN 109299621 B CN109299621 B CN 109299621B
- Authority
- CN
- China
- Prior art keywords
- iterative computation
- routine
- bit
- iterative
- determined
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
- G06F21/72—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/556—Detecting local intrusion or implementing counter-measures involving covert channels, i.e. data leakage between processes
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/606—Protecting data by securing the transmission between two devices or processes
-
- 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
-
- 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
- G06F2207/7223—Randomisation as countermeasure against side channel attacks
- G06F2207/7257—Random modification not requiring correction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/08—Randomization, e.g. dummy operations or using noise
Abstract
对第一数字和第二数字的迭代计算被执行,同时保护迭代计算以防侧信道攻击。对于第二数字的每个位,第二数字的位的迭代计算例程相继地被确定。该确定是独立于位的状态进行的。该位的所确定的迭代计算例程被执行。迭代计算的结果基于第二数字的最后一位的所确定的迭代计算例程的执行结果而被生成。
Description
技术领域
本公开总体上涉及电子电路,更具体地,涉及执行迭代运算的电路。本公开更具体地涉及对这种计算的防范旨在发现由计算操纵的量的攻击的保护。
背景技术
在许多应用中,电子电路实施加密算法、认证算法、签名计算算法以及更一般的操纵数据(称为秘密)的算法,即对该数据的访问希望被保留给某些用户或电路。在这些算法中,有些使用迭代运算,例如,对于模幂运算,例如RSA型算法。
存在很多称为攻击的方法试图发现或盗用由这种计算操纵的秘密数据。在这样的攻击中,所谓的侧信道攻击,使用诸如电路的功耗(SPA、DPA攻击)、其电磁辐射等的间接信息。这些信息的解释给出了与秘密数据相关的盗版信息。
在侧信道攻击中,特别地可以区分称为垂直的攻击和称为水平的攻击。垂直攻击包括使用对信息泄漏的观察,该信息泄漏是通过统计工具和时间采样在使用相同的秘密信息进行的多次执行期间测量的。水平攻击包括将源自相同跟踪(例如,功耗或辐射)的部分彼此进行比较,以提取秘密信息。它们使用单次执行跟踪。通常对于防范垂直侧信道攻击有效的数据屏蔽对策通常对于防范水平攻击不是有效的。
发明内容
一个实施例有助于解决保护由算法所操纵的数据以防侧信道攻击的常规方法以及电路的所有或部分缺点。
在一个实施例中,提供了一种保护方法,以防针对由电子电路执行的对第一数字和第二数字的迭代计算的攻击,其中,迭代计算的步骤独立于所关注的位的状态对于第二数字的某些位是不同的。
根据一个实施例,迭代计算的步骤的选择被随机执行。
根据一个实施例,迭代计算的步骤从两个模块化计算算法中被选择。
根据一个实施例,迭代计算的步骤根据第二数字的位的状态而不同。
根据一个实施例,该方法包括以下步骤:
初始化存储器位置或寄存器;
针对第二数字的每个位,相继地执行:
选择要被用于当前迭代的迭代计算步骤的算法;
在需要的情况下更新存储器位置或寄存器;以及
执行所选择的算法的迭代计算步骤。
根据一个实施例,算法的选择是随机的。
根据一个实施例,该方法包括以下步骤:
将第一存储器位置或寄存器初始化为一;
将第二存储器位置或寄存器初始化为第一数字的值;以及
针对第二数字的每个位,相继地执行:
在第一算法的迭代计算和第二算法的迭代计算之间选择迭代计算的步骤;以及
在算法改变的情况下,在执行迭代计算步骤之前,更新第二存储器位置或寄存器的内容。
根据一个实施例,将计算的结果包含在所述第一存储器位置或寄存器中。
根据一个实施例,该计算是模幂运算,第二数字表示要被应用于第一数字的指数。
根据一个实施例:
第一算法执行始终平方乘方法(square-and-multiply always method);以及
第二算法是蒙哥马利乘法。
根据一个实施例,该计算是椭圆曲线上的标量乘法,第二数字是要与第一数字相乘的标量。
一个实施例提供了一种电子电路,被配置为实施该上述方法。
各种实施例的前述和其他特征和优点将会在以下具体实施例的非限制性描述中结合附图被详细描述。
在一个实施例中,一种方法包括:使用电子电路来执行对第一数字和第二数字的迭代计算,该执行包括通过针对第二数字的每个位相继地执行以下步骤来保护迭代计算以防侧信道攻击:独立于第二数字的位的状态,确定第二数字的位的迭代计算例程;以及执行所确定的迭代计算例程;以及基于第二数字的最后一位的所确定的迭代计算例程的结果,生成迭代计算的结果。在一个实施例中,迭代计算例程选自迭代计算例程的集合。在一个实施例中,迭代计算是模幂运算,第二数字表示要被应用于第一数字的指数。在一个实施例中,迭代计算例程的集合包括始终平方乘例程;以及蒙哥马利乘法例程。在一个实施例中,确定第二数字的位的迭代计算例程被随机执行。在一个实施例中,迭代计算例程的步骤根据第二数字的位的状态而变化。在一个实施例中,该方法包括:在执行迭代计算之前初始化被存储在存储器中的变量;在确定位的迭代计算例程之后,确定在执行所确定的迭代计算例程之前是否更新被存储在存储器中的变量;以及响应于确定更新被存储在存储器中的变量,在执行所确定的迭代计算例程之前更新被存储在存储器中的变量。在一个实施例中,位的迭代计算例程的确定是随机的。在一个实施例中,该方法包括:将第一存储器位置或寄存器初始化为一;将第二存储器位置或寄存器初始化为第一数字的值;以及针对第二数字的每个位,相继地执行:在第一例程和第二例程之间选择迭代计算例程;以及在例程改变的情况下,在执行所选择的迭代计算例程之前,更新第二存储器位置或寄存器的内容。在一个实施例中,在执行第二数字的最后一位的所确定的迭代计算例程之后,将迭代计算的结果包含在所述第一存储器位置或寄存器中。在一个实施例中,迭代计算是椭圆曲线上的标量乘法,第二数字是要与第一数字相乘的标量。
在一个实施例中,一种设备包括:存储器;以及被耦合到存储器的处理电路,其中,处理电路在操作中执行对第一数字和第二数字的迭代计算,该执行包括通过针对第二数字的每个位相继地执行以下步骤来保护迭代计算以防侧信道攻击:独立于第二数字的位的状态,确定第二数字的位的迭代计算例程;以及执行位的所确定的迭代计算例程,其中迭代计算的结果取决于第二数字的最后一位的所确定的迭代计算例程的结果。在一个实施例中,位的所确定的迭代计算例程选自迭代计算例程的集合。在一个实施例中,迭代计算是模幂运算,第二数字表示要被应用于第一数字的指数。在一个实施例中,迭代计算例程的集合包括:始终平方乘例程;以及蒙哥马利乘法例程。在一个实施例中,第二数字的位的迭代计算例程从集合被随机选择。在一个实施例中,所确定的位的迭代计算例程的步骤根据第二数字的位的状态而变化。在一个实施例中,处理电路在操作中:在执行迭代计算之前初始化被存储在存储器中的变量;在确定位的迭代计算例程之后,确定在执行所确定的迭代计算例程之前是否更新被存储在存储器中的变量;以及响应于确定更新被存储在存储器中的变量,在执行所确定的迭代计算例程之前更新被存储在存储器中的变量。在一个实施例中,位的迭代计算例程的确定是随机的。在一个实施例中,处理电路在操作中:将存储器的第一存储器位置或寄存器初始化为一;将存储器的第二存储器位置或寄存器初始化为第一数字的值;以及针对第二数字的每个位,相继地执行:在第一例程和第二例程之间选择迭代计算例程;以及在例程改变的情况下,在执行所选择的迭代计算例程之前,更新第二存储器位置或寄存器的内容。在一个实施例中,在执行第二数字的最后一位的所确定的迭代计算例程之后,将迭代计算的结果包含在所述第一存储器位置或寄存器中。在一个实施例中,迭代计算是椭圆曲线上的标量乘法,第二数字是要与第一数字相乘的标量。
在一个实施例中,一种系统包括:在操作中处理数字数据的一个或多个处理核;以及被耦合到一个或多个处理核的加密电路,其中加密电路在操作中执行对第一数字和第二数字的迭代计算,该执行包括通过针对第二数字的每个位相继地执行以下步骤来保护迭代计算以防侧信道攻击:独立于第二数字的位的状态,确定第二数字的位的迭代计算例程;以及执行位的所确定的迭代计算例程,其中迭代计算的结果取决于第二数字的最后一位的所确定的迭代计算例程的结果。在一个实施例中,迭代计算是模幂运算,第二数字表示要被应用于第一数字的指数。在一个实施例中,迭代计算是椭圆曲线上的标量乘法,第二数字是要与第一数字相乘的标量。在一个实施例中,一个或多个处理核在操作中基于迭代计算的结果来处理事务。
在一个实施例中,一种非瞬态计算机可读介质具有使一个或多个处理设备执行方法的内容,该方法包括:执行对第一数字和第二数字的迭代计算,该执行包括通过针对第二数字的每个位相继地执行以下步骤来保护迭代计算以防侧信道攻击:独立于第二数字的位的状态,确定第二数字的位的迭代计算例程;以及执行位的所确定的迭代计算例程,其中迭代计算的结果取决于第二数字的最后一位的所确定的迭代计算例程的结果。在一个实施例中,迭代计算是模幂运算,第二数字表示要被应用于第一数字的指数。在一个实施例中,迭代计算是椭圆曲线上的标量乘法,第二数字是要与第一数字相乘的标量。在一个实施例中,该方法包括基于迭代计算的结果处理事务。
附图说明
图1示意性地示出了电子电路的实施例;
图2示意性地示出了基于所谓的蒙哥马利幂阶梯方法的模幂计算的示例;
图3示意性地示出了基于所谓的始终平方乘方法的模幂计算的示例;
图4以框图的形式示出了被应用于图2与图3的算法的保护模幂计算的方法的实施例;以及
图5以框图的形式示出了保护迭代计算的方法的另一实施例。
具体实施方式
除非上下文另有说明,否则相同的元件在不同附图中已经用相同的附图标记来指定。特别地,不同实施例所共有的结构和/或功能元件可以用相同的附图标记来指定,并且可以具有相同的结构、尺寸和材料特性。
为了清晰起见,只有那些对理解将会被描述的实施例有用的步骤和元件已经被示出,并且将会被详细描述。特别地,被执行的计算的应用或者执行它们的电路的应用尚未被详细描述,所描述的实施例与常规的应用兼容。
除非另有说明,否则当参考被连接在一起的两个元件时,这意味着直接被连接而没有除导体之外的中间元件,以及当参考被耦合在一起的两个元件时,这意味着两个元件可以直接被耦合(被连接)或者经由一个或多个其他元件被耦合。
图1非常示意性地示出了可以应用将要被描述的实施例的类型的电子电路1。
电路1包括:
计算单元或电路11(UC),例如状态机、微处理器、可编程逻辑电路、IP核等;
一个或多个易失性和/或非易失性存储区域或存储器13(MEM),用于存储所有或部分数据和密钥;
一个或多个数据、地址和/或控制总线15,总线15在处于电路1内部的不同元件和用于与电路1的外部通信的输入-输出接口17(I/O)之间。
电路1可以包括根据应用的各种其他电路,在图1中由功能框或电路19(FCT)表示。
例如,模幂运算的迭代计算操作可以在许多加密算法中被找到,其中有,例如,称为RSA的算法。
模幂运算包括计算以指数e(整数)对数字M取幂再对N取模的结果C,即应用公式:
C=Me(mod N)。
大多数时候:
数字M表示希望被加密、认证、签名等的数字(或表示数字的信息);以及
指数e和模N(一对(e、N))表示加密密钥、认证密钥、签名密钥等(或表示密钥的信息)。
为了简化以下的描述,将参考被标注为C=Me(mod N)的模幂运算,根据在实践中执行的操作对所使用的变量的变换在本领域技术人员的能力范围内。
通过例如电路1的电子电路(状态机、以程序形式执行方法的处理器、可编程逻辑电路等)对模幂运算的计算,是例如通过以下方式来实现的:应用所谓的蒙哥马利幂阶梯方法,应用所谓的始终平方乘方法,或基于使用两个变量或寄存器的其他方法;以及针对指数的每个位执行迭代计算。
在以上描述的示例中,该计算使用电路1的至少两个寄存器,或两个存储器位置,被任意标注为T0和T1,操作将在其上被执行。
将要被提交给模幂运算的消息(例如,数字M)被加载到寄存器T1中。指数e在计算期间被逐位读取。
以下,为了简化起见,寄存器及其内容将被混在一起,即,当参考寄存器上的操作时,这意味着在它们的内容上的操作。
图2以框图的形式示出了由蒙哥马利幂阶梯方法的计算步骤。
在第一步骤(框21,T1=M,T0=1)中,寄存器T1被加载数字M,寄存器T0被重置为1。指数e被加载到另一个寄存器(未示出)中,或者可以在存储器中被找到(ei表示指数e的每个位,其中i指定从0到l-1的排名)。
对指数e的位的循环计算然后被启动。例如,计数器i被初始化为l-1(框22,i=l-1),并且每当指数的位ei被处理时,只要不是所有的位都已经被处理(框24,i=0?),则计数器i被递减1(框23,i=i-1)。
对于每次迭代,即,对于从左到右的每个位ei,它通过测试指数的位的值来被启动(框25,ei=1?)。
如果当前的位ei为1(框25的输出Y),则寄存器T0的内容与寄存器T1的内容相乘并对N取模,并且结果被放置于寄存器T0中(框26,T0=T0.T1(mod N)),在此之后,寄存器T1的内容被平方并对N取模,然后结果被放置于寄存器T1中(框27,T1=T1.T1(mod N))。
如果当前的位ei为0(框25的输出N),则寄存器T0的内容与寄存器T1的内容相乘并对N取模,并且结果被放置于寄存器T1中(框26’,T0=T0.T1(mod N)),在此之后,寄存器T0的内容被平方并对N取模,然后结果被放置于寄存器T0中(框27’,T0=T0.T0(mod N))。
只要不是指数e所有的位都已经被处理(框24的输出N),则计数器i被递减(框23)并且返回到步骤25。一旦指数e所有的位都已经被处理(框24的输出Y),则寄存器T0包含模幂运算的结果(框29,T0),即,值C=Me(mod N)。该结果可以被电路1使用以处理事务,例如该结果可以被提供给功能电路19以基于或者使用该结果来处理事务。
在图2中所示的计算还可以被写成如下的形式:
T0=1(步骤21)
T1=M(步骤21)
对于i=l-1至0(步骤22至步骤27):
b=1-ei
Tb=Tb.Tei(mod N)
Tei=Tei.Tei(mod N)
循环结束(框24的输出Y)
返回T0(步骤29)。
图3以框图的形式示出了由始终平方乘方法的模幂计算的步骤。
如图3所示,该计算使用电路1的至少两个寄存器,或两个存储器位置,被任意标注为T0和T1,操作将在其上被执行。
在第一步骤(框31,T0=1,T1=M),寄存器T0被初始化为1并且寄存器T1被加载数字M。指数e在此再次被加载到另一个寄存器(未示出)中,或者可以在存储器中被找到(ei表示指数e的每个位,其中i指定从0到l-1的排名)。
对指数e的位的循环计算然后被启动。例如,计数器i被初始化为l-1(框32,i=l-1),并且每当指数的位ei被处理时,只要不是所有的位都已经被处理(框34,i=0?),则计数器i被递减1(框33,i=i-1)。
对于每次迭代,即,对于从左到右的每个位ei,它通过测试指数的位的值来被启动(框35,ei=1?)。
如果当前的位ei为1(框35的输出Y),则寄存器T0的内容被平方并对N取模,并且结果被放置于寄存器T0中(框37,T0=T0.T0(mod N)),然后,寄存器T0的内容与数字M相乘并对N取模,然后结果被放置于寄存器T0中(框38,T0=T0.M(mod N))。
如果当前的位ei为0(框35的输出N),则寄存器T0的内容被平方并对N取模,并且结果被放置于寄存器T0中(框37,T0=T0.T0(mod N)),在此之后,寄存器T0的内容与数字M相乘并对N取模,然后结果被放置于寄存器T1中(框38’,T1=T0.M(mod N))。
只要不是指数e所有的位都已经被处理(框34的输出N),则计数器i被递减(框33)并且返回到步骤35。一旦指数e所有的位都已经被处理(框34的输出Y),则寄存器T0包含模幂运算的结果(框39,T0),即,值C=Me(mod N)。
在图3中所示的计算还可以被写成如下的形式:
T0=1(步骤31)
T1=M(步骤31)
针对i=l-1至0(步骤32至步骤38):
b=1-ei
T0=T0.T0(mod N)
Tb=T0.M(mod N)
循环结束(框34的输出Y)
返回T0(步骤39)。
对于图2的示例或图3的示例,已经提供了引入随机数来掩蔽输入数据M、e和N。
这种解决方案对于防范垂直攻击是有效的。然而,这种掩蔽技术对水平攻击没有影响,因为水平攻击使用单次跟踪,并因此单次执行。
图4以框图的形式示出了保护模幂计算抵抗水平侧信道攻击的方法的实施例。
优点取决于如下事实,大多数模幂运算算法使用寄存器,这些寄存器在处理指数的位的每次结束时具有可预测内容。此外,在大多数情况下,无论何种算法被使用,旨在包含结果的寄存器都具有相同的内容。
如前所述,目的是计算值C=Me(mod N)。
该计算使用电路1的两个寄存器,被任意称为T0和T1,操作将在其上被执行。类似地,要被提交给模幂运算的消息(例如,数字M)被加载到寄存器T1中。指数e在此再次被加载到另一个寄存器(未示出)中,或者可以在存储器中被找到(ei表示指数e的每个位,其中i指定从0到l-1的排名)。
根据所描述的实施例,要被用来处理指数的一位或位的集合的算法或例程,即,在寄存器T0和T1上执行的操作,被随机选择。该选择可以对于指数的每个位被执行。
因此,在图4所示的示例中,对于指数的某些位,蒙哥马利幂阶梯算法被使用(图2),并且对于其他位,始终平方乘算法被使用(图3)。在该示例中,通过改变算法或例程而涉及的步骤是步骤25、26、27、26'、27'和步骤35、37、38、38'。
对于算法或例程的每次改变,如果需要,则提供修改寄存器T1的内容以使其与由其他算法或例程执行的下一次迭代兼容。
因此,在第一步骤(框41,T1=M,T0=1),寄存器T0如前所述被初始化为1,并且寄存器T1例如被加载数字M。指数e被加载到另一个寄存器(未示出)中或可以在存储器中被找到(ei表示指数e的每个位,其中i指定从0到l-1的排名)。
要被用于第一操作(即,用于指数的第一位)的算法,然后被选择。这种选择通过将标志A初始化为值0(框45,A=0)来任意地表示,其中标志可以取两个值(0或1)。
对指数e的位的循环计算然后被开始。例如,计数器i被初始化为l-1(框42,i=l-1)并且每当指数的位ei被处理时,计数器i被递减1(框43,i=i-1),只要并非所有的位都已经被处理(框44,i=0?)。
根据实施例,被用于两种算法的应用的寄存器T0和T1是相同的,并且确保被用于下一次迭代的每个寄存器的内容适应所使用的算法。
因此,对于每次迭代,即对于从左到右的每个位ei,它通过验证标志A的状态(框46,A=0?)开始,以选择要被执行的算法。例如,如果标志A为1(框46的输出N),则蒙哥马利算法以及因此图2的算法的步骤25以及随后步骤26和步骤27、或步骤26’和步骤27’在指数的当前位ei上被执行(框2,MLP(25,26,27,26′,27′))。相反地,如果标志A为0(框46的输出Y),始终平方乘算法以及因此图3的算法的步骤35以及随后步骤37和步骤38或步骤38’在指数的当前位ei上被执行(框3,SMA(35,37,38,38′))。在通过算法中的一个或另一个处理指数的位ei之后,计数器i的递减(框43,i=i-1)发生。
只要并非指数e的所有位都已经被处理(框44的输出N),随机选择被执行以确定算法是否被改变以用于下一次迭代(现在指数的当前位)。例如,位s被随机地拉取(框47,s(0/1))并且位s的状态决定(框48,s=1?)相同的算法是否被保留以用于下一次迭代。如果位s为0(框48的输出N),则返回到框46以处理指数的位。如果位s为1(框48的输出Y),则所使用的算法的逆向的步骤被开始。为了实现这一点,有必要改变标志A的值和寄存器T0和T1的内容,使得它们适合于由其他算法对下一次迭代的执行。
实际上,以算法为例(蒙哥马利幂阶梯算法和始终平方乘算法),没有任何操作必须在寄存器T0上进行。然而,为了从始终平方乘算法(图3)切换到蒙哥马利算法(图2),寄存器T1必须被更新(框51,T1=T0.M(mod N))到值T0.M(mod N)。反过来说,为了从蒙哥马利算法切换到始终平方乘算法,将有可能不进行更新,寄存器T0和T1的内容在根据蒙哥马利算法的每次迭代结束时,与使用始终平方乘算法直接执行下一次迭代兼容。然而,为了平衡计算(其对于防范垂直攻击是有用的),可以执行相同的操作51。
标志A的值然后被测试(框46’,A=0?)。如果其值为1(框46’的输出N),则标志A的状态被反转使得其为0(框45’,A=0),以从蒙哥马利算法(图2)切换到始终平方乘算法(图3)。如果标志A的值为0(框46’的输出Y),则标志A的状态被反转使得其为1(框53,A=1),以从始终平方乘算法(图3)切换到蒙哥马利算法(图2)。
然后返回到框46以处理指数的位,其现在具有改变的算法。
步骤51可以在测试46’之后被执行。
一旦指数e的所有的位已经被处理(框44的输出Y),寄存器T0包含模幂运算的结果(框49,T0),即,值C=Me(mod N)。
在图4的实施例中,优点是所使用的算法的结构,所使用的算法的结构不要求在从一次迭代到另一次迭代的算法的改变的情况下修改寄存器T0。
图5以框图的形式示出了保护模幂计算的方法的另一实施例。
在第一步骤(框61,REG INIT),被用于计算的寄存器被初始化,并且值M、e和N被加载。
对指数e的位的循环计算然后被开始。例如,计数器i被初始化为l-1(框62,i=l-1)并且每当指数的位ei被处理时,计数器i被递减1(框63,i=i-1),只要并非所有的位都已经被处理(框64,i=0?)。
对于每次迭代,要被用于当前迭代的算法被随机选择(框65,选择ALGO),例如,通过拉取随机数r。
然后,如果需要,寄存器的内容根据要被执行的算法来更新(框66,REG更新)。
然后,迭代计算的步骤根据所选择的算法来执行(框67,处理ei)。
只要并非指数e的所有位都已经被处理(框64的输出N),计数器i被递减(框63)并且返回到步骤65。一旦指数e的所有的位已经被处理(框64的输出Y),模幂运算的结果(框69,结果),即,值C=Me(mod N),被递送。
应当注意,要被用于迭代计算步骤的算法的选择独立于指数的位的状态。在这些步骤中根据指数的位来执行选择。
所描述的实施例的优点在于,通过在执行迭代计算时独立于指数的位的状态(例如,随机地)并且因此还独立于该指数的位的排名从一次迭代到另一次迭代改变所使用的算法,可以被用于水平攻击的值的数目被减少。
此外,从一次迭代到另一次迭代改变电路的行为的事实使得在电路跟踪中找到感兴趣的点更加困难。
所提供的对策的实施例的另一个优点是在垂直攻击的情况下它也是有效的。
此外,多于两个不同算法可以被使用,例如,多个算法的序列可以通过在多于一个位上进行随机选择而被提供,以选择要被用于每次迭代的算法。
此外,结合图5讨论的保护过程也适用于保护椭圆曲线上点的标量积的计算。标量乘法运算被用于椭圆曲线的计算,椭圆曲线的计算形成另一类加密算法。标量乘法包括计算椭圆曲线的点P乘以整数d(标量)并且对N取模的结果C,即,应用公式:
C=d.P(mod N)。
大多数时候:
点P表示希望被加密、认证、签名等的数字(或表示数字的信息);以及
标量d和模N(一对(d,N))表示加密密钥、认证密钥、签名密钥等(或表示秘钥的信息)。
对于模幂运算,由电子电路(状态机、以程序形式执行方法的处理器、可编程逻辑电路等,例如,电路1)在椭圆曲线上的标量乘法大多数时候通过对标量的位使用迭代计算来执行。因此,以与模幂运算相同的方式,提供从标量的一位到另一位改变算法。
最后,基于上文给出的功能指示,已经被描述的实施例的实际实现在本领域技术人员的能力范围内。
这些改变,修改和改进旨在成为本公开的一部分,并且旨在落入本公开的精神和范围内。相应地,前面的描述仅是示例性的,而不是限制性的。本公开仅受限于以下权利要求书及其等同物中所限定的。
一些实施例可以采用计算机程序产品的形式或包括计算机程序产品。例如,根据一个实施例,提供了一种计算机可读介质,其包括适于执行上述方法或功能中的一个或多个的计算机程序。介质可以是:物理存储介质,例如只读存储器(ROM)芯片;或者盘,诸如数字通用盘(DVD-ROM)、光盘(CD-ROM)、硬盘、内存、网络;或者便携式媒体用品,其由适当的驱动器或经由适当的连接来读取,包括被编码在一个或多个条形码或被存储在一个或多个这样的计算机可读介质上并且可由适当的读取器设备读取的其他相关代码。
此外,在一些实施例中,一些或所有方法和/或功能可以以其他方式来实现或提供,诸如至少部分地在固件和/或硬件中,包括但不限于,一个或多个专用集成电路(ASIC)、数字信号处理器、分立电路、逻辑门、标准集成电路、控制器(例如,通过执行适当的指令,并包括微控制器和/或嵌入式控制器)、现场可编程门阵列(FPGA)、复杂可编程逻辑器件(CPLD)等,以及采用RFID技术的设备及其各种组合。
上述各种实施例可以被组合以提供进一步的实施例。如果需要,实施例的各方面可以被修改以采用各种专利、申请和公开的概念来提供更多其他实施例。
根据以上详细描述,可以对实施例做出这些和其他改变。通常,在以下权利要求书中,所使用的术语不应被解释为将权利要求限制于说明书和权利要求书中所公开的特定实施例,而是应该被解释为包括所有可能的实施例以及这些权利要求所赋予的等同物的全部范围。相应地,权利要求书不受本公开的限制。
Claims (28)
1.一种用于保护迭代计算的方法,包括:
使用电子电路来执行对第一数字和第二数字的迭代计算,其中所述迭代计算是模幂运算,所述第二数字表示要被应用于所述第一数字的指数,所述执行包括通过针对所述第二数字的每个位相继地执行以下步骤来保护所述迭代计算以防侧信道攻击:
独立于所述第二数字的所述位的状态,确定所述第二数字的所述位的迭代计算例程,其中所确定的迭代计算例程选自迭代计算例程的集合,所述迭代计算例程的集合包括始终平方乘例程以及蒙哥马利乘法例程,并且确定所述第二数字的所述位的所述迭代计算例程被随机执行;以及
执行所确定的迭代计算例程;以及
基于所述第二数字的最后一位的所确定的迭代计算例程的结果,生成所述迭代计算的结果。
2.根据权利要求1所述的方法,其中所确定的迭代计算例程的步骤根据所述第二数字的所述位的所述状态而变化。
3.根据权利要求1所述的方法,包括:
在执行所述迭代计算之前初始化被存储在存储器中的变量;
在确定位的所述迭代计算例程之后,确定在执行所确定的迭代计算例程之前是否更新被存储在所述存储器中的变量;以及
响应于确定更新被存储在所述存储器中的所述变量,在执行所确定的迭代计算例程之前更新被存储在所述存储器中的所述变量。
4.根据权利要求3所述的方法,其中,位的所述迭代计算例程的所述确定是随机的。
5.根据权利要求1所述的方法,包括:
将第一存储器位置或寄存器初始化为一;
将第二存储器位置或寄存器初始化为所述第一数字的值;以及
针对所述第二数字的每个位,相继地执行:
在第一例程和第二例程之间选择迭代计算例程;以及
在例程改变的情况下,在执行所选择的迭代计算例程之前,更新所述第二存储器位置或寄存器的内容。
6.一种用于保护迭代计算的方法,包括:
使用电子电路来执行对第一数字和第二数字的迭代计算,所述执行包括通过针对所述第二数字的每个位相继地执行以下步骤来保护所述迭代计算以防侧信道攻击:
独立于所述第二数字的所述位的状态,确定所述第二数字的所述位的迭代计算例程;以及
执行所确定的迭代计算例程;以及
基于所述第二数字的最后一位的所确定的迭代计算例程的结果,生成所述迭代计算的结果,其中所述方法包括:
将第一存储器位置或寄存器初始化为一;
将第二存储器位置或寄存器初始化为所述第一数字的值;以及
针对所述第二数字的每个位,相继地执行:
在第一例程和第二例程之间选择迭代计算例程;以及
在例程改变的情况下,在执行所选择的迭代计算例程之前,更新所述第二存储器位置或寄存器的内容,其中,在执行所述第二数字的所述最后一位的所确定的迭代计算例程之后,将所述迭代计算的所述结果包含在所述第一存储器位置或寄存器中。
7.根据权利要求6所述的方法,其中所确定的迭代计算例程选自迭代计算例程的集合。
8.根据权利要求7所述的方法,其中,所述迭代计算是模幂运算,所述第二数字表示要被应用于所述第一数字的指数。
9.根据权利要求8所述的方法,其中所述迭代计算例程的集合包括:
始终平方乘例程;以及
蒙哥马利乘法例程。
10.根据权利要求9所述的方法,其中,确定所述第二数字的所述位的所述迭代计算例程被随机执行。
11.根据权利要求6所述的方法,其中所述迭代计算是椭圆曲线上的标量乘法,所述第二数字是要与所述第一数字相乘的标量。
12.一种用于保护迭代计算的设备,包括:
存储器;以及
处理电路,所述处理电路被耦合到所述存储器,其中所述处理电路在操作中执行对第一数字和第二数字的迭代计算,其中所述迭代计算是模幂运算,所述第二数字表示要被应用于所述第一数字的指数,所述执行包括通过针对所述第二数字的每个位相继地执行以下步骤来保护所述迭代计算以防侧信道攻击:
独立于所述第二数字的所述位的状态,确定所述第二数字的所述位的迭代计算例程,其中所确定的迭代计算例程选自迭代计算例程的集合,所述迭代计算例程的集合包括始终平方乘例程以及蒙哥马利乘法例程,并且确定所述第二数字的所述位的所述迭代计算例程被随机执行;以及
执行所述位的所确定的迭代计算例程,其中所述迭代计算的结果取决于所述第二数字的最后一位的所确定的迭代计算例程的结果。
13.根据权利要求12所述的设备,其中,所述位的所确定的迭代计算例程的步骤根据所述第二数字的所述位的所述状态而变化。
14.根据权利要求12所述的设备,其中所述处理电路在操作中:
在执行所述迭代计算之前初始化被存储在所述存储器中的变量;
在确定位的所述迭代计算例程之后,确定在执行所确定的迭代计算例程之前是否更新被存储在所述存储器中的变量;以及
响应于确定更新被存储在所述存储器中的所述变量,在执行所确定的迭代计算例程之前更新被存储在所述存储器中的所述变量。
15.根据权利要求14所述的设备,其中位的所述迭代计算例程的所述确定是随机的。
16.根据权利要求12所述的设备,其中所述处理电路在操作中:
将所述存储器的第一存储器位置或寄存器初始化为一;
将所述存储器的第二存储器位置或寄存器初始化为所述第一数字的值;以及
针对所述第二数字的每个位,相继地执行:
在第一例程和第二例程之间选择迭代计算例程;以及
在例程改变的情况下,在执行所选择的迭代计算例程之前,更新所述第二存储器位置或寄存器的内容。
17.一种用于保护迭代计算的设备,包括:
存储器;以及
处理电路,所述处理电路被耦合到所述存储器,其中所述处理电路在操作中执行对第一数字和第二数字的迭代计算,所述执行包括通过针对所述第二数字的每个位相继地执行以下步骤来保护所述迭代计算以防侧信道攻击:
独立于所述第二数字的所述位的状态,确定所述第二数字的所述位的迭代计算例程;以及
执行所述位的所确定的迭代计算例程,其中所述迭代计算的结果取决于所述第二数字的最后一位的所确定的迭代计算例程的结果,其中所述处理电路在操作中:
将所述存储器的第一存储器位置或寄存器初始化为一;
将所述存储器的第二存储器位置或寄存器初始化为所述第一数字的值;以及
针对所述第二数字的每个位,相继地执行:
在第一例程和第二例程之间选择迭代计算例程;以及
在例程改变的情况下,在执行所选择的迭代计算例程之前,更新所述第二存储器位置或寄存器的内容,
其中,在执行所述第二数字的所述最后一位的所确定的迭代计算例程之后,将所述迭代计算的所述结果包含在所述第一存储器位置或寄存器中。
18.根据权利要求17所述的设备,其中,所述第二数字的所述位的所确定的迭代计算例程选自迭代计算例程的集合。
19.根据权利要求18所述的设备,其中,所述迭代计算是模幂运算,所述第二数字表示要被应用于所述第一数字的指数。
20.根据权利要求19所述的设备,其中所述迭代计算例程的所述集合包括:
始终平方乘例程;以及
蒙哥马利乘法例程。
21.根据权利要求20所述的设备,其中所述第二数字的所述位的所确定的迭代计算例程从所述集合被随机选择。
22.根据权利要求17所述的设备,其中所述迭代计算是椭圆曲线上的标量乘法,所述第二数字是要与所述第一数字相乘的标量。
23.一种用于保护迭代计算的系统,包括:
一个或多个处理核,所述一个或多个处理核在操作中处理数字数据;以及
加密电路,所述加密电路被耦合到所述一个或多个处理核,其中所述加密电路在操作中执行对第一数字和第二数字的迭代计算,其中所述迭代计算是模幂运算,所述第二数字表示要被应用于所述第一数字的指数,所述执行包括通过针对所述第二数字的每个位相继地执行以下步骤来保护所述迭代计算以防侧信道攻击:
独立于所述第二数字的所述位的状态,确定所述第二数字的所述位的迭代计算例程,其中所确定的迭代计算例程选自迭代计算例程的集合,所述迭代计算例程的集合包括始终平方乘例程以及蒙哥马利乘法例程,并且确定所述第二数字的所述位的所述迭代计算例程被随机执行;以及
执行所述位的所确定的迭代计算例程,其中所述迭代计算的结果取决于所述第二数字的最后一位的所确定的迭代计算例程的结果。
24.根据权利要求23所述的系统,其中所述迭代计算是椭圆曲线上的标量乘法,所述第二数字是要与所述第一数字相乘的标量。
25.根据权利要求23所述的系统,其中所述一个或多个处理核在操作中基于所述迭代计算的结果来处理事务。
26.一种非瞬态计算机可读介质,具有使得一个或多个处理设备执行方法的内容,所述方法包括:
使用电子电路来执行对第一数字和第二数字的迭代计算,其中所述迭代计算是模幂运算,所述第二数字表示要被应用于所述第一数字的指数,所述执行包括通过针对所述第二数字的每个位相继地执行以下步骤来保护所述迭代计算以防侧信道攻击:
独立于所述第二数字的所述位的状态,确定所述第二数字的所述位的迭代计算例程,其中所确定的迭代计算例程选自迭代计算例程的集合,所述迭代计算例程的集合包括始终平方乘例程以及蒙哥马利乘法例程,并且确定所述第二数字的所述位的所述迭代计算例程被随机执行;以及
执行所确定的迭代计算例程;以及
基于所述第二数字的最后一位的所确定的迭代计算例程的结果,生成所述迭代计算的结果。
27.根据权利要求26所述的非瞬态计算机可读介质,其中所述迭代计算是椭圆曲线上的标量乘法,所述第二数字是要与所述第一数字相乘的标量。
28.根据权利要求26所述的非瞬态计算机可读介质,其中所述方法包括基于所述迭代计算的结果处理事务。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR1757037 | 2017-07-25 | ||
FR1757037A FR3069671A1 (fr) | 2017-07-25 | 2017-07-25 | Protection d'un calcul iteratif contre des attaques horizontales |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109299621A CN109299621A (zh) | 2019-02-01 |
CN109299621B true CN109299621B (zh) | 2022-02-25 |
Family
ID=60515488
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810758773.4A Active CN109299621B (zh) | 2017-07-25 | 2018-07-11 | 对迭代计算的防范水平攻击的保护 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10977365B2 (zh) |
EP (1) | EP3435585B1 (zh) |
CN (1) | CN109299621B (zh) |
FR (1) | FR3069671A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113625994B (zh) * | 2021-10-12 | 2022-01-04 | 华控清交信息科技(北京)有限公司 | 一种数据处理方法和处理核 |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6008075A (en) | 1999-02-11 | 1999-12-28 | Vanguard International Semiconductor Corporation | Method for simultaneous formation of contacts between metal layers and fuse windows in semiconductor manufacturing |
JP3926532B2 (ja) | 2000-03-16 | 2007-06-06 | 株式会社日立製作所 | 情報処理装置、情報処理方法、及びカード部材 |
FR2847402B1 (fr) * | 2002-11-15 | 2005-02-18 | Gemplus Card Int | Procede de division entiere securise contre les attaques a canaux caches |
GB2399904B (en) | 2003-03-28 | 2005-08-17 | Sharp Kk | Side channel attack prevention in data processing apparatus |
KR100720726B1 (ko) | 2003-10-09 | 2007-05-22 | 삼성전자주식회사 | Rsa 알고리즘을 이용한 보안유지시스템 및 그 방법 |
FR2875535B1 (fr) | 2004-09-21 | 2009-10-30 | Snecma Moteurs Sa | Module de turbine pour moteur a turbine a gaz |
FR2884004B1 (fr) | 2005-03-30 | 2007-06-29 | Oberthur Card Syst Sa | Procede de traitement de donnees impliquant une exponentiation modulaire et un dispositif associe |
EP1840732A1 (en) * | 2006-03-31 | 2007-10-03 | Axalto SA | Protection against side channel attacks |
US7864951B2 (en) * | 2006-07-10 | 2011-01-04 | King Fahd University Of Petroleum And Minerals | Scalar multiplication method with inherent countermeasures |
US20080175385A1 (en) | 2007-01-18 | 2008-07-24 | Magiq Technologies, Inc. | QKD system with link redundancy |
US8670557B2 (en) * | 2007-09-10 | 2014-03-11 | Spansion Llc | Cryptographic system with modular randomization of exponentiation |
US8139763B2 (en) * | 2007-10-10 | 2012-03-20 | Spansion Llc | Randomized RSA-based cryptographic exponentiation resistant to side channel and fault attacks |
FR2977953A1 (fr) * | 2011-07-13 | 2013-01-18 | St Microelectronics Rousset | Protection d'un calcul d'exponentiation modulaire par addition d'une quantite aleatoire |
FR2977952A1 (fr) * | 2011-07-13 | 2013-01-18 | St Microelectronics Rousset | Protection d'un calcul d'exponentiation modulaire par multiplication par une quantite aleatoire |
FR2979725B1 (fr) | 2011-09-06 | 2016-05-27 | Oberthur Technologies | Procede de calculs cryptographique resistant aux defaillances materielles |
US8799343B2 (en) * | 2011-09-22 | 2014-08-05 | Intel Corporation | Modular exponentiation with partitioned and scattered storage of Montgomery Multiplication results |
US20130301826A1 (en) * | 2012-05-08 | 2013-11-14 | Intel Corporation | System, method, and program for protecting cryptographic algorithms from side-channel attacks |
US9959429B2 (en) * | 2013-03-15 | 2018-05-01 | Cryptography Research, Inc. | Asymmetrically masked multiplication |
FR3010210B1 (fr) * | 2013-08-29 | 2017-01-13 | Stmicroelectronics Rousset | Protection d'un calcul contre des attaques par canaux caches |
US10389520B2 (en) | 2014-10-03 | 2019-08-20 | Cryptography Research, Inc. | Exponent splitting for cryptographic operations |
EP3188001B1 (en) * | 2015-12-29 | 2020-08-12 | Secure-IC SAS | Modular multiplication device and method |
FR3055437A1 (fr) | 2016-08-23 | 2018-03-02 | Stmicroelectronics (Rousset) Sas | Protection d'un calcul d'exponentiation modulaire |
FR3055436A1 (fr) | 2016-08-23 | 2018-03-02 | Stmicroelectronics (Rousset) Sas | Protection d'un calcul modulaire |
-
2017
- 2017-07-25 FR FR1757037A patent/FR3069671A1/fr not_active Withdrawn
-
2018
- 2018-07-11 CN CN201810758773.4A patent/CN109299621B/zh active Active
- 2018-07-16 EP EP18183804.6A patent/EP3435585B1/fr active Active
- 2018-07-20 US US16/041,077 patent/US10977365B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
CN109299621A (zh) | 2019-02-01 |
US10977365B2 (en) | 2021-04-13 |
FR3069671A1 (fr) | 2019-02-01 |
US20190034629A1 (en) | 2019-01-31 |
EP3435585B1 (fr) | 2021-10-13 |
EP3435585A1 (fr) | 2019-01-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107040362B (zh) | 模乘设备和方法 | |
CN102638341B (zh) | 用于计算标量乘法的结果的设备和方法 | |
CN107111966B (zh) | 用于测试并且加固软件应用的方法 | |
US10025559B2 (en) | Protection of a modular exponentiation calculation | |
US10354063B2 (en) | Protection of a modular calculation | |
JP4909403B2 (ja) | 安全にデータを求める方法 | |
TWI403144B (zh) | 隨機化模數減化方法及其硬體 | |
Tunstall | Smart card security | |
US8321691B2 (en) | EMA protection of a calculation by an electronic circuit | |
US8369519B2 (en) | Scrambling of a calculation performed according to an RSA-CRT algorithm | |
US8666067B2 (en) | Cryptographic countermeasure method by deriving a secret data | |
US8065735B2 (en) | Method of securing a calculation of an exponentiation or a multiplication by a scalar in an electronic device | |
US11502836B2 (en) | Method for performing cryptographic operations on data in a processing device, corresponding processing device and computer program product | |
US7742595B2 (en) | Cryptographic method protected against covert channel type attacks | |
US10229264B2 (en) | Protection of a modular exponentiation calculation | |
CN109299621B (zh) | 对迭代计算的防范水平攻击的保护 | |
US20070162534A1 (en) | Protection of a calculation performed by an integrated circuit | |
US10209961B2 (en) | Verification of the sensitivity of an electronic circuit executing a modular exponentiation calculation | |
EP1501236B1 (en) | Error correction for cryptographic keys | |
JP2008525834A (ja) | 暗号用の安全かつコンパクトな累乗方法 | |
KR101665600B1 (ko) | Ecc 암호 알고리즘의 전력 충돌 공격 대응을 위한 장치 및 방법 | |
CN113032797A (zh) | 在处理设备中执行加密操作的方法 | |
US11329796B2 (en) | Protection of an iterative calculation | |
US11265142B2 (en) | Protection of an iterative calculation | |
US11456853B2 (en) | Protection of an iterative calculation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | 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 |