0


全同态加密:CKKS

参考文献:

  1. Cheon J H, Kim A, Kim M, et al. Homomorphic encryption for arithmetic of approximate numbers[C]//International conference on the theory and application of cryptology and information security. Springer, Cham, 2017: 409-437.
  2. 全同态加密:BGV
  3. 全同态加密:BFV
  4. CKKS explained series

文章目录

CKKS

不论是 LSB 编码的 BGV,还是 MSB 编码的 BFV,它们的同态运算都是对

  1. Z
  2. t
  3. \mathbb Z_t
  4. Zt 上明文的**精确计算**,因为**密文中的明文空间和噪声空间是分离的**。例如,在 BGV 中是
  5. t
  6. e
  7. +
  8. m
  9. te+m
  10. te+m,在 BFV 中是
  11. δ
  12. m
  13. +
  14. e
  15. \delta m+e
  16. δm+e。但是,这种精确计算是在同余意义下的,如果将明文视为实数,那么实际上同态运算时的噪声破坏了明文的 MSB
  17. m
  18. /
  19. t
  20. \lfloor m/t \rfloor
  21. m/t⌋,仅保留了 LSB
  22. [
  23. m
  24. ]
  25. t
  26. [m]_t
  27. [m]t​,如图:

在这里插入图片描述

而 CKKS 关注近似计算,它使得在密文中的明文空间和噪声空间是不分离的,噪声位于明文空间的 LSB 位置。也就是说,在 CKKS 中是

  1. m
  2. +
  3. e
  4. m+e
  5. m+e,同态运算破坏明文的 LSB,但不破坏其 MSB。这也是合理的,可以将噪声破坏 LSB 视为**浮点运算的精度误差**。类似 BGV 做模切换,来使得噪声规模不会指数级增长;CKKS 也要做**重缩放**(*rescaling*),使得消息规模不会随电路深度而指数级增长,同时移除了 LSB 上的部分浮点误差。如图:

在这里插入图片描述

Canonical Embedding

符号:

    1. Φ M ( x ) Z [ x ] \Phi_M(x) \in \mathbb Z[x] ΦM​(x)∈Z[x], M M M 次单位根的分圆多项式,度数为 N = ϕ ( M ) N = \phi(M) N=ϕ(M)
    1. R : = Z [ x ] / ( Φ M ( x ) ) R := \mathbb Z[x]/(\Phi_M(x)) R:=Z[x]/(ΦM​(x)),数域 Q [ x ] / ( ϕ M ( x ) ) \mathbb Q[x]/(\phi_M(x)) Q[x]/(ϕM​(x)) 的子环(离散子群)
    1. R q = R / q R R_q = R/qR Rq​=R/qR,商环 Z q [ x ] / ( Φ M ( x ) ) \mathbb Z_q[x]/(\Phi_M(x)) Zq​[x]/(ΦM​(x))
    1. S : = R [ x ] / ( Φ M ( x ) ) S := \mathbb R[x]/(\Phi_M(x)) S:=R[x]/(ΦM​(x)),**分圆环**(cyclotomic ring),其中元素 a ( x ) a(x) a(x) 的系数构成向量 a = ( a 0 , , a N 1 ) R N \vec a = (a_0,\cdots,a_{N-1}) \in \mathbb R^N a=(a0​,⋯,aN1​)∈RN
    1. a : = a \|a\| := \|\vec a\|_{\infty} a∥:=∥a∥∞​,环元素的无穷范数
    1. a 1 : = a 1 \|a\|_1 := \|\vec a\|_1 a1​:=∥a1​,环元素的L1 范数
    1. Z M : = { x Z M : g c d ( x , M ) = 1 } \mathbb Z_M^* := \{x \in \mathbb Z_M:gcd(x,M)=1\} ZM∗​:={xZM​:gcd(x,M)=1},乘法群
    1. ξ M : = e x p ( 2 π i / M ) \xi_M := exp(-2\pi i/M) ξM​:=exp(−2πi/M), M M M 次本原单位根
  • 规范嵌入canonical embedding) σ : S → C N \sigma: S \to \mathbb C^N σ:S→CN 定义为 σ ( a ) : = ( a ( ξ M j ) ) j ∈ Z M ∗ \sigma(a) := (a(\xi_M^j))_{j \in \mathbb Z_M^*} σ(a):=(a(ξMj​))j∈ZM∗​​ 其中 a ∈ Q [ x ] / ( ϕ M ( x ) ) ⊂ S a \in \mathbb Q[x]/(\phi_M(x)) \sub S a∈Q[x]/(ϕM​(x))⊂S
    1. a c a n : = σ ( a ) \|a\|_\infty^{can} := \|\sigma(a)\|_\infty a∥∞can​:=∥σ(a)∥∞​,**规范嵌入范数**(*canonical embedding norm*)
    1. C R T M CRT_M CRTM​, M M M 次本原单位根 ξ M j ,   j Z M \xi_M^j,\, j \in \mathbb Z_M^* ξMj​,jZM∗​ 上的 Vandermonde 矩阵(可逆),使得 C R T M a = ( a ( ξ M j ) ) j Z M = σ ( a ) CRT_M \cdot \vec a = (a(\xi_M^j))_{j \in \mathbb Z_M^*} = \sigma(a) CRTM​⋅a=(aMj​))jZM∗​​=σ(a)(规范嵌入是线性变换)
    1. U = ( u i j ) : = max i j u i j \|U=(u_{ij})\|_\infty := \max_{i} \sum_j |u_{ij}| U=(uij​)∥∞​:=maxi​∑j​∣uij​∣,**矩阵的无穷范数**
    1. c M : = C R T M 1 c_M := \|CRT_M^{-1}\|_\infty cM​:=∥CRTM1​∥∞​,环常数(ring constant),仅与 M M M 有关

性质:

    1. a , b S \forall a,b \in S a,bS,有 a b c a n a c a n b c a n \|a \cdot b\|_\infty^{can} \le \|a\|_\infty^{can} \cdot \|b\|_\infty^{can} ab∥∞can​≤∥a∥∞can​⋅∥b∥∞can
    1. a S \forall a \in S aS,有 a c a n a 1 \|a\|_\infty^{can} \le \|a\|_1 a∥∞can​≤∥a1
    1. a S \forall a \in S aS,有 a c M a c a n \|a\|_\infty \le c_M \cdot \|a\|_\infty^{can} a∥∞​≤cM​⋅∥a∥∞can

Gaussian Distributions

定义线性子空间:

  1. H
  2. :
  3. =
  4. {
  5. z
  6. =
  7. (
  8. z
  9. j
  10. )
  11. j
  12. Z
  13. M
  14. C
  15. N
  16. :
  17. z
  18. j
  19. =
  20. z
  21. ˉ
  22. j
  23. ,
  24. j
  25. Z
  26. M
  27. }
  28. \mathbb H := \{ \vec z = (z_j)_{j \in \mathbb Z_M^*} \in \mathbb C^N:\, z_j = \bar z_{-j},\, \forall j \in \mathbb Z_M^* \}
  29. H:={z=(zj​)jZM∗​​∈CN:zj​=zˉ−j​,∀jZM∗​}

也就是所有满足共轭约束的向量。可以验证,作为内积空间inner product space

  1. H
  2. R
  3. N
  4. \mathbb H \cong \mathbb R^N
  5. HRN,关于**幺正矩阵**(unitary basis matrix,酉矩阵)
  6. U
  7. =
  8. [
  9. 1
  10. 2
  11. I
  12. i
  13. 2
  14. J
  15. 1
  16. 2
  17. J
  18. i
  19. 2
  20. I
  21. ]
  22. C
  23. N
  24. ×
  25. N
  26. U = \begin{bmatrix} \frac{1}{\sqrt 2}I & \frac{i}{\sqrt 2}J\\ \frac{1}{\sqrt 2}J & \frac{-i}{\sqrt 2}I\\ \end{bmatrix} \in \mathbb C^{N \times N}
  27. U=[21I21J2iJ2​−iI​]∈CN×N

其中

  1. I
  2. C
  3. N
  4. /
  5. 2
  6. ×
  7. N
  8. /
  9. 2
  10. I \in C^{N/2 \times N/2}
  11. ICN/2×N/2 是单位阵,
  12. J
  13. J
  14. J 是其**翻转矩阵**(reversal matrix
  15. J
  16. =
  17. [
  18. 0
  19. 0
  20. 1
  21. 0
  22. 1
  23. 0
  24. 1
  25. 0
  26. 0
  27. ]
  28. C
  29. N
  30. /
  31. 2
  32. ×
  33. N
  34. /
  35. 2
  36. J = \begin{bmatrix} 0 & \cdots & 0 & 1\\ 0 & \cdots & 1 & 0\\ & \vdots\\ 1 & \cdots & 0 & 0\\ \end{bmatrix} \in \mathbb C^{N/2 \times N/2}
  37. J=⎣⎡​001​⋯⋯⋮⋯​010100​⎦⎤​∈CN/2×N/2

易知,共轭转置

  1. U
  2. H
  3. =
  4. U
  5. 1
  6. U^H = U^{-1}
  7. UH=U1,并且有:
  8. H
  9. =
  10. U
  11. R
  12. N
  13. \mathbb H = U \cdot \mathbb R^N
  14. H=URN
  15. U
  16. H
  17. H
  18. =
  19. R
  20. N
  21. U^H \cdot \mathbb H = \mathbb R^N
  22. UHH=RN

对于

  1. r
  2. >
  3. 0
  4. r > 0
  5. r>0,定义 *Gaussian function*
  6. ρ
  7. r
  8. :
  9. R
  10. n
  11. (
  12. 0
  13. ,
  14. 1
  15. ]
  16. \rho_r: \mathbb R^n \to (0,1]
  17. ρr​:Rn→(0,1]
  18. ρ
  19. r
  20. (
  21. z
  22. )
  23. =
  24. exp
  25. (
  26. π
  27. z
  28. 2
  29. 2
  30. r
  31. 2
  32. )
  33. \rho_r(\vec z) = \exp\left(\frac{-\pi \|\vec z\|_2^2}{r^2}\right)
  34. ρr​(z)=exp(r2−π∥z22​​)

对于

  1. r
  2. =
  3. (
  4. r
  5. 1
  6. ,
  7. ,
  8. r
  9. N
  10. )
  11. (
  12. R
  13. +
  14. )
  15. N
  16. \vec r = (r_1,\cdots,r_N) \in (\mathbb R^+)^N
  17. r=(r1​,⋯,rN​)∈(R+)N
  18. H
  19. \mathbb H
  20. H 上的 *elliptical Gaussian distribution*
  21. Γ
  22. r
  23. \Gamma_{\vec r}
  24. Γr 定义为:根据
  25. Γ
  26. r
  27. i
  28. \Gamma_{r_i}
  29. Γri​​ 独立采样
  30. z
  31. i
  32. R
  33. z_i \in \mathbb R
  34. zi​∈R,然后输出
  35. U
  36. z
  37. U \cdot \vec z
  38. Uz

上述连续高斯分布同时诱导了环

  1. S
  2. :
  3. =
  4. R
  5. [
  6. x
  7. ]
  8. /
  9. (
  10. ϕ
  11. M
  12. (
  13. x
  14. )
  15. )
  16. S := \mathbb R[x]/(\phi_M(x))
  17. S:=R[x]/(ϕM​(x)) 上的分布
  18. Ψ
  19. r
  20. \Psi_{\vec r}
  21. Ψr​,它的采样输出为:
  22. e
  23. :
  24. =
  25. C
  26. R
  27. T
  28. M
  29. 1
  30. U
  31. z
  32. \vec e := CRT_M^{-1} \cdot U \cdot \vec z
  33. e:=CRTM1​⋅Uz,就是
  34. e
  35. (
  36. x
  37. )
  38. S
  39. e(x) \in S
  40. e(x)∈S 在基
  41. 1
  42. ,
  43. x
  44. ,
  45. x
  46. 2
  47. ,
  48. ,
  49. x
  50. N
  51. 1
  52. 1,x,x^2,\cdots,x^{N-1}
  53. 1,x,x2,⋯,xN1 上的组合系数。

为了获得离散高斯分布,执行圆整操作

  1. χ
  2. :
  3. =
  4. Ψ
  5. r
  6. R
  7. \chi := \lfloor \Psi_{\vec r}\rceil_{R^\vee}
  8. χ:=⌊Ψr​⌉R∨​,即把采样结果
  9. e
  10. S
  11. e \in S
  12. eS 最近的环元素
  13. e
  14. R
  15. e' \in R^\vee
  16. e′∈R∨ 作为离散采样结果。其中
  17. R
  18. R^\vee
  19. R∨ 是环
  20. R
  21. R
  22. R 的 *dual fractional ideal*(这啥?),我数学不好没看懂 (╥╯^╰╥)

SIMD

CKKS 使用 RLWE,类似 BGV 使用分圆多项式

  1. ϕ
  2. M
  3. (
  4. x
  5. )
  6. \phi_M(x)
  7. ϕM​(x),根据 CRT 可以将密文分成
  8. N
  9. N
  10. N 个的**槽**(slot),从而可以实现 SIMD

基于 RLWE 的密码方案的明文空间可以被视作

  1. S
  2. S
  3. S 的子集,其中的元素是
  4. m
  5. c
  6. a
  7. n
  8. q
  9. \|m\|_\infty^{can} \ll q
  10. m∥∞can​≪q 的那些
  11. m
  12. (
  13. x
  14. )
  15. m(x)
  16. m(x)

  1. ξ
  2. M
  3. \xi_M
  4. ξM 是一个复平面上的
  5. M
  6. M
  7. M 次本原单位根。分圆环
  8. S
  9. :
  10. =
  11. R
  12. [
  13. x
  14. ]
  15. /
  16. (
  17. Φ
  18. M
  19. (
  20. x
  21. )
  22. )
  23. S := \mathbb R[x]/(\Phi_M(x))
  24. S:=R[x]/(ΦM​(x)),对于
  25. a
  26. S
  27. a \in S
  28. aS,规范嵌入为
  29. σ
  30. (
  31. a
  32. )
  33. :
  34. =
  35. (
  36. a
  37. (
  38. ξ
  39. M
  40. j
  41. )
  42. )
  43. j
  44. Z
  45. M
  46. C
  47. N
  48. \sigma(a) := (a(\xi_M^j))_{j \in \mathbb Z_M^*} \in \mathbb C^N
  49. σ(a):=(aMj​))jZM∗​​∈CN

确切地说,由于

  1. a
  2. S
  3. a \in S
  4. aS 是实系数多项式,因此
  5. a
  6. (
  7. ξ
  8. j
  9. )
  10. =
  11. a
  12. (
  13. ξ
  14. j
  15. )
  16. =
  17. a
  18. (
  19. ξ
  20. j
  21. )
  22. a(\xi^{-j}) = a(\overline{\xi^j}) = \overline{a(\xi^j)}
  23. a(ξ−j)=aj​)=aj)​,规范嵌入的**像**
  24. I
  25. m
  26. (
  27. σ
  28. )
  29. =
  30. H
  31. C
  32. N
  33. Im(\sigma) = \mathbb H \sub \mathbb C^N
  34. Im(σ)=HCN,容易看出**同构**
  35. H
  36. S
  37. \mathbb H \cong S
  38. HS

由于

  1. H
  2. \mathbb H
  3. H 中的元素满足共轭约束,因此令
  4. T
  5. T
  6. T
  7. Z
  8. M
  9. \mathbb Z_M^*
  10. ZM∗​ 的乘法子群,使得
  11. Z
  12. M
  13. /
  14. T
  15. =
  16. {
  17. ±
  18. 1
  19. }
  20. \mathbb Z_M^*/T = \{\pm 1\}
  21. ZM∗​/T={±1},那么考虑**自然投影**(*natural projection*)
  22. π
  23. :
  24. H
  25. C
  26. N
  27. /
  28. 2
  29. \pi: \mathbb H \to \mathbb C^{N/2}
  30. π:HCN/2
  31. π
  32. (
  33. (
  34. z
  35. j
  36. )
  37. j
  38. Z
  39. M
  40. )
  41. :
  42. =
  43. (
  44. z
  45. j
  46. )
  47. j
  48. T
  49. \pi((z_j)_{j \in \mathbb Z_M^*}) := (z_j)_{j \in T}
  50. π((zj​)jZM∗​​):=(zj​)jT

那么关于映射

  1. π
  2. \pi
  3. π,有**同构**
  4. H
  5. C
  6. N
  7. /
  8. 2
  9. \mathbb H \cong \mathbb C^{N/2}
  10. HCN/2

由于

  1. R
  2. =
  3. Z
  4. [
  5. x
  6. ]
  7. /
  8. (
  9. ϕ
  10. (
  11. x
  12. )
  13. )
  14. R = \mathbb Z[x]/(\phi(x))
  15. R=Z[x]/(ϕ(x)),因此它有一组
  16. Z
  17. \mathbb Z-
  18. Z−基
  19. {
  20. 1
  21. ,
  22. x
  23. ,
  24. ,
  25. x
  26. N
  27. 1
  28. }
  29. \{1,x,\cdots,x^{N-1}\}
  30. {1,x,⋯,xN1},这利用规范嵌入
  31. σ
  32. (
  33. )
  34. \sigma(\cdot)
  35. σ(⋅) 可以得到一个秩
  36. N
  37. N
  38. N 的**理想格**(*ideal lattice*)
  39. σ
  40. (
  41. R
  42. )
  43. \sigma(R)
  44. σ(R),基为
  45. {
  46. σ
  47. (
  48. 1
  49. )
  50. ,
  51. σ
  52. (
  53. x
  54. )
  55. ,
  56. ,
  57. σ
  58. (
  59. x
  60. N
  61. 1
  62. )
  63. }
  64. \{\sigma(1),\sigma(x),\cdots,\sigma(x^{N-1})\}
  65. {σ(1),σ(x),⋯,σ(xN1)}

现在,我们已经有了

  1. S
  2. H
  3. S \to \mathbb H
  4. SH 的同构
  5. σ
  6. \sigma
  7. σ,以及
  8. H
  9. C
  10. N
  11. /
  12. 2
  13. \mathbb H \to \mathbb C^{N/2}
  14. HCN/2 的同构
  15. π
  16. \pi
  17. π,那么就有同构映射
  18. π
  19. σ
  20. :
  21. (
  22. S
  23. ,
  24. c
  25. a
  26. n
  27. )
  28. (
  29. C
  30. N
  31. /
  32. 2
  33. ,
  34. )
  35. \pi \circ \sigma: (S,\, \|\cdot\|_\infty^{can}) \to \mathbb (C^{N/2},\, \|\cdot\|_\infty)
  36. π∘σ:(S,∥⋅∥∞can​)→(CN/2,∥⋅∥∞​)

由于

  1. R
  2. S
  3. R \sub S
  4. RS 是子环,因此
  5. σ
  6. (
  7. R
  8. )
  9. H
  10. \sigma(R) \sub \mathbb H
  11. σ(R)⊂H 是离散子群,从而
  12. π
  13. (
  14. σ
  15. (
  16. R
  17. )
  18. )
  19. C
  20. N
  21. /
  22. 2
  23. \pi(\sigma(R)) \sub \mathbb C^{N/2}
  24. π(σ(R))⊂CN/2 是有限精度的浮点数向量集合。如图:

在这里插入图片描述

所以,任给一个复向量

  1. z
  2. C
  3. N
  4. /
  5. 2
  6. \vec z \in \mathbb C^{N/2}
  7. zCN/2,它的原像
  8. π
  9. 1
  10. (
  11. z
  12. )
  13. \pi^{-1}(\vec z)
  14. π−1(z) 不一定落在格
  15. σ
  16. (
  17. R
  18. )
  19. \sigma(R)
  20. σ(R) 上,需要**就近圆整**
  21. π
  22. 1
  23. (
  24. z
  25. )
  26. σ
  27. (
  28. R
  29. )
  30. \lfloor \pi^{-1}(\vec z) \rceil_{\sigma(R)}
  31. ⌊π−1(z)⌉σ(R)​,得到最接近的**格点**,这就导致了圆整误差。为了提高浮点数精度,可以设置一个 *scaling factor*
  32. Δ
  33. 1
  34. \Delta \ge 1
  35. Δ≥1,先
  36. z
  37. =
  38. Δ
  39. z
  40. \vec z' = \Delta \cdot \vec z
  41. z′=Δ⋅z,然后
  42. π
  43. 1
  44. (
  45. σ
  46. 1
  47. (
  48. z
  49. )
  50. )
  51. R
  52. \pi^{-1}(\sigma^{-1}(\vec z')) \in R
  53. π−1(σ−1(z′))∈R 得到对应的明文。

在这里插入图片描述

CKKS 的编码解码算法为:

在这里插入图片描述

LHE

CKKS 使用了:BGV 的密钥切换技术、模切换技术、打包技术,BFV 的重线性化技术。抽象的来说,CKKS 方案如下(注意 Enc 算法):

在这里插入图片描述

CKKS 使用模切换过程,来移除密文中明文信息的被噪声淹没的 LSB 部分,叫做重缩放(rescaling)。固定 base

  1. p
  2. >
  3. 0
  4. p>0
  5. p>0 和模数
  6. q
  7. 0
  8. >
  9. 0
  10. q_0 > 0
  11. q0​>0(都不必是素数)。对于深度为
  12. L
  13. L
  14. L 的电路,设置梯子为
  15. q
  16. l
  17. =
  18. q
  19. l
  20. q
  21. 0
  22. q_l = q^l \cdot q_0
  23. ql​=qlq0​,第
  24. l
  25. l
  26. l 层的密文属于
  27. R
  28. q
  29. l
  30. 2
  31. R_{q_l}^2
  32. Rql2

在这里插入图片描述

同态运算时,密文中的消息和噪声的规模都会增长。为了方便管理密文,还要在

  1. c
  2. c
  3. c 上附加上一些标签:层级
  4. 0
  5. l
  6. L
  7. 0 \le l \le L
  8. 0lL,消息上界
  9. v
  10. R
  11. v \in \mathbb R
  12. vR,噪声上界
  13. B
  14. R
  15. B \in \mathbb R
  16. BR

在这里插入图片描述

另外,同态运算之前,需要参与运算的两个密文

  1. (
  2. c
  3. ,
  4. l
  5. ,
  6. v
  7. ,
  8. B
  9. )
  10. ,
  11. (
  12. c
  13. ,
  14. l
  15. ,
  16. v
  17. ,
  18. B
  19. )
  20. (c,l,v,B),\, (c',l',v',B')
  21. (c,l,v,B),(c′,l′,v′,B′) **level 保证一致**。假设
  22. l
  23. <
  24. l
  25. l' < l
  26. l′<l,那么需要将
  27. c
  28. c
  29. c 降级到
  30. l
  31. l'
  32. l 级的
  33. R
  34. q
  35. l
  36. R_{q_{l'}}
  37. Rql′​​ 上:
  1. 如果使用 RS 过程, c ↦ R S ( c ) c \mapsto RS(c) c↦RS(c),那么消息从 m m m 变化为 q l ′ q l m \frac{q_{l'}}{q_l}m ql​ql′​​m
  2. 而直接简单模约简, c ↦ c m o d    q l ′ c \mapsto c \mod q_{l'} c↦cmodql′​,这不会改变消息 m m m

在这里插入图片描述

如果选取

  1. M
  2. =
  3. 2
  4. k
  5. +
  6. 1
  7. M = 2^{k+1}
  8. M=2k+1,那么
  9. ϕ
  10. M
  11. (
  12. x
  13. )
  14. =
  15. x
  16. N
  17. +
  18. 1
  19. \phi_M(x) = x^N+1
  20. ϕM​(x)=xN+1,其中
  21. N
  22. =
  23. 2
  24. k
  25. N = 2^k
  26. N=2k,环
  27. R
  28. =
  29. Z
  30. [
  31. x
  32. ]
  33. /
  34. (
  35. x
  36. N
  37. +
  38. 1
  39. )
  40. R = \mathbb Z[x]/(x^N+1)
  41. R=Z[x]/(xN+1) 有良好的性质:
  1. 此时 R ∨ = N − 1 ⋅ R R^\vee = N^{-1} \cdot R R∨=N−1⋅R,从而噪声 e ′ ∈ R ∨ e' \in R^\vee e′∈R∨ 可以转化为 e = N ⋅ e ′ ∈ R e = N \cdot e' \in R e=N⋅e′∈R,它的各个系数是相互独立的离散高斯采样。
  2. 圆整运算可以高效计算,因为 C R T M CRT_M CRTM​ 是正交阵,因此 ⌊ a ( x ) ⌉ σ ( R ) = ∑ i ⌊ a i ⌉ Z ⋅ x i \lfloor a(x) \rceil_{\sigma(R)} = \sum_i \lfloor a_i\rceil_\mathbb Z \cdot x^i ⌊a(x)⌉σ(R)​=∑i​⌊ai​⌉Z​⋅xi(多项式圆整就是各项系数分别圆整)

CKKS 使用了多种分布(我不知道为何需要这么多。为了效率?为了安全性?):

    1. D G ( σ 2 ) DG(\sigma^2) DG2):实数 σ > 0 \sigma>0 σ>0,采样 Z N \mathbb Z^N ZN 上向量,各分量是方差为 σ 2 \sigma^2 σ2 Z \mathbb Z Z 上独立的离散高斯采样
    1. H W T ( h ) HWT(h) HWT(h):正整数 h h h,采样 { 0 , ± 1 } N \{0,\pm 1\}^N {01}N 上向量(signed binary vectors),汉明重量为 h h h
    1. Z O ( ρ ) ZO(\rho) ZO(ρ):实数 0 ρ 1 0 \le \rho \le 1 0≤ρ≤1,采样 { 0 , ± 1 } N \{0,\pm 1\}^N {01}N 上向量,它的各个分量以 ρ / 2 \rho/2 ρ/2 的概率为 1 , 1 1,-1 1,−1,以 1 ρ 1-\rho 1−ρ 的概率为 0 0 0

CKKS 方案如下:

在这里插入图片描述

我们说一个密文

  1. (
  2. c
  3. R
  4. q
  5. l
  6. 2
  7. ,
  8. l
  9. ,
  10. v
  11. ,
  12. B
  13. )
  14. (c \in R_{q_l}^2,l,v,B)
  15. (cRql2​,l,v,B)
  16. m
  17. S
  18. m \in S
  19. mS 的**有效密文**(*valid encryption*),如果
  20. m
  21. c
  22. a
  23. n
  24. v
  25. \|m\|_\infty^{can} \le v
  26. m∥∞can​≤v
  27. <
  28. c
  29. ,
  30. s
  31. k
  32. >
  33. =
  34. m
  35. +
  36. 2
  37. m
  38. o
  39. d
  40.   
  41. q
  42. l
  43. <c,sk> = m+2 \mod q_l
  44. <c,sk>=m+2modql​,其中
  45. e
  46. S
  47. e \in S
  48. eS 满足
  49. e
  50. c
  51. a
  52. n
  53. B
  54. \|e\|_\infty^{can} \le B
  55. e∥∞can​≤B。可以证明:

在这里插入图片描述

为了达到

  1. λ
  2. \lambda-
  3. λ−比特的安全性,需要使得
  4. N
  5. λ
  6. +
  7. 110
  8. 7.2
  9. log
  10. (
  11. P
  12. q
  13. L
  14. )
  15. N \ge \frac{\lambda+110}{7.2} \log(P \cdot q_L)
  16. N7.2λ+110log(PqL​)。由于
  17. q
  18. L
  19. q_L
  20. qL 是梯子中最大的模数,因此让
  21. P
  22. P
  23. P 接近于
  24. q
  25. L
  26. q_L
  27. qL 即可。对于
  28. λ
  29. =
  30. 80
  31. \lambda = 80
  32. λ=80,文章中设置
  33. σ
  34. =
  35. 3.2
  36. \sigma = 3.2
  37. σ=3.2
  38. h
  39. =
  40. 64
  41. h = 64
  42. h=64

下图展示了安全性和计算效率之间的 tradeoff:为了提高安全性,这需要提升分圆多项式的次数

  1. N
  2. N
  3. N,即使我们不需要太多的(
  4. N
  5. /
  6. 2
  7. N/2
  8. N/2个) 明文槽。

在这里插入图片描述

Rotate

根据数论知识,域扩张

  1. Q
  2. (
  3. ξ
  4. M
  5. )
  6. /
  7. Q
  8. \mathbb Q(\xi_M)/\mathbb Q
  9. QM​)/Q **Galois 群**
  10. G
  11. a
  12. l
  13. :
  14. =
  15. G
  16. a
  17. l
  18. (
  19. Q
  20. (
  21. ξ
  22. M
  23. )
  24. /
  25. Q
  26. )
  27. Gal := Gal(\mathbb Q(\xi_M)/\mathbb Q)
  28. Gal:=Gal(QM​)/Q) 是个同构于
  29. Z
  30. M
  31. \mathbb Z_M^*
  32. ZM∗​ 的乘法群,其中的元素是**自同构映射**:
  33. κ
  34. k
  35. :
  36. m
  37. (
  38. x
  39. )
  40. m
  41. (
  42. x
  43. k
  44. )
  45. ,
  46. g
  47. c
  48. d
  49. (
  50. k
  51. ,
  52. M
  53. )
  54. =
  55. 1
  56. \kappa_k: m(x) \mapsto m(x^k),\, \forall gcd(k,M)=1
  57. κk​:m(x)↦m(xk),∀gcd(k,M)=1

一个明文多项式为

  1. m
  2. (
  3. x
  4. )
  5. R
  6. Q
  7. (
  8. ξ
  9. M
  10. )
  11. m(x) \in R \sub \mathbb Q(\xi_M)
  12. m(x)∈RQM​),解码后对应的明文向量是
  13. z
  14. =
  15. π
  16. (
  17. σ
  18. (
  19. m
  20. (
  21. x
  22. )
  23. )
  24. )
  25. C
  26. N
  27. /
  28. 2
  29. \vec z = \pi(\sigma(m(x))) \in \mathbb C^{N/2}
  30. z=π(σ(m(x)))∈CN/2。对于任意的
  31. i
  32. ,
  33. j
  34. T
  35. Z
  36. M
  37. i,j \in T \sub \mathbb Z_M^*
  38. i,jTZM∗​,令
  39. k
  40. =
  41. j
  42. 1
  43. i
  44. m
  45. o
  46. d
  47.   
  48. M
  49. k = j^{-1} \cdot i \mod M
  50. k=j1imodM,那么计算
  51. m
  52. =
  53. κ
  54. k
  55. (
  56. m
  57. )
  58. m' = \kappa_k(m)
  59. m′=κk​(m),满足
  60. z
  61. j
  62. =
  63. m
  64. (
  65. ξ
  66. M
  67. j
  68. )
  69. =
  70. κ
  71. (
  72. m
  73. (
  74. ξ
  75. M
  76. j
  77. )
  78. )
  79. =
  80. m
  81. (
  82. ξ
  83. M
  84. j
  85. k
  86. )
  87. =
  88. m
  89. (
  90. ξ
  91. M
  92. i
  93. )
  94. =
  95. z
  96. i
  97. z_j' = m'(\xi_M^j) = \kappa(m(\xi_M^j)) = m(\xi_M^{jk}) = m(\xi_M^{i}) = z_i
  98. zj′​=m′(ξMj​)=κ(m(ξMj​))=m(ξMjk​)=m(ξMi​)=zi​

也就是说,自同构映射

  1. κ
  2. k
  3. \kappa_k
  4. κk 可以实现把明文信息从槽
  5. i
  6. i
  7. i 搬移到槽
  8. j
  9. j
  10. j

定义向量

  1. (
  2. c
  3. i
  4. )
  5. I
  6. (c_i)_I
  7. (ci​)I 上的自同构映射为:
  8. κ
  9. k
  10. (
  11. (
  12. c
  13. i
  14. )
  15. I
  16. )
  17. :
  18. =
  19. (
  20. κ
  21. k
  22. (
  23. c
  24. i
  25. )
  26. )
  27. I
  28. \kappa_k((c_i)_I) := (\kappa_k(c_i))_I
  29. κk​((ci​)I​):=(κk​(ci​))I​,可以验证,如果
  30. c
  31. R
  32. q
  33. l
  34. 2
  35. c \in R_{q_l}^2
  36. cRql2 是明文
  37. m
  38. R
  39. m \in R
  40. mR 在私钥
  41. (
  42. 1
  43. ,
  44. s
  45. )
  46. (1,s)
  47. (1,s) 下的有效密文,那么
  48. κ
  49. k
  50. (
  51. c
  52. )
  53. R
  54. q
  55. l
  56. 2
  57. \kappa_k(c) \in R_{q_l}^2
  58. κk​(c)∈Rql2 是明文
  59. κ
  60. k
  61. (
  62. m
  63. )
  64. R
  65. \kappa_k(m) \in R
  66. κk​(m)∈R 在私钥
  67. (
  68. 1
  69. ,
  70. κ
  71. k
  72. (
  73. s
  74. )
  75. )
  76. (1,\kappa_k(s))
  77. (1k​(s)) 下的有效密文。

类似 BGV 的 Pack / Unpack 技术,将密文的密钥切换变换

  1. τ
  2. (
  3. 1
  4. ,
  5. s
  6. )
  7. (
  8. 1
  9. ,
  10. κ
  11. k
  12. (
  13. s
  14. )
  15. )
  16. \tau_{(1,s) \to (1,\kappa_k(s))}
  17. τ(1,s)→(1k​(s))​
  18. τ
  19. (
  20. 1
  21. ,
  22. κ
  23. k
  24. (
  25. s
  26. )
  27. )
  28. (
  29. 1
  30. ,
  31. s
  32. )
  33. \tau_{(1,\kappa_k(s)) \to (1,s)}
  34. τ(1k​(s))→(1,s)​ 作为公钥发布,从而实现密文上各个槽里的明文信息的任意搬移。

本文转载自: https://blog.csdn.net/weixin_44885334/article/details/127718208
版权归原作者 山登绝顶我为峰 3(^v^)3 所有, 如有侵权,请联系我们删除。

“全同态加密:CKKS”的评论:

还没有评论