0


全同态加密:BFV

参考文献:

  1. O. Regev. On lattices, learning with errors, random linear codes, and cryptography. In H. N. Gabow and R. Fagin, editors, STOC, pages 84–93. ACM, 2005. Full version in J. ACM 56(6), 2009.
  2. V. Lyubashevsky, C. Peikert, and O. Regev. On Ideal Lattices and Learning with Errors over Rings. In Advances in Cryptology - EUROCRYPT 2010, volume 6110 of Lecture Notes in Computer Science, pages 1–23. Springer, 2010. Full version of the paper available upon request from authors.
  3. Z. Brakerski. Fully Homomorphic Encryption without Modulus Switching from Classical GapSVP. IACR Cryptology ePrint Archive, 2012:78, 2012.
  4. Fan J, Vercauteren F. Somewhat practical fully homomorphic encryption[J]. Cryptology ePrint Archive, 2012.

文章目录

Regev Scheme

2009 年,Regev 提出了第一个基于 LWE 的加密方案。方案如下:

在这里插入图片描述

LPR Scheme

在 Regev Scheme 中,明文空间是

  1. Z
  2. 2
  3. \mathbb Z_2
  4. Z2​,使用 most significant bit encoding。我们可以容易地修改它,使得密码方案基于 RLWE 问题,明文空间为
  5. R
  6. t
  7. ,
  8. t
  9. 2
  10. R_t,\, t \ge 2
  11. Rt​,t2 ,只需把
  12. δ
  13. =
  14. q
  15. /
  16. 2
  17. \delta = \lfloor q/2 \rceil
  18. δ=⌊q/2 替换为
  19. Δ
  20. =
  21. q
  22. /
  23. t
  24. \Delta = \lfloor q/t \rceil
  25. Δ=⌊q/t 即可。方案如下:

在这里插入图片描述

BFV

Brakerski Scheme

Without Modulus Switching

此方案是基于 LWE 的。对于 Regev Scheme,如果将向量

  1. s
  2. ,
  3. c
  4. s,c
  5. s,c 写成增广形式,那么有
  6. <
  7. c
  8. ,
  9. s
  10. >
  11. =
  12. q
  13. /
  14. 2
  15. m
  16. +
  17. e
  18. +
  19. q
  20. I
  21. <c,s> = q/2 \cdot m+e+qI
  22. <c,s>=q/2m+e+qI,其中
  23. e
  24. E
  25. <
  26. q
  27. /
  28. 4
  29. |e| \le E < q/4
  30. e∣≤E<q/4
  31. I
  32. Z
  33. I \in \mathbb Z
  34. IZ 是个整数,密文
  35. c
  36. c
  37. c 的分量取值范围是
  38. (
  39. q
  40. /
  41. 2
  42. ,
  43. q
  44. /
  45. 2
  46. ]
  47. (-q/2,q/2]
  48. (−q/2,q/2]

考虑分数密文(fractional ciphertext)

  1. c
  2. =
  3. c
  4. /
  5. q
  6. c = c/q
  7. c’=c/q,那么
  8. <
  9. c
  10. ,
  11. s
  12. >
  13. =
  14. 1
  15. 2
  16. m
  17. +
  18. e
  19. +
  20. I
  21. <c',s> = \frac{1}{2} \cdot m + e' + I
  22. <c′,s>=21​⋅m+e′+I

其中噪音

  1. e
  2. E
  3. /
  4. q
  5. =
  6. ϵ
  7. <
  8. 0.25
  9. |e'| \le E/q = \epsilon < 0.25
  10. ∣e′∣≤E/q=ϵ<0.25 是个小数,密文
  11. c
  12. c’
  13. c’ 的各个分量的取值范围是
  14. (
  15. 1
  16. /
  17. 2
  18. ,
  19. 1
  20. /
  21. 2
  22. ]
  23. (-1/2,1/2]
  24. (−1/2,1/2]

同态加法

  1. c
  2. a
  3. d
  4. d
  5. =
  6. c
  7. 1
  8. +
  9. c
  10. 2
  11. c_{add} = c_1+c_2
  12. cadd​=c1​+c2​,有:
  13. <
  14. c
  15. 1
  16. +
  17. c
  18. 2
  19. ,
  20. s
  21. >
  22. =
  23. <
  24. c
  25. 1
  26. ,
  27. s
  28. >
  29. +
  30. <
  31. c
  32. 2
  33. ,
  34. s
  35. >
  36. =
  37. 1
  38. 2
  39. m
  40. +
  41. (
  42. e
  43. 1
  44. +
  45. e
  46. 2
  47. )
  48. m
  49. o
  50. d
  51.   
  52. 1
  53. \begin{aligned} <c_1+c_2,\, s> &= <c_1,s> + <c_2,s> \\ &= \frac{1}{2} m + (e_1+e_2) \mod 1 \end{aligned}
  54. <c1​+c2​,s>​=<c1​,s>+<c2​,s>=21m+(e1​+e2​)mod1

同态乘法

  1. c
  2. m
  3. u
  4. l
  5. t
  6. =
  7. 2
  8. c
  9. 1
  10. c
  11. 2
  12. c_{mult} = 2 \cdot c_1 \otimes c_2
  13. cmult​=2c1​⊗c2​,有:
  14. <
  15. 2
  16. c
  17. 1
  18. c
  19. 2
  20. ,
  21. s
  22. s
  23. >
  24. =
  25. 2
  26. <
  27. c
  28. 1
  29. ,
  30. s
  31. >
  32. <
  33. c
  34. 2
  35. ,
  36. s
  37. >
  38. =
  39. 1
  40. 2
  41. m
  42. 1
  43. m
  44. 2
  45. +
  46. 2
  47. (
  48. e
  49. 1
  50. I
  51. 2
  52. +
  53. e
  54. 2
  55. I
  56. 1
  57. )
  58. +
  59. e
  60. 1
  61. m
  62. 2
  63. +
  64. e
  65. 2
  66. m
  67. 1
  68. +
  69. 2
  70. e
  71. 1
  72. e
  73. 2
  74. m
  75. o
  76. d
  77.   
  78. 1
  79. \begin{aligned} <2 \cdot c_1 \otimes c_2,\, s \otimes s> &= 2 \cdot <c_1,s> \cdot <c_2,s> \\ &= \frac{1}{2} m_1m_2 + 2(e_1I_2 + e_2I_1) + e_1m_2 + e_2m_1 + 2e_1e_2 \mod 1 \end{aligned}
  80. <2c1​⊗c2​,ss>​=2⋅<c1​,s>⋅<c2​,s>=21m1m2​+2(e1I2​+e2I1​)+e1m2​+e2m1​+2e1e2mod1

其中

  1. I
  2. 1
  3. ,
  4. I
  5. 2
  6. |I_1|,|I_2|
  7. I1​∣,∣I2​∣ 的界约为
  8. s
  9. 1
  10. \|s\|_1
  11. s1​,所以
  12. c
  13. m
  14. u
  15. l
  16. t
  17. c_{mult}
  18. cmult 中的噪声的界为
  19. O
  20. (
  21. s
  22. 1
  23. )
  24. ϵ
  25. O(\|s\|_1) \cdot \epsilon
  26. O(∥s1​)⋅ϵ。由于 Regev Scheme 中的私钥取自均匀分布,因此
  27. s
  28. 1
  29. n
  30. q
  31. \|s\|_1 \approx nq
  32. s1​≈nq,模数
  33. q
  34. q
  35. q 是安全参数
  36. n
  37. n
  38. n 的指数级。而其他噪声
  39. e
  40. 1
  41. m
  42. 2
  43. +
  44. e
  45. 2
  46. m
  47. 1
  48. 2
  49. t
  50. ϵ
  51. e_1m_2+e_2m_1 \le 2t \epsilon
  52. e1m2​+e2m1​≤2tϵ,
  53. 2
  54. e
  55. 1
  56. e
  57. 2
  58. 2
  59. ϵ
  60. 2
  61. 2e_1e_2 \le 2\epsilon^2
  62. 2e1e2​≤2ϵ2 的占比很小。因此,主要噪声就是
  63. 2
  64. (
  65. e
  66. 1
  67. I
  68. 2
  69. +
  70. e
  71. 2
  72. I
  73. 1
  74. )
  75. 2(e_1I_2 + e_2I_1)
  76. 2(e1I2​+e2I1​)

为了减小噪声,需要要减小私钥的

  1. l
  2. 1
  3. l_1
  4. l1 范数。我们可以对解密电路做**二进制分解**(*binary decomposition*),令
  5. s
  6. =
  7. j
  8. 2
  9. j
  10. s
  11. (
  12. j
  13. )
  14. s = \sum_j 2^j s^{(j)}
  15. s=∑j2js(j),其中
  16. s
  17. (
  18. j
  19. )
  20. s^{(j)}
  21. s(j) 的各个元素是
  22. s
  23. s
  24. s 的各个元素的第
  25. j
  26. j
  27. j 比特。那么,解密电路化为:
  28. <
  29. c
  30. ,
  31. s
  32. >
  33. =
  34. j
  35. 2
  36. j
  37. <
  38. c
  39. ,
  40. s
  41. (
  42. j
  43. )
  44. >
  45. =
  46. <
  47. (
  48. c
  49. ,
  50. 2
  51. c
  52. ,
  53. )
  54. ,
  55.   
  56. (
  57. s
  58. (
  59. 0
  60. )
  61. ,
  62. s
  63. (
  64. 1
  65. )
  66. ,
  67. )
  68. >
  69. \begin{aligned} <c,s> &= \sum_j 2^j <c,s^{(j)}> \\ &= <(c,\, 2c,\, \cdots),\,\, (s^{(0)},\, s^{(1)},\, \cdots)> \end{aligned}
  70. <c,s>​=j∑​2j<c,s(j)>=<(c,2c,⋯),(s(0),s(1),⋯)>​

那么,我们就将

  1. s
  2. s
  3. s 下的密文
  4. c
  5. c
  6. c,转化为了
  7. (
  8. s
  9. (
  10. 0
  11. )
  12. ,
  13. s
  14. (
  15. 1
  16. )
  17. ,
  18. )
  19. (s^{(0)},\, s^{(1)},\, \cdots)
  20. (s(0),s(1),⋯) 下的密文
  21. (
  22. c
  23. ,
  24. 2
  25. c
  26. ,
  27. )
  28. (c,\, 2c,\, \cdots)
  29. (c,2c,⋯)

二进制私钥的

  1. l
  2. 1
  3. l_1
  4. l1 范数至多是其维度,即
  5. O
  6. (
  7. n
  8. log
  9. q
  10. )
  11. =
  12. O
  13. (
  14. p
  15. o
  16. l
  17. y
  18. (
  19. n
  20. )
  21. )
  22. O(n \cdot \log q) = O(poly(n))
  23. O(nlogq)=O(poly(n)),因此**噪声增长是多项式级别的**。也就是说,我们不必使用 BGV 中的模切换技术了!

在代码实现时,由于浮点数精度问题,我们将密文放大

  1. q
  2. q
  3. q 倍。实质上是用
  4. Z
  5. q
  6. \mathbb Z_q
  7. Zq 上的整数运算,来模拟
  8. R
  9. /
  10. Z
  11. R/\mathbb Z
  12. R/Z 上的浮点数运算:令
  13. y
  14. i
  15. =
  16. q
  17. x
  18. i
  19. y_i = \lfloor qx_i \rceil
  20. yi​=⌊qxi​⌉,那么
  21. y
  22. 1
  23. +
  24. y
  25. 2
  26. q
  27. (
  28. x
  29. 1
  30. +
  31. x
  32. 2
  33. )
  34. (
  35. y
  36. 1
  37. y
  38. 2
  39. )
  40. /
  41. q
  42. q
  43. x
  44. 1
  45. x
  46. 2
  47. \begin{aligned} y_1+y_2 \approx \lfloor q(x_1+x_2) \rceil\\ \lfloor (y_1 \cdot y_2)/q \rceil \approx \lfloor q \cdot x_1 \cdot x_2 \rceil \end{aligned}
  48. y1​+y2​≈⌊q(x1​+x2​)⌉⌊(y1​⋅y2​)/q⌉≈⌊qx1​⋅x2​⌉​

这样,同态加法为

  1. c
  2. 1
  3. +
  4. c
  5. 2
  6. c_1+c_2
  7. c1​+c2​,同态乘法为
  8. 2
  9. /
  10. q
  11. c
  12. 1
  13. c
  14. 2
  15. \lfloor 2/q \cdot c_1 \otimes c_2 \rceil
  16. 2/qc1​⊗c2​⌉

有趣的是,此时的 Brakerski Scheme 的加解密算法与 Regev Scheme 完全一致。

Scale Invariant LHE / FHE

于是,我们可以实现 scale invariant L-homomorphic scheme: BGV 中的计算复杂的 “refresh” 过程,被更简单的 key switching 取代。

本方案中使用 BGV 的向量解压和密钥切换过程,

在这里插入图片描述
在这里插入图片描述

Brakerski Scheme 如下:

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

同态运算后,密文中携带的噪声为:

在这里插入图片描述

为了实现 L-homomorphic,需要噪声分布

  1. χ
  2. \chi
  3. χ 的界
  4. B
  5. B
  6. B 满足:
  7. q
  8. /
  9. B
  10. (
  11. O
  12. (
  13. n
  14. log
  15. q
  16. )
  17. )
  18. L
  19. +
  20. O
  21. (
  22. 1
  23. )
  24. q/B \ge (O(n \log q))^{L+O(1)}
  25. q/B≥(O(nlogq))L+O(1)

由于解密电路的深度为

  1. O
  2. (
  3. log
  4. n
  5. +
  6. log
  7. log
  8. q
  9. )
  10. O(\log n + \log \log q)
  11. O(logn+loglogq),因此为了满足 Bootstrapping 的运算条件,需要
  12. q
  13. /
  14. B
  15. (
  16. n
  17. log
  18. q
  19. )
  20. O
  21. (
  22. log
  23. n
  24. +
  25. log
  26. log
  27. q
  28. )
  29. q/B \ge (n \log q)^{O(\log n + \log \log q)}
  30. q/B≥(nlogq)O(logn+loglogq)

从而实现出一个 fully homomorphic encryption scheme

Fan-Vercauteren Scheme

Relinearisation

此方案将上述的基于 LWE 的 Brakerski Scheme 移植到了 RLWE 上。

在 LPR 方案中,环

  1. R
  2. =
  3. Z
  4. [
  5. x
  6. ]
  7. /
  8. (
  9. f
  10. (
  11. x
  12. )
  13. )
  14. R=\mathbb Z[x]/(f(x))
  15. R=Z[x]/(f(x)),一般选取
  16. f
  17. (
  18. x
  19. )
  20. =
  21. x
  22. 2
  23. n
  24. +
  25. 1
  26. f(x)=x^{2^n}+1
  27. f(x)=x2n+1 为分圆多项式。在 FV Scheme 中,做优化
  28. s
  29. ,
  30. u
  31. R
  32. 2
  33. s,u \leftarrow R_2
  34. s,uR2​(不再取自
  35. χ
  36. \chi
  37. χ),其他的与 LPR 相同。

密文形如

  1. c
  2. =
  3. (
  4. c
  5. 0
  6. ,
  7. c
  8. 1
  9. )
  10. R
  11. 2
  12. c=(c_0,\, c_1) \in R^2
  13. c=(c0​,c1​)∈R2,密钥形如
  14. s
  15. =
  16. (
  17. 1
  18. ,
  19. s
  20. )
  21. R
  22. 2
  23. s'=(1,s) \in R^2
  24. s′=(1,s)∈R2,那么解密过程可以视作是**一次函数的求值**:
  25. <
  26. c
  27. ,
  28. s
  29. >
  30. =
  31. c
  32. 0
  33. +
  34. c
  35. 1
  36. s
  37. =
  38. c
  39. (
  40. s
  41. )
  42. =
  43. Δ
  44. m
  45. +
  46. v
  47. +
  48. q
  49. r
  50. <c,s'> = c_0 + c_1 s = c(s) = \Delta \cdot m+v + q \cdot r
  51. <c,s′>=c0​+c1s=c(s)=Δ⋅m+v+qr

其中

  1. r
  2. R
  3. r \in R
  4. rR,噪音大小为
  5. v
  6. 2
  7. δ
  8. R
  9. B
  10. 2
  11. +
  12. B
  13. \|v\| \le 2 \delta_R B^2 + B
  14. v∥≤2δRB2+B,这里
  15. δ
  16. R
  17. =
  18. m
  19. a
  20. x
  21. {
  22. a
  23. b
  24. a
  25. b
  26. :
  27. a
  28. ,
  29. b
  30. R
  31. }
  32. \delta_R = max\{ \frac{\|a \cdot b\|}{\|a\| \cdot \|b\|}:\, a,b \in R\}
  33. δR​=max{∥a∥⋅∥b∥∥ab∥​:a,bR}

扩张因子expansion factor of

  1. R
  2. R
  3. R),其中的
  4. a
  5. =
  6. max
  7. i
  8. a
  9. i
  10. \|a\|=\max_i |a_i|
  11. a∥=maxi​∣ai​∣ 是**无穷范数**。

同态加法就是多项式加法

  1. c
  2. t
  3. a
  4. d
  5. d
  6. =
  7. c
  8. t
  9. 1
  10. +
  11. c
  12. t
  13. 2
  14. ct_{add} = ct_1+ct_2
  15. ctadd​=ct1​+ct2​,那么
  16. [
  17. (
  18. c
  19. t
  20. 1
  21. +
  22. c
  23. t
  24. 2
  25. )
  26. (
  27. s
  28. )
  29. ]
  30. q
  31. =
  32. Δ
  33. [
  34. m
  35. 1
  36. +
  37. m
  38. 2
  39. ]
  40. t
  41. +
  42. v
  43. 3
  44. [(ct_1+ct_2)(s)]_q = \Delta \cdot [m_1+m_2]_t + v_3
  45. [(ct1​+ct2​)(s)]q​=Δ⋅[m1​+m2​]t​+v3

这里噪声

  1. v
  2. 3
  3. \|v_3\|
  4. v3​∥ 的增长是线性的。

同态乘法就是多项式乘法

  1. c
  2. m
  3. u
  4. l
  5. t
  6. =
  7. t
  8. /
  9. q
  10. c
  11. t
  12. 1
  13. c
  14. t
  15. 2
  16. c_{mult} = t/q \cdot ct_1 \cdot ct_2
  17. cmult​=t/qct1​⋅ct2​,那么
  18. [
  19. (
  20. t
  21. /
  22. q
  23. c
  24. t
  25. 1
  26. c
  27. t
  28. 2
  29. )
  30. (
  31. s
  32. )
  33. ]
  34. q
  35. =
  36. Δ
  37. [
  38. m
  39. 1
  40. m
  41. 2
  42. ]
  43. t
  44. +
  45. v
  46. 3
  47. [(t/q \cdot ct_1 \cdot ct_2)(s)]_q = \Delta \cdot [m_1 \cdot m_2]_t + v_3
  48. [(t/qct1​⋅ct2​)(s)]q​=Δ⋅[m1​⋅m2​]t​+v3

这里噪声

  1. v
  2. 3
  3. \|v_3\|
  4. v3​∥ 的增长因子粗略的是
  5. 2
  6. t
  7. δ
  8. R
  9. 2
  10. s
  11. 2\cdot t\cdot \delta_R^2 \cdot \|s\|
  12. 2t⋅δR2​⋅∥s

类似于 BV 方案的张量积让密文规模扩大,需要执行密钥切换过程,以降低其规模。在 FV 方案中的多项式乘积让密文的成为二次函数。我们需要执行重线性化Relinearisation)过程,使得密文保持为一次多项式:令

  1. c
  2. t
  3. =
  4. [
  5. c
  6. 0
  7. ,
  8. c
  9. 1
  10. ,
  11. c
  12. 2
  13. ]
  14. ct = [c_0, c_1, c_2]
  15. ct=[c0​,c1​,c2​],寻找
  16. c
  17. t
  18. =
  19. [
  20. c
  21. 0
  22. ,
  23. c
  24. 1
  25. ]
  26. ct' = [c_0', c_1']
  27. ct′=[c0′​,c1′​],使得
  28. [
  29. c
  30. 0
  31. +
  32. c
  33. 1
  34. s
  35. +
  36. c
  37. 2
  38. s
  39. 2
  40. ]
  41. q
  42. =
  43. [
  44. c
  45. 0
  46. +
  47. c
  48. 1
  49. s
  50. +
  51. r
  52. ]
  53. q
  54. [c_0+c_1 \cdot s+c_2 \cdot s^2]_q = [c_0'+c_1' \cdot s+r]_q
  55. [c0​+c1​⋅s+c2​⋅s2]q​=[c0′​+c1′​⋅s+r]q​

要保证噪声的无穷范数

  1. r
  2. \|r\|
  3. r 很小。可以设置**重线性化密钥**(*relinearisation key*)为:
  4. r
  5. l
  6. k
  7. =
  8. (
  9. [
  10. (
  11. a
  12. 0
  13. s
  14. +
  15. e
  16. 0
  17. )
  18. +
  19. s
  20. 2
  21. ]
  22. q
  23. ,
  24. a
  25. 0
  26. )
  27. rlk = ([-(a_0 \cdot s+e_0)+s^2]_q,\, a_0)
  28. rlk=([−(a0​⋅s+e0​)+s2]q​,a0​)

其中

  1. e
  2. 0
  3. χ
  4. e_0 \leftarrow \chi
  5. e0​←χ,
  6. a
  7. 0
  8. R
  9. q
  10. a_0 \leftarrow R_q
  11. a0​←Rq​。注意到
  12. r
  13. l
  14. k
  15. [
  16. 0
  17. ]
  18. +
  19. r
  20. l
  21. k
  22. [
  23. 1
  24. ]
  25. s
  26. =
  27. s
  28. 2
  29. +
  30. e
  31. 0
  32. rlk[0]+rlk[1] \cdot s = s^2+e_0
  33. rlk[0]+rlk[1]⋅s=s2+e0​,那么令
  34. c
  35. t
  36. =
  37. (
  38. c
  39. 0
  40. +
  41. r
  42. l
  43. k
  44. [
  45. 0
  46. ]
  47. c
  48. 2
  49. ,
  50. c
  51. 1
  52. +
  53. r
  54. l
  55. k
  56. [
  57. 1
  58. ]
  59. c
  60. 2
  61. )
  62. ct' = (c_0+rlk[0] \cdot c_2,\, c_1+rlk[1] \cdot c_2)
  63. ct′=(c0​+rlk[0]⋅c2​,c1​+rlk[1]⋅c2​)

得到

  1. r
  2. =
  3. e
  4. 0
  5. c
  6. 2
  7. R
  8. r=e_0 \cdot c_2 \in R
  9. r=e0​⋅c2​∈R,但是由于
  10. c
  11. 2
  12. R
  13. q
  14. c_2 \in R_q
  15. c2​∈Rq​,所以噪声
  16. r
  17. r
  18. r 过大。需要降低
  19. c
  20. 2
  21. \|c_2\|
  22. c2​∥ 或者
  23. r
  24. \|r\|
  25. r

方案一

  1. c
  2. 2
  3. c_2
  4. c2
  5. T
  6. T
  7. T**进制分解**,从而降低范数
  8. c
  9. 2
  10. \|c_2\|
  11. c2​∥,令
  12. c
  13. 2
  14. =
  15. i
  16. =
  17. 0
  18. l
  19. 1
  20. T
  21. i
  22. c
  23. 2
  24. (
  25. i
  26. )
  27. c_2 = \sum_{i=0}^{l-1} T^i \cdot c_2^{(i)}
  28. c2​=∑i=0l1Tic2(i)​,其中
  29. l
  30. =
  31. log
  32. T
  33. (
  34. q
  35. )
  36. l = \lceil\log_T(q) \rceil
  37. l=⌈logT​(q)⌉

对应的,设置重线性化密钥为:

  1. r
  2. l
  3. k
  4. =
  5. {
  6. (
  7. [
  8. (
  9. a
  10. i
  11. s
  12. +
  13. e
  14. i
  15. )
  16. +
  17. T
  18. i
  19. s
  20. 2
  21. ]
  22. q
  23. ,
  24. a
  25. i
  26. )
  27. :
  28. i
  29. =
  30. 0
  31. ,
  32. 1
  33. ,
  34. ,
  35. l
  36. 1
  37. }
  38. rlk = \{ ([-(a_i \cdot s+e_i) + T^i \cdot s^2]_q,\, a_i):\, i =0,1,\cdots,l-1 \}
  39. rlk={([−(ai​⋅s+ei​)+Tis2]q​,ai​):i=0,1,⋯,l1}

那么,新密文是

  1. c
  2. 0
  3. =
  4. [
  5. c
  6. 0
  7. +
  8. i
  9. r
  10. l
  11. k
  12. [
  13. i
  14. ]
  15. [
  16. 0
  17. ]
  18. c
  19. 2
  20. (
  21. i
  22. )
  23. ]
  24. q
  25. ,
  26.   
  27. c
  28. 1
  29. =
  30. [
  31. c
  32. 1
  33. +
  34. i
  35. r
  36. l
  37. k
  38. [
  39. i
  40. ]
  41. [
  42. 1
  43. ]
  44. c
  45. 2
  46. (
  47. i
  48. )
  49. ]
  50. q
  51. c_0' = \left[ c_0 + \sum_i rlk[i][0] \cdot c_2^{(i)} \right]_q,\,\, c_1' = \left[ c_1 + \sum_i rlk[i][1] \cdot c_2^{(i)} \right]_q
  52. c0′​=[c0​+i∑​rlk[i][0]⋅c2(i)​]q​,c1′​=[c1​+i∑​rlk[i][1]⋅c2(i)​]q

此时,

  1. r
  2. =
  3. i
  4. c
  5. 2
  6. (
  7. i
  8. )
  9. e
  10. i
  11. r = \sum_i c_2^{(i)} \cdot e_i
  12. r=∑ic2(i)​⋅ei​,base
  13. T
  14. T
  15. T 越小,则范数
  16. r
  17. \|r\|
  18. r 越小,但
  19. r
  20. l
  21. k
  22. rlk
  23. rlk 越大,计算速度也越慢。注意到重线性化所引入的噪声
  24. r
  25. r
  26. r 独立于密文噪声,为了保持良好的同态能力,应使得
  27. r
  28. r
  29. r 不大于做密文噪声太多。

Dynamic Relinearisation:选取一个尽可能小的

  1. T
  2. T
  3. T 计算出
  4. r
  5. l
  6. k
  7. rlk
  8. rlk,如果多次乘法后密文的噪声增大,那么就可以从中提取出恰当的
  9. T
  10. k
  11. T^k
  12. Tk
  13. r
  14. l
  15. k
  16. rlk
  17. rlk,来加速重线性化过程。

方案二

使用模切换,在一个大的模

  1. p
  2. q
  3. p \cdot q
  4. pq 上运算,然后使用**除法**降低范数
  5. r
  6. \|r\|
  7. r∥,令重线性化密钥为:
  8. r
  9. l
  10. k
  11. =
  12. (
  13. [
  14. (
  15. a
  16. 0
  17. s
  18. +
  19. e
  20. 0
  21. )
  22. +
  23. p
  24. s
  25. 2
  26. ]
  27. p
  28. q
  29. ,
  30. a
  31. 0
  32. )
  33. rlk = ([-(a_0 \cdot s+e_0) + p \cdot s^2]_{p \cdot q},\, a_0)
  34. rlk=([−(a0​⋅s+e0​)+ps2]pq​,a0​)

其中

  1. a
  2. 0
  3. R
  4. p
  5. q
  6. a_0 \leftarrow R_{p \cdot q}
  7. a0​←Rpq​,
  8. e
  9. χ
  10. e \leftarrow \chi'
  11. e←χ′,这里的分布
  12. χ
  13. χ
  14. \chi' \neq \chi
  15. χ′=χ 是新分布。如果
  16. p
  17. q
  18. =
  19. q
  20. k
  21. ,
  22. k
  23. R
  24. p \cdot q=q^k,\, k \in \mathbb R
  25. pq=qk,kR
  26. χ
  27. <
  28. B
  29. \|\chi\|<B
  30. ∥χ∥<B,那么需要
  31. χ
  32. =
  33. B
  34. k
  35. >
  36. α
  37. 1
  38. k
  39. q
  40. k
  41. k
  42. B
  43. k
  44. \|\chi'\| = B_k > \alpha^{1-\sqrt k} \cdot q^{k-\sqrt k} \cdot B^{\sqrt k}
  45. ∥χ′∥=Bk​>α1−k​⋅qk−k​⋅Bk​,
  46. α
  47. 3.758
  48. \alpha \approx 3.758
  49. α≈3.758 是常数,以保证安全性不损失。

那么,

  1. c
  2. 0
  3. =
  4. [
  5. c
  6. 2
  7. r
  8. l
  9. k
  10. [
  11. 0
  12. ]
  13. p
  14. ]
  15. q
  16. ,
  17.   
  18. c
  19. 1
  20. =
  21. [
  22. c
  23. 2
  24. r
  25. l
  26. k
  27. [
  28. 1
  29. ]
  30. p
  31. ]
  32. q
  33. c_0'' = \left[ \left\lfloor \frac{c_2 \cdot rlk[0]}{p} \right\rceil \right]_q,\,\, c_1'' = \left[ \left\lfloor \frac{c_2 \cdot rlk[1]}{p} \right\rceil \right]_q
  34. c0′′​=[⌊pc2​⋅rlk[0]​⌉]q​,c1′′​=[⌊pc2​⋅rlk[1]​⌉]q

容易验证

  1. c
  2. 0
  3. +
  4. c
  5. 1
  6. s
  7. =
  8. c
  9. 2
  10. s
  11. 2
  12. +
  13. r
  14. c_0''+c_1'' \cdot s = c_2 \cdot s^2 + r
  15. c0′′​+c1′′​⋅s=c2​⋅s2+r,那么新密文就是
  16. c
  17. t
  18. =
  19. (
  20. c
  21. 0
  22. +
  23. c
  24. 0
  25. ,
  26. c
  27. 1
  28. +
  29. c
  30. 1
  31. )
  32. ct' = (c_0+c_0'',\, c_1+c_1'')
  33. ct′=(c0​+c0′′​,c1​+c1′′​),其中
  34. r
  35. <
  36. q
  37. B
  38. k
  39. δ
  40. R
  41. p
  42. +
  43. δ
  44. R
  45. s
  46. +
  47. 1
  48. 2
  49. \|r\| < \dfrac{q \cdot B_k \cdot \delta_R}{p} + \dfrac{\delta_R \cdot \|s\| + 1}{2}
  50. ∥r∥<pq⋅Bk​⋅δR​​+2δR​⋅∥s∥+1​,整数
  51. p
  52. p
  53. p 越大,那么范数
  54. r
  55. \|r\|
  56. ∥r∥ 越小,但计算速度越慢。

Dynamic Relinearisation:选取一个足够大的

  1. p
  2. p
  3. p 计算出
  4. r
  5. l
  6. k
  7. rlk
  8. rlk,如果多次乘法后密文的噪声增大,那么可以从中提取出
  9. p
  10. p
  11. p'|p
  12. p′∣p 的
  13. r
  14. l
  15. k
  16. rlk
  17. rlk,来加速重线性化过程。

SHE / FHE

我们可以实现基于 RLWE 的 somewhat homomorphic encryption scheme,

在这里插入图片描述
在这里插入图片描述

同态运算后,密文中携带的噪声为:

在这里插入图片描述

为了实现 L-homomorphic,需要噪声分布

  1. χ
  2. \chi
  3. χ 的界
  4. B
  5. B
  6. B 满足:
  7. 4
  8. δ
  9. R
  10. L
  11. (
  12. δ
  13. +
  14. 1.25
  15. )
  16. L
  17. +
  18. 1
  19. t
  20. L
  21. 1
  22. <
  23. q
  24. B
  25. 4 \cdot \delta_R^L \cdot (\delta+1.25)^{L+1} \cdot t^{L-1} < \left\lfloor \frac{q}{B} \right\rfloor
  26. 4⋅δRL​⋅(δ+1.25)L+1tL1<⌊Bq​⌋

为了实现 FHE,只需使得解密电路的深度小于

  1. L
  2. L
  3. L 即可。环
  4. R
  5. q
  6. R_q
  7. Rq 上的多项式运算的深度,计算挺麻烦的,没仔细看 \( ̄︶ ̄)/

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

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

还没有评论