APP下载

仿真功耗采集平台下的AES能量分析攻击

2017-07-18李伟键

山东工业技术 2017年14期

摘 要:理论上安全的密码算法,其算法实现也容易遭受侧信道攻击,需要评估密码算法的侧信道泄露并且加以防护。系统介绍以Primepower为核心的能量分析攻击仿真功耗采集平台的搭建过程,使用该平台采集AES密码算法加密多组不同明文的动态瞬时功耗,并使用这些功耗对AES算法成功实施了相关能量分析攻击。

关键词:侧信道攻击;相关能量分析攻击;仿真平台;高级加密标准

DOI:10.16640/j.cnki.37-1222/t.2017.14.222

1 侧信道攻击与防护思路

侧信道攻击作为一种全新的密码分析方法,突破了传统密码分析方法的局限,借助密码芯片加解密的物理信息(功耗[1] 和电磁辐射[2]等)泄露而得以对子密钥而非整个密钥进行穷尽攻击,从而以极小的时间代价和存储代价取得比传统数学分析方法更好的分析结果。目前,侧信道攻击的研究主要集中在能量分析攻击,通过采集设备加密时的功耗来分析和获取密钥信息[3]。研究结果表明,没有任何防护措施的密码芯片,是无法抵抗侧信道攻击,即使其密码算法在理论上是安全的[4]。这要求几乎所有的密码算法芯片都必须研究算法可能导致的侧信道泄露,并加上防护措施。

评估每款密码算法的侧信道泄露,需要把密码算法的Verilog实现下载到功耗仿真平台上或者基于FPGA的侧信道评估板上运行,收集对应的功耗集,并展开侧信道攻击的安全评估。

2 能量分析攻击仿真采集平台搭建

由于Synopsys Primepower的专业性和精准程度高,绝大部分侧信道攻击研究者都使用该仿真平台采集算法执行的瞬时功耗,进行侧信道攻击与评估。图 1描述了基于Primepower仿真功耗采集平台的模拟功耗采集与攻击实验方案。

首先使用Verilog硬件描述语言来编码实现密码算法。接着在Synopsys DC中使用工艺库来综合这些Verilog源文件,得到门级网表文件。以门级网表文件表示的密码算法放入Modelsim上模拟运行,通过testbench激励文件调用门级网表文件的密码算法模块,同时可以把整个运行过程的细节通过“值变存储文件”VCD做记录。最后使用Primepower程序精确计算出“值变存储文件”VCD中所有操作的瞬时功耗。整个过程,都需使用真实的工艺库来编译、模拟运行和计算功耗。

3 仿真平台采集AES功耗

(1)使用硬件描述语言Verilog编写AES密码算法实现,保存为AES.v。

(2)在Synopsys DC中使用台积电tsmc-0.18um工艺库来综合步骤1所实现的Verilog密码算法AES.v,得到以工艺库中的电路元件描述的门级网表文件AES_NETLIST.v。在Synopsys DC综合Verilog源文件的过程如下:

1)set search_path "/home/.../project/AES" //设置源文件和工艺库文件所在目录

2)set link_path "* slow.db fast.db dw_foundation.sldb" //指定工艺库文件

3)read_verilog "AES.v" //读入verilog源文件,如有多个源文件,可以读入多次

4)current_design AES //指定编译芯片的主模块名

5)uniquify //实例唯一化,可选

6)compile -exact_map //编译verilog源文件

7)write -hierarchy -format verilog -output /home/.../project/AES/AES_NETLIST.v//把综合结果写入门级网表文件AES_NETLIST.v

(3)门级网表文件AES_NETLIST.v在ModelSim仿真运行,得到“值变存储文件”VCD。

需要加入testbench 激励文件来让ModelSim正确仿真AES_NETLIST.v算法。同时通过$dumpfile("AES1.VCD")和$dumpvars命令让ModelSim记录下“值变存储文件”VCD。

(4)把生成的一系列VCD 文件和tsmc-0.18um工艺库放入Primepower中,计算出一条条对应着明文的瞬时功耗曲线。使用Primepower计算一条功耗的过程如下:

1)set search_path "/home/.../project/AES" //设置源文件和工艺库文件所在目录

2)set link_path "* slow.db fast.db dw_foundation.sldb" //指定工艺库文件

3)read_verilog /home/.../project/AES/AES_NETLIST.v //读入网表文件

4)current_design AES //指定编译芯片的主模块名

5)read_vcd -strip_path AES_TB/AES AES1.VCD //读入VCD文件

6)set_waveform -file /home/.../project/AES/AES1.out -format out //指定功耗的输出路径

7)calculate_power -waveform //根据网表和“值变存储文件”VCD计算功耗

4 对功耗采集和能量分析攻击

反复使用第3节所述的采集仿真功耗的方法,仅在步骤3的激励文件中修改明文的值(一般采用随机明文),可以产生大量对应着不同明文的功耗曲线,对功耗曲线进行如下所述的相關能量分析攻击,则可以逐字节恢复出设备密钥。

% cipher:密文数组; traces:功耗数组; key:恢复出来的128位设备密钥

function key = aesCPA( cipher,traces )

parfor n = 1:keyWidth %并行化逐个字节猜测子密钥

hd = calEASSt9St10HD( cipher, n ); %计算所有候选密钥对应的猜测功耗值

cor = calTraceHdCor( traces,hd ); %计算汉明距离与实际功耗的皮尔斯线性相关度

key(n)= maxIndex( cor ); %找出使得皮尔斯线性相关度最高对应的猜测密钥

end

end

在仿真平台上采集10000组不同的随机明文对应的AES加密功耗,使用这些功耗曲线和明文组,使用上述相关能量分析攻击算法,可以正确恢复出设备密钥。图 2给出对设备密钥第一个字节的攻击结果,可以看出随着明文数增加到500条以上,正确密钥对应的皮尔斯相关度(黑色加粗线条)明显大于其他错误密钥对应的皮尔斯相关度,从而可以正确找到设备密钥。

5 总结

本文详细介绍了以Primepower为核心的能量分析攻击仿真功耗采集平台的搭建过程,演示了如何使用该平台采集AES密码算法加密多组不同明文的动态瞬时功耗曲线,并使用这些功耗对AES算法成功实施了相关能量分析攻击。

参考文献:

[1]P. Kocher, J. Jaffe and B. Jun. Differential power analysis[C].Advances in Cryptology – CRYPTO99, Springer Berlin Heidelberg, 1999:388-397.

[2]Gandolfi K, Mourtel C, Olivier F. Electromagnetic analysis: Concrete results[C]. Cryptographic Hardware and Embedded Systems - CHES 2001. Springer Berlin Heidelberg, 2001:251-261.

[3]E. Brier, C. Clavier and F. Olivier. Correlation Power Analysis with a Leakage Model[C].Cryptographic Hardware and Embedded Systems-CHES 2004. Springer Berlin Heidelberg, 2004:16-29.

[4]Mangard Stefan, Elisabeth Oswald, and Thomas Popp. Power analysis attacks: Revealing the secrets of smart cards[M].Springer Science & Business Media, 2008.

广东省公益研究与能力建设专项资金(2016a010101030);广东普通高校青年创新人才项目(2014KQNCX177)资助

作者简介:李伟键(1979-),男,广东汕头人,博士,讲师,研究方向:密碼芯片侧信道攻击与防护。