kunalofficial687/Correlation-Power-Analysis
GitHub: kunalofficial687/Correlation-Power-Analysis
基于汉明重量功耗模型的AES-128侧信道攻击演示工具,通过Pearson相关性分析从功耗迹中逐字节提取密钥。
Stars: 0 | Forks: 0
# Correlation-Power-Analysis
本仓库演示了针对无掩码 AES-128 实现的选择明文侧信道攻击。该项目展示了如何利用汉明重量功耗模型,将硬件 S-Box 操作期间泄露的微小功耗波动进行关联,从而破解密钥。
AES-128 相关功耗分析 (CPA) 攻击本仓库包含基于 Python 实现的相关功耗分析 (CPA) 攻击。这是一种侧信道攻击,旨在通过分析硬件设备(如 FPGA 或微控制器)在加密过程中的物理功耗,从中提取秘密密钥。
📖 概述:
标准数字安全假设攻击者只能访问输入和输出。然而,物理硬件会通过功耗、电磁辐射和时间等“侧信道”泄露信息。本项目演示了选择明文攻击如何利用 Pearson 相关系数将数学功耗模型(汉明重量)与现实世界的功耗测量值进行关联,从而绕过 AES-128 的安全防护。
🚀 工作原理:
攻击遵循以下逻辑步骤:
数据采集:我们收集设备加密已知明文时的功耗迹 ($t_i$)。
功耗建模:我们使用汉明重量模型来预测第一个 S-Box 操作期间的功耗。
假设检验:我们计算每个可能的密钥字节值(0–255)的预测功耗。
统计分析:我们使用 Pearson 相关系数 ($\rho$) 将我们的预测 ($h_i$) 与测量的迹 ($t_i$) 进行比较。
密钥提取:产生最高相关性(“峰值”)的密钥猜测即为正确的秘密密钥。
📊 结果:
当攻击成功时,结果图会显示正确密钥与 255 个错误猜测之间的明显区别。该峰值指示了秘密数据从硬件泄露的确切时刻。
正确密钥:被识别为 0xab (十进制: 171)。
相关性裕度:一个明显高于背景噪声的独特峰值。
🛠️ 安装与设置前置条件:
Python 3.xVS Code(推荐)或任何 Python IDE依赖项通过 pip 安装所需的数学和绘图库:Bashpip install numpy matplotlib
仓库结构cpa_attack.py:主 Python 脚本执行逻辑。plaintext.csv:加密模拟期间使用的输入数据。traces.csv:记录的功耗迹。
💻 使用方法:
克隆仓库: Bashgit clone [https://github.com/YOUR_USERNAME/AES-128-CPA-Attack.git](https://github.com/kunalofficial687/Correlation-Power-Analysis.git)
导航到项目文件夹:Bashcd AES-128-CPA-Attack
运行攻击:Bashpython cpa_attack.py
🛡️ 对策 本项目强调了硬件安全的重要性。为了防止此类攻击,开发者实施了:
掩码:向中间数据添加随机值。
隐藏:向功耗添加噪声或随机延迟以平滑峰值。
标签:AES-128, chosen-plaintext, CPA, FPGA, meg, Python, S-Box, 侧信道攻击, 信息安全, 密码分析, 密码学, 密钥提取, 嵌入式安全, 差分能量分析, 微控制器, 手动系统调用, 旁路攻击, 无后门, 汉明重量, 相关能量分析, 硬件安全, 能量分析, 逆向工具