摘要:SCA核心框架是基于分布式CORBA中间件设计实现的,同时核心框架又是一个开放式的架构。安全性几乎影响SCA体系结构的每个方面。简要介绍了SCA的安全性隐患及需求。着重讨论了基于CORBA安全服务的波形软件认证和访问控制。
关键词:SCA核心框架;CORBA;安全服务;访问控制;认证
中图分类号:TP393文献标识码:A文章编号:1009-3044(2009)24-6962-03
Analysis and Implementation for Security Service in Core Framework of SCA
LIU Jun-chen, SHI Jun-wu
(School of Electronic Science, National University of Defence Technology, Changsha 410073, China)
Abstract: The core framework(CF) design is based on the distribute Object Request Broker Architecture(CORBA).The CF is an open framework. The security can exert an influence on multiple aspects in the framework of Software Common Architecture(SCA).This paper introduced the hidden trouble, and the demands to the security in the SCA. at the beginning. Then the authentication and access control were explain in detail.
Key works: CF of SCA; CORBA; security service; access control; authentication
在基于软件通信体系架构(SCA)的软件无线电系统中,其核心框架和其它软件组件是基于分布式公共对象请求代理体系(CORBA)中间件开发的。由于基于CORBA的分布式应用较传统系统具有更多的受攻击点,SCA专门发布了安全补充规范对SCA系统的安全问题进行了阐述。但安全补充规范中对系统安全问题也仅仅给出了原则性的约束和要求,而并没有提出规范详细的安全实施策略。
1 SCA核心框架的安全访问风险
由于SCA核心框架是基于分布式CORBA中间件设计实现的,同时核心框架又是一个开放式的架构,具有标准的接口访问标准,因此核心框架软件平台较其它的软件系统存在较多的安全访问风险。如果不对SCA核心框架中各种接口的访问进行安全保护,势必导致基于SCA实现的软件无线电系统在实际应用过程中存在严重安全威胁,这些安全威胁主要体现在如下两个方面:
1) 缺乏波形软件认证机制,无法阻止未经认证的波形软件(或其它有害软件)下载到系统中。
SCA的动态下载和同时支持多频段、多模式的能力在为用户带来极大方便的同时,也产生了极大的安全隐患。SCA在对波形应用的下载过程中缺乏对波形进行必要的安全认证机制,这样将导致系统不能阻止未经过安全认证的波形(或其它有害软件)下载到系统当中,这一缺陷在基于无线方式下载波形的应用中将造成严重的后果。
2) 无法鉴别用户的合法身份或访问权限,导致系统控制权被非法用户或低权限用户获取。
由于缺少对用户身份进行鉴别、授权、访问控制等安全保护,导致SCA系统无法有效地对不同使用权限的用户进行管理,无法阻止低权限的用户操作系统的核心部件,同时也不能有效防止非法用户入侵系统,获取核心框架中核心组件(域管理器、应用工厂、设备管理器等)的控制权,对系统进行关闭、停止波形应用运行、植入非法软件等破坏性操作。
2 非法用户获取系统控制权的方法及途径
SCA核心框架由一系列CORBA IDL语言定义的接口组成,这些接口详细定义了对基于SCA架构的软件无线电系统内所有软硬件资源进行管理的操作,SCA规范对这些接口和操作的访问方法进行了详细的定义。任何基于CORBA的客户端只需要根据规范的要求调用这些接口的操作就可完成相应的任务。因此,如果不对这些接口(特别是一些重要的接口如域管理器、设备管理器、应用工厂等)的访问进行必要的安全保护,必然导致SCA无线电装备在实际战场环境中存在巨大的安全使用风险。
如图1所示,核心框架由一组相互关联的IDL接口集组成,这些接口按功能又分为三类接口:框架控制接口(DomainManager、ApplicationFactory、DeviceManager等)、框架服务接口(FileManager、FileSystem、File)、框架应用接口(port、LifeCycle、TestableObject,、PortSupplier、PropertySet等)。其中,域管理器(DomainMananger)是整个域管理的核心,负责对系统内所有的软硬件资源进行管理,包括波形应用软件的安装/卸载、波形组件控制、设备状态管理、设备和服务的注册/注销、文件操作等。域管理器作为用户管理系统的接口组件,用户只需通过CORBA命名服务解析得到域管理器的对象引用,既可获得系统内其它重要组件(如:设备管理器、设备组件、应用工厂、文件管理器等)的访问控制权,进而通过调用这些组件的操作和属性对系统进行管理和控制。而根据SCA规范要求,域管理器在命名服务中的绑定名为缺省的“domain”,这样非法用户就可使用该绑定名获取域管理器的对象引用,对系统进行非法操作。这些操作以及可能造成的危害包括:
1) 植入非法软件。非法用户通过域管理器(DomainManager)的installApplication()接口或通过域管理器得到文件管理器(FileManager)接口的文件操作函数将非法软件安装到系统的波形目录中。进而通过应用工厂(ApplicationFactory)的create()函数运行非法软件。
2) 释放(停止)波形软件。非法用户通过域管理器(DomainManager)的applications属性序列可得到系统内所有管理波形应用程序的Application对象,并通过调用该对象的stop()和releaseObject()函数来停止和释放波形应用程序的运行。非法用户还可通过域管理器的uninstallApplication()将波形应用程序文件集从系统内删除。
3) 关闭系统。非法用户通过域管理器(DomainManager)的DeviceManagers属性序列可到达系统内所有的设备管理器,进而通过设备管理器的devices属性得到所有的设备组件,并调用其stop()和releaseObject()函数来停止设备运行。还可调用设备管理器的shutdown()函数来关闭系统所有的设备。
4) 删除系统内的数据文件。非法用户通过域管理器(DomainManager)的fileMgr属性得到系统文件管理器(FileManager)的控制权,并且调用文件管理器的文件操作函数删除系统内一些重要的数据文件。
5) 窃取系统和波形的重要工作参数指标。SCA系统内软硬件的一些工作参数(如各类处理器的性能指标参数、各种波形的指标参数等)都以XML配置文件的方式保存来供系统运行使用。非法用户可通过域管理器(DomainManager)的deviceManagers和applications属性得到所有设备和应用的操作引用,进而通过profile()函数获得相应的设备或波形的配置文件,从中获取相应参数指标。
此外,由于IDL定义的核心框架的各种接口对用户都是公开的,并且它们的访问等级相同,这对所有用户无论是系统管理员还是普通用户都具有访问核心框架所有接口的权限。这样势必导致权限较低或非法侵入系统的用户能够轻易通过域管理器组件获取各种重要组件的访问控制权,对系统造成损害。因此,有必要对核心框架各种接口的访问进行精确粒度的访问控制,对各类接口的访问赋予相应的访问权限。
3 基于CORBA的SCA核心框架安全服务的实现
根据SCA核心框架的安全访问风险和非法用户获得系统控制权的方法和途径。通过对波形软件进行认证来阻止未经认证的波形软件下载到系统中,通过访问控制来阻止非法用户的非法访问,也通过安全服务中心来完成用户的注册、发放证书,同时进行权限的配置。
3.1 波形软件认证
波形软件认证是使用基于公共密钥的安全策略来证明其身份的有效性,它建立在公共密钥加密,数字签名上,具体而言,使用符合X.509的数字证书。使用这种方法必须有一个第三方的证书授权(CA)中心来为波形软件和系统签发数字证书,波形软件和系统从CA获取数字证书,并且必须信任该CA中心。在下载波形软件时,首先传递波形软件的数字证书,其中包含了将其公钥交给系统。
波形软件证书是标志一个波形软件身份的一系列特征数据,其作用类似现实生活中的身份证。CA对包含密钥的波形软件及其公用密钥进行数字签名。通过建立自己的CA,运行OpenSSL命令工具制作CA自签名证书,以及由CA签名的系统证书和波形软件证书以及他们各自的私钥文件。如图2所示,通过对外提供GUI界面方便通过CA生成所需要的证书。
当需要下载一个波形时,系统要求提供波形软件的数字证书。收到波形软件的证书后,系统利用CA的公开密钥对其签名进行解密,获得信息的散列码。然后系统用与CA相同的散列算法对证书的信息进行处理,得到一个散列码,将次散列码与对签名解密所得的散列码进行对比,若相等则表明此证书确实是CA签发的,而且是完整的未被篡改的证书。具体的过程,如图3所示。这样,波形软件就通过了认证。
3.2 安全服务中心
安全服务中心为CORBA分布式对象提供了一个集中式管理,是CORBA访问控制的配置和管理中心。从CORBA安全需求和相应对象服务的分析中可以看出,建立一个安全服务中心是完全必要的。
安全服务中心由安全管理员来完成用户的注册、发放证书,同时进行权限的配置。安全服务中心通过GUI界面帮助安全管理员对访问控制数据库的安全信息进行管理,包括信息的添加、修改和删除等。安全服务中心能有效的提供客户和服务器之间的基于角色的访问控制的依赖信息。安全管理员通过安全服务中心的管理接口进行合理的对象管理和用户管理。
用户管理:包括增加系统新用户、设定用户的角色、设定角色拥有的权限及删除无效用户等。
对象管理:包括对象的增加及其所需权限的设定、对象所需权限的修改及删除无用的对象等。
CORBA安全服务允许为不同的对象方法应用相同的策略,即把具有同等安全需要的对象方法放在相同的安全域中,为了进一步说明安全域的具体形式。CORBA安全服务给出了所需权限模型。所需权限模型提出按灵敏度(及危险程度)来对方法进行分组。方法的名称描述了该方法的功能,但是安全管理员不需要指导方法的功能,他们需要知道该方法的灵敏度。每个对象调用应该具备的权限。通常,实际应用过程中有以下四种所需权限:
1) g(get):该方法仅仅用来给调用者返回信息,如返回状态信息、属性值等。
2) s(set):该方法用于改变对象内部信息,如改变对象的属性,改变对象所包含的数值列表等。
3) u(use)该方法用户使对象完成某项工作,例如计算或打印。
4) m(manager):该方法不应为正常用户所调用,通常是系统管理员才能使用。
3.3 访问控制
3.3.1 用户证书的录入
用户通过用户名和密码在安全管理中心得到自己对应的证书。并在ORB层提供了安全认证和接入控制,实现了证书等用户安全信息的录入,以及数据在传输过程中的安全保障。
CORBA中采用的是SSL安全协议,它是在ORB中配置的,必须使用服务配置文件去完成它。配置文件的内容如下:
TAO_SSLIOP:_make_TAO_SSLIOP_Protocol_Factory() ""
static Resource_Factory "-ORBProtocolFactory SSLIOP_Factory"
其中TAO_SSLIOP:_make_TAO_SSLIOP_Protocol_Factory() ""将在ORB中从名字为TAO_SSL的库文件中加载SSLIOP协议。本项目中,通过配置文件,把通过OpenSSL创建的安全认证模块加载到CORBA中。
进而通过设定ORB参数把配置文件加载到ORB上。
CORBA::ORB_var orb =
CORBA::ORB_init (argc1, argv1, "",);
其中的两个参数,一个设置为“-ORBSvcConf”;另外的一个设置为“server.Conf(client.conf)”。这样就把服务器端(客户端)的配置文件加载到了服务器端(客户端)的程序中。
3.3.2 拦截器实现访问控制
通过CORBA提供的ORB拦截器机制,将ORB服务封装为一个访问控制拦截器嵌入到ORB中,ORB在处理客户和服务器之间交互时,就会在某些预定时刻执行拦截器,从而实现访问控制。访问控制拦截器的目的就是,保证任何通过ORB发出的目标对象访问请求,都能够为该对象的访问控制策略所验证,而不被旁路。
1) 添加访问控制拦截器
CORBA规范中定义了拦截器机制,在拦截器被触发时,传入的参数包括与当前请求相关的一些信息。而且必须实现拦截器的接口,并将当前拦截器注册到ORB中,在ORB中添加访问控制拦截器的步骤如下:
构建ORB初始化器(ORBInitializer),将定义好的拦截器与ORB初始化器绑定:
将ORB初始化器注册到ORB中。
拦截器的目的是使ORB服务成为ORB的一部分,使ORB在处理过程中自动执行。因此拦截器的注册必须在ORB初始化过程中完成,而不能在一个已经完成初始化的ORB上添加拦截器。可以通过ORB初始化器向ORB注册拦截器。每个ORB在构造时,都可以指定一个ORB初始化器。ORB初始化器的IDL定义如下:
interface ORBInitializer{
void pre_init(in ORBInitInfo info);
void post init(in ORBInitInfo info);
};
当ORB初始化器注册到ORB后,ORB会在初始化的过程中自动调用方法pre_init和post_init来为ORB添加拦截器。方法中的输入参数info为一个ORBInitInfo对象。它表示当前ORB的初始化信息。
2) 得到用户和对象调用信息
通过拦截器的receive_request拦截点来得到用户的对象调用信息,以及用户的证书信息。
(1) 得到对象调用信息
operation=ri->operation;来得到用户的对象请求信息。
(2) 得到用户身份信息
服务器拦截器用SSLIOP::Current接口来确定请求当前操作的客户身份。
首先,必须得到SSLIOP::Current对象的应用。
SSLIOP::Current_var SSLIOPCurrent=
SSLIOP::Current::_narrow(CORBA::Object_var(
orb->resolve_initial_references(“SSLIOPCurrent”)));
此后,通过get_peer_certificate能够用于获取调用者的身份
SSLIOP::ANS_1_Cert_var cert=
ssliop->get_peer_certigicate();(3) 访问判决
执行访问控制决策的代码放在AccessDecision对象(简称ADO)里,其访问控制策略执行过程如图4所示。
如图4所示,通过调用者的身份从安全服务中心得到调用者拥有的权限,将这些权限与策略对象准予的有效权限进行比较,如果需要的权限都具备,那么策略允许发起调用,按照正常的CORBA对象调用步骤进行,并返回最终结果。
4 结束语
SCA安全服务是构建安全分布式SCA应用平台强有力的保障,通过对安全问题进行了讨论,提出了解决问题的实现方法,基于CORBA的SCA核心框架安全服务很好的实现了波形软件的认证,杜绝了非法用户对系统控制权的获取。但SCA面临的安全问题所涉及的领域相当广泛,系统仍有许多需要改善的地方,今后继续完善基于RBAC与安全系统的结合。
参考文献:
[1] l.Rousseau,S.Natkin,A Framework of Secure Object System Architecture[J],IEEE 1997:108-115.
[2] OMG Security Service Specification,Version 1.8,[S].March 2002.
[3] Bogdan C.Popescu,Maarten ban Steen,Andrew S.Tanenbaum,A Security Architecture for Object-Based Distribured Systems[J].IEEE 2002.
[3] Blakley B,CORBA安全性指南——面向对象系统的安全性[M].康博创作室,译.北京:人民邮电出版社,2000.
[4] 王飞,张玥.CORBA安全服务的研究与实现[J].微机发展,2004,15:16-20.
[5] 陈明峰,尹刚,吴泉源.CORBA中安全代理的拦截器研究[J].计算机应用研究,2004.
[6] 王薇,高宝建,黄鹏宇.基于CORBA的安全系统设计与实现[J].微电子与计算机,2006,23(10):122-124.
[7] 李晓东,周兴社.通用CORBA安全服务的研究与实现[J].计算机工程与应用,2003,1.
[8] 廖军.基于嵌入式CORBA的核心框架研究与实现[D].2003.01.
相关热词搜索: 框架 核心 研究 服务 SCA