代码签名如何使用私钥和公钥来保护可执行文件和代码

保护代码、软件、可执行文件等的过程涉及开发人员或发布者使用代码签名证书将数字签名添加到他们的软件可执行文件中。此过程使用加密密钥和函数(即散列和加密)来验证创建资产的开发人员/发布者并验证文件或代码自签名后未被修改。那么,代码签名如何使用私钥和公钥来保护可执行文件和代码?

私钥执行的大致流程:

开发人员将散列函数(即散列算法)应用于他们的软件/代码。这将创建固定长度的散列摘要(即散列值)。

他们使用他们的私钥来加密生成的散列摘要。根据行业代码签名基准要求,此密钥必须存储在安全设备上,例如安全令牌或硬件安全模块 (HSM) 。

然后,开发人员使用他们的代码签名证书创建数字签名并为软件应用时间戳(注意:时间戳是可选的,但建议使用)。

他们的数字签名软件随开发人员的公钥和证书一起分发或发布。

公钥在客户端发生的软件验证过程中:

最终用户下载软件。他们的浏览器或操作系统 (OS) 检查数字签名以确保其有效、可信且未被更改。

他们的系统会将开发者的公钥应用于摘要以对其进行解密。然后它将原始散列摘要与系统创建的散列摘要进行比较,看是否匹配。

如果哈希值匹配,那么他们就赢了。如果值不是,Windows 操作系统和浏览器将警告用户您的软件不应该被信任。

相关文章