可验证的矩阵乘法的安全外包计算方法及系统与流程

文档序号:12462839阅读:308来源:国知局
可验证的矩阵乘法的安全外包计算方法及系统与流程

本发明属于云计算技术领域,具体涉及一种适用于矩阵乘法的安全外包计算方法。



背景技术:

矩阵计算在科学计算和密码学领域中都有着重要的作用。许多密码协议、科学和数值计算问题都涉及到了矩阵计算。然而,对那些计算能力有限的用户来说,独立完成矩阵计算并不是件容易的事情。利用外包计算提供的强大的计算资源,我们能够使得用户的计算能力不再受限于他们的资源约束型设备。在矩阵计算过程中,用户可以将矩阵的计算过程外包给云。这使得计算能力有限的用户能够完成矩阵的计算工作。

随着云计算的不断发展壮大,通过云计算可以使得一个计算能力较弱的客户端将自己比较耗时、耗资源的计算通过外包到云服务器,通过云服务器强大的计算功能和强大的存储能力来高效的获取计算的结果,从而节约时间和资源的消耗。但外包计算也带来一系列的问题,例如客户端无法确认计算结果的正确性,客户端自身数据的隐私等问题。由于云内部的操作细节对用户是不透明的,因此,存在着各种动机,使得云服务器的行为不诚实。例如,对需要大量计算资源的计算,如果用户无法判断云计算输出的正确性,云可能会为了节约资源而“偷懒”而不被用户发现。此外,还可能存在软件bug和恶意的外部攻击,这些都会影响计算结果的质量。所以,云计算环境中的隐私安全、内容安全是云计算研究的关键问题之一。从应用角度出发,一个有效的外包计算协议应该满足3个基本条件:(1)确保用户数据的保密性;(2)确保用户能够验证云计算输出的正确性;(3)确保用户端在这个协议下需要的工作量(包括正确性验证)少于用户独自计算的工作量,否则用户没有必要寻求云的帮助。考虑到以上问题以及要求,在设计如何将矩阵运算外包给云服务器时需要充分考虑用户数据的隐私性以及结果的可验证性。

矩阵乘法不仅在生活中有实际应用,也在图像的处理中起到了关键的作用。但是已存的对矩阵运算的研究方案中,往往对用户的计算能力有一定的要求。本发明专利提出了一个高效的可验证的矩阵乘法的安全外包计算方法。任何用户都可以通过预处理的方式,对矩阵进行一些预计算处理,将处理过的矩阵传给云,让云去计算。云端只是知道处理过后的矩阵,但是不能知道矩阵的真实数据。当计算结果返回给用户的时候,用户可以快速高效的验证云返回的结果是否正确。本方案提出的安全外包方法可以保证数据的隐私性,同时可以高效的实现具有可验证性,避免复杂的验证运算。



技术实现要素:

为了利用云计算处理矩阵乘法的计算,减轻客户端的数据处理压力,使得矩阵乘法可以被更加有效、便利、安全、正确地计算,本专利提出了一种可以适用于矩阵乘法的、将矩阵乘法计算外包给云服务提供商的可验证安全外包计算方法。该方法中,用户上传给云的计算数据是经过预处理计算的,从而保护了用户数据的隐私性。当云返回给用户结果的时候,用户可以高效的验证结果的正确性,避免了云返回给用户错误结果而不被察觉。

为克服上述技术问题,本发明提供一种可验证的矩阵乘法的安全外包计算方法,其包括:

第一步,用户外包,用户将自己耗时的矩阵乘法运算外包给云服务器;

第二步,云服务器计算,云服务器接收矩阵和运算之后,利用自己强大的计算资源进行矩阵乘法的计算,计算完成后将计算结果返回给用户;

第三步,用户恢复与验证,用户接收云返回的计算结果,并且验证这个结果的正确性。

其中,所述第一步进一步包括两个子步骤,分别为:

第a步,预处理;

第b步,盲化。

其中,所述第a步更进一步具体为,首先用户随机选择两个数字i和j,使得i和j满足条件1≤i,j≤n。然后取出矩阵M1的第i行和矩阵M2的第j列,分别是{ai1,ai2,...,ain}和{b1j,b2j,...,bnj}T({b1j,b2j,...,bnj}T是{b1j,b2j,...,bnj}的转置);用户计算c存储在用户端,由用户秘密保存,这里的c值恰好是矩阵M中第i行第j列的数值,这个值将用于用户对结果的验证。

其中,所述第b步更进一步具体为用户从矩阵池中选择三个稀疏矩阵P1、P2和P3以及各自的逆矩阵P1-1、P2-1和P3-1,将这六个矩阵秘密存储于用户端,这六个矩阵将会用于矩阵的盲化处理和结果的恢复,其中的盲化过程是:X1=P1M1P2-1,X2=P2M2P3-1,矩阵P1-1和P3将在结果的恢复过程中被使用。

其中,所述第二步云计算步骤具体为用户C将预处理后的矩阵X1和X2交付给云服务器s,云服务器s对矩阵进行矩阵的乘法计算Y=X1X2,并将计算结果Y返回给用户C。

其中,所述第三步用户恢复与验证步骤具体为用户C需要从s返回的结果Y中恢复出矩阵M1和M2相乘的结果M并验证其正确性。

本发明还提供了可验证的矩阵乘法的安全外包计算系统,其包括:

预处理模块,首先用户随机选择两个数字i和j,使得i和j满足条件1≤i,j≤n。然后取出矩阵M1的第i行和矩阵M2的第j列,分别是{ai1,ai2,...,ain}和{b1j,b2j,...,bnj}T({b1j,b2j,...,bnj}T是{b1j,b2j,...,bnj}的转置);用户计算c存储在用户端,由用户秘密保存,这里的c值恰好是矩阵M中第i行第j列的数值,这个值将用于用户对结果的验证;

盲化模块,用户从矩阵池中选择三个稀疏矩阵P1、P2和P3以及各自的逆矩阵P1-1、P2-1和P3-1,将这六个矩阵秘密存储于用户端,这六个矩阵将会用于矩阵的盲化处理,盲化阶段的处理过程是X1=P1M1P2-1,X2=P2M2P3-1,矩阵P1-1和P3将在结果的恢复过程中被使用;

计算模块,用户C将预处理后的矩阵X1和X2交付给云服务器s,云服务器s对矩阵进行矩阵的乘法计算Y=X1X2,并将计算结果Y返回给用户C;

恢复与验证模块,具体为用户C需要从s返回的结果Y中恢复出矩阵M1和M2相乘的结果M并验证其正确性。

有益的技术效果

(1)本发明中使用外包计算来实现矩阵乘法的运算。在预处理阶段,用户需要计算的用于验证的值c,这个过程需要的是数据对应相乘并求和的运算。在对矩阵的盲化操作中,用户只需要选择在本地秘密存储稀疏矩阵对原矩阵进行乘法运算,此过程的计算量为O(n2)。对矩阵的盲化操作使得矩阵的乘法计算可以在保证信息机密性不被破坏的情况下,外包给云服务器执行,这极大减轻了客户端的计算压力。

(2)用户从云服务器处得到计算得到的数据后,只需执行两次稀疏矩阵的矩阵乘法运算即可恢复真实的运算结果,这个阶段的计算量为O(n2)。同时用户可以对恢复出得运算结果进行验证,验证过程只需要获得本地在预处理阶段计算的值c,然后与矩阵中的某个值作比较,便可以验证结果是否正确。这个验证过程的计算量是O(1)。确保云服务器是诚实工作的,没有欺骗用户。

(3)方案使用单一的云服务器的安全模型,使得用户只需与一个云进行交互,并且用户交给云服务器处理的数据是经过盲化后的数据,云服务器不能从得到的矩阵中或者真实的矩阵信息,从而避免了多个服务器可能存在的合谋攻击,提高了方案的健壮性。

(4)通过该方案使得大量的计算从用户端转移到了云端,用户也只需执行高效、简单的操作即可恢复出结果,在用户端,用户需要的计算量和存储空间都非常少。

附图说明

图1为单一服务器的外包计算的系统模型。

图2为预处理阶段和盲化阶段示意图。

图3为恢复及验证结果的示意图。

具体实施方式

本发明提供的可验证的矩阵乘法的安全外包计算方法参与成员包括用户C和云服务器S,这里用户C用于表示计算能力有限的用户。而云服务器S有足够强大的计算能力并且可以以按需付费的方式提供给用户使用。在使用的过程中,用户将自己耗时的计算矩阵乘法运算外包到云服务器,云服务器接收矩阵和运算之后,利用自己强大的计算资源进行矩阵乘法的运算,计算完成后将计算结果返回给用户。用户接收云返回的计算结果,并且验证这个结果的正确性。

本发明提供的安全外包计算方法使用的相关理论如下:

矩阵乘法

矩阵相乘只有在第一个矩阵的列数和第二个矩阵的行数相同时才有意义。

设A为m×p的矩阵,B为p×n的矩阵,那么矩阵A和矩阵B的乘积是C,矩阵C是m×n的矩阵。其中矩阵C中的第i行第j列元素可以表示为:

稀疏矩阵

稀疏矩阵是指矩阵中非零元素的个数远远小于矩阵元素的总数,并且非零元素的分布没有规律的矩阵。通常认为矩阵中非零元素的总数比上矩阵所有元素总数的值小于等于0.05时,则称该矩阵为稀疏矩阵,该比值称为这个矩阵的稠密度;与之相区别的是,如果非零元素的分布存在规律(如上三角矩阵、下三角矩阵、对角矩阵),则称该矩阵为特殊矩阵。

本发明提供一种可验证的矩阵乘法的安全外包计算方法,其包括:

第一步,用户外包,用户将自己耗时的计算矩阵乘法运算外包给云服务器;

第二步,云服务器计算,云服务器接收矩阵和运算之后,利用自己强大的计算资源进行矩阵乘法的计算,计算完成后将计算结果返回给用户;

第三步,用户恢复与验证,用户接收云返回的计算结果,并且验证这个结果的正确性。

考虑实际的应用场景,这里假设:M1和M2是两个n×n的矩阵,其中把M1和M2的乘积记作M,即M=M1M2。用户可以接入一个稀疏矩阵池,这个矩阵池中有足够多的稀疏矩阵以及对应的稀疏矩阵的逆矩阵,即:池中有足够多的稀疏矩阵对(Q,Q-1),Q-1是稀疏矩阵Q的逆矩阵。

所述第一步进一步包括两个子步骤,分别为:

第a步,预处理;

第b步,盲化。

所述第a步更进一步具体为,首先用户随机选择两个数字i和j,使得i和j满足条件1≤i,j≤n。然后取出矩阵M1的第i行和矩阵M2的第j列,分别是{ai1,ai2,...,ain}和{b1j,b2j,...,bnj}T({b1j,b2j,...,bnj}T是{b1j,b2j,...,bnj}的转置);用户计算c存储在用户端,由用户秘密保存,这里的c值恰好是矩阵M中第i行第j列的数值,这个值将用于用户对结果的验证。

所述第b步更进一步具体为用户从矩阵池中选择三个稀疏矩阵P1、P2和P3以及各自的逆矩阵P1-1、P2-1和P3-1,将这六个矩阵秘密存储于用户端,这六个矩阵将会用于矩阵的盲化处理,X1=P1M1P2-1,X2=P2M2P3-1,矩阵P1-1和P3将在结果的恢复过程中被使用。

所述第二步云计算步骤具体为用户C将预处理后的矩阵X1和X2交付给云服务器s,云服务器s对矩阵进行矩阵的乘法计算Y=X1X2,并将计算结果Y返回给用户C。

所述第三步用户恢复与验证步骤具体为用户C需要从s返回的结果Y中恢复出矩阵M1和M2相乘的结果M并验证其正确性。

所述预处理步骤进一步包括:

第a’步,选择两个随机数i,j,并且使得1≤i,j≤n,验证值c的计算;

第b’步,取矩阵M1的第i行{ai1,ai2,...,ain};取矩阵M2的第j列{b1j,b2j,...,bnj}T({b1j,b2j,...,bnj}T是{b1j,b2j,...,bnj}的转置),计算c存储在用户端,由用户秘密保存,由于M=M1M2,并且所以可以得到由此可以知道c=M(i,j);

第c’步,用户从矩阵池中选择三个稀疏矩阵及对应的逆矩阵,即P1、P2和P3以及对应的逆矩阵P1-1、P2-1和P3-1,这六个矩阵秘密存储于用户端。

所述盲化步骤进一步包括:

第a’步,用户在预处理阶段之后,本地存储有六个矩阵,分别是P1、P2和P3以及各自的逆矩阵P1-1、P2-1和P3-1,用户首先利用稀疏矩阵P1和稀疏矩阵P2的逆矩阵P2-1,计算X1=P1M1P2-1,这个操作对矩阵M1作了行变换和列变换,使得M1的值得到保护

第b’步,为了保护矩阵M2,仍然对其作行变换和列变换,这里用户利用稀疏矩阵P2和稀疏矩阵P3的逆矩阵P3-1,计算X2=P2M2P3-1

第c’步,计算完成后,用户将X1和X2发送给云服务器,并要求服务器计算两个矩阵的乘积,因为P1、P2、P3-1和P2-1是用户秘密保存的,云服务器不能够知道,所以云服务器不能从接收的矩阵X1和X2中获得有关矩阵M1和矩阵M2的信息,达到保护用户信息的目的。

所述云服务器计算更进一步具体包括:

第a’步,服务器在接收到用户发来的矩阵X1和X2之后,计算两个矩阵的乘积,即Y=X1X2

第b’步,计算完成后,云服务器将计算结果Y返回给用户。

所述用户恢复与验证步骤更进一步具体包括:

第a’步,用户端接收云返回的结果Y,因为Y=X1X2,并且X1=P1M1P2-1、X2=P2M2P3-1,所以:

第b’步,根据矩阵乘法的运算规则,利用用户端存储的稀疏矩阵矩阵P1的逆矩阵P1-1和稀疏矩阵P3,用户对矩阵Y左乘P1-1右乘P3,可以得到M1和M2的乘积,即

第c’步,用户经过第二步得到的矩阵T是对云的返回值Y进行解盲化的结果,但是用户需要在本地验证T是否是正确的,用户利用预处理步骤计算并存储在本地的值c来验证结果是否正确,因为c=M(i,j),所以如果解盲化得到的矩阵T的第i行第j列的值如果等于c,那么验证通过,即如果T(i,j)=c等式成立,用户相信云服务器诚实工作并返回了争取的计算结果,用户就可以由Y解盲化得到正确的结果,也就是M=T=P1-1YP3

第d’步,如果第c’步的验证等式T(i,j)=c不成立,用户相信云服务器并没有诚实的去进行计算,用户拒绝接收这个计算结果。

以下采用实施例和附图来详细说明本发明的实施方式,借此对本发明如何应用技术手段来解决技术问题,并达成技术效果的实现过程能充分理解并据以实施。

图1为单一服务器的外包计算的系统模型。图中示意了外包计算模型中有两个参与实体,即用户C和云服务器S。用户C拥有大量的计算昂贵的矩阵计算问题(比如矩阵乘积、矩阵行列式以及矩阵求逆)需要外包给云,而云服务器S拥有大量的计算资源。用户C将计算任务外包给云服务器S。以矩阵乘法运算为例,任何一个想要计算矩阵乘法的用户,都可以通过网络链接到云服务器上,将要计算的任务传给云服务器S。首先C通过网络将其矩阵的数据和任务要求发送给云服务器。然后云服务器按照要求去做矩阵乘法的计算。计算完成之后,云服务器将计算的结果返回给用户。用户在本地验证结果是否正确。

图2为预处理阶段和盲化阶段示意图。图中示意了由用户C进行的预处理计算的过程以及在用户端对矩阵进行的盲化过程。假设M1和M2是要计算的n×n的矩阵,M1和M2的乘积是M,即M=M1M2。在预处理阶段,用户首先随机选择两个数字i,j,使得满足条件1≤i,j≤n。取M1的第i行{ai1,ai2,...,ain};取M2的第j列{b1j,b2j,...,bnj}T({b1j,b2j,...,bnj}T是{b1j,b2j,...,bnj}的转置);计算c存储在用户端,由用户秘密保存。这里的c值恰好是矩阵M中第i行第j列的数值。这个值将用于用户对结果的验证。在盲化阶段,用户从矩阵池中选择三个稀疏矩阵P1、P2和P3以及对应的逆矩阵P1-1、P2-1和P3-1。将这六个矩阵秘密存储于用户端。这六个矩阵将会用于矩阵的盲化处理,X1=P1M1P2-1,X2=P2M2P3-1。矩阵P1-1和P3将在结果的恢复过程中被使用。

图3为恢复及验证结果的示意图。图中示意了用户C需要调出预计算的部分信息,用于验证结果是否正确,从而恢复并验证结果的过程。对于云返回给用户的结果Y,用户需要验证云是否诚实的进行矩阵乘法的计算并且将正确的结果返回。首先用户取出自己存储的稀疏矩阵P1-1和P3,然后计算T=P1-1YP3。得到的矩阵T,容易得到矩阵T中第i行第j列的值T(i,j)。把得到的T(i,j)与本地存储的值c进行比较,看是否相等。如果两个值相等,那么用户相信云诚实的进行了矩阵乘法的运算并把正确结果返回。用户可以从Y中恢复想要的矩阵的乘法的值,即T=P1-1YP3。如果两个值不相等,用户相信结果是不正确的,拒绝接收这个结果。

整个发明实现过程如下:

本专利中系统成员包括:用户C和云服务器s。这里用户用于表示计算能力有限的用户。而云服务器s有足够强大的计算能力并且可以以按需付费的方式提供给用户使用。在使用的过程中,用户将自己耗时的计算矩阵乘法运算外包到云服务器,云服务器接收矩阵和运算之后,利用自己强大的计算资源进行矩阵乘法的运算,计算完成后将计算结果返回给用户。用户接收云返回的计算结果,并且验证这个结果的正确性。

考虑实际的应用场景,这里假设:M1和M2是两个n×n的矩阵,其中把M1和M2的乘积记作M,即M=M1M2。用户可以接入一个稀疏矩阵池,这个稀疏矩阵池中有足够多的可获得矩阵逆的稀疏矩阵,即:池中有足够多的稀疏矩阵对(T,T-1)。

本专利提出的技术方案分为四个阶段:预处理阶段、盲化阶段、计算阶段、恢复与验证阶段。在预处理阶段,首先用户随机选择两个数字i和j,使得i和j满足条件1≤i,j≤n。然后取出矩阵M1的第i行和矩阵M2的第j列,分别是{ai1,ai2,...,ain}和{b1j,b2j,...bnj}T({b1j,b2j,...,bnj}T是{b1j,b2j,...,bnj}的转置);用户计算c存储在用户端,由用户秘密保存。这里的c值恰好是矩阵M中第i行第j列的数值。这个值将用于用户对结果的验证。在盲化阶段,用户从矩阵池中选择三个稀疏矩阵P1、P2和P3以及对应的逆矩阵P1-1、P2-1和P3-1。将这六个矩阵秘密存储于用户端。这六个矩阵将会用于矩阵的盲化处理,X1=P1M1P2-1,X2=P2M2P3-1。稀疏矩阵P1的稀疏矩阵逆矩阵P1-1和稀疏矩阵P3将在结果的恢复过程中被使用。在计算阶段,用户C将预处理后的矩阵X1和X2交付给云服务器s,云服务器s对矩阵进行矩阵的乘法计算Y=X1X2,并将计算结果Y返回给用户C;在恢复与验证阶段,C需要从s返回的结果Y中恢复出矩阵M1和M2相乘的结果M并验证其正确性。下面将给出四个阶段的详细介绍。

预处理阶段:

(1)验证值的用户计算c,选择两个随机数i,j,并且使得1≤i,j≤n。

(2)取矩阵M1的第i行{ai1,ai2,...,ain};取矩阵M2的第j列{b1j,b2j,...,bnj}T({b1j,b2j,...,bnj}T是{b1j,b2j,...,bnj}的转置),计算c存储在用户端,由用户秘密保存,由于M=M1M2,并且所以可以得到由此可以知道c=M(i,j)。

(3)用户从矩阵池中选择三个稀疏矩阵及对应的逆矩阵,即P1、P2和P3以及对应的逆矩阵P1-1、P2-1和P3-1,这六个矩阵秘密存储于用户端。

盲化阶段:

(1)用户在预处理阶段之后,本地存储有六个矩阵,分别是P1、P2和P3以及各自的逆矩阵P1-1、P2-1和P3-1,用户首先利用稀疏矩阵P1和稀疏矩阵P2的逆矩阵P2-1,计算X1=P1M1P2-1,这个操作对矩阵M1作了行变换和列变换,使得M1的值得到保护。

(2)为了保护矩阵M2,仍然对其作行变换和列变换,这里用户利用稀疏矩阵P2和稀疏矩阵P3的逆矩阵P3-1,计算X2=P2M2P3-1

(3)计算完成后,用户将X1和X2发送给云服务器,并要求服务器计算两个矩阵的乘积,因为P1、P2、P3-1和P2-1是用户秘密保存的,云服务器不能够知道,所以云服务器不能从接收的矩阵X1和X2中获得有关矩阵M1和矩阵M2的信息,达到保护用户信息的目的。

计算阶段:

(1)服务器在接收到用户发来的矩阵X1和X2之后,计算两个矩阵的乘积,即Y=X1X2

(2)计算完成后,云服务器将计算结果Y返回给用户。

恢复与验证阶段:

(1)用户端接收云返回的结果Y,因为Y=X1X2,并且X1=P1M1P2-1、X2=P2M2P3-1,所以:

(2)根据矩阵乘法的运算规则,利用用户端存储的稀疏矩阵矩阵P1的逆矩阵P1-1和稀疏矩阵P3,用户对矩阵Y左乘P1-1右乘P3,可以得到M1和M2的乘积,即

(3)用户经过第二步得到的矩阵T是对云的返回值Y进行解盲化的结果,但是用户需要在本地验证T是否是正确的,用户利用预处理步骤计算并存储在本地的值c来验证结果是否正确,因为c=M(i,j),所以如果解盲化得到的矩阵T的第i行第j列的值如果等于c,那么验证通过,即如果T(i,j)=c等式成立,用户相信云服务器诚实工作并返回了争取的计算结果,用户就可以由Y解盲化得到正确的结果,也就是M=T=P1-1YP3

(4)如果第c’步的验证等式T(i,j)=c不成立,用户相信云服务器并没有诚实的去进行计算,用户拒绝接收这个计算结果。

所有上述的首要实施这一知识产权,并没有设定限制其他形式的实施这种新产品和/或新方法。本领域技术人员将利用这一重要信息,上述内容修改,以实现类似的执行情况。但是,所有修改或改造基于本发明新产品属于保留的权利。

以上所述,仅是本发明的较佳实施例而已,并非是对本发明作其它形式的限制,任何熟悉本专业的技术人员可能利用上述揭示的技术内容加以变更或改型为等同变化的等效实施例。但是凡是未脱离本发明技术方案内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与改型,仍属于本发明技术方案的保护范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1