SEAL中的解码和解密错误指示符

时间:2019-03-02 20:41:58

标签: seal

我知道在SEAL 2.3.1中,解码和解密错误将静默失败。即尝试对某些计算结果进行解码/解密时,没有任何迹象表明噪声错误不足或违反了plain_modulus,poly_modulus设置。这些指标是否存在于任何更高版本中,例如在3.0、3.1、3.2中还是不正确的解码或解密是否仍然默默失败?

1 个答案:

答案 0 :(得分:1)

自SEAL 2.3.1以来没有重大变化,除了自SEAL 3.0以来,CKKS方案的存在使答案更加复杂。

解密。SEAL 3.2.0没有给出任何噪声预算为零的指示。您必须针对BFV方案单独进行测试; CKKS方案没有类似的干净概念。此外,说解密失败有点误导:解密总是成功并给出一些输出明文,但是Ciphertext-Plaintext对可能具有最大噪声(对于BFV)。用户可能想实现先检查噪声水平然后解密的功能,但这样做会降低性能,因此SEAL自动进行可能没有意义。

解码。使用CKKS方案时,例如,当给定的明文太大时,SEAL 3.2.0会引发解码错误(使用CKKSEncoder时)。但是,通过有效使用Evaluator / Decryptor不可能产生这样的纯文本。如果规模和消息太大以至于其乘积围绕coeff_modulus,则CKKS解码将是不正确的,但是Evaluator无法检测到这一点,CKKSEncoder都无法检测到。对于BFV,IntegerEncoder可以检测到解码溢出错误,并且会在这种情况下抛出错误(如SEAL 2.3.1所示),但是对于BatchEncoder,则没有错误的解码,因此根本无法检测到这种情况。 。请注意,永远不会以加密形式检测到plain_modulus溢出。