當(dāng)前位置:首頁 > 嵌入式 > 嵌入式教程
[導(dǎo)讀]基于RT-Linux防危保障機(jī)制的實驗?zāi)P?

摘要:隨著嵌入式實時系統(tǒng)在安全關(guān)鍵系統(tǒng)中日益廣泛的應(yīng)用,其軟件不但要保護(hù)嵌放式實時系統(tǒng)的功能性和時間限制,對其安全性、穩(wěn)定性和可靠性的要求也大大提高。軟件錯誤的比例大大高于硬件錯誤,軟件錯誤可能引起硬件誤操作,進(jìn)而直接威脅系統(tǒng)安全。使用防危核可有效防止關(guān)鍵設(shè)備誤操作。本文以RT-Linux實時操作系統(tǒng)為平臺,對十字路口交通燈控制建立安全實驗模型,硬件防危核實現(xiàn)技術(shù),為防危保障探索新的實現(xiàn)途徑。

    關(guān)鍵詞:防危核 安全核 實時系統(tǒng) 防危策略

早在19世紀(jì)70年代,為保證系統(tǒng)中的敏感信息不被非法用戶惡意破壞和非法訪問,Roger Schell和Mitre等人提出了安全核(security kernel)的概念。安全核將系統(tǒng)中的軟件隔離為可信的和不可信的兩部分,由可信賴信號負(fù)責(zé)對不可信部分進(jìn)行審核,以保證不可信部分不會對敏感數(shù)據(jù)進(jìn)行非法和錯誤的訪問。安全核的技術(shù)在信息安全領(lǐng)域中取得了成功并得到廣泛的應(yīng)用。在安全核基礎(chǔ)上,Rushby等人又進(jìn)一步提出了防危核(safety kernel)的概念,用于防止軟件對安全關(guān)鍵設(shè)備的非法訪問,從而保障系統(tǒng)安全。防危核由一組防危策略和隔離組成,因此,防危策略的完備性和低開銷是防隱核可靠和高效的關(guān)鍵。現(xiàn)在,對防危核的研究還處于初級階段,本文介紹我們基于RT-Linux實現(xiàn)的隊危核。實驗結(jié)果表明了該方案的有效性和可行性。

1 防危核技術(shù)

防危核關(guān)心的是如何保護(hù)設(shè)備不被非法訪問,以避免因?qū)υO(shè)備的誤操作引起的重大生命財產(chǎn)損失和環(huán)境破壞。防危核把受保護(hù)設(shè)備與系統(tǒng)中的其它部分隔離,通過實施防危策略(safety policy)對這些設(shè)備的訪問進(jìn)行特殊控制。凡是對受保護(hù)設(shè)備的訪問,都必須經(jīng)過危核的審查,合法者予以支持;反之,則采取相應(yīng)的出錯處理措施,維護(hù)系統(tǒng)的防危特性,這樣就能很好地避免軟件故障造成的災(zāi)難后果。從應(yīng)用軟件的角度來看,防危核的原理如圖1所示。在工程應(yīng)用中,要保證危核的有效性,必須遵循下列3項規(guī)則。

(1)短小精練

為了不影響系統(tǒng)的性能,防危核應(yīng)盡可能小,為此系統(tǒng)所有的防危核策略均由防危核為實施是不現(xiàn)實的。采用將防危策略放在防危核外部的防危策略庫中的方法,縮小防危核的大小主,防危核在防危處理時訪問防危策略庫,以獲取相應(yīng)防危策略。

(2)完備性

完備性要求,不通過防危核主體就不能對客體進(jìn)行任何訪問操作。它表明對設(shè)備的任何訪問請求都必須通過防危核的驗證。如果系統(tǒng)中存在其它組件可以繞開防危核訪問設(shè)備,顯然安全將無法得到保障。所以采用了防危核技術(shù)的系統(tǒng)必須要保證防危核對設(shè)備的專一控制。

(3)通用性

通用性指防危核模塊的基本結(jié)構(gòu)不依賴于任何特定的操作系統(tǒng)和設(shè)備,只需要操作系統(tǒng)和設(shè)備滿足防危核的接口要求,并修改策略庫,就可以將防危核軟件應(yīng)用到任何操作系統(tǒng)和設(shè)備中。

2 開發(fā)平臺RT-Linux OS構(gòu)架與特征

通常,安全關(guān)鍵系統(tǒng)對實時性有嚴(yán)格要求,我們選擇RT-Linux操作系統(tǒng)為安全實驗?zāi)P偷拈_發(fā)平臺。

RT-Linux是美國NMT大學(xué)對標(biāo)準(zhǔn)Linux的一個實時擴(kuò)展版本,其結(jié)構(gòu)如圖2所示。它實際上是給原Linux內(nèi)核打了實時補(bǔ)丁,打了補(bǔ)丁的Linux內(nèi)核由兩部分組成:RT-Linux和Linux。在RT-Linux內(nèi)核實時應(yīng)用(任務(wù))則是一種可加載的內(nèi)核模塊,具有高的優(yōu)先級。另外,所有的中斷都先由RT-Linux來處理,之后才由標(biāo)準(zhǔn)的內(nèi)核來處理。非實時任務(wù)通過RT-Linux提供的FIFO(一種透明的管道)與實時任務(wù)通信。

RT-Linux可以提供應(yīng)用程序的硬實時保證。所謂“硬實時”是區(qū)別“軟實時”而言的。硬實時對滿足時限的要求比軟實時嚴(yán)格,通常硬實時的系統(tǒng)響應(yīng)時間在ms或μs級,而軟實時對其響應(yīng)時間的要求沒有那么嚴(yán)格。硬實時工作通常指超過時限要求就會造成嚴(yán)重?fù)p害的工作,而軟實時即使超過時限也不會帶來嚴(yán)重后果。以核能電廠和看VCD為例,用在核能電廠的實時操作系統(tǒng),如果超出時限可能會導(dǎo)致嚴(yán)重的損害,然而VCD播放器超出時限只不過讓使用者感覺不舒服而已。所以前者是硬實時,后者是軟實時。

這樣一種Linux實時化方案,對原Linux改動最小,又能充分利用標(biāo)準(zhǔn)Linux的全部特性,從而能滿足實時系統(tǒng)防危核控制模型研究的諸多要求,因此,NMT RT-Linux是本安全模型研究的最佳實驗平臺。

3 Linux平臺的其它使用資源

通常,基于RT-Linux的應(yīng)用程序由兩部分組成:一部分運(yùn)行在Real-Time下,另一部分運(yùn)行在標(biāo)準(zhǔn)的Linux下。運(yùn)行在Real-Time下的任務(wù)是實時任務(wù),它作為Linux的內(nèi)核模塊(Module)被加載到Linux內(nèi)核中,也就是它運(yùn)行于Linux內(nèi)核態(tài),因此需要使用Linux內(nèi)核態(tài)資源。本控制模型系統(tǒng)中的防危核正是作為實時任務(wù)運(yùn)行于Linux內(nèi)核態(tài),而十字路口交通燈控制設(shè)備運(yùn)行于標(biāo)準(zhǔn)Linux下??刂圃O(shè)備任務(wù)采用Linux的TCL/TK圖形編程語言編程,以友好、形象、直觀的界面模擬防危核對十字路口交通燈的控制。下面將分別介紹上述資源。

3.1 內(nèi)核模塊加載機(jī)制

Linux提供的可加載內(nèi)核模塊(Module)是Linux內(nèi)核支持的動態(tài)可加載模塊,它們是核心的一部分;但是并沒有編譯到核心里面去,只是一個目標(biāo)文件,可根據(jù)需要在系統(tǒng)啟動后動態(tài)地加載或卸載,Linux中大多數(shù)設(shè)備驅(qū)動程序或文件系統(tǒng)都做成這樣的模塊。超級用戶可以通過insmod和rmmod命令分別載入和卸載模塊。核心也可在需要時,請求守護(hù)進(jìn)程(kerneld)載入和卸載模塊。這種方式可以減小核心代碼的規(guī)模,使核心配置更為靈活,并且用戶不必每次修改后都重新編譯核心代碼和啟動系統(tǒng)。

一旦Linux模塊載入核心后,就成為核心代碼的一部分。它與其它核心代碼的地位是相同的。當(dāng)模塊載入系統(tǒng)核心時,系統(tǒng)修改核心中的符號表,將新裁入模塊提供的資源和符號加載核心符號表中,新載入的模塊可以訪問已載入的模塊提供的資源為自己服務(wù)。

3.2 TCL/TK圖形編程語言

本系統(tǒng)中的圖形用戶界面采用TCL/TK圖形編程語言,使界面友好、形象、直觀。TCL是Tool Control Language(工具控制語言)的縮寫。TK是TCL“圖形工具箱”的擴(kuò)展,它提供各種標(biāo)準(zhǔn)的GUL接口,以利于迅速進(jìn)行高級應(yīng)用程序開發(fā)。

TCL/TK是一種解釋執(zhí)行的腳本語言,應(yīng)用中通常將嵌入到C程序中?!靶∏?、易學(xué)、高效、跨平臺執(zhí)行”是TCL語言特點的集中體現(xiàn)。實際上,TCL不僅僅在開發(fā)小的應(yīng)用程序上有其快速、可維護(hù)性強(qiáng)等優(yōu)勢,在大型應(yīng)用系統(tǒng)方面,如操作系統(tǒng)及網(wǎng)絡(luò)管理、測試系統(tǒng)、自控、仿真、可視化應(yīng)用及計算機(jī)輔助設(shè)計等方面都有豐富的應(yīng)用成果。

4 防危核實驗原型的設(shè)計與實現(xiàn)

圖3為以交通燈控制為模型的防危核系統(tǒng)體系結(jié)構(gòu)。

由圖3可以看出,整個系統(tǒng)由四個部分組成:防危核、模擬設(shè)備、設(shè)備控制器、命令文件。防危核作為RT-Linux的實時任務(wù),與模擬設(shè)備、設(shè)備控制器間的通信采用RT-Linux提供的實時FIFO;而模擬設(shè)備和設(shè)備控制器間的通信使用Linux提供的非實時命名管道。下面仔細(xì)分析各模擬所提供的功能。2⑤⑥⑦sΔδΛΔωω·αγβθθθ→→→→ττ 防危核模塊的設(shè)計和實現(xiàn)

系統(tǒng)在運(yùn)行時先通過命令insmod將防危核動態(tài)加載到Linux內(nèi)核中,于是它便一直運(yùn)行內(nèi)核態(tài)。當(dāng)不需要時再用命令rmmod手動卸載。這種方式下會對操作系統(tǒng)內(nèi)核的基本功能產(chǎn)生任何影響,同時又可以保證demo系統(tǒng)的實時性。

    防危核分為主模塊和命令檢測模塊。主模塊負(fù)責(zé)接收設(shè)備控制器傳來的設(shè)備命令和模擬設(shè)備發(fā)送的設(shè)備狀態(tài),然后根據(jù)命令參數(shù)的不同情況進(jìn)行相應(yīng)的處理。如果用戶要求命令不需要通過防危核驗證,則直接將命令發(fā)送到模擬設(shè)備;如果用戶要求命令通過防危核驗證,則主模塊將調(diào)用命令檢測模塊進(jìn)行命令的合法性檢測,命令檢測模塊以函數(shù)形式存在并且按照交通燈的防危策略而設(shè)計。函數(shù)名為int SafetyDetect(DevState CurrentState,SourceCmdNewCom),函數(shù)返回值為命令判斷結(jié)果。如果驗證設(shè)備命令合法,則主模塊將設(shè)備命令及返回值一起發(fā)送到模擬設(shè)備,模擬設(shè)備據(jù)此改變設(shè)備狀態(tài);如果驗證設(shè)備操作命令非法,則主模塊向設(shè)備控制器返回命令檢測模塊的返回值,設(shè)備當(dāng)前的狀態(tài)不改變。

為使防危核盡可能小并具有通用性和擴(kuò)展性,將含有防危策略的命令檢測模塊以函數(shù)的形式存在于防危策略庫中,當(dāng)防危核需要防危處理時,便到訪問策略庫中調(diào)用此相關(guān)函數(shù)。若設(shè)備改變,則只需向策略庫中添加或修改相應(yīng)設(shè)備的防危策略。另外,防危核作為內(nèi)核模塊,采用內(nèi)核模塊的編寫方式編寫,模塊中只能使用系統(tǒng)調(diào)用函數(shù)。

下面定義以交通燈為模型的防危系統(tǒng)的防危策略。

返回值=0;

/*表明經(jīng)防危核驗證為正確命令*/

返回值=1;

/*命令經(jīng)防危核直接傳送到模擬設(shè)備而未經(jīng)過安全檢測模塊驗證,模擬設(shè)備狀態(tài)根據(jù)此值改變*/

返回值=2;

/*當(dāng)前設(shè)備狀態(tài)驗證失敗,失敗原因不明。

措施:模擬設(shè)備保持當(dāng)前狀態(tài)不變*/

返回值=3;

/*同一個方向有多個信號燈同時開啟。

措施:所有交通燈都關(guān)閉,然后在收到新的命令前設(shè)備執(zhí)行缺省命令序列,此處由模擬設(shè)備接到“3”時直接處理*/

返回值=4;

/*四個方向同時為黃燈或綠燈。

措施:系統(tǒng)恢復(fù)到初始狀態(tài)。在收到新的命令前設(shè)備執(zhí)行缺省狀態(tài)*/

反回值=5;

/*命令驗證失敗,失敗原因不明,

措施:模擬設(shè)備保持當(dāng)前狀態(tài)不變*/

返回值=6;

/*信號燈保持當(dāng)前狀態(tài)的時間短于最短時間(<2s),

措施:模擬設(shè)備自動延遲(Sleep(Time))顯示此命令*/

返回值=7;

/*使同一個方向有多個信號燈同時開啟的信號燈命令錯誤。

措施:不執(zhí)行此命令,保持當(dāng)前信號燈狀態(tài)*/

返回值=8;

/*命令的執(zhí)行將會使信號燈變化的順序不正確。

措施:不執(zhí)行此命令,保持當(dāng)前信號燈狀態(tài)*/

返回值=9;

/*四個方面同時為黃燈或綠燈的命令。

措施:不執(zhí)行此命令,保持不前信號燈狀態(tài)*/

4.2 模擬設(shè)備模塊

防危核系統(tǒng)中以十字路口交通燈模擬外部設(shè)備。當(dāng)經(jīng)防危驗證設(shè)備命令合法時,此模擬接受防危核傳入的真實設(shè)備命令int RealCmd(),并向防危核返回設(shè)備當(dāng)前最新狀態(tài)。用圖形方式形象、直觀地顯示設(shè)備本身的實時狀態(tài)(交通燈顏色的變化)、模擬設(shè)備當(dāng)前接收的命令和命令驗證結(jié)果(合法或非法命令,對非法命令顯示出錯原因)。

該進(jìn)程中設(shè)有三個線程,其中第一個線程專門用于讀管道FIFO6(實時管道)獲取防危核發(fā)送的控制命令,第二個線程讀管道m(xù)yfifo(非實時管道)獲取命令控制器發(fā)送的設(shè)備控制命令,第三個線程用TCL/TK腳本語言實現(xiàn)模擬設(shè)備形象、美觀的圖形顯示功能。當(dāng)模擬設(shè)備啟動后,自動進(jìn)行初始化并調(diào)用缺省的交通燈控制命令序列完成基本操作,直以有來自設(shè)備控制和防危核的設(shè)備控制命令為止。若交通燈的顯示時間超過一定時間,則強(qiáng)制設(shè)備執(zhí)行缺省的設(shè)備狀態(tài)。

4.3 設(shè)備控制器模塊

模擬設(shè)備控制器作為一個進(jìn)程獨立運(yùn)行,控制器先從命令文件中獲取命令參數(shù),然后根據(jù)命令的防危等級分別向模擬設(shè)備和防危核發(fā)送設(shè)備操作命令(包括正常的和不正常的操作命令)。命令中設(shè)置了時間控制參數(shù),控制器按此時間間隔值發(fā)送設(shè)備命令。

4.4 設(shè)備命令文件

設(shè)備命令文件中存放了各種對交通燈的操作命令,包括正常和不正確命令。命令執(zhí)行有三種防危等級可供選擇:第一種,不通過防危核的命令,操作命令直接由設(shè)備控制器發(fā)送到模擬設(shè)備;第二種,通過防危核并驗證其正確性的命令,此時防危核將調(diào)用防危策略庫的相應(yīng)防危策略驗證命令,然后將驗證結(jié)果發(fā)送到模擬設(shè)備;第三種,通過防危核但不驗證設(shè)備操作的命令,命令被防危核直接送到模擬設(shè)備。設(shè)計三種等級命令的目的在于,比較是否使用防危核或是否進(jìn)行命令驗證在系統(tǒng)性能和防危性上的差異。

設(shè)備的命令格式為:char SourceCmd="Cmd east-light,Cmd north-light,Cmd west-light,Cmd south-light,int Time,bool Verifiedl,bool Verfied2"。操作命令要對十字路口的12盞交通燈進(jìn)行操作控制。參數(shù)Time指本命令相對于前一條命令延遲多長時間發(fā)送。參數(shù)Verified1=0表示不經(jīng)過防危核驗證直接傳送到設(shè)備的命令;Verified1=1表示要經(jīng)過防危核驗證。Verified2=0表示該命令直接發(fā)送到模擬設(shè)備不經(jīng)過防危核的任何處理;Verified2=1表示該命令要通過防危核。

Struct Cmd

{

char first-light-color;

char second-light-color;

char third-light-color;

}

first-light-color,second-light-color,third-light-color表示每個方向三盞燈的顏色插入相應(yīng)的顏色的圖片。整個圖形界面形象、美觀。

5 實驗系統(tǒng)的測試評價

根據(jù)防危核設(shè)計要求,從防危核的大小、對系統(tǒng)實時性的影響以及完備性三方面對本實驗系統(tǒng)進(jìn)行測試。

①防危核大小:防危核所編譯后的目標(biāo)文件為5KB,相對于RT-Linux內(nèi)核源碼是非常小的。

②時間開銷:將防危核對控制命令驗證所需時間進(jìn)行了200次測試,得出其平均時間僅10μs左右,說明防危核對系統(tǒng)實時性影響非常小。

③完備性:將防危核對第二種控制命令各種情況的防危處理結(jié)果表明,防危核的驗證結(jié)果完全正確。說明滿足防危核完備性要求。

以上對防危核的測試結(jié)果表明,本控制模型完全滿足防危核設(shè)計要求,防危核機(jī)制完全可以在實時操作系統(tǒng)中使用。

結(jié)語

根據(jù)防危核等相關(guān)理論并結(jié)合RT-Linux操作系統(tǒng)本身的特色,本文先從理論上分析了在RT-Linux中實現(xiàn)防危核的可行性,然后通過實際例子實現(xiàn)了基于RT-Linux的防危核,為防危核探索了一種新的實現(xiàn)途徑。最后,通過對實驗系統(tǒng)的測試進(jìn)一步證明防危保障機(jī)制在實時操作系統(tǒng)中完全可行

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉