参考文献:
- [MP12] Micciancio D, Peikert C. Trapdoors for lattices: Simpler, tighter, faster, smaller[C]//Annual International Conference on the Theory and Applications of Cryptographic Techniques. Berlin, Heidelberg: Springer Berlin Heidelberg, 2012: 700-718.
- [OPP14] Ostrovsky R, Paskin-Cherniavsky A, Paskin-Cherniavsky B. Maliciously circuit-private FHE[C]//Annual Cryptology Conference. Berlin, Heidelberg: Springer Berlin Heidelberg, 2014: 536-553.
- [BV14] Brakerski Z, Vaikuntanathan V. Lattice-based FHE as secure as PKE[C]//Proceedings of the 5th conference on Innovations in theoretical computer science. 2014: 1-12.
- [BPMW16] Bourse F, Del Pino R, Minelli M, et al. FHE circuit privacy almost for free[C]//Annual International Cryptology Conference. Berlin, Heidelberg: Springer Berlin Heidelberg, 2016: 62-89.
文章目录
- GSW for for Branching programs
- FHE for NC1
- secure as PKE
- Circuit Privacy Almost for Free
- Circuit Privacy
- Core Randomization Lemma
- Circuit Private FHE
GSW for for Branching programs
[BV14] 展示了 GSW 的非对称噪声增长,并利用分支程序的每条语句都依赖新鲜的输入密文,给出了可计算任意 N C 1 NC^1 NC1 电路的 Level FHE,噪声比率为 α = n − c , c > 0 \alpha=n^{-c},c>0 α=n−c,c>0。然后利用连续的 dimension-modulus reduction procedure,将它降低到了 α ≤ 1 / O ~ κ ( n ϵ ⋅ n log q ) \alpha \le 1/\tilde O_\kappa(n^\epsilon \cdot \sqrt{n\log q}) α≤1/O~κ(nϵ⋅nlogq),最终给出了第一个满足以下归约的全同态加密方案:
- 量子归约到近似因子为 O ~ ( n 1.5 + ϵ ) \tilde O(n^{1.5+\epsilon}) O~(n1.5+ϵ) 的 GapSVP 问题
- 经典归约到近似因子为 O ~ ( n 2 + ϵ ) \tilde O(n^{2+\epsilon}) O~(n2+ϵ) 的 GapSVP 问题
换句话说,自举程序并不会严重降低 FHE 的安全性,因此 FHE 和一般的 PKE 同样安全。其近似因子仅为多项式的(噪声-模数比值是多项式的)。
FHE for NC1
Branching Program 的定义为:
根据 Barrington’s Theorem 可知,“多项式大小 5-PBP 可计算类” 等价于 N C 1 NC^1 NC1 类(对数深度的并行电路)。因此我们选取 W = 5 W=5 W=5,状态被表示为特征向量 v t ∈ { 0 , 1 } 5 v_t \in \{0,1\}^5 vt∈{0,1}5,每个 enrty 都是布尔值。我们根据 π t , 0 , π t , 1 \pi_{t,0},\pi_{t,1} πt,0,πt,1 和 x v a r ( t ) x_{var(t)} xvar(t),用 GSW 同态地计算 BP 程序中的状态转移。
同态计算 5-PBP 的算法如下:
为了计算结果的解密正确性,要求噪声的高斯分布参数为:
α
≤
1
Θ
~
κ
(
4
d
⋅
n
log
(
q
)
)
\alpha \le \dfrac{1}{\tilde \Theta_\kappa\left(4^d \cdot \sqrt{n \log (q)}\right)}
α≤Θ~κ(4d⋅nlog(q))1
恰好 GSW 的解密电路属于
N
C
1
NC^1
NC1 类。因此附加上循环安全假设,容易构造出 pure FHE,它的噪声比率仅为多项式级别(之前的 BGV/BFV 自举需要指数级的)。
secure as PKE
但是,上述的 α \alpha α 依然有些大了。现在我们将上述的 FHE 变得更加安全(进一步降低噪声比率)。两个关键技术:
- 密文随机化(Partial Randomization),
- 维度-模数约简(Dimension-Modulus Reduction),
[BV14] 设计了一个维度约简程序:设置一个维度-模数的梯子,在最高层 L e v e l = L Level=L Level=L 上同态计算 BP 程序,然后利用秘钥切换依次降低维度-模数,在最底层 L e v e l = 0 Level=0 Level=0 执行解密任务。 s L , p k L s_L,pk_L sL,pkL 用于加密, s 0 s_0 s0 用于解密。
那么自举程序为:
- 设置自举秘钥为最底层私钥的密文, K i ← D i m R e d u c e d . S e c E n c s k ( B i t D e c o m p ( s 0 ) [ i ] ) K_i \leftarrow DimReduced.SecEnc_{sk}(BitDecomp(s_0)[i]) Ki←DimReduced.SecEncsk(BitDecomp(s0)[i])
- 根据最底层的两个密文 c 0 , c 1 c_0,c_1 c0,c1,构造增强解密函数 f c 1 , c 2 ( s ) = N A N D ( D e c s ( c 0 ) , D e c s ( c 1 ) ) f_{c_1,c_2}(s) = NAND(Dec_s(c_0), Dec_s(c_1)) fc1,c2(s)=NAND(Decs(c0),Decs(c1)),将它转化为关于 B i t D e c o m p ( s 0 ) BitDecomp(s_0) BitDecomp(s0) 的 5-PBP 程序
- 利用维度约简的同态计算过程,执行 E v a l ( f c 1 , c 2 , K i ) Eval(f_{c_1,c_2},K_i) Eval(fc1,c2,Ki)
为了解密正确性,我们设置
α
(
n
)
=
1
Θ
~
κ
(
n
ϵ
⋅
n
log
(
q
)
)
q
(
n
)
≥
O
~
(
n
α
(
n
)
)
\begin{aligned} \alpha(n) &= \dfrac{1}{\tilde \Theta_\kappa\left(n^\epsilon \cdot \sqrt{n \log (q)}\right)}\\ q(n) &\ge \tilde O\left( \dfrac{\sqrt n}{\alpha(n)} \right) \end{aligned}
α(n)q(n)=Θ~κ(nϵ⋅nlog(q))1≥O~(α(n)n)
它们满足
α
⋅
q
≈
n
\alpha \cdot q \approx \sqrt n
α⋅q≈n,这是存在 LWE 从最坏情况到平均情况归约的最小的
q
q
q 取值。
上述 FHE 的安全性归约结果:
Circuit Privacy Almost for Free
[BPMW16] 对 [BV14] 略作修改,给出了第一个 “circuit-private FHE for NC1 circuits under the standard LWE assumption with polynomial modulus-to-noise ratio”。
Circuit Privacy
在 FHE 同态计算过程中,不同的 f f f 导致了不同的计算电路,于是计算结果中的噪声项 e e e 的增长规模是依赖于这个函数的。例如 FHE-based MPC 场景:Alice 拥有数据 m m m,Bob 拥有函数 f f f,它们执行 MPC 计算出 f ( m ) f(m) f(m),但是 Alice 可以根据收到的 E n c ( f ( m ) ) Enc(f(m)) Enc(f(m)) 密文推断出 f f f 的部分信息,这导致上述的 MPC 并不安全。
有几种达到电路隐私的手段:
- 噪声洪泛(noise flooding):对于计算结果,添加相对于结果噪声项 e e e 超多项式大的另一个噪声。但是这要求噪声-模数的比值本身就是超多项式的,困难问题的难度被减弱。
- 重加密(re-encrypt),
- 混淆电路:[OPP14] 给出了一个通用转换框架,使用 garbled circuits 实现普通 FHE 转化为电路隐私的 FHE。但是需要把 FHE 中的代数结构编码为布尔电路,这牺牲了 FHE 的多跳(multi-hop)能力。
- 自举程序:主要的问题就是自举代价极高,另外还需要额外的循环安全假设。
电路隐私的定义:
[BPMW16] 利用 Gaussian leftover hash lemma,对 [BV14] 的 GSW for BP 略作修改,给出了特定于 GSW 方案的电路隐私 Level FHE 方案。
Core Randomization Lemma
根据 [MP12],本原格 Λ ( G ) \Lambda(G) Λ(G) 及其对偶上的 f G − 1 , g G − 1 f_G^{-1},g_G^{-1} fG−1,gG−1 都是及其容易计算的。特别地,因为 gadget 矩阵的 G G G 的特殊结构,Kalien 原像采样算法极其高效。
[BPMW16] 利用 Generalized leftover hash lemma 等若干引理,推导出了 LWE 样本的随机化引理,
给定一组 LWE 样本
C
=
(
A
,
s
T
A
+
e
)
∈
Z
q
n
×
m
C=(A,s^TA+e) \in \mathbb Z_q^{n \times m}
C=(A,sTA+e)∈Zqn×m,对于任意的
v
∈
Z
q
n
v \in \mathbb Z_q^n
v∈Zqn,在陪集
v
+
Λ
q
⊥
(
G
T
)
v+\Lambda^\perp_q(G^T)
v+Λq⊥(GT) 上按照离散高斯分布采样,得到
x
=
G
r
a
n
d
−
1
(
v
)
∈
Z
m
x=G^{-1}_{rand}(v) \in \mathbb Z^m
x=Grand−1(v)∈Zm,另外再加上随机偏移
y
∈
Z
y \in \mathbb Z
y∈Z,那么就有如下两个分布统计不可区分
C
⋅
G
r
a
n
d
−
1
(
(
0
,
0
,
⋯
,
0
)
)
+
(
0
,
y
)
≡
s
C
⋅
G
r
a
n
d
−
1
(
(
1
,
0
,
⋯
,
0
)
)
+
(
0
,
y
′
)
C \cdot G^{-1}_{rand}((0,0,\cdots,0)) + (0,y) \equiv_s C \cdot G^{-1}_{rand}((1,0,\cdots,0)) + (0,y')
C⋅Grand−1((0,0,⋯,0))+(0,y)≡sC⋅Grand−1((1,0,⋯,0))+(0,y′)
这里
G
r
a
n
d
−
1
G^{-1}_{rand}
Grand−1 的随机性是必要的,它使得不同的
v
v
v 下的分布有相同的中心(same center)。随机偏移
y
y
y 也是必要的,它使得不同的
v
v
v 下的分布有相同的支撑(same support)。注意这里的
y
y
y 是短的,而 noise flooding 则需要选取超多项式大小。
Circuit Private FHE
为了实现电路隐私的 GSW 方案,分为三个步骤,
- Generating fresh LWE samples:给定一组有界数量的 LWE 样本 ( A , b = s T A + e T ) (A,b=s^TA+e^T) (A,b=sTA+eT),按照参数 r = O ~ ( 1 ) r=\tilde O(1) r=O~(1) 离散高斯采样 x x x,按照参数 O ( r ⋅ ∥ e ∥ ) O(r \cdot \|e\|) O(r⋅∥e∥) 离散高斯采样 y y y 平滑噪声(smoothing noise),那么我们得到了一个新的 LWE 样本 ( A x , b x + y ) (Ax,bx+y) (Ax,bx+y),其中 A x Ax Ax 统计接近于均匀分布,噪声项 e T x + y e^Tx+y eTx+y 统计接近于参数 O ( r ⋅ ∥ e ∥ ) O(r \cdot \|e\|) O(r⋅∥e∥) 的离散高斯分布。对比于 noise flooding 的缺点是,这泄露了 ∥ e ∥ \|e\| ∥e∥ 的规模信息(Alice 有私钥,可以解密出噪声项 e T x + y e^Tx+y eTx+y)。
- Randomizing and Scaling GSW ciphertexts:根据 Core Randomization Lemma,随机数 x x x 仅仅取自陪集 v + Λ q ⊥ ( G T ) v+\Lambda_q^\perp(G^T) v+Λq⊥(GT) 上参数 r = O ~ ( 1 ) r=\tilde O(1) r=O~(1) 的离散高斯分布,就足够使得新样本是统计接近均匀分布组合高斯分布的了。给定一个 GSW 密文 C = ( A , b ) + μ G C=(A,b)+\mu G C=(A,b)+μG,那么 C ⋅ G r a n d − 1 ( G ) + ( 0 , y ) C \cdot G^{-1}_{rand}(G)+(0,y) C⋅Grand−1(G)+(0,y) 就是随机化的密文,加密的消息不变,噪声项略微增大。给定常数 a ∈ { 0 , 1 } a \in \{0,1\} a∈{0,1}(就是 Bob 的函数),我们采样 x = G r a n d − 1 ( a ⋅ G ) x=G^{-1}_{rand}(a \cdot G) x=Grand−1(a⋅G),这里的 a G aG aG 其实就是 a a a 的无噪声密文。那么 C ⋅ G r a n d − 1 ( a ⋅ G ) + ( 0 , y ) C \cdot G^{-1}_{rand}(a \cdot G)+(0,y) C⋅Grand−1(a⋅G)+(0,y) 就是 a ⋅ μ a \cdot \mu a⋅μ 的随机密文,并且密文分布独立于 a a a 的值。
- Circuit-private homomorphic evaluation:使用 [BV14] 类似的 GSW 同态计算 BP 程序,只不过把它的 C ⋅ G d e t − 1 ( V ) C \cdot G^{-1}_{det}(V) C⋅Gdet−1(V) 转变为了 C ⋅ C r a n d − 1 ( V ) + ( 0 , y ) C \cdot C^{-1}_{rand}(V)+(0,y) C⋅Crand−1(V)+(0,y),就可以实现电路隐私,
修改 [BV14] 的 BP 同态运算为如下格式:
其中 C C C 是输入的密文, V V V 是中间状态的密文。形如 C i ⋅ G − 1 ( V j ) C_i \cdot G^{-1}(V_j) Ci⋅G−1(Vj) 的同态乘法格式,不仅仅导致了不平衡噪声增长,而且还隐藏了到底是哪个 V j V_j Vj 被使用,这就隐藏了 BP 程序。
不过,因为 V j V_j Vj 的噪声项依赖于 C i C_i Ci 的噪声项,因此最终计算结果会泄露各个 C i C_i Ci 被使用的次数。[BPMW16] 采取 Padding 方式,如果 C i C_i Ci 被调用了 τ i \tau_i τi 次,那么就对最终状态执行 L − τ i L-\tau_i L−τi 次关于 C i C_i Ci 的单位置换,使得全部输入的噪声项都是被累计 L L L 次。