關于微軟Windows與基于Linux的操作系統哪個更安全的討論席卷了互聯網。討論涉及許多人的既得利益和偏袒的利益。由于了解不夠以及邏輯錯誤引發的誤解導致了討論的混亂,使得討論趨于白熱化。出于廣告宣傳策略的需求希望能使贊助方獲得更多的關注,派性論文使用整理過的統計數據泡制過于明顯的權威及客觀,實際上等于用偏見和可疑的事實來支持討論。
這場缺乏確切結論的大討論看似永無休止的部分原因就在于對安全的評估過多的集中于一個附帶現象上:他們只研究安全性能的表面現象,而沒有深入的分析安全特性的原因。部分原因也在于,對于大部分擁有產權的軟件廠商來說,開源軟件的開發是神秘的全新的。因此,這些非開源軟件廠家無法了解開源世界對于安全問題在背后所做的努力。
還有一部分原因是許多卷入討論的人們是只對軟件安全有很膚淺的了解的最終用戶。即使IT專家有時也不能了解軟件安全在軟件結構和開發過程中所做的努力,因為IT專家就算對 網絡和系統安全配置擁有很深的了解,其技術中也往往比包括對開源軟件開發和軟件結構的實際了解。
如果想要填補公眾知識庫中關于軟件安全帶來的影響的空白,可能要寫上厚厚的幾大本材料。但是從這廣泛的題目中選擇有限的幾個題目進行粗略的介紹還是可能的,這就是本文 的目的所在。
最后,Linux與Windows的安全大討論成為了一場實例的競賽。這些包含了更多更基礎的關于安全所帶來的種種利益與損害的例子分別服務于開源與閉源開發模式。這不僅僅是一個 技術問題,同時還是一個社會事件,如果更仔細的研究這場討論,則更象一個經濟學家和游戲理論家的事件。到現在為止,在大部分討論中兩種開發方式中最容易遭到誤解的是開 源研發方式。現在我們來看開源軟件的開發如何考慮軟件安全問題。
不公開即安全
有些直指開源軟件安全的爭論完全基于錯誤的推論。許多流傳廣泛是聽起來也頗有道理反對開源軟件的的莫過于被我們稱為“不公開即安全”的謬論。一個最常見的說法是:“當 它和微軟程序一樣流行時,你才會看到它有多安全”,另外一個則是“任何老練的安全黑客都能看到源代碼,因此就不夠安全”。
“不公開即安全”的謬論限制了對于基于Linux的操作系統和Mozilla Firefox 瀏覽器的相對安全性的討論。實際情況是“不安全即公開”并不能真正保提供功能性的安全。它只能 提供表面上看起來的安全,實際上,開源開發社區所仰仗的安全原則正好與次相反。這種原則也可稱為“公開即安全”,它包括兩個軟件安全的基本原則:透明的安全以及普及帶 來的安全。
透明的安全
開源軟件開發的安全性經常因為任何人都能得到源代碼而遭到質疑。這個理論認為打算進行安全進攻的人通過對源代碼的研究能夠找到代碼中能夠構成攻擊弱點的缺陷,從而使得 針對這些弱點的進攻更容易完成。這個理論有一定的根據,但是并不是人們所想象的那種方式。
事實上用眼睛分析源代碼查找缺陷、進行分類并進一步創建缺陷是一項艱苦卓絕的工作。如果真的如同他們所說的那樣由于源代碼的公開性,開源軟件更容易遭受攻擊,那么微軟 公司以外的人就不可能發現任何IE的缺陷。事實上,對于任何不平凡的應用來說,即使這樣艱苦的工作也要比通過反工程技術查找缺陷來得容易。這些技術需要試探某個運行中的 應用,輸入畸形的信息或者故意錯誤的使用,然后檢查應用的可擴展性以及輸出,來確定程序的運行是如何以及在何時背離了應用運行的初衷。
可能終有一天我們能夠將源代碼輸入另外一個程序來判斷哪個部分有缺陷,而不必再使用反工程技術來查找缺陷,不過即使那一天到來,使用二進制可執行設備代碼文件可以同樣 輕松的完成任務,根本用不著源代碼本身。畢竟,進行那種分析所需的并不是類似編程員給變量或方法命名所需的信息,而是分析的目標軟件所采用的算法的構造方法。畢竟,設 備代碼本身與輸入編譯器的源代碼在功能上是統一的。唯一的不同是它對特定的編程人員的可靠性有所不同。
從統計學上來看,這一事實不能支撐開源軟件天生具有更多缺陷的說法。例如,代碼分析企業Coverity的一份報告顯示,他們只在Linux的內核的570萬行語句中發現了985個bug。 可以比較的是,卡耐基梅隆大學的CyLab實驗室所進行的的一個研究顯示,具代表性的商業性閉源程序每一千行語句平均帶有20-30個bug。按照這個比率計算,570萬行語句中可能 帶有的bug數量就會超過11.4萬,是Linux內核bug數量的114倍。
軟件透明度在開源軟件開發過程中的重要作用經常被稱為同行評審。之所有有這個過程,是因為源代碼的公開狀態,以及編程人員不可能與單一的控制實體,如CEO的目標完全保持 一致的事實所促成的,開發源代碼的人員需要互相管理彼此的行動。因此很少出現,卻非常激烈的關于不壞好意的程序員可能在程序中預留“后門”的論調在同行評審的過程下不 攻自破。嚴格而謹慎的遵守質量標準的代碼才會得到開源軟件項目代碼庫的接納。事實上,如果程序在公開審查中被發現帶有木馬病毒,就會被指出。而源代碼不公開的具有產權 的軟件也可以,有時的確具有特意加入的rootkit功能,只有發生意外時才有可能被發現,例如2005年下半年著名的Sonyrootkit事件。
| 共2頁: 1 [2] 下一頁 | ||||
|


