付海辰
(唐山學院 計算機科學與技術系,河北 唐山 063000)
所謂數字簽名,ISO對其的定義為:附加在數據單元上的一些數據,或是對數據單元所做的密碼變換,這種數據或變換允許數據單元的接收者用以確認數據單元來源和數據單元的完整性,并保護數據,防止被人(如接收者)偽造。
1976年Diffie和Hellman發表了著名的“密碼學的新方向”(New Directions in Cryptography),提出了公鑰密碼系統(Public Key CryPtosystem)的概念,為信息安全提供了新的理論和技術基礎,開始了密碼學的一個新時代。雖然Deffie和 Hellrnan在文章中給出了用公鑰密碼體制實現數字簽名的方法,但并沒有給出具體的數字簽名方案。第一個數字簽名方案是兩年后Rivest、Shamir和Adleman給出的基于分解大整數因子困難性的著名的RSA算法。此后的時間里,新的數字簽名方案不斷涌現,包括著名的ELGarmal數字簽名方案、Schnorr數字簽名方案等。
1982年,Chaum引入盲簽名(Blind signature)概念;1989年,Chaum和 Antwerpe首次提出不可否認簽名(Undeniable signature)概念。但在普通數字簽名方案中,無論是簽名者還是驗證者都只有一個用戶參加,這在實際應用中具有很大的局限性,在 1991年,群簽名(Group signature)的概念被Chaum和Vanheyst提出。1995年,Mambo等人引入了代理簽名(Proxy signature)的概念。
代理簽名方案是建立在身份數字簽名技術和代理簽名技術相結合的基礎上的[2]。要理解基于身份的代理簽名,首先必須明確一些基本概念。
一般數字簽名方案包括三個過程:系統的初始化過程、簽名的產生過程和簽名的驗證過程。在系統的初始化過程中要產生數字簽名方案中用到的所有參數,包括公開和秘密參數。在簽名產生的過程中用戶利用給定的算法對消息 m產生簽名 SIG(m),這種簽名過程可以公開也可以不公開。在簽名的驗證過程中,驗證者利用公開驗證方法對給定消息的簽名進行驗證,得出簽名的有效性。
基于身份的數字簽名的實現離不開基于身份的密碼學算法。它大致包括基于身份的加密機制、基于身份數字簽名機制以及基于身份的簽密機制等。雙線性對(Bilinear Pairing)最初是用于計算橢圓曲線上的離散對數,現在在基于身份的密碼體制和密鑰協商協議方面嶄露頭角。雙線性對是一種映射,可以將橢圓曲線群中的元素映射到一般的有限域中,且具有雙線性、非退化性等特殊性質。雙線性映射是當前基于身份密碼技術的研究熱點,雙線性映射在密碼學中的應用主要包括三方密鑰共享協議、基于身份的密鑰共享協議以及基于身份的密碼系統。
本文選取比較有代表性的Hess的基于身份的簽名方案來分析。
(1)系統建立:TA選擇隨機整數t∈Z*q,計算QTA=tP,公開參數QTA,并保留t為私有;
(2)私鑰提取:當簽名用戶申請與自身身份相對應的私鑰時,同樣由可信中心TA執行私鑰提取算法,為其生成私有密鑰。用ID表示簽名用戶的身份,TA利用哈希函數以及秘密值t計算簽名者的私鑰SID=tH(ID),并通過安全信道傳遞給簽名用戶;
(3)簽名:簽名者選擇群中的隨機元素P1∈G*以及隨機整數k∈Z*q,并執行以下簽名算法,生成簽名二元組(u,v):
r=e( P1,P)K
v=h (m,r)
u=vSID+K P1
(4)驗證:驗證者利用原始消息m和簽名(u,v)計算以下驗證等式:
r=e (u,P)·e(H(ID),-QTA)V
當且僅當v=h(m,,r)時,接受簽名;否則,拒絕接受。
各國學者對基于身份的數字簽名做了很多研究,也取得了很多成果。但基于身份的簽名仍存在很多的問題。例如密鑰托管問題(Key Eserow Problem):由于密鑰產生中心PKG(Private Key Generation)知道所有用戶的私鑰,這對簽名的不可否認性構成極大的威脅。如效率問題:橢圓曲線上的雙線性映射(雙線性對)是構造基于身份的密碼系統的有力工具,但它的計算效率很低,這是基于雙線性對的密碼系統的共同缺點。因此,在此基礎上提出了基于身份的高效代理簽名方案,以提高安全性和計算效率作為著眼點。
代理簽名技術最早由Mambo、Usuda和Okamoto在1996年提出。一個代理簽名方案中包括三方面參與實體:原始簽名者、代理簽名者以及驗證者。它的主要思想是當原始簽名者(授權人)由于某種原因不能行使簽名權利時,可以授權給指定的代理者(代理人)代替自己行使簽名權。一個代理簽名方案必須滿足以下幾個基本條件:可驗證性、強不可偽造性、可區分性、不可否認性和強可辨別性。
基于身份的代理簽名方案包括系統的建立、授權、代理簽名和簽名驗證四個部分。
(1)系統建立
雙線性對算法:e: G1*G2→G2,其中G1,G2 為階為q的群(q為大素數);
三個Hash函數:H1:{0,l}* X g→Z*q;H2:{0,l}* →G1;H3:{0,l}*→Z*q;
TA選擇主密鑰:,s∈Z*q,并計算全局公鑰Ppub=sP,其中P是群G1中的生成元。
原始簽名人A和代理簽名人B向可信機構申請與其身份IDA、IDB相對應的私鑰,可信機構TA在驗證用戶身份后,通過安全信道將私鑰DIDA和DIDB分別發送給A和B。
(2)授權階段
原始簽名人A隨機選擇整數rA∈Z*q,計算對代理人B的授權簽名二元組(UA,VA):
UA=rA QIDA
hA =H1(IDB,UA)
VA =(rA+ hA)DIDA
然后將二元組(UA,VA)發送給B,B計算hA =H1(IDB,UA),驗證等式
e(P,VA)=e(Ppub,UA) e Ppub,UA)
是否成立,若成立,則是合法授權。從代理授權驗證等式的展開很明顯看出,該代理授權是正確的。
B接著計算代理簽名私鑰Sp= QIDB+ VA(3)代理簽名
B隨機選擇rB∈Z*q,計算 R=rB P
S=r-1Bb(H3(M)P+Sp)
代理人B對消息M生成的代理簽名為三元組(R,S,UA)(4)簽名驗證
接收方計算驗證等式是否成立,若成立,則是B代表A產生的合法代理簽名。
基于身份的代理簽名方案,不僅具有良好的安全性,而且由于在授權簽名和代理簽名階段均減少了雙線性對的計算次數,所以實現效率也有較大提高。并且,與普通的數字簽名方案相比,基于身份的代理簽名方案擴展了以往的網上交流的模式,具有一定的現實意義。