bi-tud-sds/dizy-dl-sca

GitHub: bi-tud-sds/dizy-dl-sca

该项目实现了论文中提出的基于多头 CNN 的深度学习侧信道攻击方法,用于从 ChipWhisperer 采集的功耗轨迹中恢复 DIZY 流密码的密钥。

Stars: 0 | Forks: 0

# 使用深度学习的 DIZY 侧信道攻击 本项目实现了针对 DIZY 流密码的基于深度学习的侧信道攻击。它使用从 ChipWhisperer 设置中捕获的功耗轨迹来训练卷积神经网络(CNN),以预测中间值,进而可以用于恢复密钥。 ## 用法 本项目通过带有以下子命令的命令行界面(CLI)进行控制: ### 下载 下载并解压功耗轨迹数据集。 ``` python main.py download ``` **注意:** 数据集托管在 Google Drive 上,可供公开下载。下载脚本使用配置文件中指定的数据集 URL。当前的数据集文件 ID 列于配置文件模板 `config/config.py.template` 中。 ### 预处理 对来自 ChipWhisperer 项目的原始数据进行预处理。 ``` python main.py preprocess [--small-dataset] [--variable-key] [--analyze-labels] [--plot-traces] ``` - `--small-dataset`:将处理限制在前 10 万条功耗轨迹内。仅适用于固定密钥数据集 - `--variable-key`:处理所有收集到的十个可变密钥数据集 - `--analyze-labels`:分析标签分布 - `--plot-traces`:绘制功耗轨迹样本 ### 训练 训练模型。 ``` python main.py train [--model-type MultiHeadModel|SeparateNetworksModel] [--variable-key] ``` - `--model-type`:模型类型。默认为 MultiHeadModel。 - `--variable-key`:在可变密钥数据集上训练模型 ### 评估 评估最新的模型。 ``` python main.py evaluate [--variable-key] [--models] ``` - `--variable-key`:使用可变密钥测试数据集评估模型 - `--models`:比较两个模型的时间戳 ### 分析 使用最新训练的模型运行密钥收敛分析,以评估随着轨迹数量的增加,模型恢复密钥部分的能力。 ``` python main.py analyze [--variable-key] [--models model-0-timestamp model-1-timestamp] [--idx] ``` - `--variable-key`:使用可变密钥测试数据集进行分析 - `--models`:比较两个模型的时间戳 - `--idx`:针对特定的 2 位密钥组进行分析 ## 环境要求 - Python 3.x - PyTorch - NumPy - Matplotlib - Scikit-learn - Pandas - ChipWhisperer 你可以使用以下命令安装所需的 Python 包: ``` pip install -r requirements.txt ```
标签:CNN, 侧信道攻击, 凭据扫描, 密码学, 密钥恢复, 嵌入式安全, 手动系统调用, 深度学习, 逆向工具