文章|CKKS同态加密及RNS变体

2026-06-07 文章
  • 4
  • 0
  • 0
文章|CKKS同态加密及RNS变体

1. 提出背景

1978年,RivestAdlemanDertouzos在文献[1]中就贷款公司数据库的保密问题与计算问题进行了讨论,并首次提出了同态加密的加密方式。后来,随着云计算、大数据、人工智能、机器学习等新兴技术不断兴起,人们越来越发现同态加密对于现阶段信息安全的重要性。2009年,Gentry首次提出自举技术[2],实现了第一个全同态加密方案。2010年,Dijk又首次实现了基于整数环上FHE的DGHV方案[4]。2012年,Kipnis等人给出了基于矩阵和多项式的无噪声FHE方案[5]。2016年,Jaschke等人通过将有理数近似表示为整数[6],实现了明文空间为实数的FHE方案。2017年,Cheon等人实现了可进行浮点数近似计算的层次型FHE方案[3](下文称CKKS方案),一年后,Cheon等人又通过自举技术,将CKKS方案扩展为全同态加密方案[7],同年,也通过RNS实现了CKKS方案的RNS变体[8]

2. 方案原理

同态加密就是在数据仍处于密文的状态下,对密文数据信息进行各种计算,从而使得其结果在变回明文后和对明文进行相应运算时的结果等值。

对于函数ff,若ff满足f(a)+f(b)=f(a+b)f(a) + f(b) = f(a+b)f(a)f(b)=f(ab)f(a) \cdot f(b) = f(a \cdot b)其一,则称其为半同态,若对于加法与乘法均满足,则称该函数为全同态。我们在这里将加密操作 看作是一个满足同态性质的函数,那么,其密文Enc(m)Enc(m)就有

Enc(m1)+Enc(m2)=Enc(m1+m2)    Enc(m1)Enc(m2)=Enc(m1m2)Enc(m_1) + Enc(m_2) = Enc(m_1 + m_2)\;或\;Enc(m_1) \cdot Enc(m_2) = Enc(m_1 \cdot m_2)

的性质,而且加密函数没有变化,故仍可以用相同的解密函数Dec()Dec()进行解密,并且解密后的明文与对明文直接进行运算的结果相等:

Dec(Enc(m1)+Enc(m2))=m1+m2Dec(Enc(m1)Enc(m2))=m1m2Dec(Enc(m_1) + Enc(m_2)) = m_1 + m_2或\\Dec(Enc(m_1) \cdot Enc(m_2)) = m_1 \cdot m_2

同理,若加法与乘法均满足,则称该方案为全同态加密方案。

Cheon等人给出的CKKS方案,实现了明文为浮点数的近似计算。该方案首先通过编码技术将明文槽上的N/2N/2维复向量变换为NN次整系数多项式;接着假设其具有循环安全性,引入同态乘密钥evkevk,将同态乘法带来的密文维数扩张加以控制;最后在同态乘法结束后进行“重缩放”,有效地控制噪声对明文的影响。

3. 算法描述

设CKKS方案的安全系数为λ\lambda,明文空间M=CN/2\mathcal{M} = \mathbb{C}^{N/2},映射τ\tau为:

τ:Zq[x]/xN+1CN/2\tau:\mathbb{Z}_q[x]/\langle x^N + 1\rangle \to \mathbb{C}^{N/2}

m(x)mm(x) \mapsto \mathbf{m},具体关系为zj=m(ζMj)z_j = m(\zeta M ^j),其中ζM=exp(2πi/M)\zeta M = \exp(-2\pi i/M)。方案详细描述如下:

1.CKKS.KeyGen(1λ)CKKS.KeyGen(1^{\lambda})

2.CKKS.Encode(m,Δ)CKKS.Encode(\mathbf{m},\Delta)

3.CKKS.Decode(m,Δ)CKKS.Decode(m,\Delta)

4.CKKS.Encpk(m)CKKS.Enc_{pk}(m)

5.CKKS.Decsk(c)CKKS.Dec_{sk}(\mathbf{c})

6.CKKS.Add(c1,c2)CKKS.Add(\mathbf{c_1},\mathbf{c_2})

7.CKKS.Multevk(c1,c2)CKKS.Mult_{evk}(\mathbf{c_1},\mathbf{c_2})

8.CKKS.RSll(c)CKKS.RS_{l \to l'}(\mathbf{c})

4.方案改进

在之后的研究中,人们又对该方案进行了不同程度的改进,如下图:

CKKS-1.jpeg

欧密18[7]给出了CKKS方案的自举方案,欧密19[9]对其进行了改进;而SAC18[8]则是提出了CKKS方案的RNS变体,但是其使用的是欧密18中的自举方案,自举精度远达不到实际需求;故在RSA20[10]中,又结合欧密19中的自举改进对RNS-CKKS方案的自举进行了改进;21年的欧密会上,又有两个方案被相继提出,一个是在RSA20的基础上对自举精度进行了提升[11],另一个则是提出了一种新的自举方案[12],相较之前的方案,精度、效率和安全性上都有了明显的提升。

4.1 自举方案

这里只对欧密18中提到的自举方案进行说明。

CKKS-2.png

由于明文槽上的任意线性变换都可表示为zAz+Bz\mathbf{z} \mapsto A \cdot \mathbf{z} + B \cdot \overline{\mathbf{z}},即对于任意线性变换,我们都可以使用两个N/2N/2维的矩阵表示。故我们在同态计算编解码操作时需要用到MatMult(ct,A)MatMult(\mathbf{ct},A)函数以实现同态计算矩阵乘法,其中ctRq2\mathbf{ct} \in R_q^2并且ACN/2×N/2A \in \mathbb{C}^{N/2 \times N/2},这个函数相当于对ct\mathbf{ct}加密的向量m\mathbf{m}进行了如下的操作:

Am=0j<N/2(ajρ(m;j))A \cdot \mathbf{m} = \sum_{0 \leqslant j < N/2} (\mathbf{a}_j \odot \rho (\mathbf{m};j))

其中,\odot为向量按位乘法,ρ\rho为循环向左移位。

而对于模运算,Cheon等人首先模运算近似为正弦函数上的运算:

[t]q=q2πsin(2πqt)[t]_q = \frac{q}{2\pi}\cdot \sin (\frac{2\pi}{q}\cdot t)
CKKS-3.png

接着,再通过欧拉公式,

{exp(iθ)=cosθ+isinθexp(iθ)=cosθisinθ\begin{cases} \exp(i\theta ) = \cos \theta + i \sin \theta \\ \exp(-i\theta ) = \cos \theta - i \sin \theta \end{cases}

将正弦函数上的运算转换到指数函数上的运算:

sinθ=12iexp(iθ)exp(iθ)\sin \theta = \frac{1}{2i} \exp(i\theta) - \exp(-i\theta)

最后利用文献[4]给出的计算指数函数的算法进行运算即可:

[t]q=q4πi[exp(2πiqt)exp(2πiqt)][t]_q = \frac{q}{4\pi i} [\exp (\frac{2\pi i}{q} t) - \exp (-\frac{2\pi i}{q} t)]

4.2 RNS变体

为了有效地实现多项式运算,Gentry等人基于CRT提出了一种双CRT表示的分圆多项式表示方案[13]。第一层CRT层通过使用RNS将多项式分解成具有较小模的多项式分量。第二层则是通过NTT的方法,将每个小多项式转换为整数向量。在双CRT表示中,任意多项式都可以用由小整数组成的矩阵来识别,并且可以通过执行不同分量的模操作来实现有效的多项式运算。

Cheon等人提出了CKKS方案的RNS变体[9],实现了在RNS上的近似全同态加密方案,具体算法如下:

1.RNS.Setup(q,L,η)RNS.Setup(q,L,\eta )

2.RNS.KSGen(s1,s2)RNS.KSGen(s_1,s_2)

3.RNS.KeyGen()RNS.KeyGen()

4.RNS.Encode(m,Δ)RNS.Encode(\mathbf{m},\Delta)

5.RNS.Decode(m,Δ)RNS.Decode(m,\Delta)

6.RNS.Encpk(m)RNS.Enc_{\mathbf{pk}}(m)

7.RNS.Decsk(ct)RNS.Dec_{\mathbf{sk}}(\mathbf{ct})

之后便是运算部分,由于RNS的特性,在该表征系统上的运算均可分解为各个基上的运算,并且相互独立。故RNS上运算的具体算法展示如下:

8.RNS.Add(ct,ct)RNS.Add(\mathbf{ct},\mathbf{ct}')

9.RNS.Multevk(ct,ct)RNS.Mult_{\mathbf{evk}}(\mathbf{ct},\mathbf{ct}')

11.RNS.RS(ct)RNS.RS(\mathbf{ct})

参考文献

[1] Rivest R L , Adleman L M , Dertouzos M L . On Data Banks and Privacy Homomorphisms[J]. Foundations of Secure Compuation, 1978.

[2] Gentry C . Fully homomorphic encryption using ideal lattices[J]. Stoc, 2009.

[3] 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.-1

[4] Dijk M V , Gentry C , Halevi S , et al. Fully Homomorphic Encryption over the Integers[C]// International Conference on Theory & Applications of Cryptographic Techniques. Springer, Berlin, Heidelberg, 2010.

[5] Aviad Kipnis E H . 1 Efficient Methods for Practical Fully-Homomorphic Symmetric-key Encryption, Randomization, and Verification[J]. Urban Research & Practice, 2012, 7(3):255-257.

[6] Jschke A , Armknecht F . Accelerating Homomorphic Computations on Rational Numbers[J]. Springer, Cham, 2016.

[7] Cheon J H , Han K , Kim A , et al. Bootstrapping for Approximate Homomorphic Encryption[J]. Annual International Conference on the Theory and Applications of Cryptographic Techniques, 2018.-2

[8] Cheon J H , Han K , Kim A , et al. A Full RNS Variant of Approximate Homomorphic Encryption[J]. Selected areas in cryptography :. annual international workshop, SAC. proceedings. SAC (Conference), 11349:347-368.-2

[9] Chen H , Chillotti I , Song Y . Improved Bootstrapping for Approximate Homomorphic Encryption[C]// International Conference on the Theory & Applications of Cryptographic Techniques. Springer, Cham, 2019.-3

[10] Han K , D Ki. Better Bootstrapping for Approximate Homomorphic Encryption[C]// Cryptographers’ Track at the RSA Conference. Springer, Cham, 2020.-4

[11] Lee J W , Lee E , Lee Y , et al. High-Precision Bootstrapping of RNS-CKKS Homomorphic Encryption Using Optimal Minimax Polynomial Approximation and Inverse Sine Function[M]. 2021.-5

[12] Bossuat J P , Mouchet C , Troncoso-Pastoriza J , et al. Efficient Bootstrapping for Approximate Homomorphic Encryption with Non-sparse Keys[M]. 2021.-5

[13] Gentry C , Halevi S , Smart N P . Homomorphic Evaluation of the AES Circuit[C]// Annual Cryptology Conference. Springer, Berlin, Heidelberg, 2012.