云环境中基于代理重加密的多用户全同态加密方案
李陶深 1,2 , 刘青 1 , 黄汝维 1,2     
1. 广西大学 计算机与电子信息学院, 南宁 530004;
2. 广西高校并行分布式计算技术重点实验室, 南宁 530004
摘要:为解决云环境下多用户共享、隐私安全和密文计算等问题,该文提出一种适用于云环境的基于代理重加密的多用户全同态(proxy re-encryption-based,multi-user,fully homomorphic encryption scheme for cloud computing,PREB-MUFHE)加密方案。该方案使用不同的公钥对不同用户的密文进行加密,使得不同用户密文满足密文独立和不可区分性。为了使2个用户之间的密文运算结果满足全同态性,当密文上传到云端时,由云服务提供商(cloud service provider,CPS)作为代理方对其中一个用户的密文进行重加密,将其转化为对同一用户下的密文,然后再进行密文的运算。安全分析证明了该方案的安全性是基于容错学习(learning with errors,LWE)困难问题,在普通双线性群随机域模型下能抵御选择明文攻击(indistinguishability under chosen plaintext attack,IND-CPA)。实验结果表明:该方案能有效实现不同用户密文的全同态运算,支持多用户共享。
关键词云计算    全同态加密    多用户    代理    密文重加密    
Multi-user fully homomorphic encryption scheme based on proxy re-encryption for cloud computing
LI Taoshen1,2, LIU Qing1, HUANG Ruwei1,2     
1. School of Computer, Electronics and Information, Guangxi University, Nanning 530004, China;
2. Guangxi Colleges and Universities Key Laboratory of Parallel and Distributed Computing, Nanning 530004, China
Abstract: Cloud computing involves multi-user sharing, user privacy and security, and ciphertext evaluation. This paper presents a multi-user, fully homomorphic encryption scheme based on proxy re-encryption for cloud computing. The scheme uses different public keys to encrypt the ciphertexts of different users, so different user ciphertexts provide ciphertext independence and indiscernibility. When a ciphertext is uploaded to the cloud, the ciphertext of one user is re-encrypted by the cloud service provider (CPS) as the agent and converted into a ciphertext for the same user. This allows the ciphertext calculation between the two users to meet the fully homomorphic computing requirements. a security analysis shows that the security of the this scheme is based on the harder problem of learning with errors (LWE) and can resist the chosen plaintext attack (in the generic bilinear group radom oracal model). Tests show that this scheme efficiently implements fully homomorphic evaluations of different user ciphertexts and supports multi-user sharing.
Key words: cloud computing     fully homomorphic encryption     multi-user     proxy     ciphertext re-encryption    

近年来,云计算环境下的安全事故时有发生,云环境的数据隐私问题引起了人们的高度重视。安全研究分析表明[1]:云端的数据易被泄露,云计算的弱点主要集中在数据保护(30.29%)和身份管理(20.14%)。因此,保护云端数据的安全迫在眉睫。

目前,人们对于云环境中的数据隐私安全问题的应对方法是将数据存储到云服务器之前预先进行加密处理,需要时再由用户解密。常见的数据隐私保护技术有:用于区分数据使用者身份的代理重加密技术[2]和属性加密技术[3],用于资源授权访问范围的访问控制技术[4],用于对密文数据进行检索访问的可搜索加密技术[5]等。这些技术采用传统的加密保护,只能满足加密存储的功能,缺少能直接对密文进行计算的、更方便的隐私保护手段。

全同态加密技术[6]在远程外包环境下具有良好的密文可计算性,支持密文运算、检索、排序,能保证传输、存储上的安全,是解决云环境隐私安全问题的有效方法。近年来,对全同态加密方案的研究主要集中在:基于近似最大公约数问题的全同态加密方案[7-8]、基于容错学习(learning with errors, LWE)的全同态加密方案[9-11]、支持访问控制和多用户共享的全同态加密方案[12-15]。但以上研究并非针对云计算安全而开展的。

随着全同态加密技术的不断成熟,人们也将全同态加密技术应用于云安全服务,利用全同态加密的优良特性,提高云服务安全性。文[16]基于抽象代数度量空间技术和加密代理技术构造了满足云环境下多用户共享要求的全同态加密方案。文[17]提出了一个基于NTRU的多密钥全同态加密方法,但只允许最多M个不同公钥加密的密文进行计算。文[18]构造了基于策略的多用户全同态加密方案,可解决云环境中多用户密文计算、访问控制和共享等问题,但该方案的密文解密效率较低,密钥生成效率和加密效率会随着访问策略的复杂而下降。

云环境中用户的多样性和复杂性要求全同态加密技术必须满足多用户的密文计算、共享需求,但是现有的全同态加密算法仍存在一些不足。为此,基于属性加密技术和代理重加密技术,本文提出云环境中基于代理重加密的多用户全同态加密方案,旨在解决云环境中多用户共享和隐私安全问题。

1 问题描述

本文设计相关应用场景来描述面向云计算的用户隐私安全需求。公司员工根据其所在部门和职务被限制地访问公司数据;公司选购云服务提供商(cland service provider, CSP)提供的计算资源来完成公司的大型计算任务。在工作过程中,为了遵守公司的隐私规范,每个数据发送者必须设定适当的访问策略来加密数据,且其他员工必须在满足加密数据认证条件前提下才能访问该数据。这种情况下,不同部门员工上传的加密数据之间可能会被发送者的子集或者其他授权人员进行计算或进行其他处理,只有满足结果数据访问策略的员工才有资格对结果数据进行访问。

针对以上用户隐私需求,通常采用的保护数据的有效方法是加密。但是,传统的加密手段无法在云计算环境下对密文进行检索和查询。如果将加密信息取到客户端,解密后对数据进行处理,再加密上传至云端,这就需要频繁地存取加解密数据,将大大增加云端服务器和客户端的通信和计算开销。所以传统的加密方式不能满足云环境下用户数据隐私需求,而全同态加密技术就比较适合解决云环境下用户数据隐私的问题。

然而,现有的全同态加密算法大都针对单一用户全同态密文计算而设置,涉及多用户的全同态密文计算的算法甚少。图 1给出了云环境中单一用户全同态密文计算的系统模型。具体的加密、解密以及密文计算过程如下:

图 1 单一用户全同态密文计算的系统模型

步骤1  密钥生成中心使用Setup(1λ, 1L)启动算法生成公共参数params;使用私钥生成算法SecKeyGen为用户生成私钥sk,使用公钥生成算法PubKeyGen生成公钥pk;最终将sk和pk返回用户。

步骤2  用户i使用加密算法Encrypt,对明文μi加密得到密文Ci,然后将密文上传到CSP的服务器。

步骤3  CSP根据运算符号op={+, ·},使用密文计算算法Evaluation对不同密文CiCj进行处理,最后把密文计算结果C返回给用户。

步骤4  用户使用解密算法Decrypt对返回的密文计算结果C进行解密,得到结果明文μ

图 1可看出,单一用户全同态密文计算模型中,只有使用相同公钥对不同明文进行加密,得到的密文才能进行全同态加密运算。在多用户环境下,不同用户数据肯定使用不同的公钥、密钥对作为加解密的工具,当用户将各自密文上传至远程服务器存储时,不同用户之间密文将是独立的。显然,单一用户全同态加密算法无法对不同用户之间的密文进行计算,也不能满足多用户共享要求。为了解决多用户的密文计算和共享问题,本文提出基于代理重加密的多用户全同态加密方案(PREB-MUFHE)。

2 PREB-MUFHE加密方案 2.1 近似特征向量技术和Flattening密文技术[12]

近似特征向量技术是构造全同态加密方案的关键技术,使用该技术的密文乘积不会存在密文维数膨胀问题。Flattening密文技术能够在不影响向量点积的情况下改变向量。

定义1  假设a, bZq上的k维向量,$l=\left\lfloor \rm{lo}{{\rm{g}}_{\rm{2}}}\mathit{q} \right\rfloor +1$,且N=k·l。定义BitDecomp(a)返回N维向量a′=(a1, 0, …, a1, l-1, …, ak, 0, …, ak, l-1),其中ai, j是二进制形式ai的第j位;BitDecomp-1(a′)=(∑2j·a1, j, …, ∑2j·ak, j)表示BitDecomp的逆过程;Flatten(a′)=BitDecomp(BitDecomp-1(a′)),返回0/1系数的向量;定义Powerof2(b)=(b1, 2b1, …, 2l-1b1, …, bk, 2bk, …, 2l-1bk)。

对于矩阵A,BitDecomp(A),BitDecomp-1(A)以及Flatten(A)则是对矩阵A的每行应用上面的操作。应用Flattening密文技术,下面等式成立。

1) 〈BitDecomp(a), Powerof2(b)〉=〈a, b

2) 对于N维向量a′, 〈a′, Powerof2(b)〉=〈BitDecomp-1(a′), b〉=〈Flatten(a′), Powerof2(b)〉

2.2 PREB-MUFHE加密方案

图 2为PREB-MUFHE加密方案的系统模型。该方案的设计思想是:1)以近似特征向量技术[12]作为基础,密钥生成中心为数据拥有者生成公钥,为授权用户生成计算密钥或私钥;2)不同的数据拥有者设置自己的访问策略,并用加密算法和公钥对数据进行加密,然后将密文上传至云端;3)为了使不同用户之间密文的运算结果也能满足全同态性,当某个用户的密文上传到云端时,通过对该密文进行重加密,将它转化为对同一用户下的密文,然后再进行密文的计算。这样就有效地解决了云环境中多用户的密文计算、密文共享问题。

图 2 PREB-MUFHE加密方案的系统模型

定义2  PREB-MUFHE方案由一组概率多项式时间算法组成,即有:εpreb-mufhe{Setup, SecKeyGen, PubKeyGen, ReKeyGen, Encrypt, ReEncrypt, Decrypt, Evaluation}。其中:

1) 密钥生成中心启动算法Setup(1λ, 1L)。该算法为所有用户生成公共参数pubParams= {n, q, χ, m},其中λL是安全参数;格维度n=n(λ, L);qk的模数,有k=k(λ, L);错误分布χ=χ(λ, L);m=O(nlogq),N=(n + 1)·($\left\lfloor \rm{lo}{{\rm{g}}_{\rm{2}}}\mathit{q} \right\rfloor +1$)。对于不同的用户,Setup生成的公共参数pubParams会有所不同。

2) 密钥生成算法SecKeyGen(pubParams)。密钥生成中心认证用户i的权限,并调用SecKeyGen为用户i生成解密私钥ski=si←(1, -ti, 1, …, -ti, n)∈Zqn+1, vi=Powerof2(si),其中向量tiZqn

3) 公钥生成算法PubKeyGen(pubParams, ski)。密钥生成中心对认证通过的用户,由PubKeyGen算法为用户i生成公钥pki。有矩阵BiZqm×n以及向量eiχm,计算bi=Bi·ti+ei。设矩阵Ai=(bi|Bi),输出公钥为pki=Ai。通过观察可知Ai·si=ei

4) 重加密密钥生成算法ReKeyGen(pubParam, ski,skj)。用户j与用户i通过多用户密文计算和密文共享协商之后,由用户j向密钥生成中心提交多用户密文计算和共享申请;密钥生成中心得到用户i的授权后,调用ReKeyGen为用户j生成重加密密钥rkij。首先运行Aj←PubKeyGen(pubParams, skj), 接着计算RijAj+Powerof2(ski), 输出rkij=Rij

5) 加密算法Encrypt(pubParams, pki, μi)。假设加密消息μiZq,有均匀矩阵Ui ∈{0, 1}N×m, 输出密文Ci=Flatten(μi·IN+BitDecomp(Ui·Ai)) ∈DN×N

6) 代理重加密算法ReEncrypt(Ci, rkij)。对于用户i的密文Ci,由CSP经过代理重加密算法将生成用户j的密文Cj。具体的计算是:对于给定的重加密密钥rkij,输出CjCi·BitDecomp(Rij)。

7) 解密算法Decrypt(pubParams, ski, Ci)。对于用户i的密文Ci,该算法计算向量x=Ci·vi=μi·vi+Ui·Ai·si=μ·vi+Ui·ei,然后对x进行如下处理:bitk=(min(xk, q-xk) ≥|xk-q/2|), 最后得到解密结果result+=bitk·2l-1-k,其中k={l-2, l-1, …, 0}。

8) 密文计算算法Evaluation(Ci, Cj, op)。该算法可能是概率算法。对于用户i的密文Ci,用户j的密文Cj,若op=‘+’,则调用Add(Ci, Cj)做加法运算,输出Flatten(Ci+Cj);若op=‘·’,则调用Mult(Ci, Cj)做乘法运算,输出Flatten(Ci·Cj)。其中CiCj必须是由相同公钥加密而成的密文。

定义3  PREB-MUFHE的正确性:假设D为明文数据的定义域,op为操作运算符,则εpreb-mufhe {Setup, SecKeyGen, PubKeyGen, ReKeyGen, Encrypt, ReEncrypt, Decrypt, Evaluation}是正确的,应满足:

1) ∀μD, ∃Decrypt(pubParams, sk, Encrypt (pubParams, pk, μ))=μ

2) 若有Ci←Encrypt(pubParams, pki, μi),且Cj ←ReEncrypt(Ci, rkij),则〈Cj, skj〉=μi·si+Ci·ej+〈Ui, ei〉.其中ei, ejχm, Ui ∈ {0, 1}N×m

3) ∀μi, μjD, ∃Evaluation′ (μi, μj, op)=Decrypt (pubParams, sk, Evaluation(Ci, Cj, op))。

定义4  LWE问题[11]。有安全参数λ,格维数n=n(λ), 整数q=q(λ)≥2,以及χ=χ(λ)是Z上的分布. LWEn, q, χ问题是区分以下两个分布:分布1,从$\mathbb{Z}_{q}^{n+1}$中均匀取样(aibi);分布2:首先从$\mathbb{Z}_{q}^{n}$中均匀取样sai,从分布χ中取样ei,记bi=〈ai, s〉+ei。LWEn, q, χ假设表示LWE n, q, χ问题不可行。

定义5  PREB-MUFHE的安全性:εpreb-mufhe{Setup, SecKeyGen, PubKeyGen, ReKeyGen, Encrypt, ReEncrypt, Decrypt, Evaluation}是基于LWE问题安全的。

3 正确性和安全性证明 3.1 正确性证明

定理1  PREB-MUFHE={Setup, SecKeyGen, PubKeyGen, ReKeyGen, Encrypt, ReEncrypt, Decrypt, Evaluation}是正确的,∀μD, ∃Decrypt (pubParams, sk, Encrypt(pubParams, pk, μ))=μ

证明  密文Cμ是一个矩阵,计算Cμ=Flatten(μ·IN+BitDecomp(U·A))。由Cμ·v=Flatten(μ·v+U·e), Flatten操作使得μ·v+U·e矩阵元素很小(不小于1),密钥vZq上的一个N维向量且至少包含有一个大系数vi

由于密钥v作为密文矩阵Cμ的近似特征向量,明文数据μ作为特征值这个本质可以得出通过提取密文Cμ的第ici,计算x←〈ci, v〉=μ·vi+ei,输出μ =[x/vi]。因此,∀μZq, ∃Decrypt(pubParams, sk, Encrypt(pubParams, pk, μ))=μ

得证。

定理2  PREB-MUFHE={Setup, SecKeyGen, PubKeyGen, ReKeyGen, Encrypt, ReEncrypt, Decrypt, Evaluation}是正确的,若有Ci←Encrypt(pubParams, pki, μi),且Cj ←ReEncrypt(Ci, rkij),则满足〈Cj, skj〉=Flatten(μi·si+ei)+Ci·ej。其中ei, ejχm, Ui∈{0, 1}N×m

证明

$ \begin{align} &\ \ \ \ \ \ \ \ \ \left\langle {{{{C}'}}_{j}}, ~\rm{s}{{\rm{k}}_{\mathit{j}}} \right\rangle ={{C}_{i}}\cdot {{\mathit{\boldsymbol{R}}}_{i\to j}}\cdot {{\mathit{\boldsymbol{s}}}_{j}}= \\ &\ \ \ {{C}_{i}}\cdot (({{\mathit{\boldsymbol{A}}}_{j}}+{\rm{Powerof}}2({{\mathit{\boldsymbol{s}}}_{i}}))\cdot {{\mathit{\boldsymbol{s}}}_{j}})= \\ &{{C}_{i}}\cdot ({{\mathit{\boldsymbol{A}}}_{j}}\cdot {{\mathit{\boldsymbol{s}}}_{j}}+{\rm{Powerof}}2({{\mathit{\boldsymbol{s}}}_{i}}))\cdot {{\mathit{\boldsymbol{s}}}_{j}})= \\ &\ \ \ {{C}_{i}}\cdot ({{\mathit{\boldsymbol{e}}}_{j}}+{\rm{Powerof}}2({{\mathit{\boldsymbol{s}}}_{i}}))\cdot {{\mathit{\boldsymbol{s}}}_{j}})= \\ &\ \ \ \ \ \ \ {{C}_{i}}\cdot ({{\mathit{\boldsymbol{e}}}_{j}}+{\rm{Powerof}}2({{\mathit{\boldsymbol{s}}}_{i}}))= \\ &\ \ \ \ \ \ \ \ \ {{C}_{i}}\cdot {{\mathit{\boldsymbol{e}}}_{j}}+{\rm{Flatten}}({{\mu }_{i}}\cdot {{\mathit{\boldsymbol{I}}}_{N}}+ \\ &{\rm{BitDecomp}}({{\mathit{\boldsymbol{U}}}_{i}}\cdot {{\mathit{\boldsymbol{A}}}_{i}}))\cdot {\rm{Powerof2}}({{\mathit{\boldsymbol{s}}}_{i}})= \\ &\ \ \ \ \ \ \ {{C}_{i}}\cdot {{\mathit{\boldsymbol{e}}}_{j}}+{{\mu }_{i}}\cdot {{\mathit{\boldsymbol{s}}}_{i}}+\left\langle {{\mathit{\boldsymbol{U}}}_{i}}, {{\mathit{\boldsymbol{e}}}_{i}} \right\rangle = \\ &\ \ \ \ \ \ \ {\rm{Flatten}}({{\mu }_{i}}\cdot {{\mathit{\boldsymbol{s}}}_{i}}+{{\mathit{\boldsymbol{e}}}_{i}})+{{C}_{i}}\cdot {{\mathit{\boldsymbol{e}}}_{j}}. \\ \end{align} $

因此,对于Ci←Encrypt(pubParams, pki, μi),且Cj ←ReEncrypt(Ci, rkij), 满足〈Cj, skj〉=μi·si+Ci·ej+ei

得证。

定理3  PREB-MUFHE={Setup, SecKeyGen, PubKeyGen, ReKeyGen, Encrypt, ReEncrypt, Decrypt, Evaluation}是正确的,∀μi, μjD, ∃Evaluation′(μi, μj, op)=Decrypt(pubParams, sk, Evaluation(Ci, Cj, op))。

证明  首先,Cj=Flatten(μj·IN+BitDecomp(Uj·Aj)),Cj·vj=Flatten(μj·vj+ej),其中Ci是用户j经过代理重加密算法对用户i的密文C重加密之后的密文。有Ci=C·Rij。由定理2可知,Ci·vj=C·Rijvj=Flatten(μi·si+ei)+C·ej

C+=Ci+Cj, C×=Ci·Cj。对于加操作,C+·vj=Flatten((μi+μjvj+(ei+ej)),由近似特征向量技术可知,容错向量eiej很小,Flatten操作使得加法运算后的容错向量ei+ej还是小,故密文矩阵加法的和即是明文的和。

对于乘操作,C×·vj=Flatten(Cj·(μi·vi+ei+C·ej))=Flatten(μj·(μi·vi+ei)+Cj·Ci·ej)=Flatten(μi·μj·vi+μj·ei+Cj·Ci·ej), Flatten操作使得μjCj·Ci都很小,则C×·vj=μi·μj·vj+small,由近似特征向量技术可知,密文矩阵乘法的积即是明文的积。

因此,∀μi, μjD, ∃Evaluation′(μi, μj, op)=Decrypt(pubParams, sk, Evaluation(Ci, Cj, op))。

得证。

3.2 安全性证明

定理4[18]  任何可区分的算法以ε的优势抵御安全参数为nmq以及χ的方案的选择明文攻击(IND-CPA), 可以转换为至少以/22优势抵御LWEn, m, q, χ问题的区分性算法,并且它们的运行时间几乎相等。其中,ζ表示Hash函数的查询域中的群元素总数范围,p${{\mathbb{G}}_{0}}$的素数阶。

有关定理4的证明,请参考文[18]。

观察BitDecomp-1(C)=μ·G+U·A,其中G=BitDecomp-1