本发明属于云计算安全技术领域,特别涉及一种基于单服务器的安全复合模指数外包计算方法。
背景技术:
随着云计算的发展和移动设备的普及,出现了一种新的服务模式,也就是所谓的外包计算。随着这种新服务模式的出现,资源受限的用户可以选择以按需付费的方式将繁琐的计算任务外包给计算资源丰富的服务器去计算。
尽管外包计算给人们带来了巨大的经济利益,但是它也存在着一些新的安全问题和挑战。首先,云服务器并不一定是完全可信的,并且外包计算的任务经常会包含一些不应该暴露给云服务器的敏感信息。因此,外包计算的首要安全问题就是计算资源的隐私性,云服务器不应该知道任何关于实际参与计算的输入和输出的信息。而普通的加密技术不能完全解决这个问题,因为服务器很难对加密后的信息执行有意义的计算。其次,由于云内部的操作细节对用户是不透明的,因此,很可能存在着各种动机,使得云服务器的行为不诚实。还可能会有一些软件bug和恶意的外部攻击的存在,这些都会影响计算结果的质量。因此,外包计算的第二个安全问题就是它的计算结果的可验证性,使需要外包服务的用户能够检测云服务器返回的结果正确与否,并且要求验证过程的计算量要尽可能的小,否则就失去了外包的意义。
模指数运算是密码系统中最为常见的、最为耗时的运算之一,许多公钥加密、数字签名方案都需要用到模指数运算,因此如何实现模指数的安全外包计算具有重要的现实意义。目前的模指数外包计算方案主要分为基于两个不可信服务器的计算和基于单个不可信服务器的计算。其中,基于两个不可信服务器的模指数外包计算方案很容易遭受共谋攻击,基于单个不可信服务器的模指数外包计算方案其外包计算结果的可验证概率通常不高。
技术实现要素:
本发明提出一种基于单服务器的安全复合模指数外包计算方法,既避免了共谋攻击,又实现了输入信息和输出信息的隐私保护,并且提高了用户对外包计算结果的可验证概率。
为了解决上述技术问题,本发明提供一种基于单服务器的安全复合模指数外包计算方法,用户对原始数据进行隐藏获得盲化数据,然后将盲化数据发送给云服务器;所述对原始数据进行隐藏的方法为:用户利用调用子程序RandN返回的四个数对对模指数ud和(u′)d进行逻辑拆分生成盲化数据然后将盲化数据编成数对(r1,c1),(r1,c2),(l1,w),(k1,w),(l1,w′),(k1,w′);
对模指数ud进行逻辑拆分的过程为,先进行第一个逻辑拆分:再进行第二个逻辑拆分:
对模指数ud进行逻辑拆分的过程为,先进行第一个逻辑拆分:再进行第二个逻辑拆分:
其中,四个数对为和并记w′=u′/g3,r1=d-e;r为随机因子,且Z*指非负整数集合;a为指数d的逆元;底数u′=rau;参数w=u/g1,参数r1=d-e,e为数学概念上的指数;参数c1=g1/g2,参数t1=r1-e,d=l1+k1t1,l1和k1是预先设定的满足等式d=l1+k1t1成立的随机值;参数w′=u′/g3,参数c2=g3/g4。
进一步,云服务器收到数对(r1,c1),(r1,c2),(l1,w),(k1,w),(l1,w′),(k1,w′)后,计算其获得相应的模指数的值
进一步,用户通过判断公式(1)是否成立来验证云服务器的计算结果,如果公式(1)是成立,则说明云服务器执行了正确的计算,如果公式(1)不成立,则说明云服务器没有执行正确的计算,
本发明与现有技术相比,其显著优点在于:
(1)提高了输入和输出的隐私保护性能。为了实现对输入和输出的隐私保护,本发明提出一种新的数学分割方式,实现了对输入信息和输出信息的隐私保护,使得云服务器在外包计算的过程中不能获取任何关于模指数运算的指数和底数的信息,也不能获得模指数运算的最终结果。
(2)提高了计算结果的可验证概率。外包计算结果的可验证概率有了很大的提高,如果服务器不诚实,用户对外包计算结果的可验证概率接近于100%。
附图说明
图1是本发明方法的运行模型示意图。
具体实施方式
容易理解,依据本发明的技术方案,在不变更本发明的实质精神的情况下,本领域的一般技术人员可以想象出本发明基于单服务器的安全复合模指数外包计算方法的多种实施方式。因此,以下具体实施方式和附图仅是对本发明的技术方案的示例性说明,而不应当视为本发明的全部或者视为对本发明技术方案的限制或限定。
本发明所述基于单服务器的安全复合模指数外包计算方法,其系统模型如图1所示,包含两类实体:云服务器、外包计算的用户。外包计算的用户有很多复杂的计算任务要去处理但是其缺乏计算能力,云服务器有很强的计算能力,然而,云服务器通常被认为是半可信的。当用户想通过外包的方式解决模指数运算时,用户首先通过逻辑分割的方式来隐藏原始数据,然后将隐藏后原始数据即盲化数据发送给云服务器,云服务器收到盲化数据后,利用这些数据进行计算并将计算后的结果返回给用户,由用户验证云服务器返回的计算结果的正确性。
需要外包计算的用户T先调用可以提高计算速度的子程序RandN,然后把模指数运算外包给服务器U。模指数外包计算方法不能让敌手A从模指数外包计算的输入和输出中得到任何有用的信息;设p、q是两个大素数且N=pq,模指数外包计算的输入是和且这里u是任意的一个底数,d是任意的一个指数,模指数外包计算的输出为ud mod N,u和d是保密的,从而U无法计算出u和d。
实施例
为了更好地理解本发明提出的方法,本实施例选取一次用户T借助服务器U实现模指数计算的事件。结合附图,本实施例具体实施步骤如下:
步骤101,原始数据初始化:用户T输入需要进行模指数运算的原始数据u和d,其中,u是模指数ud的底数,d是模指数ud中的指数,并完成以下两项工作:
1)用户T调用子程序RandN四次得到四个数对和并记作用户T每次调用子程序RandN将会生成形如(x,xe)的数对(x∈Z*,),Z*指非负整数集合,指与N互素的整数模N的同余类集合。
2)用户T计算模指数运算中指数d的逆元a为了降低用户的计算量随机选择一个尽可能小的随机因子然后计算模指数(u′)d中的底数u′,计算方法为u′=rau,即完成对u′的初始化,(u′)d是与ud相对应的模指数,可以称为另一个模指数。
步骤102,逻辑分割:用户T通过逻辑分割的方式对原始数据u和d进行隐藏,具体如下:
1)用户T利用子程序RandN返回的四个数对,首先对模指数ud进行拆分操作,拆分操作分为两个逻辑拆分,
第一个逻辑拆分为:
其中,参数w=u/g1,参数r1=d-e,w是u,g1做模逆运算后的值,也可以将w称为随机值,e为数学概念上的指数。
第二个逻辑拆分为:
其中,参数c1=g1/g2,参数t1=r1-e,d=l1+k1t1,l1和k1是预先设定的满足等式d=l1+k1t1成立的随机值。
2)用户T利用子程序RandN返回的四个数对,再对模指数(u′)d进行类似的拆分操作,同样分为两个拆分,。
第一个逻辑拆分为:
其中w′=u′/g3,r1=d-e。
第二个逻辑拆分为:
其中c2=g3/g4,t1=r1-e和d=l1+k1t1
3)用户T将上述拆分后形成的盲化数据编成数对,编成数对的方法为:
步骤103,请求云服务器:用户T请求服务器U计算盲化后的数对(r1,c1),(r1,c2),(l1,w),(k1,w),(l1,w′),(k1,w′)的模指数的值,具体如下:
1)用户T将盲化后的数对(r1,c1),(r1,c2),(l1,w),(k1,w),(l1,w′),(k1,w′)按照任意的次序对服务器U进行如下的请求:
2)服务器U收到盲化后的数对(r1,c1),(r1,c2),(l1,w),(k1,w),(l1,w′),(k1,w′)后,计算获得相应的模指数的值
步骤104,对计算结果进行验证:用户T收到服务器U返回的模指数的值后,对其正确性进行验证。具体如下:
用户T利用服务器计算的模指数的值验证公式(3)是否成立,
由等式(2)和等式(3)可知可知
如果云服务器U执行了正确的计算则有,
(u′)d mod N=(rau)d mod N
=(radud)mod N
=(r·ud)mod N
也就是公式(3)是成立的,如果公式(3)不成立,说明云服务器没有执行正确的计算。
如果公式(3)成立,则用户T利用云服务器U返回的模指数的值计算模指数
示例:当用户请求服务器计算时,进行以下操作:
步骤101:
1)输入原始数据u和d
u=106120923321000833997785245778366834939312221403826396250291394338745442951305294328572326684661691639486068410804148771943110086326134242118011646789417306788812505099994039507265896719048157042861462389411762429546214899066856759
d=98491408039174609566864052693394396438932689080327900843656112092888550385636313887123461268801816693696424045029994016800764483541498554200175950500933086254889787837593479312472615289601897622536197775769390311444784560269547516818857478476475220181307754614543565587854614094752502961027000370095914715457
r=2
2)调用RandN计算四个盲化对
v1=113257007947760685154718252027485070203897954439001014404380657393628470503588907502079308566001490965135010757857695903004147989619206661206850499946305760190729636904733312376379259204879232288720653775561585609429625883251538657576839314929806779778855852091930208492182239993751440338828907018732065577691
w1=23659056763156023594106265090165807327814867248553945111791553468935884841922664124157204874657420462243916094879584150440315054091769136915535809465570721799099475847223999904933901005028028910918288021632438707511154799205485957539834682135487033642654221063029603500105658349018883346992561074522375027020
v2=121466122788660958519614554431926603769606112829462948825181247927993723639147395086613280554032658564552968490070234089680159809811005802928067284993765326787936447561258891976367296983714381267046691862177705169430604863050511261588604793011323231298260349558435179073316143322079470114346942690943018792226
w2=21096370844386882158731036256736329932100033044572456449803738206200647791869231559296273109209489813137904406223959669858630960105694910690863424396259622451588571286203714812148700040633067139505781234976899942817106321357330294704714888194548027341771615257970057368885297070300750422905765426524165671478
3)计算d的逆元a并计算u′
a=65537
u′=110111748291297534341971040871809368206491697454387824279712010973847926495525133216883180775015093416122092159834838077146679730762002636190046635095319215517339132096753200205682513140613279044925688188565302111531080502623721854979202209600406138387344110665001221824458564058496542989186683816802972915730
步骤102:逻辑拆分
拆分u和d
w=16692908113943769974799977420998798012369543013107633081603349645445294145026544796251639904956174090821308702758187830149097636001810598159157067336457522504541886532376492714201600403443506588492779015197788519324196342090171531582856931611735672608754932039745251559958245860941259459052500391548192726883
c1=23184079355585732456003536158619455226780382054858781698510503156110895555627950314243631212884403789738798912952342903173531239548460279731737389177780888963601390007632740206971758168288655565740839456869859987234301289279575744237875424934877334553166882327834194766594142060079274591074644860125513209631
r1=49245704019587304783432026346697198219466344540163950421828056046444275192818156943561730634400908346848212022514997008400382241770749277100087975250466543127444893918796739656236307644800948811268098887884695155722392280134773758409428739238237610090653877307271782793927307047376251480519281707395149092412
k1=8517774569098997892760628138684520809313836910858350099109979722587973523406037617300434205146680456152155243788946630338025608396821862022153037114217412289418703344033971295413132223118747188114046826645455051375475828312286667151417674171050072697602160934092302533534262418258332737244
l1=9857889533580710909
t1=11563044694383469367
拆分u′和d
w′=47471332709697678366492938178065886961023701757220626751402121568093157812265638776114592147498948708946587837256880487069061348662677967549807266064647886702062989197268780624127589589168350586320686515644969436269631593441588671487397589137042651966382883834272452321083136555039095604911681612980823801974
c2=90596948770150364048000877892182221465560823891306493726797635818161272171898911131753225250750489554436524749291394878404708704237672427276915547454503008706635321296440537705274159601765419691468373935120163288715390105330900230383073384121030060340698392575254232208473211998381522103359655085639487926476
r1=49245704019587304783432026346697198219466344540163950421828056046444275192818156943561730634400908346848212022514997008400382241770749277100087975250466543127444893918796739656236307644800948811268098887884695155722392280134773758409428739238237610090653877307271782793927307047376251480519281707395149092412
k1=8517774569098997892760628138684520809313836910858350099109979722587973523406037617300434205146680456152155243788946630338025608396821862022153037114217412289418703344033971295413132223118747188114046826645455051375475828312286667151417674171050072697602160934092302533534262418258332737244
l1=9857889533580710909
t1=11563044694383469367
将需要计算的值编成数对
步骤103:请求云服务器
步骤104:验证结果是否正确
对比两组数据可以判断云服务器是否正确执行了计算。
若(1)式与(2)式相等,那么
ud=82117092050552679702225949257035880619580307026078641300088359385967631606796205658914328753157385089627620445619467820603445856157768179866218232390188712791950642344547496634909309416522245273324017979226128889354118557132025012897483069116709704940102378403216369351180185293321934151882862104525034908703
否则说明云服务器没有执行正确的计算。
本发明方法能够实现输入、输出信息的隐私保护,通过使用数学分割的方式来隐藏原始的数据,使得云服务器在外包计算的过程中不能获得有关输入和输出任何敏感信息。外包结果的可验证概率有了很大的提高,可以通过等式(3)实现对外包计算结果的100%验证。如果服务器不诚实,用户检测出错误的概率将接近于100%。