对于DES的差分能量分析攻击及其防范对策

发布者:740322lwj最新更新时间:2007-03-09 手机看文章 扫描二维码
随时随地手机看文章
摘要:摘要介绍了DES的加密过程,将差分能量分析DPA(Differential Power Analysis)的原理运用于该算法,提出了区分函数的选取原则,并针对差分能量分析的假设,介绍了几种对抗这种攻击的策略。 关键词:DES DPA 差分能量分析 区分函数 传统的密码分析理论认为,对密码芯片的分析仅依赖于输入明文和输出密文。而在实际应用中,分析人员可以获得其它的信息。例如对于有引脚的芯片,很容易获得引脚上的电流或者电压。通过这些电流或电压的变化,可以用有别于传统的方法获得密钥的信息。 1 DES加密过程 DES(Data Encryption Standard)被认为是加密技术的两大里程碑之一。在上个世纪得到了广泛的应用。这里给出其中一轮加密过程,如图1。其它如扩展置换、密钥产生等具体过程见参考文献。 在整个DES加密流程中,只有S盒(S-box)是唯一的非线性函数,是整个加密算法的安全核心。图2给出了S盒的图示。 图2中的每个S盒都是一个4%26;#215;16的查找表。在加密过程中,将与子密钥K异或后的48bits均分为8组,分别对应8个S盒,记每组为(a0a1a2a3a4a5)。根据这6位输入,在对应的S盒查找表中找到对应的4位数据作为输出。查找表中的对应关系如下:由(a0a5)决定对应的S盒的行,由(a1a2a3a4)决定对应的S盒的列。由这个行和列确定的数(4位二进制表示)作为该S盒的输出。 由于S盒在DES加密算法中的特殊地位,使得很多攻击方法都是针对S盒的。 2 DPA原理在DES上的应用 Differential Power Analysis最早由Kocher et al提出,现在许多研究人员指出它对智能卡(Smart Card)是一种有效的攻击。其理论基础是:在加密过程中要消耗能量,而消耗的能量随处理的数据不同会有微小的变化。根据这种变化确定处理的数据是0还是1,办公而有可能猜出加密算法中所使用的密钥。 在具体讨论这种攻击前,对所用符号做如下约定: Si[j]:第i个明文在时间点j时的能量水泵抽样值; D(%26;#183;):引入的区分函数; S0={Si[j]|D(□)=0}; (1) S1={Si[j]|D(□)=1}; (2) A0[j]:集合S0中所有信号在j时刻的平均能量消耗; A1[j]:集合S1中所有信号在j时刻的平均能量消耗; ΔD[j]:两集合的平均信号能量差异。 首先,要能够测得整个加密流程中S盒的能量曲线。基于统计的理论,要求记录足够的样本点Si[j]。这里隐含了一个假设:S盒中对不同比特处理时,能量消耗差异发生在一个特定的时间,而且正好在该点的%26;#177;Δ时间范围内进行抽样,因此能够记录下不同的能量消耗曲线。这个假设可以作为抗DPA攻击对策的一个切入点。 另外还需要让这些能量曲线反映出差于密钥的信息。这是整个DPA过程中的关键。在这儿,引入了区分函数D(%26;#183;),有的地方也记为selection function。从上面的(1)和(2)式中可以看到,该函数的作用是将样本曲线映射到两个不相交的集合上。 下一步,对这两个集合中的样本在时间点j的样本值进行平均,得到时间点j时的平均能量消耗。由于Si[j]包含信号和噪声这两部分的能量消耗,而根据随机过程的知识,知道其中大部分均值为0。因而这种平均可以在一定程序上降低随机噪声对信号的影响。 由上面可以看到:当|ΔD[j]|较大时,说明由区分函数划分的两个信号的能量消耗在j时刻差异较大。而这种能量消耗差异,正是由密钥和待处理数据相互作用而产生的。如果选择的区分函数合适,即在理想的情况下,D函数正好将所有的在j时刻芯片处理数据为1的Si[j]选到集合S1;相应地,在j时刻,芯片处理的数据为0的所有Si[j]被D函数映射到集合S0中,这时能量消耗差异很明显。 目前发表的文献中均只给出了具体的区分函数,下面给出区分函数的一般选取原则: (1)区分函数是关于密钥的函数D(Ki); (2)区分函数在正确的输入下应当重现加密芯片所处理的某一比特值。 如将该函数定义为: D(P6,K1)={S-box1(P6+Ki)}0 (6) 即D值等于第i个样本在第一轮非线性变换中的第一个S盒输出的4bits中的第一个比特。其中P6表示明文经过初始置换后作为第一个S盒输入的6bits,K1表示猜测的第一轮密钥中用于第一个S盒的输入部分。如果猜测的密钥正确,那么D值就一定会等于实现加密过程中第一个S盒的第一位输出。即这一时刻所有输出为1的Si[j]都会被映射到集合S1,因此会使得ΔD[j]出现峰值。相反,如果密钥不正确,就会使得某些输出值为1的Si[j]被映射到集合S0中,这时ΔD[j]的射值会变小。这样,就可以猜出一部分密钥了。依照这种方法,猜测全部S盒的48bit密钥所需的次数为2 6%26;#215;8次,另外8比特密钥可以用穷举法求得。这个结果比单纯地应用穷举搜索有了明显的改进。 3 对策 基于DPA攻击的假设,可以提出一些对策。 假设1.攻击者能够记录能量消耗差异。一种简单的对策是引入噪声,降低信噪比SNR,使得能量消耗差异减小。但这种引入噪声的方法仍会受到改进的DPA攻击。参考文献4指出,通过选择特别 区分函数,可以提高SNR。前面(6)指出,通过选择特别的区分函数,可以提高SNR。前面(6)式给出的D函数一次只确定一个比特的值,设改进的D函数一次确定d个比特的值,如d=4,这时D函数的值可取后者的信噪比约为前者的d倍。但在这种方法中,样本曲线被映射到3个不相交的集合上。 S0={Si[j]|D(□)=0d} (7) S1={Si[j]|D(□)=1d} S2={Si[j]|Si[j]} ∈S0,S1} 第一个集合中D函数的值为d个0,第二个集合中D函数的值为d个1,第三个集合不用。其不利于之处是需要样本点数会增加。 另一种对策是在加密过程中引入随机延迟,这样,特定时刻的实际能量消耗差异就不能被准确记录。 假设2.能量消耗的差异可以反映出密钥的信息。可以通过对S盒的输入做一些随机的改变来掩饰密钥的信息。一种常用的方法是用异或这一线性运算,对S盒 的输入做随机的改变。这需要对S盒的输出也做一个相应的修正,使得最后加密的结果不受异或这一线性运算的影响。另外一种方法是在加密过程中用两个不同的处理器,它们处理的数据宽度不同,因而消耗的能量也不一样,再用一个随机序列发生器来产生选择信号,可以随机地选择不同的处理器。具体的硬件电路见参考文献[6]。其它有关FPGA和ASIC在降低信息泄漏方面的专门研究,本文不做讨论。但如果能防止信息泄漏,这将从根本上抵抗DPA攻击。 应该注意到,笔者是把智能卡作为攻击对象,因而可能得到足够的样本点,并知道明文和密文。这在其它的密码系统上,并不是必然的事实。但目前智能卡得到了广泛的应用,因此这种攻击的潜在危害较大。以上仅以DES的S盒部分说明了DPA攻击,但就DPA的基本原理,它可以被应用于其它的密码算法上,如椭圆曲线、AES(Advanced Encryption Standard)等。对DPA的防范措施还有待进一步研究。
引用地址:对于DES的差分能量分析攻击及其防范对策

上一篇:数字电视发射机中功率放大器的设计
下一篇:基于CPLD的高压电力线FSK MODEM设计

热门资源推荐
热门放大器推荐
    Error

    An error occurred.

    Sorry, the page you are looking for is currently unavailable.
    Please try again later.

    If you are the system administrator of this resource then you should check the error log for details.

    Faithfully yours, OpenResty.

小广播
最新网络通信文章
换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved