使电路免受侧信道分析的方法与流程

文档序号:11432551阅读:254来源:国知局
使电路免受侧信道分析的方法与流程

本发明涉及一种用于使电路免受侧信道分析的方法,所述侧信道分析旨在发现由所述电路处理的机密数据的值,具体地说,由加密算法用于传输消息的密钥。

本发明特别涉及实现密码算法的设备,诸如安全设备(智能卡集成电路、安全元件、安全存储卡)、移动设备(移动电话、智能手机、物联网)、家用和汽车设备、以及集成到计算机和其他电子和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])。所有上述攻击都基于所有被分析的踪迹的时间对准。换言之,在给定时间(例如从命令的执行被电路激活的时间)执行的所有测量必须对应于由算法处理的相同值。

为了保护此类电路及其执行的密码算法免受这些侧信道攻击,通常提供应对措施。几种普遍的应对措施均旨在避免这种时间对准。为此,这些应对措施引入为计算电路定速的时钟频率的变化,或引入伪时钟周期或伪运算。另几种应对措施涉及使得要保护的算法适合独立于由电路处理的数据的实际值来呈现这些数据。这几种应对措施中的某些应对措施被称为“掩蔽型应对措施”-使用随机掩码(二进制数),在执行加密方法期间,这些随机掩码与另一要保护的数据(例如密钥和/或消息)组合在一起。此类应对措施是有效的,但是需要修改算法,因此,在由协处理器执行的情况下,需要专用于实现此应对措施的协处理器,或者在由微电路的中央处理单元或编程协处理器执行的情况下,需要更复杂的程序。

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

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

专利申请us2009/074181和us2008/019503公开了保护运算的方法,包括以相同的概率将运算应用于密钥的所有可能值。

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

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



技术实现要素:

某些实施例涉及一种用于由电路执行接收输入数据并提供输出数据的运算的方法,所述方法包括:根据所述输入数据或中间数据选择替换表中的替换元素,所述替换元素是第一数据集,所述替换表中能够根据输入替换数据被选择的每个替换元素是数据集;以及提供所述第一数据集作为所述运算的中间结果或最终结果,所述第一数据集包括所述输出数据并且使得:在将选定满射函数应用于所述第一数据集所产生的变换后的数据集中,变换后的输出数据出现的概率等于将所述满射函数应用于所述第一数据集中的其它数据所产生的每个变换后的数据出现的概率,所述输出数据在所述第一数据集中的位置为所述电路所已知。

根据一实施例,由将所述满射函数应用于形成所述替换表中的替换元素之一的每个数据集所产生的相应变换后的数据包括易于由所述满射函数提供的所有可能数据的相同出现次数。

根据一实施例,根据所述电路的数据泄漏模型来选择所述满射函数。

根据一实施例,所述满射函数是以下函数之一:恒等函数;这样的函数:其提供结果值,该结果值然后可被简化为对应于汉明权重的值;以及这样的函数:其提供该函数被应用到的值的汉明权重。

根据一实施例,被应用于所述机密数据和所述输入数据的运算包括以下运算中的至少一者:对称或不对称加密或解密运算;签名运算;与机密数据的模乘或非模乘;与机密数据的逻辑异或运算;使用机密数据作为指数的模幂运算;以及使用机密数据作为模数的模简化运算。

某些实施例还可以涉及一种被配置为实现上面定义的方法并包括处理器的电路。

根据一实施例,所述电路包括协处理器。

某些实施例还可以涉及一种包括布置在介质上的如以上所述的电路的设备。

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

附图说明

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

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

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

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

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

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

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

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

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

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

图12和图13表示根据各种实施例的包括应对措施步骤的加密运算的步骤;

图14表示根据一个实施例的依照应对措施方法变换的替换表;

图15表示根据一个实施例的安全电路。

具体实施方式

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

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

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

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

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

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

在步骤s19,处理单元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到s19搜索的机密数据部分例如可以在8或16位上定义。在8位的情况下,索引g被连续地分配给0和255(或1和256=28)之间的全部值。应当注意,测试g的值的顺序对于测试的结果而言不重要。要搜索的机密数据部分也可以在诸如16、32或64位的较宽的字上定义。

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

应当注意,在执行图4中的其它步骤之前,可能已经收集了形成踪迹ci的值集(步骤s2和s3)。另外,在执行步骤s9到s19之前,可能已经针对每个踪迹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所示的步骤包括上述步骤s9到s19以及附加的步骤s20、s21和s22。在步骤s9之前执行的步骤s20中,索引i、一维表mht和二维表cpt被设定为0。在步骤s9,二维表ht[0..ix,1]之前已经填充了包含针对所有踪迹ci在步骤s6生成的所有表。将步骤s21插入由索引l控制的循环(在步骤s12和s14之间),由此可以例如在步骤s12之后选择由函数f1提供的值中的一个。在步骤s21,处理单元pc将每个值ht[i,l]累积在由索引l指定的位置处的累积总和表mht中。以这种方式,在处理结束时,表mht将包含针对每个踪迹ci获得的索引i的全部值ht[i,l]的和。在由索引i控制的循环的每次迭代时执行一次步骤s22,从而例如可以在步骤s14之后选择踪迹ci中的一个。步骤s22使能对累积在表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的、由索引l指定的存储在表mht中的值mht[1]之间的差的平方递增。在步骤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。

应当注意,在对应于等式(3)的步骤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。

因此,在执行最后一次迭代时,在步骤s66之后,表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中的值的计算允许从所分析的值中移除时间方面,并且避免必须同步所分析的值的不同踪迹。如果关于要搜索的机密数据的信息在所分析的数据中,则先前描述的测试方法使能确定所有或部分机密数据。

适当的应对措施

某些实施例涉及使得电路能够在包括前述测试方法的资格或认证测试期间被使用的应对措施手段。

这里提出保护加密运算免受由前述测试方法实施的分析。在此上下文中,运算接收输入数据,并且根据输入数据的值提供输出数据。根据一个实施例的应对措施包括对于一组输入数据的所有数据执行要保护的运算,所述一组输入数据仅包括一次易于被运算处理的所有可能的数据,因此包括要由运算处理的数据。另一个应对措施包括作为运算的结果提供一组输出数据,所述输出数据仅包括一次易于由运算提供的所有可能的数据。该组输出数据可以被简化为数据的子集,其中应用所选择的满射函数得到的变换后的数据仅包括一次所有易于被该函数获得的数据,其中包括预期来自运算的输出数据,这些输出数据对应于输入数据。所选择的满射函数可以对应于要保护的电路或软件程序的泄漏模式。

与现有技术的应对措施不同(现有技术涉及在有关随机数据的大量相同运算中“淹没”要保护的运算,因此与要保护的操作的输入数据不相关),本文的理念是针对不是随机选择的其它数据执行运算。实际上,这种其它数据与输入数据相关,只要由这种其它数据和要处理的数据形成的集合包括易于由运算处理的所有数据。

图12表示根据一个实施例的用于计算涉及机密数据sd的加密运算的方法的步骤s71到s77。此方法被配置为成功地通过上述测试。连续执行步骤s71到s76。在步骤s71,变量rn接收0与根据用于以二进制码对该变量进行编码的位数确定的最大值nx之间的随机值。因此,如果变量rn在8位上编码,则nx等于255。在步骤s72,将索引n设定为0。在步骤s73,通过以异或运算将索引n与变量rn组合来计算变量irn。在步骤s74,通过将上面定义的加密运算opr应用于输入数据m和机密数据sd来计算由结果表rs中的索引n指定的输出数据rs[n]。根据一个实施例,机密数据sd在此例如通过与变量irn的异或运算(异或)被组合:

表示异或运算符。

备选地,变量irn可以与输入数据m组合:

或者与运算的结果组合:

在步骤s75,索引n递增一(1)。在步骤s76,将索引n与最大值nx进行比较,如果它小于或等于最大值nx,则执行从步骤s73到s76的计算的新迭代。在相反的情况下,执行步骤s77。在步骤s77,返回在索引n1处的表rs中包含的要搜索的输出数据,该索引n1具有其中变量irn为0的迭代的索引n的值,前提是在步骤s74与值irn的组合运算是异或运算。实际上,应用于数据d和0的异或运算的结果不变换数据d。应当注意,在步骤s77,在其它运算之后,能够提取表rs中要搜索的输出数据。在这种情况下,存储在表rs中的所有数据由此类其它运算处理。因此,例如在aes算法的情况下,运算opr例如是将输入数据与在第一轮算法中使用的第一密钥相组合的异或运算。可以对存储在表rs中的所有数据执行aes算法的以下运算,并且将这些运算的连续结果存储在表rs中。因此,移动行和混合列的运算可以被应用于表rs的每个元素。能够在被认为对攻击不太敏感的处理中的随后步骤从结果表rs提取要搜索的输出数据。这些布置也适用于des或三重des算法。

此外,输入数据m和机密数据sd由具有相同位数的二进制字进行编码。赋予变量irn的每个值还必须具有与数据m和sd相同的位数。如果数据m和sd由8位字编码,则变量irn也在8位上编码。必须在步骤s73到s76之间执行的迭代次数nx等于2x,x是数据m和sd的位数的大小。如果数据m和sd由16、32或64位的字编码,则需要限制该迭代次数。为此,可以将变量irn在8位上编码,并且可以通过将变量irn与其自身串接多次以形成机密数据sd或输入数据m的大小的字,来执行将机密数据sd或输入数据与变量irn组合的运算。因此,在数据m和sd在16位上编码的情况下,8位上的变量irn与其自身串接以获得16位上的数据。然后,在步骤s73执行的运算变为:

“//”表示二进制字的串接运算符。在数据m和sd在32位上编码的情况下,8位上的变量irn的每个值与其自身串接3次以获得32位上的值。然后,在步骤s73执行的运算变为:

更一般地,当在每次迭代时将变量irn与运算opr的输出数据组合时,可以以这样的方式选择变量irn的值:通过应用所选择的满射函数f3得到的它们的变换值仅包括一次易于被该函数获得的所有可能值。函数f3可以是恒等函数,如对于图12中的步骤那样,或者是图像集较小的函数,如在图13中那样。

因此,图13表示根据另一实施例的用于计算涉及机密数据sd的加密运算的方法的步骤s80到s92。此方法被配置为成功通过前述测试。连续执行步骤s80到s84。步骤s80与步骤s71相同。在步骤s81,将索引n设定为1,将索引m设定为0。在步骤s82,表rs1的索引0处的值接收应用于输入数据m和机密数据sd的运算opr的结果,该结果通过异或运算与随机数据rn组合。步骤s83与步骤s73相同。步骤s84与步骤s74相同,除了在该步骤中执行的计算的结果由变量res存储。另外,在步骤s83计算的数据irn通过异或运算与运算opr提供的结果相组合。在步骤s85,将通过应用函数f3得到的变量res的变换值与表rs中存储的其它数据的函数f3的变换值进行比较,其它数据位于由低于或等于索引m的索引指定的位置处。如果变量res的变换值f3(res)与这些其它数据不同,则在步骤s86和步骤s87将索引m递增一(1),并且将变量res存储在表rs1中由索引m指定的位置处。否则存在索引n2,以使得变量res的变换值f3(res)等于表rs中位于索引n2处的值rs1[n2]的变换值f3(rs1[n2])。在这种情况下,在步骤s88将索引n与索引值n1进行比较,其中运算opr的未掩蔽结果存储在表rs(n1⊕rn=0)中。如果索引n等于索引值n1,则结果res是运算opr的真实结果,并且在步骤s89将其存储在表rs1中的索引n2处。在步骤s87、s89和s88之后(当索引n不对应于索引n1时)执行索引n递增一(1)的步骤s90。在下一步骤s91,将索引n与最大值nx进行比较,如果它小于或等于最大值nx,则执行从步骤s83到s91的计算的新迭代,否则执行步骤s92。步骤s92与步骤s77相同,除了它被应用于表rs1以外。

可以选择函数f3以便对应于要保护的电路或软件程序的泄漏模式。因此,函数f3例如可以是汉明函数。

当要保护的运算包括在与运算的输入数据、要保护的机密数据或可以从中确定机密数据的数据对应的索引处读取查找表的运算时,能够实现另一应对措施。根据一个实施例,读取整个查找表,并且例如将其加载到一组结果数据中(例如表rs)。如上所述,存储在表rs中的数据集可以在下一运算的输入处应用,表中的每个数据通过该运算被变换。由于表rs中的输出数据的位置是已知的,因此电路能够在任何时间提取输出数据。

根据一个实施例,查找表被变换成新表,其中每个位置包含易于被包含在该查找表中的所有可能值。因此,图14表示查找表t1,由此可以根据从0到p变化的输入值来确定加密运算的结果。根据一个实施例,表t1被替换为新表t2,新表具有附加维度,以使得索引i的所有可能值的t2[i,k0]=t1[i]位于0和p之间。此外,当k从0变为r时,所有值t2[i,k]包括易于被存储在表t1中的值的所有可能值。因此,如果这些值在一个字节上被编码,则索引k的最大值r等于255,当索引i被固定并且索引k从0变化到r时,所有值t2[i,k]是不同的。因此,由索引i指定的所有表t2[i,j]包含相同的值,但是排序不同。例如,可以通过以下方式定义表中的数据:

对于所有值,k从0变化到r。

因此,要保护的运算的执行涉及在结果表(例如表rs)中加载由通过输入数据(可能为机密数据)定义的索引i所指定的表t2的所有值:

rs[0..r]=t2[i,0..r]

如上所述,然后可以执行步骤s77或s90以获得在结果表rs中要搜索的输出数据。

使得t2[i,k0]=t1[i](即包含运算的输出数据)的索引k0的值可以对于整个表t2是固定的,也可以在表的每行上变化。例如,列t2[0..p,k0]可以包含表t1。在另一实例中,表元素t2[0,k0]可以等于元素t1[0],元素t2[1,k0+1]可以等于元素t1[1]等等,直到元素t2[p,(k0+p)mod(r+1)]等于t1[p]。如果在该实例中,从表t2的一行到下一行的移位间距是1,则其能够被设定为1与r-2之间的其它任何值。

代替包含0与r之间的全部值,由索引i选择的每个表元素t2[i]可以仅包含包括预期输出数据的值,以使得通过应用所选的满射函数f3而得到的它们的变换值全部不同,并且包括易于被该函数获得的所有可能值。如果函数f3再现机密数据的泄漏模式,则这种布置允许减小表t2的大小,而不降低该方法的鲁棒性。

应当理解,虽然表t1具有两个维度,但是表t2具有三个维度,表t1的每个元素被包含表t1的元素的所有可能值的一维表所替换。

图15表示根据一个实施例的布置在诸如塑料卡的便携式介质hd上,并且配备有应对措施的集成电路ct1。该集成电路包括与上面结合图1描述的集成电路ct相同的单元,并且与后者的不同之处在于:协处理器cp1被实现上述应对措施中的一个和/或另一个的协处理器cp2所替代。因此,根据一个实施例,协处理器cp2被配置为提供结果值的表,而不是加密运算的单个结果,其仅包括使得通过应用所选的满射函数而得到的它们各自的变换值全部为不同的值,并且包括易于被该满射函数获得的所有可能值,其中包括加密运算的预期结果。处理器prc与协处理器cp2匹配,以便获知加密运算的结果在由协处理器cp2提供的结果值的表中的位置。

协处理器cp2还可以被配置为执行加密运算的一部分。在这种情况下,处理器prc被配置为产生结果值的表,其仅包括值,以使得通过应用所选的满射函数而得到的它们各自的变换值全部不同,并且包括易于被该满射函数获得的所有可能值,其中包括加密运算的结果。

引用的参考文献

[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年。

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