全同态加密(FHE,Fully Homomorphic Encryption),由Rivest等人于1978年首次提出,可用于对已加密数据做函数运算,仅在2009年由Gentry首次实现突破性解决。经过近十年来的研究,开始出现实用解决方案,并正推进标准化。
本指引是针对实操者的,其:
全同态加密(FHE)长期以来一直被认为是密码学的圣杯。这个概念是在70年代末设想出来的[RAD78],但30年后才首次实现[Gen09,Gen10]。如今,公共和私有领域都在接受这种新的安全模式,并积极致力于使FHE更实用、更易于使用。在[Hal17]中可以找到一个关于FHE的优秀描述。
数据加密可保护敏感数据存储或传输。然而,标准加密技术需要对数据进行解密以进行处理。而FHE能够直接对加密数据进行计算。FHE的名字来源于同态的数学概念:一个集合的元素被转换为第二个集合的元元素,同时保持两个集合的元素之间的关系。应用于加密,其意味着对明文(即未加密数据)或密文(即已加密数据)进行操作会产生等效的结果——在对明文进行操作时是透明的,在对密文进行操作时则是加密的。如,已知分别 c 1 , c ) 2 c_1,c)2 c1,c)2分别为对应明文 x 1 x_1 x1和 x 2 x_2 x2的任意两个密文,存在public运算 ⊞ \boxplus ⊞,使得 c 3 = c 1 ⊞ c 2 c_3=c_1 \boxplus c_2 c3=c1⊞c2是 x 3 = x 1 + x 2 x_3=x_1+x_2 x3=x1+x2的加密。
虽然很容易找到能对密文做加法或乘法运算的密码学系统(如,[RAD78,ElG85,Pai99]),但同时支持密文加法和乘法运算的密码学系统更难找到。同时支持密文加法和乘法运算的加密方案被称为全同态,因为任意程序都可以表示为由加法和乘法组成的电路。更一般地说,FHE方案是一种能够在加密数据上评估任意程序的加密方案。
FHE方案的首个实现是Gentry[Gen09,Gen10]。随后的实现包括以下方案:BFV[Bra12,FV12],GSW[GSW13],BGV[BGV12,BGV14],FHEW[DM15],CKKS[CKS17]和TFHE[CGGI16,CGGI20]。
大多数全同态加密依赖于hard lattice problems。为此,生成的密文中必须包含一定级别的noise,以确保加密的安全性。
问题在于:
一旦噪声低于特定阈值,该密文可被解密。当若该噪声增长过多,其超过了数据自身,将使得无法解密。为避免出现无法解密的情况,可对密文应用一种特殊的降噪操作——称为bootstrapping,该概念在[Gen09]中提出,从而有效地将噪声重置到标称水平。
TFHE加密方案最初是为布尔电路设计的,但它可扩展到支持布尔以外的输入格式,如整数[CJL+20]。值得注意的是,它的自举速度相对较快。此外,在降低噪声的同时,TFHE中的自举之类可被编程为对某单变量函数的免费评估。这被称为可编程自举(PBS,Programmable BootStrapping)。PBS是一种对非线性函数(如神经网络中的activation激活函数)进行同态评估的强大技术[CIP21]。(值得注意的是,常规自举对应于具有identity函数的可编程自举。)
PBS运算不仅能够对单变量函数进行同态评估,而且可以用于计算多变量函数。如, max \max max函数 max ( x , y ) \max(x,y) max(x,y)可重写为 max ( x , y ) = y + max ( 0 , x − y ) \max(x,y)=y+\max(0,x−y) max(x,y)=y+max(0,x−y)。更一般地说,Kolmogorov的superposition定理[Kol57]指出,任何多变量函数都可表示为单变量函数的线性组合。这产生了functional电路的计算范式,其中加密方案可以是全同态的,只要它实现同态加法和单变量函数。单变量函数可使用可编程自举进行同态评估,而密文的加法则以分级的方式进行评估。
神经网络为functional circuit的特殊应用场景:
众所周知,在FHE中计算activation激活函数是困难的,因为与使用可编程自举相比,使用简单的加法和乘法不能精确地表示非线性。
可编程自举和原始TFHE功能可作为Concrete[CJL+20]的一部分提供。Concrete是一个开源FHE框架。如,针对深度为20、50、100的神经网络(分别称为NN-20、NN-50和NN-100),进行了一系列数值实验来评估MNIST数据集[LCB98]的性能;参见[CIP21]。这些网络都包括具有激活函数的稠密层和卷积层;每个隐藏层至少有92个active活动神经元。实验在两种不同类型的机器上进行:一台2.6 GHz 6核Intel®Core™i7处理器的个人电脑,和具有96个vCPU、托管在AWS的3.00 GHz Intel®Xeon®Platinum 8275CL处理器。这两台机器分别称为PC和AWS。选择密码学参数以满足标准的128位安全级别。
具体运行时长见上表。为参考,还包括了未加密推理的时间。重要的是要注意,对应于独立运行的单个推理的评估的时间;特别是,这些时间不会在一批推理中摊销。AWS实现利用了96个vCPU;特别地,隐藏层中的神经元是并行处理的。
TFHE [CGGI20] 中的‘T’ 是指real torus T = R / Z \mathbb{T}=\mathbb{R}/\mathbb{Z} T=R/Z。总体说来, T \mathbb{T} T为 [ 0 , 1 ) [0,1) [0,1)内实数对 1 1 1取模组成的集合。
T \mathbb{T} T内任意2个元素都可求和模 1 1 1, ( T , + ) (\mathbb{T},+) (T,+) 构成一个abelian group。但需注意的是, T \mathbb{T} T并不是ring,因并未定义对torus元素的内部乘法 × \times ×。
Torus T \mathbb{T} T并不是ring。
若 T \mathbb{T} T为ring,则有 ( a + b ) × c = a × c + b × c (a+b)\times c=a\times c+b\times c (a+b)×c=a×c+b×c和 a × ( b + c ) = a × b + a × c a\times(b+c)=a\times b+a\times c a×(b+c)=a×b+a×c。其中 × \times ×和 + + +均定义于该torus(即, × \times ×和 + + +分别表示基于实数模 1 1 1的乘法和加法。)
如,以 a = 2 5 , b = 4 5 , c = 1 3 a=\frac{2}{5},b=\frac{4}{5},c=\frac{1}{3} a=52,b=54,c=31为例,基于 T \mathbb{T} T,有 ( a + b ) × c = 1 5 × 1 3 = 1 15 (a+b)\times c=\frac{1}{5}\times \frac{1}{3}=\frac{1}{15} (a+b)×c=51×31=151和 a × c + b × c = 2 15 + 4 15 = 6 15 a\times c+b\times c=\frac{2}{15}+\frac{4}{15}=\frac{6}{15} a×c+b×c=152+154=156,二者是矛盾的。
该问题源自, T \mathbb{T} T中的 0 0 0和 1 1 1是等价元素。
不过,整数与torus元素间的external product ⋅ \cdot ⋅ 则定义良好。令 k ∈ Z , t ∈ T k\in \mathbb{Z},t\in\mathbb{T} k∈Z,t∈T,则:
从而,对于 0 , 1 ∈ Z 和 t ∈ T 0,1\in\mathbb{Z}和t\in\mathbb{T} 0,1∈Z和t∈T,有 0 ⋅ t = 0 ∈ T 0\cdot t=0\in\mathbb{T} 0⋅t=0∈T和 1 ⋅ t = t ∈ T 1\cdot t=t\in\mathbb{T} 1⋅t=t∈T。数学上, T \mathbb{T} T具有 Z \mathbb{Z} Z-module结构:
如对于 k = 2 , l = 3 , a = 2 5 , b = 4 5 k=2,l=3,a=\frac{2}{5},b=\frac{4}{5} k=2,l=3,a=52,b=54,有:
Torus多项式:
如,若 M = 4 M=4 M=4,则有 N = 2 N=2 N=2,从而有 Φ ( X ) = X 2 + 1 \Phi(X)=X^2+1 Φ(X)=X2+1,进而有 T 2 [ X ] = T [ X ] / ( X 2 + 1 ) = { p ( X ) = { p 1 X + p 0 ∣ p 0 , p 1 ∈ T } \mathbb{T}_2[X]=\mathbb{T}[X]/(X^2+1)=\{\mathfrak{p}(X)=\{\mathfrak{p}_1X+\mathfrak{p}_0|\mathfrak{p}_0,\mathfrak{p}_1\in\mathbb{T}\} T2[X]=T[X]/(X2+1)={p(X)={p1X+p0∣p0,p1∈T}。
如取 p ( X ) = 2 5 X + 1 3 , q ( X ) = 4 5 X + 1 2 和 r ( X ) = 2 X + 7 \mathfrak{p}(X)=\frac{2}{5}X+\frac{1}{3},\mathfrak{q}(X)=\frac{4}{5}X+\frac{1}{2}和\mathfrak{r}(X)=2X+7 p(X)=52X+31,q(X)=54X+21和r(X)=2X+7,则有:
令 B B B为 ≥ 2 \geq 2 ≥2的整数。任意的 t ∈ T t\in \mathbb{T} t∈T torus元素,可表示为radix- B B B digits组成的无限序列 ( t 1 , t 2 , ⋯ ) B (t_1,t_2,\cdots)_B (t1,t2,⋯)B,其中 t j ∈ { 0 , ⋯ , B − 1 } t_j\in\{0,\cdots,B-1\} tj∈{0,⋯,B−1},对应有 t = ∑ j = 1 ∞ t j ⋅ B − j t=\sum_{j=1}^{\infty}t_j\cdot B^{-j} t=∑j=1∞tj⋅B−j。实际上,torus元素不会以无限多个digits来表示。会将元素膨胀到某有限精度。借助fixed-point方法,对于某 w ≥ 1 w\geq 1 w≥1,torus元素 t t t可写成:
t = ∑ j = 1 w t j ⋅ B − j t=\sum_{j=1}^{w}t_j\cdot B^{-j} t=∑j=1wtj⋅B−j,其中 t j ∈ { 0 , ⋯ , B − 1 } t_j\in\{0,\cdots,B-1\} tj∈{0,⋯,B−1}。
该表示可限定该torus到子集 B − w Z / Z ⊂ T B^{-w}\mathbb{Z}/\mathbb{Z}\subset \mathbb{T} B−wZ/Z⊂T,其representatives在 { 0 , 1 B w , 2 B w , ⋯ , B w − 1 B w } \{0,\frac{1}{B^w},\frac{2}{B^w},\cdots,\frac{B^w-1}{B^w}\} {0,Bw1,Bw2,⋯,BwBw−1}内。
如,假设 B = 10 B=10 B=10,则 2 m o d 1 = 0.4142... = 4 ⋅ 1 0 − 1 + 1 ⋅ 1 0 − 2 + 4 ⋅ 1 0 − 3 + 2 ⋅ 1 0 − 4 + ⋯ \sqrt{2}\mod 1=0.4142...=4\cdot 10^{-1}+1\cdot 10^{-2}+4\cdot 10^{-3}+2\cdot 10^{-4}+\cdots 2mod1=0.4142...=4⋅10−1+1⋅10−2+4⋅10−3+2⋅10−4+⋯。若 w = 3 w=3 w=3个digits,则 2 m o d 1 ≈ 414 1 0 3 \sqrt{2}\mod 1\approx \frac{414}{10^3} 2mod1≈103414接近为torus元素 4 ⋅ 1 0 − 1 + 1 ⋅ 1 0 − 2 + 4 ⋅ 1 0 − 3 4\cdot 10^{-1}+1\cdot 10^{-2}+4\cdot 10^{-3} 4⋅10−1+1⋅10−2+4⋅10−3。
Remark 1:
当取 B = 2 B=2 B=2时,即对应radix- 2 2 2场景,令 w = Ω w=\Omega w=Ω,有 t = ∑ j = 1 Ω t j ⋅ 2 − j t=\sum_{j=1}^{\Omega}t_j\cdot 2^{-j} t=∑j=1Ωtj⋅2−j。
现代架构中的位精度通常为32位或64位,即 Ω = 32 或 64 \Omega=32或64 Ω=32或64。在32位或64位架构中,torus元素形式可被限定为 ∑ j = 1 Ω t j ⋅ 2 − j ( m o d 1 ) \sum_{j=1}^{\Omega}t_j\cdot 2^{-j}(\mod 1) ∑j=1Ωtj⋅2−j(mod1),其中 t i ∈ { 0 , 1 } t_i\in\{0,1\} ti∈{0,1}。
本质上,使用有限精度,是将 T \mathbb{T} T替换为了submodule:
T q : = q − 1 Z / Z ⊂ T \mathbb{T}_q:=q^{-1}\mathbb{Z}/\mathbb{Z}\subset \mathbb{T} Tq:=q−1Z/Z⊂T,其中 q = 2 Ω q=2^{\Omega} q=2Ω。
T q \mathbb{T}_q Tq的representatives为分数集合: { i q m o d 1 ∣ i ∈ Z } = { i q ∣ i ∈ Z / q Z } = { 0 , 1 q , ⋯ , q − 1 q } \{\frac{i}{q}\mod 1|i\in\mathbb{Z}\}=\{\frac{i}{q}|i\in\mathbb{Z}/q\mathbb{Z}\}=\{0,\frac{1}{q},\cdots,\frac{q-1}{q}\} {qimod1∣i∈Z}={qi∣i∈Z/qZ}={0,q1,⋯,qq−1}。该torus的离散化modulo q q q可由 T q \mathbb{T}_q Tq中的下标 q q q表示。submodule T q ⊂ T \mathbb{T}_q\subset \mathbb{T} Tq⊂T形成了discretized torus。
实际应用中,torus元素并不以分数表示,而是通过identify T q = 1 q Z / Z \mathbb{T}_q=\frac{1}{q}\mathbb{Z}/\mathbb{Z} Tq=q1Z/Z with Z / q Z \mathbb{Z}/q\mathbb{Z} Z/qZ的元素模 q q q。
更具体来说,已知2个torus元素 t = a q , u = b q ∈ T q t=\frac{a}{q},u=\frac{b}{q}\in\mathbb{T}_q t=qa,u=qb∈Tq,若有 v : = t + u = c q ∈ T q v:=t+u=\frac{c}{q}\in\mathbb{T}_q v:=t+u=qc∈Tq,则有 c ≡ a + b ( m o d q ) c\equiv a+b(\mod q) c≡a+b(modq)。
类似地,对于torus元素 t = a q t=\frac{a}{q} t=qa和scalar k ∈ Z k\in\mathbb{Z} k∈Z,若有 w : = k ⋅ t = d q ∈ T q w:=k\cdot t=\frac{d}{q}\in\mathbb{T}_q w:=k⋅t=qd∈Tq,则有 d ≡ k a ( m o d q ) d\equiv ka(\mod q) d≡ka(modq)。
基于 T q \mathbb{T}_q Tq的计算,可完全转换为,仅考虑分子的模 q q q运算。
类似地,对于discretized torus T q \mathbb{T}_q Tq,可定义:
T N , q [ X ] : = Z q [ X ] / ( X N + 1 ) \mathbb{T}_{N,q}[X]:=\mathbb{Z}_q[X]/(X^N+1) TN,q[X]:=Zq[X]/(XN+1)
同时定义 Z N , q [ X ] : = Z q / ( X N + 1 ) \mathbb{Z}_{N,q}[X]:=\mathbb{Z}_q/(X^N+1) ZN,q[X]:=Zq/(XN+1),其中 Z q = Z / q Z \mathbb{Z}_q=\mathbb{Z}/q\mathbb{Z} Zq=Z/qZ。将 1 q \frac{1}{q} q1看成是 Z N , q [ X ] \mathbb{Z}_{N,q}[X] ZN,q[X]中的某元素,任意多项式 p ∈ T N , q [ X ] \mathfrak{p}\in\mathbb{T}_{N,q}[X] p∈TN,q[X]可表示为 p = p ˉ ⋅ 1 q \mathfrak{p}=\bar{\mathfrak{p}}\cdot \frac{1}{q} p=pˉ⋅q1,其中多项式 p ˉ ∈ Z N , q [ X ] \bar{\mathfrak{p}}\in\mathbb{Z}_{N,q}[X] pˉ∈ZN,q[X]。 T N , q [ X ] \mathbb{T}_{N,q}[X] TN,q[X]中的加法和外部乘法可分别表示为’ + + +‘和’ ⋅ \cdot ⋅’。
令 S S S为某集合, a ← § S a\xleftarrow{\S}S a§S表示 a a a为 S S S中的均匀采样随机值。若 D \mathcal{D} D为概率分布, a ← D a\leftarrow \mathcal{D} a←D则表示根据 D \mathcal{D} D来采样获得 a a a。对于实数 x x x, ⌊ x ⌋ \lfloor x \rfloor ⌊x⌋表示取 ≤ x \leq x ≤x的最大整数, ⌈ x ⌉ \lceil x \rceil ⌈x⌉表示取 g e q x geq x geqx的最小整数。 ⌊ x ⌉ \lfloor x\rceil ⌊x⌉表示对 x x x四舍五入取整。
Z \mathbb{Z} Z或 T \mathbb{T} T(分别为 Z q \mathbb{Z}_q Zq或 T q \mathbb{T}_q Tq)中元素以罗马字体表示,多项式以书法字体表示。 B \mathbb{B} B为整数子集 { 0 , 1 } \{0,1\} {0,1}, N N N为power of 2 2 2, B N [ X ] \mathbb{B}_N[X] BN[X]为 Z N [ X ] \mathbb{Z}_N[X] ZN[X]多项式系数在 B \mathbb{B} B的子集。
向量可看成是行矩阵,以粗体表示。
如,向量 v = ( 3 , 4 ) ∈ Z 2 \mathbf{v}=(3,4)\in\mathbb{Z}^2 v=(3,4)∈Z2可看成是行矩阵 ( 3 4 ) ∈ Z 1 × 2 (3\ 4)\in\mathbb{Z}^{1\times 2} (3 4)∈Z1×2,且若 A = [ 1 2 0 1 ] \mathbf{A}=\begin{bmatrix} 1 & 2\\ 0 & 1 \end{bmatrix} A=[1021],则 v A = ( 3 10 ) = ( 3 , 10 ) \mathbf{vA}=(3\ 10)=(3,10) vA=(3 10)=(3,10)。
2005年,Regev [Reg05, Reg09]引入了learning with errors problem(LWE)。随后在[SSTX09,LPR10]中提出了对ring结构的推广和扩展。如[CGGI20]中最初所述,TFHE的安全性依赖于基于torus的难题hardness[BLP+13,CS15]:基于torus的LWE假设和GLWE假设[BGV14,LS15]。
本文基于discretized torus,做如下定义:
decisional LWE假设(或decisional GLWE假设)断言,对于某安全参数 λ \lambda λ,解决LWE难题(或GLWE难题)是不可信的,其中 q : = q ( λ ) , n : = n ( λ ) , X ^ : = X ^ ( λ ) q:=q(\lambda),n:=n(\lambda),\hat{X}:=\hat{X}(\lambda) q:=q(λ),n:=n(λ),X^:=X^(λ)(或 N : = N ( λ ) , q : = q ( λ ) , k = k ( λ ) , X ^ : = X ^ ( λ ) N:=N(\lambda), q:=q(\lambda),k=k(\lambda),\hat{X}:=\hat{X}(\lambda) N:=N(λ),q:=q(λ),k=k(λ),X^:=X^(λ))。
有趣的是,以 T q \mathbb{T}_q Tq来标记 Z q = Z / q Z \mathbb{Z}_q=\mathbb{Z}/q\mathbb{Z} Zq=Z/qZ(或,以 T N , q [ X ] \mathbb{T}_{N,q}[X] TN,q[X]来标记 Z N , q [ X ] \mathbb{Z}_{N,q}[X] ZN,q[X]),则基于discretized torus的decisional LWE(或decisional GLWE)假设,等价为标准decisional LWE(或decisional GLWE)假设。
如上表所示,展示了LWE假设和GLWE假设安全示例常用经典密码学参数。根据normal distribution N ( 0 , σ 2 ) \mathcal{N}(0,\sigma^2) N(0,σ2)可推导出error distribution X ^ \hat{X} X^,normal distribution N ( 0 , σ 2 ) \mathcal{N}(0,\sigma^2) N(0,σ2)以 0 0 0为中心,方差为 σ 2 \sigma^2 σ2,其中 σ \sigma σ表示标准方差。
推荐使用https://github.com/malb/lattice-estimator/(Python)脚本来找到指定安全级别的准确参数。
对于某等价安全级别,更小的参数 n n n值(或 ( N , k ) (N,k) (N,k)值),应补偿有更大 σ \sigma σ值(即,更不密集的噪声)。
基于discretized torus的LWE假设,是指,对于由 r = ∑ j = 1 n s j ⋅ a j + e r=\sum_{j=1}^{n}s_j\cdot a_j+e r=∑j=1nsj⋅aj+e所构建的某torus元素 r ∈ T q r\in\mathbb{T}_q r∈Tq,与随机torus元素 r ∈ T q r\in\mathbb{T}_q r∈Tq,二者不可区分,即使已知torus向量 ( a 1 , ⋯ , a n ) ∈ T q (a_1,\cdots,a_n)\in\mathbb{T}_q (a1,⋯,an)∈Tq。
torus元素 r = ∑ j = 1 n s j ⋅ a j + e r=\sum_{j=1}^{n}s_j\cdot a_j+e r=∑j=1nsj⋅aj+e,可用作一次性pad来隐藏“明文消息” μ ∈ T q \mu\in\mathbb{T}_q μ∈Tq,从而构成密文 c = ( a 1 , ⋯ , a n , r + μ ) ∈ T q n + 1 \mathbf{c}=(a_1,\cdots,a_n,r+\mu)\in\mathbb{T}_q^{n+1} c=(a1,⋯,an,r+μ)∈Tqn+1,其中 s = ( s 1 , ⋯ , s n ) ∈ B n \mathbf{s}=(s_1,\cdots,s_n)\in\mathbb{B}^n s=(s1,⋯,sn)∈Bn用作private 加密密钥。选择秘钥 s s s为bits向量的原因,是为了实现高效bootstrapping,具体见 Guide to Fully Homomorphic Encryption over the [Discretized] Torus 论文第5章。
仅部分torus用作明文消息输入。该明文空间取自合适的加法子群 P ⊂ T q \mathcal{P}\sub\mathbb{T}_q P⊂Tq,具体为:
P = { 0 , 1 p , ⋯ , p − 1 p } \mathcal{P}=\{0,\frac{1}{p},\cdots,\frac{p-1}{p}\} P={0,p1,⋯,pp−1}
其中,整数 p p p可整除 q q q,且 p ≥ 2 p\geq 2 p≥2。只要密文中的噪声不太大,就支持唯一解密。
特别地,基于以上 P \mathcal{P} P选择,若 c = ( a 1 , ⋯ , a n , b ) \mathbf{c}=(a_1,\cdots,a_n,b) c=(a1,⋯,an,b),其中 b = ∑ j = 1 n s j ⋅ a j + μ + e b=\sum_{j=1}^{n}s_j\cdot a_j+\mu+e b=∑j=1nsj⋅aj+μ+e为对明文 μ ∈ P \mu\in\mathcal{P} μ∈P的加密,则明文 μ \mu μ可通过如下2个步骤恢复:
TWLE加密方案为:
已知discretized torus T q \mathbb{T}_q Tq,明文空间为 T q \mathbb{T}_q Tq的某加法子群,即 P : = p − 1 Z / Z = T p ⊂ T q \mathcal{P}:=p^{-1}\mathbb{Z}/\mathbb{Z}=\mathbb{T}_p\sub \mathbb{T}_q P:=p−1Z/Z=Tp⊂Tq,其中 p p p可整除 q q q。根据基于 R \mathbb{R} R的error distribution X X X,可推导出基于 q − 1 Z q^{-1}\mathbb{Z} q−1Z的discretized distribution X ^ \hat{X} X^:
noise error e ← X ^ e\leftarrow \hat{X} e←X^定义为 e = e ˉ q e=\frac{\bar{e}}{q} e=qeˉ,其中 e ˉ = round ( q e 0 ) ∈ Z \bar{e}=\text{round}(qe_0)\in\mathbb{Z} eˉ=round(qe0)∈Z, e 0 ← X e_0\leftarrow X e0←X。
密文的mask ( a 1 , ⋯ , a n ) ∈ T q n (a_1,\cdots,a_n)\in\mathbb{T}_q^n (a1,⋯,an)∈Tqn源自 a ˉ j ← § Z / q Z \bar{a}_j\xleftarrow{\S}\mathbb{Z}/q\mathbb{Z} aˉj§Z/qZ,并令 a j = a ˉ j q a_j=\frac{\bar{a}_j}{q} aj=qaˉj,其中 1 ≤ j ≤ n 1\leq j\leq n 1≤j≤n。相应的body b b b为 b = ∑ j = 1 n s j ⋅ a j + μ + e b=\sum_{j=1}^{n}s_j\cdot a_j+\mu+e b=∑j=1nsj⋅aj+μ+e,其中 e ← X ^ e\leftarrow \hat{X} e←X^。对 μ ∈ P \mu\in\mathcal{P} μ∈P的TLWE加密结果为向量 ( a 1 , ⋯ , a n , b ) (a_1,\cdots,a_n,b) (a1,⋯,an,b)。
Remark 2:
该私钥加密方案是对称的:
最终,完整的私钥加密方案——TLWE加密方案为:
为便于标记,对于整数 k k k和torus元素 t ∈ T q ⊂ T t\in\mathbb{T}_q\sub\mathbb{T} t∈Tq⊂T,将 ⌊ k t ⌉ \lfloor kt \rceil ⌊kt⌉表示 k , t k,t k,t乘积最近的整数,看做是某实数。
严格来说,应写成 ⌊ k lift ( t ) ⌉ \lfloor k\text{ lift}(t)\rceil ⌊k lift(t)⌉,其中lift
函数会将 T \mathbb{T} T元素,lift到, R \mathbb{R} R,即,将 T \mathbb{T} T元素看成是 R \mathbb{R} R元素。
当noise error e e e满足 ∣ e ∣ < 1 2 p |e|<\frac{1}{2p} ∣e∣<2p1时,很容易验证该解密过程可成功恢复出明文 μ \mu μ。
Proof:
对于明文 μ ∈ P = { 0 , 1 p , ⋯ , p − 1 p } \mu\in \mathcal{P}=\{0,\frac{1}{p},\cdots,\frac{p-1}{p}\} μ∈P={0,p1,⋯,pp−1},令 c ← T L W E s ( μ ) = ( a 1 , ⋯ , a n , b ) \mathbf{c}\leftarrow TLWE_{\mathbf{s}}(\mu)=(a_1,\cdots,a_n,b) c←TLWEs(μ)=(a1,⋯,an,b),其中 ( a 1 , ⋯ , a n ) ← § T q n (a_1,\cdots,a_n)\xleftarrow{\S}\mathbb{T}_q^n (a1,⋯,an)§Tqn,且 b = ∑ j = 1 n s j ⋅ a j + μ + e b=\sum_{j=1}^{n}s_j\cdot a_j+\mu+e b=∑j=1nsj⋅aj+μ+e, e ← X ^ e\leftarrow \hat{X} e←X^。由于 μ ∈ P \mu\in\mathcal{P} μ∈P,即存在唯一整数 m ∈ [ 0 , p ) m\in[0,p) m∈[0,p),使得 μ = m p \mu=\frac{m}{p} μ=pm。应用 D e c r y p t s k ( c ) Decrypt_{sk}(\mathbf{c}) Decryptsk(c)输出 μ = ⌊ p u ∗ ⌉ m o d p p \mu=\frac{\lfloor p u^* \rceil\mod p}{p} μ=p⌊pu∗⌉modp,其中 μ ∗ : = μ + e ∈ T q ⊂ T \mu^*:=\mu+e\in\mathbb{T}_q\sub \mathbb{T} μ∗:=μ+e∈Tq⊂T。有 ⌊ p ( ( u + e ) m o d 1 ) ⌉ = ⌊ p ( u + e + δ ) ⌉ = ⌊ p ( u + e ) ⌉ + δ p \lfloor p ((u+e) \mod 1)\rceil=\lfloor p (u+e+\delta)\rceil=\lfloor p (u+e)\rceil+\delta p ⌊p((u+e)mod1)⌉=⌊p(u+e+δ)⌉=⌊p(u+e)⌉+δp,其中 δ ∈ Z \delta\in\mathbb{Z} δ∈Z。
若假设 ∣ e ∣ < 1 2 p |e|<\frac{1}{2p} ∣e∣<2p1,同时有 ⌊ p ( u + e ) ⌉ = ⌊ p ( m p + e ) ⌉ = ⌊ m + p e ⌉ = m + ⌊ p e ⌉ = m \lfloor p (u+e) \rceil=\lfloor p (\frac{m}{p}+e) \rceil=\lfloor m+pe \rceil=m+\lfloor pe \rceil=m ⌊p(u+e)⌉=⌊p(pm+e)⌉=⌊m+pe⌉=m+⌊pe⌉=m。
此时,最终有 ⌊ p u ∗ ⌉ m o d p = ⌊ p ( u + e ) ⌉ m o d p = m \lfloor p u^* \rceil\mod p=\lfloor p (u+e) \rceil\mod p=m ⌊pu∗⌉modp=⌊p(u+e)⌉modp=m,且 ⌊ p u ∗ ⌉ m o d p p = m p = μ \frac{\lfloor p u^* \rceil\mod p}{p}=\frac{m}{p}=\mu p⌊pu∗⌉modp=pm=μ。
加密算法以(discretized)torus元素,或更准确来说,以 P \mathcal{P} P中元素为输入。Encoding/Decoding编解码的目的,是为了支持更多的输入形式。
令 M \mathcal{M} M为任意有限消息空间,其cardinality # M = p \#\mathcal{M}=p #M=p,且 p = 2 v p=2^v p=2v。明文空间 P = T p ⊂ T \mathcal{P}=\mathbb{T}_p\sub\mathbb{T} P=Tp⊂T,且 q = 2 Ω q=2^{\Omega} q=2Ω。
接下来将考虑如下消息空间场景:
1)包含bits的消息空间。
即消息空间为 M = { 0 , 1 } \mathcal{M}=\{0,1\} M={0,1}。对于某bit b ∈ { 0 , 1 } b\in\{0,1\} b∈{0,1},定义 E n c o d e ( b ) = b / 2 Encode(b)=b/2 Encode(b)=b/2。从而,bit 0被编码为torus元素 0 = 0 q ∈ T q 0=\frac{0}{q}\in\mathbb{T}_q 0=q0∈Tq。bit 1被编码为torus元素 1 2 = q / 2 q ∈ T q \frac{1}{2}=\frac{q/2}{q}\in\mathbb{T}_q 21=qq/2∈Tq。相应的反向操作, D e c o d e ( μ ) = ⌊ 2 μ ⌉ m o d 2 Decode(\mu)=\lfloor 2\mu\rceil\mod 2 Decode(μ)=⌊2μ⌉mod2,且若 μ ∈ { 0 , 1 2 } \mu\in\{0,\frac{1}{2}\} μ∈{0,21},则 D e c o d e ( μ ) ∈ { 0 , 1 } Decode(\mu)\in\{0,1\} Decode(μ)∈{0,1}。
2)包含整数模 p p p,其中 p p p可整除 q q q,的消息空间。
为只包含bits消息空间的扩展,可将其看成是模 p = 2 p=2 p=2的特例情况。
即消息空间为 M = { i m o d p ∣ i ∈ Z } = Z / p Z \mathcal{M}=\{i\mod p|i\in \mathbb{Z}\}=\mathbb{Z}/p\mathbb{Z} M={imodp∣i∈Z}=Z/pZ。
令 Δ = q / p ∈ Z \Delta=q/p\in\mathbb{Z} Δ=q/p∈Z,则相应的编解码分别为:
E n c o d e ( i ) = i m o d p p ( = ( i m o d p ) Δ q ) Encode(i)=\frac{i\mod p}{p}(=\frac{(i\mod p)\Delta}{q}) Encode(i)=pimodp(=q(imodp)Δ)【该编码显然用于小于 p p p的无符号整数,即 i ∈ { 0 , 1 , ⋯ , p − 1 } i\in\{0,1,\cdots,p-1\} i∈{0,1,⋯,p−1}。也可用于有符号整数,此时,“模 p p p” 返回的是 { − p 2 , ⋯ , p 2 − 1 } \{-\frac{p}{2},\cdots,\frac{p}{2}-1\} {−2p,⋯,2p−1}内的有符号表示。】
D e c o d e ( μ ) = ⌊ p μ ⌉ m o d p Decode(\mu)=\lfloor p\mu\rceil \mod p Decode(μ)=⌊pμ⌉modp。
3)包含固定精度torus元素的消息空间。
令 p ≥ 2 p\geq 2 p≥2,且 p ∣ q p|q p∣q,与 整数模 p p p 情况类似,torus元素格式为 t = i p t=\frac{i}{p} t=pi,其中 i ∈ Z / p Z i\in\mathbb{Z}/p\mathbb{Z} i∈Z/pZ。这些torus元素构成了固定精度torus元素子集。对于 x ∈ T p = p − 1 Z / Z x\in\mathbb{T}_p=p^{-1}\mathbb{Z}/\mathbb{Z} x∈Tp=p−1Z/Z和 μ ∈ T q \mu\in\mathbb{T}_q μ∈Tq,定义:
E n c o d e ( x ) = x Encode(x)=x Encode(x)=x【可用于 T p ∩ [ 0 , 1 ) \mathbb{T}_p\cap [0,1) Tp∩[0,1)内的无符号(固定精度)数字。也可用于 T p ∩ [ − 1 2 , 1 2 ) \mathbb{T}_p\cap [-\frac{1}{2},\frac{1}{2}) Tp∩[−21,21)内的有符号(固定精度)数字】
D e c o d e ( μ ) = ⌊ p μ ⌉ m o d p p Decode(\mu)=\frac{\lfloor p\mu\rceil\mod p}{p} Decode(μ)=p⌊pμ⌉modp
Batching ciphertexts,批量加密:
当有 m m m个明文(torus元素)待加密时,若基于不同的秘钥加密,可复用相同的随机值。特别地,对于 μ 1 , ⋯ , μ m ∈ P \mu_1,\cdots,\mu_m\in\mathcal{P} μ1,⋯,μm∈P,设置 C = ( a 1 , ⋯ , a n , b 1 , ⋯ , b m ) ∈ T q n + m \mathbf{C}=(a_1,\cdots,a_n,b_1,\cdots,b_m)\in\mathbb{T}_q^{n+m} C=(a1,⋯,an,b1,⋯,bm)∈Tqn+m,其中对于 1 ≤ i ≤ m 1\leq i\leq m 1≤i≤m,encryption b i = ∑ j = 1 n s i , j ⋅ a j + μ i + e i b_i=\sum_{j=1}^{n}s_{i,j}\cdot a_j+\mu_i+e_i bi=∑j=1nsi,j⋅aj+μi+ei, ( a 1 , ⋯ , a n ) ← § T q n (a_1,\cdots,a_n)\xleftarrow{\S}\mathbb{T}_q^n (a1,⋯,an)§Tqn, s i = ( s i , 1 , ⋯ , s i , n ) ← § B n s_i=(s_{i,1},\cdots,s_{i,n})\xleftarrow{\S}\mathbb{B}^n si=(si,1,⋯,si,n)§Bn和noise error e i e_i ei。
该变种的安全性遵循[BBS03]。由于随机值(即 a j a_j aj)已明确在TLWE密文中给出,很容易验证其满足[BBKS07, Definition 9.3]中的“reproducibility”标准。
密文压缩:
TLWE密文为具有 n + 1 n+1 n+1个元素的torus向量。以Table 2中的参数集,若假设torus元素以64位表示,则TLWE密文通常需要 631 × 64 = 40384 631\times 64=40384 631×64=40384个位(与5KB)来表示。
不同于将密文 c \mathbf{c} c表示为 c = ( a 1 , ⋯ , a n , b ) \mathbf{c}=(a_1,\cdots,a_n,b) c=(a1,⋯,an,b),更紧凑的方式,是定义 c \mathbf{c} c为 c = ( θ , b ) \mathbf{c}=(\theta,b) c=(θ,b),其中 θ ← § { 0 , 1 } λ \theta\xleftarrow{\S}\{0,1\}^{\lambda} θ§{0,1}λ为 λ \lambda λ-bit string, λ \lambda λ为安全参数。 θ \theta θ值用作密码学安全的伪随机数生成器的seed,来派生出随机向量 ( a 1 , ⋯ , a n ) (a_1,\cdots,a_n) (a1,⋯,an)::
( a 1 , ⋯ , a n ) ← P R N G ( θ ) (a_1,\cdots,a_n)\leftarrow PRNG(\theta) (a1,⋯,an)←PRNG(θ)
借助以上参数(对应所需的安全级别为128位),相同的密文仅需要 128 + 64 = 192 128+64=192 128+64=192位来表示。
key storage密钥存储:
相同的策略可用于存储私钥 s \mathbf{s} s。不同于直接存储 s \mathbf{s} s为 n n n-bit string,可仅存储用作密码学安全的伪随机数生成器seed的 λ \lambda λ-bt seed。
TLWE加密可扩展到 T N , q [ X ] \mathbb{T}_{N,q}[X] TN,q[X] torus 多项式。基于torus T q \mathbb{T}_q Tq的运算,可简单替换为,基于多项式模 X N + 1 X^N+1 XN+1(和模 q q q)的运算。
已知2个多项式 a , v ∈ T N , q [ X ] \mathfrak{a,v}\in \mathbb{T}_{N,q}[X] a,v∈TN,q[X]:
已知2个多项式 a ∈ Z N , q [ X ] , v ∈ T N , q [ X ] \mathfrak{a}\in \mathbb{Z}_{N,q}[X],\mathfrak{v}\in \mathbb{T}_{N,q}[X] a∈ZN,q[X],v∈TN,q[X]:
明文空间为多项式子集:
P N [ X ] : = P [ X ] / ( X N + 1 ) = T N , p [ X ] ⊂ T N , q [ X ] \mathcal{P}_N[X]:=\mathcal{P}[X]/(X^N+1)=\mathbb{T}_{N,p}[X]\sub\mathbb{T}_{N,q}[X] PN[X]:=P[X]/(XN+1)=TN,p[X]⊂TN,q[X]
其中:
最终,完整TGLWE加密方案为:
Remark 4:
由于,当 N = 1 N=1 N=1时,有 T N , q [ X ] = T q \mathbb{T}_{N,q}[X]=\mathbb{T}_q TN,q[X]=Tq,可看出TLWE加密方案,为TGLWE方案的特例情况,即对应有 ( k , N ) = ( n , 1 ) (k,N)=(n,1) (k,N)=(n,1)。
TLWE用于对 T q \mathbb{T}_q Tq加密,TGLWE用于对 T N , q [ X ] \mathbb{T}_{N,q}[X] TN,q[X]加密。
- 当用于对单个torus元素 μ ∈ P \mu\in \mathcal{P} μ∈P进行加密时,应优选TLWE,因其具有更短的密文。
- 当用于对多个torus元素加密时,TGLWE选项更优,具体见后续章节。
有TLWE和TGLWE这2种方案的主要原因在于,二者都需要实现可编程bootstrapping。
TGLWE支持对任意多项式 u ∈ P N [ X ] \mathfrak{u}\in\mathcal{P}_N[X] u∈PN[X]进行加密。很多应用中,限定 u \mathfrak{u} u degree为0的多项式,从而可将其看成是 P \mathcal{P} P中元素。此时的编解码方法与上一节TLWE的编解码方法一样。
当需对 N N N个torus元素 μ 0 , ⋯ , μ N − 1 ∈ P \mu_0,\cdots,\mu_{N-1}\in\mathcal{P} μ0,⋯,μN−1∈P加密时,可将其表示为多项式 u ( X ) = μ 0 + μ 1 X + ⋯ + μ N − 1 X N − 1 \mathfrak{u}(X)=\mu_0+\mu_1X+\cdots+\mu_{N-1}X^{N-1} u(X)=μ0+μ1X+⋯+μN−1XN−1的系数。该优化又名coefficient packing。
2个多项式的(外)乘是吃力的操作。不过,cyclotomic多项式 Φ ( X ) = X N + 1 \Phi(X)=X^N+1 Φ(X)=XN+1的特殊结构,使得该计算要更容易点。
比如:
通常情况下,对于 Φ ( X ) = X N + 1 \Phi(X)=X^N+1 Φ(X)=XN+1, p ∈ Z N , q [ X ] , q ∈ Z N , q [ X ] \mathfrak{p}\in\mathbb{Z}_{N,q}[X],\mathfrak{q}\in\mathbb{Z}_{N,q}[X] p∈ZN,q[X],q∈ZN,q[X],令 p ( X ) = p 0 + p 1 X + ⋯ + p N − 1 X N − 1 , q ( X ) = q 0 + q 1 X + ⋯ + q N − 1 X N − 1 \mathfrak{p}(X)=p_0+p_1X+\cdots+p_{N-1}X^{N-1},\mathfrak{q}(X)=q_0+q_1X+\cdots+q_{N-1}X^{N-1} p(X)=p0+p1X+⋯+pN−1XN−1,q(X)=q0+q1X+⋯+qN−1XN−1,借助 X N + i ≡ − X i ( m o d X N + 1 ) X^{N+i}\equiv -X^i(\mod X^N+1) XN+i≡−Xi(modXN+1)关系,二者的乘积为:
p ( X ) ⋅ q ( X ) = ( p 0 + p 1 X + ⋯ + p N − 1 X N − 1 ) ⋅ ( q 0 + q 1 X + ⋯ + q N − 1 X N − 1 ) = p 0 ⋅ q 0 − p 1 ⋅ q N − 1 − ⋯ − p N − 1 ⋅ q 1 + ( p 0 ⋅ q 1 + p 1 ⋅ q 0 − ⋯ − p N − 1 ⋅ q 2 ) X + ⋯ + ( p 0 ⋅ q N − 1 + p 1 ⋅ q N − 2 + ⋯ + p N − 1 ⋅ q 0 ) X N − 1 \mathfrak{p}(X)\cdot \mathfrak{q}(X)=(p_0+p_1X+\cdots+p_{N-1}X^{N-1})\cdot (q_0+q_1X+\cdots+q_{N-1}X^{N-1})\\=p_0\cdot q_0-p_1\cdot q_{N-1}-\cdots -p_{N-1}\cdot q_1 \\ + (p_0\cdot q_1+p_1\cdot q_0-\cdots - p_{N-1}\cdot q_2)X \\+ \cdots \\+(p_0\cdot q_{N-1}+p_1\cdot q_{N-2}+\cdots +p_{N-1}\cdot q_0)X^{N-1} p(X)⋅q(X)=(p0+p1X+⋯+pN−1XN−1)⋅(q0+q1X+⋯+qN−1XN−1)=p0⋅q0−p1⋅qN−1−⋯−pN−1⋅q1+(p0⋅q1+p1⋅q0−⋯−pN−1⋅q2)X+⋯+(p0⋅qN−1+p1⋅qN−2+⋯+pN−1⋅q0)XN−1
这需要 N 2 N^2 N2次外部torus乘法来计算 p i , q j p_i,q_j pi,qj,其中 0 ≤ i , j ≤ N − 1 0\leq i,j \leq N-1 0≤i,j≤N−1。当 N N N值很大时,可选方法是使用fast Fourier transform(FFT)[vzGG13, Chapter 8],或见[Ber01]中代数描述。
当 p ( X ) \mathfrak{p}(X) p(X)为单项式 X j X^j Xj时,其中 j ∈ { 0 , ⋯ , N − 1 } j\in\{0,\cdots, N-1\} j∈{0,⋯,N−1},则该乘法公式可简化为:
或,更简洁表示为:
X j ⋅ q ( X ) = ∑ i = 0 j − 1 − q i + N − j X i + ∑ i = j N − 1 q i − j X i X^j\cdot \mathfrak{q}(X)=\sum_{i=0}^{j-1}-q_{i+N-j}X^i+\sum_{i=j}^{N-1}q_{i-j}X^i Xj⋅q(X)=∑i=0j−1−qi+N−jXi+∑i=jN−1qi−jXi
X N + j ⋅ q ( X ) = − X j ⋅ q ( X ) X^{N+j}\cdot \mathfrak{q}(X)=-X^j\cdot \mathfrak{q}(X) XN+j⋅q(X)=−Xj⋅q(X)
该关系又名negacyclic property。
示例为:
[1] Zama团队的Marc Joye 2021年论文 Guide to Fully Homomorphic Encryption over the [Discretized] Torus