本發(fā)明屬于信息安全技術(shù)領(lǐng)域,尤其涉及一種基于身份且簽名長度恒定的在線離線聚合簽名方法。
背景技術(shù):
計算機技術(shù)的高速發(fā)展為人類提供了高度的自動化和現(xiàn)代化,而網(wǎng)絡(luò)的迅猛發(fā)展為人們提供了便捷、快速的信息交流方式,使人類社會迅速進(jìn)入了信息化時代。由于信息的傳遞、存儲、處理等過程往往是在開放的通信網(wǎng)絡(luò)上進(jìn)行的,因而因特網(wǎng)的信息容易受到竊聽、截取、修改、偽造、重放等各種攻擊手段的威脅,其安全及其脆弱。特別是網(wǎng)絡(luò)系統(tǒng)面臨著很大的威脅,并成為嚴(yán)重的社會問題之一。隨著網(wǎng)絡(luò)技術(shù)的發(fā)展及網(wǎng)上活動的日益頻繁,如何保證及加強信息安全性,保證電子信息的完整性,特別保證重要信息的完整,已成為國際社會普遍關(guān)心的重大問題。數(shù)字簽名法應(yīng)運而生,并已經(jīng)開始普遍地應(yīng)用于商業(yè)通訊系統(tǒng),如網(wǎng)上商城、電子轉(zhuǎn)賬、網(wǎng)上支付、辦公自動化等系統(tǒng)中。所謂“數(shù)字簽名”就是通過某種密碼運算生成一系列符號及代碼組成電子密碼進(jìn)行簽名,來代替書寫簽名或印章,對于這種電子式的簽名還可進(jìn)行技術(shù)驗證,其驗證的準(zhǔn)確度是一般手工簽名和圖章驗證無法比擬的?!皵?shù)字簽名”是目前電子商務(wù)、電子政務(wù)中應(yīng)用最普遍、技術(shù)最成熟的、可操作性最強的一種電子簽名方法。它采用了規(guī)范化的程序和科學(xué)化的方法,用于鑒定簽名人的身份以及對一項電子數(shù)據(jù)內(nèi)容的認(rèn)可。它還能驗證出文件的原文在傳輸過程中有無變動,確保傳輸電子文件的完性、真實性和不可抵賴性。數(shù)字簽名在iso7498—2標(biāo)準(zhǔn)中定義為:“附加在數(shù)據(jù)單元上的一些數(shù)據(jù),或是對數(shù)據(jù)單元所作的密碼變換,這種數(shù)據(jù)和變換允許數(shù)據(jù)單元的接收者用以確認(rèn)數(shù)據(jù)單元來源和數(shù)據(jù)單元的完整性,并保護(hù)數(shù)據(jù),防止被人(例如接收者)進(jìn)行偽造”。美國電子簽名標(biāo)準(zhǔn)(dss,fips186—2)對數(shù)字簽名作了如下解釋:“利用一套規(guī)則和一個參數(shù)對數(shù)據(jù)計算所得的結(jié)果,用此結(jié)果能夠確認(rèn)簽名者的身份和數(shù)據(jù)的完整性”。按上述定義pki(publickeyinfrastruction公鑰基礎(chǔ)設(shè)施)可以提供數(shù)據(jù)單元的密碼變換,并能使接收者判斷數(shù)據(jù)來源及對數(shù)據(jù)進(jìn)行驗證。在過去的幾年中,已經(jīng)提出了基于公鑰密碼技術(shù)的幾種方案以提供實時認(rèn)證并消除密鑰分發(fā)/管理問題,這減少了協(xié)議開銷。在傳統(tǒng)的公共密鑰基礎(chǔ)設(shè)施部署中,我們需要一個可信的機構(gòu)頒發(fā)證書,以認(rèn)證用戶的公鑰,然而這種方法消耗了大量的帶寬和功率,因為需要傳輸和驗證公鑰證書。shamir引入了基于身份的密碼系統(tǒng)和簽名方案,無需檢查證書的有效性。當(dāng)新用戶加入網(wǎng)絡(luò)時,其他節(jié)點不需要保留證書便可以安全和認(rèn)證的方式進(jìn)行通信。even,goldrelch和micali在1989年第一次提出在線離線簽名方法的概念。在線離線簽名是把數(shù)字簽名分成兩個階段的簽名方式,第一階段是離線階段,待簽的消息還未被確定,簽名者做一些預(yù)處理工作,由于此階段有足夠的時間,因而離線階段算法復(fù)雜一些并不會影響到消息簽名的速度;第二階段是在線階段,這是在已知待簽消息后開始的,由于有離線階段的準(zhǔn)備工作,所以此階段的運算速度非常的快。在線離線簽名最大的好處是降低簽名開銷,因為不需要做復(fù)雜的模冪運算,只需要做簡單的異或或者加成運算。聚合簽名是近年被關(guān)注的一個熱點,是一種有廣闊前景的密碼簽名部件,對許多應(yīng)用都有良好的支撐作用。聚合簽名可以說是一種在數(shù)字簽名領(lǐng)域的“批處理”和“壓縮”技術(shù);可以同時給多個消息多個用戶提供不可否認(rèn)服務(wù),可以把任意多個用戶的簽名壓縮成一個簽名,縮短了簽名的長度,這大大減小了簽名的存儲空間,同時也降低了對網(wǎng)絡(luò)帶寬的要求;并且把任意多個簽名的驗證化簡到一次驗證,大大減少了簽名驗證的工作量。因此,聚合簽名在很大程度上提高了簽名的驗證與傳輸效率。但在已有的聚合簽名方法中,最終生成的簽名只是將多個消息的簽名壓縮成一個簽名,這有效的縮短了簽名長度,但最終生成簽名的長度會隨著消息個數(shù)的增加而增加,當(dāng)大量的消息需要聚合簽名時,就會造成生成的簽名長度越大,這時對網(wǎng)絡(luò)帶寬就會有更高的要求;為了有效的解決以上問題,提出一種基于身份且簽名長度恒定的在線離線聚合簽名方法,使得聚合簽名生成的簽名的長度短且大小恒定,以此來提高簽名速率和傳輸效率,解決計算能力有限的問題以及降低對網(wǎng)絡(luò)帶寬的要求。
綜上所述,現(xiàn)有技術(shù)存在的問題是:現(xiàn)有的聚合簽名方法中,最終生成簽名只是將多個消息的簽名壓縮成一個簽名,這樣的確縮短了簽名的存儲空間,但簽名的長度會隨著消息個數(shù)的增加而增加,而簽名長度越長對網(wǎng)絡(luò)帶寬的要求就越高;當(dāng)大量的消息需要簽名時,由于簽名長度過長,就會對整個網(wǎng)絡(luò)傳輸過程造成負(fù)擔(dān)。
技術(shù)實現(xiàn)要素:
針對現(xiàn)有技術(shù)存在的問題,本發(fā)明提供了一種基于身份且簽名長度恒定的在線離線聚合簽名方法。
本發(fā)明是這樣實現(xiàn)的,一種基于身份且簽名長度恒定的在線離線聚合簽名方法,所述基于身份且簽名長度恒定的在線離線聚合簽名方法包括:系統(tǒng)初始化、用戶公私鑰生成、離線簽名、在線簽名、驗證簽名五個階段;分為在線和離線兩個階段,離線階段進(jìn)行簽名的預(yù)計算,在線階段基于離線階段的計算結(jié)果,根據(jù)消息及用戶身份id生成簽名,并在接收方進(jìn)行驗證;用戶再次對消息簽名時,無需再進(jìn)行離線階段的簽名預(yù)計算,直接從在線階段開始計算生成簽名。
進(jìn)一步,所述基于身份且簽名長度恒定的在線離線聚合簽名方法具體包括以下步驟:
步驟一,系統(tǒng)初始化:
給定一個安全參數(shù)k∈z,兩個階為素數(shù)q的循環(huán)群g1和g2,g1的生成元為p,一個雙線性對
步驟二,用戶公私鑰生成:通過用戶的身份標(biāo)識id,計算出用戶的公私鑰對qid和sid;
步驟三,離線簽名:根據(jù)初始化階段生成的系統(tǒng)公鑰ppub和生成元p以及雙線性對
步驟四,在線簽名,給定私鑰sid和n個待簽名的消息mj∈{0,1}*,1≤j≤n;
步驟五,驗證簽名:當(dāng)接收方收到由發(fā)送方發(fā)送過來的n個消息及簽名后,根據(jù)n個消息mj,計算出hj,并驗證等式;等式成立則表示簽名有效,否則表示簽名無效。
進(jìn)一步,所述步驟四中:簽名者執(zhí)行以下步驟:
對于每一個1≤j≤n,計算出y和y(j);
對于每一個1≤j≤n,計算出t和tj;
對于每一個1≤j≤n,計算出hj;
對于每一個1≤j≤n,計算出zj;
計算出z;
最終得到簽名σ=(y,t,z)。
進(jìn)一步,所述步驟一中的主密鑰s和系統(tǒng)公鑰ppub的生成為:選擇一個隨機數(shù)
進(jìn)一步,所述步驟二中的密鑰對qid和sid的生成為:利用哈希函數(shù)h1計算出公鑰qid=h1(id),私鑰sid=sqid。
進(jìn)一步,所述步驟三中的參數(shù)yi的生成為:
進(jìn)一步,所述步驟四中的參數(shù)y、y(j)、t、tj、hj、zj和z按照如下方式生成:
隨機選取
y(j)=h2(y||j);
其中y[i]表示y的二進(jìn)制表示中第i個比特值;
隨機選取
tj=h3(t||j);
對于每一個1≤j≤n,hj=h4(mj||tj||y(j));
zj=(x+y)ppub+hjsid,1≤j≤n;
進(jìn)一步,所述步驟五中hj的生成和驗證簽名的驗證等式按照如下方式計算:
y(j)=h2(y||j),j=1,2,...,n;
tj=h3(t||j),j=1,2,...,n;
hj=h4(mj||tj||y(j)),j=1,2,...,n;
等式成立則表示簽名有效,否則表示簽名無效。
本發(fā)明的另一目的在于提供一種應(yīng)用所述基于身份且簽名長度恒定的在線離線聚合簽名方法的網(wǎng)上商城控制系統(tǒng)。
本發(fā)明的另一目的在于提供一種應(yīng)用所述基于身份且簽名長度恒定的在線離線聚合簽名方法的網(wǎng)上支付控制系統(tǒng)。
本發(fā)明的優(yōu)點及積極效果為:可用于對用戶發(fā)送的文件進(jìn)行數(shù)字簽名,并在接收方進(jìn)行驗證;在許多情況下,如智能卡和移動設(shè)備,它們只有很小的存儲量和有限的計算能力,通過引入在線離線技術(shù)可以解決計算能力有限問題,經(jīng)過測試;本發(fā)明中的在線離線技術(shù)方案可以為每次簽名節(jié)約約2500ms的計算時間;本發(fā)明中的聚合簽名方案對多個消息進(jìn)行簽名時,生成簽名的長度不隨消息個數(shù)的增加而增加,始終保持短且恒定的大小,降低了對網(wǎng)絡(luò)帶寬的要求。
本發(fā)明與現(xiàn)有的聚合數(shù)字簽名方法相比具有簽名長度短且大小恒定的優(yōu)點,使得傳輸效率更高,網(wǎng)絡(luò)帶寬需求更低;通過引入在線離線技術(shù)使得簽名速率更快;簡化了傳統(tǒng)數(shù)字簽名中公鑰證書的生成、管理吊銷等問題;提出基于身份且簽名長度恒定的在線離線聚合簽名方法,將數(shù)字簽名方法分為在線離線兩個階段,離線階段進(jìn)行簽名的預(yù)計算,而離線簽名的計算與消息無關(guān),經(jīng)測試每次離線階段的簽名預(yù)計算耗時約為2500ms,在線階段基于離線階段的計算結(jié)果,根據(jù)消息及用戶身份id生成簽名,并在接收方進(jìn)行驗證;用戶再次對消息簽名時,無需再進(jìn)行長達(dá)約為2500ms的離線階段的簽名預(yù)計算,可以直接從在線階段開始計算生成簽名。
本發(fā)明允許單個用戶同時對多個消息進(jìn)行簽名和驗證,最終生成的簽名的長度不會隨消息個數(shù)的增加而增加,簽名長度短且大小恒定,極大的提高了簽名速率,降低了通信開銷;將簽名的生成分為在線和離線兩個階段,離線階段的計算只需進(jìn)行一次即可,當(dāng)用戶再次對消息進(jìn)行簽名時只需要從在線階段開始生成簽名,降低了簽名開銷;方法簡單且實用性強,具有推廣作用。如表1為簽署多個消息時的簽名速率對比結(jié)果:
表1簽署多個消息的簽名速率對比結(jié)果
附圖說明
圖1是本發(fā)明實施例提供的基于身份且簽名長度恒定的在線離線聚合簽名方法流程圖。
圖2是本發(fā)明實施例提供的發(fā)送方和接收方之間的傳參示意圖。
圖3是本發(fā)明實施例提供的接收方驗證簽名的流程圖。
具體實施方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合實施例,對本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
下面結(jié)合附圖對本發(fā)明的應(yīng)用原理作詳細(xì)的描述。
一、本發(fā)明實施例所應(yīng)用的數(shù)學(xué)理論:
1、雙線性對
本發(fā)明中,雙線性對
2、哈希函數(shù)
哈希函數(shù)就是把任意長度的輸入變換成固定長度的輸出這樣一種單向函數(shù),這個輸出稱為該輸入的哈希值。一個安全的哈希函數(shù)應(yīng)該滿足以下幾個條件:①輸出長度是固定的,一般至少取128比特,以抵抗生日攻擊;②對每一個給定的輸入,其哈希值可以很容易的計算出來;③給定哈希函數(shù)的描述和一個哈希值,找到相應(yīng)的輸入是計算上不可行的;④給定哈希函數(shù)的描述,找到具有相同哈希值的兩個不同的輸入是計算上不可行的。
二、本發(fā)明實施例的實現(xiàn)過程:
參照圖1、圖2和圖3,本發(fā)明實施例的具體過程如下:
步驟1、系統(tǒng)初始化:
如圖1所示,這一步主要生成系統(tǒng)公共參數(shù),為離線和在線階段的簽名做準(zhǔn)備,給定一個安全參數(shù)k∈z,兩個階為素數(shù)q的循環(huán)群g1和g2,g1的生成元為p,一個雙線性對
步驟2、用戶公私鑰生成:
如圖1所示的第二步,輸入一個用戶的身份標(biāo)識id并根據(jù)此id生成用戶公私鑰,該身份id∈{0,1}*,然后利用在系統(tǒng)初始化階段中選定的哈希函數(shù)h1計算出公鑰qid=h1(id),私鑰sid=sqid,該步的輸入為用戶的身份標(biāo)識id,輸出為密鑰對qid和sid;
步驟3、離線簽名:
離線階段主要是進(jìn)行簽名的預(yù)計算,根據(jù)系統(tǒng)初始化階段生成的系統(tǒng)公鑰ppub、生成元p以及雙線性對
步驟4、在線簽名:
如圖1所示的最后一步,在線階段基于離線階段的計算結(jié)果,根據(jù)步驟2中生成的用戶私鑰sid和n個待簽名的消息以及離線階段預(yù)計算的結(jié)果生成n個消息的簽名σ。給定私鑰sid和n個消息mj∈{0,1}*,1≤j≤n,簽名者執(zhí)行以下步驟:
1.隨機選取
y(j)=h2(y||j);
其中y[i]表示y的二進(jìn)制表示中第i個比特值;
2.隨機選取
tj=h3(t||j);
3.對于每一個1≤j≤n,計算:
hj=h4(mj||tj||y(j));
4.計算zj=(x+y)ppub+hjsid,1≤j≤n,以及:
最終得到簽名σ=(y,t,z)。
如圖2所示,成功生成簽名σ后,將簽名后的消息和簽名σ以及參與計算的相關(guān)參數(shù)通過網(wǎng)絡(luò)發(fā)送給接收方,并在接收端進(jìn)行驗證。因此可以看出,生成的簽名長度與消息個數(shù)無關(guān),長度短且大小恒定。
步驟5、驗證簽名:
對于身份為id的用戶及n個消息mj,1≤j≤n,驗證其簽名σ=(y,t,z)。驗證者按照以下步驟驗證簽名的有效性:
1.計算y(j)=h2(y||j),j=1,2,...,n;
2.計算tj=h3(t||j),j=1,2,...,n;
3.計算hj=h4(mj||tj||y(j)),j=1,2,...,n;
4.檢驗下面的等式是否成立:
如圖3所示,如果等式成立則表示簽名有效,否則表示簽名無效。
以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。