周夏芳(北京全路通信信號(hào)研究設(shè)計(jì)院有限公司,北京 100073)

周夏芳,女,碩士畢業(yè)于西南交通大學(xué),工程師。研究方向:安全平臺(tái),安全保障,參與項(xiàng)目:DS6-60計(jì)算機(jī)聯(lián)鎖系統(tǒng)開(kāi)發(fā)、DS6-60e全電子計(jì)算機(jī)聯(lián)鎖系統(tǒng)開(kāi)發(fā)、DS6-60計(jì)算機(jī)聯(lián)鎖系統(tǒng)安全認(rèn)證、DS6-60e全電子計(jì)算機(jī)聯(lián)鎖系統(tǒng)安全認(rèn)證.獲取專利:一種用于軌道交通區(qū)域聯(lián)鎖和站間通信的系統(tǒng)(2012,ZL.2009.1.0158488.X);一種二乘二取二主備控制切換系統(tǒng)和方法(2012,ZL.2009.1.0235437.2);一種二乘二取二系統(tǒng)的同步方法和設(shè)備(2012,ZL.2009.1.0237497.8).
操作系統(tǒng)是一種為應(yīng)用程序提供服務(wù)的系統(tǒng)軟件,它位于底層硬件和上層應(yīng)用軟件之間,負(fù)責(zé)系統(tǒng)資源的分配與管理。在安全控制系統(tǒng)中使用操作系統(tǒng),能為系統(tǒng)開(kāi)發(fā)、產(chǎn)品功能實(shí)現(xiàn)帶來(lái)巨大便捷。
然而使用操作系統(tǒng)也會(huì)帶來(lái)很多的問(wèn)題[1]。首先,很多通用的操作系統(tǒng)不具備完整清晰的行為定義,使得應(yīng)用設(shè)計(jì)人員無(wú)法明確操作系統(tǒng)在具體應(yīng)用環(huán)境中的行為;其次,操作系統(tǒng)的類型很多,同一類型下的操作系統(tǒng)往往也有不同選擇,操作系統(tǒng)的行為是否能夠滿足應(yīng)用的要求需要慎重考慮;最后,操作系統(tǒng)和其他類型的已開(kāi)發(fā)的軟件組件不同,它是計(jì)算機(jī)硬件和應(yīng)用軟件的接口。操作系統(tǒng)向應(yīng)用提供的服務(wù)失效,不可避免會(huì)導(dǎo)致應(yīng)用軟件的失效,而在大多數(shù)情況下,應(yīng)用軟件無(wú)法對(duì)此進(jìn)行防御,有時(shí)必須依靠硬件的防御機(jī)制來(lái)應(yīng)對(duì)操作系統(tǒng)的失效。
本文根據(jù)參考文獻(xiàn)[2,3],描述了一種在安全控制系統(tǒng)中采用通用操作系統(tǒng)的分析方法及標(biāo)準(zhǔn)。
C1.操作系統(tǒng)的行為應(yīng)被準(zhǔn)確定義,從而盡可能避免由于應(yīng)用軟件的設(shè)計(jì)人員對(duì)操作行為的誤解而引入的風(fēng)險(xiǎn);
C2.操作系統(tǒng)各方面的行為必須適合于安全應(yīng)用;
C3.操作系統(tǒng)應(yīng)具備足夠的可靠性。
本文以Linux操作系統(tǒng)為例,分別對(duì)特定操作系統(tǒng)如何滿足C1、C2、C3標(biāo)準(zhǔn)進(jìn)行具體闡述。
操作系統(tǒng)的行為可分為功能、實(shí)時(shí)性、容量等多方面[3]。應(yīng)用設(shè)計(jì)人員必須準(zhǔn)確理解操作系統(tǒng)行為,才能在操作系統(tǒng)支持下完成上層應(yīng)用軟件的正確開(kāi)發(fā)。
系統(tǒng)性的測(cè)試能發(fā)現(xiàn)大多數(shù)由于應(yīng)用設(shè)計(jì)人員對(duì)操作系統(tǒng)行為誤解帶來(lái)的軟件缺陷,但不一定能找出所有這樣的缺陷。因此,通過(guò)對(duì)操作系統(tǒng)行為的完整定義,使得應(yīng)用設(shè)計(jì)人員能夠準(zhǔn)確的理解操作系統(tǒng)行為,對(duì)整系統(tǒng)的功能正確性至關(guān)重要。
操作系統(tǒng)行為的定義通常有如下形式:完整的用戶手冊(cè),包括所有的接口函數(shù)定義、正常及異常執(zhí)行時(shí)的系統(tǒng)反應(yīng)等。或者,操作系統(tǒng)源代碼是開(kāi)放的,并具備良好的可讀性,應(yīng)用設(shè)計(jì)人員可以通過(guò)代碼本身來(lái)理解操作系統(tǒng)的行為。
對(duì)于Linux操作系統(tǒng),可以找到這樣一些證據(jù)來(lái)證明其行為經(jīng)過(guò)明確定義,可以被應(yīng)用設(shè)計(jì)人員很好地理解。
1)Linux遵循POSIX[4]標(biāo)準(zhǔn)。POSIX(Portable Operating Sy stem In ter face for Com pu ting Sy stem s)是由IEEE和ISO/IEC開(kāi)發(fā)的標(biāo)準(zhǔn)。該標(biāo)準(zhǔn)描述了操作系統(tǒng)的調(diào)用服務(wù)接口,用于保證編制的應(yīng)用程序源代碼可以在多種操作系統(tǒng)上移植。
2)L in u x遵 循 LSB標(biāo) 準(zhǔn)。LSB(L in u x Standard Base)可以說(shuō)是Linux的工業(yè)標(biāo)準(zhǔn),它保證了Linux發(fā)行版同Linux應(yīng)用程序之間的良好結(jié)合。它是一個(gè)二進(jìn)制接口規(guī)范,使應(yīng)用程序在系統(tǒng)間遷移時(shí)不用重新編譯,保證了應(yīng)用程序在不同Linux發(fā)行版上都具有兼容性。
3)很多關(guān)于L inu x操作系統(tǒng)及操作系統(tǒng)內(nèi)核研究的著作,如文獻(xiàn)[5]等,有利于開(kāi)發(fā)者對(duì)操作系統(tǒng)行為以及接口的理解。
4)Linux文檔計(jì)劃(LPD)提供了許多有用的Linux操作系統(tǒng)文檔資源[6]。
5)由于L inux是開(kāi)源的操作系統(tǒng),因此如果發(fā)現(xiàn)有不清楚的行為,可以在論壇或向LDP尋求幫助。
此外,還有對(duì)L in u x應(yīng)用技能的認(rèn)證——LPI認(rèn)證[7],它是站在一個(gè)中立的、第三方的角度,對(duì)L in ux廣泛和通用的技術(shù)水平進(jìn)行考核。應(yīng)用設(shè)計(jì)人員具備LPI認(rèn)證資質(zhì),可以更好地保證產(chǎn)品設(shè)計(jì)者準(zhǔn)確理解使用的操作系統(tǒng)行為。
根據(jù)參考文獻(xiàn)[3],并結(jié)合操作系統(tǒng)的特性,可以從以下幾方面考慮操作系統(tǒng)是否適合于安全應(yīng)用。
3.1.1 分區(qū)
如果安全相關(guān)應(yīng)用需要多個(gè)進(jìn)程協(xié)同工作,操作系統(tǒng)應(yīng)能提供對(duì)資源進(jìn)行安全管理的手段。這就是分區(qū)。分區(qū)能防御由于共享資源帶來(lái)的風(fēng)險(xiǎn),包括以下內(nèi)容。
空間上的分區(qū):能防止一個(gè)分區(qū)改變另一個(gè)分區(qū)的數(shù)據(jù)或軟件,屏蔽另一分區(qū)輸出設(shè)備的命令。
時(shí)間上的分區(qū):能保證一個(gè)進(jìn)程一定能獲得CPU處理時(shí)間,一定能訪問(wèn)到某個(gè)物理設(shè)備,而不會(huì)受其他進(jìn)程的影響。
L in u x系統(tǒng)在空間上的分區(qū)體現(xiàn)為內(nèi)核空間和用戶空間的劃分,時(shí)間上的分區(qū)則體現(xiàn)在其內(nèi)核調(diào)度策略上。
3.1.2 自發(fā)行為
操作系統(tǒng)會(huì)有一些非應(yīng)用命令引起的自發(fā)行為(如每天定時(shí)執(zhí)行,或由于某些內(nèi)部限制到達(dá)后執(zhí)行的清掃功能)。這些行為會(huì)增加應(yīng)用調(diào)用操作系統(tǒng)服務(wù)的響應(yīng)時(shí)間。影響較大時(shí),可能會(huì)導(dǎo)致輸入請(qǐng)求響應(yīng)時(shí)間的偏差,或系統(tǒng)吞吐量的變化。安全應(yīng)用設(shè)計(jì)時(shí),應(yīng)考慮操作系統(tǒng)的自發(fā)行為是否會(huì)對(duì)整系統(tǒng)性能產(chǎn)生不可接受的影響。
L in u x并不存在過(guò)多的自發(fā)行為,它其中的一個(gè)自發(fā)行為是:每次寫(xiě)文件時(shí)并不直接寫(xiě)入磁盤(pán),而是寫(xiě)入磁盤(pán)高速緩存中對(duì)應(yīng)頁(yè)(寫(xiě)過(guò)的頁(yè)面被標(biāo)記為臟頁(yè))。內(nèi)核線程會(huì)定期將臟頁(yè)更新到磁盤(pán),同時(shí)將更新后的臟頁(yè)回收。這種自發(fā)行為可以在文件打開(kāi)時(shí)選擇禁止,繞開(kāi)磁盤(pán)高速緩存,直接與塊設(shè)備打交道,但應(yīng)該考慮到磁盤(pán)I/O性能會(huì)因此降低。3.1.3 未使用功能的可移除性
對(duì)于任何安全相關(guān)應(yīng)用來(lái)說(shuō),對(duì)于操作系統(tǒng)中未使用的功能都希望可以移除,以防止對(duì)應(yīng)用產(chǎn)生不可預(yù)期影響。由于L in u x是以源碼形式提供的,它可以做到只有滿足安全應(yīng)用需要的設(shè)備驅(qū)動(dòng)和文件系統(tǒng)才被封裝進(jìn)內(nèi)核。
系統(tǒng)根據(jù)對(duì)實(shí)時(shí)性要求的不同可分為硬實(shí)時(shí)系統(tǒng)、軟實(shí)時(shí)系統(tǒng)和非實(shí)時(shí)系統(tǒng)。
硬實(shí)時(shí)系統(tǒng)有一個(gè)剛性、不可改變的時(shí)間限制,要求系統(tǒng)要確保任務(wù)執(zhí)行最壞情況下的服務(wù)時(shí)間,即對(duì)于實(shí)時(shí)事件響應(yīng)時(shí)間的截止期限必須得到滿足,否則會(huì)破壞系統(tǒng)造成致命的錯(cuò)誤;
軟實(shí)時(shí)系統(tǒng)也有一個(gè)時(shí)間限制,并希望滿足該時(shí)限的要求。但它是一個(gè)柔性的,并不是強(qiáng)制的。它可以容忍偶然的超時(shí)錯(cuò)誤,即使過(guò)了最后時(shí)限,任務(wù)的執(zhí)行仍然是有意義的,不會(huì)給系統(tǒng)帶來(lái)致命的錯(cuò)誤;
非實(shí)時(shí)系統(tǒng)對(duì)時(shí)間沒(méi)有限制,哪怕是最高優(yōu)先級(jí)任務(wù)開(kāi)始執(zhí)行的最后時(shí)限也無(wú)法得到保障。
標(biāo)準(zhǔn)L inux是多任務(wù)多用戶的分時(shí)操作系統(tǒng),盡管系統(tǒng)通過(guò)為實(shí)時(shí)任務(wù)賦予較高優(yōu)先級(jí)使得系統(tǒng)具有一定的實(shí)時(shí)性,但對(duì)于大多數(shù)時(shí)限要求較高的實(shí)時(shí)性任務(wù)來(lái)說(shuō),還是遠(yuǎn)遠(yuǎn)達(dá)不到其對(duì)于時(shí)間約束的要求。Linux中影響實(shí)時(shí)性的機(jī)制主要有以下幾方面。
1)關(guān)中斷。在系統(tǒng)調(diào)用中,為了保護(hù)臨界資源,Linux處于內(nèi)核臨界區(qū)時(shí),中斷會(huì)被系統(tǒng)屏蔽,這就意味著如果當(dāng)前的進(jìn)程正處于臨界區(qū),即使它的優(yōu)先級(jí)較低,也會(huì)延遲高優(yōu)先級(jí)的中斷請(qǐng)求。
2)進(jìn)程調(diào)度。Linux內(nèi)核是不可搶占的,采用基于固定時(shí)間片的可變優(yōu)先級(jí)調(diào)度。這對(duì)一些要求高優(yōu)先級(jí)進(jìn)程立即搶占CPU的實(shí)時(shí)應(yīng)用是不能滿足要求的。
3)最小時(shí)鐘分辨率。可根據(jù)特定應(yīng)用的實(shí)時(shí)調(diào)度要求調(diào)整L in ux最小時(shí)鐘分辨率,但需考慮由于Linux的進(jìn)程切換以及頻繁時(shí)鐘中斷導(dǎo)致系統(tǒng)開(kāi)銷(xiāo)。
如果系統(tǒng)對(duì)實(shí)時(shí)性要求較高,可以考慮采用RTLinux。它是Linux中的一種實(shí)時(shí)操作系統(tǒng),它在L inux內(nèi)核與硬件之間增加了一個(gè)虛擬層,構(gòu)筑了一個(gè)小的、時(shí)間上可預(yù)測(cè)的、與Linu x內(nèi)核分開(kāi)的實(shí)時(shí)內(nèi)核,使得在其中運(yùn)行的實(shí)時(shí)進(jìn)程能夠滿足硬實(shí)時(shí)要求。
操作系統(tǒng)的容量要求指操作系統(tǒng)應(yīng)可滿足特定應(yīng)用所需要的資源。
系統(tǒng)資源是由操作系統(tǒng)內(nèi)核來(lái)進(jìn)行統(tǒng)一分配和管理的,例如進(jìn)程表、文件描述符表等。L in u x的表容量通常足夠大,并不會(huì)對(duì)安全相關(guān)應(yīng)用帶來(lái)問(wèn)題。
軟件的健壯性是指軟件在異常輸入或苛刻環(huán)境條件下能保持正常工作的程度。它有兩層含義:一是差錯(cuò)屏蔽能力,指發(fā)生異常時(shí)系統(tǒng)能不出錯(cuò)的能力;二是差錯(cuò)恢復(fù)能力,指發(fā)生錯(cuò)誤后重新運(yùn)行時(shí),恢復(fù)到?jīng)]有發(fā)生錯(cuò)誤之前狀態(tài)的能力。
操作系統(tǒng)的健壯性可以通過(guò)3類異常來(lái)考慮:用戶進(jìn)程的非預(yù)期行為、外設(shè)失效、硬件平臺(tái)(CPU或內(nèi)存)的失效。
L in u x對(duì)健壯性的要求可通過(guò)以下特性得到滿足。
1)L inu x的系統(tǒng)調(diào)用要對(duì)入?yún)⑦M(jìn)行檢查,入?yún)㈠e(cuò)誤時(shí)轉(zhuǎn)入異常處理邏輯,因此非法調(diào)用不會(huì)導(dǎo)致內(nèi)核崩潰;Linux內(nèi)核由虛擬內(nèi)存管理系統(tǒng)保護(hù),用戶進(jìn)程不能直接訪問(wèn)內(nèi)核空間;內(nèi)核會(huì)跟蹤用戶進(jìn)程的異常并向用戶進(jìn)程產(chǎn)生錯(cuò)誤報(bào)告。
2)外設(shè)失效的解決辦法依賴于外設(shè)驅(qū)動(dòng)。外設(shè)失效多表現(xiàn)為響應(yīng)超時(shí),這時(shí)通常會(huì)向用戶進(jìn)程返回一個(gè)錯(cuò)誤信息。
3)如果內(nèi)核本身產(chǎn)生了異常(如訪問(wèn)到非法內(nèi)存,或CPU計(jì)算錯(cuò)誤等),操作系統(tǒng)不會(huì)恢復(fù),所有應(yīng)用進(jìn)程都會(huì)被終止。內(nèi)核會(huì)嘗試輸出一個(gè)錯(cuò)誤信息。內(nèi)核不會(huì)自重啟,如果應(yīng)用有重啟要求應(yīng)采用其他解決辦法,如使用看門(mén)狗。
操作系統(tǒng)的可靠性指操作系統(tǒng)支持應(yīng)用軟件穩(wěn)定運(yùn)行的能力。根據(jù)參考文獻(xiàn)[3],可以從以下幾方面來(lái)搜集操作系統(tǒng)可靠性的證據(jù)。
L in u x被廣泛使用于PC機(jī)、服務(wù)器和嵌入式系統(tǒng)。根據(jù)Linux Cou ters Project[8]的統(tǒng)計(jì),約12萬(wàn)L in u x用戶在該網(wǎng)站進(jìn)行了注冊(cè)登錄。由此得出的估算數(shù)字是,世界各地共約有6 400萬(wàn)的Linux用戶。
應(yīng)盡量選擇已具備可信、完整的測(cè)試報(bào)告的操作系統(tǒng)。由于操作系統(tǒng)的復(fù)雜性,通常較難以搜集完整的測(cè)試證據(jù)。對(duì)于特定的應(yīng)用,至少應(yīng)結(jié)合系統(tǒng)的具體功能進(jìn)行完整的測(cè)試。
目前了解到的部分Linux測(cè)試內(nèi)容如下。
1)LTP(Linux Test Project)對(duì)Linux可靠性、健壯性、穩(wěn)定性的測(cè)試。
2)LSB工作組對(duì)Linux發(fā)行版是否符合LSB標(biāo)準(zhǔn)進(jìn)行的測(cè)試。
3)BA LLISTA計(jì)劃對(duì)Lin ux健壯性的測(cè)試。測(cè)試結(jié)果參見(jiàn)參考文獻(xiàn)[9]。
如具備條件,可以對(duì)操作系統(tǒng)的軟件質(zhì)量進(jìn)行分析,或搜集相關(guān)分析證據(jù)。參考文獻(xiàn)[10]對(duì)Linux內(nèi)核軟件質(zhì)量進(jìn)行了初步的分析。
針對(duì)通用操作系統(tǒng)在安全控制系統(tǒng)中的適用性,本文描述了一種通用的分析方法及衡量標(biāo)準(zhǔn),并以L in u x操作系統(tǒng)為例,說(shuō)明了特定操作系統(tǒng)滿足該標(biāo)準(zhǔn)的論證方法。然而除了對(duì)操作系統(tǒng)的適用性進(jìn)行通用的分析,還應(yīng)結(jié)合具體應(yīng)用,對(duì)使用的操作系統(tǒng)功能進(jìn)行失效分析,并針對(duì)可能的風(fēng)險(xiǎn)提出具體失效防御措施。
[1] Pumfrey, D.J. The Principled Design of Computer System Safety Analyses[M]. DPhil Thesis, University of York,1999.
[2] Civil Aviation Authority, Safety Regulation Group, Requirements for the Use of Operating Systems in Satety Related Systems[R]. report OS01, Parts 1 and 2, 1998.
[3] CAP 670, Air Traffic Services Safety Requirement[S]. section SW01 “Regulatory Objectives for Software Assurance in ATS Equipment”,Civil Aviation Authority, Satefy Regulation Group ,2012.
[4] ISO/IEC 9945-1, Information Technology Portable Operating System Interface(Posix)[S]. Part1: System Application Program Interface (API) [C Language], 1996.
[5] D P. Bovet & M Cesati. Understanding the Linux Kernel[M]. O’Reilly & Associates Inc, 2001.
[6] http://www.linux.org/docs/index.html
[7] http://www.lpi.org
[8] http://linuxcounter.net
[9] Koopman P. Comparing the Robustness of POSIX Operating Systems[J]. Proc. 29thAnnual Symposium on Fault Tolerant Computer Systems,15-18 June 1999, Madison, Wisconsin.
[10] H.R. Pierce. Preliminary Assessment of Linux for safety related systems[R]. Research Report 011, 2002.