Updated 实现Kyber所需的多项式和线性代数知识 (markdown)

Sun Yimin 2025-04-18 02:13:56 +00:00
parent a25c78d714
commit 01d745d068

@ -59,11 +59,11 @@ $$ \downarrow $$
如果你之前使用过蒙哥马利约简Montgomery reduction和蒙哥马利域Montgomery domain那么你应该已经熟悉将值映射到不同的域在这里也是乘法运算更快的概念。与蒙哥马利域类似你用来表示元素的数据结构在域内和域外是相同的但它们在语义上有不同的类型。
你可以在不理解 NTT数论变换和 NTT⁻¹数论变换的逆背后的数学原理的情况下实现它们。需要注意的是在 NTT 和 NTT⁻¹ 中有一个复杂的术语叫做 zeta。你需要预先计算它的128个可能的值。
你可以在不理解 NTT数论变换和 NTT⁻¹数论变换的逆背后的数学原理的情况下实现它们。需要注意的是在 NTT 和 NTT⁻¹ 中有一个复杂的术语叫做 $\zeta$ 。你需要预先计算它的128个可能的值。
NTT数论变换代表的加法和减法操作与多项式的加法和减法相同。只是不能混合匹配它们。如果你有一个弱的类型系统或泛型你甚至可以使用相同的函数。
使用 NTT数论变换的整个原因是因为在 NTT 域中乘法运算更快。实际上,有一个叫做 `MultiplyNTTs` 的算法,你可以直接实现它。这个算法中有一个叫做 γ 的项,你需要像 NTT 中的 zeta 一样预先计算它。
使用 NTT数论变换的整个原因是因为在 NTT 域中乘法运算更快。实际上,有一个叫做 `MultiplyNTTs` 的算法,你可以直接实现它。这个算法中有一个叫做 γ 的项,你需要像 NTT 中的 $\zeta$ 一样预先计算它。
ML-KEM基于模块化学习误差问题的密钥封装机制的特殊之处在于NTT数论变换是网络传输格式的一部分而不仅仅是一个幕后优化。因为加密和解密密钥是直接以它们的 NTT 表示形式进行序列化和反序列化的。[[5](#user-content-anchor-ref5)]