數字簽名

  1 引言

  爲了確保數據傳輸的安全性,不得不採取一系列的安全技術,如加密技術、數字簽名、身份認證、密鑰管理、防火牆、安全協議等。其中數字簽名就是實現網上交易安全的核心技術之一,它可以保證信息傳輸的保密性、數據交換的完整性、發送信息的不可否認性、交易者身份的確定性等。

  2 數字簽名的概念

  數字簽名在ISO7498—2標準中定義爲:“附加在數據單元上的一些數據,或是對數據單元所作的密碼變換,這種數據和變換允許數據單元的接收者用以確認數據單元來源和數據單元的完整性,並保護數據,防止被人(例如接收者)進行僞造”。

  數字簽名要實現的功能是我們平常的手寫簽名要實現功能的擴展。平常在書面文件上簽名的主要作用有兩點,一是因爲對自己的簽名本人難以否認,從而確定了文件已被自己簽署這一事實;二是因爲自己的簽名不易被別人模仿,從而確定了文件是真的這一事實。採用數字簽名,也能完成這些功能:

  (1)確認信息是由簽名者發送的;

  (2)確認信息自簽名後到收到爲止,未被修改過;

  (3)簽名者無法否認信息是由自己發送的。

  數字簽名的技術基礎是公鑰密碼技術,下面就先介紹公鑰密碼技術的基本思想和RSA公鑰密碼系統。

  3 公鑰密碼技術

  公鑰密碼技術又稱爲非對稱/Jn密技術。與之相對的是對稱加密技術。對稱加密技術是發送方和接收方使用相同的密鑰進行加密/解密,雙方必須確保這個共同密鑰的安全性。其基本過程可以用下圖表示:

  其中加密變換使用的密鑰和解密變換使用的密鑰是完全相同的,此密鑰必須以某種安全的方式告訴解密方。大家熟悉的DES加密標準就是一種對稱加密技術。1976年,Diffie和Hellman在一篇名叫“New Direction in Cryptog raphy(密碼學的新方向)”一文中提出了一個新的思想,即:不僅加密算法本身可以公開,就是加密用的密鑰本身也可以公開。這就是公鑰密碼體制。其中使用的密鑰被分解爲一對:一把公鑰和一把私鑰。只要私鑰保密就可以了,公鑰可以發到因特網(如網站的黃頁)等公開地方供別人查詢和下載。

  4 數字簽名的實現方法

  建立在公鑰密碼技術上的數字簽名方法有很多,有RSA簽名、DSA簽名和橢圓曲線數字簽名算法(ECDSA)等等。下面對RSA簽名進行詳細分析。

  RSA簽名的整個過程可以用下圖表示:

  (1)發送方採用某種摘要算法從報文中生成一個128位的散列值(稱爲報文摘要);

  (2)發送方用RSA算法和自己的私鑰對這個散列值進行加密,產生一個摘要密文,這就是發送方的數字簽名;

  (3)將這個加密後的數字簽名作爲報文的附件和報文一起發送給接收方:

  (4)接收方從接收到的原始報文中採用相同的摘要算法計算出128位的散列值;

  (5)報文的接收方用RSA算法和發送方的公鑰對報文附加的數字簽名進行解密;

  (6)如果兩個散列值相同,那麼接收方就能確認報文是由發送方簽名的。

  最常用的摘要算法叫做MD5(Message Digest 5),它的作者R.L.

  Rivest正是提出RSA公鑰密碼系統中的R。MD5採用單向Hash函數將任意長度的“字節串”變換成一個128位的散列值,並且它是一個不可逆的字符串變換算法,換言之,即使看到MD5的算法描述和實現它的源代碼,也無法將一個MD5的散列值變換回原始的字符串。這一個128位的散列值亦稱爲數字指紋,就像人的指紋一樣,它就成爲驗證報文身份的“指紋”了。

  數字簽名是如何完成與手寫簽名類同的功能的呢?如果報文在網絡傳輸過程中被修改,接收方收到此報文後,使用相同的摘要算法將計算出不同的報文摘要,這就保證了接收方可以判斷報文自簽名後到收到爲止,是否被修改過。如果發送方A想讓接收方誤認爲此報文是由發送方B簽名發送的,由於發送方A不知道發送方B的私鑰,所以接收方用發送方B的公鑰對發送方A加密的報文摘要進行解密時,也將得出不同的報文摘要,這就保證了接收方可以判斷報文是否是由指定的簽名者發送。同時也可以看出,當兩個散列值相同時,發送方B無法否認這個報文是他簽名發送的。

  在上述簽名方案中,報文是以明文方式發生的。所以不具備保密功能。如果報文包含不能泄漏的信息,就需要先進行加密,然後再進行傳送。具有保密機制的RSA簽名的整個過程如下圖所示:

  (1)發送方選擇一個對稱加密算法(比如DES)和一個對稱密鑰對報文進行加密;

  (2)發送方用接收方的公鑰和RSA算法對第1步中的對稱密鑰進行加密,並且將加密後的對稱密鑰附加在密文中;

  (3)發送方使用一個摘要算法從第2步的密文中得到報文摘要,然後用RSA算法和發送方的私鑰對此報文摘要進行加密,這就是發送方的數字簽名;

  (4)將第3步得到的數字簽名封裝在第2步的密文後,並通過網絡發送給接收方;

  (5)接收方使用RSA算法和發送方的公鑰對收到的數字簽名進行解密,得到一個報文摘要;

  (6)接收方使用相同的摘要算法,從接收到的報文密文中計算出一個報文摘要;

  (7)如果第5步和第6步的報文摘要是相同的,就可以確認密文沒有被篡改,並且是由指定的發送方簽名發送的;

  (8)接收方使用RSA算法和接收方的私鑰解密出對稱密鑰;

  (9)接收方使用對稱加密算法(比如DES)和對稱密鑰對密文解密,得到原始報文。

  5 數字簽名在電子商務中的應用

  下面用一個使用SET協議的例子來說明數字簽名在電子商務中的作用。SET協議(Secure Electronic Transaction,安全電子交易)是由VISA和MasterCard兩大信用卡公司於1997年聯合推出的規範。

  SET主要針對用戶、商家和銀行之間通過信用卡支付的電子交易類型而設計的,所以在下例中會出現三方:用戶、網站和銀行。對應的就有六把“鑰匙”:用戶公鑰、用戶私鑰;網站公鑰、網站私鑰;銀行公鑰、銀行私鑰。

  這個三方電子交易的流程如下:

  (1)用戶將購物清單和用戶銀行賬號和密碼進行數字簽名提交給網站

  用戶賬號明文包括用戶的銀行賬號和密碼。

  (2)網站簽名認證收到的購物清單:

  (3)網站將網站申請密文和用戶賬號密文進行數字簽名提交給銀行

  網站申請明文包括購物清單款項統計、網站賬戶和用戶需付金額。

  (4)銀行簽名認證收到的相應明文:

  從上面的交易過程可知,這個電子商務具有以下幾個特點:

  (1)網站無法得知用戶的銀行賬號和密碼,只有銀行可以看到用戶的銀行賬號和密碼

  (2)銀行無法從其他地方得到用戶的銀行賬號和密碼的密文

  (3)由於數字簽名技術的使用,從用戶到網站到銀行的數據,每一個發送端都無法否認;

  (4)由於數字簽名技術的使用,從用戶到網站到銀行的數據,均可保證未被篡改

  可見,這種方式已基本解決電子商務中三方進行安全交易的要求,即便有“四方”、“五方”等更多方交易,也可以按SET 議類推完成。

  6 結語

  數字簽名還需要相關法律條文的支持,所以需要引起立法機構對數字簽名技術的重視,加快立法腳步,制定相關法律,爲數字簽名技術提供法律上的支持。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章