yuyuchi113727/side-channel-attack

GitHub: yuyuchi113727/side-channel-attack

Stars: 1 | Forks: 0

# 基于深度学习的侧信道攻击(PyTorch) 本项目使用 PyTorch 实现基于深度学习的侧信道攻击(Side-Channel Attack, SCA),包含: - CNN 模型 - ASCAD 风格数据集读取 - Rank 演化分析 - Loss 曲线绘制 - 模型权重保存 适用于: 探究密码学与深度学习跨学科融合 # 项目结构 project/ │ ├── main.py ├── model_framework.py ├── train_model.py ├── test_model.py ├── datafactory.py ├── plot.py │ ├── config.yaml ├── requirements.txt ├── README.md ├── .gitignore ├── (ASCAD.h5) ├── (ascad_cnn_model.pth) │ ├── rank.png └── loss.png 括号表示需要自己生成 # 环境配置 推荐: - Python 3.10 - CUDA 11.8 - PyTorch 2.1.2 安装依赖: pip install -r requirements.txt 若使用 NVIDIA GPU,推荐安装 CUDA 版本 PyTorch: pip install torch torchvision --index-url https://download.pytorch.org/whl/cu118 # 数据集说明 本项目使用 ASCAD 风格 HDF5 数据集 下载网址: https://www.data.gouv.fr/api/1/datasets/r/e7ab6f9e-79bf-431f-a5ed-faf0ebe9b08e 下载完成后解压缩,找到ASCAD.h5数据集即可 数据集通常包含: Profiling_traces/ Attack_traces/ traces labels metadata 其中: - traces:功耗波形 - labels:中间值(Sbox)标签 - metadata:明文、密钥等信息 # 训练方法 直接运行: python main.py 程序将: - 读取数据集 - 训练模型 - 保存权重 - 绘制 Loss 曲线 - 绘制 Rank 曲线 # Rank 演化说明 项目支持 Rank Evolution 分析。 含义: - Rank = 0:正确密钥排名第一,攻击成功 - Rank < 5:实际攻击中通常已可接受 随着攻击 traces 增加: - Rank 越低越好 - 理想情况下最终收敛到 0 # Loss 曲线说明 使用交叉熵损失函数: - ln(256) ≈ 5.545:随机猜测水平 - ln(5) ≈ 1.609:攻击底线,为Rank=5时的理想最大交叉熵 Loss 越低表示模型区分能力越强。 # 可视化结果 训练结束后会生成: - `rank.png` - `loss.png` # 项目说明 本项目主要用于: 密码学导论课程大作业开源 不用于任何非法用途。 # License MIT License