何时需要在helib中引导?

时间:2017-10-21 21:47:30

标签: c++ cryptography

我的印象是,有些同态加密方案允许您执行任意数量的加法,然后进行单次乘法,之后噪声变得太大。但是,当我尝试以下操作时似乎有效:

library(knitr)
library(kableExtra)

df %>%
  kable("html") %>%
  kable_styling(bootstrap_options = c("striped", "hover"))

再执行一次乘法会产生错误的结果。

在引导之前允许的操作数量和/或类型是否需要可预测?它取决于什么?基础值或任何初始化参数?

1 个答案:

答案 0 :(得分:5)

特定实例可以执行的计算量在很大程度上取决于用于初始化系统的参数。通常,乘法(或涉及乘法的运算)成本最高。

" L"参数,指示模数链中的级数,是在需要引导之前可以执行多少次计算(和具体的乘法)的最重要因素。尝试将其设置为更大的数字。

我强烈建议您阅读HElib的src文件夹中的Test_General.cpp,该文件夹可在此处下载:https://github.com/shaih/HElib。你可以运行" make"在该文件夹中生成一个名为Test_General_x的可执行文件,并使用" Test_General_x L = 10 R = 5"将L设置为10并运行5轮这些计算(您可以在源代码中更改)。使用各种参数,将L更改为15,20,...,60,或更改其他参数,并查看它如何影响运行时,可执行的计算次数和解密错误。

如果你需要引导,你可以在同一个src文件中查看params.cpp,并通过运行" params_x ..."来测试引导的各种参数。根据params.cpp底部的说明