计算机应用研究
APPLICATION RESERCH OF COMPUTERS
2000  Vol.17　No.1　P.47-49




CORBA安全参考模型
蔡建宇　滕猛　王怀民　邹鹏
摘 要 CORBA是一种面向对象的分布式计算技术。安全服务是CORBA的一项重要公共对象服务。简要介绍了CORBA安全服务，着重讨论了CORBA安全服务的安全参考模型，对认证、安全联系、访问控制、代理、审计、安全策略、域等概念进行了解释。
关键词 CORBA安全 安全参考模型 安全策略 域
1　前言
　　CORBA标准是OMG(对象管理组织)制定的关于分布计算环境的标准，其核心内容是ORB，即对象请求代理。它将对象技术和Client/Server模型有机地结合起来，总结了对象技术的最新应用经验，改进并发展了传统的Client/Server模型，使分布计算技术又向前发展了一大步。遵循此标准编制的软件产品最显著的特点是具有非常强的互操作性，可实现多语言、多厂家环境、异构硬件平台、异构操作系统和异构网络条件下的互操作。
　分布式系统具有网络化和异构化的特点，因而比传统系统更易受到攻击。在分布式系统中，安全是一个重要而普遍的问题。CORBA系统具有分布式特征，象其它分布式系统一样面临着以下威胁：
　　□ 用户获得他无权见到的信息。
　　□ 用户A假冒成用户B进行操作。在分布式系统中用户可以授权给其它对象，这增加了权利被过分广泛代理的威胁，又导致了未经授权访问的威胁。
　　□ 安全控制被旁路。
　　□ 监听通讯线路获取机密数据。
　　□ 篡改对象间的通讯―修改、插入和删除数据。
　　□ 缺乏可说明性，例如用户标识不充分。
　　针对这些安全威胁，CORBA安全服务提供的保护措施有：
　　。认证：对主体进行身份鉴别和验证。主体是在系统中已注册和可信任的用户或系统实体。
　　。授权和访问控制：决定一个主体是否能够访问某个对象，可以根据主体的属性和目标对象的控制属性(主体为调用具体对象实现的指定操作而必须得到的某种认可)来决定。
　　。安全审计：使用户对自己与安全相关的活动可负责。
　　。对象之间的安全通信：经常建立在非安全的底层通信基础上。这要求通过客户与对象之间的身份验证建立安全联系。它还包括对象间信息传输的完整性保护和机密性保护。
　　。代理机制：主体的访问控制信息可以委托给其它对象，使受委托者能够在指定的条件下代表它。
　　。防否认：提供活动的不可辩驳证据，避免活动的发起者否认这一活动的发生。
　　。安全信息的管理：例如安全策略的管理。安全策略规定系统安全服务必须提供的保护。
2　CORBA安全参考模型
　　分布式协同操作的系统是OMG的OMA(对象管理体系结构)的最终目标，它必须支持多种安全策略。为此CORBA安全服务规范[2]提出了安全参考模型(SRM)。SRM提供了实施多种安全策略的框架。本文后续部分将在CORBA安全服务规范的基础上对SRM进行讨论。
2.1　认证、标识和特权
　　CORBA安全服务SRM所关注的实体是主体。主体可以通过多种方式得到认证。主体最常用的方法是口令验证。主体的认证信息(如长期密钥)需要跟对象联系起来。
　　主体的属性集表示了CORBA安全服务需要的信息。CORBA安全服务利用这些信息决定是否允许主体做某件事。SRM规定了两类属性：标识属性和特权属性。标识属性用于主体承担责任、签发信息、某些形式的访问控制和对象实现使用管理。根据系统策略，主体的每次应用都有不同的标识或它在所有应用中只有唯一的标识。特权属性为CORBA安全服务的访问决策提供了基础。系统施加的访问策略和对这个主体预先规定的访问限制确定哪些特权属性对主体可用。
　　在SRM中主体并不是真正的对象，但是表示主体的系统信息封装在Credentials(凭证)对象中。图1显示了Credentials对象的创建过程。User Sponsor(例如在认证用户时调用CORBA安全服务接口的代码)代表主体请求Principal Authenticator对象执行认证主体的操作，操作需要使用主体的安全名、认证信息和特权属性。

图1　CORBA安全服务认证体系结构
2.2　安全联系和信息保护
　　CORBA系统中只有客户和对象能处理操作请求并对这些请求作出应答。在这个过程中ORB在客户和对象之间维持着牢固的连接。CORBA安全服务在这种连接之上建立安全联系。建立安全联系就是在客户和对象之间建立信任关系和协商它们之间信息传输保护。从某种意义上说，安全联系是客户和对象之间关于信息保护的类型和强度的公共协议。建立安全联系的技术和系统由此而具有的特性由客户和对象各自的管理和技术安全策略以及他们的公共安全机制而定。CORBA安全服务规范为设置客户和对象的安全联系策略定义了一组管理接口和可选的名字。
　　CORBA安全服务提供的信息保护包括：机密性保护和完整性保护。客户与对象之间的安全联系决定了它们之间信息传输保护的质量。一般信息保护由ORB信息层提供。但在某些时候，保护可以在ORB信息层以下提供。例如，依靠安全套接字层(SSL)或物理手段进行信息保护。
2.3　对象调用访问控制
　　在OMA分布式对象系统中访问控制基本分为两个级别：对象调用访问控制和应用访问控制。对象调用访问控制在对象调用时由ORB自动实施，而应用访问控制由应用自己实施。
　　对象调用访问控制服务是基于对象调用访问策略实现的。对象访问控制策略控制代表当前主体的客户是否能调用目标对象上的操作。对于所有的应用，不管它们有无安全意识，对象调用访问控制策略由ORB和ORB使用的安全服务实施。对象调用访问控制策略中Access Decision功能实现。当被要求检查访问是否被允许，Access Decision函数只提供yes或no回答。客户方访问判定函数用于判断客户能否调用目标对象上指定的操作。目标方访问判定函数判断对象是否接受调用。某些系统可能只支持目标方控制，甚至仅把它们用于某些对象。CORBA安全服务访问策略通过主体的特权属性和目标对象的控制属性表示。主体的特权属性封装在CORBA安全服务的Credentials对象中，目标对象的控制属性封装在CORBA安全服务的Access Decision对象中。
　　概念上对象调用访问控制服务通过截获对象调用(如请求)实现。截获可能发生在客户和目标两方。一旦ORB截获到对象调用，ORB就咨询Credentials对象获取客户对象拥有的特权。然后这组特权作为Access Decision对象的access_allowed操作的参数，由这个操作判断是否继续对象调用。
2.4　安全审计
　　安全审计记录系统发生的安全相关事件，帮助审查系统危害。各个系统对安全相关事件的定义并不一致，因此CORBA安全服务SRM和规范都包括安全审计策略，说明在什么情况下事件应被审计。审计策略分为两类：一是系统审计策略，控制ORB和CORBA安全服务事件的审计；二是应用审计策略，控制发生在应用范围事件的审计。
　　安全审计策略确定是否审计某事件基于以下几点：
　　。事件类型(如方法调用完成、所做的访问控制检查和安全联系的建立等)。
　　。事件的成功或失败(只审计失败事件)。
　　。被调用的对象和操作。
　　。代表请求调用的主体的审计ID。
　　。日期、时间。
　　CORBA安全服务规范提供了完备的系统审计策略。系统审计策略在所有应用中都是自动实施的，即使对没有安全意识的应用也不例外。另外规范还规定了一种特殊应用审计策略，根据事件的类型、事件的成功或失败确定是否审计此事件。CORBA安全服务模仿CORBA事件服务，规定由审计事件生产者把事件发送到审计通道。但是规范中没有说明审计通道的消费者如何处理通道中的记录。
2.5　代理
　　在CORBA系统中存在这样一种情况，客户调用目标对象执行某一操作，但是目标对象自己不能完成这个操作。于是目标对象就请求其它对象执行这个操作。这样形成了对象之间的请求链，使得系统的访问控制复杂化了。从访问控制的立场来看，问题变成了从客户到目标的对象请求链中某一请求的后续请求能用哪些特权。针对这一问题，CORBA安全服务规范提出了特权代理的概念。在特权代理中启动主体(请求链中第一个客户)的特权属性以某种形式委托给中间对象直到传到最终目标对象。目标对象依靠收到的特权属性作访问决定。
　　CORBA安全服务规范给出了如下五类代理策略。
　　。无代理―这种情况下中间对象只能利用自己的特权属性，而且不能把属性委托给其它对象。
　　。简单代理―中间对象使用启动主体的特权属性代替自己的特权。目标对象收到的只是启动主体的特权，不知道中间对象是哪个对象。
　　。复合代理―中间对象能够使用客户的凭证，还能把这个凭证委托给其它对象。客户和中间对象的特权都传递给目标对象。所以目标对象可分别检查客户特权和中间对象的特权。
　　。混合特权代―客户同意中间对象使用它的特权。中间对象把客户的特权转化为凭证并与自己的凭证结合起来。这种情况下目标不能区别特权分别来自哪个主体。
　　。跟踪代理―实际上是复合代理的扩展。在请求链中每个中间对象都把自己的特权和收到的特权传递下去。这样最终目标就能跟踪代理的序列并就任何中间对象特权作出访问控制判断。
2.6 　防否认
　　在相当多的应用中都有防否认安全服务的需求。防否认服务为每次发生的活动产生不可辩驳的证据。根据不同的安全机制和策略，防否认需要一个或多个可信任的第三方参与。CORBA防否认服务为有安全意识的应用而设计，不在标准CORBA安全服务或ORB中使用。CORBA的防否认服务不但可生成仅在使用防否认服务的应用上下文中相关的证据，而且可生成与信息的创建(起源)和接收(发送)相关的证据。防否认服务不提供成功执行对某对象的请求的证据。因为这种情况需要在ORB中使用防否认服务。

图2　ISO（CORBA安全服务）防否认模型
　　CORBA安全的防否认服务只提供国际标准组织(ISO)防否认模型中证据产生和验证的功能(见图2)。这意味着它只为应用提供以下操作：
　　①产生活动的证据。
　　②验证活动的证据。
　　③请求发送消息的证据。
　　④接收对收到信息证据的请求。
　　⑤分析活动的证据。
　　⑥收集需要长期保存的证据。
2.7　安全管理
　　在CORBA系统中分别管理每个对象的开销太大。因此CORBA标准提出了域的概念。域是具有一定的公共特征并遵守一定的公共规则的对象集。为管理安全相关对象，CORBA安全服务定义了三类有关安全的域：
　　。安全策略域―实施安全策略的作用域。
　　。安全技术域―使用相同技术实现安全服务的对象或实体的集合。
　　。安全环境域―在域内策略的实施可通过基于环境的手段而不是在对象系统中完成。例如，所有网络连接线路加密可以解除CORBA安全服务确保信息机密性的职责。
　　CORBA安全服务规范着重讨论了安全策略域。彻底解决管理CORBA安全服务需要管理安全策略域的以下三方面：
　　①管理安全策略域本身，包括创建，删除域和建立它们之间的联系。
　　②管理域的成员对象，包括在域之间迁移对象的能力。
　　③管理每个域实施的策略。不仅为域指定策略，还要设置安全策略的细节。
　　现有CORBA安全服务规范虽然在上述①、②方面只规定了最低限度的服务，但是对第③方面进行了详细说明。它包括了管理安全策略的框架和如何管理特殊策略的细节，如指定域中信息保护缺省质量、代理凭证和审计事件的策略。
　　访问控制方面的策略管理是不明确的，因为管理访问控制策略的方法依赖于策略的类型。例如，基于ACL(Access Control List)的策略和基于分类的策略需要不同的管理。但是标准域访问策略是明确规定的。访问策略可以使用权利为访问控制操作分类。CORBA安全服务规范包括了权利到操作的映射的管理。像这样权利到操作的映射用于标准域访问策略，也用于其它访问策略。
3　总结
　　本文通过讨论安全参考模型对CORBA安全进行了论述。现有的CORBA安全服务规范已是1.5版，综合了上一版和其它关于安全的规范，对更广泛的安全问题进行了讨论，提出了解决方法。它给出的安全模型和体系结构都是可扩充的。本文给出的CORBA安全参考模型仅仅是设计实现CORBA安全系统的指导方针。根据系统实际需要CORBA安全服务可以有不同的具体实现方案。随着安全技术的发展和众多CORBA安全服务产品的出现，CORBA安全服务规范将得到进一步的发展，由此实现更安全的CORBA系统。
蔡建宇（国防科技大学计算机学院 长沙 410073）
滕猛（国防科技大学计算机学院 长沙 410073）
王怀民（国防科技大学计算机学院 长沙 410073）
邹鹏（国防科技大学计算机学院 长沙 410073）
参考文献
1The Object Management Group, The Common Object Request Broker:Architecture and Specification, Version 2.2, Feburary 1998
2The Object Management Group, Security Service Specification, Version 1.5, March 1999
3TECS: Papers: A Quick Tour of the CORBA Security Service, July 1998
收稿日期：1999年6月28日
