• 四川郎酒股份有限公司获第十二届人民企业社会责任奖年度环保奖 2019-05-13
  • 银保监会新规剑指大企业多头融资和过度融资 2019-05-12
  • 韩国再提4国联合申办世界杯 中国网友无视:我们自己来 2019-05-11
  • 中国人为什么一定要买房? 2019-05-11
  • 十九大精神进校园:风正扬帆当有为 勇做时代弄潮儿 2019-05-10
  • 粽叶飘香幸福邻里——廊坊市举办“我们的节日·端午”主题活动 2019-05-09
  • 太原设禁鸣路段 设备在测试中 2019-05-09
  • 拜耳医药保健有限公司获第十二届人民企业社会责任奖年度企业奖 2019-05-08
  • “港独”没出路!“梁天琦们”该醒醒了 2019-05-07
  • 陈卫平:中国文化内涵包含三方面 文化复兴表现在其中 2019-05-06
  • 人民日报客户端辟谣:“合成军装照”产品请放心使用 2019-05-05
  • 【十九大·理论新视野】为什么要“建设现代化经济体系”?   2019-05-04
  • 聚焦2017年乌鲁木齐市老城区改造提升工程 2019-05-04
  • 【专家谈】上合组织——构建区域命运共同体的有力实践者 2019-05-03
  • 【华商侃车NO.192】 亲!楼市火爆,别忘了买车位啊! 2019-05-03
    • / 33
    • 下载费用:30 金币  

    重庆时时彩今日冷号: 用于测试集成电路对旁路分析的抵抗力的过程.pdf

    关 键 词:
    用于 测试 集成电路 旁路 分析 抵抗力 过程
      专利查询网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    摘要
    申请专利号:

    CN201110049399.9

    申请日:

    2011.03.01

    公开号:

    CN102193060A

    公开日:

    2011.09.21

    当前法律状态:

    授权

    有效性:

    有权

    法律详情: 授权|||实质审查的生效IPC(主分类):G01R 31/28申请日:20110301|||公开
    IPC分类号: G01R31/28; G06F19/00 主分类号: G01R31/28
    申请人: 英赛瑟库尔公司
    发明人: B·菲克斯; G·加戈纳罗特; M·罗瑟莱特; V·韦尔努尔
    地址: 法国普罗旺斯地区艾克斯
    优先权: 2010.03.01 FR 1000833; 2010.03.01 FR 1000834; 2010.03.31 US 12/750,953; 2010.03.31 US 12/750,846
    专利代理机构: 北京市中咨律师事务所 11247 代理人: 杨晓光;张静美
    PDF完整版下载: PDF下载
    法律状态
    申请(专利)号:

    CN201110049399.9

    授权公告号:

    ||||||

    法律状态公告日:

    2015.05.06|||2013.02.27|||2011.09.21

    法律状态类型:

    授权|||实质审查的生效|||公开

    摘要

    本发明涉及一种用于测试集成电路的过程,其包括:在所述集成电路执行乘法时收集物理特性的点集;将所述点集划分成横向点的多个子集;为每个子集计算所述物理特性的值的估计;以及通过使用所述物理特性的值的估计,将水平截断统计处理的步骤应用到所述横向点的子集,以便验证关于由所述集成电路操纵的变量的假设。

    权利要求书

    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之一所述的系统,其中,所述测量组件被配置以便测量以下之一:所述集成电路的电流消耗、磁场吸收,以及所述集成电路的电磁辐射,或者它们的组合。

    说明书

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

    技术领域

    本发明的实施例涉及包括乘法功能的集成电路,该乘法功能被配置以便在字x的分量xi与字y的分量yi的多个基本乘法步骤中执行这两个二进制字x和y的乘法运算。

    本发明的实施例特别涉及包括外部数据处理功能的集成电路,对该外部数据处理功能的执行至少包括:转到二进制字的至少第一乘法步骤或二进制字的第二乘法步骤的条件分支。该条件分支根据集成电路的私有数据而变化。

    本发明的实施例特别涉及用于测试这样的集成电路的过程和系统。

    本发明的实施例还涉及用于针对旁路分析而?;ど鲜隼嘈偷募傻缏返墓?,并且涉及一种对策,其允许这样的集成电路通过包括根据本发明实施例的测试过程在内的鉴定或认证过程。

    背景技术

    当前,可以在芯片卡或其它嵌入式系统(诸如USB密钥(闪速驱动器)、解码器和游戏控制台,以及按照一般方式的任何受信平台??門PM)中找到越来越高级的安全处理器。这些按照集成电路形式的处理器通常具有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和密码??閚的模幂运算(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例如被建模如下:

    W=k1*H(DR)+k2]]>

    “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之一?;撼迤鰾Y包括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的输入端?;撼迤鰾R的寄存器之一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例如使用下面的关系式来计算:

    HCk=cov(Wk,i,j,HWi,j)σWk,i,jσHWi,j]]>

    或者:

    HCk=l2Σ(Wk,i,jHWi,j)-ΣWk,i,jΣHWi,jl2ΣWk,i,j2-(ΣWk,i,j)2l2ΣHWi,j2-(ΣHWi,j)2]]>

    也就是说,点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类型的技术来实现测试过程。

    该分析要求获取步骤和处理步骤?;袢〔街杞霭ɑ袢〉ジ鱿那逤s′(包括子曲线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

    K是在其中执行了计算的乘法组的阶序(order)的倍数。例如,在RSA算法的情况下,其中k是随机数并且是欧拉函数,诸如p和q是使得p*q=1的整数。

    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来执行。

    将注意到,在本说明书和权利要求书中,术语“随机”或“伪随机”指示了评估器或测试过程未知的并且对于不知道集成电路的秘密的人来说是不可预测的数字。特别地,如果通过确定性函数(其使用秘密参数来生成数字)来生成该数字(并且因此该数字本质上不是随机的),则该数字在本申请的情况下被认为是“随机的”或“伪随机的”。

    本领域技术人员将理解,在不背离本发明的广义的发明概念的情况下,可以对上述实施例进行改变。因此,应当理解,本发明不限于所公开的特定实施例,而是旨在涵盖在如所附权利要求所定义的本发明的精神和范围之内的那些修改。

    关于本文
    本文标题:用于测试集成电路对旁路分析的抵抗力的过程.pdf
    链接地址://www.4mum.com.cn/p-5875303.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    [email protected] 2017-2018 www.4mum.com.cn网站版权所有
    经营许可证编号:粤ICP备17046363号-1 
     


    收起
    展开
  • 四川郎酒股份有限公司获第十二届人民企业社会责任奖年度环保奖 2019-05-13
  • 银保监会新规剑指大企业多头融资和过度融资 2019-05-12
  • 韩国再提4国联合申办世界杯 中国网友无视:我们自己来 2019-05-11
  • 中国人为什么一定要买房? 2019-05-11
  • 十九大精神进校园:风正扬帆当有为 勇做时代弄潮儿 2019-05-10
  • 粽叶飘香幸福邻里——廊坊市举办“我们的节日·端午”主题活动 2019-05-09
  • 太原设禁鸣路段 设备在测试中 2019-05-09
  • 拜耳医药保健有限公司获第十二届人民企业社会责任奖年度企业奖 2019-05-08
  • “港独”没出路!“梁天琦们”该醒醒了 2019-05-07
  • 陈卫平:中国文化内涵包含三方面 文化复兴表现在其中 2019-05-06
  • 人民日报客户端辟谣:“合成军装照”产品请放心使用 2019-05-05
  • 【十九大·理论新视野】为什么要“建设现代化经济体系”?   2019-05-04
  • 聚焦2017年乌鲁木齐市老城区改造提升工程 2019-05-04
  • 【专家谈】上合组织——构建区域命运共同体的有力实践者 2019-05-03
  • 【华商侃车NO.192】 亲!楼市火爆,别忘了买车位啊! 2019-05-03
  • 澳洲赛车官方网站 平码平特肖 最新pk10计划安卓版下载 北京pk猜冠军技巧 pk10冷热号实战经验 5分快三精准计划网址 北京福彩网pk10走势图 计算数字大小单双的软件下载 双色球走势图近30期 飞艇计划6码在线 时时彩怎么买稳赚不赔 北京pk10app 36码什么网址 北京小赛车开奖直播 一分快三大小单双辅助软件下载 宝宝计划软件准吗