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