同态加密库之HElib使用及其原理(1)

GITHUB代码:HElib链接
讲解可以参考良心博主:虚拟机Ubuntu安装NTL

Ubuntu安装、编译并运行HElib
第一步:安装带有GMP的NTL库
可以参考:https://blog.csdn.net/weixin_43774577/article/details/103271672

同态加密库之HElib使用及其原理(1)_第1张图片

我是这样解决的:6.2.0/6.1.2不匹配),所以选择安装了gmp6.1.2

一、 HElib

• C++
• Implements the BGV-­‐type encryption scheme
• Supports such as: reLinearazatioon, bootstapping, packing
• Supports multithread from this March
同态加密库之HElib使用及其原理(1)_第2张图片
BGV 方案一个leveled FHE(leveled FHE without bootstrapping) 同态加密库之HElib使用及其原理(1)_第3张图片

1.什么是levels??

        就是密文空间模数q

2 为什么需要level??

     ——Bootstrapping is  too too heavy
     ——模切换减少密文中的噪声

3.什么时候改变 level

     ——大部分是在密文乘法操作后(加法产生的噪声一般忽略)

二、 Leveled FHE 参数

在这里插入图片描述
模切换过程同态加密库之HElib使用及其原理(1)_第4张图片

如何确定levels呢??

 主要是依赖于 evaluation function

同态加密库之HElib使用及其原理(1)_第5张图片
同态加密库之HElib使用及其原理(1)_第6张图片

正如上图所见::密文乘法会导致 size 增大,维数升高,因此引入了新的技术 :重线性化 relinearzation

三、 ReLinearization (Key switching)

同态加密库之HElib使用及其原理(1)_第7张图片
同态加密库之HElib使用及其原理(1)_第8张图片

简单来看就是降低密文维数,同时保证解密仍然正确

为什么想要reLinearize??
     ——减少密文乘法的计算负担

同态加密库之HElib使用及其原理(1)_第9张图片

怎么做??
   需要 添加一些 额外信息到公钥中 
是否需要总是reLinearize
   ——取决于乘法的深度

同态加密库之HElib使用及其原理(1)_第10张图片
同态加密库之HElib使用及其原理(1)_第11张图片

四、Packing 打包技术

什么是打包??

       将多个消息 打包成 一个 密文

为什么要packing??

 1.减少密文的数量
 2.分摊计算时间

打包技巧

   1.打包成系数
   2.打包成子域(所谓的 CRT-based packing)

重点介绍打包技巧

. 一、打包成系数
Example Message Space: p=13,m=6,r=2在这里插入图片描述
想象有 8 个盒子,每一个都可以放一个小于13^2 的整数
同态加密库之HElib使用及其原理(1)_第12张图片
同态加密库之HElib使用及其原理(1)_第13张图片
由于我们加密的明文空间是 多项式,所以我们需要设计如何将我们的数据编码成 一个有用的多项式形式

举例说明:

给定向量 v=[1,2,3] , u=[4,5,6]
(1)我们把多项式表示为
在这里插入图片描述
但是在这里插入图片描述
因此,我们去U(x)的"逆形式":在这里插入图片描述
同态加密库之HElib使用及其原理(1)_第14张图片
这其中的原理解释可以参考:原理详解
同态加密库之HElib使用及其原理(1)_第15张图片
二、打包成子域(pack into field)

 1.并不是直接加密每一个系数
 2.向量作为整体被加密,使用中国剩余定理
 需要一个 辅助类:EncryptedArray

一个数可以分解为 素数因子的乘积同态加密库之HElib使用及其原理(1)_第16张图片
CRT的同构:同态加密库之HElib使用及其原理(1)_第17张图片
元素之间的对应关系:
同态加密库之HElib使用及其原理(1)_第18张图片

多项式 CRT
首先介绍分圆多项式:
同态加密库之HElib使用及其原理(1)_第19张图片同态加密库之HElib使用及其原理(1)_第20张图片
分圆多项式可以分解为两两互素不可约的多项式
同态加密库之HElib使用及其原理(1)_第21张图片同态加密库之HElib使用及其原理(1)_第22张图片
同态加密库之HElib使用及其原理(1)_第23张图片同态加密库之HElib使用及其原理(1)_第24张图片

Example: Component-­‐wise Operations同态加密库之HElib使用及其原理(1)_第25张图片

每一个slot hold 零阶多项式 mod 17
同态加密库之HElib使用及其原理(1)_第26张图片同态加密库之HElib使用及其原理(1)_第27张图片

下面介绍一个操作 “ Rotation”

同态加密库之HElib使用及其原理(1)_第28张图片
做一个自同构:
同态加密库之HElib使用及其原理(1)_第29张图片同态加密库之HElib使用及其原理(1)_第30张图片同态加密库之HElib使用及其原理(1)_第31张图片同态加密库之HElib使用及其原理(1)_第32张图片

你可能感兴趣的:(机器学习中的隐私保护)