1 引言
双重签名可以延伸到保证在任何一个事务处理过程中三方安全地传输信息的一种技术,用与三方通信时的身份认证和信息完整性、交易防抵赖的保护。双重签名除了在应用范围可以延伸,扩展此技术的原理可以应用到保护一个业务链在处理事务过程中多方安全地传输信息,用来保证多方通信时的身份验证和信息完整性、交易防抵赖的保护。
经过对双重签名技术的两轮扩展后本文提出整体签名技术(UnitedSignature)。它继承和发扬双重签名技术的特点,适用于如下应用情景:现有一个多方业务链,由多个通信方:A,B,C,D,E,…,X,…组成,其中A为业务发起方,这个业务发起方在处理业务时需要提供给其它各方信息,这些信息组成一个信息流,信息流中包括A需要提供给B的敏感信息一一>Info(A-B),提供给C的敏感信息一一>Info(A-C),提供给D相应的敏感信息一一>Tnfo(A-D),提供给E相应的敏感信息一一>Info(A-E),等等。在这个业务链的模型如下图:
2基于整体签名的多方通信安全模型
本文采用数字信封技术对所要发送给各业务方的敏感信息分别加密以保证这些信息的机密性,此安全信道的工作过程如下:
2.1A端发出业务请求,产生发送给参与业务的B, C, D, EX,…的敏感信息,记为Tnfo(A-B) , Tnfo(A-C) , Tnfo (A-D) , Tnfo(A-E) ,…、Info(A-X) ,…,并且对这些敏感信息进行安全处理。
2.2信息的发送
各方所得到的敏感信息可由A方直接发送,也可以是它的业务上家转发。
2.3信息的解密及验证
3 XML整体签名技术
3.1XML整体签名技术的特点
XML整体签名技术包括两个方面:将整体签名技术应用于保护XML数据的安全,以及用XML来作为整体签名加密技术的数据传输和交换的载体。这两个方面相互作用,所以要从这两个方面来讨论XML整体签名技术的特点:
3.1.1 将整体签名技术应用于保护XML的安全同样可以发挥该加密技术整体签名、部分验证的技术特点。业务链的XML信息发送方对所有提供给其他业务方的XML敏感数据进行基于整体签名技术的安全处理,而这些接收方可以解密提供给自己那部分XML数据密文,并通过验证整体签名来确定所得到的XML数据明文的数据确认性、完整性和不可否认性,这样可以增强XML业务链的业务处理效率,并且使得消息的发送方只需要和其中某个特定的上游业务方交互,而无须考虑这些上游业务方之间的交互,因为信息可以互相转发并目_转发过程是安全的,而且能够排除多次转发过程中的业务处理错位的可能性。
3.1.2 XML是一种用来描述数据的标记语言,具有对数据进行统一描述的强大功能;XML语言具有平台无关性的特点,可以摒弃由于通信各方的平台异构所带来的不良影响;XML语言自身具有结构化特征,可以在同一个XML文档中携带所有的信息,减少交互的复杂度,提高效率;XML语言具有很好的可扩展性,使得XML语言非常的灵活。
3.2 XML整体签名的处理过程
3.2.1 XML整体签名的产生
(1)构建SubDigest元素(这个过程是个循环的过程)
(2)将各个SubDigest元素放在一起,构建SubDigests元素;
(3)构建ds:Signature元素;(其中,用ds:Reference元素来表示需要连接的所有的子摘要和联接摘要值;用ds:SignatureValue元素表示整体签名值);
(4)构建UnitedSignature0句ect元素(其中,如果要表示数据密文,遵从XML加密规则来构建EncryptedData元素并替换数据对象明文);
(5) 构建UnitedSignature元素。
3.2.2 XML整体签名的验证
(1) 替换摘要值
a. 从SubDigests元素中通过SubDigest元素的To属性值找到本业务方应处理的那些SubDigest元素。b. 通过SubDigest元素的DigestInfo子元素的DigestReference元素得到被计算摘要的数据对象。其间,要通过DigestReference的URI属性表示的数据对象引用和子元素ds:Transforms元素表示的转换列表得到目标数据对象(若有解密转换,需要对EncryptedData元素解密)。c. 根据:Digest元素所给出的规范化算法规范化上面所得的数据对象,并根据Digest元素给出的摘要算法计算规范化后的数据对象的摘要值。d. 用此摘要值替换DigestValue元素的内容。
(2) 验证ds:Signaure元素
以上讨论了XML整体签名的处理规则,包括XML整体签名文档的产生与验证。
处理规则中要涉及到XML加密/解密和XML签名/验证,这些过程的处理规则符合W3C XML加密规范和XML签名规范。
4 系统的功能结构
5XML加密签名层
5.1数据对象读取模块
在XML整体签名过程中,获取数据对象的要求贯穿整个处理过程的始终。其中,处理子摘要信息时对DigestReference元素进行处理从而读取被计算摘要数据对象、处理签名信息时对Reference元素进行处理从而读取子摘要连接值的数据对象、处理加密信息时对CipherReference元素进行处理从而读取密文数据对象,这些都是XML整体签名中数据对象读取的典型,分为两个步骤:对URI引用属性的处理和对Transforms转换列表的处理,这涵盖了XML整体签名中其它情况的数据对象读取时要处理URI引用属性的要求,又有需要处理Transforms列表的要求。
5.2XML加密处理模块
XML加密/解密处理过程中涉及到三个角色:应用程序--提出加密实现的请求,并提供加密/解密处理所必需的数据和变量;加密器--XML文档加密的实现;解密器--XML加密文档解密的实现。
W3C加密规范所描述的XML加密的处理过程如下:(1)选择加密的算法;(2)获取并表示密钥;(3)加密数据;(4)构建EncryptedType(EncryptedData或者EncryptedKey)元素;(5)处理EncryptedData元素。
6 总结
本文在对现有的XML安全规范做了分析研究后,针对基于XML网络通信技术的业务链的多方通信过程中XML数据安全问题,提出了一种XML安全技术一一XML整体签名技术,并围绕实现XML整体签名这一目的,在分析了XML整体签名、XML签名规范和XML加密规范这三者关系的基础上设计了XML的多方通信安全系统,实现了XML基本加密签名和XML整体签名。
作者:钱超 来源:中国新技术新产品