测试电路对二阶或更高阶侧信道分析的抵抗力的方法与流程

文档序号:11432503阅读:225来源:国知局
测试电路对二阶或更高阶侧信道分析的抵抗力的方法与流程

本发明涉及一种用于测试电路的方法,具体涉及被设计为处理机密数据的电路,特别涉及用于通过使用密钥的加密算法来变换消息的电路。

本发明特别涉及实现密码算法的设备,诸如安全设备(智能卡集成电路、安全元件、安全存储卡)、移动设备(移动电话、智能手机、物联网)、家用和汽车设备、以及集成到计算机和其他电子和it设备(usb驱动器、电视解码器、游戏控制台等)的母板上的硬件加密组件等。本发明还涉及包括加密运算的软件,该软件用于在安全或不安全的环境中执行。

本发明具体涉及实现诸如des(数据加密标准)或三重des、aes(高级加密标准)、rsa(rivest、shamir和adleman)、dsa(数字签名算法)或ecdsa(椭圆曲线数字签名算法)等加密算法之类的密码算法的电路。本发明还涉及实现诸如hmac(密钥散列消息认证码)之类的散列函数的电路。



背景技术:

实现密码算法的微电路配备有中央处理单元(cpu)。一些微电路配备有专用于密码计算的电路,例如加密协处理器。这些微电路包括根据所执行的运算以不同的方式切换的数千个逻辑门。这些开关在电流消耗上产生短暂变化,例如可以被测量的几纳秒。具体而言,cmos型集成电路包括在切换时(即,当逻辑节点变为1或0时)才消耗电流的逻辑门。因此,电流消耗取决于中央单元处理的数据及其各种外围设备(存储器)上的数据、在数据或地址总线上流动的数据、密码协处理器等。

此外,具体使用加密或模糊技术(诸如“白盒密码术”技术)产生的某些软件程序可以以使得难以通过逆向工程确定的方式来集成机密数据。某些软件程序还可以通过安全通信信道从外部接收机密数据。当观察到这些微电路的电流消耗、或它们的磁或电磁辐射、或可以在执行加密算法的同时观察到的其它任何信息时,这些微电路可能会受到所谓的侧信道分析攻击。此类攻击旨在发现它们使用的机密数据,特别是它们的加密密钥。频繁的侧信道攻击实施诸如spa(“单功耗分析”)、dpa(“差分功耗分析”)、cpa(“相关功耗分析”)或ema(“电磁分析”)之类的统计分析方法。spa分析(参考文献[1])通常只需要获取单个电流消耗踪迹。其目的是通过观察对应于密码计算的消耗踪迹的一部分来获得关于集成电路的活动的信息,因为当前踪迹根据所执行的运算和所处理的数据而变化。

软件在被电路执行期间也可能经历这种侧信道攻击。

dpa(参考文献[2])和cpa分析使得能够通过获取大量数据或测量踪迹并通过对这些踪迹进行统计分析以查找搜索的信息来找到加密算法的密钥。它们基于这样的前提:即,当寄存器中或总线上的位从0变为1时,cmos型集成电路的消耗发生变化,以及当位保持等于0、保持等于1或从1变为0(mos晶体管的寄生电容的放电)时,其不发生变化。或者,可以认为当位从0变为1或从1变为0时,cmos型集成电路的消耗发生变化,并且当位保持等于0或保持等于1时,cmos型集成电路的消耗不变。该第二假设使得能够使用常规的“汉明距离”或“汉明权重”函数来开发不需要已知集成电路的结构可应用的消耗模型。dpa分析涉及通过对大量消耗踪迹的统计处理来放大该消耗差异,目的在于突出根据公式假设区分的两个消耗踪迹族之间的测量差异。

cpa分析(参考文献[3])基于线性电流消耗模型,并且涉及计算首先所测量的形成捕获的消耗踪迹的消耗点与其次根据线性消耗模型和有关由微电路处理的待发现的变量以及有关加密密钥的值的假设而计算的推定消耗值之间的相关系数。

电磁分析(ema)基于如下原理:即,微电路可以以近场或远场电磁辐射的形式泄漏信息。假设晶体管在其状态改变时发射电磁信号,则可以通过诸如spa、dpa和cpa分析中的一种或其它分析,像电流消耗变化信号那样处理这些信号。此分析的一个应用实例由jean-jacquesquisquater(参考文献[4])做出。

存在其它侧信道攻击,例如“模板攻击”(参考文献[5])和“交互信息分析”(mia)(参考文献[6])。所有上述攻击都基于所有被分析的踪迹的时间对准。换言之,在给定时间(例如从命令的执行被电路激活的时间)执行的所有测量必须对应于由算法处理的相同值。

为了保护此类电路及其执行的密码算法免受这些侧信道攻击,通常提供应对措施。几种普遍的应对措施均旨在避免这种时间对准。为此,这些应对措施引入为计算电路定速的时钟频率的变化,或引入伪时钟周期或伪运算。

有时可以借助特定的专业知识以及多次尝试来恢复这种时间对准,特别是使用大量要被重新对准的踪迹或应用一些信号处理。尽管如此,仍存在以下情况:即,不能恢复这种时间对准,这样,即使在踪迹中存在机密数据泄漏,侧信道测试也会失败。

另几种应对措施涉及借助伪密钥或伪消息来多次执行加密方法。为此,提供了例如控制加密程序或协处理器的应对措施程序,该程序以随机的顺序,通过伪密钥多次执行加密方法,从而使得通过正确的密钥(即,真实的密钥)对加密方法的执行被“隐藏”在一组伪执行中。通过多次执行实现这种应对措施提供了以下优点:即,可以通过不包括任何特定的应对措施手段的常规协处理器来实现此应对措施。

另几种应对措施涉及使得要保护的算法适合独立于由电路处理的数据的实际值来呈现这些数据。这几种应对措施中的某些应对措施被称为“掩蔽型应对措施”-使用随机掩码(二进制数),在执行加密方法期间,这些随机掩码与另一要保护的数据(例如密钥和/或消息)组合在一起。此类应对措施是有效的,但是需要修改算法,因此,在由专用协处理器执行的情况下,需要专用于实现此应对措施的协处理器,或者在由微电路的中央处理单元或编程协处理器执行的情况下,需要更复杂的程序。此外,此类应对措施易经受所谓的“二阶攻击”,此攻击基于对一组信号踪迹的分析,通过组合相应踪迹的两个部分来获得每个信号踪迹。作为一个实例,这些信号踪迹中的每一个组合了应持有与由待发现的数据值和随机掩码值的组合产生的数据相关的泄漏的信号部分、以及应持有随机掩码值的泄漏的信号部分。参考文献[7]公开了组合时间信号部分以获得与待发现的数据值相关的信号踪迹的不同方式。但是,由于要求组合信号部分在被组合之前需要在时间上严格对准,因此这种二阶攻击面临困难。如果不满足此要求,则组合后的信号踪迹不包含能够通过常规统计分析提取的有用信息,或者组合后的信号踪迹包含有用信息,但是此信息不能通过常规统计分析提取。因此,二阶攻击对基于各种时间未对准的应对措施非常敏感,例如导致为电路定速的时钟周期的持续时间随机改变的应对措施,或者在随机选择的时间引入伪处理周期或运算的应对措施。

为了检查旨在上市的安全集成电路提供的安全级别,在电路上市之前安排资格和/或认证测试,这些测试具体包括集成电路防侧信道分析的鲁棒性测试,目的是发现由集成电路处理的机密数据。还有一些测试可以评估软件程序对侧信道攻击的抵抗力。

因此,期望提出一种用于测试电路或软件程序对二阶侧信道攻击的抵抗力的方法,其具体能够检测机密数据泄漏,而不需要对电流消耗踪迹或表示电路活动的其它任何物理或逻辑量的任何先前时间对准处理。还希望此方法能够独立于执行软件程序或应用的电路来测试软件程序或应用的鲁棒性。

还可能期望将此测试方法集成到旨在检查电路或由给定电路执行的软件对侧信道分析的抵抗力以及它们在信息泄漏方面的严密性的工业资格和/或认证处理中。

还可能期望提出在包括这种测试方法的资格和/或认证过程之后,使得集成电路或软件程序能够被认为能够在产品中使用的应对措施手段。



技术实现要素:

某些实施例涉及一种测试方法,包括:获取多个值集,每个值集包括物理量或逻辑信号的值,当受测试电路执行被应用于待发现的相同数据的不同密码运算的运算集中的运算时,所述值集与所述电路的活动关联;选择每个值集中的至少两个值子集;对于每个值集,计算将每个值子集中的一个值组合在一起的组合值;对于每个值集,通过处理单元对由被应用于该值集中的所述组合值的第一满射函数变换的值的出现次数计数,以形成该值集的出现次数集;对于所述运算集中的每个运算以及待发现的数据的一部分的每个可能值,通过所述处理单元计算部分运算结果;通过所述处理单元计算累积出现次数集,所述累积出现次数集是通过将对应于所述运算集中的运算的出现次数集相加而获得的,当被应用于所述待发现的数据的所述部分的可能值的相同值或等价值时,所述运算提供具有应用第二满射函数所获得的相同变换值的部分运算结果;以及通过所述处理单元分析所述累积出现次数集以确定所述待发现的数据的所述部分,从而知道如果所述待发现的数据已经泄漏到所述值集中,则在与所述待发现的数据的所述部分的值对应的所述累积出现次数集中找到所述待发现的数据。

根据一实施例,通过以下操作获得值集的所述组合值:将每个子集中的每个值相乘在一起,或者计算第一子集中的每个值与第二子集中的每个值之间的正差,或者将每个子集中的每个值与该子集中的值的平均值之间的差相乘在一起。

根据一实施例,所述方法进一步包括:向所述电路发送多个不同的命令,每个命令触发由所述电路执行被应用于所述待发现的数据的所述运算集中的运算之一;以及在由所述电路执行所述运算集中的一个运算期间,由测量设备收集所述值集中的一个值集的值。

根据一实施例,每个值集的所述子集包括相应不同信号的测量。

根据一实施例,所述值集包括:所述电路的电流消耗的测量,和/或由所述电路发射的电磁辐射的测量,和/或所述电路周围存在的磁场的吸收的测量,和/或在所述电路中收集的逻辑信号或数字值。

根据一实施例,其中所述第一和第二满射函数中的每一者是以下函数之一:恒等函数;这样的函数:其提供结果值,该结果值然后被简化为对应于汉明权重的值;这样的函数:其提供该函数被应用到的值的汉明权重;或这样的函数:其提供值与该函数被应用到的先前值之间的汉明距离。

根据一实施例,所述方法进一步包括:如果分析步骤确定所述待发现的数据的所述部分,则拒绝所述电路或由所述电路执行的程序。

根据一实施例,针对所述待发现的数据的先前确定的部分和所述待发现的数据的另一部分,执行计算所述待发现的数据的一部分的每个可能值的运算结果的步骤、计算所述累积出现次数的步骤、以及分析所述累积出现次数的步骤。

根据一实施例,每个值集中的选定子集包括:该值集的连续值,和/或该值集的非连续值,和/或该值集的局部极值,和/或该值集的全部值。

根据一实施例,所述运算集中的所述运算包括将单个运算应用于所述待发现的数据以及应用于输入数据集中的输入数据,所述单个运算包括以下运算中的至少一者:对称或不对称加密或解密运算;签名运算;与所述待发现的数据的模乘或非模乘;与所述待发现的数据的逻辑异或运算;模幂运算,所述待发现的数据被用作指数;模简化运算,所述待发现的数据被用作模数;采用使用输入值在替换表中选择的值的替换运算;组合了与所述待发现的数据的逻辑异或运算和替换运算的运算,所述替换运算以使用所述逻辑运算的结果在替换表中选择的值替换所述逻辑运算的结果。

根据一实施例,所述累积出现次数集的分析包括:对于每个累积出现次数,通过将该累积出现次数除以在该累积出现次数中累积的对应数量的出现次数来计算正规化累积出现次数;对于所述待发现的数据的所述部分的每个可能值和变换后的部分结果的每个可能值,计算对应于所述待发现的数据的所述部分的该可能值和所述变换后的部分结果的该可能值的每个正规化累积出现次数与被除以运算次数的所述累积出现次数的平均值之间的差值平方和;对于所述待发现的数据的所述部分的每个可能值,计算与所述变换后的部分结果的所述可能值对应的累积总差值和;以及相互比较所述累积总差值和,并且检测所述待发现的数据的所述部分的可能值的所述累积总差值和之一是否大于另一累积总差值和。

根据一实施例,所述累积出现次数的分析包括:对于所述待发现的数据的所述部分的每个可能值和变换后的部分结果的每个可能值,计算所述累积出现次数的累积总和;对于每个累积出现次数,通过将出现次数和除以累积出现次数的对应累积总和来计算正规化累积总和,并计算所述正规化累积总和与所述正规化累积总和的对数的乘积;对于所述待发现的数据的所述部分的每个可能值和变换后的部分结果的每个可能值,计算与所述待发现的数据的所述部分的该可能值和所述变换后的部分结果的该可能值对应的所述乘积的和;对于所述待发现的数据的所述部分的每个可能值,计算与所述变换后的部分结果的所述可能值对应的累积总乘积和,每个乘积和被乘以对应数量的出现次数和;以及相互比较所述累积总乘积和,并且检测所述待发现的数据的所述部分的可能值的所述累积总乘积和之一是否大于另一累积总乘积和。

实施例还可以涉及一种用于测试电路的系统,所述系统包括:测量设备,其被配置为获取多个值集,每个值集包括物理量或逻辑信号的值,当受测试电路执行被应用于待发现的相同数据的不同密码运算的运算集中的运算时,所述值集与所述电路的活动关联;以及处理单元,其被配置为实现先前定义的方法。

根据一实施例,所述系统进一步包括测量探头,其耦合到所述测量设备以获取与所述电路的活动相关联的踪迹。

根据一实施例,所述系统进一步包括仿真器,其执行要测试的应用。

实施例还可以涉及一种计算机程序产品,其可加载到计算机的内部存储器中并包括代码部分,当由计算机执行时,所述代码部分配置所述计算机以执行上面定义的方法的步骤。

附图说明

下面将结合但不限于附图来描述仅为了例示目的而提供的本发明的实施例的一些实例,其中:

图1示意性地表示安全电路的常规架构;

图2示意性地表示集成电路测试系统的一个实例;

图3表示在由安全电路执行加密运算期间获取的信号的踪迹;

图4表示根据一个实施例的用于测试电路的方法的步骤;

图5以图的形式表示了满射函数的一个实例;

图6示意性地表示根据一个实施例构建的用于执行统计处理的表;

图7表示根据另一实施例的用于测试电路的方法的步骤;

图8和9表示根据各种实施例的用于对通过测试方法获得的值集进行统计分析的方法的步骤;以及

图10和11以曲线的形式表示由图8和9的分析方法提供的结果表。

具体实施方式

作为一个实例,图1表示安全集成电路ct,该集成电路例如布置在诸如塑料卡或任何其它介质的便携式介质hd上,或者布置在诸如移动终端、智能电话、iot设备等终端中。所述集成电路包括微处理器prc、输入/输出电路ioc,通过数据和地址总线耦合到微处理器的存储器m1、m2、m3以及可选地包括加密计算协处理器cp1或算术加速器,以及随机数发生器rgn。存储器m1是包含易失性应用数据的ram型(“随机存取存储器”)存储器。存储器m2是包含非易失性数据和应用程序的非易失性存储器,例如eeprom或闪存。存储器m3是包含微处理器的操作系统的只读存储器(或rom存储器)。

通信接口电路ioc可以是例如根据iso/iec7816标准的接触型电路,例如根据iso/iec14443a/b或iso/iec13693标准的具有感应耦合的非接触型电路,借助电耦合的非接触型电路(uhf接口电路),或同时为接触型和非接触型电路。接口电路ioc还可以通过特定接口耦合到诸如nfc(近场通信)控制器的另一电路,或者诸如移动终端或连接对象的终端的主电路。

在某些实施例中,集成电路ct可以被配置为通过加密功能执行对发送给它的消息进行加密、解密或签名的操作。该加密功能可以由电路ct的处理器prc执行,或者部分地或完全地由处理器prc的协处理器cp1执行。

图2表示根据一个实施例的用于实现测试方法的集成电路测试系统的一个实例。例如假定测试系统被配置为测试图1中的集成电路ct。

图2的测试系统包括耦合到诸如数字示波器的测量设备md的测量探头pb,以获取与电路的活动相关的踪迹,诸如电流消耗或电磁信号变化的踪迹,以及包括诸如个人计算机pc的计算部件。计算机pc耦合到测量设备并且实现测试程序。该测试程序具体地包括通信接口、用于与集成电路通信并用于向集成电路发送消息的程序、信号处理程序,以及用于实现根据本发明的方法的计算步骤的程序。在集成电路是非接触式电路的情况下,通信接口可以包括非接触式读卡器。

探头pb可以是电流探头(例如放置在集成电路的电源端子vcc上的电阻器)或者通过信号放大器amp耦合到测量设备的电磁探头。或者,电流探头可以与电磁探头组合。电磁辐射的研究实际表明,工作中由电路发射的电磁场提供关于集成电路中的位开关的信息,就像消耗的电流的测量一样。电磁探头的优点是它可以放置其操作需要分析电路部分附近(例如靠近微处理器prc的核心或密码计算协处理器cp1的核心)。

此外,在非接触式集成电路的情况下,电流探头可以用电感探头代替,电感探头测量集成电路对读取器发射的磁场的吸收。这种电感探头(例如天线线圈)本身能够与放置在要研究的电路区域附近的电磁场探头组合。

因此,在本申请中,为了简化语言而使用的短语“电流消耗”指任何可测量的物理量,其随时间的变化表示集成电路内部或所研究的集成电路部分内部的二进制数据的切换,该物理量能够在集成电路的端子处或在所研究的集成电路部分附近被测量。此外,以高得足以收集感兴趣的数据周期内的多个点的采样频率对物理量进行采样,实际上形成大量踪迹,其中每个踪迹包含10到数十万个点,但是也可以考虑在每个踪迹中收集几百万个值或甚至更多值。

本申请还涉及一种用于测试软件程序或应用的方法。在这种情况下,软件程序可以由测试系统直接执行或由测试系统所执行的仿真程序执行。因此,所分析的踪迹例如可以是当访问存储器时被发送到存储器的一系列值,或在电路的寄存器中处理的数据,甚至是被发送到电路的通信接口的数据,这些发送由受测试的软件程序控制。

所述测试方法的某些实施例基于对信号或数字值的随时间变化的踪迹的详细观察,这些踪迹表示在受测试电路执行被应用于待发现的数据(下文称为“机密数据”)的运算时所述电路的操作。

图3表示可以由测试系统获取的一段时间上的值的踪迹c0、c1、...cix。这些踪迹中的每一者已经通过使受测试的电路或软件程序执行运算而获得。对应于踪迹c0、c1、...cix的运算通常都是不同的。这些运算不同例如是因为它们涉及将同一函数应用于不同的已知输入数据,例如要加密、解密或签名的消息或要检查的签名,或要计算的hmac(密钥-散列消息认证码)。或者,已知数据可以是函数的输出数据、或该函数的输入和输出数据的一部分,而非其输入数据。

所述函数可以是应用于相同机密数据sd和输入数据m的任何函数,诸如对称或不对称加密或解密运算、或甚至签名运算、或者仅仅是与机密数据的模乘或非模乘(m×sd)、与机密数据的逻辑xor函数(异或)(mxorsd)、模幂函数(机密数据被用作指数(msdmodn,n是已知的))、模简化函数(机密数据被用作模数(mmodsd))。所述函数的另一实例涉及使用替换表(sbox[mxorsd],sbox是替换表)来处理xor运算的结果,如在des和aes加密算法的情况下。更一般地,该函数必须能够基于机密数据的一部分和输入数据来计算由运算产生的值的一部分。

在图3的实例中,踪迹c0,c1,…ci,…cix分别对应于输入(或输出)数据m[0]、m[1]、...m[i]、...m[ix]。每个踪迹ci可以由从在同一受测试电路上测量的同一信号获取的样本形成,或者可以包括来自当受测试电路操纵数据m[i]时捕获的不同信号的样本。

图4表示步骤s1到s20,这些步骤处理在执行被应用于待发现的机密数据和被应用于也已知的输入数据m[0]...m[ix]的已知加密运算oprk期间由测试系统收集的值。根据一个实施例,该测试的目的是例如判定机密数据的值是否泄漏到形成图3的踪迹的所收集的值中。处理单元pc首先执行步骤s1到s9。

在步骤s1,测试系统的处理单元pc将输入数据m[0]...m[ix]上的循环的索引i以及表ch设定为0。在步骤s2,处理单元pc通过要测试的电路mct或软件程序激活运算oprk的执行,该运算接收数据m[i],机密数据被提供给电路mct或软件程序执行的运算。在步骤s3,处理单元pc收集构成踪迹ci的值。在步骤s4,选择踪迹ci的值的部分ec1i、ec2i(图3),只有这些部分在以下处理步骤中被处理。在图4的实例中,为了简单起见,部分ec1i、ec2i由踪迹ci的与部分ec1i的索引k1和k1x以及与部分ec2i的索引k2和k2x对应的值来界定。实际上,索引k1、k1x、k2和k2x可以从一个踪迹ci变化到下一个踪迹ci。此外,与现有技术的侧信道分析相比,每个踪迹中以此方式选定的值不一定是连续的,并且每个部分ec1i、ec2i中的值的数量在每个踪迹ci中可能彼此不同,并且在一个踪迹ci与下一个踪迹之间可能是不同的。因此,例如可以选择从每个踪迹ci中仅提取最大或最小局部值。还应注意,所提取部分ec1i、ec2i可以包括整个踪迹ci。在下面的处理中,假设以此方式提取的数据包含一条关于被被搜索的机密数据的信息。每个踪迹ci(i=0…ix)可以包括来自在受测试电路操纵数据m[i]的同时获取的不同信号的样本值。在这种情况下,部分ec1i例如可以包括从第一信号提取的样本值,并且部分ec2i包括从第二信号提取的样本值。

在步骤s5,将所提取部分ec1i中的每个点与所提取部分ec2i中的每个点相组合,以形成要在下面的步骤处理的点集wi(图3)。根据某些实例,可以根据下面等式之一计算每个点wi[j]:

wi[j]=ec1i[m1]xec2i[m2],(1)

wi[j]=|ec1i[m1]–ec2i[m2]|,(2)

wi[j]=|ec1i[m1]–m(ec1i)|x|ec2i[m2]–m(ec2i)|,(3)

m1和m2是范围分别从k1到k1x(m1)以及从k2到k2x(m2)的索引,j是范围从0到(k1x-k1+1)(k2x-k2+1)-1的索引,|x|表示值x的绝对值,并且m(ec)表示点集ec的算术平均值。因此,对于所提取部分ec1i的点和所提取部分ec2i的点的每个可能组合,每个点集wi包括不同值wi[j]。

在步骤s6,处理单元pc将循环索引j以及表ht设定为0。在步骤s7,处理单元pc对点集wi的索引j的点值wi[j]应用满射函数f1,并且使表ht中的值递增一(1),该值由等于函数f1提供的结果的索引来指定。在步骤s8,索引j递增一(1)。在步骤s9,将索引j与其最大值进行比较,以判定是否已经如此处理了点集wi中的全部值。根据等式(1)、(2)和(3),能够根据点集wj中的点的数量计算j的最大值。能够通过将点集ec1i中的点的数量乘以点集ec2i中的点的数量,即(k1x-k1+1)(k2x-k2+1),计算点集wj中的点的数量。一旦处理了点集wi中的全部值,处理单元pc就执行步骤s10到s15,否则再次执行步骤s7到s9。以这种方式,加载到表ht的点集wi中的值具有指定由函数f1返回的每个可能值的出现次数的直方图形式,以使得与点集wi中的值相关的时间特征不包括在表ht中:表ht的内容使得不能确定集合中的值被收集的顺序。图5表示采取图的形式的使用函数f1计算的值(在x轴上)的出现次数(在y轴上)的表ht的一个实例。在图5的实例中,函数f1返回根据8位编码值计算的汉明权重。

在步骤s10,处理单元pc将索引g设定为0。在步骤s11,处理单元pc对数据m[i]和待确定的机密数据sd的一部分(被设定为等于索引g)应用运算opr。运算opr(m,g)假定提供在步骤s2执行的运算oprk(m)(=opr(m,sd))的结果的一部分。由运算opr提供的结果被提供值vl的满射函数f2处理。在步骤s12,处理单元pc将索引l设定为0。在步骤s13,处理单元pc在由索引g、vl和l指定的位置处将存储在三维表ch中的值递增表ht中对应于数据m[i]的索引l处的值ht[1]。图6表示表ch的一个实例,其中由索引g和vl指定的每个位置ch[g,vl]包含根据在步骤s12获得的值vl组合若干表ht而获得的表。在步骤s14,索引l递增一(1)。在步骤s15,考虑到由函数f1提供的可能不同值的数量,将索引l与其最大值lx进行比较。如果索引l小于或等于其最大值lx,则再次执行步骤s13到s15,否则(当索引l大于其最大值1x)时,执行步骤s16和s17。

在步骤s16,处理单元pc使索引g递增一(1)。在步骤s17,考虑到所考虑的机密数据部分的可能不同值的数量,处理单元pc将索引g与其最大值gx进行比较。如果索引g小于或等于最大值gx,则执行从步骤s11到步骤s17的新迭代,否则(当索引g大于其最大值gx时),执行步骤s18和s19。在步骤s18,处理单元pc使索引i递增一(1)以处理另一踪迹ci。在步骤s19,处理单元pc将索引i与其最大值ix(对应于所生成的踪迹ci的数量)进行比较。如果索引i小于或等于最大值ix,则再次执行步骤s2到s19,否则(当索引i大于其最大值ix时),则执行步骤s20。在步骤s20,包含在位置[g,vl]处的表ch中的累积总和的每个表包含以下值:

在上述总和中要考虑的数据m[i]使得f2(opr(m[i],g))=vl。

在步骤s20,处理单元pc对表ch执行统计分析,旨在判定索引g的值是否对应于要搜索的机密数据部分。为此,考虑从机密数据的泄漏获得的信息已经累积在表ch中的行g的位置中,而独立于机密数据的信息被随机地或均匀地分布在表ch中。因此,如果表ch的索引g的行包含比该表的其余部分更高的值,则表ch中的该行的索引g的值对应于要搜索的机密数据sd的该部分的值。在这种情况下,能够认为机密数据sd已经泄漏到所收集的形成踪迹ci的数据中。

可以选择函数f1和f2以使其对应于要测试的电路或软件程序的泄漏模式。因此,函数f1和f2可以彼此相同或不同,并且可以被选择以最大化发现由电路操纵的机密数据的概率。例如,函数f1和f2可以是以下函数之一:

-恒等函数,

-这样的函数(例如,形式为f(x)=a·x+b):其结果值可以被简化为对应于汉明权重的值,例如当x在8位上被编码时介于值0与8之间,

-这样的函数:其计算在该函数的输入处提供的值的汉明权重,例如二进制编码值的1处的位数,或者

-这样的函数:其计算与另一值的汉明距离,例如这两个值中的1处的位数之间的差。

应当注意,函数f1和f2的选择可以影响要执行以确定所考虑的机密数据部分的表ch的统计处理的复杂性,以及确定要搜索的机密数据部分的值的统计处理的成功性。

通过执行步骤s1到s20搜索的机密数据部分例如可以在8或16位上定义。在8位的情况下,索引g被连续地分配给0和255(或1和256=28)之间的全部值。应当注意,测试g的值的顺序对于测试的结果而言不重要。要搜索的机密数据部分也可以在诸如16、32或64位的较宽的字上定义。

机密数据sd的另一部分可以通过使用先前确定的机密数据部分的值并通过将机密数据的另一部分强制到索引g的不同可能值来执行步骤s10到s20而确定。为此,能够在步骤s4提取踪迹ci的相同部分ec1i、ec2i或这些踪迹的其它部分。

应当注意,在执行图4中的其它步骤之前,可能已经收集了形成踪迹ci的值集(步骤s2和s3)。另外,在执行步骤s10到s20之前,可能已经针对每个踪迹ci构成表ht。

应用于机密数据sd和输入数据m[i]的运算opr/oprk可以是以下运算之一或它们的组合:

-对称或不对称加密或解密运算,其中机密数据sd是加密或解密密钥,

-使用机密数据sd的签名运算,

-与机密数据的模乘或非模乘(m[i]×sd),

-与机密数据的异或逻辑运算(异或)(m[i]xorsd),

-模幂运算,其中机密数据sd被用作指数(m[i]sdmodn,n是已知的),

-模简化运算,其中机密数据sd被用作模数(m[i]modsd),

-采用使用输入数据在替换表中选择的值的替换运算(sbox[m[i]],sbox位于替换表中),以及

-组合了以下两种运算的运算:即,应用于机密数据的逻辑异或运算,和采用使用异或运算的结果在替换表中选择的值替换逻辑运算的结果的替换运算(sbox[m[i]xorsd])。

更一般地,该运算必须使得能够仅基于机密数据的一部分和输入数据来计算运算的最终值的一部分。

为了突显与有关机密数据的信息对应的累积值,可以将所有表ht的内容彼此相加,以获得由函数f1返回的每个可能值的累积出现次数表。从表ch[g,vl]的位置中累积的所有表中减去该累积总和表的值。因此,可以根据图7所示的顺序来修改图4中的步骤序列。图7所示的步骤包括上述步骤s10到s20以及附加的步骤s21、s22和s23。在步骤s10之前执行的步骤s21中,索引i、一维表mht和二维表cpt被设定为0。在步骤s10,二维表ht[0..ix,1]之前已经填充了包含针对所有踪迹ci在步骤s7生成的所有表。将步骤s22插入由索引l控制的循环(在步骤s13和s15之间),由此可以例如在步骤s13之后选择由函数f1提供的值中的一个。在步骤s22,处理单元pc将每个值ht[i,l]累积在由索引l指定的位置处的累积总和表mht中。以这种方式,在处理结束时,表mht将包含针对每个踪迹ci获得的索引i的全部值ht[i,l]的和。在由索引i控制的循环的每次迭代时执行一次步骤s23,从而例如可以在步骤s15之后选择踪迹ci中的一个。步骤s23使能对累积在表ch的每个位置ch[g,vl]中的表ht[i,l]的数量计数。该计数的结果被存储在表cpt中。

图8表示为了尝试确定要搜索的机密数据sd的一部分的值而执行的表ch的统计处理的一个实例的步骤s31到s43。连续执行步骤s31到s37。在步骤s31,将索引vl设定为0,并且将表tt的所有位置设定为1。在步骤s32,将索引g和表it的所有位置设定为0。在步骤s33,将索引l被设定为0。在步骤s34,变量t接收由索引g、vl和l选择的包含在表ch中的值ch[g,vl,l],该值被除以位于表cpt中的位置cpt[g,vl]处的计数值。在步骤s35,位于表it中的位置g处的值it[g]按照变量t的值与被除以踪迹ci的总数ix的、由索引g和vl指定的存储在表mht中的值mht[g,vl]之间的差的平方递增。在步骤s36,索引l递增一(1)。在步骤s37,将索引l与其最大值lx进行比较。如果索引l已经达到其最大值1x,则执行步骤s38到s40,否则执行从步骤s34开始的新迭代。

在步骤s38,用在步骤s35到s37计算的值it[g]乘以表tt中由索引g指定的值tt[g]来更新值tt[g],执行1x次。在步骤s39,索引g递增一(1)。在步骤s40,将索引g与其最大值gx进行比较。如果索引g大于其最大值gx,则执行步骤s41和s42,否则执行从步骤s33开始的新迭代。在步骤s41,索引vl递增一(1)。在步骤s42,将索引vl与其最大值vlx进行比较。如果索引vl大于其最大值vlx,则执行步骤s43,否则执行从步骤s32开始的新迭代。在步骤s43,作为统计分析的结果返回表tt。

因此,在包括步骤s32到s42的处理循环的最后一次迭代时,表it和tt包含以下值:

其中并且

其中运算符“==”表示当相等为真时等于1的相等测试,并且当相等为假时,相等测试为0,表it在步骤s32被设定为0,并且在步骤s35针对索引vl的每个新值加载表it。

因此,cpt[g,vl]表示条件(f2(opr(m[i],g))==vl)为真的次数。如果在执行运算oprk时机密数据sd被泄漏,则表tt的一个位置包含比该表中存储的其它值高得多的值。结果是要搜索的机密数据sd的所述部分等于表tt中的最高值的索引g。

应当注意,在对应于等式(6)的步骤s38,可以加上表it的值而不是相乘。乘法运算的实现只是允许增大表tt的各值之间的差,因此更好地突显对应于要搜索的机密数据部分的最高值。还可以考虑将对数函数应用于表it的值,并且对在表tt中所获得的对数值执行加法累积。当表it的值相加时,它们能够按照以下方式被加权:

图9表示为了尝试确定要搜索的机密数据sd的一部分的值而执行的表ch的统计处理的另一实例的步骤s51到s67。该处理基于香农熵函数。连续执行步骤s51到s56。在步骤s51,将索引g设定为0,并且将表tt的所有位置设定为0。在步骤s52,将索引vl设定为0。在步骤s53,将索引l和变量sxy设定为0。在步骤s54,使变量sxy按照由索引g、vl和l指定的表ch中选择的值ch[g,vl,l]递增。在步骤s55,索引l递增一(1)。在步骤s56,将索引l与其最大值lx进行比较。如果索引l已经达到其最大值lx,则执行步骤s57到s61,否则执行从步骤s54到步骤s56的新迭代。在步骤s57,将索引l和变量pxy设定为0。在步骤s58,变量vxy接收索引g、vl和l在表ch中选择的值ch[g,vl,l],该值被除以通过步骤s54到s56的迭代计算的变量syx。在步骤s59,变量pxy按照变量vxy与变量vxy的对数(例如,以2为底数)的乘积递增。在步骤s60,索引l递增一(1)。在步骤s61,将索引l与其最大值lx进行比较。如果索引l已经达到其最大值lx,则执行步骤s62到s64,否则执行从步骤s58到步骤s61的新迭代。

在步骤s62,通过从由表tt中的索引g指定的值tt[g]中减去被除以踪迹ci的数量ix的值cpt[g,vl]与变量pxy的乘积来更新值tt[g],值cpt[g,vl]由在步骤s22填充的表cpt中的索引g和vl指定。在步骤s63,索引vl递增一(1)。在步骤s64,将索引vl与其最大值vlx进行比较。如果索引vl大于其最大值vlx,则执行步骤s65和s66,否则执行从步骤s53开始的新迭代。在步骤s65,索引g递增一(1)。在步骤s66,将索引g与其最大值gx进行比较。如果索引g大于其最大值gx,则执行步骤s67,否则执行从步骤s52开始的新迭代。在步骤s67,作为统计分析的结果,返回表tt。

因此,在执行最后一次迭代时,在步骤s65之后,表tt包含以下值:

其中针对索引g和vl的每个值计算并且索引g的每个值表示要搜索的密钥部分的可能值。如果机密数据sd在处理运算oprk时被泄漏,则表tt的一个位置包含比该表中存储的其它值高得多的值。结果是要搜索的机密数据sd的所述部分等于表tt中的最高值的索引g。

图10和11以曲线cc1、cc2的形式表示作为索引g的函数的表tt的内容的一个实例。曲线cc1已经通过执行图8中的步骤获得,曲线cc2已经通过执行图9中的步骤获得。在图10和11的实例中,索引g具有一个字节的长度(从而从0变化到255),并且曲线cc1和cc2已经通过数量达到500,000的大量踪迹ci获得。与表tt中包含的其它值相比,曲线cc1和cc2在值g=168处具有明显的峰值。曲线cc1中的峰值比表tt的其它值约大三十倍。在曲线cc2中,峰值比表tt的其它值大三倍。取决于表ch的统计处理,可以认为,当通过增加所分析的踪迹ci的数量而获得的峰值保持为比最接近的值大0.9倍的值时,要搜索的机密数据部分泄漏。

为使诸如集成电路的电路能够成功地通过已知的资格或认证程序,这些电路的设计者提供了涉及引入时间变量的最常规的应对措施。表ht中的值的计算允许从所分析的值中移除时间方面,并且避免必须同步或在时间上对准所分析的值的不同踪迹。如果关于要搜索的机密数据的信息在所分析的数据中,则先前描述的测试方法使能确定所有或部分机密数据。因此,先前描述的测试方法能够检测由电路操纵的机密数据是否在能够从该电路外部获取的信号中泄漏。

因为先前描述的测试方法组合了每个踪迹ci中的两个部分ec1i、ec2i,所以其为二阶方法。通过选择每个踪迹ci中的n个部分ec1i到ecni,并且通过将测试方法应用于每个可能的不同组合,能够将先前描述的测试方法应用于n阶(n大于2),该每个可能的不同组合根据以下等式,将每个踪迹ci中的每个部分ecki(k的范围从1到n)中的一个值组合在一起:

其中mk的范围从kk到kxk,并且j的范围从0到

引用的参考文献

[1]作者p.c.kocher,“timingattacksonimplementationofdiffie-hellman,rsa,dss,andothersystems”,nealkoblitz编辑,advancesincryptology-crypto'96,计算机科学讲义第1109卷,第104-113页,springer,1996年。

[2]作者p.c.kocher、j.jaffe和b.jun,“”differentialpoweranalysis”,m.j.wiener编辑,advancesincryptology-crypto'99,计算机科学讲义第1666卷,第388-397页,springer,1999年。

[3]作者e.brier、c.clavier和f.olivier,“correlationpoweranalysiswithaleakagemodel”m.joye和j-j.quisquater编辑,cryptographichardwareandembeddedsystems-ches2004,计算机科学讲义第3156卷,第16-29页,springer,2004年。

[4]作者j.-j.quisquater,“electromagneticanalysis(ema):measuresandcounter-measuresforsmartcards”,smartcardprogrammingandsecurity,springerberlin/heidelberg,第2140、2001卷,第200-210页。

[5]作者s.chari、j.r.rao和p.rohatgi,“templateattacks”,kaliskijr.、b.s.、c.k.、paar、c(编辑)ches2002.lncs,第2523卷,第172-186页,springer,heidelberg(2003年)。

[6]作者b.gierlichs、l.batina、p.tuyls和b.preneel,“mutualinformationanalysis”,ches2008,lncs的第5154卷,第426-442页,springer,2008年。

[7]作者e.prouff、m.rivain、r.bevan,“statisticalanalysisofsecondorderdifferentialpoweranalysis”,ieeetransactionsoncomputers,第58卷,第6期,2009年6月。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1