littlebot
Published on 2025-04-10 / 2 Visits
0

【源码】基于C语言的Falcon确定性签名实现项目

项目简介

本项目实现了Falcon后量子签名算法,对官方Falcon代码进行扩展,支持完全确定性(或“去随机化”)的签名模式。Falcon算法基于NTRU格,采用哈希和签名结构以及基于傅里叶的采样方法,能高效生成和验证签名,同时签名和公钥相对紧凑。项目使用C语言编写,可在编译时通过宏进行配置。

项目的主要特性和功能

  1. 确定性签名模式:可实现完全确定性的签名生成,区别于原随机哈希模式。
  2. 可配置性:通过config.h中的宏进行编译时配置,可选择浮点运算方式、是否使用AVX2和FMA等优化。
  3. 多平台支持:支持x86(含AVX2)、ARM Cortex M3/M4等多种架构。
  4. 性能优化:可按需启用不同优化策略,提升签名生成和验证性能。
  5. 测试与基准测试:提供单元测试和性能基准测试工具,确保算法正确性并评估性能。

安装使用步骤

前提条件

确保开发环境支持C语言,且安装了必要的编译工具。

编译

  1. 已下载本项目的源码文件。
  2. 根据需求在config.h中配置宏选项,也可在编译时通过命令行参数指定。为保证确定性签名的鲁棒性,建议参考config.h中的设置启用浮点仿真(FALCON_FPEMU),禁用“融合乘加”(FALCON_FMA)和其他可能影响确定性的优化选项。
  3. 进入项目根目录,执行make命令进行编译,会生成test_falconspeed两个二进制文件。

测试与使用

  1. 运行test_falcon进行单元测试,验证计算结果是否符合预期。
  2. 运行speed进行性能基准测试,评估Falcon - 256、Falcon - 512和Falcon - 1024的性能。
  3. 若要在自己的应用中使用Falcon签名,使用“falcon.h”文件中记录的外部API。对于研究目的,可参考“inner.h”文件中的内部API,但需注意其对临时缓冲区对齐等方面的要求。

下载地址

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