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

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

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

在这里插入图片描述

我是这样解决的: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
在这里插入图片描述
BGV 方案一个leveled FHE(leveled FHE without bootstrapping在这里插入图片描述

1.什么是levels??

        就是密文空间模数q

2 为什么需要level??

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

3.什么时候改变 level

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

二、 Leveled FHE 参数

在这里插入图片描述
模切换过程在这里插入图片描述

如何确定levels呢??

 主要是依赖于 evaluation function

在这里插入图片描述
在这里插入图片描述

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

三、 ReLinearization (Key switching)

在这里插入图片描述
在这里插入图片描述

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

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

在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述

四、Packing 打包技术

什么是打包??

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

为什么要packing??

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

打包技巧

   1.打包成系数
   2.打包成子域(所谓的 CRT-based packing)
重点介绍打包技巧

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

举例说明:

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

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

一个数可以分解为 素数因子的乘积在这里插入图片描述
CRT的同构:在这里插入图片描述
元素之间的对应关系:
在这里插入图片描述

多项式 CRT
首先介绍分圆多项式:
在这里插入图片描述在这里插入图片描述
分圆多项式可以分解为两两互素不可约的多项式
在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述

Example: Component-­‐wise Operations在这里插入图片描述

每一个slot hold 零阶多项式 mod 17
在这里插入图片描述在这里插入图片描述

下面介绍一个操作 “ Rotation”

在这里插入图片描述
做一个自同构:
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

  • 7
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值