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