基于uCOSII的MAC設計與實現
摘 要: 針對嵌入式計算機應用領域中越來越突出的信息安全問題。本文以uCOSII操作系統為基礎,在其上增加了強制訪問控制MAC模塊。模塊參照BLP安全模型,根據uCOSII特性設計出BLP修正模型,實現了對系統的強制存取控制。
關鍵字:強制訪問控制 安全模型 安全操作系統
1 引言
隨著嵌入式計算機應用的日益普及,特別是嵌入式設備不斷的網絡化、智能化,嵌入式計算機的安全就成為一個急待解決的問題。許多嵌入式計算機處理的信息涉及到國家政治經濟安全,工商業情報等,不采取有效的安全防范措施,一旦受到攻擊將造成巨大的損失。
在計算機系統中,安全機制的重要內容就是存取控制。一般存在二種存取控制形式:自主訪問控制和強制訪問控制。
自主訪問控制具有很大的缺陷性。由于它的“自主”能力,從理論上講根本不可能建立對特洛伊木馬的有效防護機制。而強制訪問控制MAC則強制性嚴格規定各個客體屬性,實現了信息的單向流通,可以有效的抵制特洛伊木馬的攻擊。
2 MAC控制模型
2.1 強制訪問控制MAC簡介
在強制訪問控制下,系統中的每個進程,每個文件和每個IPC客體(消息,信號量和共享區域)都被賦予了相應的安全屬性,這些屬性是有安全管理員或者系統自動生成的,是不能隨意改變的。主體對任何客體的訪問要求,必須經過MAC訪問控制模塊的檢測。如圖1所示。
圖1 MAC結構示意圖
2.2 形式化安全模型BLP
本文采用的MAC安全模型將基于改進的BLP模型(Bell-LaPadula Module)的安全策略包括二部分:自主安全策略和強制安全策略。模型認為系統中的活動使系統狀態不斷變化,但是必須保持所有的狀態都是系統安全狀態。由此定義所有系統狀態的轉換規則必須保持簡單安全性,*特性和自主安全性。
與BIBA模型(BIBA Module)相反,BLP模型主要注重保密性控制,控制信息從低安全級傳向高安全級,但是缺少完整性的控制,其“向上寫”規則存在潛在的危險,它不能夠有效的限制隱通道。因此對其規則中所有涉及到可能對客體內容進行改動的操作以更嚴格控制,修改后規則如下:
(O∈b(S:a))=>(fo(O)=fc(S))
(O∈b(S:w))=>(fo(O)=fc(s))
(O∈b(S:r))=>(fo(S)>fc(O))
(O∈b(S:c))=>(fo(O)<fc(S))
(O∈b(S:x))=>(fo(S)>fc(O))
其中:
S表示主體:用戶,進程等;
O表示客體:文件,信號量等;
主體對客體的訪問屬性A分為:r(只讀),a(只寫),w(讀寫),x(執行)和c(控制);
b (S×O×A)表示某個特定狀態下,主體以何方式訪問客體;
fo表示客體的安全級函數;
fc表示主體當前的安全級函數;
可以看出根據修改后的規則當進行只寫操作時,主體必須具有與客體相同的安全屬性。
2.3 BLP模型在uCOSII中的應用
為了使BLP在uCOSII中運用,必須進行模型與uCOSII的對應性分析。下面我們將討論模型的系統狀態,狀態轉換和系統安全狀態初始化在uCOSII中的對應實施方式。
2.3.1 BLP模型的系統狀態
系統狀態是集合V=(B×M×F×H)中的元素。其中B是S×O×A的集合,在uCOSII中主體S只有進程,當用戶登錄后,所有由用戶發起的進程都會繼承用戶的安全級。uCOSII系統中客體O主要有進程,文件,共享內存,消息和信號量。模型的訪問權限集由r(讀),a(追加寫),w(寫),x(執行)和-(空)組成。在uCOSII中把追加寫也認為是寫,所以訪問權限集由四個屬性組成。
uCOSII中存取控制矩陣M將通過每個客體屬性中16bit的保護模式實現。而安全級別函數F由賦予主體的當前安全級別和賦予客體的安全級別組成。安全級別是由密級和域二部分組成的。密級共分為三級:top secret,secret和unsecret。域分為用戶空間域,系統管理域和安全控制域。
uCOSII是一個嵌入式的系統,我們采用的文件系統將是一個一級目錄的文件系統。所以對于文件不存在客體層次結構H。
2.3.2 BLP模型的狀態轉換
模型要求狀態轉換的任一規則都要保持系統安全狀態。uCOSII系統中的狀態轉換都是通過系統調用實施的。系統中定義了基本的調用接口。當出現調用時,系統通過軟中斷下陷到安全控制域中完成操作,以保證狀態的安全。
2.3.3 BLP模型的安全狀態初始化
uCOSII系統的安全初始化是在系統常規服務啟動以前完成的。主要包括:
① MAC機制和DAC機制的初始化。
② 系統中客體安全屬性的配置與檢測。
③ 審計跟蹤機制的啟動和日志數據庫的初始化。
3 MAC模塊的設計與實現
3.1 MAC模塊的設計
在模塊設計中,安全策略實施代碼被集成到操作系統的各個子系統中。在各個子系統中建立客體管理器?,F在主要有MAC進程管理器,MAC文件系統管理器,MAC網絡管理器。對于進程的訪問控制是MAC模塊的重點。MAC進程管理器中不僅包括進程的訪問控制還包括消息,信號量等IPC客體的訪問控制。只有這些IPC客體的配合才能真正做到進程的MAC控制。
由于安全措施是運用在嵌入式操作系統上的,必須對一般的MAC控制方式進行裁減,并作出一些規定以方便模塊的實現。
(1)主體只有進程。作為主體的用戶在系統中表現為繼承用戶的安全屬性的進程。
(2)整個系統中大部分客體的密級和范疇都是事先定義的,除了重新編譯系統外,無法作出改變。
(3)安全管理員可以更改與它同密級的安全配置文件和用戶帳戶屬性文件信息,但是不能修改其他任何信息。
(4)為了方便策略的更改,安全策略的實施代碼與安全策略的決策代碼是嚴格劃分的。
為了保持uCOSII系統的實時性,對訪問要求的判斷在保持正確性的基礎上要盡量快捷。當判斷為非法訪問時,還需要進行一系列的后續操作,如恢復進程狀態,記錄訪問情況,審計判斷等,這些操作的實施將保持在一個較低的進程優先級上,盡量避免影響其他進程的運行,減少對系統實時性的影響。
模塊實施框架如圖2所示。
圖2 MAC模塊框架圖
3.2 MAC模塊的實現
3.2.1 MAC訪問控制的實現過程
整個MAC模塊以模塊化方式實現,依據設計中的要求可以分為客體管理器、響應處理單元和策略庫三個部分。整個控制過程如圖3所示。
圖3 MAC控制流程圖
3.2.2 MAC模塊中重要數據結構和函數
對于主體對象的安全屬性以如下結構體表示:
struct label {
int flags; //是否已經初始化
//主體安全屬性
unsigned int prio; //主體安全級別
unsigned long reg //主體范疇
void (*dfs_handle); //默認處理句柄
};
考慮到系統是一個實時操作系統,所以策略不應該很復雜.策略庫在系統初始化時加載到RAM中,策略庫以單向鏈表形式存在.每個結點數據結構如下:
struct macpolicy {
struct macpolicy *next //用于連接下一個結點
char *mpc_name; //違規操作名稱
void (*mpc_ops); //策略操作句柄
void (*restore); //恢復操作句柄
};
目前一共有三個客體管理器,管理四個類型的客體:進程,IPC客體,文件,網絡事件。針對每一類客體都有一個訪問控制函數,對該類客體的訪問作出初步判斷:
(1) mac_checkprocess(struct label *p,OS_TCB *q)
本函數實施對進程的訪問控制,第一個參數為訪問者的安全屬性,第二個參數為被訪問進程的控制塊指針。
(2) mac_checkfs(struct label *p,pfile *q, INT8U optype ,int state)
本函數實施對文件系統的訪問控制,第二個參數為指向文件客體的指針,第三個參數對客體的操作類型,第四個參數為文件系統的狀態,供審計跟蹤使用。
(3) mac_checkevent(struct label *p,EVENT *q, INT8U optype)
本函數實現對ipc客體的訪問控制。參數中分別指明操作者和被操作客體,還有操作類型。
(4) mac_checknet(struct label *p,SOCKET *q, INT8U optype)
本函數實現對網絡客體的訪問控制。主體對任何一個套接字的訪問操作必須通過該函數的控制。
通過上述四個函數的判斷,當出現非法訪問請求時,必須對操作進程進行一定的控制:
(5) mac_erropt(void *pdata)
該函數是作為一個出錯處理的入口函數??腕w管理器將把訪問情況通過無類型參數pdata傳遞給本函數,函數根據訪問情況分別調用各個客體的錯誤處理函數。
對于四個類型的客體分別有一個通用的錯誤處理函數:
(6) mac_handlerprocesserr(void);
(7) mac_handlereventerr(void);
(8) mac_handlerfserr(void);
(9) mac_handlerneterr(void);
它們將負責對非授權操作的初步評估,根據策略改變主體運行狀態,反饋信息給安全管理員和提交相關信息給審計模塊。
4 結束語
基于改進的BLP模型,本文所提出的強制訪問控制模塊的設計已基本實現。并且,作者修改了本實驗室已實現的智能脫扣器項目的軟件,并把它加載到修改后的嵌入式操作系統上進行初步的測試。測試結果表明:系統的實時性和安全性均能滿足要求。在本論文的基礎上,作者將對MAC的安全模型進行進一步改進和擴充,使其穩定性和實時性進一步增強,以使其能更適應實際的應用領域。
文章版權歸西部工控xbgk所有,未經許可不得轉載。