安全芯片中抵御模板攻击的密钥装载方法与流程

文档序号:11841880阅读:152来源:国知局

本发明涉及芯片安全领域,特别是涉及一种安全芯片中抵御模板攻击的密钥装载方法。



背景技术:

任何实际的密码设备在运行时都会散发出各种形式的信息,如功耗,电磁辐射,声音,运行时间等。这些信息可以被收集与分析并以此恢复出密码设备的秘密信息,这样的攻击就叫做旁路攻击。旁路攻击是针对密码算法的硬件实现的,而不是针对某个算法本身的。因此即使某个密码算法在数学上,在理论上被证明是安全的,它在实际应用中仍然有可能会以旁路攻击的方式被攻破。事实证明,密码算法的常规的实现方法通常无法抵抗旁路攻击。其中,Paul Kocher等人于1998年提出了功耗分析,而Suresh Charl等人在2002年的密码硬件与嵌入式系统国际会议上最早提出了模板攻击,随后,Dakshi Agrawal等人也在CHES 2005上发表文章提出将模板攻击方式与功耗分析相结合的攻击方法,即基于模板的DPA(差分功耗分析)。模板攻击的可怕之处在于,它可以完全避开密码运算本身而对密钥数据的载入展开分析,使得该攻击与密码本身的安全性完全无关。

在模板攻击中,攻击者先对一个可以自由配置的密码设备,进行建模。通常以字节为单位,对于所有的可能密钥值进行配置,并获取其传输时的功耗信息,将其功耗信息中的均值,协方差等统计相关信息进行记录完成 模板建立。而在攻击时,将其密钥传输的过程中的功耗信息与先前建立的模板进行匹配,就可以确定具体的密钥值。由于密钥数据的传输过程中,不同的字节数据的功耗特征确实有一定区别并可以在统计规律中被区分,因此模板攻击对于密钥载入过程的攻击十分有效,也成为了现今旁路攻击方向的研究热点。

而对于秘密数据的传输,传统的直接拷贝方式可以很轻易地被模板攻击所突破,因此,也有一些针对模板攻击的防御方式,比如在拷贝过程中增加随机因素,使得数据以随机的顺序被拷贝。

在该数据传输方法中,增加了一个随机序列的输入,给定了一个长度大小一定的随机序列rndSeq之后,源地址的数据以随机的顺序拷贝到目的地址。这样在其每次传输过程都不相同且无法预测,就无法在攻击时获得大量功耗的统计信息。

然而,在模板攻击的效率和精度不断提升的现在,这样的方法的安全性仍然不够,因为攻击者在建模时只要将所有的密钥数据设成相同的数值就能进行准确的建模了。而在攻击时,由于理想状况下,一次数据传输拷贝过程获得的功耗信息就有可能泄露所有的传输数据信息,因此攻击者虽然无法得到正确的顺序,但是可以得到全部的数据,只要进行一定次数的 穷举就能完成攻击与破解。

因此,这类纯粹加入随机因素的防御方法虽然有一定安全性,但仍有风险。



技术实现要素:

本发明要解决的技术问题是提供一种安全芯片中抵御模板攻击的密钥装载方法,具有更高的安全性,即使模板攻击能对芯片传输的数据进行完美的解析,仍然很难得到任何的密钥信息。

为解决上述技术问题,本发明的安全芯片中抵御模板攻击的密钥装载方法,包括以下步骤:

步骤1,定义一种密钥数据的变换规则,密钥数据通过该规则进行变换,变换后的密钥数据具有所有字节互不相同的特点,密钥数据后续的存储与传输都在变换后的数据上进行;

步骤2,在密钥存储时,将长度为n个字节的变换后的密钥按字节存储至真实密钥地址,并将另外256-n个字节的非密钥数据存储至混淆密钥地址;真实密钥地址和混淆密钥地址的并集称为密钥区;

步骤3:当密钥从密钥区读取传输时,以随机的方式按字节读取所有密钥区的数据,将真实密钥地址的密钥字节传输至正确的目的地址,将混淆密钥地址的非密钥数据传输至无关的目的地址;

其中,k<n≤256,0<k≤210,k为变换前的密钥长度,n为变换后的密钥长度。

步骤1中所述的密钥数据的变换规则,是一种任意的规则,并满足以下条件:

a、对于任意两个变换前不完全相同的密钥,其变换后的数据也不完全相同;

b、根据变换后的密钥能计算出原密钥。

步骤2中所述的另外256-n个字节指得是,与变换后的密钥的任意一个字节都不相等的所有可能字节值。由于变换后的密钥是互不相同的n个字节,因此满足条件的可能字节值有(256-n)个。

步骤2中的真实密钥地址和混淆密钥地址,总共是256个字节地址;当变换后的密钥为n个字节时,真实密钥地址为n个,混淆密钥地址为256-n个;真实密钥地址和混淆密钥地址可以是连续的,也可以是分散的。

步骤2中所述将另外256-n个字节的非秘钥数据存储至混淆密钥地址,其存储关系是任意的,也即可以将任意一个非密钥字节存储到混淆密钥地址中的任意一个。

步骤3中所述的无关的目的地址,其地址与真实的目的地址无重叠,并且与真实的目的地址是相同的存储介质,并有相同的结构,即数据存储时的功耗特征一致。

采用本发明的方法,在传输不同的密钥时,始终将256个字节数据(0x00-0xFF)都传输一遍,并且顺序是随机的。因此,即使模板攻击能破解传输数据的具体值,也对破解密钥信息没有任何帮助,仍然很难得到任何的密钥信息。

本发明可以规避纯粹加入随机因素的防御方法所存在的风险,具有更高的安全性。

具体实施方式

所述安全芯片中抵御模板攻击的密钥装载方法,涉及芯片中要将一组秘密数据(如密码算法中的密钥)从一种存储介质传输到另一种存储介质的过程中,抵御模板攻击的安全传输方案,并且涉及到了该秘密数据在存储介质中的存储方式。旨在消除不同密钥在传输时的可区分性,做到对于不同的两个密钥,其传输过程没有任何区别。因此,在传输真实密钥的同时,还必须添加虚假的密钥传输,使得总的传输过程达到一致。其具体步骤如下:

步骤1、定义一个密钥变换规则,将密钥数据按特定设计的规则进行变换,以增加总长度(字节数)为代价,使得变换后的密钥没有重复的字节数据,也即任意两个字节都不相同,并用变换后的数据进行存储和传输。

假设原密钥长度为k个字节,因此其共有256k种可能。如果变换后的密钥长度不变,其密钥空间仅为256!/(256-k)!。必然小于256k。故变换后的密钥长度增加是必然的。显然,原始的密钥长度和变换后的密钥长度都不能超过256。并且有256!/(256-k)!≥256k,可得k≤210。

当原密钥长度小于210个字节时,一定不存在这样的变换,因此,若需要传输的密钥超过210字节,则必需分段后再按本发明的规则存储、传输。

步骤2、密钥存储时,将变换后的n个字节的真实密钥存储于真实密钥 地址,而将(256-n)个混淆数据存储于混淆密钥区(由于这些数据是无用的,因此存储的排列顺序可以随意)。

经过步骤1的变换后,n个字节的密钥的数据已经互不相等,这样只要将没有出现在变换后的密钥中的(256-n)种可能字节值定为混淆密钥,就可以使得真实密钥与混淆密钥的并集成为256个字节全体了。真实密钥地址和混淆密钥地址可以由系统固定下来,这些地址可以连续也可以分散,真实密钥地址和混淆密钥地址可以顺序安排也可以相互穿插。

步骤3、密钥传输时,先获得一个0~255的随机序列,然后根据随机序列的顺序将所有的密钥(包括真实和混淆的)读取传输,其中,如果源地址是真实密钥地址,则数据传输至正确的目的地址,而如果源地址是混淆密钥地址,则数据传输至无关的目的地址(数据仅仅被传输,但不会被后续使用)。

按这样的传输规则,从0x00-0xFF这256个字节,都会在过程中被传输1次,顺序随机,并且与密钥信息完全无关。攻击者完全无法从传输的数据内容推断出密钥的任何部份。其中混淆密钥被拷贝去了无关的地址,但是该地址的存储介质必须与真实密钥传输去的介质相同,这样攻击者就无法通过功耗特征来判断过程中传输的数据是真实密钥还是混淆密钥。系统在得到变换后的密钥后可以重新计算出正确密钥并进行计算,这一部份的防御可另外处理,不在本发明涉及的范围之内。

本发明的存储与传输逻辑如下:

其中密钥的存储过程是在安全环境下的,不用考虑攻击,在secure_key_store函数中,输入参数key是变换前的密钥,keyAddrList是存放真实密钥的地址列表,而fakeAddrList是存放混淆密钥的地址列表。函数体中keyTransform函数可以通过输入的密钥,得出变换后的密钥,并得到所有的混淆密钥。整个secure_key_store函数的过程就是将变换前的 密钥转换出变换后的密钥和混淆密钥,并将它们存放至对应的地址。

而密钥的传输过程是需要抵御攻击的,在secure_key_load函数中,输入参数中,srcList是一个源地址的列表(包括真实密钥地址和混淆密钥地址),dstList是一个目的地址列表(包括正确目的地址和无关目的地址),两者的对应关系是系统可以事先确定的,而rndSeq是一个给定的0到255的随机序列。整个secure_key_load的函数过程就是将所有256个字节的数据拷贝至对应的地址。

本发明对于任意密钥,其传输过程都是按一个随机顺序传输0x00-0xFF这256个字节,因此可以有效抵御模板攻击。

下面给出一个具体的实施例。

1.传输数据:DES算法密钥(8字节)。

变换规则:将8字节密钥变换为10字节密钥。

设原密钥为A1A2A3A4A5A6A7A8

变换后为B1B2B3B4B5B6B7B8B9B10

具体规则如下:

B1-B10是按下标顺序依次确定的。

令B1=A1

令B2=A2,若B2与已经确定的字节重复,则不断加1(模256),直至不重复为止。

令B3=A3,若B3与已经确定的字节重复,则不断加1(模256),直至不重复为止。

...

令B8=A8,若B8与已经确定的字节重复,则不断加1(模256),直至不重复为止。

B9的第1比特表示B1是否等于A1,若相等,则为0,否则为1。

B9的第2比特表示B2是否等于A2,若相等,则为0,否则为1。

...

B9的第8比特表示B8是否等于A8,若相等,则为0,否则为1。

此时若B9与已经确定的字节相等,则不断加1(模256),直至不重复为止。

而B9执行不断加1(模256)的次数最多为7次,最少为0次,假设执行了x次。

则B10的值就是最小的与B1-B9都不重复的数K且K≡x(mod8),易证K一定能找到。

从变换后的密钥计算出原密钥是容易的,计算(B9-(B10mod8))(mod256)的结果就可以知道B1-B8是否有模加1操作,然后可以依次确定A1-A8

2.密钥存储:

定义:

EEPROM地址0x10000-0x10009为真实密钥区。

EEPROM地址0x1000A-0x100FF为混淆密钥区。

密钥存储时,将10字节变换后密钥存入0x10000-0x10009,将剩余246字节数据存入0x1000A-0x100FF。

3.密钥传输

定义:

密钥寄存器地址0x20000-0x20009

其他寄存器地址0x20010-0x2001F

传输映射表

密钥传输时,真实密钥的地址0x10000-0x10009会被对应传输到0x20000-0x20009,而其他的混淆密钥地址都会被传输到0x20010-0x2001F(无用数据可以产生大量覆盖)。每个字节的传输顺序是随机的,由一个从0~255的随机序列决定。

以上通过具体实施方式对本发明进行了详细的说明,但这些并非构成对本发明的限制。在不脱离本发明原理的情况下,本领域的技术人员还可做出许多变形和改进,这些也应视为本发明的保护范围。

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