Efficient Multi-Key Homomorphic Encryptionwith Packed Ciphertexts with Applicationto Oblivious Neu

翻译 Efficient Multi-Key Homomorphic Encryption with Packed Ciphertexts with Application to Oblivious Neural Network Inference

自学用,侵权删

同态加密(Homomorphic Encryption, HE)是一种支持加密数据计算的密码体制。López-Alt等人(STOC 2012)提出了一种广义的同态加密概念,称为多密钥同态加密(MKHE),能够对不同密钥下加密的密文进行算术运算。在本文中,我们提出了两个多密钥加密方案的变种。本文提出了新的重线性化算法,比Chen等人之前的方法更简单和更快(TCC 2017)。然后,推广了多密钥全同态加密方案的bootstrapping技术。使用Microsoft SEAL实现了这两个MKHE方案的概念验证。例如,当基环的维数为8192时,多密钥之间的同态乘法(p。与四方关联并进行重线性化的密文大约需要116个密钥。67毫秒。MKHE方案在多个数据提供者之间的安全计算中具有广泛的应用。作为一个基准,使用预训练的神经网络模型对图像进行同态分类,其中输入数据和模型在不同的密钥下加密。该实现耗时约1.8秒来评估MNIST数据集加密图像上的一个卷积层,然后是两个全连接层。

1 INTRODUCTION

随着大量数据的产生和用于推动新的科学发现,有效和负责任地利用大数据仍然是一个巨大的挑战。通过外包给拥有密集计算资源的公共云服务提供商,这个问题可能会得到缓解。然而,外包数据和分析的隐私安全问题仍然存在。近年来,用于安全计算的密码学技术取得了重大进展。在安全计算技术中,多方计算(Multi-Party computation, MPC)和同态加密(Homomorphic Encryption, HE)由于技术上的突破而受到越来越多的关注。

MPC的历史可以追溯到30年前[5,50],从那时起,它在理论界得到了广泛的研究。在这种方法中,两个或多个参与方参与一个交互式协议,根据他们的私有输入计算函数,其中只有函数的输出被显示给参与方。近年来,有大量工作致力于提高MPC的实际效率,最先进的协议在性能上取得了数量级的提升(例如[20,36,49])。然而,就通信复杂度而言,这些协议本质上仍然是低效的:协议各方需要交换的比特数与函数复杂度和参与者数量的乘积成正比。因此,通信复杂度高仍然是MPC协议的主要瓶颈。

此外,上述MPC协议可能不适合基于云的应用程序,因为所有参与方都需要执行与功能复杂度成比例的本地计算。然而,在实际用例中,我们不能期望数据提供者要么执行大量的工作,要么在整个协议执行过程中保持在线。另一种模型是数据拥有者与少量独立服务器秘密共享他们的数据,这些服务器执行MPC来生成计算结果[23,44]。这些协议具有良好的性能,将负担从数据提供者转移到服务器,但它们的隐私保证依赖于服务器不合谋的假设。

HE指的是一种加密系统,它允许在加密数据上进行计算而无需解密,从而使在不可信的云计算中安全地外包计算成为可能。在Gentry第一次建造[24]之后,HE有了重大的技术进步。例如,可以将多个明文值加密为一个打包的密文,然后使用单指令多数据(SIMD)技术并行地对这些值执行操作[26,48]。因此,基于打包技术的方案[6,7,16,22]具有良好的每个明文值的平摊复杂度,已被应用于隐私保护大数据分析[11,37,39]。然而,传统的HE方案只允许计算相同密钥下可解密的密文。因此,他自然不支持涉及多个数据提供者的安全计算应用程序,每个数据提供者都提供自己的密钥

López-Alt等人提出了一种多密钥同态加密(MKHE)方案,它是一种密码学基元,支持对密文进行算术运算,而密文不一定可以解密到相同的密钥。除了解决HE的上述问题外,MKHE还可用于设计轮询高效的MPC协议,并具有最小的通信开销[45]。此外,MKHE提出的MPC协议满足on-the-fly MPC[43]性质,在数据提供者上传加密数据后,可以动态地确定要计算的电路。

**On-the-fly 多方计算(MPC)**是一种在计算过程中动态生成和处理秘密数据的技术,其主要性质包括:

1. **实时计算**:与传统的多方计算方法不同,on-the-fly MPC 允许在计算过程中生成和使用秘密共享,而无需事先准备所有数据。这种动态性使得计算能够更灵活。

2. **低延迟**:由于能够在计算进行中处理数据,on-the-fly MPC 可以降低整体计算延迟,适用于实时或交互式应用场景。

3. **减少通信开销**:通过动态生成和处理数据,可以减少在多方之间传输的密钥和中间结果,从而降低通信成本。

4. **适应性**:这种方法通常能够根据参与方的需求和输入数据的变化动态调整计算过程,提高了系统的适应性。

5. **安全性**:on-the-fly MPC 依然保持了多方计算的安全特性,确保即使参与方之间的数据是秘密的,最终结果仍然是可信的。

6. **灵活性**:能够处理复杂计算任务,并支持不同类型的输入,适合用于需要隐私保护的场景,如金融、医疗和数据分析等领域。

总之,on-the-fly MPC 提供了一种高效、灵活的解决方案,适用于需要实时数据处理和隐私保护的计算任务。

尽管用途广泛,但MKHE很少在实践中使用。早期的研究[19,45,46]使用了GSW方案的多密钥变体[28]。这些构造密文量大,性能不能随着参与者数量的增加而很好地扩展。之前的工作[8,10]提出了短密文的MKHE方案,但需要注意的是一个密文只能加密一个比特。目前唯一的带密文打包的MKHE方案[13,41]是BGV方案[7]的多密钥变体。上述研究均为抽象研究,未给出具体实现,支持SIMD操作的MKHE方案能否实现仍是一个悬而未决的问题。

1.1 Our Contributions

我们设计了多密钥变种的BFV[6,22]和CKKS[16]方案。本文提出了一种新的重线性化密钥生成方法,与[13]中已有的方法相比,该方法更简单、更快。此外,我们将这些方案[9,12,14]中最先进的bootstrapping算法应用到多密钥场景中,以构建带打包密文的多密钥全同态加密。最后,我们使用microsoftseal[47]对所提出的多密钥方案进行了概念证明实现并给出了实验结果。据我们所知,这是第一个支持压缩密文的MKHE方案的实际实现

本文还提出了MKHE的第一个可行应用,该应用安全评估了预训练的卷积神经网络(CNN)模型。构建了一个高效的协议,云服务器使用模型提供商提供的分类器向数据所有者提供在线预测服务,同时使用MKHE保护数据和模型的隐私。该方案支持多密钥操作,使其能够以较低的端到端延迟,以及接近最优的数据和模型提供商成本实现这一目标,如图1所示。服务器可以存储大量不同密钥下加密的密文,但某项任务的计算成本仅取决于与电路相关的参与方的数量。我们注意到,我们的解决方案比单键HE具有优势,因为ML模型提供者不需要将未加密的模型发送给服务器

1.2 Overview of Our Construction

设R = Z[X]/(Xn + 1)为具有二维n的幂次的分圆环,si∈R为第i方的秘密。构造基于环的MKHE方案的出发点是要求生成的方案能够在独立生成的密钥下处理密文的同态计算。与k个参与方相关的MKHE密文的形式为ct = (c0, c1,…, ck)∈Rk+1 q,其模q可通过级联密钥sk = (1, s1,…, sk)。换句话说,它的相位μ =〈ct, sk〉(mod q)是对应于基本方案的明文消息的随机编码。

BFV或CKKS的同态乘法由两个步骤组成:张量积和重线性化。两个输入密文的张量乘积满足〈ct1⊗ct2, sk⊗sk〉=〈ct1, sk〉·ct2, sk〉,因此它是张量平方秘密sk⊗sk下的有效加密。在重线性化步骤中,我们的目标是将扩展密文ct = ct1⊗ct2∈R(k+1) 2q转换为在sk下加密相同消息的规范密文,该步骤可以理解为一个密钥交换过程,需要对sk⊗sk进行特殊加密。与传统的HE方案不同,非线性项对应的重线性化密钥不能由单一方生成。

本文提出一种基于rlwe的密码系统来实现这一功能。该方案与GSW[21,28]的环变体类似,但支持不同密钥下密文之间的某些运算。设g∈Zd是一个积分向量,称为gadget向量。该方案采用公共引用字符串(CRS)模型,所有参与者共享一个随机多项式向量a∈Rdq每方i自己生成一个秘密si的特殊加密,它是一个矩阵Di = [Di,0 | Di,1 | Di,2]∈Rd×3 q满足Di,0+si·Di,1≈ri·g (mod q)和Di,2≈ri·a +si·g (mod q),其中ri是从密钥分布中采样的一个小多项式。它作为第i方的评估密钥发布。

重线性化算法从si sj到(1,si, sj)重复O(k2)次密钥交换操作,因此在Rq中其复杂度为O(dk2)次。我们注意到Ki,j可以在多密钥操作之前预先计算,并且生成的密钥可以重复用于与i和j相关的任何计算。

第二种方法通过递归地乘以第j个公钥bj和第i个求值密钥Di,直接将扩展密文的每个条目线性化第一种方案生成并存储一个共享的重线性化密钥{Ki, j}1≤i≤k,因此它的空间和时间复杂度在k上呈二次增长。而第二种算法允许我们只保留与k值成线性关系的评估密钥。此外,它大大减少了重线性化带来的额外噪声的方差,因此我们可以在保持相同功能的情况下使用更小的参数。最后,我们将modulus raising technique模提高技术[27,38]应用于第二种方法,以进一步降低噪声增长。

作为一个正交问题,打包MKHE方案的自举问题在文献中尚未得到研究。本文将现有的HE方案[9,12,14,25,32]的自举方法推广到多密钥设置。泛化的主要问题是bootstrapping流水线包含一些高级功能,如slot置换。我们将[10]中的多密钥交换技术应用到伽罗瓦自同构中,解决了这个问题并提供了所有必要的操作。

最后,我们将实现HE方案[4,15,30]的最新优化技术应用于我们的MKHE方案以提高性能。例如,实现了MKHE方案的全剩余数系统(RNS)变体,并使用对RNS友好分解方法[4,15,30]进行重新线性化,从而避免了昂贵的高精度算法。

1.3 RelatedWorks

López-Alt等人首先提出了一种基于NTRU的MKHE方案。在此基础上,Clear和McGoldrick[19]提出了GSW的多密钥变体,并结合密文扩展技术设计了一个MKHE方案,并被Mukherjee和Wichs[45]简化。Peikert和Shiehian[46]基于同一个多密钥GSW方案开发了两个多跳MKHE方案。然而,这些方案只能加密一个巨大的扩展GSW密文中的一个比特。

Brakerski和Perlman[8]提出了一个短(lwe)密文的MKHE方案,但其渐近效率和具体效率尚不清楚。Chen, Chillotti和Song[10]在TFHE[17]框架的基础上首次实现了MKHE原语,提出了一种改进方案。然而,该方案不支持批处理技术,因此具有类似TFHE的大膨胀率。

最相关的研究是Chen et al.[13]和Li et al.[41]。他们基于多密钥GSW方案生成重线性化密钥,设计了BGV[7]的多密钥变体。但是,它由从sisj到普通密钥的O(k2)个密钥组成,每个密钥包含O(k)个分量。此外,他们没有提供任何实施结果或具体性能的分析。我们的工作是这些研究的扩展,因为我们的重线性化方法和其他优化技术也可以应用于BGV。我们还强调,之前的批量MKHE方案可以通过观察评估密钥的稀疏性来提高性能,但这一点在手稿中没有指出。在表1中,我们提供了最近MKHE方案的性能;在我们的工作中,考虑了第二种方法来进行比较。

2 BACKGROUND
2.1 Notation

除非另有说明,所有的对数都以2为底。我们用粗体表示向量,例如a,用大写粗体表示矩阵,例如A。我们通过〈u, v〉两个向量u, v的通常点积。对于实数r,⌊r⌉表示与r最接近的整数,在平局的情况下向上取整。对于有限集合S, U (S)表示S上的均匀分布。整篇文章用λ表示安全参数:已知的针对该密码方案的所有有效攻击都需要Ω(2λ)位运算。

2.2 Multi-Key Homomorphic Encryption

多密钥同态加密是一种可以对不同密钥加密的密文进行运算电路计算的加密系统。具有算术结构的LetMbe消息空间。

MKHE方案MKHE由五种PPT算法(Setup, KeyGen, Enc, Dec, Eval)组成。我们假设每个参与方都有一个参考 (索引)到它的公钥和密钥。一个多密钥密文隐式地包含一个有序集合T = {id1,…, idk}的关联引用。例如,新鲜密文ct←MKHE.Enc(μ;pkid)对应的是一个单元素集合T = {id},但随着多方密文计算的不断进行,参考集合的规模也在不断增大。

2.3 Ring Learning with Errors

g-1     a元素变u向量

3 重线性化多密钥密文 

本节提供了MKHE方案的高级描述,并解释了如何执行作为同态算法核心操作的再线性化过程。

3.1 Overview of HEs with Packed Ciphertexts

近年来,HE方案的性能有了显著的提高。例如,密文打包技术允许我们在一个密文中加密多个数据,并以SIMD方式并行执行同态操作。目前批量HE方案有BGV[7]、BFV[6,22]和BGV [7]
CKKS[16]在平摊大小和每个明文槽的时间方面是性能最好的方案。他们采用一些类似dft的算法将明文值向量转换为分圆环的元素。

令秘密s∈R的sk = (1, s)。一个基于正则rlwe的密文的形式是ct = (c0, c1)∈R2q,使得内积
μ =〈ct, sk〉(mod q),称为相位,是明文m的随机编码。例如,BFV密文的相位为明文模t的μ = (q/t)·m + e,而CKKS的相位μ = m + e是明文的近似值。

对于同态计算,我们基本上是在给定密文的相位之间进行算术运算。特别地,RLWE密文的同态乘法由两个步骤组成:张量积和重线性化。对于输入的密文ct1和ct2,我们首先计算它们的张量积并返回扩展的密文ct = ct1⊗ct2,它满足〈ct, sk⊗sk〉=〈ct1, sk〉·〈ct2, sk〉。由于sk⊗sk包含非线性项s^2,它需要执行重线性化过程,将扩展密文转换为加密同一消息的规范密文。粗略来说,我们发布一个重线性化密钥,这是一种在秘密密钥  sk 下加密 s^2 的密文,并运行密钥切换算法以进行此转换。

3.2 Basic Scheme

公共参数pp包含一个随机生成的向量a∈Rdq,因此我们假设为公共引用字符串模型。各方应采用相同的公共参数作为密钥生成算法的输入,以支持多密钥同态算法。我们注意到,在之前所有关于MKHE的工作中都做了相同的假设。

单环加密算法是一种可以加密单个环元素的对称加密算法。An uni-encrypted密文D = [d0 |d1 |d2]←UniEnc(μ;s)在Rdq中由三个向量组成,所以它是Rq 2d×2中普通RGSW密文的(3/4)倍大。对于一个单一加密的密文 D,前两列[d0 |d1] 可以看作是秘密 s下对 r 的加密,而[d2 | − a]则形成了对明文μ在秘密 r 下的加密。

安全。在参数为(n,q, χ,ψ)的RLWE假设下,该方案是IND-CPA安全的。我们通过展示分布来证明它

3.3 Relinearization

我们重新审视了扩展密文的重线性化过程,并提出了两种具有不同优点的解决方案。我们回想起两个多密钥密文cti∈Rk+1 q的张量积ct = ct1⊗ct2在级联密钥可以看作是张量平方秘密sk⊗sk对应的密文。注意sk⊗sk包含一些非线性项si·sj涉及两个不同的方。因此,计算服务器应该能够通过线性化非线性项si·sj将扩展密文ct∈R(k+1)×(k+1) q转换为标准密文。

我们的重线性化方法需要由各方生成的相同的公共材料(评估密钥),如下所示:

• EvkGen(s): Given the secret s ∈ R, return D ← UniEnc(s; s).

准确地说,每一方i通过运行算法(si, bi)←KeyGen(pp)和Di←EvkGen(si)生成自己的秘密、公共和评估密钥,然后发布这对(bi,Di)。在本节的其余部分,我们将介绍两种线性化算法,并解释它们的优缺点。

由于评估密钥是秘密s自身加密的统一加密,我们做了一个额外的循环安全性假设。然而,我们强调,我们的假设并不比HE方案[16,17,22,27]中的假设更强,HE方案需要对密文进行自助或重线性化。

3.3.1 First Method.

该解决方案包括一个预处理步骤,该步骤生成与相关方集合对应的共享线性化密钥。一个共享的线性化密钥由1≤i,j≤k的所有对的si·sj加密组成。然后,我们可以应用标准的密钥交换技术对扩展密文进行线性化。

这种方法类似于之前的工作[13,41]中提出的方法,该方法也生成一个共享评估密钥。然而,该方案的共享重线性化密钥的每个元素都是由至多两方的公开信息计算出来的,因此每个元素由三个向量组成,而之前基于多密钥GSW方案的共享重线性化密钥的每个元素都是O(k)维的。

密文转化,这里处理的ct是同态操作后的ct

3.3.2 Second Method.

我们的第二个解决方案不会生成与前一个不同的共享重线性化密钥。该算法直接将扩展密文ct = (ci, j)0≤i, j≤k的每一项ci, j递归地乘上bj和Di,线性化。

下一节我们将分析和比较两种重线性化方法。简而言之,第二种方法在存储和噪声增长方面具有优势,而第一种方法在重复使用共享评估密钥重新线性化对应于同一组参与者的多个密文时可以更快。我们首先证明第二种方法的正确性。

3.3.3 Performance of Relinearization Algorithms.

假设一次多密钥计算涉及k个不同的参与方。为了重新线性化扩展密文ct = (ci, j)0≤i, j≤k∈R(k+1) 2q,两种重线性化方法都对每个ci, j重复一些计算,将其对应的秘密信息si·sj转换为(1,si, sj)。因此,我们将专注于每个解决方案的单个步骤(i, j),以比较它们的性能。

在我们的第一种方法中,计算方生成一个共享的重线性化密钥Ki, j并使用它线性化一个输入扩展密文。Ki, j的生成包含d × d和d × 2矩阵的乘法,因此其复杂度为2d^2次多项式乘法。而Alg. 1步骤6中g−1(ci, j)·Ki, j的计算只需要3d多项式乘法。

第二种方法不需要任何预处理,只需要Alg. 2的一次迭代就需要进行4d多项式乘法。因此,当使用预先计算的共享重线性化密钥对同一组参与者(或其子集)执行多个同态算法时,第一种方法可以快(4/3)倍,然而,与第二种方法的线性内存相比,所需的存储空间在k上呈二次曲线增长。

第二种方法在噪声管理方面也有优势,下面将与modulus raising technique一起讨论。

3.3.4 Special Modulus Technique.

噪声增长是决定参数大小进而决定密码系统整体性能的主要因素。通常,我们可以使用较大的分解度d来降低分解向量g−1(·)的大小以及密钥切换误差,但这种简单的方法会导致性能下降。此外,随着d值的增加,噪声增长和计算复杂度之间权衡的好处会越来越小。因此,当噪声较小时,这种方法并不是最佳选择。

[27,38]中提出的特殊模(又称模提升)技术是一种有吸引力的解决方案,以较小的开销来解决这个噪声问题。该方法将密文模从q提升到pq,并对一个整数p进行模约简,从而将密文模从q提升到pq,然后计算Rpq上的密钥交换过程,并将模约简回q。我们将这种技术应用于重线性化和加密算法。特别地,一个特殊的模重线性化变体需要两个顺序的模切换操作(详见附录a)。

我们建议读者参阅附录C,其中提供了基于多项式系数方差的噪声分析,但我们在本节中给出了一个简明的总结。
设u是Rq上的均匀随机变量。我们考虑它的分解g−1(u),并用Vg表示其系数方差的平均值。我们分别从第一种和第二种方法中估计再线性化误差的方差:

此外,第二种方法的特殊模量变体实现了较小的噪声,其方差为

与第一种方法相比,我们的第二种解决方案在实践中具有显著的优势,因为我们可以在获得相同水平的噪声增长的同时,使用具有小d的高效分解方法。此外,当我们引入一个可以抵消V2项的特殊模p时,它的模提升变体获得了一个更小的误差方差,几乎不受分解大小的影响,因为V’2由第二项(舍入误差)支配。

4 TWO MKHE SCHEMES WITH PACKED CIPHERTEXTS

在本节中,我们将介绍BFV[6, 22]和CKKS[16]方案的多密钥变体。它们共享以下设置和密钥生成阶段,但对消息编码和同态操作有不同的算法。

我们的MKHE方案的加密、解密和同态算法将在接下来的小节中描述。在密文之间执行同态操作时,我们有一个常见的预处理过程。对于给定的密文,我们表示k≥max{k1, k2}参与ct1或ct2的方数。我们重新排列cti中的条目,并在空条目中添加零,从而生成若干密文ct∗i 共享相同秘密sk =

为简单起见,我们假设预处理总是在同态算术之前完成,以便两个输入密文与相同的k方集相关。

gpt翻译:

这段话描述了在多密钥同态加密(Multi-Key Homomorphic Encryption, MKHE)中,如何对多个参与方加密的密文进行同态运算的预处理步骤。为了保证同态运算的正确性和一致性,必须将每个密文的形式进行标准化,确保它们能够兼容多个不同的参与方。这一过程可以分为以下几个关键点来理解:

1. 多密钥场景

在 MKHE 中,不同参与方各自生成密钥并加密数据。每个密文都可能与不同的密钥(参与方)相关联。例如,一个密文可能是参与方 A 和 B 的数据加密,而另一个密文可能涉及参与方 C 和 D。为了对这些密文进行同态运算,必须处理它们涉及的不同密钥。

2. 密文的扩展和标准化

为了解决不同密钥的兼容性问题,这里引入了一个扩展和填充的过程。原始的密文 cti\text{ct}_icti​ 可能只有部分参与方的密钥关联,形式为 cti=(c0,c1,…,cki)\text{ct}_i = (c_0, c_1, \dots, c_{k_i})cti​=(c0​,c1​,…,cki​​)。为了使密文在后续运算中能够使用所有参与方的密钥,需要将它扩展为与完整的密钥集 sk=(1,s1,…,sk)sk = (1, s_1, \dots, s_k)sk=(1,s1​,…,sk​) 兼容的密文 cti∗\text{ct}_i^*cti∗​,其中 kkk 是所有参与方的总数。通过对密文填充 0 的方式,确保原密文中的每个条目对应于适当的密钥位置,其余位置则为 0。

3. 内积保持不变

在预处理后,尽管密文形式发生了改变(即从 cti\text{ct}_icti​ 变成了 cti∗\text{ct}_i^*cti∗​),但内积的计算结果不变。也就是说,预处理后的密文与对应的密钥集计算出来的值与原来的密文计算出的值是相同的。这确保了在标准化后的密文仍然可以正确解密,并与原始的密文内容保持一致。

4. 简化同态运算

经过预处理之后,所有密文都使用了相同的密钥集,因此可以直接进行同态加密操作,而无需再考虑每个密文对应的参与方差异。这一步简化了同态运算的流程,提高了算法的通用性和效率。

总结

这段话的核心是描述在 MKHE 方案中,为了在不同密钥的密文之间进行同态运算,如何通过标准化处理(填充 0)使得密文可以与所有参与方的密钥兼容。这种标准化确保了后续运算的正确性,同时使同态运算过程更加简单和一致。

安全性和正确性。在参数为(n,q, χ,ψ)的RLWE假设下,BFV和CKKS是INDCPA安全的。MKHE方案具有完全相同的单钥加密算法,因此其安全性依赖于同一RLWE问题的困难性(详见附录B)。我们将在本节中简要地说明我们的方案的正确性,但包含噪声分析的严格证明将在附录C中提供。

4.1 Multi-Key BFV

BFV格式[6,22]是一种尺度不变格式,它支持在具有有限特性的离散空间上的精确计算。我们用t表示明文模,Δ =⌊q/t⌉是BFV方案的比例因子。原始明文空间是分圆多项式Rt的集合,但根据t与n[48]的关系,通过与Rt的一个环同构,明文被解码为有限域元素的元组。

从基本BFV和线性化算法的性质验证了该方案的正确性。m∈Rt的多密钥BFV加密是一个向量这样〈ct, sk〉≈Δ·m (mod q)对于秘密sk = (1,s1,…))。

4.2 Multi-Key CKKS

CKKS方案[16]是一种支持近似定点运算的分级HE方案。我们假设q = ÎL i=0 pi对于某些整数pi具有模i q0 < q1 <···< qL对于qℓ= Îℓi=0 pi的密文链。该明文是一个∈R的小多项式,但通过DFT可以在一个多项式中装入最多(n/2)个复数。除了基本的算术运算外,它还支持缩放算法来控制加密消息的大小。对于不同级别密文之间的同态运算,需要将高级别密文转换为具有相同级别的密文。

A level-ℓ明文m对秘密sk = (1, s1,…, sk)为向量ct = (c0, c1,…, ck)∈Rk+1 qℓ满足〈ct, sk〉≈m (mod qℓ)。对于基本同态运算,我们以m1和m2的ℓ加密作为输入级。然后,同态加法(resp;乘法)返回密文ct′ such that [〈ct′, sk〉]qℓ近似等于m1 +m2 (resp。m1m2)。最后,我们表明,对于m的level-ℓ加密ct,重缩放算法从等式[〈ct ', sk〉]qℓ−1≈p−1ℓ·[〈ct, sk〉]qℓ中返回级别(ℓ−1)加密p−1ℓ·m的密文ct '。

4.3 Distributed Decryption

在经典的MKHE原语定义中,解密一个多密钥密文需要涉及各方的所有秘密。然而,在实际应用中,假设有一方持有多个密钥是不合理的。相反,我们可以考虑几个密钥拥有者之间联合解密密文的协议。我们的方案的解密算法是已知系数秘密的(近似)线性组合,并且已经提出了一些安全的方法来完成这项任务。我们介绍了一种基于噪声淹没技术的简单解决方案,但可以使用任何实现相同功能的安全解决方案。

分布式解密由两个算法组成:部分解密算法和合并算法。在第一阶段,每一方i收到第i个密文条目,并使用噪声对其进行解密。我们设置噪声分布ϕ的方差比基本方案的标准误差分布ψ的方差大。然后,将部分解密的结果与c0进行合并以恢复消息。(联合解密)

5 BOOTSTRAPPING FOR TWO MKHE SCHEMES

关于标准的(单键)环HE方案[9,12,14,25,32]的bootstrapping过程已经有了一些研究。以往的工作根据底层方案的不同有不同的目标和解决方案,但基本遵循Gentry的[24]技术——解密电路的同态计算。特别地,BFV和CKKS方案具有非常相似的bootstrapping流程,包括四个步骤:(1)模数提高,(2)Coeff到Slot,(3)提取和(4)Slot到Coeff。第二步也是最后一步是特定的线性变换,需要对加密后的向量进行旋转操作。

在本节的其余部分中,我们首先介绍如何基于伽罗瓦自同构的评估对多密钥密文进行旋转操作。重新审视了BFV和CKKS的bootstrapping过程,以将现有的解决方案推广到我们的MKHE方案。

5.1 Homomorphic Evaluation of Galois Automorphisms

5.2 Bootstrapping for Multi-Key BFV

5.3 Bootstrapping for Multi-Key CKKS

6 IMPLEMENTATION

我们提供了一个概念验证的实现来展示MKHE方案的性能。我们的源代码是用c++开发的Microsoft SEAL version 3.2.0[47],其中包括BFV和CKKS实现。本节总结了我们的优化技术、推荐的参数集和一些实验结果。最后,我们应用多密钥CKKS方案对加密数据上的加密神经网络模型进行评估,并在MNIST数据集[40]上对手写图像进行分类。所有实验都是在一台ThinkPad P1笔记本电脑上进行的:Intel Xeon e- 2176 @ 4.00 GHz单线程,32gb内存,用GNU c++ 7.3.0 (-O2)编译。在实现中,我们将秘密分布χ设为R中系数为{0,±1}的多项式集合上的均匀分布。误差e←ψ的每个系数都是根据以0为中心的离散高斯分布绘制的,标准差σ = 3.2

6.1 Optimization Techniques

6.1.1基础优化。

在重线性化过程中,我们首先计算张量平方秘密sk⊗sk对应的两个密文的张量积,它在(i, j)和(j, i)有重复项,因此可以将它的维数从(k +1)^2降至1/2k (k +1)。重线性化密钥的大小和算法的复杂度几乎减半。此外,sk⊗sk的每个对角线元素si^2都依赖于一方,因此我们可以在生成评估密钥时包含si^2的密钥交换密钥。它增加了求值键的大小,但降低了重线性化的复杂度和噪声。

6.1.2 RNS and NTT.

我们的方案是在环形结构Rq上设计的,因此需要对基的多项式算法进行优化。有一个众所周知的技术可以通过取密文模来使用RNS, pi是互质整数的乘积。基于环同构(mod pi))0≤i≤L,实现了Rq上多项式算法的渐近/实用改进。特别是,研究了如何设计BFV和CKKS的全RNS变体[4,15,30],它们不需要任何RNS转换。此外,可以适当地选择每一个基本素数,从而存在一个单位模的(2n)次根。它允许我们利用一个有效的数论变换(NTT)模pi。我们的实现采用了这些技术来提高多项式运算的速度。

6.1.3 Gadget Decomposition.

如前所述,小工具分解对同态算法的性能有重要影响。Bajard等[4]观察到公式可以用来构建一个rns友好的分解用小工具向量g = (gi)i。我们采用这种分解方法,并利用基于RNS的实现,将密文存储在RNS形式中。

在[4,30]中,作者进一步将该方法与经典的数字分解方法相结合,以提供对复杂度和噪声增长之间权衡的更细粒度的控制。然而,我们意识到这种混合方法将分解程度(以及空间和计算复杂度)提高了几倍,而3.3.4节描述的特殊模技术提供了更好的权衡。因此,在我们的实现中没有使用数字分解

6.2 Micro-benchmarks for MKHE Schemes

表2给出了实验中选取的参数集。它们是Microsoft SEAL的默认参数集,根据LWE-estimator[3]和安全标准[2]提供至少128位的安全级别。密钥生成时间、密钥大小、加密执行时间与单密钥BFV和CKKS算法相同。解密和密文加法的时间是普通HE方案的1/2(k +1)倍。我们注意到公钥和评估密钥{(bi,Di)}1≤i≤k的生成时间和大小不依赖于参与者或方案的数量,因为生成可以同步执行。

在我们的实验中,同态乘法之后总是一个重线性化过程。与CKKS相比,BFV在执行这些操作时需要更多的NTTs,因此速度较慢,从时序结果可以看出这一点。如3.3节所述,在两个MKHE方案中,乘法的执行时间都是关于参与方数量的渐近二次型。如表3所示,在实践中,它们比二次多项式要好。这是因为乘法和重线性化都包含了一个显著的计算部分,其参与者的数量是线性的。如5.1节所述,Galois自同态计算的执行时间几乎与参与方的数量成线性关系。

对于表3中的单方场景,我们使用特殊的模量测量了修改后的Microsoft SEAL[47]的性能。将普通的BFV和ckk与它们的多密钥变体进行公平的比较是不可行的,因为对一个方案的性能可以从空间/时间复杂度、噪声增长、功能性等多个角度进行分析。它只是作为一个参考点,用于在不同处理器上对MKHE进行更可移植的估计。

6.3 Application to Oblivious Neural Network Inference

Jiang等人[34]提出了一种新的框架,用于在单密钥场景下对加密数据进行加密神经网络测试。我们考虑相同的服务范例,但采用多密钥设置:数据和训练模型在不同的密钥下加密。

6.3.1 Homomorphic Evaluation of CNN..

本文提出一种有效的策略来评估MNIST数据集上的CNN预测模型。每个图像都是一个28 × 28像素的数组,在任意数量的隐藏层后将被标记为10个可能的数字。我们假设神经网络是用明文数据集训练的。表4描述了我们的神经网络拓扑结构,它使用一个卷积层和两个具有方形激活函数的全连接(FC)层。最后一步是应用softmax激活函数进行概率分类,因此在预测阶段获得输出最大值的索引就足够了。我们的目标是以有效的方式预测单个图像,从而实现低延迟。在附录D中,我们将详细描述用于加密和评估的算法。

卷积层。正如[35]中所指出的,步长卷积可以分解为简单卷积的和(即步长参数= 1)。从我们对参数的选择来看,每个这样的简单卷积将14 × 14的图像和2 × 2的滤波器作为输入。这种表示方式允许更多的SIMD并行,因为我们可以将所有输入打包到一个密文中,并并行执行四个简单的卷积。完成后,我们可以使用[31]中的旋转和求和操作将结果累积到明文槽中。此外,我们可以像[35,Section VI.D]那样将多个通道打包在一个密文中,得到卷积结果的全打包密文。

第一个方块层。该步骤将平方激活函数以SIMD方式应用于卷积层的所有加密输出

FC-1层。通常,具有ni输入且无输出的FC层可以计算为矩阵向量乘法。令w and v分别为no × ni权重矩阵和ni -长度向量。我们假设在FC层中,ni和no都小于明文时隙数,而no远小于ni。Halevi和Shoup[31]提出了对角编码方法,该方法将一个方阵按对角顺序排列,每个方阵乘以输入向量的一个旋转,然后将所有输出向量累加得到结果。Juvekar et al.[35]将该方法扩展为将向量乘以矩形矩阵。如果用单条密文对输入向量进行加密,旋转和算法的总复杂度为:无同态乘法、输入密文v的旋转(no−1)和log(ni /no)旋转。

我们扩展了他们的想法,将原始矩阵划分为更小的块,并在图2所示的子矩阵上进行计算。假设向量v被分成ℓ许多相同长度的子串。为了简单起见,我们考虑W的第一个ℓ行。我们首先应用对角线方法来安排W的1 × (ni /ℓ)大小的子矩阵,在同态乘法后,中间数在多个槽中对齐在相同的位置。准确地说,对角线分量的加密乘以ℓ加密向量的旋转,并将所有这些加密加在一起,类似于对角线方法。然后,输出密文表示(ni /ℓ)大小的ℓ块,每个块包含ni输入的ℓ项的部分和。最后,我们可以使用具有log(ni /ℓ)旋转的旋转和和算法来累积这些。因此,输出密文加密了Wv的第一个ℓ多个条目。我们对W的每ℓ多行重复这个过程,得到(no/ℓ)密文。

当ni显著小于明文时隙数ns时,可以通过将输入向量的多个副本打包成一个密文并并行执行上述操作(ns /ni)来提高性能。计算代价为同态乘法(no·ni)/ns,输入密文v的旋转次数(ℓ−1),旋转次数(no·ni)/(ns·ℓ)·log(ni /ℓ)。我们在附录d - 2中提供了更多细节。因此,该方法在相同输入密文上的旋转(可以受益于[33]的提升优化)和不同密文上的旋转(无法受益于提升优化)之间进行权衡。

如图2所示,除结果分量对应的槽外,所有槽都可以揭示部分和的信息。因此,我们将输出的密文乘以一个恒定的0 - 1明文向量来删除信息。

第二个方块层。该步骤将square激活函数应用于FC第一层的所有输出节点。

FC-2层。该步骤对权重较小的矩阵U和向量v进行乘法运算。正如在[31]中讨论的那样,它可以被认为是U的列与v的系数的线性组合。假设列向量以一种与加密向量对齐的方式在单个密文中加密。我们首先重复旋转向量的加密,以生成单个密文,每个条目都没有副本。然后,应用纯SIMD乘法,并行地将每个列向量乘以相应的标量;最后,我们在这些槽上聚合所有结果列以生成最终输出。

6.3.2 Performance Evaluation.

评估了所提出的框架,以对MNIST数据集的加密手写图像进行分类。我们使用keras[18]库和Tensorflow[1]从数据集的60,000张图像中训练CNN模型。利用多密钥CKKS方案的特殊模变体实现近似计算的高效性。网络的每一层都有一个同态乘法的深度(除了第一层FC层为了乘法掩码需要多一个深度),因此CNN的评估需要6层。为了应对这种计算水平,我们从表2中选择了参数Set-II。数据所有者从MNIST数据集中的10,000个测试图像中选择一个,通过除以最大值255对其进行归一化,并使用公钥将其加密为单个密文,这需要1.75 MB的空间。同时,模型提供者为训练好的模型生成了相对大量的密文:4个用于多通道8个用于FC-1层的权重矩阵,每个用于其他权重或偏差。因此,输出密文的总大小为18.5 MB,加密训练好的模型所需的时间大约是图像的7倍,但在数据外包之前,这是一个一次性的过程,因此开销可以忽略不计。评估后,云服务器输出关于数据和模型所有者的扩展密钥的预测结果的单条多密钥密文。表5展示了CNN评估的运行时间。使用预训练模型对图像进行分类大约需要1.8秒。我们的参数保证了小数点后至少32位的精度。即加密求值与明文计算之间的无穷范数距离被限制在2−32之内。因此,我们有足够的空间使用噪声洪泛技术进行解密。在测试集上取得了98.4%的准确率,与在clear评测中得到的结果相当。

6.3.3 Comparison with PreviousWorks.

在表6中,将基准结果与最先进的oblivious神经网络推理框架进行了比较:CryptoNets[29]、MiniONN[42]、Gazelle[35]和E2DM[34]。第一列表示框架,第二列表示用于保护隐私的密码原语。最后一列给出了图像分类的运行时间以及每个实例的摊销时间。在上述私有神经网络预测解决方案中,E2DM依赖于第三方机构持有HE的密钥,因为数据和模型在同一个密钥下。CryptoNets具有良好的平摊复杂度,但其单次预测的延迟较高。MiniONN和Gazelle具有良好的延迟,但它们要求协议执行过程中双方都在线,并且至少有一方执行与所评估函数的复杂度成正比的本地工作。此外,放缩的轮数的数量与神经网络中MiniONN和Gazelle的层数成比例。另一方面,我们的解决方案的轮数是常数。

此外,该方案允许各方将同态计算外包给一个不可信的服务器(例如具有强大计算能力的云端虚拟机),因此双方只需支付加/解密成本,且通信成本仅随输入/模型的大小而变化,而不随网络本身的复杂程度而变化。这一特性之所以成为可能,是因为我们的方案支持多密钥操作。注意,我们只假设服务器是半诚实的:我们不需要非合谋假设,因为即使服务器与一方合谋,由于MKHE的IND-CPA安全性,它们也无法获知另一方的私有输入。本文工作在不经意机器学习推理的设计空间中提出了一个有趣的观点。最后但并非最不重要的是,由于使用混淆电路,MiniONN和Gazelle的通信成本与神经网络中的激活节点数量呈线性扩展。在我们的例子中,密文和公开/评估密钥的大小只取决于神经网络的层数和输入节点的数量。因此,我们的解决方案渐进地提高了通信规模的效率。

7 CONCLUSION

给出了实用的BFV和CKKS方案的多密钥变体及其bootstrapping方法。通过实现该方案,给出了MKHE在密文压缩情况下的第一个实验结果。主要的技术贡献是提出了新的重线性化算法,与之前的工作[13,41]相比,取得了更好的性能。最后,通过对一个加密分类器在两种不同密钥下的加密数据进行评估,证明了该方案可以应用于安全的在线预测服务。在MNIST数据集上训练的cnn上实现了该协议,并表明它可以通过利用优化的同态卷积和同态矩阵-向量乘法来实现低端到端延迟。

Homomorphic Encryption-based PIR(Private Information Retrieval)算法是一种保护隐私的数据检索算法。它通过将数据分散储存在多个不同的数据库中,使得单个数据库无法得到完整的数据,进而保证数据的安全性和隐私性。 以下是一个使用Python实现Homomorphic Encryption-based PIR算法的示例代码: ```python import random from phe import paillier # 初始化密钥 public_key, private_key = paillier.generate_paillier_keypair() # 定义数据集 data_set = [random.randint(0, 100) for _ in range(10)] # 对数据集进行加密 encrypted_data_set = [public_key.encrypt(x) for x in data_set] # 随机选择一个数据项进行查询 index = random.randint(0, len(encrypted_data_set) - 1) # 生成查询向量 query_vector = [public_key.encrypt(0) for _ in range(len(encrypted_data_set))] query_vector[index] = public_key.encrypt(1) # 对查询向量进行加密 encrypted_query_vector = [private_key.raw_encrypt(x) for x in query_vector] # 对加密后的查询向量和数据集进行点乘操作 result = sum([encrypted_data_set[i] * encrypted_query_vector[i] for i in range(len(encrypted_data_set))]) # 解密查询结果 decrypted_result = private_key.decrypt(result) print("查询结果:", decrypted_result) ``` 在这个示例中,我们使用了Python的PHE库来实现Paillier公钥加密算法,并且使用随机生成的数据集进行演示。我们首先生成Paillier加密算法的公钥和私钥,然后对数据集中每个数据项进行加密。接着,我们随机选择一个数据项进行查询,并生成一个查询向量进行加密。最后,我们对加密后的查询向量和数据集进行点乘操作,得到查询结果,并使用Paillier私钥进行解密,得到最终的查询结果。 需要注意的是,这个示例只是一个简单的演示,实际应用中需要根据具体的需求进行适当的修改和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值