针对水平旁路分析而受到保护的集成电路的制作方法

文档序号:6355275阅读:245来源:国知局
专利名称:针对水平旁路分析而受到保护的集成电路的制作方法
技术领域
本发明的实施例涉及包括乘法功能的集成电路,该乘法功能被配置以便在字χ的分量&与字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函数)来执行对发送到该集成电路的消息m的加密、解密或签名操作。关于模幂运算的概述模幂运算函数具有下面的数学表达md modulo (n)m是输入数据,(!是指数,并且n是除数。因此,模幂运算函数包括计算m的d次幂 除以11的余数。通过各种密码算法(诸如尺3ム算法、05ム算法、椭圆曲线迪菲霍尔曼(EOTH)、 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= (d^_i d^_2- ^o)2Output :a = ffld modulo nStep 1 :a = 1Step 2 :Pre-calculations of the Barrett reductionStep 3 :for s from 1 to v do (Step 3A) a = BRED (LIM (a, a),n)(Step 3B) if d,_, = 1then a = BRED (LIM (a, m),n)Step 4 :Return result a其中,消息m和模n是整数(例如,10 个比特、2048个比特或更多),d是以2为 基底所表示的?个比特的指数(cU,cU,...(!。ン,“し通”是大整数(large integers)的乘 法函数(“长整数乘法”),并且“88£0”是应用于し通乘法结果的根据Barrett方法的归约 (reduction)函数(“8&^~6 归约”)。在诸如图1中示出的集成电路中,可以由微处理器1 或由协处理器〔 1来执行这 样的模幂算法。替代地,算法的一些步骤可以由微处理器来执行,而其它步骤可以由协处理 器(如果它仅是算术加速器的话)来执行。例如,微处理器可以将步骤3A和;3B的LIM乘 法委托给协处理器,或者根据情况可以将整个计算委托给协处理器。另外,通常由集成电路借助于对二进制字X和y的乘法功能来执行3乘以3(步骤 3A)或a乘以m(步骤;3B)的LIM乘法。该乘法包括字x的分量x, (a,)与字y的分量y」(a,. ■ mP的基本乘法的多个步骤(i和j是迭代变量),以便获得级联的中间结果,从而形成该 乘法的一般结果。旁路分析的概述为了验证由要商业化的安全集成电路所提供的安全级别,以工业级别来实施鉴定 或认证测试。特别地,实施测试以便评估集成电路对于目的是发现集成电路的秘密数据的 旁路分析的稳健性。因此,取幂算法受到这样的控制。更特别地,模幂算法的旁路分析包括在算法的步骤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 C ryptology-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)的这些点与电流消耗估计相关联。为此,电流消耗冊例如被建模如下
权利要求
1.一种包括乘法功能的集成电路,所述乘法功能被配置以便在字X的分量Xi与字y 的分量yj的多个基本乘法步骤中执行至少两个二进制字χ和y的乘法,i和j是迭代变量,其中,所述乘法功能进一步被配置以便通过以随机或伪随机的方式修改执行分量Xi 与分量yj的基本乘法步骤的顺序来执行二进制字χ和y的两个连续乘法。
2.根据权利要求1所述的集成电路,其中,所述乘法功能被配置以便以随机或伪随机的方式,修改分量xi被分量yj相乘的顺序而不修改分量yj被分量xi相乘的顺序或者分量yj被分量xi相乘的顺序之一。
3.根据权利要求1所述的集成电路,其中,所述乘法功能被配置以便以随机或伪随机的方式修改以下二者分量xi被分量yj相乘的顺序,以及分量yj被分量xi相乘的顺序。
4.根据权利要求1至3之一所述的集成电路,其中,所述乘法功能包括一组件,该组件被配置以便生成或接收随机或伪随机二进制数,并且被配置以便根据由所述随机或伪随机二进制数所确定的顺序,对于迭代变量i或j中的至少一个,执行分量xi与分量yj的所述多个基本乘法步骤。
5.根据权利要求1至4之一所述的集成电路,其中,所述乘法功能还被配置以便借助于至少一个随机或伪随机字来随机化所述分量xi或yj中的至少一个。
6.根据权利要求1至5之一所述的集成电路,其中,所述乘法功能包括第一运算模式, 其中,根据二进制字的乘法到另一个二进制字的乘法的恒定顺序而递增或递减所述迭代变量;以及第二运算模式,其中,从一个二进制字乘法到另一个二进制字乘法,以随机或伪随机方式,递增或递减所述迭代变量中的至少一个。
7.根据权利要求1至6之一所述的集成电路,其中,通过由序列器控制的硬连线电路来执行所述乘法功能。
8.根据权利要求1至7之一所述的集成电路,其进一步包括外部数据的处理功能,对所述外部数据的处理功能的执行包括至少一个条件分支步骤,其转到由所述乘法功能进行的二进制字的至少一个第一乘法步骤或由所述乘法功能进行的二进制字的第二乘法步骤,所述条件分支根据所述集成电路的私有数据而变化。
9.根据权利要求8所述的集成电路,其中,所述数据处理功能是模幂运算函数,所述私有数据是所述模幂运算函数的指数。
10.根据权利要求8所述的集成电路,其中,所述数据处理功能是包括模幂运算函数的密码函数,所述私有数据是形成所述密码函数的私有密钥的所述模幂运算函数的指数。
11.一种包括根据权利要求1至10之一的集成电路的设备,所述设备被布置在支撑装置上或嵌入到支撑装置中。
12.一种用于防御集成电路的旁路分析的过程,所述集成电路被配置以便执行至少两个二进制字χ和y的乘法运算以及字χ的分量xi与字y的分量yj的多个基本乘法步骤, i和j是迭代变量,所述过程包括从二进制字的一个乘法运算到另一个乘法运算,以随机或伪随机的方式,修改所述集成电路执行分量xi与分量yj的基本乘法步骤的顺序。
13.根据权利要求12所述的过程,其进一步包括以随机或伪随机的方式修改所述集成电路将分量xi与分量yj相乘的顺序,而不修改分量yj被分量xi相乘的顺序或者分量 xi被分量yj相乘的顺序之一。
14.根据权利要求12所述的过程,其进一步包括以随机或伪随机的方式修改以下二者所述集成电路将分量xi与分量yj相乘的顺序,以及所述集成电路将分量yj与分量xi 相乘的顺序。
15.根据权利要求12至14之一所述的过程,其进一步包括在所述集成电路内生成随机或伪随机二进制数;以及对于迭代变量i或j中的至少一个,根据由所述随机或伪随机二进制数所确定的顺序, 使所述集成电路执行分量xi与分量yj的多个基本乘法步骤。
16.根据权利要求12至15之一所述的过程,其进一步包括借助于至少一个随机或伪随机字来随机化分量xi或yj中的至少一个。
17.根据权利要求12至16之一所述的过程,其被应用于集成电路的保护,所述集成电路包括外部数据的处理功能,对所述外部数据的处理功能的执行包括至少一个条件分支步骤,其转到二进制字的至少第一乘法步骤或二进制字的至少第二乘法步骤,所述条件分支根据所述集成电路的私有数据而变化。
全文摘要
本发明描述了一种包括乘法功能的集成电路,所述乘法功能被配置以便执行两个二进制字x和y的乘法运算,所述乘法运算包括字x的分量xi与字y的分量yj的多个基本乘法步骤。所述集成电路的乘法功能被配置以便通过以随机或伪随机的方式修改执行分量xi与分量yj的基本乘法步骤的顺序来执行两个连续乘法。
文档编号G06F7/552GK102193773SQ201110049730
公开日2011年9月21日 申请日期2011年3月1日 优先权日2010年3月1日
发明者B·菲克斯, G·加戈纳罗特, M·罗瑟莱特, V·韦尔努尔 申请人:英赛瑟库尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1