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