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