-
在云计算中,由于数据如何在云中存储对用户来说是不透明的,因此,用户常常担心其存储在云中数据的安全性。虽然可以通过认证、授权、访问控制等传统数据安全方法来保护存储数据,但这些都是建立在云服务提供商是可信任基础上的,而云服务提供商并不都像用户所希望的那样值得信任。2013年的棱镜门事件,就是这样一个侵犯云安全的典型案例。当云存储提供商不那么可信时,保障云安全的一种方法,是对所有的云数据进行加密,但加密限制了数据的使用,特别是查询和索引数据会变得异常困难。因此,如何在云计算环境下进行密文检索是一个具有挑战性的问题。
密文检索的另一重要问题是多关键字排序。从云中检索返回的大量文档,需要进行相关性排序,使用户快速找到最相关的k个结果(top-k检索)。另一方面,由于单一的关键字搜索往往会产生过于粗糙的结果,为提高搜索结果的准确性以及提升用户搜索体验,还需支持多个关键字的搜索。现在网络搜索引擎(如:谷歌)的通常做法是,用户提供一组关键字来检索最相关的数据。对于多关键字排序的检索,常常采用坐标匹配[1]的原则,即尽可能多的匹配,来度量相似性。在具体实现中,内积相似性是最常用的一种方法,已被广泛用于在云计算环境下的密文top-k检索。
在云计算的密文top-k检索中,通过云存储文档的特征向量$\mathbf{V}=({{V}_{1}},{{V}_{2}},\cdots ,{{V}_{l}})$和用户查询向量$\mathbf{W}=({{W}_{1}},{{W}_{2}},\cdots ,{{W}_{l}})$中的各个坐标尽可能多的匹配,来返回最相似的k个文档。如何度量这种相似性?一种最常用的方法是计算特征向量和查询向量的内积$<\mathbf{V},\mathbf{W}>=\sum\limits_{i}{{{V}_{i}}\cdot {{W}_{i}}}$,内积大者更相似。为了保护
用户的隐私,无论是特征向量V和查询向量W都应该加密。然而加密限制了数据的使用,云服务器很难采用传统的加密方法来安全计算内积。而全同态加密(fully homomorphic encryption,FHE)在不解密的情况下能够直接基于密文计算[2-7]。于是一些学者使用全同态加密的方法来安全计算两个密文向量内积。
-
本文使用基于格上的环上错误学习问题(learning with errors over ring,RLWE)的同态加密方法,安全高效地计算两个高维向量的内积。其主要思想是用户首先将明文向量的所有坐标打包到一个密文里,然后云服务器以单指令多数据流(simple instruction multiple data,SIMD)的方式并行计算两个向量的内积。方案具体包括3个部分:基于RLWE的Somewhat同态加密方案的构造、打包和SIMD并行化技术和安全内积计算。
-
本文基于RLWE来构造Somewhat同态加密方案,该方案基于方案SHE(somewhat homomorphic encryption)[11]上为多项式时间算法的六元组(Setup,KeyGen,Enc,Dec,Add,Mult),具体描述如下:
参数设置(SHE.Setup):根据输入的安全参数$\lambda $,建立多项式环R和离散高斯分布$X$。设多项式${{x}^{n}}+1$的次数$n=n(\lambda )$,离散高斯分布$X=X(\lambda )$,使得RLWE问题对已知格攻击是${{2}^{\lambda }}$级安全的。令$R=\mathbb{Z}[x]/({{x}^{n}}+1)$,明文空间为${{R}_{2}}={{\mathbb{Z}}_{2}}[x]/({{x}^{n}}+1)$,密文空间则为${{R}_{q}}={{\mathbb{Z}}_{q}}[x]/({{x}^{n}}+1)$,输出公共参数$\text{params}=(q,n,X)$。
密钥生成(SHE.KeyGen):在高斯分布X上随机选择一个元素$s\leftarrow X$作为私钥,然后在${{R}_{q}}$上随机均匀选取一个元素${{a}_{1}}\leftarrow {{R}_{q}}$,同时在高斯分布X上随机选取一个差错$e\leftarrow X$,计算${{a}_{0}}=-{{a}_{1}}s+2e$。令私钥$\text{sk}=s$,公钥$\text{pk}=({{a}_{0}},{{a}_{1}})$。
加密(SHE.Enc):给定单比特消息$m\in \{0,1\}$,在高斯分布X上分别随机选取元素$u\leftarrow X$和元素$r\leftarrow X$,根据公钥$\text{pk}=({{a}_{0}},{{a}_{1}})$分别计算出密文${{c}_{0}}={{a}_{0}}u+m$与${{c}_{1}}={{a}_{1}}u+2r$,输出密文$c=({{c}_{0}},{{c}_{1}})$。
解密(SHE.Dec):根据给定的密文$c=({{c}_{0}},{{c}_{1}})$,利用私钥$\text{sk}=s$,计算出${m}'=(({{c}_{0}}+{{c}_{1}}s)\bmod q)\bmod 2$。
求和(SHE.Add):输入两个密文${{c}_{1}},{{c}_{2}}$,输出这两个密文的和${{c}_{1}}+{{c}_{2}}$。
乘积(SHE.Mult):输入两个密文${{c}_{1}},{{c}_{2}}$,输出这两个密文的乘积${{c}_{1}}\times {{c}_{2}}$。
-
文献[12]在基于理想格的全同态加密方案引入了打包和单指令多数据流(simple instruction multiple data,SIMD)方法,本文将该方法用于上述基于RLWE的SHE方案中,具体过程描述如下。
分解明文空间${{R}_{2}}={{\mathbb{Z}}_{2}}[x]/({{x}^{n}}+1)$:虽然多项式${{x}^{n}}+1$在$\mathbb{Z}$上是不可约的,但可选择合适的n值,使${{x}^{n}}+1$在${{\mathbb{Z}}_{2}}$上是可约的。由此,将其分解为${{x}^{n}}+1={{f}_{1}}(x){{f}_{2}}(x)\cdot \cdot \cdot {{f}_{l}}(x)$,其中${{f}_{i}}(x),i=1,2,\cdots ,l$的次数为$d=n/l$。于是明文空间被分解为l个明文槽:${{\mathbb{Z}}_{2}}[x]/({{x}^{n}}+1)={{\mathbb{Z}}_{2}}[x]/({{f}_{1}}(x))\times {{\mathbb{Z}}_{2}}[x]/({{f}_{2}}(x))\times \cdot \cdot \cdot \times {{\mathbb{Z}}_{2}}[x]/({{f}_{l}}(x))$。即在原来的明文空间中,明文$m(x)$是${{R}_{2}}$上的多项式,有n个比特,通过中国剩余定理(Chinese remainder theorem,CRT),$m(x)$可被分解为:${{m}_{1}}(x),{{m}_{2}}(x),\cdots ,{{m}_{l}}(x)$,分别对应到l个明文槽${{\mathbb{Z}}_{2}}[x]/({{f}_{1}}(x)),{{\mathbb{Z}}_{2}}[x]/({{f}_{2}}(x)),\cdots ,{{\mathbb{Z}}_{2}}[x]/({{f}_{l}}(x))$,对每个${{m}_{i}}(x),i=1,2,\cdots ,l$,均有d个比特。令明文$m(x)$对应的密文为$c(x)$,通过这种方式,可将l个明文${{m}_{1}}(x),{{m}_{2}}(x),\cdots ,{{m}_{l}}(x)$打包到一个密文$c(x)$。
在对打包后的密文进行操作时,加同态和乘同态能在这些明文槽上并行地执行,这样极大地减轻了计算量。具体过程为:令一个打包后的密文为$c(x)$, 对应在l个明文槽的明文分别为${{m}_{1}}(x),{{m}_{2}}(x),\cdots ,{{m}_{l}}(x)$,令另一个打包后的密文为${c}'(x)$,对应在l个明文槽的明文则分别为${{{m}'}_{1}}(x),{{{m}'}_{2}}(x),\cdots ,{{{m}'}_{l}}(x)$,加同态SHE. Add$(c,{c}')$对应在各个明文槽的明文就分别为:${{m}_{1}}(x)+{{{m}'}_{1}}(x),{{m}_{2}}(x)+{{{m}'}_{2}}(x),\cdots ,{{m}_{l}}(x)+{{{m}'}_{l}}(x)$,可以得到乘同态SHE. Mult$(c,{c}')$对应在各个明文槽的明文为:${{m}_{1}}(x)\times {{{m}'}_{1}}(x)\bmod {{f}_{1}}(x),{{m}_{2}}(x)\times {{{m}'}_{2}}(x),\bmod {{f}_{2}}(x),\cdots ,{{m}_{l}}(x)\times {{{m}'}_{l}}(x)\bmod {{f}_{l}}(x)$。因此同态操作可以看成是在明文槽上使用SIMD并行执行的。
自同构映射能使对应在各个明文槽的明文发生置换:当明文为$m(x)$,其对应在各个明文槽的明文就分别为${{m}_{1}}(x),{{m}_{2}}(x),{{m}_{3}}(x),\cdots ,{{m}_{l}}(x)$,Frobenius自同构映射$m(x)$,使$m(x)\to m({{x}^{{{2}^{i}}}})$明文槽循环移动i个明文槽。如,当$i=1$时,$m(x)$的明文槽就循环移动1个位置,其对应于各个明文槽的明文就发生变化,变更为${{m}_{2}}(x),{{m}_{3}}(x),\cdots ,{{m}_{l}}(x),{{m}_{1}}(x)$。因此,就可以通过操纵相应的密文$c(x)$,并利用密钥更新的技巧 (密钥$s({{x}^{k}})$从更新为$s(x)$),使各个明文槽中的明文发生置换。
-
如前所述,基本方案只能对向量中的每一个坐标分别进行加密。本文将向量打包成一个单一的密文,再以SIMD并行的方式计算两个向量的内积。计算内积的过程如下:
1) 系统选择合适的参数n和l,使得明文空间${{R}_{2}}={{\mathbb{Z}}_{2}}[x]/({{x}^{n}}+1)$分解为l个明文槽${{\mathbb{Z}}_{2}}[x]/({{f}_{1}}(x)),{{\mathbb{Z}}_{2}}[x]/({{f}_{2}}(x)),\cdots ,{{\mathbb{Z}}_{2}}[x]/({{f}_{l}}(x))$,其中${{f}_{i}}(x),i=1,2,\cdots ,l$的次数为$d=n/l$;
2) 用户A拥有向量V,对于l维向量$\mathbf{V}=({{V}_{1}},{{V}_{2}},\cdots ,{{V}_{l}})\in {{\mathbb{Z}}^{l}}$,将${{V}_{i}}$分别编码为${{m}_{i}}(x)$,其中,$i=1,2,\cdots ,l$;
3) 通过中国剩余定理将${{m}_{i}}(x)$打包为$m(x)$,并调用加密算法得到$V(x)\leftarrow \text{SHE}\text{.Enc(}pk,m(x)\text{)}$;
4) 类似地,用户B通过同样步骤将l维向量$W=({{W}_{1}},{{W}_{2}},\cdots ,{{W}_{l}})\in {{\mathbb{Z}}^{l}}$打包到$W(x)$,本文以用户A将向量V打包为$V(x)$为例,具体过程如图 1所示;
5) 云服务器调用SHE.Mult$\text{(}V(x),W(x)\text{)}$,如表 1所示,这一步相当于以SIMD的方式并行计算${{V}_{1}}(x)\times {{W}_{1}}(x)\bmod {{f}_{1}}(x),{{V}_{2}}(x)\times {{W}_{2}}(x)\bmod {{f}_{2}}(x),\cdots ,{{V}_{l}}(x)\times {{W}_{l}}(x)\bmod {{f}_{l}}(x)$;
表 1 基于SIMD并行计算$\{{{V}_{i}}\cdot {{W}_{i}},1\le i\le l\}$
打包后的密文 对应于各自空间的明文 ${V}'(x)$ $({{V}_{1}}(x),{{V}_{2}}(x),\cdots ,{{V}_{l}}(x))$ ${W}'(x)$ $({{W}_{1}}(x),{{W}_{2}}(x),\cdots ,{{W}_{l}}(x))$ 乘同态${V}'(x){W}'(x)$ $\begin{matrix} ({{V}_{1}}(x){{W}_{1}}(x)\bmod {{f}_{1}}(x),({{V}_{2}}(x){{W}_{2}}(x)\bmod {{f}_{2}}(x),\cdots , \\ {{V}_{l}}(x){{W}_{l}}(x)\bmod {{f}_{l}}(x)) \\ \end{matrix}$ 6) 对上一步的结果调用$\log l$个Frobenius自同构映射以及$\log l$个同态加法,同态评估得到$c(x)$,其对应的明文为$m(x)$;
7) 通过调用算法SHE.Dec$\text{(sk},c(x)\text{)}$,计算出$m(x)$为:$m(x)=\sum\limits_{i=1}^{l}{{{V}_{i}}(x)}\cdot {{W}_{i}}(x)$;
8) 令x=2,代入$m(x)$,得到$<V,W>$。
-
将本文方案和已有的两个基于全同态加密的安全内积计算方案进行比较,结果如表 2、表 3所示。
表 2 三种基于全同态加密的方案比较
表 3 两个方案的性能比较
方案 通信量 计算量 文献[2] 2l个密文 2l个加密,l个同态乘,l-1个同态加 本文方案 2个密文 2个加密,1个同态乘,logl个同态加与自同构映射 从表中可以看出,本文方案使用基于RLWE的FHE计算两个向量的内积,不仅针对bit向量,还可以针对一般的整数向量,这一点与文献[8]的方案相同,而文献[10]的方案只能针对bit向量,因此,本文方案和文献[8]的方案在实际应用中更加广泛。而与文献[8]的方案相比,本文方案在计算中使用了打包技巧,将一个向量的所有坐标打包到一个密文中,同时使用了SIMD技巧以进行并行化处理,使得本文方案有着较高的计算效率。就通信成本而言,两个方案中的明文空间均被划分为l个明文槽,因此本文方案有着较低的通信成本和计算代价。
A Secure Computation Scheme of Inner Product Based on Fully Homomorphic Encryption
-
摘要: 在云计算环境下密文top-k检索的众多方法中,该文聚焦于同态加密方法,该公钥加密方法具有不解密就能对密文进行操作的优点。在密文top-k查询中,内积相似性是度量索引向量和查询向量的相似性的最常用的一个指标。该文提出一个安全计算两向量内积相似性的方案,该方案使用基于环上错误学习问题的批处理和打包的同态加密来保护隐私。与其他方法相比,该方案具有通信代价低和计算代价低的优点。Abstract: Among many approaches to solve the problem of top-k retrieval over encrypted cloud data, we focus on an approach with homomorphic encryption, which is public key encryption supporting some operations on encrypted data. In top-k retrieval of encrypted data, the inner product is often used as a metric to compute the similarity between the file feature vector and the query vector. In this paper, we propose an efficient scheme to compute the inner product on encrypted data using the homomorphic encryption based on the learning with errors over ring (RLWE) problem, in which batch and packing techniques are adopted to achieve lower computation and communication cost.
-
表 1 基于SIMD并行计算$\{{{V}_{i}}\cdot {{W}_{i}},1\le i\le l\}$
打包后的密文 对应于各自空间的明文 ${V}'(x)$ $({{V}_{1}}(x),{{V}_{2}}(x),\cdots ,{{V}_{l}}(x))$ ${W}'(x)$ $({{W}_{1}}(x),{{W}_{2}}(x),\cdots ,{{W}_{l}}(x))$ 乘同态${V}'(x){W}'(x)$ $\begin{matrix} ({{V}_{1}}(x){{W}_{1}}(x)\bmod {{f}_{1}}(x),({{V}_{2}}(x){{W}_{2}}(x)\bmod {{f}_{2}}(x),\cdots , \\ {{V}_{l}}(x){{W}_{l}}(x)\bmod {{f}_{l}}(x)) \\ \end{matrix}$ 表 2 三种基于全同态加密的方案比较
表 3 两个方案的性能比较
方案 通信量 计算量 文献[2] 2l个密文 2l个加密,l个同态乘,l-1个同态加 本文方案 2个密文 2个加密,1个同态乘,logl个同态加与自同构映射 -
[1] WITTEN H, MOFFAT A,BELL T C. Managing gigabytes:Compressing and indexing documents and images[M]. San Francisco:Morgan Kaufmann Publishing, 1999. [2] GENTRY C. Fully homomorphic encryption using ideal lattices[C]//Proceedings of the 41st Annual ACM Symposium on Symposium on Theory of Computing-STOC'09.[S.l.]:ACM Press, 2009:169-178. [3] SMART N P, VERCAUTEREN F. Fully homomorphic encryption with relatively small key and ciphertext sizes[C]//Public Key Cryptography-PKC 2010. Berlin:Springer, 2010:420-443. [4] STEHLE D, STEINFELD R. Faster fully homomorphic encryption[C]//Advances in Cryptology-ASIACRYPT 2010. Berlin:Springer, 2010:377-394. [5] GU Chun-sheng. Cryptanalysis of the Smart-Vercauteren and Gentry-Halevi's fully homomorphic encryption[J]. International Journal of Security & Its Applications, 2012, 6(2):176-184. http://cn.bing.com/academic/profile?id=2183439951&encoded=0&v=paper_preview&mkt=zh-cn [6] CORON J S, MANDAL A, NACCACHE D, et al. Fully homomorphic encryption over the integers with shorter public keys[C]//Advances in Cryptology-CRYPTO 2011. Berlin:Springer, 2011:487-504. [7] GENTRY C, HALEVI S. Implementing Gentry's fully-homomorphic encryption scheme[C]//Advances in Cryptology-EUROCRYPT 2011. Berlin:Springer, 2011:129-148. [8] YU J, LU P, ZHU Y, et al. Towards secure multi-keyword top-k retrieval over encrypted cloud data[J]. IEEE Transactions on Dependable and Secure Computing, 2013, 10(4):239-250. doi: 10.1109/TDSC.2013.9 [9] DING J, TAO C. A new algorithm for solving the general approximate common divisors problem and cryptanalysis of the fhe based on the gacd problem[DB/OL].[2014-04-07]. http://eprint.iacr.org/2014/042. [10] YASUDA M, SHIMOYAMA T, KOGURE J, et al. Packed homomorphic encryption based on ideal lattices and its application to biometrics[J]. Security Engineering and Intelligence Informatics, 2013(8128):55-74. http://cn.bing.com/academic/profile?id=2144798081&encoded=0&v=paper_preview&mkt=zh-cn [11] NAEHRIG M, LAUTER K, VAIKUNTANATHAN V. Can homomorphic encryption be practical?[C]//Proceedings of the 3rd ACM Workshop on Cloud Computing Security Workshop. Rome:ACM Press, 2011:113-124. [12] SMART N P, VERCAUTEREN F. Fully homomorphic SIMD operations[J]. Designs, Codes and Cryptography, 2014, 71(1):57-81. doi: 10.1007/s10623-012-9720-4