一、數(shù)字簽名的原理
數(shù)字簽名算法依靠公鑰加密技術(shù)來實現(xiàn)的。在公鑰加密技術(shù)里,每一個使用者有一對密鑰:一把公鑰和一把私鑰。公鑰可以自由發(fā)布,但私鑰則秘密保存;還有一個要求就是要讓通過公鑰推算出私鑰的做法不可能實現(xiàn)。
普通的數(shù)字簽名算法包括三種算法:1、密碼生成算法。2、標記算法。3、驗證算法。
數(shù)字簽名技術(shù)大多基于哈希摘要和非對稱密鑰加密體制來實現(xiàn)。如果簽名者想要對某個文件進行數(shù)字簽名,他必須首先從可信的第三方機構(gòu)(數(shù)字證書認證中心CA)取得私鑰和公鑰,這需要用到PKI技術(shù)。
1、有哈希算法的數(shù)字簽名與驗證
哈希函數(shù)是一種“壓縮函數(shù)”,利用哈希函數(shù)可以把任意長度的輸入經(jīng)由散列函數(shù)算法變換成固定長度的輸出,該輸出的哈希值就是消息摘要,也稱數(shù)字摘要。在正式的數(shù)字簽名中,發(fā)送方首先對發(fā)送文件采用哈希算法,得到一個固定長度的消息摘要(Message Digest);再用自己的私鑰(Secret key,SK)對消息摘要進行簽名,形成發(fā)送方的數(shù)字簽名。數(shù)字簽名將作為隊件和原文一起發(fā)送給接收方;接收方首先用發(fā)送方的公鑰對數(shù)字簽名進行解密得到發(fā)送方的數(shù)字摘要,然后用相同的哈希函數(shù)對原文進行哈希計算,得到一個新的消息摘要,最后將消息摘要與收到的消息摘要做比較。
2、基于非對稱密鑰加密體制的數(shù)字簽名與驗證
發(fā)送方首先將原文用自己的私鑰加密得到數(shù)字簽名,然后將原文和數(shù)字簽名一起發(fā)送給接收方。接收方用發(fā)送方的公鑰對數(shù)字簽名進行解密,最后與原文進行比較,這種是電子商務(wù)、電子政務(wù)中應(yīng)用普遍、技術(shù)成熟、可操作性強的一種電子簽名方法。它采用了規(guī)范化的程序和科學化的方法,用于鑒定簽名人的身份以及對一項電子數(shù)據(jù)內(nèi)容的認可。使用數(shù)字簽名技術(shù)能夠驗證文件的原文在傳輸過程中有無變動,確保傳輸電子文件的完整性、真實性和不可抵賴性。
二、數(shù)字簽名的特點
每個人都有一對“鑰匙”(數(shù)字身份),其中一個只有她/他本人知道(私鑰),另一個公開的(公鑰)。簽名的時候用私鑰,驗證簽名的時候用公鑰。又因為任何人都可以落款聲稱她/他就是你,因此公鑰必須向接受者信任的人(身份認證機構(gòu))來注冊。注冊后身份認證機構(gòu)給你發(fā)一數(shù)字證書。對文件簽名后,你把此數(shù)字證書連同文件及簽名一起發(fā)給接受者,接受者向身份認證機構(gòu)求證是否真地是用你的密鑰簽發(fā)的文件。
在通訊中使用數(shù)字簽名一般具有以下特點:
1、鑒權(quán)
公鑰加密系統(tǒng)允許任何人在發(fā)送信息時使用公鑰進行加密,接收信息時使用私鑰解密。當然,接收者不可能百分之百確信發(fā)送者的真實身份,而只能在密碼系統(tǒng)未被破譯的情況下才有理由確信。
鑒權(quán)的重要性在財務(wù)數(shù)據(jù)上表現(xiàn)得尤為突出。舉個例子,假設(shè)一家銀行將指令由它的分行傳輸?shù)剿闹醒牍芾硐到y(tǒng),指令的格式是(a,b),其中a是賬戶的賬號,而b是賬戶的現(xiàn)有金額。這時一位遠程客戶可以先存入100元,觀察傳輸?shù)慕Y(jié)果,然后接二連三的發(fā)送格式為(a,b)的指令。這種方法被稱作重放攻擊。
2、完整性
傳輸數(shù)據(jù)的雙方都總希望確認消息未在傳輸?shù)倪^程中被修改。加密使得第三方想要讀取數(shù)據(jù)十分困難,然而第三方仍然能采取可行的方法在傳輸?shù)倪^程中修改數(shù)據(jù)。一個通俗的例子就是同形攻擊:回想一下,還是上面的那家銀行從它的分行向它的中央管理系統(tǒng)發(fā)送格式為(a,b)的指令,其中a是賬號,而b是賬戶中的金額。一個遠程客戶可以先存100元,然后攔截傳輸結(jié)果,再傳輸(a,b),這樣他就立刻變成百萬富翁了。
3、不可抵賴
在密文背景下,抵賴這個詞指的是不承認與消息有關(guān)的舉動(即聲稱消息來自第三方)。消息的接收方可以通過數(shù)字簽名來防止所有后續(xù)的抵賴行為,因為接收方可以出示簽名給別人看來證明信息的來源。