用于测试集成电路对旁路分析的抵抗力的过程的制作方法

文档序号:6355253阅读:306来源:国知局
专利名称:用于测试集成电路对旁路分析的抵抗力的过程的制作方法
技术领域
本发明的实施例涉及包括乘法功能的集成电路,该乘法功能被配置以便在字χ的分量&与字y的分量Ji的多个基本乘法步骤中执行这两个二进制字χ和y的乘法运算。本发明的实施例特别涉及包括外部数据处理功能的集成电路,对该外部数据处理功能的执行至少包括转到二进制字的至少第一乘法步骤或二进制字的第二乘法步骤的条件分支。该条件分支根据集成电路的私有数据而变化。本发明的实施例特别涉及用于测试这样的集成电路的过程和系统。本发明的实施例还涉及用于针对旁路分析而保护上述类型的集成电路的过程,并且涉及一种对策,其允许这样的集成电路通过包括根据本发明实施例的测试过程在内的鉴定或认证过程。
背景技术
当前,可以在芯片卡或其它嵌入式系统(诸如USB密钥(闪速驱动器)、解码器和游戏控制台,以及按照一般方式的任何受信平台模块TPM)中找到越来越高级的安全处理器。这些按照集成电路形式的处理器通常具有8比特复杂指令集计算机(CISC)核心,或者 8、16或更多比特精简指令集计算机(RISC)核心,此时32比特处理器最为普及。一些集成电路还包括专用于一些密码计算的协处理器,尤其是用于不对称算法(诸如Rivest、Shamir 和Adleman(RSA)、数字签名算法(DSA)、椭圆曲线数字签名算法(ECDSA)等)的算术加速
ο作为例子,图1示出了在便携式支持手持设备(HD)(例如塑料卡或任何其它支持装置)上布置的安全集成电路CIC1。该集成电路包括微处理器MPC、输入/输出电路IOC 或接口通信电路、通过数据和地址总线而链接到微处理器的存储器Ml、M2、M3,以及可选地用于密码计算或算术加速器的协处理器CP1,以及随机数发生器RGEN。存储器Ml是含有易失性应用数据的随机访问存储器(RAM)类型的存储器。存储器M2是含有应用程序的非易失性存储器,例如EEPROM或闪速存储器。存储器M3是含有微处理器的操作系统的只读存储器(ROM)。接口通信电路IOC可以是例如根据IS0/IEC 7816标准的接触类型(contact type)、例如根据IS0/IEC 14443A/B或IS0/IEC 13693标准的具有电感耦合的无接触类型 (contactless type)、通过电耦合(UHF接口电路)起到无接触类型的作用,或者接触和无接触类型这二者(被称“combi (联合)”的集成电路)。图1中示为例子的接口电路IOC是电感耦合无接触接口电路,其配备有用于接收磁场FLD的天线线圈AC1。场FLD由本身配备有天线线圈AC2的读卡器RD来发射。电路IOC包括用于接收和解码由读卡器RD所发射的数据DTr的装置以及用于编码和发射由微处理器MPC所提供的数据DTx的装置。其还可以包括用于从磁场FLD提取集成电路的电源电压Vcc和时钟信号CK的装置。在一些实施例中,集成电路CICl可以被配置以便基于使用秘密密钥d和密码模块η的模幂运算(modular exponentiation),通过密码函数(例如,密码RSA函数)来执行
5对发送到该集成电路的消息m的加密、解密或签名操作。关于樽幂运算的概述模幂运算函数具有下面的数学表达md modulo (η)m是输入数据,d是指数,并且η是除数。因此,模幂运算函数包括计算m的d次幂除以η的余数。通过各种密码算法(诸如RSA算法、DSA算法、椭圆曲线迪菲霍尔曼(Ε⑶H)、 ECDSA、EIGamal等)来使用这样的函数。然后,数据m是用于加密的消息并且指数d是私有密钥。
可以使用下面的算法来实现这样的函数(根据Barrett方法的模幂运算) 取幂算法 Input
“m" and" η" are integers such that m < η “d〃 is an exponent of ν bits such as d = (Ci^1 dv_2. . . d0)2Output :a = md modulo ηStep 1 :a = 1 Step 2 :Pre_calculations of the Barrett reduction Step 3 :for s from 1 to ν do :
(Step 3A)a = BRED (LIM(a, a),η) (Step 3B)if dv_s = 1
then a = BRED (LIM(a, m),η)
Step 4 Return result a
其中,消息m和模η是整数(例如,1024个比特、2048个比特或更多),d是以2为基底所表示的ν个比特的指数(cU,dv_2,.··(!。),“LIM”是大整数(large integers)的乘法函数(“长整数乘法”),并且“BRED”是应用于LIM乘法结果的根据Barrett方法的归约 (reduction)函数(“Barrett 归约”)。在诸如图1中示出的集成电路中,可以由微处理器MP或由协处理器CPl来执行这样的模幂算法。替代地,算法的一些步骤可以由微处理器来执行,而其它步骤可以由协处理器(如果它仅是算术加速器的话)来执行。例如,微处理器可以将步骤3A和;3B的LIM乘法委托给协处理器,或者根据情况可以将整个计算委托给协处理器。另外,通常由集成电路借助于对二进制字χ和y的乘法功能来执行a乘以a(步骤 3A)或a乘以m(步骤的LIM乘法。该乘法包括字χ的分量Xi (a,)与字y的分量Caj 或mp的基本乘法的多个步骤(i和j是迭代变量),以便获得级联的中间结果,从而形成该乘法的一般结果。旁路分析的概述为了验证由要商业化的安全集成电路所提供的安全级别,以工业级别来实施鉴定或认证测试。特别地,实施测试以便评估集成电路对于目的是发现集成电路的秘密数据的旁路分析的稳健性。因此,取幂算法受到这样的控制。更特别地,模幂算法的旁路分析包括在算法的

6步骤3执行期间,在该步骤的秩s(rank s)的每次迭代处,通过观察集成电路的“行为”来逐比特地推导出指数的值。该观察的目的是确定所考虑的步骤3是仅包括步骤3A还是包括步骤3A以及之后的步骤:3B。在第一种情况下,可以推导出指数的比特dv_s等于0。在第二种情况下,可以推导出比特dv_s等于1。通过对于s = 1到s = ν的每次迭代逐个步骤地进行,可以推断对于从 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, pagesl04_113, Springer 1996 中公开了 SPA。SPA 正常仅需要对单个电流消耗曲线的获取。其目的是通过观测与密码计算相对应的消耗曲线的一部分来获得关于集成电路的活动的信息,因为电流曲线根据所执行的运算和所操纵的数据而变化。首先,SPA允许标识由集成电路实施的计算和实现的算法。测试系统通过测量其电流消耗来捕获集成电路的一般电流消耗曲线。在集成电路执行模幂运算的情况下,如图2所示,可以在该一般电流消耗曲线内区分出在该算法的秩s的每次迭代时与LIM(a, a)和LIM(a,m)的执行相对应的消耗曲线。在该消耗曲线中,可以区分出曲线Q、Cp
C^ > · · · Cg' · · · O每个消耗曲线Cs,由利用确定的采样频率所测量的消耗点来构成。每个消耗曲线对应于取幂算法的步骤3的第s个迭代。如果曲线Cs,对应于步骤3Α的执行,则每个消耗曲线Cs,的秩s,与已经执行了取幂算法的步骤3的次数“s”(包括与所考虑的曲线Cs,相对应的执行)之间的关系是通过下面的关系式来给出的s' = s+H(dv-l, dv~2____dv-s-l)或者如果曲线Cs,对应于步骤;3B的执行,则通过以下关系式给出s' = s+H(dv-l, dv~2____dv-s-l)+1因此,s'和s之间的关系是在取幂计算的先前步骤期间已经使用的指数d的那部分的汉明权重IKcU,dv_2.... cUJ的函数。由于汉明权重表示的是所考虑的指数的那部分中在1处的比特数,因此,如果指数的已经使用的比特cU,dv_2. · · · CU1都等于零,则 S'例如等于s或s+1。又例如,如果比特Clrt,dv_2. . . . Clv^都等于1,则s'例如等于Is或 2s+l。“理想的”基于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包括对电流消耗曲线的统计分类以便找到所要搜索的信息。其所基于的前提是CM0S技术集成电路的消耗当比特在寄存器中或总线上从O切换到1时发生变化,并且当比特保持在0、保持在1或者从1切换到0 (M0S晶体管的寄生电容放电)时不发生变化。 替代地,可以认为CMOS技术集成电路的消耗当比特从0切换到1或从1切换到0时发生变化,并且当比特保持等于0或保持等于1时不发生变化。该第二假设允许使用常规函数“汉明距离”或“汉明权重”来开发消耗模型,该消耗模型并不要求为了可应用而要知道集成电路的结构。DPA的目标在于放大该消耗差别(由于基于许多消耗曲线的统计处理),其目的是得出在所测量的消耗曲线与由公式表示的假设之间的相关性。在这些消耗曲线的获取阶段期间,测试系统按照以下方式来将M个随机消息!V Hi1, m2, . . . , m, . . Him^1应用于集成电路集成电路借助于其密码功能(其是隐含的或者要求向集成电路发送适当的加密命令)来计算经变换的消息。如图3所示,因而收集了 M个电流消耗曲线C(mQ),C(Hi1), C(m2). . . , C(mr),..., COll))。这些消耗曲线中的每一个均是通过由集成电路所执行的用于借助模幂运算函数来变换消息的运算而得出的,但是也可以通过集成电路可同时执行的其它运算来得出。由于SPA,因此在这些消耗曲线内区分出了消耗曲线Cs ‘ (m0),Cs ‘ (Hi1), Cs' (m2)...,Cs' (mr),...,Cs' Ov1)。这些消耗曲线对应于模幂算法的执行步骤。如上所指示的,秩s'的每个曲线对应于该算法的步骤3的第s次执行,并且对于M个消息之一, 其涉及期望要确定数值的指数d的一个比特。在处理阶段期间,测试系统在所涉及的计算步骤处估计集成电路的理论电流消耗 HW(dv_s,mr)。对于所搜索的指数的比特ds的两个可能的值中的至少一个完成该消耗估计。 测试系统例如被配置以便估计执行函数LIM(a,m)所意味着的理论消耗,并且将其用于在获取期间所使用的消息m的所有的值πν。该理论消耗例如通过以下方式来估计计算在执行与所涉及的假设相对应的运算之后的期望结果的汉明权重。基于电流消耗估计,测试系统将消耗曲线分成两组GO和Gl GO = {在所讨论的步骤s处,曲线Cs' (mr)对应于集成电路的低消耗},Gl = {在所讨论的步骤s处,曲线Cs' (mr,)应当对应于集成电路的高消耗}。然后,测试系统计算在组GO和Gl的曲线的平均值之间的差,以便获得结果曲线或统计差分曲线。在统计差分曲线中,如果消耗峰值出现在选择用于电流消耗估计的位置处,则测试系统推导出关于比特dv_s值的假设是正确的。因而,由模幂算法执行的运算在这里是 LIM(a,m)。如果没有消耗峰值出现,则平均值差没有表明显著的消耗差(获得了可与噪声相比较的信号),并且测试系统可以考虑互补假设(dv_s = 0,所执行的运算是LIM(a,a))被验证,或者以类似的方式来进行以便验证该假设。基于DPA的测试过程具有的缺点是实现起来复杂并且要求捕获非常多数目的电流消耗曲线。而且,存在硬件对策(诸如提供时钟抖动,生成背景噪声等),这常常要求对用于进行获取的电流消耗曲线提供初步的信号处理步骤(同步、噪声减少等)。为了获得可靠结果而要获取的电流消耗曲线的数目还取决于所研究的集成电路的架构,并且可以是从成百上千的曲线到数以千计的曲线。基于CPA的测试过程E. Brier, C. Clavier, and F. Olivier.在 Correlation Power Analysiswith aLeakage Model, Cryptographic Hardware and Embedded Systems-CHES 2004, volume 3156 of Leture Notes in Computer Science, pagesl6_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' On1),...,Cs' (mr),...,Cs' (mM)),其每一个对应于被发送到集成电路的消息HV Ov Hl1... HV... HIsh)。每个曲线Cs' OiO包括形成了点的第一子集的E个电流消耗点WQ,W1, W2, ...,Wi, ...,WE_lt)同一曲线Cs' (mr)的这些点与电流消耗估计相关联。为此,电流消耗冊例如被建模如下W = kl*H(D 十 R) + k2“R”是集成电路的计算寄存器的参考状态,“D”是在所涉及的运算结束时寄存器的值,kl是比例系数,并且k2表示所消耗的与H(D十R)没有联系的电流和/或噪声。函数 “H”是寄存器的值R和D之间的汉明距离,其是D和R之间的差异比特的数目(“十”表示异或函数)。根据简化的方法,寄存器的参考值R被选择成等于0,从而使得对所估计的电流消耗点的计算归结为计算所述运算的结果的汉明权重(在1处的比特数)。对于所涉及的假设,该结果例如是“a * m”。其结果是所估计的消耗点冊等于H(a * m)。因此,关于所执行的运算(例如LIM(a,m))的假设被变换成通过应用该线性消耗模型而计算的电流消耗估计冊。如图4所示,然后,测试系统将形成每个曲线Cs,的不同电流消耗点Wk重新分组成垂直截断(vertical transversal)子集 VEk (VE。,VE1, VE2, · · ·,VEk, . . · VEeJ,其每一个包括了每个曲线Cs,的相同秩k的那些点Wk。每个垂直截断子集通过垂直虚线来示出,并且其含有的点数等于用于进行分析的曲线的数目M。所估计的电流消耗点HWk与垂直截断子集VEk的每个点Wk相关联。该估计的点对应于以上述方式计算的与该点所属的曲线Cs' (mr)相关联的消耗的估计。对于每个垂直截断子集VEk,测试系统然后计算在所考虑的子集的点Wk与所估计的与之关联的消耗点HWk之间的线性垂直相关性系数VCk。该相关性系数例如等于子集 VEk的所测量的消耗点Wk和所估计的与这些所测量的消耗点相关联的消耗点HWk之间的协方差除以这两个点集的标准偏差的乘积。因而,与所评估的假设相对应的垂直相关性系数 VCk与每个垂直截断子集VEk相关联。如图5A、5B所示,测试系统由此获得一组垂直相关性系数VCQ,VC1, ... , VCk,..., VCV1,其形成使假设无效的垂直相关性曲线VCCl或形成确认假设的垂直相关性曲线VCC2。 曲线VCC2呈现一个或多个明显的相关性峰值(接近+1或-1的归一化协方差值),因而指示关于运算的假设是正确的。曲线VCCl没有呈现相关性峰值。如果获得了相关性曲线VCC2,则测试程序推断当获取曲线Cs, (HItl)到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分析。该分析基于上述大整数乘法的原子性,即以下事实两个大整数的乘法运算的执行包括对乘法的运算对象χ和y的分量&和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的多个基本乘法步骤。本发明的实施例还涉及被集成在集成电路的行业鉴定或认证过程中的旁路测试
11过程,以便验证集成电路对旁路攻击的稳健性以及其对信息泄漏的抵抗力。本发明的实施例还涉及这样的对策,S卩,所述对策允许将集成电路看作适合在鉴定或认证过程(包括根据本发明实施例的测试过程)之后使用。更特别地,本发明的实施例涉及用于测试集成电路设备的过程,其包括在集成电路执行两个二进制字X和y的乘法运算期间,收集表示集成电路对二进制数据的切换的物理特性的点集,其中,所述两个二进制字χ和y的乘法运算具有字χ的分量&与字y的分量 Yj的多个基本乘法步骤;将物理特性的点集划分成横向点(lateral point)的多个子集,每个子集对应于字χ的秩i的分量Xi与字y的秩j的分量Yj的基本乘法运算;形成关于值χ 和/或值y的至少一个一般假设;对于横向点的每个子集,形成与所述一般假设相联系的关于值Xi和/或值Yj的特定假设;对于横向点的每个子集,计算对于随所述特定假设变化的物理特性的值的估计,并且将该估计归结于所述子集以及所述子集的点;以及使用与所述横向点的子集相关联的物理特性的值的估计,将水平截断统计处理的步骤应用于所述横向点的子集,以便确定所述一般假设是否正确。在一个实施例中,水平截断统计处理的步骤包括形成点的水平截断子集,其每一个包括属于横向点的不同子集的相同秩的那些点;通过为每个水平截断子集计算以下两方面之间的相关性系数来形成相关性系数的集合一方面是子集的所述点,另一方面是与所述子集的每个点相关联的物理特性的值的特定估计;以及根据相关性系数的集合的简档 (profile)来确定所述一般假设是否正确。在一个实施例中,确定所述一般假设是否正确包括在所述相关性系数的集合中搜索至少一个相关性峰值。在一个实施例中,水平截断统计处理的步骤包括根据被归结的物理特性的值的估计,通过将具有物理特性的高估计的点的子集分配到第一组并且将具有物理特性的低估计的点分配到第二组,从而将横向点的子集分类到第一组和第二组中;计算第一组的每个子集的相同秩的点的平均值,以便获得平均点的第一子集;计算第二组的点的每个子集的相同秩的点的平均值,以便获得平均点的第二子集;形成差分点的子集,其包括的差分点等于平均点的第一和第二子集的相同秩的点之间的差;以及根据差分点的子集的简档,确定所述一般假设是否正确。在一个实施例中,确定所述一般假设是否正确包括在差分点的子集中搜索所述物理特性的一个或多个峰值。在一个实施例中,计算横向点的每个子集的物理特性的值的估计包括根据与所述一般假设相联系的特定假设,计算随着与横向点的子集相关联的分量Xi和/或分量Yj的值而变化的数据的汉明权重。在一个实施例中,分量Xi和/或Yj的值的数据函数等于以下值之一 Xi、Yj> Xi女 Yj> α * Xi+β * Yj, α和β是加权系数。在一个实施例中,所述物理特性是以下之一集成电路的电流消耗、磁场吸收、集成电路的电磁辐射,或者它们的组合。在一个实施例中,所述过程包括如果统计处理步骤允许验证所述一般假设是正确的,则拒绝所述集成电路。在一个实施例中,所述过程被应用于集成电路,所述集成电路包括外部数据的处理功能,对其实施的执行包括转到二进制字的乘法的至少第一步骤或二进制字的乘法的第二步骤的至少一个条件分支步骤,所述条件分支步骤根据集成电路的私有数据而变化;以及乘法功能,该乘法功能被配置以便在用于进行相乘的字的分量\和分量~的多个基本乘法步骤中执行由所述条件分支指定的乘法步骤;并且该过程包括将所述外部数据寻址到所述集成电路;在所述集成电路中,激活所述外部数据的处理功能;在所述集成电路执行根据所述条件分支而变化的乘法期间,收集物理特性的所述点集;形成关于所述私有数据的值以及(与所述私有数据的值有关的)进行乘法的二进制字X、y的值的至少一个一般假设;将所述点集划分成横向点的多个子集,每个子集对应于字X的秩i的分量&与字y的秩j的分量Yj的基本乘法运算;对于横向点的每个子集,形成与所述一般假设相联系的关于&和/或Yj的值的特定假设;对于横向点的每个子集,计算随所述特定假设而变化的物理特性的值的估计,并且将该估计归结于所述子集以及所述子集的那些点;以及通过使用与所述横向点的子集相关联的物理特性的值的估计,将水平截断统计处理的步骤应用于所述横向点的子集,以便确定关于所述私有数据的值的一般假设是否正确。在一个实施例中,所述过程包括如果统计处理步骤允许验证所述一般假设是正确的,则因没能保藏所述私有数据而拒绝所述集成电路。在一个实施例中,该过程被应用于集成电路,其中,数据处理功能是模幂运算函数,所述私有数据是模幂运算函数的指数。在一个实施例中,该过程被应用于集成电路,其中,数据处理功能是包括模幂运算函数的密码函数,所述私有数据是形成密码函数的私有密钥的所述模幂运算函数的指数。本发明的实施例还涉及一种用于测试集成电路的系统,其包括执行组件,该执行组件被配置以便使得所述集成电路执行两个二进制字χ和y的乘法运算,该乘法运算包括字χ的分量Xi与字y的分量Yj的多个基本乘法步骤;测量组件,该测量组件被配置以便在乘法运算的执行期间,测量和收集表示所述集成电路对二进制数据的切换的物理特性的点集;以及数据处理器,该数据处理器被配置以便将所述物理特性的点集划分成横向点的多个子集,每个子集对应于字χ的秩i的分量Xi与字y的秩j的分量Yj的基本乘法运算; 形成关于值χ和/或值y的至少一个一般假设;对于横向点的每个子集,形成与所述一般假设相联系的关于值Xi和/或~的至少一个特定假设;对于横向点的每个子集,计算根据所述特定假设而变化的物理特性的值的估计,并且将该估计归结于所述横向点的子集以及所述子集的那些点;以及通过使用被归结于所述横向点的物理特性的值的估计,将水平截断统计处理的步骤应用于所述横向点的子集,以便确定所述一般假设是否正确。在一个实施例中,该系统被配置以便如果统计处理步骤允许验证所述一般假设是正确的,则拒绝所述集成电路。在一个实施例中,所述测量组件被配置以便测量以下之一所述集成电路的电流消耗、磁场吸收、所述集成电路的电磁辐射,或者它们的组合。


当结合附图阅读时,将更好地理解前述总结以及后面对本发明的详细描述。出于说明本发明的目的,附图中示出了当前优选的实施例。然而应当理解,本发明并不限于所示出的明确布置和手段。
下面将结合附图以非限制性方式来描述根据本发明的测试过程的实施例及其相应对策。在附图中图1示出了安全集成电路的常规架构;图2示出了在模幂运算的执行期间图1的集成电路的电流消耗曲线;图3示出了用于进行常规的基于DPA或CPA的测试过程的电流消耗曲线;图4示出了用于进行常规的基于CPA的测试过程的更详细的电流消耗曲线;图5A和5B示意性地示出了由常规的基于CPA的测试过程所提供的相关性曲线;图6示意性地示出了被设计来执行常规的乘法算法的电路;图7示意性地示出了根据本发明的测试系统的实施例;图8示出了用于实现根据本发明实施例的过程的包括由图7的测试系统所使用的电流消耗子曲线的电流消耗曲线;图9是电流消耗子曲线的更详细的视图并且示出了根据本发明实施例的过程的步骤;图10是与图9的子曲线的点相关联的物理特性的估计值的表格;图IlA和IlB示意性地示出了通过根据本发明的测试过程的实施例所生成的两个相关性曲线;图12A、12B和12C分别示出了通过根据本发明的测试过程的另一实施例所生成的两个平均值曲线和一个相关性曲线;图13示意性地示出了被设计来执行根据本发明实施例的乘法算法的乘法器电路;以及图14示出了包括根据本发明实施例的对策的安全集成电路架构。
具体实施例方式根据本发明实施例的测试过稈的一般特征根据本发明的测试过程的实施例是基于在上述取幂算法的步骤3A和;3B的执行期间集成电路的电流消耗的详细检查,并且更特别地,基于在这些步骤3A和:3B中的每一个期间,在LIM乘法的执行期间集成电路的电流消耗的观测。根据本发明的测试过程的实施例是基于以下事实在实践中,由于实现这些乘法的单元所接受的二进制字的尺寸(size),导致在单个步骤中并不完成大整数的乘法 LIM(a,a)和LIM(a,m)。执行乘法的单元例如是微处理器、协处理器或算术加速器的算术和逻辑单元。计算单元的尺寸减小要求将大整数χ和y “分割”成1个较小尺寸的分量的计算算法LIM (x,y),从而使得χ = (xl-1 xl-2____x0)by = (yl-1 yl-2____y0)bxl-1, xl-2. · · · xO和yl-1, yl-2. . . . yO是以“b”为基底的运算对象χ和y的分量, 每个分量包括N个比特,并且基底b等于2N,例如对于接受N = 32个比特的运算对象的计算单元来说,b = 232。将运算对象分割成1个相等部分是使得如果根据常用方法完成了乘法,则该乘法包括I2个基本乘法运算。下面的表1给出了对于典型的集成电路架构的例子而言,在运算对象χ和y的尺寸G、其分量Xi、&的尺寸N、用于形成运算对象的分量Xi、&的数目1,以及对LIM函数的执行所包括的基本乘法Xi女&的数目I2之间的关系。表权利要求
1.一种用于测试集成电路设备的过程,其包括在所述集成电路执行两个二进制字X和y的乘法运算期间,收集表示所述集成电路对二进制数据的切换的物理特性的点集,所述乘法运算包括字χ的分量xi与字y的分量yj 的多个基本乘法步骤;将所述物理特性的点集划分成横向点的多个子集,每个子集对应于字χ的秩i的分量 xi与字y的秩j的分量y j的基本乘法运算;形成关于字χ的值和/或字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之一所述的过程,该过程被应用于集成电路,所述集成电路具有外部数据的处理功能,对其的执行包括有转到二进制字χ、y的乘法的至少第一步骤或二进制字χ、y的乘法的第二步骤的条件分支,所述条件分支根据所述集成电路的私有数据而变化;以及乘法功能,所述乘法功能被配置以便在用于进行相乘的字x、y的分量xi和分量yj的多个基本乘法步骤中执行所述条件分支所指定的乘法步骤;所述过程进一步包括将所述外部数据寻址到所述集成电路; 在所述集成电路中,激活所述外部数据的处理功能;在所述集成电路执行作为所述条件分支的函数的乘法期间,收集表示所述集成电路对二进制数据的切换的物理特性的点集;形成关于以下内容的至少一个一般假设所述私有数据的值,以及与所述私有数据的值有关的进行乘法的二进制字χ、y的值;将所述点集划分成横向点的多个子集,每个子集对应于字χ的秩i的分量xi与字y的秩j的分量yj的基本乘法运算;对于横向点的每个子集,形成与所述一般假设相联系的关于分量xi和/或分量yj的值的特定假设;对于横向点的每个子集,计算根据所述特定假设而变化的所述物理特性的值的估计, 并且将该估计归结于所述子集以及所述子集的点;以及通过使用与所述横向点的子集相关联的所述物理特性的值的估计,将水平截断统计处理的步骤应用于所述横向点的子集,以便确定关于所述私有数据的值的所述一般假设是否正确。
11.根据权利要求10所述的过程,其包括如果所述统计处理步骤验证了所述一般假设是正确的,则因为没能保藏秘密数据而拒绝所述集成电路。
12.根据权利要求10和11之一所述的过程,所述过程被应用于集成电路,其中,所述数据处理功能是模幂运算函数,所述私有数据是所述模幂运算函数的指数。
13.根据权利要求10和11之一所述的过程,所述过程被应用于集成电路,其中,所述数据处理功能是包括模幂运算函数的密码函数,所述私有数据是形成所述密码函数的私有密钥的所述模幂运算函数的指数。
14.一种用于测试集成电路的系统,其包括执行组件,所述执行组件被配置以便使得所述集成电路执行两个二进制字χ和y的乘法运算,所述乘法运算包括字χ的分量xi与字y的分量yj的多个基本乘法步骤;测量组件,所述测量组件被配置以便在所述乘法运算的执行期间,测量和收集表示所述集成电路对二进制数据的切换的物理特性的点集;以及数据处理器,所述数据处理器被配置以便将所述物理特性的点集划分成横向点的多个子集,每个子集对应于字χ的秩i的分量 xi与字y的秩j的分量yj的基本乘法运算;形成关于字χ的值和/或字y的值的至少一个一般假设;对于横向点的每个子集,形成与所述一般假设相联系的关于分量xi和/或分量yj的值的至少一个特定假设;对于横向点的每个子集,计算随着所述特定假设而变化的所述物理特性的值的估计, 并且将该估计归结于所述横向点的子集以及所述子集的点;以及通过使用被归结于所述横向点的所述物理特性的值的估计,将水平截断统计处理的步骤应用于所述横向点的子集,以便确定所述一般假设是否正确。
15.根据权利要求14所述的系统,其中,所述系统被配置以便如果所述统计处理步骤验证了所述一般假设是正确的,则拒绝所述集成电路。
16.根据权利要求14和15之一所述的系统,其中,所述测量组件被配置以便测量以下之一所述集成电路的电流消耗、磁场吸收,以及所述集成电路的电磁辐射,或者它们的组合。
全文摘要
本发明涉及一种用于测试集成电路的过程,其包括在所述集成电路执行乘法时收集物理特性的点集;将所述点集划分成横向点的多个子集;为每个子集计算所述物理特性的值的估计;以及通过使用所述物理特性的值的估计,将水平截断统计处理的步骤应用到所述横向点的子集,以便验证关于由所述集成电路操纵的变量的假设。
文档编号G06F19/00GK102193060SQ201110049399
公开日2011年9月21日 申请日期2011年3月1日 优先权日2010年3月1日
发明者B·菲克斯, G·加戈纳罗特, M·罗瑟莱特, V·韦尔努尔 申请人:英赛瑟库尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1