基于身份的不可拆分?jǐn)?shù)字簽名方法
【專利摘要】基于身份的不可拆分?jǐn)?shù)字簽名方法,屬于信息安全領(lǐng)域。包括:(1)KGEN:這是公用密鑰生成算法生成的主密鑰和系統(tǒng)參數(shù)。(2)EXTRACT:輸入是一個身份標(biāo)識ID和主密鑰s;在多項式時間輸出私鑰skID。(3)UndSigFunGen:是一個概率多項式時間算法,需要一個客戶的REQ_C,客戶身份的要求IDC,和客戶的公鑰以及私鑰。(4)IDUndSig:是一個多項式時間算法,這需要合同(或相關(guān)的哈希值)作為輸入。(5)DUndVrfy:是一個多項式時間算法,這需要合同和不可拆卸的簽名作為輸入。(6)IDSig:是一個概率多項式時間算法。(7)IDVer:是一個多項式時間的算法,需要輸入簽名者的身份ID,消息Msg和數(shù)字簽名,并輸出該“接受”或“拒絕”。本發(fā)明在白盒攻擊環(huán)境下,可實現(xiàn)基于身份的不可拆分?jǐn)?shù)字簽名。
【專利說明】基于身份的不可拆分?jǐn)?shù)字簽名方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及信息安全【技術(shù)領(lǐng)域】,具體涉及移動安全代理技術(shù),應(yīng)用于電子商務(wù)、移動計算等。
【背景技術(shù)】
[0002]隨著越來越多的基于移動代理技術(shù)的實踐,如果沒有合適的安全的、可信的、隱秘的技術(shù)來保護(hù)敏感的商業(yè)數(shù)據(jù)并且讓商業(yè)伙伴們一起完整有信心的合作的話,這些應(yīng)用是不可能成功調(diào)用的。當(dāng)前移動安全代理學(xué)上急需一個技能實現(xiàn)安全,又能有移動性的高效的且成熟的安全方案。
[0003]該方案是建立在雙線性對基礎(chǔ)上的,諸如Weil配對或Tate配對。其安全性依賴于對在Diffie-Hellman組求解計算Diffie-Hellman問題的困難度上。其中大部分基本概念,例如群、環(huán)、域,在近世代數(shù)一科中都屬于標(biāo)準(zhǔn)概念。
[0004]相似技術(shù)(產(chǎn)品)簡述:
[0005]為了解決在以往的傳統(tǒng)電子簽名方案實現(xiàn)中,移動代理在代理原始用戶活動時,生成電子簽名需要自身攜帶簽名算法以及簽名密鑰的過程中,會讓攻擊者從代理端偽造簽名算法,甚至破解簽名密鑰的安全問題。采用Kotzanikolaous, P.,Burmester,M., Chrissikopoulosj V., Secure Transact1ns with Mobile Agents in HostileEnvironments, proceeding of ACISP 2000,pp289_297,2000 ;Yang Shij XiaopingWang, Liming Caoj et.al.A Security Scheme of Electronic Commerce for MobileAgents Uses Undetachable Digital Signatures.The Third Internat1nal Conferenceon Informat1n Security, ACM Press,2004:pp.242-243.和 Yang Shi,XiaopingWang,Liming CaojJianxin Ren.Secure Mobile Agents in Electronic Commerceby Using Undetachable Signatures from Pairings.Proc.The 4th Internat1nalConference on Electronic Business, pp.1038-1043.三篇文獻(xiàn)給出的任意一種不可拆分電子簽名,可以在一定程度上控制簽名密鑰或者簽名方法的泄露。
[0006]為了解決移動代理在路過某惡意主機(jī)時可能會形成白盒攻擊(WBAC)環(huán)境的威脅,米用 P.V.S.S.N.Gopalj P.Vasudeva Reddy and T.Gowr1.New ID-based signaturesscheme from bilinear pairings over elliptic curves.2013 IEEE Internat1nalAdvance Computing Conference (IACC),2013,pp.361 - 365.文獻(xiàn)提出的基于身份的數(shù)字簽名方案可以解決這類問題。同時,基于身份的數(shù)字簽名使得移動代理生成的驗證的簽名并不需要與證書頒發(fā)機(jī)構(gòu)的溝通。信息的完整性也可以在不認(rèn)證機(jī)構(gòu)的幫助下檢查。
[0007]但是這兩種簽名方案各自并不能滿足目前移動代理安全性的需求。
【發(fā)明內(nèi)容】
[0008]就目前所知,所有公開的不可拆分簽名都是基于證書,這就說明,不論是在簽名還是驗證的過程中,都要不斷向證書機(jī)構(gòu)或密鑰分發(fā)機(jī)構(gòu)不斷索取信息。在這種情況下,具有移動性和自治性的移動代理就要不斷通過網(wǎng)絡(luò)聯(lián)系證書機(jī)構(gòu)或密鑰分發(fā)機(jī)構(gòu),這就意味著,移動代理不能高效的發(fā)揮它本身的優(yōu)勢,而且效率低下,同時增加通信也相當(dāng)于增加了威脅。
[0009]目前基于身份的簽名方案又無法達(dá)到不可拆分簽名的效果。同時具有兩種特點的簽名方案成為了目前移動代理安全領(lǐng)域的空白,因為公開的簽名方案中,并沒有方案有效的方案是兩種特點結(jié)合,因為這種結(jié)合可以說是相當(dāng)困難的。
[0010]而本發(fā)明的目的在于克服目前這兩種方案在移動代理安全領(lǐng)域各自的不足,既能解決生成電子簽名需要自身攜帶簽名算法以及簽名密鑰的過程中,會讓攻擊者從代理端偽造簽名算法,甚至破解簽名密鑰的安全問題,又能解除移動代理在路過某惡意主機(jī)時可能會形成白盒攻擊(WBAC)環(huán)境時所面臨的威脅,同時移動代理生成的驗證的簽名并不需要與證書頒發(fā)機(jī)構(gòu)的溝通。信息的完整性也可以在不認(rèn)證機(jī)構(gòu)的幫助下檢查。填補(bǔ)了移動安全領(lǐng)域該項的空白。
[0011]本發(fā)明的創(chuàng)新在于通過特殊的算法設(shè)計,進(jìn)而同時達(dá)到基于身份和不可拆分簽名的安全特征。它并不是單純簡單的算法拼裝,而是通過理論推理論證以及相應(yīng)的實驗而達(dá)到的兩種安全方案的有機(jī)結(jié)合。
[0012]為此,本發(fā)明給出的技術(shù)方案為:
[0013]一種基于身份的不可拆卸的數(shù)字簽名方法,其特征在于,它包括七個步驟如下:
[0014]步驟1.在一臺權(quán)威認(rèn)證的可信機(jī)構(gòu)服務(wù)器C_SerVer上,在規(guī)定好的安全級別下(輸入需要的安全指數(shù)k)運(yùn)行算法1.,算法定義如下
[0015]算法1.密鑰生成算法=KGen(O)輸入Ik當(dāng)ke 口(□為自然數(shù))時一個安全參數(shù),算法輸出公共密鑰設(shè)置Ω = (G1, G2, e (.,.), q, P, Ppub, g, H2, H3)以及主密鑰S。上述中,關(guān)于安全參數(shù)Ik是一個概念性說法,k就是安全指數(shù),可以簡單理解為加密系統(tǒng)是k位長度的,當(dāng)具體實現(xiàn)時,視項目需求和采用的公鑰加密系統(tǒng)(比如hyperelliptic橢圓曲線等)而定。
[0016]在公用密鑰的設(shè)定Ω中,G1是由生成元P產(chǎn)生的循環(huán)群,它的階數(shù)是質(zhì)數(shù)(1,62是相同的階為q的循環(huán)乘法群。假設(shè)離散對數(shù)問題在G1和G2之間是艱難的。映射e: G1X G1 — G2是雙線性映射滿足以下三個條件雙線性映射:
[0017]條件1,雙線性:同時滿足⑴和(2)或單獨滿足(3)
[0018]e(Px+P2,Q) = e{PvQ)e{P2,Q)⑴
_9] e{P,Qx +Q1)^e(P>Q])e(P>Q1)⑵
[o_ e(aPJjQ) = e(P,Qf⑶
[0021]上述尸’匕尸”^沿及^化少,b} , rLq為以質(zhì)數(shù)q為階且無零元的整數(shù)加法群。
[0022]條件2,非退化性:存在P e G1和Q e G1受制于(4)[。_ e{P,Q)^l(4)
[0024]條件3,可計算性:存在一個有效的算法來計算e(P, Q),對所有(尸Q^Glo
[0025]我們注意到,與超奇異橢圓曲線或阿貝爾簇相關(guān)聯(lián)的Weil配對和Tate配對可被修改,以創(chuàng)建諸如雙線性映射。
[0026]因此,系統(tǒng)參數(shù)可以按如下步驟生成:
[0027]讓P成為G1的生成元,取一個隨機(jī)數(shù)s e Z\,然后計算Ppub = sP以及g =e(P, Q) eG2。此外,同樣在通用設(shè)定中給出兩個安全的哈希函數(shù)
H3:{0,1XG2o H2的作用是將任意長度二進(jìn)制數(shù)值映射到群G1 ;而H3的作用是將任意長度二進(jìn)制數(shù)值與G2群中某元素的布爾乘積映射到整數(shù)加法群Z上。至此,Ω
已被介紹完畢。Ω應(yīng)該由受信任的頒發(fā)機(jī)構(gòu)(TA)發(fā)布到所有參與者。
[0028]假設(shè)通過著名的ComputeDiffie-Hellman Problem(CDHP)和Discrete LogarithmProblem(DLP)頑固性的公共密鑰設(shè)置,這意味著沒有多項式時間算法來解決⑶HP或DLP。當(dāng) Decis1n Diffie-Hellman Problem(DDHP)很容易,但 CDHP 是在組 G1 上很難,G1 被稱為Gap Diffie-Hellman(⑶H)群。具備這些特性的群可以在有限域的supersingular橢圓曲線或有限域上的hyperelliptic橢圓曲線上找到,而雙線性投到來自Weil或Tate配對^G1XG1 — G2。我們的方案可以建在任何⑶H群上。
[0029]注釋:假設(shè)G是一個加法群。三個著名的數(shù)學(xué)問題定義如下:
[0030]Discrete Logarithm Problem(DLP):給出兩個群兀素P和Q,則必存在一個整數(shù)η,使等式Q = ηΡ成立。
[0031]Decis1n Diffie - Heilman Problem(DDHP):對于{(2 ,1)., dj-Z",在給出P, aP, bP, cP時,判定c三ab (modq)是否成立。
[0032]Computat1nal Diffie - Heilman Problem(Q)HP):對于{β 辦 ^ Tjq ,給出P, aP,時,b在P不知道a或b的情況下,計算出abP的值。
[0033]本文中A Gap Diffie - Hellman群(GDHG)是一個群,在這個群上DDHP是容易的,但是CDHP是困難的。
[0034]步驟2.C_server上算法I執(zhí)行結(jié)束后會得到公共設(shè)置參數(shù)Ω和一個隨機(jī)數(shù)^ e Z" ω是所有人都可以輕易得到的,而s是要絕對保密的。隨后c_server為每一
H ,
個參與者即客戶代理運(yùn)行算法2,其具體定義如下
[0035]算法2.基于身份私鑰生成算法=Extract —個身份ID作為輸入,算法輸出私鑰Did=sQID,其中Qid = H2 (ID)。H2是上述哈希函數(shù)H2: {0,1Γ —G115對于身份識別碼ID,起到了關(guān)聯(lián)公共密鑰的作用。
[0036]步驟3.C_server將Ω公開,然后通過特殊安全通道把私鑰Did派送給客戶端,并同時把擁有相應(yīng)身份識別碼ID的代理遷移給請求的客戶端。
[0037]步驟4.客戶端安裝移動代理,然后得到Ω,再然后通過特殊安全渠道得到私鑰Did,將Did和REQ_C作為輸入運(yùn)行算法3,REQ_C是移動代理對交易的一種限定,比如價格不能超過600元等各種規(guī)定。算法定義如下。
[0038]算法3.不可拆分簽名函數(shù)生成算法:UndSigFunGen輸入:REQ_C和^#々.后:
*
[0039]~Z:表示從群中隨機(jī)取出元素r。從Ω中取出g,隨后計算U— #和h — H3 (REQ_C,U),H3為上述H 彳O, I fx G2哈希函數(shù)。從Ω中取出Ppub,然后計算
V— DWc + VhPpub。t Z;表示從群中隨機(jī)取出元素t,計算A1 — f和A2 — tPpub。
最后輸出函數(shù) fSigned (.)如下:
[0040]fSigned(x) =〈〈U, V’A!〉,V+xA2>。
[0041]在客戶端運(yùn)行算法3后,移動代理就會一直攜帶不可拆分函數(shù)fSigmd(.),隨后運(yùn)行算法6.其定義如下:
[0042]算法6.簽名算法:IDSig輸入m =〈mp m2>m為需要簽名的消息。其中Hi1為不敏感數(shù)據(jù),m2為敏感數(shù)據(jù),例如REQ_C等,從下面的公式就能看到,Hl1是沒有進(jìn)行簽名的,而m2進(jìn)行了簽名運(yùn)算。
[0043]t ^ 隨機(jī)取 t,計算 A1 — f 和 A2 — tPpub。
[0044]Y1 — Hi1 ;y2 — H3 (m2, A1) ;y — <y” y2> 簡單來說 y —〈m” y2> 然后輸出簽名%(v) = {(V1,//,),+>^2),并將簽名Sig(y)保存在代理當(dāng)中,至此客戶發(fā)送出代理,代理來代替客戶在商店服務(wù)器中進(jìn)行自己的行為,例如買賣購物,此為代理的遷移。
[0045]步驟5.第一個接收到代理的商店在進(jìn)行交易之前,先運(yùn)行算法7.代理的合法性,即驗證有沒有被惡意篡改過。算法運(yùn)行前需要輸入代理攜帶來的簽名Σ = <Σ1; Σ2>,ΒΡ
對應(yīng)算法6.中的Sig(y),如此可知S1 =〈71,六1>,而12 = D1Dc y:但是由于運(yùn)算的特性,僅知道Σ2是無法計算的,這樣保證了安全性。算法定義如下
[0046]算法7.驗證算法 JDVer 輸入 Σ = < Σ 1; Σ2>, m = ^1, m2> 解析 Σ j = (y1; A1)判斷^(Ρ,Σ2)和(/外》4拓(吣4)是否相等是則輸出1,否則輸出O。
[0047]在運(yùn)行完算法7后,如果輸出I則代理繼續(xù)執(zhí)行,否則終止交易。如果代理繼續(xù)執(zhí)行且交易需要代理遷移到另一臺商店服務(wù)器,那么在新的商店服務(wù)器上重復(fù)運(yùn)行步驟
5.如圖2,如果本商店服務(wù)器是最終交易服務(wù)器,即代理不需要再進(jìn)行商店間遷移,那么執(zhí)行步驟6.
[0048]步驟6.在此,商店已經(jīng)做出最終決策,如果完成交易,那么生成CONTRACT,然后運(yùn)行算法4,其輸入為CONTRACT和代理自身攜帶的,在步驟4中生成的fSigned(x)。其中CON通常定義力Γ O N 二T R_ A Ifir I則蠆四個信息為(I)客戶限制,(2)商店ID,(3)交易信息,(4)交易時間。因此這里應(yīng)該相應(yīng)的算法來驗證四個信息的邏輯和數(shù)值合法性,但不屬于本發(fā)明范圍,就不在此介紹。算法4如下
[0049]算法4.不可拆分簽名算法=IDUndSig 輸入 CONTRACT,fSigned(x)從 fSigned(x)中提取 A1 計算 X — H3 (CONTRACT, A1),代入 fSigned (x), z - fSigned (x) = ?U, V, A1), V+xA2> 輸出 Z。
[0050]算法4.完成之后,代理將保存CONTRACT和z隨后遷移回到客戶端,進(jìn)入步驟7。
[0051]步驟7.客戶端接收到交易完成后的代理后,運(yùn)行算法5驗證代理的合法性,防止被篡改,算法輸入為代理攜帶的CONTRACT和z = ?U, V, A1), B〉
[0052]算法5.不可拆分簽名驗證算法:IDUndVrfy輸入CONTRACT, z = ?U, V, A1), B〉
[0053](I)從 CONTRACT 字符串中,提取 IDc, REQ_C 和 BID_S。如果 BID_S 不滿足 REQ_C,輸出0,并終止該算法,否則跳到(2).
[0054](2)從 z 中提取〈U,V〉。
[0055](3)判斷:6?(/>,7)和4尸—,"',(//)(.))"〃4/邵-切)是否相等,如果相等,跳到第⑷步;
[0056]否則輸出0,終止算法。
[0057](4) X — H3 (CONTRACT, A1)
[0058](5)計算 B — V+xA2, Qjd ^~ H2 (叫)
[0059](6)計算己(P,B)和Q是否相等,如果相等,
則輸出1,不相等則輸出O。
[0060]如果算法5返回0,那么說明代理或交易不合法,終止交易;如果返回1,說明交易和代理合法,那么完成交易即可。
[0061]在此,這個方案步驟結(jié)束。
[0062]通過以上技術(shù)方案,本發(fā)明在白盒攻擊環(huán)境下(例如不安全的計算機(jī)上),可實現(xiàn)基于身份的不可拆分?jǐn)?shù)字簽名。本方案解決了目前移動代理上沒有良好的安全方案問題。整個方案中,移動代理不需要攜帶私有密鑰當(dāng)它們產(chǎn)生的數(shù)字簽名代表原始簽名,因此私鑰將不會受到影響。加密的功能與原始簽署者的要求相結(jié)合,所以簽名算法的誤操作可被防止。此外,由于該方案是基于身份的,通過移動代理生成的驗證的簽名并不需要與證書頒發(fā)機(jī)構(gòu)的溝通。該合同的完整性也可以在不認(rèn)證機(jī)構(gòu)的幫助下檢查。因此,通信和在一個穩(wěn)定的網(wǎng)絡(luò)連接的依賴雙方的成本少于正常的不可拆分的數(shù)字簽名方案。
【專利附圖】
【附圖說明】
[0063]圖1為本發(fā)明基于身份的不可拆卸的數(shù)字簽名方法的工作原理。
[0064]圖2為對照于圖1的流程示意圖。
【具體實施方式】
[0065]本發(fā)明基于身份的不可拆分的簽名技術(shù)方案中包括的七個算法:
[0066](I)KGEN:這是公用密鑰生成算法生成的主密鑰和系統(tǒng)參數(shù)。輸入是一個安全參數(shù)lk,其中k是屬于N。該算法在多項式時間輸出系統(tǒng)參數(shù)和主密鑰S。該算法是概率性的。
[0067](2)EXTRACT:輸入是一個身份標(biāo)識ID和主密鑰s ;該算法在多項式時間輸出私鑰
skIDO
[0068](3) UndSigFunGen:不可拆分簽名函數(shù)生成算法UndSigFunGen是一個概率多項式時間算法,這需要一個客戶的REQ—C,客戶身份的要求ID。,和客戶的公鑰以及私鑰。這個算法輸出一個函數(shù) fsigned ( □ ) ?
[0069](4) IDUndSig:不可拆分簽名算法IDUndSig是一個多項式時間算法,這需要合同(或相關(guān)的哈希值)作為輸入。該算法輸出一個不可拆分的數(shù)字簽名的z。
[0070](5)DUndVrfy:不可拆卸簽名驗證算法IDUndVrfy是一個多項式時間算法,這需要合同和不可拆卸的簽名2作為輸入。該算法輸出該“接受”或“拒絕”,只是I或O。
[0071](6) IDSig:基于身份的簽名算法IDSig是一個概率多項式時間算法,這需要輸入消息Msg,一個簽名者的身份識別碼ID (或簽名者的公鑰)和簽名者的私鑰skID,然后輸出一個簽名的消息。
[0072](7) IDVer:基于身份的驗證算法IDVer是一個多項式時間的算法,需要輸入簽名者的身份ID,消息Msg和數(shù)字簽名,并輸出該“接受”或“拒絕”,I或O。
[0073]圖1、圖2描述各算法在基于身份的不可拆分的數(shù)字簽名方案中的使用。
[0074]如圖1所示,基于身份的不可拆卸的數(shù)字簽名方案通常的工作原理如下。首先,可信的機(jī)構(gòu)(TA)如KDC,應(yīng)通過運(yùn)行KGen (Ik)發(fā)布加密所有的公共參數(shù)。那么可靠的機(jī)構(gòu)為每個參與者運(yùn)行Extract算法生成基于身份ID的私鑰,并通過相應(yīng)的安全通信通道發(fā)送私鑰給每個參與者并分配擁有相應(yīng)ID的移動代理。當(dāng)客戶想要一個移動代理以自己的名義購物時,客戶先安裝身份為ID。的移動代理,并將相應(yīng)的私鑰AdJP REC_Q為參數(shù)運(yùn)行算法UndSigFunGen,得到不可拆分函數(shù)fSigned (x),保存到代理中。在同一時間,敏感的數(shù)據(jù),如客戶的需求REC_QS該使用IDSig簽署。然后移動代理開始尋找愿意滿足客戶的要求的商店。當(dāng)一個移動代理代表客戶到達(dá)時,店內(nèi)的服務(wù)器應(yīng)該先使用與IDSig簽名算法相應(yīng)的驗證算法IDVer來驗證移動代理攜帶數(shù)據(jù)的完整性。然后,如果店鋪的老板或代表擁有者的智能銷售代理愿意與客戶做出交易,那么擁有者或智能代理應(yīng)運(yùn)行算法IDUndSig為交易產(chǎn)生的合約CONTRACT簽名。最后,任何人都可以使用的算法IDUndVer驗證交易合同的有效性。
[0075]如圖2所示,基于身份的不可拆分的簽名方案包括如下七個步驟:
[0076]I)由權(quán)威機(jī)構(gòu)運(yùn)行KGen (Ik)得到全局設(shè)置,跳到2)。
[0077]2)權(quán)威機(jī)構(gòu)運(yùn)行Extract (ID),跳到3)。
[0078]3)權(quán)威機(jī)構(gòu)對所有參與者發(fā)放全局設(shè)置、身份ID。的代理和相應(yīng)的私鑰,跳到4)。
[0079]4)客戶端安裝代理并運(yùn)行UndSigFunGen,代理遷移到商店服務(wù)器跳到5)。
[0080]5)商店服務(wù)器用IDVer驗證代理,合法則跳到6),否則終止交易。
[0081]6)進(jìn)行交易行為,如果需要另一個商店跳到5),不需要則用IDUndSig算法為合同進(jìn)行簽名,然后跳到7)。
[0082]7)客戶端用IDUndVer來驗證合同,合法完成交易,不合法則終止交易。
[0083]下面以具體實施例對本發(fā)明作進(jìn)一步說明:
[0084]本方案是建立在雙線性對基礎(chǔ)上的,諸如Weil配對或Tate配對。其安全性依賴于對在Diffie-Hellman組求解計算Diffie-Hellman問題的困難度上。
[0085]本實例是采用JAVA 語言編寫,使用 The Java Pairing Based CryptographyLibrary(JPBC)庫來實現(xiàn)的。JPBC庫是一組關(guān)于非對稱密碼系統(tǒng)的一套標(biāo)準(zhǔn)API,官方網(wǎng)址http://gas.dia.unisa.1t/projects/jpbc/。
[0086]算法KGen (Ik)的實現(xiàn)是基于JPBC的Type A型橢圓曲線,在此有官方配置文件
a.properties作為輸入,因此此實例不需要明顯的Ik參數(shù)。而建立的橢圓曲線性質(zhì)如下:
[0087]橢圓曲線采用域Fq上構(gòu)建的y2 = x3+x,其中質(zhì)數(shù)q = 3mod4, JPBC庫提供了映射^GJG2 的API,在當(dāng)前設(shè)定的橢圓曲線系統(tǒng)上,映射中的G1 = G2,因此滿足KGen(Ik)定義中的〃:G沖G,—> G爺件,因而也滿足Tate配對的條件。因此,使用上,在橢圓曲線系統(tǒng)初始化完成后,會得到一個Pairing對象,通過Pairing的成員函數(shù),getGl O ,getGT O 和 getZr()可以得到 G1' G2 和 \,進(jìn)而通過 getGl 0.newRandomE Iement O 取到
G1的生成元P,同理從 <取s,便可以調(diào)用P的成員函數(shù)PowZn(S)計算Ppub,而通過調(diào)用G1
或Zlj下的成員函數(shù)newElementFromHashO可以實現(xiàn)Ω中的兩個哈希函數(shù)。按算法描述,便可輕易構(gòu)造出Ω。
[0088]同樣,縱觀7個算法,其中的調(diào)用也就基本為以上函數(shù),并無更多區(qū)別,在此就不盡數(shù)介紹,在7個算法都使用JAVA實現(xiàn)之后,然后進(jìn)行下面步驟:
[0089]如圖1所示:
[0090]步驟1、在這里,假設(shè)有一臺權(quán)威認(rèn)證的可信機(jī)構(gòu)服務(wù)器C_SerVer,輸入
a.properties然后運(yùn)行KGen(Ik)生成Ω和臨時私鑰s,然后為每個參與者用不同的
/Dr (/ = \,2,...,n)運(yùn)行算法2根據(jù)身份ID生成密鑰通過特殊渠道向參與者們分發(fā)并將攜帶相應(yīng)ID代理也分發(fā)下去。
[0091]步驟2、假設(shè)有一臺客戶端想要進(jìn)行交易,首先安裝攜帶身份ID的移動交易代理,并輸入其他公共信息和從特殊渠道得到的步驟I的密鑰,運(yùn)行算法3,得到不可拆分簽名方法fSigned(.),并將代理中的敏感數(shù)據(jù)用算法6進(jìn)行簽名。然后該代理進(jìn)行遷移,即發(fā)送到商店服務(wù)器。
[0092]步驟3、假設(shè)代理總共需要遷移路過3家商店服務(wù)器,分別命名商店1、商店2和商店3。商店I接收到代理后用算法7驗證代理的合法性,不合法直接終止交易。合法的話就繼續(xù)交易處理,并且使代理遷移到商店2,商店2進(jìn)行與商店I相同的步驟,如果合法將遷移到最終商店3。
[0093]說明:算法7需要從步驟I的C_SerVer中取得公鑰和全局設(shè)置才能進(jìn)行驗證。
[0094]步驟4、這里的商店3是被假設(shè)成最后的交易商店,同上,先用算法7驗證代理的合法性,然后如果交易成功,那么用算法4為交易生成的合同進(jìn)行不可拆分簽名,然后使代理遷移回客戶端。
[0095]說明:算法7如上述說明相同。
[0096]步驟5、客戶端收到交易完成的代理,然后通過輸入公共信息(公鑰和全局設(shè)置)使用算法5進(jìn)行不可拆分簽名驗證,如果驗證成功則表示交易成功,否則失敗。
【權(quán)利要求】
1.一種基于身份的不可拆卸的數(shù)字簽名方法,其特征在于,它包括七個步驟如下: 步驟1.在一臺權(quán)威認(rèn)證的可信機(jī)構(gòu)服務(wù)器c_server上,在規(guī)定好的安全級別下(輸入需要的安全指數(shù)k)運(yùn)行算法1.,算法定義如下 算法1.密鑰生成算法=KGen(D)輸入Ik當(dāng)k e □ ( □為自然數(shù))時一個安全參數(shù),算法輸出公共密鑰設(shè)置Ω = (G1, G2, e (.,.), q, P, Ppub, g, H2, H3)以及主密鑰S。k是安全指數(shù), 在公用密鑰的設(shè)定Ω中,G1是由生成元P產(chǎn)生的循環(huán)群,它的階數(shù)是質(zhì)數(shù)q,G2是相同的階為q的循環(huán)乘法群。假設(shè)離散對數(shù)問題在G1和G2之間是艱難的。映射NG1XG1^ G2是雙線性映射滿足以下三個條件雙線性映射: 條件I,雙線性:同時滿足錯誤!未找到引用源。和錯誤!未找到引用源?;騿为殱M足錯誤!未找到引用源。 ^+ρ2,β)=€(^,ρ)4/->:,ρ)(I) €(?,0[+0:) = 0(?,0^{1 ο }⑵ e{aP,hO) = e{P,Q)'h(B)
,Z;為以質(zhì)數(shù)q為階且無零元的整數(shù)加法群。 條件2,非退化性:存在P e G1和Q e G1受制于錯誤!未找到引用源。(V)’如I⑷ 條件3,可計算性:存在一個有效的算法來計算e (P, Q),對所有; 系統(tǒng)參數(shù)可以按如下步驟生成: 讓P成為G1的生成元,取一個隨機(jī)數(shù)s e Z\,然后計算Ppub = sP以及g = e(P, Q) e G2,此外,同樣在通用設(shè)定中給出兩個安全的哈希函數(shù):h2: {o, Ii1-G1和Hjair χ(3:^Ζ;,H2的作用是將任意長度二進(jìn)制數(shù)值映射到群G1 ;而H3的作用是將任意長度二進(jìn)制數(shù)值與G2群中某元素的布爾乘積映射到整數(shù)加法群上; 步驟2.C_server上算法I執(zhí)行結(jié)束后會得到公共設(shè)置參數(shù)Ω和一個隨機(jī)數(shù)s e Z;,Ω是所有人都可以輕易得到的,而s是要絕對保密的,隨后C_Server為每一個參與者即客戶代理運(yùn)行算法2,其具體定義如下 算法2.基于身份私鑰生成算法=Extract —個身份ID作為輸入,算法輸出私鑰Did =sQID,其中Qid = H2 (ID),H2是上述哈希函數(shù)H2: {O, 1}* — G1,對于身份識別碼ID,起到了關(guān)聯(lián)公共密鑰的作用; 步驟3.C_server將Ω公開,然后通過特殊安全通道把私鑰Did派送給客戶端,并同時把擁有相應(yīng)身份識別碼ID的代理遷移給請求的客戶端; 步驟4.客戶端安裝移動代理,然后得到Ω,再然后通過特殊安全渠道得到私鑰Did,將Did和REQ_C作為輸入運(yùn)行算法3,算法定義如下: 算法3.不可拆分簽名函數(shù)生成算法=UndSigFunGen輸入:REQ_C和D后: r一'轟示群中隨機(jī)取出元素r,從Ω中取出g,隨后計算U —#和h —H3(REQ_C,U),H3為上述H3: (0,1}、G 哈希函數(shù),從Ω中取出Ppub,然后計算mv+rw;。丨表示從Z群中隨機(jī)取出元素t,計算A1 — f和A2 — tPpub,最后輸出函數(shù)fSigMd(.)如下:
fSigned (X) = ?U, V, A1), V+XA2>, 在客戶端運(yùn)行算法3后,移動代理就會一直攜帶不可拆分函數(shù)fSigmd(.),隨后運(yùn)行算法6.其定義如下: 算法6.簽名算法:IDSig輸入m =〈mp m2>和"m為需要簽名的消息,其中Iii1為不敏感數(shù)據(jù),m2為敏感數(shù)據(jù),Hl1是沒有進(jìn)行簽名的,而m2進(jìn)行了簽名運(yùn)算,4隨機(jī)取t,計算 A1 — gt 和 A2 — tPpubYi — Hi1 ;y2 — H3 (m2, A1) ;y — <y” y2> 簡單來說 y —〈m” y2> 然后輸出簽名Si^y、= ((y',A')'DiDc +y2A2),并將簽名Sig(y)保存在代理當(dāng)中,至此客戶發(fā)送出代理,代理來代替客戶在商店服務(wù)器中進(jìn)行自己的行為,代理的遷移; 步驟5.第一個接收到代理的商店在進(jìn)行交易之前,先運(yùn)行算法7.代理的合法性,即驗證有沒有被惡意篡改過,算法運(yùn)行前需要輸入代理攜帶來的簽名Σ =<Σ1; Σ2>,即對應(yīng)算法6.中的Sig(y),如此可知S1 =〈ypAA,而UiDt.+J:A_但是由于運(yùn)算的特性,僅知道Σ2是無法計算Ait的,這樣保證了安全性,算法定義如下: 算法 7.驗證算法:IDVer 輸入 Σ = < Σ 1; Σ2>, m =〈1^,m2> 解析 S1 = (γ1; A1)判斷H叫和q/^洱 (/Ζ^μ,2’4)是否相等是則輸出1,否則輸出0,在運(yùn)行完算法7后,如果輸出I則代理繼續(xù)執(zhí)行,否則終止交易,如果代理繼續(xù)執(zhí)行且交易需要代理遷移到另一臺商店服務(wù)器,那么在新的商店服務(wù)器上重復(fù)運(yùn)行步驟5.如果本商店服務(wù)器是最終交易服務(wù)器,即代理不需要再進(jìn)行商店間遷移,那么執(zhí)行步驟6.步驟6.在此,商店已經(jīng)做出最終決策,如果完成交易,那么生成CONTRACT,然后運(yùn)行算法4,其輸入為CONTRACT和代理自身攜帶的,在步驟4中生成的fSigned (x),其中CONTRACT通常定義為CONTRACT = REQ_C | IDs BID_S Tbid s,四個信息為(I)客戶限制,(2)商店ID,(3)交易信息,(4)交易時間,算法4如下: 算法4.不可拆分簽名算法=IDUndSig輸入CONTRACT,fSigned(x) Wfsigned(X)中提取A1計算 X — H3 (CONTRACT, A1),代入 fSigned (x),z — fSigned(x) = ?U, V, A1), V+xA2> 輸出 z ;算法4.完成之后,代理將保存CONTRACT和z隨后遷移回到客戶端,進(jìn)入步驟7 ; 步驟7.客戶端接收到交易完成后的代理后,運(yùn)行算法5驗證代理的合法性,防止被篡改,算法輸入為代理攜帶的CONTRACT和z = ?U, V, A1), B〉 算法5.不可拆分簽名驗證算法:IDUndVrfy輸入CONTRACT, z = ?U, V, A1), B〉 (1)從CONTRACT字符串中,提取IDc,REQ_C和BID_S。如果BID_S不滿足REQ_C,輸出.0,并終止該算法,否則跳到(2), (2)從z中提取〈U,V〉, (3)判斷:〗(P,勺和十_年(/外是否相等,如果相等,跳到第⑷步;否則輸出O,終止算法,
(4)X — H3 (CONTRACT, A1) (5)計算B — V+xA2, Qidc) (6)計算外和是否相等,如果相等,則輸出1,不相等則輸出.O ; 如果算法5返回O,那么說明代理或交易不合法,終止交易;如果返回1,說明交易和代理合法,那么完成交易即可。
【文檔編號】H04L9/32GK104184588SQ201410403433
【公開日】2014年12月3日 申請日期:2014年8月15日 優(yōu)先權(quán)日:2014年8月15日
【發(fā)明者】史揚(yáng), 劉琴, 穆斌, 趙欽佩, 韓景軒 申請人:同濟(jì)大學(xué)