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