CPA相关功耗分析(一)

本文介绍了相关性分析方法在密码学中的应用,通过汉明重量和汉明距离来恢复密钥。详细阐述了执行步骤,包括确定攻击点、采集能量曲线、计算假设中间值和能量泄露值。此外,还讨论了CPA攻击,这是一种利用功耗与数据汉明权重相关性的分析技术,通过比较中间变量的汉明权重与功耗曲线的相关系数来确定密钥。

1.相关性分析方法简介

        相关性分析方法:针对部分或者全部密钥位参与密码运算的过程中,根据能量信号与密码运算计算过程中产生的中间数据汉明重量或者汉明距离的相关性,计算猜测密钥得到的中间结果汉明重量或者汉明距离与实测能量信号之间的线性相关性,来恢复密钥。

1.1补充知识

汉明距离 : 是一个概念,表示两个等长的字符串对应位不同的个数,对两个字符串进行异或运算,并统计其结果为1的个数就是汉明距离。(因为侧信道底层都是0和1的变换,所以此处只用二进制举例)

 汉明重量 : 它是一种特殊的汉明距离,指一个字符串与一个等长的“零”字符串的汉明距离,即一个字符串中非零的字符个数。(通俗说就是转换为二进制后1的个数)

<think> 嗯,用户这次明确提出想了解CPA相关能量分析的知识,结合之前讨论的DPA背景,看来ta对旁路攻击的学习正在深入。用户引用了四篇站内资料,但实际需求很明确——需要系统性的CPA讲解而非零散引用。从ta连续提问密码学攻击手法的行为看,可能是信息安全专业学生或硬件安全工程师。 用户提供的引用很有价值:引用[1][2]明确CPA是DPA的变种,核心是用相关系数替代差分;引用[4]展示DES攻击中汉明权重的关键作用——这些正好构成CPA原理的三大要素:相关性模型、汉明权重假设、密钥猜测框架。不过引用[3]提到用户曾看不懂论文中的DPA步骤,说明需要避免理论跳跃。 上次回答DPA时已建立基础框架(原理/应用/技术),这次可延续类似结构但突出CPA特性。特别注意两点:1)数学公式必须严格按LaTeX规范,尤其是相关系数公式;2)示例代码要补充完整,用户上次对DPA代码片段似乎很关注。 用户可能隐含的深层需求:如何实际操作CPA攻击?因此需强化实践环节,比如添加AES第字节攻击的完整流程。另外ta提到“看不懂为什么这么做”,解释每个步骤时要补充设计动机(比如为什么选汉明权重而非单比特)。 发现有趣的点:引用[4]显示DES的S盒输入汉明权重之和恒定,这种特性会极大提升CPA效率,可以在“优化策略”部分特别说明。 </think> ### CPA相关能量分析介绍 CPA(Correlation Power Analysis,相关能量分析)是DPA(差分能量分析)的改进形式,通过计算**功耗曲线与中间值汉明权重(Hamming Weight, HW)的线性相关系数**来提取密钥。其核心优势在于**更高的攻击效率**——通常比DPA所需采样次数更少[^2]。 --- ### 1. 原理与流程 #### 核心假设 加密设备的功耗 $P$ 与数据处理时的汉明权重 $HW$ 强相关: $$ P \approx a \cdot HW + b + N $$ 其中 $a$ 和 $b$ 为设备相关常数,$N$ 为噪声。 #### 攻击步骤 1. **数据采集**: - 输入 $N$ 个不同明文 $M_i$($i=1,2,\cdots,N$),采集对应功耗曲线 $T_i(t)$($t$ 为时间点)。 2. **中间值建模**: - **猜测密钥 $k$**:针对目标操作(如AES的S-box输入/输出),计算中间值 $V_i(k) = F(M_i, k)$。 - **计算汉明权重**:$D_i(k) = HW(V_i(k))$(值域为整数,如AES的S-box输出范围为 $0$-$8$)。 3. **相关系数计算**: 对每个时间点 $t$ 和候选密钥 $k$,计算真实功耗 $T_i(t)$ 与假设权重 $D_i(k)$ 的皮尔逊相关系数 $\rho(t,k)$: $$ \rho(t,k) = \frac{ \sum_{i=1}^{N} \left( T_i(t) - \overline{T(t)} \right) \left( D_i(k) - \overline{D(k)} \right) }{ \sqrt{ \sum_{i=1}^{N} \left( T_i(t) - \overline{T(t)} \right)^2 } \cdot \sqrt{ \sum_{i=1}^{N} \left( D_i(k) - \overline{D(k)} \right)^2 } } $$ 其中 $\overline{T(t)}$ 和 $\overline{D(k)}$ 为均值。 4. **密钥判定**: - 正确密钥 $k_{\text{true}}$ 对应的 $\rho(t,k)$ 在特定时间点 $t^*$ 会出现显著峰值(接近 $\pm 1$); - 错误密钥的 $\rho(t,k)$ 趋近于 $0$(仅噪声相关)。 > ✅ **关键改进**:CPA直接利用线性相关关系,比DPA的差分分组统计更敏感,通常 $N \geq 500$ 次采样即可恢复密钥[^2]。 --- ### 2. 技术细节 #### 汉明权重模型的选择 - **HW模型适用场景**: 功耗与数据位中“1”的数量相关(如微控制器寄存器的翻转功耗)。 例:AES的S-box输出为 $8$ 位,$HW \in [0,8]$。 - **汉明距离(HD)模型**: 若功耗与数据翻转量相关(如寄存器从旧值更新为新值),则用 $HD = HW(\text{旧值} \oplus \text{新值})$[^3]。 #### 相关系数的物理意义 - $|\rho| = 1$:完美线性相关; - $\rho = 0$:无线性关系; - **峰值位置** $t^*$:对应目标操作(如S-box查表)的执行时刻。 #### 优化策略 - **时间点对齐**:通过时钟同步或动态时间规整(DTW)消除时序抖动[^3]。 - **降维处理**:仅分析目标操作的时间窗口(如AES首轮S-box阶段),减少计算量。 - **密钥字节分治**:对AES等算法逐字节猜测密钥,将 $2^{128}$ 搜索降低为 $16 \times 2^8$ 次[^4]。 --- ### 3. CPA vs. DPA 对比 | **特性** | CPA | DPA | |------------------|----------------------------------|------------------------------| | **核心方法** | 线性相关系数 | 分组均值差分 | | **效率** | 更高(采样次数少) | 较低(需更多样本抑制噪声) | | **模型依赖性** | 需精确功耗模型(HW/HD) | 仅需数据位分组(0/1) | | **抗噪能力** | 较强(相关系数放大信号) | 依赖大量平均 | | **典型应用** | AES, DES, RSA等主流密码 | 同CPA,但效率较低 | > 💡 **联系**:CPA是DPA的统计优化版本,两者均依赖旁路功耗泄露[^1][^2]。 --- ### 4. 实例:攻击AES的S-box输出 1. **采集数据**: - 输入 $1000$ 个随机明文 $M_i$,记录功耗曲线 $T_i(t)$。 2. **猜测密钥字节**: - 对候选密钥 $k_c \in [0, 255]$,计算中间值 $V_i = \text{S-box}(M_i \oplus k_c)$。 - 生成假设汉明权重向量 $D_i = HW(V_i)$。 3. **计算相关系数**: ```python import numpy as np from scipy.stats import pearsonr traces = np.load('traces.npy') # 形状 (1000, 5000) plaintexts = np.load('plaintexts.npy') for k_candidate in range(256): D = [] for M in plaintexts: V = sbox(M ^ k_candidate) # S-box查表 D.append(hamming_weight(V)) # 计算HW rho = [pearsonr(traces[:, t], D)[0] for t in range(5000)] if np.max(np.abs(rho)) > 0.8: # 阈值判定 print(f"密钥字节: {k_candidate}") ``` 4. **结果判定**: - 正确密钥字节对应的 $\rho$ 曲线在S-box操作时刻出现明显尖峰(如图)。 --- ### 总结 CPA通过量化功耗与汉明权重的线性相关性,高效提取密钥。其核心在于: 1. **精确功耗建模**(HW/HD); 2. **相关系数最大化**的密钥搜索; 3. **时间窗口优化**降低计算开销。 在旁路攻击中,CPA已成为评估硬件安全性的标准工具[^1][^2]。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值