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, 侧信道攻击, 凭据扫描, 密码学, 密钥恢复, 嵌入式安全, 手动系统调用, 深度学习, 逆向工具