侧信道攻击实验四 AES CPA 攻击

侧信道攻击实验四 AES CPA 攻击

参考大佬文章,收益匪浅 因为这是课内实验,所以我并没有把所有代码都上传,参考的文章里代码很全。

实验目的

掌握AES算法能量迹构造;

掌握AES算法CPA攻击基本原理。

实验人数

每组1人

系统环境

Windows

实验原理

CPA是利用密码芯片的假设模型,预测其加解密时的功耗大小,然后和实际测量的功耗大小进行相关性分析推测密钥。CPA攻击通常采用汉明重量模型,所谓汉明权重就是一个码字中1码元的总数目,汉明权重越大,芯片运算时的功耗就越大。

实验内容

Readfile-student.py:AES 能耗波形文件读入与存储,“Save2Npy”函数输出能量迹trace数据。

分析程序读入的pts、pcts、pns分别是什么数据,类型是什么,维数是多少

CPA-student.py:根据汉明重量模型恢复16个字节密钥。

补充相关系数的计算代码,并取最大值记为maxcpa

解释每个生成图像的含义(横纵坐标、波形、尖峰等)

打印输出恢复的所有正确密钥bestguess

分析能量迹对密钥恢复的影响:10、50、100、150、200、240条能量迹能够恢复的正确密钥的字节数和位置分别是什么,并分析其原因。

实验步骤

pts、pcts、pns分别是什么数据、类型、维数

pts

图6.1 pts部分数据

数据:明文

类型:数组

维数:二维(250,16)

pcts

图6.2 pcts部分数据

数据:明文,密文

类型:数组

维数:三维(250,2,16)

pns

图6.3 pns部分数据

数据:能量迹纵坐标

类型:数组

维数:二维(250,10000)

完善相关系数的计算代码

hwlist = np.zeros(numtraces)语句之前的代码是程序自带的,最外层的for循环的目的是遍历密钥的字节位置,第二层的for循环是遍历所有密钥的可能性。本次实验需要使用能量迹的明文和密钥异或运算并执行后续代码,所以还需要设置一层循环,使得对应设置数量的能量迹明文可以和密钥进行运算,求得汉明重量,代码如下。

hwlist = np.zeros(numtraces) #初始化数组

for tnum in range(0, numtraces):

hwlist[tnum] = HW[intermediate(pt[tnum][bnum], kguess)]

注意一点pt二维数组(程序另有设置明文数组为pt)的取值,pts明文数组中250表示明文数量,而16是明文的size,所以明文数组长度为16。

因为是汉明重量模型,按照以往实验的思路,下一步是根据相关系数计算公式 r i , j = ∑ d = 1 D [ ( h d , i − h i ‾ ) ( t d , j − t j ‾ ) ] ∑ d = 1 D ( h d , i − h i ‾ ) 2 ∑ d = 1 D ( t d , j − t j ‾ ) 2 {r_{i,j}} = \frac{

{\sum\nolimits_{d = 1}^D {\left[ {\left( {

{h_{d,i}} - \overline {

{h_i}} } \right)\left( {

{t_{d,j}} - \overline {

{t_j}} } \right)} \right]} }}{

{\sqrt {\sum\nolimits_{d = 1}^D {

{

{\left( {

{h_{d,i}} - \overline {

{h_i}} } \right)}^2}} \sum\nolimits_{d = 1}^D {

{

{\left( {

{t_{d,j}} - \overline {

{t_j}} } \right)}^2}} } }} ri,j​=∑d=1D​(hd,i​−<

相关推荐

365bet亚洲投注 三星S5和iPhone5s两款手机哪个更好 三星S5与iPhone5s区别对比图
365bet-体育投注 生肖鼠五行属什么?从土到木,解密老鼠的五行属性
365bet-体育投注 白色衣服配什么颜色裤子

白色衣服配什么颜色裤子

📅 09-05 👁️ 2590