首页> 中国专利> 一种面向云计算的矩阵乘法外包过程中安全加密方法

一种面向云计算的矩阵乘法外包过程中安全加密方法

摘要

本发明公开了一种面向云计算的矩阵乘法外包过程中安全加密方法,要解决的技术问题是克服现有技术泄露数据隐私的不足,更好地保护矩阵乘法输入数据隐私。本发明由改进后的矩阵乘法外包软件完成,主要是改进密钥模块、加密模块、解密模块;密钥模块根据矩阵规模生成密钥,密钥由4k个随机向量组成;然后加密模块对输入矩阵X、Y分别加上利用密钥生成的矩阵Z1和Z2,加密矩阵X、Y中的每个元素方法;计算模块计算加密的矩阵乘法问题;验证模块验证计算结果;解密模块根据密钥解密最终的计算结果。本发明加密时可加密输入矩阵X、Y中的每个元素,保护了每个元素的隐私,包括零元素的个数,更好地保护了输入数据的隐私。

著录项

  • 公开/公告号CN106788980A

    专利类型发明专利

  • 公开/公告日2017-05-31

    原文格式PDF

  • 申请/专利权人 中国人民解放军国防科学技术大学;

    申请/专利号CN201710032412.7

  • 申请日2017-01-16

  • 分类号H04L9/06(20060101);H04L9/08(20060101);

  • 代理机构湖南兆弘专利事务所(普通合伙);

  • 代理人赵洪

  • 地址 410073 湖南省长沙市砚瓦池正街47号中国人民解放军国防科学技术大学计算机学院

  • 入库时间 2023-06-19 02:19:08

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-07-30

    授权

    授权

  • 2017-06-23

    实质审查的生效 IPC(主分类):H04L9/06 申请日:20170116

    实质审查的生效

  • 2017-05-31

    公开

    公开

说明书

技术领域

本发明属于云计算安全领域,更为具体地讲,涉及一种面向云计算的矩阵乘法外包过程中安全加密方法。

背景技术

云计算为用户提供经济高效的计算方案,用户可以共享云服务器的计算资源和存储资源,使用户的计算能力不再受限于他们的设备。因此,一些计算资源不足的用户可以按使用量付费的方式把大规模的计算发送到计算能力强大的云服务器处理进而节约计算成本。用户把自己的计算任务发送给第三方计算的方式称为外包计算。

尽管外包计算具有诸多的好处,但是直接把计算交给云服务器处理存在一些新的安全问题和挑战。外包计算的任务中经常包含一些敏感信息如金融交易记录、顾客信息、个人身体健康数据等,但云服务器总是不可信的。因此,外包计算的最主要的问题是安全问题,即如何保护外包计算任务的输入输出数据的隐私。用户端在外包计算前要对输入数据加密,对云服务器端返回的结果进行解密。其次,云服务器端的操作细节对用户端是不透明的。云服务端可能为了自己的经济利益,减少计算次数;同时,黑客可以通过各种攻击方式控制云服务器,从而篡改数据,不按照协议执行,甚至不执行,返回错误的结果。因此,检验云服务器端返回结果的正确性是外包计算第二个问题。

现阶段安全外包计算重点关注计算复杂度高且数据量大的科学计算。例如大规模的矩阵乘法、矩阵求逆、线性方程组以及线性规划、序列比较等。

矩阵乘法计算问题的计算形式为Z=XY,其中X是维数m×n矩阵,Y是维数n×s矩阵,Z是维数m×s矩阵,m,n,s是矩阵的维数大小。矩阵X、Y为输入数据,矩阵Z是输出数据(计算结果)。针对矩阵乘法安全外包计算算法,2014年,Lei等人在期刊Information Sciences卷280页205–217上发表“Achieving security,robust cheating resistance,and high-efficiency for outsourcing large matrix multiplication computation to amalicious cloud”(面向恶意云的安全、防欺骗、高效外包大规模矩阵乘法计算)。矩阵乘法外包软件完成,矩阵乘法外包软件如图1所示,由五个模块组成,五个模块为密钥模块、加密模块、计算模块、验证模块、解密模块。其中密钥模块、加密模块、验证模块、解密模块安装在用户端。计算模块安装在云服务器端。密钥模块根据矩阵规模生成密钥,把密钥发送到加密模块以及解密模块。加密模块利用密钥对矩阵乘法问题加密生成加密的矩阵乘法问题,并把加密的矩阵乘法问题发送到计算模块。计算模块接收加密的矩阵乘法问题,计算加密的矩阵乘法问题,将计算结果发送给验证模块。验证模块对计算模块返回的计算结果进行验证,若计算结果通过验证,把计算结果发送给解密模块,否则,返回给计算模块重新计算。解密模块利用密钥对通过验证的计算结果解密获得最终的计算结果。该方案包括以下步骤:

第一步,构造矩阵乘法外包软件,从输入文件读入要进行矩阵乘法计算的矩阵X和矩阵Y,X是维数m×n矩阵,Y是维数n×s矩阵,m,n,s是正整数。

第二步,密钥模块根据矩阵规模生成密钥。

2.1密钥模块根据m,n,s的值,其中m,n,s为矩阵的维数大小,生成1,2,…,m的置换函数π1,1,2,…,n的置换函数π2,1,2,…,s的置换函数π3

2.2密钥模块根据置换函数π1,π2,π3随机选取m+n+s个随机值r1,...,rm,rm+1,...,rm+n,rm+n+1,...,rm+n+s。根据公式(1)、(2)、(3)分别生成m个维数为m×m的初等转换矩阵A1,…,Ae,…,Am(1≤e≤m),n个维数为n×n初等转换矩阵B1,…,Bf,…,Bn(1≤f≤n),s个维数为s×s初等转换矩阵C1,…,Cg,…,Cs(1≤g≤s)。

其中Ae(i1,j1)为矩阵Ae第i1行第j1列元素,Bf(i2,j2)为矩阵Bf第i2行第j2列元素,Cg(i3,j3)为矩阵Cg第i3行第j3列元素。

2.3密钥模块计算P1=A1×A2×…×Am,P1-1=A1-1×A2-1×…×Am-1,P2=B1×B2×…×Bn,P2-1=B1-1×B2-1×…×Bn-1,P3=C1×C2×…×Cs,P3-1=C1-1×C2-1×…×Cs-1

2.4以上生成的参数构成密钥SK={P1,P2,P3,π1,π2,π3,r1,...,rm+n+s}。

第三步,加密模块利用密钥加密矩阵乘法问题。

3.1加密模块计算X′=P1×X×P2-1,其中矩阵X′第i4行第j4列元素为也就是说,矩阵X′第i4行第j4列元素为矩阵X第π1(i4)行第π2(j4)列元素乘以获得。

3.2加密模块计算Y′=P2×Y×P3-1,其中矩阵Y′第i5行第j5列元素为也就是说,矩阵Y′第i5行第j5列元素为矩阵Y第π2(i5)行第π3(j5)列元素乘以获得。

3.3加密模块把加密的矩阵X′和Y′发送给云服务器端的计算模块。

第四步,计算模块计算加密的矩阵乘法问题。

4.1计算模块从用户端的加密模块接收加密的矩阵X′和Y′后,计算Z′=X′×Y′。

4.2将计算结果Z′发送给用户端的验证模块。

第五步,验证模块验证计算结果。

5.1验证模块生成l个随机向量ri(i∈[1,l]),其中ri为维数s×1的列向量,l值大小由验证模块随机选择。

5.2验证模块验证X′×(Y′×ri)是否等于Z′×ri

5.3若相等,表示验证通过,验证模块接受计算结果Z′,转第六步;否则,拒绝计算结果Z′,转第四步。

第六步,解密模块解密最终的计算结果。

6.1根据密钥P1,P3和通过验证的计算结果Z′,解密模块计算Z=P1-1×Z′×P3,获得计算结果Z。

由第三步3.1和3.2看出,这种矩阵乘法外包方案只保护了输入矩阵X和Y中非零元素的隐私,忽略了零元素个数的保护,导致了数据隐私泄露。

发明内容

本发明要解决的技术问题在于克服现有技术泄露数据隐私的不足,提供一种面向云计算的矩阵乘法安全外包过程中安全加密方法,相比现有的方案,能更好地保护矩阵乘法输入数据隐私。

本发明面向云计算的矩阵乘法外包过程中安全加密方法通过改进背景技术矩阵乘法安全外包计算算法中矩阵乘法外包软件完成。改进后的矩阵乘法外包软件也由密钥模块、加密模块、计算模块、验证模块、解密模块组成。其中密钥模块、加密模块、验证模块、解密模块安装在用户端。计算模块安装在云服务器端。

本发明技术方案是:

第一步,改进矩阵乘法外包软件,改进后的矩阵乘法外包软件也由密钥模块、加密模块、计算模块、验证模块、解密模块组成,其中计算模块、验证模块没有改变,密钥模块、加密模块、解密模块都与背景技术矩阵乘法外包软件中的相应模块不同。把密钥模块、加密模块、验证模块、解密模块安装在用户端,计算模块安装在云服务器端。加密模块利用密钥对矩阵乘法问题加密生成加密的矩阵乘法问题,并把加密的矩阵乘法问题发送到计算模块。计算模块接收加密的矩阵乘法问题,计算加密的矩阵乘法问题,将计算结果发送给验证模块。验证模块对计算模块返回的计算结果进行验证,若计算结果通过验证,把计算结果发送给解密模块,否则,返回给计算模块重新计算。解密模块利用密钥对通过验证的计算结果解密获得最终的计算结果。从输入文件读入要进行矩阵乘法计算的矩阵X和矩阵Y。

第二步,密钥模块根据矩阵规模生成密钥。

2.1密钥模块根据矩阵的维数m,n,s的值选择一个正整数k,k值的范围为2≤k≤0.01×min(m,n,s),其中min(m,n,s)表示m,n,s中的最小值。

2.2密钥模块生成采用随机函数(如Matlab语言和C语言中的srand和rand函数)生成4k个随机向量a1,…,ak,b1,…,bk,c1,…,ck,d1,…,dk,其中a1,…,ak为维数为m×1的列向量,b1,…,bk,c1,…,ck为维数为n×1的列向量,d1,…,dk为维数为s×1的列向量。以上生成的向量构成密钥SK={a1,…,ak,b1,…,bk,c1,…,ck,d1,…,dk}。

第三步,加密模块利用密钥加密矩阵乘法问题。

3.1加密模块生成矩阵Z1和Z2

3.2加密模块计算X′=X+Z1,其中矩阵X′第i6行第j6列元素为X′(i6,j6)=X(i6,j6)+Z1(i6,j6)(1≤i6≤m,1≤j6≤n),也就是说,第i6行第j6列元素为矩阵X第i6行第j6列元素加上矩阵Z1第i6行第j6列元素获得。

3.3加密模块计算Y′=Y+Z2,其中矩阵Y′第i7行第j7列元素为Y′(i7,j7)=Y(i7,j7)+Z2(i7,j7)(1≤i7≤n,1≤j7≤s),也就是说,矩阵Y′第i7行第j7列元素为矩阵Y第i7行第j7列元素加上矩阵Z2第i7行第j7列元素获得。

3.4加密模块把加密的矩阵X′和Y′发送给云服务器端的计算模块。

第四步,计算模块计算加密的矩阵乘法问题。

4.1计算模块从用户端的加密模块接收加密的矩阵X′和Y′后,计算Z′=X′×Y′。

4.2将计算结果Z′发送给用户端的验证模块。

第五步,验证模块验证计算结果。

5.1验证模块生成l个随机向量ri(i∈[1,l]),其中ri为维数s×1的列向量,l值大小由验证模块随机选择。

5.2验证模块验证X′×(Y′×ri)是否等于Z′×ri

5.3若相等,表示验证通过,验证模块接受计算结果Z′,转第六步;否则,拒绝计算结果Z′,转第四步。

第六步,解密模块解密最终的计算结果。

6.1解密模块计算矩阵S:

6.2解密模块计算Z=Z′-S,获得计算结果Z。

采用本发明可以达到以下技术效果:

为了保护输入矩阵的隐私,本发明在第三步3.3和3.4加密模块对输入矩阵X、Y分别加上矩阵Z1和Z2,加密了矩阵X、Y中的每个元素,保护了每个元素的隐私,包括零元素的个数,更好地保护了输入数据的隐私。

附图说明

图1为背景技术矩阵乘法外包软件的逻辑结构图。

图2为本发明的流程图。

具体实施方式

下面对本发明的具体实施方式进行描述。如图2所示,本发明包括以下步骤:

第一步,改进矩阵乘法外包软件,从输入文件读入要计算的矩阵X和矩阵Y。

第二步,密钥模块根据矩阵规模生成密钥:

2.1,密钥模块确定正整数k。

2.2,密钥模块随机生成4k个向量a1,…,ak,b1,…,bk,c1,…,ck和d1,…,dk

第三步,加密模块对矩阵乘法问题加密:

3.1,加密模块根据第二步2.2密钥SK={a1,…,ak,b1,…,bk,c1,…,ck,d1,…,dk}生成矩阵Z1和Z2

3.2,矩阵X加上矩阵Z1,实现对矩阵X的加密。

3.3,矩阵Y加上矩阵Z2,实现对矩阵Y的加密。

3.4,加密模块把加密的矩阵X′和Y′发送给云服务器端的计算模块。

第四步,计算模块计算加密的矩阵乘法问题:

4.1,云服务器的计算模块执行对Z′=X′×Y′的计算。

4.2,将Z′发送给用户端的验证模块。

第五步,验证模块验证计算结果:

5.1,验证模块生成l个随机向量ri

5.2,验证模块验证X′×(Y′×ri)是否等于Z′×ri

5.3,若相等,表示验证通过,验证模块接受计算结果Z′,转第六步;否则,拒绝计算结果Z′,转第四步。

第六步,解密模块解密最终的计算结果:

6.1,解密模块根据第二步2.2密钥SK={a1,…,ak,b1,…,bk,c1,…,ck,d1,…,dk}计算矩阵S。

6.2,计算Z=Z′-S,获得最终的计算结果Z。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号