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