智能卡抗DPA攻击的设计与实现
时间:05-27
来源:现代电子技术 作者:张剑峰 钱晶晶 谈慧宇 高进涛
点击:
2 DPA攻击原理
在一个没有任何抗DPA攻击的加密芯片上指令的执行顺序和相关数据处理操作会影响功率消耗,尽管这种影响会被噪声消耗,但是靠统计的方式还是可以看出端倪。DPA攻击技术以功率消耗图为基础,再以统计方式推演主密钥的攻击技术,其原理是智能卡在执行加密过程中会消耗能量,产生电磁辐射,通过使用特殊的电子测量仪和数学统计技术,就可以检测和分析这些变化,从而得到芯片中的特定关键信息。智能卡执行一条指令消耗的能量与指令的操作数相关,某一指令I的执行所消耗的平均功耗P如下式所示:
式中:PI表示指令I执行过程中平均消耗的能量;op1,op2,…,opn表示I的操作数;PI(0)和PI(1)分别表示op1取0和1时执行指令I消耗的平均功耗。可见,PI与op1相关(△PI≠0)。
另外,考虑到智能卡采用的是CMOS工艺,其功耗主要是动态功耗Pd,而Pd大小如下面公式所示:
式中:f是工作频率;CL是输出节点的集总负载电容;VDD是电源电压;α是电路开关活动因子(电路翻转率)。可见CMOS逻辑门功耗大小与α密切相关,所以,电路中的数据的0与1状态与电路的功率信号必然具有一定的相关性。
综上所述,加密用密钥与电路功耗存在相关性,DPA攻击就是从这种相关性人手,最终实现对密钥的破解。下面以AES算法为例,介绍DPA攻击的过程:
(1)随机生成大量明文;
(2)加密这些明文,并记录下加密操作时的能耗曲线,求得这些曲线的平均;
(3)关注第一轮S2盒的输出,设输出的第一比特为b,对第一轮子密钥的第一个字节进行猜测,并用其与相应的明文计算出S2盒的输出;
(4)根据b的值,将能耗曲线按照b=0和b=1分为两类;
(5)计算出这两类的平均能耗曲线,并将二者相减,求得差分能耗曲线;
(6)观察步骤(2)和(5)生成的能量曲线。若密钥猜测正确,那么步骤(4)的分组就是正确的,步骤(5)生成的差分能耗曲线将和步骤(2)生成的平均能耗曲线呈现较大的差别,差分能耗曲线中将出现峰值。因此,攻击者通过观察峰值来判断密钥的猜测是否正确;
(7)重复步骤(3)~(6),得到其他轮的子密钥。DPA攻击易于实现,一个完全不懂得智能卡技术的编程人员完全可以利用专用程序对没有DPA防范的智能卡实现攻击。高安全性的智能卡必须采取相应的防范措施以实现抗DPA攻击。
3 抗DPA攻击的设计
目前各种密码系统的算术逻辑运算单元的VLSI设计已得到较为广泛的研究,如何在其他方面实现抗DPA攻击是值得进一步深入研究的问题。下面从随机数产生器、组合和时序逻辑防DPA设计介绍智能卡抗DPA攻击的电路实现。
3.1 随机数产生器设计
对于智能卡的DPA攻击,主要是利用在卡上嵌入式微处理器运作时,某个特定指令的执行或数据存取所消耗功率,在供应电压源上所表现特定的电流频谱提供的有用信息。故可以通过外加额外的电路造成额外的电流消耗,从而改变电流频谱以达到抗DPA攻击。同时额外的电流消耗电路必须通过采用随机数随机的方式,产生随机数消耗电流,以达到芯片消耗电力无法预测性,使其不能被分析与统计。
为此,可以在随机数产生电路中设计如图2所示的随机数消耗电路,电路由比较器、移位寄存器、译码器组成;当电阻噪声产生的噪声电压经过放大器、比较器后,产生"1"或"0"数字信号,存入移位寄存器,这样寄存器内的值已经类似混沌式RNG所产生的随机数,此随机数经译码器编码后,控制三态充放电缓冲器的充放电个数,最终达到以随机数控制电流消耗的目的。
3.2 组合逻辑防DPA攻击设计
防DPA攻击的主要目的是使电路特性在运算时保持相同,而保持电特性相同很重要的一点是使翻转的晶体管数量在任何运算步骤中都是一个常数。为实现这个目的可在电路运算步骤之间增加一个中间步骤,这样能防止有用信息从功耗分析中泄漏出去。最简单的中间步骤设置是在输入参数和电路运算完成之后设置系统中间值。
为此,参考异步逻辑电路的双轨编码方式中对信息的每一位用两根信号线进行编码的方式。采用两位信号线的组合值"01"和"10"来表示数字逻辑的"真"和"假",而组合值"00"和"01"则为中间值。这样的编码方式下,设计的基本逻辑单元电路如图3所示。
如图3(a)电路对于输入A(A1A2)和B(B1B2),输出只有O1O2和R1R2有效,当输入A1A2B1B2为0000或1111时,输出O1O2和R1R2的值是11或00,这样实现了编码中间态的传递。而当输入A1A2B1B2为有效数据0101,0110,1001和1010时,输出O1O2和R1的值就得到相关的NAND,AND,NOR和OR四个逻辑功能;其中,输出O1O2→NAND,O2O1→AND,R1R2→NoR,R2R1→OR。至于NOT的实现如图3(b)的电路所示。所以,上述基本的逻辑电路足以实现复杂的数字组合逻辑运算功能。
在一个没有任何抗DPA攻击的加密芯片上指令的执行顺序和相关数据处理操作会影响功率消耗,尽管这种影响会被噪声消耗,但是靠统计的方式还是可以看出端倪。DPA攻击技术以功率消耗图为基础,再以统计方式推演主密钥的攻击技术,其原理是智能卡在执行加密过程中会消耗能量,产生电磁辐射,通过使用特殊的电子测量仪和数学统计技术,就可以检测和分析这些变化,从而得到芯片中的特定关键信息。智能卡执行一条指令消耗的能量与指令的操作数相关,某一指令I的执行所消耗的平均功耗P如下式所示:
式中:PI表示指令I执行过程中平均消耗的能量;op1,op2,…,opn表示I的操作数;PI(0)和PI(1)分别表示op1取0和1时执行指令I消耗的平均功耗。可见,PI与op1相关(△PI≠0)。
另外,考虑到智能卡采用的是CMOS工艺,其功耗主要是动态功耗Pd,而Pd大小如下面公式所示:
式中:f是工作频率;CL是输出节点的集总负载电容;VDD是电源电压;α是电路开关活动因子(电路翻转率)。可见CMOS逻辑门功耗大小与α密切相关,所以,电路中的数据的0与1状态与电路的功率信号必然具有一定的相关性。
综上所述,加密用密钥与电路功耗存在相关性,DPA攻击就是从这种相关性人手,最终实现对密钥的破解。下面以AES算法为例,介绍DPA攻击的过程:
(1)随机生成大量明文;
(2)加密这些明文,并记录下加密操作时的能耗曲线,求得这些曲线的平均;
(3)关注第一轮S2盒的输出,设输出的第一比特为b,对第一轮子密钥的第一个字节进行猜测,并用其与相应的明文计算出S2盒的输出;
(4)根据b的值,将能耗曲线按照b=0和b=1分为两类;
(5)计算出这两类的平均能耗曲线,并将二者相减,求得差分能耗曲线;
(6)观察步骤(2)和(5)生成的能量曲线。若密钥猜测正确,那么步骤(4)的分组就是正确的,步骤(5)生成的差分能耗曲线将和步骤(2)生成的平均能耗曲线呈现较大的差别,差分能耗曲线中将出现峰值。因此,攻击者通过观察峰值来判断密钥的猜测是否正确;
(7)重复步骤(3)~(6),得到其他轮的子密钥。DPA攻击易于实现,一个完全不懂得智能卡技术的编程人员完全可以利用专用程序对没有DPA防范的智能卡实现攻击。高安全性的智能卡必须采取相应的防范措施以实现抗DPA攻击。
3 抗DPA攻击的设计
目前各种密码系统的算术逻辑运算单元的VLSI设计已得到较为广泛的研究,如何在其他方面实现抗DPA攻击是值得进一步深入研究的问题。下面从随机数产生器、组合和时序逻辑防DPA设计介绍智能卡抗DPA攻击的电路实现。
3.1 随机数产生器设计
对于智能卡的DPA攻击,主要是利用在卡上嵌入式微处理器运作时,某个特定指令的执行或数据存取所消耗功率,在供应电压源上所表现特定的电流频谱提供的有用信息。故可以通过外加额外的电路造成额外的电流消耗,从而改变电流频谱以达到抗DPA攻击。同时额外的电流消耗电路必须通过采用随机数随机的方式,产生随机数消耗电流,以达到芯片消耗电力无法预测性,使其不能被分析与统计。
为此,可以在随机数产生电路中设计如图2所示的随机数消耗电路,电路由比较器、移位寄存器、译码器组成;当电阻噪声产生的噪声电压经过放大器、比较器后,产生"1"或"0"数字信号,存入移位寄存器,这样寄存器内的值已经类似混沌式RNG所产生的随机数,此随机数经译码器编码后,控制三态充放电缓冲器的充放电个数,最终达到以随机数控制电流消耗的目的。
3.2 组合逻辑防DPA攻击设计
防DPA攻击的主要目的是使电路特性在运算时保持相同,而保持电特性相同很重要的一点是使翻转的晶体管数量在任何运算步骤中都是一个常数。为实现这个目的可在电路运算步骤之间增加一个中间步骤,这样能防止有用信息从功耗分析中泄漏出去。最简单的中间步骤设置是在输入参数和电路运算完成之后设置系统中间值。
为此,参考异步逻辑电路的双轨编码方式中对信息的每一位用两根信号线进行编码的方式。采用两位信号线的组合值"01"和"10"来表示数字逻辑的"真"和"假",而组合值"00"和"01"则为中间值。这样的编码方式下,设计的基本逻辑单元电路如图3所示。
如图3(a)电路对于输入A(A1A2)和B(B1B2),输出只有O1O2和R1R2有效,当输入A1A2B1B2为0000或1111时,输出O1O2和R1R2的值是11或00,这样实现了编码中间态的传递。而当输入A1A2B1B2为有效数据0101,0110,1001和1010时,输出O1O2和R1的值就得到相关的NAND,AND,NOR和OR四个逻辑功能;其中,输出O1O2→NAND,O2O1→AND,R1R2→NoR,R2R1→OR。至于NOT的实现如图3(b)的电路所示。所以,上述基本的逻辑电路足以实现复杂的数字组合逻辑运算功能。
- 关于网络安全的几项关键性技术 (01-09)
- 3G智能卡的新业务研究 (03-19)
- WAPI在电信网的部署和运营探讨(02-10)
- 智能卡的边频攻击分析及安全防范措施 (01-24)
- 通过CCID接口让NFC智能手机实现近场通信(01-13)
- IC卡这么重要,你知道它的原理吗?(01-13)