開放源碼意味著一扇打開的門嗎?
Natalie Walker Whitlock ([email protected])
Casaflora Communications
Natalie Whitlock 討論了封閉式安全性系統的不適宜性和開放源碼解決方案。她論述了 Eric Raymond 的觀點、Microsoft 的 FrontPage 中著名的“後門”、同級評審的概念以及開放源碼所處的兩難境地:沒有人能擔保將檢查所有的一切。然後,她從理論到實際剖析了這個觀點,並與重要的 99v 執行官談論了有關安全開放源碼系統的可行性和普及性。
對某些情況來說,封閉源碼意味著隱藏、保密,因而更安全。但實際上,當今使用的很多最安全的系統都基於開放源碼的模型。
傳統上,保密就意味著安全。您會鎖上自己的屋子、汽車和所有貴重物品。在軟件社區中,您“鎖上”編程源代碼作為保護它免受黑客和競爭者侵襲的一種手段。封閉源碼陣營認為,當系統源碼對所有人開放時,它就不會是真正安全的。保密就是安全,當它應用在其它安全系統時,隱藏源碼能改善安全性。它減緩入侵者的入侵速度,並在發生入侵時使損失最小。另一條理由是:有了可免費獲得的設計,解密高手在編寫攻擊系統的惡意代碼時將更為容易。
公開源碼後的安全性
那麼,開放源碼軟件的安全性又怎樣的呢?根據定義,開放源碼軟件是所有免費分發的、不特定於某個平台的程序或應用程序,而且其中的編程代碼是開放的、可見的。如果其它條件都相同,封閉程序比開放程序更安全嗎?
“回答不是‘不',而是‘可能不'”開放源碼的提倡者和 The New Hacker's Dictionary 與 "The Cathedral and the Bazaar" 的作者 Eric S. Raymond 說。 “封閉源碼並不能導致真正的安全性,而會產生一種虛假的安全感”Raymond 說。“您不知道裡面到底是什麼,您無法驗證它,也無法檢查其編碼人員的人員的設想或真實性。”
在密碼界中,有一句諺語:算法的安全性不應該依賴於它的保密性。這一格言對開放源碼的軟件很適用。
Raymond 說:“公開您的方法將導致更好的安全性這個明顯矛盾的觀點並非計算機軟件所獨有,軍事和外交上的解密者知道這個觀點已有一百年了:依賴編碼方法的保密性而不依賴密鑰的保密性是非常愚蠢的。”
根據 Raymond 和其他開放源碼的擁護者,開放源碼是安全操作系統唯一真正的選擇。首先,無法檢查和驗證封閉源碼應用程序和操作系統的編碼是否安全。公開先前保密的代碼後幾乎總會被發現額外的錯誤和安全性漏洞。另外,封閉的專用代碼在暴露出漏洞或錯誤時,發布可信賴的修訂程序是非常困難的。
就說 2000 年 4 月的事件吧,它曾讓那些 Web 站點管理員和系統管理員嚇得發抖。經過四年之後,人們才發現 Microsoft 程序員在他們流行的 FrontPage Web 服務器軟件中安插了一個後門。這就是事實:軟件代碼以不透明的二進制格式被“隱藏”起來,使得這一安全性缺口在這麼長的時間內都不為大眾所知。
由於開放源碼的軟件保證了“自由讀取、重新分發、修改和使用軟件的權利”,所以隱藏的後門根本不可能逃脫檢測。大多數專家都認為遺漏後門這樣的幾率為零。畢竟,從邏輯上說,有誰會以自己的名譽冒險,在公開使用的源碼中放置一個後門讓別人去發現呢?
“任何將安全性托付給封閉源碼軟件的人都希望在他們的系統中悄悄地安放一個後門,”Open Source Initiative 的總裁 Raymond 說。“Apache 從未有象這樣的行為,而且將來也不會。不論 Linux 還是 BIND 庫、Perl 或任何其它可用的開放源碼核心軟件都不會這樣。”
許多人都來關注
開放源碼的軟件不言而喻的安全性來自於“同級評審”這一從科學界借鑒來的概念。依據 OpenSource.org,Open Source Initiative (OSI) 的官方 Web 站點,開放源碼的軟件“通過支持獨立的同級評審和源代碼的快速演變提高了軟件的可靠性和質量。”
Linux 的基本安全性理論可以歸納為“更多人的關注代表更高的安全性。”換句話說,因為源代碼可供所有人評審,所以全世界眾多的程序員都可以檢測該代碼以尋找安全性弱點。另一方面,封閉源碼應用程序只由那些在關閉的房間內從事專用產品或商業秘密工作的受雇程序員或系統解密高手來審查其弱點。
“封閉源碼表示只有壞家伙才能查找安全性漏洞。而對於開放源碼,好人也可以開始查找安全性漏洞了。”Raymond 說。
Raymond 指出,同級評審的這一許諾促進了開放源碼項目中的安全編碼技術。“甚至由持懷疑態度的其他程序員評審源代碼這一點,就會改變開發人員的行為,”他說。“他們編寫更緊湊、更好更多的無錯系統。”
“在開放源碼的項目中,出錯並且讓整個開發社區和朋友知道是極其令人羞愧的,”Internet Security Systems Inc. 的高級研究員和 UNIX 系統工程師兼顧問 Michael H. Warfield 說。 “在敲擊 Enter 鍵的最後一刻,即完成更改或將補丁發送到其他程序員的冷酷世界,是所能想象到的最漫長的一刻。”
同時致力於開放和封閉源碼開發模型工作的 Warfield 說,在開放源碼的程序員中,對個人責任可追究性有更高的標准,需要更強的專業能力。 Warfield 說:“當源碼及對其的更改呈現在共眾面前讓任何人測試時,確保代碼的正確性以及沒有被任何未知方篡改就成為開發人員的個人職責所在了。”
當在開放源碼中突然出現安全性問題時,會發生什麼呢?“會非常迅速地修復它們。”Raymond 說。只要對比 Microsoft 事件和 "Ping 'O Death" 錯誤,就能得出這一結論。 "Ping 'O Death" 錯誤是一個由發送過大的 ICMP 信息包引起的,這一錯誤在被宣布的幾個小時內就在 Linux 中修復好了。因為同級評審,開放源碼的問題通常會在它們被廣泛利用前就被發現並修正。
開放源碼另一個優點是:軟件實際上隨時間發展並變得更為安全。由於要受到不斷地同級評審,相對於類似的封閉源碼軟件,軟件中發現新弱點的數量將隨時間不斷減少。但是,由於有更多的解密高手在不透明的程序中探尋並查找更隱蔽的錯誤,隨著時間的推移,封閉源碼的軟件將更不安全。
理論與實際的對比
當然,仍有一些持懷疑態度的人。“簡單地開放源碼並不能保證安全性,”計算機顧問和州政府的系統分析員 Craig Willis 說。“與好人在查找弱點一樣,那些壞家伙也在做同樣的事。您可能不應該依賴於‘通過隱藏實現安全性',但是如果攻擊者可以找到一個更容易的目標,它就可以成為您的優勢。”
Network Associates 的首席計算機專家 Lee Badger 反對“許多人來都關注”理論所作的人們都願意測試相當普通的代碼這一假設,他說:“我不能肯定實際情況就是這樣。”
甚至一些開放源碼的提倡者也承認這種進退兩難的境地。GNU 郵件列表管理程序 Mailman 的程序設計者 John Viega 透露,三年來,Mailman 一直有幾個明顯的安全性代碼問題,但是至今沒人捕捉或報告這些錯誤。到 2000 年年中為止,包含這些安全性漏洞的 Mailman 版本已被下載了幾千次,甚至在 Red Hat Professional Linux 版本 6.2 中也包含有這一程序。Viega 說,顯然,每個使用 Mailman 的人都假設別人已經對 Mailman 進行了正確的安全性審查,而事實上是根本沒有人這樣做。
Viega 說:“我們大大地高估了開放源碼在安全性方面所提供的好處,因為高質量的審查並沒有象人們認為的那樣多,而且有許多安全性問題的查找往往比人們想象的要難得多。”
Viega 指出,即使在標識出了 Mailman 中的安全性問題後,仍花了幾個月的時間去修正這些問題,部分原因是因為它是用 Python(而不是更通用的 C)編寫的,部分原因是因為安全性不是核心開發小組當時所關注的問題。
Viega 列出了幾個會阻礙人們評審源代碼的情況,包括象“一團亂麻”那樣的代碼或用不常用的語言編寫的程序。另一個阻礙是人的本性:因為大多數程序員查看源代碼是出於他們自己的利益,而不是出於無私的動機。
有些惡意批評者引用的一個論點是:開放源代碼的編碼技能與查看它的那些人的技能一樣平庸。“許多開發人員除了避免幾個他們所知的危險調用之外,對避免其它問題一無所知。”Viega 說。根據他關於開放源碼神話的文章(請參閱本文稍後的參考資料),開發人員都普遍使用密碼技術,卻以破壞系統安全的方式濫用它;或者使用加密技術,但這些加密技術又太薄弱,很容易被破壞。另一個錯誤是開發人員嘗試使用公用的密碼原語來施行他們自己的協議,卻沒有完全理解密碼協議通常比想的更復雜,並且容易出錯。
Theo de Raadt 是開放源碼操作系統 OpenBSD 的項目負責人,他是另一個質疑同級評審安全網的人。“人們談論的這些關注開放源碼的人 -- 他們是誰?”de Raadt 詢問道。“大多數評審開放源代碼的人是業余愛好者。如果讓他們向您發送一些他們編寫的代碼,他們中的大多數最多只能寫 300 行長的代碼。”他說。“他們根本不是程序員。”
對開放源碼的軟件的另一個抱怨是:大多數錯誤都是在程序已經編譯、測試並分發後才發現的,這不是因為有人提前坐下並查看代碼的漏洞,而是因為有些問題是在使用中才出現的。除了一些例外情況,開放源碼的程序通常依賴用戶報告和公共論壇來發現弱點。
爭論仍在繼續
即使有堅決的反對者,整個業界中仍有許多人擁護開放源碼的模型。事實上,2000 年 8 月 Forrester Research 報告預測:所有傳統的軟件供應商都將在未來四年內需要將它們的專用商業模型改為開放源碼模型。
在這項研究中,Forrester 發現在被訪的 2500 個 99v 經理中,有 56% 當前在使