代码签名是什么

小白 问答 2022-05-06 01:45:06 阅读(...)

代码签名(Code signing)是对可执行文件或脚本进行数字签名以确认软件作者及保证软件在签名后未被修改或损坏的措施。此措施使用加密散列来验证真实性和完整性。

代码签名(Code signing)是对可执行文件或脚本进行数字签名以确认软件作者及保证软件在签名后未被修改或损坏的措施。此措施使用加密散列来验证真实性和完整性。

代码签名 Code Signing

代码签名可以提供几大功能价值。最常用的需求是代码签名为部署提供了安全性。在某些编程语言中,它也可用来帮助防止名字空间冲突。几乎每个代码签名的实现都提供某种数字签名机制来验证作者或构建系统的身份,以及校验对象是否未被修改。它也可用来提供对象相关的版本信息,以及存储对象的其他元数据。

代码签名作为软件安全性依赖的效果取决于所支持签名密钥的安全性。与其他公钥基础设施(PKI)技术一样,系统的完整性依赖于发布者对其私钥免受未经授权访问的保护。存储在通用计算机的软件中的密钥易于受到影响。因此,将密钥存储在安全、防篡改的硬件密码设备(也称硬件安全模块,HSM)是更加安全的最佳实践。

功能实现原理

代码签名的基础是 PKI 安全体系。代码签名证书由签名证书私钥和公钥证书两部分组成。私钥用于代码的签名,公钥用于私钥签名的验证和证书持有者的身份识别。

1. 发布者从 CA 机构(如 VeriSign)申请数字证书

2. 发布者开发出代码;借助代码签名工具,发布者将使用 MD5 或 SHA 算法产生代码的哈希值,然后用代码签名证书私钥对该哈希值签名,从而产生一个包含代码签名和软件发布者的签名证书的软件包;

3. 用户的运行环境访问到该软件包,并检验软件发布者的代码签名数字证书的有效性。由于 VeriSign 根证书的公钥已经嵌入到用户的运行环境的可信根证书库,所以运行环境可验证发布者代码签名数字证书的真实性;

4. 用户的运行环境使用代码签名数字证书中含有的公钥解密被签名的哈希值;

5. 用户的运行环境使用同样的算法新产生一个原代码的哈希值;

6. 用户的运行环境比较两个哈希值。如果相同,将发出通知声明代码已验证通过。所以用户可以相信该代码确实由证书拥有者发布,并且未经篡改。

整个过程对用户完全透明,用户将可以看到软件发布者提示信息,并可以选择是否信任该软件发布者。在选择信任软件发布者之后,运行所有该软件发布者签名的程序时将可以不再收到任何提示信息。

0个人收藏 收藏

评论交流

泪雪默认头像 请「登录」后参与评论
  1. 加载中..

相关推荐

  • 代码签名证书 Code Signing Certificate

    代码签名证书是什么

    代码签名证书是对开发的代码软件进行的数字签名认证服务。拥有代码签名的软件程序可以减少下载时弹出的安全警告,避免被系统拦截,并且保证代码完整性,使开发厂商信息对下载用户公开可见,从而建立良好的软件品牌信誉度。
  • SSL

    什么是自签名证书

    自签名证书是由不受信的CA机构颁发的数字证书,也就是自己签发的证书。与受信任的CA签发的传统数字证书不同,自签名证书是由一些公司或软件开发商创建、颁发和签名的。虽然自签名证书使用的是与X.509证书相同的加密密钥对架构,但是却缺少受信任第三方验证。
  • 电子签名是什么

    电子签名是什么

    电子签名是指数据电文中以电子形式所含、所附用于识别签名人身份并表明签名人认可其中内容的数据。通俗点说,电子签名就是通过密码技术对电子文档的电子形式的签名,并非是书面签名的数字图像化,它类似于手写签名或印章,也可以说它就是电子印章。
  • digital certificate 数字证书

    数字证书有什么作用

    数字证书对网络用户在计算机网络交流中的信息和数据等以加密或解密的形式保证了信息和数据的完整性和安全性,数字证书是CA机构发行的一种电子文档,是一串能够表明网络用户身份信息的数字,提供了一种在计算机网络上验证网络用户身份的方式。
  • 数字证书

    数字证书是什么

    数字证书是用于识别个人,服务器,公司或某个其他实体的电子文档,使用公钥加密来解决模仿问题。证书颁发机构是验证身份和颁发证书的实体,客户端和服务器使用CA颁发的证书来确定可信任的其他证书。
  • HTTP SSL HTTPS

    网站使用 SSL 数字证书有什么优势

    网站安装使用SSL数字证书可以有效的防止流量劫持、杜绝钓鱼网站和杜绝网页中被而已插入小广告,更可以保护用户隐私安全,有利于网站搜索排名的提升,提高站点的可信度及品牌形象。