Learning With Errors (LWE):格密码学的数学基石

密码学概念 · 2026-06-17

概述

在现代密码学中,一个核心目标是找到计算上困难的数学问题来支撑加密方案的安全性。RSA 依赖大整数分解,ECC 依赖椭圆曲线离散对数——但这两者都能被量子计算机在多项式时间内破解。

2005 年,Oded Regev 在他的开创性论文《On Lattices, Learning with Errors, Random Linear Codes, and Cryptography》中引入了 Learning With Errors (LWE) 问题,开创了一个全新的密码学范式。Regev 因此获得了 2018 年哥德尔奖(Gödel Prize)。

LWE 的核心魅力在于三个特性:

  • 安全性基于最坏情况(worst-case)格问题的困难性——如果能在平均情况下解决 LWE,就能解决所有实例上的格问题(如 SIVP、GapSVP)
  • 抗量子——目前没有已知的量子算法能比经典算法更好地解决 LWE
  • 极强的通用性——从公钥加密、身份基加密到全同态加密,几乎所有高级密码学原语都可以基于 LWE 构造
截至 2026 年,NIST 后量子密码标准化中的 ML-KEM(FIPS 203)和 ML-DSA(FIPS 204)都基于 LWE 问题的变体 Module-LWE,全同态加密的主流方案 BFV 和 CKKS 则基于 Ring-LWE。理解 LWE,就是理解当代密码学最前沿进展的共同数学基础。

LWE 问题的定义

从"带噪声的线性方程组"说起

想象你有一个秘密向量 $\mathbf{s} \in \mathbb{Z}_q^n$,有人给你提供了一系列"近似"的线性方程:

$$ \begin{aligned} 14s_1 + 15s_2 + 5s_3 + 2s_4 &\equiv 8 \pmod{17} \\ 13s_1 + 14s_2 + 14s_3 + 6s_4 &\equiv 16 \pmod{17} \\ 6s_1 + 10s_2 + 13s_3 + 1s_4 &\equiv 3 \pmod{17} \\ &\vdots \end{aligned} $$

如果没有误差,只需 $n$ 个方程就能通过高斯消元法轻松求解。但每个方程都混入了微小的误差(比如 $\pm 1$),这使得高斯消元法完全失效——误差在消元过程中被不断放大,最终得到的方程几乎不含任何信息。

这就是 LWE 问题的直觉:从带噪声的线性方程中恢复秘密,比从纯净的方程中恢复要困难得多。

形式化定义

定义(LWE 分布):设 $n \geq 1$ 为安全参数,$q \geq 2$ 为模数,$\chi$ 为 $\mathbb{Z}_q$ 上的误差分布(通常为离散高斯分布)。LWE 分布 $A_{\mathbf{s}, \chi}$ 按如下方式采样:

  • 均匀随机选择 $\mathbf{a} \in \mathbb{Z}_q^n$
  • 从 $\chi$ 中采样误差 $e \in \mathbb{Z}_q$
  • 输出 $(\mathbf{a}, b)$,其中 $b = \langle \mathbf{a}, \mathbf{s} \rangle + e \pmod{q}$
搜索版本 LWE(Search-LWE):给定多项式数量的 $A_{\mathbf{s}, \chi}$ 样本,恢复秘密向量 $\mathbf{s}$。

判定版本 LWE(Decision-LWE, DLWE):区分 $A_{\mathbf{s}, \chi}$ 的样本与 $\mathbb{Z}_q^n \times \mathbb{Z}_q$ 上的均匀分布。

参数选择

在实际密码系统中,LWE 的典型参数为:

参数典型选择说明
$n$512–1024安全维度,决定安全强度
$q$多项式级别(如 $n^2$ 到 $n^3$)模数,通常为素数
$\chi$离散高斯,标准差 $\alpha q$$\alpha = 1/\text{poly}(n)$
样本数 $m$$O(n \log q)$多项式数量级
例如,在 Regev 的原始公钥加密方案中,选择 $q$ 为 $n^2$ 到 $2n^2$ 之间的素数,$\alpha = 1/(\sqrt{n} \log^2 n)$,$m = 1.1n \log q$。

为什么 LWE 是困难的

最坏情况到平均情况的归约

LWE 最重要的理论贡献在于:解决"平均情况"下的 LWE 与解决"最坏情况"下的格问题一样困难

这个归约链条如下:

CODE
LWE (average-case) → BDD (Bounded Distance Decoding) → 格问题 (worst-case)

具体来说,Regev 的归约证明包含两个关键步骤:

步骤一:如果能解决 LWE,就能解决格上的有界距离解码(BDD)问题。给定一个格 $\Lambda$ 和一个距离 $\Lambda$ 不超过 $\alpha q / (n\sqrt{2r})$ 的目标点 $\mathbf{x}$,利用 LWE 预言机可以找到距离 $\mathbf{x}$ 最近的格点。

步骤二:如果能解决 BDD,就能解决标准格问题。对于指数级模数 $q = 2^{O(n)}$,Regev 构造了一个量子归约:从 BDD 到最短独立向量问题(SIVP)和最短向量问题(GapSVP)。Peikert 后来给出了经典归约,去除了量子依赖。

核心定理可以表述为:

定理(Regev, 2005;Peikert, 2009):设 $q \geq 2$,$\alpha \in (0,1)$ 满足 $\alpha q \geq 2\sqrt{n}$。如果存在多项式时间算法解决 LWE$_{n,q,\chi_\alpha}$,则存在多项式时间(量子)算法在任意 $n$ 维格上以 $\tilde{O}(n/\alpha)$ 的近似因子解决 GapSVP 和 SIVP。
这意味着:如果你能破解基于 LWE 的密码系统,你就能解决所有格上的困难问题——包括那些被认为量子计算机也无法高效解决的问题。

搜索版本与判定版本的等价性

在实际密码构造中,我们通常只需要判定版本的困难性(即区分 LWE 样本与均匀分布)。Regev 证明了这两个版本在多项式模数下是等价的:

定理:设 $q \leq \text{poly}(n)$ 为素数。如果存在算法以不可忽略的优势解决 DLWE$_{n,q,\chi}$,则存在多项式时间算法以极高的概率解决 Search-LWE$_{n,q,\chi}$。
证明思路是逐坐标恢复:对第一个坐标 $s_1$,猜测其值 $k \in \mathbb{Z}_q$,然后对样本进行变换 $(\mathbf{a}, b) \to (\mathbf{a} + (r,0,\ldots,0), b + rk)$。若 $k = s_1$,变换后的分布仍是 LWE 分布;若 $k \neq s_1$,则变为均匀分布。通过逐一尝试所有 $q$ 个可能值,即可恢复 $s_1$。对其他坐标重复此过程。

Peikert 后来将这一结果推广到 $q$ 为不同小素数乘积的情形。

格的基本背景

要深入理解 LWE,需要了解一些格(Lattice)的基本概念。

格的定义

$\mathbb{R}^n$ 中的 $\Lambda$ 是一组向量的所有整数线性组合:

$$\Lambda = \left\{ \sum_{i=1}^{n} z_i \mathbf{b}_i : z_i \in \mathbb{Z} \right\}$$

其中 $\mathbf{b}_1, \ldots, \mathbf{b}_n$ 是格的(basis),它们线性无关。同一个格可以有无数不同的基。

两个核心困难问题

问题定义参数
GapSVP$_\gamma$给定格 $\Lambda$,判断 $\lambda_1(\Lambda) \leq 1$ 还是 $\lambda_1(\Lambda) > \gamma$$\gamma \geq 1$ 为近似因子
SIVP$_\gamma$给定格 $\Lambda$,找到 $n$ 个线性无关的格向量,每个长度不超过 $\gamma \cdot \lambda_n(\Lambda)$$\gamma \geq 1$ 为近似因子
其中 $\lambda_1(\Lambda)$ 是格中最短非零向量的长度,$\lambda_n(\Lambda)$ 是第 $n$ 个 successive minimum。

对于多项式近似因子 $\gamma = n^c$($c$ 为常数),这两个问题被认为在经典和量子计算机上都是困难的。目前最好的算法(包括量子算法)都需要 $2^{O(n)}$ 时间。

离散高斯分布

格密码学中频繁使用离散高斯分布。对于格 $\Lambda$ 和参数 $r > 0$,离散高斯分布 $D_{\Lambda,r}$ 对每个 $\mathbf{x} \in \Lambda$ 赋予概率质量:

$$\Pr[X = \mathbf{x}] \propto \exp\left(-\pi \|\mathbf{x}\|^2 / r^2\right)$$

当 $r$ 足够大时(超过格的"平滑参数" $\eta_\varepsilon(\Lambda)$),离散高斯分布在格上近似于连续高斯分布。

平滑参数 $\eta_\varepsilon(\Lambda)$ 是满足 $\rho_{1/r}(\Lambda^* \setminus \{0\}) \leq \varepsilon$ 的最小 $r$,其中 $\Lambda^*$ 是 $\Lambda$ 的对偶格,$\rho$ 是高斯函数。

Regev 的公钥加密方案

LWE 的第一个直接密码学应用是 Regev 提出的公钥加密方案,它优雅地展示了如何将困难问题转化为可证明安全的密码系统。

方案构造

  • 私钥:$\mathbf{s} \xleftarrow{\$} \mathbb{Z}_q^n$(均匀随机)
  • 公钥:$m$ 个 LWE 样本 $(\mathbf{a}_i, b_i)_{i=1}^m$,其中 $b_i = \langle \mathbf{a}_i, \mathbf{s} \rangle + e_i$,$e_i \leftarrow \chi$
  • 加密 0:选择 $[m]$ 的随机子集 $S$,输出 $\left(\sum_{i \in S} \mathbf{a}_i,\ \sum_{i \in S} b_i\right)$
  • 加密 1:选择 $[m]$ 的随机子集 $S$,输出 $\left(\sum_{i \in S} \mathbf{a}_i,\ \lfloor q/2 \rfloor + \sum_{i \in S} b_i\right)$
  • 解密:计算 $b - \langle \mathbf{a}, \mathbf{s} \rangle$。若结果更接近 0 则输出 0,更接近 $\lfloor q/2 \rfloor$ 则输出 1
正确性依赖于误差之和不会超过 $q/4$。安全性证明基于 LWE 假设:如果公钥中的样本与均匀分布不可区分,则加密的 0 和 1 也不可区分。

效率瓶颈

原始 LWE 方案的主要问题是密钥尺寸大:公钥包含 $m$ 个 $\mathbb{Z}_q^n$ 中的向量,总大小为 $O(n^2 \log q)$ 比特。这促使了对结构化变体(如 Ring-LWE)的研究。

Ring-LWE:从向量到多项式

动机

标准 LWE 的公钥大小为 $O(n^2)$。2010 年,Lyubashevsky、Peikert 和 Regev 提出了 Ring-LWE (RLWE),将密钥大小降至 $O(n)$,同时将计算复杂度从 $O(n^2)$ 降至 $O(n \log n)$(利用快速傅里叶变换)。

代数结构

设 $n$ 为 2 的幂,$q$ 为满足 $q \equiv 1 \pmod{2n}$ 的素数。定义多项式环:

$$R_q = \mathbb{Z}_q[x] / \langle x^n + 1 \rangle$$

环中的元素是次数小于 $n$、系数在 $\mathbb{Z}_q$ 中的多项式。乘法在模 $x^n + 1$ 下进行(即 $x^n$ 被替换为 $-1$)。

RLWE 分布:从 $R_q$ 中均匀采样 $a$,从误差分布中采样 $e$,输出 $(a, b = a \cdot s + e) \in R_q \times R_q$,其中 $s \in R_q$ 是秘密。

搜索版本 RLWE:给定多个 RLWE 样本,恢复 $s$。

为什么环结构有效

环 $R_q$ 的结构来源于分圆域(cyclotomic field)$\mathbb{Q}(\zeta_{2n})$。多项式 $x^n + 1$ 是 $2n$ 次本原单位根 $\zeta_{2n}$ 在有理数域上的极小多项式。

关键性质:当 $q \equiv 1 \pmod{2n}$ 时,$x^n + 1$ 在 $\mathbb{Z}_q$ 中完全分裂为一次因子:

$$x^n + 1 = \prod_{j=1}^{n} (x - t_j) \pmod{q}$$

其中 $t_j = g^{(2j-1)(q-1)/(2n)}$,$g$ 是 $\mathbb{Z}_q^*$ 的生成元。

利用中国剩余定理,环 $R_q$ 同构于 $n$ 个 $\mathbb{Z}_q$ 的直积:

$$R_q \cong \mathbb{Z}_q^n$$

在这个表示下,环乘法变为逐坐标乘法

RLWE 的困难性

Lyubashevsky、Peikert 和 Regev 证明了:

定理(LPR10):如果存在多项式时间算法解决 RLWE,则存在多项式时间(量子)算法解决理想格(ideal lattice)上的 SIVP 问题。
理想格是满足特殊对称性(对坐标循环移位封闭)的格。虽然理想格是格的一个子类,但目前没有已知的量子算法能利用这种结构来更高效地解决格问题。

RLWE 困难性证明的技术难点在于处理非球形误差分布。在标准 LWE 中,误差是一维高斯变量,可以通过添加额外噪声来精确调节。但在 RLWE 中,环乘法使得误差分布变为 $n$ 维高斯,有 $n$ 个自由度,无法通过简单添加噪声来匹配。这导致最初的归约要求误差分布来自某个特定的非球形高斯分布族。后来的工作(Stehlé 等人)给出了球形误差下的归约,但困难度依赖于样本数量。

RLWE 与 NTRU 的关系

RLWE 与 1998 年提出的 NTRU 格密码系统有深刻联系。NTRU 同样在多项式环上操作,但安全性基于短向量问题(SVP)而非 LWE。RLWE 可以被视为 NTRU 的"带误差"版本,其安全性的理论证明更严格。

SIS:LWE 的对偶问题

LWE 有一个重要的对偶问题——Short Integer Solution (SIS)

定义

SIS 问题:给定 $m$ 个均匀随机的向量 $\mathbf{a}_1, \ldots, \mathbf{a}_m \in \mathbb{Z}_q^n$,找到非零整数向量 $\mathbf{z} \in \mathbb{Z}^m$,满足:

$$\sum_{i=1}^{m} z_i \mathbf{a}_i \equiv \mathbf{0} \pmod{q}, \quad \|\mathbf{z}\| \leq \beta$$

即:在随机格中找到短向量。

LWE 与 SIS 的对偶性

LWE 和 SIS 的关系如同编码理论中的解码译码

LWESIS
类比有噪解码寻找短码字
输入近似线性方程组齐次线性方程组
目标恢复秘密向量找到短非零解
困难性最坏情况格问题最坏情况格问题
应用加密、IBE、FHE哈希函数、签名
两者都是格问题的平均情况版本,且困难性都归约到最坏情况格问题。它们构成了格密码学中"Minicrypt"(SIS 支撑的原语,如哈希和签名)和"Cryptomania"(LWE 支撑的原语,如加密和 FHE)的分界线。

基于 SIS 的典型构造包括:

  • 碰撞抵抗哈希函数(SWIFFT 等)
  • 数字签名方案(基于 Fiat-Shamir 转换)
  • 零知识证明

从理论到实践:NIST PQC 标准化

Module-LWE

NIST 后量子密码标准中没有直接使用标准 LWE 或 RLWE,而是选择了 Module-LWE——两者的自然推广。

设 $R_q = \mathbb{Z}_q[x]/(x^n+1)$,Module-LWE 的样本形如 $(\mathbf{a}, b) \in R_q^k \times R_q$,其中:

$$b = \sum_{i=1}^{k} a_i \cdot s_i + e$$

这里秘密 $\mathbf{s} = (s_1, \ldots, s_k) \in R_q^k$ 是一个长度为 $k$ 的多项式向量。

  • 当 $k = 1$ 时,退化为 RLWE
  • 当 $n = 1$ 时,退化为标准 LWE
  • 当 $k > 1, n > 1$ 时,在安全性和效率之间取得平衡

NIST 标准中的 LWE 变体

标准基础问题用途参数特征
ML-KEM (FIPS 203)Module-LWE密钥封装$k=2,3,4$,$n=256$
ML-DSA (FIPS 204)Module-LWE数字签名$k=4,5,6$,$n=256$
ML-KEM(原 Kyber)的公钥约 800-1500 字节,密文约 700-1000 字节,与 RSA-2048(256 字节公钥)相比更大,但远小于原始 LWE 方案的数十万字节。

全同态加密中的 RLWE

全同态加密(FHE)允许在密文上直接进行任意计算。主流 FHE 方案的安全性基于 RLWE:

  • BFV (Brakerski/Fan-Vercauteren):基于 RLWE 的整数运算 FHE
  • CKKS (Cheon-Kim-Kim-Song):基于 RLWE 的近似算术 FHE(适合机器学习)
  • BGV (Brakerski-Gentry-Vaikuntanathan):基于 RLWE/BGV 的 leveled FHE
在 CKKS 方案中,明文被编码为多项式环 $R$ 中的元素,加密过程本质上是 RLWE 采样:密文 $(c_0, c_1)$ 满足 $c_0 + c_1 \cdot s \approx \Delta \cdot m + e$,其中 $\Delta$ 是缩放因子,$m$ 是明文,$e$ 是噪声。

已知攻击与参数选择

格归约算法

LWE 安全性的主要威胁来自格归约算法

算法类型效果
LLL (1982)多项式时间近似因子 $2^{O(n)}$,对大参数无效
BKZ (1987)启发式分块 Korkine-Zolotarev,实际中最有效
BKZ 2.0改进启发式使用 pruned enumeration
sieving亚指数$2^{0.292n + o(n)}$(经典),$2^{0.265n + o(n)}$(量子)
BKZ 及其变体是目前对 LWE 的最强实际攻击。攻击的"块大小" $\beta$ 直接决定安全强度:$\beta$ 越大,攻击越强,但计算成本指数增长。

安全强度估计

对于 ML-KEM-768($k=3$),核心安全操作是 Module-LWE 在维度 $3 \times 256 = 768$ 上的困难性。使用 Core-SVP 方法(来源:NIST FIPS 203 附录 B 及 Alagic 等人 2022 年安全分析)估算:

  • 经典安全强度:约 193 bit(Core-SVP 经典)
  • 量子安全强度:约 177 bit(Core-SVP 量子)
这远超 NIST 要求的 128 位(Category 1)。值得注意的是,Core-SVP 是一种保守的安全估算方法,实际安全强度可能更高。

侧信道防护

LWE 方案的实现还需防范侧信道攻击:

  • 时序攻击:多项式乘法的非恒定时间实现可能泄露秘密系数的汉明重量
  • 功耗分析:NTT(数论变换)操作中的条件分支可能产生可检测的功耗差异
  • 故障注入:跳过特定计算步骤可能直接泄露密钥
NIST 在标准化过程中特别强调了恒定时间实现的要求。

动手实验:用 SageMath 验证 LWE

以下 SageMath 代码演示了 LWE 的采样、加密和解密过程(使用小参数以便快速验证):

注意:以上代码使用极小参数(n=8, q=97)以便在浏览器中快速运行。实际 ML-KEM 使用 n=256, q=3329, 模块维度 k=2/3/4。完整实现请参考 NIST FIPS 203 的参考代码。

开放问题

尽管 LWE 密码学已取得巨大进展,仍有若干重要问题尚未解决:

  • 经典困难性证明:对于多项式模数 $q$,LWE 的经典(非量子)困难性证明依赖于比标准 GapSVP 更弱的假设。能否基于标准 GapSVP 给出经典归约?
  • 理想格上的困难性:RLWE 的困难性归约到理想格上的格问题。理想格上的格问题是否比一般格上更容易?目前没有证据表明理想结构能降低格问题的难度,但也没有证明。
  • 最优参数缩放:LWE 方案中 $n$、$q$、$\alpha$ 之间的最优权衡仍是一个活跃的研究方向。
  • 直接构造 PRF:能否直接从 LWE 构造高效的伪随机函数(PRF),而不经过格上的陷门函数?

国密体系与 LWE 的关系

国密算法(SM2/SM3/SM4/SM9)与 LWE 分别代表了经典密码学和后量子密码学两个不同的技术路线,理解它们的关系对企业的密码迁移策略至关重要。

量子安全性对比

算法基础问题量子安全状态与 LWE 的关系
SM2椭圆曲线离散对数 (ECDLP)❌ Shor 算法可破SM2 的密钥交换和签名功能需要迁移到 PQC
SM3哈希函数 (Merkle-Damgård)⚠️ Grover 算法将安全强度减半256-bit SM3 量子下等效 128-bit,尚可接受
SM4对称分组密码 (Feistel)⚠️ Grover 算法将安全强度减半128-bit SM4 量子下等效 64-bit,建议升级到 256-bit
SM9基于配对的身份基加密❌ Shor 算法可破与 LWE 不同路线,但同样需要量子安全替代

国密 PQC 迁移路径

目前国密体系向后量子密码迁移的主要方向:

1. SM2 → ML-KEM (FIPS 203) 替换方案

SM2 密钥交换功能可以被 ML-KEM 替代。在 TLS 场景中,混合密钥交换模式(ECDHE + ML-KEM)是当前过渡期的推荐方案。GM/T 0024-2014(SSL VPN 技术规范)的后续修订版本预计将纳入混合密钥交换的支持。

2. SM2 签名 → ML-DSA (FIPS 204) 替换方案

SM2 签名迁移到 ML-DSA 需要处理签名长度差异(SM2 签名 64 字节 vs ML-DSA 签名约 2-4 KB)。在证书链中替换时需要评估对证书大小和 TLS 握手性能的影响。

3. SM9 → 基于格的 IBE 方案

SM9 是基于配对的身份基加密,其量子安全替代方案目前仍在研究中。基于格的身份基加密(Lattice-based IBE)已经有学术研究方案(如 Ducas 等人的工作),但尚未标准化。

4. 混合过渡方案

在 GM/T 标准尚未正式发布 PQC 迁移指南之前,企业的务实做法是:

  • 采用"国密 + PQC"双证书方案:SM2 证书用于国内合规,ML-KEM/ML-DSA 证书用于国际互通
  • 在 TLS 层使用混合密钥交换:ECDHE_SM2 + Kyber768
  • 关注 GM/T 0024 和 GM/T 0044 系列标准的后续修订
注意:以上分析基于公开学术研究和 NIST 标准化进展,国密 PQC 迁移的具体标准化路径以国家密码管理局发布的正式标准为准。

总结

LWE 问题从 2005 年被提出至今,已从理论密码学的优美概念成长为新一代密码标准的数学基石。它的核心优势——最坏情况困难性保证、抗量子性、以及惊人的通用性——使其成为后量子时代密码学的基础设施。

从 Regev 的原始论文到 NIST FIPS 203/204 标准,从 Gentry 的全同态加密到隐私计算的实际部署,LWE 及其变体 RLWE 和 Module-LWE 贯穿了当代密码学最重要的发展脉络。理解 LWE,不仅是理解一套数学工具,更是理解密码学如何从"依赖特定问题的困难性"走向"依赖通用数学结构的困难性"这一范式转变。

参考来源

  • Regev, O. (2005). "On lattices, learning with errors, random linear codes, and cryptography." *Proceedings of the 37th Annual ACM Symposium on Theory of Computing (STOC)*, 84–93.
  • Regev, O. (2009). "On lattices, learning with errors, random linear codes, and cryptography." *Journal of the ACM*, 56(6), 1–40.
  • Peikert, C. (2009). "Public-key cryptosystems from the worst-case shortest vector problem." *Proceedings of the 41st Annual ACM Symposium on Theory of Computing (STOC)*, 333–342.
  • Lyubashevsky, V., Peikert, C., & Regev, O. (2010). "On ideal lattices and learning with errors over rings." *Proceedings of EUROCRYPT 2010*, 1–23. (Journal version: *JACM*, 60(6), 1–35, 2013)
  • Regev, O. (2010). "The Learning with Errors Problem." *Survey in Computer Science*.
  • NIST. (2024). "FIPS 203: Module-Lattice-Based Key-Encapsulation Mechanism Standard."
  • NIST. (2024). "FIPS 204: Module-Lattice-Based Digital Signature Standard."
  • Lattice-based cryptography — Wikipedia. https://en.wikipedia.org/wiki/Learning_with_errors
  • Peikert, C. (2016). "A decade of lattice cryptography." *Foundations and Trends in Theoretical Computer Science*, 10(4), 283–424.
  • Alkim, E., Ducas, L., Pöppelmann, T., & Schwabe, P. (2015). "Post-quantum key exchange — a new hope." *Cryptology ePrint Archive*.

相关实践

  • Open Quantum Safe (liboqs):开源 PQC 库,包含 ML-KEM/ML-DSA 的参考实现和性能基准测试 — https://openquantumsafe.org/
  • NIST PQC 项目:ML-KEM (FIPS 203) 和 ML-DSA (FIPS 204) 的官方文档、参考实现和已知答案测试 (KAT) 向量 — https://csrc.nist.gov/projects/post-quantum-cryptography
  • Microsoft PQC SDK:微软的 PQC 开发工具包,支持 ML-KEM 和 ML-DSA 的集成和测试 — https://github.com/microsoft/PQCrypto-LWE
  • liboqs-python:liboqs 的 Python 封装,可直接在 Python 中调用 ML-KEM/ML-DSA — https://github.com/open-quantum-safe/liboqs-python
  • SageMath 格密码学教程:交互式格密码学学习环境,包含 LWE/RLWE 的示例代码 — https://doc.sagemath.org/html/en/thematic_tutorials/lattice_based_cryptography.html