一、數字簽名的原理
數字簽名算法依(yi)靠公(gong)鑰(yao)(yao)加(jia)密(mi)(mi)技(ji)術來實現(xian)的(de)(de)。在公(gong)鑰(yao)(yao)加(jia)密(mi)(mi)技(ji)術里,每一(yi)(yi)個使用者有一(yi)(yi)對密(mi)(mi)鑰(yao)(yao):一(yi)(yi)把(ba)公(gong)鑰(yao)(yao)和(he)一(yi)(yi)把(ba)私鑰(yao)(yao)。公(gong)鑰(yao)(yao)可以自由發布,但私鑰(yao)(yao)則秘密(mi)(mi)保存;還有一(yi)(yi)個要(yao)求(qiu)就是要(yao)讓(rang)通過公(gong)鑰(yao)(yao)推算出私鑰(yao)(yao)的(de)(de)做法不可能實現(xian)。
普通的數字簽名算法包括三種算法:1、密碼(ma)生成(cheng)算法。2、標(biao)記算法。3、驗證算法。
數字簽名(ming)技術大(da)多基于哈希摘要和非(fei)對稱密鑰(yao)(yao)(yao)加密體制來實(shi)現。如果簽名(ming)者想(xiang)要對某個(ge)文件進行數字簽名(ming),他必須首先從可信的第三方機構(gou)(數字證書認證中(zhong)心CA)取得私(si)鑰(yao)(yao)(yao)和公鑰(yao)(yao)(yao),這需要用到PKI技術。
1、有哈(ha)希算法的數字簽名與驗證
哈希函(han)數(shu)是(shi)一(yi)(yi)種(zhong)“壓(ya)縮(suo)函(han)數(shu)”,利(li)用哈希函(han)數(shu)可以(yi)把任(ren)意(yi)長(chang)度(du)(du)的(de)(de)輸(shu)入經由(you)散列函(han)數(shu)算(suan)法變(bian)換成固定(ding)長(chang)度(du)(du)的(de)(de)輸(shu)出,該輸(shu)出的(de)(de)哈希值(zhi)就(jiu)是(shi)消息(xi)摘(zhai)(zhai)要(yao)(yao),也稱(cheng)數(shu)字(zi)摘(zhai)(zhai)要(yao)(yao)。在(zai)正式的(de)(de)數(shu)字(zi)簽名(ming)(ming)中(zhong),發(fa)送方首(shou)先對(dui)發(fa)送文件(jian)采用哈希算(suan)法,得到(dao)一(yi)(yi)個(ge)(ge)固定(ding)長(chang)度(du)(du)的(de)(de)消息(xi)摘(zhai)(zhai)要(yao)(yao)(Message Digest);再用自己的(de)(de)私鑰(Secret key,SK)對(dui)消息(xi)摘(zhai)(zhai)要(yao)(yao)進行(xing)簽名(ming)(ming),形成發(fa)送方的(de)(de)數(shu)字(zi)簽名(ming)(ming)。數(shu)字(zi)簽名(ming)(ming)將(jiang)作為隊件(jian)和原文一(yi)(yi)起(qi)發(fa)送給接(jie)收方;接(jie)收方首(shou)先用發(fa)送方的(de)(de)公鑰對(dui)數(shu)字(zi)簽名(ming)(ming)進行(xing)解密得到(dao)發(fa)送方的(de)(de)數(shu)字(zi)摘(zhai)(zhai)要(yao)(yao),然后(hou)用相同的(de)(de)哈希函(han)數(shu)對(dui)原文進行(xing)哈希計算(suan),得到(dao)一(yi)(yi)個(ge)(ge)新的(de)(de)消息(xi)摘(zhai)(zhai)要(yao)(yao),最后(hou)將(jiang)消息(xi)摘(zhai)(zhai)要(yao)(yao)與(yu)收到(dao)的(de)(de)消息(xi)摘(zhai)(zhai)要(yao)(yao)做比(bi)較。
2、基于非對稱密鑰(yao)加密體制的數字簽名與驗證
發(fa)(fa)送方(fang)(fang)首先將原(yuan)文(wen)(wen)用(yong)自(zi)己的(de)(de)(de)私鑰(yao)(yao)加密得(de)到數字(zi)簽(qian)名(ming),然后將原(yuan)文(wen)(wen)和數字(zi)簽(qian)名(ming)一起(qi)發(fa)(fa)送給接收方(fang)(fang)。接收方(fang)(fang)用(yong)發(fa)(fa)送方(fang)(fang)的(de)(de)(de)公鑰(yao)(yao)對數字(zi)簽(qian)名(ming)進行(xing)(xing)解密,最后與原(yuan)文(wen)(wen)進行(xing)(xing)比較,這種(zhong)(zhong)是電子(zi)商(shang)務(wu)、電子(zi)政(zheng)務(wu)中應用(yong)普(pu)遍、技術成(cheng)熟、可操作性強的(de)(de)(de)一種(zhong)(zhong)電子(zi)簽(qian)名(ming)方(fang)(fang)法。它采用(yong)了(le)規范化的(de)(de)(de)程(cheng)序和科學化的(de)(de)(de)方(fang)(fang)法,用(yong)于鑒定簽(qian)名(ming)人的(de)(de)(de)身(shen)份以及對一項(xiang)電子(zi)數據(ju)內容的(de)(de)(de)認可。使用(yong)數字(zi)簽(qian)名(ming)技術能(neng)夠(gou)驗(yan)證(zheng)文(wen)(wen)件的(de)(de)(de)原(yuan)文(wen)(wen)在(zai)傳輸過(guo)程(cheng)中有無變動(dong),確(que)保傳輸電子(zi)文(wen)(wen)件的(de)(de)(de)完整性、真實性和不可抵賴性。
二、數字簽名的特點
每個(ge)人都有一對“鑰(yao)(yao)(yao)匙(chi)”(數(shu)字身(shen)份(fen)),其中一個(ge)只有她/他(ta)本人知道(私(si)(si)鑰(yao)(yao)(yao)),另(ling)一個(ge)公開的(公鑰(yao)(yao)(yao))。簽(qian)名(ming)的時(shi)候用私(si)(si)鑰(yao)(yao)(yao),驗(yan)證簽(qian)名(ming)的時(shi)候用公鑰(yao)(yao)(yao)。又因為(wei)任(ren)何人都可以落款聲稱她/他(ta)就是你(ni),因此(ci)公鑰(yao)(yao)(yao)必須向(xiang)接受者信任(ren)的人(身(shen)份(fen)認證機(ji)(ji)構)來注冊(ce)。注冊(ce)后身(shen)份(fen)認證機(ji)(ji)構給(gei)你(ni)發一數(shu)字證書。對文件簽(qian)名(ming)后,你(ni)把(ba)此(ci)數(shu)字證書連(lian)同(tong)文件及簽(qian)名(ming)一起(qi)發給(gei)接受者,接受者向(xiang)身(shen)份(fen)認證機(ji)(ji)構求(qiu)證是否(fou)真地是用你(ni)的密(mi)鑰(yao)(yao)(yao)簽(qian)發的文件。
在通訊(xun)中使用(yong)數(shu)字簽名(ming)一般(ban)具有(you)以(yi)下特點:
1、鑒權
公(gong)鑰加密(mi)系(xi)統(tong)允許任何(he)人在發(fa)送信息時使(shi)用(yong)(yong)公(gong)鑰進(jin)行加密(mi),接收信息時使(shi)用(yong)(yong)私(si)鑰解密(mi)。當然,接收者不可能(neng)百分之百確信發(fa)送者的真實身份,而(er)只能(neng)在密(mi)碼系(xi)統(tong)未被破譯的情況下才有理由確信。
鑒權的(de)重要性在(zai)財務數據上表現得尤為突出(chu)。舉(ju)個例(li)子(zi),假(jia)設一家銀行將指令(ling)由它(ta)的(de)分行傳(chuan)輸(shu)到它(ta)的(de)中央管理系統,指令(ling)的(de)格式是(a,b),其中a是賬(zhang)戶(hu)的(de)賬(zhang)號,而(er)b是賬(zhang)戶(hu)的(de)現有金(jin)額。這時一位(wei)遠(yuan)程(cheng)客(ke)戶(hu)可以(yi)先存入100元(yuan),觀察傳(chuan)輸(shu)的(de)結果,然后(hou)接二連三的(de)發送格式為(a,b)的(de)指令(ling)。這種方(fang)法被(bei)稱作重放攻擊。
2、完整性
傳輸(shu)數據(ju)的(de)(de)雙(shuang)方都總希望確認消息未在傳輸(shu)的(de)(de)過程中被修改。加密(mi)使得第三方想要讀取數據(ju)十(shi)分困難,然(ran)而第三方仍然(ran)能采(cai)取可行的(de)(de)方法在傳輸(shu)的(de)(de)過程中修改數據(ju)。一個通俗的(de)(de)例子就(jiu)是同形(xing)攻(gong)擊:回(hui)想一下(xia),還是上面的(de)(de)那家銀行從它的(de)(de)分行向它的(de)(de)中央管(guan)理(li)系統發送格式(shi)為(a,b)的(de)(de)指令,其中a是賬號,而b是賬戶(hu)中的(de)(de)金額。一個遠(yuan)程客戶(hu)可以先存100元(yuan),然(ran)后攔截傳輸(shu)結果(guo),再傳輸(shu)(a,b),這樣他就(jiu)立刻變成百萬富翁了。
3、不可抵賴
在密文背景下,抵賴這個詞指的是不承認與消息有關的舉動(即聲稱消息來自第三方)。消息的接收方可以通過數字簽名來(lai)防止(zhi)所(suo)有后(hou)續的抵(di)賴行為,因為接收方可以(yi)出示簽名給別人看來(lai)證(zheng)明信息的來(lai)源。