1 引言
為了確保資料傳輸的安全性,不得不採取一系列的安全技術,如加密技術、數字簽名、身份認證、金鑰管理、防火牆、安全協議等。其中數字簽名就是實現網上交易安全的核心技術之一,它可以保證資訊傳輸的保密性、資料交換的完整性、傳送資訊的不可否認性、交易者身份的確定性等。
2 數字簽名的概念
數字簽名在iso7498—2標準中定義為:「附加在資料單元上的一些資料,或是對資料單元所作的密碼變換,這種資料和變換允許資料單元的接收者用以確認資料單元**和資料單元的完整性,並保護資料,防止被人(例如接收者)進行偽造」。
數字簽名要實現的功能是我們平常的手寫簽名要實現功能的擴充套件。平常在書面檔案上簽名的主要作用有兩點,一是因為對自己的簽名本人難以否認,從而確定了檔案已被自己簽署這一事實;二是因為自己的簽名不易被別人模仿,從而確定了檔案是真的這一事實。採用數字簽名,也能完成這些功能:
(1)確認資訊是由簽名者傳送的;
(2)確認資訊自簽名後到收到為止,未被修改過;
(3)簽名者無法否認資訊是由自己傳送的。
數字簽名的技術基礎是公鑰密碼技術,下面就先介紹公鑰密碼技術的基本思想和rsa公鑰密碼系統。
3 公鑰密碼技術
公鑰密碼技術又稱為非對稱/jn密技術。與之相對的是對稱加密技術。對稱加密技術是傳送方和接收方使用相同的金鑰進行加密/解密,雙方必須確保這個共同金鑰的安全性。其基本過程可以用下圖表示:
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兩大信用卡公司於2023年聯合推出的規範。
set主要針對使用者、商家和銀行之間通過信用卡支付的電子交易型別而設計的,所以在下例中會出現三方:使用者、**和銀行。對應的就有六把「鑰匙」:使用者公鑰、使用者私鑰;**公鑰、**私鑰;銀行公鑰、銀行私鑰。
這個三方電子交易的流程如下:
(1)使用者將購物清單和使用者銀行賬號和密碼進行數字簽名提交給**:
使用者賬號明文包括使用者的銀行賬號和密碼。
**申請明文包括購物清單款項統計、**賬戶和使用者需付金額。
(4)銀行簽名認證收到的相應明文:
從上面的交易過程可知,這個電子商務具有以下幾個特點:
(1)**無法得知使用者的銀行賬號和密碼,只有銀行可以看到使用者的銀行賬號和密碼;
(2)銀行無法從其他地方得到使用者的銀行賬號和密碼的密文;
(3)由於數字簽名技術的使用,從使用者到**到銀行的資料,每乙個傳送端都無法否認;
(4)由於數字簽名技術的使用,從使用者到**到銀行的資料,均可保證未被篡改。
可見,這種方式已基本解決電子商務中三方進行安全交易的要求,即便有「四方」、「五方」等更多方交易,也可以按set 議類推完成。
6 結語
數字簽名還需要相關法律條文的支援,所以需要引起立法機構對數字簽名技術的重視,加快立法腳步,制定相關法律,為數字簽名技術提供法律上的支援。
數字簽名簽名概述
數字簽名的技術流程描述 1 傳送者使用摘要演算法對傳送資訊產生資訊摘要 2 傳送者使用自己的私鑰對資訊摘要進行簽名 3 傳送者將資訊本身和已簽名的摘要一起傳送出去 4 接收者使用相同的摘要演算法對資訊本身計算資訊摘要 5 接收者使用傳送者的公鑰對簽名的摘要就行驗籤,獲得資訊傳送者的資訊摘要 6 接收...
數字簽名和數字證書詳解
當你在乙個紙質檔案上寫上你的名字,按上你的指紋,就意味著這張紙上的內容經過了你的認可,你的筆跡和指紋就是你身份的證明。這是因為,筆跡很難偽造,而每個人的指紋更是獨一無二的。在簽名前,我們會檢查檔案內容有沒有歧義 有沒有塗改 有沒有多餘不必要的空白等,確認無誤後再寫下我們的名字,而收到簽名後檔案的人,...
數字信封 數字簽名
2019 08 06 19 51 51 數字簽名是用來表明資料傳送者身份的,有了簽名就說明這個資料是傳送都發出來的。為什麼?因為可以用你的公鑰開啟你的簽名資訊,獲取明文的hash值。數字信封,被公鑰加密後的對稱密碼被稱為數字信封,用於對稱金鑰的交換。數字證書,用來證明資料傳送者的身份的。為什麼能證明...