在便携式数据载体中操作序列的执行期间的访问冲突的保护的制作方法

文档序号:6359835阅读:173来源:国知局
专利名称:在便携式数据载体中操作序列的执行期间的访问冲突的保护的制作方法
技术领域
本发明大体涉及在便携式数据载体中保护免受窥探(spy out)的技术领域。更具体地,本发明涉及在便携式数据载体执行操作序列并且在处理中发生高速缓存访问时防止窥探要保密的数据的技术领域。本文献的含义之内的便携式数据载体可以是例如不同构造类型的芯片卡(智能卡)或芯片模块或其他至少具有处理器核、主存储器和高速缓存存储器的有限资源系统。
背景技术
便携式数据载体频繁用于例如金融交易中的安全性关键的应用、移动通信中的授 权、比如用于电子签名的签名卡等等。因为未授权使用可以造成巨大破坏,所以在这样的数据载体上存储的保密数据必须被可靠地保护以免受窥探和操纵。已知各种攻击方法,其中,在程序执行期间测量数据载体的物理參数,以便得出关于要保密的数据的结论。例如,在简单功耗分析(simple power analysis, SPA)中,测量并检查计算处理期间数据载体的电流消耗。相反,在差分功耗分析(differential poweranalysis, DPA)中,在多个计算处理之上静态评估电流消耗。上述攻击通常叫做侧信道攻击(side channel attack),因为信息流不经由数据载体的主要通信信道发生,而是绕过它。2008年第5版,ff. Rankl和W. Effing、HanserVerlag 的书證“Handbuch der Chipkarten,,(“芯片卡手册'”)第 740-771 页的第 16. 5. I 章给出了各种攻击和阻挠(thwarting)方法的概述。侧信道攻击的阻挠也是诸如例如公开出版物 DE 198 22 218 AUffO 99/35782 AUffO 99/67919 A2 和 US 2002/0124178 Al 的各种专利文献的目标。检查已经示出,在具有高速缓存存储器的高性能数据载体中,存在侧信道攻击的额外可能性。通常可以在程序执行时的时间响应和/或电流消耗模式的基础上确定是否发生缓存命中或缓存未命中。由此信息,可以依次得出关于要保密的数据的结论,假设这些数据与所执行的操作序列相关ー并且特别是与在此操作序列中访问的数据值相关。作为处于窥探危险中的操作序列的示例,应该提及根据熟知的“平方乘”方法的利用指数d的数据值vl的模幂运算(modular exponentiation)。此方法例如描述为1996年CRC 出版社出版的由 A. Menezes、P. van Oorschot 和 S. Vanstone 著作的书籟“Handbook ofapplied cryptography”的第71页中的方法2. 143。例如在RSA计算中使用模幂运算。指数d形成私有RSA密匙并且因此必须被保护以免受窥探。根据“平方乘”方法的Vld mod N的计算循环发生,该计算从最高有效位起对指数d的每一位分别贯穿一次。在毎次循环首先平方中间值v2。如果指数d的拟位具有值“1”,则中间值v2进ー步乘以数据值vl。下列方法总计结果;由i=0、l、. . .、k的d (i)指定指数d的位位置,从而d=2i=(U,...,k d(i). 21应用SET v2:=l
FOR i=k, (k-1), ,1,0,EXECUTESET v2:=v2 v2modNIF d(i) =ITHEN SET v2:=v2 vl mod N在计算处理之后,v2=vld mod N应用。在计算期间对数据值vl和v2的访问模式取决于要保密的指数d的位。数据值vl和v2可以例如每个具有256字节(2048位)的大小。在便携式数据载体中,通常高速缓存存储器相对小并且可以例如具有2K字节的大小。如果高速缓存存储器已经由其他数据部分占用,则存在仅够用于两个数据值vl和v2中的一个而不是两个的空 间。在此情况下,在毎次d(i)=l的循环中导致至少一次缓存未命中,因为必须首先载入至少数据值vl。在d(i)=0的连续循环周期中,相反,不发生缓存未命中,因为总是数据值v2被访问。如同已经提及的,期待缓存未命中可从功耗分析(profile)识别,从而攻击者可以得出关于指数d的位的结论。在一些微控制器中,提供特殊命令以永久地在高速缓存中保持数据;这称为高速缓存的“阻塞”。然后,在毎次访问被阻塞的数据时,发生排他的缓存命中。但是,可安全处理的数据的量限定于高速缓存的大小。人们期待不受制于此限制。其他微控制器不具有任何高速缓存阻塞命令。在此情况下,人们期待可靠地防止上述类型的攻击。

发明内容
因此,本发明的目的是整体或部分解决上述问题并创造用于保护由便携式数据载体执行的操作序列免受窥探的技术,其中要阻扰的攻击场景是基于在操作序列的执行期间的高速缓存访问(特别是缓存命中和缓存未命中)的评估。在优选实施例中,当操作序列访问大数据量时或当数据载体不支持高速缓存阻塞命令时,本发明也应当是可应用的。根据本发明,通过具有权利要求I的特征的方法、根据权利要求11的计算机程序产品和根据权利要求12的设备(具体为便携式数据载体),整体或部分解决此问题。从属权利要求涉及本发明的一些实施例的可选特征。本发明从基本理念出发,按下列方式布置至少两个可以在操作序列的执行期间访问的数据值,即在包含第一数据值的部分的每条高速缓存行中,也包含第二数据值的部分。以此方式,确保了在访问两个数据值之ー时,缓存未命中和缓存命中的发生独立于是否访问第一或第二数据值。换句话说,攻击者不能从缓存未命中和缓存命中的模式中得出关于以何顺序访问何数据值的任何结论。从高速缓存行为中仅仅可以读出高速缓存访问的总次数,而访问进行了何种操作是不可识别的。在一些实施例中实现根据本发明的高速缓存存储器的占用,其中,第一和第二数据值以交叉或交错方式存储在主存储器中,从而当在高速缓存行中载入这些数据值之ー的部分吋,也需要将其他数据值的部分载入到此高速缓存行。在一些实施例中,提供另外数据值。如果每条高速缓存行大到足以分别容纳处理器核能够在执行操作序列时访问的每个数据值的ー个部分,则在ー些实施例中以交叉或交错方式利用第一和第二数据值将这些另外数据值存储在主存储器中,从而包含数据值之一的部分的主存储器中的每个区段也分别包含每个其他数据值的部分。
相反,如果高速缓存行不够大,则在ー些实施例中在主存储器中形成区段组,从而包含数据值之一的部分的每个区段组也分别包含每个其他数据值的部分。操作序列在最后提及的实施例中可以按下列方式配置,即,当处理器核访问在区段组的区段中包含的数据值的部分时,也访问这些区段组的全部其他区段。在一些实施例中,数据值概念性地分为若干等同部分,其中,每个数据值的每个部分中的位数是例如ニ的净幂(cIean power )和每条高速缓存行的參考数据中的位数的净分数(clean fraction)。例如,当姆条高速缓存行的參考数据中的位数达到32位或64位时,每个部分可以具有8位或16位。在一些实施例中,操作序列实现在开头提及的类型的方法,例如,用于模幂运算的“平方乘”方法。本发明的实施例也可以用于其他操作序列,例如指数的窗ロ法,诸如例如在所提及的“ Handbook of Applied Cryptography”第14. 82章描述的。这里,在第一步中计算少量值(vl,v2, . . . , vn)0在第二步中,取决于要保密的指数,在循环中分别实现ー个值vi的ー个乘法。本发明的其他应用可能性是用于乘法的“双倍和相加”方法,特别是在椭圆曲线的计算中,诸如例如在Bodo Moeller于ISC 2001, Springer LNVS发表的"SecuringElliptic Curve Point Multiplication against Side-Channel Attacks'p. 324-334 或者在WO 02/091332 A2中描述的。这样的“双倍和相加”方法也可以与窗ロ法组合,为此目的,将指数变为合适的表达。根据本发明的计算机程序产品具有程序命令以实现根据本发明的方法。这样的计算机程序产品可以是物理介质,例如半导体存储器或磁盘或CD-ROM。但是,该计算机程序产品也可以是非物理介质,例如,经由计算机网络传输的信号。具体地,该计算机程序产品可以包含程序命令,该程序命令在其生产或初始化或个性化过程中合并于便携式数据载体中。根据本发明的设备可以具体地是便携式数据载体,例如,芯片卡或芯片模块。这样的数据载体以本技术领域已知的方式至少包含处理器核、多个存储器和各种辅助部件组,诸如例如接ロ电路、计时器和连接元件。在优选的进ー步开发中,计算机程序产品和/或设备具有对应于本描述中提及的和/或从属方法权利要求中提及的特征的特征。从示例性实施例和多个可替代实施例的下列描述中将得出本发明的进ー步的特征、目标和优点。对示意图进行參考。


图I示出了根据本发明的示例性实施例的数据载体的方框图,以及图2示出了示例性实施例中m个数据值被存储在主存储器的k个区段中的方式的图示。
具体实施例方式图I中呈现的便携式数据载体10被配置为芯片卡或芯片模块。以本技术领域已知的方式,该数据载体10包含微控制器12,该微控制器12被配置为具有处理器核14、主存储器16、高速缓存存储器18和接ロ电路20的集成半导体芯片。主存储器16分为多个存储器区段。在本示例性实施例中,作为存储器区段提供配置为ROM的永久存储器22、配置为EEPROM的非易失可覆写存储器24以及配置为RAM的工作存储器26。高速缓存存储器18具有多条高速缓存行28. 1,28. 2、…,它们在下面概括地称为高速缓存行28. X0每条高速缓存行28. X以本领域已知的方式包含管理数据30 (例如,有效位和标记)以及參考数据32。在这里描述的示例性实施例中,假定每条高速缓存行28. X的參考数据由预定数量m的存储器字组成。例如,在每条高速缓存行28. X中,可以包含四个字的參考数据32(m=4),其中字宽通常取决于微控制器12的总线宽度并可以例如总计达ー个字节。高速缓存行28. X是高速缓存存储器的最小単元。这意味着在向高速缓存存储器18的载入处理中,总是将參考数据32的全部m个字从主存储器16写入到对应的高速缓存行28. X,从而覆写目前在高速缓存行28. X中包含的全部參考数据32。配置微控制器12从而经由高速缓存存储器18访问主存储器16的至少ー个区域 34。在这里描述的示例性实施例中,为了简便,假定此“可缓存”区域34对应于工作存储器
26。但是,区域34仅包括工作存储器26的部分和/或非易失可覆写存储器24的额外部分的这种实施例也是可能的。而且,在这里描述的示例性实施例中,假定将区域34概念性地分为多个区段36. 1,36. 2、…,它们在下面概括地称为区段36. X。每个区段36. x也包含m个字,这些字在后续载入的毎次处理时被传输到刚好一条高速缓存行28. X0换句话说,安排在ー个单一区段36. X中的数据总是被联合地载入单一高速缓存行28. X。这并非暗示区段36. x在每次载入处理时被载入到相同的高速缓存行28. X,尽管存在一些如此情况的实施例。在此处描述的示例性实施例中,区段6. X将区域34无间隔地分为每个组m个存储器字的组,即在地址0开始。第X个区段36. X因此包括具有起始地址a=m* (x-1)的地址a、a+l、…、a+m-1的字。但是,在替代实施例中,可以不同地配置和布置区段36. X。具体地,区段36. X既不是相等大小也不需要它们以无间隔和不相重叠方式布置。相反地,区段36. X可以是区域34的任何期待的部分量,该区域34必须仅具有以下特性即,每个区段36. X的存储器字必须总是由一条高速缓存行28. X共同捕获。图I示例性地示出由两种不同类型的操作构成的操作序列,这两种类型的操作能够访问两个数据值Vl和v2并且是可比较的操作类型,从而它们实际上是不可区分的,假设高速缓存行为是相同的。不同的操作以交叉序列执行,其中访问的准确顺序取决于要保密的值并且将被隐藏。这样的操作序列在开头用“平方乘”方法的示例说明。在逻辑程序层面上,数据值vl和v2被被理解为所执行程序的变量。但是,在数据载体10上的实现中,数据值vl和v2被安排在主存储器16中并且可应用的话被额外安排在高速缓存存储器18中。发明的本实施例将借助于很短的数据值Vl和v2的示例来说明,数据值Vl和v2中的每个仅仅与高速缓存行28. X中的參考数据32 —样长。第一数据值vl被概念性地分为两部分Vl1和vl2,并且第二数据值v2被对应地分为两部分W1和v22。在主存储器16中以交叉方式,即以每个数据值vl、v2的各自ー个部分被安排在ー个各自区段36. X中的方式,存储数据值vl和v2。更准确地,第一区段36. I包含两个数据值vl、v2的第一个两部分Vl1和Vl2,而第二区段36. 2包含两个数据值vl、v2的第二个两部分W1和v22。如上所述,因为每当后续载入的每个处理时,完整地将主存储器16的一个区段36. X载入到刚好一条高速缓存行28. X,所以将数据值vl和v2的交叉布置从主存储器16自动地传输到高速缓存存储器18。因此,对于全部高速缓存行28. X来说以下是真实的,即,当数据值之一(例如vl)的部分(例如Vl1)被安排在高速缓存行28. X中时,在其中也包含另ー数据值(例如v2)的部分(例如W1X这样的后果是缓存命中或缓存未命中的发生独立于处理器核14是否访问第一数据值vl或第二数据值v2。因此,可以例如通过功率分析识别缓存未命中的攻击者不能从中得出关于访问了哪个数据值vl或v2的任何结论。如已经提及的,在图I的说明中,数据值vl、v2中的每ー个仅仅与主存储器16的区段36. X或高速缓存行28. X 一样长,因此特别短。在更实际的应用中,每个数据值vl、v2包括例如256字节,而每个区段36. X和每条高速缓存行28. x包含例如4字节的參考数据。在此情况下,数据值vl、v2必须被分配给总计128个 区段36. X, 从而每个这些区段36. x包含每个数据值vl、v2的至少一部分。这可以发生例如数据值vl、v2以每次ー个字节或两个字节的部分被交替地写入到区域34 (即以区段边界开始)。通常,这里描述的示例性实施例的原理可以总结如下假设ー操作序列,该操作序列潜在地(因此不需要每次执行都)访问n个数据值vi,i=l、2…、n。每个数据值vi分为k个部分= 1、2、…、匕现在这些部分V、在主存储器16中以如下方式布置即,包含至少ー个部分V、的每个区段36. X (并且因此还有每条高速缓存行28. X)也包含全部其他部分 vlj、v2j、 > VnjO原则上,部分Vij可以如期望的一祥长且不需要全部具有相同的长度。但是,在很多实际实施例中,由于效率原因,假设一致的区段长度,这可以例如总计I位或I个字节或2个字节或I个存储器字。数据值vi也不必需要具有相同的长度。但是,在一些实施例中,假设一致长度的数据值vi。为了此目的,例如可以通过増加任何期待的数据(填补)补足较短的数据值vi以实现相同的长度。图2图示了其中每个区段36. X具有m个存储器字的长度并假设相同数量的数据值vi (i=l、2、…、m)的示例性实施例。如果操作序列确实仅访问n个数据值(n < m),则生成至少概念上是哑变量的额外数据值V(n+1)、…、vm。而且,在此示例性实施例中,每个数据值vi包括恰恰k个部分Vij (j = 1、2、…、k),姆个部分vij包括恰恰ー个存储器字。随后部分Vij可以例如如下交替地存储在主存储器16中,即,在作为区段长度m的整数倍的起始地址开始Vl1^ v2^ . . . .、Vm1^ vl2、v22、. . .、vm2、.......vlk、v2k、. . .、vnk再次,适用于在每种情况下由一条高速缓存行28. X共同捕获全部部分Vlj. v2j、vnij。因此,当姆个高速缓存访问这些部分vlj、v2j、vmj之ー时,总是寻■址相同的高速缓存行
28.X0取决于数据是否被安排在高速缓存18中,出现缓存命中或缓存未命中。但是,因为命中或未命中的发生独立于要访问的部分vlp v2p vn^.中的哪个,所以攻击者不能从中得出关于所执行的计算处理的任何结论。在根据图2的示例性实施例中,假定区段36. X (以及对应的高速缓存行28. x)大得足以每个都容纳每个数据值vi的部分^。即使不满足此条件,在另外的实施例中可以应用本发明的想法。出于此目的,概念性地并入区段36.x以形成组,从而每个区段组总体具有足够的存储器空间用于每个数据值vi的各自ー个部分Vif然后以如下方式改变操作序列,即,在访问包含在区段组中的区段36. X时,也总是访问此区段组的全部其他区段36. X,即使要执行的计算不要求在其他区段36. X中包含的数据。在上述扩展的示例性实施例中,假设n个数据值vi,就像在图2的示例性实施例中,每个该数据值vi依次具有各自一个存储器字的k个部分Vip再次,如果需要的话,则数据值vi的一致长度可以通过増加哑数据来实现。进ー步,主存储器中的每个区段36. X包括m个存储器字,但是,其中在本示例中应用n>m。无限制地,假定,对于组大小g > 1,n=gm ;通过增加哑数据值而总是满足此条件。然后,以下列替代序列在主存储器16中存储数据值vi,类似于图2的示例性实施例,即起始地址是区段长度m的整数倍并且定义区段组的起始Vl1^ v2p、Vn1^ vl2、v22、 、vn2、.......vlk、v2k、 、vnk因此部分vl〗、v2j, . . .、Vnj分别被共同布置在g个连续区段36. x的ー个单ー组中。配置由处理器核14执行的程序,从而用对部分V(F1)j. v(r2)j.....v(rg)j的访
问序列取代对部分vij的姆次访问,其中应用rfi mod mill G {I, 2, ... rn丨并且应用T2=T^m, r3=r2+m直到rg=!^)+!]!。在这些部分中,仅仅需要部分Vij ;可以放弃全部其他部分。如果例如n=16个数据值vi和区段长度m=4,操作序列需要部分ち则执行访问部分v3j、v7j、vlOj、vl3j 的序列,因为应用 1^=71110(1 4=3, !"2=1^+4=7, r3=r2+4=10 和 r4=r3+4=13。在多于m个数据值vi的上述配置中,因为通过单条缓冲线28. x在每种情况下覆盖区域vij、v2j、. . .、Vmj内或v(m+l) j、v(m+2) . . .、v(2 m) j等中的访问,并且因为通过访问序列VCr1) j、v(r2)j、. . .、v(rg)j全部这些区域被各自恰恰寻■址一次,所以在访问数据字vi时的缓冲行为独立于i。同样地,因此,窥探缓存命中和缓存未命中的攻击者不能得出关于操作序列要求的数据值vi的索引i的任何结论。明显的是,这里描述的实施例和实现变式仅视作示例。而且,这里描述的特征的变式和组合对于本领域技术人员是直接显然的。
权利要求
1.一种保护由便携式数据载体(10)执行的操作序列免受窥探的方法,其中所述数据载体(10)至少具有处理器核(14)、主存储器(16)和带有多条高速缓存行(28. X)的高速缓存存储器(18),并且其中所述处理器核(14)在执行所述操作序列时能够访问至少两个数据值(vl、v2、. . .、vn, n彡2),其中所述至少两个数据值(vl、v2、. . .、vn)占用所述高速缓存存储器(18)中的至少一条高速缓存行(28. x)并且每个数据值被分为多个部分(vip, 其特征在于 在包含第一数据值(vi)的部分(vip的每条高速缓存行(28. X)中,也包含每个其他数据值(vk)的部分(vkp,从而缓存未命中或缓存命中的发生独立于是否访问第一或不同的数据值(vk)。
2.根据权利要求I的所述方法,其特征在于,所述数据值(vi)在主存储(16)中以交叉方式存储,从而在需要将这些数据值(vi)之一的部分(viP载入到高速缓存行(28. X)时也将每个其他数据值(vk)的部分(Vkj)载入到高速缓存行(28. X )。
3.根据权利要求I或2中的任ー项的所述方法,其特征在于,每个数据值(vi)均匀地分为多个部分(vij)。
4.根据权利要求3的所述方法,其特征在于,每个数据值(vi)的每个部分(vip中的位数是2的净幂并且是每条高速缓存行(28. X)的參考数据(32)中的位数的净分数。
5.根据权利要求I到4中的任ー项的所述方法,其特征在于,每条高速缓存行(28.x)大到足以分别容纳所述处理器核(14)能够在执行所述操作序列时访问的每个数据值(vi)的ー个部分(vij)。
6.根据权利要求I到5中的任ー项的所述方法,其特征在干, -所述主存储器(16)的区域(26)被分为多个区段(36. X),其中,每当缓存未命中吋,将区段(36. X)的内容从所述主存储器(16)载入到高速缓存行(28. X),并且 -包含数据值(vi)之一的部分(viP的每个区段(36. X)也分别包含每个其他数据值(vi)的ー个部分(vij)。
7.根据权利要求I到5中的任ー项的所述方法,其特征在于,每条高速缓存行(28.x)被要求小于分别容纳所述处理器核(14)能够在执行所述操作序列时访问的每个数据值(vi)的ー个部分(vij)。
8.根据权利要求7的所述方法,其特征在于 -所述主存储器(16)的区域(26)被分为多个区段(36. X),其中,每当缓存未命中吋,将区段(36. X)的内容从所述主存储器(16)载入到高速缓存行(28. X), -至少两个区段(36. x)中的每ー个联合形成ー个区段组, -包含数据值(vi)之一的部分(viP的每个区段组也分别包含每个其他数据值(vi)的部分(viP,并且 -配置所述操作序列,从而,当所述处理器核(14)访问在区段组的区段(36. x)中包含的数据值(vi)的部分(viP时,也访问该区段组的全部其他区段(36. X)。
9.根据权利要求I到8中的任ー项的所述方法,其特征在于,所述操作序列是如下方法其中,总是执行第一类操作,并且仅取决于要保密的值来执行第二类操作,所述第二类操作的执行是与所述第一类交叉的,这两种操作能够访问相同的数据值(vi )。
10.根据权利要求I到9中的任ー项的所述方法,其特征在于,所述操作序列是模幂运算。
11.ー种具有多个程序命令的计算机程序产品,所述程序命令使得至少ー个处理器核(14)执行根据权利要求I到10中的任ー项的方法。
12.—种设备,特别是至少具有处理器核(14)、主存储器(16)和高速缓存存储器(18)的便携式数据载体(10),其中,所述设备适配于执行根据权利要求I到10中的任一项的方法。
全文摘要
在一种保护由便携式数据载体(10)执行的操作序列免受访问冲突的方法中,数据载体(10)包括至少一个处理器核(14)、主存储器(16)和带有多条高速缓存行(28.x)的高速缓存存储器(18)。在执行操作序列期间,处理器核(14)能够访问至少两个数据值(v1、v2、...、vn),其中数据值(vi、vi、....、vn)占用高速缓存存储器(18)中的至少一条高速缓存行(28.x)并且每个数据值被分为多个部分(vij),从而缓存未命中或缓存命中的发生独立于访问哪个数据值(vi、vi、....、vn)。计算机程序产品和设备具有对应的特征。本发明用于基于在操作序列的执行期间高速缓存访问的评估来阻扰攻击。
文档编号G06F21/00GK102792310SQ201180013116
公开日2012年11月21日 申请日期2011年3月3日 优先权日2010年3月10日
发明者C.伦佩尔 申请人:德国捷德有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1