2021SC@SDUSC
2021-10-31
前言
这是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
{
MultiplyUIntModOperand result;

本文详细解读了SEAL开源库中NTT算法的实现,包括Arithmetic类中的核心运算函数,NTTTables类及其属性,以及如何在Evaluator中利用NTT进行高效加密运算。着重介绍了NTT表的创建过程和SEAL中NTT的实际运用场景。
最低0.47元/天 解锁文章
2446

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



