CN106716344B - 用于密码运算的指数*** - Google Patents
用于密码运算的指数*** Download PDFInfo
- Publication number
- CN106716344B CN106716344B CN201580050978.1A CN201580050978A CN106716344B CN 106716344 B CN106716344 B CN 106716344B CN 201580050978 A CN201580050978 A CN 201580050978A CN 106716344 B CN106716344 B CN 106716344B
- Authority
- CN
- China
- Prior art keywords
- value
- register
- share
- exponent
- share value
- 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
-
- 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/003—Countermeasures against attacks on cryptographic mechanisms for power analysis, e.g. differential power analysis [DPA] or simple power analysis [SPA]
-
- 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/75—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 by inhibiting the analysis of circuitry or operation
- G06F21/755—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 by inhibiting the analysis of circuitry or operation with measures against power attack
-
- 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
- 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/7233—Masking, e.g. (A**e)+r mod n
- G06F2207/7242—Exponent masking, i.e. key masking, e.g. A**(e+r) mod n; (k+r).P
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Software Systems (AREA)
- Storage Device Security (AREA)
- Executing Machine-Instructions (AREA)
- Logic Circuits (AREA)
Abstract
可以接收第一份额值和第二份额值。第一份额值和第二份额值的组合可以对应于指数值。使用基于第一和第二份额值的第一等式来更新第一寄存器的值,并且使用基于第二份额值的第二等式来更新第二寄存器的值。基于第二份额值的位值来选择第一寄存器的值或第二寄存器的值中的一个值。
Description
附图说明
将从以下给出的详细描述以及本公开的各种实施方式的附图来更加完整地理解本公开。
图1示出了根据一些实施例的包括指数***器(exponent splitter)的示例性设备。
图2是根据本公开的一些实施例的基于指数值的***执行密码运算的示例性方法的流程图。
图3是根据一些实施例更新寄存器的值并提供寄存器的一个值用于密码运算的指数***器的框图。
图4是根据一些实施例选择多个寄存器中的一个寄存器的值用作对应于密码运算的群指数运算(group exponentiation)中的指数值的示例性方法的流程图。
图5是根据一些实施例基于最低有效位选择寄存器的值的示例性方法的流程图。
图6示出了本公开的一些实施例可以运算的计算机***的实施例的框图。
具体实施方式
本公开的多个方面的目的在于提供用于密码运算的指数***。可以在密码运算中使用指数的值,其使用指数方法来基于指数的值对消息进行编码。例如,可以基于指数的值来编码明文(例如,发送者想要传输给接收者的信息),以生成密文(例如,加密信息)。作为示例,密文(例如,y)可以等于明文(例如,x)提升到指数k的值的幂(例如,y=xk)。
因此,指数值可用于编码明文,并且指数值的逆元素可用于解码明文。例如,发送者可以向接收者传输密文(例如,y),并且接收者可以解码密文,以通过使用指数值的逆元素恢复明文(例如,x=y-k)。因此,指数值可以被认为是用于对明文进行编码的密钥(例如,公开密钥),并且指数值的逆元素可以被认为是用于对密文进行解码的密钥(例如,私人密钥)。
指数值可以通过集成电路来生成并且被集成电路用于执行密码运算。通过集成电路生成和使用指数值可以导致集成电路易受到侧信道攻击(side channel attack)(其中攻击者可以得到指数值)的影响。侧信道攻击的示例包括但不限于差分功率分析(DPA),其中试图从集成电路获得指数值的攻击者可以在指数值被生成以用于密码运算中时研究集成电路的功耗。攻击者可以是未被授权的实体,在指数值在密码运算中生成和/或使用时其可以通过在时间周期内分析集成电路的功耗测量值从集成电路获得指数值。因此,当发送者向接收者传输密文时,攻击者能够通过使用集成电路的DPA获得指数值解码密文来恢复明文。
指数值可以被生成和/或用于防止DPA攻击能够恢复指数值。例如,指数值的计算可以包括随机计算,以有效地隐藏被集成电路使用的指数值。例如,指数值可以***为两个值(称为份额(share)),它们至少部分地被随机表示。两个份额的组合效果可以等效于期望的指数值。对应于指数值的两个份额的使用可以称为指数***。可以在群指数运算中使用指数值。
在一些实施例中,集成电路可以包括第一寄存器来存储第一值以及第二寄存器来存储第二值。第一值和第二值可以基于期望指数值的特定位来进行更新。第一寄存器的第一值和第二寄存器的第二值可以针对第一份额和第二份额的每个位来更新,直到达到这两个份额的最低有效位为止。基于一个份额的最低有效位的值,指数运算方法的结果可以存储在第一寄存器中或第二寄存器中。此外,第一等式可用于更新第一寄存器的第一值,以及第二等式可用于更新第二寄存器的第二值。观察用于实施第一和第二等式(用于更新第一和第二寄存器的第一和第二值)的集成电路的一些侧信道不会导致DPA攻击者获得指数值,因为一个寄存器可以包括使用指数值的群指数运算的结果,并且另一寄存器包括从与附加功耗相关联的附加计算得到的值。因此,DPA攻击者不能恢复指数值。
图1示出了包括指数***器的示例性设备。一般来说,设备100可以包括与指数***器111、存储器112和各种设备部件113相关联的集成电路。集成电路的指数***器111可以生成用于密码运算的指数值。
如图1所示,设备100可以包括指数***器111。在一些实施例中,指数***器111可以使用对应于指数值的第一份额和第二份额,并且可以基于第一份额和第二份额来更新存储器112(例如,第一份额和第二份额是随机按位表示)。第一份额和第二份额的异或(XOR)可以得到指数值。在一些实施例中,存储器112可以包括多个寄存器。寄存器的值可以基于不同的等式或公式来更新,这些等式或公式基于第一份额和第二份额。此外,指数***器111可以从存储器112中选择一个寄存器,其中所选寄存器的值包含使用指数值的群指数运算的结果。设备部件113随后可以利用群指数运算的结果,其在密码运算中使用指数值。这种密码运算的示例包括但不限于生成用于消息的签名,其中消息可用于允许对设备100的特定功能的访问或者允许设备100执行特定运算。与设备相关联的功能或操作的示例包括但不限于访问设备的特定硬件能力、访问设备的调试或诊断状态以及写入与设备相关联的存储器。因此,在一些实施例中,基于指数值的群指数运算可用于生成用于消息的签名,其可允许对设备的至少一些功能或操作的访问。具有有效签名的消息(例如,基于使用指数值的群指数运算)可以允许对设备的功能或操作的访问,不具有有效签名的消息不允许对设备的功能或操作进行访问。
当来自发送者的消息伴随有密码运算生成的有效签名时,消息的发送者可以被允许访问设备100的功能或操作。这种密码运算的示例包括但不限于生成与椭圆曲线数字签名算法(ECDSA)、Rivest Shamir Adleman(RSA)算法等相关联的签名,其中在公共-私人密钥密码***中使用签名。在一些实施例中,群指数运算方法被用于提供密码安全的方式。在一些实施例中,密码运算可以使用群指数运算中的指数值来生成签名。在一些实施例中,群指数运算可以是模指数(例如,对所选整数的整数模执行的指数)或者基于椭圆曲线算术的指数组或者任何其他数字表达。
图2是基于指数值的***执行密码运算的示例性方法200的流程图。一般地,方法200可以通过处理逻辑来执行,其中处理逻辑可以包括硬件(例如,处理设备、电路、专用逻辑、可编程逻辑、微码、设备的硬件等)、软件(例如,在处理设置上运行或执行的指令)或它们的组合。在一些实施例中,方法200可以通过图1的指数***器111来执行。
如图2所示,方法200可以开始于处理逻辑接收期望指数值的识别(框210)。例如,将在密码运算的群指数运算中使用的指数的值可以被接收。处理逻辑可进一步将期望的指数值***为第一份额和第二份额(框220)。在一些实施例中,第一份额和第二份额中的每一个均可以是不同值或对应于期望指数值的按位表示。例如,第一份额和第二份额的异或(XOR)可以产生期望的指数值。当对应于第一份额的位和第二份额的位的两个输入位不同时(例如,两个份额中的一位为‘0’,而两个份额中的另一位为‘1’),XOR运算可以输出真值(例如,‘1’),而当对应于第一份额的位和第二份额的位的两个输入位相同时(例如,两个位均为‘0’或者两个位均为‘1’),XOR运算可以输出假值(例如,‘0’)。因此,第一份额和第二份额的组合可以产生期望的指数值。此外,尽管在本公开中描述了XOR运算,但可以使用任何类型的逻辑或算术运算,其中,第一份额和第二份额的组合产生期望的指数值。例如,可以使用附加运算(例如,指数值=A+B,其中A和B是第一和第二份额)。处理逻辑可以进一步基于第一份额和第二份额更新第一寄存器和第二寄存器的值(框230)。例如,处理逻辑可以基于第一等式更新第一寄存器的值并且基于第二等式更新第二寄存器的值,其中第一等式和第二等式基于第一和第二份额的特定位的值。在一些实施例中,第一等式和第二等式中的一个可以包括附加计算,可使用附加计算以使更新第一寄存器的功耗和更新第二寄存器的功耗不会允许DPA攻击恢复指数值。结合图4描述关于这种等式的进一步细节。处理逻辑可进一步从第一寄存器或第二寄存器中选择一个值来用作指数值(框240)。例如,如结合图4进一步描述的,可以基于第二份额的最低有效位或最高有效位的值来选择第一寄存器的值或第二寄存器的值。此外,处理逻辑可以基于所选寄存器的值来执行密码运算(框250)。例如,可以生成签名,其中所选寄存器的值是基于指数值的群指数运算。在一些实施例中,群指数运算可以对应于密码运算中的签名和/或私人密钥。
图3是更新寄存器的值并提供寄存器的一个值用于密码运算的指数***器320的框图。一般地,指数***器320可以对应于图1的指数***器111,存储器310可以对应于图1的存储器112,并且密码运算部件330可以对应于图1的设备部件113。
如图3所示,指数***器320可以包括随机数发生器模块323、等式逻辑模块324和寄存器选择模块325。在备选实施例中,一个或多个模块的功能可以进行组合或划分。此外,每个模块都可以以硬件(例如,处理设备、电路、专用逻辑、可编程逻辑、微码、设备的硬件等)、软件(在处理设备上运行或执行的指令)或它们的组合来实施。指数***器320可以接收期望指数值的指示,该指数值可以***为第一份额和第二份额。
随机数发生器模块323可以生成值为0或1的随机位。在一些实施例中,随机数发生器模块323可以在每当生成指数值时生成随机数。随机数可以被存储在存储器310的对应于随后被更新的值(例如,如参照图4进一步详细描述的,对应于b’的值)的存储位置中。因此,所生成的随机数可以是用于寄存器的初始值。等式逻辑模块324可以包括逻辑或执行逻辑运算来更新存储器310的第一寄存器311和第二寄存器312的值(例如,如参照图4进一步描述的R0和R1寄存器)。在一些实施例中,等式逻辑模块324可以提供功能来执行XOR逻辑运算、算术运算和/或模乘。寄存器选择器模块325可以选择寄存器311(例如,R0)或寄存器312(例如,R1)中的一个,并且将所选寄存器的值提供至密码运算部件330。例如,如果一个份额的最低有效位的值为0,则寄存器选择器模块325可以选择寄存器311,或者如果该份额的最低有效位的值为1,则寄存器选择器模块325可以选择寄存器312。在备选实施例中,如果一个份额的最高有效位的值为0,则寄存器选择器模块325可以选择寄存器311,或者如果该份额的最高有效位的值为1,则可以选择寄存器312。输出信号322可以包括所选寄存器的值,并且可以对应于基于期望指数值的群指数运算的结果。
如图3所示,密码运算部件330可以接收基于存储在寄存器311或312的一个中的期望指数值的群指数运算,并且可以基于该群指数运算执行密码运算。例如,密码运算部件330可以通过使用基于指数值的群指数运算来生成签名或私人密钥。签名或私人密钥可以包括在输出信号331中。
存储器310可以包括寄存器311、312、313和314。寄存器311(例如,R0)和312(例如,R1)可以通过指数***器320的等式逻辑模块324来更新。此外,寄存器313和314(例如,U0和U1)可用于存储数学群的元素以及在群指数运算中使用的它们的逆元素(例如,整数、模等的群)。在一些实施例中,寄存器311和312可以初始地存储数学群的元素(其也存储在寄存器313中)。例如,存储器311、312和313可以存储数学群的元素,并且寄存器314可以存储数学群的元素的逆元素。结合图4描述关于寄存器的进一步细节。
图4是选择多个寄存器中的一个寄存器的值的示例性方法400的流程图,其中该值将被用作对应于密码运算的群指数运算中的指数值。一般地,方法400可以通过处理逻辑来执行,该处理逻辑可以包括硬件(例如,处理设备、电路、专用逻辑、可编程逻辑、微码、设备的硬件等)、软件(在处理设备上运行或执行的指令)或它们的组合。在一些实施例中,可以通过图1的指数***器111或该图3的指数***器320来执行方法400。
方法400可以称为盲蒙哥马利阶梯(Blinded Montgomery Ladder),并且可以使用两个份额(例如,第一份额和第二份额),其中第一份额和第二份额的组合产生在群指数运算中使用的期望指数值来用于密码运算。例如,第一份额和第二份额的XOR可以等于期望的指数值。方法400可以进一步要求期望指数值的每位的两个群运算。在一些实施例中,群运算的部分可以包括随机化数学运算,使得对应于第一群运算(例如,更新第一寄存器的值的第一等式)或第二群运算(例如,更新第二寄存器的值的第二等式)的功耗不会导致通过观察来自两个群运算的功耗来生成容易受DPA攻击的指数值。
在一些实施例中,方法400可以执行以下方法,其中x表示群(例如,整数、模等的集合),A=(an-1,an-2,...a0)2且B=(bn-1,bn-2,...b0)2。
R0←x;R1←x;
U0←x;U1←x-1;
for i=n-1down to 0do
R1←R0·Ubi;
b’=bi;
end
return Rb0
在一些实施例中,x可以表示数学群(例如,在群指数运算中使用的整数或模的群)的元素,A可以是包括位an-1至a0的第一份额,以及B可以是包括位bn-1至b0的第二份额。因此,第一份额和第二份额均可以包括n位。此外,R0可以对应于第一寄存器,以及R1可以对应于第二寄存器。此外,U0可以对应于第三寄存器,以及U1可以对应于第四寄存器。在一些实施例中,b’可以是方法的初始部分处的为0或1的随机位,并且随后可以利用第二份额的位的值来更新用于n位中的每一位。此外,如上所述,第一份额和第二份额均可以包括一定位数(例如,n位),该位数对应于期望指数值的位数。对于第一和第二份额的每个份额的每一位,R0和R1寄存器值可以基于第一等式和第二等式来更新。例如,R0等式可以基于使用第二份额的当前位的当前值(例如,n的索引值)和第二份额的前一位的值(例如,n+1的索引值)的XOR和乘法运算(例如,模乘)。此外,R1等式可以基于存储在R0寄存器中的值和存储在一个U寄存器中的值,基于第二份额的当前位的值选择该U寄存器(例如,如果第二份额的当前位的值为0,则选择U0,而如果第二份额的当前位的值为1,则选择U1)。此外,b’值可以更新为第二份额的当前位的值(例如,bi)。在一些实施例中,在R0和R1等式中使用的数学运算(即,点运算)可以是诸如椭圆曲线算术运算的群运算或者任何其他群运算。一旦达到第一和第二份额的最终位(例如,最低或最高有效位),则一个寄存器的值可以基于第二份额的最低有效位的值(例如,b0)来进行选择。
参照图4,执行上述方法的方法400可以通过处理逻辑接收对应于指数值的第一份额(例如,A)和第二份额(例如,B)来开始(框410)。例如,第一份额和第二份额的XOR可以产生期望用于密码运算的指数值。在一些实施例中,第一份额可以等于第一值(例如,k1)和随机数(例如,r)之间的XOR运算,以及第二份额可以等于第二值(例如,k2)与随机数(例如,r)之间的XOR运算。在同一或备选实施例中,值k1和k2可以存储在设备的集成电路中(例如,存储器中),并且可以在要生成指数值时确定随机数。处理逻辑可以进一步在第一寄存器(例如,R0)、第二寄存器(例如,R1)和第三寄存器(例如,U0)中存储数学群的元素的值(例如,整数、模或其他数学单元)(框420)。此外,同一群的元素的逆元素可以存储在第四寄存器(例如,U1)中(框430)。处理逻辑可进一步生成随机数(例如,b’)(框440)。例如,处理逻辑可以生成随机0或1,并且将随机0或1分配给另一寄存器。处理逻辑可以进一步更新第一寄存器(R0)的值或第二寄存器(R1)的值(框450)。在一些实施例中,第一寄存器的值可以基于上述等式,并且第二寄存器的值可以基于附加描述的等式。在一些实施例中,寄存器的值可以基于第一和第二份额的特定位来更新。此外,如参照图5所描述的,第一和第二寄存器的值可以从第一位(例如,最高有效位)开始连续更新,直到份额的最后一位(例如,最低有效位)被处理为止。备选地,第一和第二寄存器的值可以从最低有效位开始连续更新,直到份额的最高有效位被处理为止(例如,i=0到n-1)。
如图4所示,处理逻辑可进一步基于第二份额(B)的最后一位来选择第一寄存器或第二寄存器中的一个寄存器的值(框460)。例如,基于对应于第二份额(B)的最低有效位的b0的值来选择第一寄存器或者选择第二寄存器。例如,如果b0的值为0,则可以选择第一寄存器(例如,R0),而如果b0的值为1,则可以选择第二寄存器(例如,R1)。可替换地,可以基于对应于第二份额(B)的最高有效位的值来选择第一寄存器或第二寄存器。例如,如果bn-1的值为0,则可以选择第一寄存器(例如,R0),而如果bn-1的值为1,则可以选择第二寄存器(例如,R1)。所选寄存器的值可用于计算群运算作为对应于密码运算的群指数运算的部分。
图5是基于最低有效位选择寄存器的值的示例性方法500的流程图。一般地,图5可以通过处理逻辑来执行,处理逻辑可以包括硬件(例如,处理设备、电路、专用逻辑、可编程逻辑、微码、设备的硬件等)、软件(例如,在处理设备上运行或执行的指令)或它们的组合。在一些实施例中,可以通过图1的指数***器111或图3的指数***器320来执行方法500。
如图5所示,方法500可以开始于处理逻辑接收对应于指数值的份额的位(框510)。例如,可以接收第一份额的特定索引值(例如,n)处的第一位和第二份额的同一索引值处的第二位。可以基于第一等式以及索引值处的第一和第二份额的位值来更新第一寄存器(R0)的值(框520)。此外,在一些实施例中,可以进一步基于第二份额的前一索引值(例如,n+1)处的位值来更新第一寄存器的值。处理逻辑可以进一步基于第二等式来更新第二寄存器(例如,R1)的值,第二等式对应于第一寄存器的值与另一寄存器(例如,U0或U1)的值之间的乘法运算,该另一寄存器的值是基于当前索引值处的第二份额的位值的值来进行选择的(框530)。处理逻辑可进一步确定第一和第二份额的索引值是否对应于份额的位值(例如,最低有效位或最高有效位)(框540)。如果第一和第二份额的索引值不对应于第一和第二份额的最后一位,则处理逻辑可以继续接收第一和第二份额的下一索引值(例如,n-1或n+1)处的份额的位。然而,如果第一和第二份额的索引值对应于第一和第二份额的最后一位(例如,索引值0,使得i=0),则可以基于第二份额的最后一位的值选择第一寄存器的值或第二寄存器的值(框550)。例如,如果第二份额的最低有效位(例如,b0)的值为0,则可以选择第一寄存器(例如,R0)的值,而如果第二份额的最低有效位的值为1,则可以选择第二寄存器(例如,R1)的值。备选地,如前所述,可以基于最高有效位的值来替代地选择第一寄存器的值或第二寄存器的值。
在一些实施例中,可以使用多个寄存器,并且可以一次读取指数值的多位。在这种实施例中,可以基于第一和第二份额值来更新寄存器。此外,可以基于份额来修改或更新寄存器的内容。例如,可以基于存储第二份额的值的第二寄存器来更新存储第一份额的值的第一寄存器。此外,可以如前所描述地选择一个寄存器的值(例如,在修改或更新第一和第二寄存器之后)。在一些实施例中,在选择一个寄存器之后,可以改变寄存器的排序或内容,使得后续份额(例如,后来的第一和第二份额值)可用于后续的群运算来作为对应于密码运算的另一群指数运算的一部分。在相同或替换实施例中,寄存器的内容可以交换来用于随后的份额值。
图6示出了计算机***600的示例性机器,在该***内可以执行用于使机器执行本文讨论的任何一种或多种方法的指令的集合。在备选实施方式中,机器可以连接至(例如,联网至)LAN、内联网、外联网和/或互联网中的其他机器。机器可以在客户端-服务器网络环境中的服务器或客户端机器的容量中进行运算,作为对等网络(或分布式)网络环境中的对等机器,或者作为云计算架构或环境中的服务器或客户端机器。
机器可以是个人计算机(PC)、桌上型PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、网络应用、服务器、网络路由器、开关或桥、或者能够执行(顺序或以其他方式)指定将由该机器进行的动作的指令集的任何机器。此外,虽然示出了单个机器,但术语“机器”还应该包括任何机器的集合,这些机器单独或联合地执行指令的集合(或多个集合)来执行本文讨论的任何一种或多种方法。
示例性计算机***600包括处理设备602、主存储器604(例如,只读存储器(ROM)、闪存、动态随机存取存储器(DRAM),诸如同步DRAM(SDRAM)或Rambus DRAM(RDRAM)等)、静态存储器606(例如,闪存、静态随机存取存储器(SRAM)等)和数据存储设备618,它们经由总线630相互通信。
处理设备602表示一个或多个通用处理设备,诸如微处理器、中央处理单元等。更具体地,处理设备可以是复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超出指令字(VLIW)微处理器或者实施其他指令集的处理器或者实施指令集的组合的处理器。处理设备602还可以是一个或多个专用处理设备,诸如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等。处理设备602可以被配置为执行指令626,用于执行本文讨论的操作和步骤。
计算机***600可进一步包括网络接口设备608,以在网络620上进行通信。计算机***600还可以包括视频显示单元610(例如,液晶显示器(LCD)或阴极射线管(CRT))、字母数字输入设备612(例如,键盘)、光标控制设备614(例如,鼠标)、图形处理单元622、信号生成设备616(例如,扬声器)、图形处理单元622、视频处理单元628和音频处理单元632。
数据存储设备618可以包括机器可读存储介质624,(还已知为计算机可读介质),其上存储有实施为本文描述的任何一种或多种方法或功能的一个或多个指令集或软件626。指令626还可以在通过计算机***600执行期间完全或至少部分地驻留在主存储器604内和/或处理设备602内,主存储器604和处理设备602还组成机器可读存储介质。
在一个实施方式中,指令626包括实施对应于指数***器(例如,图1的指数***器111或图3的指数***器320)的功能的指令。虽然机器可读存储介质624在一个示例性实施方式中被示为单个介质,但术语“机器可读存储介质”应该包括单个介质或多个介质(例如,中央式或分布式数据库,和/或相关联的高速缓存和服务器),其存储一个或多个指令集。术语“机器可读存储介质”还应该包括能够存储或编码用于被机器执行并且使机器执行本公开的任何一种或多种方法的指令集的任何介质。术语“机器可读存储介质”应该相应地包括但不限于固态存储器、光学介质和磁性介质。
根据对计算机存储器内的数据位的运算的算法和符号表示呈现了先前详细描述的一些部分。这些算法描述和表示是数据处理领域技术人员用于最有效地将它们的工作内容传递给本领域其他技术人员的方式。算法是在本文中以及在通常情况下理解为产生期望结果的运算的前后一致的序列。运算是要求物理量的物理处理的运算。通常,尽管不是必须的,但这些量采用能够被存储、组合、比较和以其他方式进行处理的电信号或磁信号的形式。已被有利地证明,主要由于公用的原因,将这些信号称为位、值、元素、符号、字符、术语、数量等。
然而,应该意识到,与适当的物理量相关联的所有这些和类似术语仅仅是应用于这些量的有利标签。从上文讨论明显看出,除非另有明确指定,否则应该理解,在整个说明书中,利用诸如“识别”或“确定”或“执行”或“收集”或“创建”或“发送”等的术语的讨论表示计算机***或类似电子计算设备的动作和处理,它们将计算机***的寄存器和存储器内表示为物理(电子)量的数据处理和转换成类似地表示为计算机***存储器或寄存器或其他这些信息存储设备内的物理量的其他数据。
本公开还涉及用于执行本文的运算的装置。该装置可以专门构建为用于期望的目的,或者其可以包括通过存储在计算机中的计算机程序选择性激活或重配置的通用计算机。这种计算机程序可以存储在计算机可读存储介质中,诸如但不限于任何类型的盘(包括软盘、光盘、CD-ROM和磁-光盘)、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROMM、磁卡或光学卡、或者适合于存储电子指令的任何类型的介质,它们均耦合至计算机***总线。
本文呈现的算法和显示不是固有地与任何特定的计算机或其他装置相关。根据本文的教导,各种通用***可以被程序使用,或者其可以有利地构建更加专业的装置来执行方法。用于各种这些***的结构将在以下的描述中明显地阐述。此外,不参照任何特定的编程语言来描述本公开。应理解,各种编程语言可用于实施本文描述的公开的教导。
本公开可以设置为计算机程序产品或软件,其可以包括存储有指令的机器可读介质,其可用于编程计算机***(或其他电子设备)来执行根据本公开的处理。机器可读介质包括用于以可被机器(例如,计算机)读取的形式存储信息的任何机制。例如,机器可读(例如,计算机可读)机器包括机器(例如,计算机)可读存储介质,诸如只读存储器(“ROM”)、随机存取存储器(“RAM”)、磁盘存储介质、光学存储介质、闪存设备等。
在前面的描述中,参照其特定示例性实施方式描述了本公开的实施方式。将明显地,在不背离以下权利要求阐述的本公开的实施方式的精神和范围的情况下,可以进行各种修改。因此,说明书和附图被认为是说明性的而非限制性的。
Claims (19)
1.一种用于执行密码运算的方法,包括:
接收第一份额值和第二份额值,其中所述第一份额值和所述第二份额值的组合对应于指数值;
使用基于所述第一份额值和所述第二份额值的第一等式更新第一寄存器的值;
使用基于所述第二份额值的第二等式更新第二寄存器的值;以及
通过处理设备,基于所述第二份额值的位值选择将在所述密码运算中使用的所述第一寄存器的所述值或所述第二寄存器的所述值中的一个值,其中响应于所述第二份额值的所述位值处于第一值,选择所述第一寄存器的所述值用于所述密码运算,并且响应于所述第二份额值的所述位值处于不同于所述第一值的第二值,选择所述第二寄存器的所述值用于所述密码运算。
2.根据权利要求1所述的方法,其中对应于所述指数值的所述第一份额值和所述第二份额值的所述组合是所述第一份额值与所述第二份额值之间的逻辑或算术运算。
3.根据权利要求1所述的方法,还包括:
基于所述第一寄存器或所述第二寄存器的所选值执行所述密码运算。
4.根据权利要求3所述的方法,其中所述第一寄存器或所述第二寄存器的所选值对应于群指数运算,所述群指数运算基于对应于所述第一份额值和所述第二份额值的所述指数值,并且其中所述密码运算进一步基于所述群指数运算。
5.根据权利要求1所述的方法,其中所述第二份额值的所述位值是所述第二份额值的最低有效位或最高有效位。
6.根据权利要求1所述的方法,其中所述第一等式和所述第二等式均与功耗相关联,以减少对差分功率分析(DPA)攻击的易受性。
7.一种用于执行密码运算的***,包括:
第一寄存器和第二寄存器,用于存储数学群的元素;以及
处理设备,耦合至所述第一寄存器和所述第二寄存器,并且用于:
接收第一份额值和第二份额值,其中所述第一份额值和所述第二份额值的组合对应于指数值;
使用基于所述第一份额值和所述第二份额值的第一等式来更新所述第一寄存器的值;
使用基于所述第二份额值的第二等式更新所述第二寄存器的值;并且
通过处理设备,基于所述第二份额值的位值选择将在所述密码运算中使用的所述第一寄存器的所述值或所述第二寄存器的所述值中的一个值,其中响应于所述第二份额值的所述位值处于第一值,选择所述第一寄存器的所述值用于所述密码运算,并且响应于所述第二份额值的所述位值处于不同于所述第一值的第二值,选择所述第二寄存器的所述值用于所述密码运算。
8.根据权利要求7所述的***,其中对应于所述指数值的所述第一份额值和所述第二份额值的所述组合是所述第一份额值与所述第二份额值之间的逻辑或算术运算。
9.根据权利要求7所述的***,所述处理设备进一步用于:
基于所选择的第一寄存器或第二寄存器的所述值执行密码运算。
10.根据权利要求9所述的***,其中所述第一寄存器或所述第二寄存器的所选值对应于群指数运算,所述群指数运算基于对应于所述第一份额值和所述第二份额值的所述指数值,并且其中所述密码运算进一步基于所述群指数运算。
11.根据权利要求7所述的***,其中所述第二份额值的所述位值是所述第二份额值的最低有效位或最高有效位。
12.根据权利要求7所述的***,其中所述第一等式和所述第二等式均与功耗相关联,以减少对差分功率分析(DPA)攻击的易受性。
13.一种非暂态计算机可读介质,包括当被处理设备访问时使所述处理设备执行运算的数据,所述运算包括:
接收第一份额值和第二份额值,其中所述第一份额值和所述第二份额值的组合对应于指数值;
使用基于所述第一份额值和所述第二份额值的第一等式更新第一寄存器的值;
使用基于所述第二份额值的第二等式更新第二寄存器的值;以及
基于所述第二份额值的位值选择将在密码运算中使用的所述第一寄存器的所述值或所述第二寄存器的所述值中的一个值,其中响应于所述第二份额值的所述位值处于第一值,选择所述第一寄存器的所述值用于所述密码运算,并且响应于所述第二份额值的所述位值处于不同于所述第一值的第二值,选择所述第二寄存器的所述值用于所述密码运算。
14.根据权利要求13所述的非暂态计算机可读介质,其中对应于所述指数值的所述第一份额值和所述第二份额值的所述组合是所述第一份额值与所述第二份额值之间的逻辑或算术运算。
15.根据权利要求13所述的非暂态计算机可读介质,其中所述运算进一步包括:
基于所选择的第一寄存器或第二寄存器的所述值执行密码运算。
16.根据权利要求15所述的非暂态计算机可读介质,其中所述第一寄存器或所述第二寄存器的所选值对应于群指数运算,所述群指数运算基于对应于所述第一份额值和所述第二份额值的所述指数值,并且其中所述密码运算进一步基于所述群指数运算。
17.根据权利要求13所述的非暂态计算机可读介质,其中所述第一等式和所述第二等式均与功耗相关联,以减少对差分功率分析(DPA)攻击的易受性。
18.一种用于执行密码运算的方法,包括:
接收第一份额值和第二份额值,其中所述第一份额值和所述第二份额值的组合对应于指数值;
基于所述第一份额值修改第一寄存器和第二寄存器;
基于所述第二份额值修改所述第一寄存器和所述第二寄存器;以及
通过处理设备,基于所修改的第一寄存器和第二寄存器选择将在所述密码运算中使用的所述第一寄存器的值或所述第二寄存器的值中的一个值,其中响应于所修改的第一寄存器的位值处于第一值,选择所述第一寄存器的所述值用于所述密码运算,并且响应于所修改的第二寄存器的位值处于不同于所述第一值的第二值,选择所述第二寄存器的所述值用于所述密码运算。
19.根据权利要求18所述的方法,其中修改所述第一寄存器和所述第二寄存器包括:修改所述第一寄存器的地址和所述第二寄存器的地址,或者修改所述第一寄存器的所述值和所述第二寄存器的所述值。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201462059477P | 2014-10-03 | 2014-10-03 | |
US62/059,477 | 2014-10-03 | ||
PCT/US2015/052325 WO2016053792A1 (en) | 2014-10-03 | 2015-09-25 | Exponent splitting for cryptographic operations |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106716344A CN106716344A (zh) | 2017-05-24 |
CN106716344B true CN106716344B (zh) | 2021-04-30 |
Family
ID=54266661
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580050978.1A Active CN106716344B (zh) | 2014-10-03 | 2015-09-25 | 用于密码运算的指数*** |
Country Status (5)
Country | Link |
---|---|
US (3) | US10389520B2 (zh) |
EP (1) | EP3202079B1 (zh) |
CN (1) | CN106716344B (zh) |
TW (1) | TWI686722B (zh) |
WO (1) | WO2016053792A1 (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR3069671A1 (fr) | 2017-07-25 | 2019-02-01 | Stmicroelectronics (Rousset) Sas | Protection d'un calcul iteratif contre des attaques horizontales |
EP3579493A1 (fr) | 2018-06-08 | 2019-12-11 | STMicroelectronics (Rousset) SAS | Protection d'un calcul itératif |
EP3579492A1 (fr) | 2018-06-08 | 2019-12-11 | STMicroelectronics (Rousset) SAS | Protection d'un calcul itératif |
FR3094522B1 (fr) | 2019-03-29 | 2021-11-19 | St Microelectronics Rousset | Protection d’un calcul itératif |
DE102022129608A1 (de) | 2022-11-09 | 2024-05-16 | Infineon Technologies Ag | Verfahren zum kombinierten schlüsselwertabhängigen austausch und zur randomisierung von zwei eingangswerten |
DE102022129606A1 (de) | 2022-11-09 | 2024-05-16 | Infineon Technologies Ag | Schaltung für kombinierten schlüsselwertabhängigen austausch und multiplikative randomisierung von zwei werten |
DE102022129607A1 (de) | 2022-11-09 | 2024-05-16 | Infineon Technologies Ag | Schaltung für kombinierten schlüsselwertabhängigen austausch und randomisierung von zwei werten |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5987131A (en) * | 1997-08-18 | 1999-11-16 | Picturetel Corporation | Cryptographic key exchange using pre-computation |
CN1535451A (zh) * | 2001-03-24 | 2004-10-06 | 沃特黑尔公司 | 可证实的秘密洗牌及其对于电子表决的应用 |
CN1619484A (zh) * | 2003-11-20 | 2005-05-25 | 国际商业机器公司 | 浮点单元及计算指数的方法 |
CN1985458A (zh) * | 2003-11-16 | 2007-06-20 | M***闪存先锋有限公司 | 增强的自然蒙哥马利指数掩蔽 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5675649A (en) * | 1995-11-30 | 1997-10-07 | Electronic Data Systems Corporation | Process for cryptographic key generation and safekeeping |
EP1691501B1 (en) * | 1998-01-02 | 2009-04-22 | Cryptography Research Inc. | Leak-resistant cryptography method an apparatus |
WO2004055756A1 (ja) | 2002-12-18 | 2004-07-01 | Fujitsu Limited | 秘密鍵を用いた耐タンパ楕円曲線暗号処理 |
EP1648111B1 (en) | 2003-07-22 | 2014-01-15 | Fujitsu Limited | Tamper-resistant encryption using a private key |
US8243920B2 (en) | 2005-10-28 | 2012-08-14 | Telecom Italia S.P.A. | Method for scalar multiplication in elliptic curve groups over binary polynomial fields for side-channel attack-resistant cryptosystems |
DE102006014353B4 (de) | 2006-03-28 | 2007-11-22 | Siemens Ag | Verfahren zum sicheren Ermitteln von Daten |
US20090279687A1 (en) * | 2006-11-09 | 2009-11-12 | Tetsuro Yoshimoto | Cryptographic operation processing circuit |
US8670557B2 (en) | 2007-09-10 | 2014-03-11 | Spansion Llc | Cryptographic system with modular randomization of exponentiation |
JP5182364B2 (ja) | 2008-03-28 | 2013-04-17 | 富士通株式会社 | サイドチャネル攻撃に対する耐タンパ性を有する暗号処理方法 |
EP2507708B1 (en) * | 2009-12-04 | 2019-03-27 | Cryptography Research, Inc. | Verifiable, leak-resistant encryption and decryption |
KR101610917B1 (ko) | 2010-03-08 | 2016-04-11 | 삼성전자주식회사 | 암호 알고리즘의 복호 방법 및 그것을 포함하는 암호 시스템 |
US9400636B2 (en) | 2011-02-11 | 2016-07-26 | Infineon Technologies Ag | Apparatus and method for calculating a result in a scalar multiplication |
-
2015
- 2015-09-25 WO PCT/US2015/052325 patent/WO2016053792A1/en active Application Filing
- 2015-09-25 EP EP15777814.3A patent/EP3202079B1/en active Active
- 2015-09-25 CN CN201580050978.1A patent/CN106716344B/zh active Active
- 2015-09-25 US US15/516,662 patent/US10389520B2/en active Active
- 2015-10-02 TW TW104132617A patent/TWI686722B/zh active
-
2019
- 2019-08-07 US US16/534,719 patent/US11032060B2/en active Active
-
2021
- 2021-06-04 US US17/339,689 patent/US11658799B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5987131A (en) * | 1997-08-18 | 1999-11-16 | Picturetel Corporation | Cryptographic key exchange using pre-computation |
CN1535451A (zh) * | 2001-03-24 | 2004-10-06 | 沃特黑尔公司 | 可证实的秘密洗牌及其对于电子表决的应用 |
CN1985458A (zh) * | 2003-11-16 | 2007-06-20 | M***闪存先锋有限公司 | 增强的自然蒙哥马利指数掩蔽 |
CN1619484A (zh) * | 2003-11-20 | 2005-05-25 | 国际商业机器公司 | 浮点单元及计算指数的方法 |
Non-Patent Citations (1)
Title |
---|
Highly secure cryptographic computations against side-channel attacks;Yirou He;《Electronic Theses and Dissertations》;20131231;第27-28页,3.3.1章,第45-47页 * |
Also Published As
Publication number | Publication date |
---|---|
US20170257210A1 (en) | 2017-09-07 |
CN106716344A (zh) | 2017-05-24 |
EP3202079B1 (en) | 2020-07-08 |
US20210391975A1 (en) | 2021-12-16 |
US11032060B2 (en) | 2021-06-08 |
TW201629829A (zh) | 2016-08-16 |
US10389520B2 (en) | 2019-08-20 |
TWI686722B (zh) | 2020-03-01 |
EP3202079A1 (en) | 2017-08-09 |
US11658799B2 (en) | 2023-05-23 |
WO2016053792A1 (en) | 2016-04-07 |
US20200076569A1 (en) | 2020-03-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106716344B (zh) | 用于密码运算的指数*** | |
EP3424175B1 (en) | Converting a boolean masked value to an arithmetically masked value for cryptographic operations | |
US11251935B2 (en) | Multiplicative blinding for cryptographic operations | |
US20230379133A1 (en) | Multiplicative masking for cryptographic operations | |
CN112955864A (zh) | 恒定时间的安全的算术到布尔掩码转换 | |
US11902432B2 (en) | System and method to optimize generation of coprime numbers in cryptographic applications | |
US20220085999A1 (en) | System and method to optimize decryption operations in cryptographic applications | |
US11418334B2 (en) | Protecting modular inversion operation from external monitoring attacks | |
US20220085998A1 (en) | System and method to generate prime numbers in cryptographic applications | |
US11101981B2 (en) | Generating a pseudorandom number based on a portion of shares used in a cryptographic operation | |
US11522669B2 (en) | Using cryptographic blinding for efficient use of Montgomery multiplication | |
Meng et al. | Cryptanalysis of RSA with a small parameter revisited |
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 |