20l1.02 兵工自动化 Ordnance Industry Automation 30(2) 针对RSA密码芯片的ZEMD算法攻击实验 范黎恒,柏代军,张鑫 (重庆军事代表局,重庆400060) 摘要:为了对RSA密码芯片的DPA攻击进行深入研究,采用相应攻击算法对AT89C52单片机上加密程序进行攻 击,设计并搭建功耗分析测试平台。利用该平台,对单片机实现的8位模拟RSA加密算法进行ZEMD算法差分功耗 分析(Differential PowerAnalysis,DPA)攻击实验。实验结果表明,由于明文的随机输入,使得模乘运算的时间 消耗会有所不同,导致进行差分的功耗轨迹中对应部分无法准确对齐,ZEMD攻击算法存在失效现象。 关键词:RSA;差分功耗分析;模幂算法;ZEMD算法 中图分类号:TP309.7:TP301.6 文献标志码:A Experiment of SEMD Algorithm Attack Against RSA Code Chip Fan Liheng,Bai Daijun,Zhang Xin (Chongqing Military RepresentatiVe Bureau,Chongqing 400060,China) Abstract:In order to research on DPA attack of RSA code chip,adopt corresponding attack method to attack encrypt program 01"1 AT89C52 single chip,a power consumption analysis testing platform was designed and constructed.With this platform,SEMD algorithm differential power analysis(DPA)attack experiment against the 8 bit simulated RSA running in a single chip was carried out.In the experiment,ZEMD attack algorithm became workless when the corresponding parts in the different power traces cannot be arranged.The reason of these phenomena was the random input of the plaintext. Keywords:RSA;DPA;exponentiation algorithm;ZEMD algorithm O 引言 从Kocher等人提出针对智能卡微处理器的功 导致容易检测的、易于视觉观察的大规模功耗变化, 若被运算的数据间的相互关系由于功耗变化小,检 耗分析方法¨j以来,观测密码算法运行过程中芯片 的功耗变化,从而获取其密钥的方法得以不断深入 和发展。密码芯片被广泛应用于电子货币、数字签 测出错或噪声干扰等原因被掩盖,SPA所获得的就 是毫无意义的平稳波形了。而DPA则会使用统计分 析方法和纠错技术来提取密钥的相关信息,其分析 过程可分为2个阶段:功耗轨迹采集和数据分析。 名和信息安全等领域。在信息社会密码芯片如何抵 御功耗分析是十分重要的问题。目前,国内对RSA 公钥密码算法的差分功耗分析(Differential Power 在数据分析阶段采用统计学方法,引入一个区分函 数,对大量的功耗轨迹点进行均值化和差分化,最 后利用区分函数得出新的差分功耗轨迹图,从而得 到相关的密钥bit位信息。 Analysis,DPA)的研究还主要集中在理论阶段,为 了进行更加深入的研究,根据功耗分析攻击原理, 设计功耗测试平台,使用DPAt2.J攻击方法中的 ZEMD算法p J,对RSA密码芯片进行攻击实验。 2 RSA模幂算法 RSA加密算法中,私钥d必须严格保密,否则 1 功耗分析攻击 典型的功耗分析攻击方法有2种,即简单功耗分 析(SPA)与差分功耗分析(DPA) J。SPA是利用 加密操作实现细节与功耗之间的关系直接从测量的 功耗轨迹获取密钥信息,DPA是通过对大量的密文 攻击者就可以使用私钥解密密文。在RSA加密算法 中,与私钥相关的就是模幂算法。因此,模幂算法 的安全性是十分重要的。 在许多公钥密码系统中,模幂运算不仅是最重 要的算术运算,同时也是最耗时、最敏感的运算。 因此,开发一个既有效又安全的模幂算法对于公钥 和功耗轨迹的统计分析获取密钥信息。 DPA是建立在SPA基础之上的更具威胁的功 耗分析攻击方法。在SPA中,一系列的指令操作会 收稿日期:2010-09一l4:修回日期:2010—1l一18 密码系统是最为重要的。目前,使用最为广泛的模 幂算法是“二进制模幂算法”,也称为“平方一乘 积”(Square And Multiply)算法【4J,即将模幂分解 基金项目:国家863计划项目(2007AA01Z454) 作者简介:范黎恒(1984一),男,山东人,硕士,从事信息安全研究。 ・48・ 岳工自动化 第:30卷 成一系列的平方和乘积运算。对于基本的平方和乘 积操作,一般采用Montgomery模乘算法来实现。 “平方一乘积”算法主要有2种不同形式,分别是 “从左至右平方一乘积”算法和“从右至左平方一 乘积”算法,如表l。 表1 “平方一乘积”算法的2种形式 算法l:从左至右“平方一乘积” 算法2:从右至左“平方一乘积” ZEMD算法在原理上更多地运用了仿真和统计 的办法,在提出d 的第i位bit值 猜想后,对随 机信息M进行指数为 的模幂运算的功率消耗仿 真,仿真根据第i次平方一乘法运算后的中间值的 汉明重量来划分采集的功耗轨迹。如果乘法操作在 第i次平方一乘法运算中发生,则私钥d参与运算 的功耗轨迹可依照仿真的汉明重量的高低准确地分 模幂算法 模幂算法 输入:m,正整数k:(k k, 输入:m,正整数^=(k,ki … l七0)2 … Ik0)2 输出:卅 rood H 输出:m rood 步骤: 步球: 1. l 1. +一1, +~ 2.对于t从f到o,执行: 2.对于f从0到i,执行: 2.1 A orod刀 2.1若七,=1,则 ・ 2.2若k,:l,则 +一 ・m mod” mod月 2.2 S 一s 2rood n 3.返回(A) 3.返回(A) 3 ZEMD攻击算法 针对模幂算法的DPA攻击首先是由Messerges 等人提出的【3J,他们共提出了3种针对“平方一乘 积”模幂算法的DPA攻击方法,ZEMD算法是其中 之~。ZEMD算法称为零指数多输入 (Zero—Exponent Multiple—Data)攻击算法。 表2 ZEMD攻击算法 输入:L个随机明文m 输出:私钥值 步骤: 1・初始化: 0,JLl÷_0,£2÷-0。 2.对i=n.1到i=0,执行循环: ①猜想 的第i bit位为l; ②对k=-I到k=L,执行循环: a、输入随机明文 : b、模拟 “n0d 的第i步操作后的 功耗即计算第 i步操作 后中间值的汉明重量 ( .); c、if乘法运算后的中间值具有较大的 汉明重量,则采集此输入的真实功 耗 s[j】 , 并 使 【 】÷一・ 【 】+s[j】’厶++; if乘法运算后的中问值具有较小 的汉明重量,则采集此输入的真实 功 耗 s[j】 , 并 使 【 】 SI 【 】+s[j】,L2++; ⑨ 计 算 丽:士 [Jl 和 上1 【门=÷ 【 ’ ④计算差分功耗qJ]= 面一 ; ⑤if D[j】≠0,则 1; if J] 0,则 0; ⑥Update d 。 3.return d÷-d 为2部分,两者之差必然有尖峰值的存在;反之, 乘法操作未发生,则私钥d参与运算的功耗轨迹不 能被假设该操作己发生后的功耗仿真所准确区分, 此时的差分值就不会出现尖峰。其具体的算法描述 如表2。 4 ZEMD算法攻击实验 在目标电路板上,由AT89C52单片机运行RSA 加密程序。在目标电路板和稳压电源之间串连一个 电阻R,并由数字存储示波器Tektronix DPO4032 通过测量电阻R上的压降的变化来观测单片机电路 板的功耗变化。在PC机上用LabView编写了控制 数字存储示波器的虚拟示波器,并由该虚拟示波器 来控制数字存储示波器实时向PC机传输功耗波形 数据,实现了数据采集的自动化。 依据算法3,利用功耗测试平台,进行了ZEMD 攻击实验。其实验操作步骤如下: 1)对采样控制平台进行配置,采样长度为 10 000,采样时间为4 ms,采样次数为10 000。 2)向单片机发送10 000个随机明文,采集对应 的10 000条功耗轨迹,并存入文件。 : 3)在VC++6.0编程环境下,仿真RSA加密过 程。在仿真过程中,假设猜测的密钥位 =l,计 算中间值的汉明重量大小,并根据汉明重量的大小 将对应的真实功耗轨迹划分为2组。 :’ 41利用Matlab 7.0对划分后的两组功耗轨迹分 别求平均后再作差。 5)观察生成的差分功耗轨迹,如果功耗轨迹上 所在的区域出现尖峰,说明密钥位猜测正确 =l;如果没有出现尖峰,说明密钥位猜测错误, di=0 o 6)所有密钥位的猜测完成后,就重构了密钥, 实验结束。 第2期 张瑾,等:基于参考观测器的无人直升机航迹跟踪控制 ・61・ 【8】Marcel Bergerman,Omead Amidi,James Ryan Miller, Nicholas Vallidis,and Todd Dudek.Cascade Position and 飞控系统设计[J】_系统仿真学报,2007,19(8): l776一l779. Heading Control of a Rob6;ic Helicopter[C1.USA:Proc of the 2007 IEEE/RSJ Internati0naI Conference on Intelligent Robots and Systems,San Diego,CA,2007: 135一l40. [12】Johnson E N,and Kannan S K.Adaptive trajectory control for autonomous hel icopters[J].AIAA Journal of Guidance,Control and Dynamics,2005,28(3):524—538. [9】Michael Trentini,Jeff K.Pieper.Model—Following Control of a Helicopter in Hover[C1.Proc of the 1995 IEEE International Confe:rence on Control Applications. Dearborn,September,l 996:7一l 2. [1 3】Mettler B,Tischler M B,and Kanade T.Attitude control optimization for a small-scale unmanned helicopter[R]. Washington,D.C.:AIAA Guidance, Control Conference,2000. Navigation and 【1 4】Hess R A,Gao C,and Wang S H.Generalized technique 【1 0】Bilal Ahmed,Hemanshu R.Pota,and Matt Garratt.Flight Control of a Rotary wing -A Practical Approach[C]. Proc of the 47th IEEE Conference off Decision and Control,Cancun,Mexico,2008:5042—5047. for inverse simulation applied to aircraft maneuvers[J]. AIAA Journal of Guidance,Control and Dynamics,l 99 1, 1 4(5):920—926. 【15】祁飞,刘成国.无人机航迹跟踪控制与仿真【J】_计算 机仿真,2006,23(11):75—78. 木枣木枣木+ }木木宰枣木木幸木木术木}}奉+ 半半牵枣木木木宰}木}幸} 『11】于志,赵佳,中功璋.基于鲁棒观测器结构的直升机 }车木十 幸+幸木木木木幸丰木木术木木木丰幸率木丰幸木丰车木木木}木车枣木半 木木唪木木木乖乖木木水 术丰 木奉宰幸章十水牛牛枣木 j l’箍京4毫甄) 实验中用d:n1011001),作为单片机中RSA加 猜测受到功耗轨迹无法对齐的影响很小,所以第一 位猜测的实验结果比较理想。 ×lO l 5 密算法的私钥,并采集相应的功耗轨迹等待进一步 的划分。每次都猜测密钥位 为1,中间值就可以 1 选取每轮循环中完成乘法操作后的A(即算法1中 的 一 ・m mod n)。之所以选 为进行划分的中问 值,是因为 的值既与密钥相关,又与明文相关, 它的汉明重量最有可能与功耗存在一定的关系。 图1是猜测密钥第一位 =1时,经过仿真分 组,再利用Matlab 7.0进行计算后得到的差分功耗 轨迹图。从图1中可以看出在 =1所在的区域里 出现了一个很明显的尖峰,这就说明猜测密钥第一 位 =l是正确的 =1。 一0 5 > 西0 .O.5 -1 1.5 O 1000 2 000 3 000 4000 5000 6000 7000 8000 9000 10000 图2 ZEMD算法第二位实验结果 5 结论 针对单片机实现的RSA加密算法的ZEMD攻 击实验在第一位的结果证明,在功耗轨迹能够对齐 时,该攻击方法的可行性。而由于FPGA自身的运 算特点,在FPGA上实现的RSA加密算法,不会出 现单片机上类似的无法对齐的现象,因此,ZEMD :i I 1 ‘^ .‘ i .jl “-。山 山I=I【 .IJi 4 I P i_ I丌町 。 1 1frIl1 ■ l ’9『l1 ’『_ 。邢’ 啊, ’1■ l 攻击算法是能取得很好的攻击效果的。但该实验在 第二位以后存在失效现象,下一步将进行重点研究。 I I 参考文献: [1】P.Kocher,J.Jaffe,and B.Jun.Differential power analysis[C]//In:M.Wiener,editor.Advances in Cryptology:Proceedings of CRYPTO’99.Volume l666 in Lecture Notes in Computer Science,Santa Barbara,CA, USA:Springer.Verlag.1 999:388-397. 图1 ZEMD算法第一位实验结果 图2是猜测密钥第二位 =1时,经过仿真分 组,再利用Matlab 7.0进行计算后得到的差分功耗 轨迹图。图2中可以看出:在 =1所在的区域里没 有出现明显的尖峰。但事实上 的猜测与输入的未 知密钥是一致的,却没有获得预期的实验结果。通 过分析发现是由于明文的随机输入,使得模乘运算 的时间消耗会有所不同,导致功耗轨迹无法对齐, 最终导致实验结果无法达到预期效果。由于第一位 f2】韩军,曾晓洋,汤庭鳌.RSA密码算法的功耗轨迹分析 及其防御措施【J】.计算机学报,2006,29(4):590—596. f31 T. S. Messerges, E. A.Dabbish, R.H. Sioan. Investigations of power analysis attacks on smancards. Proc.USENIX Workshop on Smartcard Technology, 1999. f41 D.E.Kunch.Seminumerical Algorithm.In the Art of Computer Programming,Vo1.2,Addison-Wesley,l 98 1.