Windows平台 PE文件数字签名格式
2010-07-10 09:42
337 查看
摘要
Authenticode®是一种数字签名格式,它是用来验证二进制软件的来源和完整性。Authenticode是基于公开密匙加密标准(PKCS) #7 来签名数据,并使用X.509证书来绑定经过数字签发的二进制程序与其软件发布者的身份的联系。这份文档包含Authenticode签名的结构和技术细节。
概览Overview 在PE文件中的可信代码数字签名是PKCS #7 签名块结构。该签名可以保证:
· 这份软件源于某个确定的软件发布者。
· 这份软件自从签署以来没有经过修改。
一份PKCS #7 [b]签名块结构包含该PE文件的哈希值、通过软件发布者私匙创建的签名以及将软件发布者的签名密匙绑定到一个合法实体的X.509 v3证书。一份PKCS #7签名块可以包含以下可选信息:[/b]
· 关于软件发布者的描述
· 软件发布者的链接
· 可信代码签名的时间戳
签名时间戳由时间戳权威机构(TSA)生成,并且保证软件发布者所做的签名在这个时间戳之前已经存在。这个时间戳可以延长了这个签名的生命期,即便相关的签名证书已经过期或者后来被废除。
可信代码签名可以被嵌入到Windows的PE文件中,位于PE文件的Optional Header Data Directories结构中Certificate Table所指向的位置。当可信代码签名被用于签署一个Windows PE文件时,计算文件数字签名哈希值的算法略过PE文件结构中的特定字段。当把数字签名嵌入文件时,签名过程可以修改这些字段,而不致于影响文件的哈希值。
图1显示了一幅简单的PE文件全局图,它描述了数字签名是如何包含在PE文件中的。它包含了嵌入的可信代码数字签名和指出那些被略过计算PE文件哈希值的PE结构字段。
关于PE文件结构的细节,请参阅“Microsoft Portable Executable and Common Object File Format Specification”(PE/COFF specification)。
关于可信代码数字签名中PKCS #7部分的细节,请参阅本文档后面的Abstract Syntax Notation version 1 (ASN.1) 结构定义。
关于可信代码数字签名如何计算PE文件哈希值的细节,参阅本文档后面的“Calculating the PE Image Hash”。
申请免费的数字证书
登录www.ca365.com,在“免费证书”栏中点击“用表格申请证书”链接。在页面中填入相应信息就可以申请免费证书。
Authenticode®是一种数字签名格式,它是用来验证二进制软件的来源和完整性。Authenticode是基于公开密匙加密标准(PKCS) #7 来签名数据,并使用X.509证书来绑定经过数字签发的二进制程序与其软件发布者的身份的联系。这份文档包含Authenticode签名的结构和技术细节。
概览Overview 在PE文件中的可信代码数字签名是PKCS #7 签名块结构。该签名可以保证:
· 这份软件源于某个确定的软件发布者。
· 这份软件自从签署以来没有经过修改。
一份PKCS #7 [b]签名块结构包含该PE文件的哈希值、通过软件发布者私匙创建的签名以及将软件发布者的签名密匙绑定到一个合法实体的X.509 v3证书。一份PKCS #7签名块可以包含以下可选信息:[/b]
· 关于软件发布者的描述
· 软件发布者的链接
· 可信代码签名的时间戳
签名时间戳由时间戳权威机构(TSA)生成,并且保证软件发布者所做的签名在这个时间戳之前已经存在。这个时间戳可以延长了这个签名的生命期,即便相关的签名证书已经过期或者后来被废除。
可信代码签名可以被嵌入到Windows的PE文件中,位于PE文件的Optional Header Data Directories结构中Certificate Table所指向的位置。当可信代码签名被用于签署一个Windows PE文件时,计算文件数字签名哈希值的算法略过PE文件结构中的特定字段。当把数字签名嵌入文件时,签名过程可以修改这些字段,而不致于影响文件的哈希值。
图1显示了一幅简单的PE文件全局图,它描述了数字签名是如何包含在PE文件中的。它包含了嵌入的可信代码数字签名和指出那些被略过计算PE文件哈希值的PE结构字段。
关于PE文件结构的细节,请参阅“Microsoft Portable Executable and Common Object File Format Specification”(PE/COFF specification)。
关于可信代码数字签名中PKCS #7部分的细节,请参阅本文档后面的Abstract Syntax Notation version 1 (ASN.1) 结构定义。
关于可信代码数字签名如何计算PE文件哈希值的细节,参阅本文档后面的“Calculating the PE Image Hash”。
申请免费的数字证书
登录www.ca365.com,在“免费证书”栏中点击“用表格申请证书”链接。在页面中填入相应信息就可以申请免费证书。
相关文章推荐
- PE文件数字签名信息读取存储及格式具体解释图之上(历史代码,贴出学习)
- PE文件数字签名格式
- 手动添加PE文件数字签名信息及格式详解图之下(历史代码,贴出学习)
- windows系统平台下的PE文件格式和数据定义详解(附带详细高清大图)
- 手动加入PE文件数字签名信息及格式具体解释图之下(历史代码,贴出学习)
- Windows 8和Windows 2012提供新的WinVerifyTrust API对PE文件进行签名认证
- Windows平台 PE文件数字签名格式
- 二进制学习-Windows-PE文件格式
- PE文件数字签名工具
- 判断PE文件的数字签名信息
- 给PE文件添加数字签名的VC6代码
- [置顶] 【PE】Windows平台下为可执行文件或动态库dll添加版本信息
- 为PE文件添加数字签名 .
- PE文件和COFF文件格式分析——签名、COFF文件头和可选文件头1
- 代码分析windows下PE文件格式结构,并附带PE文件格式详细图解
- PE文件和COFF文件格式分析——签名、COFF文件头和可选文件头2
- Windows 无法验证此设备所需的驱动程序的数字签名。最近的硬件或软件更改安装的文件可能未正确签名或已损坏,或者可能是来自未知来源的恶意软件。 (代码 52)
- PE文件和COFF文件格式分析——签名、COFF文件头和可选文件头3
- 一个使用glib库访问windows平台ini格式的配置文件的类
- 为PE文件添加数字签名