首页 > 范文大全 > 正文

一种基于XML的电子订单安全方案

开篇:润墨网以专业的文秘视角,为您筛选了一篇一种基于XML的电子订单安全方案范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘要:本文设计并实现了一种基于xml电子订单安全方案,用XML加密实现了订单敏感信息的保密性,用XML签名保证了电子订单数据的完整性、身份验证性和不可否认性。对于加密、签名次序可能产生的验证错误,使用XML签名的解密变换来解决。

关键词:电子商务;XML加密;XML签名;解密变换

中图分类号:TP393文献标识码:A文章编号:1009-3044(2007)06-11569-03

1 引言

可扩展标记语言XML(Extensible Markup Language)具有易扩展、跨平台等特点,被认为是网络数据交换和的标准格式。目前已经得到越来越广泛的应用,尤其是在具有大量数据交换的电子商务、电子政务等领域。XML文件的安全问题也受到更为广泛的关注[1]。

目前,在与XML相关的安全性领域方面开发规范的最重要部分是XML加密、XML签名、XML访问控制语言XACL(XML Access Control Language)、安全性断言标记语言SAML(Security Assertion Markup Language)和XML密钥管理规范XKMS(XML Key Management Specification)[2]。XML加密不仅能同传统的SSL或TLS一样对整个XML文件加密,而且能对文件的不同部分进行不同的加密,以保证数据的机密性。同样,XML数字签名不仅可以像传统数字签名一样对整个数据签名、保证数据的完整性、不可否认性以及提供身份鉴别,而且能实现更细粒度的签名及多重签名。

XML加密的目标是用XML描述一个经过数据加密的Web资源,该资源可以是HTML文件、XML文件、JPG文件和其他任何文件,也可以是XML文件中的任何元素和内容。实质上,XML加密并没有定义新的加密算法,而是XML技术和现有加密算法的结合[3]。XML加密可以灵活地选择加密对象,即加密粒度具有可选性:①对整个文档加密;②对单个元素加密;③加密元素内容;④加密非XML数据。这样就可对同一文件中不同信息进行不同的加密处理,XML加密保证了交换数据的机密性。

XML签名是一个W3C的推荐标准[4],可以服务于任何数据类型的文档。不管这个文档是远程的还是本地的,甚至是XML文档中的一个元素或元素的内容。XML签名用来鉴别用户、保证数据完整性和数据操作的不可否认性[5]。根据签名元素和被签名对象之间相对位置,有以下几种方式:

(1)封装式签名(Enveloping Signatures):被签名数据封装在XML签名元素的内部,Signature元素类似于一个信封。

(2)被封装式签名(Enveloped Signatures):Signature元素本身被嵌入到被签名数据中,被签名数据充当包含签名的信封。

(3)分离式签名(Detached Signatures):Signature元素和被签名数据是彼此分离的,两者之间不存在包含和被包含关系。被签名数据可以是独立的外部文档,也可以是与Signature元素位于同一XML文档内的并列的兄弟元素。

在电子商务中,不仅要保证交易中敏感信息的机密性,还要保证机密信息的完整性,即运用有效的方法来确定机密数据是否被改变。对于大多数电子交易,还要确定客户是否具有合法的身份,并对已经执行的操作不能抵赖。如果单独使用XML加密或XML签名,只能保证交换数据在某些方面的安全性,而不是一个真正安全的数据交换。在电子商务日益发展的今天,一种集机密性、可验证性、完整性和不可否认性于一体的安全电子数据交换方案被迫切需要,本文基于XML加密和XML签名,设计并实现了一种XML格式电子订单的安全方案。

2 方案的设计与实现

2.1 整体设计

在电子商务中,电子订单是最为常见的数据交换形式之一,而订单中的银行账户等信息对客户来说是比较敏感的。对敏感信息的保护是客户和商家的共同要求。方案首先通过加密XML订单的敏感部分来实现数据保密性的要求,然后对整个订单签名,一方面防止订单被篡改,另一方面有效验证客户身份,并防止客户对已签发订单的否认。本方案使用XML加密标准定义的非对称加密算法RSA来传输对称加密算法的单密钥,使用对称加密算法3DES对订单加密,使用XML推荐定义的带有SHA-1杂凑函数的RSA对订单签名。实现流程如图1所示。

(1)客户、公司分别向PKI服务器注册自己的密钥对;

(2)客户查找公司的公钥;

(3)客户使用公司的公钥对生成的对称单密钥加密,并且使用自己的私钥签名;

(4)公司查找客户公钥,验证客户身份,用自己的私钥解密并获得对称单密钥,同时保存客户的公钥证书等相关信息到本地;

图1 安全XML订单方案的流程

(5)客户使用已传送的对称单密钥加密订单,并用自己的私钥签名;

(6)公司使用客户公钥进行签名验证,并使用对称单密钥解密订单。

2.2 加密与签名实现

在方案的示例中使用了一份虚拟订单,它包括订购信息和客户账户信息等,实际应用中可能会有所变化,但处理思路完全相同。订单采用对XML元素内容加密,加密客户敏感的付款信息部分。这里我们使用CBC模式的3DES算法,并假设解密密钥已通过RSA算法加密传给接收方。

签名采用封装式签名对加密后的XML订单签名,目的是保证整个订单的完整性,签名按以下步骤生成:

(1)计算资源的摘要值;

(2)创建元素;

(3)生成签名值;

(4)创建元素。

2.3 用解密变换解决解密破坏签名的问题

2.4 验证与解密

验证签名时首先要根据元素的内容,查找相应公钥证书,验证公钥证书的有效性(包括正确性、完整性、有效期、撤消情况、证书策略等),若无效,则验证失败;若有效,就验证签名本身。

签名的验证过程分为引用验证和签名验证两个步骤。引用验证使用元素中指定的杂凑函数来处理元素引用的Id属性为EnvelopedNote的元素,将计算的摘要值与元素的内容做比较,如果不匹配则验证失败。签名验证使用方法对规范化形式的元素计算签名值,然后把签名值和元素内的值比较,如果不匹配,则验证失败。

若验证成功,使用相应的对称单密钥解密元素。

3 结束语

构建安全的电子订单是电子商务广泛应用的一个必要条件,本文使用XML加密和签名技术,设计并实现了一种电子订单的安全方案。方案既保证了电子订单中敏感信息的保密性,也保证了电子订单的数据完整性、身份验证性和不可否认性。对于加密、签名的次序可能产生的验证错误,使用W3C推荐的XML签名解密变换来解决。随着电子商务的进一步发展,XML安全标准将会更为成熟,其应用也将更为广泛和深入。

本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。