Chinaunix首页 | 论坛 | 博客
  • 博客访问: 579878
  • 博文数量: 718
  • 博客积分: 4000
  • 博客等级: 上校
  • 技术积分: 4960
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-17 13:24
文章分类

全部博文(718)

文章存档

2011年(1)

2008年(717)

我的朋友

分类:

2008-10-17 13:34:14

级别: 中级

孙 瑛霖, 软件工程师, IBM 中国软件开发实验室 SOA设计中心

2007 年 4 月 16 日

    XML 数字签名技术用于对 XML 格式的数据进行数字签名,以保证报文的完整性,不可否认性,以及提供身份认证信息。JSR 105 提供了 XML 数字签名的 接口,而最近发布的 SE 6 则包括了 JSR 105的 实现,从而为基于 Java 的应用程序提供了标准的 XML 数字签名接口。本文首先简要介绍技术背景,以实例来讲解 XML 数字签名的语法和处理规则,之后用具体的程序例子解释如何使用 Java SE 6 生成各种格式的 XML 数字签名并进行验证。

    数字签名是非对称密钥技术的一种应用模式,用于保证报文的完整性,不可否认性,以及提供身份认证信息。数字签名的原理如图 1 所示。



数字签名的原理

    发送者在发送报文之前,先选用某种摘要算法为报文生成一个摘要值,并使用自己的私钥对摘要值加密,然后将加密后的摘要附在报文后面,一同发送给报文的接收者。接收者收到报文后,从中分离出原始报文和加密后的报文摘要,使用与发送者相同的摘要算法计算原始报文的摘要值 D,并使用发送者的公共密钥将加密后的报文摘要解密得到摘要值 D’,检查 DD’ 是否匹配。

    如果匹配,那么由于密钥对的唯一性,所以可以确定报文发送者的身份,而且由于数据摘要算法的特点,还可以确定原始报文在传输过程中没有被篡改。

    XML 发展至今,已经逐渐成为标准的数据描述技术,在分布式应用中广泛地用于数据的。由于 XML 数据本身的特殊性和使用 XML 进行数据传输的分布式应用的特点,在对 XML 文档的特定部分进行签名,多方签名,以及签名后保持 XML 文档原有的良构特性等诸多方面,传统的数字签名技术都无法很好地实现。

    基于这样的问题,W3C 组织制订了 XML 数字签名规范,规定了标准的 XML 数字签名语法和处理规则。同传统意义的数字签名相比,XML 数字签名能够对 XML 文档进行细粒度地分析,支持多种方式的文档数据转换,只对文档的特定部分进行签名和验证,并且能够保持 XML 文档的良构特性。此外,XML 数字签名提供的密钥信息表示方法清晰易读,更加便于签名的自动验证处理。

本节用一个简单的例子来介绍 XML 数字签名的语法和处理规则。



                
 1.	
 2.	
 3.	  Peter
 4.	  10000

 5.	  
 6.	    4392 5649 8178 2315
 7.	    CMB
 8.	    06/2010
 9.	    USD
10.	  
11.	
	

    表 1 中的 XML 文档描述了 Peter 的信用卡支付记录。在按照 XML 数字签名规范对整个文档签名之后,生成的 XML 文档如表 2 所示:



                
 1.	
 2.	
 3.	  Peter
 4.	  10000
 5.	  
 6.	    4392 5649 8178 2315
 7.	    CMB
 8.	    06/2010
 9.	    USD
10.	  

11.	  
12.	    
13.	      
14.	      
15.	      
16.	        
17.	          
18.	        
19.	        
20.	        9gETxLIm1huTZtMkmGlybtZWa5g=
21.	      
22.	    

23.	    
OIFpnZmeGt+tOywzTgrcYBje/04uGmGIrbZYYxxXj4jsBdq+0JwZ1A==


24.		
25.			
26.			  
27.				

28. /KaCzo4Syrom78z3EQ5SbbB4sF7ey80etKII864WF64 29. B81uRpH5t9jQTxeEu0ImbzRMqzVDZkVG9xD7nN1kuFw== 30.

31. li7dzDacuo67Jg7mtqEm2TRuOMU= 32. 33. Z4Rxsnqc9E7pGknFFH2xqaryRPBaQ01khpMdLRQnG 34. 541Awtx/XPaF5Bpsy4pNWMOHCBiNU0NogpsQW5QvnlMpA== 35. 36. 37. NMxkCcO6Hdd146qBJ4FQGPpz8IncS8onBPshqlxsd 38. pAqgM2lgn8kCPHqfO7jLx7NPZwHeDtHLfKKSYg+Ln6Xzw== 39. 40.
41.
42.
43.
44.

 

[1]     

【责编:Peng】

--------------------next---------------------

阅读(368) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~