【问题标题】:Digital signature in YAML file. Similar to XMLDSIGYAML 文件中的数字签名。类似于 XMLDSIG
【发布时间】:2017-09-25 18:35:59
【问题描述】:
XMLDSIG 是 XML 文档的数字签名规范。 C# 具有在 System.Security.Cryptography.Xml 命名空间中支持 XMLDSIG 的类。
我想知道 YAML 文档是否有数字签名规范。或者一般来说,如何验证 YAML 文档的真实性(因为它没有被篡改)。
想法是在 YAML 文档中放置一个数字签名,然后使用另一端的公钥来验证它。不确定在 C#、python 或 go 中是否有围绕这个东西实现的任何库。
我确实在 3.2.1.3 部分下找到了一些东西。 http://yaml.org/spec/1.0/ 的平等,其中提到了使用规范形式来支持数字签名。不知道我是否理解它。
【问题讨论】:
标签:
c#
encryption
cryptography
digital-signature
【解决方案1】:
没有,Yaml 没有特定的数字签名格式。最常见的格式是XMLDsig 用于 xml,PAdES 用于 PDF,CMS/PKCS#7/CAdES 用于二进制数据,JWS 用于 JSON
添加带有签名的 yaml 标记意味着处理可能导致头痛的文本的规范化。
我建议将内容包装到签名容器中,如 CMS/PKCS#7 或 JWT。例如
{
"yaml": "SGVsbG8=". //yaml as base64
}
或者使用分离签名
规范化
您引用的链接正在讨论如何表示数字。请注意,数据中的任何更改,或处理它们以计算签名的方式都会产生不同的签名。因此,当使用文本格式时,需要一个众所周知的“规范化”过程,以确保各方以相同的方式处理数据