DSS:
数字签名标准(DigitalSignatureStandard)
美国政府用来指定
数字签名算法的一种标准,其中也涉及到非对称加密法。
XML数字签名技术用于对XML格式的数据进行数字签名,以保证报文的完整性,不可否认性,以及提供
身份认证信息。JSR105提供了XML
数字签名的Java接口,而最近发布的JavaSE6则包括了JSR105的实现,从而为基于Java的应用程序提供了标准的XML数字签名接口。本文首先简要介绍技术背景,以实例来讲解XML
数字签名的语法和处理规则,之后用具体的程序例子解释如何使用JavaSE6生成各种格式的XML数字签名并进行验证。
美国国家标准技术局(NIST)在1991年提出作为美国
联邦信息处理标准(FIPS)的
数字签名标准。采用了
美国国家安全局(NSA)主持开发的
数字签名算法(DSA)。所谓
数字签名,是一种用数字通信形式达到签名的功能,目的是证明通信双方的身份、达到确保通信的安全,是一套密码系统。
数字签名是伴随数字编码报文的一个
数据项。
数字签名支持不可否认,即收方能够用数字签名使第3方相信发方的身份,并把它作为依据解决报文发方和收方之间的争端。
XML发展至今,已经逐渐成为标准的数据描述技术,在
分布式应用中广泛地用于数据的交换。由于XML数据本身的非凡性和使用XML进行数据传输的
分布式应用的特点,在对XML文档的特定部分进行签名,多方签名,以及签名后保持XML文档原有的良构特性等诸多方面,传统的
数字签名技术都无法很好地实现。
基于这样的问题,
W3C组织制订了XML
数字签名规范,规定了标准的XML数字签名语法和处理规则。同传统意义的
数字签名相比,XML数字签名能够对XML文档进行细粒度地分析,支持多种方式的文档数据转换,只对文档的特定部分进行签名和验证,并且能够保持XML文档的良构特性。此外,XML
数字签名提供的密钥信息表示方法清楚易读,更加便于签名的自动验证处理。