当前位置:首页 » 《随便一记》 » 正文

Chimera全同态加密加密转换方案学习_瓜皮37的博客

15 人参与  2022年05月06日 09:27  分类 : 《随便一记》  评论

点击全文阅读


全同态加密

众所周知,对同态加密的数据进行计算再解密,所得到的的结果与解密再计算是相同的。那么,同态加密中对计算(即同态评估)会有什么样的限制呢?

目前已知可以进行的同态加密计算类型大致有三种:

  1. 整数计算
  2. 近似计算(定点数计算)
  3. 二进制计算(电路计算)

整数计算

给定两个明文 m 1 , m 2 ∈ Z m_1, m_2 \in \mathbb{Z} m1,m2Z 的加密,可以计算:

全同态加密整数计算

整数计算是可以使用 SIMD 进行加速的,给定两个明文 m 1 , m 2 ∈ Z m_1, m_2 \in \mathbb{Z} m1,m2Z 的加密,我们可以计算:

  • 元素之间的加法: m 1 + m 2 m_1 + m_2 m1+m2
  • 元素之间的乘法: m 1 × m 2 m_1 \times m_2 m1×m2
  • 置换操作: σ ( m 1 ) \sigma (m_1) σ(m1)

这里的 SIMD 加速的思想早在 BV 方案中就已经被提出和使用:(在多项式环上使用中国剩余定理)让密文上有很多槽 (slots) ,就可以把明文数组插进槽中,对两个密文进行同态加操作的时候,可以对数组向量按分量进行同态加操作,来提高计算的效率与降低密文转换率。

然而,单例的加法和乘法都是完备的,但是如果我们把数据看成数组形式的话,加法和乘法就不是完备的了,例如同一个数组中不同的元素之间无法进行运算。因此,需要引入同态置换操作 σ ( m 1 ) \sigma (m_1) σ(m1) 才能在加密数组上实现完备的操作。

整数计算置换运算

通常来说,取任意精度的整数对同态加密来说并不是很友好。例如在 C 语言中,取模 p = 2 32 p = 2^{32} p=232 ,则有可能在计算时发生溢出,如 2 30 + 2 30 = − 2 31 2^{30} + 2^{30} = -2^{31} 230+230=231

近似计算

与浮点数相比,定点数对同态加密更友好(CKKS 方案中选择了定点数)。

近似计算

将定点数表示为: x = m ⋅ 2 τ x = m \sdot 2^{\tau} x=m2τ ,其中 m ∈ 2 − ρ ⋅ Z m \in 2^{-\rho} \sdot \mathbb{Z} m2ρZ 并且 0 ≤ ∣ m ∣ < 1 0 \leq | m | < 1 0m<1

明文参数有:

  • ρ ∈ N \rho \in \mathbb{N} ρN :明文精度的比特数(约为15)
  • τ ∈ Z \tau \in \mathbb{Z} τZ :槽指数(每个槽内复数值的数量级的阶)

其中 τ \tau τ 是公开的,因此对于同态加密来说较为友好。但这也增加了计算时数据上溢和下溢的风险。

如果在这里也希望能够使用 SIMD 的思想加速,即实现以下三种运算:

  • (也许是 SIMD) 定点数加法
  • (也许是 SIMD) 定点数乘法
  • 置换操作

然而实际的操作可能比你想象的要复杂很多。例如给定 ( m 1 , τ 1 ) , ( m 2 , τ 2 ) (m_1, \tau_1), (m_2, \tau_2) (m1,τ1),(m2,τ2) τ \tau τ ,需要计算 ρ \rho ρ bits 精度的 m ⋅ 2 τ = m 1 ⋅ 2 τ 1 + m 2 ⋅ 2 τ 2 m \sdot 2^{\tau} = m_1 \sdot 2^{\tau_1} + m_2 \sdot 2^{\tau_2} m2τ=m12τ1+m22τ2 ,除了需要加法运算之外,则需要非线性函数:右移 和 舍入。

电路计算

给定 b 1 , b 2 ∈ { 0 , 1 } b_1, b_2 \in \{ 0, 1 \} b1,b2{0,1} ,同态运算为:

电路计算

在这里考虑三种电路:

  • 布尔电路(完全二进制的电路):由各种门电路组成,有 NAND,AND,OR,NOT,XOR,MUX
  • 查找表(混合):给定 ( v 0 , . . . , v n ) (v_0, ..., v_n) (v0,...,vn) i i i ,返回 v i v_i vi
  • 决策图/自动机(混合):每次读入一个 bit ,更新内部状态。返回最终状态的一些信息或者整个路径。

环面上的LWE困难问题

多项式环

首先给出整数多项式、实数多项式和复数多项式的定义:

  • 整数多项式 Z N [ X ] = Z [ X ] / ( X N + 1 ) \mathbb{Z}_N[X] = \mathbb{Z}[X] / (X^N + 1) ZN[X]=Z[X]/(XN+1) ,是系数是整数的多项式模 X N + 1 X^N + 1 XN+1 的环
  • 实数多项式 R N [ X ] = R [ X ] / ( X N + 1 ) \mathbb{R}_N[X] = \mathbb{R}[X] / (X^N + 1) RN[X]=R[X]/(XN+1) ,是系数是实数的多项式模 X N + 1 X^N + 1 XN+1 的环
  • 复数多项式 C N [ X ] = C [ X ] / ( X N + 1 ) \mathbb{C}_N[X] = \mathbb{C}[X] / (X^N + 1) CN[X]=C[X]/(XN+1) ,是系数是复数的多项式模 X N + 1 X^N + 1 XN+1 的环

举个例子说明,当 N = 2 N = 2 N=2 时,实数多项式上的运算可以为:

( 1.2 + 2.3 X ) ⋅ ( 3.2 + 4.1 X ) = 3.84 + 12.28 X + 9.42 X 2 = 12.28 X − 5.59   m o d   ( X 2 + 1 ) (1.2 + 2.3X) \sdot (3.2 + 4.1X) = 3.84 + 12.28X + 9.42X^2 = 12.28X - 5.59 \, mod \, (X^2 + 1) (1.2+2.3X)(3.2+4.1X)=3.84+12.28X+9.42X2=12.28X5.59mod(X2+1)

可以观察到,实数多项式 ( R N [ X ] , + , × ) (\mathbb{R}_N[X], +, \times) (RN[X],+,×) 和复数多项式 ( C N [ X ] , + , × ) (\mathbb{C}_N[X], +, \times) (CN[X],+,×) 都是

  • ( R N [ X ] , + ) (\mathbb{R}_N[X], +) (RN[X],+) ( C N [ X ] , + ) (\mathbb{C}_N[X], +) (CN[X],+) 都是群
  • x × y x \times y x×y 有定义

为了继续在槽上进行操作,我们需要使用 系数打包(Coefficient packing) 和 槽打包 (Slot packing) 的技术,将这两个环同构到 R \mathbb{R} R-向量空间上:

  • Coefficient packing : 使用系数提取
    Coefficient packing
  • Slot packing:使用 X N + 1 X^N + 1 XN+1 的本原根
    Slot packing

环面与环面上的LWE加密在TFHE:环面上全同态加密方案学习笔记1中:https://blog.csdn.net/qq_38076131/article/details/107896239

Chimera的框架

那么我们如何选择同态加密方案呢?

每种类型的方案有不同的优势:

  • BGV/Helib 方案:善于使用 SIMD 在有限域上进行计算
  • B/FV 方案:善于使用 SIMD 在向量模 p p p 上进行计算
  • HEAAN(CKKS) 方案:善于使用 SIMD 进行定点数运算
  • TFHE 方案:善于按位评估、计算布尔逻辑、比较、阈值计算、计算复杂电路等……

有没有什么方法能够使用这些方案的优势,同时避免它们的劣势呢?

Mariya Georgieva 等人给出了一个解决方案:Chimera

  • 在环面上定义明文空间
  • 在密文表达之间转换
  • 在 TFHE 、B/FV 、HEAAN 之间建立桥梁

在上述方案中,明文种类有:电路的布尔值、整数摸 ( Z / p Z ) n (\mathbb{Z}/p\mathbb{Z})^n (Z/pZ)n 、定点数 C \mathbb{C} C 。那么,我们怎么用 T N [ X ] \mathbb{T}_N[X] TN[X] 来表示所有的明文呢?

Chimera明文框架

电路转换为 T N [ X ] \mathbb{T}_N[X] TN[X]

在 TFHE 的层次同态中,作者使用 CMux 门与 0,1 这个图灵完备的门电路组合构造了层次 TFHE ,原因是它可以几乎没有消耗的做二进制选择(噪声呈线性增长)。CMux 门的密文类型如下图所示:

TFHE转Chimera-1

该门的噪声增长如下图所示:

TFHE转Chimera-2

其中 CMux 门的表达式为: C M u x ( C , d 1 , d 0 ) = C ⊡ ( d 1 − d 0 ) + d 0 CMux(C, d_1, d_0) = C \boxdot (d_1 - d_0) + d_0 CMux(C,d1,d0)=C(d1d0)+d0

使用很多这样的 CMux 门可以构造和评估任意的 查找表/布尔函数 ,进而评估任意函数 f : B d → T s f:\mathbb{B}^d \rightarrow \mathbb{T}^s f:BdTs

TFHE转Chimera-3

可以对该查找表进行横向/纵向打包(与TFHE方案中相同)。

整数转换为 T N [ X ] \mathbb{T}_N[X] TN[X]

我们知道整数多项式模 p p p :即 Z N [ x ]   m o d   p \mathbb{Z}_N[x] \, mod \, p ZN[x]modp 是系数是模 p p p 整数的多项式环模 X N + 1 X^N + 1 XN+1

如果 X N + 1 X^N + 1 XN+1 N N N 个根,则 Z / p Z \mathbb{Z}/p\mathbb{Z} Z/pZ 是和 Z N [ X ]   m o d   p \mathbb{Z}_N[X] \, mod \, p ZN[X]modp 同构的(可以用模 p p p 的槽来模拟)。

举个栗子:

BGV转Chimera-1

关于 p p p 的限制:

  • 在 BFV 方案中, p p p 需要满足一些条件
  • 在 BGV 方案中,任意 p p p 都可以(在扩域中进行运算)

我们知道有同构: ( Z / p Z ) N ≃ Z N [ X ]   m o d   p ≃ 1 p Z N [ X ]   m o d   1 (\mathbb{Z} / p\mathbb{Z})^N \simeq \mathbb{Z}_N [X] \, mod \, p \simeq \frac{1}{p} \mathbb{Z}_N[X] \, mod \, 1 (Z/pZ)NZN[X]modpp1ZN[X]mod1

于是我们可以使用 1 p \frac{1}{p} p1 的整数倍构造明文空间 M \mathcal{M} M

BGV转Chimera-2

于是明文上的加法 a d d i t i o n ( μ 1 ( X ) , μ 2 ( X ) ) addition(\mu_1(X), \mu_2(X)) addition(μ1(X),μ2(X))

μ 1 ( X ) + μ 2 ( X ) : = μ 1 ( X ) + μ 2 ( X )   m o d   1 \mu_1(X) + \mu_2(X) := \mu_1(X) + \mu_2(X) \, mod \, 1 μ1(X)+μ2(X):=μ1(X)+μ2(X)mod1

明文上的蒙哥马利乘法 p r o d u c t ( M o n t g o m e r y ) ( μ 1 ( X ) , μ 2 ( X ) ) product(Montgomery) (\mu_1(X), \mu_2(X)) product(Montgomery)(μ1(X),μ2(X))

μ 1 ( X ) ⊠ p μ 2 ( X ) : = p ⋅ μ 1 ( X ) ⋅ μ 2 ( X )   m o d   1 \mu_1(X) \boxtimes_p \mu_2(X) := p \sdot\mu_1(X) \sdot \mu_2(X) \, mod \, 1 μ1(X)pμ2(X):=pμ1(X)μ2(X)mod1

这个方案看似很简单,但是在实际操作过程中会遇到一些问题。

例如选取参数 p = 3 , μ 1 = 1 / 3 , μ 2 = 2 / 3 p = 3, \mu_1 = 1/3, \mu_2 = 2/3 p=3,μ1=1/3,μ2=2/3

  • 对于所有整数 I 1 , I 2 I_1, I_2 I1,I2 ,计算外积 3 ( I 1 + 1 / 3 ) ( I 2 + 2 / 3 ) = I + 2 / 3 = 2 / 3   m o d   1 3(I_1 + 1/3)(I_2 + 2/3) = I + 2/3 = 2/3 \, mod \, 1 3(I1+1/3)(I2+2/3)=I+2/3=2/3mod1
  • 当我们在噪声下计算小元素时: 3 × 5.33333 × 10.66665 = 170.6662 3 \times 5.33333 \times 10.66665 = 170.6662 3×5.33333×10.66665=170.6662 正确
  • 当我们在噪声下计算大元素时: 3 × 12345678.33333 × 7654321.66665 = − . 839...   m o d   1 3 \times 12345678.33333 \times 7654321.66665 = -.839... \, mod \, 1 3×12345678.33333×7654321.66665=.839...mod1 错误

因此,我们需要明文的小表达式来保证结果的正确性;即我们需要将密文限制为 R [ X ] \mathbb{R}[X] R[X] 上的小的表达式;以及保证 1 p ≫ n o i s e \frac{1}{p} \gg noise p1noise

在这种情况下,同态操作的定义为:

  • 同态加法 c 1 = ( a 1 , b 1 ) , c 2 = ( a 2 , b 2 ) c_1 = (a_1, b_1), c_2 = (a_2, b_2) c1=(a1,b1),c2=(a2,b2)

    ( a , b ) = ( a 1 + a 2 , b 1 + b 2 ) (a, b) = (a_1 + a_2, b_1 + b_2) (a,b)=(a1+a2,b1+b2)

  • 同态积 c 1 = ( a 1 , b 1 ) , c 2 = ( a 2 , b 2 ) c_1 = (a_1, b_1), c_2 = (a_2, b_2) c1=(a1,b1),c2=(a2,b2)

BGV转Chimera-3

定点数转换为 T N [ X ] \mathbb{T}_N[X] TN[X]

通过添加以下三个 标签/参数 可以对 HEAAN 密文进行表示,下面定义这些标签:

  • L ∈ N L \in \mathbb{N} LN :表示密文的的指数,它量化了在执行自举之前同态操作的最大数量。
  • ρ ∈ N \rho \in \mathbb{N} ρN :明文精度的比特值,即尾数的位数。由于它是一个全局常量,我们一般省略它。
  • τ ∈ Z \tau \in \mathbb{Z} τZ :槽指数(每个槽中复数值的数量级)。这里使用浮点表示,其指数是公开的,并且在向量的所有坐标上都是固定的,只有尾数是保密的。更准确地说,一个复数 z z z 被表示为 z = m ⋅ 2 τ z = m \sdot 2^{\tau} z=m2τ,其中 τ \tau τ 是公开的, m ∈ 2 − ρ ⋅ ( Z + i Z ) m \in 2^{- \rho} \sdot (\mathbb{Z} + i \mathbb{Z}) m2ρ(Z+iZ) ,其中 0 ≤ ∣ m ∣ < 1 0 \leq |m| < 1 0m<1

下图表示了如何使用前面定义的标签定义 (带噪声的) 明文空间:

CKKS转Chimera-1

如果使用连续的方法来表示明文: x × y = L i f t ( x ) ∗ L i f t ( y )   m o d   1 x \times y = Lift(x) * Lift(y) \, mod \, 1 x×y=Lift(x)Lift(y)mod1

CKKS转Chimera-2

  • 优势1:这种方法可以保留 (或减少) 间隔 [ − 1 2 L , 1 2 L ] [- \frac{1}{2^L}, \frac{1}{2^L}] [2L1,2L1]
  • 优势2: L i f t Lift Lift 是一个周期函数:它可以通过 s i n sin sin 函数(或者其他傅里叶序列)来近似
  • 不足:但是 s i n sin sin 函数只能近似于多项式,而多项式需要递归地乘积

如果使用离散的方法来表示明文:舍入 a , b a, b a,b (进而舍入 μ \mu μ) 到确切的 1 q \frac{1}{q} q1 的倍数,其中 q ≈ 2 L + ρ q \approx 2^{L + \rho} q2L+ρ

  • 优势1:这是一个环 1 q Z N [ X ]   m o d   1 \frac{1}{q} \mathbb{Z}_N[X] \, mod \, 1 q1ZN[X]mod1 ,可以避免使用 L i f t Lift Lift
  • 优势2:可以进行蒙哥马利乘法 q ( b 1 − s ⋅ a 1 ) ( b 2 − s ⋅ a 2 ) q(b_1 - s \sdot a_1)(b_2 - s \sdot a_2) q(b1sa1)(b2sa2)
  • 不足:会扩大区间 [ − 1 2 L , 1 2 L ] → [ − 1 2 L − ρ , 1 2 L − ρ ] [- \frac{1}{2^L}, \frac{1}{2^L}] \rightarrow [- \frac{1}{2^{L - \rho}}, \frac{1}{2^{L - \rho}}] [2L1,2L1][2Lρ1,2Lρ1] ,只能进行 L L L 次乘法

小结

挂两张论文中的图片,讲的很清楚:

Con-1

Con-2

参考文献

参考论文:Boura C, Gama N, Georgieva M, et al. Chimera: Combining ring-lwe-based fully homomorphic encryption schemes[J]. Journal of Mathematical Cryptology, 2020, 14(1): 316-338.(2018与2020两个版本)

参考视频:https://www.youtube.com/watch?v=nn2fFpO4p9Q

参考PPT:http://nutmic2019.imj-prg.fr/slides/Chimera.pdf


点击全文阅读


本文链接:http://zhangshiyu.com/post/39574.html

同态  多项式  明文  
<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1