Linear Decryption: Rate-1 FHE TLP

2023-10-29 12:31
文章标签 linear rate decryption fhe tlp

本文主要是介绍Linear Decryption: Rate-1 FHE TLP,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

参考文献:

  1. [ILL89] Russell Impagliazzo, Leonid A. Levin, and Michael Luby. Pseudo-random generation from oneway functions (extended abstracts). In 21st Annual ACM Symposium on Theory of Computing, pages 12–24, Seattle, WA, USA, May 15–17, 1989. ACM Press.

  2. [RSW96] Rivest R L, Shamir A, Wagner D A. Time-lock puzzles and timed-release crypto[J]. 1996.

  3. [DJ01] Damgård I, Jurik M. A generalisation, a simplification and some applications of Paillier’s probabilistic public-key system[C]//Public Key Cryptography: 4th International Workshop on Practice and Theory in Public Key Cryptosystems, PKC 2001 Cheju Island, Korea, February 13–15, 2001 Proceedings 4. Springer Berlin Heidelberg, 2001: 119-136.

  4. [Mic19] Daniele Micciancio. From linear functions to fully homomorphic encryption. Technical report,2019. https://bacrypto.github.io/presentations/2018.11.30-Micciancio-FHE.pdf.

  5. [BDGM19] Brakerski Z, Döttling N, Garg S, et al. Leveraging linear decryption: Rate-1 fully-homomorphic encryption and time-lock puzzles[C]//Theory of Cryptography Conference. Cham: Springer International Publishing, 2019: 407-437.

  6. [MT19] Giulio Malavolta and Sri Aravinda Krishnan Thyagarajan. Homomorphic time-lock puzzles and applications. CRYPTO, 2019.

文章目录

  • Linear decrypt-and-multiply
    • from LHE to FHE
    • Linear Function
  • Rate-1 FHE
    • 密文收缩的 Regev
    • 扩展的 Paillier
    • Rate-1 FHE Construction
  • FH-TLP
    • Time-lock puzzles
    • Rate-1 FH-TLP

Linear decrypt-and-multiply

from LHE to FHE

[Mic19] 讨论了如何从弱线性同态(Weak Linear Homomorphic)得到全同态(Full Homomorphic)。

基于 LWE 的线性同态加密方案(Linear Homomorphic Encryption, LHE),不考虑细节,

  • 对称加密算法 E s ( m ; ( A , e ) ) : = ( A , A s + e + m ) ( m o d q ) E_s(m;(A,e)) := (A,As+e+m) \pmod q Es(m;(A,e)):=(A,As+e+m)(modq),可以视为 One-time Pad,特别地 ( O , m ) = E s ( m ; ( O , 0 ⃗ ) ) (O,m) = E_s(m;(O,\vec 0)) (O,m)=Es(m;(O,0 ))
  • 对称解密算法 D s ( ( A , b ) ) : = b − A s = m + e ( m o d q ) D_s((A,b)) := b-As = m+e \pmod q Ds((A,b)):=bAs=m+e(modq),这既是 c t = ( A , b ) ct=(A,b) ct=(A,b) 的线性函数,也是 s ′ = ( − s , 1 ) s'=(-s,1) s=(s,1) 的线性函数

由于解密是带噪的,因此我们往往对 m m m 做编码;这儿我们先不考虑纠错码。易知,上述的 LHE 满足:
E s ( m 1 ; ( A , e 1 ) ) + E s ( m 1 ; ( A , e 1 ) ) = E s ( m 1 + m 2 ; ( A , e 1 + e 2 ) ) c ⋅ E s ( m ; ( A , e ) ) = c ⋅ E s ( c ⋅ m ; ( c ⋅ A , c ⋅ e ) ) , c ∈ Z q E_s(m_1;(A,e_1))+E_s(m_1;(A,e_1)) = E_s(m_1+m_2;(A,e_1+e_2))\\ c \cdot E_s(m;(A,e)) = c \cdot E_s(c\cdot m;(c\cdot A,c\cdot e)),\,\, c \in \mathbb Z_q Es(m1;(A,e1))+Es(m1;(A,e1))=Es(m1+m2;(A,e1+e2))cEs(m;(A,e))=cEs(cm;(cA,ce)),cZq

由于数乘运算的噪声为 c ⋅ e c \cdot e ce,因此为了解密正确性,标量 c c c 是个有界范围的数。上述的 LHE 满足(弱)线性同态。为了计算任意标量 c c c 的数乘,可以定义 Powerof2 的密文:
E s ′ ( m ) = { E s ( m ) , E s ( 2 m ) , ⋯ , E s ( 2 log ⁡ q m ) } E'_s(m) = \{E_s(m),E_s(2m),\cdots,E_s(2^{\log q}m)\} Es(m)={Es(m),Es(2m),,Es(2logqm)}

那么对于任意的常数 c = ∑ i 2 i c i ∈ Z q c=\sum_i 2^ic_i \in \mathbb Z_q c=i2iciZq,我们定义运算 c ∗ E ′ ( m ) : = ∑ i c i ⋅ E ( 2 i m ) = E ( c ⋅ m ) c*E'(m) := \sum_i c_i \cdot E(2^i m) = E(c\cdot m) cE(m):=iciE(2im)=E(cm),噪声扩张因子仅为 log ⁡ q \log q logq 而非 q q q。为了维持密文格式,可以这么计算:
E s ′ ( c ⋅ m ) = { c ∗ E ′ ( m ) , ( 2 c ) ∗ E ′ ( m ) , ⋯ , ( 2 log ⁡ q c ) ∗ E ′ ( m ) } E_s'(c \cdot m) = \{c*E'(m),(2c)*E'(m),\cdots,(2^{\log q}c)*E'(m)\} Es(cm)={cE(m),(2c)E(m),,(2logqc)E(m)}

任意的弱线性同态的对称加密方案,都可以导出公钥方案:令公钥是一组密文 c t i = E s ( 0 ; ( A i , b i ) ) ct_i = E_s(0;(A_i,b_i)) cti=Es(0;(Ai,bi)),那么加密方案就是一种同态线性运算
∑ i r i ⋅ c t i + ( O , α ⋅ m ) = E s ( m ; ( ∑ i r i A i , ∑ i r i e i ) ) \sum_i r_i \cdot ct_i + (O,\alpha\cdot m) = E_s\left(m;\left(\sum_i r_iA_i,\,\, \sum_i r_ie_i\right)\right) iricti+(O,αm)=Es(m;(iriAi,iriei))

因为解密算法是关于私钥的线性函数,因此 LHE 可以使用私钥的密文来同态解密:将 E ′ ( s ′ ) = ( E ′ ( − s ) , E ′ ( 1 ) ) E'(s')=(E'(-s),E'(1)) E(s)=(E(s),E(1)) 作为公钥一部分,给定密文 E ( m ) = ( A , b ) E(m)=(A,b) E(m)=(A,b)
E ( m ) ∗ E ′ ( s ′ ) = A ∗ E ′ ( − s ) + b ∗ E ′ ( 1 ) = E ( b − A s ) = E ( m ) E(m) * E'(s') = A*E'(-s) + b*E'(1) = E(b-As) = E(m) E(m)E(s)=AE(s)+bE(1)=E(bAs)=E(m)

也就是我们把左操作数视为常数矩阵,右操作数视为 LHE 密文列向量,计算对应的线性函数(同态加法、任意标量的同态数乘)。如果我们以 E ′ ( α ⋅ s ′ ) E'(\alpha \cdot s') E(αs) 作为公钥一部分,那么就可以计算出 E ( m ) ∗ E ′ ( α ⋅ s ′ ) = E ( α ⋅ m ) E(m) * E'(\alpha \cdot s') = E(\alpha\cdot m) E(m)E(αs)=E(αm),这里的 α ∈ Z q \alpha \in \mathbb Z_q αZq 是任意常数。

比如原本应当解密出 ( q + 1 ) / 2 ⋅ m + e ∈ Z q (q+1)/2 \cdot m+e \in \mathbb Z_q (q+1)/2m+eZq,我们选取 2 = ( ( q + 1 ) / 2 ) − 1 ∈ Z q 2=((q+1)/2)^{-1} \in \mathbb Z_q 2=((q+1)/2)1Zq,那么就会解密出 m + 2 e ∈ Z q m+2e \in \mathbb Z_q m+2eZq,这就完成了 MSB 和 LSB 之间的编码转换。即,我们可以将 E ′ ( s ′ ) E'(s') E(s) 作为公钥一部分,然后对于任意常数 α \alpha α 可计算同态数乘 E ′ ( α s ′ ) E'(\alpha s') E(αs),再用它同态解密 E ′ ( m ) E'(m) E(m) 得到形如 α m + e \alpha m+e αm+e 的 “带噪的数乘的明文” 的密文。

对 LHE 做同态的 “decrypt and multiply(解密+数乘)”,就可以实现 FHE:我们定义加密算法为 E ′ ′ ( m ) : = E ′ ( m ⋅ s ′ ) E''(m):=E'(m \cdot s') E′′(m):=E(ms),明文 m ∈ Z q m \in \mathbb Z_q mZq 是标量,那么
E ′ ′ ( m 1 ) ∗ E ′ ′ ( m 2 ) = { E ( m 1 ⋅ 2 i s ′ ) ∗ E ′ ( m 2 ⋅ s ′ ) } i = { E ( m 1 ⋅ 2 i s ′ ⋅ m 2 ) } i = E ′ ( m 1 m 2 ⋅ s ′ ) = E ′ ′ ( m 1 m 2 ) \begin{aligned} E''(m_1) * E''(m_2) &= \{E(m_1 \cdot 2^is')*E'(m_2 \cdot s')\}_i\\ &= \{E(m_1 \cdot 2^is' \cdot m_2)\}_i\\ &= E'(m_1m_2 \cdot s')\\ &= E''(m_1m_2)\\ \end{aligned} E′′(m1)E′′(m2)={E(m12is)E(m2s)}i={E(m12ism2)}i=E(m1m2s)=E′′(m1m2)

[GSW13] 的矩阵密文和它的近似本征矢,密文 C = ( A , b ) + μ G C=(A,b)+\mu G C=(A,b)+μG 满足 s t C = ( μ s t ) G + e s^tC=(\mu s^t)G+e stC=(μst)G+e加密的是消息 μ s t \mu s^t μst 的纠错码;在解密时 G G G 用于纠错,乘法时 G − 1 G^{-1} G1 用于降低范数),其实这就是上述的 E s ′ ′ ( m ) E_s''(m) Es′′(m)(需要循环安全假设),所以它的同态乘法不会导致如 BGV/BFV 那样的密文规模扩张。而 [AP14] 中的 GSW 快速自举算法,用 GSW 做出累加器来实现 LWE 的自举,其实就是 L W E s ( m ; e 1 ) ∗ E s ′ ′ ( s ) = L W E s ( m ; e 2 ) LWE_s(m;e_1)*E_s''(s)=LWE_s(m;e_2) LWEs(m;e1)Es′′(s)=LWEs(m;e2)(也需要循环安全),使得 ∥ e 1 ∥ < ∥ e 2 ∥ \|e_1\|<\|e_2\| e1<e2 即可成功。之后的 FHEW 中的 Multiplication via addition,基于布尔输入在 Z 4 \mathbb Z_4 Z4 中的特性 m 1 + m 2 = 2 ⟺ m 1 ⋅ m 2 = 1 m_1+m_2=2 \iff m_1 \cdot m_2=1 m1+m2=2m1m2=1全加器 s = m 1 ⊕ m 2 s=m_1 \oplus m_2 s=m1m2 c = m 1 ⋅ m 2 c=m_1 \cdot m_2 c=m1m2),使用加法取代乘法 m 1 ⋅ m 2 = m 1 + m 2 2 ∈ Z 2 m_1\cdot m_2 = \frac{m_1+m_2}{2} \in \mathbb Z_2 m1m2=2m1+m2Z2,最后自举恢复到 Z 4 \mathbb Z_4 Z4 上。

Linear Function

利用上述的 Linear decrypt-and-multiply,我们可以实现一个线性函数加密

g = ( 1 , 2 , 4 , ⋯ , 2 k ) g=(1,2,4,\cdots,2^{k}) g=(1,2,4,,2k) 是 Gadget 行矢, k k k 是明文比特长度,对应的 g − 1 ( ⋅ ) g^{-1}(\cdot) g1() 是二进制分解(列矢)。将 g g g 排列为 Gadget 矩阵 G ∈ Z q l × l k G \in \mathbb Z_q^{l \times lk} GZql×lk,那么 m ⃗ G = ( m 1 g , m 2 g , ⋯ , m l g ) \vec m G=(m_1g,m_2g,\cdots,m_lg) m G=(m1g,m2g,,mlg) 就是各个分量 powerof2 组成的行矢,容易对应构造 G − 1 ( ⋅ ) G^{-1}(\cdot) G1() 是各个分量的二进制分解组成的列矢。于是 m ⃗ G ⋅ G − 1 ( f ⃗ ) = m ⃗ ⋅ f ⃗ \vec mG \cdot G^{-1}(\vec f) = \vec m \cdot \vec f m GG1(f )=m f 计算了 l l l 变元线性函数 f ( m ) f(m) f(m)

我们令 Δ ∈ Z \Delta \in \mathbb Z ΔZ 是纠错能力,密文模数 q ≥ Δ ( 2 k ) 2 q \ge \Delta (2^k)^2 qΔ(2k)2(使得 Δ m i 2 k < q \Delta m_i 2^k < q Δmi2k<q 不溢出), ( A , B ) ∈ Z q n × m × Z q n × l k (A,B) \in \mathbb Z_q^{n \times m} \times \mathbb Z_q^{n \times lk} (A,B)Zqn×m×Zqn×lk 是公钥, S = [ − S ′ , I ] T ∈ Z q ( m + l k ) × l k S=[-S',I]^T \in \mathbb Z_q^{(m+lk) \times lk} S=[S,I]TZq(m+lk)×lk,易知 ( A , B ) ⋅ S = B − A S ′ = E ∈ Z q n × l k (A,B) \cdot S=B-AS'=E \in \mathbb Z_q^{n \times lk} (A,B)S=BAS=EZqn×lk

  1. 我们加密行矢 m ⃗ G ∈ Z q l k \vec mG \in \mathbb Z_q^{lk} m GZqlk,随机数 r ∈ Z q n r \in \mathbb Z_q^n rZqn,得到密文 C = ( r A , r B + Δ m ⃗ G + e ) ∈ Z q m + l k C=(rA,rB+\Delta\vec mG+e) \in \mathbb Z_q^{m+lk} C=(rA,rB+Δm G+e)Zqm+lk(行矢)

  2. 使用函数秘钥 S G − 1 ( f ⃗ ) ∈ Z q m + l k SG^{-1}(\vec f) \in \mathbb Z_q^{m+lk} SG1(f )Zqm+lk(列矢),线性解密得到
    C S ⋅ G − 1 ( f ⃗ ) = ( Δ m ⃗ G + e + r E ) ⋅ G − 1 ( f ⃗ ) = Δ f ( m ) + ( e + r E ) ⋅ G − 1 ( f ⃗ ) ∈ Z q \begin{aligned} CS \cdot G^{-1}(\vec f) &= (\Delta\vec mG+e+rE) \cdot G^{-1}(\vec f)\\ &= \Delta f(m)+(e+rE)\cdot G^{-1}(\vec f) \in \mathbb Z_q \end{aligned} CSG1(f )=(Δm G+e+rE)G1(f )=Δf(m)+(e+rE)G1(f )Zq

  3. 纠错后提取出函数值 f ( m ) = m ⃗ ⋅ f ⃗ ∈ [ 0 , 2 k ] f(m)=\vec m \cdot \vec f \in [0,2^k] f(m)=m f [0,2k]

Rate-1 FHE

正如 [Mic19] 所描述的,许多基于 LWE/SIS 的加密方案,其解密函数是关于私钥的线性函数,它满足
L α , c ( s ) = α ⋅ m + e , ∣ e ∣ < B L_{\alpha,c}(s) = \alpha \cdot m+e, |e|<B Lα,c(s)=αm+e,e<B

其中的 α \alpha α 并非被协议固定,而是可以任意选取的。这个计算过程叫做 “linear decrypt-and-multiply”,它可以在 LHE 下同态计算。

我们定义 Linear Decrypt-and-Multiply FHE

在这里插入图片描述

我们可以利用 L α , c L_{\alpha,c} Lα,c 线性函数,对于不同的密文 c i c_i ci 选取不同的标量 α i \alpha_i αi将多个 FHE 密文(明文空间 { 0 , 1 } \{0,1\} {0,1})打包到单个 LHE 密文(明文空间 Z q \mathbb Z_q Zq)中
L ∗ ( s ) : = ∑ i = 1 l L 2 i + 1 , c i ( s ) = ∑ i = 1 l 2 t + i m i + ∑ i = 1 l e i L^*(s) := \sum_{i=1}^l L_{2^{i+1},c_i}(s) = \sum_{i=1}^l 2^{t+i}m_i + \sum_{i=1}^l e_i L(s):=i=1lL2i+1,ci(s)=i=1l2t+imi+i=1lei

其中 e e e l B lB lB-bounded 的噪声项,只要满足 2 t > ∣ e ∣ 2^t>|e| 2t>e 则噪声不干扰消息 m i m_i mi 所占据的高位比特。由于 LHE 明文空间是 Z q \mathbb Z_q Zq,噪声占据了低位的 log ⁡ ( l B ) \log(lB) log(lB) 比特,我们设置参数 ϵ > 0 \epsilon>0 ϵ>0 使得模数 q ≈ ( l B ) 1 / ϵ q\approx (lB)^{1/\epsilon} q(lB)1/ϵ,那么消息 m i m_i mi 的空间占比至多为
log ⁡ ( q ) − log ⁡ ( l B ) log ⁡ ( q ) ≈ 1 − ϵ \dfrac{\log(q) - \log(lB)}{\log(q)} \approx 1-\epsilon log(q)log(q)log(lB)1ϵ

我们定义 FHE 方案的码率(Rate),

在这里插入图片描述

只要 LHE 本身是 Rate-1 的,那么将 l l l 个 FHE 密文的消息编码到单个 LHE 密文中,这也是 Rate-1 的。在需要进行同态计算时,类似自举,将 LHE 转化回 FHE 即可;而计算结束后,重新把 FHE 密文打包到 LHE 密文中,以降低存储开销。

上述的消息打包方案可以写作 ( 2 t + 1 , ⋯ , 2 t + l ) ⋅ ( m 1 , ⋯ , m l ) (2^{t+1},\cdots,2^{t+l}) \cdot (m_1,\cdots,m_l) (2t+1,,2t+l)(m1,,ml),更一般的编码形式为 T ⋅ m , T ∈ Z q k × l T \cdot m,\,\, T \in \mathbb Z_q^{k \times l} Tm,TZqk×l,它支持从 T m + e Tm+e Tm+e 中纠错解码出消息 m ⃗ \vec m m 。对于 Regev 方案,编码矩阵为 T = q 2 I T=\frac{q}{2}I T=2qI

密文收缩的 Regev

[BDGM19] 通过对 Regev-like 方案的密文做 “收缩(记为 Shrink,与 Compress 做区分)”,从而得到 Rate-1 LHE

除了原始 Regev 方案的 ( K e y G e n , E n c , D e c , E v a l ) (KeyGen, Enc, Dec, Eval) (KeyGen,Enc,Dec,Eval),我们额外添加两个功能:

  1. c ˉ ← S h r i n k ( p k , c ) \bar c \leftarrow Shrink(pk,c) cˉShrink(pk,c):将 LHE 密文收缩为一个 shrunk ciphertext
  2. m ← S h r i n k D e c ( s k , c ˉ ) m \leftarrow ShrinkDec(sk,\bar c) mShrinkDec(sk,cˉ):对 shrunk ciphertext 解密

[BDGM19] 将 LHE 的解密函数中的纠错码解码(舍入、取模)分离出来,使得 D e c ( ⋅ ) Dec(\cdot) Dec() 仅仅是一个线性函数。令编码矩阵 T ∈ Z q k × l T \in \mathbb Z_q^{k \times l} TZqk×l 指定了消息 m ∈ { 0 , 1 } l m \in \{0,1\}^l m{0,1}l 如何编码到空间 Z q k \mathbb Z_q^k Zqk 中,

在这里插入图片描述

假设私钥 S ∈ Z q k × n S \in \mathbb Z_q^{k \times n} SZqk×n,密文形如 ( c 1 , c 2 ) (c_1,c_2) (c1,c2),解密算法写作
D e c S ( c 1 , c 2 ) = F ( c 2 ) − S ⋅ H ( c 1 ) Dec_S(c_1,c_2) = F(c_2) - S \cdot H(c_1) DecS(c1,c2)=F(c2)SH(c1)

其中 F , H F,H F,H 是公开函数,于是解密函数就是关于 S S S 的线性函数,常数是 F ( c 2 ) ∈ Z q k , H ( c 1 ) ∈ Z q n F(c_2) \in \mathbb Z_q^k,H(c_1) \in \mathbb Z_q^n F(c2)Zqk,H(c1)Zqn

假设噪声规模为 B B B,编码矩阵为 T = q 2 I , k = l T=\frac{q}{2}I, k=l T=2qI,k=l,那么危险区是 [ q / 4 − B , q / 4 + B ] [q/4-B,q/4+B] [q/4B,q/4+B] 以及 [ − q / 4 − B , − q / 4 + B ] [-q/4-B, -q/4+B] [q/4B,q/4+B]。只要 q m / 2 qm/2 qm/2 不落在危险区内,解码时就不会出现错误。

密文收缩算法如下:

  • S h r i n k ( p k , ( c 1 , c 2 ) ) Shrink(pk,(c_1,c_2)) Shrink(pk,(c1,c2)):计算 F ( c 2 ) F(c_2) F(c2) 得到 ( y 1 , ⋯ , y l ) ∈ Z q l (y_1,\cdots,y_l) \in \mathbb Z_q^l (y1,,yl)Zql,定义区域
    U = ⋃ i = 1 l [ q / 4 − B − y i , q / 4 + B − y i ] ∪ [ − q / 4 − B − y i , − q / 4 + B − y i ] U = \bigcup_{i=1}^l [q/4-B-y_i,q/4+B-y_i] \cup [-q/4-B-y_i,-q/4+B-y_i] U=i=1l[q/4Byi,q/4+Byi][q/4Byi,q/4+Byi]

    我们任意选取 r ∈ Z q − U r \in \mathbb Z_q - U rZqU(只要 q q q 足够大,总会存在),计算 w i = ⌈ y i + r ⌋ 2 w_i = \lceil y_i+r \rfloor_2 wi=yi+r2,输出收缩的密文 c ˉ = ( r , c 1 , w 1 , ⋯ , w l ) \bar c = (r,c_1,w_1,\cdots,w_l) cˉ=(r,c1,w1,,wl)

  • S h r i n k D e c ( S , c ˉ ) ShrinkDec(S,\bar c) ShrinkDec(S,cˉ):计算 S ⋅ H ( c 1 ) S \cdot H(c_1) SH(c1) 得到 ( v 1 , ⋯ , v l ) ∈ Z q l (v_1,\cdots,v_l) \in \mathbb Z_q^l (v1,,vl)Zql,然后计算 m i = w i − ⌈ v i + r ⌋ 2 ( m o d 2 ) m_i = w_i-\lceil v_i+r \rfloor_2 \pmod 2 mi=wivi+r2(mod2),输出消息 m = ( m 1 . ⋯ , m l ) m=(m_1.\cdots,m_l) m=(m1.,ml)

因为 r ∉ U r \not\in U rU,因此 ∀ y i , y i + r ∉ [ q / 4 − B , q / 4 + B ] ∪ [ − q / 4 − B , − q / 4 + B ] \forall y_i, y_i+r \not\in [q/4-B,q/4+B] \cup [-q/4-B,-q/4+B] yi,yi+r[q/4B,q/4+B][q/4B,q/4+B]。根据解密函数等式 y i − v i = q m i / 2 + e i y_i-v_i = qm_i/2+e_i yivi=qmi/2+ei,得到
w i = ⌈ y i + r ⌋ 2 = ⌈ y i + r − e i ⌋ 2 = ⌈ q m i / 2 + v i + r ⌋ 2 = ⌈ v i + r ⌋ 2 + m i ( m o d 2 ) w_i=\lceil y_i+r \rfloor_2 = \lceil y_i+r-e_i \rfloor_2 = \lceil qm_i/2+v_i+r \rfloor_2 = \lceil v_i+r \rfloor_2+m_i \pmod 2 wi=yi+r2=yi+rei2=qmi/2+vi+r2=vi+r2+mi(mod2)

因为共有 l l l 个危险区 [ q / 4 − B − y i , q / 4 + B − y i ] ∪ [ − q / 4 − B − y i , − q / 4 + B − y i ] [q/4-B-y_i,q/4+B-y_i] \cup [-q/4-B-y_i,-q/4+B-y_i] [q/4Byi,q/4+Byi][q/4Byi,q/4+Byi],每个危险区长度为 4 B 4B 4B,因此只要模数 q > 4 l B q>4lB q>4lB,就可以找到 r ∉ U r \not\in U rU。上述密文收缩过程,把密文分量 c 2 c_2 c2 压缩到了 log ⁡ q + l \log q + l logq+l 比特( r r r w i w_i wi),而消息长度为 l l l 比特。接下来,我们让多个 LHE 密文共用分量 c 1 c_1 c1,于是均摊之后将得到 rate-1 的 LHE 方案。

k = log ⁡ q k=\log q k=logq,设 g = ( 1 , 2 , ⋯ , 2 k ) g=(1,2,\cdots,2^k) g=(1,2,,2k) 是 Gadget 行矢,那么 y = g x ∈ Z q y=gx \in \mathbb Z_q y=gxZq 就是二进制合成,而对应的 g − 1 ( y ) g^{-1}(y) g1(y) 就是二进制分解。我们记 G i ∈ Z q l × k G_i \in \mathbb Z_q^{l \times k} GiZql×k 是除了第 i i i 行是 g g g 其他的位置都是零的矩阵。

由于 Regev 方案仅仅是加法同态的,为了支持任意标量的数乘,使用 g , g − 1 g,g^{-1} g,g1 将消息 m i m_i mi 扩展为向量。我们定义 Packed Regev Encryption 线性同态加密方案,

在这里插入图片描述

只要 m > ( n + l ) log ⁡ q + w ( log ⁡ λ ) m>(n+l)\log q+w(\log \lambda) m>(n+l)logq+w(logλ),那么根据 Leftover-Hash Lamma [ILL89] 可知密文 ( C 1 , C 2 ) (C_1,C_2) (C1,C2) 统计接近均匀分布。经过 E v a l Eval Eval 后,噪声为 e = E ⋅ ∑ i R i ⋅ g − 1 ( f i ) e=E \cdot \sum_i R_i \cdot g^{-1}(f_i) e=EiRig1(fi),规模 ∥ e ∥ ∞ ≤ t k m B \|e\|_\infty \le tkmB etkmB。因此我们选取 q ≈ 4 l t k m B q \approx 4ltkmB q4ltkmB,使得存在 r r r 来收缩密文得到 ( r , c 1 , w 1 , ⋯ , w l ) (r,c_1,w_1,\cdots,w_l) (r,c1,w1,,wl),密文规模为 ( n + 1 ) log ⁡ q + l (n+1)\log q+l (n+1)logq+l,码率为
ρ = l ( n + 1 ) log ⁡ q + l ≥ 1 − ( n + 1 ) log ⁡ q l \rho = \dfrac{l}{(n+1)\log q+l} \ge 1 - \dfrac{(n+1)\log q}{l} ρ=(n+1)logq+ll1l(n+1)logq

对于 q = p o l y ( λ ) q=poly(\lambda) q=poly(λ),可界定 log ⁡ q ≤ ( log ⁡ λ ) 2 \log q \le (\log \lambda)^2 logq(logλ)2,选取充分大的 l ≥ n λ ( log ⁡ λ ) 2 l \ge n\lambda(\log \lambda)^2 l(logλ)2 可以使得 ρ ≥ 1 − 1 / λ \rho \ge 1-1/\lambda ρ11/λ。这就得到了 Rate-1 LHE。

扩展的 Paillier

[DJ01] 扩展了 Paillier 算法,将群 Z n 2 ∗ \mathbb Z_{n^2}^* Zn2 推广到了 Z n s + 1 ∗ , ∀ s ≥ 1 \mathbb Z_{n^{s+1}}^*, \forall s\ge 1 Zns+1,s1,使得码率接近于 1 1 1。而 Paillier 本身是一个 LHE,这是另一种 Rate-1 LHE,好处是计算无噪声,但是安全性基于数论假设而非格上困难问题。

p , q p,q p,q 是安全素数, n = p q n=pq n=pq 是个 RSA 模数。对于 ∀ s < p , q \forall s < p,q s<p,q,可以证明乘法群 Z n s + 1 ∗ ≅ G × H \mathbb Z_{n^{s+1}}^* \cong G \times H Zns+1G×H,其中 G G G n s n^s ns 阶循环群,且 H ≅ Z n ∗ H \cong \mathbb Z_n^* HZn。可以证明在 Z n s + 1 ∗ \mathbb Z_{n^{s+1}}^* Zns+1 中有 o r d ( n + 1 ) = n s ord(n+1)=n^s ord(n+1)=ns,于是 G ˉ : = Z n s + 1 ∗ / H = ⟨ ( n + 1 ) H ⟩ \bar G := \mathbb Z_{n^{s+1}}^*/H = \langle (n+1)H \rangle Gˉ:=Zns+1/H=⟨(n+1)H 是循环群,陪集 ( n + 1 ) i H ⊆ Z n s + 1 ∗ (n+1)^iH \subseteq \mathbb Z_{n^{s+1}}^* (n+1)iHZns+1 可以用自然数编号。

循环群 G ˉ \bar G Gˉ 上的 DL 问题是简单的。定义函数 L ( b ) = ( b − 1 ) / n L(b)=(b-1)/n L(b)=(b1)/n(这儿就是整数除法,并非求逆元),那么
L ( ( n + 1 ) i ( m o d n s + 1 ) ) = ( i 1 ) + ( i 2 ) n + ⋯ + ( i s ) n s − 1 ( m o d n s ) L((n+1)^i \pmod{n^{s+1}}) = {i \choose 1}+{i \choose 2}n +\cdots+ {i \choose s}n^{s-1} \pmod{n^s} L((n+1)i(modns+1))=(1i)+(2i)n++(si)ns1(modns)

为了提取出 ( n + 1 ) i ( m o d n s + 1 ) (n+1)^i \pmod{n^{s+1}} (n+1)i(modns+1) 的指数 i i i,我们依次计算 i j : = i ( m o d n j + 1 ) i_j:=i \pmod{n^{j+1}} ij:=i(modnj+1),易知
i 1 = L ( ( n + 1 ) i ( m o d n 2 ) ) = i ( m o d n ) i_1 =L((n+1)^i \pmod{n^{2}}) = i \pmod n i1=L((n+1)i(modn2))=i(modn)

假设已知 i j − 1 i_{j-1} ij1,我们计算 i j = i j − 1 + k ⋅ n j − 1 i_j = i_{j-1}+k \cdot n^{j-1} ij=ij1+knj1
L ( ( n + 1 ) i ( m o d n j + 1 ) ) = ( i j 1 ) + ( i j 2 ) n + ⋯ + ( i j j ) n j − 1 ( m o d n j ) = ( i j − 1 + k ⋅ n j − 1 ) + ( i j − 1 2 ) n + ⋯ + ( i j − 1 j ) n j − 1 ( m o d n j ) \begin{aligned} L((n+1)^{i} \pmod{n^{j+1}}) &= {i_j \choose 1}+{i_j \choose 2}n +\cdots+ {i_j \choose j}n^{j-1} \pmod{n^j}\\ &= (i_{j-1}+k \cdot n^{j-1}) + {i_{j-1} \choose 2}n +\cdots+ {i_{j-1} \choose j}n^{j-1} \pmod{n^j} \end{aligned} L((n+1)i(modnj+1))=(1ij)+(2ij)n++(jij)nj1(modnj)=(ij1+knj1)+(2ij1)n++(jij1)nj1(modnj)

于是重写为迭代公式:
i j = i j − 1 + k ⋅ n j − 1 = L ( ( n + 1 ) i ( m o d n j + 1 ) ) − ( i j − 1 2 ) n − ⋯ − ( i j − 1 j ) n j − 1 ( m o d n j ) \begin{aligned} i_j &= i_{j-1}+k \cdot n^{j-1}\\ &= L((n+1)^{i} \pmod{n^{j+1}}) - {i_{j-1} \choose 2}n -\cdots- {i_{j-1} \choose j}n^{j-1} \pmod{n^j} \end{aligned} ij=ij1+knj1=L((n+1)i(modnj+1))(2ij1)n(jij1)nj1(modnj)

i 1 i_1 i1 开始,迭代到 i s i_s is 结束,输出指数 i = i s ∈ Z n s i=i_s \in \mathbb Z_{n^s} i=isZns

[DJ01] 给出的加密算法如下:

在这里插入图片描述

消息空间 Z n s \mathbb Z_{n^s} Zns,密文空间 Z n s + 1 ∗ \mathbb Z_{n^{s+1}}^* Zns+1,因此码率为
ρ = log ⁡ ( n s ) log ⁡ ( n s + 1 ) \rho = \dfrac{\log(n^{s})}{\log(n^{s+1})} ρ=log(ns+1)log(ns)

当选取足够大的 s s s,就得到了 Rate-1 LHE。我们使用 T = ( 2 log ⁡ B , 2 log ⁡ B + 1 , ⋯ , 2 ⌈ s log ⁡ n ⌉ ) T=(2^{\log B},2^{\log B+1},\cdots,2^{\lceil s\log n\rceil}) T=(2logB,2logB+1,,2slogn) 作为编码矩阵,抵御 B B B-bounded 的噪声。

Rate-1 FHE Construction

现在我们给出 Rate-1 FHE 的构造。除了原始 FHE 方案的 ( K e y G e n , E n c , D e c , E v a l ) (KeyGen, Enc, Dec, Eval) (KeyGen,Enc,Dec,Eval),我们额外添加两个功能:

  1. c ∗ ← C o m p r e s s ( p k , c 1 , ⋯ , c l ) c^* \leftarrow Compress(pk,c_1,\cdots,c_l) cCompress(pk,c1,,cl):将多个FHE 密文压缩为一个 compressed ciphertext
  2. ( m 1 , ⋯ , m l ) ← C o m p r e s s D e c ( s k , c ∗ ) (m_1,\cdots,m_l) \leftarrow CompressDec(sk,c^*) (m1,,ml)CompressDec(sk,c):对 compressed ciphertext 解密得到多个消息

基于 FHE 以及 Rate-1 LHE,我们构造 Rate-1 FHE:

在这里插入图片描述

在这里插入图片描述

FH-TLP

Time-lock puzzles

时间锁谜题(Time-lock puzzles)最早在 [RSW96] 中作为一种 “时间依赖的密码” 被提出。谜题是基于困难问题的,并且被设置为无法并行加速,为了得到秘密,人们不得不持续运行求解器。[RSW96] 给出了一种基于 RSA 问题的 TLP,

  1. Alice 生成一对安全素数 p , q p,q p,q,计算 n = p q n=pq n=pq ϕ ( n ) = ( p − 1 ) ( q − 1 ) \phi(n)=(p-1)(q-1) ϕ(n)=(p1)(q1)
  2. Alice 生成对称秘钥 K K K,加密消息 M M M C M = E n c K ( M ) C_M=Enc_K(M) CM=EncK(M)
  3. Alice 随机生成 a ∈ [ n ] a \in [n] a[n],加密秘钥 K K K C K = K + a 2 t C_K = K+a^{2^t} CK=K+a2t,其中 t t t 是预设的延迟时间。由于 Alice 持有 ϕ ( n ) \phi(n) ϕ(n),因此 e = 2 t ( m o d ϕ ( n ) ) e=2^t \pmod {\phi(n)} e=2t(modϕ(n)) 是容易计算的。
  4. Alice 发布 ( C M , C K , n , a , t ) (C_M,C_K,n,a,t) (CM,CK,n,a,t) 作为谜题。由于 Bob 不知道 ϕ ( n ) \phi(n) ϕ(n),因此他只能串行计算一系列的模平方 e 2 , e 4 , ⋯ , e 2 t e^2,e^4,\cdots,e^{2^t} e2,e4,,e2t,花费的时间是 t t t

想要更快的完成 t t t 次模平方,除非 Bob 拥有 IPS 特别高的 CPU,别无他法。

Rate-1 FH-TLP

同态的时间锁谜题,他可以对加密在多个时间锁谜题中的消息做同态计算,得到一个新的时间锁谜题,而无需爆破每一个谜题。定义如下:

在这里插入图片描述

在 [MT19] 中提出了一种线性同态的时间锁谜题:公钥 ( N = p q , g ∈ Z N ∗ , h = g 2 T ) (N=pq, g \in \mathbb Z_N^*, h=g^{2^T}) (N=pq,gZN,h=g2T),秘密 s ∈ Z N s \in \mathbb Z_N sZN,谜题为 ( g r ( m o d N ) , h r N ( N + 1 ) s ( m o d N 2 ) ) \left(g^r \pmod N, h^{rN}(N+1)^s \pmod{N^2}\right) (gr(modN),hrN(N+1)s(modN2)),其中 r ← R Z N 2 r \leftarrow_R \mathbb Z_{N^2} rRZN2 是随机数。Alice 知道 r r r,因此可以用快速幂算法计算 h r N ( m o d N 2 ) h^{rN} \pmod{N^2} hrN(modN2);而 Bob 只知道 g r ( m o d N ) g^r \pmod N gr(modN),只能串行计算 T T T 次模平方,恢复出 ( N + 1 ) s ( m o d N 2 ) (N+1)^s \pmod{N^2} (N+1)s(modN2) 则指数 s s s 容易计算。它是线性同态的,类似于 [DJ01] 可以获得 Rate-1 LH-TLP

因为全同态 TLP 的各个谜题可能来自多个用户,我们需要用到 MK-FHE,使用上面的技术可以做到 Rate-1 的。基于 MK-FHE 和 LH-TLP,可以得到 Rate-1 FH-TLP

在这里插入图片描述

在这里插入图片描述

这篇关于Linear Decryption: Rate-1 FHE TLP的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/300677

相关文章

理解分类器(linear)为什么可以做语义方向的指导?(解纠缠)

Attribute Manipulation(属性编辑)、disentanglement(解纠缠)常用的两种做法:线性探针和PCA_disentanglement和alignment-CSDN博客 在解纠缠的过程中,有一种非常简单的方法来引导G向某个方向进行生成,然后我们通过向不同的方向进行行走,那么就会得到这个属性上的图像。那么你利用多个方向进行生成,便得到了各种方向的图像,每个方向对应了很多

【CSS渐变】背景中的百分比:深入理解`linear-gradient`,进度条填充

在现代网页设计中,CSS渐变是一种非常流行的视觉效果,它为网页背景或元素添加了深度和动态感。linear-gradient函数是实现线性渐变的关键工具,它允许我们创建从一种颜色平滑过渡到另一种颜色的视觉效果。在本篇博客中,我们将深入探讨linear-gradient函数中的百分比值,特别是像#C3002F 50%, #e8e8e8 0这样的用法,以及它们如何影响渐变效果。 什么是linear-g

解决树莓派IOError: [Errno Invalid sample rate] -9997 采样率16K错误

树莓派在基于pyaudio录音的时候会提示如上错误,这主要是使用的树莓派声卡不支持当前的采用率,没关系,其实在alsa架构下我们可以通过声卡的插件实现转换。在树莓派下家目录创建一个声卡隐藏配置文件 .asoundrc。特别说明,不要在你的pyaudio里面设置打开声卡的编号因为下面的配置已经配置了。 1.安装 sudo apt-get install pulseaudio 2.在家目录创

Spark MLlib模型训练—回归算法 Linear regression

Spark MLlib模型训练—回归算法 Linear regression 线性回归是回归分析中最基础且应用广泛的一种方法。它用于建模目标变量和一个或多个自变量之间的关系。随着大数据时代的到来,使用像 Spark 这样的分布式计算框架进行大规模数据处理和建模变得尤为重要。本文将全面解析 Spark 中的线性回归算法,介绍其原理、参数、Scala 实现、代码解读、结果分析以及实际应用场景。 1

线性代数:线性代数(Linear Algebra)综述

文章目录 矩阵 / Matrix元素运算加法 A + B A+B A+B数量乘法 c A cA cA与向量之间的运算乘法 A b A\mathbf{b} Ab 与矩阵之间的运算矩阵乘法 乘方 性质方阵 / Square Matrix零矩阵对角矩阵 / Diagonal Matrix单位矩阵 / Identity Matrix转置 / Transpose逆矩阵 / Inverse Mat

Spark MLlib模型训练—回归算法 GLR( Generalized Linear Regression)

Spark MLlib模型训练—回归算法 GLR( Generalized Linear Regression) 在大数据分析中,线性回归虽然常用,但在许多实际场景中,目标变量和特征之间的关系并非线性,这时广义线性回归(Generalized Linear Regression, GLR)便应运而生。GLR 是线性回归的扩展,能够处理非正态分布的目标变量,广泛用于分类、回归以及其他统计建模任务。

PCIE-TLP路由

TLP路由存在三种形式,基于地址、基于ID、隐式路由。 (1)关于TLP路由方式的划分:   cpl/cpld  ;  cfgwr/cfgrd  -> ID routing   Mwr/Mrd[lock]/atomicop  ;  Iowr/Iord  -> address routing   Msg/MsgD  -> 三种均可 (2)关于posted/non-posted   mwr

linear-gradient 渐变

CSS3 Gradient 分为  linear-gradient(线性渐变)和  radial-gradient(径向渐变)。而我们今天主要是针对线性渐变来剖析其具体的用法。为了更好的应用 CSS3 Gradient,我们需要先了解一下目前的几种现代浏览器的内核,主要有 Mozilla(Firefox,Flock等)、WebKit(Safari、Chrome等)、Opera(Opera浏览器

机器学习—线性回归算法(Linear Regression)

目录 一、基本概念二、线性回归简单分类与模型三、线性回归的关键步骤四、线性回归问题分析五、线性回归问题的解法1、最小二乘法2、梯度下降法 六、线性回归中的过拟合与欠拟合1、过拟合1、岭回归(Ridge Regression)2、套索回归 (Lasso回归)(Lasso Regression)3、弹性网(Elastic Net) 2、欠拟合 七、线性回归中的超参数与模型评估方法1、超参数(Hy

【Pytorch】Linear 层,举例:相机参数和Instance Feaure通过Linear层生成Group Weights

背景 看论文看到这个pipeline,对于相机参数和Instance Fature 的融合有点兴趣,研究如下: Linear 层 Linear 层是最基本的神经网络层之一,也称为全连接层。它将输入与每个输出神经元完全连接。每个连接都有一个权重和一个偏置。 示例代码 import torchimport torch.nn as nn# 定义一个简单的全连接网络,包含两个Linear层