PE 数字签名

网友投稿 908 2022-05-30

http://www.youdzone.com/signature.html  英文文章,介绍了证书与签名的关系。

http://www.ruanyifeng.com/blog/2011/08/what_is_a_digital_signature.html 是翻译后的文章。

PE 数字签名是被DER编码方式编码的二进制数据,数据的构成有 PKCS #7 V1.5 定义,具体请参考 PKCS #7Cryptographic Message Syntax Standard.

PKCS#7 数据中包含了签发签名的证书以及其上级证书的完整证书链。根证书签发下一级证书,然后一级一级的签发下去最后一级证书签发签名。

x.509 定义了证书的数据构成。

这里有有关数字证书的ASN.1描述

http://www.rfc-base.org/txt/rfc-5280.txt

Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile

PKCS #7 V1.5 和 X.509 的定义都采用了ASN.1 语法

http://msdn.microsoft.com/en-us/Windows/hardware/gg463180 是微软对数字签名的ASN.1语法描述,但是没有 PKCS #7Cryptographic Message Syntax Standard. 讲些的详细。

http://www.lapo.it/asn1js/   可以将PE 文件最后的证书数据直接解析为 ASN.1语法

asn1viewer 是一个免费工具,也可以解析DER数据

使用 openssl pkcs7命令能够将完整数字签名消息中的全部数字证书都导出,然后在使用openssl x509 进行解析。

openssl pkcs7 -inform DER -in Certificate.cer -print_certs

这说明,openssl 是能够验证PKCS7并解析pkcs#7数字签名数据的。

注: 这里导出的证书文件与通过Windows 文件属性的签名选项导出的der格式的证书是一样的。

Linux 下将数字证书解析为ASN.1 文本的命令:

openssl x509 -inform der -in vmUpdate.cer -text

PE 数字签名

利用openssl pkcs7 命令导出了一个数字签名数据的全部证书,发现包含了从根证书到最终签发签名的全部证书以及用于校验时间戳的证书。通过这个能够确定 WinVerifyTrust 函数,应该不会以联网方式校验证书的。此外,证书链的关联是通过证书中的Issuer Name  与Subject 建立的。Issuer Name 标记了上一级证书的名字,Subject 标记了证书的名

微软文档中提到了验证数据签名是,使用了 Certificates Store 来验证完成的证书链。根据猜测,在Windows  下运行certmgr.msc 后看得应该就是Certificates Store

通用安全

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:《React+Redux前端开发实战》—1.4.2 JSX的转译
下一篇:ModelArts-AI开发流程
相关文章