CN102193060A - 用于测试集成电路对旁路分析的抵抗力的过程 - Google Patents
用于测试集成电路对旁路分析的抵抗力的过程 Download PDFInfo
- Publication number
- CN102193060A CN102193060A CN2011100493999A CN201110049399A CN102193060A CN 102193060 A CN102193060 A CN 102193060A CN 2011100493999 A CN2011100493999 A CN 2011100493999A CN 201110049399 A CN201110049399 A CN 201110049399A CN 102193060 A CN102193060 A CN 102193060A
- Authority
- CN
- China
- Prior art keywords
- subclass
- integrated circuit
- value
- point
- hypothesis
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 104
- 230000008569 process Effects 0.000 title claims abstract description 90
- 238000012360 testing method Methods 0.000 title claims abstract description 80
- 238000004458 analytical method Methods 0.000 title description 11
- 230000036039 immunity Effects 0.000 title 1
- 238000012545 processing Methods 0.000 claims abstract description 20
- 238000004422 calculation algorithm Methods 0.000 claims description 99
- 230000015572 biosynthetic process Effects 0.000 claims description 9
- 230000008859 change Effects 0.000 claims description 8
- 230000005670 electromagnetic radiation Effects 0.000 claims description 6
- 238000005259 measurement Methods 0.000 claims description 5
- 238000004321 preservation Methods 0.000 claims description 3
- 230000000704 physical effect Effects 0.000 abstract 2
- 230000006870 function Effects 0.000 description 42
- 238000010998 test method Methods 0.000 description 32
- 239000000523 sample Substances 0.000 description 12
- 238000004364 calculation method Methods 0.000 description 11
- 238000005516 engineering process Methods 0.000 description 7
- 230000009467 reduction Effects 0.000 description 6
- RNAMYOYQYRYFQY-UHFFFAOYSA-N 2-(4,4-difluoropiperidin-1-yl)-6-methoxy-n-(1-propan-2-ylpiperidin-4-yl)-7-(3-pyrrolidin-1-ylpropoxy)quinazolin-4-amine Chemical compound N1=C(N2CCC(F)(F)CC2)N=C2C=C(OCCCN3CCCC3)C(OC)=CC2=C1NC1CCN(C(C)C)CC1 RNAMYOYQYRYFQY-UHFFFAOYSA-N 0.000 description 5
- 101100310497 Arabidopsis thaliana SMT2 gene Proteins 0.000 description 5
- 101100439738 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) CIC1 gene Proteins 0.000 description 5
- 230000000295 complement effect Effects 0.000 description 5
- 230000000694 effects Effects 0.000 description 5
- 101000716807 Arabidopsis thaliana Protein SCO1 homolog 1, mitochondrial Proteins 0.000 description 4
- 101001076715 Homo sapiens RNA-binding protein 39 Proteins 0.000 description 4
- 102100023361 SAP domain-containing ribonucleoprotein Human genes 0.000 description 4
- 238000011156 evaluation Methods 0.000 description 4
- 238000012795 verification Methods 0.000 description 4
- 102100029632 28S ribosomal protein S11, mitochondrial Human genes 0.000 description 3
- 101000716806 Arabidopsis thaliana Protein SCO1 homolog 2, mitochondrial Proteins 0.000 description 3
- 101150107557 SMT-1 gene Proteins 0.000 description 3
- 239000000872 buffer Substances 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 239000000047 product Substances 0.000 description 3
- 238000011160 research Methods 0.000 description 3
- 239000000758 substrate Substances 0.000 description 3
- 102100039435 C-X-C motif chemokine 17 Human genes 0.000 description 2
- 239000008000 CHES buffer Substances 0.000 description 2
- 101000889048 Homo sapiens C-X-C motif chemokine 17 Proteins 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 238000012512 characterization method Methods 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 235000013399 edible fruits Nutrition 0.000 description 2
- 230000001939 inductive effect Effects 0.000 description 2
- TVZRAEYQIKYCPH-UHFFFAOYSA-N 3-(trimethylsilyl)propane-1-sulfonic acid Chemical compound C[Si](C)(C)CCCS(O)(=O)=O TVZRAEYQIKYCPH-UHFFFAOYSA-N 0.000 description 1
- 102100023344 Centromere protein F Human genes 0.000 description 1
- 101001032016 Clostridium acetobutylicum (strain ATCC 824 / DSM 792 / JCM 1419 / LMG 5710 / VKM B-1787) Hydroxylamine reductase 1 Proteins 0.000 description 1
- 238000010521 absorption reaction Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 239000007795 chemical reaction product Substances 0.000 description 1
- 238000009795 derivation Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 239000003205 fragrance Substances 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 230000003071 parasitic effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000013341 scale-up Methods 0.000 description 1
- 238000007619 statistical method Methods 0.000 description 1
- 230000003319 supportive effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01R—MEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
- G01R31/00—Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
- G01R31/28—Testing of electronic circuits, e.g. by signal tracer
- G01R31/302—Contactless testing
- G01R31/303—Contactless testing of integrated circuits
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/26—Functional testing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
-
- 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/722—Modular multiplication
-
- 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]
-
- 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/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
- H04L9/3006—Public 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/302—Public 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
-
- 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/7238—Operand masking, i.e. message blinding, e.g. (A+r)**e mod n; k.(P+R)
-
- 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/7252—Randomisation as countermeasure against side channel attacks of operation order, e.g. starting to treat the exponent at a random place, or in a randomly chosen direction
-
- 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
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/04—Masking or blinding
- H04L2209/046—Masking or blinding of operations, operands or results of the operations
-
- 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
-
- 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/12—Details relating to cryptographic hardware or logic circuitry
-
- 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/26—Testing cryptographic entity, e.g. testing integrity of encryption key or encryption algorithm
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Mathematical Physics (AREA)
- Quality & Reliability (AREA)
- Computer Hardware Design (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Tests Of Electronic Circuits (AREA)
- Semiconductor Integrated Circuits (AREA)
- Complex Calculations (AREA)
- Storage Device Security (AREA)
- Error Detection And Correction (AREA)
Abstract
本发明涉及一种用于测试集成电路的过程,其包括:在所述集成电路执行乘法时收集物理特性的点集;将所述点集划分成横向点的多个子集;为每个子集计算所述物理特性的值的估计;以及通过使用所述物理特性的值的估计,将水平截断统计处理的步骤应用到所述横向点的子集,以便验证关于由所述集成电路操纵的变量的假设。
Description
技术领域
本发明的实施例涉及包括乘法功能的集成电路,该乘法功能被配置以便在字x的分量xi与字y的分量yi的多个基本乘法步骤中执行这两个二进制字x和y的乘法运算。
本发明的实施例特别涉及包括外部数据处理功能的集成电路,对该外部数据处理功能的执行至少包括:转到二进制字的至少第一乘法步骤或二进制字的第二乘法步骤的条件分支。该条件分支根据集成电路的私有数据而变化。
本发明的实施例特别涉及用于测试这样的集成电路的过程和系统。
本发明的实施例还涉及用于针对旁路分析而保护上述类型的集成电路的过程,并且涉及一种对策,其允许这样的集成电路通过包括根据本发明实施例的测试过程在内的鉴定或认证过程。
背景技术
当前,可以在芯片卡或其它嵌入式系统(诸如USB密钥(闪速驱动器)、解码器和游戏控制台,以及按照一般方式的任何受信平台模块TPM)中找到越来越高级的安全处理器。这些按照集成电路形式的处理器通常具有8比特复杂指令集计算机(CISC)核心,或者8、16或更多比特精简指令集计算机(RISC)核心,此时32比特处理器最为普及。一些集成电路还包括专用于一些密码计算的协处理器,尤其是用于不对称算法(诸如Rivest、Shamir和Adleman(RSA)、数字签名算法(DSA)、椭圆曲线数字签名算法(ECDSA)等)的算术加速器。
作为例子,图1示出了在便携式支持手持设备(HD)(例如塑料卡或任何其它支持装置)上布置的安全集成电路CIC1。该集成电路包括微处理器MPC、输入/输出电路IOC或接口通信电路、通过数据和地址总线而链接到微处理器的存储器M1、M2、M3,以及可选地用于密码计算或算术加速器的协处理器CP1,以及随机数发生器RGEN。存储器M1是含有易失性应用数据的随机访问存储器(RAM)类型的存储器。存储器M2是含有应用程序的非易失性存储器,例如EEPROM或闪速存储器。存储器M3是含有微处理器的操作系统的只读存储器(ROM)。
接口通信电路IOC可以是例如根据ISO/IEC 7816标准的接触类型(contact type)、例如根据ISO/IEC 14443A/B或ISO/IEC 13693标准的具有电感耦合的无接触类型(contactless type)、通过电耦合(UHF接口电路)起到无接触类型的作用,或者接触和无接触类型这二者(被称“combi(联合)”的集成电路)。图1中示为例子的接口电路IOC是电感耦合无接触接口电路,其配备有用于接收磁场FLD的天线线圈AC1。场FLD由本身配备有天线线圈AC2的读卡器RD来发射。电路IOC包括用于接收和解码由读卡器RD所发射的数据DTr的装置以及用于编码和发射由微处理器MPC所提供的数据DTx的装置。其还可以包括用于从磁场FLD提取集成电路的电源电压Vcc和时钟信号CK的装置。
在一些实施例中,集成电路CIC1可以被配置以便:基于使用秘密密钥d和密码模块n的模幂运算(modular exponentiation),通过密码函数(例如,密码RSA函数)来执行对发送到该集成电路的消息m的加密、解密或签名操作。
关于模幂运算的概述
模幂运算函数具有下面的数学表达:
md modulo(n)
m是输入数据,d是指数,并且n是除数。因此,模幂运算函数包括计算m的d次幂除以n的余数。
通过各种密码算法(诸如RSA算法、DSA算法、椭圆曲线迪菲霍尔曼(ECDH)、ECDSA、EIGamal等)来使用这样的函数。然后,数据m是用于加密的消息并且指数d是私有密钥。
可以使用下面的算法来实现这样的函数(根据Barrett方法的模幂运算):
取幂算法:
Input:
″m″and″n″are integers such that m<n
″d″is an exponent of v bits such as d=(dv-1 dv-2...d0)2
Output:a=md modulo n
Step 1:a=1
Step 2:Pre-calculations of the Barrett reduction
Step 3:for s from 1 to v do:
(Step 3A)a=BRED(LIM(a,a),n)
(Step 3B)if dv-s=1
then a=BRED(LIM(a,m),n)
Step 4:Return result a
其中,消息m和模n是整数(例如,1024个比特、2048个比特或更多),d是以2为基底所表示的v个比特的指数(dv-1,dv-2,...d0),“LIM”是大整数(large integers)的乘法函数(“长整数乘法”),并且“BRED”是应用于LIM乘法结果的根据Barrett方法的归约(reduction)函数(“Barrett归约”)。
在诸如图1中示出的集成电路中,可以由微处理器MP或由协处理器CP1来执行这样的模幂算法。替代地,算法的一些步骤可以由微处理器来执行,而其它步骤可以由协处理器(如果它仅是算术加速器的话)来执行。例如,微处理器可以将步骤3A和3B的LIM乘法委托给协处理器,或者根据情况可以将整个计算委托给协处理器。
另外,通常由集成电路借助于对二进制字x和y的乘法功能来执行a乘以a(步骤3A)或a乘以m(步骤3B)的LIM乘法。该乘法包括字x的分量xi(ai)与字y的分量yj(aj或mj)的基本乘法的多个步骤(i和j是迭代变量),以便获得级联的中间结果,从而形成该乘法的一般结果。
旁路分析的概述
为了验证由要商业化的安全集成电路所提供的安全级别,以工业级别来实施鉴定或认证测试。特别地,实施测试以便评估集成电路对于目的是发现集成电路的秘密数据的旁路分析的稳健性。
因此,取幂算法受到这样的控制。更特别地,模幂算法的旁路分析包括:在算法的步骤3执行期间,在该步骤的秩s(rank s)的每次迭代处,通过观察集成电路的“行为”来逐比特地推导出指数的值。该观察的目的是确定所考虑的步骤3是仅包括步骤3A还是包括步骤3A以及之后的步骤3B。
在第一种情况下,可以推导出指数的比特dv-s等于0。在第二种情况下,可以推导出比特dv-s等于1。通过对于s=1到s=v的每次迭代逐个步骤地进行,可以推断对于从1到v-1的s来说的指数的所有比特dv-s。例如,在取幂算法的第一迭代期间,运算结果:
LIM(a,a),LIM(a,m)
表明指数的第一比特是1,而运算结果:
LIM(a,a)LIM(a,a)
说明以下发现:指数的第一比特是0。
为了发现下一个指数比特,必须确定下面的运算的性质。例如,如果这些运算是:
LIM(a,a)LIM(a,m)LIM(a,a)LIM(a,m)
或者:
LIM(a,a)LIM(a,a)LIM(a,m)
则最后两个运算LIM(a,a)LIM(a,m)表明指数的第二比特是1。相反,在下面的运算之后:
LIM(a,a)LIM(a,m)LIM(a,a)LIM(a,a)
LIM(a,a)LIM(a,m)LIM(a,a)LIM(a,a)
第三运算LIM(a,a)表明指数的第二比特是0,因为其后面是LIM(a,a)而不是LIM(a,m)。
因而,为了确定指数比特,有必要解决关于由集成电路根据这些比特而执行的条件分支步骤的任何不确定性。对集成电路的电流消耗(currentconsumption)的观测通常允许清除这些不确定性。
基于电流消耗的观测的旁路分析的概述
电子组件通常包括根据执行的运算而进行不同切换的数以千计的逻辑门。门的切换造成了非常短持续时间(例如若干毫微秒)的可测量的电流消耗变化。值得注意的是,通过CMOS技术获得的集成电路包括由上拉PMOS晶体管和下拉NMOS晶体管(在它们的控制门端子上具有非常高的输入阻抗)构成的逻辑门。这些晶体管在其漏极和源极端子之间并不消耗电流(除了在其切换期间,对应于逻辑节点的切换到1或0)。因而,电流消耗取决于由微处理器操纵的数据以及各种外围装置:存储器、在数据或地址总线上流通的数据、密码加速器等。
特别地,大整数的乘法运算LIM具有电流消耗签名(currentconsumption signature),其是特有的并且与普通逻辑运算不同。而且,LIM(a,a)与LIM(a,m)的不同之处在于其包括计算平方(a2),而LIM(a,m)包括计算a与m的乘积,这可能导致两个不同的电流消耗签名。
基于对电流消耗的观测,常规的旁路测试过程使用单个能量分析(SPA)、差分能量分析(DPA)、相关能量分析(CPA)或Big Mac分析。
基于SPA的测试过程
在P.C.Kocher.的Timing attacks on implementations ofDiffeie-Hellman,RSA,DSS,and other systems,Advances in Cryptology-CRYPTO’96,volume 1109 of Lecture Notes in Computer Science,pages104-113,Springer 1996中公开了SPA。SPA正常仅需要对单个电流消耗曲线的获取。其目的是通过观测与密码计算相对应的消耗曲线的一部分来获得关于集成电路的活动的信息,因为电流曲线根据所执行的运算和所操纵的数据而变化。
首先,SPA允许标识由集成电路实施的计算和实现的算法。测试系统通过测量其电流消耗来捕获集成电路的一般电流消耗曲线。在集成电路执行模幂运算的情况下,如图2所示,可以在该一般电流消耗曲线内区分出在该算法的秩s的每次迭代时与LIM(a,a)和LIM(a,m)的执行相对应的消耗曲线。在该消耗曲线中,可以区分出曲线C0、C1、C3、...Cs′...。
每个消耗曲线Cs′由利用确定的采样频率所测量的消耗点来构成。每个消耗曲线对应于取幂算法的步骤3的第s个迭代。如果曲线Cs′对应于步骤3A的执行,则每个消耗曲线Cs′的秩s′与已经执行了取幂算法的步骤3的次数“s”(包括与所考虑的曲线Cs′相对应的执行)之间的关系是通过下面的关系式来给出的:
s′=s+H(dv-1,dv-2....dv-s-1)
或者如果曲线Cs′对应于步骤3B的执行,则通过以下关系式给出:
s′=s+H(dv-1,dv-2....dv-s-1)+1
因此,s′和s之间的关系是:在取幂计算的先前步骤期间已经使用的指数d的那部分的汉明权重H(dv-1,dv-2....dv-s-1)的函数。由于汉明权重表示的是所考虑的指数的那部分中在1处的比特数,因此,如果指数的已经使用的比特dv-1,dv-2....dv-s-1都等于零,则s′例如等于s或s+1。又例如,如果比特dv-1,dv-2....dv-s-1都等于1,则s′例如等于2s或2s+1。
“理想的”基于SPA的测试过程应当考虑仅通过对这些曲线的形成的观测来确定每个曲线Cs′是否与LIM(a,a)或LIM(a,m)的计算有关。根据上述推导方法,这可以允许推导出指数比特值。然而,为了防止这样的信息漏出(“泄漏”),最新一代的安全集成电路被配备有关于模糊(blur)其电流消耗的对策。
因而,基于SPA的测试过程通常允许标识由集成电路实施的计算和实现的算法,以及在集成电路的一般消耗曲线上,标记相对于模幂计算的曲线的部分。然而,它们并不允许对关于由集成电路所执行的确切运算的假设进行验证。
基于统计分析技术(诸如DPA或CPA)的过程因而被开发来标识在操纵指数期间的运算的性质。
基于DPA的测试过程
由P.C.Kocher,J.Jaffe和B.Jun.在Differential Power Analysis.Advances in Cryptology-CRYPTO’99,volume 1666 of Lecture Notes inComputer Science,pages 388-397,Springer,1999中所公开的以及从此密切研究的DPA由于对许多消耗曲线的获取而允许找到密码算法的秘密密钥。迄今为止最多研究的该技术的应用涉及DES算法,但是该技术还应用于加密、解密或签名的其它算法,并且特别应用于模幂运算。
DPA包括对电流消耗曲线的统计分类以便找到所要搜索的信息。其所基于的前提是:CMOS技术集成电路的消耗当比特在寄存器中或总线上从0切换到1时发生变化,并且当比特保持在0、保持在1或者从1切换到0(MOS晶体管的寄生电容放电)时不发生变化。替代地,可以认为CMOS技术集成电路的消耗当比特从0切换到1或从1切换到0时发生变化,并且当比特保持等于0或保持等于1时不发生变化。该第二假设允许使用常规函数“汉明距离”或“汉明权重”来开发消耗模型,该消耗模型并不要求为了可应用而要知道集成电路的结构。
DPA的目标在于放大该消耗差别(由于基于许多消耗曲线的统计处理),其目的是得出在所测量的消耗曲线与由公式表示的假设之间的相关性。
在这些消耗曲线的获取阶段期间,测试系统按照以下方式来将M个随机消息m0,m1,m2,...,mr...mM-1应用于集成电路:集成电路借助于其密码功能(其是隐含的或者要求向集成电路发送适当的加密命令)来计算经变换的消息。
如图3所示,因而收集了M个电流消耗曲线C(m0),C(m1),C(m2)...,C(mr),...,C(mM-1))。这些消耗曲线中的每一个均是通过由集成电路所执行的用于借助模幂运算函数来变换消息的运算而得出的,但是也可以通过集成电路可同时执行的其它运算来得出。
由于SPA,因此在这些消耗曲线内区分出了消耗曲线Cs′(m0),Cs′(m1),Cs′(m2)...,Cs′(mr),...,Cs′(mM-1)。这些消耗曲线对应于模幂算法的执行步骤。如上所指示的,秩s′的每个曲线对应于该算法的步骤3的第s次执行,并且对于M个消息之一,其涉及期望要确定数值的指数d的一个比特。
在处理阶段期间,测试系统在所涉及的计算步骤处估计集成电路的理论电流消耗HW(dv-s,mr)。对于所搜索的指数的比特ds的两个可能的值中的至少一个完成该消耗估计。测试系统例如被配置以便估计执行函数LIM(a,m)所意味着的理论消耗,并且将其用于在获取期间所使用的消息m的所有的值mr。该理论消耗例如通过以下方式来估计:计算在执行与所涉及的假设相对应的运算之后的期望结果的汉明权重。
基于电流消耗估计,测试系统将消耗曲线分成两组G0和G1:
G0={在所讨论的步骤s处,曲线Cs′(mr)对应于集成电路的低消耗},
G1={在所讨论的步骤s处,曲线Cs′(mr′)应当对应于集成电路的高消耗}。
然后,测试系统计算在组G0和G1的曲线的平均值之间的差,以便获得结果曲线或统计差分曲线。
在统计差分曲线中,如果消耗峰值出现在选择用于电流消耗估计的位置处,则测试系统推导出关于比特dv-s值的假设是正确的。因而,由模幂算法执行的运算在这里是LIM(a,m)。如果没有消耗峰值出现,则平均值差没有表明显著的消耗差(获得了可与噪声相比较的信号),并且测试系统可以考虑互补假设(dv-s=0,所执行的运算是LIM(a,a))被验证,或者以类似的方式来进行以便验证该假设。
基于DPA的测试过程具有的缺点是实现起来复杂并且要求捕获非常多数目的电流消耗曲线。而且,存在硬件对策(诸如提供时钟抖动,生成背景噪声等),这常常要求对用于进行获取的电流消耗曲线提供初步的信号处理步骤(同步、噪声减少等)。为了获得可靠结果而要获取的电流消耗曲线的数目还取决于所研究的集成电路的架构,并且可以是从成百上千的曲线到数以千计的曲线。
基于CPA的测试过程
E.Brier,C.Clavier,and F.Olivier.在Correlation Power Analysiswith a Leakage Model,Cryptographic Hardware and Embedded Systems-CHES 2004,volume 3156 of Leture Notes in Computer Science,pages16-29,Springer,2004中公开了CPA。该作者建议了一种线性电流消耗模型,该线性电流消耗模型假设比特从1到0的切换与比特从0到1的切换消耗相同的电流量。该作者进一步提出计算以下二者之间的相关性系数:一方面是形成所捕获的消耗曲线的所测量的消耗点,另一方面是根据线性消耗模型和根据关于集成电路所执行的运算的假定而计算出的估计消耗值。
图4和图5示出了应用于模幂算法的CPA的例子。在该例子中,测试系统看起来知道:在模幂算法的步骤3的第s次迭代处,在LIM(a,a)之后执行的运算(也就是,下面的迭代s+1的步骤3A)又一次是LIM(a,a),还是LIM(a,m)(也就是,秩s的迭代的步骤3B)。
如图4所示,测试系统获取与算法的相同迭代有关的M个电流消耗曲线Cs′(mr)(Cs′(m0),Cs′(m1),...,Cs′(mr),...,Cs′(mM)),其每一个对应于被发送到集成电路的消息mr(m0,m1...mr...mM-1)。每个曲线Cs′(mr)包括形成了点的第一子集的E个电流消耗点W0,W1,W2,...,Wi,...,WE-1。同一曲线Cs′(mr)的这些点与电流消耗估计相关联。
为此,电流消耗HW例如被建模如下:
“R”是集成电路的计算寄存器的参考状态,“D”是在所涉及的运算结束时寄存器的值,k1是比例系数,并且k2表示所消耗的与没有联系的电流和/或噪声。函数“H”是寄存器的值R和D之间的汉明距离,其是D和R之间的差异比特的数目(“”表示异或函数)。
根据简化的方法,寄存器的参考值R被选择成等于0,从而使得对所估计的电流消耗点的计算归结为计算所述运算的结果的汉明权重(在1处的比特数)。对于所涉及的假设,该结果例如是“a*m”。其结果是所估计的消耗点HW等于H(a*m)。因此,关于所执行的运算(例如LIM(a,m))的假设被变换成通过应用该线性消耗模型而计算的电流消耗估计HW。
如图4所示,然后,测试系统将形成每个曲线Cs′的不同电流消耗点Wk重新分组成垂直截断(vertical transversal)子集VEk(VE0,VE1,VE2,...,VEk,...VEE-1),其每一个包括了每个曲线Cs′的相同秩k的那些点Wk。每个垂直截断子集VEk通过垂直虚线来示出,并且其含有的点数等于用于进行分析的曲线的数目M。
所估计的电流消耗点HWk与垂直截断子集VEk的每个点Wk相关联。该估计的点对应于以上述方式计算的与该点所属的曲线Cs′(mr)相关联的消耗的估计。
对于每个垂直截断子集VEk,测试系统然后计算在所考虑的子集的点Wk与所估计的与之关联的消耗点HWk之间的线性垂直相关性系数VCk。该相关性系数例如等于:子集VEk的所测量的消耗点Wk和所估计的与这些所测量的消耗点相关联的消耗点HWk之间的协方差除以这两个点集的标准偏差的乘积。因而,与所评估的假设相对应的垂直相关性系数VCk与每个垂直截断子集VEk相关联。
如图5A、5B所示,测试系统由此获得一组垂直相关性系数VC0,VC1,...,VCk,...,VCE-1,其形成使假设无效的垂直相关性曲线VCC1或形成确认假设的垂直相关性曲线VCC2。曲线VCC2呈现一个或多个明显的相关性峰值(接近+1或-1的归一化协方差值),因而指示关于运算的假设是正确的。曲线VCC1没有呈现相关性峰值。如果获得了相关性曲线VCC2,则测试程序推断当获取曲线Cs′(m0)到Cs′(mM-1)时集成电路正在执行LIM(a,m),并且因此推断模幂运算指数的比特ds等于1。
基于Big Mac的测试过程
在Colin D.Walter.的Sliding Windows Succumbs to Big Mac Attack,Cryptographic Hardware and Embedded Systems-CHES 2001,volume2162 of Lecture Notes in Computer Science,pages 286-299,Springer,2001以及Colin D.Walter.的Longer keys may facilitate side channel attacks,Selected Areas in Cryptography,SAC 2003,volume 3006 of Lecture Notesin Computer Science,pages 42-57,Springer,2003中公开了Big Mac分析。该分析基于上述大整数乘法的原子性,即以下事实:两个大整数的乘法运算的执行包括对乘法的运算对象x和y的分量xi和yj的多个基本乘法xi*yj的执行。
基于Big Mac的测试过程包括以下步骤:
将与对于固定数据xi和变量索引j的基本乘法xi*yj相对应的消耗子曲线进行组合,然后
计算这些子曲线的点的平均值,以便获得结果子曲线,该结果子曲线按照比yj的特性更显而易见的方式表示了xi的特性,
形成具有平均值子曲线的字典,并且之后,
借助于该字典来标识从后面的乘法产生的新的子曲线,以便由此推断通过后面的乘法运算所处理的运算对象的值。
已知的测试过程的总结
如已经看到的,基于DPA和CPA的测试过程要求获取大量的电流消耗曲线。即使基于CPA的测试过程比基于DPA的测试过程更有效并且通常仅要求介于一百或数百个消耗曲线之间而不是对于DPA过程来说的成千到上万个曲线,用于实现基于CPA的测试过程的要获取的曲线的数目也不能认为是可忽略的。
另外,可以通过包括以下内容的对策来应对基于DPA或CPA的测试过程:使用随机字来掩蔽消息m和/或掩蔽指数d。事实上,已经看出,关于与LIM(a,m)相联系的消耗的假设要求消息m的知识以便计算其汉明权重。使用了随机数据的消息的掩蔽不再允许将所估计的消耗值与所测量的消耗值相关联以便计算加权系数。
最后,基于Big Mac的测试过程难以实现并且要求集成电路架构的良好知识,以便开发包括其实施所需要的模型的字典。所获得的结果已被认为是不令人满意的,并且该过程看起来不是已知的实际应用的主题。
发明内容
本发明的实施例涉及旁路测试过程,其特别而非排他性地可应用于模幂计算,该过程实现起来简单并且要求数目减少的电流消耗曲线或表示集成电路的活动的任何其它物理特性。
本发明的实施例还涉及可应用于集成电路的旁路测试过程,该集成电路执行两个二进制字x和y的乘法运算,包括字x和y的分量xi和分量yj的多个基本乘法步骤。
本发明的实施例还涉及被集成在集成电路的行业鉴定或认证过程中的旁路测试过程,以便验证集成电路对旁路攻击的稳健性以及其对信息泄漏的抵抗力。
本发明的实施例还涉及这样的对策,即,所述对策允许将集成电路看作适合在鉴定或认证过程(包括根据本发明实施例的测试过程)之后使用。
更特别地,本发明的实施例涉及用于测试集成电路设备的过程,其包括:在集成电路执行两个二进制字x和y的乘法运算期间,收集表示集成电路对二进制数据的切换的物理特性的点集,其中,所述两个二进制字x和y的乘法运算具有字x的分量xi与字y的分量yj的多个基本乘法步骤;将物理特性的点集划分成横向点(lateral point)的多个子集,每个子集对应于字x的秩i的分量xi与字y的秩j的分量yj的基本乘法运算;形成关于值x和/或值y的至少一个一般假设;对于横向点的每个子集,形成与所述一般假设相联系的关于值xi和/或值yj的特定假设;对于横向点的每个子集,计算对于随所述特定假设变化的物理特性的值的估计,并且将该估计归结于所述子集以及所述子集的点;以及使用与所述横向点的子集相关联的物理特性的值的估计,将水平截断统计处理的步骤应用于所述横向点的子集,以便确定所述一般假设是否正确。
在一个实施例中,水平截断统计处理的步骤包括:形成点的水平截断子集,其每一个包括属于横向点的不同子集的相同秩的那些点;通过为每个水平截断子集计算以下两方面之间的相关性系数来形成相关性系数的集合:一方面是子集的所述点,另一方面是与所述子集的每个点相关联的物理特性的值的特定估计;以及根据相关性系数的集合的简档(profile)来确定所述一般假设是否正确。
在一个实施例中,确定所述一般假设是否正确包括:在所述相关性系数的集合中搜索至少一个相关性峰值。
在一个实施例中,水平截断统计处理的步骤包括:根据被归结的物理特性的值的估计,通过将具有物理特性的高估计的点的子集分配到第一组并且将具有物理特性的低估计的点分配到第二组,从而将横向点的子集分类到第一组和第二组中;计算第一组的每个子集的相同秩的点的平均值,以便获得平均点的第一子集;计算第二组的点的每个子集的相同秩的点的平均值,以便获得平均点的第二子集;形成差分点的子集,其包括的差分点等于平均点的第一和第二子集的相同秩的点之间的差;以及根据差分点的子集的简档,确定所述一般假设是否正确。
在一个实施例中,确定所述一般假设是否正确包括:在差分点的子集中搜索所述物理特性的一个或多个峰值。
在一个实施例中,计算横向点的每个子集的物理特性的值的估计包括:根据与所述一般假设相联系的特定假设,计算随着与横向点的子集相关联的分量xi和/或分量yj的值而变化的数据的汉明权重。
在一个实施例中,分量xi和/或yj的值的数据函数等于以下值之一:xi、yj、xi*yj、α*xi+β*yj,α和β是加权系数。
在一个实施例中,所述物理特性是以下之一:集成电路的电流消耗、磁场吸收、集成电路的电磁辐射,或者它们的组合。
在一个实施例中,所述过程包括:如果统计处理步骤允许验证所述一般假设是正确的,则拒绝所述集成电路。
在一个实施例中,所述过程被应用于集成电路,所述集成电路包括:外部数据的处理功能,对其实施的执行包括转到二进制字的乘法的至少第一步骤或二进制字的乘法的第二步骤的至少一个条件分支步骤,所述条件分支步骤根据集成电路的私有数据而变化;以及乘法功能,该乘法功能被配置以便在用于进行相乘的字的分量xi和分量yj的多个基本乘法步骤中执行由所述条件分支指定的乘法步骤;并且该过程包括:将所述外部数据寻址到所述集成电路;在所述集成电路中,激活所述外部数据的处理功能;在所述集成电路执行根据所述条件分支而变化的乘法期间,收集物理特性的所述点集;形成关于所述私有数据的值以及(与所述私有数据的值有关的)进行乘法的二进制字x、y的值的至少一个一般假设;将所述点集划分成横向点的多个子集,每个子集对应于字x的秩i的分量xi与字y的秩j的分量yj的基本乘法运算;对于横向点的每个子集,形成与所述一般假设相联系的关于xi和/或yj的值的特定假设;对于横向点的每个子集,计算随所述特定假设而变化的物理特性的值的估计,并且将该估计归结于所述子集以及所述子集的那些点;以及通过使用与所述横向点的子集相关联的物理特性的值的估计,将水平截断统计处理的步骤应用于所述横向点的子集,以便确定关于所述私有数据的值的一般假设是否正确。
在一个实施例中,所述过程包括:如果统计处理步骤允许验证所述一般假设是正确的,则因没能保藏所述私有数据而拒绝所述集成电路。
在一个实施例中,该过程被应用于集成电路,其中,数据处理功能是模幂运算函数,所述私有数据是模幂运算函数的指数。
在一个实施例中,该过程被应用于集成电路,其中,数据处理功能是包括模幂运算函数的密码函数,所述私有数据是形成密码函数的私有密钥的所述模幂运算函数的指数。
本发明的实施例还涉及一种用于测试集成电路的系统,其包括:执行组件,该执行组件被配置以便使得所述集成电路执行两个二进制字x和y的乘法运算,该乘法运算包括字x的分量xi与字y的分量yj的多个基本乘法步骤;测量组件,该测量组件被配置以便在乘法运算的执行期间,测量和收集表示所述集成电路对二进制数据的切换的物理特性的点集;以及数据处理器,该数据处理器被配置以便:将所述物理特性的点集划分成横向点的多个子集,每个子集对应于字x的秩i的分量xi与字y的秩j的分量yj的基本乘法运算;形成关于值x和/或值y的至少一个一般假设;对于横向点的每个子集,形成与所述一般假设相联系的关于值xi和/或yj的至少一个特定假设;对于横向点的每个子集,计算根据所述特定假设而变化的物理特性的值的估计,并且将该估计归结于所述横向点的子集以及所述子集的那些点;以及通过使用被归结于所述横向点的物理特性的值的估计,将水平截断统计处理的步骤应用于所述横向点的子集,以便确定所述一般假设是否正确。
在一个实施例中,该系统被配置以便:如果统计处理步骤允许验证所述一般假设是正确的,则拒绝所述集成电路。
在一个实施例中,所述测量组件被配置以便测量以下之一:所述集成电路的电流消耗、磁场吸收、所述集成电路的电磁辐射,或者它们的组合。
附图说明
当结合附图阅读时,将更好地理解前述总结以及后面对本发明的详细描述。出于说明本发明的目的,附图中示出了当前优选的实施例。然而应当理解,本发明并不限于所示出的明确布置和手段。
下面将结合附图以非限制性方式来描述根据本发明的测试过程的实施例及其相应对策。
在附图中:
图1示出了安全集成电路的常规架构;
图2示出了在模幂运算的执行期间图1的集成电路的电流消耗曲线;
图3示出了用于进行常规的基于DPA或CPA的测试过程的电流消耗曲线;
图4示出了用于进行常规的基于CPA的测试过程的更详细的电流消耗曲线;
图5A和5B示意性地示出了由常规的基于CPA的测试过程所提供的相关性曲线;
图6示意性地示出了被设计来执行常规的乘法算法的电路;
图7示意性地示出了根据本发明的测试系统的实施例;
图8示出了用于实现根据本发明实施例的过程的包括由图7的测试系统所使用的电流消耗子曲线的电流消耗曲线;
图9是电流消耗子曲线的更详细的视图并且示出了根据本发明实施例的过程的步骤;
图10是与图9的子曲线的点相关联的物理特性的估计值的表格;
图11A和11B示意性地示出了通过根据本发明的测试过程的实施例所生成的两个相关性曲线;
图12A、12B和12C分别示出了通过根据本发明的测试过程的另一实施例所生成的两个平均值曲线和一个相关性曲线;
图13示意性地示出了被设计来执行根据本发明实施例的乘法算法的乘法器电路;以及
图14示出了包括根据本发明实施例的对策的安全集成电路架构。
具体实施方式
根据本发明实施例的测试过程的一般特征
根据本发明的测试过程的实施例是基于在上述取幂算法的步骤3A和3B的执行期间集成电路的电流消耗的详细检查,并且更特别地,基于在这些步骤3A和3B中的每一个期间,在LIM乘法的执行期间集成电路的电流消耗的观测。
根据本发明的测试过程的实施例是基于以下事实:在实践中,由于实现这些乘法的单元所接受的二进制字的尺寸(size),导致在单个步骤中并不完成大整数的乘法LIM(a,a)和LIM(a,m)。执行乘法的单元例如是微处理器、协处理器或算术加速器的算术和逻辑单元。计算单元的尺寸减小要求将大整数x和y“分割”成l个较小尺寸的分量的计算算法LIM(x,y),从而使得:
x=(xl-1 xl-2....x0)b
y=(yl-1 yl-2....y0)b
xl-1,xl-2....x0和yl-1,yl-2....y0是以“b”为基底的运算对象x和y的分量,每个分量包括N个比特,并且基底b等于2N,例如对于接受N=32个比特的运算对象的计算单元来说,b=232。
将运算对象分割成l个相等部分是使得:如果根据常用方法完成了乘法,则该乘法包括l2个基本乘法运算。下面的表1给出了对于典型的集成电路架构的例子而言,在运算对象x和y的尺寸G、其分量xi、yj的尺寸N、用于形成运算对象的分量xi、yj的数目l,以及对LIM函数的执行所包括的基本乘法xi*yj的数目l2之间的关系。
表1
因而,通过乘法算法LIM所执行的每个基本乘法运算xi*yj对应于电流消耗子曲线Ci,j,并且这些子曲线一起形成了取幂算法的步骤3A或步骤3B的电流消耗曲线。
根据本发明实施例的测试过程包括针对这样的子曲线的水平截断统计处理步骤,以便验证关于作为乘法的主体的那些变量的假设,并且因而验证关于导致执行在这些变量下的乘法运算的条件分支的假设。该过程仅要求通过向集成电路发送单个消息m来获取单个消耗曲线。
测试过程的实现的例子
下面将描述的测试过程的实施例的目的在于:确定在模幂计算期间集成电路所使用的秘密指数。集成电路例如是以上结合图1所描述的常规集成电路CIC1。模幂计算例如是根据以上已经描述的下面的算法来执行:
取幂算法:
Input:
″m″and″n″of integer values such that m<n
″d″an exponent of v bits such that d=(dv-1 dv-2....d0)2
Output:a=md modulo n
Step 1:a=1
Step 2:Pre-calculations of the Barrett reduction
Step 3:for s from 1 to v do:
(Step 3A)a=BRED(LIM(a,a),n)
(Step 3B)if dv-s=1
then a=BRED(LIM(a,m),n)
Step 4:Return result a
如上所指示的,找到指数d的比特要求确定:该算法的步骤3是否仅包括步骤3A,或者相反,包括步骤3A以及后面的步骤3B。从步骤3的第一次迭代(s=1)开始直到最后(s=v),根据本发明实施例的测试过程允许在单个电流消耗曲线的情况下,通过基于与介入(intervening)LIM乘法的执行的基本乘法相对应的消耗子曲线,确定由微处理器或协处理器所执行的运算是LIM(a,a)类型还是LIM(a,m)类型。
仍然作为该过程的实现例子,在下面还将假定:根据学术方法(也就是说,用于进行大整数相乘的最常用的方法)来执行在模幂算法的执行中介入的乘法运算LIM。该学术方法例如通过下面的算法来实现:
算法LIM(LIM乘法-学术方法):
Inputs:
x=(xl-1,xl-2,...x0)b
y=(yl-1,yl-2,...y0)b
Output:R=LIM(x,y)=x*y=(R2l-1 R2l-2....R0)b
Step 1:
For i from 0 to 2l-1 do:Ri=0
Step 2:
For i from 0 to l-1 do:
c←0
for j from 0 to l-1 do:
u|v←(Ri+1+xi*yj)+c
Ri+j←v and c←u
Ri+l←v
Step 3:Return(R)
其中“|”表示中间变量u和v的级联。
因而,涉及大整数x、y的分量xi、yj的l2个迭代计算步骤允许获得2l个N比特的中间结果R2l-1,R2l-2,....R0。它们被级联在输出寄存器中以便形成x与y的乘法的最后结果。
为了得到更好的想法,图6示出了为了根据以上算法执行两个运算对象x和y的乘法而提供的乘法器硬件SMT1的例子。乘法器架构处在该算法的模型上,并且乘法器SMT1因而包括:接收G个比特的运算对象x和y的输入缓冲器BX、BY;提供结果R的输出缓冲器BR;具有两个N比特的输入端和一个2N比特的输出端的乘法器MULT;具有一个2N比特的输入端、两个N比特的输入端以及一个2N比特的输出端的加法器AD;2N比特的输出寄存器,其包括两个N比特的级联的寄存器Ru和Rv,其每一个用于接收该算法的中间变量u和v;以及用于接收该算法的进位c的寄存器Rc。序列器SM1(例如状态机)向这些不同的元件提供控制信号t1,t2,...,t9,t10,...tn,并且被配置以便在收到命令STM(“开始乘法”)时执行该算法。
缓冲器BX包括l个N比特的寄存器,其每一个接收x的分量xl-1,xl-2,...,x0之一。缓冲器BY包括l个N比特的寄存器,其每一个接收y的分量yl-1,yl-2,....,y0之一。输出缓冲器BR包括2l个N比特的寄存器,其每一个接收x与y的乘法结果的分量R2l-1,R2l-2,....,R0之一。由序列器SM1控制的乘法器MX1、MX2允许将分量之一xi应用于乘法器的一个输入,并且将分量之一yj应用于乘法器的另一个输入,这提供了2N个比特的结果xi*yj。乘法器MULT的2N比特的输出端被链接到加法器AD的2N比特的输入端。加法器AD的2N比特的输出的前N个比特被应用于寄存器Ru的输入端,并且其它N个比特被应用于寄存器Rv的输入端。寄存器Rv的输出通过由序列器SM1所控制的解复用器DMX的居间作用而被应用于缓冲器BR的寄存器之一Ri+j的输入端。缓冲器BR的寄存器之一Ri+j的输出通过由序列器SM1所控制的复用器MX3的居间作用而被应用于加法器的N比特的输入端上。加法器的其它N比特的输入端被链接到寄存器Rc的输出端,寄存器Rc的输入端被链接到寄存器Ru的输出端。序列器SM1控制着用于执行该算法的这些不同寄存器的写入和读取。
在应用命令STM之前,取决于要执行的运算是LIM(a,a)还是LIM(a,m),用于对“a和a”或“a和m”进行相乘的数据被保存在缓冲器BX和BY中作为运算对象x和y。在第一种情况下,缓冲器BX的寄存器xi接收a的分量al-1,al-2,...,a0,并且缓冲器BY的寄存器yj接收相同的分量。在第二种情况下,缓冲器BX的寄存器xi接收a的分量al-1,al-2,...,a0,并且缓冲器BY的寄存器yj接收m的分量ml-1,ml-2,...,m0。
电流消耗子曲线的获取
图7示出了为实现根据本发明实施例的测试过程而提供的集成电路测试系统的例子。举例来说,将假定该测试系统被配置以便测试图1的无接触集成电路CIC1。
该测试系统包括:芯片卡读取器RD(在这里是无接触读取器);链接到测量设备MD(诸如数字示波器)的测量探头PB,以便获取集成电路的消耗曲线;以及计算组件,诸如个人计算机PC。计算机被链接到测量设备和卡读取器RD,并且实现测试程序。该测试程序特别地包括:用于与集成电路通信并且向其发送消息的程序、信号处理程序,以及用于实现根据本发明的过程的计算步骤的程序。
探头PB可以是电流探头(例如,置于集成电路的电源端Vcc的电阻),或者是通过信号放大器AMP而链接到测量设备的电磁探头。替代地,电流探头可以与电磁探头进行组合。电磁辐射电磁分析(EMA)的研究已经表明:由起作用的集成电路所发射的电磁辐射给出了关于集成电路中比特的切换的信息,类似于对所消耗的电流的测量。电磁探头的优点在于:它可以被置于期望分析其功能的电路部分的附近(例如,微处理器的核心附近或密码计算协处理器的核心附近)。
另外,在无接触集成电路的情况下,电感探头(其测量集成电路对读取器所发射的磁场的吸收)可以替换电流探头。这样的电感探头(例如天线线圈)本身可以与置于要研究的电路的部分附近的电磁场探头进行组合。
因而,在本申请中,使用术语“电流消耗”仅是出于简单起见,并且该术语表示任何这样的可测量物理特性,即,所述可测量物理特性的变化表示出在集成电路内或在所研究的集成电路的一部分内的二进制数据切换。可以在集成电路的端子处或在集成电路的研究部分附近测量物理特性。
然而,物理特性的采样频率必须足够高,以便对每个子曲线收集若干个点,例如在实践中,对每个子曲线收集在3和100个之间的点。然而,它可以被提供用来对每个子曲线收集高达数千个点。
如图8所示,在执行取幂算法的步骤3的每次迭代期间对电流消耗曲线Cs的精确分析展现了电流消耗子曲线Ci,j,其每一个对应于算法LIM的步骤3A或步骤3B的执行。通过执行常规SPA作为第一步骤来完成对于在一般电流消耗曲线内的子曲线组的标识。在测试程序的开发阶段期间手动地完成第一标识。通过向测试程序提供用于标记子曲线的时间标记点,可以自动地完成后续标识。
一旦已经完成了该第一步骤,则测试程序具有下面的子曲线:
C0,0=计算a0*a0或a0*m0的消耗子曲线
C0,1=计算a0*a1或a0*m1的消耗子曲线
C0,l-1=计算a0*al-1或a0*ml-1的消耗子曲线
C1,0=计算a1*a0或a1*m0的消耗子曲线
C1,1=计算a1*a1或a1*m1的消耗子曲线
C1,l-1=计算a1*al-1或a1*ml-1的消耗子曲线
Ci,0=计算ai*a0或ai*m0的消耗子曲线
Ci,1=计算ai*a1或ai*m1的消耗子曲线
C1,l-1=计算ai*al-1或ai*ml-1的消耗子曲线
Cl-1,0=计算al-1*a0或al-1*m0的消耗子曲线
Cl-1,1=计算al-1*a1或al-1*m1的消耗子曲线
Cl-1,l-1=计算al-1*al-1或al-1*ml-1的消耗子曲线
因而,测试程序具有l2个子曲线C0,0到Cl-1,l-1(参见表1)。然后,测试程序对子曲线的该集合应用DPA或CPA分析,以便确定由该算法执行的运算是ai*aj类型还是ai*mj类型。
因此,相比于常规的基于DPA或CPA的测试过程(其要求电流消耗曲线的叠加并且因此可被限定为“垂直的”),根据本发明的测试过程可被限定为“水平的”。
基于CPA的测试过程的实现
图9部分地示出了相对于乘法的执行,曲线Cs′的l2个电流消耗子曲线Ci,j(C0,0,C0,1,...,Ci,j,...,Cl-1,l-1)。
子曲线Ci,j用于确定模幂算法是请求该乘法算法执行运算a*a还是运算a*m,在乘法算法的级别上,这将导致执行l2个运算ai*aj或l2个运算ai*mj。
事实上,如果取幂算法的步骤3A调用算法LIM,则该算法的输入是:
x=a=(al-1 al-2....a0)b
y=a=(al-1 al-2....a0)b
并且该算法LIM的步骤2因而包括下面的计算:
-for j from 0 to l-1 do:
u|v←(Ri+j+aj*ai)+c
然而,如果在取幂算法的步骤3B调用算法LIM,则该算法的输入是:
x=a=(al-1 al-2....a0)b
y=m=(ml-1 ml-2....m0)b
并且该算法LIM的步骤2因而包括下面的计算:
-for j from 0 to l-1 do:
u|v←(Ri+j+aj*mi)+c
通过P个电流消耗点W0,i,j,W1,i,j,W2,i,j,...,Wk,i,j,...,WP-1,i,j来形成每个子曲线Ci,j,并且每个子曲线Ci,j形成点的子集。将注意到,这里考虑的点是将在下面的相关性计算中使用的那些点。事实上,在实践中,根据捕获电流消耗点的采样频率,每个子曲线可以包括比用于计算的点更多数目的点。
测试程序将相同子曲线Ci,j的点与涉及集成电路所执行的运算的至少一个假设相关联。该假设选自两个可能的假设,第一个假设是集成电路计算ai*aj,并且第二个假设是集成电路计算ai*mj。
遵循上述CPA的原理,测试程序然后使用线性电流消耗模型来将关于集成电路所执行的运算的假设变换成相应的估计电流消耗值,或者“相关性模型”。根据简化的方法,测试程序可以被配置以便:通过计算所考虑的运算的最重要变量的汉明权重(在1处的比特数)或最重要变量的组合的汉明权重(在1处的比特数),确定所估计的电流消耗值。
举例来说,假定测试程序尝试验证假设ai*mj。因而,使用下面的关系式来计算为该假设所估计的电流消耗的值HWi,j:
HWi,j=H(mj)
例如,还可以提供该模型的其它变量:
HWi,j=H(ai*mj)
还可以使用更复杂的模型,诸如:
HWi,j=H(α*ai+β*mj)
其中α和β是被设置为执行乘法的微处理器或协处理器的函数的加权系数(在其特征化(characterization)之后)。
可以注意到,模型HWi,j=H(ai)不能用于验证假设ai*mj,因为ai项出现在两个假设ai*aj和ai*mj中,并且因此不是有效的判别式。
对本领域技术人员将清楚地明显的是,任何其它统计上有效的模型均可以用于估计电消耗。特别地,可以使用更复杂的模型,其中,集成电路的计算寄存器的值不被认为是恒定的,而是取决于在先的运算以及电路的结构。
还可以注意到,测试程序能够基于向其提供的模型来计算所估计的消耗值HWi,j,因为变量a的所有分量ai以及消息m的所有分量mj是已知的。变量a的值是根据前面的迭代(对此,测试程序已经发现了指数d比特值)来推导出的,或者如果这是模幂算法的第一次迭代,则变量a的值等于1。m的值是已知的,因为消息是由测试程序生成和发送的。
然后,如图9所示,测试程序定义了点的水平截断子集HEk(HE0,HE1,HE2,...,HEk,...,HEP-1),其每一个包括从每个子曲线Ci,j取得的相同秩k的那些点Wk,i,j。每个水平截断子集HEk通过虚线在图9中示出,并且因而含有的点数等于基本乘法运算ai*mj的数目l2。
然后,所估计的电流消耗点HWi,j与水平截断子集HEk的每个点Wk,i,j相关联。这一估计的点对应于一种假设(该假设涉及与该点所属的曲线Ci,j有关的所估计的消耗),并且按照与上述相同的方式来计算这一估计的点。
然后,对于每个水平截断子集HEk,测试程序计算在以下二者之间的水平相关性系数HCk:所考虑的子集的点Wk,i,j,以及所估计的与其相关联的消耗点HWi,j。相关性系数HCk例如使用下面的关系式来计算:
或者:
也就是说,点Wk,i,j和点HWi,j之间的协方差通过它们的标准偏差σ(Wk,i,j)和σ(HWi,j)的乘积来归一化,因而HCk在-1和+1之间。
因此,如下面的表2所示(以及图10所示),与要验证的假设相对应的水平相关性系数HCk和每个水平截断子集HEk相关联。
表2
如图11A、11B所示,测试程序因而获得了水平相关性曲线HCC1(其确认了所研究的假设),或者水平相关性曲线HCC2(其使假设无效)。曲线HCC1或HCC2包括相关性系数HC0,HC1,...,HCk,...,HCP-1。曲线HCC1呈现一个或多个相关性峰值(接近于+1或-1的值),而曲线HCC2并不呈现相关性峰值。
对所研究的假设的确认包括例如测试程序对至少一个相关性峰值的搜索。搜索该相关性峰值包括搜索至少一个相关性系数,所述至少一个相关性系数的绝对值被包括在最小相关性值HCmin和1之间。该最小相关性值被选择得足够接近于1,从而使得存在相关性。
如果通过相关性峰值确认了假设(根据该假设,所执行的运算是ai*mj),则测试程序推导出:当捕获了曲线Cs′的子曲线C0,0至Cl-1,l-1时,集成电路正在执行运算ai*mj;并且推导出:模幂运算指数的比特ds是1(以上指示了s′和s之间的关系)。
可以注意到,与正确的假设相对应的相关性曲线HCC1没有对每个所测量的消耗点呈现出相关性峰值的这一事实表明:一些消耗点与所研究的运算的执行没有联系,而是与在执行算法的同时由集成电路进行的另一活动有联系。
另外,测试程序可以被配置以便:特别地,如果第一假设被证明是不正确的,那么还分析互补假设,也就是ai*aj,并且因而搜索至少一个相关性峰值以便判定这一其它假设是否正确。
替代地,测试程序可以被配置以便:如果相关性曲线没有确认第一假设,则考虑互补假设是正确的。得到证明的是:在测试程序开发以及电流消耗最佳估计器搜索的一段时间之后,测试程序变得可靠,从而使得不再必需验证这两个假设。
在一个实施例中,通过使用若干相关性模型,诸如H(mj)和H(ai*mj),还可以由测试程序来对假设a*m验证若干次。
在另一实施例中,可以通过参考后面的子曲线Cs′+1的点来完成以下验证:对于秩s′的子曲线Cs′来说,假设a*m是正确的。由于模幂算法的结构,先前迭代的结果被包括在后面的迭代的变量a中。在这种情况下,并且与以上已经指示的相反,项ai可以是用于估计电流消耗的有效判别式。
基于DPA的测试过程的实现
l2个水平消耗子曲线Ci,j还允许借助于DPA类型的技术来实现测试过程。
该分析要求获取步骤和处理步骤。获取步骤仅包括获取单个消耗曲线Cs′(包括子曲线Ci,j)。应当注意,在特定情况下,该获取可以与垂直获取(要求向集成电路发送若干消息)进行组合。不过,由于根据本发明的过程所提供的子曲线的数目很大(参见以上表1),相比于常规DPA或CPA所要求的垂直获取的数目来说,该垂直获取的数目是低的。
因此,通过将曲线Cs′的水平子曲线Ci,j认为是不需要被分类的独立曲线,测试程序对单个曲线Cs′(图9)执行DPA处理步骤。
通过使用与上述基于CPA的实现所使用的消耗模型类似的消耗模型,测试程序估计出与每个子曲线相对应的每个计算步骤的消耗。更特别地,测试程序使用子曲线分类函数f(ai,mj),例如:
f(ai,mj)=mj的一个或多个比特的汉明权重,或者
f(ai,mj)=ai*mj的一个或多个比特的汉明权重,或者
f(ai,mj)=ai的一个或多个比特的汉明权重以及mj的一个或多个比特的汉明权重。
然后,对于所考虑的假设,测试程序将所测量的消耗子曲线Ci,j归类成两组G0和G1:
-G0={在所考虑的步骤ai*mj处应当对应于集成电路的低消耗的子曲线Ci,j},
-G1={在所考虑的步骤ai*mj处应当对应于集成电路的高消耗的子曲线Ci,j}
例如,如图9所示,所示出的子曲线C0,0和Cl-1,l-1被归类在组G0中,而子曲线C0,1被归类在组G1中。
然后,测试程序可以计算:
(图12A中示意性示出的)第一平均值曲线M0,对其来说,秩k(M0W0,M0W1,...,M0Wk,...,M0WP-1)的每个点M0Wk等于组G0的所有子曲线Ci,j的相同秩k的点Wk,i,j的平均值,
(图12B中示意性示出的)第二平均值曲线M1,对其来说,秩k(M1W0,M1W1,...,M1Wk,...,M1WP-1)的每个点M1Wk等于组G1的所有子曲线Ci,j的相同秩k的点Wk,i,j的平均值,以及
(图12C中示意性示出的)统计差分曲线DM或平均值差曲线,对其来说,秩k(DW0,DW1,...,DWk,...,DWP-1)的每个点DWk等于平均值曲线M0和M1的相同秩k的点M0Wk和M1Wk的差。
如果在统计差分曲线DM中,一个或若干个电流消耗峰值出现在选择用于电流消耗估计的位置,则测试程序推导出关于指数比特值的假设是正确的。因此,由模幂算法所执行的运算是LIM(a,m)。如果没有出现消耗峰值,则测试程序可以认为互补假设(dv-s=0)被验证并且所执行的运算是LIM(a,a),或者按照类似的方式继续以便验证互补假设。
测试程序对消耗峰值的搜索(这在基于CPA的实施例的情况下等同于对相关性峰值的搜索)包括例如:对具有大于或等于最小消耗值DWmin的值的差分消耗点DWk的搜索。
本发明的实施例的其它应用
对本领域技术人员将清楚的是,如果算法包括了导致基于不同运算对象来执行乘法运算的条件分支,则根据本发明的测试过程的实施例可以应用于实现各种类型的这样的算法(密码或非密码,模幂运算或非模幂运算)的集成电路的测试。
从根本上说,本发明的实施例可以应用于实现了包括多个基本乘法xi*yj的任何类型的乘法算法(诸如COMBA或KARATSUBA乘法,涉及通过条件分支的居间作用而调用乘法算法的更高级别的算法)的集成电路的测试。本发明的实施例还可以应用于使用了包括归约函数的模乘法函数(例如像Montgomery函数、Quisquater函数或Sedlak’s ZDN乘法,其也包括多个基本乘法xi*yj)的集成电路的测试。
在所有这些应用中,本发明允许评估关于条件分支的假设,以便推导出条件分支所依赖的秘密数据,以及实现用于集成电路的鉴定或认证的测试系统。如果测试系统可以发现秘密,则因为没能保藏该秘密而拒绝该集成电路。
常规对策的效果
为了使得集成电路可以成功地完成常规的鉴定或认证过程,集成电路设计者通常向其中提供对策,其中最常用的对策如下:
i)指数d的随机化:
指数d被替换为随机指数d′,诸如
d′=d+K
ii)消息m和取幂模n的加法随机化:
所接收到的消息m被变换成消息m*,从而使得:
m*=m+r1*n modulo r2*n
也就是说:
m=m+u*n
并且u=r1 modulo r2,其中r1、r2是对于每个新的密码计算周期来说不同的随机数。
iii)消息m的乘法随机化:
所接收到的消息m被变换成消息m*,从而使得:
m*=re*m modulo m
其中r是随机数并且e是公共指数。
看起来对策i)对于根据本发明实施例的测试过程是无效的,并且仅允许应对垂直DPA和CPA。根据本发明的测试过程仅要求单个消耗曲线,并且允许发现指数d′。即使从初始指数d导出了指数d′,指数d′也可以与初始指数一样被用作秘密密钥以便执行模幂运算。
关于对策ii)和iii),同样看起来的是,根据本发明实施例的测试过程通过将关于随机化消息的值的那些假设引入到所述假设中而允许破坏这样的对策。这是由于以下事实:其基于与单个消息有关的单个消耗曲线的水平截断统计处理,而不是基于在与若干消息有关的若干消耗曲线上的统计垂直截断处理。这些对策使得要处理的假设的数目倍增,并且减慢了本发明的过程的执行,但并不妨碍确定集成电路执行了哪个运算,除非要处理的假设的数目太大。
合适的对策
本发明的实施例涉及提供一种对策,其允许集成电路被认为是能够在包括本发明实施例的过程的鉴定或认证测试之后使用。
这里建议通过对基本乘法xi*yj的执行顺序进行随机化,从而针对根据本发明实施例的水平分析来保护乘法算法。该随机化包括:对xi的处理顺序进行随机化并且同时对所选择的每个xi保持yj的处理顺序(部分随机化);或者对xi的处理顺序以及yj的处理顺序进行随机化(完全随机化)。
作为部分随机化的例子,下面的乘法序列:
xi*y0-xi*y1-xi*y3-xi*y4...xi*yl-1
例如(随机地)变为:
xi*y15 xi*y5 xi*y18 xi*yl-1...xi*y2
如果完成了随机化,则按照任意顺序来执行所有的乘法序列xi*yj。
在部分随机化情况下的随机化LIM算法的例子:
Inputs:
x=(xl-1,xl-2,...x0)b
y=(yl-1,yl-2,...y0)b
Output:R=LIM(x,y)=x*y=(R2l-1 R2l-2....R0)b
Step 1:
Calculate or receive a permutation vectorαsuch that
α=(αl-1,αl-2,...α0)
Step 2:
For i from 0 to 2l-1 do:Ri=0
Step 3:
For h from 0 to l-1 do:
i←αi;c←0
for j from 0 to l-1 do:
u|v←(Ri+j+xi*yj)+c
as long as c is different than 0,do:
u|v←Ri+j+c
Ri+j←v and c←u
j←j+1
Step 4:Return(R)
这样的随机化LIM算法可以通过软件或通过硬件电路来执行。
另外,这样的随机化可以与对分量xi、分量yj或这二者的加法或减法掩蔽进行组合,包括通过加法或通过减法来将分量xi和/或分量yj与随机或伪随机数R′或者与两个随机或伪随机数R′、R″进行组合。在这种情况下,在以上算法中的乘法步骤xi*yj例如变为:
u|v←(Ri+j+(xi-R′)*yj)+c+yj*R′
使用两个随机数R′和R″的另一个例子:
u|v←(Ri+j+(xi-R′)*(yj-R″)+c+
yj*R′xi*R″+yj*R′+R′*R″
图13示出了随机化乘法器硬件SMT2,其与结合图6所描述的乘法器SMT1的不同之处在于它包括序列器SM2(状态机、微编程序列器,...),序列器SM2被配置以便按照刚才已经描述的方式来执行乘法算法。也就是,通过随机化分量xi的处理顺序,或者通过随机化分量xi的处理顺序以及分量yj的处理顺序,利用这些分量的可选的加法或减法随机化。
置换向量(permutation vector)α在这里是随机字RDM,其由外部随机或伪随机字发生器RGEN提供给乘法器SMT2,但也可以由乘法器SMT2在内部生成。一个或多个其它的随机字可以被提供给乘法器,或者如果保持了分量xi、yj的随机化选项,则由乘法器生成一个或多个其它的随机字。
在一个实施例中,序列器SM2被配置以便提供两种作用模式:常规作用模式,其中它以常规方式来执行乘法;以及根据本发明而随机化的作用模式。如图13所示,借助于被应用于乘法器的配置信号MODE,或者借助于在乘法器的配置寄存器中所编程的标志MODE,作用模式被选择。
图14示出了在便携式支持HD(诸如塑料卡)上布置的并且被配备有根据本发明的对策装置的集成电路CIC2。该集成电路包括有与以上结合图1所描述的集成电路CIC1相同的单元,并且与其不同之处在于:协处理器CP1被替换为包括了图13的随机化乘法器SMT2的协处理器CP2。在另一个实施例中,协处理器CP1仅包括随机化乘法器SMT2,而没有被设计成执行随机化乘法(算术加速器)。在其它实施例中,协处理器CP1可以包括被配置以便完整地执行模幂运算函数(包括随机化乘法)的组件,或者甚至包括被配置以便完整地执行包括模幂运算函数的密码函数的组件。在又一个实施例中,根据本发明的随机化乘法由微处理器MP来执行。
将注意到,在本说明书和权利要求书中,术语“随机”或“伪随机”指示了评估器或测试过程未知的并且对于不知道集成电路的秘密的人来说是不可预测的数字。特别地,如果通过确定性函数(其使用秘密参数来生成数字)来生成该数字(并且因此该数字本质上不是随机的),则该数字在本申请的情况下被认为是“随机的”或“伪随机的”。
本领域技术人员将理解,在不背离本发明的广义的发明概念的情况下,可以对上述实施例进行改变。因此,应当理解,本发明不限于所公开的特定实施例,而是旨在涵盖在如所附权利要求所定义的本发明的精神和范围之内的那些修改。
Claims (16)
1.一种用于测试集成电路设备的过程,其包括:
在所述集成电路执行两个二进制字x和y的乘法运算期间,收集表示所述集成电路对二进制数据的切换的物理特性的点集,所述乘法运算包括字x的分量xi与字y的分量yj的多个基本乘法步骤;
将所述物理特性的点集划分成横向点的多个子集,每个子集对应于字x的秩i的分量xi与字y的秩j的分量yj的基本乘法运算;
形成关于字x的值和/或字y的值的至少一个一般假设;
对于横向点的每个子集,形成与所述一般假设相联系的关于分量xi和/或分量yj的值的特定假设;
对于横向点的每个子集,计算对于根据所述特定假设变化的物理特性的值的估计,并且将所述估计归结于所述子集以及所述子集的点;以及
使用与所述横向点的子集相关联的物理特性的值的估计,将水平截断统计处理的步骤应用于所述横向点的子集,以便确定所述一般假设是否正确。
2.根据权利要求1所述的过程,其中,所述水平截断统计处理的步骤包括:
形成点的水平截断子集,其每一个包括属于横向点的不同子集的相同秩的点;
通过为每个水平截断子集计算在所述子集的点和与所述子集的每个点相关联的物理特性的值的特定估计之间的相关性系数,形成相关性系数的集合;以及
根据所述相关性系数的集合的简档来确定所述一般假设是否正确。
3.根据权利要求2所述的过程,其中,确定所述一般假设是否正确包括:在所述相关性系数的集合中搜索至少一个相关性峰值。
4.根据权利要求1所述的过程,其中,所述水平截断统计处理的步骤包括:
通过将具有所述物理特性的高估计的点的子集分配到第一组并且将具有所述物理特性的低估计的点的子集分配到第二组,根据被归结的所述物理特性的值的估计,将所述横向点的子集归类在所述第一组和所述第二组中;
计算所述第一组的每个子集的相同秩的点的平均值,以便获得平均点的第一子集;
计算所述第二组的点的每个子集的相同秩的点的平均值,以便获得平均点的第二子集;
形成差分点的子集,其具有的差分点等于平均点的第一和第二子集的相同秩的点之间的差;以及
根据所述差分点的子集的简档来确定所述一般假设是否正确。
5.根据权利要求4所述的过程,其中,确定所述一般假设是否正确包括:在所述差分点的子集中搜索所述物理特性的一个或多个峰值。
6.根据权利要求1至5之一所述的过程,其中,为横向点的每个子集计算物理特性的值的估计包括:根据与所述一般假设相联系的特定假设,计算随着与所述横向点的子集相关联的分量xi和/或分量yj的值而变化的数据的汉明权重。
7.根据权利要求6所述的过程,其中,所述分量xi和/或yj的值的数据函数等于以下值之一:xi、yj、xi*yj、α*xi+β*yj,α和β是加权系数。
8.根据权利要求1至7之一所述的过程,其中,所述物理特性是以下之一:所述集成电路的电流消耗、磁场吸收,以及所述集成电路的电磁辐射,或者它们的组合。
9.根据权利要求1至8之一所述的过程,其进一步包括:如果所述统计处理步骤验证了所述一般假设是正确的,则拒绝所述集成电路。
10.根据权利要求1至8之一所述的过程,该过程被应用于集成电路,所述集成电路具有:外部数据的处理功能,对其的执行包括有转到二进制字x、y的乘法的至少第一步骤或二进制字x、y的乘法的第二步骤的条件分支,所述条件分支根据所述集成电路的私有数据而变化;以及乘法功能,所述乘法功能被配置以便在用于进行相乘的字x、y的分量xi和分量yj的多个基本乘法步骤中执行所述条件分支所指定的乘法步骤;所述过程进一步包括:
将所述外部数据寻址到所述集成电路;
在所述集成电路中,激活所述外部数据的处理功能;
在所述集成电路执行作为所述条件分支的函数的乘法期间,收集表示所述集成电路对二进制数据的切换的物理特性的点集;
形成关于以下内容的至少一个一般假设:所述私有数据的值,以及与所述私有数据的值有关的进行乘法的二进制字x、y的值;
将所述点集划分成横向点的多个子集,每个子集对应于字x的秩i的分量xi与字y的秩j的分量yj的基本乘法运算;
对于横向点的每个子集,形成与所述一般假设相联系的关于分量xi和/或分量yj的值的特定假设;
对于横向点的每个子集,计算根据所述特定假设而变化的所述物理特性的值的估计,并且将该估计归结于所述子集以及所述子集的点;以及
通过使用与所述横向点的子集相关联的所述物理特性的值的估计,将水平截断统计处理的步骤应用于所述横向点的子集,以便确定关于所述私有数据的值的所述一般假设是否正确。
11.根据权利要求10所述的过程,其包括:如果所述统计处理步骤验证了所述一般假设是正确的,则因为没能保藏秘密数据而拒绝所述集成电路。
12.根据权利要求10和11之一所述的过程,所述过程被应用于集成电路,其中,所述数据处理功能是模幂运算函数,所述私有数据是所述模幂运算函数的指数。
13.根据权利要求10和11之一所述的过程,所述过程被应用于集成电路,其中,所述数据处理功能是包括模幂运算函数的密码函数,所述私有数据是形成所述密码函数的私有密钥的所述模幂运算函数的指数。
14.一种用于测试集成电路的系统,其包括:
执行组件,所述执行组件被配置以便使得所述集成电路执行两个二进制字x和y的乘法运算,所述乘法运算包括字x的分量xi与字y的分量yj的多个基本乘法步骤;
测量组件,所述测量组件被配置以便在所述乘法运算的执行期间,测量和收集表示所述集成电路对二进制数据的切换的物理特性的点集;以及
数据处理器,所述数据处理器被配置以便:
将所述物理特性的点集划分成横向点的多个子集,每个子集对应于字x的秩i的分量xi与字y的秩j的分量yj的基本乘法运算;
形成关于字x的值和/或字y的值的至少一个一般假设;
对于横向点的每个子集,形成与所述一般假设相联系的关于分量xi和/或分量yj的值的至少一个特定假设;
对于横向点的每个子集,计算随着所述特定假设而变化的所述物理特性的值的估计,并且将该估计归结于所述横向点的子集以及所述子集的点;以及
通过使用被归结于所述横向点的所述物理特性的值的估计,将水平截断统计处理的步骤应用于所述横向点的子集,以便确定所述一般假设是否正确。
15.根据权利要求14所述的系统,其中,所述系统被配置以便:如果所述统计处理步骤验证了所述一般假设是正确的,则拒绝所述集成电路。
16.根据权利要求14和15之一所述的系统,其中,所述测量组件被配置以便测量以下之一:所述集成电路的电流消耗、磁场吸收,以及所述集成电路的电磁辐射,或者它们的组合。
Applications Claiming Priority (8)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR1000834A FR2956933A1 (fr) | 2010-03-01 | 2010-03-01 | Circuit integre protege contre une analyse par canal auxiliaire horizontale |
FR1000833 | 2010-03-01 | ||
FR1000834 | 2010-03-01 | ||
FR1000833A FR2956932B1 (fr) | 2010-03-01 | 2010-03-01 | Procede de test de la resistance d'un circuit integre a une analyse par canal auxiliaire |
US12/750,846 | 2010-03-31 | ||
US12/750,953 | 2010-03-31 | ||
US12/750,953 US8572406B2 (en) | 2010-03-31 | 2010-03-31 | Integrated circuit protected against horizontal side channel analysis |
US12/750,846 US8457919B2 (en) | 2010-03-31 | 2010-03-31 | Process for testing the resistance of an integrated circuit to a side channel analysis |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102193060A true CN102193060A (zh) | 2011-09-21 |
CN102193060B CN102193060B (zh) | 2015-05-06 |
Family
ID=44023087
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110049399.9A Active CN102193060B (zh) | 2010-03-01 | 2011-03-01 | 用于测试集成电路设备的方法和系统 |
CN2011100497307A Pending CN102193773A (zh) | 2010-03-01 | 2011-03-01 | 针对水平旁路分析而受到保护的集成电路 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2011100497307A Pending CN102193773A (zh) | 2010-03-01 | 2011-03-01 | 针对水平旁路分析而受到保护的集成电路 |
Country Status (4)
Country | Link |
---|---|
EP (2) | EP2365659B1 (zh) |
KR (2) | KR20110099185A (zh) |
CN (2) | CN102193060B (zh) |
CA (2) | CA2732651C (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107102919A (zh) * | 2016-02-22 | 2017-08-29 | 埃沙尔公司 | 测试电路对侧信道分析的抵抗力的方法 |
CN107123638A (zh) * | 2016-02-25 | 2017-09-01 | 意法半导体(鲁塞)公司 | 用于集成电路的电磁干扰设备和方法 |
CN109428707A (zh) * | 2017-08-21 | 2019-03-05 | 埃沙尔公司 | 测试电路对侧信道分析的抵抗的方法 |
CN109629109A (zh) * | 2019-01-28 | 2019-04-16 | 深圳全棉时代科技有限公司 | 一种纯棉非织造物制品的制备方法 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9959429B2 (en) | 2013-03-15 | 2018-05-01 | Cryptography Research, Inc. | Asymmetrically masked multiplication |
EP3264311B1 (en) * | 2016-06-28 | 2021-01-13 | Eshard | A protection method and device against a side-channel analysis |
FR3095709B1 (fr) * | 2019-05-03 | 2021-09-17 | Commissariat Energie Atomique | Procédé et système de masquage pour la cryptographie |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1296224A1 (en) * | 2001-09-20 | 2003-03-26 | Hitachi, Ltd. | Elliptic scalar multiplication system |
JP2004304800A (ja) * | 2003-03-28 | 2004-10-28 | Sharp Corp | データ処理装置におけるサイドチャネル攻撃防止 |
CN1806224A (zh) * | 2003-06-12 | 2006-07-19 | 皇家飞利浦电子股份有限公司 | 用于防御微分功率分析攻击的方法 |
US20080091975A1 (en) * | 2006-10-17 | 2008-04-17 | Konstantin Kladko | Method and system for side-channel testing a computing device and for improving resistance of a computing device to side-channel attacks |
CN101183945A (zh) * | 2007-12-20 | 2008-05-21 | 上海交通大学 | 基于旁路算子的椭圆曲线抗旁路攻击方法 |
CN101197668A (zh) * | 2007-12-06 | 2008-06-11 | 上海交通大学 | 基于随机化带符号标量乘法的椭圆曲线抗旁路攻击方法 |
CN101213513A (zh) * | 2005-06-29 | 2008-07-02 | 皇家飞利浦电子股份有限公司 | 保护数据处理装置免受密码攻击或分析的设备和方法 |
CN101436932A (zh) * | 2008-12-18 | 2009-05-20 | 天津大学 | 一种抵抗简单电耗攻击的模幂计算方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3926532B2 (ja) * | 2000-03-16 | 2007-06-06 | 株式会社日立製作所 | 情報処理装置、情報処理方法、及びカード部材 |
FR2818846B1 (fr) * | 2000-12-22 | 2004-03-05 | Gemplus Card Int | Procede de contre-mesure dans un composant electronique mettant en oeuvre un algorithme de cryptographie |
US7113593B2 (en) * | 2001-03-06 | 2006-09-26 | Ericsson Inc. | Recursive cryptoaccelerator and recursive VHDL design of logic circuits |
FR2853425B1 (fr) * | 2003-04-07 | 2006-01-13 | Atmel Corp | Sequence de multiplication efficace pour operandes a grands nombres entiers plus larges que le materiel multiplicateur |
US8028015B2 (en) * | 2007-08-10 | 2011-09-27 | Inside Contactless S.A. | Method and system for large number multiplication |
-
2011
- 2011-02-21 EP EP11001428.9A patent/EP2365659B1/fr active Active
- 2011-02-23 EP EP11001491.7A patent/EP2363975B1/fr active Active
- 2011-02-24 CA CA2732651A patent/CA2732651C/fr active Active
- 2011-02-24 CA CA2732444A patent/CA2732444C/fr active Active
- 2011-03-01 CN CN201110049399.9A patent/CN102193060B/zh active Active
- 2011-03-01 CN CN2011100497307A patent/CN102193773A/zh active Pending
- 2011-03-02 KR KR1020110018646A patent/KR20110099185A/ko not_active Application Discontinuation
- 2011-03-02 KR KR1020110018644A patent/KR101792650B1/ko active IP Right Grant
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1296224A1 (en) * | 2001-09-20 | 2003-03-26 | Hitachi, Ltd. | Elliptic scalar multiplication system |
JP2004304800A (ja) * | 2003-03-28 | 2004-10-28 | Sharp Corp | データ処理装置におけるサイドチャネル攻撃防止 |
CN1806224A (zh) * | 2003-06-12 | 2006-07-19 | 皇家飞利浦电子股份有限公司 | 用于防御微分功率分析攻击的方法 |
CN101213513A (zh) * | 2005-06-29 | 2008-07-02 | 皇家飞利浦电子股份有限公司 | 保护数据处理装置免受密码攻击或分析的设备和方法 |
US20080091975A1 (en) * | 2006-10-17 | 2008-04-17 | Konstantin Kladko | Method and system for side-channel testing a computing device and for improving resistance of a computing device to side-channel attacks |
CN101197668A (zh) * | 2007-12-06 | 2008-06-11 | 上海交通大学 | 基于随机化带符号标量乘法的椭圆曲线抗旁路攻击方法 |
CN101183945A (zh) * | 2007-12-20 | 2008-05-21 | 上海交通大学 | 基于旁路算子的椭圆曲线抗旁路攻击方法 |
CN101436932A (zh) * | 2008-12-18 | 2009-05-20 | 天津大学 | 一种抵抗简单电耗攻击的模幂计算方法 |
Non-Patent Citations (3)
Title |
---|
邓高明等: "针对密码芯片的电磁频域模板分析攻击", 《计算机学报》 * |
陈开颜等: "集成电路芯片信息泄露旁路分析模型", 《微计算机信息》 * |
陈志敏: "安全芯片旁路功耗分析及抗攻击措施", 《中国优秀博硕士学位论文全文数据库(硕士)信息科技辑》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107102919A (zh) * | 2016-02-22 | 2017-08-29 | 埃沙尔公司 | 测试电路对侧信道分析的抵抗力的方法 |
CN107123638A (zh) * | 2016-02-25 | 2017-09-01 | 意法半导体(鲁塞)公司 | 用于集成电路的电磁干扰设备和方法 |
CN107123638B (zh) * | 2016-02-25 | 2019-06-21 | 意法半导体(鲁塞)公司 | 用于集成电路的电磁干扰设备和方法 |
CN109428707A (zh) * | 2017-08-21 | 2019-03-05 | 埃沙尔公司 | 测试电路对侧信道分析的抵抗的方法 |
CN109629109A (zh) * | 2019-01-28 | 2019-04-16 | 深圳全棉时代科技有限公司 | 一种纯棉非织造物制品的制备方法 |
Also Published As
Publication number | Publication date |
---|---|
EP2365659A1 (fr) | 2011-09-14 |
EP2363975B1 (fr) | 2020-01-01 |
EP2365659B1 (fr) | 2017-04-12 |
CN102193060B (zh) | 2015-05-06 |
CA2732651A1 (fr) | 2011-09-01 |
CA2732651C (fr) | 2017-05-30 |
KR20110099185A (ko) | 2011-09-07 |
EP2363975A1 (fr) | 2011-09-07 |
CA2732444A1 (fr) | 2011-09-01 |
KR101792650B1 (ko) | 2017-11-02 |
CN102193773A (zh) | 2011-09-21 |
CA2732444C (fr) | 2020-02-18 |
KR20110099184A (ko) | 2011-09-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3220305B1 (en) | Method of testing the resistance of a circuit to a side channel analysis of second order or more | |
US8572406B2 (en) | Integrated circuit protected against horizontal side channel analysis | |
US8457919B2 (en) | Process for testing the resistance of an integrated circuit to a side channel analysis | |
JP6707024B2 (ja) | 非対称マスク済み乗算 | |
CN102193060B (zh) | 用于测试集成电路设备的方法和系统 | |
EP2211265B1 (en) | Elliptic curve arithmetic processing unit and elliptic curve arithmetic processing program and method | |
EP3447509B1 (en) | Method of testing the resistance of a circuit to a side channel analysis | |
Kabin et al. | Horizontal DPA attacks against ECC: impact of implemented field multiplication formula | |
Kabin et al. | Breaking a fully Balanced ASIC Coprocessor Implementing Complete Addition Formulas on Weierstrass Elliptic Curves | |
US7742595B2 (en) | Cryptographic method protected against covert channel type attacks | |
US20090175455A1 (en) | Method of securing a calculation of an exponentiation or a multiplication by a scalar in an electronic device | |
US7639796B2 (en) | Method for secure integer division or modular reduction against hidden channel attacks | |
JP2008525834A (ja) | 暗号用の安全かつコンパクトな累乗方法 | |
Gierlichs | DPA-Resistance Without Routing Constraints? –A Cautionary Note About MDPL Security– | |
Bock | SCA resistent implementation of the Montgomery kP-algorithm | |
Fournaris et al. | Crt rsa hardware architecture with fault and simple power attack countermeasures | |
Walter et al. | Data dependent power use in multipliers | |
Repka et al. | Improving CPA attack against DSA and ECDSA | |
Alpirez Bock | SCA resistent implementation of the Montgomery kP-algorithm | |
Barron | RSA Power Analysis Obfuscation: A Dynamic FPGA Architecture |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address |
Address after: Fa Guomeileyi Patentee after: Weimei Anshi Co., Ltd Address before: AIKE, Provence, France Patentee before: Inside Secure |
|
CP03 | Change of name, title or address | ||
TR01 | Transfer of patent right |
Effective date of registration: 20200330 Address after: California, USA Patentee after: Rambus Inc. Address before: Fa Guomeileyi Patentee before: Weimei Anshi Co., Ltd |
|
TR01 | Transfer of patent right |