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