PE 数字签名

举报
keidoekd2345 发表于 2017/10/12 18:08:03 2017/10/12
【摘要】 PE 数字签名

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 

利用openssl pkcs7 命令导出了一个数字签名数据的全部证书,发现包含了从根证书到最终签发签名的全部证书以及用于校验时间戳的证书。通过这个能够确定 WinVerifyTrust 函数,应该不会以联网方式校验证书的。此外,证书链的关联是通过证书中的Issuer Name  与Subject 建立的。Issuer Name 标记了上一级证书的名字,Subject 标记了证书的名
微软文档中提到了验证数据签名是,使用了 Certificates Store 来验证完成的证书链。根据猜测,在Windows  下运行certmgr.msc 后看得应该就是Certificates Store

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。