如何評測軟件系統的安全性 安全性測試
常常被問到這么一個問題:如何評測一個軟件系統到底有多安全?
一個回答是:我們不是有專門的軟件安全評測標準和機構嗎?沒錯,我們有專門的國際標準Common Criteria, ISO/IEC 15408,國家標準GB 18336。有專門的評測中心,如Common Criteria Lab,和中國信息安全產品測評認證中心。
似乎我們只要按照標準提供相應文檔,把軟件交給評測機構,不就行了?但是,事實上真的這么簡單嗎?舉個例子,微軟的Windows 2000系統得到了Common Criteria的EAL4+認證,但是還是有這么多軟件安全補丁發布。問題到底出在什么地方?
我們先看一下Common Criteria是如何評估軟件系統的安全的。首先要確定產品對應的Protection Profile (PP)。一個PP定義了一類產品的安全特性模板。例如數據庫的PP,防火墻的PP等等。然后,根據PP再提出具體的安全功能需求(security functional requirement),如用戶的身份認證是如何實現的。接下來,確定產品的安全對象(secure target),以及它是如何滿足對應的安全功能需求的。
也就是說,Common Criteria主要集中在大方向上的軟件設計上的安全。但是,對于具體的編碼實現,和部署則沒有涉及。而SD3,也就是安全設計(secure designed),安全開發(secure development)和安全部署(secure deployment)的三個環節,哪個出問題都不行。
另一方面,最終的用戶關心的核心問題就是“這個軟件安全嗎”。一個由于設計導致的安全漏洞,和一個由于實現導致的安全漏洞,對用戶的最終影響沒有區別。Common Criteria在針對軟件實現和部署上的評估上的不足,可以是說是CC面對的最大挑戰。另外,Common Criteria要求的文檔之多,評估的周期之長,也極大影響了它在評估面向企業和個人用戶的軟件安全性的有效程度。例如,一個產品的評估周期有時長達 2-3年:等評測結果出來,老產品也要被新產品替代了。軟件測試
評估(并提高)一個軟件系統的安全程度,需要從設計,實現和部署三個環節同時著手。目前,微軟的安全軟件開發周期(SDL)提供了一個基于微軟開發模型的參考解決方案。它并不是一個類似CC的評估測試標準。但是在如何有效的評估軟件實現和部署環節的安全性上(例如 FUZZ測試),大家可以借鑒一下。
原文轉自:http://www.anti-gravitydesign.com