軟體代碼

軟體代碼

軟體代碼是一種有價值的資源,許多公司竭盡全力保護它們的原始碼,完全反對“自由軟體基金會(Free Software Foundation)”或開放源碼運動的觀點。但是,在密碼情況中,將算法完全地無償地公之於眾,接受大眾的詳細審查是必要的。在字處理程式情況中,這可能會使人不快,但如果出現一些錯誤或其它問題,通常也沒有太大關係

簡介

軟體代碼是一種有價值的資源,許多公司竭盡全力保護它們的原始碼,完全反對“自由軟體基金會(Free Software Foundation)”或開放源碼運動的觀點。但是,在密碼情況中,將算法完全地無償地公之於眾,接受大眾的詳細審查是必要的。在字處理程式情況中,這可能會使人不快,但如果出現一些錯誤或其它問題,通常也沒有太大關係。錯誤是一定存在的,即使沒有目前那種急於推出不成熟產品的傾向。在加密軟體或至少其中的密碼部分的情形中,錯誤是非常危險的,會產生極端嚴重的後果。發現這樣的缺陷的唯一切實可行的方法是公開內部代碼,讓其他人進行同級評估與分析。簡單地說:不要相信,也不要使用任何其核心部分(包括加密算法)不可公開訪問、而且尚未同意同級評估的加密軟體。密碼發展的歷史顯示了眾多證明這一策略的實例。
1976 年撰寫的論文 New Directions in Cryptography 包含了設計一個具有公/私鑰對系統的協定的詳細信息;隨後這一算法以兩位作者的姓名:Whitfield Diffie 和 MARTIN HELLMAN(他們當時在史丹福大學)命名。Diffie-Hellman 算法現在在公共領域中廣泛使用, 作為大量被稱為公鑰系統的基礎。
公鑰系統使用兩個由質數構成的、互補的密鑰,使得一個密鑰用於加密明文,然後可以用另一個且只能用這個密鑰來解密。這也稱為非對稱密碼術
密鑰對中一個密鑰秘密保管,稱為私鑰,而另一個是公鑰,它被廣為公開。這一過程獨特的本質是:任何知道我的公鑰的人都可以加密一條訊息,然後只能由我有使用安全的私鑰才能解密這條訊息。相反,我可以用我的私鑰加密一條訊息,任何使用我自由可用的公鑰解密它的人都可以確信這條訊息是我發出的。實際上,情況要比這複雜得多,因為非對稱密鑰與對稱密鑰相比,通常都很長(大約 768 位相對於 56 或 128 位),所以處理文本會很慢。其中一個最廣泛使用的公鑰系統是 1977 年由三個 MIT的研究人員:Ron Rivest、Adi Shamir 和 Leonard Adelman 利用 Diffie 和 Hellman 引入的概念開發的。這一系統以他們姓名的首字母 RSA 命名,並於 1983 年在美國獲得專利。
遵從前面提到的警告和條件,公鑰系統也可以是無懈可擊的。對這種系統的攻擊方法通常是嘗試對數字進行因數分解,而對大質數的因數分解是極其困難的。但是,也可以採用其它方法,完全有可能發現新的數學技術,嚴重危及這些密碼中的一個或多個,或致使密碼完全無效。而且,就象密鑰密碼術會因在分發時單個密鑰落入壞人之手而易受攻擊一樣,公鑰密碼術也容易受到稱為內奸的風險的攻擊。稍後將對此進行更完整地討論,但是本質上這是愚弄用戶:讓用戶相信公鑰來自某個源的,而實際上它是來自另一個源。出於這一原因,公鑰密碼術通常都與其它安全性方法(如數字證書,它尋求確認公鑰的完整性)相關聯。顯然,私鑰被人知道後,系統也是易受攻擊的,但因為一般不需要共享私鑰,所以這一風險不會很大。
我在前面曾提到,訊息認證正變得與信息隱藏一樣重要了。這裡需要的是一種機制,使接收方放心:訊息真的是來自所聲稱的傳送方,並且自它創建以來沒有被改過。通常,通過使用散列技術生成訊息摘要來提供訊息的完整性。散列是一種將變長字元串轉換為定長結果(一般 128 位)的技術。實際上,對訊息所做的任何更改 — 即使只是象添加或除去一個空格這樣細微的更改 — 都會導致在運行進程時創建一個不同的散列值。
下面這個簡化的模型顯示了這些不同元素如何在一起工作,以保護訊息不會被隨意查看,並且確信接收到的訊息是我(授權傳送方)發出的:
我對明文訊息套用一個適當的處理,以生成一個用作訊息摘要的散列值。
我用私鑰加密這個摘要,而不是訊息本身,向任何可以用公鑰解密它的人確認訊息是我發出的。
我生成一個一次性使用的密鑰,用來迅速加密訊息文本。
我使用接收方的公鑰加密這個密鑰並將整個包傳送給他。
我的收件人使用他的私鑰獲得這個密鑰,接著用該密鑰解密訊息,對訊息套用相同的訊息摘要算法,並將其與使用我的 公鑰解密的訊息摘要進行比較。倘若它們匹配,他就可以確定訊息是我發出的,而且沒有被更改過。
雖然實際套用可能要複雜些,但這基本上就是使用非常廣泛的程式 — “PGP 加密軟體(Pretty Good Privacy,PGP)”和其它一些應用程式的工作原理, 它們極好地以一種有效而快速的方法結合了一起工作的各種互補元素。

結束語

安全性在於管理風險,而不是排除風險。密碼術是任何安全性策略的一個重要組成部分,它正越來越多地在大量情形中在幕後使用。計算機技術的發展意味著,早期曾被認為是十分安全的密碼,現在可能已不再安全了,或只有適度的安全性。同時,在使用新算法或早期算法的變體時,上述的這些發展也使得在合理的期限內使用越來越長的密鑰成為可能。諸如橢圓曲線(elliptic curve)或量子密碼術(quantum cryptography)等一些技術都展示了相當可觀的前景,但是它們對於常規使用仍可能過於深奧。
現在,為了所有實際用途,在任何合理的時間段實現完全安全的系統是極可能的。接下來的問題是如何實現一個這樣的系統,以及如何理解在機器和人類術語方面的含義。還有一點:雖然絕對認證似乎是一個有吸引力的選項,但是它有相當的風險 — 如果某人的數字身份被盜,則結果會是災難性的。政府將密碼系統當作戰略資源,並希望控制它們的分發和使用,儘管政府有各種關於出口和使用的寬鬆的法規,但仍越來越擔心它們提供的內容。雖然它們可能不願承認這一點,但如果不對公認的行為自由實施嚴格限制的話,則它們正在進行的是一場不可能獲勝的戰鬥。
對於開發人員,在開發使用加密技術的應用程式和掌握各種系統的優缺點,以及在組織的約束內如何正確管理一些安全性風險等方面都有相當多的機會。

相關詞條

相關搜尋

熱門詞條

聯絡我們