一种安全高效的外包计算实现方法和系统与流程

文档序号:12809097阅读:310来源:国知局
一种安全高效的外包计算实现方法和系统与流程
本发明属于信息安全
技术领域
,涉及外包计算协议的设计方案,具体为基于功能加密方案的安全外包计算实现方法和系统,能够保证协议执行的安全性和整体高效性。
背景技术
:随着云计算的发展,外包计算得到越来越广泛的应用。外包计算是指计算能力弱的客户将其计算任务交给外部服务器让其帮忙完成计算,服务器完成计算后将计算结果返回给客户。外包计算协议的设计需要满足三个主要特性:正确性、安全性、高效性。正确性是指服务器诚实的执行协议所得到的结果,返回给客户之后一定能够通过验证;安全性是指若服务器返回了错误的计算结果,客户端会验证失败并拒绝接受;高效性是指客户端的计算量要远小于直接计算函数的计算量,否则就失去了外包计算的意义。除此之外,还需要考虑客户数据的保密性,因为在一些场景下客户可能不希望服务器知道自己的外包数据。外包计算场景下,因为服务器不一定是诚实的,因此客户需要验证服务器返回结果的正确性(或称可靠性)。交互的证明可以用来帮助服务器向客户证明计算结果的正确性。基于概率可验证证明的论证系统的提出可以用来实现高效的外包计算方案。micali在所著的论文“csproofs”中利用随机预言机模型提出了非交互的外包计算方案。goldwassers,linh,rubinsteina在所著论文“delegationofcomputationwithoutrejectionproblemfromdesignatedverifiercs-proofs”中针对任意多项式时间可计算的函数设计了非交互的证明系统,用其所设计的外包计算方案满足客户端计算的高效性。不过上述工作均关注服务器返回结果的可靠性,没有考虑客户外包数据的保密性。后续又有不少工作对外包计算展开研究。外包计算可以分为对具体函数的外包计算和对一般函数的外包计算。针对具体函数,因为函数结构特点明确,比较容易设计出高效安全的外包计算协议,这方面已有不少优秀成果。一直以来,设计一般函数的满足保密性的外包计算协议是一项困难的工作。直到2009年gentry全同态加密方案的提出在理论上解决了满足保密性的一般函数外包计算协议的存在性问题。在gennaror,gentryc和parnob所著的论文“non-interactiveverifiablecomputing:outsourcingcomputationtountrustedworkers”中,作者利用全同态加密方案和yao的错乱电路(garbledcircuit)实现了针对一般函数的外包计算协议。通过全同态加密解决了错乱电路在外包计算中不能重复利用的问题。协议分为离线阶段和在线阶段:在离线阶段,客户进行预处理计算,并将算得的一部分消息公开传送给服务器;在线阶段,客户将外包数据的编码发送给服务器,服务器进行运算后返回运算结果,最后客户对结果进行验证和恢复。在其方案中,客户的外包数据、函数和运算结果对服务器都是保密的,客户可以利用错乱电路中的标签来验证服务器返回结果的可靠性。通过多次运行在线阶段,客户的运算效率在平均意义下是高效的。随后,在chungkm,kalaiy和vadhans所著的论文“improveddelegationofcomputationusingfullyhomomorphicencryption”中,作者利用全同态加密方案,根据密文的不可区分性设计了新的针对一般函数的外包计算协议。相比gennaro等人的工作,chung等人的方案也分为离线阶段和在线阶段,不过在离线阶段客户不需要向服务器发送任何数据。同样的,客户的计算也是在平均意义下才算高效。鉴于上述两种方案的预处理都需要较大计算量,且全同态加密目前实现效率并不高,ananthp和chandrann等人在论文“achievingprivacyinverifiablecomputationwithmultipleservers–withoutfheandwithoutpre-processing”中研究不需要预处理和全同态加密的外包计算协议,通过使用多个服务器(n>=2)来协同完成客户的计算任务。其基本思想是,将gennaro等人工作中的预处理运算(产生错乱电路的运算)也交给服务器去做,最后一个服务器负责完成函数计算。他们的方法减轻了客户的计算量,不过每次执行外包计算时服务器都需要重新产生错乱电路。这是因为错乱电路不能够直接重复使用,否则会破坏外包协议的可靠性和保密性。重复产生错乱电路增加了服务器端的计算代价,反过来增加了客户的开销成本。从目前的研究工作来看,针对一般函数的外包计算现在面临的主要问题仍是效率问题。技术实现要素:已有的针对一般函数的安全外包计算协议,要么客户端计算量在平均意义下才高效,要么服务器计算效率不高(在每次执行协议时都需要产生错乱电路)。为了提高外包计算协议的整体高效性,本发明设计了基于功能加密方案的外包计算协议,在降低客户计算量的同时,降低了服务器的计算量。为实现上述目的,本发明采取如下技术方案:一种安全高效的外包计算实现方法,其步骤包括:1)客户端利用功能加密方案产生两个独立的公私钥对;2)客户端将两个公私钥对中的私钥和与外包计算函数相关的函数分别发送给两个服务器;3)两个服务器分别产生函数对应的解密密钥,并将结果发送给对方;4)客户端利用两个公私钥对中的公钥对消息和随机数加密,并分别将密文发送给两个服务器;5)两个服务器分别采用解密密钥对密文进行解密,并返回计算结果给客户端;6)客户端验证两个服务器返回的计算结果,验证通过则得到外包计算函数的值,否则拒绝。具体来说,本发明的外包计算协议中,有一个客户(或称客户端,用d表示)和两个服务器(s1,s2),外包计算函数为f,输入为x。假设至少有一个服务器是半诚实的(本发明所述“半诚实”是指参与方诚实地执行协议,可以记录中间结果并推导有用的信息,但不能修改中间结果)。协议执行过程如下:1)客户利用功能加密方案产生两个独立的公私钥对(mpk1,msk1),(mpk2,msk2),定义与函数f相关的函数g:函数g的输入为三元组(x,s1,s2),若f(x)=0,则函数g输出s1,若f(x)=1,则输出s2,否则中止;2)客户将msk1和函数g发送给第一个服务器s1;3)客户将msk2和函数g发送给第二个服务器s2;4)服务器s1用功能加密方案的密钥产生算法产生对应于函数g的解密密钥sk1g;将sk1g发送给服务器s2;5)服务器s2用功能加密方案的密钥产生算法产生对应于函数g的解密密钥sk2g,将sk2g发送给服务器s1;6)客户输入为x,选择随机数r1,r2,r3,r4;7)客户用功能加密方案的公钥mpk1加密(x,r1,r2),得到密文c1,将其发送给服务器s2;8)客户用功能加密方案的公钥mpk2加密(x,r3,r4),得到密文c2,将其发送给服务器s1;9)服务器s2用私钥sk1g解密c1,得到结果z1,并将z1返回给客户;10)服务器s1用私钥sk2g解密c2,得到结果z2,并将z2返回给客户;11)客户验证两个服务器返回的值,若两个服务器的返回值都通过随机数验证且对应的函数值相等,则客户接受,得到f(x),否则客户拒绝。一种安全高效的外包计算实现系统,包括客户端和两个服务器;所述客户端利用功能加密方案产生两个独立的公私钥对,将两个公私钥对中的私钥和与外包计算函数相关的函数分别发送给所述两个服务器;所述两个服务器分别产生函数对应的解密密钥,并将结果发送给对方;所述客户端利用两个公私钥对中的公钥对消息和随机数加密,并分别将密文发送给所述两个服务器;所述两个服务器分别采用解密密钥对密文进行解密,并返回计算结果给客户;所述客户端验证两个服务器返回的计算结果,验证通过则得到外包计算函数的值,否则拒绝。本发明与现有技术相比,客户端的计算量只包含主密钥产生、密文生成和简单的对比验证,与外包函数f无关;服务器端在第一次执行协议时产生对应于函数g的解密密钥,后续不需要再重新产生解密密钥,只需进行函数运算即可(高效性)。通过使用功能加密,客户的数据x对两个服务器(s1,s2)都是保密的(保密性)。在加密输入x时,通过引入两个保密的随机数,使得最后服务器返回的结果可以被客户验证(结果可靠性)。因此本发明提供了一种整体高效安全的外包计算协议设计方法。附图说明图1是本发明的协议初始预备阶段示意图。协议运行初始阶段,客户将产生的两个主私钥和函数分别发送给两个服务器(假设信道为秘密信道),两个服务器分别产生函数对应的解密密钥,并将结果发送给另一个服务器。图2是本发明的外包计算协议执行阶段示意图。协议计算执行阶段,客户用两个不同的公钥对消息和随机数加密,分别发送给两个服务器。服务器做完运算后,返回计算结果给客户。客户验证结果,验证通过则得到函数值,否则拒绝。图3是本发明的外包计算的替代协议的预备阶段示意图。图4是本发明的外包计算协议的替代协议的验证操作示意图。具体实施方式为使本发明的上述目的、特征和优点能够更加明显易懂,下面通过具体实施例和附图,对本发明做进一步说明。功能加密方案是一种细粒度的加密方案,解密者利用解密密钥可以获得明文对应的函数值,但不知道其他有关明文的信息。这一特性可以很好的应用在外包计算当中,因为客户希望服务器完成计算,但不希望泄漏外包数据x的值。功能加密是指解密方有消息x的密文c和函数f对应的解密密钥skf,只能解密得到消息的函数值f(x),但不能知道其他有关x的信息。功能加密算法的定义如下:功能加密算法fe={setup,keygen,enc,dec}setup(1k):算法输入安全参数k,输出一对公私钥(mpk,msk).keygen(msk,f):算法输入主私钥msk和函数f,输出相应的密钥skf.enc(mpk,x):加密算法输入公钥mpk和消息x,输出密文c.dec(skf,c):解密算法输入密钥skf和密文c,输出f(x).一个直接的想法是,客户用主私钥产生对应于函数f的私钥skf,然后将x的密文和skf发送给服务器,让服务器去做解密运算,之后把f(x)返回给客户。不过这个协议中,客户产生私钥skf的计算量和计算函数f的计算量相当,因此客户的效率并不高。为了降低客户的计算量,我们考虑将计算skf的任务交给一个服务器,然后让另一个服务器完成外包计算任务。我们假设至少有一个服务器是半诚实的,为了保证计算结果的可靠性,我们让两个服务器都参与计算。具体思想是构造新的函数g,输入为外包数据x和两个随机数s1,s2,若f(x)=0,则输出s1,若f(x)=1,则输出s2。通过这种方法来抵抗服务器的恶意行为。协议中,客户记为d,两个服务器分别记为(s1,s2),外包计算函数为f,外包数据为x。客户需要将计算f(x)的任务外包给两个服务器。假设协议中至少有一个服务器是半诚实的。协议执行的预备阶段如图1所示,协议执行阶段如图2所示,具体过程如下:1)客户执行两次功能加密方案的setup算法,输出两对公私钥对(mpk1,msk1),(mpk2,msk2)。定义与函数f相关的函数g:函数g的输入为三元组(x,r1,r2),若f(x)=0,函数g输出r1,若f(x)=1,函数g输出r2。2)客户将msk1和函数g发送给第一个服务器s1。这里我们假设信道为秘密信道,在公开信道上,客户可以用服务器s1的公钥加密消息(msk1,g)后发送给s1。3)客户将msk2和函数g发送给第二个服务器s2;4)服务器s1运行功能加密方案的密钥产生算法keygen,输入(msk1,g),输出对应于函数g的解密密钥sk1g。服务器s1将sk1g发送给服务器s2;5)服务器s2运行功能加密方案的密钥产生算法keygen,输入(msk2,g),输出对应于函数g的解密密钥sk2g。服务器s2将sk2g发送给服务器s1;6)客户选择四个随机数r1,r2,r3,r4;7)客户用功能加密方案的公钥mpk1加密(x,r1,r2),得到密文c1,将c1发送给服务器s2;8)客户用功能加密方案的公钥mpk2加密(x,r3,r4),得到密文c2,将c2发送给服务器s1;9)服务器s2用私钥sk1g解密c1,得到结果z1,并将z1返回给客户;10)服务器s1用私钥sk2g解密c2,得到结果z2,并将z2返回给客户;11)客户验证两个服务器返回的值:验证z1是否与r1或r2相等,z2是否与r3或r4相等,若z1=r1且z2=r3,则客户输出f(x)=0,若z1=r2且z2=r4,则客户输出f(x)=1,否则客户拒绝。本发明利用功能加密方案,采用两个服务器的外包计算模型,实现了外包数据的保密,且极大的降低了客户的计算量(客户计算量和函数f无关)。因为功能加密算法的解密密钥可以重复使用,因此服务器只需产生一次有关函数f的解密密钥,后续只需进行解密运算即可。另外,为了实现计算结果的正确性,本发明在输入部分引入两个保密的随机数,实现客户对服务器返回结果的验证。因此本发明设计的外包计算协议满足保密性、安全性和整体高效性。下面表1是本发明与现有技术的计算量对比。与现有技术相比,本发明在保证客户计算量较低的前提下,减少了服务器的计算量,实现了整体高效安全的外包计算协议。表1.本发明与现有技术的计算量对比工作客户计算量服务器计算量gennaro等人[ggp10]与f相关,平均意义下高效计算函数fchung等人[ckv10]与f相关,平均意义下高效计算2k个函数fananth等人[acg+14]与f无关计算错乱电路和函数f本发明与f无关平均意义下:计算函数f本发明提供了安全的外包计算方法,客户可以通过对比操作验证返回结果正确与否。在此基础上,如果客户希望知道哪一个服务器是恶意的。可以采取如下替代协议。替代协议的预备阶段如图3所示,协议执行计算过程仍如图2所示,另外在最后添加了进一步的验证操作,如图4所示。替代协议的具体过程如下:1)客户执行两次功能加密方案的setup算法,输出两对公私钥对(mpk1,msk1),(mpk2,msk2)。定义与函数f相关的函数g:函数g的输入为三元组(x,r1,r2),若f(x)=0,函数g输出r1,若f(x)=1,函数g输出r2。2)客户将msk1和函数g发送给第一个服务器s1。这里我们假设信道为秘密信道,在公开信道上,客户可以用服务器s1的公钥加密消息(msk1,g)后发送给s1。3)客户将msk2和函数g发送给第二个服务器s2;4)服务器s1运行功能加密方案的密钥产生算法keygen,输入(msk1,g),输出对应于函数g的解密密钥sk1g。服务器s1将sk1g发送给服务器s2;5)服务器s2运行功能加密方案的密钥产生算法keygen,输入(msk2,g),输出对应于函数g的解密密钥sk2g。服务器s2将sk2g发送给服务器s1;6)服务器s1计算哈希函数h(sk1g),h(sk2g),将它们发送给客户;7)服务器s2计算哈希函数h(sk1g),h(sk2g),将它们发送给客户;8)客户验证两个服务器返回的哈希值是否对应相等,若相等,则继续,否则中止;9)客户选择四个随机数r1,r2,r3,r4;10)客户用功能加密方案的公钥mpk1加密(x,r1,r2),得到密文c1,将c1发送给服务器s2;11)客户用功能加密方案的公钥mpk2加密(x,r3,r4),得到密文c2,将c2发送给服务器s1;12)服务器s2用私钥sk1g解密c1,得到结果z1,并将z1返回给客户;13)服务器s1用私钥sk2g解密c2,得到结果z2,并将z2返回给客户;14)客户验证两个服务器返回的值:验证z1是否与r1或r2相等,z2是否与r3或r4相等,若z1=r1且z2=r3,则客户输出f(x)=0,若z1=r2且z2=r4,则客户输出f(x)=1,否则继续执行15);15)客户采用goldwasser等人在文章“delegationofcomputationwithoutrejectionproblemfromdesignatedverifiercs-proofs”中的证明系统(记为l),运行l的set-up算法产生函数keygen(msk1,·)所对应的公私钥(pp1,sp1),产生函数keygen(msk2,·)所对应的公私钥(pp2,sp2)。将pp1发送给服务器s1,将pp2发送给s2;16)服务器s1执行证明系统l中的证明者算法,产生证明π1,发送(sk1g,π1)给客户,同样的服务器s2产生证明π2,发送(sk2g,π2)给客户。17)客户计算h(sk1g)和h(sk2g),验证是否和步骤6)、7)中收到的哈希值对应相等,若存在不等,则判定相应的服务器为恶意,终止,否则继续。客户运行证明系统l的验证者算法,用收到的消息和私钥sp1,sp2分别验证证明π1和π2是否成立,若πi(i∈{1,2})验证失败,则对应的服务器si为恶意,终止,否则继续。客户判断哪个服务器返回的zi(i∈{1,2})在步骤14)中判等失败,即zi和客户所选的随机数不存在相等关系,则相应的服务器为恶意,终止。其中πi是服务器si向客户证明其返回的skig是诚实产生的。证明系统l中验证者(在这里是客户)的计算复杂度与函数keygen(mski,·)的计算复杂度的对数相关。因为功能加密方案中算法keygen(mski,·)的计算复杂度和函数f的计算复杂度相当。因此此替代方案中,客户的计算量与函数f对数log(|f|)相关,相比gennaro等人和chung等人的工作,此方案仍是高效的。此替代方案可以帮助客户在验证失败后,获知谁是恶意的服务器。另外我们约定,在步骤14)后,若有服务器拒绝执行步骤16)而提前选择中止,则判定此服务器为恶意。本发明的拓展实施方式:将功能加密方案替换为多输入的功能加密方案,适用于多客户的外包计算场景。多输入的功能加密方案是单输入功能加密方案的扩展。在多输入功能加密方案中,解密密钥skf所对应的函数f为n元函数,密钥skf的输入为n个密文。给定n个消息(x1,x2,…,xn)的密文,记为(c1,c2,…,cn),和解密密钥skf,解密者可以解密得到f(x1,x2,…,xn)的值。而多客户的外包计算是指n个客户(n>=2)有各自的输入xi,想要将计算f(x1,x2,…,xn)的任务外包给外部服务器。通过将本发明中的功能加密方案替换为多输入的功能加密,可以较直接的设计出多个客户将计算任务外包给两个服务器的外包计算方案。以上实施例仅用以说明本发明的技术方案而非对其进行限制,本领域的普通技术人员可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明的精神和范围,本发明的保护范围应以权利要求书所述为准。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1