基于XML的多方数据通信安全模型研究

时间:2022-10-07 01:41:39

基于XML的多方数据通信安全模型研究

摘要: 针对XML签名规范在解决业务链的多方通信过程中XML敏感数据安全问题的不足, 提出基于XML的多方数据通信安全模型,能够实现发送方加密和整体签名,接收方解密和局部验证的功能,设计了XML整体签名的结构与处理规则,实现了多方数据通信系统,用于保证XML 数据安全。

关键词: XML加密; XML签名; 数据通信; 安全模型

XML (eXtensible Markup Language)作为一种用来描述数据的标记语言,具有对数据进行统一描述的强大功能,同时可扩展性、结构化语义以及平台无关性的特点充分满足了互联网和分布式异构环境的需求,成为网络数据传输和交换的主要载体。随着XML技术的广泛应用和深入发展,XML语言自身所具有的结构化特征对XML数据信息安全技术提出了新的要求,传统的XML 安全技术所无法做到的,而在如今以Web服务为架构的业务流程中, 一份XML文件的传送可能会经过很多个中间人,在一个公司内有一连串的工作流,每个部门所需要的信息不一样,但这些信息可能都放在同一份文件上, 因此必须针对各个部门的不同需求, 对信息进行保护和公开, 传统安全技术只保证Point-to-Point的安全是不够的,还应该对XML文档部分信息进行安全处理,提供End-to-End 层次的安全性。传统的安全解决方案SSL技术可以满足双方数据通信的安全要求,而SET协议用于三方通信时的身份认证和信息完整性、交易防抵赖的保护。当通信各方超过三个以上时,现有的规范都无法解决,为此本文针对XML签名规范在解决业务链的多方通信过程中XML敏感数据安全问题的不足, 建立基于XML的多方数据通信安全模型, 从应用层的角度提供了多方通信时的身份认证和数据完整性、交易防抵赖的保护。

1、基于XML的多方通信安全模型

结合对称密钥加密技术和公开密钥加密技术的优点, 可克服对称密钥加密中共享密钥分发困难和公开密钥加密中加密时间长的问题,利用对称密钥加密要发送的明文数据,利用接收方的公钥加密对称密钥,保证数据传输的安全性,发送方再利用自己的私钥进行签名来保证发送方的身份论证和数据完整性。

1.1 发送方的加密与签名模型

发送方A 生成业务数据,发出业务请求,产生发送数据中包括给参与业务的B、C、…、X、…的敏感信息,记为Info(A-B)、Info(A-C)、… 、Info(A-X)、…。并且对这些敏感信息进行安全处理,包括加密过程和签名过程,具体实现过程如下:

首先发送方对发送给B、C、…、X、…的敏感信息分别加密。发送方随机产生对称密钥KB,用KB 加密Info(A-B)产生密文E(Info(A-B));使用B 的公钥加密对称密钥Kb 产生E(Kb),同理产生E(Info(A-C)),E(KC);…。

发送方A 对这些所要发送的敏感信息进行一次签名,A 使用摘要算法分别生成这些敏感信息的摘要值记为:H (Info (AB));H (Info(A-C));…; H (Info(A-X));…;然后连结所有这些敏感信息的摘要值生成数据:Info(BC…X…),再对其进行摘要计算,生成连结信息的摘要值,记为H(Info(BC…X…)),并且发送方A 使用自己的私钥对H(Info(BC…X…))进行签名,生成Info(BC…X…)的签名值,记为:Sign[H(Info(BCDE…X…))]。即:Sign[H(Info(BCDE…X…))]是对Info(A-B)、Info(A-C)、… 、Info(A-X)、…这些敏感信息的一次签名值。

1.2 接收方解密与局部验证模型

各接收方所得到的敏感信息可由发送方A直接发送,也可以是它的业务上家转发。总之,其中任一接收方(用X 代表其中一方)得到发送方A方提供给自己的那部分敏感信息有:密文E(Info(A-X));用接收方X 的公钥加密对称密钥的结果E(KX); 其他各接收方信息的摘要: H (Info(A-B))、H (Info(A-C))、…; 一次签名值:Sign[H(Info(BC…X…))]。接收方X 为了解信息的内容需要对信息进行解密, 同时还要局部验证其接收信息的完整性和发送者身份验证,接收方X 用自己的私钥对E(KX)解密,得到对称密钥KX;用KX 对密文E(Info(A-X))解密,得到解密后的Info(A-X)信息。接收方X 再对解密的Info(A-X)进行摘要计算,得到Info(A-X)的摘要值:H(Info(A-X)),并将摘要会值H(Info(A-D))与接收到的其它各方敏感信息的摘要值:H (Info(A-X))、H (Info(A-C))、…H (Info(A-X))…相连接,得到连结值Info(BC…X…),对联接值Info(BC…X…)进行的摘要计算,得到新的摘要值H(Info(BC…X…)),接收方X 再使用A 的公钥对一次签名值Sign[H(Info(BC…X…))]进行解密,得到H(Info(BC…X…));将所得到的两个H(Info(BC…X…))进行比较,若相同,则表明Info(A-X)信息是由A 提供的,而且没有被篡改;同时也保证其他接收各方都看不到Info(AX),虽然Info(A-X)可能经过其他方转发。

2 XML 整体签名的提出与设计

IETF和W3C合作并1999 年制定了XML数字签名规范(XML Signature Syntax and Processing ), 其后W3C 在2002 年9月又公布了XML文件加密规范(XML Encryption Syntax and Processing)的推荐标准,XML加密能够满足多方通信模型中的XML文档的进行部分内容加密,符合XML 文档细粒度的加密要求,但是, 在多方通信模型中的发送方需要对发送信息进行两次消息摘要后再签名,这是XML数字签名规范无法满足的。为此,通过对XML签名规范的改进,生成新的XML整体签名规范。

为了更好地实现XML整体签名, 在XML签名规范的基础上对XML整体签名的语法和处理规则进行研究,XML整体签名用UnitedSignature 元素来表示,定义了如下速记形式的结构:

(

( )*

)+

*

其中,UnitedSignature元素是XML整体签名的根元素,有三个子元素―――SubDigests元素,Signature 元素和UnitedSignature-Object 元素。SubDigests 元素表示发送给所有业务方的摘要信息,至少包含一个SubDigest 元素。SubDigests 元素必须出现而且只能出现一次。SubDigest 元素表示发送给某个业务方的信息的摘要值及相关信息, 包括两个子元素―――DigestInfo 元素和DigestValue元素,DigestInfo 表示生成摘要的相关信息,DigestValue表示摘要值。Transforms 用来表示如何得到那些要被连接的所有的摘要值,DigestValue 表示对连接值的摘要值。

3 系统功能模块实现

XML加密规范和XML签名规范是既相似又分离的两个规范,XML加密和XML签名过程中都需要一些共同的技术来支持,XML整体签名也同样需要这些技术的支持。在进行多方数据通信安全系统设计时,把这些共同技术设计成独立的模块,这样既可以保证系统的开放性和可扩展性, 又降低了系统的冗余度,增加了系统的层次。

3.1 多方数据通信安全系统的功能结构

多方数据通信安全系统从上至下分为三层:XML整体签名处理层、XML基本加密签名处理层和公共技术层。其中,XML整体签名处理层需要XML基本加密签名层和公共技术层的共同支持;XML 基本加密签名层需要公共技术层的支持。具体结构下图所示。

XML公共技术层包括三个模块―――数据对象读取器、密钥信息处理器和算法处理器。其中密钥信息处理器也需要数据对象读取器所支持,数据对象读取器也需要算法处理器支持,它们之间互相支撑。

XML基本加密签名处理层包括四个模块―――XML加密、XML解密、XML签名、XML验证, 分别实现XML的加密/解密和XML签名/验证,分别对外提供XML的加密/解密和XML的签名/验证应用程序接口,这些接口统称为XML基本加密签名接口。

XML整体签名处理层:该层包括两个模块―――XML整体签名处理和XML整体签名验证, 该处理层封装了XML整体签名处理和验证的实现过程,分别向应用程序提供XML整体签名处理和XML整体签名验证的应用程序接口, 两个接口称为XML整体签名接口。

位于多方数据通信安全系统之上的是应用层, 应用层可以调用XML整体签名接口,并提供相应的信息参数;另外,应用层也可以独立调用XML基本加密签名接口,并提供XML加密/解密、签名/验证的实现过程中所需的各种信息参数。

3.2 XML 整体签名处理模块

对于采用基于XML整体签名安全通道的各业务方而言,消息发送方要对发送给其他各方的信息进行基于XML整体签名的安全处理, 需要通过调用XML 整体签名处理提供的XML 整体签名处理接口。

整体签名处理是进行整体签名处理的主控模块, 它接收应用程序所提供的信息,控制和屏蔽整体签名处理过程生成UnitedSignature元素, 向应用程序返回整体签名元素―――UnitedSignature。该模块对对外提供XML 整体签名处理接口。

UnitedSignatureObject根据应用程序要求可以调用XML加密处理器加密数据对象, 用EncryptedData 元素来替换UnitedSignatureObject元素中相应的明文数据对象。

Signature 的功能是封装调用XML签名处理器的过程,表示得到子摘要连接值的方法、连接值的摘要、整体签名值以及其他相关信息, 得到UnitedSignature 元素的子元素―――Siganture元素并且返回给主控模块。

SubDigests 的功能是联接所有SubDigest 元素, 构建SubDigests元素并返回给主控模块。SubDigest 下层子模块由Digest-Value 和DigestInfo 元素组成。DigestValue 获取数据对象、正规化数据对象和计算摘要值所组成,DigestInfo 生成CanonicalizationMethod元素、DigestMethod 元素、Transforms 元素和DigestReferenceonicalizationMethod元素所构成。

3.3 XML 整体签名验证处理模块

对于采用基于XML 整体签名安全通道的各业务接收方而言,消息的接收方要能够看到发送方发送给自己的那部分信息,并对其进行验证。这可以通过调用XML 整体签名验证处理提供的XML 整体签名验证接口来实现。

XML整体签名验证处理模块对外提供XML整体签名验证接口。该模块接收应用程序提供的信息―――整体签名元素和业务方的代号,解析XML整体签名文档,用业务方的代号来匹配SubDigest元素的To 属性值,决定应处理那些SubDigest,调用下层模块,控制和屏蔽验证XML整体签名的结果。

SubDigest 的功能是计算发送方提供给自己的那部分数据信息的摘要值,并替换DigestValue 中的值,为整体签名验证作准备。获取数据对象通过调用公共技术层的数据对象读取器来处理DigestReference 元素,得到摘要计算数据对象并返回,数据对象读取器在处理过程中可能要调用XML 解密处理器来解密EncryptedData 元素或EncryptedKey 元素;规范化数据对象用来规范化获取数据对象所返回的原始数据对象为目标数据对象,且将目标数据对象返回, 在处理过程中要调用算法处理器得到相应的规范化算法对象; 计算摘要值调用算法处理器得到相应的摘要算法对象, 并对目标数据对象进行摘要计算且将摘要值

返回; 替换摘要值将SubDigest 元素的DigestValue 子元素的内容替换为计算所得的摘要值。

Signature 通过调用XML 验证处理器首先验证子摘要值连接值的摘要值,再而验证整体签名值,且将验证结果返回给主控模块。

4 结束语

在实现基于XML 的多方数据通信安全系统时,进行层次划分,利于系统功能的进一步完善,同时在设计时,考虑用户不同的需求,实现了XML 基本加密签名接口和XML 整体签名接口。相信随着XML 技术越来越广泛的应用以及对网络信息安全的关注,会得到广泛的支持和使用。

参考文献

1、W3C. Extensible Markup Language (XML) 1.0 (Third Edition).30 October 2003

2、卢正鼎,李开.SET 协议安全机制分析(J).计算机与数字工程2002,04(30) 1-7

3、于国良,陈哲,韩文报. XML 加密(J).微计算机信息.2006,22(2-3)12-14,103.

4、W3C. XML -Signature Syntax and Processing. February 12,2002

5、W3C. XML Encryption Syntax and Processing. December 10,2002

上一篇:建筑结构设计中CAD技术的有效应用 下一篇:三维地质建模技术的研究与应用