一、引言
1 CPA
将能量迹和观察到的泄露(泄露模型包括 HW、HD)关联
2 深度学习方法
- DL-SCA 在预处理和攻击效果上优于其它建模类攻击,它将能量迹和标签在建模阶段结合起来,在定义的模型上根据定义的标准(高准确率或低损失)运行
- 标签取决于泄露函数和密钥假设
- 模型输入层为能量迹,输出层包括泄露模型定义的类
- 训练后模型参数的权重用于攻击阶段确定密钥假设的概率
3 攻击评估方法
- SCA 性能评估指标一般为密钥次序(key rank)/ 猜测熵(guessing entropy),攻击模型输出密钥空间中所有密钥的概率,将其降序排列则正确密钥在密钥空间中的次序即为密钥次序 / 猜测熵
二、相关工作
- 密钥猜测限制为不超过 32 位
- 基于深度学习的建模方法(包括 SVM、神经网络)效果好,但是需要利用对攻击者随机掩码有了解的假设,而直接攻击内部轮即可避开反制措施
三、对 AES 算法内部轮的一阶 DPA 攻击
1 攻击第 4 轮字节替换操作
- 指定 \(v\) 为第 4 轮字节替换操作后的 1 个中间字节
- \(v=S(m_0*S(m_0*S(m_0*S(p_0\oplus k_0)\oplus \delta)\oplus \gamma)\oplus \theta)\),\(\theta\) 取决于所有的 16 个明文字节
- 需要通过猜测 \(k_0\), \(\delta\), \(\gamma\) 和 \(\theta\) 值达到 32 位的极限
- 以上两点导致对第 4 轮字节替换操作的攻击不可行
2 攻击第 7 轮轮密钥加操作
- 指定 \(v\) 为第 7 轮轮密钥加操作前的 1 个中间字节
- \(v=k_0\oplus S^{-1}(m_0'*S^{-1}(m_0'*S^{-1}(c_0\oplus k_1)\oplus\delta)\oplus\gamma)\),\(\delta\) 取决于 3 个密文字节,\(\gamma\) 取决于 12 个密文字节
- 需要通过猜测 \(k_1\), \(\delta\) 和 \(\gamma\) 值进行攻击
注:原理详见 2010 Principles on the Security of AES against First and Second-Order Differential Power Analysis
四、实验结果
1 深度学习模型结构
- 模型:\(CNN_{best}\)
- 结构
- 5 个卷积块,每个卷积块包括 1 个卷积层和 1 个平均池化层,卷积滤波器大小为 (64, 128, 256, 512, 512),卷积核大小为 11,激活函数为 ReLU
- 2 个全连接层,每个层包括 4096 个单元,激活函数为 Softmax
- 损失函数为交叉熵
- 超参数调试
- RMSprop 优化器
- 学习率为 \(10^{-5}\)
- 批大小为 64
- 训练轮次为 50 / 100
- 输入输出
- 输入层参数数量 2960 × 64,2960 为 POI 数量
- 输出层参数数量 9,对应每个类(汉明重量)的概率
2 攻击第 2 轮字节替换输出
-
理论分析
-
指定 \(v\) 为第 2 轮某个 S 盒输出则 \(v=S(m_0*S(p_0\oplus k_1)\oplus \theta)\)
其中 \(\theta=k_0\oplus m_1*u_1\oplus m_2*u_3\oplus m_3*u_3\)(详见 2010 Principles on the Security of AES against First and Second-Order Differential Power Analysis)
要对 1 个明文字节进行一阶 DPA 攻击,需要固定 3 个明文字节,即一条能量迹可以用于攻击 4 个明文字节,即固定 12 个明文字节
-
使用汉明重量模型即 \(P∝HW[S(02*S(p_0\oplus k_0)\oplus \delta)]\)
其中 \(\delta=03*S(p_5\oplus k_5)\oplus 01*S(p_{10}\oplus k_{10})\oplus 01*S(p_{15}\oplus k_{15})\oplus k_0^1\)
-
由上式将 \((p_5,p_{10},p_{15})\) 固定,则 \(\delta\) 为定值,P 只与 \(k_0\) 和 \(\delta\) 相关
-
-
攻击过程
- 建模阶段将预测中间值 \(v\) 汉明重量作为标签
- 攻击阶段猜测 \(k_0\) 和 \(\delta\)
-
在攻击密码芯片过程中通常假设有两台设备,设备 1 是已知密钥的,主要用于训练过程;设备 2 里是未知密钥,作为待分析对象。一般使用中间值作为建模对象
- 步骤 1:在设备1上选特定的密钥和明文,采集波形作为神经网络输入,将预测的中间值作为标签进行训练,得到一个可用于从波形中分类得到中间值信息的神经网络
- 步骤 2:在设备 2 上采集波形输入到神经网络进行分类
- 步骤 3:用步骤 2 输出的中间值推导密钥
3 攻击第 3 轮字节替换输出
略
4 攻击第 4 轮字节替换输出
略
标签:AES,Based,字节,攻击,明文,密钥,Learning,delta,oplus From: https://www.cnblogs.com/buaa19231055/p/16886344.html