gpt4 book ai didi

cryptography - 使用 Palisade 库的同态加密

转载 作者:行者123 更新时间:2023-12-04 01:16:57 32 4
gpt4 key购买 nike

致所有同态加密专家:
我正在使用 PALISADE 库:

int plaintextModulus = 65537;
float sigma = 3.2;
SecurityLevel securityLevel = HEStd_128_classic;
uint32_t depth = 2;

//Instantiate the crypto context
CryptoContext<DCRTPoly> cc = CryptoContextFactory<DCRTPoly>::genCryptoContextBFVrns(
plaintextModulus, securityLevel, sigma, 0, depth, 0, OPTIMIZED);
您能否解释(所有)与 ptm、depth 和 sigma 相关的参数。
其次,我试图用上面的 cc 制作一个打包的明文。
cc->MakePackedPlaintext(array);
数组的最大大小是多少?因为在我的本地机器上,当数组大于 ~ 8000 int64 时,我会收到一些奇怪的错误,例如 free(): invalid next size (normal)

最佳答案

感谢您提出问题。Plaintext modulus t (此处表示为 t)是 BFV 的关键参数,因为所有操作都以 mod t 的形式执行。换句话说,当您选择 t 时,您必须确保所有计算都不会回绕,即不超过 t。否则你会得到一个不正确的答案,除非你的目标是计算一些 mod t。sigma是分布参数(用于基础的有错误学习问题)。您可以设置为 3.2。没有必要改变它。Depth是您要计算的电路的乘积深度。它与向量的大小无关。基本上,如果您有 AxBxCxD,那么您的深度为 3 且方法简单。 BFV 还支持更高效的二叉树评估,即 (AxB)x(CxD) - 此选项会将深度减少到 2。
BFV 是一种支持打包的方案。默认情况下,打包密文的大小等于环维数(对于您提到的示例,类似于 8192)。这意味着您最多可以打包 8192 个整数。为了支持更大的数组/向量,您需要将它们分成每批 8192 个并分别加密。
关于您的应用程序,CKKS 方案可能是一个更好的选择(我将在另一个线程中更详细地响应该应用程序)。

关于cryptography - 使用 Palisade 库的同态加密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63191152/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com