本發(fā)明涉及信息密鑰安全的技術(shù)領(lǐng)域,尤其涉及了一種基于身份的分布式簽名方法及系統(tǒng)。
背景技術(shù):
隨著科技的發(fā)展,移動終端所具備的功能越來越完善,與此同時,在移動終端上的各種安全及隱私問題也逐漸暴露出來。在移動終端上,采取數(shù)字簽名等措施可以有效地解決相關(guān)信息安全問題,以保證數(shù)據(jù)的安全性以及可靠性。
數(shù)字簽名是現(xiàn)代信息安全的重要的組成部分,應(yīng)用數(shù)字簽名技術(shù)可以識別篡改、偽裝,還可以有效地防止否認。安全的數(shù)字簽名在電子公文、電子合同等應(yīng)用中確定雙方身份,是保證信息真實可信的基礎(chǔ)。隨著以手機為代表的移動終端的普及,數(shù)字簽名在移動端的應(yīng)用越來越廣泛。研究應(yīng)用于移動終端上的數(shù)字簽名方案具有重要的意義。由于移動終端的計算資源有限且無線通信帶寬受限,所以,基于證書的公鑰密碼體制不適合應(yīng)用于上述環(huán)境。在基于身份的公鑰密碼體制中,可利用用戶的身份信息直接生成用戶的公鑰,避免證書管理復(fù)雜和成本高的問題。
目前基于身份的數(shù)字簽名方案,大體流程如下,用戶將身份標識e I d和自身的公鑰發(fā)送給密鑰生成中心PKG,PKG利用用戶的標識以及用戶的私鑰,結(jié)合自身的私鑰完成部分私鑰的生成工作,部分私鑰中包含著用戶的身份信息,且不可篡改。PKG同時計算出部分私鑰對應(yīng)的部分公鑰,將部分公鑰公開,部分私鑰秘密發(fā)送給用戶。用戶用自身的私鑰與接收到的部分私鑰合成真正的簽名私鑰,而任何人都可以通過公開的部分公鑰和用戶標識計算出真正的驗簽公鑰。而完整的簽名私鑰只有用戶持有,PKG并不知情,即使PKG不可信也能保證私鑰的安全。
但是在目前基于身份的數(shù)字簽名方案中,雖然解決了密鑰生成中心PKG不可信的問題,但是仍存在一定的安全性隱患,如簽名所需要的真實私鑰會完整的存在客戶端,如果客戶端的安全不能保證,容易造成私鑰的泄漏。
技術(shù)實現(xiàn)要素:
本發(fā)明所要解決的技術(shù)問題是:目前的技術(shù)方案中密鑰生成中心PKG存在安全性隱患,容易造成私鑰的泄漏。
為解決上面的技術(shù)問題,本發(fā)明提供了一種基于身份的分布式簽名方法,該分布式簽名方法包括如下步驟:
S1,客戶端根據(jù)用戶身份標識eld生成一對與用戶永久綁定的固定公私鑰(PC,dC),客戶端將固定公鑰PC以及身份標識eld發(fā)送給服務(wù)器;
S2,服務(wù)器根據(jù)固定公鑰PC以及身份標識eld生成與用戶綁定的的固定公私鑰對(PB,dB);
S3,服務(wù)器利用(eld、PB、PC)計算生成部分簽名公鑰p并發(fā)布,同時生成簽名代理私鑰dp;
S4,客戶端收到待簽名消息M后,生成臨時公私鑰對(PTmp,dTmp),并將公鑰PTmp發(fā)送給服務(wù)器;
S5,服務(wù)器生成臨時公私鑰對(PSTmp,dSTmp),并計算簽名消息摘要e;
S6,服務(wù)器根據(jù)臨時公鑰PTmp、PSTmp、簽名消息摘要e和簽名代理私鑰dp完成簽名代理操作,并將簽名代理結(jié)果發(fā)送給客戶端;
S7,客戶端根據(jù)簽名代理結(jié)果,利用固定私鑰dC和臨時私鑰dTmp進行簽名授權(quán)工作,得到完整的簽名并將簽名輸出。
進一步,客戶端和服務(wù)端均支持SM2標準算法,SM2橢圓曲線參數(shù)為E(Fp)、G和n,橢圓曲線E為定義在有限素數(shù)域Fp上的橢圓曲線,G為橢圓曲線E上n階基點。
進一步,所述S3中還包括:計算生成部分公鑰p,所述部分公鑰p包括p1和p2,p1=PC+PB,根據(jù)部分公鑰p1計算收斂因子h=SM3(p1x||eId||p1y),并根據(jù)收斂因子h計算代理簽名私鑰dp=h*dB,并計算部分公鑰p2=[dp]·PC,公布部分公鑰p1和p2,則實際公鑰W,其中W=p1+p2+[h-1]·PB,·表示點乘,||表示拼接符,公式是表示p1x、eId與p1y三者拼接,SM3()表示雜湊算法。
上述進一步的有益效果:任何人都可以利用用戶的身份標識eld和公開的部分公鑰p1和p2計算生成真正的驗證公鑰,并進行驗簽。
進一步,所述S5中還包括:根據(jù)待簽名消息M計算簽名消息摘要e,服務(wù)器在生成臨時公私鑰對(PSTmp,dSTmp)后,服務(wù)器生成隨機數(shù)K,以及利用隨機數(shù)K計算點(x,y)=[k]*(PTmp+PSTmp),k∈[1,n-1],*表示模乘運算。
進一步,所述S6中還包括:服務(wù)器根據(jù)臨時公鑰PTmp、簽名消息摘要e和簽名代理私鑰dp生成簽名代理結(jié)果(r,sproxy1,sproxy2),r=(x+e)modn,sproxy1=(1+dp)-1*k,sproxy2=(1+dp)-1*(r+k*dSTmp),mod表示求模運算。
進一步,所述S7中包括:生成簽名s,計算s=(1+dc)-1*dTmp*sproxy1+(1+dc)-1*sproxy2-r,客戶端將(r,s)作為完整的簽名,并對完整的簽名進行驗證,若簽名驗證成功,則將報文發(fā)送給簽名業(yè)務(wù)中心,并將簽名輸出。
進一步,該方法還包括:當(dāng)完成簽名輸出后,客戶端的臨時公私鑰對(PTmp,dTmp)和服務(wù)器生成的臨時公私鑰對(PSTmp,dSTmp)自動銷毀。
本發(fā)明的有益效果:克服了密鑰生成中心PKG不可信的缺點,同時若客戶端的安全不能保證,也不會造成私鑰的泄漏,大大提高了用戶的私鑰安全性,另外,無需復(fù)雜的證書管理操作,可以利用用戶標識eId進行簽名和驗簽,簽名私鑰不會以明文的形式出現(xiàn)在任何過程中,保證絕對的安全,分布式簽名要求雙方必須同時進行簽名,任何一方不能單獨完成簽名,安全性進一步提升,可以有效應(yīng)用于具備唯一身份標識的應(yīng)用系統(tǒng)中,無需接入CA系統(tǒng)、無需引入額外硬件,就可以實現(xiàn)應(yīng)用與客戶之間安全可靠的數(shù)字簽名業(yè)務(wù),協(xié)議簡單方便,只需要兩次交互就能完成完整的簽名,實現(xiàn)簡單方便。
本發(fā)明還涉及一種基于身份的分布式簽名系統(tǒng),該系統(tǒng)包括:客戶端,服務(wù)器;客戶端生成固定公私鑰對(PC,dC),將公鑰PC發(fā)送給服務(wù)器;服務(wù)器接收公鑰PC后生成固定公私鑰對(PB,dB),服務(wù)器利用(eld、PB、PC)計算生成部分簽名公鑰p并發(fā)布,同時生成簽名代理私鑰dp;客戶端收到待簽名消息M后,生成臨時公私鑰對(PTmp,dTmp),并將公鑰PTmp發(fā)送給服務(wù)器;服務(wù)器生成臨時公私鑰對(PSTmp,dSTmp),并計算簽名消息摘要e;服務(wù)器根據(jù)(PTmp、e、dp)完成簽名代理操作,并將簽名代理結(jié)果發(fā)送給客戶端;客戶端根據(jù)簽名代理結(jié)果,利用(dC、dTmp)進行簽名授權(quán)工作,得到完整的簽名并將簽名輸出。
進一步,所述服務(wù)器還包括:計算生成部分公鑰p,所述部分公鑰p包括p1和p2,p1=PC+PB,并且根據(jù)部分公鑰p1計算收斂因子h=SM3(p1x||eId||p1y),并根據(jù)收斂因子h計算代理簽名私鑰dp=h*dB,并計算部分公鑰p2=[dp]·PC,公布部分公鑰p1和p2,則實際公鑰W,其中W=p1+p2+[h-1]·PB,·表示點乘,||表示拼接符,公式是表示p1x、eId與p1y三者拼接,SM3()表示雜湊算法。
進一步,所述服務(wù)器還包括:根據(jù)待簽名消息M計算簽名消息摘要e,服務(wù)器在生成臨時公私鑰對(PSTmp,dSTmp)后,服務(wù)器生成隨機數(shù)K,以及利用隨機數(shù)K計算點(x,y)=[k]*(PTmp+PSTmp),k∈[1,n-1],*表示模乘運算。
進一步,所述服務(wù)器還包括:服務(wù)器根據(jù)臨時公鑰PTmp、簽名消息摘要e和簽名代理私鑰dp生成簽名代理結(jié)果(r,sproxy1,sproxy2),其中,r=(x+e)modn,sproxy1=(1+dp)-1*k,sproxy2=(1+dp)-1*(r+k*dSTmp),mod表示求模運算。
進一步,所述客戶端還包括:生成簽名s,計算s=(1+dc)-1*dTmp*sproxy1+(1+dc)-1*sproxy2-r,客戶端將(r,s)作為完整的簽名,并對完整的簽名進行驗證,若簽名驗證成功,則將報文發(fā)送給簽名業(yè)務(wù)中心,并將簽名輸出。
有益效果:克服了密鑰生成中心PKG不可信的缺點,同時若客戶端的安全不能保證,也不會造成私鑰的泄漏,大大提高了用戶的私鑰安全性,另外,無需復(fù)雜的證書管理操作,可以利用用戶標識eId進行簽名和驗簽,簽名私鑰不會以明文的形式出現(xiàn)在任何過程中,保證絕對的安全,分布式簽名要求雙方必須同時進行簽名,任何一方不能單獨完成簽名,安全性進一步提升,可以有效應(yīng)用于具備唯一身份標識的應(yīng)用系統(tǒng)中,無需接入CA系統(tǒng)、無需引入額外硬件,就可以實現(xiàn)應(yīng)用與客戶之間安全可靠的數(shù)字簽名業(yè)務(wù),協(xié)議簡單方便,只需要兩次交互就能完成完整的簽名,實現(xiàn)簡單方便。
附圖說明
圖1為本發(fā)明的一種基于身份的分布式簽名方法示意圖;
圖2為本發(fā)明的一種基于身份的分布式簽名方法流程圖;
圖3為本發(fā)明的一種基于身份的分布式簽名方法示意圖。
具體實施方式
以下結(jié)合附圖對本發(fā)明的原理和特征進行描述,所舉實例只用于解釋本發(fā)明,并非用于限定本發(fā)明的范圍。
如附圖1、圖2和圖3所示,一種基于身份的分布式簽名方法,該分布式簽名方法包括如下步驟:
客戶端和服務(wù)端均支持SM2標準算法,SM2橢圓曲線參數(shù)E(Fp)、G和n,橢圓曲線E為定義在有限素數(shù)域Fp上的橢圓曲線,G為橢圓曲線E上n階基點。下面所提到的用戶身份標識eld均是指在一個安全域(或信息系統(tǒng)應(yīng)用范圍內(nèi)),能夠唯一標識用戶身份的,比如手機號、郵箱、ip地址、微博賬號、微信號、QQ號、銀行賬號、各種應(yīng)用賬號等。
S1,客戶端根據(jù)用戶身份標識eld生成一對與用戶永久綁定的固定公私鑰(PC,dC),同時客戶端將固定公鑰PC以及身份標識eld發(fā)送給服務(wù)器;
S2,服務(wù)器根據(jù)固定公鑰PC以及身份標識eld生成與用戶綁定的的固定公私鑰對(PB,dB);
S3,服務(wù)器利用(eld、PB、PC)計算生成部分簽名公鑰p并發(fā)布,同時生成簽名代理私鑰dp,計算生成部分公鑰p,所述部分公鑰p包括p1和p2,p1=PC+PB,并且根據(jù)部分公鑰p1計算收斂因子h=SM3(p1x||eId||p1y),并根據(jù)收斂因子h計算代理簽名私鑰dp=h*dB,并計算部分公鑰p2=[dp]·PC,公布部分公鑰p1和p2,則實際公鑰W,W為p=p1+p2+[h-1]·PB,·表示點乘,||表示拼接符,公式是表示p1x、eId與p1y三者拼接,SM3()表示雜湊算法,任何人都可以利用用戶的身份標識eld和公開的部分公鑰p1和p2計算生成真正的驗證公鑰,并進行驗簽;
S4,客戶端收到待簽名消息M后,生成臨時公私鑰對(PTmp,dTmp),并將公鑰PTmp發(fā)送給服務(wù)器;
S5,服務(wù)器生成臨時公私鑰對(PSTmp,dSTmp),計算簽名消息摘要e;服務(wù)器在生成臨時公私鑰對(PSTmp,dSTmp)后,服務(wù)器生成隨機數(shù)K,以及計算點(x,y)=[k]*(PTmp+PSTmp),k∈[1,n-1],*表示模乘運算,;
S6,服務(wù)器根據(jù)臨時公鑰PTmp、簽名消息摘要e和簽名代理私鑰dp完成簽名代理操作,生成簽名代理結(jié)果(r,sproxy1,sproxy2),將簽名代理結(jié)果發(fā)送給客戶端,其中r=(x+e)modn,sproxy1=(1+dp)-1*k,sproxy2=(1+dp)-1*(r+k*dSTmp),mod表示求模運算;
S7,客戶端根據(jù)簽名代理結(jié)果,利用固定私鑰dC和臨時私鑰dTmp進行簽名授權(quán)工作,其中計算s=(1+dc)-1*dTmp*sproxy1+(1+dc)-1*sproxy2-r,客戶端將(r,s)作為完整的簽名并輸出,利用客戶端自身的固定私鑰和臨時私鑰進行簽名授權(quán)工作,得到真正的符合標準協(xié)議的簽名報文,并對簽名進行驗證;
S8,若簽名驗證成功,則將報文發(fā)送給簽名業(yè)務(wù)中心。
當(dāng)完成簽名輸出后,客戶端的臨時公私鑰對(PTmp,dTmp)和服務(wù)器生成的臨時公私鑰對(PSTmp,dSTmp)自動銷毀。
一種基于身份的分布式簽名系統(tǒng),該系統(tǒng)包括:客戶端,服務(wù)器;客戶端生成固定公私鑰對(PC,dC),將公鑰PC發(fā)送給服務(wù)器;服務(wù)器接收公鑰PC后生成固定公私鑰對(PB,dB),服務(wù)器利用(eld、PB、PC)計算生成部分簽名公鑰p并發(fā)布,同時生成簽名代理私鑰dp;客戶端收到待簽名消息M后,生成臨時公私鑰對(PTmp,dTmp),并將公鑰PTmp發(fā)送給服務(wù)器;服務(wù)器生成臨時公私鑰對(PSTmp,dSTmp),并計算簽名消息摘要e;服務(wù)器根據(jù)(PTmp、e、dp)完成簽名代理操作,并將簽名代理結(jié)果發(fā)送給客戶端;客戶端根據(jù)簽名代理結(jié)果,利用(dC、dTmp)進行簽名授權(quán)工作,得到完整的簽名并將簽名輸出。
服務(wù)器還包括:計算生成部分公鑰p,所述部分公鑰p包括p1和p2,p1=PC+PB,并且根據(jù)部分公鑰p1計算收斂因子h=SM3(p1x||eId||p1y),并根據(jù)收斂因子h計算代理簽名私鑰dp=h*dB,并計算部分公鑰p2=[dp]·PC,公布部分公鑰p1和p2,則實際公鑰W,其中W=p1+p2+[h-1]·PB,·表示點乘,||表示拼接符,公式是表示p1x、eId與p1y三者拼接,SM3()表示雜湊算法。
服務(wù)器還包括:計算簽名消息摘要e,服務(wù)器在生成臨時公私鑰對(PSTmp,dSTmp)后,服務(wù)器生成隨機數(shù)K,以及利用隨機數(shù)K計算點(x,y)=[k]*(PTmp+PSTmp),k∈[1,n-1],*表示模乘運算。
服務(wù)器還包括:服務(wù)器根據(jù)臨時公鑰PTmp、簽名消息摘要e和簽名代理私鑰dp生成簽名代理結(jié)果(r,sproxy1,sproxy2),r=(x+e)modn,sproxy1=(1+dp)-1*k,sproxy2=(1+dp)-1*(r+k*dSTmp),mod表示求模運算。
客戶端還包括:生成簽名s,計算s=(1+dc)-1*dTmp*sproxy1+(1+dc)-1*sproxy2-r,客戶端將(r,s)作為完整的簽名,并對完整的簽名進行驗證,若簽名驗證成功,則將報文發(fā)送給簽名業(yè)務(wù)中心,并將簽名輸出。
在本說明書中,對上述術(shù)語的示意性表述不必須針對的是相同的實施例或示例。而且,描述的具體特征、結(jié)構(gòu)、材料或者特點可以在任一個或多個實施例或示例中以合適的方式結(jié)合。此外,在不相互矛盾的情況下,本領(lǐng)域的技術(shù)人員可以將本說明書中描述的不同實施例或示例以及不同實施例或示例的特征進行結(jié)合和組合。
以上所述僅為本發(fā)明的較佳實施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。