首先應該知道,什麼是數字簽名.簡單地說,所謂數字簽名就是附加在資料單元上的一些資料,或是對資料單元所作的密碼變換。這種資料或變換允許資料單元的接收者用以確認資料單元的來源和資料單元的完整性並保護資料,防止被人(例如接收者)進行偽造。它是對電子形式的訊息進行簽名的一種方法,一個簽名訊息能在一個通訊網路中傳輸。基於公鑰密碼體制和私鑰密碼體制都可以獲得數字簽名,目前主要是基於公鑰密碼體制的數字簽名。包括普通數字簽名和特殊數字簽名。普通數字簽名演算法有RSA、ElGamal、Fiat-Shamir、Guillou- Quisquarter、Schnorr、Ong-Schnorr-Shamir數字簽名演算法、Des/DSA,橢圓曲線數字簽名演算法和有限自動機數字簽名演算法等。特殊數字簽名有盲簽名、代理簽名、群簽名、不可否認簽名、公平盲簽名、門限簽名、具有訊息恢復功能的簽名等,它與具體應用環境密切相關。顯然,數字簽名的應用涉及到法律問題,美國聯邦政府基於有限域上的離散對數問題制定了自己的數字簽名標準(DSS)。一些國家如法國和德國已經制定了數字簽名法。 實現數字簽名有很多方法,目前數字簽名採用較多的是公鑰加密技術,如基於RSA Date Security 公司的PKCS(Public Key Cryptography Standards)、Digital Signature Algorithm、x.509、PGP(Pretty Good Privacy)。1994年美國標準與技術協會公佈了數字簽名標準而使公鑰加密技術廣泛應用。公鑰加密系統採用的是非對稱加密演算法。 目前的數字簽名是建立在公共金鑰體制基礎上,它是公用金鑰加密技術的另一類應用。它的主要方式是,報文的傳送方從報文文字中生成一個128位的雜湊值(或報文摘要)。傳送方用自己的私人金鑰對這個雜湊值進行加密來形成傳送方的數字簽名。然後,這個數字簽名將作為報文的附件和報文一起傳送給報文的接收方。報文的接收方首先從接收到的原始報文中計算出128位的雜湊值(或報文摘要),接著再用傳送方的公用金鑰來對報文附加的數字簽名進行解密。如果兩個雜湊值相同、那麼接收方就能確認該數字簽名是傳送方的。透過數字簽名能夠實現對原始報文的鑑別。 在書面檔案上簽名是確認檔案的一種手段,其作用有兩點:第一,因為自己的簽名難以否認,從而確認了檔案已簽署這一事實;第二,因為簽名不易仿冒,從而確定了檔案是真的這一事實。 數字簽名與書面檔案簽名有相同之處,採用數字簽名,也能確認以下兩點:第一,資訊是由簽名者傳送的;第二,資訊自簽發後到收到為止未曾作過任何修改。這樣數字簽名就可用來防止電子資訊因易被修改而有人作偽,或冒用別人名義傳送資訊。或發出(收到)信件後又加以否認等情況發生。 應用廣泛的數字簽名方法主要有三種,即:RSA簽名、DSS簽名和Hash簽名。這三種演算法可單獨使用,也可綜合在一起使用。數字簽名是透過密碼演算法對資料進行加、解密變換實現的,用DES算去、RSA演算法都可實現數字簽名。但三種技術或多或少都有缺陷,或者沒有成熟的標準。 用RSA或其它公開金鑰密碼演算法的最大方便是沒有金鑰分配問題(網路越複雜、網路使用者越多,其優點越明顯)。因為公開金鑰加密使用兩個不同的金鑰,其中有一個是公開的,另一個是保密的。公開金鑰可以儲存在系統目錄內、未加密的電子郵件資訊中、電話黃頁(商業電話)上或公告牌裡,網上的任何使用者都可獲得公開金鑰。而私有金鑰是使用者專用的,由使用者本身持有,它可以對由公開金鑰加密資訊進行解密。 RSA演算法中數字簽名技術實際上是透過一個雜湊函式來實現的。數字簽名的特點是它代表了檔案的特徵,檔案如果發生改變,數字簽名的值也將發生變化。不同的檔案將得到不同的數字簽名。一個最簡單的雜湊函式是把檔案的二進位制碼相累加,取最後的若干位。雜湊函式對傳送資料的雙方都是公開的只有加入數字簽名及驗證才能真正實現在公開網路上的安全傳輸。加入數字簽名和驗證的檔案傳輸過程如下: 傳送方首先用雜湊函式從原文得到數字簽名,然後採用公開金鑰體系用發達方的私有金鑰對數字簽名進行加密,並把加密後的數字簽名附加在要傳送的原文後面; 傳送一方選擇一個秘密金鑰對檔案進行加密,並把加密後的檔案透過網路傳輸到接收方; 傳送方用接收方的公開金鑰對密秘密鑰進行加密,並透過網路把加密後的秘密金鑰傳輸到接收方; 接受方使用自己的私有金鑰對金鑰資訊進行解密,得到秘密金鑰的明文; 接收方用秘密金鑰對檔案進行解密,得到經過加密的數字簽名; 接收方用傳送方的公開金鑰對數字簽名進行解密,得到數字簽名的明文; 接收方用得到的明文和雜湊函式重新計算數字簽名,並與解密後的數字簽名進行對比。如果兩個數字簽名是相同的,說明檔案在傳輸過程中沒有被破壞。 如果第三方冒充發送方發出了一個檔案,因為接收方在對數字簽名進行解密時使用的是傳送方的公開金鑰,只要第三方不知道傳送方的私有金鑰,解密出來的數字簽名和經過計算的數字簽名必然是不相同的。這就提供了一個安全的確認傳送方身份的方法。 安全的數字簽名使接收方可以得到保證:檔案確實來自聲稱的傳送方。鑑於簽名私鑰只有傳送方自己儲存,他人無法做一樣的數字簽名,因此他不能否認他參與了交易。 數字簽名的加密解密過程和私有金鑰的加密解密過程雖然都使用公開金鑰體系,但實現的過程正好相反,使用的金鑰對也不同。數字簽名使用的是傳送方的金鑰對,傳送方用自己的私有金鑰進行加密,接收方用傳送方的公開金鑰進行解密。這是一個一對多的關係:任何擁有傳送方公開金鑰的人都可以驗證數字簽名的正確性,而私有金鑰的加密解密則使用的是接收方的金鑰對,這是多對一的關係:任何知道接收方公開金鑰的人都可以向接收方傳送加密資訊,只有唯一擁有接收方私有金鑰的人才能對資訊解密。在實用過程中,通常一個使用者擁有兩個金鑰對,一個金鑰對用來對數字簽名進行加密解密,一個金鑰對用來對私有金鑰進行加密解密。這種方式提供了更高的安全性
首先應該知道,什麼是數字簽名.簡單地說,所謂數字簽名就是附加在資料單元上的一些資料,或是對資料單元所作的密碼變換。這種資料或變換允許資料單元的接收者用以確認資料單元的來源和資料單元的完整性並保護資料,防止被人(例如接收者)進行偽造。它是對電子形式的訊息進行簽名的一種方法,一個簽名訊息能在一個通訊網路中傳輸。基於公鑰密碼體制和私鑰密碼體制都可以獲得數字簽名,目前主要是基於公鑰密碼體制的數字簽名。包括普通數字簽名和特殊數字簽名。普通數字簽名演算法有RSA、ElGamal、Fiat-Shamir、Guillou- Quisquarter、Schnorr、Ong-Schnorr-Shamir數字簽名演算法、Des/DSA,橢圓曲線數字簽名演算法和有限自動機數字簽名演算法等。特殊數字簽名有盲簽名、代理簽名、群簽名、不可否認簽名、公平盲簽名、門限簽名、具有訊息恢復功能的簽名等,它與具體應用環境密切相關。顯然,數字簽名的應用涉及到法律問題,美國聯邦政府基於有限域上的離散對數問題制定了自己的數字簽名標準(DSS)。一些國家如法國和德國已經制定了數字簽名法。 實現數字簽名有很多方法,目前數字簽名採用較多的是公鑰加密技術,如基於RSA Date Security 公司的PKCS(Public Key Cryptography Standards)、Digital Signature Algorithm、x.509、PGP(Pretty Good Privacy)。1994年美國標準與技術協會公佈了數字簽名標準而使公鑰加密技術廣泛應用。公鑰加密系統採用的是非對稱加密演算法。 目前的數字簽名是建立在公共金鑰體制基礎上,它是公用金鑰加密技術的另一類應用。它的主要方式是,報文的傳送方從報文文字中生成一個128位的雜湊值(或報文摘要)。傳送方用自己的私人金鑰對這個雜湊值進行加密來形成傳送方的數字簽名。然後,這個數字簽名將作為報文的附件和報文一起傳送給報文的接收方。報文的接收方首先從接收到的原始報文中計算出128位的雜湊值(或報文摘要),接著再用傳送方的公用金鑰來對報文附加的數字簽名進行解密。如果兩個雜湊值相同、那麼接收方就能確認該數字簽名是傳送方的。透過數字簽名能夠實現對原始報文的鑑別。 在書面檔案上簽名是確認檔案的一種手段,其作用有兩點:第一,因為自己的簽名難以否認,從而確認了檔案已簽署這一事實;第二,因為簽名不易仿冒,從而確定了檔案是真的這一事實。 數字簽名與書面檔案簽名有相同之處,採用數字簽名,也能確認以下兩點:第一,資訊是由簽名者傳送的;第二,資訊自簽發後到收到為止未曾作過任何修改。這樣數字簽名就可用來防止電子資訊因易被修改而有人作偽,或冒用別人名義傳送資訊。或發出(收到)信件後又加以否認等情況發生。 應用廣泛的數字簽名方法主要有三種,即:RSA簽名、DSS簽名和Hash簽名。這三種演算法可單獨使用,也可綜合在一起使用。數字簽名是透過密碼演算法對資料進行加、解密變換實現的,用DES算去、RSA演算法都可實現數字簽名。但三種技術或多或少都有缺陷,或者沒有成熟的標準。 用RSA或其它公開金鑰密碼演算法的最大方便是沒有金鑰分配問題(網路越複雜、網路使用者越多,其優點越明顯)。因為公開金鑰加密使用兩個不同的金鑰,其中有一個是公開的,另一個是保密的。公開金鑰可以儲存在系統目錄內、未加密的電子郵件資訊中、電話黃頁(商業電話)上或公告牌裡,網上的任何使用者都可獲得公開金鑰。而私有金鑰是使用者專用的,由使用者本身持有,它可以對由公開金鑰加密資訊進行解密。 RSA演算法中數字簽名技術實際上是透過一個雜湊函式來實現的。數字簽名的特點是它代表了檔案的特徵,檔案如果發生改變,數字簽名的值也將發生變化。不同的檔案將得到不同的數字簽名。一個最簡單的雜湊函式是把檔案的二進位制碼相累加,取最後的若干位。雜湊函式對傳送資料的雙方都是公開的只有加入數字簽名及驗證才能真正實現在公開網路上的安全傳輸。加入數字簽名和驗證的檔案傳輸過程如下: 傳送方首先用雜湊函式從原文得到數字簽名,然後採用公開金鑰體系用發達方的私有金鑰對數字簽名進行加密,並把加密後的數字簽名附加在要傳送的原文後面; 傳送一方選擇一個秘密金鑰對檔案進行加密,並把加密後的檔案透過網路傳輸到接收方; 傳送方用接收方的公開金鑰對密秘密鑰進行加密,並透過網路把加密後的秘密金鑰傳輸到接收方; 接受方使用自己的私有金鑰對金鑰資訊進行解密,得到秘密金鑰的明文; 接收方用秘密金鑰對檔案進行解密,得到經過加密的數字簽名; 接收方用傳送方的公開金鑰對數字簽名進行解密,得到數字簽名的明文; 接收方用得到的明文和雜湊函式重新計算數字簽名,並與解密後的數字簽名進行對比。如果兩個數字簽名是相同的,說明檔案在傳輸過程中沒有被破壞。 如果第三方冒充發送方發出了一個檔案,因為接收方在對數字簽名進行解密時使用的是傳送方的公開金鑰,只要第三方不知道傳送方的私有金鑰,解密出來的數字簽名和經過計算的數字簽名必然是不相同的。這就提供了一個安全的確認傳送方身份的方法。 安全的數字簽名使接收方可以得到保證:檔案確實來自聲稱的傳送方。鑑於簽名私鑰只有傳送方自己儲存,他人無法做一樣的數字簽名,因此他不能否認他參與了交易。 數字簽名的加密解密過程和私有金鑰的加密解密過程雖然都使用公開金鑰體系,但實現的過程正好相反,使用的金鑰對也不同。數字簽名使用的是傳送方的金鑰對,傳送方用自己的私有金鑰進行加密,接收方用傳送方的公開金鑰進行解密。這是一個一對多的關係:任何擁有傳送方公開金鑰的人都可以驗證數字簽名的正確性,而私有金鑰的加密解密則使用的是接收方的金鑰對,這是多對一的關係:任何知道接收方公開金鑰的人都可以向接收方傳送加密資訊,只有唯一擁有接收方私有金鑰的人才能對資訊解密。在實用過程中,通常一個使用者擁有兩個金鑰對,一個金鑰對用來對數字簽名進行加密解密,一個金鑰對用來對私有金鑰進行加密解密。這種方式提供了更高的安全性