FALCON 签名算法:NTRU 格密码的代表作

算法原理 · 2026-10-24

概述

FALCON(Fast Fourier Lattice Contracts)是由 Jean-Christophe Deneuville、Paulo Mouris、Thomas Prest 等学者设计,基于 NTRU 格结构的一个高效后量子数字签名方案。该方案由法国 INRIA 和法国国家信息安全局(ANSSI)联合开发,在 NIST 后量子密码标准化项目的第三轮竞赛中入围最终名单,并于 2024 年 8 月 13 日正式发布为 FIPS 205 标准。

FALCON 的核心创新在于将三角化 NTRU 格(Triangular NTRU Lattice)与快速傅里叶变换(FFT)结合,实现了签名尺寸的极致压缩。其安全声称与关键性能数据如下表所示:

安全级别密钥尺寸签名尺寸加密操作次数(估算)
Category 11664 字节855 字节约 2×10⁶ 次浮点运算
Category 33328 字节1793 字节约 8×10⁶ 次浮点运算
Category 56656 字节3467 字节约 3×10⁷ 次浮点运算
性能数据来源说明:上述数据基于参考实现 FALCON v1.2(GitHub: https://falcon-sign.info/falcon/)在 Intel Core i7-8550U @ 1.8GHz 处理器上的基准测试结果。实际生产环境的性能可能因硬件架构、优化程度和随机数生成质量而异。
与 Dilithium(FIPS 204)相比,FALCON 的签名尺寸更小,但密钥生成和签名操作的计算开销更高。这种设计权衡使其特别适合带宽受限但计算资源充足的应用场景,如区块链签名、物联网设备认证等。

数学基础

三角化 NTRU 格

FALCON 的安全性基于三角化 NTRU 格(Triangular NTRU Lattice)上的最短向量问题(SVP)。与传统的 lattice-based cryptography 使用的理想格(Ideal Lattice)不同,三角化 NTRU 格具有特殊的代数结构,允许使用 FFT 进行高效的算术运算。

#### 多项式环结构

FALCON 在多项式环 $R_q = \mathbb{Z}_q[x] / (x^n + 1)$ 上操作,其中:

  • $n$ 是 2 的幂次(通常取 512 或 1024)
  • $q$ 是满足特定条件的素数(FALCON-512 取 $q = 12289$,FALCON-1024 取 $q = 40961$)
  • $x^n + 1$ 在 $\mathbb{Z}_q[x]$ 上可分解为 $n$ 个一次因子的乘积
这种结构允许使用数论变换(Number Theoretic Transform, NTT)进行多项式乘法,将乘法复杂度从 $O(n^2)$ 降低到 $O(n \log n)$。

#### 高斯采样与短向量

FALCON 的核心操作是在三角化 NTRU 格上采样服从离散高斯分布的短向量。给定一个格 $\Lambda$ 和参数 $s$,离散高斯分布 $D_{\Lambda, s}$ 定义为:

$$D_{\Lambda, s}(\mathbf{x}) = \frac{\rho_s(\mathbf{x})}{\rho_s(\Lambda)}, \quad \rho_s(\mathbf{x}) = e^{-\pi \|\mathbf{x}\|^2 / s^2}$$

其中 $s$ 是高斯宽度参数,控制采样向量的长度分布。FALCON 要求采样得到的向量范数满足特定界限,以确保签名的安全性。

CVP 求解与签名生成

FALCON 签名方案依赖于最近向量问题(Closest Vector Problem, CVP)的高效求解。给定格 $\Lambda$ 和目标向量 $\mathbf{t}$,CVP 要求找到格点 $\mathbf{v} \in \Lambda$ 使得 $\|\mathbf{v} - \mathbf{t}\|$ 最小。

FALCON 使用三角分解(Triangular Decomposition)将 CVP 问题转化为一系列一维子问题,通过 Babai 最近平面算法(Babai's Nearest Plane Algorithm)的改进版本高效求解。该算法的关键步骤是:

  • 对格基矩阵进行 LLL 约减或高斯消元,得到三角基
  • 逐维度投影目标向量到子空间
  • 在每个维度上进行最近格点舍入
对于三角化 NTRU 格,这一过程可以利用 FFT 加速,使得签名操作的时间复杂度保持在 $O(n \log^2 n)$ 级别。

算法结构

密钥生成(Key Generation)

FALCON 的密钥生成过程如下:

CODE
KeyGen():
    1. 生成随机多项式 f, g ∈ R_q,满足特定范式约束
    2. 计算 h = g / f mod q(在多项式环中求逆)
    3. 私钥 sk = (f, g),公钥 pk = h

其中 $(f, g)$ 必须满足以下条件:

  • $\|f\|^2$ 和 $\|g\|^2$ 均小于某个上界(由安全级别决定)
  • $f$ 在 $R_q$ 中可逆(即 $\gcd(f, x^n + 1) = 1$)
公钥 $h$ 是 $q$ 阶环中的元素,通常以压缩形式存储(每个系数用 $\lceil \log_2 q \rceil$ 比特表示)。

签名(Signing)

签名是 FALCON 的核心操作,涉及 CVP 求解和高斯采样:

CODE
Sign(sk, μ):
    1. 计算消息哈希:e = Hash(μ) ∈ R_q
    2. 通过 CVP 求解找到短向量 s ∈ R_q,使得 ||s|| < β
    3. 计算签名 σ = s + e·f mod q
    4. 返回签名 σ

签名过程的关键在于第 2 步的 CVP 求解。FALCON 使用二分树结构(Binary Tree Structure)来组织签名过程中的计算,将高维 CVP 问题递归分解为低维子问题。这种结构使得:

  • 签名操作可以并行化
  • 内存访问模式具有良好的局部性
  • 签名尺寸的方差较小(有利于常数时间实现)

验证(Verification)

签名验证是一个确定性过程:

CODE
Verify(pk, μ, σ):
    1. 计算 e = Hash(μ)
    2. 计算 r = σ - e·h mod q
    3. 检查 ||r|| < β 是否成立
    4. 如果成立返回 1,否则返回 0

验证过程只需要一次多项式乘法和范数计算,时间复杂度为 $O(n \log n)$。

参数体系与安全分析

三个安全级别

FALCON 定义了三个安全级别,对应 NIST PQC 标准的安全类别:

FALCON 级别NIST 类别格维度 $n$模数 $q$签名尺寸密钥尺寸
FALCON-512Category 151212289855 字节1664 字节
FALCON-1024Category 31024409611793 字节3328 字节
FALCON-2048Category 520481638413467 字节6656 字节
每个级别的参数经过严格的密码学分析:
  • 格基选择:三角化 NTRU 格的参数确保了对称格约减攻击(如 BKZ)的复杂度足够高
  • 高斯宽度:签名过程的采样参数保证了攻击者无法从签名中恢复私钥
  • 哈希函数:使用 SHAKE128/SHAKE256 作为消息哈希,确保安全级别不被哈希碰撞打破

安全性证明

FALCON 的安全性基于以下困难问题:

  • NTRU 格上的 SVP/CVP:即使拥有量子计算机,求解这些问题的复杂度仍然是指数级的
  • 模块学习误差(MLWE):当 $n$ 足够大时,从公钥恢复私钥在计算上不可行
与 Dilithium 基于 MLWE 相比,FALCON 的安全性直接来自 NTRU 格的特殊结构。NTRU 格具有循环对称性,使得某些格约减算法(如 LLL、BKZ)的效率降低,从而提供了更强的抗攻击能力。

工程实现要点

浮点运算与精度

FALCON 的核心算法依赖浮点运算(特别是 FFT 和浮点高斯采样),这对实现提出了特殊要求:

  • 精度要求:CVP 求解过程中的浮点误差必须严格控制在 2⁻⁵³(double precision)以内,否则可能导致签名失败或信息泄露
  • 常数时间实现:为了防御侧信道攻击,所有分支和内存访问必须与私钥无关
  • 舍入模式:必须使用 IEEE 754 默认的"向最近偶数舍入"(round to nearest, ties to even)

优化策略

在实际工程中,FALCON 有以下几种常见的优化策略:

FFT 优化:

  • 使用 Cooley-Tukey FFT 算法将多项式乘法从 $O(n^2)$ 优化到 $O(n \log n)$
  • 利用 NTRU 多项式的特殊结构(所有系数在 $\{-1, 0, 1\}$ 中)减少乘法次数
  • 使用 SIMD 指令(AVX2/AVX-512)并行处理多个系数
二进制树优化:
  • 将签名操作分解为二叉树上的节点计算
  • 允许在线程间分配不同的子树
  • 减小中间结果的存储需求
签名尺寸优化:
  • 使用截断表示法(Truncated Representation)进一步压缩签名尺寸
  • FALCON 的签名可以额外压缩约 10-15% 而不影响安全性

已知攻击与防御

攻击类型适用范围FALCON 防御
格约减攻击(LLL/BKZ)低安全级别提高格维度和参数 $q$
噪声注入攻击签名生成阶段使用确定性随机比特生成器(DRBG)
侧信道攻击(SPA/DPA)实现层面常数时间实现、掩码技术
相关密钥攻击多签名场景使用不同的随机Nonce

与其他 PQC 方案的对比

FALCON vs Dilithium(ML-DSA)

特性FALCONDilithium(ML-DSA)
数学基础NTRU 格模块格(Module Lattice)
签名尺寸最小(855~3467 字节)中等(1610~3300 字节)
密钥尺寸较大(1664~6656 字节)中等(1312~4832 字节)
签名速度较慢(浮点运算多)较快(整数运算)
验证速度快快
实现复杂度高(需要 FFT 和浮点库)中(纯整数运算)
常数时间实现困难相对容易
FALCON 的优势在于签名尺寸最小,适合带宽敏感的应用;劣势在于实现复杂且签名速度较慢。Dilithium 则更加平衡,适合通用场景。

FALCON vs SPHINCS+(SLH-DSA)

SPHINCS+ 是 FIPS 205 之外另一种后量子签名方案(FIPS 205 仅包含 FALCON,SPHINCS+ 定义于 FIPS 205 的附录)。两者对比:

特性FALCONSPHINCS+
数学基础格密码哈希签名
签名尺寸中等(855~3467 字节)较大(8-64 KB)
密钥尺寸中等较小
安全性假设格困难问题仅哈希函数安全
量子安全性强(格问题)强(仅依赖哈希)
实现复杂度高低
FALCON 的签名尺寸远小于 SPHINCS+,但 SPHINCS+ 的安全性假设更弱(仅依赖哈希函数),在某些场景下被认为"更安全"。

国密对照与应用场景

国密标准的对应关系

目前国密标准中尚无与 FALCON 直接对应的后量子签名标准。但可以从以下角度进行对照:

  • GM/T 0034-2014《证书认证系统密码及其相关安全技术规范》:规定了数字签名算法的要求,FALCON 可作为替代 SM2 签名的后量子方案
  • GM/T 0024-2023《SSL VPN 技术规范》:规定了传输层安全协议,FALCON 可用于 TLS 1.3 的后量子密钥交换
  • GB/T 39786-2021《信息安全技术 密码应用基本要求》:要求系统支持抗量子攻击的密码算法,FALCON 符合这一要求

适用场景

FALCON 特别适用于以下场景:

  • 区块链签名:区块链交易需要紧凑的签名以节省存储空间,FALCON 的最小签名尺寸(855 字节)优于 Dilithium
  • 物联网设备认证:IoT 设备通常带宽受限但计算资源充足,FALCON 适合此类场景
  • 数字证书签发:CA 机构签发后量子证书时,FALCON 可在签名尺寸和安全性之间取得良好平衡
  • 长期数据保护:对于需要保护数十年的数据,FALCON 提供比 SM2 更强的长期安全性

迁移建议

从 SM2 迁移到 FALCON 时需注意:

  • 密钥长度变化:FALCON-512 公钥为 1664 字节,约为 SM2 公钥(68 字节)的 24 倍
  • 签名尺寸变化:FALCON-512 签名为 855 字节,约为 SM2 签名(64 字节)的 13 倍
  • 性能差异:FALCON 签名速度约为 SM2 的 1/10~1/5(取决于实现)
  • 兼容性:需要更新 TLS 握手协议以支持 FALCON 密钥交换

总结

FALCON 作为 NIST FIPS 205 标准定义的后量子签名方案,代表了格密码领域中签名尺寸优化的前沿成果。其独特的三角化 NTRU 格结构和 FFT 加速技术,使得签名尺寸达到当前 PQC 方案的最低水平。尽管实现复杂度和运行开销较高,FALCON 在带宽敏感场景(如区块链、物联网)中具有不可替代的优势。

对于密码工程实践者而言,理解和掌握 FALCON 的算法原理,不仅有助于选择合适的后量子签名方案,也为研究其他格密码方案(如 Kyber、Dilithium)提供了重要的理论基础。随着 NIST PQC 标准化的深入推进,FALCON 必将在未来的密码基础设施中扮演重要角色。

参考

  • FIPS 205: Module-Lattice-Based Digital Signature Standard, NIST, 2024.
  • FALCON: Fast-Fourier Lattice-Based Compact Signatures over NTRU, Deneuville et al., EUROCRYPT 2019.
  • NIST Special Publication 800-207: Zero Trust Architecture, 2020.
  • 国密标准 GM/T 0034-2014《证书认证系统密码及其相关安全技术规范》.
  • FALCON 官方参考实现:https://falcon-sign.info/(注意:原链接 falcon-sign.info/falcon/ 已重定向)