本發(fā)明屬于云計算安全技術(shù)領域,特別涉及一種基于單服務器的安全復合模指數(shù)外包計算方法。
背景技術(shù):
隨著云計算的發(fā)展和移動設備的普及,出現(xiàn)了一種新的服務模式,也就是所謂的外包計算。隨著這種新服務模式的出現(xiàn),資源受限的用戶可以選擇以按需付費的方式將繁瑣的計算任務外包給計算資源豐富的服務器去計算。
盡管外包計算給人們帶來了巨大的經(jīng)濟利益,但是它也存在著一些新的安全問題和挑戰(zhàn)。首先,云服務器并不一定是完全可信的,并且外包計算的任務經(jīng)常會包含一些不應該暴露給云服務器的敏感信息。因此,外包計算的首要安全問題就是計算資源的隱私性,云服務器不應該知道任何關于實際參與計算的輸入和輸出的信息。而普通的加密技術(shù)不能完全解決這個問題,因為服務器很難對加密后的信息執(zhí)行有意義的計算。其次,由于云內(nèi)部的操作細節(jié)對用戶是不透明的,因此,很可能存在著各種動機,使得云服務器的行為不誠實。還可能會有一些軟件bug和惡意的外部攻擊的存在,這些都會影響計算結(jié)果的質(zhì)量。因此,外包計算的第二個安全問題就是它的計算結(jié)果的可驗證性,使需要外包服務的用戶能夠檢測云服務器返回的結(jié)果正確與否,并且要求驗證過程的計算量要盡可能的小,否則就失去了外包的意義。
模指數(shù)運算是密碼系統(tǒng)中最為常見的、最為耗時的運算之一,許多公鑰加密、數(shù)字簽名方案都需要用到模指數(shù)運算,因此如何實現(xiàn)模指數(shù)的安全外包計算具有重要的現(xiàn)實意義。目前的模指數(shù)外包計算方案主要分為基于兩個不可信服務器的計算和基于單個不可信服務器的計算。其中,基于兩個不可信服務器的模指數(shù)外包計算方案很容易遭受共謀攻擊,基于單個不可信服務器的模指數(shù)外包計算方案其外包計算結(jié)果的可驗證概率通常不高。
技術(shù)實現(xiàn)要素:
本發(fā)明提出一種基于單服務器的安全復合模指數(shù)外包計算方法,既避免了共謀攻擊,又實現(xiàn)了輸入信息和輸出信息的隱私保護,并且提高了用戶對外包計算結(jié)果的可驗證概率。
為了解決上述技術(shù)問題,本發(fā)明提供一種基于單服務器的安全復合模指數(shù)外包計算方法,用戶對原始數(shù)據(jù)進行隱藏獲得盲化數(shù)據(jù),然后將盲化數(shù)據(jù)發(fā)送給云服務器;所述對原始數(shù)據(jù)進行隱藏的方法為:用戶利用調(diào)用子程序RandN返回的四個數(shù)對對模指數(shù)ud和(u′)d進行邏輯拆分生成盲化數(shù)據(jù)然后將盲化數(shù)據(jù)編成數(shù)對(r1,c1),(r1,c2),(l1,w),(k1,w),(l1,w′),(k1,w′);
對模指數(shù)ud進行邏輯拆分的過程為,先進行第一個邏輯拆分:再進行第二個邏輯拆分:
對模指數(shù)ud進行邏輯拆分的過程為,先進行第一個邏輯拆分:再進行第二個邏輯拆分:
其中,四個數(shù)對為和并記w′=u′/g3,r1=d-e;r為隨機因子,且Z*指非負整數(shù)集合;a為指數(shù)d的逆元;底數(shù)u′=rau;參數(shù)w=u/g1,參數(shù)r1=d-e,e為數(shù)學概念上的指數(shù);參數(shù)c1=g1/g2,參數(shù)t1=r1-e,d=l1+k1t1,l1和k1是預先設定的滿足等式d=l1+k1t1成立的隨機值;參數(shù)w′=u′/g3,參數(shù)c2=g3/g4。
進一步,云服務器收到數(shù)對(r1,c1),(r1,c2),(l1,w),(k1,w),(l1,w′),(k1,w′)后,計算其獲得相應的模指數(shù)的值
進一步,用戶通過判斷公式(1)是否成立來驗證云服務器的計算結(jié)果,如果公式(1)是成立,則說明云服務器執(zhí)行了正確的計算,如果公式(1)不成立,則說明云服務器沒有執(zhí)行正確的計算,
本發(fā)明與現(xiàn)有技術(shù)相比,其顯著優(yōu)點在于:
(1)提高了輸入和輸出的隱私保護性能。為了實現(xiàn)對輸入和輸出的隱私保護,本發(fā)明提出一種新的數(shù)學分割方式,實現(xiàn)了對輸入信息和輸出信息的隱私保護,使得云服務器在外包計算的過程中不能獲取任何關于模指數(shù)運算的指數(shù)和底數(shù)的信息,也不能獲得模指數(shù)運算的最終結(jié)果。
(2)提高了計算結(jié)果的可驗證概率。外包計算結(jié)果的可驗證概率有了很大的提高,如果服務器不誠實,用戶對外包計算結(jié)果的可驗證概率接近于100%。
附圖說明
圖1是本發(fā)明方法的運行模型示意圖。
具體實施方式
容易理解,依據(jù)本發(fā)明的技術(shù)方案,在不變更本發(fā)明的實質(zhì)精神的情況下,本領域的一般技術(shù)人員可以想象出本發(fā)明基于單服務器的安全復合模指數(shù)外包計算方法的多種實施方式。因此,以下具體實施方式和附圖僅是對本發(fā)明的技術(shù)方案的示例性說明,而不應當視為本發(fā)明的全部或者視為對本發(fā)明技術(shù)方案的限制或限定。
本發(fā)明所述基于單服務器的安全復合模指數(shù)外包計算方法,其系統(tǒng)模型如圖1所示,包含兩類實體:云服務器、外包計算的用戶。外包計算的用戶有很多復雜的計算任務要去處理但是其缺乏計算能力,云服務器有很強的計算能力,然而,云服務器通常被認為是半可信的。當用戶想通過外包的方式解決模指數(shù)運算時,用戶首先通過邏輯分割的方式來隱藏原始數(shù)據(jù),然后將隱藏后原始數(shù)據(jù)即盲化數(shù)據(jù)發(fā)送給云服務器,云服務器收到盲化數(shù)據(jù)后,利用這些數(shù)據(jù)進行計算并將計算后的結(jié)果返回給用戶,由用戶驗證云服務器返回的計算結(jié)果的正確性。
需要外包計算的用戶T先調(diào)用可以提高計算速度的子程序RandN,然后把模指數(shù)運算外包給服務器U。模指數(shù)外包計算方法不能讓敵手A從模指數(shù)外包計算的輸入和輸出中得到任何有用的信息;設p、q是兩個大素數(shù)且N=pq,模指數(shù)外包計算的輸入是和且這里u是任意的一個底數(shù),d是任意的一個指數(shù),模指數(shù)外包計算的輸出為ud mod N,u和d是保密的,從而U無法計算出u和d。
實施例
為了更好地理解本發(fā)明提出的方法,本實施例選取一次用戶T借助服務器U實現(xiàn)模指數(shù)計算的事件。結(jié)合附圖,本實施例具體實施步驟如下:
步驟101,原始數(shù)據(jù)初始化:用戶T輸入需要進行模指數(shù)運算的原始數(shù)據(jù)u和d,其中,u是模指數(shù)ud的底數(shù),d是模指數(shù)ud中的指數(shù),并完成以下兩項工作:
1)用戶T調(diào)用子程序RandN四次得到四個數(shù)對和并記作用戶T每次調(diào)用子程序RandN將會生成形如(x,xe)的數(shù)對(x∈Z*,),Z*指非負整數(shù)集合,指與N互素的整數(shù)模N的同余類集合。
2)用戶T計算模指數(shù)運算中指數(shù)d的逆元a為了降低用戶的計算量隨機選擇一個盡可能小的隨機因子然后計算模指數(shù)(u′)d中的底數(shù)u′,計算方法為u′=rau,即完成對u′的初始化,(u′)d是與ud相對應的模指數(shù),可以稱為另一個模指數(shù)。
步驟102,邏輯分割:用戶T通過邏輯分割的方式對原始數(shù)據(jù)u和d進行隱藏,具體如下:
1)用戶T利用子程序RandN返回的四個數(shù)對,首先對模指數(shù)ud進行拆分操作,拆分操作分為兩個邏輯拆分,
第一個邏輯拆分為:
其中,參數(shù)w=u/g1,參數(shù)r1=d-e,w是u,g1做模逆運算后的值,也可以將w稱為隨機值,e為數(shù)學概念上的指數(shù)。
第二個邏輯拆分為:
其中,參數(shù)c1=g1/g2,參數(shù)t1=r1-e,d=l1+k1t1,l1和k1是預先設定的滿足等式d=l1+k1t1成立的隨機值。
2)用戶T利用子程序RandN返回的四個數(shù)對,再對模指數(shù)(u′)d進行類似的拆分操作,同樣分為兩個拆分,。
第一個邏輯拆分為:
其中w′=u′/g3,r1=d-e。
第二個邏輯拆分為:
其中c2=g3/g4,t1=r1-e和d=l1+k1t1
3)用戶T將上述拆分后形成的盲化數(shù)據(jù)編成數(shù)對,編成數(shù)對的方法為:
步驟103,請求云服務器:用戶T請求服務器U計算盲化后的數(shù)對(r1,c1),(r1,c2),(l1,w),(k1,w),(l1,w′),(k1,w′)的模指數(shù)的值,具體如下:
1)用戶T將盲化后的數(shù)對(r1,c1),(r1,c2),(l1,w),(k1,w),(l1,w′),(k1,w′)按照任意的次序?qū)Ψ掌鱑進行如下的請求:
2)服務器U收到盲化后的數(shù)對(r1,c1),(r1,c2),(l1,w),(k1,w),(l1,w′),(k1,w′)后,計算獲得相應的模指數(shù)的值
步驟104,對計算結(jié)果進行驗證:用戶T收到服務器U返回的模指數(shù)的值后,對其正確性進行驗證。具體如下:
用戶T利用服務器計算的模指數(shù)的值驗證公式(3)是否成立,
由等式(2)和等式(3)可知可知
如果云服務器U執(zhí)行了正確的計算則有,
(u′)d mod N=(rau)d mod N
=(radud)mod N
=(r·ud)mod N
也就是公式(3)是成立的,如果公式(3)不成立,說明云服務器沒有執(zhí)行正確的計算。
如果公式(3)成立,則用戶T利用云服務器U返回的模指數(shù)的值計算模指數(shù)
示例:當用戶請求服務器計算時,進行以下操作:
步驟101:
1)輸入原始數(shù)據(jù)u和d
u=106120923321000833997785245778366834939312221403826396250291394338745442951305294328572326684661691639486068410804148771943110086326134242118011646789417306788812505099994039507265896719048157042861462389411762429546214899066856759
d=98491408039174609566864052693394396438932689080327900843656112092888550385636313887123461268801816693696424045029994016800764483541498554200175950500933086254889787837593479312472615289601897622536197775769390311444784560269547516818857478476475220181307754614543565587854614094752502961027000370095914715457
r=2
2)調(diào)用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
將需要計算的值編成數(shù)對
步驟103:請求云服務器
步驟104:驗證結(jié)果是否正確
對比兩組數(shù)據(jù)可以判斷云服務器是否正確執(zhí)行了計算。
若(1)式與(2)式相等,那么
ud=82117092050552679702225949257035880619580307026078641300088359385967631606796205658914328753157385089627620445619467820603445856157768179866218232390188712791950642344547496634909309416522245273324017979226128889354118557132025012897483069116709704940102378403216369351180185293321934151882862104525034908703
否則說明云服務器沒有執(zhí)行正確的計算。
本發(fā)明方法能夠?qū)崿F(xiàn)輸入、輸出信息的隱私保護,通過使用數(shù)學分割的方式來隱藏原始的數(shù)據(jù),使得云服務器在外包計算的過程中不能獲得有關輸入和輸出任何敏感信息。外包結(jié)果的可驗證概率有了很大的提高,可以通過等式(3)實現(xiàn)對外包計算結(jié)果的100%驗證。如果服務器不誠實,用戶檢測出錯誤的概率將接近于100%。