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