XML 数字签名
XML 签名语法和处理(XML 数字签名)是定义 XML 语法和处理规则以签署和验证数字内容的数字签名的规范。该规范由万维网联盟 (W3C) 和因特网工程任务组织 (IETF) 共同开发。
XML 数字签名没有引入新的密码算法。WebSphere® Application Server 将 XML 数字签名与现有算法(如 RSA、HMAC 和 SHA1)配合使用。XML 签名定义许多用于描述密钥信息的方法并启用新方法的定义。
当您使用 XML 签名时,经常需要 XML 规范化 (c14n)。在已序列化的 XML 文档中可用各种方法表示信息。例如,尽管以下示例的八位字节表示法是不同的,但它们是等同的:
- <person first=“John” last=“Smith”/>
- <person last=“Smith” first=“John”></person>
C14n 是用于规范化 XML 信息的进程。因为规范化的信息取决于此算法,所以要选择适当的 c14n 算法。 c14n 的一个主要算法,即专用 XML 规范化,它规范化字符编码方案、属性顺序、名称空间声明等等。该算法不规范化标记外的空白、名称空间前缀或数据类型表示法。
Web Service 安全性核心规范中的 XML 签名
Web Service 安全性核心 (WSS-Core) 规范定义将 SOAP 消息合并到 XML 签名中的标准方法。在 WSS-Core 中,您几乎可使用除被包络签名和包络签名之外的所有 XML 签名的功能。但是,WSS-Core 有一些建议(如 c14n 的互斥规范化算法)和一些其他的功能,如 SecurityTokenReference 和 KeyIdentifier。
KeyIdentifier 是 X.509 证书中 SubjectKeyIdentifier 字段的值。有关 KeyIdentifier 的更多信息,请参阅 OASIS Web Service Security X.509 证书令牌概要文件文档中的“对主体集密钥标识的引用”。
通过在 SOAP 消息中包含 XML 签名,实现以下几点:
- 消息完整性
- 消息接收方可以确认在密钥签署这些消息部分后,攻击者或事故没有改变这些部分。
- 认证
- 您可假定有效签名为所有权证明。一条消息如果具有由认证中心发放的数字证书,并且该证书中的公用密钥能够成功地对该消息中的签名进行验证,那么证明签署者具有相应的专用密钥。接收方可通过检查证书的可信度认证签署者。