项目简介
本项目实现了NIST后量子密码学标准化第三轮提交的Falcon后量子数字签名方案。Falcon已被NIST标准化,本项目包含Falcon的参考实现与优化实现,还针对Doge Protocol区块链进行功能扩展,新增生成WebAssembly的函数,可用于浏览器扩展。
项目的主要特性和功能
- 参考实现:提供Falcon - 512和Falcon - 1024的参考实现,采用NIST API,适配不同硬件平台。
- 优化实现:有基于AVX2指令集、浮点运算和ARM Cortex M4处理器的优化实现,适用于不同硬件架构。
- Doge Protocol扩展:新增
crypto_sign_signature_with_key
和crypto_sign_verify
函数,支持在Doge Protocol区块链中使用。 - 测试与验证:包含KAT(Known Answer Test)测试向量生成器,可验证实现的正确性。
- 跨平台支持:支持x86、ARM、Aarch64和POWER/PowerPC等多种硬件架构,提供跨编译支持。
安装使用步骤
前提条件
假设用户已下载本项目的源码文件,且已安装C编译器(c99
),并支持-W -Wall -O2
编译选项。
编译参考实现
- 进入
Reference_Implementation/falcon512/falcon512int/
目录。 - 运行
make
命令编译代码。 - 编译完成后,生成的二进制文件将位于
build
目录中。
编译优化实现
- 进入
Optimized_Implementation/falcon512/falcon512avx2/
目录(或其他优化实现目录)。 - 运行
make
命令编译代码。 - 编译完成后,生成的二进制文件将位于
build
目录中。
运行测试
- 进入
KAT/generator/
目录。 - 运行
make
命令编译测试向量生成器。 - 执行生成的二进制文件,生成
.req
和.rsp
文件,并与KAT/
目录中的文件进行对比,验证实现的正确性。
使用命令行工具
- 进入
Extra/c/
目录。 - 运行
make
命令编译命令行工具test_falcon
和speed
。 - 使用
test_falcon
运行自测试,使用speed
运行性能基准测试。
跨编译(适用于ARM Cortex M4)
- 确保已安装
arm-linux-gcc
交叉编译器,建议使用Buildroot项目获取合适的交叉编译工具链。 - 进入
Optimized_Implementation/falcon512/falcon512cxm4/
目录。 - 运行
make
命令进行跨编译。 - 使用QEMU模拟器运行生成的二进制文件。
许可证
本项目遵循MIT许可证,详细信息请参阅源码文件中的许可证文本。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】