全同态加密:FHEW

  • Post author:
  • Post category:其他


参考资料:

  1. Micciancio D, Peikert C. Trapdoors for Lattices: Simpler, Tighter, Faster, Smaller[C]//Eurocrypt. 2012, 7237: 700-718.
  2. Alperin-Sheriff J, Peikert C. Faster bootstrapping with polynomial error[C]//Advances in Cryptology–CRYPTO 2014: 34th Annual Cryptology Conference, Santa Barbara, CA, USA, August 17-21, 2014, Proceedings, Part I 34. Springer Berlin Heidelberg, 2014: 297-314.
  3. Ducas L, Micciancio D. FHEW: bootstrapping homomorphic encryption in less than a second[C]//Advances in Cryptology–EUROCRYPT 2015: 34th Annual International Conference on the Theory and Applications of Cryptographic Techniques, Sofia, Bulgaria, April 26-30, 2015, Proceedings, Part I 34. Springer Berlin Heidelberg, 2015: 617-640.



AP14

2014 年,Alperin 和 Peikert 提出了一种快速 Bootstrapping 方案。他们将加法群



Z

q

Z_q







Z










q





















嵌入到对称群



S

q

S_q







S










q





















(置换矩阵



{

0

,

1

}

q

×

q

\{0,1\}^{q \times q}






{



0


,




1



}











q


×


q













的乘法群)上,在

代数电路上执行自举

,大大提高了自举效率。而之前的方案,基本都在布尔电路上运算,使用

Barrington‘s Theorem





N

C

1

NC^1






N



C










1












电路转化为

5-PBP 置换分支程序

利用 GSW 乘法噪声增长的

非对称性

,采用右结合的乘法链其噪声增长是

拟加性

的(quasi-additive)。另外,他们给出了 GSW 的更简单的变体,可以证明两者是等价的。

本文重点关注如何快速自举,它可以兼容所有的基于 LWE 的 FHE。由于解密算法是:





D

e

c

(

s

,

c

)

:

=

s

,

c

2

Dec(s,c) := \lfloor \langle s,c \rangle \rceil_2






Dec


(


s


,




c


)




:=








⌊⟨


s


,




c

















2





















这里



x

2

:

=

2

/

q

x

\lfloor x \rceil_2 := \lfloor 2/q \cdot x \rceil









x














2




















:=











2/


q













x








是从



Z

q

Z_q







Z










q

























Z

2

Z_2







Z










2





















的模切换,或者说是 MSB 的提取。那么,自举的关键就是:

  • 对于固定的秘密



    s

    s






    s





    ,对于任意密文



    c

    c






    c





    ,在 GSW 下同态地计算出内积



    s

    ,

    c

    \langle s,c \rangle









    s


    ,




    c








    (这是 subset-sum,只需要同态加法)。

  • 对于计算出的



    s

    ,

    c

    \langle s,c \rangle









    s


    ,




    c








    的密文,提取出 MSB 对应的 LWE 密文(关键步骤)。



Embedding

根据

Cayley’s Theorem

,任意的有限群



G

G






G





都可以嵌入(injective homomorphism)到

对称群




S

G

S_{|G|}







S














G

























中。而这个对称群同构于



G

|G|









G








阶的

置换矩阵乘法群

,置换



π

\pi






π





对应的置换矩阵为:





P

π

:

=

[

e

π

(

1

)

,

e

π

(

2

)

,


,

e

π

(

G

)

]

P_\pi := [e_{\pi(1)},e_{\pi(2)},\cdots,e_{\pi(|G|)}]







P










π




















:=








[



e











π


(


1


)



















,





e











π


(


2


)



















,











,





e











π


(





G





)



















]





因此,任意的加法群



(

Z

r

,

+

)

(Z_r,+)






(



Z










r


















,




+


)





都可以嵌入到对称群



S

r

S_r







S










r





















中,也就是



r

×

r

r \times r






r




×








r





的置换矩阵的乘法群。嵌入映射为:将元素



x

Z

r

x \in Z_r






x














Z










r





















映射到位移



x

x






x







循环置换

(the permutation that cyclically rotates by


x


positions)。

我们定义



π

:

i

i

+

1

(

m

o

d

r

)

\pi:i \to i+1 \pmod r






π




:








i













i




+








1










(




mod






r


)





为循环位移置换,将



x

x






x





次置换的复合



π

π

\pi \circ \cdots \circ \pi






π



























π





简记为



π

x

\pi^x







π










x












。容易看出,循环置换



P

π

x

P_{\pi^x}







P












π










x





























可以被简化表示为一个



{

0

,

1

}

r

\{0,1\}^r






{



0


,




1



}










r














指示向量




e

x

e_x







e










x





















(indicator vector),其第



x

x






x





个分量是



1

1






1





,其他分量都为



0

0






0





,而对应的置换矩阵就是将



e

x

e_x







e










x





















作为第一列,其他列依次是



e

x

e_x







e










x





















的循环移位(cyclic shift)。

此时,



Z

r

Z_r







Z










r

























S

r

S_r







S










r





















上的运算对应关系为:




  1. Z

    r

    Z_r







    Z










    r





















    中的

    加法




    x

    +

    y

    (

    m

    o

    d

    r

    )

    x+y \pmod r






    x




    +








    y










    (




    mod






    r


    )





    ,同构于



    S

    r

    S_r







    S










    r





















    中的置换复合,或者说置换矩阵乘法



    P

    π

    x

    P

    π

    y

    P_{\pi^x} \cdot P_{\pi^y}







    P












    π










    x






































    P












    π










    y





























    ,可以简化为



    P

    π

    x

    e

    y

    P_{\pi^x} \cdot e_y







    P












    π










    x






































    e










    y





















    (等价于多项式



    e

    x

    ,

    e

    y

    e_x,e_y







    e










    x


















    ,





    e










    y





















    的在



    Z

    2

    [

    x

    ]

    /

    (

    x

    r

    1

    )

    Z_2[x]/(x^r-1)







    Z










    2


















    [


    x


    ]


    /


    (



    x










    r




















    1


    )





    上的多项式乘积)




  2. Z

    r

    Z_r







    Z










    r





















    中的

    相等判定




    x

    =

    v

    (

    m

    o

    d

    r

    )

    x = v \pmod r






    x




    =








    v










    (




    mod






    r


    )





    ,同构于



    S

    r

    S_r







    S










    r





















    中的置换相等判定



    P

    π

    x

    =

    P

    π

    v

    P_{\pi^x} = P_{\pi^v}







    P












    π










    x




























    =









    P












    π










    v





























    ,可以简化为



    e

    x

    (

    v

    )

    e_x^{(v)}







    e










    x









    (


    v


    )
























  3. Z

    r

    Z_r







    Z










    r





















    中的

    提取 MSB




    x

    2

    \lfloor x \rceil_2









    x














    2





















    ,同构于



    S

    r

    S_r







    S










    r





















    中的一些相等判定的加和,即



    v

    [

    r

    ]

    s

    .

    t

    .

    v

    2

    =

    1

    e

    x

    (

    v

    )

    \sum_{v \in [r]\,s.t.\,\lfloor v \rceil_2=1} e_x^{(v)}



















    v





    [


    r


    ]




    s


    .


    t


    .







    v














    2


















    =


    1






















    e










    x









    (


    v


    )





















对于一个较大的模数



q

q






q





,直接将



Z

q

Z_q







Z










q





















嵌入到



S

q

S_q







S










q





















效率很低。优化思路是利用

CRT

,如果让



q

=

i

r

i

q = \prod_i r_i






q




=




















i





















r










i





















,其中



r

i

r_i







r










i





















是规模



O

~

(

1

)

\tilde O(1)













O







~








(


1


)





的素数幂,那么有





Z

q

i

Z

r

i

i

S

r

i

Z_q \cong \prod_i Z_{r_i} \subseteq \prod_i S_{r_i}







Z










q





































i





























Z












r










i






















































i





























S












r










i






































对应的嵌入映射为:





ϕ

:

x

Z

q

(

e

x

(

m

o

d

r

i

)

)

i

i

S

r

i

\phi: x \in Z_q \mapsto \left(e_{x \pmod{r_i}}\right)_i \in \prod_i S_{r_i}






ϕ




:








x














Z










q
































(




e











x






(




mod







r










i


















)




















)












i





































i





























S












r










i






































这样就可以在多个小规模的对称群



S

r

i

S_{r_i}







S












r










i






































上执行计算。此时,




  1. Z

    q

    Z_q







    Z










    q





















    上的

    加法

    ,同构于



    i

    S

    r

    i

    \prod_i S_{r_i}


















    i





















    S












    r










    i






































    上的各个分量的置换各自复合,即





    (

    x

    +

    y

    )

    :

    =

    (

    P

    π

    x

    (

    m

    o

    d

    r

    i

    )

    e

    y

    (

    m

    o

    d

    r

    i

    )

    )

    i

    (x+y) := \left(P_{\pi^{x \pmod{r_i}}} \cdot e_{y \pmod{r_i}}\right)_i






    (


    x




    +








    y


    )




    :=











    (




    P












    π











    x






    (




    mod







    r









    i

















    )



































    e











    y






    (




    mod







    r










    i


















    )




















    )












    i
























  2. Z

    q

    Z_q







    Z










    q





















    上的

    相等判定

    ,同构于



    i

    S

    r

    i

    \prod_i S_{r_i}


















    i





















    S












    r










    i






































    上的各个分量的相等判定的乘积(逻辑 AND),即





    [

    x

    =

    v

    ]

    :

    =

    i

    e

    x

    (

    m

    o

    d

    r

    i

    )

    (

    v

    (

    m

    o

    d

    r

    i

    )

    )

    [x=v] := \prod_i e_{x \pmod{r_i}}^{(v \pmod{r_i})}






    [


    x




    =








    v


    ]




    :=
















    i





























    e











    x






    (




    mod







    r










    i


















    )










    (


    v






    (




    mod







    r










    i


















    ))

























  3. Z

    q

    Z_q







    Z










    q





















    上的

    提取 MSB

    ,同构于



    i

    S

    r

    i

    \prod_i S_{r_i}


















    i





















    S












    r










    i






































    上的一些相等判定的加和(逻辑 OR),即





    x

    2

    :

    =

    v

    [

    q

    ]

    s

    .

    t

    .

    v

    2

    =

    1

    [

    x

    =

    v

    ]

    \lfloor x \rceil_2 := \sum_{v \in [q]\,s.t.\,\lfloor v \rceil_2=1} [x=v]









    x














    2




















    :=

















    v





    [


    q


    ]




    s


    .


    t


    .







    v














    2


















    =


    1



























    [


    x




    =








    v


    ]





为了加速,文章选择让



q

q






q









max

i

r

i

\max_i r_i







max










i





















r










i





















的指数级大。根据

second Chebyshev function







ψ

(

x

)

:

=

p

k

x

log

p

=

log

(

p

x

p

log

p

x

)

\psi(x) := \sum_{p^k \le x} \log p = \log\left(\prod_{p \le x} p^{\lfloor \log_p x \rfloor}\right)






ψ


(


x


)




:=


















p










k












x





























lo

g





p




=








lo

g







(












p





x






























p
















l


o


g











p




















x














)







因此,所有的小于



x

x






x





的最大素数幂



r

i

=

p

log

p

x

r_i = p^{\lfloor \log_p x \rfloor}







r










i




















=









p
















l


o


g











p




















x
















的乘积



q

=

i

r

i

q=\prod_i r_i






q




=




















i





















r










i





















大小为



exp

(

ψ

(

x

)

)

\exp(\psi(x))






exp


(


ψ


(


x


))





。已知



ψ

(

x

)

=

x

+

O

(

x

/

log

x

)

\psi(x)=x+O(x/\log x)






ψ


(


x


)




=








x




+








O


(


x


/




lo

g





x


)





,并且对于所有的



x

7

x \ge 7






x













7





都有一个非渐进界



ψ

(

x

)

3

x

/

4

\psi(x)\ge 3x/4






ψ


(


x


)













3


x


/4





,所以有





q

exp

(

3

x

/

4

)

exp

(

3

/

4

max

i

r

i

)

q \ge \exp(3x/4) \ge \exp(3/4 \cdot \max_i r_i)






q













exp


(


3


x


/4


)













exp


(


3/4





















i








max




















r










i


















)





选取很小的界



x

x






x





,就可以用一些最大素数幂



r

i

x

r_i \le x







r










i





























x





合成出一个指数级大的模数



q

q






q







GSW

本文给出了

GSW

的一个对称版本的更简单变体。

给定模数



q

q






q





,令



l

=

log

q

l = \lceil \log q \rceil






l




=











lo

g





q








,定义 gadget column vector



g

=

(

1

,

2

,

4

,


,

2

l

1

)

Z

l

g = (1,2,4,\cdots,2^{l-1}) \in Z^l






g




=








(


1


,




2


,




4


,











,





2











l





1










)














Z










l












,它的

倒数第二个分量





2

l

2

[

q

/

4

,

q

/

2

)

2^{l-2} \in [q/4,q/2)







2











l





2





















[


q


/4


,




q


/2


)





就是 GSW 中所谓 “big coefficient”。

根据 MP12,存在一个随机的可有效计算的函数



g

1

:

Z

q

Z

l

g^{-1}:Z_q \to Z^l







g














1












:









Z










q






























Z










l












,使得



x

g

1

(

a

)

x \leftarrow g^{-1}(a)






x














g














1










(


a


)





是一个满足



a

=

g

,

x

a=\langle g,x \rangle






a




=











g


,




x








的参数



O

(

1

)

O(1)






O


(


1


)





的亚高斯随机变量。具体地,就是使用

随机版本的 Babai nearest-plane 算法

,给定格



Λ

(

g

t

)

:

=

{

z

Z

l

:

g

,

x

0

Z

q

}

\Lambda^\perp(g^t) := \{z \in Z^l: \langle g,x \rangle \equiv 0 \in Z_q\}







Λ




















(



g










t









)




:=








{



z














Z










l











:











g


,




x
















0














Z










q


















}





的一组 “好” 的基底



S

S






S





,每次迭代中第



i

i






i





次个基向量对应的系数服从中心零的



{

c

i

1

,

c

i

}

,

c

i

1

q

Z

[

0

,

1

)

\{c_i-1,c_i\},\,c_i \in \frac{1}{q} Z \cap [0,1)






{




c










i





























1


,





c










i


















}


,







c










i









































q
















1





















Z













[


0


,




1


)





上二值分布。

对于向量和矩阵,定义 gadget matrix



G

=

g

t

I

n

Z

q

n

×

n

l

G = g^t \otimes I_n \in Z_q^{n \times nl}






G




=









g










t





















I










n






























Z










q









n


×


n


l






















,对应的



G

1

:

Z

q

n

×

m

Z

q

n

l

×

m

G^{-1}: Z_q^{n \times m} \to Z_q^{nl \times m}







G














1












:









Z










q









n


×


m































Z










q









n


l


×


m






















就是对于每个 entry 独立的使用



g

1

g^{-1}







g














1













算法。那么给定



A

=

G

X

A = G \cdot X






A




=








G













X









X

G

1

(

A

)

X \leftarrow G^{-1}(A)






X














G














1










(


A


)





是一个参数



O

(

1

)

O(1)






O


(


1


)





的亚高斯随机向量(与任意的固定单位向量的内积是亚高斯的)。

在 GSW 中,密文



C

{

0

,

1

}

n

l

×

n

l

C \in \{0,1\}^{nl \times nl}






C













{



0


,




1



}











n


l


×


n


l













是二元方阵,秘密



s

Z

q

n

l

s \in Z_q^{nl}






s














Z










q









n


l
























结构化向量

(有个 “big coefficient”),它是个近似特征向量



s

t

C

μ

s

t

(

m

o

d

q

)

s^tC \approx \mu s^t \pmod q







s










t









C













μ



s










t

















(




mod






q


)





。本文中的 GSW 变体,密文



C

Z

q

n

×

n

l

C \in Z_q^{n \times nl}






C














Z










q









n


×


n


l






















是长矩阵,秘密



s

Z

n

s \in Z^{n}






s














Z











n















非结构化的短向量

,关系为



s

t

C

μ

s

t

G

(

m

o

d

q

)

s^tC \approx \mu \cdot s^tG \pmod q







s










t









C













μ














s










t









G










(




mod






q


)





。两者是等价的。

对称的 GSW 变体:




  1. G

    S

    W

    .

    G

    e

    n

    (

    1

    n

    )

    GSW.Gen(1^n)






    GS


    W


    .


    G


    e


    n


    (



    1










    n









    )





    :采样



    s

    ˉ

    R

    χ

    n

    1

    \bar s \leftarrow_R \chi^{n-1}













    s







    ˉ






















    R

























    χ











    n





    1













    ,输出



    s

    :

    =

    (

    s

    ˉ

    ,

    1

    )

    s := (\bar s,1)






    s




    :=








    (









    s







    ˉ








    ,




    1


    )







  2. G

    S

    W

    .

    E

    n

    c

    (

    s

    ,

    μ

    Z

    )

    GSW.Enc(s,\mu \in \mathbb Z)






    GS


    W


    .


    E


    n


    c


    (


    s


    ,




    μ













    Z


    )





    :采样



    C

    ˉ

    R

    Z

    q

    (

    n

    1

    )

    ×

    n

    l

    \bar C \leftarrow_R Z_q^{(n-1)\times nl}













    C







    ˉ






















    R

























    Z










    q









    (


    n





    1


    )


    ×


    n


    l


























    e

    χ

    m

    e \leftarrow \chi^m






    e














    χ










    m












    ,计算



    b

    t

    =

    e

    t

    s

    t

    C

    ˉ

    b^t = e^t – s^t \bar C







    b










    t











    =









    e










    t





















    s










    t
















    C







    ˉ











    ,输出



    C

    =

    (

    C

    ˉ

    ,

    b

    t

    )

    t

    +

    μ

    G

    C

    C = (\bar C,b^t)^t + \mu G \in \mathcal C






    C




    =








    (









    C







    ˉ








    ,





    b










    t










    )










    t











    +








    μ


    G













    C





    (而原始 GSW 中是



    F

    l

    a

    t

    t

    e

    n

    (

    μ

    I

    n

    l

    +

    G

    1

    (

    R

    A

    )

    )

    =

    G

    1

    (

    μ

    G

    +

    R

    A

    )

    Flatten(\mu I_{nl}+G^{-1}(RA)) = G^{-1}(\mu G+RA)






    Fl


    a


    tt


    e


    n


    (


    μ



    I











    n


    l





















    +









    G














    1










    (


    R


    A


    ))




    =









    G














    1










    (


    μ


    G




    +








    R


    A


    )





    ,两者等价)




  3. G

    S

    W

    .

    D

    e

    c

    (

    s

    ,

    C

    C

    )

    GSW.Dec(s,C \in \mathcal C)






    GS


    W


    .


    Dec


    (


    s


    ,




    C













    C


    )





    :由于



    s

    t

    C

    =

    e

    t

    +

    μ

    s

    t

    G

    s^tC = e^t + \mu \cdot s^t G







    s










    t









    C




    =









    e










    t











    +








    μ














    s










    t









    G





    ,因此取出倒数第二列



    c

    c






    c









    G

    G






    G





    的倒数第二列是



    [

    0

    ,


    ,

    0

    ,

    2

    l

    2

    ]

    [0,\cdots,0,2^{l-2}]






    [


    0


    ,











    ,




    0


    ,





    2











    l





    2










    ]





    ),计算出



    2

    l

    2

    μ

    s

    ,

    c

    2^{l-2} \cdot \mu \approx \langle s,c \rangle







    2











    l





    2





















    μ
















    s


    ,




    c








    ,输出



    μ

    \mu






    μ








L

W

E

n

1

,

q

,

χ

LWE_{n-1,q,\chi}






L


W



E











n





1


,


q


,


χ






















假设下,上述方案是 IND-CPA 安全的。

  • 同态加法



    C

    1

    C

    2

    :

    =

    C

    1

    +

    C

    2

    C_1 \boxplus C_2:= C_1 + C_2







    C










    1






























    C










    2




















    :=









    C










    1




















    +









    C










    2





















    ,噪声



    e

    1

    t

    +

    e

    2

    t

    e_1^t+e_2^t







    e










    1








    t




















    +









    e










    2








    t




















  • 同态乘法



    C

    1

    C

    2

    :

    =

    C

    1

    X

    C_1 \boxdot C_2:= C_1 \cdot X







    C










    1






























    C










    2




















    :=









    C










    1





























    X





    ,噪声



    e

    1

    t

    X

    +

    μ

    1

    e

    2

    t

    e_1^t X + \mu_1 e_2^t







    e










    1








    t


















    X




    +









    μ










    1



















    e










    2








    t





















    ,其中



    X

    G

    1

    (

    C

    2

    )

    X \leftarrow G^{-1}(C_2)






    X














    G














    1










    (



    C










    2


















    )




由于同态乘法的非对称噪声增长,我们令算符



\boxdot














右结合

的( right associative)。对于一个关于密文



C

i

,

i

=

1

,


,

k

C_i, i=1,\cdots,k







C










i


















,




i




=








1


,











,




k







乘法链







C

(

i

[

k

]

C

i

)

G

=

C

1

(

(

C

k

G

)

)

C

C \leftarrow \left(\boxdot_{i \in [k]} C_i\right) \boxdot G = C_1 \boxdot(\cdots(C_k \boxdot G)) \in \mathcal C






C















(
















i





[


k


]




















C










i



















)















G




=









C










1





























(







(



C










k





























G


))













C





这里的



G

=

0

+

1

G

C

G = \textbf{0}+1 \cdot G \in \mathcal C






G




=









0





+








1













G













C





是个

零噪声的



1

1






1





的密文

。由于



μ

{

0

,

1

}

\mu \in \{0,1\}






μ













{



0


,




1


}





,因此



C

C






C





的噪声为



i

[

k

]

e

i

t

X

i

\sum_{i \in [k]} e_i^t X_i



















i





[


k


]






















e










i








t



















X










i





















,这是参数



O

(

e

i

)

O(\|e_i\|)






O


(






e










i





















)





的亚高斯随机变量(

拟加性

)。



HEPerm

现在,我们基于上述的对称 GSW 方案,构造关于对称群



S

r

S_r







S










r





















的同态方案(不是 FHE):




  1. H

    E

    P

    e

    r

    m

    .

    G

    e

    n

    (

    1

    n

    )

    HEPerm.Gen(1^n)






    H


    EP


    er


    m


    .


    G


    e


    n


    (



    1










    n









    )





    :输出



    s

    k

    :

    =

    G

    S

    W

    .

    G

    e

    n

    (

    1

    n

    )

    sk := GSW.Gen(1^n)






    s


    k




    :=








    GS


    W


    .


    G


    e


    n


    (



    1










    n









    )







  2. H

    E

    P

    e

    r

    m

    .

    E

    n

    c

    (

    s

    k

    ,

    π

    S

    r

    )

    HEPerm.Enc(sk, \pi \in S_r)






    H


    EP


    er


    m


    .


    E


    n


    c


    (


    s


    k


    ,




    π














    S










    r


















    )





    :找到对应的置换阵



    P

    π

    =

    (

    p

    i

    j

    )

    {

    0

    ,

    1

    }

    r

    ×

    r

    P_\pi = (p_{ij}) \in \{0,1\}^{r \times r}







    P










    π




















    =








    (



    p











    ij



















    )













    {



    0


    ,




    1



    }











    r


    ×


    r













    ,输出



    C

    =

    (

    G

    S

    W

    .

    E

    n

    c

    (

    s

    k

    ,

    p

    i

    j

    )

    )

    C

    r

    ×

    r

    C = (GSW.Enc(sk,p_{ij})) \in \mathcal C^{r \times r}






    C




    =








    (


    GS


    W


    .


    E


    n


    c


    (


    s


    k


    ,





    p











    ij



















    ))














    C











    r


    ×


    r















  3. H

    E

    P

    e

    r

    m

    .

    D

    e

    c

    (

    s

    k

    ,

    C

    C

    r

    ×

    r

    )

    HEPerm.Dec(sk, C \in \mathcal C^{r \times r})






    H


    EP


    er


    m


    .


    Dec


    (


    s


    k


    ,




    C














    C











    r


    ×


    r










    )





    :计算出



    P

    π

    =

    (

    G

    S

    W

    .

    D

    e

    c

    (

    s

    k

    ,

    c

    i

    j

    )

    )

    {

    0

    ,

    1

    }

    r

    ×

    r

    P_\pi = (GSW.Dec(sk,c_{ij})) \in \{0,1\}^{r \times r}







    P










    π




















    =








    (


    GS


    W


    .


    Dec


    (


    s


    k


    ,





    c











    ij



















    ))













    {



    0


    ,




    1



    }











    r


    ×


    r













    ,输出对应的置换



    π

    \pi






    π




这个方案有如下的同态运算(对于任意的



π

,

σ

S

r

\pi,\sigma \in S_r






π


,




σ














S










r





















,而不仅仅那



r

r






r





个循环置换):


  • 同态的映射复合




    C

    π

    C

    σ

    :

    =

    (

    k

    [

    r

    ]

    (

    c

    i

    k

    π

    c

    k

    j

    σ

    )

    )

    i

    j

    C

    r

    ×

    r

    C^\pi \circ C^\sigma := \left(\boxplus_{k \in [r]} \left(c_{ik}^\pi \boxdot c_{kj}^\sigma\right)\right)_{ij} \in \mathcal C^{r \times r}







    C










    π





















    C










    σ











    :=











    (
















    k





    [


    r


    ]























    (




    c











    ik









    π


























    c











    kj









    σ



















    )





    )













    ij































    C











    r


    ×


    r













    ,就是一般的矩阵乘法(在同态运算下),噪声



    E

    +

    P

    π

    E

    σ

    E+P^\pi \cdot E^\sigma






    E




    +









    P










    π





















    E










    σ












    ,其中



    E

    E






    E





    的第



    i

    i






    i





    行服从参数



    O

    (

    e

    i

    π

    )

    O(\|e_i^\pi\|)






    O


    (






    e










    i








    π





















    )





    的亚高斯分布,这里



    e

    i

    π

    e_i^\pi







    e










    i








    π





















    是指



    E

    π

    E^\pi







    E










    π












    的第



    i

    i






    i





    行。


  • 同态的相等判定




    E

    q

    (

    C

    π

    ,

    σ

    )

    :

    =

    (

    i

    [

    r

    ]

    c

    σ

    (

    i

    )

    ,

    i

    π

    )

    G

    C

    Eq(C^\pi,\sigma) := \left(\boxdot_{i \in [r]} c_{\sigma(i),i}^\pi\right) \boxdot G \in \mathcal C






    Eq


    (



    C










    π









    ,




    σ


    )




    :=










    (
















    i





    [


    r


    ]




















    c











    σ


    (


    i


    )


    ,


    i









    π



















    )















    G













    C





    ,因为置换阵



    P

    π

    P_\pi







    P










    π

























    p

    π

    (

    i

    )

    ,

    i

    p_{\pi(i),i}







    p











    π


    (


    i


    )


    ,


    i






















    都是



    1

    1






    1





    ,而其他的 entry 都是



    0

    0






    0




对于同构于



Z

r

\mathbb Z_r







Z










r





















的循环置换子群



C

r

S

r

C_r \subseteq S_r







C










r






























S










r





















,可以只对指示向量对应的那一列加密。对于



x

,

y

Z

r

x,y \in \mathbb Z_r






x


,




y














Z










r





















,密文



C

x

,

C

y

C

r

C^x,C^y \in \mathcal C^r







C










x









,





C










y





















C










r












,此时的

计算复杂度降低了



r

r






r





因子

  • 同态加法



    C

    x

    C

    y

    :

    =

    (

    k

    [

    r

    ]

    (

    c

    r

    +

    i

    k

    x

    c

    k

    y

    )

    )

    i

    C

    r

    C^x \circ C^y := \left(\boxplus_{k \in [r]} \left(c_{r+i-k}^x \boxdot c_{k}^y \right)\right)_{i} \in \mathcal C^{r }







    C










    x





















    C










    y











    :=











    (
















    k





    [


    r


    ]























    (




    c











    r


    +


    i





    k









    x


























    c











    k









    y



















    )





    )













    i































    C











    r













    ,计算复杂度从



    O

    (

    r

    3

    )

    O(r^3)






    O


    (



    r










    3









    )





    降低到了



    O

    (

    r

    2

    )

    O(r^2)






    O


    (



    r










    2









    )




  • 同态的相等判定



    E

    q

    (

    C

    x

    ,

    v

    )

    :

    =

    c

    v

    x

    C

    Eq(C^x,v) := c_{v}^x \in \mathcal C






    Eq


    (



    C










    x









    ,




    v


    )




    :=









    c











    v









    x





























    C





    ,计算复杂度从



    O

    (

    r

    )

    O(r)






    O


    (


    r


    )





    降低到了



    O

    (

    1

    )

    O(1)






    O


    (


    1


    )




类似的,由于同态乘法的非对称噪声增长,我们令算符



\circ












也是

右结合

的( right associative)。对于一个关于密文



C

i

,

i

=

1

,


,

k

C_i, i=1,\cdots,k







C










i


















,




i




=








1


,











,




k







复合链







C

(

i

[

k

]

C

i

)

J

=

C

1

(

(

C

k

J

)

)

C

r

C \leftarrow \left(\bigcirc _{i \in [k]} C_{i}\right) \circ J = C_1 \circ(\cdots(C_k \circ J)) \in \mathcal C^{r}






C















(
















i





[


k


]




















C











i




















)















J




=









C










1





























(







(



C










k





























J


))














C











r













这里



J

C

r

J \in \mathcal C^{r}






J














C











r













是零噪声的恒等置换



I

r

I_{r}







I











r






















的 HEPerm 密文(对角线 entry 是



1

G

1 \cdot G






1













G





,其他的 entry 都是



0

G

0 \cdot G






0













G





,将第一列作为指示向量的密文)。由于



P

σ

P^\sigma







P










σ












是置换阵,因此



C

C






C





的噪声矩阵的第



i

i






i





行服从参数



O

(

e

i

)

O(\|e_i\|)






O


(






e










i





















)





的亚高斯分布,其中



e

i

E

k

r

e_i \in \mathcal E^{kr}







e










i






























E











k


r

















[

E

1

E

k

]

[E_1|\cdots|E_k]






[



E










1
































E










k


















]





的第



i

i






i





行。



Bootstrapping

现在,我们可以使用 HEPerm 来对

任意的 LWE 方案

执行自举了!

定义群嵌入(group embedding),





ϕ

:

(

Z

q

,

+

)

(

S

:

=

i

=

1

t

S

r

i

,

)

\phi: (\mathbb Z_q,+) \to (S:=\prod_{i=1}^t S_{r_i}, \circ)






ϕ




:








(



Z










q


















,




+


)













(


S




:=

















i


=


1


















t




















S












r










i



































,







)









ϕ

i

\phi_i







ϕ










i





















是它的第



i

i






i





分量。我们为 HEPerm(或者说它的部件 GSW)选取一个足够大的模数



Q

q

Q \gg q






Q













q





,以保证 Bootstrapping 之后的噪声比率很小。

令 LWE 的私钥是



s

Z

q

d

s \in \mathbb Z_q^d






s














Z










q








d





















,密文是二元向量



c

{

0

,

1

}

d

c \in \{0,1\}^d






c













{



0


,




1



}










d












,解密函数为





D

e

c

(

s

,

c

)

:

=

f

(

s

,

c

)

Dec(s,c) := f(\langle s,c \rangle)






Dec


(


s


,




c


)




:=








f


(⟨


s


,




c


⟩)





其中



f

:

Z

q

{

0

,

1

}

f:\mathbb Z_q \to \{0,1\}






f




:









Z










q





























{



0


,




1


}





是某种解码函数。





s

k

χ

n

sk \leftarrow \chi^n






s


k














χ










n












是 HEPerm 的对称秘钥,自举方案如下:




  1. B

    o

    o

    t

    G

    e

    n

    (

    s

    ,

    s

    k

    )

    BootGen(s,sk)






    B


    oo


    tG


    e


    n


    (


    s


    ,




    s


    k


    )





    :将



    s

    s






    s





    的每个分量



    s

    j

    s_j







    s










    j





















    嵌入到



    S

    S






    S





    中,然后对每个



    S

    r

    i

    S_{r_i}







    S












    r










    i






































    上的置换



    ϕ

    i

    (

    s

    j

    )

    \phi_i(s_j)







    ϕ










    i


















    (



    s










    j


















    )





    用 HEPerm 加密,作为 bootstrapping key,





    b

    k

    :

    =

    {

    C

    i

    j

    H

    E

    P

    e

    r

    m

    .

    E

    n

    c

    (

    s

    k

    ,

    ϕ

    i

    (

    s

    j

    )

    )

    C

    r

    i

    :

    i

    [

    t

    ]

    ,

    j

    [

    d

    ]

    }

    bk := \{ C_{ij} \leftarrow HEPerm.Enc(sk,\phi_i(s_j)) \in \mathcal C^{r_i}: i \in [t], j \in [d] \}






    bk




    :=








    {




    C











    ij






























    H


    EP


    er


    m


    .


    E


    n


    c


    (


    s


    k


    ,





    ϕ










    i


















    (



    s










    j


















    ))














    C












    r










    i




























    :








    i













    [


    t


    ]


    ,




    j













    [


    d


    ]}





    由于



    t

    ,

    r

    i

    =

    O

    (

    log

    λ

    )

    t,r_i = O(\log \lambda)






    t


    ,





    r










    i




















    =








    O


    (


    lo

    g





    λ


    )









    d

    =

    O

    ~

    (

    λ

    )

    d = \tilde O(\lambda)






    d




    =















    O







    ~








    (


    λ


    )





    ,因此



    b

    k

    (

    i

    =

    1

    t

    C

    r

    i

    )

    d

    bk \in \left(\prod_{i=1}^t \mathcal C^{r_i}\right)^d






    bk
















    (
















    i


    =


    1









    t





















    C












    r










    i



























    )












    d












    包含



    O

    ~

    (

    λ

    )

    \tilde O(\lambda)













    O







    ~








    (


    λ


    )





    个 GSW 密文。




  2. B

    o

    o

    t

    s

    t

    r

    a

    p

    (

    b

    k

    ,

    c

    {

    0

    ,

    1

    }

    d

    )

    Bootstrap(bk,c \in \{0,1\}^d)






    B


    oo


    t


    s


    t


    r


    a


    p


    (


    bk


    ,




    c













    {



    0


    ,




    1



    }










    d









    )






    • 内积运算

      ,转化为 subset-sum,即



      s

      ,

      c

      =

      j

      :

      c

      j

      =

      1

      s

      j

      Z

      q

      \langle s,c \rangle = \sum_{j:c_j=1} s_j \in \mathbb Z_q









      s


      ,




      c







      =





















      j


      :



      c










      j


















      =


      1






















      s










      j






























      Z










      q





















      ,在对称群



      S

      :

      =

      i

      =

      1

      t

      S

      r

      i

      S:=\prod_{i=1}^t S_{r_i}






      S




      :=





















      i


      =


      1









      t





















      S












      r










      i






































      下的复合链为





      C

      i

      (

      j

      [

      d

      ]

      s

      .

      t

      .

      c

      j

      =

      1

      C

      i

      j

      )

      J

      C

      r

      i

      C_i \leftarrow \left(\bigcirc _{j \in [d]\, s.t.\, c_j=1} C_{ij}\right) \circ J \in \mathcal C^{r_i}







      C










      i































      (
















      j





      [


      d


      ]




      s


      .


      t


      .





      c










      j


















      =


      1




















      C











      ij




















      )















      J














      C












      r










      i





























      回顾下算符



      \circ












      是右结合的,其中



      J

      C

      r

      i

      J \in \mathcal C^{r_i}






      J














      C












      r










      i





























      是恒等置换



      I

      r

      i

      I_{r_i}







      I












      r










      i






































      的无噪声 HEPerm 密文。


    • 解码运算

      ,转化为 equality test,即



      f

      (

      x

      )

      =

      v

      :

      f

      (

      v

      )

      =

      1

      [

      x

      =

      v

      ]

      {

      0

      ,

      1

      }

      f(x) = \sum_{v:f(v)=1} [x=v] \in \{0,1\}






      f


      (


      x


      )




      =





















      v


      :


      f


      (


      v


      )


      =


      1



















      [


      x




      =








      v


      ]













      {



      0


      ,




      1


      }





      ,在对称群



      S

      :

      =

      i

      =

      1

      t

      S

      r

      i

      S:=\prod_{i=1}^t S_{r_i}






      S




      :=





















      i


      =


      1









      t





















      S












      r










      i






































      下的相等判定为





      C

      v

      [

      q

      ]

      s

      .

      t

      .

      f

      (

      v

      )

      =

      1

      (

      (

      i

      [

      t

      ]

      E

      q

      (

      C

      i

      ,

      ϕ

      i

      (

      v

      )

      )

      )

      G

      )

      C

      C \leftarrow \boxplus_{v \in [q]\, s.t.\, f(v)=1} \left(\left(\boxdot_{i \in [t]} Eq(C_i, \phi_i(v))\right) \boxdot G\right) \in \mathcal C






      C


























      v





      [


      q


      ]




      s


      .


      t


      .




      f


      (


      v


      )


      =


      1























      (





      (
















      i





      [


      t


      ]



















      Eq


      (



      C










      i


















      ,





      ϕ










      i


















      (


      v


      ))



      )











      G



      )















      C





      回顾下



      E

      q

      (

      C

      π

      ,

      σ

      )

      C

      Eq(C^\pi, \sigma) \in \mathcal C






      Eq


      (



      C










      π









      ,




      σ


      )













      C





      ,算符



      \boxdot












      是右结合的,而



      G

      G






      G





      是整数



      1

      1






      1





      的无噪声 GSW 密文。

在自举之前,由于我们的 GSW 对密文格式有要求,因此需要对 LWE 密文做一些预处理,包括:

维度约减



模约减



二进制分解

。在自举结束后,选取 GSW 密文的倒数第二列作为 LWE 密文(GSW 密文就是由 LWE 密文组成的向量),并做

密钥切换

,从



s

k

sk






s


k





下的 LWE 密文回到



s

s






s





下的 LWE 密文。



FHEW

2015 年,Ducas 等人提出了 FHEW 方案。与上述的 HEPerm 相似,FHEW 采用一个与原始 LWE 方案不同的加密方案,构造出一个

同态累加器

(Homomorphic Accumulator),然后用它来 refresh 密文。另外,FHEW 还提出了一种

新的 NAND 门

,只需要用到加法同态,而不需要乘法同态,噪声增长率较低。

一个重要发现是,实现 Bootstrapping 根本不需要完整的

比较电路

(同态地比较加密的明文是否大于某个阈值



q

/

2

q/2






q


/2





以提取MSB信息),而只需要一个

同态累加器

,像AP14那样用一系列的判等操作来提取MSB,这就大大简化了自举的复杂度。

另外为了维持 NAND 门的输入密文形式,FHEW 使用的是

Gate Bootstrapping

(而非

Circuit Bootstrapping

),将NAND门输出的密文 refresh 为恰当的密文形式。



Notation

FHEW 定义了一个

randomized rounding

函数



χ

:

R

Z

\chi:\mathbb R \to \mathbb Z






χ




:








R













Z





,对于任意的



x

R

x \in \mathbb R






x













R





和任意的



n

Z

n \in \mathbb Z






n













Z





,都有



χ

(

x

+

n

)

=

χ

(

x

)

+

n

\chi(x+n) = \chi(x)+n






χ


(


x




+








n


)




=








χ


(


x


)




+








n





,其中



χ

(

x

)

x

\chi(x)-x






χ


(


x


)













x





叫做



χ

(

x

)

\chi(x)






χ


(


x


)







rounding error

。不知道本人理解的对不对,



χ

(

x

)

\chi(x)






χ


(


x


)





是一族关于实数



x

x






x





的噪声分布,对于每个固定的



x

x






x





都有一个固定的分布



χ

(

x

(

m

o

d

1

)

)

\chi(x \pmod 1)






χ


(


x










(




mod






1


))





;特别当



x

Z

x \in \mathbb Z






x













Z





时,对应于



χ

(

0

)

\chi(0)






χ


(


0


)





我们说实数域



R

\mathbb R






R





上的

随机变量




X

X






X





是参数



α

>

0

\alpha>0






α




>








0







亚高斯

(subgaussian),如果对于任意的



t

R

t \in \mathbb R






t













R





都满足





E

[

exp

(

2

π

t

X

)

]

e

x

p

(

π

α

2

t

2

)

E[\exp(2\pi tX)] \le exp(\pi \alpha^2 t^2)






E


[


exp


(


2


π


tX


)]













e


x


p


(


π



α










2










t










2









)





进一步地,它的尾部(tail)满足





P

r

[

X

t

]

2

exp

(

π

t

2

/

α

2

)

,

t

0

Pr[|X| \ge t] \le 2\exp(-\pi t^2/\alpha^2),\forall t \ge 0






P


r


[





X
















t


]













2




exp


(





π



t










2









/



α










2









)


,







t













0





所有的



B

 –

B\text{ -}






B










bounded 对称随机变量



X

X






X





都是参数



B

2

π

B \sqrt{2\pi}






B










2


π



























的亚高斯。扩展到

随机向量




x

\bf x







x






,如果它的所有 one-dimensional marginals



u

,

x

\bf \langle u,x \rangle










u


,




x









(其中



u

\bf u







u






是单位向量)是参数



α

\alpha






α





的亚高斯。扩展到

随机矩阵




X

\bf X







X






,如果它的所有 one-dimensional marginals



u

t

X

v

\bf u^tXv








u










t









Xv






(其中



u

,

v

\bf u,v







u


,




v






是单位向量)是参数



α

\alpha






α





的亚高斯。

对于



2

2






2





的幂次



N

N






N









Φ

2

N

(

X

)

=

X

N

+

1

\Phi_{2N}(X)=X^N+1







Φ











2


N



















(


X


)




=









X










N











+








1





是分园多项式(cyclotomic

polynomial)。令



R

=

Z

[

X

]

/

(

X

N

+

1

)

R = \mathbb Z[X]/(X^N+1)






R




=








Z


[


X


]


/


(



X










N











+








1


)





是分园环(cyclotomic ring),对应的商环



R

q

=

R

/

q

R

R_q=R/qR







R










q




















=








R


/


qR





。对于



a

=

a

0

+

a

1

x

+

+

a

N

1

x

N

1

R

a=a_0 + a_1x + \cdots + a_{N-1}x^{N-1} \in R






a




=









a










0




















+









a










1


















x




+













+









a











N





1




















x











N





1





















R





,简记





a

:

=

[

a

0

a

1

a

N

1

]

Z

N

,

a

:

=

[

a

0

a

N

1

a

1

a

1

a

0

a

2

a

N

1

a

N

2

a

0

]

Z

N

×

N

\vec a := \begin{bmatrix} a_0\\ a_1\\ \vdots\\ a_{N-1} \end{bmatrix} \in \mathbb Z^N,\, \mathop{a}\limits^{\Rightarrow} := \begin{bmatrix} a_0 & -a_{N-1} & \cdots & -a_1\\ a_1 & a_0 & \cdots & -a_2\\ \vdots & \vdots & \cdots & \vdots\\ a_{N-1} & a_{N-2} & \cdots & a_{0} \end{bmatrix} \in \mathbb Z^{N \times N}













a


















:=














































a










0

























a










1






































a











N





1











































































Z










N









,














a





















:=














































a










0

























a










1






































a











N





1


















































a











N





1


























a










0






































a











N





2











































































































a










1




























a










2






































a











0











































































Z











N


×


N













其实



a

b

=

a

b

\mathop{a}\limits^{\Rightarrow} \cdot \vec b = \overrightarrow{a \cdot b}














a































b


















=
















a









b


















,这就是环



R

R






R





上的多项式乘积罢了(文章中使用的全是矩阵乘,却不使用多项式乘积)。扩展到向量和矩阵,对于



A

R

w

×

k

A \in R^{w \times k}






A














R











w


×


k













,令



A

Z

w

N

×

k

N

\mathop{A}\limits^{\Rightarrow} \in \mathbb Z^{wN \times kN}














A








































Z











wN


×


k


N













就是对于每个 entry 单独地应用



\mathop{\cdot}\limits^{\Rightarrow}





































算符。我们说一个

随机多项式




a

R

a \in R






a













R





是亚高斯的,如果



a

\vec a













a



















是亚高斯的随机向量。



LWE Symmetric Encryption

我们描述一个基于 LWE 的对称加密方案,它可以用标准的转化技术得到非对称加密。秘钥



s

Z

q

n

,

q

=

n

O

(

1

)

s \in \mathbb Z_q^n,q=n^{O(1)}






s














Z










q








n


















,




q




=









n











O


(


1


)













,消息



m

Z

t

,

t

2

m \in \mathbb Z_t,t \ge 2






m














Z










t


















,




t













2





,随机园整函数满足



χ

(

x

)

x

<

q

/

2

t

|\chi(x)-x| < q/2t









χ


(


x


)













x







<








q


/2


t





对称加密方案

  1. 加密,



    L

    W

    E

    s

    t

    /

    q

    (

    m

    )

    :

    =

    (

    a

    ,

    χ

    (

    a

    s

    +

    m

    q

    /

    t

    )

    (

    m

    o

    d

    q

    )

    )

    Z

    q

    n

    +

    1

    LWE_s^{t/q}(m) := (a,\chi(as+mq/t) \pmod q) \in \mathbb Z_q^{n+1}






    L


    W



    E










    s









    t


    /


    q



















    (


    m


    )




    :=








    (


    a


    ,




    χ


    (


    a


    s




    +








    m


    q


    /


    t


    )










    (




    mod






    q


    ))














    Z










    q









    n


    +


    1






















    ,其中



    a

    Z

    q

    n

    a \in \mathbb Z_q^n






    a














    Z










    q








    n





















    是均匀随机的

  2. 解密,输入密文



    (

    a

    ,

    b

    )

    (a,b)






    (


    a


    ,




    b


    )





    ,输出



    m

    t

    (

    b

    a

    s

    )

    /

    q

    (

    m

    o

    d

    t

    )

    Z

    t

    m’ \leftarrow \lfloor t(b-as)/q \rceil \pmod t \in \mathbb Z_t







    m




































    t


    (


    b













    a


    s


    )


    /


    q













    (




    mod






    t


    )














    Z










    t





















Modulus Switching

,从模数



Q

Q






Q





到模数



q

q






q





的 (scaled) randomized rounding function



[

]

Q

:

q

:

Z

Q

Z

q

[\cdot]_{Q:q}:\mathbb Z_Q \to \mathbb Z_q






[






]











Q


:


q





















:









Z










Q






























Z










q





















定义为





[

x

]

Q

:

q

:

=

q

x

/

Q

+

B

[x]_{Q:q} := \lfloor qx/Q \rfloor + B






[


x



]











Q


:


q





















:=











q


x


/


Q







+








B





其中



B

{

0

,

1

}

B \in \{0,1\}






B













{



0


,




1


}





是服从



P

r

[

B

=

1

]

=

q

x

/

Q

q

x

/

Q

Pr[B=1]=qx/Q-\lfloor qx/Q \rfloor






P


r


[


B




=








1


]




=








q


x


/


Q
















q


x


/


Q








的二值分布,容易看出



E

(

[

x

]

Q

:

q

)

=

q

x

/

Q

E([x]_{Q:q})=qx/Q






E


([


x



]











Q


:


q



















)




=








q


x


/


Q





,并且园整错误



[

x

]

Q

:

q

q

x

/

Q

[x]_{Q:q}-qx/Q






[


x



]











Q


:


q






























q


x


/


Q





是参数



2

π

\sqrt{2\pi}














2


π



























的亚高斯。对于



(

a

,

b

)

L

W

E

z

t

/

q

(

m

)

(a,b) \in LWE_z^{t/q}(m)






(


a


,




b


)













L


W



E










z









t


/


q



















(


m


)





,计算模



q

q






q





下的新密文





M

o

d

S

w

i

t

c

h

(

a

,

b

)

:

=

(

(

[

a

i

]

Q

:

q

)

i

,

[

b

]

Q

:

q

)

ModSwitch(a,b) := (\left([a_i]_{Q:q}\right)_i,[b]_{Q:q})






M


o


d


Sw


i


t


c


h


(


a


,




b


)




:=








(




(


[



a










i



















]











Q


:


q



















)











i




















,




[


b



]











Q


:


q



















)






Key Switching

,设置 base 为



B

k

s

B_{ks}







B











k


s






















,从密钥



z

Z

q

N

z \in \mathbb Z_q^N






z














Z










q








N





















到密钥



s

Z

q

N

s \in \mathbb Z_q^N






s














Z










q








N





















的 switching key



R

:

=

{

k

i

j

v

}

\mathfrak R := \{k_{ijv}\}






R




:=








{




k











ij


v



















}





定义为





k

i

j

v

L

W

E

s

q

/

q

(

v

z

i

B

k

s

j

)

,

i

=

1

,


,

N

,

j

=

0

,


,

d

k

s

1

,

v

=

0

,


,

B

k

s

1

k_{ijv} \leftarrow LWE_s^{q/q}(vz_iB_{ks}^j),\, i = 1,\cdots,N,\, j=0,\cdots,d_{ks}-1,\, v =0,\cdots,B_{ks}-1







k











ij


v






























L


W



E










s









q


/


q



















(


v



z










i



















B











k


s









j


















)


,






i




=








1


,











,




N


,






j




=








0


,











,





d











k


s






























1


,






v




=








0


,











,





B











k


s






























1





其中



d

k

s

=

log

B

k

s

q

d_{ks} = \lceil \log_{B_{ks}}q \rceil







d











k


s





















=












lo

g













B











k


s






































q








,并且



t

=

q

t=q






t




=








q





使得



k

i

j

v

k_{ijv}







k











ij


v






















是噪声比率为



1

/

2

1/2






1/2





的 not typically decryptable 的密文。对于



(

a

,

b

)

L

W

E

z

t

/

q

(

m

)

(a,b) \in LWE_z^{t/q}(m)






(


a


,




b


)













L


W



E










z









t


/


q



















(


m


)





,首先做分解



a

i

=

j

a

i

j

B

k

s

j

a_i = \sum_j a_{ij} B_{ks}^j







a










i




















=




















j





















a











ij




















B











k


s









j





















,然后计算



s

s






s





下的新密文





K

e

y

S

w

i

t

c

h

(

(

a

,

b

)

,

R

)

:

=

(

0

,

b

)

i

,

j

k

i

,

j

,

a

i

j

KeySwitch\left((a,b),\mathfrak R\right) := (0,b) – \sum_{i,j} k_{i,j,a_{ij}}






Key


Sw


i


t


c


h





(


(


a


,




b


)


,




R


)





:=








(


0


,




b


)






















i


,


j






























k











i


,


j


,



a











ij







































可以验证



b

=

b

a

z

+

a

s

E

b’=b-az+a’s-E







b
























=








b













a


z




+









a






















s













E





,从而



b

a

s

b

a

z

m

q

/

t

b’-a’s \approx b-az \approx mq/t







b


































a






















s













b













a


z













m


q


/


t





,前后两者加密了同一个明文。



NAND Gate

本文提出了一种新的 NAND 计算方式。思路是,用



Z

\mathbb Z






Z





上的

仿射变换来拟合

NAND 运算:




m

0

m_0







m










0























m

1

m_1







m










1























m

0

+

m

1

m_0+m_1







m










0




















+









m










1























5

4

1

2

(

m

0

+

m

1

)

\dfrac{5}{4}-\dfrac{1}{2}(m_0+m_1)

















4














5










































2














1




















(



m










0




















+









m










1


















)







0

0






0







0

0






0







0

0






0







5

/

4

5/4






5/4







0

0






0







1

1






1







1

1






1







3

/

4

3/4






3/4







1

1






1







0

0






0







1

1






1







3

/

4

3/4






3/4







1

1






1







1

1






1







2

2






2







1

/

4

1/4






1/4




只需要在就近取整,就可以得到



m

0

ˉ

m

1

m_0 \bar\wedge m_1







m










0

































ˉ









m










1





















的结果了。将明文空间



Z

t

\mathbb Z_t







Z










t





















设置为



t

=

4

t=4






t




=








4





,并设置一个更小的错误界



E

=

q

/

16

E = q/16






E




=








q


/16





,那么对于



m

i

{

0

,

1

}

m_i \in \{0,1\}







m










i





























{



0


,




1


}





,计算密文



c

i

L

W

E

s

4

/

q

(

m

i

,

q

/

16

)

c_i \in LWE_s^{4/q}(m_i,q/16)







c










i





























L


W



E










s









4/


q



















(



m










i


















,




q


/16


)





,另外计算无噪声密文



(

0

,

5

q

8

)

L

W

E

s

2

/

q

(

5

4

,

0

)

(0,\dfrac{5q}{8}) \in LWE_s^{2/q}(\dfrac{5}{4},0)






(


0


,















8














5


q




















)













L


W



E










s









2/


q



















(













4














5




















,




0


)





,并将



L

W

E

s

4

/

q

(

m

i

,

q

/

16

)

LWE_s^{4/q}(m_i,q/16)






L


W



E










s









4/


q



















(



m










i


















,




q


/16


)





视为



L

W

E

s

2

/

q

(

1

2

m

i

,

q

/

16

)

LWE_s^{2/q}(\dfrac{1}{2}m_i,q/16)






L


W



E










s









2/


q



















(













2














1





















m










i


















,




q


/16


)




计算



m

0

ˉ

m

1

=

1

m

0

m

1

=

5

4

1

2

(

m

0

+

m

1

)

m_0 \bar\wedge m_1 = 1-m_0m_1 = \left\lfloor \dfrac{5}{4}-\dfrac{1}{2}(m_0+m_1) \right\rceil







m










0

































ˉ









m










1




















=








1














m










0



















m










1




















=

























4














5






































2














1




















(



m










0




















+





m










1


















)











的同态与非门:





H

o

m

N

A

N

D

:

L

W

E

s

4

/

q

(

m

0

,

q

/

16

)

×

L

W

E

s

4

/

q

(

m

1

,

q

/

16

)

L

W

E

s

2

/

q

(

m

0

ˉ

m

1

,

q

/

4

)

(

a

,

b

)

H

o

m

N

A

N

D

(

(

a

0

,

b

0

)

,

(

a

1

,

b

1

)

)

:

=

(

a

0

a

1

,

5

q

8

b

0

b

1

)

HomNAND: LWE_s^{4/q}(m_0,q/16) \times LWE_s^{4/q}(m_1,q/16) \to LWE_s^{2/q}(m_0 \bar\wedge m_1,q/4)\\ (a,b) \leftarrow HomNAND((a_0,b_0),\, (a_1,b_1)) := (-a_0-a_1,\, \dfrac{5q}{8}-b_0-b_1)






Ho


m


N


A


N


D




:








L


W



E










s









4/


q



















(



m










0


















,




q


/16


)




×








L


W



E










s









4/


q



















(



m










1


















,




q


/16


)













L


W



E










s









2/


q



















(



m










0

































ˉ









m










1


















,




q


/4


)








(


a


,




b


)













Ho


m


N


A


N


D


((



a










0


















,





b










0


















)


,






(



a










1


















,





b










1


















))




:=








(






a










0






























a










1


















,

















8














5


q
































b










0






























b










1


















)





于是

NAND 门只需要同态加法

,不需要采用同态乘法,因此输入密文的噪声界从以前的



O

(

q

)

O(\sqrt q)






O


(









q























)





扩大到了



O

(

q

)

O(q)






O


(


q


)





。可以验证,





b

a

s

=

5

q

8

(

b

0

a

0

s

)

(

b

1

a

1

s

)

=

q

2

(

5

4

1

2

(

m

0

+

m

1

)

)

(

e

0

+

e

1

)

=

q

2

(

m

0

ˉ

m

1

±

1

4

)

(

e

0

+

e

1

)

=

q

2

(

m

0

ˉ

m

1

)

±

q

8

(

e

0

+

e

1

)

\begin{aligned} b-as &= \dfrac{5q}{8} – (b_0-a_0s) – (b_1-a_1s)\\ &= \dfrac{q}{2}\left(\dfrac{5}{4}-\dfrac{1}{2}(m_0+m_1)\right) – (e_0+e_1)\\ &= \dfrac{q}{2}\left(m_0 \bar\wedge m_1 \pm \dfrac{1}{4}\right) – (e_0+e_1)\\ &= \dfrac{q}{2}\left(m_0 \bar\wedge m_1\right) \pm \dfrac{q}{8} – (e_0+e_1)\\ \end{aligned}
















b









a


s















































=















8














5


q



























(



b










0


























a










0


















s


)









(



b










1


























a










1


















s


)












=















2














q
























(














4














5






































2














1




















(



m










0




















+





m










1


















)



)











(



e










0




















+





e










1


















)












=















2














q
























(




m










0

































ˉ









m










1




















±















4














1





















)











(



e










0




















+





e










1


















)












=















2














q























(



m










0

































ˉ









m










1


















)





±















8














q



























(



e










0




















+





e










1


















)






















噪声



q

8

(

e

0

+

e

1

)

<

q

8

+

2

×

q

16

=

q

4

|\dfrac{q}{8} – (e_0+e_1)| < \dfrac{q}{8} + 2 \times \dfrac{q}{16} = \dfrac{q}{4}




















8














q































(



e










0




















+









e










1


















)







<



















8














q






















+








2




×



















16














q






















=



















4














q























,因此可以正确解密。

为了继续进行 NAND 运算,我们需要一个刷新函数:





R

e

f

r

e

s

h

:

L

W

E

s

2

/

q

(

m

,

q

/

4

)

L

W

E

s

4

/

q

(

m

,

q

/

16

)

Refresh:\, LWE_s^{2/q}(m,q/4) \to LWE_s^{4/q}(m,q/16)






R


e


f


res


h




:










L


W



E










s









2/


q



















(


m


,




q


/4


)













L


W



E










s









4/


q



















(


m


,




q


/16


)





这个函数就是 Bootstrapping 的作用,每次 NAND 计算后都立刻刷新密文,因此计算瓶颈在 Refresh 上。



Homomorphic Accumulator

FHEW 选取一个可以与 LWE 加密方案不同的另一个加密方案



E

(

)

E(\cdot)






E


(





)





,要求它对于



(

a

,

b

)

L

W

E

s

2

/

q

(

m

)

(a,b) \in LWE_s^{2/q}(m)






(


a


,




b


)













L


W



E










s









2/


q



















(


m


)





满足如下运算关系





2

q

(

b

a

E

(

s

)

)

(

m

o

d

2

)

=

E

(

m

)

\left\lfloor \dfrac{2}{q}(b-a \cdot E(s))\right\rceil \pmod 2 = E(m)























q














2




















(


b









a









E


(


s


))


















(




mod






2


)




=








E


(


m


)





关键是计算



b

a

E

(

s

)

=

E

(

b

a

s

)

b-a \cdot E(s) = E(b-a \cdot s)






b













a













E


(


s


)




=








E


(


b













a













s


)





,这只是密文的同态数乘,可以被视为一些密文的加法。方案



E

E






E





被用来构造

同态累加器

(Homomorphic Accumulator),它是一个算法四元组



(

E

,

I

n

i

t

,

I

n

c

r

,

m

s

b

E

x

t

r

a

c

t

)

(E,Init,Incr,msbExtract)






(


E


,




I


ni


t


,




I


n


cr


,




m


s


b


E


x


t


r


a


c


t


)








  • E

    E






    E





    :加密算法,密文空间



    C

    \mathcal C






    C





    可以与



    L

    W

    E

    s

    t

    /

    q

    LWE_s^{t/q}






    L


    W



    E










    s









    t


    /


    q






















    不同。




  • I

    n

    i

    t

    Init






    I


    ni


    t





    :初始化,



    A

    C

    C

    I

    n

    i

    t

    (

    v

    0

    )

    ACC \leftarrow Init(v_0)






    A


    CC













    I


    ni


    t


    (



    v










    0


















    )





    简记为



    A

    C

    C

    v

    0

    ACC \leftarrow v_0






    A


    CC














    v










    0























  • I

    n

    c

    r

    Incr






    I


    n


    cr





    :同态累加(Increment),



    A

    C

    C

    I

    n

    c

    r

    (

    A

    C

    C

    ,

    E

    (

    v

    i

    )

    )

    ACC \leftarrow Incr(ACC,E(v_i))






    A


    CC













    I


    n


    cr


    (


    A


    CC


    ,




    E


    (



    v










    i


















    ))





    简记为



    A

    C

    C

    +

    E

    (

    v

    i

    )

    ACC \overset{+}{\leftarrow} E(v_i)






    A


    CC























    +
















    E


    (



    v










    i


















    )





    ,其中



    i

    =

    1

    ,


    ,

    l

    i=1,\cdots,l






    i




    =








    1


    ,











    ,




    l







  • m

    s

    b

    E

    x

    t

    r

    a

    c

    t

    msbExtract






    m


    s


    b


    E


    x


    t


    r


    a


    c


    t





    :提取 MSB,



    c

    m

    s

    b

    E

    x

    t

    r

    a

    c

    t

    (

    A

    C

    C

    )

    c \leftarrow msbExtract(ACC)






    c













    m


    s


    b


    E


    x


    t


    r


    a


    c


    t


    (


    A


    CC


    )




我们说这个同态累加器是



E

 – correct

\mathcal E\text{ – correct}






E



– correct






的,如果



c

L

W

E

s

t

/

q

(

i

v

i

,

E

(

l

)

)

c \notin LWE_s^{t/q}(\sum_i v_i, \mathcal E(l))






c

















/


















L


W



E










s









t


/


q



















(














i





















v










i


















,




E


(


l


))





的概率可忽略。对于



t

=

4

t=4






t




=








4





,要求



E

(

l

)

q

/

16

\mathcal E(l) \le q/16






E


(


l


)













q


/16




然后利用上述的同态累加器,可以实现 refresh 函数。首先预计算

refreshing key




K

:

=

{

K

i

j

c

}

\mathcal K := \{K_{ijc}\}






K




:=








{




K











ij


c



















}











K

i

j

c

:

=

E

(

c

s

i

B

r

j

(

m

o

d

q

)

)

,

i

=

1

,


,

n

,

j

=

0

,


,

d

r

1

,

c

=

0

,


,

B

r

1

K_{ijc} := E(cs_iB_r^j \pmod q),\, i = 1,\cdots,n,\, j=0,\cdots,d_{r}-1,\, c =0,\cdots,B_{r}-1







K











ij


c





















:=








E


(


c



s










i



















B










r








j


























(




mod






q


))


,






i




=








1


,











,




n


,






j




=








0


,











,





d











r






























1


,






c




=








0


,











,





B











r






























1





其中



d

r

=

log

B

r

q

d_{r} = \lceil \log_{B_{r}}q \rceil







d











r





















=












lo

g













B











r






































q








,这儿的 LWE 密钥



s

Z

q

n

s \in \mathbb Z_q^n






s














Z










q








n





















的各个系数被 power 为



(

s

i

B

r

j

)

j

(s_i B_r^j)_j






(



s










i



















B










r








j



















)










j





















,然后枚举了所有的



B

r

B_r







B










r





















进制下的所有取值。由于



D

e

c

o

m

p

o

s

e

(

a

i

)

P

o

w

e

r

(

s

i

)

=

a

i

s

i

Decompose(a_i) \cdot Power(s_i) = a_i \cdot s_i






Deco


m


p


ose


(



a










i


















)













P


o


w


er


(



s










i


















)




=









a










i






























s










i





















,因此可以根据



a

i

=

j

a

i

j

B

r

j

a_i = \sum_j a_{ij} B_r^j







a










i




















=




















j





















a











ij




















B










r








j





















挑选出对应的



K

i

,

j

,

a

i

j

K_{i,j,a_{ij}}







K











i


,


j


,



a











ij







































计算同态加法。

在这里插入图片描述

初始化



b

+

q

/

4

b+q/4






b




+








q


/4





,这使得循环末尾





v

=

q

/

4

+

b

a

s

=

m

q

/

2

+

(

e

+

q

/

4

)

v = q/4 + b-a \cdot s = mq/2 + (e+q/4)






v




=








q


/4




+








b













a













s




=








m


q


/2




+








(


e




+








q


/4


)





由于



e

<

q

/

4

|e|<q/4









e







<








q


/4





,因此



e

=

e

+

q

/

4

(

0

,

q

/

2

)

e’=e+q/4 \in (0,q/2)







e
























=








e




+








q


/4













(


0


,




q


/2


)





,如果



v

(

0

,

q

/

2

)

v \in (0,q/2)






v













(


0


,




q


/2


)





那么



m

=

0

m=0






m




=








0





,如果



v

(

q

/

2

,

q

)

v \in (q/2,q)






v













(


q


/2


,




q


)





那么



m

=

1

m=1






m




=








1





,这就把

提取



b

a

s

b-as






b













a


s





的 MSB 转化为了测试



v

v






v





的范围

(与 HEPerm 类似)。

FHEW 使用 Ring-GSW 来实例化同态累加器。LWE 的模数



q

=

2

k

q=2^k






q




=









2










k












,消息域大小



t

=

4

t=4






t




=








4





。GSW 的模数



Q

Q






Q





满足



Q

=

B

g

d

g

Q=B_g^{d_g}






Q




=









B










g










d










g






































,其中 base



B

g

B_g







B










g

























3

3






3





的幂次(这使得



K

3

,

N

=

2

K

,

X

N

+

1

=

(

X

N

/

2

+

X

N

/

4

1

)

(

X

N

/

2

X

N

/

4

1

)

\forall K \ge 3,N=2^K,X^N+1 = (X^{N/2}+X^{N/4}-1) (X^{N/2}-X^{N/4}-1)









K













3


,




N




=









2










K









,





X










N











+








1




=








(



X











N


/2












+









X











N


/4





















1


)


(



X











N


/2






















X











N


/4





















1


)





,从而



R

Q

R_Q







R










Q





















几乎是一个域)。额外设置一个参数



u

=

Q

/

2

t

u = \lfloor Q/2t \rfloor






u




=











Q


/2


t








或者



u

=

Q

/

2

t

u = \lceil Q/2t \rceil






u




=











Q


/2


t








,它们在



Z

Q

\mathbb Z_Q







Z










Q





















中是可逆的,且误差



u

Q

/

2

t

<

1

|u-Q/2t|<1









u













Q


/2


t







<








1





设置环



R

=

Z

[

X

]

/

(

X

N

+

1

)

R = \mathbb Z[X]/(X^N+1)






R




=








Z


[


X


]


/


(



X










N











+








1


)





,使得



q

2

N

q\mid 2N






q













2


N





,那么它有



q

q






q





次本原单位根



Y

:

=

X

2

N

/

q

Y := X^{2N/q}






Y




:=









X











2


N


/


q













,因此



Z

q

Y

\mathbb Z_q \cong \langle Y \rangle







Z










q
































Y








是单位根循环群



G

=

X

Z

2

N

G = \langle X \rangle \cong \mathbb Z_{2N}






G




=











X

















Z











2


N






















的子循环群。消息



m

Z

q

m \in \mathbb Z_q






m














Z










q





















可以

直接编码到指数上





Y

m

R

Y^m \in R







Y










m




















R





,其向量表示为



{

1

,

0

,

1

}

N

\{-1,0,1\}^N






{






1


,




0


,




1



}










N












上的 one-hot 向量。为了提取



m

m






m





的 MSB,我们构造一个

testing vector






t

:

=

v

=

1

q

/

2

1

Y

v

{

1

,

0

,

1

}

N

t := – \sum_{v=1}^{q/2-1} \vec Y^v \in \{-1,0,1\}^N






t




:=






















v


=


1



















q


/2





1




























Y
























v




















{






1


,




0


,




1



}










N












如果



0

m

<

N

0 \le m < N






0













m




<








N





那么



t

Y

m

=

1

t \cdot \vec Y^m = -1






t





















Y
























m











=











1





,如果



N

m

<

2

N

N \le m < 2N






N













m




<








2


N





那么



t

Y

m

=

+

1

t \cdot \vec Y^m = +1






t





















Y
























m











=








+


1





,这其实就是挨个测试了



E

q

(

m

,

v

)

,

M

S

B

(

v

)

=

0

Eq(m,v),\forall MSB(v)=0






Eq


(


m


,




v


)


,







MSB


(


v


)




=








0





。为了将它们变换回



0

/

1

0/1






0/1





,观察到



1

u

+

u

=

0

Q

/

t

-1 \cdot u + u = 0 \cdot Q/t









1













u




+








u




=








0













Q


/


t









+

1

u

+

u

=

1

Q

/

t

+1 \cdot u + u = 1 \cdot Q/t






+


1













u




+








u




=








1













Q


/


t





,因此只要在将 GSW 密文的明文空间设为



Z

2

t

Z_{2t}







Z











2


t






















(RLWE 就是对于多项式



Y

v

Y^v







Y










v












的每个系数分别执行 LWE 加密),最后做一个偏移



u

u






u





就把



±

1

Z

2

t

\pm 1 \in Z_{2t}






±


1














Z











2


t






















变换为了



0

/

1

Z

t

0/1 \in Z_t






0/1














Z










t





















的 LWE 密文。

FHEW 的基于 RGSW 的同态累加器(密文的形状略微复杂,竖长,它是若干 RLWE 密文的组合):

在这里插入图片描述

由于

GSW 密文就是由 LWE 密文组成的向量

,因此提取 MSB 对应的 LWE 密文,就是挑选出对应的列向量:

在这里插入图片描述

Refresh 的主要的计算量集中在累加阶段,可以用 FFT/NTT 来加速:

在这里插入图片描述



版权声明:本文为weixin_44885334原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。