【摘 要】公共秘鑰算法是基于數(shù)學(xué)函數(shù)而不是替代和置換。更重要的是,公共秘鑰編碼學(xué)是非對(duì)稱的。它要用到兩個(gè)不同的秘鑰,而對(duì)稱的常規(guī)加密只用到一個(gè)秘鑰。這對(duì)于保密通信,秘鑰分配和鑒別應(yīng)用及研究有著深遠(yuǎn)的意義。
【關(guān)鍵詞】公共秘鑰 數(shù)字簽名 加密 解密
安全通信由來(lái)已久,可以追朔到遠(yuǎn)古的軍事通信上。與此同時(shí),人類對(duì)它的研究從來(lái)沒(méi)有停止過(guò)。進(jìn)入二十世紀(jì)以來(lái),特別是計(jì)算機(jī)和互聯(lián)網(wǎng)技術(shù)廣泛應(yīng)用和發(fā)展之后,對(duì)它的研究進(jìn)入了一個(gè)新的時(shí)代。信息安全永遠(yuǎn)是開(kāi)發(fā)和研究人員關(guān)心的話題。像電子商務(wù)、信用卡業(yè)務(wù)、股票交易、物流、網(wǎng)上購(gòu)物、網(wǎng)上銀行等業(yè)務(wù)無(wú)不體現(xiàn)網(wǎng)絡(luò)安全通信的重要性。要使信息在網(wǎng)上通信必須考慮安全問(wèn)題,采取的辦法就是對(duì)數(shù)據(jù)進(jìn)行加密。安全通信中常說(shuō)的一個(gè)規(guī)則是:如果破解系統(tǒng)的代價(jià)比系統(tǒng)本身內(nèi)容的價(jià)值高則系統(tǒng)是安全的。本文將介紹目前常用的加密技術(shù)公共秘鑰的有關(guān)知識(shí)和概念。
公共秘碼編碼學(xué)與以前的所有方法不同,其公共秘鑰算法是基于數(shù)學(xué)函數(shù)而不是替代和置換。更重要的是,公共秘鑰編碼學(xué)是非對(duì)稱的,他要用到兩個(gè)不同的秘鑰,而對(duì)稱的常規(guī)加密只用到一個(gè)秘鑰。這對(duì)于保密通信,秘鑰分配和鑒別應(yīng)用和研究有著深遠(yuǎn)的意義。最著名的是RSA加密算法。公共秘鑰密碼編碼學(xué)的發(fā)展是整個(gè)密碼編碼學(xué)歷史上最大的而且也許是唯一真正的革命。
一、對(duì)公共加密秘鑰的誤解
第一個(gè)誤解是認(rèn)為公共秘鑰加密在防范密碼分析上比常規(guī)加密更安全。事實(shí)上,任何加密方案的安全程度將依賴于秘鑰的長(zhǎng)度(如56bit,128bit等)和匹配密碼所包含的計(jì)算工作量,僅從抗擊密碼分析的角度講,無(wú)論常規(guī)還是公共秘鑰加密,理論上都沒(méi)有比對(duì)方優(yōu)越的地方。
其次,認(rèn)為公共加密技術(shù)的出現(xiàn)使得常規(guī)加密技術(shù)過(guò)時(shí)。實(shí)際上,從當(dāng)前公共秘鑰加密在計(jì)算上的巨大開(kāi)銷,能夠預(yù)見(jiàn)出將來(lái)的常規(guī)加密并不會(huì)被拋棄。
第三,是用常規(guī)加密時(shí)要涉及秘鑰分配中心相當(dāng)繁瑣的握手過(guò)程,使人感覺(jué)到用公共秘鑰加密后秘鑰分配就變得非常簡(jiǎn)單。其實(shí),公共秘鑰加密仍需要某種形式的協(xié)議,還會(huì)涉及到一
個(gè)中心代理,整個(gè)過(guò)程比常規(guī)加密中的過(guò)程既不簡(jiǎn)單也不更有效。
二、公共秘鑰密碼系統(tǒng)
公共秘鑰算法使用一個(gè)秘鑰進(jìn)行加密,而用另一個(gè)不同的但是有關(guān)的秘鑰進(jìn)行解密。它有以下重要特性:
1.僅僅知道秘鑰算法和加密秘鑰而要確定解密秘鑰,在計(jì)算上是不可能的。
2.兩個(gè)相關(guān)秘鑰中,任何一個(gè)都可以用作加密而讓另外一個(gè)用作解密(圖1-1時(shí)公共秘鑰的加密過(guò)程)。
其重要步驟如下:
1.網(wǎng)絡(luò)中的每個(gè)端系統(tǒng)都產(chǎn)生一對(duì)用于它將接收的報(bào)文進(jìn)行加密和解密的密鑰。
2.每個(gè)系統(tǒng)都通過(guò)把自己的加密秘鑰放進(jìn)一個(gè)登記本或文件夾來(lái)公布它,這就是公共秘鑰;另一個(gè)是私有的。
3.如果A想給B發(fā)送一個(gè)報(bào)文,他就用B的公共秘鑰加密這個(gè)報(bào)文。
4.B收到這個(gè)報(bào)文后就用它的私有秘鑰解密報(bào)文,其他所有收到這個(gè)報(bào)文的人都無(wú)法解密它,因?yàn)橹挥蠦才有B的私鑰。
圖1上述方法是所有參與方都可以獲得各個(gè)公共秘鑰,而各參與方的私有秘鑰由各參與方自己在本地產(chǎn)生,因此不需要被分配得到。
只要一個(gè)系統(tǒng)控制住它的私有秘鑰,他所收到的通行內(nèi)容就是安全的。并且在任何時(shí)候,一個(gè)系統(tǒng)都可以更改他的私有秘鑰并公開(kāi)相應(yīng)的公共秘鑰來(lái)替代它原來(lái)的公共秘鑰。
三、公共秘鑰的保密性能分析
下面,我們看一看公共加密方案的關(guān)鍵部分。
圖2
假定有一個(gè)報(bào)文源點(diǎn)A,產(chǎn)生一個(gè)名文報(bào)文X=[X1,X2,…,Xm],X的M個(gè)元素是,某個(gè)有限字母表中的字母。報(bào)文是準(zhǔn)備發(fā)送給終點(diǎn)B的。B產(chǎn)生相關(guān)的一對(duì)秘鑰:公共秘鑰KUb,私有秘鑰KRb 。KRb只有B知道而KUb是可以公共得到的,因此A可以得到它。用報(bào)文X和加密秘鑰KUb作為輸入,A輸出密文Y=[Y1,Y2,…,YN]:
Y=EKUb(X)
接收方由于具有匹配的私有秘鑰,因此可以進(jìn)行反向變換:
X=DKRb(Y)
敵對(duì)方雖然觀察到Y(jié)并得到KUb,但無(wú)法得到KRb或者X,因此他必須試圖恢復(fù)X和KRb。假設(shè)敵方知道所采用的加密(E)和解密(D)算法,如果敵方僅僅對(duì)這個(gè)特定的報(bào)文感興趣,那么他要做的主要就是通過(guò)產(chǎn)生一個(gè)名文估計(jì)X恢復(fù)X,若敵方經(jīng)常對(duì)解讀將來(lái)的報(bào)文也感興趣,這時(shí)就要通過(guò)產(chǎn)生一個(gè)估計(jì)KRb試圖恢復(fù)KRb。
我們知道兩個(gè)相關(guān)的秘鑰中的任何一個(gè)都可以用來(lái)加密,而另外一個(gè)可以用來(lái)解密,這樣一來(lái)就可以實(shí)現(xiàn)一個(gè)相當(dāng)不同的密碼體制。圖二可以進(jìn)行保密通信,而圖三則可以用公共秘鑰進(jìn)行鑒別。進(jìn)行鑒別的方法是:
Y=EKRa(X)
X=DKUa(X)
在這種應(yīng)用中,A準(zhǔn)備給B發(fā)送一個(gè)報(bào)文,并在傳輸之前用A的私有秘鑰對(duì)他進(jìn)行加密。B可以用A的公共秘鑰將這個(gè)報(bào)文解密。因?yàn)樵搱?bào)文是用A的私有秘鑰加密的,只有A才可能發(fā)送了這個(gè)報(bào)文。因此,整個(gè)加密的報(bào)文就可以當(dāng)作一個(gè)數(shù)字簽名(digital signature)。另外,得不到A的私鑰就不可能對(duì)報(bào)文進(jìn)行改動(dòng),這樣報(bào)文的發(fā)送者和數(shù)據(jù)的完整性同時(shí)得到了證實(shí)。但是,這種方案雖然證實(shí)了作者和內(nèi)容的真實(shí)性,但卻需要很多存儲(chǔ)空間,在實(shí)際使用時(shí)每個(gè)文件除用明文形式存放外,還要存放一個(gè)加密的副本,以便出現(xiàn)爭(zhēng)執(zhí)時(shí)可以用來(lái)驗(yàn)證作者的身份和內(nèi)容的真實(shí)性。一個(gè)更好的處理方案是對(duì)整個(gè)文本的部分內(nèi)容進(jìn)行加密,而這部分內(nèi)容是該文件的一個(gè)函數(shù),我們不妨把這部分內(nèi)容稱為鑒別符。鑒別符具有如下特性:
要改變文本的任何內(nèi)容而不改變鑒別符是不可能的。如果鑒別符用發(fā)送方的私鑰進(jìn)行加密,它就可以當(dāng)作一個(gè)證實(shí)作者、內(nèi)容和順序的簽名。這就是網(wǎng)上經(jīng)常使用的數(shù)字簽名。
需要注意的是,上述加密過(guò)程并不提供保密功能,圖3即發(fā)送的報(bào)文不會(huì)被篡改,但卻不能防止竊聽(tīng)。在簽名基于報(bào)文一部分的情況下,這一點(diǎn)是明顯的,因?yàn)閳?bào)文的其余部分是未經(jīng)過(guò)加密進(jìn)行傳送的。即便是圖三所示的完全加密的情形下,也仍然對(duì)于文件內(nèi)容無(wú)法保護(hù),因?yàn)槿我庥^察者都可以用發(fā)送方的公共秘鑰解密報(bào)文。
鑒于此,我們可以通過(guò)連續(xù)使用公共秘鑰的方案來(lái)既提供鑒別功能又提供保密功能。如圖4:
圖4
Z=EKUb(EKRa(X))
X=DKUa(DKRb(Z))
在這里,開(kāi)始先是用發(fā)送方的私有秘鑰加密一個(gè)報(bào)文,這提供了數(shù)字簽名。接著又用接收方的公共秘鑰進(jìn)行加密。最后得到的密文只可能被設(shè)想的接收方所解密,因?yàn)橹挥兴庞衅ヅ涞乃接忻罔€,因而保密性得到了保證。缺點(diǎn)是秘鑰算法在每次通信中使用四次而不是兩次。
四、公共系統(tǒng)秘鑰的性質(zhì)及直接簽名
大體來(lái)說(shuō),公共秘鑰系統(tǒng)分三類:加密/解密:發(fā)送方用接收方的公共秘鑰加密報(bào)文;數(shù)字簽名:發(fā)送方用自己的私鑰“簽署”報(bào)文。或者簽署整個(gè)報(bào)文,或者簽署報(bào)文的一部分;秘鑰交換:兩方合作以便交換會(huì)話秘鑰。這有幾種可能的方法,其中涉及到一方或兩方的私有秘鑰。
報(bào)文鑒別是用來(lái)保護(hù)通信雙方免受第三方的攻擊。但他無(wú)法防止通信雙方的互相攻擊。例如,Tom向Smith發(fā)送一個(gè)帶鑒別的報(bào)文,Smith受到了該報(bào)文??紤]會(huì)引起如下?tīng)?zhēng)執(zhí):(1)Smith可能偽造不同的報(bào)文,并聲稱來(lái)自于Tom。Smith只要簡(jiǎn)單的生成一個(gè)報(bào)文,并附加由Tom和Smith所共享的秘鑰生成的鑒別碼即可。(2)Tom可以否認(rèn)發(fā)過(guò)該報(bào)文,因?yàn)镾mith偽造報(bào)文是可能的,同時(shí)也無(wú)法證明Tom發(fā)送過(guò)該報(bào)文這一事實(shí)。
在這種情況下,收發(fā)雙方可能存在欺騙和抵賴,因此,除了鑒別以外還需要?jiǎng)e的東西。最好的解決問(wèn)題的方案是數(shù)字簽名,相當(dāng)于筆跡簽名。同時(shí),應(yīng)具有如下性質(zhì):必須能證實(shí)作者簽名和簽名的日期和時(shí)間;在簽名時(shí)必須能對(duì)內(nèi)容進(jìn)行鑒別;簽名必須能被第三方證實(shí)以便解決爭(zhēng)端。
在這些性質(zhì)的基礎(chǔ)上,可總結(jié)出如下數(shù)字簽名的要求:(1)簽名要依賴于簽名報(bào)文的比特模式;(2)簽名必須使用對(duì)發(fā)送方來(lái)說(shuō)是唯一的信息,以防偽造和抵賴;(3)簽名的產(chǎn)生必須相對(duì)簡(jiǎn)單;(4)偽造一個(gè)數(shù)字簽名在計(jì)算上是不可行的,無(wú)論是通過(guò)對(duì)已有的數(shù)字簽名來(lái)構(gòu)造新報(bào)文,還是對(duì)給定的報(bào)文構(gòu)造一個(gè)虛假的數(shù)字簽名;(5)數(shù)字簽名的識(shí)別和證實(shí)必須相對(duì)簡(jiǎn)單;(6)保留一個(gè)數(shù)字簽名的備份是現(xiàn)實(shí)可行的。
五、結(jié)語(yǔ)
公共秘鑰編碼學(xué)是繼對(duì)稱式秘鑰以來(lái)對(duì)數(shù)字通信中數(shù)據(jù)加密的一場(chǎng)革命。其中,RSA算法是1978年由R.rivest、A.shamir、和L.adleman提出的基于數(shù)論的公共秘鑰體系是迄今為止理論上最成熟的并得到廣泛應(yīng)用的秘鑰體系。在網(wǎng)絡(luò)通信中應(yīng)用尤其廣泛,如數(shù)字簽名、認(rèn)證、電子郵件傳輸,金融行業(yè)的資金數(shù)據(jù)的交互,用戶的異地存取業(yè)務(wù),特別是電子商務(wù)的興起勢(shì)必要加快公共秘鑰的發(fā)展和研究,國(guó)內(nèi)有一些研究部門(mén)和軟件公司就信息安全方面越來(lái)越重視這一領(lǐng)域的研究和應(yīng)用??梢钥隙ǎ艽a學(xué)研究的突破必將對(duì)計(jì)算機(jī)網(wǎng)絡(luò)通信、移動(dòng)通信、有線網(wǎng)的安全通信產(chǎn)生深遠(yuǎn)的影響。
參考文獻(xiàn):
[1]William Stallings.密碼編碼學(xué)與網(wǎng)絡(luò)安全.電子工業(yè)出版社.
[2]周明全.網(wǎng)絡(luò)信息安全技術(shù).西安電子科技大學(xué)出版社,2003, 4.
[3]謝希仁.計(jì)算機(jī)網(wǎng)絡(luò).大連理工大學(xué)出版社,2003,1.
[4]楊波.網(wǎng)絡(luò)安全理論與應(yīng)用.電子工業(yè)出版社,2002,7.
(作者單位:河南機(jī)電學(xué)校)