针对des第二轮l寄存器翻转的功耗攻击方法

文档序号:7778717阅读:404来源:国知局
针对des第二轮l寄存器翻转的功耗攻击方法
【专利摘要】本发明是一种针对数据加密标准(DES,Data?Encryption?Standard)第二轮运算中L寄存器翻转的功耗攻击方法。用于信息安全领域中,对DES算法的加密芯片进行安全性测评。本发明特征在于利用功耗攻击的方法对DES加密芯片进行攻击,攻击的对象是DES第二轮运算中L寄存器翻转泄露的功耗信息。利用该功耗信息,与第一轮的中间数据进行相关功耗分析(CPA,Correlation?Power?Analysis),即可获得DES算法的密钥信息。本发明可用于DES加密芯片防御功耗攻击的安全性测评,提高DES加密芯片的安全性。
【专利说明】针对DES第二轮L寄存器翻转的功耗攻击方法
【技术领域】
[0001]本发明主要应用于信息安全领域对智能卡芯片安全性要求较高的场合中,对DES算法的加密芯片进行抗功耗攻击测试,提高芯片安全性。
【背景技术】
[0002]1973年5月15日,美国国家标准局在联邦记录中公开征集密码体制,这一举措最终导致了 DES的出现。DES由IBM开发,它是对早期被称为Lucifer密码体制的改进。DES在1975年3月17日首次在联邦记录中公布,在经过大量的公开讨论后,1977年2月15日DES被采纳作为用于非国家保密机关的数据加密标准。1980年和1984年,DES分别得到美国标准协会和国际标准化组织的认可。至今,DES仍是工业界常用的密码算法之一。
[0003]DES算法的分组长度是64比特,密钥长度是56比特,属于Feistel结构密码,迭代轮数为16轮。采用DES算法加密时,64比特的明文首先经过一个初始置换,然后通过由轮密钥控制的16轮迭代变换,最后再通过初始置换的逆变换进而得到密文。DES加密芯片也就是能够对数据进行DES算法加密的芯片,该芯片经常被应用在智能卡中,作为智能卡内的数据加密模块,对接收到的数据进行加密,使智能卡能够与读卡器进行保密性的数据交互。
[0004]1999年Kocher提出了差分功耗攻击方法,之后业界对功耗攻击方法进行了深入研究。目前对于DES算法的功耗攻击主要集中在对DES第一轮运算的攻击上,因此密码芯片的设计者通常会在第一轮运算中加入一些防护措施,从而隐藏DES第一轮运算的功耗信息。例如,在第一轮运算中加入伪轮运算或者随机插入延时等,使得攻击者无法找到第一轮运算的位置。这些防护措施虽然可以起到防御功耗攻击的效果,但是带来了额外的成本开销。为了节省成本,设计者通常仅在第一轮中加入类似的防护措施。
[0005]功耗攻击的基本原理是,密码设备的瞬态功耗与其运算的中间数据相关,而中间数据又与密钥相关。因此,通过分析密码设备的瞬态功耗,可以获得密钥信息,从而达到完全破解密钥的目的。
[0006]数字电路是由若干个相同的逻辑门组成,每个逻辑门的功耗包括静态功耗和动态功耗两部分。逻辑门的静态功耗相对较小,动态功耗占逻辑门总功耗的主要部分。动态功耗主要由逻辑门信号的翻转产生,当信号由“0”变化到“1”,或者由“I”变化到“0”,即为翻转,逻辑门就会产生功耗。但维持“0”或者“I”不变,即没有翻转,不产生功耗。因此,电路运行时产生的功耗与内部运行数据存在相关性,功耗攻击就是利用了这个原理。
[0007]为了成功地进行功耗攻击,找到合适的中间数据至关重要。该中间数据越准确地反映芯片内部的功耗开销,功耗攻击就越容易成功。
[0008]从图中I可以看出,每次DES加密进行16轮运算,轮输出的中间结果保存在两个寄存器中,即L寄存器和R寄存器。L寄存器保存中间结果的高32位数据,R寄存器保存中间结果的低32位数据。在每一次的轮运算中,R寄存器的值与轮密钥经过f函数的运算,f函数的输出再与上一轮L寄存器的值异或,将异或结果保存在R寄存器中,即为本轮运算轮输出的低32位;上一轮R寄存器的值写入L寄存器中,即为本轮运算轮输出的高32位。反复进行16次上述操作,即完成了 DES算法的16个轮运算。

【发明内容】

[0009]本发明用功耗攻击的方法攻击DES第二轮运算中L寄存器的翻转,解决了在第一轮加入防护措施时无法进行功耗攻击的问题。
[0010]本发明的内容在于发明了 一种针对DES第二轮L寄存器翻转的功耗攻击方法。本发明选择的中间数据为DES第一轮运算中R寄存器的变化情况,即第一轮运算前写入R寄存器的数据与第一轮运算后写入R寄存器的数据,二者异或的结果。通过上述的功耗攻击原理可知,通过寄存器前后状态的异或值可以表征该寄存器的功耗开销。
[0011]本发明攻击的对象是DES第二轮运算中L寄存器的翻转,利用上述中间数据对DES功耗曲线上执行第二轮运算的位置进行功耗攻击,根据L寄存器翻转产生的功耗与中间数据的相关性,从而获得密钥。
[0012]针对DES第二轮L寄存器翻转的功耗攻击方法,其特征在于用功耗攻击的方法,利用DES第二轮运算中L寄存器翻转泄露的功耗信息,攻击DES加密芯片,获得DES算法的密钥,具体步骤如下:
[0013]a)在固定密钥的前提下,改变明文对DES加密芯片执行多次加密运算,采集每次加密时芯片的功耗,保存功耗曲线和该条曲线对应的明文;
[0014]b)利用该明文和猜测的密钥计算出相应的R1,将Rtl与R1异或,得到R寄存器在第一轮运算中寄存器翻转产生的功耗,并将该功耗作为功耗攻击的中间数据,其中Rtl为明文的低32位数据,R1 ;
[0015]c)计算每一条功耗曲线对应的中间数据,得到一个与曲线条数相同元素个数的中间数据数组,数组的个数与猜测密钥的个数相同;
[0016]d)在功耗曲线上找到第二轮运算中L寄存器更新的位置,记录每条曲线对应的L寄存器更新处的功耗大小,保存在一个功耗数组中;
[0017]e)分别用中间数据数组与功耗数组计算相关性,找出相关性最大的中间数据数组对应的密钥,该密钥即为真实密钥。
[0018]目前,很多DES加密芯片都对DES的第一轮运算加入了防护措施,使攻击者无法找到第一轮运算的位置,从而不能开展功耗攻击。使用本发明所公开的方法后,不必关注DES第一轮运算的位置,而是对第二轮运算进行攻击。利用第一轮的中间数据与第二轮功耗的相关性,即可成功攻击。本发明丰富了功耗攻击方法,对智能卡芯片的安全性提高有很大帮助。
【专利附图】

【附图说明】
[0019]图1 DES算法结构示意图
[0020]图2 DES轮运算电路结构示意图
[0021]图3 DES寄存器更新示意图
【具体实施方式】[0022]图1是示意性地示出本发明针对的DES算法结构图,并给出了本发明的功耗攻击方法针对的攻击点。图1中灰色标记处是本发明的功耗攻击方法主要攻击点,攻击的是第二轮运算L寄存器的翻转。
[0023]图2给出了DES加密芯片轮运算部分的电路结构示意图,在轮运算中只有L寄存器和R寄存器,且两个寄存器工作在同一时钟信号下。因此每一个DES轮运算在一个时钟周期内完成,L寄存器和R寄存器每个时钟周期更新一次。具体的更新方式如图3所示。
[0024]在进行DES加密运算前,将准备加密的明文保存在L寄存器和R寄存器中。L寄存器保存明文的高32位数据,即图3中的Ltl ;R寄存器保存明文的低32位数据,即图3中的R。。经过第一轮运算,输出的中间结果保存在L寄存器和R寄存器中,记为L1和R1 ;经过第二轮运算,输出的中间结果再次保存在L寄存器和R寄存器中,记为L2和R2。根据DES算法的执行过程可知=L1 = R0, L2 =札。因此在第二轮中L1到L2的寄存器翻转,等同于第一轮运算中Rtl到R1的寄存器翻转。寄存器的翻转情况体现了功耗的大小,故在功耗曲线上执行第二轮运算的部分,可以间接地表征第一轮运算的功耗特征。
[0025]基于以上的分析,对DES加密芯片的功耗攻击主要分为以下几步进行。
[0026]首先,在固定密钥的前提下,改变明文对DES加密芯片执行多次加密运算。采集每次加密时芯片的功耗,保存功耗曲线和该条曲线对应的明文。
[0027]第二,利用该明文和猜测的密钥计算出相应的札。由于Rtl已知(明文的低32位数据),将Rtl与R1异或,可以得到R寄存器在第一轮运算中寄存器翻转的多少。该翻转情况与真实的功耗开销大小成正比,故作为功耗攻击的中间数据。计算每一条曲线对应的中间数据,可以得到一个与曲线条数相同元素个数的中间数据数组,数组的个数与猜测密钥的个数相同。
[0028]第三,在功耗曲线上找到第二轮运算中L寄存器更新的位置,记录每条曲线对应的L寄存器更新处的功耗大小,保存在一个数组中。
[0029]第四,分别用中间数据数组与功耗数组计算相关性,找出相关性最大的中间数据数组对应的猜测密钥,该密钥即为真实密钥。
[0030]本发明利用上述功耗攻击方法,用DES第二轮运算中L寄存器翻转的功耗信息与第一轮运算的中间数据相关性,对DES加密芯片实施功耗攻击。对于在第一轮中加入伪轮运算和随机插入延时等防护的DES加密芯片设计,具有显著的攻击效果。
【权利要求】
1.针对DES第二轮L寄存器翻转的功耗攻击方法,其特征在于用功耗攻击的方法,利用DES第二轮运算中L寄存器翻转泄露的功耗信息,攻击DES加密芯片,获得DES算法的密钥,具体步骤如下: a)在固定密钥的前提下,改变明文对DES加密芯片执行多次加密运算,采集每次加密时芯片的功耗,保存功耗曲线和该条曲线对应的明文; b)利用该明文和猜测的密钥计算出相应的R1,将Rtl与R1异或,得到R寄存器在第一轮运算中寄存器翻转产生的功耗,并将该功耗作为功耗攻击的中间数据,其中Rtl为明文的低32位数据,R1为第一轮加密运算中R寄存器保存的低32位数据; c)计算每一条功耗曲线对应的中间数据,得到一个与曲线条数相同元素个数的中间数据数组,数组的个数与猜测密钥的个数相同; d)在功耗曲线上找到第二轮运算中L寄存器更新的位置,记录每条曲线对应的L寄存器更新处的功耗大小,保存在一个功耗数组中; e)分别用中间数据数组与功耗数组计算相关性,找出相关性最大的中间数据数组对应的密钥,该密钥即为真实密钥。
2.根据权利要求1所述的方法,其特征在于在DES第二轮运算中存在L寄存器翻转,且该翻转情况与第一轮运算中R寄存器的翻转情况相同。
3.根据权利要求1所述的方法,其特征在于利用第一轮运算中R寄存器的变化情况作为区分函数进行攻击,该变化情况是指在第一轮运算前写入R寄存器的数据与第一轮运算后写入R寄存器的数据,二者异或的结果即为寄存器变化情况。
【文档编号】H04L9/06GK103647640SQ201310637160
【公开日】2014年3月19日 申请日期:2013年12月3日 优先权日:2013年12月3日
【发明者】王喆, 王飞宇, 韩绪仓, 刘剑峰, 郑晓光, 高顺贤 申请人:北京中电华大电子设计有限责任公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1