SEAL全同态加密开源库(四) NTT源码解析
2021SC@SDUSC
2021-10-27
前言
这是SEAL开源库代码分析报告第四篇,本篇将首先照例补充一些理论知识,然后本篇将继续上一篇的介绍,重点分析SEAL对于NTT算法的实现代码。由于老师讲过,NTT是同态加密的核心基础算法,因此有仔细分析的必要。
ntt.h源码分析
首先是Arithmetic类,其包含两个参数two_times_modulus和two_times_modulus,二次系数。其中包含了一些构造函数,以及一些完成多项式算术操作的函数:
inline std::uint64_t add(const std::uint64_t &a, const std::uint64_t &b) const
{
return a + b;
}
inline std::uint64_t sub(const std::uint64_t &a, const std::uint64_t &b) const
{
return a + two_times_modulus_ - b;
}
inline std::uint64_t mul_root(const std::uint64_t &a, const MultiplyUIntModOperand &r) const
{
return multiply_uint_mod_lazy(a, r, modulus_);
}
inline std::uint64_t mul_scalar(const std::uint64_t &a, const MultiplyUIntModOperand &s) const
{
return multiply_uint_mod_lazy(a, s, modulus_);
}
inline MultiplyUIntModOperand mul_root_scalar(
const MultiplyUIntModOperand &r, const MultiplyUIntModOperand &s) const
{

本文深入解析了SEAL全同态加密库中NTT(数论变换)的源码,包括Arithmetic类的算术操作和NTTTables类的构建。NTT是同态加密的核心算法,用于加速多项式乘法。SEAL通过Evaluator类提供了对NTT的便捷操作,如transform_to_ntt和transform_from_ntt,以及multiply_plain_ntt进行快速的明文乘法。文章还介绍了如何使用NTT提高效率并避免不必要的重复变换。
最低0.47元/天 解锁文章
5640

被折叠的 条评论
为什么被折叠?



