digital-signature - p7s 文件的内容

标签 digital-signature

有人知道 p7s 文件的内容吗?

文件中至少有一个数字签名,我可以很容易地找到它,但我想捕获文件中包含用私钥加密的部分的部分——即不可否认部分数字签名。

有谁知道在哪里可以找到通用文件格式的简单副本?

编辑补充:

我正在使用的文件的一般格式是:

字节偏移记录类型


0 x509 证书(或者程序说的)

0 版本

1 8x(信息类型)

3 1 到下一个信息的偏移量(文件长度 - 4)

52 x509 证书(嵌入式,集合成员:ROOT CA)

56 x509 证书(嵌入式,集合成员:ROOT CA)

(1 个偏移量)x509 证书(新的,主题标识符:电子邮件)

(1 offset +4) x509 cert (embedded, collection memeber: Email )

(变化)x509 证书(新的、增强的 key 用法:数字签名、不可否认性)

(varies+4) x509 cert (embedded, collection member: Digital Signature, Non-Repudiation))

(变化)x509 证书(新的,证书颁发机构信息:CA EMAIL)

(varies+4) x509 证书(嵌入,集合成员:CA EMAIL)

(可变)交叉证书对信息,未知类类型

(可变)未知类类型的证书(如果需要,用尾随零填充)

我知道这个文件不包含消息摘要,并且不是唯一的,除非它是证书持有者的原始文件(即,不同的证书会产生不同的结果,但不同的消息都有相同的 p7s 文件附加到他们)。

我相信当将文件发送到不支持电子邮件加密/解密的系统(例如 gmail 或 yahoo)时,消息摘要会从文件中删除。这就是我对 p7s 文件缺少不同内容的解释。

除了消息摘要已从中删除的可能性外,文件没有损坏。他们不会用 ASN 打开。常规证书文件将使用 ASN(cer 文件)打开。


我写了一个程序,本质上是通过暴力分析文件。

我逐字节检查文件,并在 try-catch 循环中将字节复制到 X509Certificate2 类实例化的输入中。

无论是否中止,我移动一个字节并再次检查。

如果检查成功,我将生成的证书添加到集合中。

最后,我检查了集合中的证书,并将带有文件偏移量的十六进制和格式化的 ascii 转储到报告文件中。

我指的 p7s 文件与原始文件分离,显然不包含任何签名信息。当签名发送到不具备加密/解密信息能力的电子邮件地址时,这显然被剥夺了。

最佳答案

P7S 文件通常包含在RFC5652 中定义的SignedData 类型的DER 编码CMS(加密消息语法)结构。 .您可以使用 ASN.1 Editor方便地检查文件的确切结构和内容。

关于digital-signature - p7s 文件的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23021543/

相关文章:

c# - 使用iText进行外部签名PDF

javascript - 创建没有签名的 JWT token ?

python - 使用 Python 对 PDF 文档进行数字签名

c# - 如何在 C# 中使用 SHA256 和 ECDSA 算法创建数字签名

android - 如何从摘要生成 PKCS#7 签名?

java - 如何在java中对包含特殊字符的XML文档进行签名?

python - Pycrypto 字符串太长,无法签名/验证

git - 将 git 与重写 SSL 证书的代理一起使用

java - 无法从 X509Certificate 的 X500Principal 获取 UniqueIdentifier

pdf - PDF 中的数字签名