XML签名(XML Signature)是什么 怎么保证数据完整性

幻夢星雲
发布: 2025-12-14 21:53:02
原创
469人浏览过
XML签名通过规范化+分段摘要+SignedInfo整体签名的闭环验证保障完整性。具体为:对每个Reference数据规范化后计算摘要,比对DigestValue;再规范化SignedInfo并验证SignatureValue,任一不匹配即失败。

xml签名(xml signature)是什么 怎么保证数据完整性

XML签名(XML Signature)是一种基于标准的数字签名机制,专门用于保障XML文档或其中部分内容的完整性、真实性和不可否认性。它不是简单地把整个XML文件哈希后加密,而是支持灵活选择签名目标(比如某个元素、多个节点,甚至外部资源),并能抵抗XML格式差异带来的干扰。

XML签名的核心组成

一个典型的XML签名包含在<signature></signature>元素中,主要由三部分构成:

  • SignedInfo:签名的“元信息”,包括规范化方法、签名算法、所有被签名数据的引用(<reference></reference>)及其摘要值(DigestValue);
  • SignatureValue:对SignedInfo规范化后的结果,用私钥加密生成的数字签名;
  • KeyInfo(可选):提供验证所需的公钥信息,如X.509证书、密钥名称等。

怎么保证数据完整性

完整性不是靠“一次哈希”完成的,而是一套闭环验证逻辑:

  • 对每个<reference></reference>指定的数据,先做规范化(Canonicalization),消除空格、换行、属性顺序等无关差异;
  • 再用SHA-256等算法计算摘要,与签名中记录的DigestValue比对——不一致说明该部分被篡改;
  • 同时,对整个SignedInfo块也做规范化+摘要,并用公钥解密SignatureValue,两者匹配才确认签名本身未被伪造;
  • 即使只改了一个字符(比如把<amount>1000</amount>改成<amount>1001</amount>),所有相关摘要都会失效,验证直接失败。

三种常见签名形式

适应不同使用场景:

Pinokio
Pinokio

Pinokio是一款开源的AI浏览器,可以安装运行各种AI模型和应用

Pinokio 232
查看详情 Pinokio
  • Enveloped(内嵌式):签名放在被签名的XML内部,且<signature></signature>元素本身不参与签名(通过enveloped-signature变换自动排除);
  • Enveloping(封装式):XML内容作为子元素嵌入<signature></signature>中,适合打包传输;
  • Detached(分离式):签名和原始XML是两个独立文件,常用于SAML断言、SOAP头签名等。

实际应用中容易忽略的关键点

光有流程不够,细节决定成败:

  • 必须严格使用相同规范化算法(如http://www.w3.org/2001/10/xml-exc-c14n#),否则两端计算的摘要永远对不上;
  • 避免用已淘汰的SHA-1或RSA-SHA1,优先选SHA-256 + RSA-PSS或ECDSA;
  • 验证时不能跳过KeyInfo可信性检查——要校验证书链、有效期、吊销状态;
  • 若XML含外部实体或动态XPath,需同步防范XXE、XPath注入等攻击,签名不能替代输入净化。

基本上就这些。XML签名不是黑盒,它的力量来自可验证、可组合、可细粒度控制的设计,但每一步都得走稳。

以上就是XML签名(XML Signature)是什么 怎么保证数据完整性的详细内容,更多请关注php中文网其它相关文章!

相关标签:
最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
热门推荐
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号