目前,越来越多的企业和个人开始使用云存储保存数据,使用云计算处理数据.云计算易于扩展,对设备要求低、计算能力增强,能提高资源利用率和降低成本.不仅如此,云环境的大规模集群和巨大的计算能力,使云计算可以用来处理大数据,对大数据进行数据挖掘,通过机器学习算法实现分类聚类和图像识别.一般来说,隐私保护机器学习的结构可以分为隐私保护训练和隐私保护分类两类.现有的研究侧重于第一类或第二类,既保护了数据提供者提供的训练样本的隐私,又保护了评估者的分类器参数和客户端的预测结果,即只有客户端才能获得预测结果.隐私数据保护的算法目前有很多,如朴素贝叶斯[1]、决策树[2]、线性判别分类器[3]和更通用的内核方法[4].文献[5]提出了一种适用于随意分割训练数据集,隐私保护的反向传播神经网络训练算法.文献[6]提出使用单一同态加密方案来训练多个机器学习分类器.文献[7]使用并行深度学习来设计、实现和评估一个隐私保护的深度学习.上述研究中,每个参与者都用相同的神经网络模型训练本地数据集,并使用模型的选择性参数共享作为一种技术,从而从其他参与者的模型中得益,无须明确共享训练输入.但这种方法占用了保存敏感数据的参与者的存储空间;同时,每个参与者都须要通过一些计算以进行训练.分类器学习是机器学习中最基本的任务之一.在实践中,很少有学者对隐私保护分类这一普遍问题进行研究.文献[8]实现了两种EGC信号安全分类器,前者基于线性分支程序,后者基于神经网络,其关键技术创新是同态加密和乱码电路.文献[9]基于朴素贝叶斯分类实现了一个安全的以患者为中心的临床决策支持系统,使用了一种附加同态代理聚合方案,将不同公钥下的加密转换为代理公钥下的加密.文献[10]开发了一种两方计算框架,使用全同态加密方案作为隐私保护技术,实现了超平面决策、朴素贝叶斯和二叉决策树的分类器模型在密文上处理.然而,这些方案都需要大量的计算和通信.由于朴素贝叶斯模型有稳定的分类效率,对缺失数据不太敏感,算法也比较简单,并且分类准确度高、速度快,因此本研究使用朴素贝叶斯分类器对文本数据进行分类操作,通过学习和预测两个算法分析用户上传到公有云的数据.本研究提出了一种在云环境下对加密数据进行分类的模型,该模型包括以下3个方面.a.对加密数据进行计算的模型.对上传到云端的加密数据,通过计算算法对数据进行加密计算,并保证不泄露明文.b.朴素贝叶斯分类器模型.贝叶斯分类器对文本数据的分类具有良好性能.c.使用加密数据计算算法实现贝叶斯分类器的学习过程和预测过程.1 预备知识1.1 同态加密算法假设 m1和m2是两个明文,[m1]和[m2]是使用相同秘钥加密后的密文,加法同态算法有如下性质,[m1][m2]=[m1+m2].数乘同态算法有如下性质:对于一个随机数z∈ZN,其中,N为公钥,ZN为小于N的整数集合,此处为明文空间大小,且zm1∈ZN,有[m1]z=[zm1].1.2 朴素贝叶斯分类器朴素贝叶斯分类器是一种分类算法,是有监督的学习算法,本研究使用贝叶斯分类器来学习和分类文本数据.贝叶斯分类器的原理为P(Ci|X)=P(X|Ci)P(Ci)P(X),式中:Ci为第i (1≤i≤k)个类别;PX|Ci为条件概率;P(Ci)为类别i的先验概率;P(X)为样本X在所有类中的概率,对所有类别来说是相同的,可以忽略.在文本分类中,对文本Q进行分类,Lj=ln(P^(Cj|Q))=ln(Hj+1)-ln(H+M)+∑i=1kqjln(yi+1)-tln(W+r),式中:Lj为对计算的概率取对数,以避免计算的值过小使计算溢出;P^为经过拉普拉斯修正后的条件概率;Hj为j中所有文本的个数;H为列集中的所有文本号;M为集合中所有的类号;qj为文本Q中单词xi的个数;yi为训练集中单词xi的个数;t为测试文本单词总数;W为训练集中所有单词的个数;r为训练集单词的类别.1.3 拉格朗日插值公式为了实现秘钥分解和解密合并,使用拉格朗日插值公式对秘钥进行处理.设k-1次多项式q(x)=∑i=0k-1βixi,则该多项式上的至少k个点可以确定这个多项式的系数βi.于是,取β0=sk,sk为密钥管理系统生成的密钥.秘钥管理系统随机生成k-1个系数β1,β2,…,βk-1,然后系统生成k个互不相同且不为0的数αi,计算得到q(αi),将二元数对(αi,q(αi))发送给每个计算组件,计算组件可以通过插值公式q(x)=∑i=1kq(αi)∑j=1,j≠ikx-αjαi-αj还原多项式,并得出β0,即秘钥.2 密文算法2.1 加密算法本研究采用基于Paillier的密码系统[11-12],将私钥分离到不同的n份中,以支持(k,n)门限解密.该系统被称为Paillier密码系统与阈值解密,由以下算法组成.a.秘钥生成(Keygen).首先,选择两个强素数p和q,根据强素数的性质,可以得到另外两个素数p'和q',其中,p'=(p-1)/2,q'=(q-1)/2;然后,令N=pq,λ=lcm(p-1,q-1)/2,选择一个生成因子g∈ZN2*,ZN2*为小于N2的非零整数集合,g=N+1,可以得到公钥pk=N,私钥sk=λ.b.加密(Enc).给出一个明文m∈ZN,随机选择一个数r∈ZN,于是密文可以表示为[m]=gmrNmod N2=(1+mN)rNmod N2.c.解密(Dec).须要使用私钥对密文进行解密,首先,计算[m]λmod N2=(1+mN)λrλNmod N2=1+mλN.由于gcd(λ,N)=1,因此可以得到明文m=L([m]λmod N2)λ-1mod N,式中L(x)=(x-1)/N,λ-1满足λ-1λ≡1mod N,然后使用中国剩余定理求出λ-1的值.d.秘钥分解(KeyS).选择参数δ,使其满足δ≡0 mod λ且δ≡1 mod N2.定义一个多项式q(x)=δ+∑i=1k-1βixi,式中:βi为ZλN2*中任意数,其中ZλN2*为小于λN2的非零整数集合.令α1,α2,…,αn∈ZλN2*为n个不同的非零数,且是公开的,令sk(i)=q(αi)为部分秘钥,并发送给部分i.e.部分解密(PDec).在接收到密文[m]后,使用部分秘钥sk(i)=q(αi)对密文进行部分解密,解密得到部分明文T(i),即T(i)=[m]q(αi)mod N2.f.合并解密(TDec).一旦接收到d(d≥k)份部分解密的密文,令S={T(τ1),T(τ2),…,T(τd)},算法可以选择任意k份集合S中的密文进行解密,T''=∏l∈S(T(l))∆l,S(0)mod N2,式中∆l,S(x)=∏j∈S,j≠lx-αjαl-αj.于是明文m可以通过下式得到,即m=L(T'').g.密文刷新(CR).一旦收到密文[m],CR算法可以在不改变明文的情况下,对密文进行性更新.随机选择一个数r'∈ZN,计算[m]'=[m]r'N=(rr')N1+mNmod N2.此外,给定m∈ZN,有[m]N-1=(1+(N-1)mN)rN-1Nmod N2=[-m].2.2 密文计算算法为保证数据在加密的情况下能进行运算,并且在保护隐私数据及秘钥不被泄露的情况下对加密数据进行操作,提出以下三种密文计算算法.2.2.1 密文乘法算法(CTMA)当云存储提供两个加密数据[x]和[y]作为输入时,CTMA将安全地计算[xy].步骤1 云存储选择两个随机数rx,ry∈ZN,计算X=[rx][x]=[x+rx];Y=[ry][x]=[y+ry];X1=Psk(1)(X);Y1=Psk(1)(Y),式中Psk(1)为部分解密(PDec)步骤,并将X,Y,X1和Y1发送到云计算中心.步骤2 云计算中心接收X,Y,X1和Y1,计算:Tx(i)=Psk(i)(X);Ty(i)=Psk(i)(Y).云计算中心使用TDec解密X和Y,获得x'=x+rx和y'=y+ry,计算h=x'y',然后使用pk加密h,即H=[h],发送H到云存储.步骤3 一旦收到H,云存储计算:S1=[x]N-ry=[-ryx];S2=[y]N-rx=[-rxy];S3=[ryrx]N-1=[-ryrx].然后,云存储计算HS1S2S3=[(x+rx)(y+ry)-ryx-rxy-ryrx]=[xy].因此,云存储和云计算中心可以联合计算[xy].2.2.2 密文比较算法(CTCA)给定两个加密数字[x]和[y],CTCA可用于确定两个加密数据的明文之间的关系(即xy,xy或x=y).步骤1 云存储选择两个随机数r,l∈ZN,计算:E=[x]r[y]N-r[l]=[r(x-y)+l];E1=Psk(1)(E),并将E,E1和[l]发送到云计算中心.步骤2 云计算中心收到E,E1和[l],计算Te(i)=Psk(i)(E),并使用TDec解密E得到e=r(x-y)+l.然后云计算中心比较e和l.若el,表示xy,则发送1到云存储;若e=l,表示x=y,则发送0到云存储;否则xy,发送-1到云存储.步骤3 云存储从云计算接收结果.若接收到1,则表示xy;若接收到0,则表示x=y;若接收到-1,则表示xy.2.2.3 密文对数算法(CTLA)给定一个加密数字[x],CTLA将安全地计算[ln x].步骤1 云存储选择一个随机数rx∈ZN,计算:X=[x]rx=[xrx];R=[ln rx].由于云存储知道sk(1),可以计算T(1)=Psk(1)(X),发送X,R和T(1)到云计算中心.步骤2 云计算中心接收X,R和T(1),计算T(i)=Psk(i)(X).然后用TDec解密X,得到x'=xrx,计算L=[ln x']=[ln x+ln rx],云计算中心将L发送到云存储.步骤3 云存储接收L,计算LRN-1=[ln x+ln rx][ln rx]N-1=[ln (x)],因此可以得到[ln x].3 安全的朴素贝叶斯分类器3.1 模型在本研究的系统中,有四种类型的实体.a.用户客户端程序.客户端程序是用户可以通过它来操作数据的终端系统.客户端的功能主要有添加和解密数据及将数据上传到云存储系统两种.客户端主要与云存储系统交互,将数据上传到云存储系统.另外,客户端在数据加解密时须要与秘钥管理系统交互,但对用户是透明的.b.云存储系统.云存储系统是该模型的一个重要结构,主要与客户端程序和云计算系统交互.云存储系统在接收到客户端程序发送的加密数据后,将数据处理成计算任务,然后将其发送到云计算系统进行计算,最后接收计算结果.此外,云存储系统还存储数据以供使用.c.云计算系统.云计算系统包括多个计算组件,其目的是执行计算任务.云计算系统主要与云存储系统交互,将云存储系统产生的任务分发给计算组件执行,然后合并结果并返回到云存储系统.d.密钥管理系统.密钥管理系统是用于生成和分发密钥的系统,是一个可信的密钥生成和分发系统,用于生成公钥和私钥,对上传到服务器的数据进行加密操作.3.2 贝叶斯分类系统执行流程贝叶斯分类器是一个有监督的学习算法,在对文本进行分类之前,须对训练集进行学习.于是,系统的执行分为学习过程和预测过程两个部分.3.2.1 学习过程系统中训练集学习模型如图1所示.10.13245/j.hust.230202.F001图1系统中训练集学习模型示意图步骤1 首先,对于训练集数据,生成类文本表(见表2),表中,文本列表代表每个文本单词组成的表的集合.文本中所有单词类型的数量即单词词频表的长度.对每个文本中的单词进行统计处理,可以得到单词的词频:x2,x3,x6,x8为1;x1,x7为2;x4为3;x5为4.然后,数据被加密并发送到云存储系统.10.13245/j.hust.230202.T001表1类文本表类名C1C2C3C4文本列表ListText1ListText2ListText3ListText4测试数量2316251910.13245/j.hust.230202.T002表2密文算法对比算法时间/ms交互次数CTCA145.12文献[10]190.96步骤2 云存储系统接收到这些数据后,会对这些数据进行计算.首先,统计得到单词xj类别Ck的词频Q(xj|Ck)=∑qij及每个类别的数量Q(Ck),其中qij为Xi样本中单词xj的词频(Xi∈Ck,xj∈Xi).将所有样本累加即为统计得到的单词xj类别Ck的词频,这样可以得到每个单词的条件概率P(xj|Ck)=Q(xj|Ck)Q(x|Ck),式中Q(x|Ck)=∑∑qij为类别Ck中所有单词的数量,其中j=R表示所有单词.文本类别的先验概率计算公式为P(Ck)=Q(Ck)N.步骤3 云计算中心获得计算任务后,对数据进行计算,然后将结果返回给云储存组件进行,这样就可以完成数据处理工作,得到学习模型w.3.2.2 预测过程系统测试集预测模型如图2所示.10.13245/j.hust.230202.F002图2系统测试集预测模型示意图步骤1 首先客户端会预测文本分词处理,统计文本词频表;然后从秘钥管理系统中获取公钥并加密;最后将加密后的数据发送到云存储系统.步骤2 当加密后的数据被云存储系统收到后,云存储系统会使用训练模型w计算文本属于某一类别的概率.要计算这个概率须要使用密文乘法算法、密文比较算法和密文对数算法.云存储系统将这些计算任务发送到云计算中心进行计算,计算结果发送到云存储系统.云存储系统通过简易的计算,得到文本属于某一类别的概率,确定文本属于的某一类别.然后,发送到客户端解密文本所属的类.本研究在客户端对文本中的单词进行了分类操作,然后使用公式对文本Q进行了分类操作,而文本Q是用户发送到云存储组件的文本.步骤3 通过上面的公式和密文计算算法可以得到文本的分类.最后将文本类别发送到云存储.4 实现与评估实验在单机系统上模拟运行,系统为64 bit Windows10,内存为16 GiB,处理器为Intel Core i7-9700,频率为3.6 GHz,该系统使用Java语言编写.实验数据分为训练集和测试集两个部分,训练集包括4个类,每个类有25个文本数据,每个数据文本包括50~300个单词.测试集包括4个类,每个类有5个文本数据,每个数据文本包括50~300个单词.在实际运行中,测试了密文计算算法的运行效率,密文乘法算法、密文比较算法、密文对数算法的运行时间如图3~5所示,图中:t为算法的总共运行时间;t'为算法的平均运行时间;a为算法的运行次数.10.13245/j.hust.230202.F003图3密文乘法算法运行时间10.13245/j.hust.230202.F004图4密文比较算法运行时间10.13245/j.hust.230202.F005图5密文对数算法运行时间图3~5显示了算法的效率,当算法的运行次数增大时,算法的总运行时间是递增的,但是算法每一次的平均运行时间是递减的(由总运行时间除以运行次数得来).密文乘法算法的平均运行时间为180~200 ms,随着算法运行次数的增加,平均运行时间由200 ms下降到185 ms以下.密文比较算法的平均运行时间为145~180 ms,加密的数据越多,加密效率越高,平均运行时间会下降到145 ms.密文对数算法的平均运行时间为100~120 ms,随着运行次数的增加,平均运行时间下降到100 ms.5 算法比较与分析文献[10]主要给出了三种基于隐私数据的分类算法,即朴素贝叶斯分类、决策树和基于决策的超平面分类.将本研究与文献[10]中的贝叶斯分类算法进行对比.Pailliar(也用于文献[10]中)对隐私数据进行加密.隐私数据会被传到服务器,然后进行训练,训练完成或生成的训练模型w将会被进行加密操作,然后发送到客户端.客户端收到分类后的文本后,进行处理然后将训练模型w用于预测,之后客户端将会收到预测后的结果.通过对数计算操作,该算法能够生成训练模型w,因此该算法只须要进行最大值运算、密文比较和同态加法三步操作.该模型的关键点在于最大值是在密文比较算法的基础上计算出来的,将本研究提出的密文比较算法和文献[10]中的算法进行对比,结果如表2所示.通过时间和交互次数的对比,可以发现:在密文比较算法效率方面,本研究的密文比较算法占明显优势,并且组件的交互次数少于文献[10]中的算法.对比本文模型与文献[10]中的模型,可以发现以下异同点.A.相同的地方.a.加密算法相同.在文献[10]中对于数据加密使用的算法和本研究是一致的,都是Pailliar加密算法,安全性是该算法的一大优点.b.使用的组件基本相同.两者都包括服务器端和客户端,对数据进行分类前,都需要服务器端对数据进行训练.B.不同的地方.a.安全性不同.在文献[10]中隐私数据是对外透露的,由于服务器端须要训练数据,因此数据总是在服务器端以明文计算.在本文模型中,训练集数据也经过加密发送到服务器进行操作,充分保证了数据的安全性.b.预测计算不同.在文献[10]中模型是服务器训练出来并进行过加密,然后发给客户端的,客户端进行测试集数据的预测计算.这将有两个缺点:首先是传输时间问题,非常大的模型传输到客户端需要很长时间,会极大影响执行效率;其次是预测的任务会在客户端上执行,这样会使客户端执行非常大的计算任务,由于个人电脑是执行客户端的普遍工具,性能一般较低,因此会严重降低执行效率.在本文模型中,服务器端会完成模型的训练及模型的预测.这样,只要使用的服务器硬件是高性能的,就可以显著提高算法执行效率.6 结语本研究提出了密文乘法算法、密文比较算法和密文对数算法三种密文计算算法,并在云环境中使用贝叶斯分类器对加密数据进行分类,而不暴露消息数据的信息.提出的密文计算算法为实现其他的隐私数据的机器学习算法提供了很好的思路,在密文计算算法的基础上,可以实现更多的基于数据结果的算法,将其应用在加密的隐私数据上,进行更加有效深入的数据分析.实验结果表明:密文计算模型的效率有较大的提高,并且该模型将大量计算放在云环境中,减轻客户端压力,充分利用了云环境中的资源.
使用Chrome浏览器效果最佳,继续浏览,你可能不会看到最佳的展示效果,
确定继续浏览么?
复制成功,请在其他浏览器进行阅读
复制地址链接在其他浏览器打开
继续浏览