[email protected]
根据 同态加密标准 BFV的参数需要有如下
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiNx8FesU2cfdGLwczX0xiRGZkRGZ0Xy9GbvNGLwIzXlpXazxSP9EkURpEWaBjUzIWQClGVF5UMR9Fd4VGdsATNfd3bkFGazxycykFaKdkYzZUbapXNXlleSdVY2pESa9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnLxMWY0YzYyMDZhJWO3ImM4UjYmRjZ3IGZ0EmZhZGOxkzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
问题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)
从各种意义上来说 接下来确实需要去查一下原论文了
另外翻源码的过程中还接触到了一个名词 叫作重线性化 用于部分同态加密 这样可能有助于理解别的相关机制
参考:
同态加密(一)-基于标准LWE的高效全同态加密1(Efficient Fully Homomorphic Encryption from (Standard) LWE) - 知乎 (zhihu.com)
同态加密标准 (Section 1) - 知乎 (zhihu.com)
初探全同态加密之四:Bootstrapping的原理与实现 - 知乎 (zhihu.com)