天天看点

@[email protected] 源码分析: 有关BFV的标准和机制的一些想法

[email protected]

根据 同态加密标准 BFV的参数需要有如下

@[email protected] 源码分析: 有关BFV的标准和机制的一些想法

问题1: 这两个分布指的是什么 用来干什么

问题2: 这个环R是否是多项式环

这些参数应是用于后续的加密和解密以及密钥生成

现在来看一下公私钥的生成

@[email protected] 源码分析: 有关BFV的标准和机制的一些想法

这在PALISADE的实现如下 关于这部分上上篇blog大体论述了其流程 这两个分布D1, D2 是可以被配置的 这里照应了上上篇blog的一个问题 那就是这个评估密钥是什么

而在实现中 这里是统一用的向量化的运算

@[email protected] 源码分析: 有关BFV的标准和机制的一些想法

关于噪音的容错 这里给出了比较清晰的解答 只要噪音不超过临界W 那么就能恢复准确的原文

@[email protected] 源码分析: 有关BFV的标准和机制的一些想法

而这里仍然存在一个问题 我之前设想的是BFV其实也应该用到了bootstrapping 结果发现与bootstrapping相关的搜索结果并没有出现在bfv.cpp与其头文件中 只有在二进制或者说bool同态 - binfhe中才发现了bootstrap的实现

@[email protected] 源码分析: 有关BFV的标准和机制的一些想法
@[email protected] 源码分析: 有关BFV的标准和机制的一些想法

那么bfv是用什么方式降噪的呢

这是在 binfhe 也就是 二进制fhe中的

pke中的example 中鲜有提及bootstrap的 而且风格也与binfhe大相径庭

这里的bootstrapping似乎只出现在了注释里

@[email protected] 源码分析: 有关BFV的标准和机制的一些想法

那么会不会有这么一种可能 那就是这里其实仍然用到了bootstrap 但是没有显式的写出来? 我觉得是比较有可能的 

先来查一下这个Rescale的成分 能够发现的是 它的工作其实是 mod-reduce

那么什么是mod-reduce呢?   字面上翻译就是减少模 不过这样解释确实很难让人满意

@[email protected] 源码分析: 有关BFV的标准和机制的一些想法

这是一个关键性的地方 homomophic encryption without bootstrap

(bfv中或许和bgv一样也没有bootstrap)

@[email protected] 源码分析: 有关BFV的标准和机制的一些想法

从各种意义上来说 接下来确实需要去查一下原论文了

另外翻源码的过程中还接触到了一个名词 叫作重线性化 用于部分同态加密 这样可能有助于理解别的相关机制

参考:

同态加密(一)-基于标准LWE的高效全同态加密1(Efficient Fully Homomorphic Encryption from (Standard) LWE) - 知乎 (zhihu.com)

同态加密标准 (Section 1) - 知乎 (zhihu.com)

初探全同态加密之四:Bootstrapping的原理与实现 - 知乎 (zhihu.com)

继续阅读