能耗分析攻击(二)----- 中间值的选取

能耗分析攻击(二)----- 中间值的选取

\quad 本文章主要解决上一篇遗留的问题。我们在上一篇中讲到,可以用SubBytes的结果作为中间值来计算汉明重量进而计算相关度,进行DPA攻击。
\quad 这一篇中我们尝试使用AddRoundKey的结果即SubBytes的输入进行相同的操作,然后比较一下结果。


过程分析

\quad 首先列出参考网站给的部分代码(基于SubBytes的结果进行攻击):

for i=1:m
    after_sbox(i,:) = SubBytes(bitxor(inputs(i),key)+1);
end
 power_consumption = byte_Hamming_weight(after_sbox);
 

\quad 攻击选取了200条明文,放在数组 i n p u t input input中, k e y key key为所有候选密钥,由于我们针对一个S盒进行攻击,所以 k e y key key有256种取值,所有可能取值放在数组key中。所以代码中 b i t x o r ( i n p u t s ( i ) , k e y ) bitxor(inputs(i),key) bitxor(inputs(i),key)表示第 i , i ∈ { 1 , 2 , ⋯   , m = 200 } i,i\in\{1,2,\cdots,m=200\} i,i{1,2,,m=200}个明文异或所有可能的密钥,异或密钥后要穿越S盒,也就是代码中的 S u b B y t e s SubBytes SubBytes函数,将结果存放在 a f t e r _ s b o x after\_sbox after_sbox中。后面就是计算汉明重量的代码了,这与我们这篇文章的目标无关,就不再介绍了。
\quad 接下来我们将中间值换成 S u b B y t e s SubBytes SubBytes操作的输入,进行通过样的操作,也就是下面的代码:

for i=1:m
    before_sbox(i,:) = bitxor(inputs(i),key);
end
 power_consumption = byte_Hamming_weight(before_sbox);

其余代码保持不变,然后画出相关度的结果进行对比如下:


fig.1 after_sbox

fig.2 before_sbox

\quad 在fig.1 与 fig.2 中, power_consumption 与正确密钥的相关度用黑色的线绘出,其他密钥使用灰色的线绘出。可以发现在使用这200条traces两种方法的正确密钥的曲线会比错误密钥的曲线尖峰更明显,也就说明攻击者都能很好的分析出正确密钥的值。
\quad 但注意到fig.2 中,不仅正确密钥会出现尖峰,有些错误密钥也会出现尖峰,显然使用after_sbox作为中间值是更好的选择!

总结

\quad 我们通过这次实验证明了S-Box结果作为中间值在攻击时效果是远优于S-Box输入作为中间值的。经过查阅资料,发现论文[Pro05]1提供了一个数学证明,简言之,就是S-box确实对DPA攻击者有帮助。
\quad 换句话说,如果针对S-Box之后的中间结果,DPA攻击效果会更好。


  1. Prouff, E. (2005). DPA Attacks and S-Boxes. In: Gilbert, H., Handschuh, H. (eds) Fast Software Encryption. FSE 2005. Lecture Notes in Computer Science, vol 3557. Springer, Berlin, Heidelberg. https://doi.org/10.1007/11502760_29 ↩︎

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值