如何評(píng)測(cè)軟件系統(tǒng)的安全性

字號(hào):

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