CN101436932A - 一种抵抗简单电耗攻击的模幂计算方法 - Google Patents
一种抵抗简单电耗攻击的模幂计算方法 Download PDFInfo
- Publication number
- CN101436932A CN101436932A CNA2008101542327A CN200810154232A CN101436932A CN 101436932 A CN101436932 A CN 101436932A CN A2008101542327 A CNA2008101542327 A CN A2008101542327A CN 200810154232 A CN200810154232 A CN 200810154232A CN 101436932 A CN101436932 A CN 101436932A
- Authority
- CN
- China
- Prior art keywords
- mod
- mould
- index
- calculate
- centerdot
- 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.)
- Pending
Links
Images
Landscapes
- Complex Calculations (AREA)
Abstract
Description
技术领域
本发明属于公钥密码体制的安全执行领域,涉及集成电路安全技术。
背景技术
迄今为止,应用于各种电子设备上的公钥密码体制主要有两类。第一类,是基于大整数分解的密码体制,例如,RSA体制和Rabin-Williams体制。第二类,是基于循环群上离散对数的密码体制,例如,ElGamal体制和数字签名算法(DSA)。上述公钥密码体制大都需要在模整数意义上计算模幂xE(modn),这里x,E,和n都是整数。而在这些公钥密码体制中,总有部分模幂中的整数E需要严格保密。
现代密码设备的计算部件是集成电路芯片。芯片都是由晶体管门电路组成,电路在执行不同的程序操作时,电能消耗有所不同,这一点可以通过示波器观察。据此,Kocher等人提出了电耗分析攻击。电耗分析攻击的前提是电耗轨迹与设备执行的指令相关,并与处理的操作数的值有关。这样检查电耗轨迹能够暴露正在执行的指令和寄存器中数据的信息。当密码设备正在执行秘密密钥操作时,攻击者有可能推导出秘密密钥。研究表明,几乎所有的公钥密码系统都潜在存在电耗分析攻击问题,特别是,智能卡这样的需要外界提供电源的嵌入式设备受到电耗分析攻击的威胁尤为巨大。简单电耗分析(SPA)攻击是攻击者通过简单观测秘密密钥操作的电耗轨迹,直接推导出关于秘密密钥保密信息的技术。SPA攻击对攻击的环境和攻击者的设备要求不高,容易实现,因此,是实际应用中的主要安全威胁。在防止SPA攻击模幂计算的技术方面,主要从防护算法设计和保护电路设计两方面着手。由于设备上的公钥密码体制需要依靠具体执行算法实现,同时算法容易维护、更新、修改,因而算法防护措施得到广泛重视。防护算法的设计关键在模幂计算方法。目前,抵抗SPA攻击的模幂计算方法主要思路是程序执行路线固定化或随机化。典型的方法有:始终平方乘计算方法、Joye改进二进制计算方法、Clavier和Joye通用计算方法。需要指出的是,这些模幂计算方法常常都是以牺牲效率为代价的。此外,由于SPA攻击技术的发展,不少现有模幂计算方法已经不能很好抵抗SPA攻击。
发明内容
鉴于抵抗SPA攻击的模幂计算方法存在的问题,本发明目的是提供一种适合密码设备硬件或软件实现的抵抗SPA攻击的模幂计算方法。本发明提供的计算方法具有更强的抵抗SPA攻击的能力,同时,具有较快的计算速度。因此,特别适合于智能卡等计算资源受限的嵌入式设备应用。
本发明采用如下的技术方案:
一种抵抗SPA攻击的模幂计算方法,其特征是,当潜在受到SPA攻击的软件或硬件密码设备运行公钥体制时,在需要使用秘密密钥或保密参数为指数计算模幂情况下,具体执行下列步骤:
(1)读取底数x、指数E、和模n;
作为优选实施方式,本发明中的步骤(3)具体按照下列步骤执行:
3.1 将x赋值给S,并令C0=1;C1=1;C2=1;C3=1;
3.2 将S赋值给
S=S·S(modn);
3.4 计算C1=C1·C3(mod n);C2=C2·C3(mod n)。
本发明中的步骤(3)如果采用硬件实现,提供两个模乘法器,实现步骤如下:
3.1 将x赋值给寄存器S,开辟C0,C1,C2,C3四个寄存器,令C0=1;C1=1;C2=1;C3=1;
3.4 计算
3.5 计算C1=C1·C3(mod n);C2=C2·C3(mod n)。
本发明所提出的模幂计算方法是安全的,即攻击者不能通过其获取的计算方法执行信息推断出需要严格保密的指数E的任何1比特取值。与同类算法相比,本发明提出的计算方法各方面的特性非常适合于密码设备执行,具有更高的安全性,更快的计算速度。
附图说明
图1采用两个模乘法器实现固定从右向左二进制算法的硬件结构图;
图2本发明的抵抗SPA攻击的模幂计算方法流程总框图。
具体实施方式
在对本发明的技术方案做进一步说明之前,首先说明本发明所采用的符号。
B1 AND B2表示对等长的二进制串B1和B2按位进行逻辑与操作,例如,01011011AND11001101=01001001。
NOT B表示对二进制串B按位进行逻辑非操作,例如,NOT10101101=01010010。
B1‖B2表示对二进制串B1和B2进行连接操作,例如,01011011‖11001101=0101101111001101。
x·y(mod n)表示对整数x和y进行模乘操作,特殊情况当x=y时,为模平方操作,即x2(modn)。
sq(m)(x,n)表示对整数x做m次模n平方操作,例如,sq(3)(x,n)=(((x)2(mod n))2(modn))2(mod n)=x23(mod n)。
1表示全部位都为1的二进制串,即1=111...。
下面详细介绍本发明的抵抗SPA攻击的模幂计算方法。
公钥密码体制执行中,计算模幂xE(modn),这里x,E,和n都是整数,其中指数E需要严格保密。指数E的二进制表示为(bkbk-1...b1)2。模幂xE(modn)按如下步骤计算:
第2步,使用固定从右向左二进制算法计算模幂对 固定从右向左二进制算法描述如下:
输出:和存储于寄存器C1和C2中。
(1) S=x;C0=1;C1=1;C2=1;C3=1;
(2)
(3) for i=2 to
{
(3.1) S=S·S(mod n); /*模平方*/
(3.2) (mod n); /*模乘*/
}
(4)C1=C1·C3(mod n);C2=C2·C3(modn); /*模乘*/
若计算方法采用硬件实现,且提供两个模乘法器,固定从右向左二进制算法可做如下变形,其中,计算第(4)步一次循环的高效硬件结构如图1。
(1) S=x;C0=1;C1=1;C2=1;C3=1;
(2)
(3) S=S·S(mod n); /*模平方*/
{
(4.1) /*模乘*/
(4.2) S=S·S(modn); /*模平方*/
}
(6)C1=C1·C3(mod n);C2=C2·C3(mod n); /*模乘*/
第3步,使用如下公式通过模幂对计算模幂xE(modn)的值。
对本发明的模幂计算方法正确性阐述如下:
考虑上面计算模幂xE(mod n)的方法,可以发现对于任意的等长二进制串E1和E2有:
E1 AND(NOT E2)+E1AND E2=E1AND((NOTE2)+E2)=E1AND 1=E1和
(NOTE1)AND E2+E1AND E2=((NOTE1)+E1)AND E2=1 AND E2=E2。
因此,计算模幂和可以先分别计算出模幂 和再通过2次模乘得到 和 观察固定从右向左二进制算法(变形情况完全类似),第(1)至(3)步是经典从右向左二进制算法的扩展,可以同时计算出 和存储于寄存器C0,C1,C2,和C3之中。原因是当(NOT b1,i)AND(NOT b2,i)=1时,2·b2,i+b1,i=0;当b1,iAND(NOT b2,i)=1时,2·b2,i+b1,i=1;当(NOT b1,i)AND b2,i=1时,2·b2,i+b1,i=2;当b1,iAND b2,i=1时,2·b2,i+b1,i=3。因此,固定从右向左二进制算法中第(3.2)步将按照经典从右向左二进制算法的模式将各个应该计算的模乘正确存入对应寄存器并最终得到对应结果。固定从右向左二进制算法中第(4)步再通过2次模乘得到和存于寄存器C1和C2。
对模幂计算方法技术效果的详细说明如下:
一、模幂计算方法的SPA安全特性
(1)SPA攻击模型。对于任意模幂计算操作,设定攻击者可以通过对执行过程中的电耗轨迹进行分析得到计算方法的如下信息:
1)区分所有不同程序语句,例如,“if”条件语句。
2)区分模乘和模平方操作。
3)发现操作数完全相同的所有模乘和所有模平方操作,确定一个操作数为固定值的所有模乘操作。
(2)模幂计算方法的SPA安全特性。在以上SPA攻击模型下,前面提出的模幂计算方法是安全的,即攻击者不能通过其获取的计算方法执行信息推断出需要严格保密的指数E的任何1比特取值。
现在说明模幂计算方法在执行的过程中不会泄露严格保密的指数E的任何1比特取值。模幂计算方法的第1步不会泄露指数E的任何1比特取值,这是因为第1步仅仅是将指数E分成等长的两个二进制子串E1和E2。虽然攻击者可以区分所有不同程序语句,但不能得到指数E的任何1比特取值,因为在这一步所有程序行为都与指数E的具体取值无关。而模幂计算方法的第3步对于任何输入都是固定地做次模平方和1次模乘操作,因此,即使攻击者具有上述1)至3)的电耗分析攻击能力也不可能得到指数E的任何1比特取值。
剩下需要讨论的就是模幂计算方法的第2步的安全问题。观察固定从右向左二进制算法(变形情况完全类似)可以发现:
1)对于任何输入,固定从右向左二进制算法中的所有程序语句都与需要严格保密的指数E没有任何关系。因此,虽然攻击者可以区分所有不同程序语句,但并不能通过这一能力分析得出指数E的任何1比特取值。
2)在固定从右向左二进制算法中,有两个操作与指数E有关系,也就是模乘和模平方操作。因为在循环中任何(b1,i,b2,i)∈{(0,0),(0,1),(1,0),(1,1)}所以每次循环有且仅有1次模乘操作。这样对于任何指数E,模乘和模平方操作都以同样的间隔顺序执行。虽然攻击者可以区分模乘和模平方操作,但这一能力并不能帮助分析出指数E的任何1比特取值。
3)在固定从右向左二进制算法中,一次循环中的模乘操作可写成Cj=S·Cj(modn)(j=0,1,2,3)。在寄存器S中的值由前一次循环中的模平方操作更新,因此,寄存器S中是随机值。在寄存器Cj(j=0,1,2,3)中的值由相应以往循环中的模乘操作更新,因此,寄存器Cj(j=0,1,2,3)中也是随机值。由于寄存器S和Cj(j=0,1,2,3)中存储的都是随机值,所以攻击者即使能发现操作数完全相同的模乘和模平方操作,以及一个操作数为固定值的模乘操作,也不能依靠其分析得出指数E的任何1比特取值。
综合以上,得出在SPA攻击模型下,攻击者不能通过其获取的模幂计算方法执行信息推断出需要严格保密的指数E的任何1比特取值。
二、模幂计算方法的执行效率
在计算效率方面,按照评价此类计算方法的惯例,不区分模乘和模平方操作,统一看作模乘操作,其它操作相对于模乘操作计算开销可以忽略。由于在模幂计算方法的第2步中,任意(b1,i,b2,i)∈{(0,0),(0,1),(1,0),(1,1)}因而在每次循环中,模乘S·C0(mod n),S·C1(mod n),S·C2(mod n),和S·C3(mod n)操作之中必有一个执行。在模幂计算方法的第3步中,需要次模乘操作。因此,在平均和最差情况下总的模乘数量都为:次。在同时提供两个模乘法器的情况下,模幂计算方法的第2步中第(4.1)步和第(4.2)步并行执行,可以看作1次模乘,因此,在平均和最差情况下总的模乘数量都为:次。
在存储效率方面,模幂计算方法的开销都来源于第2步,很显然,需要5个寄存器,即S和Cj(j=0,1,2,3)。
三、同类算法比较
目前已经存在的抵抗SPA攻击的模幂计算方法主要包括:始终平方乘计算方法、Joye改进二进制计算方法、Clavier和Joye通用计算方法几种。可以将这些计算方法与本发明提出的计算方法做简要比较,如表1所示。在安全等级方面,都使用前面提到的SPA攻击模型加以评估。计算方法实施评估主要考查计算方法在具体实现时技术复杂程度。在计算效率方面,按照传统考虑平均和最差的情况,且都假定模幂指数的二进制表示长度为偶数k。在存储开销方面,主要考虑计算方法在做模幂计算时需要的寄存器数量,此外,还考虑需要始终安全存储的附加数据。
表1 目前典型相关计算方法特性比较
从表1可以看出,与同类计算方法比较,本发明提出的计算方法各方面的特性非常适合于密码设备执行。唯一不足之处就是,计算过程中寄存器需求略大,但在多数情况下,安全性,计算速度,和实施复杂度才是评价和选择抵抗SPA攻击的模幂计算方法主要考虑的因素。
下面举一个实例说明抵抗SPA攻击的模幂计算方法如何运行。根据目前对公钥密码系统的安全参数要求,模幂xE(mod n)的各个操作数常常为1024比特以上。但本实例只是为了说明计算方法如何运行,为使实例简单明了反映计算方法各技术特征,仅选择32比特的操作数。若指数E=3154091967=(10111011111111111001111110111111)2,而底数x和模n为任意一个32比特整数,这样为简单可以省略模n的书写。按照附图说明图2的步骤,计算方法运行过程如下:
第1步,将指数E按二进制等分为子串E1=(1011101111111111)2=48127和E2=(1001111110111111)2=40895,这里显然E=E1‖E2。
第2步,在二进制子串E1和E2为输入时,固定从右向左二进制算法变形情况的主要计算过程可以由表2描述。
第3步,通过模幂对 计算模幂
表2 当E1=(1011101111111111)2和E2=(1001111110111111)2时,固定从右向左二进制算法变形情况的运行过程
Claims (3)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2008101542327A CN101436932A (zh) | 2008-12-18 | 2008-12-18 | 一种抵抗简单电耗攻击的模幂计算方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2008101542327A CN101436932A (zh) | 2008-12-18 | 2008-12-18 | 一种抵抗简单电耗攻击的模幂计算方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101436932A true CN101436932A (zh) | 2009-05-20 |
Family
ID=40711170
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2008101542327A Pending CN101436932A (zh) | 2008-12-18 | 2008-12-18 | 一种抵抗简单电耗攻击的模幂计算方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101436932A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102193060A (zh) * | 2010-03-01 | 2011-09-21 | 英赛瑟库尔公司 | 用于测试集成电路对旁路分析的抵抗力的过程 |
CN103246494A (zh) * | 2013-05-27 | 2013-08-14 | 上海爱信诺航芯电子科技有限公司 | 一种抵抗能量分析和错误攻击的安全模幂计算方法 |
CN104468100A (zh) * | 2014-12-03 | 2015-03-25 | 天津大学 | 改进的滑动窗口模幂计算方法 |
CN105049208A (zh) * | 2015-06-15 | 2015-11-11 | 浙江金大科技有限公司 | 基于双重困难的数据加密方法 |
WO2018019233A1 (zh) * | 2016-07-26 | 2018-02-01 | 华为技术有限公司 | 一种运算方法和安全芯片 |
CN114245917A (zh) * | 2019-08-14 | 2022-03-25 | 日本电信电话株式会社 | 秘密归一化指数函数计算系统、秘密归一化指数函数计算装置、秘密归一化指数函数计算方法、秘密神经网络计算系统、秘密神经网络学习系统、程序 |
-
2008
- 2008-12-18 CN CNA2008101542327A patent/CN101436932A/zh active Pending
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102193060A (zh) * | 2010-03-01 | 2011-09-21 | 英赛瑟库尔公司 | 用于测试集成电路对旁路分析的抵抗力的过程 |
CN102193060B (zh) * | 2010-03-01 | 2015-05-06 | 英赛瑟库尔公司 | 用于测试集成电路设备的方法和系统 |
CN103246494A (zh) * | 2013-05-27 | 2013-08-14 | 上海爱信诺航芯电子科技有限公司 | 一种抵抗能量分析和错误攻击的安全模幂计算方法 |
CN104468100A (zh) * | 2014-12-03 | 2015-03-25 | 天津大学 | 改进的滑动窗口模幂计算方法 |
CN105049208A (zh) * | 2015-06-15 | 2015-11-11 | 浙江金大科技有限公司 | 基于双重困难的数据加密方法 |
CN105049208B (zh) * | 2015-06-15 | 2018-04-20 | 浙江工商大学 | 基于双重困难的数据加密方法 |
WO2018019233A1 (zh) * | 2016-07-26 | 2018-02-01 | 华为技术有限公司 | 一种运算方法和安全芯片 |
US10601577B2 (en) | 2016-07-26 | 2020-03-24 | Huawei Technologies Co., Ltd. | Operation method and security chip |
CN114245917A (zh) * | 2019-08-14 | 2022-03-25 | 日本电信电话株式会社 | 秘密归一化指数函数计算系统、秘密归一化指数函数计算装置、秘密归一化指数函数计算方法、秘密神经网络计算系统、秘密神经网络学习系统、程序 |
CN114245917B (zh) * | 2019-08-14 | 2023-12-05 | 日本电信电话株式会社 | 秘密归一化指数函数计算系统、装置、方法以及记录介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8402287B2 (en) | Protection against side channel attacks | |
Walter | MIST: An efficient, randomized exponentiation algorithm for resisting power analysis | |
CN101840325B (zh) | 椭圆曲线上的抗故障计算 | |
CN101436932A (zh) | 一种抵抗简单电耗攻击的模幂计算方法 | |
CN106487512A (zh) | 一种rsa密钥对快速生成系统及方法 | |
EP3930252A1 (en) | Countermeasures for side-channel attacks on protected sign and key exchange operations | |
CN106452789A (zh) | 一种多方位防侧信道攻击的签名方法 | |
TWI512610B (zh) | 利用模數的特殊形式之模組約化 | |
CN103164187B (zh) | Rsa模幂电路及rsa安全加密芯片 | |
Pan et al. | Side-channel fuzzy analysis-based AI model extraction attack with information-theoretic perspective in intelligent IoT | |
TW586086B (en) | Method and apparatus for protecting public key schemes from timing, power and fault attacks | |
CN107896142A (zh) | 一种执行模幂运算的方法及装置、计算机可读存储介质 | |
Vijayakumar et al. | Comparative study of hyperelliptic curve cryptosystem over prime field and its survey | |
Hedabou et al. | A comb method to render ECC resistant against Side Channel Attacks | |
CN101243388A (zh) | 用于在加密计算中执行求逆运算的电路结构和方法 | |
CN101436929B (zh) | 一种抵抗简单电耗攻击的点乘计算方法 | |
Elango et al. | High-Performance Multi-RNS-Assisted Concurrent RSA Cryptosystem Architectures | |
CN105743644B (zh) | 一种多变量二次方程的掩码加密装置 | |
Leadbitter et al. | Attacking DSA under a repeated bits assumption | |
Aidong et al. | Collision-based chosen-message simple power clustering attack algorithm | |
Joye et al. | A protected division algorithm | |
Gulen et al. | Side-Channel Resistant 2048-Bit RSA Implementation for Wireless Sensor Networks and Internet of Things | |
Stöttinger et al. | Procedures for securing ecc implementations against differential power analysis using reconfigurable architectures | |
Keke et al. | Efficient solution to secure ECC against side-channel attacks | |
Liu et al. | Elliptic Curve Scalar Multiplication Algorithm Based on Side Channel Atomic Block over GF (2^ m) |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Open date: 20090520 |