專利名稱:基于身份的前向安全的數(shù)字簽名方法、裝置及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明實施例涉及信息安全技術(shù)領(lǐng)域,特別是涉及一種基于身份的前向安全的數(shù) 字簽名方法、數(shù)字簽名驗證方法、裝置及系統(tǒng)。
背景技術(shù):
數(shù)字簽名指的是通過函數(shù)對待發(fā)送的消息處理得到的,用以認(rèn)證消息來源并核實 消息是否發(fā)生變化的字母數(shù)字串。利用數(shù)字簽名可以解決否認(rèn)、偽造、篡改及冒充等問題。 數(shù)字簽名在信息安全、身份認(rèn)證、數(shù)據(jù)完整性、不可否認(rèn)以及匿名性等方面有廣泛的應(yīng)用。 在傳統(tǒng)的數(shù)字簽名方案中,簽名方案十分依賴密鑰的保密。當(dāng)簽名的密鑰泄漏后,不僅之后 該方案的安全性遭到破壞,甚至連在這之前所進行的簽名也受到影響,即攻擊者可以偽造 任意時刻的用戶簽名。隨著技術(shù)的發(fā)展,一種前向安全的數(shù)字簽名思想被提出每個簽名密鑰僅用于一 個短的周期,第i個周期所使用的密鑰可以由第i-Ι個周期所使用的密鑰計算得到,但是反 過來很難由第i個周期的密鑰得到第i-Ι個周期的密鑰。這樣假設(shè)在第i個周期內(nèi)密鑰丟 失,不會影響到該周期之前所有周期的簽名,即攻擊者推算不出i之前的密鑰,從而不能產(chǎn) 生有效的簽名。在電信網(wǎng)絡(luò)中,前向安全的數(shù)字簽名技術(shù)被應(yīng)用起來,其中,一種基于身份的前向 安全數(shù)字簽名方案被提出,即基于安全的簽名方案S與前向安全的簽名方案FS構(gòu)造基于身 份的前向安全數(shù)字簽名方案,具體如下初始化階段算法系統(tǒng)初始化時分別選定階為q的乘法循環(huán)群G1和G2, G1的生成 元為g,線性映射為e =G1XG1^ G2,選擇兩個安全的Hash函數(shù)H1 :{0,1}*— {0,1}1和H2 {0,
系統(tǒng)隨機選定s e Zq作為其系統(tǒng)私鑰msk,計算Q = €作為其系統(tǒng)公鑰mpk。系統(tǒng) 秘密保存s,公布params= {G1; G2,e,q,g,Q,H1, H2}作為其公開參數(shù)。私鑰提取階段算法
系統(tǒng)輸入安全長度k,總時間段數(shù)T。系統(tǒng)隨機選取兩個不同的約*長的素數(shù)Pl,p2,并滿足
P1 = P2 = 3 (mod4), 2k_1 ( (P1-I) (ρ2_1),ριρ2 < 2k,計算 N = P1 ·ρ2。再輸入(ID,msk,mpk)。 如果身份ID對應(yīng)的初始私鑰已經(jīng)產(chǎn)生,則直接返回產(chǎn)生的私鑰;否則產(chǎn)生初始的私鑰,并
保存結(jié)果。產(chǎn)生方法為選取▽ 口7*計算=ζπ)= (H2(ID| |U))S。輸出ID
ο e ‘S
的初始私鑰skQ= (S0)。用戶的公鑰是pk= (ID,U, ζΙΒ,Ν,Τ,1)ο簽名者得到初始私鑰后, 判斷e“ID,g) =e(H2(ID |U),Q)是否成立,如果成立,則接受該私鑰,否則拒絕。私鑰演化
階段算法輸入(Lslvi,pk),返回第j時間段私鑰。如果1彡j彡T,; 否則Skj為空。簽名生成階段算法輸入(j,Skj, pk, Μ),得到簽名sig。具體過程如下隨 機選擇 re Z;,計算^ =/(…)(mod AO,Z =氏(]· I IrI I Μ),S = r if (mod AT)。記 sig = (ID, U, ζ ID, j, S, z)
簽名驗證階段算法輸入消息簽名對(M,sig)。將簽名劃分為(ID,U,ζ ID,j,S, Ζ)。執(zhí)行驗證算法IS. Vf(params, ID, U,ζ ID),判斷如下等式是否成立
θ(ζΙΒ, g) = e(H2(H2| |U),Q)如果不成立,則表示拒絕該簽名;如果等式成立,再執(zhí)行驗證算法2FS. Vf (M,U,j, S,z),具體如下計算;r = is2'Wc/z(m0dAr),再判斷Z = H1GIIY' ι |M),如果等式不成 立,則表示拒絕該簽名,如果等式均成立,則表示接受該簽名。發(fā)明人在實現(xiàn)本發(fā)明的過程中,發(fā)現(xiàn)現(xiàn)有方案的簽名是由兩個簽名(即一個普 通簽名方案的短簽名和一個前向安全簽名方案的簽名)組合而成,簽名長度較長,約為普 通簽名長度的兩倍;并且,現(xiàn)有方案的簽名驗證過程比較復(fù)雜,需要進行兩次簽名的驗證算 法,從而導(dǎo)致簽名的效率低下。
發(fā)明內(nèi)容
一方面,本發(fā)明實施例提供一種基于身份的前向安全的數(shù)字簽名方法、裝置及數(shù) 字簽名系統(tǒng),在縮短簽名長度的同時,有效實現(xiàn)基于身份的前向安全簽名方案的安全性。本發(fā)明實施例提供如下技術(shù)方案一種數(shù)字簽名系統(tǒng),包括密鑰生成中心,發(fā)送方設(shè)備和接收方設(shè)備,其中所述密鑰生成中心用于基于RSA模型和安全參數(shù)長度k生成系統(tǒng)公開參數(shù)和系統(tǒng) 秘密參數(shù)d,向所述發(fā)送方設(shè)備和所述接收方設(shè)備發(fā)布所述系統(tǒng)公開參數(shù),并在收到所述發(fā) 送方設(shè)備的攜帶簽名者的身份標(biāo)識id的注冊請求后,向所述發(fā)送方設(shè)備秘密發(fā)送初始簽 名私鑰,所述初始簽名私鑰是以所述系統(tǒng)秘密參數(shù)d的第一特定數(shù)次方為冪,對以所述簽 名者的身份標(biāo)識id為輸入的第一抗碰撞哈希函數(shù)值H1 (id)進行冪運算得到的;所述發(fā)送方設(shè)備用于以所述系統(tǒng)公開參數(shù)中的第一隨機數(shù)e的第二特定數(shù)次方 為冪,對第二隨機數(shù)r進行冪運算,得到簽名的隨機部分R ;計算以待發(fā)送消息M、簽名者的 身份標(biāo)識id、當(dāng)前時間段j和簽名的隨機部分R的串接數(shù)據(jù)為輸入的第二抗碰撞哈希函數(shù) 值吐(1(1| Ij| |M| Ir),并以所述第二抗碰撞哈希函數(shù)值為冪,對所述簽名者在當(dāng)前時間段j 的簽名私鑰進行冪運算得到的結(jié)果值與第二隨機數(shù)r進行乘法運算,得到簽名的隨機部分 S,向所述接收方設(shè)備發(fā)送消息簽名對M和Sig = (id, j, R,S),其中,所述簽名者在當(dāng)前時 間段j的簽名私鑰是以所述第一隨機數(shù)e為冪,對所述簽名者在上一個時間段的簽名私鑰 進行冪運算得到的;所述接收方設(shè)備用于從收到的消息簽名對中解析出消息M、簽名者的身份標(biāo)識 id、當(dāng)前時間段j和簽名的隨機部分R,S,當(dāng)該簽名的隨機部分S非0時,如果第一簽名驗 證值與第二簽名驗證值之間的簽名驗證關(guān)系成立,則對所述消息M進行業(yè)務(wù)處理;其中,所 述第一簽名驗證值是以所述第一隨機數(shù)e的第二特定數(shù)次方為冪,對簽名的隨機部分S進 行冪運算得到的;所述第二簽名驗證值是簽名的隨機部分R與以第二抗碰撞哈希函數(shù)值 H2(id| I j|M| |R)為冪,對第一抗碰撞哈希函數(shù)值H1 (id)進行冪運算得到的結(jié)果值進行乘法 運算得到的。以及,一種基于身份的前向安全的數(shù)字簽名方法,該方法包括以系統(tǒng)公開參數(shù)中的第一隨機數(shù)e的第二特定數(shù)次方為冪,對第二隨機數(shù)r進行 冪運算,得到簽名的隨機部分R,其中,所述第二特定數(shù)與運行總時間段T、當(dāng)前時間段j相關(guān);計算以待發(fā)送消息Μ、簽名者的身份標(biāo)識id、當(dāng)前時間段j和簽名的隨機部分R的串接數(shù)據(jù)為輸入的第二抗碰撞哈希函數(shù)值H2(id| ι jl |m| |r);以所述第二抗碰撞哈希函數(shù)值為冪,對所述簽名者在當(dāng)前時間段j的簽名私鑰進 行冪運算得到的結(jié)果值與第二隨機數(shù)r進行乘法運算,得到簽名的隨機部分S ;其中,所述 簽名者在當(dāng)前時間段j的簽名私鑰是以所述第一隨機數(shù)e為冪,對所述簽名者在上一個時 間段的簽名私鑰進行冪運算得到的;輸出所述待發(fā)送消息M的簽名sig = (id, j, R,S)。以及,一種基于身份的前向安全數(shù)字簽名設(shè)備,包括接口單元,用于通過可信通道接收系統(tǒng)公開參數(shù),及簽名者的身份標(biāo)識id所對應(yīng) 的初始簽名私鑰;簽名計算單元,用于以系統(tǒng)公開參數(shù)中的第一隨機數(shù)e的第二特定數(shù)次方為冪, 對第二隨機數(shù)r進行冪運算得到簽名的隨機部分R ;計算以待發(fā)送消息M、簽名者的身份 標(biāo)識id、當(dāng)前時間段j和簽名的隨機部分R的串接數(shù)據(jù)為輸入的第二抗碰撞哈希函數(shù)值 H2(id| |j| |m| |r);并以所述第二抗碰撞哈希函數(shù)值為冪,對所述簽名者在當(dāng)前時間段j的 簽名私鑰進行冪運算得到的結(jié)果值與第二隨機數(shù)r進行乘法運算,得到簽名的隨機部分S, 并輸出待發(fā)送消息M的簽名sig= (id,j,R,S),其中,所述簽名者在當(dāng)前時間段j的簽名私 鑰是以所述第一隨機數(shù)e為冪,對簽名者在上一個時間段的簽名私鑰進行冪運算得到的。可見,由于本發(fā)明實施例是基于RSA安全模型來構(gòu)造基于身份的前向安全簽名方 案,輸出簽名sig = (id, j, R,S),從而相對于現(xiàn)有技術(shù)中利用一個普通簽名方案和一個前 向安全的簽名方案來構(gòu)造基于身份的前向安全簽名方案,輸出簽名Sig= (ID,U, 4ID,j,s, Ζ)而言,本發(fā)明實施例的簽名長度相對于現(xiàn)有技術(shù)方案的簽名長度至少能縮短330bits ;
而且,本發(fā)明實施例的簽名私鑰是一個序列P^i I 7'二 1,2,L j),其中,簽名者在當(dāng)前時間
段j的簽名私鑰是以第一隨機數(shù)e為冪,對簽名者在上一個時間段的簽名私鑰進行冪運算 得到的;因此,任意一個簽名私鑰泄露不會影響之前簽名的安全性,從而即使簽名私鑰泄露 后,仍能保證數(shù)字簽名的前向安全。因此,在縮短簽名長度的同時,有效實現(xiàn)基于身份的前 向安全簽名方案的安全性。另一方面,本發(fā)明實施例提供一種基于身份的前向安全的數(shù)字簽名驗證方法、裝 置,以提高數(shù)字簽名驗證效率。本發(fā)明實施例提供如下技術(shù)方案—種基于身份的前向安全的數(shù)字簽名驗證方法,包括從收到的簽名消息對中,解析出消息M、簽名者的身份標(biāo)識id、當(dāng)前時間段j和簽 名的隨機部分R,S;當(dāng)簽名部分S非0時,計算以所述消息M、簽名者的身份標(biāo)識id、當(dāng)前時間段j和 簽名部分R的串接數(shù)據(jù)為輸入的第二抗碰撞哈希函數(shù)值氏(1(1| I j| |m| |r);計算以所述簽名者的身份標(biāo)識id為輸入的第一抗碰撞哈希函數(shù)值H1 (id);比較第一簽名驗證值與第二簽名驗證值,當(dāng)?shù)谝缓灻炞C值與第二簽名驗證值間 的簽名驗證關(guān)系成立時,則簽名驗證通過,其中所述第一簽名驗證值是以系統(tǒng)公開參數(shù)中 的第一隨機數(shù)e的第二特定數(shù)次方為冪,對簽名的隨機部分S進行冪運算得到的;所述第二簽名驗證值是簽名的隨機部分r與以第二抗碰撞哈希函數(shù)值為冪,對第一抗碰撞哈希函數(shù) 值進行冪運算得到的結(jié)果值進行乘法運算得到的;所述第二特定數(shù)與運行總時間段t、當(dāng) 前時間段j相關(guān)。以及,一種基于身份的前向安全數(shù)字簽名驗證設(shè)備,包括接口單元,用于接收系統(tǒng)公開參數(shù);
簽名解析單元,用于從收到的簽名消息對中解析出消息M、簽名者的身份標(biāo)識id、 當(dāng)前時間段j和簽名的隨機部分r,s ;第二抗碰撞哈希函數(shù)值計算單元,用于計算以消息m、簽名者的身份標(biāo)識id、當(dāng)前 時間段j和簽名部分R的串接數(shù)據(jù)為輸入的第二抗碰撞哈希函數(shù)值吐(1(1| I j| |m| |r);第一抗碰撞哈希函數(shù)值計算單元,用于計算以簽名者的身份標(biāo)識id為輸入的第 一抗碰撞哈希函數(shù)值H1 (id);簽名驗證單元,用于當(dāng)該簽名的隨機部分s非0時,比較第一簽名驗證值與第二簽 名驗證值,如果第一簽名驗證值與第二簽名驗證值之間的簽名驗證關(guān)系成立,則簽名驗證 通過,其中所述第一簽名驗證值是以所述系統(tǒng)公開參數(shù)中的第二隨機數(shù)e的第二特定數(shù)次 方為冪,對簽名的隨機部分s進行冪運算得到的;所述第二簽名驗證值是簽名的隨機部分r 與以第二抗碰撞哈希函數(shù)值H2(id| I j| |m| |r)為冪,對第一抗碰撞哈希函數(shù)值H1 (id)進行 冪運算得到的結(jié)果值進行乘法運算得到的,其中所述第二特定數(shù)與總時間段τ、當(dāng)前時間段 j相關(guān)??梢?,本發(fā)明實施例的基于身份的前向安全的數(shù)字簽名驗證方案中,通過第一簽 名驗證值與第二簽名驗證值之間的簽名驗證關(guān)系的一次驗證,來判斷簽名的合法性或真實 性,相對于現(xiàn)有技術(shù)需進行兩次簽名的驗證配對而言,實現(xiàn)了簽名的快速驗證,提高了簽名 驗證效率。
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn) 有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明 的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根 據(jù)這些附圖獲得其他的附圖。圖1為本發(fā)明實施例的一種數(shù)字簽名系統(tǒng)的結(jié)構(gòu)示意圖;圖2為本發(fā)明實施例的一種基于身份的前向安全的數(shù)字簽名方法的流程示意圖;圖3為本發(fā)明實施例的一種基于身份的前向安全的數(shù)字簽名驗證方法的流程示 意圖;圖4為本發(fā)明實施例的一種基于身份的前向安全的數(shù)字簽名方法的交互示意圖;圖4a為圖4中步驟s401的流程示意圖;圖4b為圖4中步驟s402的流程示意圖;圖4c為圖4中步驟s403的發(fā)送方a對用戶的簽名私鑰進行更新的方法的一種流 程示意圖;圖4d為圖4中步驟s403的發(fā)送方a生成待發(fā)送業(yè)務(wù)消息m的數(shù)字簽名的方法的 一種流程示意圖4e為圖4中步驟S404的流程示意圖;圖5a為本發(fā)明實施例的一種基于身份的前向安全數(shù)字簽名設(shè)備的結(jié)構(gòu)示意圖;圖5b為圖5a中簽名計算單元53的結(jié)構(gòu)示意圖;圖6為本發(fā)明實施例的一種基于身份的前向安全數(shù)字簽名驗證設(shè)備的結(jié)構(gòu)示意 圖。
具體實施例方式為使本發(fā)明實施例的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例是 本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員 在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。請參閱圖1,為本發(fā)明實施例的一種數(shù)字簽名系統(tǒng),如圖1所示,本發(fā)明實施例的 數(shù)字簽名系統(tǒng)包括密鑰生成中心10,用于基于RSA模型和安全參數(shù)長度k,生成系統(tǒng)公開參數(shù)和系統(tǒng) 秘密參數(shù)并向系統(tǒng)中的發(fā)送方設(shè)備20和接收方設(shè)備30發(fā)布系統(tǒng)公開參數(shù),并在收到發(fā)送 方設(shè)備20的攜帶簽名者的身份標(biāo)識id的注冊請求后,向發(fā)送方設(shè)備20秘密發(fā)送初始簽名 私鑰,所述初始簽名私鑰是以所述系統(tǒng)秘密參數(shù)d的第一特定數(shù)次方為冪,對以所述簽名 者的身份標(biāo)識id為輸入的第一抗碰撞哈希函數(shù)值Hl (id)進行冪運算得到的;這里的第一 特定數(shù)次方與總時間段T相關(guān),可以是T+1,其中T為運行總時間段數(shù)。在一種具體實現(xiàn)下,所述初始簽名私鑰是根據(jù)戲々—(/Z1(W)/+1 modAH十算得 到的;其中,所述密鑰生成中心10發(fā)布的系統(tǒng)公開參數(shù)包括e,N, H1, H2,其中,N = P · q, 樹7V) = (P-1)·@-1),ρ,q為隨機選取的兩個不同的k/2長的素數(shù);ee <,其中滿足
1 <6<餌列且Scd(e^iv)) = 1Pn H2為兩個抗碰撞的隨機哈希函數(shù)且H1, H2= {0,1}*- {0, Ilk ;這里的系統(tǒng)秘密參數(shù)包括系統(tǒng)私鑰d,其中,d El(mod φ{(diào)Ν))。發(fā)送方設(shè)備20,用于以所述系統(tǒng)公開參數(shù)中的第一隨機數(shù)e的第二特定數(shù)次方為 冪,對第二隨機數(shù)r進行冪運算,得到簽名的隨機部分R ;計算以待發(fā)送消息M、簽名者的身 份標(biāo)識id、當(dāng)前時間段j和簽名的隨機部分R的串接數(shù)據(jù)為輸入的第二抗碰撞哈希函數(shù)值 H2(id| Ij| |M| Ir),并以所述第二抗碰撞哈希函數(shù)值為冪,對所述簽名者在當(dāng)前時間段j的 簽名私鑰進行冪運算得到的結(jié)果值與第二隨機數(shù)r進行乘法運算,得到簽名的隨機部分S, 向接收方設(shè)備30發(fā)送消息簽名對,即消息M和該消息M的簽名sig = (id, j, R,S),其中, 所述簽名者在當(dāng)前時間段j的簽名私鑰是以所述第一隨機數(shù)e為冪,對所述簽名者在上一 個時間段的簽名私鑰進行冪運算得到的;這里的第二特定數(shù)與總時間段T、當(dāng)前時間段j相 關(guān),應(yīng)當(dāng)理解的是,所述上一個時間段的簽名私鑰可以是初始簽名私鑰,或者,是基于初始 簽名私鑰演化得到的;接收方設(shè)備30,用于從收到的消息簽名對中解析出消息M、簽名者的身份標(biāo)識id、 當(dāng)前時間段j和簽名的隨機部分R,S,當(dāng)該簽名的隨機部分S非0時,如果第一簽名驗證值 與第二簽名驗證值之間的簽名驗證關(guān)系成立時,則對所述消息M進行業(yè)務(wù)處理;其中,所述 第一簽名驗證值是以第一隨機數(shù)e的第二特定數(shù)次方為冪,對簽名的隨機部分S進行冪運算得到的,所述第二特定數(shù)與總時間段T、當(dāng)前時間段j相關(guān);所述第二簽名驗證值是簽名 的隨機部分R與以第二抗碰撞哈希函數(shù)值H2(id| Ijl |m| |r)為冪,對第一抗碰撞哈希函數(shù) 值H1 (id)進行冪運算得到的結(jié)果值進行乘法運算得到的。在一種實現(xiàn)方式下,發(fā)送方設(shè)備20具體用于根據(jù)及二丨/’+‘勺!^^^計算簽名的隨 機部分R,根據(jù)S = (r ■計算簽名的隨機部分S,向所述接收方設(shè)備發(fā)送 消息M和該消息M的簽名sig = (id, j,R,S),其中,“e Ζ; , τ為運行總時間段,j為所述簽 名者當(dāng)前所處的時間段,為所述簽名者在當(dāng)前時間段j的簽名私鑰。以及,在一種實現(xiàn)方式下,發(fā)送方設(shè)備20還用于當(dāng)確定簽名私鑰需要演化時,根 據(jù)減=(^^)、0(^計算所述簽名者在當(dāng)前時間段」_的簽名私鑰,其中,成‘,為所述 簽名者在第j_l個時間段的簽名私鑰。需要理解的是,這里的^/,_,可以是與簽名者的身份 標(biāo)識id所對應(yīng)的初始簽名私鑰,或者,可以是經(jīng)所述初始簽名私鑰演化的、所述簽名者在 第j-1個時間段的簽名私鑰。以及,在一種實現(xiàn)方式下,接收方設(shè)備30具體用于從收到的消息簽名對中解析出 消息M、簽名者的身份標(biāo)識id、當(dāng)前時間段j和簽名的隨機部分R,S,當(dāng)該簽名的隨機部分S
非0時,如果S i^^iO^WMImodAO成立,對所述消息M進行業(yè)務(wù)處理。具體的,當(dāng)V—' ^^^(/OW^^modAO成立時,則表示簽名驗證通過,說明該 簽名是消息M的有效簽名,接收方設(shè)備收到的消息未發(fā)生變化,進而接收方設(shè)備對收到的 消息M進行正常的業(yè)務(wù)處理,如通過該用戶服務(wù)申請請求;反之,則表示簽名驗證失敗,說 明該簽名不是消息M的有效簽名,或者接收方設(shè)備收到的消息發(fā)生變化(如被第三方篡改 過),進而接收方設(shè)備可以丟棄該消息或拒絕該消息,如拒絕用戶的服務(wù)申請請求??梢姡景l(fā)明實施例的數(shù)字簽名系統(tǒng)中,發(fā)送方設(shè)備生成的簽名私鑰是一個序列
(^J7" =1,2,L , ,其中,簽名者在當(dāng)前時間段j的簽名私鑰是以第一隨機數(shù)e為冪,對簽
名者在上一個時間段的簽名私鑰進行冪運算得到的;因此,任意一個簽名私鑰泄露不會影 響之前簽名的安全性,即使該發(fā)送方設(shè)備生成的簽名私鑰泄露,也能保證數(shù)字簽名的前向 安全,而且還能帶來以下技術(shù)效果1)由于本發(fā)明實施例是基于RSA安全模型來構(gòu)造基于身份的前向安全簽名方案, 輸出簽名sig = (id, j, R,S),從而相對于現(xiàn)有技術(shù)中利用一個普通簽名方案和一個前向 安全的簽名方案來構(gòu)造基于身份的前向安全簽名方案,輸出簽名sig = (ID, U, ζα,j, S, Ζ)而言,本發(fā)明實施例的簽名長度相對于現(xiàn)有技術(shù)方案的簽名長度至少縮短330bits,從 而在通信過程中,實現(xiàn)相同的功能的前提下,節(jié)約帶寬;具體的,取目前常用的安全長度(N 為1024bit)。現(xiàn)有技術(shù)中的簽名為sig = (ID, U, ζΙΒ, j, S,Ζ),本發(fā)明實施例的簽名為 (id, j,R,S),因此,即使現(xiàn)有技術(shù)中采取的先進的短簽名技術(shù),但其長度仍會長于本發(fā)明, 多出U,(ID。如果采用DSA或其他簽名,那長度就會更長了。一般來說,現(xiàn)有技術(shù)的簽名長 度為ID+1024+170+j+1024+160 = ID+j+2378 (bit),如果采用DSA簽名算法,則簽名長度是 ID+j+2528(bit)(因為在相同的安全等級下ζΙ 的長度需要320bit),如果采取其他簽名 方式,那么簽名長度會更長,如直接形式的RSA簽名,那么簽名長度將達到ID+j+3232(bit)(因為在相同的安全等級下ζ ID的長度需要1024bit);而在相同的安全等級下,本發(fā)明實 施例的簽名長度是 ID+j+1024+1024 = ID+j+2048 (bit)。2)本發(fā)明實施例的計算私鑰演化的指數(shù)演算(即2~16)遠遠低于是現(xiàn)有技術(shù)方案 的指數(shù)演算(即2~160);具體的,本發(fā)明實施例基于RSA安全模型來構(gòu)造基于身份的前向 安全簽名方案,一般RSA中的e的大小取e = 216+1 = 65537。
3)本發(fā)明實施例的基于身份的前向安全的數(shù)字簽名驗證方案中,通過第一簽名驗 證值與第二簽名驗證值之間的簽名驗證關(guān)系的一次驗證,來判斷簽名的合法性或真實性, 相對于現(xiàn)有技術(shù)需進行兩次簽名的驗證配對而言,實現(xiàn)了簽名的快速驗證,提高了簽名驗 證效率。本發(fā)明實施例的簽名驗證的計算量(2次指數(shù)運算)遠遠低于現(xiàn)有技術(shù)方案(8-12 次指數(shù)運算)。具體的,本發(fā)明實施例中,使用指數(shù)計算時間來評估計算量,在計算簽名的時 候,現(xiàn)有技術(shù)需要兩次指數(shù)運算時間,本發(fā)明實施例也是兩次計算時間。運算量相當(dāng)。但是, 在驗證簽名時,現(xiàn)有技術(shù)需要計算兩次配對,計算量大,而通常一次配對的時間大約是3-5 次的同級別的指數(shù)運算時間。此外,驗證算法2FS. Vf (M,U, j,S,Ζ)需要2次指數(shù)運算,故 現(xiàn)有算法需要大約在8-12次指數(shù)運算時間。本發(fā)明驗證算法需要2次指數(shù)運算時間,故本 發(fā)明實施例減少運算時間,效率更高。4)進一步的,本發(fā)明實施例中,基于RSA安全模型的算法生成演化的簽名私鑰,即 初始簽名私鑰是以所述系統(tǒng)秘密參數(shù)d的第一特定數(shù)次方為冪,對以簽名者的身份標(biāo)識id 為輸入的第一抗碰撞哈希函數(shù)值H1 (id)進行冪運算得到的;簽名者在當(dāng)前時間段j的簽名 私鑰是以第一隨機數(shù)e為冪,對簽名者在上一個時間段的簽名私鑰進行冪運算得到的,從 而綁定了簽名者的身份與簽名私鑰,使得用簽名者的身份與簽名私鑰一一對應(yīng),避免了證 書管理的難題。請參閱圖2,為本發(fā)明實施例的一種基于身份的前向安全的數(shù)字簽名方法的流程 示意圖,可以應(yīng)用于如圖1所示的發(fā)送方設(shè)備,或者,數(shù)字簽名設(shè)備,本發(fā)明實施例的方法 支持接收密鑰生成中心發(fā)布系統(tǒng)公開參數(shù)^NjpH2,其中N = ρ .Cil(AO = (P-I)A-I),
P,q為隨機選取的兩個不同的k/2長的素數(shù);e e Z;,其中滿足1 < e < 且gcdkiKAO) =1 (e與p(iV)的最大公約數(shù)為1)諷,吐為兩個抗碰撞的隨機哈希函數(shù)且&,吐⑷,⑴一{0, l}k,以及本發(fā)明實施例的簽名者注冊有與其身份標(biāo)識id對應(yīng)的初始簽名私鑰 ;該方法 可以包括如下步驟S202、以系統(tǒng)公開參數(shù)中的第一隨機數(shù)e的第二特定數(shù)次方為冪,對第二隨機數(shù)r 進行冪運算,得到簽名的隨機部分R,其中,所述第二特定數(shù)與預(yù)定的運行總時間段T、當(dāng)前 時間段j相關(guān);具體的,根據(jù)— /+'_' (modAO計算得到簽名的隨機部分R,其中r e 4,T為 運行總時間段數(shù),j為簽名者當(dāng)前所處的時間段。S203、計算以待發(fā)送消息M、簽名者的身份標(biāo)識id、當(dāng)前時間段j和簽名的隨機部 分R的串接數(shù)據(jù)為輸入的第二抗碰撞哈希函數(shù)值吐(1(1| I j| |m| |r);這里的第二抗碰撞哈希函數(shù)值可以理解成,待發(fā)送消息的消息摘要。S204、以所述第二抗碰撞哈希函數(shù)值為冪,對所述簽名者在當(dāng)前時間段j的簽名 私鑰進行冪運算得到的結(jié)果值與第二隨機數(shù)r進行乘法運算,得到簽名的隨機部分S ;其 中,所述簽名者在當(dāng)前時間段j的簽名私鑰是以所述第一隨機數(shù)e為冪,對簽名者在上一個時間段的簽名私鑰進行冪運算得到的;具體的,根據(jù)S —^‘/^"^",(mociAO計算得到簽名的隨機部分S,其中〃 e Ζ〗,j為簽名者當(dāng)前所處的時間段。可以理解成利用所述簽名者在當(dāng)前時間段j的簽名私鑰對待發(fā)送消息的消息摘 要進行加密。S205、輸出所述待發(fā)送消息M的簽名sig = (id, j,R,S)。在一種實現(xiàn)方式下,所述方法進一步包括S201、以第一隨機數(shù)e為冪,對簽名者在上一個時間段的簽名私鑰進行冪運算,得 到簽名者在當(dāng)前時間段j的簽名私鑰;具體的,根據(jù)戲— "^^/(modAO計算得到簽名者在當(dāng)前時間段j的簽名私鑰, 其中5^V1為簽名者在上一個時間段的簽名私鑰,具體的,當(dāng)i-1 = 0時,所述戲‘,為所述簽 名者的身份標(biāo)識id所注冊或?qū)?yīng)的初始簽名私鑰;當(dāng)i-1 > 0,所述為基于所述初始 簽名私鑰演化得到的所述簽名者在下一個時間段的簽名私鑰??梢?,本發(fā)明實施例的基于身份的前向安全的數(shù)字簽名方法中,簽名私鑰是一個
序列P、I·/=1,2, L , ,其中,簽名者在當(dāng)前時間段j的簽名私鑰是以第一隨機數(shù)e為冪,
對簽名者在上一個時間段的簽名私鑰進行冪運算得到的;因此,任意一個簽名私鑰泄露不 會影響之前簽名的安全性,即使該發(fā)送方設(shè)備生成的簽名私鑰泄露,也能保證數(shù)字簽名的 前向安全,而且還能帶來以下技術(shù)效果1)由于本發(fā)明實施例是基于RSA安全模型來構(gòu)造基于身份的前向安全簽名方案, 輸出簽名sig = (id, j, R,S),從而相對于現(xiàn)有技術(shù)中利用一個普通簽名方案和一個前向 安全的簽名方案來構(gòu)造基于身份的前向安全簽名方案,輸出簽名sig = (ID, U, ζα,j, S, Ζ)而言,本發(fā)明實施例的簽名長度相對于現(xiàn)有技術(shù)方案的簽名長度至少縮短330bits,從 而在通信過程中,實現(xiàn)相同的功能的前提下,節(jié)約帶寬;具體的,取目前常用的安全長度(N 為1024bit)?,F(xiàn)有技術(shù)中的簽名為sig = (ID, U, ζΙΒ, j, S,Ζ),本發(fā)明實施例的簽名為 (id, j,R,S),因此,即使現(xiàn)有技術(shù)中采取的先進的短簽名技術(shù),但其長度仍會長于本發(fā)明, 多出U,(ID。如果采用DSA或其他簽名,那長度就會更長了。一般來說,現(xiàn)有技術(shù)的簽名長 度為ID+1024+170+j+1024+160 = ID+j+2378 (bit),如果采用DSA簽名算法,則簽名長度是 ID+j+2528(bit)(因為在相同的安全等級下ζΙ 的長度需要320bit),如果采取其他簽名 方式,那么簽名長度會更長,如直接形式的RSA簽名,那么簽名長度將達到ID+j+3232(bit) (因為在相同的安全等級下的長度需要1024bit);而在相同的安全等級下,本發(fā)明實施 例的簽名長度是 ID+j+1024+1024 = ID+j+2048 (bit)。2)本發(fā)明實施例的計算私鑰演化的指數(shù)演算(即2~16)遠遠低于是現(xiàn)有技術(shù)方案 的指數(shù)演算(即2~160);具體的,本發(fā)明實施例基于RSA安全模型來構(gòu)造基于身份的前向 安全簽名方案,一般RSA中的e的大小取e = 216+1 = 65537。3)進一步的,本發(fā)明實施例中,基于RSA安全模型的算法生成演化的簽名私鑰,即 初始簽名私鑰是以所述系統(tǒng)秘密參數(shù)d的第一特定數(shù)次方為冪,對以簽名者的身份標(biāo)識id 為輸入的第一抗碰撞哈希函數(shù)值H1 (id)進行冪運算得到的;簽名者在當(dāng)前時間段j的簽名 私鑰是以第一隨機數(shù)e為冪,對簽名者在上一個時間段的簽名私鑰進行冪運算得到的,從而綁定了簽名者的身份與簽名私鑰,使得用簽名者的身份與簽名私鑰一一對應(yīng),避免了證書管理的難題。請參閱圖3,為本發(fā)明實施例的一種基于身份的前向安全的數(shù)字簽名驗證方法的 流程示意圖,可以應(yīng)用于如圖1所示的接收方設(shè)備,或者數(shù)字簽名驗證設(shè)備,本發(fā)明實施例 方法支持接收簽名方發(fā)布的系統(tǒng)公開參數(shù)^NjpH2,其中N = ρ *q,樹=-1),
P,q為隨機選取的兩個不同的k/2長的素數(shù);e e Z;,其中滿足! < e < 且gCd(e,<AT)) = 1 (e與樹Λ0的最大公約數(shù)為1) A,H2為兩個抗碰撞的隨機哈希函數(shù)且H1, H2 {0,1}*- {0, l}k;該方法可以包括如下步驟S301、接收簽名消息對sig,Μ,即簽名sig和消息M ;S302、從收到簽名消息對中解析出消息M、簽名者的身份標(biāo)識id、當(dāng)前時間段j和 簽名的隨機部分R,S;S303、當(dāng)簽名部分S非0時,計算以所述消息M、簽名者的身份標(biāo)識id、當(dāng)前時間 段j和簽名部分R的串接數(shù)據(jù)為輸入的第二抗碰撞哈希函數(shù)值吐(1(1| |j| |m| |r),這里的 H2(id| ι jl |m| |r)可以理解成消息摘要;S304、計算以簽名者的身份標(biāo)識id為輸入的第一抗碰撞哈希函數(shù)值H1 (id);S305、比較第一簽名驗證值與第二簽名驗證值,當(dāng)?shù)谝缓灻炞C值與第二簽名驗 證值之間的簽名驗證關(guān)系成立時,則簽名驗證通過,其中所述第一簽名驗證值是以系統(tǒng)公 開參數(shù)中的第一隨機數(shù)e的第二特定數(shù)次方為冪,對簽名的隨機部分S進行冪運算得到的, 所述第二特定數(shù)與運行總時間段T、當(dāng)前時間段j相關(guān);所述第二簽名驗證值是簽名的隨機 部分R與以第二抗碰撞哈希函數(shù)值H2(id| I j| |m| |r)為冪,對第一抗碰撞哈希函數(shù)值H1 (id) 進行冪運算得到的結(jié)果值進行乘法運算得到的。具體的,如果該簽名的隨機部分S為0,則簽名驗證失敗;如果該簽名的 隨機部分S非 時,seT+""三RH,(id)H^idmMm(modN)成立,則簽名驗證通過;如果
S^i Ξ /^々…叫考側(cè)幻細…;^不成立,則簽名驗證失敗??梢?,本發(fā)明實施例的基于身份的前向安全的數(shù)字簽名驗證方案中,通過第一簽 名驗證值與第二簽名驗證值之間的簽名驗證關(guān)系的一次驗證,來判斷簽名的合法性或真實 性,相對于現(xiàn)有技術(shù)需進行兩次簽名的驗證配對而言,實現(xiàn)了簽名的快速驗證,提高了簽名 驗證效率。本發(fā)明實施例的簽名驗證的計算量(2次指數(shù)運算)遠遠低于現(xiàn)有技術(shù)方案 (8-12次指數(shù)運算)。具體的,本發(fā)明實施例中,使用指數(shù)計算時間來評估計算量,在計算簽 名的時候,現(xiàn)有技術(shù)需要兩次指數(shù)運算時間,本發(fā)明實施例也是兩次計算時間。運算量相 當(dāng)。但是,在驗證簽名時,現(xiàn)有技術(shù)需要計算兩次配對,計算量大,而通常一次配對的時間大 約是3-5次的同級別的指數(shù)運算時間。此外,驗證算法2FS.Vf(M,U,j,S,Z)需要2次指數(shù) 運算,故現(xiàn)有算法需要大約在8-12次指數(shù)運算時間。本發(fā)明驗證算法需要2次指數(shù)運算時 間,故本發(fā)明實施例減少運算時間,效率更高。下面結(jié)合一個具體的應(yīng)用來描述本發(fā)明方案發(fā)送方設(shè)備A利用Hash算法將待發(fā) 送消息生成消息摘要(message digest),并用發(fā)送方設(shè)備在當(dāng)前時間段的簽名私鑰對該消 息摘要進行加密,進而得到數(shù)字簽名,隨后發(fā)送方設(shè)備A將消息與簽名發(fā)給接收方設(shè)備B。 接收方設(shè)備B接收到消息簽名對后,進而獲得由發(fā)送方設(shè)備A生成的消息摘要,接收方設(shè)備B用發(fā)送方設(shè)備A所用Hash算法重新生成收到消息的摘要。通過比較這兩個摘要來驗證消 息或簽名的有效性。請參閱圖4,為本發(fā)明實施例的一種基于身份的前向安全的數(shù)字簽名方法的交互 示意圖,該方法應(yīng)用于如圖1所示的應(yīng)用環(huán)境下,可以包括如下步驟S401、密鑰生成中心KGC生成系統(tǒng)公開參數(shù)和系統(tǒng)秘密參數(shù),并向系統(tǒng)中的發(fā)送 方設(shè)備和接收方設(shè)備發(fā)布系統(tǒng)公開參數(shù);S402、發(fā)送方設(shè)備向KGC發(fā)送身份注冊請求,并接收KGC通過可信通道秘密返回的 初始簽名私鑰;S403、在使用一段時間后,發(fā)送方設(shè)備對用戶的簽名私鑰進行更新,即根據(jù)上一個 時間段(j = m)的簽名私鑰計算下一個時間段(j = m+1)的簽名私鑰,當(dāng)發(fā)送方設(shè)備的用 戶需要向接收方設(shè)備發(fā)送業(yè)務(wù)消息M時,發(fā)送方設(shè)備生成待發(fā)送業(yè)務(wù)消息M的數(shù)字簽名sig =(id, j,R,S),并向接收方設(shè)備發(fā)送消息簽名對,即業(yè)務(wù)消息M和簽名sig = (id, j, R, S);S404、接收方設(shè)備從收到的消息簽名對中解析出消息Μ、用戶身份id、當(dāng)前時間段 j和簽名的隨機部分R,S后,驗證該簽名的真實性或合法性,如果簽名驗證通過,執(zhí)行S405 ; 如果簽名驗證不通過,拒絕或丟棄發(fā)送方A的業(yè)務(wù)消息;S405、正常處理收到的業(yè)務(wù)消息。請參閱圖4a,為圖4中S401的密鑰生成中心KGC生成系統(tǒng)公開參數(shù)和系統(tǒng)秘密參 數(shù)的方法的一種流程示意圖,包括如下步驟S4011、輸入系統(tǒng)初始的安全參數(shù)長度k;S4012、隨機選取兩個不同的k/2長的RSA素數(shù)p,q,計算N = ρ · q和S4013、隨機選取6 e Z;.S4014、判定e是否滿足1 < e < Φ (N)且gcdf^^AT)) - 1,如果均滿足,執(zhí)行下一 步S4015 ;反之,返回執(zhí)行S4013 ;S4015、計算山使得φ(Ν));這里具體可以使用輾轉(zhuǎn)相除法計算d ;34016、選擇兩個抗碰撞的隨機哈希函數(shù)!11,!12,其中!11,!12:{0,1}*— {0,l}k;S4017、系統(tǒng)秘密保存秘密參數(shù),即系統(tǒng)私鑰d,并輸出系統(tǒng)的公開參數(shù)param = (e,N,H1, H2) ο請參閱圖4b,為圖4中S402的密鑰生成中心KGC生成初始簽名私鑰的方法的一種 流程示意圖,如圖4b所示,該方法可以包括如下步驟S4021、輸入簽名者的身份id,讀取存儲的方案運行總時間段T,系統(tǒng)的公開參數(shù) 中的N,H1,系統(tǒng)私鑰d;具體的,KGC接收來自發(fā)送方A的身份注冊請求,所述身份注冊請求中包含有用戶 的身份id ;這里的身份id具體可以是用戶的Email、身份證號碼等等。 S4022、KGC判斷該身份id的用戶是否已注冊于本系統(tǒng),如果未注冊過,則執(zhí)行步 驟S4023 ;如果早先已注冊過,則執(zhí)行步驟S4025 ;具體的,KGC在身份數(shù)據(jù)庫中搜索本身份id,若命中數(shù)據(jù),則確認(rèn)該身份id的用戶已經(jīng)注冊過本系統(tǒng);反之,則確認(rèn)該身份id的用戶是初始注冊本系統(tǒng)。S4023、計算以簽名者的身份標(biāo)識id為輸入的第一抗碰撞哈希函數(shù)值H1 (id);以 所述系統(tǒng)私鑰d的(T+1)次方為冪,對所述第一抗碰撞哈希函數(shù)值進行冪運算,得到用戶在 第0個時間段的初始簽名私鑰;S4024、通過可信通道向發(fā)送方A秘密返回W,,與系統(tǒng)公開參數(shù);具體的,基于
yr+\ Skldo — [^1 (^)] (mod AO , KGC計算用戶在第0個時間段的初始簽名私鑰成w。;需要說明的是,S4024中也可以是向發(fā)送方A秘密返回^^即可。在另一種實現(xiàn)方 式下,KGC生成系統(tǒng)公開參數(shù)的時候,可以主動向系統(tǒng)中的已注冊的其他設(shè)備發(fā)布系統(tǒng)公開參數(shù)。S4025、提醒該身份id的用戶已經(jīng)注冊,或者,提醒注冊簽名私鑰失敗。請參閱圖4c,為圖4中S403的發(fā)送方A對用戶的簽名私鑰進行更新/演化的方法 的一種流程示意圖,如圖4c所示,該方法可以包括如下步驟S4031a、輸入簽名者當(dāng)前所處的時間段j,讀取存儲的運行總時間段數(shù)T,上一個 時間段的私鑰Awm (即第j_l個時間段的私鑰A^1),系統(tǒng)公開參數(shù)中的e,N ;S4032a、判斷簽名私鑰是否需要演化,如果需要演化,則執(zhí)行步驟S4033a ;反之, 則執(zhí)行步驟S4034a ;具體的,判斷j是否滿足1彡j彡T,如果是,則執(zhí)行步驟S4033a ;反之,則執(zhí)行步 驟 S4034a ;S4033a、以所述系統(tǒng)參數(shù)的e為冪,對上一個時間段的私鑰^^進行冪運算,得到 用戶在當(dāng)前時間段j的簽名私鑰;具體的,計算·5‘, = (skid Je mod N,得到用戶在時間段j
的簽名私鑰,其中sAb是前一個簽名私鑰;S4034a、密鑰更新失敗。具體是該簽名私鑰已經(jīng)達到了更新上限,需要重新注冊用戶??梢?,本發(fā)明實施例的簽名私鑰更新過程中,在使用一段時間后,用戶的簽名私鑰 可以進行更新,獲得新的簽名私鑰。若已經(jīng)到達更新次數(shù)的上限,則更新終止。用戶需要重 新向系統(tǒng)注冊。更新時,直接使用系統(tǒng)的公開參數(shù)做指數(shù)冪的運算,較為高效,不需要系統(tǒng) 私鑰的幫助。請參閱圖4d,為圖4中S403的發(fā)送方A生成待發(fā)送業(yè)務(wù)消息M的數(shù)字簽名的方法 的一種流程示意圖,如圖4d所示,該方法可以包括如下步驟S4031b、以系統(tǒng)公開參數(shù)中的第一隨機數(shù)e的第二特定數(shù)次方為冪,對隨機選取 的第二隨機數(shù)r進行冪運算,得到簽名的隨機部分R,其中,所述第二特定數(shù)與總時間段T、 當(dāng)前時間段j相關(guān);具體的,根據(jù)穴—/+w(modA0計算得到簽名的隨機部分R,其中“4 ,;S4032b、計算以待發(fā)送消息M、簽名者的身份標(biāo)識id、當(dāng)前時間段j和簽名的隨機 部分R的串接數(shù)據(jù)為輸入的第二抗碰撞哈希函數(shù)值吐(1(1| |j| |m| |r).這里的第二抗碰撞哈希函數(shù)值可以理解成,待發(fā)送消息的消息摘要。S4033b、以所述第二抗碰撞哈希函數(shù)值為冪,對所述簽名者在當(dāng)前時間段j的簽名私鑰進行冪運算得到的結(jié)果值與第二隨機數(shù)r進行乘法運算,得到簽名的隨機部分S ; 具體的,根據(jù)S —ri+M—YmodV)計算得到簽名的隨機部分S ;可以理解成利用所述簽名者在當(dāng)前時間段j的簽名私鑰對待發(fā)送消息的消息摘 要進行加密。S4034b、輸出簽名 sig = (id, j, R, S)。請參閱圖4e,為圖4中S404的接收方對收到的消息簽名對中的簽名進行驗證的方 法的一種流程示意圖,其中,e,N, H1, H2是簽名方發(fā)布的系統(tǒng)公開參數(shù),如圖4e所示,該方 法可以包括如下步驟S4041、接收消息簽名對sig,M;S4042、從收到的消息簽名對中解析出消息Μ、用戶身份id、當(dāng)前時間段j和簽名的 隨機部分R,S ;S4043、判斷簽名部分S是否為0,如果為0,執(zhí)行S4044;否則,表示簽名驗證失敗;S4044、計算以消息M、簽名者的身份標(biāo)識id、當(dāng)前時間段j和簽名部分R的串接數(shù) 據(jù)為輸入的第二抗碰撞哈希函數(shù)值H2(idι |j| |m| R),這里的H2(id| |j| |m| |r)可以理解成 接收方重新生成的所獲得消息的摘要;S4045、計算以簽名者的身份標(biāo)識id為輸入的第一抗碰撞哈希函數(shù)值Hl (id);S4046、判斷第一簽名驗證值與第二簽名驗證值之間的簽名驗證關(guān)系是否成立,如 果成立,表示簽名驗證通過;否則,表示簽名驗證失?。黄渲兴龅谝缓灻炞C值是以第一 隨機數(shù)e的第二特定數(shù)次方為冪,對簽名的隨機部分S進行冪運算得到的,所述第二特定數(shù) 與總時間段T、當(dāng)前時間段j相關(guān);所述第二簽名驗證值是簽名的隨機部分R與以第二抗碰 撞哈希函數(shù)值為冪,對第一抗碰撞哈希函數(shù)值進行冪運算得到的結(jié)果值進行乘法運算得到 的。需要說明的是,這里的第一簽名驗證值與從接收的消息簽名對中解析到的發(fā)送方設(shè)備 生成的消息摘要相關(guān);這里的第二簽名驗證值與接收方設(shè)備重新生成的消息摘要相關(guān)。具體的,判斷Ξ紐,(似)"2(irf|_w(modA0是否成立,如果成立,表示簽名驗證 通過;否則,表示簽名驗證失敗。本發(fā)明實施例公開的基于身份的前向安全的數(shù)字簽名方案主要分為五個階段初 始化階段,私鑰提取階段,私鑰演化階段,簽名生成階段以及簽名驗證階段,即基于身份的 前向安全數(shù)字簽名方案 IB-FSS = (IB-FSS. SetUp, IB-FSS. Upd, IB-FSS. Ext, IB-FSS. Sgn, IB-FSS. Vf)。其中初始化階段的目的是生成系統(tǒng)所需要的所有參數(shù),包括公開參數(shù)與秘密 參數(shù)。私鑰提取階段的目的是生成用戶的初始簽名私鑰。私鑰演化階段的目的是根據(jù)用戶 (簽名者)上一階段的私鑰,推算用戶(簽名者)下一階段的私鑰,以保證簽名的前向安全。 簽名生成階段的目的是生成用戶(簽名者)在當(dāng)前時間段對消息的簽名。簽名驗證階段的 目的是公開驗證簽名,以保證簽名的真實性。下文對本發(fā)明的具體實施方案涉及的各個階段分別進行詳細說明在本發(fā)明實施例提供的方案中,主要參與者為密鑰生成中心GKC、發(fā)送方設(shè)備和接 收方設(shè)備。初始化階段 IB-FSS. SetUp 目的該階段是生成系統(tǒng)所需要的所有參數(shù),包括公開參數(shù)與秘密參數(shù)。輸入安全參數(shù)k,方案運行總時間段T。
輸出系統(tǒng)私鑰d,系統(tǒng)公鑰(e,N, H1, H2)。執(zhí)行過程隨機選取兩個不同的k/2長的素數(shù)p,q,計算N = ρ · q和 屮(AO = O-I) · —1);隨機選取eeZ;,滿足l<e< 爐(TV)且gcd(e,爐(AO) = I ,其中 e 與 P(W)的最大公約數(shù)為1,可以用輾轉(zhuǎn)相除法在多項式時間內(nèi)計算;計算系統(tǒng)私鑰d,使得 ed^\{mod φ{(diào)Ν));選擇兩個抗碰撞的隨機哈希函數(shù)H1, H2,其中H1, H2 {0,1}* — {0,1”,其 中,這里的兩個隨機哈希函數(shù)可以用消息摘要5(MD5)或安全哈希算法1 (SHA-I)等實現(xiàn)。私鑰提取階段IB-FSS. Ext 目的生成簽名者id的初始簽名私鑰。輸入簽名者的身份id,總時間段T,系統(tǒng)的公鑰(e,N, H1, H2),系統(tǒng)的私鑰d。輸出簽名者在第O個時間段的簽名私鑰執(zhí)行過程計算s、^(H1(Id)Y" modN,則5、是簽名者id所對應(yīng)的初始簽名私鑰。 私鑰演化階段IB-FSS. Upd 目的根據(jù)上一個時間段的簽名私鑰,推算下一個時間段的簽名私鑰,用于保證簽 名的前向安全。輸入簽名者的身份id,總時間段T,簽名者id當(dāng)前所處的時間段j,第j_l個時 間段的私鑰。輸出簽名者id的第j時間段簽名私鑰戲w,。執(zhí)行過程如果T,skidi 二 (成‘/mod";否則成…為空。簽名生成階段IB-FSS. Sgn 目的生成簽名者id在當(dāng)前時間段對待發(fā)送消息M的簽名sig。輸入簽名者的身份id,簽名者所處時間段j,系統(tǒng)公鑰(e,N, H1, H2),簽名者在第 j時間段私鑰,總時間段數(shù)T,消息M。輸出簽名者id在第j時間段對消息M的簽名sig。執(zhí)行過程隨機選擇r e Z;,計算及=(f)勵聲二…·, 輸出 sig = (id,j,R,S)。簽名驗證階段IB-FSS. Vf 目的簽名的公開驗證,保證簽名的真實性。輸入系統(tǒng)的公鑰(e,N,H1, H2),消息M,簽名sig。輸出輸出0表示sig不是M的有效簽名;輸出1表示sig是消息M的有效簽名。 執(zhí)行過程將sig劃分為(id, j, R,S),如果S = 0,輸出0 ;否則判斷s^'·' =^i ㈦嚴(yán)(藥"WmotIiV(1)是否成立,如果成立,輸出1,否則輸出0。綜上所述,本發(fā)明上述實施例的基于身份的前向安全數(shù)字簽名方案中,簽名私鑰是一個序列1‘,|/ = 1,2工, ,其中,簽名者在當(dāng)前時間段j的簽名私鑰是以第一隨機數(shù) e為冪,對簽名者在上一個時間段的簽名私鑰進行冪運算得到的;因此,任意一個簽名私鑰泄露不會影響之前簽名的安全性,即使該發(fā)送方設(shè)備生成的簽名私鑰泄露,也能保證數(shù)字 簽名的前向安全,而且還能帶來以下技術(shù)效果1)由于本發(fā)明實施例是基于RSA安全模型來構(gòu)造基于身份的前向安全簽名方案, 輸出簽名sig= (id, j,R,S),從而相對于現(xiàn)有技術(shù)中利用一個普通簽名方案和一個前向 安全的簽名方案來構(gòu)造基于身份的前向安全簽名方案,輸出簽名sig = (ID, U, ζα,j,S, Ζ)而言,本發(fā)明實施例的簽名長度相對于現(xiàn)有技術(shù)方案的簽名長度至少縮短330bits,從 而在通信過程中,實現(xiàn)相同的功能的前提下,節(jié)約帶寬;具體的,取目前常用的安全長度(N 為1024bit)?,F(xiàn)有技術(shù)中的簽名為sig = (ID, U, ζΙΒ, j, S,Ζ),本發(fā)明實施例的簽名為 (id, j,R,S),因此,即使現(xiàn)有技術(shù)中采取的先進的短簽名技術(shù),但其長度仍會長于本發(fā)明, 多出U,(ID。如果采用DSA或其他簽名,那長度就會更長了。一般來說,現(xiàn)有技術(shù)的簽名長 度為ID+1024+170+j+1024+160 = ID+j+2378 (bit),如果采用DSA簽名算法,則簽名長度是 ID+j+2528(bit)(因為在相同的安全等級下ζΙ 的長度需要320bit),如果采取其他簽名 方式,那么簽名長度會更長,如直接形式的RSA簽名,那么簽名長度將達到ID+j+3232(bit) (因為在相同的安全等級下的長度需要1024bit);而在相同的安全等級下,本發(fā)明實施 例的簽名長度是 ID+j+1024+1024 = ID+j+2048 (bit)。2)本發(fā)明實施例的 計算私鑰演化的指數(shù)演算(即2~16)遠遠低于是現(xiàn)有技術(shù)方案 的指數(shù)演算(即2~160);具體的,本發(fā)明實施例基于RSA安全模型來構(gòu)造基于身份的前向 安全簽名方案,一般RSA中的e的大小取e = 216+1 = 65537。3)本發(fā)明實施例的基于身份的前向安全的數(shù)字簽名驗證方案中,通過第一簽名驗 證值與第二簽名驗證值之間的簽名驗證關(guān)系的一次驗證,來判斷簽名的合法性或真實性, 相對于現(xiàn)有技術(shù)需進行兩次簽名的驗證配對而言,實現(xiàn)了簽名的快速驗證,提高了簽名驗 證效率。本發(fā)明實施例的簽名驗證的計算量(2次指數(shù)運算)遠遠低于現(xiàn)有技術(shù)方案(8-12 次指數(shù)運算)。具體的,本發(fā)明實施例中,使用指數(shù)計算時間來評估計算量,在計算簽名的時 候,現(xiàn)有技術(shù)需要兩次指數(shù)運算時間,本發(fā)明實施例也是兩次計算時間。運算量相當(dāng)。但是, 在驗證簽名時,現(xiàn)有技術(shù)需要計算兩次配對,計算量大,而通常一次配對的時間大約是3-5 次的同級別的指數(shù)運算時間。此外,驗證算法2FS. Vf (M,U, j, S,Ζ)需要2次指數(shù)運算,故 現(xiàn)有算法需要大約在8-12次指數(shù)運算時間。本發(fā)明驗證算法需要2次指數(shù)運算時間,故本 發(fā)明實施例減少運算時間,效率更高。4)進一步的,本發(fā)明實施例中,基于RSA安全模型的算法生成演化的簽名私鑰,即 初始簽名私鑰是以所述系統(tǒng)秘密參數(shù)d的第一特定數(shù)次方為冪,對以簽名者的身份標(biāo)識id 為輸入的第一抗碰撞哈希函數(shù)值H1 (id)進行冪運算得到的;簽名者在當(dāng)前時間段j的簽名 私鑰是以第一隨機數(shù)e為冪,對簽名者在上一個時間段的簽名私鑰進行冪運算得到的,從 而綁定了簽名者的身份與簽名私鑰,使得用簽名者的身份與簽名私鑰一一對應(yīng),避免了證 書管理的難題。請參閱圖5a,為本發(fā)明實施例的一種基于身份的前向安全數(shù)字簽名設(shè)備的結(jié)構(gòu)示 意圖,如圖5a所示,本發(fā)明實施例的數(shù)字簽名設(shè)備,可以包括接口單元51,用于通過可信通道接收系統(tǒng)發(fā)布的系統(tǒng)公開參數(shù),以及簽名者的身 份標(biāo)識id所對應(yīng)的初始簽名私鑰;具體的,這里的初始私鑰為簽名者/用戶在第0個時間段的私鑰skid{) ^(HxQd)Y modTV,其中簽名者的身份id,總時間段T,系統(tǒng)私鑰d,以及,系統(tǒng)的公 鑰參數(shù)(e,N,H1, H2),其中N = p · q,(p(N) = (p-\)-(q-\) q為隨機選取的兩個不同的 V2長的素數(shù);eeZ;,其中滿足1<6<識(#)且gcd(e,樹jV)) = 1 (e與識(Λ0的最大公約數(shù)為 1) A,H2為兩個抗碰撞的隨機哈希函數(shù),其中H1, H2: {0,1}*— {O, l}k*;簽名計算單元53,以系統(tǒng)公開參數(shù)中的第一隨機數(shù)e的第二特定數(shù)次方為冪, 對第二隨機數(shù)r進行冪運算得到簽名的隨機部分R ;計算以待發(fā)送消息M、簽名者的身份 標(biāo)識id、當(dāng)前時間段j和簽名的隨機部分R的串接數(shù)據(jù)為輸入的第二抗碰撞哈希函數(shù)值 H2(id| |j|M| |r);并以所述第二抗碰撞哈希函數(shù)值為冪,對所述簽名者在當(dāng)前時間段j的簽 名私鑰進行冪運算得到的結(jié)果值與第二隨機數(shù)r進行乘法運算,得到簽名的隨機部分S,輸 出待發(fā)送消息M的簽名sig = (id, j, R,S),其中,所述簽名者在當(dāng)前時間段j的簽名私鑰 是以所述第一隨機數(shù)e為冪,對簽名者在上一個時間段的簽名私鑰進行冪運算得到的;這 里的第二特定數(shù)與總時間段T、當(dāng)前時間段j相關(guān);需要說明的是,這里的第二抗碰撞哈希函數(shù)值可以理解成待發(fā)送消息的消息摘要。較優(yōu)的,本發(fā)明實施例的數(shù)字簽名設(shè)備進一步包括存儲單元54,用于存儲系統(tǒng)發(fā)布的公開參數(shù)與秘密參數(shù),這里的公鑰參數(shù)包括e,N, H1, H2,這里的秘密參數(shù)包括簽名者 的身份id所對應(yīng)的初始簽名私鑰,或者,經(jīng)所述初始簽名私鑰演化的、簽名者id在下一個 時間段的簽名私鑰(如第j_l個時間段的私鑰;可選的,存儲單元54還用于存儲運 行總時間段數(shù)T,簽名者id當(dāng)前所處的時間段j和簽名者的身份標(biāo)識id ;需要說明的是,為 了高效快速運算、節(jié)約存儲空間、避免私鑰泄露等原因,在一種實現(xiàn)方式下,存儲單元54中 存儲的秘密參數(shù)僅包括最新演化生成的簽名私鑰。在一種實現(xiàn)方式下,本發(fā)明實施例的數(shù)字簽名設(shè)備進一步包括私鑰更新單元52,用于當(dāng)確定簽名私鑰需要演化時,以第一隨機數(shù)e為冪,對簽名 者在上一個時間段的簽名私鑰進行冪運算,得到簽名者在當(dāng)前時間段j的簽名私鑰,其中, 所述上一個時間段的簽名私鑰可以是簽名者身份標(biāo)識id所注冊得到的初始簽名私鑰,或 者,可以是根據(jù)初始簽名私鑰演化得到的簽名者在上一個時間段的簽名私鑰;在一種具體實現(xiàn)方式下,私鑰更新單元52具體用于當(dāng)確定簽名私鑰需要演化時, 根據(jù)戲+ 計算得到簽名者在當(dāng)前時間段j的簽名私鑰,其中戲w,_,為簽名者 在上一個時間段的簽名私鑰,具體的,當(dāng)j-1 = 1時,是初始簽名私鑰;當(dāng)j-1 > 1時, Awm是基于所述初始簽名私鑰演化得到的所述簽名者在第j-1個時間段的簽名私鑰。在一種實現(xiàn)方式下,如圖5b所示,簽名計算單元53可以包括隨機部分R計算單 元531,用于根據(jù)穴=)modTV計算得到簽名的隨機部分R ;其中7 e Ζ; , τ為運行總時 間段,N = ρ 樹岣=…-〗)·^-1),P,q為隨機選取的兩個不同的k/2長的素數(shù);eeZ;, 其中滿足1 < e消息摘要計算單元532,用于計算以待發(fā)送消息M、簽名者的身份標(biāo)識id、當(dāng)前時 間段j和簽名的隨機部分R的串接數(shù)據(jù)為輸入的第二抗碰撞哈希函數(shù)值吐(1(1| I j| |m| |r);隨機部分S計算單元533,用于根據(jù)S = (r · A+7^11711-) mod #計算得到簽名的隨機部分S ;簽名輸出單元544,用于輸出簽名sig= (id,j,R,S),其中,id為簽名者的身份標(biāo) 識,j為簽名者當(dāng)前所處的時間段。關(guān)于如上功能單元的具體實現(xiàn)可參考方法實施例的描述。
在一種部署方式下,本發(fā)明實施例的基于身份的前向安全數(shù)字簽名設(shè)備具體可以 為數(shù)字簽名系統(tǒng)中的發(fā)送方設(shè)備,具體用于當(dāng)有消息待發(fā)送時,生成待發(fā)送消息M的簽名 sig = (id, j,R,S),并向接收方設(shè)備輸出消息簽名對;在另一種部署方式下,本發(fā)明實施例 的基于身份的前向安全數(shù)字簽名設(shè)備具體可以為獨立的簽名服務(wù)器,且與用于消息傳輸?shù)?發(fā)送方設(shè)備具有通信連接,具體的,簽名服務(wù)器與發(fā)送方設(shè)備之間存在可進行保密通信的 安全信道。本發(fā)明實施例裝置的各個單元可以集成于一體,也可以分離部署。上述單元可以 合并為一個單元,也可以進一步拆分成多個子單元??梢?,采用本發(fā)明實施例的基于身份的前向安全數(shù)字簽名設(shè)備,生成的簽名私鑰
是一個序列I 7 =1,2,L ,τ],其中,簽名者在當(dāng)前時間段j的簽名私鑰是以第一隨機數(shù)
e為冪,對簽名者在上一個時間段的簽名私鑰進行冪運算得到的;因此,任意一個簽名私鑰 泄露不會影響之前簽名的安全性,即使該發(fā)送方設(shè)備生成的簽名私鑰泄露,也能保證數(shù)字 簽名的前向安全,而且還能帶來以下技術(shù)效果1)由于本發(fā)明實施例是基于RSA安全模型來構(gòu)造基于身份的前向安全簽名方案, 輸出簽名sig = (id, j, R,S),從而相對于現(xiàn)有技術(shù)中利用一個普通簽名方案和一個前向 安全的簽名方案來構(gòu)造基于身份的前向安全簽名方案,輸出簽名sig = (ID, U, ζα,j, S, Ζ)而言,本發(fā)明實施例的簽名長度相對于現(xiàn)有技術(shù)方案的簽名長度至少縮短330bits,從 而在通信過程中,實現(xiàn)相同的功能的前提下,節(jié)約帶寬;具體的,取目前常用的安全長度(N 為1024bit)。現(xiàn)有技術(shù)中的簽名為sig = (ID, U, ζΙΒ, j, S,Ζ),本發(fā)明實施例的簽名為 (id, j,R,S),因此,即使現(xiàn)有技術(shù)中采取的先進的短簽名技術(shù),但其長度仍會長于本發(fā)明, 多出U,(ID。如果采用DSA或其他簽名,那長度就會更長了。一般來說,現(xiàn)有技術(shù)的簽名長 度為ID+1024+170+j+1024+160 = ID+j+2378 (bit),如果采用DSA簽名算法,則簽名長度是 ID+j+2528(bit)(因為在相同的安全等級下ζΙ 的長度需要320bit),如果采取其他簽名 方式,那么簽名長度會更長,如直接形式的RSA簽名,那么簽名長度將達到ID+j+3232(bit) (因為在相同的安全等級下的長度需要1024bit);而在相同的安全等級下,本發(fā)明實施 例的簽名長度是 ID+j+1024+1024 = ID+j+2048 (bit)。2)本發(fā)明實施例的計算私鑰演化的指數(shù)演算(即2~16)遠遠低于是現(xiàn)有技術(shù)方案 的指數(shù)演算(即2~160);具體的,本發(fā)明實施例基于RSA安全模型來構(gòu)造基于身份的前向 安全簽名方案,一般RSA中的e的大小取e = 216+1 = 65537。3)進一步的,本發(fā)明實施例中,基于RSA安全模型的算法生成演化的簽名私鑰,即 初始簽名私鑰是以所述系統(tǒng)秘密參數(shù)d的第一特定數(shù)次方為冪,對以簽名者的身份標(biāo)識id 為輸入的第一抗碰撞哈希函數(shù)值H1 (id)進行冪運算得到的;簽名者在當(dāng)前時間段j的簽名 私鑰是以第一隨機數(shù)e為冪,對簽名者在上一個時間段的簽名私鑰進行冪運算得到的,從 而綁定了簽名者的身份與簽名私鑰,使得用簽名者的身份與簽名私鑰一一對應(yīng),避免了證 書管理的難題。
請參閱圖6,為本發(fā)明實施例的一種基于身份的前向安全數(shù)字簽名驗證設(shè)備的結(jié) 構(gòu)示意圖,如圖6所示,本發(fā)明實施例的數(shù)字簽名驗證設(shè)備,可以包括 接口單元61,用于接收簽名方發(fā)布的系統(tǒng)公開參數(shù)e,N, H1, H2,其中N = ρ · q, 餌iV) = (p-l)如-1),p,q為隨機選取的兩個不同的k/2長的素數(shù);ee 其中滿足 KeCi^V;^^^6,^^) = 1;^,H2為兩個抗碰撞的隨機哈希函數(shù)且H1, H2 {0,1}*- {0, Ilk;簽名解析單元62,用于從收到的簽名消息對中解析出消息Μ、簽名者的身份標(biāo)識 id、當(dāng)前時間段j和簽名的隨機部分R,S ;第二抗碰撞哈希函數(shù)值計算單元63,用于計算以消息M、簽名者的身份標(biāo)識id、當(dāng) 前時間段j和簽名部分R的串接數(shù)據(jù)為輸入的第二抗碰撞哈希函數(shù)值壓(1(1| |j|M| |r);需 要說明的是,這里的H2(id| I j|M| |r)即本發(fā)明實施例的數(shù)字簽名驗證設(shè)備針對解析出的消 息M,采用數(shù)字簽名設(shè)備所用的第二抗碰撞哈希函數(shù)重新生成的消息摘要;第一抗碰撞哈希函數(shù)值計算單元64,用于計算以簽名者的身份標(biāo)識id為輸入的 第一抗碰撞哈希函數(shù)值Ii1 (id);簽名驗證單元65,用于當(dāng)該簽名的隨機部分S非0時,比較第一簽名驗證值與第二 簽名驗證值,在第一簽名驗證值與第二簽名驗證值之間的簽名驗證關(guān)系成立時,則簽名驗 證通過,其中所述第一簽名驗證值為以所述系統(tǒng)公開參數(shù)中的第二隨機數(shù)e的第二特定數(shù) 次方為冪,對簽名的隨機部分S進行冪運算得到的;所述第二簽名驗證值為簽名的隨機部 分R與以第二抗碰撞哈希函數(shù)值H2(id| I j| |m| |r)為冪,對第一抗碰撞哈希函數(shù)值H1 (id) 進行冪運算得到的結(jié)果值進行乘法運算得到的,其中所述第二特定數(shù)與總時間段τ、當(dāng)前時 間段j相關(guān)。需要說明的是,本發(fā)明實施例的數(shù)字簽名驗證設(shè)備從數(shù)字簽名中解析出來的隨機 部分S可以理解為數(shù)字簽名設(shè)備加密后的消息摘要,而本發(fā)明實施例的數(shù)字簽名驗證設(shè)備 生成的H2(id| ι jl |m| |r)可以理解為重新生成的消息摘要,通過比較這兩個消息摘要來驗 證消息或簽名是否被第三方篡改過(具體實現(xiàn)參考簽名驗證單元605的功能描述)。在一種實現(xiàn)方式下,本發(fā)明實施例的數(shù)字簽名驗證設(shè)備進一步包括存儲單元66,用于存儲系統(tǒng)發(fā)布的公開參數(shù),這里的公開參數(shù)包括e,N, H1, H2,可 選的,存儲單元66還用于存儲運行總時間段數(shù)T,簽名者id當(dāng)前所處的時間段j ;其中N = P · q,樹Λ0 = (Ρ-l),p,q為隨機選取的兩個不同的k/2長的素數(shù);e e ,其中滿足 l<e<p(7V;^gcd(e,^7V)) = 1;H1,H2 為兩個抗碰撞的隨機哈希函數(shù)且 H1, H2 {0,1}*- {0, Ilk;在一種實現(xiàn)方式下,簽名驗證單元65具體用于如果該簽名的隨機部分S為0, 則簽名驗證失??;如果Ξ RH1 (id)H^id^R) (mod TV)成立,則簽名驗證通過;如果
Ξ尺/Z1 (纟…叫’權(quán)Wi^modAO不成立,則簽名驗證失敗。關(guān)于如上功能單元的具體實現(xiàn)可參考方法實施例的描述。在一種部署方式下,本發(fā)明實施例的基于身份的前向安全數(shù)字簽名驗證設(shè)備具體 可以為數(shù)字簽名系統(tǒng)中的接收方設(shè)備,具體用于當(dāng)接收簽名消息對時,從收到簽名Sig中解析出消息M、用戶身份id、當(dāng)前時間段j和簽名的隨機部分R,S,進而通過比較從數(shù)字簽 名中解析出來的消息摘要與數(shù)字簽名驗證設(shè)備重新生成的消息摘要,來驗證消息或簽名是 否被第三方篡改過(具體實現(xiàn)參考簽名驗證單元65的功能描述);在另一種部署方式下, 本發(fā)明實施例的基于身份的前向安全數(shù)字簽名設(shè)備具體可以為獨立的簽名驗證服務(wù)器,且 與用于消息傳輸?shù)慕邮辗皆O(shè)備具有通信連接,具體的,接收方設(shè)備與簽名驗證服務(wù)器之間 存在可進行保密通信的安全信道。本發(fā)明實施例裝置的各個單元可以集成于一體,也可以分離部署。上述單元可以 合并為一個單元,也可以進一步拆分成多個子單元??梢?,本發(fā)明實施例的基于身份的前向安全數(shù)字簽名驗證設(shè)備中,通過第一簽名 驗證值與第二簽名驗證值之間的簽名驗證關(guān)系的一次驗證,來判斷簽名的合法性或真實 性,相對于現(xiàn)有技術(shù)需進行兩次簽名的驗證配對而言,實現(xiàn)了簽名的快速驗證,提高了簽名 驗證效率。本發(fā)明實施例的簽名驗證的計算量(2次指數(shù)運算)遠遠低于現(xiàn)有技術(shù)方案 (8-12次指數(shù)運算)。具體的,本發(fā)明實施例中,使用指數(shù)計算時間來評估計算量,在計算簽 名的時候,現(xiàn)有技術(shù)需要兩次指數(shù)運算時間,本發(fā)明實施例也是兩次計算時間。運算量相 當(dāng)。但是,在驗證簽名時,現(xiàn)有技術(shù)需要計算兩次配對,計算量大,而通常一次配對的時間大 約是3-5次的同級別的指數(shù)運算時間。此外,驗證算法2FS.Vf(M,U,j,S,Z)需要2次指數(shù) 運算,故現(xiàn)有算法需要大約在8-12次指數(shù)運算時間。本發(fā)明驗證算法需要2次指數(shù)運算時 間,故本發(fā)明實施例減少運算時間,效率更高。需要說明的是,前述實施例描述中所采用的第一、第二、第三的說法,沒有限定順 序的意思,僅為方便區(qū)分。需要說明的是,針對不同的應(yīng)用需求,不同的安全性等級要求,可以采用不同規(guī)模 的參數(shù)P,q等,因此,應(yīng)當(dāng)理解的是本發(fā)明具有多種具體的實施方式。這里不再贅述。需要說明的是,在電信網(wǎng)絡(luò)中,使用前向安全的數(shù)字簽名技術(shù),保證數(shù)字簽名的前 向安全,再結(jié)合具體的身份管理技術(shù),提出基于身份的前向安全數(shù)字簽名技術(shù),不僅能支持 現(xiàn)有的主流認(rèn)證與授權(quán),還能夠考慮到穩(wěn)定快速用戶的體驗。具體做法是把基于身份的前 向安全的數(shù)字簽名技術(shù)作為一個基本的安全模塊,結(jié)合到相關(guān)的協(xié)議與密碼方案中。比如 結(jié)合相關(guān)的認(rèn)證密鑰交換協(xié)議,可以保證簽約用戶在業(yè)務(wù)提供者網(wǎng)絡(luò)內(nèi)以及在與業(yè)務(wù)提供 者網(wǎng)絡(luò)之間的移動性,保證認(rèn)證消息的前向安全性;再如把前向安全數(shù)字簽名結(jié)合到代理 重密碼技術(shù)中,就可以前向安全的代理重簽名等技術(shù),實現(xiàn)簽約用戶身份的可信傳遞,尤其 是保證跨域的身份可信傳遞,從而能夠完成可控的計費等操作。本領(lǐng)域普通技術(shù)人員可以理解實現(xiàn)上述實施例方法中的全部或部分流程,是可以 通過計算機程序來指令相關(guān)的硬件來完成,所述的程序可存儲于一計算機可讀取存儲介質(zhì) 中,該程序在執(zhí)行時,可包括如上述各方法的實施例的流程。其中,所述的存儲介質(zhì)可為 磁碟、光盤、只讀存儲記憶體(Read-OnlyMemory,ROM)或隨機存儲記憶體(Random Access Memory, RAM)等。以上所述僅是本發(fā)明的具體實施方式
,應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人 員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也應(yīng) 視為本發(fā)明的保護范圍。
權(quán)利要求
一種數(shù)字簽名系統(tǒng),其特征在于,包括密鑰生成中心,發(fā)送方設(shè)備和接收方設(shè)備,其中所述密鑰生成中心用于基于RSA模型和安全參數(shù)長度k生成系統(tǒng)公開參數(shù)和系統(tǒng)秘密參數(shù)d,向所述發(fā)送方設(shè)備和所述接收方設(shè)備發(fā)布所述系統(tǒng)公開參數(shù),并在收到所述發(fā)送方設(shè)備的攜帶簽名者的身份標(biāo)識id的注冊請求后,向所述發(fā)送方設(shè)備秘密發(fā)送初始簽名私鑰,所述初始簽名私鑰是以所述系統(tǒng)秘密參數(shù)d的第一特定數(shù)次方為冪,對以所述簽名者的身份標(biāo)識id為輸入的第一抗碰撞哈希函數(shù)值H1(id)進行冪運算得到的;所述發(fā)送方設(shè)備用于以所述系統(tǒng)公開參數(shù)中的第一隨機數(shù)e的第二特定數(shù)次方為冪,對第二隨機數(shù)r進行冪運算,得到簽名的隨機部分R;計算以待發(fā)送消息M、簽名者的身份標(biāo)識id、當(dāng)前時間段j和簽名的隨機部分R的串接數(shù)據(jù)為輸入的第二抗碰撞哈希函數(shù)值H2(id||j||M||R),并以所述第二抗碰撞哈希函數(shù)值為冪,對所述簽名者在當(dāng)前時間段j的簽名私鑰進行冪運算得到的結(jié)果值與第二隨機數(shù)r進行乘法運算,得到簽名的隨機部分S,向所述接收方設(shè)備發(fā)送消息簽名對M和sig=(id,j,R,S),其中,所述簽名者在當(dāng)前時間段j的簽名私鑰是以所述第一隨機數(shù)e為冪,對所述簽名者在上一個時間段的簽名私鑰進行冪運算得到的;所述接收方設(shè)備用于從收到的消息簽名對中解析出消息M、簽名者的身份標(biāo)識id、當(dāng)前時間段j和簽名的隨機部分R,S,當(dāng)該簽名的隨機部分S非0時,如果第一簽名驗證值與第二簽名驗證值之間的簽名驗證關(guān)系成立,則對所述消息M進行業(yè)務(wù)處理;其中,所述第一簽名驗證值是以所述第一隨機數(shù)e的第二特定數(shù)次方為冪,對簽名的隨機部分S進行冪運算得到的;所述第二簽名驗證值是簽名的隨機部分R與以第二抗碰撞哈希函數(shù)值H2(id||j||M||R)為冪,對第一抗碰撞哈希函數(shù)值H1(id)進行冪運算得到的結(jié)果值進行乘法運算得到的。
2.根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在于,所述密鑰生成中心發(fā)布的系統(tǒng)公開參數(shù) 包括e,N,H2,其中N = p q,"KA0 = <>-l)'( _l),p,q為隨機選取的兩個不同的k/2長的素數(shù)F e Zl,其中滿足1 < e <樹tV)且gcdk^W)) 二1; H2為兩個抗碰撞的隨機哈希 函數(shù)且&,吐⑷,!}*— {0,l}k;所述發(fā)送方設(shè)備具體用于根據(jù)尺二計算簽名的隨機部分R,根據(jù)■^(ri+W—))m0dV計算簽名的隨機部分S,向所述接收方設(shè)備發(fā)送消息M和該消息 M的簽名sig = (id, j,R,S),其中7 e ,T為運行總時間段,j為所述簽名者當(dāng)前所處的 時間段,s、,為所述簽名者在當(dāng)前時間段j的簽名私鑰。
3.根據(jù)權(quán)利要求2所述的系統(tǒng),其特征在于,所述發(fā)送方設(shè)備還用于當(dāng)確定簽名私鑰 需要演化時,根據(jù)計算所述簽名者在當(dāng)前時間段j的簽名私鑰,其 中,為所述簽名者在第j_l個時間段的簽名私鑰。
4.根據(jù)權(quán)利要求1或2或3所述的系統(tǒng),其特征在于,所述密鑰生成中心發(fā)布的系統(tǒng)公 開參數(shù)包括e,N,知吐,其中N = p q,《KA0 = (p-l)_@-l),p,q為隨機選取的兩個不同的k/2長的素數(shù);eeZ;,其中滿足i < e <樹且gcd(e,餌^)) =1 ;&,H2為兩個抗碰撞的隨機哈希函數(shù)且&,吐⑷,丨}*— {0,l}k;所述接收方設(shè)備具體用于從收到的消息簽名對中解析出消息M、簽名者的身份 標(biāo)識id、當(dāng)前時間段j和簽名的隨機部分R,S,當(dāng)該簽名的隨機部分S非0時,如果 三i^JW^^^^modTV)成立,對所述消息M進行業(yè)務(wù)處理。
5.一種基于身份的前向安全的數(shù)字簽名方法,其特征在于,該方法包括以系統(tǒng)公開參數(shù)中的第一隨機數(shù)e的第二特定數(shù)次方為冪,對第二隨機數(shù)r進行冪運 算,得到簽名的隨機部分R,其中,所述第二特定數(shù)與運行總時間段T、當(dāng)前時間段j相關(guān);計算以待發(fā)送消息M、簽名者的身份標(biāo)識id、當(dāng)前時間段j和簽名的隨機部分R的串接 數(shù)據(jù)為輸入的第二抗碰撞哈希函數(shù)值吐(1(1| | j| |M| R);以所述第二抗碰撞哈希函數(shù)值為冪,對所述簽名者在當(dāng)前時間段j的簽名私鑰進行冪 運算得到的結(jié)果值與第二隨機數(shù)r進行乘法運算,得到簽名的隨機部分S;其中,所述簽名 者在當(dāng)前時間段j的簽名私鑰是以所述第一隨機數(shù)e為冪,對所述簽名者在上一個時間段 的簽名私鑰進行冪運算得到的;輸出所述待發(fā)送消息M的簽名sig = (id, j, R,S)。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,e,N, H” H2是系統(tǒng)發(fā)布的公開參數(shù),其 中N = p q,gy(N) = (p-\)-(q-\)^, q為隨機選取的兩個不同的k/2長的素數(shù);,其中滿足l<e<爐(TV)且gedk^AO):!知H2為兩個抗碰撞的隨機哈希函數(shù)且氏,H2 {0,1}*- 10,l}k ;所述方法進一步包括根據(jù)戲w, 一成計算得到簽名者在當(dāng)前時間 段j的簽名私鑰,其中所述簽名者在上一個時間段的簽名私鑰。
7.根據(jù)權(quán)利要求5所述的方法,其特征在于,e,N,H1,H2是系統(tǒng)發(fā)布的公開參數(shù),其中N =P q,<p(N) = (p-\)-(q-\)^, q為隨機選取的兩個不同的k/2長的素數(shù)廠Z;,其中滿 足1 < e <樹AO且gcdk^W)) = 1凡,吐為兩個抗碰撞的隨機哈希函數(shù)且Hi,H2 {0,1}*— {0, l}k;所述以第一隨機數(shù)e的特定數(shù)次方為冪,對第二隨機數(shù)r進行冪運算,得到簽名的隨機 部分R,包括根據(jù)及<~Z+1_'(modA0計算得到簽名的隨機部分R,其中,T為運行總時 間段數(shù),j為簽名者當(dāng)前所處的時間段。
8.根據(jù)權(quán)利要求5所述的方法,其特征在于,e,N,H1,H2是系統(tǒng)發(fā)布的公開參數(shù),其中N =P ^MN) = {p~\)-{q~\) q為隨機選取的兩個不同的k/2長的素數(shù)戶A,其中滿!^l<e<= 1凡,吐為兩個抗碰撞的隨機哈希函數(shù)且氏,吐⑷“}*— {0,l}k;所述以所述第二抗碰撞哈希函數(shù)值為冪,對所述簽名者在當(dāng)前時間段j的簽名私鑰進 行冪運算得到的結(jié)果值與第二隨機數(shù)r進行乘法運算,得到簽名的隨機部分S,包括根據(jù)S —(modTV)計算得到簽名的隨機部分S,其中 ‘,j為所述簽名者當(dāng)前所處的時間段。
9.一種基于身份的前向安全的數(shù)字簽名驗證方法,其特征在于,包括從收到的簽名消息對中,解析出消息M、簽名者的身份標(biāo)識id、當(dāng)前時間段j和簽名的隨機部分R,S ;當(dāng)簽名部分S非0時,計算以所述消息M、簽名者的身份標(biāo)識id、當(dāng)前時間段j和簽名 部分R的串接數(shù)據(jù)為輸入的第二抗碰撞哈希函數(shù)值氏(1(1| | j| |M| R);計算以所述簽名者的身份標(biāo)識id為輸入的第一抗碰撞哈希函數(shù)值& (id);比較第一簽名驗證值與第二簽名驗證值,當(dāng)?shù)谝缓灻炞C值與第二簽名驗證值間的簽 名驗證關(guān)系成立時,則簽名驗證通過,其中所述第一簽名驗證值是以系統(tǒng)公開參數(shù)中的第 一隨機數(shù)e的第二特定數(shù)次方為冪,對簽名的隨機部分S進行冪運算得到的;所述第二簽名 驗證值是簽名的隨機部分R與以第二抗碰撞哈希函數(shù)值為冪,對第一抗碰撞哈希函數(shù)值進 行冪運算得到的結(jié)果值進行乘法運算得到的;所述第二特定數(shù)與運行總時間段T、當(dāng)前時 間段j相關(guān)。
10.根據(jù)權(quán)利要求9所述的方法,其特征在于,e,N,戰(zhàn),H2是系統(tǒng)發(fā)布的公開參數(shù),其中 N = p q,樹iV)=…-l) (《-l),P,q為隨機選取的兩個不同的k/2長的素數(shù)WN,其中滿 足1 < e <樹AT)且gcdk^W)) = 1 ,H”H2為兩個抗碰撞的隨機哈希函數(shù)且氏,吐{0,1}*— {0, l}k;所述比較第一簽名驗證值與第二簽名驗證值包括如果sf^/^^fd—YmodiV)成立,則簽名驗證通過;如果 S"-'三冊丨㈨廣州1,1,!!!?!筎V)不成立,則簽名驗證失敗。
11.根據(jù)權(quán)利要求10所述的方法,其特征在于,所述方法進一步包括如果該簽名的隨 機部分s為0,則簽名驗證失敗。
12.一種基于身份的前向安全數(shù)字簽名設(shè)備,其特征在于,包括接口單元,用于通過可信通道接收系統(tǒng)公開參數(shù),及簽名者的身份標(biāo)識id所對應(yīng)的初 始簽名私鑰;簽名計算單元,用于以系統(tǒng)公開參數(shù)中的第一隨機數(shù)e的第二特定數(shù)次方為冪,對 第二隨機數(shù)r進行冪運算得到簽名的隨機部分R ;計算以待發(fā)送消息M、簽名者的身份標(biāo) 識id、當(dāng)前時間段j和簽名的隨機部分R的串接數(shù)據(jù)為輸入的第二抗碰撞哈希函數(shù)值 H2(id| |j| |M| R);并以所述第二抗碰撞哈希函數(shù)值為冪,對所述簽名者在當(dāng)前時間段j的 簽名私鑰進行冪運算得到的結(jié)果值與第二隨機數(shù)r進行乘法運算,得到簽名的隨機部分S, 并輸出待發(fā)送消息M的簽名sig= (id,j,R,S),其中,所述簽名者在當(dāng)前時間段j的簽名私 鑰是以所述第一隨機數(shù)e為冪,對簽名者在上一個時間段的簽名私鑰進行冪運算得到的。
13.根據(jù)權(quán)利要求12所述的裝置,其特征在于,進一步包括存儲單元,用于存儲所述系統(tǒng)公開參數(shù)e,N, Hp H2、運行總時間段數(shù)T、簽名者id當(dāng)前 所處的時間段j、簽名者的身份標(biāo)識id,及,與簽名者的身份標(biāo)識id所對應(yīng)的初始簽名私 鑰或經(jīng)所述初始簽名私鑰演化的、所述簽名者在下一個時間段的簽名私鑰■^+一 ;其中N = P q,樹= 1)如-l),p,q為隨機選取的兩個不同的k/2長的素數(shù)e Z;,其中滿足 Ke<樹TV)且gcd(e,^A0) = 1 , Hl, H2為兩個抗碰撞的隨機哈希函數(shù)且H2 {0,1}*- {0, 1”。
14.根據(jù)權(quán)利要求13所述的裝置,其特征在于,所述裝置進一步包括私鑰更新單元, 用于當(dāng)確定簽名私鑰需要演化時,根據(jù)s‘,二算得到簽名者在當(dāng)前時間段j的簽名私鑰,其中為所述簽名者在上一個時間段的簽名私鑰。
15.根據(jù)權(quán)利要求13所述的裝置,其特征在于,所述簽名計算單元包括隨機部分R計 算單元,用于根據(jù)i = (/’+w)mod7V計算得到簽名的隨機部分R ;其中J e ,T為運行總 時間段數(shù);消息摘要計算單元,用于計算以待發(fā)送消息M、簽名者的身份標(biāo)識id、當(dāng)前時間段j和 簽名的隨機部分R的串接數(shù)據(jù)為輸入的第二抗碰撞哈希函數(shù)值氏(1(1| |j| |M| R);隨機部分S計算單元,用于根據(jù)S = (n‘,2( ))m0d7V計算得到簽名的隨機部分S ;簽名輸出單元,用于輸出簽名sig = (id, j, R,S),其中,id為簽名者的身份標(biāo)識,j為 簽名者當(dāng)前所處的時間段。
16.一種基于身份的前向安全數(shù)字簽名驗證設(shè)備,其特征在于,包括 接口單元,用于接收系統(tǒng)公開參數(shù);簽名解析單元,用于從收到的簽名消息對中解析出消息M、簽名者的身份標(biāo)識id、當(dāng)前 時間段j和簽名的隨機部分R,S ;第二抗碰撞哈希函數(shù)值計算單元,用于計算以消息M、簽名者的身份標(biāo)識id、當(dāng)前時間 段j和簽名部分R的串接數(shù)據(jù)為輸入的第二抗碰撞哈希函數(shù)值氏(1(1| |j| |M| R);第一抗碰撞哈希函數(shù)值計算單元,用于計算以簽名者的身份標(biāo)識id為輸入的第一抗 碰撞哈希函數(shù)值氏(id);簽名驗證單元,用于當(dāng)該簽名的隨機部分S非0時,比較第一簽名驗證值與第二簽名驗 證值,如果第一簽名驗證值與第二簽名驗證值之間的簽名驗證關(guān)系成立,則簽名驗證通過, 其中所述第一簽名驗證值是以所述系統(tǒng)公開參數(shù)中的第二隨機數(shù)e的第二特定數(shù)次方為 冪,對簽名的隨機部分S進行冪運算得到的;所述第二簽名驗證值是簽名的隨機部分R與以 第二抗碰撞哈希函數(shù)值吐(1(1| | j| |M| R)為冪,對第一抗碰撞哈希函數(shù)值& (id)進行冪運 算得到的結(jié)果值進行乘法運算得到的,其中所述第二特定數(shù)與總時間段T、當(dāng)前時間段j相 關(guān)。
17.根據(jù)權(quán)利要求16所述的裝置,其特征在于,所述裝置進一步包括存儲單元,用于 存儲所述系統(tǒng)公鑰參數(shù)e,N, H2和運行總時間段數(shù)T,簽名者id當(dāng)前所處的時間段j ; 其中N = p q,(p(N) = (p-l)-(q-l)^, q為隨機選取的兩個不同的k/2長的素數(shù);,其中滿足l<e<樹AO且gcd(e,樹#)) = 1;氏,H2為兩個抗碰撞的隨機哈希函數(shù)且氏,H2:{0, 1}*— {0,l}k。
18.根據(jù)權(quán)利要求16所述的裝置,其特征在于,所述簽名驗證單元具體用于如果該簽 名的隨機部分S為0,則簽名驗證失??;如果f Ei^㈣廣2('dl_|i!)(modA0成立,則簽名 驗證通過;如果^俯,(似產(chǎn)\modA0不成立,則簽名驗證失敗。
全文摘要
本發(fā)明實施例公開基于身份的前向安全的數(shù)字簽名方法、簽名驗證方法、裝置及系統(tǒng),該簽名方法包括以系統(tǒng)公開參數(shù)中的第一隨機數(shù)e的第二特定數(shù)次方為冪,對第二隨機數(shù)r進行冪運算,得到簽名的隨機部分R;計算以待發(fā)送消息M、簽名者的身份標(biāo)識id、當(dāng)前時間段j和簽名的隨機部分R的串接數(shù)據(jù)為輸入的第二抗碰撞哈希函數(shù)值;以第二抗碰撞哈希函數(shù)值為冪,對簽名者在當(dāng)前時間段j的簽名私鑰進行冪運算得到的結(jié)果值與第二隨機數(shù)r進行乘法運算,得到簽名的隨機部分S;其中,簽名者在當(dāng)前時間段j的簽名私鑰是以所述第一隨機數(shù)e為冪,對簽名者在上一個時間段的簽名私鑰進行冪運算得到的;輸出消息M的簽名sig=(id,j,R,S)。從而在縮短簽名長度的同時,有效實現(xiàn)基于身份的前向安全簽名方案的安全性。
文檔編號H04L9/28GK101873307SQ20101013121
公開日2010年10月27日 申請日期2010年3月19日 優(yōu)先權(quán)日2010年3月19日
發(fā)明者位繼偉, 柳再新, 董曉蕾, 郎風(fēng)華 申請人:上海交通大學(xué);華為技術(shù)有限公司