分享
 
 
 

用消息交换增强ebXML的安全性

王朝other·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

本文是两篇有关ebxml安全性的文章中的第一篇,主要讨论消息层。假如需要了解对ebXML概念的一般性介绍,以及研究一些基于功能阶段实现普通ebXML交互的全部用例,请参看ebXML简介。本文将重点解释消息级别的安全性和ebXML消息传送(ebMS)的安全策略机制。

本文开头综述了消息层安全性的优势。文中简要讨论了消息层安全性和瞬时套接层安全性之间的区别。在摘要中提出的概念对于理解有关ebMS消息层安全性方面内容的其他部分极为重要。接下来将深入研究如何使用协作协议轮廓(Collaboration PRotocol Profile,CPP)和协作协议协定(Collaboration Protocol Agreement,CPA)来为ebXML消息层描述安全性策略。

什么是消息层安全性?

在实际情况中,大多数ebXML消息都有基于独有XML的消息层安全性需求,包括数字签名、认证、数据私密性、以及内容产生的威胁保护。这些消息层机制提供了超过和在瞬时应用程序层安全性(例如SSL/TLS)之上的保护。实际的ebXML部署利用应用程序层安全性机制和套接层传输机制。

ebXML提供的消息层安全性标准依靠于昂贵的XML安全性操作,例如XML签名和XML加密。尽管两种标准都使用了昂贵的加密处理,但是在这些标准中执行XML处理所需的时间远远超过了执行加密操作所需的时间,因为综合XML解析、转换、模式验证和消息标准化的费用昂贵。本文认为通过将XML处理和加密处理分离到一个安全的、加固的XML网关设施中(XML防火墙),可以实现显著的性能提升并具有安全性优势。

根据普遍存在的价格经济的和受信的传输层机制(例如SSL/TLS或VPN技术)而产生的消息层安全性需求经常使初学者感到困惑。术语消息层安全性是指稳定的安全特性,它适用于任何类型的基于协议的消息交换,不管是通过HTTP、SMTP、FTP或是其他协议。

在消息层安全性的情况中,无论消息单位是XML文件还是二进制附件,它都是经过加密或签名的,或者既经过加密又包含签名的。对于XML文档来说,由于XML的结构化特性,具体的操作可能具有高度的颗粒性。

将消息层安全性应用于有效负荷可以解决传输层机制不能很好处理的安全性问题,例如安全特性的持久性。举例来说,在SSL连接中,安全特性应用于套接字,并且任何写入或者从套接字中读出的数据都是经过加密和验证的。但是,假如将套接字拆开,那么就没有办法辨别来自套接字的部分数据是否应用了安全特性。此外,在多次反射通道的情况中,数据在已经中止SSL连接的任何地方都是清楚地。这种情况称做SSL安全性“鸿沟”,如图1所示:

图1:SSL安全性鸿沟

消息层安全性机制在ebXML和其他基于XML的Web服务协议中使用广泛。他们帮助为长时间运行的事务或者以多次反射方式涵盖多种域的事务提供持久性认证、数据加密和发送方验证。消息层安全性的用途包括剩余数据保护,即数据经过签名和加密之后再插入到数据库中。

CPP安全策略

为了理解CPP如何描述安全策略,有必要首先检查CPP实例的外部结构。一个CPP实例由五个直接子元素定义,如清单1所示。元素的基数用一个简单的BNF语法描述。加(+)号表示一个或多个,问号(?)表示0或1,星号(*)表示0个或多个,没有符号则表示只能是1个。

清单1:协作协议轮廓(CPP)XML结构

<CollaborationProtocolProfile

(<PartyInfo)+

(<SimplePart) +

(<Packaging)+

(<Signature)?

(<Comment)*

</CollaborationProtocolProfile不需要考虑清单1中的全部元素。有关ebMS消息层安全性的大部分安全策略信息位于<PartyInfo元素和<Packaging元素之中。读者可能注重到清单1的例子中有一个<Signature元素。这是一个可选的W3C XML Signature,CPP的创建者可以提供它用于验证机制。对CPP来说,通常只有一个签名者,但是CPA假如进行派生则可能有其他签名者。就验证这个目的而言,ebMS对CPP自身和实际的交换信息都利用了XML Signature,熟悉到这一点很重要。接下来两段将叙述<PartyInfo元素和<Packaging元素中所内嵌的策略信息。

<PartyInfo元素

<PartyInfo元素描述了适用于特定贸易合作伙伴的实现细节。一个CPP可以拥有多个<PartyInfo元素,因为大型企业可能需要从多个方面以不同的角色和业务来进行描述。<PartyInfo元素的结构如清单2所示。

清单2 <PartyInfo的结构。

<PartyInfo

(<PartyID)+

(<PartyRef) +

(<CollaborationRole) +

(<Certificate) +

(<SecurityDetails) +

(<DeliveryChannel) +

(<Transport) +

(<DocExchange) +

(<OverrideMshActionBinding) *

</PartyInfo 用来描绘ebXML事务的安全策略的三个重要子元素是:<Certificate元素、<CollaborationRole元素和<DocExchange元素。目前,<SecurityDetails元素被用作一个扩展点,不传递直接策略。<Certificate元素是CPP的中心内容,它是一个包含ebXML事务所用的公钥的X.509认证清单。这种结构很普通,可以在 CPP 里的其他地方引用。<CollaborationRole元素带有子元素,用于描述原有消息层之外的安全策略项。它可以映射为特定的PKI实现,用于ebXML会话中非透明的(例如:非XML的)有效载荷。

最后,<DocExchange元素为实际运行时ebXML安全策略奠定基础。这个元素包含了对发送者和接收者的安全策略都很重要的信息。非凡值得注重的是,它定义了三个重要的子元素:<SenderNonRepudiation、<SenderDigitalEnvelope和<NamespaceSupported。清单3直观地展示了这些内容的层次。

清单3 <DocExchange层次结构

<PartyInfo

<DocExchange

<ebXMLSenderBinding

<SenderNonRepudiation

<SenderDigitalEnvelope

<NamespaceSupported

<SenderNonRepudiation元素定义了计算XML签名时要用到的参数,其中包括协议(协议通常就是W3C XML签名)、用来排列摘要信息的哈希函数(如SHA-1)、具体的签名算法(如RSA或DSA)、以及一个指向签名所用的X.509证书的引用。以这里,引用可以指向<Certificate,<PartyInfo元素的一个直接子元素。

<SenderDigitalEnvelope参考所使用的加密机制。术语数字信封(digital envelope)源于消息层安全性事实,如ebXML里所用,一般来讲,使用快速的对称密钥(symmetric key)来加密有效载荷,然后依靠接收者的公钥来加密对称密钥,这样更有效率。从这个意义上来讲,原始对称密钥就是被另一个密钥给封住了。对于ebXML,数字信封的推荐机制是XML加密,但也可以被使用二进制机制如S/MIME和PGP/MIME。<SenderDigitalEnvelope元素指定了协议类型、版本以及所用的加密算法。

最后一个元素,<NamespaceSupported,可以用来消除XML安全规范的不同版本之间的歧义,如XML签名和SAML。<NamespaceSupported元素的作用是直接指定相应安全规范的名称空间(因而也指定了版本)。清单4给出了<SenderNonRepudiation元素和<SenderDigitalEnvelope元素的一个例子。

清单4 安全策略元素示例

<SenderNonRepudiation

<NonRepudiationProtocol

http://www.w3.org/2000/09/xmldsig#

</NonRepudiationProtocol

<HashFunction

http://www.w3.org/2000/09/xmldsig#sha1

</HashFunction

<SignatureAlgorithm

http://www.w3.org/2000/09/xmldsig#dsa-sha1

</SignatureAlgorithm

<SigningCertificateRef certId="CompanyA_SigningCert"/

</SenderNonRepudiation

<SenderDigitalEnvelope

<DigitalEnvelopeProtocol version="2.0"

S/MIME

</DigitalEnvelopeProtocol

<EncryptionAlgorithm

DES-CBC

</EncryptionAlgorithm

<SenderDigitalEnvelope

在清单4中的例子中,发送者支持消息层鉴权的XML签名,使用DSA算法和SHA-1哈希函数进行。对于数据私密性,则使用S/MIME v2.0机制,带有56位CBC模式的DES键。

在这时看来,似乎消息层安全机制所有必需信息都已经被指明了,但还有个问题,那就是如何把这些操作应用到ebMS消息。EbMS规范使用了一个含有几个组成部分的MIME信封。驱动程序包括一些场景,在其中ebMS消息的各个部分被加密或签名。这正是<Packaging元素的工作。<Packaging元素描述了需要被签名或被加密的ebMS消息部件,以及无需加密的应该留给别人去修改、更新或改变的部件。

<Packaging元素

<Packaging元素描述了ebMS消息的哪些部分要签名和加密,哪些部分不需要。

查看<Packaging元素是如何工作的。首先请查看ebMS消息的消息结构,它是根据带附件的SOAP协议(SwA)定义的。SwA的结构则是根据一套名为SOAP消息包的MIME包来定义的。每条SwA消息都是一个消息包的集合,主要SOAP有效载荷位于第一个MIME容器里。图2直观地展示了ebMS消息与应用层之间其他部分的关系。

图2 ebMS消

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有