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