古詩詞大全網 - 成語用法 - 開源軟件安全性如何

開源軟件安全性如何

本文仔細地研究了開源軟件的開發與軟件安全的聯系。關於微軟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事件。普及帶來的安全 微軟公司的Windows桌面操作系統和IE的普及性常被用來解釋缺陷發生率以及破壞發生率。這裏我要告訴妳們壹些真相。對於源代碼封閉,具有產權的操作系統或者網絡瀏覽器來說 ,更高的普及率無疑可能招惹惡意代碼編寫者和其他不速之客的註意。但是如果采用全新的以普及性為關鍵的開發方式,情況就會有所改觀。 開源軟件采納特定軟件片段的門檻很低。由於開源軟件完全不受價格的影響,在我們不斷發展的網絡狀的世界裏,壹個新的操作系統安裝文件的成本可能不會超過壹張空白CDR,只 需花費幾分鐘進行下載。安裝方式不同,甚至購買CD的錢也可以省去。 開源軟件很容易被廣泛接受的特性使得它更容易吸引新的開發者加入某個開源軟件項目。隨著用戶數量的增加,編程人員對項目的興趣也會增加。來自開源軟件的開發者匯成了用 戶群,另外開源軟件很好的利用了編程人員的業務時間,他們沒有時間全力投入某個嚴肅的開發團隊,但是可以利用業務時間搜索和修改各個缺陷和bug。 結果,這些查找最受歡迎的開源軟件缺陷和bug的人數遠遠大於閉源軟件有限的開發隊伍。這壹數字隨著用戶數量的增加而相應增加。查找新的缺陷以進行利用的人數被查找新的缺 陷以進行修正的人數所超越。即使找到缺陷的人自己不寫代碼進行修復,他們也會告訴會進行修復的人。 這壹事態的結果顯而易見,有據可查的微軟對缺陷所做的最快反應,是今年早些時候的WMF庫的補丁,按照微軟安全響應中心總監Debby Fry Wilson的說法,用了大約9-10天。同時 , Mozilla基金會每次按期生產、測試和發布Mozilla Firefox網絡瀏覽器的補丁的間隔不超過壹星期,對於Linux內核的修補時間甚至不用天,而是用小時計算。 這主要歸功於補丁測試廣泛的群眾基礎:Debby Fry Wilson在討論WMF補丁的快速發布時說,測試而非補丁的開發占用了很長壹段時間。我們在閉源軟件沒有廣泛測試能力的情況下 期望它能夠跟上形勢,以及在測試出現問題是經常收到來自測試者本身的傳真是不合理的。開源開發社區擁有數千名測試者,而閉源軟件只有幾十位。 產權軟件缺乏吸引力 產權軟件廠商,如微軟公司,也開始著手調查在工作過程中加入壹些社會力量的可能性,希望這樣可以增強他們的軟件的安全性。他們發現碰了壹些障礙,而且目前來看是無法克 服的。即使采用最大方的類似方法,如使公眾能夠看到源代碼,或者為公眾提供新版本和新補丁進行公開測試也無法達到開源軟件所享受到的透明度。 原因很簡單:用戶群沒有對軟件本身進行相同的投入,軟件是“別人的軟件”,他們無法獲得將來能從廠家獲得回報的承諾。在軟件開發和改進過程中投入的時間和精力完全歸廠 家所有,因此極大的打擊了積極性。 可見與隱藏的較量 開源開發社區所仰仗的軟件安全哲學與閉源產權軟件開發模式所使用的截然不同。隱藏源代碼能夠配合產權軟件廠商將缺陷保守壹定時間,以使編程人員有足夠的時間開發補丁, 這樣通過創立安全的形象保持了市場份額,可是這樣經常導致在某個時間段中某個缺陷橫行,而用戶對他們所處危險狀況壹無所知。開源軟件開發因透明而獲得好處,而不是粉飾 可能發生的安全損失,直到有了補丁以後才為用戶提供保護自己的武器。這些好處是產權軟件無法完全獲得的。