基于[Discretized] Torus的全同态加密指引(1)

1. 引言

全同态加密(FHE,Fully Homomorphic Encryption),由Rivest等人于1978年首次提出,可用于对已加密数据做函数运算,仅在2009年由Gentry首次实现突破性解决。经过近十年来的研究,开始出现实用解决方案,并正推进标准化。

本指引是针对实操者的,其:

  • 解释了TFHE的内部工作原理。TFHE为基于torus的全同态加密方案。
  • 描述了基于torus discretized(离散)版本的实现。
  • 解释了可编程bootstrapping的技术细节。
  • 提供了多个例子来展示不同的概念和定义。

全同态加密(FHE)长期以来一直被认为是密码学的圣杯。这个概念是在70年代末设想出来的[RAD78],但30年后才首次实现[Gen09,Gen10]。如今,公共和私有领域都在接受这种新的安全模式,并积极致力于使FHE更实用、更易于使用。在[Hal17]中可以找到一个关于FHE的优秀描述。

1.1. 何为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=c1c2 x 3 = x 1 + x 2 x_3=x_1+x_2 x3x1+x2的加密。

虽然很容易找到能对密文做加法或乘法运算的密码学系统(如,[RAD78,ElG85,Pai99]),但同时支持密文加法和乘法运算的密码学系统更难找到。同时支持密文加法和乘法运算的加密方案被称为全同态,因为任意程序都可以表示为由加法和乘法组成的电路。更一般地说,FHE方案是一种能够在加密数据上评估任意程序的加密方案。

FHE方案的首个实现是Gentry[Gen09,Gen10]。随后的实现包括以下方案:BFV[Bra12,FV12],GSW[GSW13],BGV[BGV12,BGV14],FHEW[DM15],CKKS[CKS17]和TFHE[CGGI16,CGGI20]。

1.2 noise处理:bootstrapping trick

大多数全同态加密依赖于hard lattice problems。为此,生成的密文中必须包含一定级别的noise,以确保加密的安全性。

问题在于:

  • 同态计算会增加密文中的噪声级别。

基于[Discretized] Torus的全同态加密指引(1)_第1张图片
一旦噪声低于特定阈值,该密文可被解密。当若该噪声增长过多,其超过了数据自身,将使得无法解密。为避免出现无法解密的情况,可对密文应用一种特殊的降噪操作——称为bootstrapping,该概念在[Gen09]中提出,从而有效地将噪声重置到标称水平。

1.3 可编程bootstrapping和functional电路

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,xy)。更一般地说,Kolmogorov的superposition定理[Kol57]指出,任何多变量函数都可表示为单变量函数的线性组合。这产生了functional电路的计算范式,其中加密方案可以是全同态的,只要它实现同态加法和单变量函数。单变量函数可使用可编程自举进行同态评估,而密文的加法则以分级的方式进行评估。

1.4 神经网络应用

基于[Discretized] Torus的全同态加密指引(1)_第2张图片

神经网络为functional circuit的特殊应用场景:

  • 其activation函数为非线性单变量函数,
  • 其输入为之前layers的权重输入之和

众所周知,在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位安全级别。
基于[Discretized] Torus的全同态加密指引(1)_第3张图片
具体运行时长见上表。为参考,还包括了未加密推理的时间。重要的是要注意,对应于独立运行的单个推理的评估的时间;特别是,这些时间不会在一批推理中摊销。AWS实现利用了96个vCPU;特别地,隐藏层中的神经元是并行处理的。

2. 相关定义

2.1 Torus和Torus多项式

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} kZ,tT,则:

  • k ≥ 0 k\geq 0 k0,可定义 k ⋅ t = t + ⋯ + t (共 k 次) k\cdot t=t+\cdots +t(共k次) kt=t++t(共k次)
  • k < 0 k<0 k<0,可定义 k ⋅ t = ( − k ) ⋅ ( − t ) k\cdot t=(-k)\cdot (-t) kt=(k)(t)

从而,对于 0 , 1 ∈ Z 和 t ∈ T 0,1\in\mathbb{Z}和t\in\mathbb{T} 0,1ZtT,有 0 ⋅ t = 0 ∈ T 0\cdot t=0\in\mathbb{T} 0t=0T 1 ⋅ t = t ∈ T 1\cdot t=t\in\mathbb{T} 1t=tT。数学上, T \mathbb{T} T具有 Z \mathbb{Z} Z-module结构:

  • 对于任意的 k , l ∈ Z 和 a , b ∈ T k,l\in \mathbb{Z}和a,b\in\mathbb{T} k,lZa,bT,有 ( k + l ) ⋅ a = k ⋅ a + l ⋅ a (k+l)\cdot a=k\cdot a+l\cdot a (k+l)a=ka+la k ⋅ ( a + b ) = k ⋅ a + k ⋅ b k\cdot (a+b)=k\cdot a+k\cdot b k(a+b)=ka+kb
  • 进一步,该external product是homogeneous的:对于任意的 k , l ∈ Z 和 t ∈ T k,l\in\mathbb{Z}和t\in\mathbb{T} k,lZtT,有 k ⋅ ( l ⋅ t ) = ( k l ) ⋅ t k\cdot (l\cdot t)=(kl)\cdot t k(lt)=(kl)t

如对于 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,有:

  • ( k + l ) ⋅ a = 5 ⋅ 2 5 = 0 (k+l)\cdot a=5\cdot \frac{2}{5}=0 (k+l)a=552=0 k ⋅ a + l ⋅ a = 4 5 + 1 5 = 0 k\cdot a+l\cdot a=\frac{4}{5}+\frac{1}{5}=0 ka+la=54+51=0
  • k ⋅ ( a + b ) = 2 ⋅ 1 5 = 2 5 k\cdot (a+b)=2\cdot \frac{1}{5}=\frac{2}{5} k(a+b)=251=52 k ⋅ a + k ⋅ b = 4 5 + 3 5 = 2 5 k\cdot a+k\cdot b=\frac{4}{5}+\frac{3}{5}=\frac{2}{5} ka+kb=54+53=52
  • 若取 t = a = 2 5 t=a=\frac{2}{5} t=a=52,则有 k ⋅ ( l ⋅ t ) = 2 ⋅ 1 5 = 2 5 k\cdot (l\cdot t)=2\cdot \frac{1}{5}=\frac{2}{5} k(lt)=251=52 ( k l ) ⋅ t = 6 ⋅ 2 5 = 2 5 (kl)\cdot t=6\cdot \frac{2}{5}=\frac{2}{5} (kl)t=652=52

Torus多项式:

  • 基于torus的多项式
  • Φ ( X ) \Phi(X) Φ(X)来表示 M M M-th cyclotomic多项式,即,为唯一的不可约多项式,其整数系数可整除 X M − 1 X^M-1 XM1,但对任意的 k < M kk<M不可整除 X k − 1 X^k-1 Xk1
  • N N N来表示该多项式的degree。
  • 出于性能原因,选 M M M值为power of 2。此时有 N = M / 2 N=M/2 N=M/2,且 Φ ( X ) = X N + 1 \Phi(X)=X^N+1 Φ(X)=XN+1
    • 考虑到其多项式rings R N [ X ] : = R [ X ] / ( X N + 1 ) \mathbb{R}_N[X]:=\mathbb{R}[X]/(X^N+1) RN[X]:=R[X]/(XN+1) Z N [ X ] : = Z [ X ] / ( X N + 1 ) \mathbb{Z}_N[X]:=\mathbb{Z}[X]/(X^N+1) ZN[X]:=Z[X]/(XN+1),定义其 Z N [ X ] \mathbb{Z}_N[X] ZN[X]-modulo为:
      T N [ X ] : = R N [ X ] / Z N [ X ] = T [ X ] / ( X N + 1 ) \mathbb{T}_N[X]:=\mathbb{R}_N[X]/\mathbb{Z}_N[X]=\mathbb{T}[X]/(X^N+1) TN[X]:=RN[X]/ZN[X]=T[X]/(XN+1)
    • T N [ X ] \mathbb{T}_N[X] TN[X]中的元素,可看成是多项式对 X N + 1 X^N+1 XN+1求模后的在 T \mathbb{T} T内的系数。
    • 作为 Z N [ X ] \mathbb{Z}_N[X] ZN[X]-modulo, T N [ X ] \mathbb{T}_N[X] TN[X]中的元素可相加,并与 Z N [ X ] \mathbb{Z}_N[X] ZN[X]多项式进行external multiply。

如,若 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+p0p0,p1T}
如取 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+31q(X)=54X+21r(X)=2X+7,则有:

  • ( p + q ) ( X ) = 1 5 + 5 6 (\mathfrak{p}+\mathfrak{q})(X)=\frac{1}{5}+\frac{5}{6} (p+q)(X)=51+65
  • ( r ⋅ p ) ( X ) = 4 5 X 2 + 7 15 + 1 3 = − 4 5 + 7 15 X + 1 3 = 7 15 X + 8 15 (\mathfrak{r}\cdot \mathfrak{p})(X)=\frac{4}{5}X^2+\frac{7}{15}+\frac{1}{3}=-\frac{4}{5}+\frac{7}{15}X+\frac{1}{3}=\frac{7}{15}X+\frac{8}{15} (rp)(X)=54X2+157+31=54+157X+31=157X+158。注意该多项式定义于对 X 2 + 1 X^2+1 X2+1取模,从而有 X 2 ≡ − 1 X^2\equiv -1 X21

2.2 Discretized Torus

B B B ≥ 2 \geq 2 2的整数。任意的 t ∈ T t\in \mathbb{T} tT 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,,B1},对应有 t = ∑ j = 1 ∞ t j ⋅ B − j t=\sum_{j=1}^{\infty}t_j\cdot B^{-j} t=j=1tjBj。实际上,torus元素不会以无限多个digits来表示。会将元素膨胀到某有限精度。借助fixed-point方法,对于某 w ≥ 1 w\geq 1 w1,torus元素 t t t可写成:
t = ∑ j = 1 w t j ⋅ B − j t=\sum_{j=1}^{w}t_j\cdot B^{-j} t=j=1wtjBj,其中 t j ∈ { 0 , ⋯   , B − 1 } t_j\in\{0,\cdots,B-1\} tj{0,,B1}

该表示可限定该torus到子集 B − w Z / Z ⊂ T B^{-w}\mathbb{Z}/\mathbb{Z}\subset \mathbb{T} BwZ/ZT,其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,,BwBw1}内。

如,假设 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 2 mod1=0.4142...=4101+1102+4103+2104+。若 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} 2 mod1103414接近为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} 4101+1102+4103

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Ωtj2j

  • 参数 Ω \Omega Ω称为bit precision位精度。
  • leading bit,即 t 1 t_1 t1,称为sign bit符号位。
    • 可将其看成是在 [ 0 , 1 ) [0,1) [0,1)范围内的无符号实数。
    • 或,可将其看成是在 [ − 1 2 , 1 2 ) = [ − 1 2 , 0 ) ∪ [ 0 , 1 2 ) [-\frac{1}{2},\frac{1}{2})=[-\frac{1}{2},0)\cup[0,\frac{1}{2}) [21,21)=[21,0)[0,21)范围内的有符号实数。若设置了leading bit,相应的torus元素可被解析为负数,即在 [ − 1 2 , 0 ) [-\frac{1}{2},0) [21,0)范围内的某值。

现代架构中的位精度通常为32位或64位,即 Ω = 32 或 64 \Omega=32或64 Ω=3264。在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Ωtj2j(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:=q1Z/ZT,其中 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∣iZ}={qiiZ/qZ}={0,q1,,qq1}。该torus的离散化modulo q q q可由 T q \mathbb{T}_q Tq中的下标 q q q表示。submodule T q ⊂ T \mathbb{T}_q\subset \mathbb{T} TqT形成了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=qbTq,若有 v : = t + u = c q ∈ T q v:=t+u=\frac{c}{q}\in\mathbb{T}_q v:=t+u=qcTq,则有 c ≡ a + b ( m o d    q ) c\equiv a+b(\mod q) ca+b(modq)
类似地,对于torus元素 t = a q t=\frac{a}{q} t=qa和scalar k ∈ Z k\in\mathbb{Z} kZ,若有 w : = k ⋅ t = d q ∈ T q w:=k\cdot t=\frac{d}{q}\in\mathbb{T}_q w:=kt=qdTq,则有 d ≡ k a ( m o d    q ) d\equiv ka(\mod q) dka(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] pTN,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 ’。

2.3 标记

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} aD则表示根据 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)

2.4 复杂度假设

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,做如下定义:

  • Definition 1(LWE problem over the discretized torus):
    q , n ∈ N q,n\in\mathbb{N} q,nN s = ( s 1 , ⋯   , s n ) ← § B n \mathbf{s}=(s_1,\cdots,s_n)\xleftarrow{\S}\mathbb{B}^n s=(s1,,sn)§ Bn。令 X ^ \hat{X} X^为基于 q − 1 Z q^{-1}\mathbb{Z} q1Z的error distribution。则基于discretized torus的learning with errors(LWE)难题为:
    区分如下2个distributions中选中的采样:
    D 0 = { ( a , r ) ∣ a ← § T q n , r ← § T q } \mathcal{D}_0=\{(\mathbf{a},r)|\mathbf{a}\xleftarrow{\S}\mathbb{T}_q^n,r\xleftarrow{\S}\mathbb{T}_q\} D0={(a,r)a§ Tqn,r§ Tq}
    D 1 = { ( a , r ) ∣ a = ( a 1 , ⋯   , a n ) ← § T q n , r = ∑ j = 1 n s j ⋅ a j + e , e ← X ^ } \mathcal{D}_1=\{(\mathbf{a},r)|\mathbf{a}=(a_1,\cdots,a_n)\xleftarrow{\S}\mathbb{T}_q^n,r=\sum_{j=1}^{n}s_j\cdot a_j+e,e\leftarrow \hat{X}\} D1={(a,r)a=(a1,,an)§ Tqn,r=j=1nsjaj+e,eX^}
  • Definition 2(GLWE problem over the discretized torus):
    N , q , k ∈ N N,q,k\in\mathbb{N} N,q,kN N N N为power of 2, s = ( s 1 , ⋯   , s k ) ← § B N [ X ] k \mathbf{s}=(\mathfrak{s}_1,\cdots,\mathfrak{s}_k)\xleftarrow{\S}\mathbb{B}_N[X]^k s=(s1,,sk)§ BN[X]k。同时,令 X ^ \hat{X} X^为基于 q − 1 Z N [ X ] q^{-1}\mathbb{Z}_N[X] q1ZN[X]的error distribution,即,多项式 q − 1 Z N [ X ] q^{-1}\mathbb{Z}_N[X] q1ZN[X]的系数均源自 X ^ \hat{X} X^。基于discretized torus的general learning with errors(GLWE)难题为:
    区分如下2个distributions中选中的采样:
    D 0 = { ( a , r ) ∣ a ← § T N , q [ X ] k , r ← § T N , q [ X ] } \mathcal{D}_0=\{(\mathfrak{a},\mathfrak{r})|\mathfrak{a}\xleftarrow{\S}\mathbb{T}_{N,q}[X]^k,\mathfrak{r}\xleftarrow{\S}\mathbb{T}_{N,q}[X]\} D0={(a,r)a§ TN,q[X]k,r§ TN,q[X]}
    D 1 = { ( a , r ) ∣ a = ( a 1 , ⋯   , a k ) ← § T N , q [ X ] k , r = ∑ j = 1 k s j ⋅ a j + e , e ← X ^ } \mathcal{D}_1=\{(\mathfrak{a},\mathfrak{r})|\mathfrak{a}=(\mathfrak{a}_1,\cdots,\mathfrak{a}_k)\xleftarrow{\S}\mathbb{T}_{N,q}[X]^k,\mathfrak{r}=\sum_{j=1}^{k}\mathfrak{s}_j\cdot \mathfrak{a}_j+e,e\leftarrow \hat{X}\} D1={(a,r)a=(a1,,ak)§ TN,q[X]k,r=j=1ksjaj+e,eX^}

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)假设。

基于[Discretized] Torus的全同态加密指引(1)_第4张图片
如上表所示,展示了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 σ值(即,更不密集的噪声)。

3. TLWE Encryption

3.1 描述

基于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=1nsjaj+e所构建的某torus元素 r ∈ T q r\in\mathbb{T}_q rTq,与随机torus元素 r ∈ T q r\in\mathbb{T}_q rTq,二者不可区分,即使已知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=1nsjaj+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 PTq,具体为:
P = { 0 , 1 p , ⋯   , p − 1 p } \mathcal{P}=\{0,\frac{1}{p},\cdots,\frac{p-1}{p}\} P={0,p1,,pp1}
其中,整数 p p p可整除 q q q,且 p ≥ 2 p\geq 2 p2。只要密文中的噪声不太大,就支持唯一解密。
特别地,基于以上 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=1nsjaj+μ+e为对明文 μ ∈ P \mu\in\mathcal{P} μP的加密,则明文 μ \mu μ可通过如下2个步骤恢复:

  • 1)计算 μ ∗ = b − ∑ j = 1 n s j ⋅ a j \mu^*=b-\sum_{j=1}^{n}s_j\cdot a_j μ=bj=1nsjaj(在 T q \mathbb{T}_q Tq中)
  • 2)返回 P \mathcal{P} P中最接近的明文。

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:=p1Z/Z=TpTq,其中 p p p可整除 q q q。根据基于 R \mathbb{R} R的error distribution X X X,可推导出基于 q − 1 Z q^{-1}\mathbb{Z} q1Z的discretized distribution X ^ \hat{X} X^
noise error e ← X ^ e\leftarrow \hat{X} eX^定义为 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 e0X
密文的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 1jn。相应的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=1nsjaj+μ+e,其中 e ← X ^ e\leftarrow \hat{X} eX^。对 μ ∈ P \mu\in\mathcal{P} μP的TLWE加密结果为向量 ( a 1 , ⋯   , a n , b ) (a_1,\cdots,a_n,b) (a1,,an,b)

Remark 2:
该私钥加密方案是对称的:

  • 在加密和解密时使用的是相同的秘钥。公钥变种见附录A。

最终,完整的私钥加密方案——TLWE加密方案为:

  • 1) K e y G e n ( 1 λ ) KeyGen(1^{\lambda}) KeyGen(1λ):基于输入安全参数 λ \lambda λ,定义正整数 n n n,选择正整数 p , q p,q p,q,使得 p ∣ q p|q pq,并基于 R \mathbb{R} R的normal distribution X = N ( 0 , σ 2 ) X=\mathcal{N}(0,\sigma^2) X=N(0,σ2)推导出基于 q − 1 Z q^{-1}\mathbb{Z} q1Z的discretized error distribution X ^ \hat{X} X^。随机均匀采样获得向量 s = ( s 1 , ⋯   , s n ) ← § B n \mathbf{s}=(s_1,\cdots,s_n)\xleftarrow{\S}\mathbb{B}^n s=(s1,,sn)§ Bn。明文空间为 P = T p ⊂ T q \mathcal{P}=\mathbb{T}_p\sub\mathbb{T}_q P=TpTq。公共参数为 p p = { n , σ , p , q } pp=\{n,\sigma,p,q\} pp={n,σ,p,q},私钥为 s k = s sk=\mathbf{s} sk=s
  • 2) E n c r y p t s k ( μ ) Encrypt_{sk}(\mu) Encryptsk(μ):选择随机向量 ( a 1 , ⋯   , a n ) ← § T q (a_1,\cdots,a_n)\xleftarrow{\S}\mathbb{T}_q (a1,,an)§ Tq和“small” noise e ← X ^ e\leftarrow \hat{X} eX^,对 μ ∈ P \mu\in\mathcal{P} μP的加密为:
    c ← T L W E s ( μ ) = ( a 1 , ⋯   , a n , b ) ∈ T q n + 1 \mathbf{c}\leftarrow TLWE_{\mathbf{s}}(\mu)=(a_1,\cdots,a_n,b)\in\mathbb{T}_q^{n+1} cTLWEs(μ)=(a1,,an,b)Tqn+1
    其中:
    { μ ∗ = μ + e b = ∑ j = 1 n s j ⋅ a j + μ ∗ \left\{\begin{matrix} \mu^*=\mu+e \\ b=\sum_{j=1}^{n}s_j\cdot a_j+\mu^* \end{matrix}\right. {μ=μ+eb=j=1nsjaj+μ
  • 3) D e c r y p t s k ( c ) Decrypt_{sk}(\mathbf{c}) Decryptsk(c):需使用私钥 s = ( s 1 , ⋯   , s n ) ← § B n \mathbf{s}=(s_1,\cdots,s_n)\xleftarrow{\S}\mathbb{B}^n s=(s1,,sn)§ Bn,对 c = ( a 1 , ⋯   , a n , b ) \mathbf{c}=(a_1,\cdots,a_n,b) c=(a1,,an,b)进行解密,计算 T q \mathbb{T}_q Tq内的:
    μ ∗ = b − ∑ j = 1 n s j ⋅ a j \mu^*=b-\sum_{j=1}^{n}s_j\cdot a_j μ=bj=1nsjaj
    并返回:
    μ = ⌊ p u ∗ ⌉ m o d    p p \mu=\frac{\lfloor p u^* \rceil\mod p}{p} μ=ppumodp
    ,即,以最近的明文 μ ∈ P \mu\in\mathcal{P} μP,作为 c \mathbf{c} c的解密。

为便于标记,对于整数 k k k和torus元素 t ∈ T q ⊂ T t\in\mathbb{T}_q\sub\mathbb{T} tTqT,将 ⌊ 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,,pp1},令 c ← T L W E s ( μ ) = ( a 1 , ⋯   , a n , b ) \mathbf{c}\leftarrow TLWE_{\mathbf{s}}(\mu)=(a_1,\cdots,a_n,b) cTLWEs(μ)=(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=1nsjaj+μ+e e ← X ^ e\leftarrow \hat{X} eX^。由于 μ ∈ 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} μ=ppumodp,其中 μ ∗ : = μ + e ∈ T q ⊂ T \mu^*:=\mu+e\in\mathbb{T}_q\sub \mathbb{T} μ:=μ+eTqT。有 ⌊ 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 pumodp=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 ppumodp=pm=μ

举个例子:
基于[Discretized] Torus的全同态加密指引(1)_第5张图片

3.2 Encoding/Decoding

加密算法以(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=TpT,且 q = 2 Ω q=2^{\Omega} q=2Ω

  • 编码函数为: E n c o d e : M → P Encode:\mathcal{M}\rightarrow \mathcal{P} Encode:MP,将消息 m ∈ M m\in\mathcal{M} mM映射为 μ ∈ P \mu\in\mathcal{P} μP元素。编码用在加密之前。
  • 解码函数为: D e c o d e : P → M Decode:\mathcal{P}\rightarrow \mathcal{M} Decode:PM,将 μ ∈ P \mu\in\mathcal{P} μP元素映射为 m ∈ M m\in\mathcal{M} mM消息。解码用于解密之后。

接下来将考虑如下消息空间场景:

  • 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=q0Tq。bit 1被编码为torus元素 1 2 = q / 2 q ∈ T q \frac{1}{2}=\frac{q/2}{q}\in\mathbb{T}_q 21=qq/2Tq。相应的反向操作, 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={imodpiZ}=Z/pZ
    Δ = q / p ∈ Z \Delta=q/p\in\mathbb{Z} Δ=q/pZ,则相应的编解码分别为:
    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,,p1}。也可用于有符号整数,此时,“模 p p p” 返回的是 { − p 2 , ⋯   , p 2 − 1 } \{-\frac{p}{2},\cdots,\frac{p}{2}-1\} {2p,,2p1}内的有符号表示。】
    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 p2,且 p ∣ q p|q pq,与 整数模 p p p 情况类似,torus元素格式为 t = i p t=\frac{i}{p} t=pi,其中 i ∈ Z / p Z i\in\mathbb{Z}/p\mathbb{Z} iZ/pZ。这些torus元素构成了固定精度torus元素子集。对于 x ∈ T p = p − 1 Z / Z x\in\mathbb{T}_p=p^{-1}\mathbb{Z}/\mathbb{Z} xTp=p1Z/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(μ)=ppμmodp

3.3 Implementation Notes

Batching ciphertexts,批量加密:
当有 m m m个明文(torus元素)待加密时,若基于不同的秘钥加密,可复用相同的随机值。特别地,对于 μ 1 , ⋯   , μ m ∈ P \mu_1,\cdots,\mu_m\in\mathcal{P} μ1,,μmP,设置 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 1im,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,jaj+μ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。

4. TGLWE Encryption

4.1 TGLWE描述

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,vTN,q[X]

  • a + v \mathfrak{a+v} a+v:表示 a , v \mathfrak{a,v} a,v的加法模 ( X N + 1 , q ) (X^N+1,q) (XN+1,q)运算

已知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] aZN,q[X],vTN,q[X]

  • a ⋅ v \mathfrak{a\cdot v} av:表示 a , v \mathfrak{a,v} a,v的外乘模 ( X N + 1 , q ) (X^N+1,q) (XN+1,q)运算。【注意,并未定义internal product运算。】

明文空间为多项式子集:
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]
其中:

  • P = T p = p − 1 Z / Z \mathcal{P}=\mathbb{T}_p=p^{-1}\mathbb{Z}/\mathbb{Z} P=Tp=p1Z/Z
  • p p p可整除 q q q。从而强制, P N [ X ] \mathcal{P}_N[X] PN[X] T N , q [ X ] \mathbb{T}_{N,q}[X] TN,q[X]的加法子群。

最终,完整TGLWE加密方案为:

  • 1) K e y G e n ( 1 λ ) KeyGen(1^{\lambda}) KeyGen(1λ):基于输入安全参数 λ \lambda λ,定义一组整数 ( N , k ) (N,k) (N,k),其中 N N N为power of 2, k ≥ 1 k\geq 1 k1,选择正整数 p , q p,q p,q,使得 p ∣ q p|q pq,并基于 R N [ X ] \mathbb{R}_N[X] RN[X]的normal distribution X = N ( 0 , σ 2 ) \mathcal{X}=\mathcal{N}(0,\sigma^2) X=N(0,σ2)推导出基于 q − 1 Z N [ X ] q^{-1}\mathbb{Z}_N[X] q1ZN[X]的discretized error distribution X ^ \hat{\mathcal{X}} X^。随机均匀采样获得向量 s = ( s 1 , ⋯   , s k ) ← § B N [ X ] k \mathfrak{s}=(\mathfrak{s}_1,\cdots,\mathfrak{s}_k)\xleftarrow{\S}\mathbb{B}_N[X]^k s=(s1,,sk)§ BN[X]k。明文空间为 P N [ X ] = T N , p [ X ] ⊂ T N , q [ X ] \mathcal{P}_N[X]=\mathbb{T}_{N,p}[X]\sub\mathbb{T}_{N,q}[X] PN[X]=TN,p[X]TN,q[X]。公共参数为 p p = { k , N , σ , p , q } pp=\{k,N,\sigma,p,q\} pp={k,N,σ,p,q},私钥为 s k = s sk=\mathfrak{s} sk=s
  • 2) E n c r y p t s k ( μ ) Encrypt_{sk}(\mu) Encryptsk(μ):选择随机向量 ( a 1 , ⋯   , a k ) ← § T N , q [ X ] k (\mathfrak{a}_1,\cdots,\mathfrak{a}_k)\xleftarrow{\S}\mathbb{T}_{N,q}[X]^k (a1,,ak)§ TN,q[X]k和“small” noise e ← X ^ e\leftarrow \hat{\mathcal{X}} eX^,对 u ∈ P N [ X ] \mathfrak{u}\in\mathcal{P}_N[X] uPN[X]的加密为:
    c ← T G L W E s ( u ) = ( a 1 , ⋯   , a k , v ) ∈ T N , q [ X ] k + 1 \mathfrak{c}\leftarrow TGLWE_{\mathfrak{s}}(\mathfrak{u})=(\mathfrak{a}_1,\cdots,\mathfrak{a}_k,\mathfrak{v})\in\mathbb{T}_{N,q}[X]^{k+1} cTGLWEs(u)=(a1,,ak,v)TN,q[X]k+1
    其中:
    { u ∗ = u + e v = ∑ j = 1 n s j ⋅ a j + u ∗ \left\{\begin{matrix} \mathfrak{u}^*=\mathfrak{u}+e \\ \mathfrak{v}=\sum_{j=1}^{n}\mathfrak{s}_j\cdot \mathfrak{a}_j+\mathfrak{u}^* \end{matrix}\right. {u=u+ev=j=1nsjaj+u
  • 3) D e c r y p t s k ( c ) Decrypt_{sk}(\mathfrak{c}) Decryptsk(c):需使用私钥 s = ( s 1 , ⋯   , s n ) ← § B n \mathfrak{s}=(\mathfrak{s}_1,\cdots,\mathfrak{s}_n)\xleftarrow{\S}\mathbb{B}^n s=(s1,,sn)§ Bn,对 c = ( a 1 , ⋯   , a n , v ) \mathfrak{c}=(\mathfrak{a}_1,\cdots,\mathfrak{a}_n,\mathfrak{v}) c=(a1,,an,v)进行解密,计算 T N , q [ X ] \mathbb{T}_{N,q}[X] TN,q[X]内的:
    u ∗ = v − ∑ j = 1 n s j ⋅ a j \mathfrak{u}^*=\mathfrak{v}-\sum_{j=1}^{n}\mathfrak{s}_j\cdot \mathfrak{a}_j u=vj=1nsjaj
    并返回:
    u = ⌊ p u ∗ ⌉ m o d    p p \mathfrak{u}=\frac{\lfloor p \mathfrak{u}^* \rceil\mod p}{p} u=ppumodp
    ,即,以最近的明文 u ∈ P N [ X ] \mathfrak{u}\in\mathcal{P}_N[X] uPN[X],作为 c \mathfrak{c} c的解密。

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。

4.2 TGLWE Encoding/Decoding

TGLWE支持对任意多项式 u ∈ P N [ X ] \mathfrak{u}\in\mathcal{P}_N[X] uPN[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,,μN1P加密时,可将其表示为多项式 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++μN1XN1的系数。该优化又名coefficient packing。

4.3 TGLWE实现注意事项

2个多项式的(外)乘是吃力的操作。不过,cyclotomic多项式 Φ ( X ) = X N + 1 \Phi(X)=X^N+1 Φ(X)=XN+1的特殊结构,使得该计算要更容易点。
比如:
基于[Discretized] Torus的全同态加密指引(1)_第6张图片
通常情况下,对于 Φ ( 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] pZN,q[X],qZN,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++pN1XN1q(X)=q0+q1X++qN1XN1借助 X N + i ≡ − X i ( m o d    X N + 1 ) X^{N+i}\equiv -X^i(\mod X^N+1) XN+iXi(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++pN1XN1)(q0+q1X++qN1XN1)=p0q0p1qN1pN1q1+(p0q1+p1q0pN1q2)X++(p0qN1+p1qN2++pN1q0)XN1

这需要 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 0i,jN1。当 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,,N1},则该乘法公式可简化为:
基于[Discretized] Torus的全同态加密指引(1)_第7张图片
或,更简洁表示为:
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 Xjq(X)=i=0j1qi+NjXi+i=jN1qijXi
X N + j ⋅ q ( X ) = − X j ⋅ q ( X ) X^{N+j}\cdot \mathfrak{q}(X)=-X^j\cdot \mathfrak{q}(X) XN+jq(X)=Xjq(X)

该关系又名negacyclic property。
示例为:
基于[Discretized] Torus的全同态加密指引(1)_第8张图片

参考资料

[1] Zama团队的Marc Joye 2021年论文 Guide to Fully Homomorphic Encryption over the [Discretized] Torus

FHE系列博客

  • 技术探秘:在RISC Zero中验证FHE——由隐藏到证明:FHE验证的ZK路径(1)

你可能感兴趣的:(基础理论,同态加密,区块链,算法)