同态加密定义

假设有这样一个场景,用户有一组私密数据,被加密存储在了第三方的云平台,现在,该用户想对这组数据进行某种处理,但是处理过程和结果都不想让第三方云平台看到。当然,用户可以选择将数据下载下来,处理后再加密上传,但是,假如这一组数据量很大,那么势必会花费很多的流量。这个时候,全同态加密就有了很大作用,用户不需要将数据下载下来处理后再上传,而是能够直接对云平台的数据进行处理,用户可以直接下载处理后的结果再进行解密就能得到想要的结果了。

可以这么理解:通过同态加密算法,用户可以与一个不可信的远程服务器(云端)进行某种安全代理计算(Secure Delegated Computation)。用户可以通过同态加密的技术来把自己敏感的隐私输入加密后托付给云端,然后云端可以在加密过后的数据上进行一定程度的计算,最后得到加密过后的用户想要的结果,并且返还给用户。最后用户就可以用解密密钥来打开得到的结果了。整个协议中,被代理方(云端)始终都无法看到任何和私密输入有关的有用信息。

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

几个问题

为什么实现任意次加法和乘法就能实现全同态加密了?
答:电路模型里,传输的是高电平和低电平,也就是0和1。这就和模2的域上进行操作类似,在Z2\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. 密钥生成算法KeyGenKeyGenKeyGen,将会生成其他FHE算法将要使用的密钥。
    用于生成公钥和私钥,同时还需要生成另外一个公钥EvkEvkEvk,该公钥用于密文计算,它的形式与使用的全同态加密算法直接相关。如,

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

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

  2. 加密算法EncEncEnc,可以加密用户的输入,输出密文。

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

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

三大属性

  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的定义与历史回顾(强推)
全同态加密知识体系整理(强推)
《全同态加密-从理论到实践》 陈智罡

全同态加密(FHE)体系概述(初学版)相关推荐

  1. 全同态加密(FHE):BV方案、密钥切换、模约化、自举

    目前,全同态加密FHE,仅仅在格上被构造出来. 编码 most significant bit encoding Encode: 输入1比特的消息 u u u,计算 b = < s , a &g ...

  2. 实测 Google 全同态加密FHE,效果如何?

    文 / 瑚琏 技术爱好者,广泛涉猎各领域机器学习技术,对不规范代码重度过敏.本篇首发于富数科技官方公号. Google 开源了首个通用全同态加密(FHE)的转译器(transpiler),可以将普通的 ...

  3. 全同态加密 (FHE) 框架

    同态加密密码系统是一种解密是态射的密码系统. Decrypt(a*b) = Decrypt(a) * Decrypt(b) 同态加密密码系统允许在不解密的情况下对密文进行操作.它确保了端到端的语义安全 ...

  4. 全同态加密知识体系整理

    文章由AdijeShen整理,供个人学习使用. 整理了到2022年为止,同态加密比较重要的知识和方法. 文章目录 引 基础知识 基于RLWE的同态加密方案(BGV,BFV,CKKS) 通用的格式 效率 ...

  5. 全同态加密(FHE)设计思路

    参考文献: Gentry C. Computing arbitrary functions of encrypted data[J]. Communications of the ACM, 2010, ...

  6. bfv同态加密_全同态加密BFV-(section 2-SHE)

    写在前面 如果第一次来到我的专栏,如果想从头学习全同态加密FHE,那么点击下面的链接吧,我在最开始的地方等你~安全六三:全同态加密1-(BFV section 1)​zhuanlan.zhihu.co ...

  7. OPPO 40万年薪招应届生,狂揽芯片人才;恶意差评小米新手机,一用户被判赔3万元;谷歌开源全同态加密通用转译器|极客头条...

    「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧. 整理 | 梦依丹 出品 | CSDN(ID:CSDNnews ...

  8. 为什么格上能够构造全同态加密-3

    ** 为什么格上能够构造全同态加密-3 ** 本文由陈智罡博士撰写. 格上加密方案是一种噪音加密方案,这种方案与直觉非常吻合. 例如,你给一个非专业人士解释格加密的本质,就是往消息里添加一些噪音作为扰 ...

  9. 为什么格上能够构造全同态加密-2

    ** 为什么格上能够构造全同态加密-2 ** 本文由陈智罡博士撰写. 前面(https://editor.csdn.net/md/?articleId=104844689)我们说了,通过"抽 ...

最新文章

  1. 多核处理器集成了神经处理单元
  2. 代码总是被嫌弃写的太烂?装上这个IDEA插件再试试!
  3. matlab鬼成像,一种基于光计算的可视化计算鬼成像系统及成像方法与流程
  4. OS / CPU是如何访问内存的?
  5. 收购Nervana,英特尔缘何看中AI市场
  6. mysql获取多张表中的数据_mysql – 从具有递归关系的两个表中获取数据
  7. android按键精灵 释放内存,类人猿按键精灵安卓内存基础教程
  8. 刘润《五分钟商学院》思维导图笔记 - 商业篇
  9. 上海交通大学计算机专业考研多少分进复试,2019考研:初试分数370+,有希望进上海交通大学么?...
  10. go mod 突破次元壁
  11. 出租司机微软上MBA课 精辟理论让其月入1万6
  12. AriaNg的Nginx 421错误解决
  13. 关于三方支付做的一个小总结,后期不断完善更新
  14. 交换机的初始化配置(思科模拟器)
  15. printf 函数使用 可变参数函数实现原理
  16. 53个全球免费学术资源数据库整理,查资料写论文必备【开学必备】
  17. Simulink简单模型
  18. Linux下十大命令行下载工具
  19. oracle之trunc函数
  20. 解决Spring Spring Data JPA 错误: Page 1 of 1 containing UNKNOWN instances

热门文章

  1. XenDesktop 的核心组件
  2. PhotoshopCS5无法使用扫描仪的故障
  3. 公钥,密钥原理学习(数学之美)
  4. java B2B2C Springcloud电子商城系统--------负载均衡(Load Balance)
  5. Mac用终端编写c语言,【新手提问】有知道用mac终端编c语言的网络编程的人吗?...
  6. 网易微专业python爬虫工程师_ai工程师 自然语言处理
  7. 摄像头能用计算机里不显示,Windows7“计算机”不显示已连接的摄像头图标怎么办?...
  8. 网络信号是数字信号还是模拟信号
  9. 如何区别软杜比和硬杜比呢?别问了,问就是干货
  10. 【机器学习开放项目】NBA统计数据分析