本文记录阅读此论文的笔记
摘要
(1)1996年,HPS三人提出一个格上的高效加密方案,叫做NTRUEncrypt,但是没有安全性证明;之后2011年,SS等人修改此方案,将其安全规约到标准格上的困难问题;2012年,LTV等人基于修改的方案,提出一个FHE方案。
(2)non-standard assumption:非标准假设,是什么意思?
(3)本片论文是去除了non-standard assumption,通过使用**技术,并且构建了一个新的FHE方案,基于标准格假设问题(比如,SVP,CVP等)和循环安全假设【circular security assumption】。
(4)scale-invariant:缩放比例不变?
(5)该方案不使用模切换【modulus switching】,且密文是一个环元素(在环上);另外给出一个实用的变体方案,其具有强假设,并给出推荐的参数和性能提升后的结果。
(6)最后,给出了一种优化方法,可以扩展密文大小,利用CRT技术。
介绍
(1)【On-the-fly multiparty compu- tation on the cloud via multikey fully homomorphic encryption-2012】提出一个多密钥的FHE方案,是基于【Making NTRU as secure as worst-case problems over ideal lattices-2011】--对【NTRU: A ring-based public key cryp- tosystem-1998】的安全性进行证明。但方案为了保证安全性,需要额外的假设(decisional small polynomial ratio (DSPR) )。
对应摘要中的(1)
(2)该方案去掉了这个额外的假设;原来的是基于理想格,该方案基于的是格上的标准问题;引入张量技术(tensoring technique)【Fully homomorphic encryption without modulus switching from clas- sical GapSVP】降低噪音
(3)该方案是scale-invariant,即可以不使用模交换技术;该方案中的密文是一个环元素,而一半基于(R)LWE的方案密文都是两个以上的环元素,这能降低密文大小;最后给出一种增加明文空间大小的技术,即通过使用CRT技术,将小的明文模数变为大的明文模数。
(4)参数变大,密文大小变大。
预备知识
环上的有界分布(B-bounded)
取自该分布中的元素是有界限的,即无穷范数是小于(B)的。
具体的分布:离散高斯分布(discrete Gaussian distribution)
(D_{Z,sigma }):均值为0,方差为(sigma),采样概率为(exp(-pi |x|^2 / {sigma }^2))。
通常在FHE中,噪音多项式需要采用该方式采样,选取的元素,值小且概率高。
通过拒绝采样法(rejecting samples),来保证该分布是有界的。
通常多项式的系数在环上,一个数(x)需要模(q),有两种表示:(xin (-q/2,q/2))或者(xin [.]_q);还有一种是(xin [0,q)),用(r_q(x))表示(x)模(q)。
该方案中,使用两种模表示。方案中的(q)是密文多项式的系数模数,还有一个确定明文消息空间的明文模数(t<q),满足:(q-r_t(q)=Delta*t),其中(Delta=left lfloor q/t right rfloor)
下面讲解了BitDecomp和PowersOfTwo两个技术以及其性质:
其中,(w)相当于是基,这里取(w=2)。
(1)BitDecomp
当(w=2)时,给出一个环上的元素(整数多项式,可以看成一个整数向量(多项式系数))(xin R),变为二进制表示的向量。
例如:(q=5),即(l_{w,q}=4),((1,2))变为(([1,0,0,0],[0,1,0,0]))
(2)PowersOfTwo
当(w=2)时,给出一个环上的元素(整数多项式,可以看成一个整数向量(多项式系数))(xin R),变为元素乘以(w)的倍数。
例如:(q=5),即(l_{w,q}=4),((1,2))变为(([1,2,4,3],[2,4,3,1]))
(3)性质
(<BitDecomp(x),PowersOfTwo(y)>=xy(mod q))
例如:(<([1,0,0,0],[0,1,0,0]),([1,2,4,3],[2,4,3,1])>=1*1+2*2(mod 5)=5)
将环上的元素扩展为多个,进行BitDecomp和PowersOfTwo计算,并且介绍了张量乘(tensor product)。
(1)BitDecomp
当(w=2)时,给出多个环上的元素(整数多项式,每一个可以看成一个整数向量(多项式系数))(xin R^l),变为二进制表示的向量。
例如:(q=5,l=2),即(l_{w,q}=4),(([1,2],[0,1]))变为(([1,0,0,0],[0,1,0,0],[0,0,0,0],[1,0,0,0]))
(2)PowersOfTwo
当(w=2)时,给出多个环上的元素(整数多项式,每个可以看成一个整数向量(多项式系数))(xin R^l),变为元素乘以(w)的倍数。
例如:(q=5,l=2),即(l_{w,q}=4),(([1,2],[0,1]))变为(([1,2,4,3],[2,4,3,1],[0,0,0,0],[1,2,4,3]))
(3)张量乘
((a_1,1_2)bigotimes (b_1,b_2)=(a_1*b,a_2*b)=(a_1*b_1,a_1*b_2,a_2*b_1,a_2*b_2))
例如:(([1,0,0,0,0,1,0,0],[0,0,0,0,1,0,0,0])bigotimes ([1,2,4,3,2,4,3,1],[0,0,0,0,1,2,4,3])=([1,0,0,0,0,4,0,0],[0,0,0,0,0,2,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,1,0,0,0]))
最后说到,在方案计算中,会出现有理数计算(小数),所以最后需要摄入操作化为整数,这里的舍入用的是“四舍五入”。
RLWE问题
RLWE问题来自【On ideal lattices and learning with errors over rings】。
这里给出的是D-RLWR问题,困难性可以“量子规约”到格理想上的SVP问题
DSPR问题
DSPR问题:区分(h)和一个随机采样值是难以区分的。
基础方案
这部分介绍一个公钥加密方案,基于Regev框架,是下面同态加密方案的基础。
密文模数(q),明文模数(tin (1,q)),密文空间为(R_q=Z_q[x]/Phi(x)),明文空间为(R_t=Z_t[x]/Phi(x)),密钥和误差取自不同的分布。([m]_t)表示m mod t。
正确性性:
如果满足以上定理,则可以正确解密。
(fc=(tf'+1)(q/t.m+e+hs)=(tf'+1)q/t.m+(tf'+1)(e+hs) (mod q)=q/t.m+(...)=Delta.m+v)
只要(v)的范数够小,就看可以恢复出明文,所以(v)也叫做密文(c)的内在噪音。
下面给出内在噪音(v)的具体范数范围:
所以能解密成功。
Leveled-FHE方案
下面基础上面的公钥加密方案,给出一个SWHE方案YASHE,包含同态计算以及分析其计算过程中密文噪音的上限:
可以看到,在乘法后需要进行密钥交换,降低密文维数,加法则不用,因为加法不会导致密文维数变大。
重点在于:计算密钥(gamma)是如何生成的?同态乘法计算后如何降低密文噪音和维数的?
同态加法
同态加法就是将两个密文直接相加,加完后的噪音小于两个密文的噪音之和+模操作产生的噪音(r_t(q)),其中(r_t(q)=q mod t)。这里给了相加密文的噪音上限。
这里需要知道:$$Delta t =left lfloor q/t right rfloor t=-r_t(q)(mod q)=-q (mod t) (mod q)to q(mod t)=q-left lfloor q/t right rfloor t$$
同态乘法
密文乘法分为两步:(1)直接将两密文相乘,获得一个中间密文(对应的明文是([m_1.m_2]_t)),它不能直接使用私钥解密。(2)将其转换为一个可以用私钥解密的新密文,在这里用到了重线性化技术(BV11)/密钥交换技术(BGV)进行密文转换。
噪音处理主要在该步骤。
第一步给出了如何计算中间密文(widetilde{c}_{mult}),并且分析噪音增长上限,这里可以看出将两个密文先进行PowerOfTwo操作,然后张量乘,维数扩张一倍,所以后面需要降维,同时这步骤也产生了噪音,所以也需要降噪。
第二步给出了密钥交换的过程,以及分析噪音增长的上界。
首先,需要求出用于密钥交换的计算密钥(evk),它其实可以看作是(f^{-1}P(D(f)bigotimes D(f)))在公钥(h)下的加密,当然可以用私钥(f)解密。这里的(evk)是公开的,所以这里需要做一个“循环安全假设(circular security assumption)”,即即使公开(evk),也不会影响方案的安全性。
另外可以看出,这里做密钥交换,也产生了一些噪音。这些噪音通过Decompt和PowerOfTwo技术控制在一定的范围内,增长缓慢。
正确性
这里给出在解密正确的前提下乘法次数的界限。方案的安全性基于DSPR问题,需要设置好参数。
安全性
为了证明方案是安全的,需要假设即使敌手知道了(evk),方案也可以保证是IND-CPA安全的。
在“循环安全假设”下,YASHE方案的IND-CPA安全性来自基于公钥加密方案的IND-CPA安全,而基于公钥加密方案的IND-CPA安全是基于RLWE困难问题。
要证明循环安全假设,需要方案设置的参数满足:
变为FHE
如何将Leveled-FHE变为FHE,目前唯一的方法还是Gentry提出的“自举”(bootstrapping)技术。
即方案能够同态的计算自己的解密电路,这里需要用公钥将私钥的每一个比特加密,类似于密钥交换中的计算密,这里需要一个“安全假设”,即加密私钥的每个比特不会影响方案的安全性!
这里将解密电路的复杂度降低为(O(log(log(q))+log(d))),具体是将缩放(scaling)和舍入(rounding)操作换成消耗更小的乘法和移位运算。最后的模2并不会增加计算深度。
YASHE的变体YASHE‘
不同之处是同态乘法,YASHE‘中乘法的中间密文只是一个简单的多项式,而YASHE中的中间密文是一个多项式向量,这就导致了计算密钥(evk)中只需包含(l_{w,q})个多项式,而不是(l_{w,q}^3)个多项式,所以密钥交换更加简单了。下面介绍简化过程和噪音分析。
在YASHE方案中,(widetilde{c}_{mult})相当于是([m_1.m_2]_t)在(D(f)bigotimes D(f))下加密的;而在YASHE‘方案中,(widetilde{c}_{mult})相当于是([m_1.m_2]_t)在(f^2)下加密的。
可以看出,在新方案中,乘法中没有使用Decompt和PowerOfTwo技术,仅在密钥交换中使用到。
同态乘法
这部分给出在乘法计算中,中间密文的噪音上限。
密钥交换
同样,这里的(evk)可以看作是私钥(f)在公钥(h)下的加密。另外需要额外的“循环安全假设”保证方案的安全性。
正确性
每一层的密文中的噪音大小是近似的,为了减少计算量,尽量使用更多的加法,使用更少的乘法。
这里给出密文的内在噪音的上限(V)、乘法深度(L),与方案其它参数的关系,需要满足该条件才能执行L次乘法运算,即 Leveled-FHE方案。
安全性
新方案的安全性依赖于RLWE问题、“循环安全假设”和DSPR问题,原方案可以根据根据参数设置而避免使用DSPR假设。
可以证明在RLWE问题和DSPR问题下,该方案是安全的,即方案的IND-CPA安全是基于RLWE假设和DSPR假设的。且需要满足于当 (evk)公开时,方案也是安全的。
这里给出一个更弱的DSPR假设(参数选取的分布不同,导致噪音上线不同)。
另外私钥一般取值很小,可以为每一个级提供一个公私钥对从而避免使用“循环安全假设”,此时每一层的(evk)和该层的公私钥有关,具体如下:
参数推荐
这里给出了需要事先确定的两个重要参数:
(1)密文模数(q)
一般在64bit~1024bit之间取值
(2)多项式的级数
(n=varphi (d))一般取2的次幂,这里给出(2^{11})和(2^{16})。
(3)下面给出推荐参数,两种情况:固定(q),求(n_{min}),然后给出最大的层数(L_{max});固定级数(n),求最大的(q_{max}),然后给出最大的层数(L_{max})
可以看出,随着参数的增大,支持计算的层数就变大,但计算量也随之变大。
(4)【Can homomorphic encryption be practical? 】中给出的实验结果
参数:(R=Z[X]/(X^{4096}+1),t=2^{10},q:130bit)
结果:加密:756ms,加法:4ms,乘法:1590ms,解密:57ms
(5)该方案的实验结果
代码不依赖于第三方库,基于C编写
开源库(其他人实现):https://github.com/iamtrask/PyYashe
参数:(q:127bit,w=2^{23}),其它参数一样
结果:加密:27ms(百万次循环),加法:0.024ms(7万次循环),乘法:31ms(9070万循环),解密:5ms(1410万循环)
(6)方案的实际乘法次数为(2^2~2^5),性能更好。
截断密文(Truncating)
在Bra12中提出scale-变体的LWE方案,即丢弃密文最低位(least significant bits ),基于该思想,方案给出两种优化方向:
(1)约减密文长度
(YASHE.Discard_w(c,i)):输入一个密文和要被阶段的个数(i),输出(c'=left lfloor w_{-i}c right rfloor),这里的(w)时基,一般取2。且(w^i.c')等于(c)的最低(i)位取0。
这里举例子:给出密文(c=7=(0 1 1 1)_w),(w=2)
当(i=2),(c'=1),正好对应(c)去掉后两位得到的((0 1)_w);且(w^i.c'=4),即((0 1 0 0)_w)
当(i=3),(c'=0),正好对应(c)去掉后两位得到的((0)_w);且(w^i.c'=0),即((0 0 0 0)_w)
如果(cf=Delta m+v(mod q)),则(w^ic'f=Delta m+v'(mod q))
通过截取密文,密文的长度变短,且不依赖于(q),而是依赖于(q)和噪音的比值。当用(D_{w,q}(c))表示密文(c)时,大概需要(log_w(q/B))的基,且最低(log_w(B))位为0。
如果(c)在(f^2)解密,则在密钥交换时,我们仅需要(evk)中的前(log_w(q/B))位的信息进行切换。
(2)约减计算密钥中元素个数
每次乘法,都需要减少(evk)中的元素数量。
通过CRT编码
上面给出了推荐的参数和输入边界,以此来保证方案的正确性和安全性。
当需要更多的计算时,在不增加参数的情况下,使用该技术可以增大计算量。思想就是,利用中国剩余定理将多个输入编码为一个更大数,使得计算精度更好或者输入的数值更大。其中使用的参数一直不变,只需要密文个数变大。
通过CRT将每个输入编码为都是模(t_i)的集合元素,来进行边界为(B)的整数计算;然后对集合进行计算,相当于对这些整数不涉及模约减(modular reductions)的运算,只要(t_i)的乘积不超过(B)。集合中的每个整数都相当于对应模(t_i)的明文(plain text)被加密的密文,并且能并行计算这些密文并返回结果;在解密时,利用CRT将输出或恢复为实际的整数。
此时的技术不同于【Batch fully homomorphic encryption over the integers】【Fully homomorphic simd operations】中的技术,这里没有利用CRT将信息打包到一个密文(single ciphertext)中的不同明文槽中(plain text slots)而是简单加密了一个密文中每一个CRT编码的部分,对应于模(t_i)的明文(plain text )。密文现在由多个环元素组成,但是可以并行计算,这可以使我们使用相同的参数处理双位(integers of double bit length)长的整数,仅使用不同的值(t_0,t_1)扩展到两个密文。
没看太懂。说的太抽象。没有具体例子。