【问题标题】:How do you choose an optimal PlainModulus in SEAL?如何在 SEAL 中选择最优的 PlainModulus?
【发布时间】:2019-09-03 12:54:04
【问题描述】:

我目前正在学习如何使用 SEAL,并且在 BFV 方案的参数中,有一个帮助函数用于选择 PolyModulus 和 CoeffModulus,但是这不是用于选择 PlainModulus 的,它应该是素数或幂2 有没有办法知道使用哪个最佳值?

在给定的示例中,PlainModulus 设置为 parms.PlainModulus = new SmallModulus(256);选择值 256 有什么特殊原因吗?

【问题讨论】:

    标签: seal


    【解决方案1】:

    在 BFV 中,plain_modulus 基本上决定了数据类型的大小,就像在正常编程中使用 32 位或 64 位整数时一样。当使用BatchEncoder 时,数据类型适用于明文向量中的每个槽。

    如何选择plain_modulus 很重要:乘法中的噪声预算消耗与log(plain_modulus) 成正比,因此有充分的理由将其保持在尽可能小。另一方面,你需要确保在计算过程中不会出现溢出情况,即加密数字超过plain_modulus,除非你特别关心结果以plain_modulus为模的正确性。

    在 BFV 的几乎所有实际用例中,您应该希望使用 BatchEncoder 来不浪费明文/密文多项式空间,这需要 plain_modulus 是素数。因此,您可能希望它是素数,除了一些玩具示例。

    【讨论】:

      猜你喜欢
      • 2023-04-06
      • 2022-10-07
      • 1970-01-01
      • 2019-03-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多