APP下载

高级加密标准在XML文档传输中的安全性研究

2014-01-15赵登攀

电子设计工程 2014年19期
关键词:数字签名加密技术解密

赵登攀,高 凯

(陕西理工学院教务处 陕西 汉中 723000)

电子商务从出现以来就以其巨大的能量和动力给整个世界的经济运行方式和社会生活形态带来了深刻的变化。它不仅开辟一条新的网上销售渠道,而且改善企业经营模式、优化交易过程、降低库存损耗、保持资金全部周转和降低实际销售支出,进而降低经营成本,增加企业收入和效率,并帮助企业与客户、供应商以及合作伙伴建立更为密切的合作关系。可以说谁掌握了电子商务、谁就在未来的商战中掌握了制胜的商机[1]。可扩展标记语言XML由于其自身的优点迅速成为在电子商务网络数据表示和信息交换的事实标准。本文正是基于以上背景,提出一种新的XML安全策略来保证电子商务信息的安全。

1 XML的应用

扩展标记语言XML(Extensible Markup Language)是世界万维网联盟W3C制定的一种数据标准。它以其结构化、互操作性、易于交换和可扩展性的特点在很多行业得到了广泛的应用[2]。由于XML具有良好的数据存储格式、可扩展性、高度结构化和便于网络传输,非常适合电子商务应用的需要。由于其卓越的性能表现以及为其所制订的一些与电子商务相关的规范,使XML成为一种广泛应用的电子商务描述语言,并在电子商务的各种信息交换中发挥重大作用[3-4]。

2 目前XML的安全加密技术

随着XML技术在互联网的广泛应用和发展,XML数据的安全得到了广泛关注,XML安全技术包括XML加密标准、XML数字签名标准、XML公钥管理规范、XML存取控制标记语言以及XML权利标记语言(XrML)等[5]。

2.1 XML加密技术

XML加密技术的基础是XML加密规范,此规范由W3C制定。XML加密的最主要特点是可以对整个XML文档加密,还可以对XML文档中的任意元素和元素内容进行加密。XML加密技术用于对网络数据进行加密,形成加密后的XML格式文件后再安全地发送给接收方,达到了提高文件传送安全性的目标。

2.2 XML加密技术特点和方法

XML加密技术能够对整个文件加密。但是其最主要的特点是其作为一种结构化数据,能够控制对不同元素的授权查看[6-7]。

XML加密技术的主要特点有:

1)在数据传输过程中的每个节点都能保持数据的安全性;

2)支持包括XML文档在内的任意内容的加密;

3)以XML形式表现被加密的数据;

4)可以从XML文档中选出一部分内容进行加密。

XML加密技术实现这种应用的方法是引入了加密颗粒度(Encryption Granularity)的概念,即对每个 XML文件都可以进行如下操作:

1)加密整个XML文档;

2)加密文档中的任意元素;

3)加密文件中元素的内容;

4)对加密过的元素或内容进行再加密。

2.3 XML加密与传统加密的比较

目前已经存在一些Internet加密和安全协议,SSL/TLS则只能是对整个文档进行加密。XML加密并不能替代这些己有的安全协议,不过它能解决完全不同类型的安全性问题。目前对XML文档加密的研究都只限于一般加密标准的使用,国外近几年在新的加密标准上也有所研究,特别是将高级加密标准结合XML文件传输在电子商务平台应用的也较少,为此正是本文研究的意义。

3 XML安全技术在电子商务平台中的实现

本节首先提出结合XML文档传送的电子商务平台安全框架,并结合使用高级加密标准 (AES)算法,以.NET开发的电子商务平台中订单转化XML文件,并对该订单进行加密解密处理,最后测试实现了XML文档加密解密的模块功能,提高了电子商务交易中的在线支付的安全性。

3.1 系统的安全框架设计

为了保证购物中订单信息的安全性,根据网站平台对XML数据安全的要求,所设计的电子商务平台XML数据安全框架如图1所示,首先需要把订单在发送端转化为XML文档,然后进行安全处理并通过网络传送。

图1 XML安全系统框架Fig.1 The XML security system framework

3.2 高级加密标准(AES)算法的使用

随着对称密码的发展,DES数据加密标准算法由于密钥长度较小(56位),已经不适应当今分布式开放网络对数据加密安全性的要求,因此1997年NIST公开征集新的数据加密标准,即AES。经过三轮的筛选,比利时Joan Daeman和Vincent Rijmen提交的Rijndael算法被提议为AES的最终算法。此算法将成为美国新的数据加密标准而被广泛应用在各个领域中。尽管人们对AES还有不同的看法,但总体来说,AES作为新一代的数据加密标准汇聚了强安全性、高性能、高效率、易用和灵活等优点。AES设计有3个密钥长度:128,192,256位,相对而言,AES的 128密钥比 DES的 56密钥强1 021倍。AES算法主要包括3个方面:轮变化、圈数和密钥扩展。综上所诉,AES是指定的标准密码系统,未来将由政府和银行业用户使用。为了进一步提高电子商务应用领域电子订单加密的安全性,在后面的设计中将采用这种算法。

3.3 加密解密和数字签名的流程设计

根据设计分析和前面章节对数据加密算法的分析结果,从加解密速度、系统开销、密钥管理和安全性等方面考虑,该电子商务平台中的重要关键信息用到AES加解密算法进行加密。再结合System.Security.Cryptography.Xml命名空间中的类设计数字签名模块。首先设计出整个加密解密的系统流程图如图2所示。

图2 XML文档加密和数字签名流程图Fig.2 XML encryption and digital signature flow chart

3.4 XML订单加密和数字签名的设计方案

在后台登录管理新添加一个加密设置模块页面Manager Security.aspx,管理员通过登录后台管理界面,在“加密信息设置”菜单内设置加密和数字签名的方案,并且可以灵活的设置需要加密的字段。这个管理权限只有管理员可以使用,这样即使前台用户查看已经加密的订单,也无法获知本平台是设置的何种加密方式,保证了订单在网上传送的安全性。如图3电子商务平台后台管理界面中的加密信息设置模块。管理员可以在后台管理中设置需要加密的字段,如在购物过程中中的信息不需要卖方知道,只需要银行知道,那就可以在图3的表单中框填写CreditCard字段,设置对其的加密,也可输入多个需要加密的字段,中间用“,”分开即可。

图3 后台管理界面中的加密信息设置模块Fig.3 Encryption information background management interface settings module

3.5 加密解密和数字签名核心算法的实现

通过上面的分析过程,目前完成Signature.cs、Asymmetric.cs和SymmetricKey.cs这3个类的设计是系统的核心问题,结合高级加密标准 (AES)算法和C#编程的方式,下面具体分析一下其实现的核心算法程序。

1)用对称密钥对XML元素进行加密的实现过程

可以使用 System.Security.Cryptography.Xml命名空间中的类对XML文档中的元素进行对称加密。此加密使用高级加密标准(AES)算法对XML元素进行加密。主要程序如下:

public class SymmetricKey

{public static RijndaelManaged CryptographyXml(string fileUrl, string targetUrl, string tagName){RijndaelManaged key=null;

try{

key=new RijndaelManaged();

XmlDocument xmlDoc=new XmlDocument();

xmlDoc.PreserveWhitespace=true;

xmlDoc.Load(fileUrl);

Encrypt(xmlDoc, tagName, key);xmlDoc.Save(targetUrl);}

catch (Exception e)

{throw new Exception("出现异常"); }

return key;}

2)对称密钥对XML元素解密的方案

当使用对称算法对XML数据进行加密时,必须考虑使用相同的密钥对XML数据进行解密。上述的方案不在加密的XML中存储或加密AES密钥。

使用System.Security.Cryptography.Xml命名空间中的类对XML文档中的元素进行非对称加密。使用了两个密钥对一个XML元素进行加密。它生成RSA公钥/私钥对,并将密钥对保存到安全密钥容器中。然后使用高级加密标准(AES)算法创建一个单独的会话密钥XML数据保存到XML文档中的新 元素中。用非对称密钥对XML元素进行加密的实现方案,主要程序如下:

public class Asymmetric

{public static void CryptographyXml (string fileUrl, string targetUrl, string tagName)

{XmlDocument xmlDoc=new XmlDocument();

try{

xmlDoc.PreserveWhitespace=true;

xmlDoc.Load(fileUrl);}

catch

{throw new Exception(“加载文件错误”);}

CspParameters cspParams=new CspParameters();

cspParams.KeyContainerName= “XML_ENC_RSA_KEY”;

RSACryptoServiceProvider rsaKey=new

RSACryptoServiceProvider(cspParams);

try

{Encrypt(xmlDoc, tagName, “EncryptedElement1”,rsaKey, “rsaKey”);

xmlDoc.Save(targetUrl);}

catch

{throw new Exception("加密文件失败");}

finally

{rsaKey.Clear();}}

对XML元素进行非对称密钥解密,可从密钥容器中检索出 RSA私钥,用它对密钥进行解密,然后使用会话密钥对文档进行解密。

3)XML数字签名和验证的实现过程

可以使用 System.Security.Cryptography.Xml命名空间中的类通过数字签名对XML文档或XML文档的部分进行签名。数字签名后还可以验证签名数据没有被更改。下面的程序算法创建一个RSA签名密钥,将该密钥添加到安全密钥中,然后使用该密钥对XML文档进行数字签名。最后我们可以检索该密钥来验证XML数字签名。对 XML文档进行数字签名的算法实现方案,主要程序如下:

///

public class Signature

{public static void CryptographyXml (string fileUrl,string targetUrl,string tagName)

{XmlDocument xmlDoc=new XmlDocument();

try{xmlDoc.PreserveWhitespace=true;

xmlDoc.Load(fileUrl);}

catch{}

CspParameters cspParams=new CspParameters();

cspParams.KeyContainerName= “XML_DSIG_RSA_KEY”;

RSACryptoServiceProvider rsaKey=new

RSACryptoServiceProvider(cspParams);

try{

SignXml(xmlDoc, rsaKey);

xmlDoc.Save(targetUrl);}

catch{}

finally{rsaKey.Clear();}}

验证 XML文档的数字签名算法实现方案:

①必须使用与签名时所使用的非对称密钥相同的密钥。

②使用RSACryptoServiceProvider类检索公钥。

③通过从磁盘加载XML文件创建的对象。

④创建一个新的 SignedXml对象,并将 XmlDocument对象传递给它。

⑤找到元素,并创建新的XmlNodeList对象。

⑥将第一个元素的 XML加载到 SignedXml对象中。

⑦使用CheckSignature方法和 RSA公钥检查签名。此方法将返回指示成功或失败的布尔值。

4 系统测试与分析

由于网上交易涉及到买卖双方和银行,买卖双方只需要知道购买的订单信息和客户的联系方式,而不需要知道客户的信用卡信息。而作为双方中介的银行不需要知道客户的订单信息,只需要知道客户的信用卡信息。这样我们就需要对订单中需要加密和保护隐私的元素进行选择加密,然后再把订单信息通过网络发送出去,完成网上交易,保证信息的安全性。以加密订单文件中的最为重要的信用卡信息为例进行测试。

选择的系统测试环境如下:

1)测试软件:Microsoft Visual Studio 2008,C# 编程

2)测试环境:Windows XP SP2,NET Framework 3.5,Internet Explorer 7.0,IIS 5.1

3)引用组件:System.Security.dll

4)命名空间:System.Xml、System.Security.Cryptography 和System.Security.Cryptography.Xml。

4.1 对称密钥对XML元素加密和解密的测试

电子商务网站生成一个名为 “20091218204059.xml”的订单文件。 且该文件中包含一个“”元素。 在后台设置对“”元素进行加密,选择用对称密钥方式进行加密测试。

1)用对称密钥对进行加密,平台测试成功。

加密后生成一个20091218204059_3.xml的订单文件,表示对源XML文件加密已经成功。

2)对称密钥解密程序在此省略。用对称密钥对进行解密。

非对称密钥对XML元素加密和解密的测试和XML数字签名和验证的测试在此省略。

4.2 测试结果分析

通过对称密钥对 XML元素加密和解密测试,在XML文档编写符合规范情况下,可以对任意需要加密的XML元素进行加密,这样就提高了XML文档在网络中传输的安全性。通过非对称密钥对XML元素加密和解密测试,也达到了加密任意XML元素的目的。通过XML元素数字签名和验证的测试,达到了XML文档在网络传输中签名和验证的需要,进一步提高了电子商务平台的安全性。

5 结束语

本文对电子商务的概念及其安全性做了相关的介绍说明,探讨了如何利用XML技术加强其安全性,即XML加密和XML数字签名不但可以保护数据的私有性,还能对整个交易提供数字证明,保证交易的不可抵赖性。同时,基于软件复用性的思想,将XML签名与加密技术的实现进行组件化封装,在保护数据安全的同时也提高了软件的可重用性。

[1]Gray P Schneider,James T Perry.电子商务[M].成栋,译.北京:中国机械工业出版社,2000.

[2]傅海英,李辉,王育名.XML及相关安全研究进展[J].计算机应用研究,2004(4):86-88.FU HAI-ying,LI Hiu,WANG Yu-ming.An overview of XML and XML-related security[J].Application Research of Computers,2004(4):86-88.

[3]Mark Birbeck.XML高级编程[M].北京:机械工业出版社,2005.

[4]赵克立.XML1.x编程培训教程[M].清华大学出版社,2002.

[5]XrML [EB/OL].http://technet.microsoft.com/zh-cn/library/cc747717(WS.10).aspx.

[6]耿建勇.XML安全技术的应用研究[D].北京:中国科学院,2005.

[7]耿建勇,鲁士文.基于XML加密规范的安全数据交换的实现[J].计算机应用与软件,2005(2):99-101.GENG Jian-yong,LU Shi-wen.Safe data exchange based on XML encryption[J].Computer Applications and Software,2005(2):99-101.

猜你喜欢

数字签名加密技术解密
海洋水文信息加密技术方案设计与测试
运用数据加密技术维护网络安全的可靠性研究
炫词解密
解密“一包三改”
浅析计算机安全防护中数字签名技术的应用
炫词解密
数据加密技术在计算机网络通信安全中的应用
基于数字签名的QR码水印认证系统
数字签名简述
在计算机网络安全中数据加密技术的应用