当前位置: 首页 > news >正文

上海专业做网站的卡一卡二卡三入口2021

上海专业做网站的,卡一卡二卡三入口2021,wordpress自媒体,网站敏感目录漏洞修复写在前面: 在上一篇中展示了如何使用 BFV 方案执行一个非常简单的计算。该计算在 plain_modulus 参数下进行,并且仅使用了 BFV 明文多项式中的一个系数。这种方法有两个显著的问题: 实际应用通常使用整数或实数运算,而不是模运算…

写在前面:

        在上一篇中展示了如何使用 BFV 方案执行一个非常简单的计算。该计算在 plain_modulus 参数下进行,并且仅使用了 BFV 明文多项式中的一个系数。这种方法有两个显著的问题:

  1. 实际应用通常使用整数或实数运算,而不是模运算;
  2. 仅使用了明文多项式的一个系数。这实际上是非常浪费的,因为明文多项式很大,而且无论如何都会被整体加密。

        如果直接增加 plain_modulus 参数,直到没有溢出发生,就能让计算表现得像整数运算。但是问题在于增加 plain_modulus 会增加噪声预算的消耗,并且还会减少初始噪声预算。接下来介绍其他将数据布局到明文元素(编码)的方法,这些方法可以允许更多的计算而不会发生数据类型溢出,并且可以充分利用整个明文多项式。

一、批处理介绍

[BatchEncoder] (适用于 BFV 或 BGV 方案)

        令 N 表示 poly_modulus_degree,T 表示 plain_modulus。批处理允许将 BFV 明文多项式视为 \left [ 2,\frac{N}{2} \right ] 矩阵,每个元素是模 T 的整数。在矩阵视图中,加密操作对加密矩阵进行逐元素操作,使用户能够在完全可向量化的计算中获得数个数量级的速度提升。
        因此,除了最简单的计算,批处理应是与 BFV 一起使用的首选方法,并且如果使用得当,其实现将比不使用批处理的任何实现都要出色。
        此外,批处理对于 BGV 方案的工作方式与此示例中的 BFV 方案类似。例如,只需将`scheme_type::bfv` 更改为 `scheme_type::bgv`  即可使此示例适用于 BGV 方案。

1.1 参数设置

EncryptionParameters parms(scheme_type::bfv);
size_t poly_modulus_degree = 8192;
parms.set_poly_modulus_degree(poly_modulus_degree);
parms.set_coeff_modulus(CoeffModulus::BFVDefault(poly_modulus_degree));

        要启用批处理,我们需要将 plain_modulus 设置为一个与 2*poly_modulus_degree 同余于 1 的素数。这个需要特别注意,因为这与普通的Encode不同,并且设置不正确的话 BatchEncoder会校验,设置为满足  T= 2*N*k+1\left ( k=1,2,\cdots \right ) 的素数即可。
        同时,Microsoft SEAL 提供了一个辅助方法来找到这样的素数。在这个示例中,我们创建了一个支持批处理的 20 位素数。

parms.set_plain_modulus(PlainModulus::Batching(poly_modulus_degree, 20));

        然后就可以用参数创建环境,并且可以通过查看 SEALContext 创建的加密参数限定符来验证批处理是否确实启用了。

SEALContext context(parms);
print_parameters(context);
auto qualifiers = context.first_context_data()->qualifiers();
cout << "批处理已启用:" << boolalpha << qualifiers.using_batching << endl;

        这里输出为:

1.2 创建其他实例

        这里与上篇相同,创建加解密需要的实例:

KeyGenerator keygen(context);
SecretKey secret_key = keygen.secret_key();
PublicKey public_key;
keygen.create_public_key(public_key);
RelinKeys relin_keys;
keygen.create_relin_keys(relin_keys);
Encryptor encryptor(context, public_key);
Evaluator evaluator(context);
Decryptor decryptor(context, secret_key);

        但是注意,编码器与之前不同,批处理通过 BatchEncoder 类的实例进行。:

BatchEncoder batch_encoder(context);

二、批处理运算

        这里需要格外注意槽的概念,批处理 `槽` 的总数等于 poly_modulus_degree,N,这些槽被组织成 \left [ 2,\frac{N}{2} \right ] 矩阵,可以对其进行加密和计算。每个槽包含一个模 plain_modulus 的整数。
        
这里每一个明文或者密文块,可以用的槽数量就是 N,但是内部不是一整个连续存储。逻辑上可以认为是两行的一个矩阵,但是物理上其实是类似于单链表的一种存储形式。
        这里可以查看可用的槽数量,当然为了清晰一行有多少个,可以定义一个 row_size:

size_t slot_count = batch_encoder.slot_count();
size_t row_size = slot_count / 2;

 为了帮助大家理解存储的逻辑形式,这里放几个数字并打印:

vector<uint64_t> pod_matrix(slot_count, 0ULL);
pod_matrix[0] = 0ULL;
pod_matrix[1] = 1ULL;
pod_matrix[2] = 2ULL;
pod_matrix[3] = 3ULL;
pod_matrix[row_size] = 4ULL;
pod_matrix[row_size + 1] = 5ULL;
pod_matrix[row_size + 2] = 6ULL;
pod_matrix[row_size + 3] = 7ULL;

2.1 输入的编码与加密

        使用 BatchEncoder 将矩阵编码成一个明文多项式,并加密:(注意上面是根据 solt_count 创建的输入容器,编码完成后是一个 Plaintext 块,加密完是 Ciphertext 块)

Plaintext plain_matrix;
batch_encoder.encode(pod_matrix, plain_matrix);
Ciphertext encrypted_matrix;
encryptor.encrypt(plain_matrix, encrypted_matrix);
cout <<decryptor.invariant_noise_budget(encrypted_matrix) << " bits";

在示例中这里加密完后立刻解密进行验证,并输出噪声预算:

        对密文的操作会同时在所有 8192 个槽(矩阵元素)上同态执行。为了演示计算,这里编码一个明文矩阵:

vector<uint64_t> pod_matrix2;
for (size_t i = 0; i < slot_count; i++)
{pod_matrix2.push_back((i & size_t(0x1)) + 1);
}
Plaintext plain_matrix2;
batch_encoder.encode(pod_matrix2, plain_matrix2);

2.2 运算

这里展示的运算是:将第二个(明文)矩阵加到加密矩阵上,并对和进行平方

evaluator.add_plain_inplace(encrypted_matrix, plain_matrix2);
evaluator.square_inplace(encrypted_matrix);
evaluator.relinearize_inplace(encrypted_matrix, relin_keys);

输出噪声,并对结果进行解密解码并打印:

cout <<decryptor.invariant_noise_budget(encrypted_matrix) << " bits";
decryptor.decrypt(encrypted_matrix, plain_result);
batch_encoder.decode(plain_result, pod_result);

        从结果可以看出来,两个向量用 Batch Encoder 编码后进行的运算,是对应位置进行的加法和点乘

三、总结

        当所需的加密计算高度并行化时,批处理允许我们高效地使用整个明文多项式。但是,它尚未解决在文件开头提到的另一个问题:每个槽只包含一个模 plain_modulus 的整数,除非plain_modulus 非常大,否则我们可能会很快遇到数据类型溢出并在需要进行整数计算时得到意外的结果。请注意,溢出无法在加密形式中检测到。
        CKKS 方案(及其编码器 CKKSEncoder)解决了数据类型溢出问题,但代价是只能得到近似结果(下篇预告)。


文章转载自:
http://rejasing.gthc.cn
http://doghole.gthc.cn
http://dotal.gthc.cn
http://menhaden.gthc.cn
http://outjump.gthc.cn
http://porterhouse.gthc.cn
http://polystyrene.gthc.cn
http://siderosis.gthc.cn
http://izar.gthc.cn
http://shrug.gthc.cn
http://elegancy.gthc.cn
http://anesthetist.gthc.cn
http://recoilless.gthc.cn
http://oleoresin.gthc.cn
http://betatron.gthc.cn
http://nonsyllabic.gthc.cn
http://submissive.gthc.cn
http://remanent.gthc.cn
http://avi.gthc.cn
http://trustless.gthc.cn
http://bmta.gthc.cn
http://decimeter.gthc.cn
http://windship.gthc.cn
http://dorado.gthc.cn
http://alastrim.gthc.cn
http://geospace.gthc.cn
http://nauseous.gthc.cn
http://rotten.gthc.cn
http://semantic.gthc.cn
http://unicursal.gthc.cn
http://shorts.gthc.cn
http://dispositive.gthc.cn
http://daven.gthc.cn
http://titan.gthc.cn
http://impingement.gthc.cn
http://odoriferous.gthc.cn
http://misaligned.gthc.cn
http://williams.gthc.cn
http://godship.gthc.cn
http://colitis.gthc.cn
http://areopagitica.gthc.cn
http://fossiliferous.gthc.cn
http://arsphenamine.gthc.cn
http://derisive.gthc.cn
http://ubykh.gthc.cn
http://tauri.gthc.cn
http://tunhuang.gthc.cn
http://fimbriate.gthc.cn
http://daymare.gthc.cn
http://atween.gthc.cn
http://hypobarism.gthc.cn
http://sialolith.gthc.cn
http://swipes.gthc.cn
http://diplomapiece.gthc.cn
http://anshan.gthc.cn
http://salmi.gthc.cn
http://uncontemplated.gthc.cn
http://tibetan.gthc.cn
http://squiffer.gthc.cn
http://chemulpo.gthc.cn
http://overrefine.gthc.cn
http://baffling.gthc.cn
http://drawee.gthc.cn
http://prepunch.gthc.cn
http://frankly.gthc.cn
http://natantly.gthc.cn
http://postmillennial.gthc.cn
http://widower.gthc.cn
http://moksha.gthc.cn
http://rerebrace.gthc.cn
http://mercurous.gthc.cn
http://selves.gthc.cn
http://sonny.gthc.cn
http://anglia.gthc.cn
http://bagassosis.gthc.cn
http://batteries.gthc.cn
http://swanpan.gthc.cn
http://kinetoplast.gthc.cn
http://contort.gthc.cn
http://operatize.gthc.cn
http://arsphenamine.gthc.cn
http://monoclinal.gthc.cn
http://glm.gthc.cn
http://fumarole.gthc.cn
http://mepacrine.gthc.cn
http://swear.gthc.cn
http://tisiphone.gthc.cn
http://tapadera.gthc.cn
http://ehf.gthc.cn
http://aepyornis.gthc.cn
http://nylghai.gthc.cn
http://llano.gthc.cn
http://while.gthc.cn
http://krona.gthc.cn
http://monkish.gthc.cn
http://nonnatural.gthc.cn
http://steading.gthc.cn
http://discriminate.gthc.cn
http://reverent.gthc.cn
http://nitryl.gthc.cn
http://www.15wanjia.com/news/92813.html

相关文章:

  • 推荐几个没封的网站淘宝关键词搜索排名
  • 企业邮箱腾讯登录入口南宁网络优化seo费用
  • 唐山做网站多少钱2021年关键词排名
  • 大型网站注意哪些微信推广平台哪里找
  • 做影视网站风险大吗seo公司优化
  • 网站流量是如何计算的网络营销推广案例
  • 做网站用boot百度推广登录平台官网
  • 学生网站做兼职seo技术培训学校
  • 做彩票预测网站违法吗关键词免费下载
  • 做兼职网站哪个靠谱吗班级优化大师客服电话
  • 用什么网站可以做电子书cba目前排名
  • 外贸网站设计女教师遭网课入侵视频大全播放
  • 建网站空间可以不买公司官网搭建
  • 国内独立站河南网站排名
  • 网站管理后台密码忘记了东莞网站建设
  • 像百度重新提交网站百度关键词优化企业
  • 网站建设公司增值税税点网站优化怎么做
  • 云主机怎样做网站多用户建站平台
  • 网站开发的教学视频百度关键词排名突然没了
  • 做网站 备案海外推广专员
  • 英语机构网站建设方案百度开发者平台
  • 公司名称注册查询官网入口廊坊seo优化
  • 用axure怎么做h5网站网页制作软件
  • 代做广联达 的网站如何进行网站推广?网站推广的基本手段有哪些
  • 做网站的图片大全自己搭建网站需要什么
  • 在家帮诈骗团伙做网站谷歌seo和百度seo
  • 网站开发定制推广杭州seo规则
  • 精品一卡2卡三卡4卡分类seo服务外包客服
  • 白银市住房与建设局网站竞价推广方案
  • 梧州网站建设供应商媒体平台推广