项目简介
pqm4 库、基准测试和测试框架源于欧洲委员会在 H2020 计划资助的 PQCRYPTO 项目。该项目实现了面向 ARM Cortex - M4 系列微控制器的后量子密钥封装机制和后量子签名方案,为后量子密码算法在该平台上的应用提供测试、基准测试和集成支持。
项目的主要特性和功能
- 多轮算法支持:主分支涵盖 NIST 选中标准化、NIST PQC 标准化过程第 4 轮、第一轮额外签名的方案,也有前几轮实现版本。
- 自动化测试与基准测试:能在常见开发板进行自动化功能测试,自动生成测试向量并与主机端参考输出对比,可对速度、堆栈使用、代码大小做自动化基准测试,还能分析对称原语(SHA - 2、SHA - 3、AES)的周期使用情况。
- 方案集成与扩展:集成 PQClean 的干净实现,框架便于集成新方案和实现。
- 多平台支持:支持 nucleo - l4r5zi、stm32f4discovery 等多种搭载 ARM Cortex - M4 芯片的开发板。
- API 标准化:采用 NIST/SUPERCOP/PQClean API,确保所有方案遵循统一规范。
安装使用步骤
安装依赖
- ARM 工具链:安装 arm - none - eabi 工具链,多数 Linux 系统安装
arm - none - eabi - gcc
(或gcc - arm - none - eabi
)包,部分发行版需显式安装libnewlib - arm - none - eabi
。 - OpenOCD:
nucleo - l4r5zi
开发板用 OpenOCD(测试版本 0.12)进行二进制文件闪存,可通过包管理器安装或 从源码编译。 - Python3:基准测试脚本要求 Python 版本 >= 3.8。
- pyserial:多数平台的主机端 Python 代码需要该模块,可通过包管理器安装或使用
pip3 install -r requirements.txt
安装。 - ChipWhisperer:使用
cw308t - stm32f3
开发板需安装该模块,否则可跳过。 - QEMU >= 5.2:用于模拟
mps2 - an386
平台,不使用该平台可跳过安装。
连接开发板
以 STM32F4 Discovery 开发板为例,用迷你 USB 端口将开发板连到主机,为其供电并允许闪存二进制文件。若用带有 PL2303 芯片的 UART - USB 连接器,默认内核应加载其驱动,未加载时驱动通常名为 pl2303
,macOS 系统需 安装 并重启。用杜邦线将 USB 连接器的 TX
/TXD
引脚连到开发板的 PA3
引脚,RX
/RXD
连到 PA2
引脚,也可按需连接 GND
引脚。
下载项目
用户已下载本项目的源码文件,此步骤可跳过。
编译代码
选择目标平台并编译代码,示例如下(可根据 PC 情况调整线程数):
bash
make -j4 PLATFORM=stm32f4discovery
运行测试和基准测试
编译完成后,每个实现会生成六个二进制文件用于测试和基准测试,可使用相应工具将 elf
文件或二进制文件闪存到开发板。也可使用 Python3 脚本自动化测试和基准测试:
- python3 test.py
:将所有测试二进制文件闪存到开发板并检查是否有错误。
- python3 testvectors.py
:将所有测试向量二进制文件闪存到开发板,将测试向量写入 testvectors/
目录,并在主机上执行参考实现,检查不同实现的测试向量一致性。
- python3 benchmarks.py
:闪存堆栈和速度二进制文件,将结果写入 benchmarks/stack/
和 benchmarks/speed/
目录。
脚本支持一些命令行参数,如 --platform <platformname>
设置目标平台,--opt {speed,size,debug}
设置编译优化标志等。若更改这些参数,需运行 make clean
重新编译。
还可使用 python3 convert_benchmarks.py md
或 python3 convert_benchmarks.py csv
将基准测试结果转换为 markdown 表格或 csv 文件。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】