项目简介
本项目实现了Falcon后量子签名算法,对官方Falcon代码进行扩展,支持完全确定性(或“去随机化”)的签名模式。Falcon算法基于NTRU格,采用哈希和签名结构以及基于傅里叶的采样方法,能高效生成和验证签名,同时签名和公钥相对紧凑。项目使用C语言编写,可在编译时通过宏进行配置。
项目的主要特性和功能
- 确定性签名模式:可实现完全确定性的签名生成,区别于原随机哈希模式。
- 可配置性:通过config.h中的宏进行编译时配置,可选择浮点运算方式、是否使用AVX2和FMA等优化。
- 多平台支持:支持x86(含AVX2)、ARM Cortex M3/M4等多种架构。
- 性能优化:可按需启用不同优化策略,提升签名生成和验证性能。
- 测试与基准测试:提供单元测试和性能基准测试工具,确保算法正确性并评估性能。
安装使用步骤
前提条件
确保开发环境支持C语言,且安装了必要的编译工具。
编译
- 已下载本项目的源码文件。
- 根据需求在config.h中配置宏选项,也可在编译时通过命令行参数指定。为保证确定性签名的鲁棒性,建议参考config.h中的设置启用浮点仿真(FALCON_FPEMU),禁用“融合乘加”(FALCON_FMA)和其他可能影响确定性的优化选项。
- 进入项目根目录,执行
make
命令进行编译,会生成test_falcon
和speed
两个二进制文件。
测试与使用
- 运行
test_falcon
进行单元测试,验证计算结果是否符合预期。 - 运行
speed
进行性能基准测试,评估Falcon - 256、Falcon - 512和Falcon - 1024的性能。 - 若要在自己的应用中使用Falcon签名,使用“falcon.h”文件中记录的外部API。对于研究目的,可参考“inner.h”文件中的内部API,但需注意其对临时缓冲区对齐等方面的要求。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】