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