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