随着互联网的发展,微软在推出.Net平台的同时推出了XML,自XML诞生以来,就得到了迅速推广,已经成为一种新的数据交换标准。在XML越来越被广泛应用的同时,XML安全性问题也更加受到关注,如果不能保证数据交换过程中的安全,这种数据交换格式是不完整的。
XML加密的优势
目前TLS/SSL已经是在网络上提供通信双方端到端的安全对话非常可靠的协议,XML这种有结构的数据在网络传输方面有它自己的安全需求,比如我们将同一个文件发送给不同的接收者,我们对他们需要保密的信息不同时,使用TLS/SSL不能解决,这是TLS/SSL未涉及的领域,还有一个方面也是TLS/SSL未能覆盖的功能那就是多方之间的安全对话。
部分数据加密
XML加密可以对被传输的数据进行加密粒度的控制,以在线购书为例,每次提交订单时用户提供的信息应包括书籍信息(书名,作者,订购数量等)和账户信息(信用卡帐号,密码等),所有信息以XML的数据格式发给图书商的发货处和财务。对财务来说,所有信息都可以公开,对发货处来说,我们应该对读者的账户信息进行加密,TLS/SSL只保证传输过程安全,数据在传输结束后的信息是全部公开的。
多方之间的安全对话
使用XML加密,对话中的每一方都可以与任何通信方保持安全和非安全状态。可以在同一个文档中交换安全和不安全数据。
作为SOAP协议的安全性扩展
SOAP协议可以通过嵌入加密的XML数据,实现在消息传输的应用层灵活的加密策略,并且在分布式环境下能交换有结构的数据。
XML加密技术实现
XML加密标准如下:
加密后的文件仍旧是格式良好的XML文件。
使用XML加密对整个文档加密
使用XML加密对单个元素加密
这里不仅加密了原文件的Payment元素,这个加密后的文件Payment元素被保护,order子元素保持原样,这就实现了一个文档传送给不同部门,而又保证数据安全的策略。
使用XML加密对元素内容加密
这种加密方式更直接,只加密了元素CardId的内容,这里的type属性值里面的#Content表明加密的仅仅是元素内容,更加适合解决我们在分布式、跨平台的网络环境下的安全性问题。
在XML加密中,加密对象可以是任何数据,XML的优势来自它的严谨的结构和可扩展性,随着XML越来越被广泛应用,安全性技术的研究也将不断的发展和进一步完善!