课程笔记:全同态加密的理论与构造-下篇:学习
1.RSA2.ElGamal算法3.基于全同态加密的隐匿查询-洪澄4.同态加密技术及其在FL/MPC中的应用-洪澄5.Paillier半同态加密:原理、高效实现方法和应用6.Paillier算法7.CKKS Part5: CKKS的重缩放 8.CKKS Part4: CKKS的乘法和重线性化9.CKKS Part3: CKKS的加密和解密10.CKKS Part2: CKKS的编码和解码11.CKKS Part1:普通编码和解码12.MAC上安装HEAAN库13.DGHV同态库14.同态加密及其在隐私计算中应用(李增鹏)15.全同态加密研究:学习16.课程笔记:全同态加密理论与基础17.全同态加密-丁津泰:学习
18.课程笔记:全同态加密的理论与构造-下篇:学习
19.课程笔记:全同态加密的理论与构造-上篇:学习20.阈值同态加密在隐私计算中的应用:解读21.Lifted ElGamal 门限加密算法22.Tenseal库23.Packed Ciphertexts in LWE-based Homomorphic Encryption:解读24.一种高效的同态加密方案及其应用-解读25.Homomorphic Evaluation of the AES Circuit:解读26.SIMD编码27.SEAL库 - 安装和介绍28.HEAAN新版学习29.HEAAN库学习30.CKKS加密方案31.同态密码学原理及算法-笔记32.文章学习:基于AVX-512指令集的同态加密算法中大整数运算性能优化与突破33.全同态加密是否完美?34.半同态计算芯片35.并行同态加密算法及应用研究-202036.基于同态加密的生物认证研究-201537.论文笔记:全同态加密研究进展-白利芳等本文紧接上文课程笔记:全同态加密的理论与构造-上篇:学习,继续学习“课程笔记:全同态加密的理论与构造-下篇”,并做相应笔记和补充。
第一代FHE#
- 第一代,主要就是Gentry09和DGHV10方案。
- 安全性基于的是近似GCD数学问题,这里的
很像LWE中的噪音。
方案#
- 基于AGCD问题,
作为私钥。 - 密文后两项都可以看做是“噪音项”,消去(模p、模2)即解密。
- 加密时,
是一个 向量 - 解密正确性保证:
。
- 计算时,
,加法的噪音是累加的,乘法的噪音增长过大,如果超过 ,则解密出错。 - 假设新鲜密文的噪音上限为
,经过 乘法,密文的噪音上限变为 ,需要解密正确,需要满足噪音小于 ,得到了乘法深度的范围
第二代FHE#
- 第一代比较复杂的是Gntry09,基于理想格上计算,后面又给出一个简单的版本,基于整数上计算。
- 第二代基于LWE问题设计,首次在Regev中给出LWE问题并设计出对应的加密方案,后又在BV11中给出具体的全同态加密方案(使用重线性化),后面在BGV12和BGV12中又将方案完善,提升效率,避免使用昂贵的自举技术,使用密钥交换和模交换技术实现Leveled-FHE方案。
- 噪音分布
,噪音选取 。 - LWE分布
: 是一个 向量, 是一个随机数, 是一个 的向量。解LWE问题就是去解带噪音项的线性方程组 。 应该是公开的参数。
- SLWE问题就是解线性方程组问题(
个方程, 未知数,记作 ),即给出 ,求 ,其中 是一个 向量, 是一个 向量, 是一个 的矩阵。 - DLWE问题就是区分计算出
和随机取的 ,即输出的是(1/0)。 - 两个版本的LWE问题是可以互相规约的,即可以能求解出一个问题,就能求解出另外一个问题。
BGV方案#
- BGV是在整数域上计算的方案,之后引入编码计算,将其放在多项式上计算。
- 密钥生成:满足
,其中 。 - 加密:
,其中 ; ,其中 。 - 解密:
,即 是一个数,另外 是噪音项,需要约去或者消去。
- 加法:噪音值累加
- 乘法:相乘后,密文维数变大(对应的密钥规模变大),BGV中使用密钥交换(Key Switching)降低密文维数。
- 密钥交换是在明文不变的情况下,将密文1对应的密钥1转换为密文2对应的密钥2。最重要的是:将密钥加密作为计算密钥(交换密钥)
,应该在密钥生成时计算,作为“公钥”的一部分。 - 密钥交换可以降维u,但会增加噪音,这里使用的是Gadget矩阵,使得增加的噪音变小。
- 因为引入的
很大,所以 很小,也就使得最后增加的噪音很小。
- 上面解决了降维问题,乘法运算还引起噪音增加,BGV中使用模交换用于降噪,可以将密文的噪音规模从
降低为 。 - 模交换:明文不变,将密文
对应的模数 转换为密文 对应的模数为 ( 远小于 )。因为密文的模数变小,所以密文大小也变小,具体为: 且满足 。 - 通过模交换,得到
,其中 , 很小(因为LWE问题中 很小)。 - 通过模交换,密文变小
倍,对应的噪音也变小\frac{p}{q}倍,可以通过合理设置 (得足够大,且远大于 ),可以实现噪音的线性增长。 - 所以做密文(噪音上限
)乘法后(噪音上限 ),需要依次降维(噪音上限 )、降噪(噪音上限 )。
BFV方案#
- 密钥生成:与BGV不同的是,这里使用的是
,(原因?) - 加密:
计算与BGV相同, 计算与BGV不同是 。 - 解密:与BGV不同,且这里要求
才能正确解密。
- 加法:噪音累加。
- 乘法时和BGV一样同样使用交换密钥,对密钥重加密,并使用密钥交换来降维(文中给出的重现线性化)。
- 分析:KSK就是在计算交换密钥,KS就是使用计算密钥和相乘密文做密钥交换。
第三代FHE#
- 第三代(密文形式是矩阵)不同于第二代(密文形式是向量/多项式),所以就没有了密文相乘维数变大的烦恼,所以只需要处理噪音就行,总的来说就是理论上更简单,但性能没有第二代的BGV和BFV好,第三代典型的方案是GSW,使用简单的比特转换等技术实现Leveled-FHE方案,后续的TFHE,FHEW等都是基于GSW优化而来。
- BFV和BGV是基于RLWE,GSW是基于LWE的。
- 密钥生成:这里公钥为
,且满足 。 - 加密:
是个 矩阵,得到的密文是一个矩阵 - GSW主要是利用“近似特征向量”是为框架设计的,解密时
,将其 去掉后,就近似得到了特征向量和特征值,即 。【所以关键是如何去掉这两项!】
- 加法:因为
,所以可以约去,两密文相加噪音也是累加的。 - 乘法:因为
是单位矩阵,所以 ,即 ,其中 是噪音项。 - 上面的方案给出了一个简化版的方案,并未做相应的优化,比如如何去掉
,参考原文,使用BitDecompt等技术。
面向应用的全同态算法#
- BGV和BFV都是在整数域上计算的FHE方案,对于实用性能来说,更加推荐BFV,相比于BGV更加简化。
- 对于浮点数、复数域上的计算就首推CKKS方案,但因其是基于RLWE问题,所以实质上也是在整数上计算,所以需要编码,即将浮点数、复数编码为整数,再进行后续计算。
是一个实数(浮点数),将其编码为整数,需要乘上扩张因子 ,再进行取整。- 对编码后数计算乘法,扩张因子变为
,所以需要消去一个,即在CKKS中的rescale操作。
CKKS方案#
- 从分类上讲,CKKS也属于第二代FHE。
- 密钥生成:这里采用的是多个模数,表明该方案是一个Leveled-FHE;也可以看出,基于RLWE的方案,密钥生成大都是类似。
- 加密与BGV、BFV相似。
- 解密后需要解码。
- 密文乘法会导致维数扩张、扩张因子和噪音变大,所以需要使用重线性化降维,使用重缩放降低扩张因子和噪音。
TFHE方案#
- TFHE基于GSW方案,属于第三代FHE,是目前最快的全同态加密方案(真正FHE)。
- 基于的是RLWE问题,也是分为搜索型和判定型。
- 加密:
,其中 是明文, 是密文, 是密钥。 - 该方案暂时没有看过,后续补充~
开源库#
- 这是我见过的最全的总结,(点赞~)
研究方向#
- 无循环安全假设实现FHE。
- 除自举外实现FHE。
- 除基于LWE构造的FHE,比如LPN。
- 扩大GSW系列方案的明文空间,比如FHEW和TFHE等。
- 在FHEW和TFHE含自举的方案中实现打包。
- 更高效的自举。
- 在保证精度的情况下,对于CKKS方案实现高效的自举。
- 实现混合FHE,比如CKKS-FHEW、TFHE等。
- 硬件加速,比如使用GPU、FPGA等。
参考#
- 【1】Gentry09
- 【2】DGHV10
- 【3】BV11
- 【4】BGV12
- 【5】Bra12
- 【7】CKKS17
- 【8】Regev10
- 【9】FHEW15
- 【10】TFHE16
- 【BFV12】:Somewhat Practical Fully Homomorphic Encryption
作者:Hang Shao
出处:https://www.cnblogs.com/pam-sh/p/16614457.html
版权:本作品采用「知识共享」许可协议进行许可。
声明:欢迎交流! 原文链接 ,如有问题,可邮件(mir_soh@163.com)咨询.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
2021-08-26 数字签名