摘要:數字簽名作為一項重要的數據安全技術,在保證網絡通信數據的完整性、保密性和不可抵賴性方面發揮著重要的作用,并且隨著網絡技術的發展和普及,將會發揮更大的作用,該文首先介紹數字簽名的理論基礎:公開密鑰體制、單向散列函數、CA 機構和證書,然后針對特定的應用場合,設計出具有特定功能的數字簽名方案——雙方均不可抵賴的數字簽名方案。
關鍵詞:數字簽名;公鑰加密體制;密鑰交換;哈希函數;雙方不可抵賴
中圖分類號:TP309文獻標識碼:A文章編號:1009-3044(2008)34-1721-02
A Specific Function-both of the Transistor and Receiver Non-repudiation Signature Program
SUN Xiu-li
(China University of Geoscience, Wuhan 430074, China)
Abstract: As an important technology of data security, digital signature play an important part in ensuring the integrity, confidentiality and non-repudiation of network communication data, and it will play a greater role with the development of network technology and penetration.The paper introduced the basic theory of digital signature: public key system, a one-way hash function, CA and certificate and designed a digital signature program with a specific function-both of the transistor and receiver non-repudiation signature program.
Key word: digital signature; public key system; key switching,Hash function; transistor and receiver non-repudiation
1 數字簽名技術的理論基礎
公開密鑰加密體制:
Bob發送消息給Tom, Tom怎么判斷收到的信息是來自Bob,且使Bob不能否認發送過消息?
公開密鑰密碼算法能解決上面這個問題, 該算法使用兩個密鑰:公開密鑰和私有密鑰。它們分別用于對數據的加密和解密,即如果用公開密鑰對數據進行加密,只有用對應的私有密鑰才能進行解密;如果用私有密鑰對數據進行加密,則只有用對應的公開密鑰才能解密。私鑰由用戶本人持有,對外保密,公鑰是對外開放的。
Bob用自己的私鑰加密消息,發送給Tom,Tom接收到并用Bob的公鑰解密,因為只有Bob本人持有私鑰,可以確定消息是有Bob發送的, 且Bob不能否認發送過此消息。
目前常用的公開密鑰加密體制有3種:基于大數因子分解的RSA 體制,基于離散對數的EIGamal體制和基于編碼理論的McEliece體制, 使用最多的是RSA體制。
2 公鑰交換問題
在上述公鑰密碼體制中,我們假設Tom知道Bob的公鑰,這是怎么實現的呢?發送方和接收方如何講公鑰交給對方, 如何防止中間人攻擊?
中間人攻擊法:
發送方Bob和接收方Tom互相發送自己的公鑰信息給對方, 中間人Rain是攻擊者,Rain通過截獲雙方發送的公鑰信息,并用自己的公鑰值分別發給接收雙方,Rain可以截獲接收雙發發送的秘文,并用截獲的公鑰進行解密,從而達到中間人攻擊的目的,具體實現見圖1。
在開放的網絡環境中,每一用戶要與其他用戶進行保密通信,首先要查找對方的公開密鑰,因此,如何鑒別公開密鑰的真實性、合法性是公鑰系統要解決的主要問題之一。公鑰的管理和用戶身份的合法性是通過專門的認證機構(CA)來實施的,每個用戶首先提出申請,經認證機構審核認可后,簽發證書。證書內容包括版本號、(唯一) 序列號、算法標識、發布機構、有效期、用戶名、用戶的公開密鑰及算法、發證機構的簽名等,證書具有不可偽造性。
證書的生成模式有兩種:集中式和分布式。集中式生成模式,就是密鑰對由CA 生成,公鑰直接交給證書管理服務器生成證書,生成的證書通過適當的通道傳給用戶。分布式生成模式,就是密鑰對由用戶自己生成,公鑰被送往認證中心申請認證,審核批準后,則CA 返回相應的認證證書給用戶,同時將其發布到一些公共證書庫中。
3 單向散列函數
單向散列函數定義:對于任意長度的信息m,經過單向散列函數運算后,生成一個固定長度的散列值,即:h=H(m),單向散列函數有如下性質:
1) 快速性:給定m,很容易計算出h=H(m);
2) 單向性:由輸出h,根據h=H(m)求m是很困難的;
3) 抗碰撞性:已知h= H(m),欲構造H(m')=h是很困難的;
4) 雪崩性:h=H(m),h的每一比特與m 的每一比特都相關并有高度的敏感性,即每改變m的每一比特,都將對h產生明顯影響。
散列函數的數字簽名就是利用上述性質來保證數據的完整性和不可偽造性,生成128bit散列值,SHA也以512bit分組處理輸入文本, 生成160bit散列值,SHA具有更高的安全性。
4 一般數字簽名
發送方(A) 向接收方(B)用明文形式送去信息m,并附上數字簽名,這些數字簽名是對明文m作散列運算后形成的散列值,再進行密碼變換后形成的數據,它能夠使數據單元的接收者確認明文信息m的來源和明文信息的完整性,并保護數據,防止被人偽造和抵賴。其工作過程如下:
1) 發送方用一個單向散列函數對明文信息m進行運算,形成信息摘要MD(Messege Digest),采用信息摘要能夠加快數字簽名的速度。
2) 發送方用自己的私人密鑰S 對信息摘要進行加密得到Es(MD)。
3) 將加密后的信息摘要和明文信息m一起發送出去。即:c=m+Es(MD)→B。
4) 接收方用同樣的單向散列函數對明文信息m進行計算,形成另一信息摘要MD'。
5) 接收方把接收到的信息摘要用發送方的公開密鑰P解密,恢復出加密前信息摘要MD,并與步驟4)形成的信息摘要MD'進行比較,若兩者完全一樣,即MD=MD',則證明信息是完整的,并且數字簽名是有效的。一般數字簽名過程如圖2所示。
5 接收方不可抵賴的數字簽名
如果BOB向Tom發送一個會議通知,Tom沒有出席會議, 并以沒有收到通知為由推卸責任,怎么避免這種情況的發生?
以上的數字簽名較好地保證了數據的安全性和發送方的不可抵賴性,但是不能有效地防止接收方的抵賴,接收方可能會以沒有收到為由而推卸責任。下面介紹一種雙方均不能抵賴的數字簽名方案:
1) 發送方用隨機對稱密鑰K對信息m加密得到E(K,m),并用自己的私鑰進行數字簽名ESA(E(K,m)),然后用接收方的公鑰加密后發送給接收方;
2) 接收方用自己的私鑰解密后得到ESA(E(K,m)),再用發送方的公鑰解密后得到E(K,m),驗證了發送方的合法性,但是如果接收方不發送收到確認信息,就不能得到明文m;
3) 接收方用自己的私鑰加密E(K,m),得到ESB(E(K,m)),再用發送方的公鑰加密后送給發送方;
4) 發送方用自己的私鑰解密得到ESB(E(K,m)),再用接收方的公鑰解密得到E(K,m),確認接收方已收到信息;
5) 發送方把對稱密鑰K用自己的私鑰簽名,并用接收方的公鑰加密,然后發送給接收方;
6) 接收方解密后,得到對稱密鑰K,就可以對E(K,m)解密而得到m。
雙方均不能抵賴的數字簽名方案的流程圖如圖3所示,在上述過程中,發送方加密5次,解密2次,接收方加密2次,解密5次,計算復雜,但發送方和接收方均無法抵賴,保證了信息傳輸的安全性,適合于安全性要求較高情況下的數據傳輸。
6 結束語
本文介紹了公開密碼加密體制、單項散列函數、CA 認證。詳細論述了一般數字簽名提出了雙方均不可抵賴的數字簽名實現技術。一般數字簽名,接收方可能會以沒有接收到對方信息等原因而抵賴,從而影響數據通信的有效性,發送方也可能因此而貽誤商機,造成不可估量的損失。與一般的簽名技術相比較,這種數字簽名技術在保證數據的保密性、有效性等方面性能更為優越。適合于通信要求較高的場合。
參考文獻:
[1] 白娟,周林.數字簽名技術及在Java 中的一種實現[J].微計算機息,2004,20(8):105-106.
[2] 盧開澄.計算機密碼學[M].北京:清華大學出版社,1998:207.
[3] Bruce Schneier,吳世忠,等譯.應用密碼學[M].北京:機械工業出版社,2001:24-29,384-386.
[4] Digital Signature standard[S].Fips pub 186,1994.
[5] 陳晉大,鄭紀蛟.用數字簽名來保護網絡通信安全[J].計算機應用研究,2000(9):43-47.