在实现密钥加密算法的电子元件中的对抗方法技术

技术编号:3531768 阅读:199 留言:0更新日期:2012-04-11 18:40
在使用一种密钥加密算法K的电子元件中,操作包括若干连续的计算循环T1、T6以便由在第一循环提供的初始输入数据L0,R0提供在最后循环的最后输出数据L16,R16,该方法在于将第一随机值u施加到为每个循环设计的计算装置(TC↓[M])以在输出获得不可预测的数据(a*u)。本发明专利技术的特征在于进一步将第二随机值加到所述在输入第一循环T1时施加的初始输入数据L0和R0。(*该技术在2020年保护过期,可自由使用*)

【技术实现步骤摘要】

本专利技术涉及一种。它们被用于对服务或数据的访问被严格控制的情况下。它们具有在微处理器和存储器周围形成的结构,其中一个是含有密钥的程序存储器。这些元件尤其被用于某种用途的智能卡中。所述的用途例如有访问某个数据库,银行应用或者远方支付应用,例如电视费,汽油费或者高速公路的通行费。因此这些元件或这些卡执行密钥加密算法,最常用的一种算法是DES(数据加密标准)算法。其它的加密算法例如有RC5算法或COMP128算法。上面列出的当然并非穷举。简短并且一般地说,这些算法的功能是由主系统(服务器,自动柜员机等)和包含在卡中的密钥由输入(对于卡的输入)提供的信息计算加密信息,并然后对主系统提供所述加密信息,这例如使得主系统准许所述元件或卡交换数据等。然而,已经发现,这些元件或这些卡易于受到攻击,其中包括差动电流消耗分析,这使得具有不良企图的第三方能够求出密钥。这些攻击被称为DPA攻击(差动功率分析)。DPA攻击的原理基于这样的事实,即执行指令的微处理器的电流消耗按照被处理的数据而改变。尤其是,处理数据位的微处理器的指令根据所述数据位的值是“1”或者是“0”产生两个不同的电流曲线。一般地说,如果指令正在处理“0”,则在执行该指令的时刻具有一个第一消耗电流幅值,如果指令正在处理“1”,则具有和第一个不同的第二消耗电流幅值。加密算法的特征是公知的进行的计算和使用的参数是公知的。唯一未知的是含在程序存储器中的密钥。这不能从在输入提供的唯一的已知信息和接着提供的加密信息导出。不过,在加密算法中,某个计算的数据只取决于在卡的输入明确提供的信息和在卡中包含的密钥。在所述算法中计算的其它数据也可以由加密信息(一般在卡对主系统的输出被明确地提供)和卡中包含的密钥被唯一地再次计算。更精确地说,这些特定数据项的每一位可以由输入或输出信息和密钥的特定位的有限的数量确定。因而,特定数据项的每一位具有和其相应的由密钥的位的特定的组构成的子密钥。这些可以被预测的特定数据项的位在本文的其余部分被称为目标位。因而DPA攻击的基本思想是根据指令正在处理“1”或者“0”使用指令的电流消耗曲线(Current consumption Profile)的差别,并且能够通过来自已知的输入或输出信息的算法的指令和假设相应的子密钥计算目标位。因此DPA攻击的原理是通过对大量的电流测量曲线(Currentmeasurement curves),每个曲线和攻击者已知的输入信息相关,应用布尔选择函数,子密钥假设的函数,以及利用对目标位预测的值对于每个曲线规定的函数检测一个已知的子密钥假设。作出有关的子密钥假设事实上使得能够预测对于给定的输入或输出这个目标位应当取“0”或者取“1”的值。然后,作为布尔选择函数,可以应用对于所考虑的子密钥假设预测的目标位的值“0”或者“1”,以便按照子密钥假设把这些曲线分成两束第一束把目标位作为“0”被处理的曲线收集在一起,第二束以目标位作为“1”被处理的曲线收集在一起。通过计算每束中的电流消耗平均值,获得用于第一束的平均消耗曲线M0(t)和用于第二束的平均消耗曲线M1(t)。如果子密钥的假设是正确的,则第一束实际上收集了在N个曲线当中所有目标位以“0”被处理的曲线,第二束实际上收集了N个曲线当中目标位以“1”被处理的曲线。此时第一束的平均消耗曲线M0(t),除去在关键的指令被执行的时刻之外,将任何时刻具有平均消耗,具有以“0”为目标位被处理的电流消耗曲线特征(曲线0)。换句话说,对于所有这些曲线,所有被处理的位具有“0”值的机会和具有“1”值的机会一样多,除去总是具有“0”值的目标位之外。这可以被写成M0(t)=〔(曲线0+曲线1)/2〕t≠tci+〔曲线0〕tci,即M(t)=〔Vmt〕t≠tci+〔曲线0〕tci其中tci代表关键指令被执行时的关键时刻。类似地,第二束的平均消耗曲线M1(t)相应于除去在执行关键指令的时刻的任何时间的平均消耗,具有以“1”为目标位被处理的电流消耗曲线特征(曲线1)。可以写成下式M1(t)=〔(曲线0+曲线1)/2〕t≠tci+〔曲线1〕tci,即M1(t)=〔Vmt〕t≠tci+〔曲线1〕tci可以看出,两个曲线即曲线0和曲线1不相等。此时曲线M0(t)和M1(t)之间的差给出信号DPA(t),在处理这一位的关键指令被执行的关键时刻tci,在附图说明图1表示的例子中,在位置tc0到tc6,其幅值等于曲线0-曲线1,除去所述关键时刻之外,其幅值近似等于0。如果子密钥的假设不正确,则所作的分类和实际不符。在统计上说,此时在每束中目标位实际上以“0”被处理的位的曲线的数量和目标位以“1”被处理的曲线的数量一样多。此时合成的平均曲线M0(t)位于由(曲线0+曲线1)/2=Vm给出的平均值附近,因为,对于每个曲线,包括目标位在内的所有位,具有为“0”值的机会和具有为“1”值的机会一样多。对第二束进行同样的推理得到平均电流消耗曲线M1(t),其幅值位于由(曲线0+曲线1)/2=Vm给出的平均值附近。在这种情况下,由差M0(t)-M1(t)提供的信号DPA(t)基本上等于0。图2说明在假的子密钥假设的情况下的信号DPA(t)。因而,DPA攻击使用在按照被处理的位执行指令期间电流消耗曲线的差值,以便按照对于给定的子密钥假设的布尔选择函数进行电流消耗曲线分类。通过进行在所获得的两束曲线之间的平均电流消耗的差动分析,获得信息信号DPA(t)。总之,DPA攻击的步骤包括a取N个随机信息(例如N等于1000);b使卡对于N个随机信息的每个信息执行算法,绘制每次的电流消耗(在元件的电源端测量的)曲线;c假设一个子密钥;d对于每个随机信息,预测由一个目标位取的值,所述的值仅仅和信息的位(输入或输出)以及假设的子密钥有关,以便获得布尔选择函数;e按照布尔选择函数(即按照对在子密钥假设下的每个曲线的这个目标位预测的值※§或※§)对分类进行分类;f在每束中计算最终的平均电流消耗曲线;g计算这些平均曲线的差,从而获得信号DPA(t)。如果假设的子密钥是正确的,则布尔选择函数是正确的,并且在第一束中的曲线实际上相应于在输入或输出提供的信息在卡中在※§给出目标位的曲线,以及在第二束中的实际上相应于在输入或输出提供的信息在卡中在※§给出目标位的曲线。这是图1的情况因此信号DPA(t)在相应于执行关键指令(处理那些目标位的指令)的时刻tc0-tc6不为0。应当注意,攻击者不需要精确地知道关键时刻。只知道在获取时间间隔内的至少一个关键时刻便足够了。如果子密钥假设不正确,则分类和实际情况不符,此时在每束中具有和相应于在※§的目标位的曲线的数量一样多的实际上相应于在※§的目标位的曲线。信号DPA(t)在任何时刻基本上是0(图2所示的情况)。需要返回步骤c,并假设新的子密钥。如果所作假设被证明是正确的,则程序可以进入判断其它的子密钥,直到所述密钥尽可能被重构。例如,利用DES算法,利用64位密钥,只有56位是有用的。利用DPA攻击,至少可以重构56个有用的位中的48位。本专利技术的目的在于在电子元件中实现一种实现0信号的DPA(t)的对抗方法,即使在子密钥假设是正确的情况下。用这种方式,不可能识别正确的子密钥假设的情况和错误的子密钥假设本文档来自技高网...

【技术保护点】
一种在执行密钥(K)加密算法的电子元件中的对抗方法,所述算法的实施包括多个连续的计算循环(T1……T16),以便由提供给第一循环的第一输入数据(L0,R0)提供在允许产生加密信息(C)的最后循环(T16)的输出的最后数据(L16,R16),每个计算循环使用用于由输入数据项(E)提供输出数据项(S)的计算装置(TC),所述计算装置包括应用第一随机值(u),以便在输出获得一个不可预测的数据项(S*u),其特征在于,所述方法包括使用按照异或操作对所述第一输入数据(L0,R0)提供第二随机值(v)的装置。

【技术特征摘要】
...

【专利技术属性】
技术研发人员:O伯努瓦
申请(专利权)人:格姆普拉斯公司
类型:发明
国别省市:FR[法国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1