Lattice based Somewhat Homomorphic Encryption
- q∈N 大きな自然数,
- n 円分整数の次元
- 秘密鍵
s=i=0∑n−1siξi←Z(2)[ξ] (Z(q):={−2q+1,⋯,2q})
ノイズ
e∈Z(q)[ξ]←χ(0,σ2)
- 注意: σ は大きすぎると復号できなくなり, 小さすぎても安全性が低い
公開鍵
pk1=a=∑n−1aiξi←Z(q)[ξ]
pk2=[as+e]q
Scheme
KeyGen
- e←χ(0,σ2)
- s←Z(2)[ξ]
- a←Z(q)[ξ]
- b=[as+2e]q∈Z(q)[ξ]
- (pk,sk)=((a,b),s)
Encpk(m)
- 小さな一様乱数 v←UZ(2)[ξ]
- ノイズ e0,e1←χ(0,σ2)
- c0=[bv+2e0+m]q,c1=[av+2e1]q
- c=(c0,c1)
Decsk(c)
Add(m,m′)
- (c0+c0′,c1+c1′)=Encpk(m+m′)
Mul(m,m′)
- (c0′′,c1′′,c2′′):=([c0c0′]q,[c0c1′+c0′c1]q,[−c1c1′]q)(modq)
- mm′=[[c0′′−sc1′′−s2c2′′]q]2
問題点は計算結果が3成分になってしまうこと
Relinearize
健全性の証明
加算
m+m′=Decsk(c+′c′)
を示す
c0′−sc1′:=m′+2et′
Decsk(Encpk(m+m′))
≡(c0+c0′)+s(c1+c1′)
≡⋯
≡m+m′+2(et+et′)(modq)
2(et+et′)≪q
よりOK
乗算
mm′=Decsk(c×′c′)
を示す
c0′−sc1′:=m+et′
c′′≡mm′+2(etm′+et′m+etet′)(modq)
積のノイズ部分(第2項) が
q
より小さい時に正しく復号できる.
c0∗−sc1∗≡⋯≡Pmm′+2Pet′′+2ec2(modq)
は
P
の倍数.
[[c0∗−sc1∗]q]2=⋯=mm′
参考文献