一、數字簽名的原理
數字簽名算法依靠公鑰加密技術來實現的。在公鑰加密技術里,每一個使用者有一對密鑰:一把公鑰和一把私鑰。公鑰可以自由發布,但私鑰則秘密保存;還有一個要求就是要讓通過公鑰推算出私鑰的做法不可能實現。
普通的數字簽名算法包括三種算法:1、密碼生成算法。2、標記算法。3、驗證算法。
數字簽名技術大多基于哈希摘要和非對稱密鑰加密體制來實現。如果簽名者想要對某個文件進行數字簽名,他必須首先從可信的第三方機構(數字證書認證中心CA)取得私鑰和公鑰,這需要用到PKI技術。
1、有哈希算法的數字簽名與驗證
哈希函數是一種“壓縮函數”,利用哈希函數可以把任意長度的輸入經由散列函數算法變換成固定長度的輸出,該輸出的哈希值就是消息摘要,也稱數字摘要。在正式的數字簽名中,發送方首先對發送文件采用哈希算法,得到一個固定長度的消息摘要(Message Digest);再用自己的私鑰(Secret key,SK)對消息摘要進行簽名,形成發送方的數字簽名。數字簽名將作為隊件和原文一起發送給接收方;接收方首先用發送方的公鑰對數字簽名進行解密得到發送方的數字摘要,然后用相同的哈希函數對原文進行哈希計算,得到一個新的消息摘要,最后將消息摘要與收到的消息摘要做比較。
2、基于非對稱密鑰加密體制的數字簽名與驗證
發送方首先將原文用自己的私鑰加密得到數字簽名,然后將原文和數字簽名一起發送給接收方。接收方用發送方的公鑰對數字簽名進行解密,最后與原文進行比較,這種是電子商務、電子政務中應用普遍、技術成熟、可操作性強的一種電子簽名方法。它采用了規范化的程序和科學化的方法,用于鑒定簽名人的身份以及對一項電子數據內容的認可。使用數字簽名技術能夠驗證文件的原文在傳輸過程中有無變動,確保傳輸電子文件的完整性、真實性和不可抵賴性。

二、數字簽名的特點
每個人都有一對“鑰匙”(數字身份),其中一個只有她/他本人知道(私鑰),另一個公開的(公鑰)。簽名的時候用私鑰,驗證簽名的時候用公鑰。又因為任何人都可以落款聲稱她/他就是你,因此公鑰必須向接受者信任的人(身份認證機構)來注冊。注冊后身份認證機構給你發一數字證書。對文件簽名后,你把此數字證書連同文件及簽名一起發給接受者,接受者向身份認證機構求證是否真地是用你的密鑰簽發的文件。
在通訊中使用數字簽名一般具有以下特點:
1、鑒權
公鑰加密系統允許任何人在發送信息時使用公鑰進行加密,接收信息時使用私鑰解密。當然,接收者不可能百分之百確信發送者的真實身份,而只能在密碼系統未被破譯的情況下才有理由確信。
鑒權的重要性在財務數據上表現得尤為突出。舉個例子,假設一家銀行將指令由它的分行傳輸到它的中央管理系統,指令的格式是(a,b),其中a是賬戶的賬號,而b是賬戶的現有金額。這時一位遠程客戶可以先存入100元,觀察傳輸的結果,然后接二連三的發送格式為(a,b)的指令。這種方法被稱作重放攻擊。
2、完整性
傳輸數據的雙方都總希望確認消息未在傳輸的過程中被修改。加密使得第三方想要讀取數據十分困難,然而第三方仍然能采取可行的方法在傳輸的過程中修改數據。一個通俗的例子就是同形攻擊:回想一下,還是上面的那家銀行從它的分行向它的中央管理系統發送格式為(a,b)的指令,其中a是賬號,而b是賬戶中的金額。一個遠程客戶可以先存100元,然后攔截傳輸結果,再傳輸(a,b),這樣他就立刻變成百萬富翁了。
3、不可抵賴
在密文背景下,抵賴這個詞指的是不承認與消息有關的舉動(即聲稱消息來自第三方)。消息的接收方可以通過數字簽名來防止所有后續的抵賴行為,因為接收方可以出示簽名給別人看來證明信息的來源。