XML 数字签名
XML 签名语法和处理(XML 签名)是定义签署和验证数字内容的数字签名的 XML 语法和处理规则的规范。该规范由万维网联盟 (W3C) 和因特网工程任务组织 (IETF) 共同开发。
XML 签名没有引入新的密码算法。WebSphere Application Server 将 XML 签名与现有算法(如 RSA、HMAC 和 SHA1)配合使用。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 安全性 X.509 证书令牌概要文件文档中的“对主体集密钥标识的引用”。
- 消息完整性
- 消息接收方可以确认在密钥签署这些消息部分后,攻击者或事故没有改变这些部分。
- 认证
- 您可假设有效签名为所有权证明。由认证中心发出的带数字证书的消息和由证书中公用密钥成功验证的消息中的签名,是签署者有相应专用密钥的证明。接收方可通过检查证书的可信度认证签署者。
当前实现中的 XML 签名
在 Web Service 安全性中支持 XML 签名,但是应用程序编程接口 (API) 是不可用的。当前实现有许多硬编码的行为,并有一些用户可操作配置项。要为数字签名配置客户机,请参阅“为响应数字签名验证配置客户机:验证消息部分”。要为数字签名配置服务器,请参阅“为请求数字签名验证配置服务器:验证消息部分”。
安全性注意事项:
在重放的攻击中,攻击者窃听线路,接收已签署的消息,然后将该消息返回到接收方。在这种情况下,接收方两次接收相同消息,并且如果签名有效,可能这两条消息都要进行处理。如果消息是认领金钱,那么处理两条消息可能使接收方受损失。如果在一次消息重放中有已签署的生成时间戳记和已签署的截止时间,那么可能会减少攻击。但这不是完整的解决方案。消息必须有现时标志值以预防这些攻击,而接收方必须拒绝包含已处理的现时标志的消息。当前实现不提供在消息中生成和检查现时标志的标准方法。在 WebSphere Application Server V5.1 中,仅在用户名令牌中支持现时标志。用户名令牌概要文件包含用户名令牌的具体现时标志使用方案。应用程序处理现时标志(如序列号)并且需要对其进行签署。