littlebot
Published on 2025-04-08 / 0 Visits
0

【源码】基于C语言的ARM Cortex M4后量子密码算法库

项目简介

pqm4 库、基准测试和测试框架源于欧洲委员会在 H2020 计划资助的 PQCRYPTO 项目。该项目实现了面向 ARM Cortex - M4 系列微控制器的后量子密钥封装机制和后量子签名方案,为后量子密码算法在该平台上的应用提供测试、基准测试和集成支持。

项目的主要特性和功能

  1. 多轮算法支持:主分支涵盖 NIST 选中标准化、NIST PQC 标准化过程第 4 轮、第一轮额外签名的方案,也有前几轮实现版本。
  2. 自动化测试与基准测试:能在常见开发板进行自动化功能测试,自动生成测试向量并与主机端参考输出对比,可对速度、堆栈使用、代码大小做自动化基准测试,还能分析对称原语(SHA - 2、SHA - 3、AES)的周期使用情况。
  3. 方案集成与扩展:集成 PQClean 的干净实现,框架便于集成新方案和实现。
  4. 多平台支持:支持 nucleo - l4r5zi、stm32f4discovery 等多种搭载 ARM Cortex - M4 芯片的开发板。
  5. API 标准化:采用 NIST/SUPERCOP/PQClean API,确保所有方案遵循统一规范。

安装使用步骤

安装依赖

  1. ARM 工具链:安装 arm - none - eabi 工具链,多数 Linux 系统安装 arm - none - eabi - gcc(或 gcc - arm - none - eabi)包,部分发行版需显式安装 libnewlib - arm - none - eabi
  2. OpenOCDnucleo - l4r5zi 开发板用 OpenOCD(测试版本 0.12)进行二进制文件闪存,可通过包管理器安装或 从源码编译
  3. Python3:基准测试脚本要求 Python 版本 >= 3.8。
  4. pyserial:多数平台的主机端 Python 代码需要该模块,可通过包管理器安装或使用 pip3 install -r requirements.txt 安装。
  5. ChipWhisperer:使用 cw308t - stm32f3 开发板需安装该模块,否则可跳过。
  6. 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 mdpython3 convert_benchmarks.py csv 将基准测试结果转换为 markdown 表格或 csv 文件。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】