基于uCOSII的MAC设计与实现
1 引言随着嵌入式计算机应用的日益普及,特别是嵌入式设备不断的网络化、智能化,嵌入式计算机的安全就成为一个急待解决的问题。许多嵌入式计算机处理的信息涉及到国家政治经济安全,工商业情报等,不采取有效的安全防范措施,一旦受到攻击将造成巨大的损失。
在计算机系统中,安全机制的重要内容就是存取控制。一般存在二种存取控制形式:自主访问控制和强制访问控制。
自主访问控制具有很大的缺陷性。由于它的“自主”能力,从理论上讲根本不可能建立对特洛伊木马的有效防护机制。而强制访问控制MAC则强制性严格规定各个客体属性,实现了信息的单向流通,可以有效的抵制特洛伊木马的攻击。
2 MAC控制模型
2.1 强制访问控制MAC简介
在强制访问控制下,系统中的每个进程,每个文件和每个IPC客体(消息,信号量和共享区域)都被赋予了相应的安全属性,这些属性是有安全管理员或者系统自动生成的,是不能随意改变的。主体对任何客体的访问要求,必须经过MAC访问控制模块的检测。如图1所示。
[img]http://usbing.com/uploads/embed/ucos/20086256534268777801.jpg[/img]
图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)3 MAC模块的设计与实现
3.1 MAC模块的设计
在模块设计中,安全策略实施代码被集成到操作系统的各个子系统中。在各个子系统中建立客体管理器。现在主要有MAC进程管理器,MAC文件系统管理器,MAC网络管理器。对于进程的访问控制是MAC模块的重点。MAC进程管理器中不仅包括进程的访问控制还包括消息,信号量等IPC客体的访问控制。只有这些IPC客体的配合才能真正做到进程的MAC控制。
由于安全措施是运用在嵌入式操作系统上的,必须对一般的MAC控制方式进行裁减,并作出一些规定以方便模块的实现。
(1)主体只有进程。作为主体的用户在系统中表现为继承用户的安全属性的进程。
(2)整个系统中大部分客体的密级和范畴都是事先定义的,除了重新编译系统外,无法作出改变。
(3)安全管理员可以更改与它同密级的安全配置文件和用户帐户属性文件信息,但是不能修改其他任何信息。
(4)为了方便策略的更改,安全策略的实施代码与安全策略的决策代码是严格划分的。
为了保持uCOSII系统的实时性,对访问要求的判断在保持正确性的基础上要尽量快捷。当判断为非法访问时,还需要进行一系列的后续操作,如恢复进程状态,记录访问情况,审计判断等,这些操作的实施将保持在一个较低的进程优先级上,尽量避免影响其他进程的运行,减少对系统实时性的影响。
模块实施框架如图2所示。
[img]http://usbing.com/uploads/embed/ucos/20086256534275077802.jpg[/img]
图2 MAC模块框架图
3.2 MAC模块的实现
3.2.1 MAC访问控制的实现过程
整个MAC模块以模块化方式实现,依据设计中的要求可以分为客体管理器、响应处理单元和策略库三个部分。整个控制过程如图3所示。
[img]http://usbing.com/uploads/embed/ucos/20086256534279677803.jpg[/img]
图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)
该函数是作为一个出错处理的入口函数。客体管理器将把访问情况通过无类型参数pdata传递给本函数,函数根据访问情况分别调用各个客体的错误处理函数。
对于四个类型的客体分别有一个通用的错误处理函数:
(6) mac_handlerprocesserr(void);
(7) mac_handlereventerr(void);
(8) mac_handlerfserr(void);
(9) mac_handlerneterr(void);
它们将负责对非授权操作的初步评估,根据策略改变主体运行状态,反馈信息给安全管理员和提交相关信息给审计模块。
4 结束语
基于改进的BLP模型,本文所提出的强制访问控制模块的设计已基本实现。并且,作者修改了本实验室已实现的智能脱扣器项目的软件,并把它加载到修改后的嵌入式操作系统上进行初步的测试。测试结果表明:系统的实时性和安全性均能满足要求。在本论文的基础上,作者将对MAC的安全模型进行进一步改进和扩充,使其稳定性和实时性进一步增强,以使其能更适应实际的应用领域。