# nuscar
**Repository Path**: osr-tech/nuscar
## Basic Information
- **Project Name**: nuscar
- **Description**: **现代化侧信道分析工具箱** — 专为侧信道研究员和安全工程师设计的高效武器库
- **Primary Language**: Python
- **License**: AGPL-3.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 7
- **Forks**: 0
- **Created**: 2025-03-10
- **Last Updated**: 2025-06-20
## Categories & Tags
**Categories**: security-dev
**Tags**: None
## README
# 🚀 NUSCAR: 高性能侧信道分析工具箱
**现代化侧信道分析工具箱** — 专为侧信道研究员和安全工程师设计的高效武器库
> **版权声明**
> 本项目仅用于学习科研使用,如果您需要将本项目代码用于商业产品,请联系我们(sales@osr-tech.com)获取商业许可证。
> 如果**NUSCAR**平台对您的研究和实验有帮助,可在工作中引用本工程,并推荐给其他人,我们不胜感激!
## 🌟 核心亮点
- **⚡ 极致性能**:基于Rust + PyO3实现核心算法加速,并行计算效率提升
- **📊 全栈工具链**:从曲线采集到侧信道分析的全流程解决方案
- **📚 高效开发**: python API接口,轻松扩展新型算法分析
- **🧠 集成分析方法**:CPA/DPA/LRA/TTest/ML/Template
- **📈 交互式可视化**:基于Plotly的智能绘图引擎
- **🗃️ 曲线文件处理**:Zarr格式高效管理海量曲线文件
- **🔄 格式互通**:支持Zarr/ETS/Trs等格式互转
- **⏬ 丰富的数据集**:提供多个开源侧信道[数据集下载](https://gitee.com/osr-tech/nuscar#-开源侧信道数据集下载-) ,方便测试验证
## 📦 快速安装
下载对应 `python` 版本的 `whl` 安装包,使用 `pip` 进行安装。
```bash
pip install nuscar-1.0.0-cp312-cp312-win_amd64.whl
```
## 🚴 快速入门
``` python
import nuscar
import numpy as np
# 加载曲线数据
reader = nuscar.ReaderZARR("../datasets/aes_stm32.zarr")
ctn = nuscar.ContainerZARR(reader)
# 执行AES算法CPA攻击
sf = nuscar.ciphers.aes.attack_first_sbox_hw()
dist = nuscar.distinguisher.CPADistinguisher()
task = nuscar.task.DistinguisherTask(ctn, sf, distinguisher=dist, steps=10)
task.run()
# 展示结果
key = np.frombuffer(bytes([0x5e, 0x75, 0xe3, 0x26, 0x56, 0xba, 0x6b, 0x8c, 0x6e, 0x26, 0xd2, 0x54, 0xf2, 0xfc, 0x1b, 0x44]), dtype='uint8') # 仅作为验证使用
task.show_candidate(correct_key=key)
```
推荐使用[JupyterLab](https://jupyter.org/)环境作为NUSCAR运行环境进行侧信道分析。在`tutorials` 目录中,我们给出了更多示例Jupyter Notebook。
## 🔨 开发环境安装说明
以下是开发环境安装说明,请按照以下步骤进行操作:
1. 安装 Rust 编译环境
- 安装 Rust 工具链https://www.rust-lang.org/tools/install
- 下载安装 MSVC https://learn.microsoft.com/zh-cn/windows/dev-environment/rust/setup
2. 拉取 NUSCAR 工程代码:
```bash
git clone https://gitee.com/osr-tech/nuscar.git
```
3. 安装PyO3编译环境:
```bash
pip install maturin
```
4. 完成nuscar编译:
```bash
maturin build --release # 生成whl文件在target/wheels文件夹
```
## 📈 开源侧信道数据集下载 ⏬
**侧信道攻击与防御的研究高度依赖真实数据,开源数据集为学术界和工业界提供了可直接使用的实验基础,避免了昂贵或复杂的硬件数据采集过程。 研究人员可利用标准化数据集开发、验证和对比新的攻击算法(如深度学习模型)或防御方案(如掩码、噪声注入)。学生可通过开源数据集直观理解侧信道攻击原理(如通过功耗曲线提取密钥),并动手实现攻击或防御实验,弥补理论教学的不足。**
**NUSCAR项目整理了目前主流开源侧信道数据集,为方便在NUSCAR中使用,数据集统一转换为了高效的ZARR格式。**
| 序号 | 名称 | 描述 | 曲线数 | 采样点数 | 下载链接 |
|----|---------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------|--------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 | [DPA-V2](https://dpacontest.telecom-paris.fr/v2/index.php) | AES-128 硬件实现(SASEBO GII开发板),功耗采集,32个固定密钥(每个20,000条曲线)。 | 640,000
20,000 | 3,253
3,253 | [dpav2.zarr (3.6G)](http://120.79.25.111:90/dpav2.zarr)
[dpav2_k32.zarr (116M)](http://120.79.25.111:90/dpav2_k32.zarr) |
| 2 | [DPA-V4](https://dpacontest.telecom-paris.fr/v4/rsm_traces.php) | AES-256 RSM 软件实现(ATMega-163),电磁采集,1个固定密钥。 | 20,000 | 435,002 | [dpav4_rsm.zarr (6.6G)](http://120.79.25.111:90/dpav4_rsm.zarr) |
| 3 | [DPA-V4.2](https://dpacontest.telecom-paris.fr/v4/42_traces.php) | AES-128 RSM 软件实现(ATMega-163),电磁采集,1个固定密钥。 | 5,000 | 1,704,402 | [dpav4_2_rsm_k00.zarr (6.3G)](http://120.79.25.111:90/dpav4_2_rsm_k00.zarr) |
| 4 | [ASCAD V1](https://github.com/ANSSI-FR/ASCAD) | boolean masked AES软件实现(ATMega8515开发板),电磁采集,1个固定密钥。 ascadv1为提取的兴趣点数据,ascadv1_raw为原始数据。 | 60,000
60,000 | 700
100,000 | [ascadv1.zarr (22M)](http://120.79.25.111:90/ascadv1.zarr)
[ascadv1_raw.zarr (3.1G)](http://120.79.25.111:90/ascadv1_raw.zarr) |
| 5 | [ASCAD V2](https://github.com/ANSSI-FR/ASCAD) | affine masked AES软件实现(STM32开发板),功耗采集,随机密钥。 | 510,000 | 15,000 | [ascadv2-extracted.zarr (6.0G)](http://120.79.25.111:90/ascadv2-extracted.zarr) |
| 6 | [Aisylab AES_HD](http://aisylabdatasets.ewi.tudelft.nl/) | AES-128 硬件实现(SASEBO GII开发板),功耗采集,1个固定密钥。包括一个基础数据集和一个扩充数据集,曲线集中前45,000/450,000条为训练集,后5,000/50,000条为攻击集。 | 50,000
500,000 | 1,250
1,250 | [aes_hd.zarr (70M)](http://120.79.25.111:90/aes_hd.zarr)
[aes_hd_ext.zarr (698M)](http://120.79.25.111:90/aes_hd_ext.zarr) |
| 7 | [CHES CTF 2018](http://aisylabdatasets.ewi.tudelft.nl/) | masked AES-128软件实现,功耗采集,1个固定密钥。 曲线集中前4500条为训练集,后500条为攻击集。 | 5,000 | 2,200 | [ches_ctf.zarr (384M)](http://120.79.25.111:90/ches_ctf.zarr) |
| 8 | [CHES CTF 2020](https://ctf.spook.dev/) | Clyde-128软件实现(sw3、sw4)和硬件实现(hw2、hw3),共220,000条曲线,包括固定密钥(fkey)和随机密钥(rkey),功耗采集。 | 100,000
100,000
10,000
10,000 | 7,000
7,000
62,500
83,333 | [fkey_hw2_K1_100000_0.zarr (1.3G)](http://120.79.25.111:90/fkey_hw2_K1_100000_0.zarr)
[rkey_hw3_100000_0.zarr (1.4G)](http://120.79.25.111:90/rkey_hw3_100000_0.zarr)
[fkey_sw3_K0_10000_0.zarr (1.2G)](http://120.79.25.111:90/fkey_sw3_K0_10000_0.zarr)
[fkey_sw4_K0_10000_0.zarr (1.6G)](http://120.79.25.111:90/fkey_sw4_K0_10000_0.zarr) |
| 9 | [Ed25519 (WolfSSL)](https://github.com/leoweissbart/MachineLearningBasedSideChannelAttackonEdDSA) | 无防护的EdDSA (Curve25519) 软件实现, STM32开发板,随机密钥,功耗采集。 | 6,400 | 1,000 | [databaseEdDSA.zarr (22M)](http://120.79.25.111:90/databaseEdDSA.zarr) |
| 10 | [ECC EdDSA](https://github.com/AISyLab/IterativeDLFramework) | 带防护的EdDSA (Curve25519) 软件实现, 包括两个防护机制的数据集,随机密钥,功耗采集。曲线集中前63,750条为训练集,后12,750条为攻击集。 | 76,500
76,500 | 8000
1000 | [cswap_arith.zarr (669M)](http://120.79.25.111:90/cswap_arith.zarr)
[cswap_pointer.zarr (76M)](http://120.79.25.111:90/cswap_pointer.zarr) | |
| 11 | [REASSURE ECC](https://zenodo.org/records/3609789) | 带防护的ECDH (Curve25519,CSPOINTER) 软件实现, STM32开发板,5997次ECDH,随机密钥,电磁采集,每条曲线对应蒙哥马利阶梯标量乘法的一次迭代,255条曲线对应一次ECDH(5997*255=1529235)。 | 1529235 | 5500 | [REASSURE_c25519.zarr (7.0G)](http://120.79.25.111:90/REASSURE_c25519.zarr) |
| 12 | [Jlsca traces](https://github.com/Keysight/Jlsca) | SHA1、DES、3DES、AES-128、AES-192、AES-256软件实现。 | | | [Jlsca-traces.zip (20M)](http://120.79.25.111:90/Jlsca-traces.zip) |
| 13 | PANDA 2018 Challenge | 包括三组挑战:(1)标准AES-128软件实现,采集的是加密运算过程中第一轮的能量泄露波形;(2)非标准S盒的AES-128软件实现,采集的是加密运算过程中第一轮的能量泄露波形;(3)非标准S盒的AES-128软件实现,已知第一个密钥字节 (k0) 的取值范围在 0x50~0x80之间。 | 1,200
9,995
997
5120 | 61,049
67,970
67,970
50,000 | [Panda2018_Challenge1.zarr (62M)](http://120.79.25.111:90/Panda2018_Challenge1.zarr)
[Panda2018_Challenge2-1.zarr (572M)](http://120.79.25.111:90/Panda2018_Challenge2-1.zarr)
[Panda2018_Challenge2-2.zarr (58M)](http://120.79.25.111:90/Panda2018_Challenge2-2.zarr)
[Panda2018_Challenge3.zarr (202M)](http://120.79.25.111:90/Panda2018_Challenge3.zarr) |
| 14 | [第九届(2024年)全国高校密码数学挑战赛赛题三](http://www.cmsecc.com/xiazai/) | AES-128软件实现,功耗采集,包括低噪声水平样本、中噪声水平样本、高噪声水平样本,需基于给定泄露样本与对应明文信息编写能能量分析攻击代码恢复AES密码芯片所使用密钥第一字节值(详见压缩包内说明文档)。 | | | [cmsecc2024-chal3.zip (2M)](http://120.79.25.111:90/cmsecc2024-chal3.zip) |
| 15 | [金融密码杯赛题三](https://fincryptography.cn/) | 后量子签名算法 Dilithium 软件实现(STM32开发板),功耗采集,采集曲线主要是 Dilithium生成多项式向量 y 的过程,参数选择的是 NIST Security Level 为 2 的情况(详见PDF说明文档)。 | 40,000
40,000
30,000
20,000
10,000
8,000
5000;3500;2500;1500;700
| 46,000 | [fc_dilithium_training.zarr (3.7G)](http://120.79.25.111:90/fc_dilithium_training.zarr)
[fc-dilithium_attack0.zarr (3.5G)](http://120.79.25.111:90/fc-dilithium_attack0.zarr)
[fc-dilithium_attack1.zarr (2.7G)](http://120.79.25.111:90/fc-dilithium_attack1.zarr)
[fc-dilithium_attack2.zarr (1.8G)](http://120.79.25.111:90/fc-dilithium_attack2.zarr)
[fc-dilithium_attack3.zarr (892M)](http://120.79.25.111:90/fc-dilithium_attack3.zarr)
[fc-dilithium_attack4.zarr (710M)](http://120.79.25.111:90/fc-dilithium_attack4.zarr)
[fc-dilithium_attack5-9.zarr.tar (1.2G)](http://120.79.25.111:90/fc-dilithium_attack5-9.zarr.tar)
[fc_dilithium_desc.pdf (0.1M)](http://120.79.25.111:90/fc_dilithium_desc.pdf) |
**下载文件校验(SHA256):**
- aes_hd_ext.zarr: c64d632a961605f31c70291b538aed9a16cd491877de6c6e2244807415494258
- aes_hd.zarr: 33abc31709f5b51f8e2ff765c21b203971796d894ca896b319d349f24065f1d2
- ascadv1_raw.zarr: f08fff0950914c5e47af632155d663b4c2fb0401655bd9cc1f2980b81d49971a
- ascadv1.zarr: dde347b4a7b1c8ad0b71c150c1056c1a6847d48aaa3ea7528145acc5c4523a8a
- ascadv2-extracted.zarr: e657b6a71103678cecef283c9d2f8afff1c6b704d2f67ffbe09a2ef44d3ea758
- ches_ctf.zarr: 66755e37a653984e177bc8053db26d2059a64727936e0c0f92e24d8828df6e49
- cswap_arith.zarr: a4cdd0457e5c1551e5bfcc34a2045e5229da3d963427e99d7d8a7a42b5e0f976
- cswap_pointer.zarr: 8136ea936fa8f9684f9cb041290e528f426f03588dbcabe44ca378a9c3b43ea1
- cmsecc2024-chal3.zip: 639401d98dbe483016f5f942b5fc4afc173b05feee5d18e8dd6408c0a4116ef9
- databaseEdDSA.zarr: 36ed7c8b8ebb634ccc1c97bfc0720593a72f57ae7488cd47dc112a655013f8ed
- dpav2_k32.zarr: 849c215ac62f7421e8340f55ff211f57111e0a0452a154fa4ec1991d2b814715
- dpav2.zarr: 3c946e10a4d3b8039cc832d2d0a6947c6e74dd6a94c7b332f59d87529ec65e89
- dpav4_2_rsm_k00.zarr: 0574d4730635af10d873268ac94e10adf5391c03493aa8226ca9e0a8766292a7
- dpav4_rsm.zarr: d51fa3125a7da3dd26152f4b5fe37371eeed73909a268eededebd600a267ee37
- fc_dilithium_training.zarr: cc635c20cf81bcede7da5019194045b0ca6ae08b486020f2c765f21bd0f0c5d6
- fc-dilithium_attack0.zarr: 66182df95ad2628fb845a9392b89fe50dcc4b8a1e7367f2139d305e9ae1b537a
- fc-dilithium_attack1.zarr: 89022ce0c95fd11b84cae4542a29d2f767881251aae3cf3bfde4dfd462f5c799
- fc-dilithium_attack2.zarr: 83db548c44250dab3ed556603a6977d08c95b0e46e28ee1f1d37dbd9b452491d
- fc-dilithium_attack3.zarr: 2869349a481efcbd48a1a59052651cbc8e5c3479f02689214ce817b80afcb699
- fc-dilithium_attack4.zarr: 22d81e22b72135e70ead4c50c9f24f75ea3e773fb83a57e2bbf0e6464191f3f7
- fc-dilithium_attack5-9.zarr.tar: 034c80285bbd78be6fbe9c2ba02b7aa6339c839f92b7084050058c4908fa47c0
- fkey_hw2_K1_100000_0.zarr: 3d644d696eecba59e14198e7f69855bf7f94e79d47c8c3512cfe0d6fe4374529
- fkey_sw3_K0_10000_0.zarr: 6bf5846e7f48169925833bf076b3aee300cd6a63d0839c3c7820a532e786e2c6
- fkey_sw4_K0_10000_0.zarr: 6937ac706c37fb4fe38351da62e0d64cf31f4d5b073a28b0bacb273fd5ab420f
- Panda2018_Challenge1.zarr: 018e0090a187f3ec83255fbf1ba952ed5edb8c7b02fb3881d16e50ed73b312ec
- Panda2018_Challenge2-1.zarr: 879f763bc5ee165444a862e791e7f67742d5c131c4fc0d1c63ec7a7515c953e5
- Panda2018_Challenge2-2.zarr: fa057e7ebc7ee9b0a49d5ded996303559254238f9d0656f7bd389c9fdd7f3f82
- Panda2018_Challenge3.zarr: 806214ecc5e2cca05da869ae4f19cbdd03a385923b59d074ab629f310aa52187
- REASSURE_c25519.zarr: 78b75464f609a6ecbfb7483fe5f514162df1c207565574918343e0629c027b1a
- rk_hw3_100000_0.zarr: f24c486421fa0e32fb68724b6b208af1614a9f82528cc9d3a142d5d1a4e66eb0
- Jlsca-traces.zip: a7f842523b39113935897d90674b9fbe5df58cf34b48aa3459e35b88cc6ae060