论文笔记:全同态加密研究进展-白利芳等
同态加密–概念
同态性
给定2个代数结构间的映射,\(\delta: A \to B\),满足\(\delta(x *_A y)=\delta(x) *_B \delta(y)\),这里这种映射\(\delta\)就可以看作是同态加密中的“加密”操作,即明文进行\(*_A\)计算,加密后相当于密文进行\(*_B\)计算,所以可以说:代数结构\(<A,*_A>\)和\(<B,*_B>\)在该映射(\(\delta\))下相关结构(明对明文操作加密后对应于密文操作)保持不变。
同态可以理解为:2个代数结构(如群、环、域、向量空间)之间的保持结构不变的映射,直观一点可以用交换图表示。
如下图1,“先右再下”和“先下再右”这两种途径都可以得到\(B\),即对任意的\(x,y\in A\),“先\(*_A\)运算再\(\delta\)映射”与“先\(\delta\)映射再\(*_B\)运算”的结果相同,即满足交换性。
例如,当\(\delta\)为\(x \to e^x\)时,交换图如图2所示,即\(A\)为\(\mathbb{R}\)(实数集合),\(B\)为\(\mathbb{R^+}\)(大于0的实数集合),\(*_A\)为\(+\),\(*_B\)为\(*\)。
若以”同态加密“的视角看待,则\(A\)表示明文,\(b\)表示密文,\(\delta\)表示加密映射,整体结构解释为:明文之间进行\(+\)操作后,加密等同于 密文之间进行\(*\)操作。
这也就解释了同态加密中,明文间做加法,加密后不一定等于密文间做加法,因为\(*_A\)不一定等于\(*_B\)。如Paillier的加法同态性:\(E(A)*E(B)=E(A+B)\)。
同态加密
同态加密是指满足同态性质的加密算法,即该加密算法的密文空间和明文空间之间的映射(解密函数)对特定运算满足同态性(一般我们都说的时加密函数)。所以同态加密支持对密文空间进行特定功能的运算(如函数\(f()\)),且解密后的结果与直接对明文空间进行对应运算(不一定相同)的结果相同,若\(f()\)只能由加法构成,即只支持加法运算,称为加法同态性,乘法同态性也如此。
此处的加法和乘法不等同于加减乘除中的“加减”法,而是一般性表达,如布尔函数中的“与(AND)”和”异或(XOR)“分别对应此处的乘法和加法。
事实上,任意逻辑运算均可通过AND和XOR运算组合表达,就如同任意算法运算均可通过加法和乘法组合表达。
分类
- 部分同态加密(PHE)
仅支持加法或乘法运算的加密方案成为部分同态加密。
- 近似同态加密(SHE)
若运算\(f()\)由加法和乘法构成,但支持有限次运算的加密方案,成为近似同态加密。
- 全同态加密(FHE)
同时满足加法同态和乘法同态,且支持在密文域上做任意运算(不限次数,任意运算都可以用加法和乘法构造)的加密算法时全同态加密。
- 层次同态加密(Leveled-FHE)
若支持一定复杂度(用电路形式表示时为电路深度的大小)范围内(即电路深度不应该超过某个值\(L\))的任意运算(由加法和乘法任意构成)的加密方案称为层次全同态加密。
现大多是将SHE归为Leveled-FHE。
特性
- 紧凑性
对于任意的安全参数$\lambda \(,若存在一个多项式P,使得解密算法能够用一个规模至多是\)P \lambda\(的电路\)D$来表示,则称该方案是紧凑的。
若方案是紧凑的,则方案的解密电路是独立于\(t\)(参与同态计算的密文个数)和\(C\)(计算电路)。
- 安全性
若敌手无法区分0和1的密文,则方案是不可区分选择明文攻击安全(IND-CPA)的。
构造思路
同态加密方案构造首要考虑:同态性和安全性两点。
【Homomorphic Encryption: From Private-Key to Public-Key】中给出一种通用方法,可将明文空间为0,1的任意满足语义安全的私钥同态加密方案(对称)转换为满足语义安全的公钥加密方案。
全同态加密方案的构造重点在于实现密文域上任意次数的加法和乘法同态运算,一般是先构造SHE方案,随着密文计算次数越多,噪音越大,直到超过“临界”值后会解密失败,因此也可叫做有限次(层次)同态加密。然后将SHE方案转换为FHE方案是关键,目前唯一的方式还是”自举“。
自举
自举就是同态的执行解密电路,即Eval函数可运行方案自身的解密电流,如下图,将密文刷新(”解密“)为一个噪音更低的”新鲜“密文,以此继续执行同态计算,但因为同态的执行解密电路也是在密文域下,也会产生噪音,所以要求解密电路的深度要小于起初SHE方案所允许的密文计算深度。
当解密电路的深度不小于方案所允许的密文计算深度时,就需要降低其深度,Gentry09中给出了”压缩(Squashing)“技术实现,代价是基于一个(未证明的)安全性假设-稀疏子集和问题(SSSP)。但目前同态方案已能够运行自身的解密电路,如BGV12、Bra12等。
同态解密
自举的关键是同态解密,即在密文空间下执行解密函数,即用加密的私钥去解密加密后的密文,输出一个噪音更小的”新鲜“密文。下面为Gentry09的同态解密思路:
明文空间为0,1,即明文是单比特,给定两个不同的公私钥对\((pk_1,sk_1)\)和\((pk_2,sk_2)\)。
- 用户加密明文消息\(m\),并将密文\(c=Enc_{pk_1}(m)\)发给服务器。
- 用户用\(pk_2\)对\(sk_1\)进行逐比特加密,得到密文序列\(\overline{sk_1}=Enc(pk_2,sk_1)\),并发送服务器。
- 服务器用\(pk_2\)对密文\(c\)进行逐比特加密,得到密文序列\(\overline{c}=Enc_{pk_2}(c)\)(双重加密的密文)。
- 服务器用\(\overline{sk_1}\)同态解密双重加密的密文,如下图,即(对密文\(\overline{c}\)执行解密计算,相当于对应明文\(c\)执行解密计算后,再加密):\(c*=Eval(Dec,pk_2,\overline{c},\overline{sk_1})=Enc_{pk_2}(Dec_{sk_1}(c))=Enc_{pk_2}(m)\)。
同态加密中私钥被加密后作为公共参数给予公开,并作为Eval函数的输入,因此被称为”计算公钥“,一般被叫做Eval-key。
全同态加密方案
当前FHE方案基于的困难假设有两种:
(1)基于格上的困难问题,如LWE、RLWE等。
(2)整数上的基于近似最大公约数(AGCD)困难问题,如regev方案。
下面是经典FHE方案的分类和继承关系(框内为基于格上困难问题的方案):
不完全FHE
把只满足加法同态性或乘法同态性,以及SHE方案统称为不完全FHE,下图是一些统计:
- 疑问:
- 当前的HE方案大多是公钥密码方案,那安全的对称加密方案研究如何?
- Paillier为何只能进行1次乘法运算,也是有噪音?
基于理想格的FHE(第1代)
基于理想格的FHE,”理想格“只是一种结构,不是困难问题。Gentry09的构造过程:
- 先基于理想格构造一个SHE,安全性基于固定环上的理想格的CVP问题。
- 通过压缩(Squashing)解密电路,来降低解密电路的计算深度,使其能够自举,安全性依赖于SSSP假设。
- 通过同态解密实现自举,进而实现全同态(”无限制“的计算)。
Gentry09及对其诸多改进版等,即第一代FHE的不足:
- 构造FHE方案较为复杂,不易理解。
- 噪音增长速度和密文膨胀速度较快,且自举性能太差。
- 方案可以全同态,全靠自举实现,自举有全靠压缩解密算路实现,额外的压缩解密电路会降低方案性能,且依赖的SSSP假设未经证实安全性。
基于(R)LWE的FHE(第2代)
关键发展节点:
- 2011年,提出BV11a:SHE方案是基于LPR10提出的公公钥加密方案实现,密钥生成时无需生成格基,安全性量子规约到理想格上的最坏情形问题,方案后续的解密电路压缩和自举仍然沿用Gentry09的方法。
- 2011年,提出BV11b:SHE方案采用重现性化(relinearization)技术,基于regev05构造,安全性规约到任意格上的SVP问题,不再采用Gentry09中的解密电路方法,提出一种新的维数-模数约减(dimension-modulus reduction)方法使方案可自举,这样就无需引入额外的安全假设(SSSP),以及提出一种模交换(modulus switching)技术来控制密文噪音的膨胀,且降噪无需使用第1代方案中的“计算公钥”。
- 2012年,提出BGV12:方案的参数大小与同态运算电路的深度而非阶数(degree)有关,提出密钥交换(key switching)技术控制密文维数膨胀,并证实BV11b中提出的模交换技术可在不借助自举程序的情况下实现密文降噪,使得LFHE方案的构造无需依赖Gentry09的自举程序。
- BGV12方案中的密钥交换需借助两个子算法:比特分解算法(BitDecomp)和2的幂次算法(Powerof 2)实现。
- 2012年,提出Bra12:利用张量乘积(scale-invariant)技术构造一个标度不变的FHE方案,无需复杂的模交换技术即可使得密文噪声随同态计算呈线性增长而非此前方案的指数级增长,安全性基于GapSVP问题。
- 2012年,提出BFV12:对Bra12进行优化,将其推广到RLWE问题假设,确定SHE方案应能处理的最小电路深度,确保自举过程结束后还能处理1次乘法运算,从而实现全同态。还提出2个更优的重现性化版本使得密钥更小运算速度更快。
- SV11首次提出基于RLWE的FHE方案且支持SIMD操作。
- GHS12采用SV11的密文封装技术实现基于BGV的方案的SIMD操作,即可通过将多明文比特消息封装在每个密文的多个槽(slot)中进行批处理,利用自同构性质对各个槽进行置换,如此各个槽中的数据可以互相于是暖。
第2代相较第1代的改进之处:
- SHE方案构造基于LWE问题假设,不直接依赖于格,但安全性可量子归约到任意格上最坏情形困难问题上。
- 实现自举无需引入额外安全性假设,即无需压缩解密电路。
- 可不依赖自举获得LFHE方案。
- 可以处理封装的密文而不只是一个明文比特的密文(支持SIMD操作)。
局限性:
- 增加了存储开销。密钥交换时密钥尺寸膨胀。
- 安全假设强度过大。
- 方案若想支持任意次同台计算,仍需借助自举技术。
基于近似特征向量的FHE(第3代)
2013年,GSW方案出现,基于近似特征向量的FHE,首次实现了基于身份的FHE和基于属性的FHE。其中同态运算为简单的矩阵加法和乘法运算,(因乘法运算不会导致维度膨胀),所以解决了密文维数膨胀的问题,且通过对噪声项中的高范数矩阵分解为低范数二进制比特矩阵。有效控制噪声增长,但实现全同态仍需自举程序。
后续都是针对GSW方案进行优化:
- 2014年,DM14方案将自举时间降到1s以下。
- 2016年,GINX16方案将自举时间更是降到0.1s以下。
- AP自举和GINX自举成为第3代FHE方案的主流自举方法:
- AP自举:支持任意密钥分发。
- GINX自举:需要更小的同态计算密钥。
第3代相较第1代的改进之处:
- 同态运算更加高效(矩阵加法和乘法),不会引起密文维度膨胀。
- 密文噪音控制更加简洁高效,无需借助模交换技术控制噪音。
- 因为无需密钥交换,所以摆脱了对计算公钥的依赖。
- 自举性能和构造简洁性有极大提升。
局限性:
- 不支持SIMD操作。
- 自举依赖的安全假设强度有所弱化。
- 若要实现全同态,仍需要自举技术。
基于浮点数运算的FHE(第4代)
2017年,CKKS方案,通过重缩放(rescaling)技术,在保证计算精度的同时降低密文模数大小,并使用批处理技术提高方案计算效率,但该方案是SHE方案。
后续优化都是基于CKKS方案开展,比较经典的是RNS-CKKS方案,实现自举,进而达到FHE。
CKKS的构造是基于BGV方案,只不过是针对浮点数运算。关于CKKS的优化点:自举程序的性能和精确度方面,以及降低计算和通信开销方面。
目前最新的自举性能表现为每比特微妙级,较第1代的每比特千秒级,性能提升了9个数量级。
其他FHE方案
基于整数的
2010年,DGHV10方案,用整数模运算代替了格上复杂的矩阵和向量运算,方案完全遵循Gentry09思路,SHE方案依赖于AGCD困难假设。
后续的都是对DGHV的改造优化。
基于NTRU的
NTRU加密算法密钥生成容易,加密和解密速度比RSA、ECC快,安全性依赖于格上SVP问题,因此也被用来构造基于NTRU的FHE。
总结
FHE的安全性:
目前大多FHE方案依赖于格上的困难问题,由于FHE具备密文上同态运算的属性,就意味着延展性,因此FHE体制不可能抵抗适应性选择密文攻击(IND-CCA2安全)。
目前大多FHE方案只给出了抵抗适应性选择明文攻击(IND-CPA安全)。
全同态加密应用进展
算法库
标准
- 2017年,首个专注于 FHE 标准化的自发性组织—— 同态加密标准化开放联盟成立,并发布了全同态加密安全标准、API 标准、应用标准 3 份白皮书。
- FHE 标准草案于2018 年3月发布,并于11月更新,目前最新版本为1.1,即11月的更新版本。
应用场景
技术赋能应用
- 云计算
- 大数据
- 人工智能
- 区块链
行业场景应用
- 金融-信贷风控
- 互联网-私有信息处理
- 医疗-基因数据分析
- 能源-电网数据分析
- 政府-电子选举:2019 年,微软于 Build 开发者大会上发布了1款基于同态加密的开源电票开发包[Electionguard](https://github.com/ microsoft/electionguard)。
未来研究方向
- 性能优化
- 提升自举效率
- 减缓密文噪音膨胀的速度以实现更低频度的自举程序调用
- 每次自举程序调用可以“支撑”更深电路的同态运算
- 支持多比特处理
- 硬件加速
- 提升自举效率
- 安全性证明:FHE体制达不到IND-CCA2安全,目前方案大多是IND-CPA安全。
- FHE方案切换:一个方案的密文切换到另一个方案的密文
- 新的构造思路