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=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]。
1.2 noise处理:bootstrapping trick
大多数全同态加密依赖于hard lattice problems。为此,生成的密文中必须包含一定级别的noise,以确保加密的安全性。
问题在于:
- 同态计算会增加密文中的噪声级别。

一旦噪声低于特定阈值,该密文可被解密。当若该噪声增长过多,其超过了数据自身,将使得无法解密。为避免出现无法解密的情况,可对密文应用一种特殊的降噪操作——称为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,x−y)。更一般地说,Kolmogorov的superposition定理[Kol57]指出,任何多变量函数都可表示为单变量函数的线性组合。这产生了functional电路的计算范式,其中加密方案可以是全同态的,只要它实现同态加法和单变量函数。单变量函数可使用可编程自举进行同态评估,而密文的加法则以分级的方式进行评估。
1.4 神经网络应用

神经网络为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位安全级别。

具体运行时长见上表。为参考,还包括了未加密推理的时间。重要的是要注意,对应于独立运行的单个推理的评估的时间;特别是,这些时间不会在一批推理中摊销。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} k∈Z,t∈T,则:
- 若 k ≥ 0 k\geq 0 k≥0,可定义 k ⋅ t = t + ⋯ + t (共 k 次) k\cdot t=t+\cdots +t(共k次) k⋅t=t+⋯+t(共k次)
- 若 k < 0 k<0 k<0,可定义 k ⋅ t = ( − k ) ⋅ ( − t ) k\cdot t=(-k)\cdot (-t) k⋅t=(−k)⋅(−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 , l ∈ Z 和 a , b ∈ T k,l\in \mathbb{Z}和a,b\in\mathbb{T} k,l∈Z和a,b∈T,有 ( k + l ) ⋅ a = k ⋅ a + l ⋅ a (k+l)\cdot a=k\cdot a+l\cdot a (k+l)⋅a=k⋅a+l⋅a和 k ⋅ ( a + b ) = k ⋅ a + k ⋅ b k\cdot (a+b)=k\cdot a+k\cdot b k⋅(a+b)=k⋅a+k⋅b。
- 进一步,该external product是homogeneous的:对于任意的 k , l ∈ Z 和 t ∈ T k,l\in\mathbb{Z}和t\in\mathbb{T} k,l∈Z和t∈T,有 k ⋅ ( l ⋅ t ) = ( k l ) ⋅ t k\cdot (l\cdot t)=(kl)\cdot t k⋅(l⋅t)=(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=5⋅52=0和 k ⋅ a + l ⋅ a = 4 5 + 1 5 = 0 k\cdot a+l\cdot a=\frac{4}{5}+\frac{1}{5}=0 k⋅a+l⋅a=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)=2⋅51=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} k⋅a+k⋅b=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⋅(l⋅t)=2⋅51=52和 ( k l ) ⋅ t = 6 ⋅ 2 5 = 2 5 (kl)\cdot t=6\cdot \frac{2}{5}=\frac{2}{5} (kl)⋅t=6⋅52=52。
Torus多项式:
- 基于torus的多项式
- 以 Φ ( X ) \Phi(X) Φ(X)来表示 M M M-th cyclotomic多项式,即,为唯一的不可约多项式,其整数系数可整除 X M − 1 X^M-1 XM−1,但对任意的 k < M k<M k<M不可整除 X k − 1 X^k-1 Xk−1。
- 以 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。
- 考虑到其多项式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为:
如,若
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,则有:
- ( 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} (r⋅p)(X)=54X2+157+31=−54+157X+31=157X+158。注意该多项式定义于对 X 2 + 1 X^2+1 X2+1取模,从而有 X 2 ≡ − 1 X^2\equiv -1 X2≡−1。
2.2 Discretized Torus
令
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。
- 参数 Ω \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 Ω=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 ⋅’。
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} 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)。
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,n∈N, 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} q−1Z的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=1nsj⋅aj+e,e←X^} - Definition 2(GLWE problem over the discretized torus):
令 N , q , k ∈ N N,q,k\in\mathbb{N} N,q,k∈N, 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] q−1ZN[X]的error distribution,即,多项式 q − 1 Z N [ X ] q^{-1}\mathbb{Z}_N[X] q−1ZN[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=1ksj⋅aj+e,e←X^}
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
σ值(即,更不密集的噪声)。
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=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个步骤恢复:
- 1)计算 μ ∗ = b − ∑ j = 1 n s j ⋅ a j \mu^*=b-\sum_{j=1}^{n}s_j\cdot a_j μ∗=b−∑j=1nsj⋅aj(在 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:=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:
该私钥加密方案是对称的:
- 在加密和解密时使用的是相同的秘钥。公钥变种见附录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 p∣q,并基于 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} q−1Z的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=Tp⊂Tq。公共参数为 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}
e←X^,对
μ
∈
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} c←TLWEs(μ)=(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=1nsj⋅aj+μ∗ - 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 μ∗=b−∑j=1nsj⋅aj
并返回:
μ = ⌊ p u ∗ ⌉ m o d p p \mu=\frac{\lfloor p u^* \rceil\mod p}{p} μ=p⌊pu∗⌉modp
,即,以最近的明文 μ ∈ 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} 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=μ。
举个例子:

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=Tp⊂T,且 q = 2 Ω q=2^{\Omega} q=2Ω。
- 编码函数为: E n c o d e : M → P Encode:\mathcal{M}\rightarrow \mathcal{P} Encode:M→P,将消息 m ∈ M m\in\mathcal{M} m∈M映射为 μ ∈ P \mu\in\mathcal{P} μ∈P元素。编码用在加密之前。
- 解码函数为: D e c o d e : P → M Decode:\mathcal{P}\rightarrow \mathcal{M} Decode:P→M,将 μ ∈ P \mu\in\mathcal{P} μ∈P元素映射为 m ∈ M m\in\mathcal{M} m∈M消息。解码用于解密之后。
接下来将考虑如下消息空间场景:
-
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
3.3 Implementation Notes
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。
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,v∈TN,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] a∈ZN,q[X],v∈TN,q[X]:
- a ⋅ v \mathfrak{a\cdot v} a⋅v:表示 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=p−1Z/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 k≥1,选择正整数 p , q p,q p,q,使得 p ∣ q p|q p∣q,并基于 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] q−1ZN[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}}
e←X^,对
u
∈
P
N
[
X
]
\mathfrak{u}\in\mathcal{P}_N[X]
u∈PN[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} c←TGLWEs(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=1nsj⋅aj+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∗=v−∑j=1nsj⋅aj
并返回:
u = ⌊ p u ∗ ⌉ m o d p p \mathfrak{u}=\frac{\lfloor p \mathfrak{u}^* \rceil\mod p}{p} u=p⌊pu∗⌉modp
,即,以最近的明文 u ∈ P N [ X ] \mathfrak{u}\in\mathcal{P}_N[X] u∈PN[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] 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。
4.3 TGLWE实现注意事项
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
807

被折叠的 条评论
为什么被折叠?



