全同态加密:BFV

参考文献:

  1. O. Regev. On lattices, learning with errors, random linear codes, and cryptography. In H. N. Gabow and R. Fagin, editors, STOC, pages 84–93. ACM, 2005. Full version in J. ACM 56(6), 2009.
  2. V. Lyubashevsky, C. Peikert, and O. Regev. On Ideal Lattices and Learning with Errors over Rings. In Advances in Cryptology - EUROCRYPT 2010, volume 6110 of Lecture Notes in Computer Science, pages 1–23. Springer, 2010. Full version of the paper available upon request from authors.
  3. Z. Brakerski. Fully Homomorphic Encryption without Modulus Switching from Classical GapSVP. IACR Cryptology ePrint Archive, 2012:78, 2012.
  4. Fan J, Vercauteren F. Somewhat practical fully homomorphic encryption[J]. Cryptology ePrint Archive, 2012.

文章目录

  • Regev Scheme
    • LPR Scheme
  • BFV
    • Brakerski Scheme
      • Without Modulus Switching
      • Scale Invariant LHE / FHE
    • Fan-Vercauteren Scheme
      • Relinearisation
        • 方案一
        • 方案二
      • SHE / FHE

Regev Scheme

2009 年,Regev 提出了第一个基于 LWE 的加密方案。方案如下:

全同态加密:BFV_第1张图片

LPR Scheme

在 Regev Scheme 中,明文空间是 Z 2 \mathbb Z_2 Z2,使用 most significant bit encoding。我们可以容易地修改它,使得密码方案基于 RLWE 问题,明文空间为 R t ,   t ≥ 2 R_t,\, t \ge 2 Rt,t2 ,只需把 δ = ⌊ q / 2 ⌉ \delta = \lfloor q/2 \rceil δ=q/2 替换为 Δ = ⌊ q / t ⌉ \Delta = \lfloor q/t \rceil Δ=q/t 即可。方案如下:

全同态加密:BFV_第2张图片

BFV

Brakerski Scheme

Without Modulus Switching

此方案是基于 LWE 的。对于 Regev Scheme,如果将向量 s , c s,c s,c 写成增广形式,那么有 < c , s > = q / 2 ⋅ m + e + q I = q/2 \cdot m+e+qI <c,s>=q/2m+e+qI,其中 ∣ e ∣ ≤ E < q / 4 |e| \le E < q/4 eE<q/4 I ∈ Z I \in \mathbb Z IZ 是个整数,密文 c c c 的分量取值范围是 ( − q / 2 , q / 2 ] (-q/2,q/2] (q/2,q/2]

考虑分数密文(fractional ciphertext) c ’ = c / q c’ = c/q c=c/q,那么
< c ′ , s > = 1 2 ⋅ m + e ′ + I = \frac{1}{2} \cdot m + e' + I <c,s>=21m+e+I

其中噪音 ∣ e ′ ∣ ≤ E / q = ϵ < 0.25 |e'| \le E/q = \epsilon < 0.25 eE/q=ϵ<0.25 是个小数,密文 c ’ c’ c 的各个分量的取值范围是 ( − 1 / 2 , 1 / 2 ] (-1/2,1/2] (1/2,1/2]

同态加法 c a d d = c 1 + c 2 c_{add} = c_1+c_2 cadd=c1+c2,有:
< c 1 + c 2 ,   s > = < c 1 , s > + < c 2 , s > = 1 2 m + ( e 1 + e 2 ) m o d    1 \begin{aligned} &= + \\ &= \frac{1}{2} m + (e_1+e_2) \mod 1 \end{aligned} <c1+c2,s>=<c1,s>+<c2,s>=21m+(e1+e2)mod1

同态乘法 c m u l t = 2 ⋅ c 1 ⊗ c 2 c_{mult} = 2 \cdot c_1 \otimes c_2 cmult=2c1c2,有:
< 2 ⋅ c 1 ⊗ c 2 ,   s ⊗ s > = 2 ⋅ < c 1 , s > ⋅ < c 2 , s > = 1 2 m 1 m 2 + 2 ( e 1 I 2 + e 2 I 1 ) + e 1 m 2 + e 2 m 1 + 2 e 1 e 2 m o d    1 \begin{aligned} <2 \cdot c_1 \otimes c_2,\, s \otimes s> &= 2 \cdot \cdot \\ &= \frac{1}{2} m_1m_2 + 2(e_1I_2 + e_2I_1) + e_1m_2 + e_2m_1 + 2e_1e_2 \mod 1 \end{aligned} <2c1c2,ss>=2<c1,s><c2,s>=21m1m2+2(e1I2+e2I1)+e1m2+e2m1+2e1e2mod1

其中 ∣ I 1 ∣ , ∣ I 2 ∣ |I_1|,|I_2| I1,I2 的界约为 ∥ s ∥ 1 \|s\|_1 s1,所以 c m u l t c_{mult} cmult 中的噪声的界为 O ( ∥ s ∥ 1 ) ⋅ ϵ O(\|s\|_1) \cdot \epsilon O(s1)ϵ。由于 Regev Scheme 中的私钥取自均匀分布,因此 ∥ s ∥ 1 ≈ n q \|s\|_1 \approx nq s1nq,模数 q q q 是安全参数 n n n 的指数级。而其他噪声 e 1 m 2 + e 2 m 1 ≤ 2 t ϵ e_1m_2+e_2m_1 \le 2t \epsilon e1m2+e2m12tϵ 2 e 1 e 2 ≤ 2 ϵ 2 2e_1e_2 \le 2\epsilon^2 2e1e22ϵ2 的占比很小。因此,主要噪声就是 2 ( e 1 I 2 + e 2 I 1 ) 2(e_1I_2 + e_2I_1) 2(e1I2+e2I1)

为了减小噪声,需要要减小私钥的 l 1 l_1 l1 范数。我们可以对解密电路做二进制分解binary decomposition),令 s = ∑ j 2 j s ( j ) s = \sum_j 2^j s^{(j)} s=j2js(j),其中 s ( j ) s^{(j)} s(j) 的各个元素是 s s s 的各个元素的第 j j j 比特。那么,解密电路化为:
< c , s > = ∑ j 2 j < c , s ( j ) > = < ( c ,   2 c ,   ⋯   ) ,    ( s ( 0 ) ,   s ( 1 ) ,   ⋯   ) > \begin{aligned} &= \sum_j 2^j \\ &= <(c,\, 2c,\, \cdots),\,\, (s^{(0)},\, s^{(1)},\, \cdots)> \end{aligned} <c,s>=j2j<c,s(j)>=<(c,2c,),(s(0),s(1),)>

那么,我们就将 s s s 下的密文 c c c,转化为了 ( s ( 0 ) ,   s ( 1 ) ,   ⋯   ) (s^{(0)},\, s^{(1)},\, \cdots) (s(0),s(1),) 下的密文 ( c ,   2 c ,   ⋯   ) (c,\, 2c,\, \cdots) (c,2c,)

二进制私钥的 l 1 l_1 l1 范数至多是其维度,即 O ( n ⋅ log ⁡ q ) = O ( p o l y ( n ) ) O(n \cdot \log q) = O(poly(n)) O(nlogq)=O(poly(n)),因此噪声增长是多项式级别的。也就是说,我们不必使用 BGV 中的模切换技术了!

在代码实现时,由于浮点数精度问题,我们将密文放大 q q q 倍。实质上是用 Z q \mathbb Z_q Zq 上的整数运算,来模拟 R / Z R/\mathbb Z R/Z 上的浮点数运算:令 y i = ⌊ q x i ⌉ y_i = \lfloor qx_i \rceil yi=qxi,那么
y 1 + y 2 ≈ ⌊ q ( x 1 + x 2 ) ⌉ ⌊ ( y 1 ⋅ y 2 ) / q ⌉ ≈ ⌊ q ⋅ x 1 ⋅ x 2 ⌉ \begin{aligned} y_1+y_2 \approx \lfloor q(x_1+x_2) \rceil\\ \lfloor (y_1 \cdot y_2)/q \rceil \approx \lfloor q \cdot x_1 \cdot x_2 \rceil \end{aligned} y1+y2q(x1+x2)⌉⌊(y1y2)/qqx1x2

这样,同态加法为 c 1 + c 2 c_1+c_2 c1+c2,同态乘法为 ⌊ 2 / q ⋅ c 1 ⊗ c 2 ⌉ \lfloor 2/q \cdot c_1 \otimes c_2 \rceil 2/qc1c2

有趣的是,此时的 Brakerski Scheme 的加解密算法与 Regev Scheme 完全一致。

Scale Invariant LHE / FHE

于是,我们可以实现 scale invariant L-homomorphic scheme: BGV 中的计算复杂的 “refresh” 过程,被更简单的 key switching 取代。

本方案中使用 BGV 的向量解压和密钥切换过程,

全同态加密:BFV_第3张图片
全同态加密:BFV_第4张图片

Brakerski Scheme 如下:

全同态加密:BFV_第5张图片

全同态加密:BFV_第6张图片
全同态加密:BFV_第7张图片

同态运算后,密文中携带的噪声为:

全同态加密:BFV_第8张图片

为了实现 L-homomorphic,需要噪声分布 χ \chi χ 的界 B B B 满足:
q / B ≥ ( O ( n log ⁡ q ) ) L + O ( 1 ) q/B \ge (O(n \log q))^{L+O(1)} q/B(O(nlogq))L+O(1)

由于解密电路的深度为 O ( log ⁡ n + log ⁡ log ⁡ q ) O(\log n + \log \log q) O(logn+loglogq),因此为了满足 Bootstrapping 的运算条件,需要
q / B ≥ ( n log ⁡ q ) O ( log ⁡ n + log ⁡ log ⁡ q ) q/B \ge (n \log q)^{O(\log n + \log \log q)} q/B(nlogq)O(logn+loglogq)

从而实现出一个 fully homomorphic encryption scheme

Fan-Vercauteren Scheme

Relinearisation

此方案将上述的基于 LWE 的 Brakerski Scheme 移植到了 RLWE 上。

在 LPR 方案中,环 R = Z [ x ] / ( f ( x ) ) R=\mathbb Z[x]/(f(x)) R=Z[x]/(f(x)),一般选取 f ( x ) = x 2 n + 1 f(x)=x^{2^n}+1 f(x)=x2n+1 为分圆多项式。在 FV Scheme 中,做优化 s , u ← R 2 s,u \leftarrow R_2 s,uR2(不再取自 χ \chi χ),其他的与 LPR 相同。

密文形如 c = ( c 0 ,   c 1 ) ∈ R 2 c=(c_0,\, c_1) \in R^2 c=(c0,c1)R2,密钥形如 s ′ = ( 1 , s ) ∈ R 2 s'=(1,s) \in R^2 s=(1,s)R2,那么解密过程可以视作是一次函数的求值
< c , s ′ > = c 0 + c 1 s = c ( s ) = Δ ⋅ m + v + q ⋅ r = c_0 + c_1 s = c(s) = \Delta \cdot m+v + q \cdot r <c,s>=c0+c1s=c(s)=Δm+v+qr

其中 r ∈ R r \in R rR,噪音大小为 ∥ v ∥ ≤ 2 δ R B 2 + B \|v\| \le 2 \delta_R B^2 + B v2δRB2+B,这里
δ R = m a x { ∥ a ⋅ b ∥ ∥ a ∥ ⋅ ∥ b ∥ :   a , b ∈ R } \delta_R = max\{ \frac{\|a \cdot b\|}{\|a\| \cdot \|b\|}:\, a,b \in R\} δR=max{abab:a,bR}

扩张因子expansion factor of R R R),其中的 ∥ a ∥ = max ⁡ i ∣ a i ∣ \|a\|=\max_i |a_i| a=maxiai无穷范数

同态加法就是多项式加法 c t a d d = c t 1 + c t 2 ct_{add} = ct_1+ct_2 ctadd=ct1+ct2,那么
[ ( c t 1 + c t 2 ) ( s ) ] q = Δ ⋅ [ m 1 + m 2 ] t + v 3 [(ct_1+ct_2)(s)]_q = \Delta \cdot [m_1+m_2]_t + v_3 [(ct1+ct2)(s)]q=Δ[m1+m2]t+v3

这里噪声 ∥ v 3 ∥ \|v_3\| v3 的增长是线性的。

同态乘法就是多项式乘法 c m u l t = t / q ⋅ c t 1 ⋅ c t 2 c_{mult} = t/q \cdot ct_1 \cdot ct_2 cmult=t/qct1ct2,那么
[ ( t / q ⋅ c t 1 ⋅ c t 2 ) ( s ) ] q = Δ ⋅ [ m 1 ⋅ m 2 ] t + v 3 [(t/q \cdot ct_1 \cdot ct_2)(s)]_q = \Delta \cdot [m_1 \cdot m_2]_t + v_3 [(t/qct1ct2)(s)]q=Δ[m1m2]t+v3

这里噪声 ∥ v 3 ∥ \|v_3\| v3 的增长因子粗略的是 2 ⋅ t ⋅ δ R 2 ⋅ ∥ s ∥ 2\cdot t\cdot \delta_R^2 \cdot \|s\| 2tδR2s

类似于 BV 方案的张量积让密文规模扩大,需要执行密钥切换过程,以降低其规模。在 FV 方案中的多项式乘积让密文的成为二次函数。我们需要执行重线性化Relinearisation)过程,使得密文保持为一次多项式:令 c t = [ c 0 , c 1 , c 2 ] ct = [c_0, c_1, c_2] ct=[c0,c1,c2],寻找 c t ′ = [ c 0 ′ , c 1 ′ ] ct' = [c_0', c_1'] ct=[c0,c1],使得
[ c 0 + c 1 ⋅ s + c 2 ⋅ s 2 ] q = [ c 0 ′ + c 1 ′ ⋅ s + r ] q [c_0+c_1 \cdot s+c_2 \cdot s^2]_q = [c_0'+c_1' \cdot s+r]_q [c0+c1s+c2s2]q=[c0+c1s+r]q

要保证噪声的无穷范数 ∥ r ∥ \|r\| r 很小。可以设置重线性化密钥relinearisation key)为:
r l k = ( [ − ( a 0 ⋅ s + e 0 ) + s 2 ] q ,   a 0 ) rlk = ([-(a_0 \cdot s+e_0)+s^2]_q,\, a_0) rlk=([(a0s+e0)+s2]q,a0)

其中 e 0 ← χ e_0 \leftarrow \chi e0χ a 0 ← R q a_0 \leftarrow R_q a0Rq。注意到 r l k [ 0 ] + r l k [ 1 ] ⋅ s = s 2 + e 0 rlk[0]+rlk[1] \cdot s = s^2+e_0 rlk[0]+rlk[1]s=s2+e0,那么令
c t ′ = ( c 0 + r l k [ 0 ] ⋅ c 2 ,   c 1 + r l k [ 1 ] ⋅ c 2 ) ct' = (c_0+rlk[0] \cdot c_2,\, c_1+rlk[1] \cdot c_2) ct=(c0+rlk[0]c2,c1+rlk[1]c2)

得到 r = e 0 ⋅ c 2 ∈ R r=e_0 \cdot c_2 \in R r=e0c2R,但是由于 c 2 ∈ R q c_2 \in R_q c2Rq,所以噪声 r r r 过大。需要降低 ∥ c 2 ∥ \|c_2\| c2 或者 ∥ r ∥ \|r\| r

方案一

c 2 c_2 c2 T T T 进制分解,从而降低范数 ∥ c 2 ∥ \|c_2\| c2,令 c 2 = ∑ i = 0 l − 1 T i ⋅ c 2 ( i ) c_2 = \sum_{i=0}^{l-1} T^i \cdot c_2^{(i)} c2=i=0l1Tic2(i),其中 l = ⌈ log ⁡ T ( q ) ⌉ l = \lceil\log_T(q) \rceil l=logT(q)⌉

对应的,设置重线性化密钥为:
r l k = { ( [ − ( a i ⋅ s + e i ) + T i ⋅ s 2 ] q ,   a i ) :   i = 0 , 1 , ⋯   , l − 1 } rlk = \{ ([-(a_i \cdot s+e_i) + T^i \cdot s^2]_q,\, a_i):\, i =0,1,\cdots,l-1 \} rlk={([(ais+ei)+Tis2]q,ai):i=0,1,,l1}

那么,新密文是
c 0 ′ = [ c 0 + ∑ i r l k [ i ] [ 0 ] ⋅ c 2 ( i ) ] q ,    c 1 ′ = [ c 1 + ∑ i r l k [ i ] [ 1 ] ⋅ c 2 ( i ) ] q c_0' = \left[ c_0 + \sum_i rlk[i][0] \cdot c_2^{(i)} \right]_q,\,\, c_1' = \left[ c_1 + \sum_i rlk[i][1] \cdot c_2^{(i)} \right]_q c0=[c0+irlk[i][0]c2(i)]q,c1=[c1+irlk[i][1]c2(i)]q

此时, r = ∑ i c 2 ( i ) ⋅ e i r = \sum_i c_2^{(i)} \cdot e_i r=ic2(i)ei,base T T T 越小,则范数 ∥ r ∥ \|r\| r 越小,但 r l k rlk rlk 越大,计算速度也越慢。注意到重线性化所引入的噪声 r r r 独立于密文噪声,为了保持良好的同态能力,应使得 r r r 不大于做密文噪声太多。

Dynamic Relinearisation:选取一个尽可能小的 T T T 计算出 r l k rlk rlk,如果多次乘法后密文的噪声增大,那么就可以从中提取出恰当的 T k T^k Tk r l k rlk rlk,来加速重线性化过程。

方案二

使用模切换,在一个大的模 p ⋅ q p \cdot q pq 上运算,然后使用除法降低范数 ∥ r ∥ \|r\| r,令重线性化密钥为:
r l k = ( [ − ( a 0 ⋅ s + e 0 ) + p ⋅ s 2 ] p ⋅ q ,   a 0 ) rlk = ([-(a_0 \cdot s+e_0) + p \cdot s^2]_{p \cdot q},\, a_0) rlk=([(a0s+e0)+ps2]pq,a0)

其中 a 0 ← R p ⋅ q a_0 \leftarrow R_{p \cdot q} a0Rpq e ← χ ′ e \leftarrow \chi' eχ,这里的分布 χ ′ ≠ χ \chi' \neq \chi χ=χ 是新分布。如果 p ⋅ q = q k ,   k ∈ R p \cdot q=q^k,\, k \in \mathbb R pq=qk,kR ∥ χ ∥ < B \|\chi\|χ<B,那么需要 ∥ χ ′ ∥ = B k > α 1 − k ⋅ q k − k ⋅ B k \|\chi'\| = B_k > \alpha^{1-\sqrt k} \cdot q^{k-\sqrt k} \cdot B^{\sqrt k} χ=Bk>α1k qkk Bk α ≈ 3.758 \alpha \approx 3.758 α3.758 是常数,以保证安全性不损失。

那么,
c 0 ′ ′ = [ ⌊ c 2 ⋅ r l k [ 0 ] p ⌉ ] q ,    c 1 ′ ′ = [ ⌊ c 2 ⋅ r l k [ 1 ] p ⌉ ] q c_0'' = \left[ \left\lfloor \frac{c_2 \cdot rlk[0]}{p} \right\rceil \right]_q,\,\, c_1'' = \left[ \left\lfloor \frac{c_2 \cdot rlk[1]}{p} \right\rceil \right]_q c0′′=[pc2rlk[0]]q,c1′′=[pc2rlk[1]]q

容易验证 c 0 ′ ′ + c 1 ′ ′ ⋅ s = c 2 ⋅ s 2 + r c_0''+c_1'' \cdot s = c_2 \cdot s^2 + r c0′′+c1′′s=c2s2+r,那么新密文就是 c t ′ = ( c 0 + c 0 ′ ′ ,   c 1 + c 1 ′ ′ ) ct' = (c_0+c_0'',\, c_1+c_1'') ct=(c0+c0′′,c1+c1′′),其中 ∥ r ∥ < q ⋅ B k ⋅ δ R p + δ R ⋅ ∥ s ∥ + 1 2 \|r\| < \dfrac{q \cdot B_k \cdot \delta_R}{p} + \dfrac{\delta_R \cdot \|s\| + 1}{2} r<pqBkδR+2δRs+1,整数 p p p 越大,那么范数 ∥ r ∥ \|r\| r 越小,但计算速度越慢。

Dynamic Relinearisation:选取一个足够大的 p p p 计算出 r l k rlk rlk,如果多次乘法后密文的噪声增大,那么可以从中提取出 p ′ ∣ p p'|p pp r l k rlk rlk,来加速重线性化过程。

SHE / FHE

我们可以实现基于 RLWE 的 somewhat homomorphic encryption scheme,

全同态加密:BFV_第9张图片
全同态加密:BFV_第10张图片

同态运算后,密文中携带的噪声为:

全同态加密:BFV_第11张图片

为了实现 L-homomorphic,需要噪声分布 χ \chi χ 的界 B B B 满足:
4 ⋅ δ R L ⋅ ( δ + 1.25 ) L + 1 ⋅ t L − 1 < ⌊ q B ⌋ 4 \cdot \delta_R^L \cdot (\delta+1.25)^{L+1} \cdot t^{L-1} < \left\lfloor \frac{q}{B} \right\rfloor 4δRL(δ+1.25)L+1tL1<Bq

为了实现 FHE,只需使得解密电路的深度小于 L L L 即可。环 R q R_q Rq 上的多项式运算的深度,计算挺麻烦的,没仔细看 \( ̄︶ ̄)/

你可能感兴趣的:(#,后量子密码学,同态加密,区块链,算法,多方安全计算,信息安全)