2021SC@SDUSC
根据 同态加密标准 BFV的参数需要有如下
问题1: 这两个分布指的是什么 用来干什么
问题2: 这个环R是否是多项式环
这些参数应是用于后续的加密和解密以及密钥生成
现在来看一下公私钥的生成
这在PALISADE的实现如下 关于这部分上上篇blog大体论述了其流程 这两个分布D1, D2 是可以被配置的 这里照应了上上篇blog的一个问题 那就是这个评估密钥是什么
而在实现中 这里是统一用的向量化的运算
关于噪音的容错 这里给出了比较清晰的解答 只要噪音不超过临界W 那么就能恢复准确的原文
而这里仍然存在一个问题 我之前设想的是BFV其实也应该用到了bootstrapping 结果发现与bootstrapping相关的搜索结果并没有出现在bfv.cpp与其头文件中 只有在二进制或者说bool同态 - binfhe中才发现了bootstrap的实现
那么bfv是用什么方式降噪的呢
这是在 binfhe 也就是 二进制fhe中的
pke中的example 中鲜有提及bootstrap的 而且风格也与binfhe大相径庭
这里的bootstrapping似乎只出现在了注释里
那么会不会有这么一种可能 那就是这里其实仍然用到了bootstrap 但是没有显式的写出来? 我觉得是比较有可能的
先来查一下这个Rescale的成分 能够发现的是 它的工作其实是 mod-reduce
那么什么是mod-reduce呢? 字面上翻译就是减少模 不过这样解释确实很难让人满意
这是一个关键性的地方 homomophic encryption without bootstrap
(bfv中或许和bgv一样也没有bootstrap)
从各种意义上来说 接下来确实需要去查一下原论文了
另外翻源码的过程中还接触到了一个名词 叫作重线性化 用于部分同态加密 这样可能有助于理解别的相关机制
参考: