来源:中国一卡通网 作者:靳济方 高献伟 发布时间:2008-11-10 17:17:09 字体:[大 中 小]
摘 要:智能卡在执行算法过程中会泄露一些能耗信息,采用差分能量分析(PDA)利用这些信息可以分析出加密的密钥,其危害远大于传统的数学分析手段。本文对算法及DPA攻击RSA算法方法和已有的算法级防止DPA攻击方法进行了研究,并在此基础上提出一种三重掩盖法来全面防御针对RSA算法的DPA攻击。且进行了仿真,效果明显。
1 引言
智能卡(smart card)也称CPU卡,不仅具有数据存储功能,还具有数据安全保护、复杂密码运算等功能。智能卡采用RSA算法作为公钥加密算法.但是智能卡在运行过程中不可避免会泄露一些旁路信息,如能量、电磁波、时问等,利用能耗信息对智能卡进行攻击能够达到很好的效果,其危害远远大于传统的数学攻击手段。
1999年Paul首次提出能量分析⋯,能量分析是指通过采集智能卡加密芯片等硬件设备在进行加、解密或签名操作时产生的能量消耗信息,利用密码学、统计学原理,分析和破译密钥信息的一种攻击方式。通常.可将能量分析攻击分为简单能量分析(simple power analysis,SPA)攻击和差分能量分析(differential power analysis,DPA)攻击两类,其中DPA是目前非常快速而有效的攻击方法。所以近年来针对DPA的各种防御方法成为研究的热点。
2 DPA攻击原理
DPA是利用智能卡密码芯片运行时的能量信号与密码算法的密钥之间的相关性,运行多次密码算法就可以暴露出这种相关性嘲。DPA的过程如下。
....................
3 算法级DPA攻击RSA
3.1 算法级DPA攻击RSA的思想
模幂运算是RSA中最根本的运算,模幂运算可以分解成多个模平方运算和模乘运算,进行模平方运算和模乘运算所消耗的能量是有差别的。DPA攻击RSA的主要思想是利用RSA算法平方运算和乘法运算能耗的明显不同,考虑到噪声对能耗轨迹的干扰,采用均值和差分的统计运算不断修正能耗轨迹,同时利用设计合理的区分函数将猜想私钥的比特位对应的能耗轨迹分类,最终获得私钥指数的比特位信息。
3.2 算法级DPA攻击RSA的主要方法
根据攻击的前提条件不同,DPA攻击RSA的方法主要为以下两类。
(1)获得已知公钥指数前提下的DPA攻击
根据IS07816标准.智能卡的使用者可通过手册获得卡的公钥指数值.可以运行“外部认证”指令使用公钥指数进行加密操作.可以对任意输入运行“内部认证”指令使用私钥指数进行签名操作。
....................
4 算法级防御DPA攻击的方法
针对上述算法级攻击方法,目前有几类算法级防范DPA攻击的方法,防御思想都是:消除或减少算法操作数特征,消除算法执行过程中的操作数和中间值与能耗之间的对应关系。大致可以分为以下几类。
(1)减小信号强度。减小信号强度的主要实现方法包括算法执行连续编码,选取小能耗运算指令,均衡汉明重量。算法执行连续编码可以防止DPA判断不同算法的起始点和结束点.不提供有价值的算法信息;选取小能耗运算的实现思想是用不易产生显著能耗变化的指令取代一些原始指令,使指令的能耗减小及不同指令的能耗趋于平衡:均衡汉明重量可使数据以原码和反码两种形式表示,避免通过汉明重量与能耗的直接关系泄露能量信息。
(2)增加随机噪声。通过引入随机噪声,使得有用的信号完全淹没于无用的噪声中,从而增加能量攻击的难度。但是.这种方法不能从根本上解决问题:其一,攻击者可以通过有效的滤波,消除这种干扰;其二,DPA本身在做统计平均时就削弱了噪声的影响。
(3)数据随机化掩盖。可分为明文随机化掩盖和指数随机化掩盖两类,分别通过数学运算的变换与反变换,使RSA算法中的操作数均为经过~定随机化变形的替代数。仅通过能量差分运算得不到真实的差异点位置.这为真实算法做了掩盖,达到防御DPA攻击的目的。但是这两种方法实际上起不到有效的效果,因为从算法上讲平方运算比乘运算要少近一半的指令.因此平方和乘运算消耗的能量会有很大的差异.而如果仅仅是操作数不同,运算所执行的乘和平方的数量不变,这样所带来的能量变化的干扰基本上可以忽略,这两种掩盖仍不能完全掩盖操作指令的真实能耗轨迹,攻击者可以通过其平方运算或乘法运算的不同运算指令的能耗轨迹,获取算法运行的内部信息,再结合其他攻击手段进行攻击。
5 三重掩盖法
为了弥补上述方法的不足,本文在对RSA算法中最重要的模幂算法进行数据随机化掩盖的基础上,提出一种新的防御DPA攻击的方法。设计一个与智能卡进行平方或乘法运算时的能耗相当的无效算法,在对原模幂算法进行明文随机化掩盖和指数随机化掩盖的基础上.在平方和乘法运算指令间加入随机的指令,进行“伪装”。该算法同样进行真实的平方或乘法运算,运算结果写入内存,从而使其能耗与算法中产生作用的指令的能耗相近、轨迹相似,达到掩盖运算能耗轨迹的目的。这样就在明文、指数和运算指令3个方面对DPA攻击进行了全面防御。防御DPA攻击的三重掩盖的RSA模幂改进算法如下。
....................
全文下载阅读:http://www.yktchina.com/bbs/Read-b3-t5203-p10.htm
推荐文章
论坛热帖