全同态加密(FHE)体系概述(初学版)

2023-11-18

同态加密定义

假设有这样一个场景,用户有一组私密数据,被加密存储在了第三方的云平台,现在,该用户想对这组数据进行某种处理,但是处理过程和结果都不想让第三方云平台看到。当然,用户可以选择将数据下载下来,处理后再加密上传,但是,假如这一组数据量很大,那么势必会花费很多的流量。这个时候,全同态加密就有了很大作用,用户不需要将数据下载下来处理后再上传,而是能够直接对云平台的数据进行处理,用户可以直接下载处理后的结果再进行解密就能得到想要的结果了。
在这里插入图片描述
可以这么理解:通过同态加密算法,用户可以与一个不可信的远程服务器(云端)进行某种安全代理计算(Secure Delegated Computation)。用户可以通过同态加密的技术来把自己敏感的隐私输入加密后托付给云端,然后云端可以在加密过后的数据上进行一定程度的计算,最后得到加密过后的用户想要的结果,并且返还给用户。最后用户就可以用解密密钥来打开得到的结果了。整个协议中,被代理方(云端)始终都无法看到任何和私密输入有关的有用信息。

两种特殊的同态性质:加法同态和乘法同态。
加法同态就是,如果密文累加起来,我们就可以获得把原文相加起来加密过后的新密文。而乘法同态则是,如果将一个乘法同态的算法生成的密文相乘起来,然后获得原文之间相乘之后的结果所对应的密文。

在这里插入图片描述

几个问题

为什么实现任意次加法和乘法就能实现全同态加密了?
答:电路模型里,传输的是高电平和低电平,也就是0和1。这就和模2的域上进行操作类似,在 Z 2 \mathbb{Z_2} Z2中,模2加法等于异或电路,模2乘法等于与电路,这两个电路能够实现任意电路,从而形成完备集。
为什么采用电路模型?
密码学中所有的方案都需要依赖于一个数学难题,其衡量标准就是计算复杂度,而电路模型就是一个计算复杂度的计算模型,可以用来衡量解决问题所需要的资源(时间、存储量)等。在电路计算模型下,通过含有多少门电路(gate)的数量和电路的深度等来衡量。
电路计算模型需要“接触”到所有输入的数据,不会有泄露信息。所以传统安全计算都是采用电路模型。

四大发展阶段

分别为

  1. 部分同态(Partially Homomorphic Encryption):可以运算的功能只能够要么由加法/线性组合,要么由乘法构成。例如RSA加密(乘法同态)、ElGamal加密(加法同态)
  2. 近似同态(Somewhat Homomorphic Encryption):拥有不完整的同态属性。如基于配对(Pairing)的循环群加密算法(加法同态+少量乘法同态)
  3. 有限级数全同态(Leveled Fully Homomorphic Encryption):可以同态运算任意形式的功能,但是功能所转换成的电路的复杂度不能超过上限,不然就会噪音太大丢失信息。(可以通过bootstrapping来控制噪音)
  4. 完全同态(Fully Homomorphic Encryption):
    可以计算任意复杂度的功能,并且可以完美将噪音控制在可控范围内。

历史回顾

2009年,在斯坦福读书的PhD Craig Gentry突然灵光一现,攻破了FHE算法的难关。在他的博士毕业论文中,他第一次给出了一个合理并且安全的全同态加密系统!这一系统基于理想格(ideal lattice)的假设。Gentry09提出来的全同态系统,我们往往称之为第一代全同态加密系统。

在Gentry的论文中,他还提到了一个至关重要的概念叫做Bootstrapping。Bootstrapping是一种对于密文的特殊处理技巧,处理过后竟然可以把一个噪音接近临界值的密文“重新刷新”成一个噪音很低的新密文。通过Bootstrapping,一个有限级数的系统的噪音可以永远不超过临界值,从而变成了全同态的系统。这样一来,我们就可以同态计算任意大小的 了。

在Gentry的重大突破之后,整个密码圈又一次陷入了疯狂,大家都开始争相基于Gentry提出的想法寻找更加高效率和全能的全同态体系。

在2011年的时候,两位大佬Brakerski和Vaikuntanathan提出了一个新的全同态加密体系,这一体系基于格(lattice)加密的另一种假设Learning With Errors(LWE)。在同一年,Brakerski,Gentry与Vaikuntanathan这三人一起把这个体系做完了,并且正式发表出来。他们发明的全同态系统简称为BGV系统。BGV系统是一个有限级数的同态加密系统,但是可以通过Bootstrapping的方式来变成全同态系统。BGV系统相比起Gentry09提出的系统,使用了更加实际一点的LWE假设。一般来说我们都把BGV系统称之为第二代全同态加密系统。

2013年,Gentry又卷土重来了。Gentry,Sahai和Waters三个大佬推出了新的GSW全同态加密系统。GSW系统和BGV相似,本身具有有限级数全同态性质,基于更加简单的LWE假设,并且通过Bootstrapping可以达到全同态。我们一般把GSW系统称为第三代全同态加密系统。

总结
第一代全同态加密方案,都是遵循 Gentry 复杂的构造方法。本质上这些方案都是在各种环的理想上,首先构建一个部分( somewhat) 同态加密方案( 即方案只能执行低次多项式计算) ,然后“压缩”解密电路( 依赖稀疏子集和问题的假设) ,从而执行自己的解密函数进行同态解密,达到控制密文噪声增长的目的,最终在循环安全的假设下获得全同态加密方案。尽管同态解密是实现全同态加密的基石,但是同态解密的效率很低

第二代全同态加密方案构造方法简单,基于 LWE( 环-LWE) 的假设,其安全性可以归约到一般格上的标准困难问题,打破了原有的 Gentry 构建全同态加密方案的框架。首先构建一个部分同态加密方案,密文计算后,用密钥交换技术控制密文向量的维数膨胀问题,然后使用模交换技术控制密文计算的噪声增长。通过上述方法不需要同态解密技术,就可获得层次型全同态加密方案,即方案可以执行多项式级深度的电路,可以满足绝大多数应用。要想获得“纯”的全同态加密方案,依然要依赖同态解密技术,然而同态解密技术效率低下,而且需要依赖循环安全的假设,实践中不予考虑。

第三代方案就是2013 年Gentry 等人提出的一个基于近似特征向量的全同态加密方案,不需要密钥交换技术和模交换技术就可以实现层次型全同态加密方案。该方案的安全性基于 LWE 问题,密文的计算就是矩阵的加法与乘法,因此是非常自然的一个全同态加密方案。

FHE系统正式定义

四个基本算法

一个完整的全同态加密系统具有四个基本算法:

  1. 密钥生成算法 K e y G e n KeyGen KeyGen,将会生成其他FHE算法将要使用的密钥。
    用于生成公钥和私钥,同时还需要生成另外一个公钥 E v k Evk Evk,该公钥用于密文计算,它的形式与使用的全同态加密算法直接相关。如,

    • 若是通过同态解密来获得全同态加密 ,此时的 E v k Evk Evk就是对密钥的每一位加密后生成的密文。典型代表就是Gentry的理想格方案以及后续的整数上方案。
    • 如果使用密钥交换和模交换来获得全同态的话, E v k Evk Evk就是 L − 1 L-1 L1个矩阵(第一次不需要),这个矩阵用于密钥交换,其中 L L L就是电路深度。每次密文计算后,都需要使用 E v k Evk Evk来将维数扩张的密文转变为正常的。

    此外,第三代方案,也就是近似特征向量的方案,它是不需要 E v k Evk Evk的,这也是它可以产生IBHE和ABHE的原因。

  2. 加密算法 E n c Enc Enc,可以加密用户的输入,输出密文。

  3. 解密算法 D e c Dec Dec,可以把密文还原为原来的明文。但这里的解密不仅要能解密密文,还能对计算后的密文进行解密。但密文计算会存在噪声,当噪声到达一定界限之后就无法正确解密了,所以同态加密的关键是对噪声的控制。

  4. 运算算法 E v a l Eval Eval,可以基于输入的密文,进行任意功能的运算,最后得到加密后的结果。这里的密文计算是在电路中的,电路是分层的,深度越深,层数越多,密文就能进行更多次的计算。注意,电路深度 d d d与密文计算次数 n n n的关系是 d = ⌈ log ⁡ 2 n ⌉ d=\lceil \log_2 n \rceil d=log2n,密文计算次数就是密文乘法的幂次。用乘法来衡量的原因是噪声增加更快。一般的运算算法会有三个参数,即公钥 E v k Evk Evk,计算函数 f f f,密文 C C C

三大属性

  1. 正确性(Correctness):一个FHE系统必须要是正确的。具体来说,也就是加密之后的密文可以被成功解密,并且运算输出的密文也可以成功解密回原文。
  2. 语义安全(Semantic Security):FHE系统输出的密文必须要难以分辨。具体来说,如果有一个网络窃听者看到了所有的密文,那么这个窃听者并不能分辨出哪个密文是对应哪个原文的。
  3. 简短性(Compactness):FHE的运算算法输出的密文的长度一定要独立于功能的所对应的电路的大小。这一属性代表就算运算功能复杂,输出的密文仍然在一个可以控制的长度范围内,确保了FHE系统的实用性。

主流研究方案

全同态加密发展到今天,已经出现了两个分支,一个分支是以计算算数电路为主(BFV, BGV, CKKS),基于RLWE的层次同态加密(LHE),一般来说支持多项式打包技术,可以一次性运算(加法乘法)多个数据,效率上较高,但LHE目前来说Bootstrapping开销比较大,一般来说只当作支持有限次数的运算的同态加密方法使用。

另一个则以计算布尔电路为主(FHEW, TFHE),基于高效自举(Bootstrapping)技术,对于多项式打包并不友好。
下面一些方案的特性:
FHEW、TFHE、GSW为布尔电路上的实现,其特性

  • 快速比较
  • 支持任意布尔电路
  • 快速 bootstrapping(噪声刷新过程,减少因密文计算而产生的噪音,降低失败可能性)

BGV、BFV是算数电路上的实现,其特性

  • 在整数向量上进行高效的SIMD计算(使用批处理)
  • 快速高精度整数算术
  • 快速向量的标量乘法
  • Leveled design(通常不使用bootstrapping)

CKKS则是17年才提出来的,其特性

  • 快速多项式近似计算
  • 相对快速的倒数和离散傅里叶变换
  • 深度近似计算,如逻辑回归学习
  • 在实数向量上进行高效的SIMD计算(使用批处理)
  • Leveled design(通常不使用bootstrapping)

前沿研究

2013年之后,密码圈基本上就百花齐放了。基于原来的三代全同态系统之上,出现了各种各样新的设计,致力于优化和加速BGV与GSW系统的运行效率。
当前的主流前沿研究

  • CKKS的安全性问题

  • FHEW类型与RLWE类型的同态加密结合

  • 快速Bootstrapping

  • 将RLWE类型的同态加密与MPC结合,通过MPC实现Bootstrapping

在这里插入图片描述

常用的算法库

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

参考

同态加密专栏的初心
初探全同态加密:FHE的定义与历史回顾(强推)
全同态加密知识体系整理(强推)
《全同态加密-从理论到实践》 陈智罡

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

全同态加密(FHE)体系概述(初学版) 的相关文章

  • C++ 循环

    有时候 程序需要多次执行同一块代码 一般情况下 语句是顺序执行的 函数中的第一个语句先执行 接着是第二个语句 依此类推 循环语句允许多次执行一个语句或语句组 大多数编程语言中循环语句的一般形式 循环类型 C 编程语言提供了以下几种循环类型
  • Anaconda环境的创建、激活、删除和管理

    1 Anaconda环境的创建 conda create n 环境的名字 自定义 python 3 7 其中环境的名字 自定义 表示创建环境的名字 可以自定义 建议为英文 后面python 3 7表示创建的解释器的版本 conda crea

随机推荐

  • 这里有141个创业公司的死亡案例,看鸡汤不如听教训

    今天我们打算跟大家聊聊失败 关于成功的方法论有着趋同性 多半与 天时地利人和 有关 而关于失败 却很少有人愿意公开谈起 也许因为野兽总是不想将伤口暴露在外 探讨失败的意义 可能远远大于成功 因为面对挫折 即使自认为最无畏的人也会有这样的时刻
  • PicGo安装与配置-Gitee图床

    PicGo安装与配置 Gitee图床 文章目录 PicGo安装与配置 Gitee图床 1 前言 2 下载 3 安装 4 Gitee 5 Node js 6 配置PicGo 6 1 PicGo界面配置 6 2 npm安装PicGo插件Gite
  • 空格的正则表达式

    在正则表达式想使用空格的时候不能采用 s的方法 因为 s指的是空白 就是所有空白 如果想表示单纯的空格的话可以采用 方括号本身就是匹配其中的字符 那么其中放空格就是匹配空格 如果有其他正则表达式问题可以查看 https blog csdn
  • GCP reliable google cloud infrastructure, devops lab

    最后更新2022 03 13 先到menu source repository里建立repository 还是不很好找 source repository在CI CD分类里面 点右上角的add repository按钮 输名字devops
  • uniapp集成unipush2.0

    unipush3 0集成 unipush推出2 0服务 之前一直用的1 0 现在项目推荐使用2 0 最近也是对2 0这个推送做了测试 下面就主要对华为这个来总结一下 其余的厂商大同小异 1 push1 0和2 0对比 个人理解 2 0比1
  • 深入浅出 RPC - 深入篇

    深入篇 我们主要围绕 RPC 的功能目标和实现考量去展开 一个基本的 RPC 框架应该提供什么功能 满足什么要求以及如何去实现它 RPC 功能目标 RPC 的主要功能目标是让构建分布式计算 应用 更容易 在提供强大的远程调用能力时不损失本地
  • 深度学习——制作自己的VOC图像分割数据集

    1 数据集介绍 COCO数据集有80个类别 VOC数据集有20个类别 当这些数据集类别中没有自己需要的时候 就需要自己动手做自己的数据集了 我自己在做数据集的时候主要使用到了labelme和labelImg两个工具 labelme主要是制作
  • string str="i"与 String str=new String("i")和String s = new String("abc")的解释!!!

    string str i 与 String str new String i String x 张三 String y 张三 String z new String 张三 System out println x y true System
  • Android中的回调

    mark一句比较好的话 A类中调用B类的某个方法C 然后B类反过来调用A类的方法D D这个方法就叫回调 在不同的状态 回调 我们的实现类 来达到接口和实现和分类 先定义一个接口 监听接口 来在主界面监听界面变化状态 public inter
  • sqli-labs通关攻略54-65[Challenges]

    Advanced Injections 文章目录 Advanced Injections less 54 less 55 less 56 less 60 less 62 less 63 less 64 less 65 最后一篇补上 less
  • yolov3 数据预处理部分实现细节

    参考 https mp weixin qq com s T9LshbXoervdJDBuP564dQ https blog csdn net qm5132 article details 83651291 https mp weixin q
  • 软件工程复习10:软件设计与实现

    作者 非妃是公主 专栏 软件工程 个性签 顺境不惰 逆境不馁 以心制境 万事可成 曾国藩 专栏地址 软件工程专栏地址 专栏系列文章 软件工程复习01 软件工程概述 软件工程复习02 个人技术 软件工程复习03 个人软件流程 软件工程复习04
  • Java经典面试题:Redis 和 Mysql 如何保证数据一致性

    Redis 和 Mysql 如何保证数据一致性 引言 重要性 挑战 Redis和MySQL概述 Redis Remote Dictionary Server MySQL 数据一致性概述 Redis的数据一致性机制 MySQL的数据一致性机制
  • vim常用操作——vim中执行shell

    vim常用操作 vim中执行shell vim中执行shell命令 有以下四种形式 单纯执行shell命令 不更改文件 形式 command 解释 不退出vim 并执行shell命令command 将命令输出显示在vim的命令区域 不会改变
  • 文件,文件夹操作(权限设置+操作)

    文件权限 r 可读权限 值为4 w 可写权限 值为2 x 可执行权限 值为1 文件权限说明 文件夹权限755 文件权限644 一个文件或文件夹的三种用户 第一位是拥有者 第二个是组内用户 第三个是组外用户 权限举例说明 文件夹权限为755
  • Project:解决问题:在Microsoft project2016中如何编辑一周七天工作日

    1 目的 1 1 想 在Microsoft project2016中如何编辑一周七天工作日 2 操作 2 1 项目 gt 更改工作时间 gt 对于日历 标准 项目日历 gt 工作周 gt 详细信息 gt 选中 星期日 和 星期六 gt 对所
  • Eigen库使用入门

    为了将Matlab写的运动学程序转化为C 所编写的dll 需要用用到矩阵库Eigen Eigen库是一个使用C 源码编写的矩阵库 基本上能满足计算中所需要用到的运算 下面介绍一些库的入门学习 1 首先是关于固定大小矩阵 向量的定义 初始化
  • python 3.2 错误 ‘generator’ object has no attribute ‘next’

    下面是一段简单的示例 定义Generator函数 def func n for i in range n yield i 在for循环中输出 for i in func 3 print i 使用next 输出 r func 4 print
  • mysql数据存储文件结构图

    1 基本结构图 2 文件说明 数据库文件夹 每一个数据库都会建立一个单独的文件夹
  • 全同态加密(FHE)体系概述(初学版)

    同态加密定义 假设有这样一个场景 用户有一组私密数据 被加密存储在了第三方的云平台 现在 该用户想对这组数据进行某种处理 但是处理过程和结果都不想让第三方云平台看到 当然 用户可以选择将数据下载下来 处理后再加密上传 但是 假如这一组数据量