摘 要: 在分析XCAML和WS-Security安全规范的基础上,设计出一种基于信任的跨域安全认证模型TB-WSCDSA。该模型解决了跨域服务双方身份认证的问题,并依据各自安全域的访问控制策略和信任计算所需的数据和算法,计算双方的信任度,根据信任度阈值比较结果对双方进行信任评估和授权,并将结果以信任证书的方式发送给服务双方以保证安全通信。
关键词: Web服务;信任;身份认证;数字证书
Web服务凭借其松散耦合、语言与平台无关以及开放、标准化等优点,已经成为企业跨平台应用集成的首选[1]。但是,Web服务的安全及信任仍然是制约其发展的最大阻碍。当前,OASIS已经发布了一系列的安全规范,主要有WS-Security规范、安全断言标记语言SAML规范、可扩展的访问控制高标识语言XCAML规范,而且又提出WS-Trust规范和WS-Federation规范提供对信任的支持,通过交换安全令牌在不同安全域通信双方建立信任[2],但是这主要还是针对Web服务安全的身份认证,并没有提供如何进行信任评价和信任决策。
本文针对OASIS发布的关于Web服务安全规范不能满足服务双方利用信任信息进行信任评估和决策授权的问题,将信任机制引入身份认证及访问控制中,提出了一种Web服务中基于信任的跨域安全认证模型TB-WSCDSA(Trust-Based Cross-Domain Security Authentication of Web Service)。该模型能够解决服务提供方与请求方跨域认证的问题。它将PKI数字证书与XCAML相结合,通过一个可信的第三方机构对不同安全域的服务双方进行认证,利用双方的直接交互经验及各自域内其他证人的推荐信任信息,计算信任度,并与自身预先设定好的信任标准或信任度阈值进行比较,然后根据比较结果进行决策和授权。决策结果保存在信任证书中,发送给服务请求方和提供方,作为双方信任并进行通信的依据。
1 模型框架
TB-WSCDSA模型是基于XCAML和PKI数字证书的。图1是TB-WSCDSA模型图。首先,服务请求方及提供方都从本域内的CA认证机构获取自己的数字证书,这样才能在交互过程中进行彼此认证。可信的第三方认证机构使用PKI的CA认证。这里认定,可信的第三方认证机构已经与双方的根CA(信任锚)建立信任关系[3]。
服务双方认证完成后,将各自的数字证书以及第三方认证结果发送到模型中的认证模块进行验证。在确认服务双方的身份后,模型的XACML的访问控制模块通过计算信任度决定是否发送信任证书给请求方或提供方。最后,请求方使用该信任证书向提供方请求服务,提供方使用该信任证书决定是否提供服务。
2.1 认证
身份认证是TB-WSCDSA模型的基础,只有确定了服务双方的身份以后,才能够根据相关信任信息进行信任评估和授权决策。该认证过程是跨安全域的,包括服务请求方、请求方所在域的根CA机构(信任锚)、服务提供方、提供方所在域的根CA机构(信任锚)[3]、已经与双方根CA建立信任关系的可信的第三方信任机构以及TB-WSCDSA。图3显示了认证过程。认证过程如下:
(1)服务请求方及提供方从各自所在安全域的根CA机构获得本域数字证书。
(2)取得本域数字证书后,请求方加密发送数字证书给提供方,提供方收到后用自己的私钥解密,并通过本域的根CA发送到可信第三方机构进行认证,提供方同样将自己的数字证书发送给请求方进行认证。
(3)可信的第三方CA机构对服务双方认证完成后,返回认证结果。
(4)服务请求方和提供方从第三方接收到认证结果后,将对方的数字证书及第三方认证结果打包加密发送到TB-WSCDSA模型的认证模块;认证模块验证服务双方提供的证书及结果,完成认证。
2.2 访问控制策略管理
服务双方在完成认证后将结果发送到TB-WSCDSA模型的认证模块,认证模块通过请求方域及提供方域证人的请求推荐信任、双方的数字证书以及第三方认证结果后,将服务请求转发到访问控制模块,再对双方进行信任评估和决策。访问控制模块包括策略管理、信任度计算和决策授权3个部分。
策略是XACML的核心,XACML定义了标准的策略语言模型[1]。在TB-WSCDSA的策略模型中,<target>标签是该策略集(策略、规则)的索引,用来查找某个访问控制请求所适用的策略集或策略规则;<subject>标签定义了适用的访问请求主体,如<subject>any subject </subject>表示适用于任何主体;<resource>标签定义了适用的客体,如某个Web服务的WSDL文件;<action>标签定义了主体请求获得的行为,如Web服务的执行(execute);<condition>标签是TB-WSCDSA中最重要的标签之一,它定义了被授权所必须满足的信任条件,其中包括信任度阈值(trust_ threshold)和信任度比较函数(function:trust_comparison)两个主要部分。在获得服务双方的信任度之后,利用信任度比较函数来比较该信任度是否满足信任度阈值(trust_threshold)的要求,相应地返回true或false。
2.3 信任度计算
TB-WSCDSA中的信任计算部分由XML解析器、数据库和信任处理机三部分组成。TB-WSCDSA计算直接信任度的信息来自于服务双方。首先,服务双方初始化各自的信任处理机,得到了信任度的计算方法。信任度计算所必需的数据用XML文件发送到XML解析器中, 解析后保存在数据库相应的表格之内。在计算信任度时候,信任处理机从数据库中读取相应的数据进行计算。本文计算的信任度包括双方直接交互信息(称为个体纬度)和来自于域中其他证人的信息(称为社会纬度)。最后将两者进行综合[4]。
个体纬度的信任度公式如下:
2.4 决策和授权
决策和授权由PDP完成,就是根据访问控制策略和信任度来决定是否给予授权的过程[5]。其决策的过程如下:
(1)解析服务双方的服务请求,获取<subject><resource> <action>和<environment>标签(<environment>标签可能不存在)。
(2)根据以上4个标签查找<target>与此相匹配的策略文件policy.XML。
(3)如果存在相应的策略文件,则进行步骤(4);否则,返回 not-applicable,访问控制决策失败。
(4)解析policy.XML中rule的<condition>标签,获得信任度比较函数trust_comparison和信任度阈值trust_threshold,请求获取服务提供方对该服务请求方的信任度requestor_trust以及服务请求方对提供方的信任度provider_trust。
(5)返回服务双方的信任度requestor_trust和provider_trust。
(6)根据<condition>标签中定义的信任度比较函数trust_comparison,比较服务双方的信任度requestor_trust和provider_trust是否大于等于各自的信任度阈值trust_threshold,如果是,则返回true;否则,返回false。
(7)验证返回值是true还是false,如果是true,则返回<effect>标签值permit;否则,返回deny。
最后,PDP将决策的结果发送给PEP,PEP将决策结果封装在信任证书中发送给服务请求方和服务提供方。服务请求方利用TB-WSCDSA提供的信任证书向服务提供方请求服务,而服务提供方利用信任证书授权请求方使用服务。
本文提出了一种Web服务下基于信任的跨域认证模型TB-WSCDSA。该模型的优点是能够和OASIS发布的诸多Web服务安全规范兼容。TB-WSCDSA与认证代理类似,是存在于服务请求方与服务提供者之间的中间件系统,TB-WSCDSA代替服务提供方和请求方,完成信任计算和评估工作,而信任计算的算法、信任信息及策略又来自于服务双方。因此,计算得到的信任度和授权决策结果是服务双方可信赖的。服务双方只需要验证各自通信时提供的信任证书,就可以实现基于信任的授权和访问控制。认证模块实现了单点登录的功能,在认证过程中,认证的客体只要提供一次认证信息,大大简化了请求服务和推荐信任信息分享过程中的认证复杂度。
参考文献
[1] 马晓宁,冯志勇,徐超.Web服务中基于信任的访问控制[J].计算机工程,2010,36(3):10-12.
[2] PAPAZOGLOU M P. Web服务原理和技术[M].北京:机械工业出版社,2009.
[3] 俞旭.PKI中几种信任模型的分析研究[C].江苏省电力安全论坛论文集,2004:351-356.
[4] SABATER J, SIERRA C. Reputation and social network analysis in multi-agent systems[C]. Proceedings of the 1st International Joint Conference on Autonomous Agents and Multi-Agent Systems. Bologna, Italy:[s.n.],2002: 475-482.
[5] 冯晓宁,冯志勇,徐超.Web服务中跨安全域的基于信任的访问控制模型[J].计算机应用研究,2009,26(12):4751-4753,4767.