You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将数字签名和签名方公钥存储在JSON文件是否安全?PKCS#7是否更优?

数字签名存储方案安全性与PKCS#7对比

自定义JSON存公钥+签名的方案安全性

该方案没有原理性的安全问题,但实际落地时极易出现安全漏洞,生产环境不建议直接使用:

  • 公钥可信问题:如果公钥和签名存在同一个JSON文件里,且没有更高层级的可信根校验公钥合法性,攻击者只要篡改JSON里的公钥,就能用自己的私钥伪造签名,整个校验机制完全失效。
  • 实现漏洞多:自定义场景下很容易踩字符串编码不一致、字段拼接逻辑缺陷、base64编解码异常等坑,轻则正常签名校验失败,重则出现可被利用的签名伪造漏洞。
  • 扩展性差:自定义JSON通常不会存储签名算法、哈希算法的元数据,后续要升级算法(比如从SHA-256换到SHA-3)难度很高,还可能被攻击者利用算法替换漏洞绕过校验。

是否推荐使用PKCS#7

除了极简单的内部私有场景、且你能完全掌控所有签名、校验环节的所有实现细节之外,所有生产级场景都推荐使用PKCS#7。

二者的核心差异

  • 标准化程度:PKCS#7是国际通用的标准格式,跨语言、跨工具都有成熟的原生实现,不需要自行写序列化、反序列化逻辑;自定义JSON格式完全是业务私有定义,只能内部用,跨系统对接成本高,还容易出现不同端实现不一致的问题。
  • 安全能力:PKCS#7默认支持携带签名算法元数据、公钥证书、证书链、时间戳,还支持多主体签名、附加原文等能力,所有逻辑都有规范约束,不会出现自定义实现时的安全遗漏;自定义方案的所有扩展能力都要自己开发,很容易留下安全缺口。
  • 稳定性:PKCS#7的二进制/PEM格式是标准结构化格式,不会出现JSON字段顺序变化、特殊字符转义、编码不一致等导致的偶发校验失败问题,稳定性远高于自定义方案。
  • 适用场景:自定义JSON仅能用于极轻量的内部私有场景;PKCS#7适用于所有生产级签名校验场景,包括需要和第三方对接的公开业务场景。

内容的提问来源于stack exchange,提问作者Sanket Shevkar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.15 10:45:07