关键参数
d
d
d:多项式的次数,一般用2的指数次幂
t
t
t:明文模
q
q
q:密文模;实际应用中,
q
q
q比
t
t
t大很多
密钥生成
私钥SK生成
随机生成degree小于 d d d,系数取值为 {-1, 0, 1} 的多项式
公钥PK生成
公钥PK为一对多项式 ( P K 0 , P K 1 ) (PK_0, PK_1) (PK0,PK1)
P K 0 = [ − 1 ( a ∗ S K + e ) ] q PK_0=[-1(a*SK+e)]_q PK0=[−1(a∗SK+e)]q
P K 1 = a PK_1=a PK1=a
其中, a ← R q a\leftarrow R_q a←Rq 为一个随机多项式; e ← χ e\leftarrow \chi e←χ是一个随机噪音多项式。 [ . ] q [.]_q [.]q表示多项式计算在 R q R_q Rq中进行,多项式系数小于 q q q,多项式要模 ( x d + 1 ) (x^d+1) (xd+1)
加密和解密
加密
明文 m ∈ R t m\in R_t m∈Rt, u ← R 2 u\leftarrow R_2 u←R2, e 1 , e 2 ← χ e_1,e_2\leftarrow \chi e1,e2←χ,密文 C = ( C 0 , C 1 ) C=(C_0,C_1) C=(C0,C1) 为两个 R q R_q Rq中的多项式
C
0
=
[
P
K
0
⋅
u
+
e
1
+
Δ
⋅
m
]
q
C_0=[PK_0\cdot u+e_1+\Delta\cdot m]_q
C0=[PK0⋅u+e1+Δ⋅m]q
C
1
=
[
P
K
1
⋅
u
+
e
2
]
q
C_1=[PK_1\cdot u+e_2]_q
C1=[PK1⋅u+e2]q
其中, Δ = ⌊ q / t ⌋ \Delta=\lfloor q/t \rfloor Δ=⌊q/t⌋
解密
m = [ ⌊ t ⋅ [ C 0 + C 1 ⋅ S K ] q q ⌉ ] t m=[\lfloor \frac{t\cdot [C_0+C_1\cdot SK]_q}{q}\rceil]_t m=[⌊qt⋅[C0+C1⋅SK]q⌉]t
为什么能够正确解密出 m m m?
首先,很容易计算得到 C 0 + C 1 ⋅ S K = Δ m + e ⋅ u + e 1 + e 2 ⋅ S K m o d q C_0+C_1\cdot SK=\Delta m+e\cdot u +e_1+e_2\cdot SK \mod q C0+C1⋅SK=Δm+e⋅u+e1+e2⋅SKmodq
令 v = e ⋅ u + e 1 + e 2 ⋅ S K v=e\cdot u +e_1+e_2\cdot SK v=e⋅u+e1+e2⋅SK, C 0 + C 1 ⋅ S K C_0+C_1\cdot SK C0+C1⋅SK可以表示为 Δ m + v + q ⋅ r \Delta m+v+q\cdot r Δm+v+q⋅r。令 ϵ = q / t − Δ < 1 \epsilon=q/t\ - \Delta<1 ϵ=q/t −Δ<1,则有 C 0 + C 1 ⋅ S K = ( q / t − ϵ ) m + v + q ⋅ r C_0+C_1\cdot SK=(q/t-\epsilon)m+v+q\cdot r C0+C1⋅SK=(q/t−ϵ)m+v+q⋅r
即: t / q ∗ ( C 0 + C 1 ⋅ S K ) = m + t / q ( v − ϵ ⋅ m ) + t ⋅ r t/q *(C_0+C_1\cdot SK)=m+t/q(v-\epsilon\cdot m)+t\cdot r t/q∗(C0+C1⋅SK)=m+t/q(v−ϵ⋅m)+t⋅r
解密需要计算近似值 ⌊ ∗ ⌉ t \lfloor *\rceil_t ⌊∗⌉t,其中 m ∈ R t m\in R_t m∈Rt,则只要参数满足 ∣ ∣ v − ϵ ⋅ m ∣ ∣ < Δ / 2 ||v-\epsilon\cdot m||<\Delta/2 ∣∣v−ϵ⋅m∣∣<Δ/2 即 t / q ⋅ ∣ ∣ v − ϵ ⋅ m ∣ ∣ < 1 / 2 t/q\cdot ||v-\epsilon\cdot m||<1/2 t/q⋅∣∣v−ϵ⋅m∣∣<1/2,就可以正确解密出明文 m m m
参考文献
https://eprint.iacr.org/2012/144.pdf