如果您希望用户从互联网上下载安装您的软件程序,那么获取客户的信任是很重要的。用户需要知道软件程序是否来源可信的软件开发商;在互联网传播过程中,是否被恶意篡改,比如植入恶意病毒。代码签名就是一种基于密码技术和可信认证的可靠技术手段,可以帮助用户判断软件代码的官方发布者,并通过数字签名确信软件代码没有被恶意篡改过。

什么是代码签名?

简短的解释就是,代码签名是保证程序或软件下载的代码在发布者签名后未被破坏和篡改。在下面的小节中,我们将探讨代码签名的工作原理以及它的重要性。

正如您希望在登录您的银行帐户时确保您已将密码提供给了目标银行,而不是中间人攻击者一样,您也需要确保您下载的程序和更新是安全的,是来自真实的发布者。代码签名也基于PKI公钥基础设施,当签发用于HTTPS加密的证书时,称为SSL证书,当签发用于软件代码数字签名的证书时,称为代码签名证书。

代码签名的好处

代码签名是对程序、文件、软件更新或可执行文件进行数字签名的一种方法,以便在安装和执行时验证其真实性和完整性。就像蜡封一样,它向接收者保证作者是谁,并且它没有被打开和篡改。微软开发人员、程序员和软件工程师使用代码签名来证明,例如,你的Windows 10更新实际上来自微软,而不是试图危害你的计算机的黑客。

代码签名使您能够确保从正确的软件发行商而不是希望获取您的信息和数据的攻击者处下载文件。本质上,它让你知道代码没有被坏人修改过,所以你知道在你的机器上安装和运行是安全的。

如果你曾经看到过当你尝试运行你下载的程序时出现的小弹出窗口,它会列出发布者并询问“你确定要运行这个吗?”然后您就看到了代码签名的作用。

代码签名是如何工作的?

从开发人员的角度来看,代码签名过程涉及三个主要组件:

1)代码签名证书

2)代码签名工具

3)未签名的软件文件

通常Windows、Mac OSX等操作系统或证书颁发机构会提供代码签名工具(如:沃通WoSignCode代码签名工具),代码签名证书通常来自证书颁发机构(CA)。让我们仔细看看这个过程是如何工作的,以及涉及到的关键概念。

公钥加密

加密是指对信息进行编码以保护其免受攻击。通常,这是通过将其传递一个密钥来更改值来完成的,而解码信息取决于是否有密钥将值返回到其原始状态,从而允许解密获取原始信息。在公钥加密(或非对称加密)中,编码信息的密钥和解码消息的密钥是不同的(因此是非对称的)。它被称为公钥,因为一个密钥被广泛使用(“公钥”),而另一个密钥则被保密(“私钥”),以确保消息的安全性。

这种加密依赖于私钥的安全性和保密性,并且不会被截取或篡改信息的人使用。公钥是否用于编码或解码消息取决于传输的性质。如果你想让每个人都阅读消息,但你不想让任何人篡改它,你就用私钥编码,用公钥解码。如果你想让每个人都能发送消息,但不想让他们被错误的人截获,你可以用公钥编码,但用私钥解码。

哈希函数

哈希函数是一种设计为不可逆的加密方法。哈希函数不是用一个键编码和使用一个键解码,而是单向的,它使用一个数学函数,以一种无法撤消的方式改变值。最常见的类比是混合颜料。例如,您可以将蓝色(原始值)与黄色(散列函数)混合以获得绿色(新值),每次混合时都会获得绿色,但无法将这两种颜色分开并恢复蓝色。

只要您需要一个设置值,就可以使用哈希函数,而无需再次读取信息。登录密码是最常见的例子:网站经常将其散列存储,因此,如果有漏洞,黑客窃取的只是一堆乱七八糟的值。同时,当你登录网站时,它会再次散列你的密码,并将其与存储的散列值进行比较。如果你输入的内容与他们的档案相符,他们会让你进去。他们不需要读取密码本身,他们只需要值。

代码签名证书

在开发人员签署他们的软件程序之前,他们需要生成一个公钥/私钥对。然后,开发人员将公钥和组织的身份信息提供给可信的CA机构,CA验证身份信息的真实性,然后将证书颁发给开发人员,这是由CA的私钥签名的代码签名证书,包含开发人员组织的身份和开发人员的公钥。

当开发者准备好“签名”他们的作品以确定作者身份时,他们会将他们编写的所有代码计算哈希值。然后,使用上述私钥(通常由作者生成)以及包含公钥和作者身份(证明作者身份)的代码签名证书进行数字签名,将签名打包到发布的软件中。

这构成了代码签名操作,CA的公钥已预先安装在大多数浏览器和操作系统信任存储中。当用户下载软件时,他们使用CA的公钥首先验证嵌入在签名软件中的代码签名证书的真实性,以确认它来自可信的CA。然后从证书中提取开发人员的公钥并用于解密加密的哈希,再次对软件计算哈希值,并将新值与解密值进行比较。如果用户的哈希值和开发者的哈希值匹配,则软件在传输过程中没有被损坏或篡改。然后,系统会提醒用户该软件与开发人员发行时一样,并且(如果开发人员值得信任)安装和运行该软件是安全的。

什么是代码签名?代码签名的好处相关推荐

  1. 一键自动发布ipa(更新svn,拷贝资源,压缩资源,加密图片资源,加密数据文件,加密lua脚本,编译代码,ipa签名,上传ftp)...

    一键自动发布ipa(更新svn,拷贝资源,压缩资源,加密图片资源,加密数据文件,加密lua脚本,编译代码,ipa签名,上传ftp) 程序员的生活要一切自动化,更要幸福^_^. 转载请注明出处http: ...

  2. (转)一键自动发布ipa(更新svn,拷贝资源,压缩资源,加密图片资源,加密数据文件,加密lua脚本,编译代码,ipa签名,上传ftp)...

    转自:http://www.cnblogs.com/mrblue/p/3885043.html 一键自动发布ipa(更新svn,拷贝资源,压缩资源,加密图片资源,加密数据文件,加密lua脚本,编译代码 ...

  3. 运行java提示未签名_java – JNLP:在签名代码中加载未签名的代码

    我们在克服Java webstart的混合代码错误时遇到了困难.总之,我们有我们的主要JNLP文件,我们已经签署了它直接加载的所有代码.我们已将all-permissions选项添加到主JNLP中.它 ...

  4. Postman高级应用(5):再也不用注释签名代码了——自动生成签名

    场景 我们在写服务端接口时候,往往需要考虑安全问题,最基本的一点就是接口需要按照约定的规则进行签名校验.一旦接口校验签名,就意味着我们用Postman不能想以前那样顺利的测试了,服务端必定会返回签名失 ...

  5. Applet中签名与未签名代码的混合使用带来的问题

    Java Applet如果需要访问本地的受限资源,需要对访问的代码进行数字签名才能进行.Java SE 19 release或者以后的版本为了Applet的安全性,当所执行的Applet代码既包括已签 ...

  6. 恶意代码检测技术——签名、启发式、行为式

    随着恶意代码成为信息安全的重要威胁,恶意代码检测技术成为信息安全领域的重要研究方向.目前已经有基于签名.启发式.行为式等几种检测恶意代码的方法,应用最广泛也是最成熟的当属基于签名的检测技术,当前研究的 ...

  7. 说一下StoreBoard和纯代码编程各有什么好处吧

    首先先说一下,本人是个纯代码党,喜欢敲击的快感!!! 先说一下StoreBoard吧 1StoreBoard 效率高; Auto Layout,做适配很方便; 多语言很方便; 静态TableView, ...

  8. 无代码平台是什么意思?使用无代码做数字化转型的好处?

    在企业数字化转型建设的过程中,办公类系统一直是不可或缺的角色(如:ERP.MES.OA.CRM.绩效.财务管理等系统应用).因为办公类系统改变了原有企业传统老化的纸质甚至是口头流程,这些系统采用了更加 ...

  9. 重构-改善既有的代码设计-------代码的坏味道

    重构-改善既有的代码设计 代码的坏味道 神秘命名(Mysterious Name) 给函数.变量.模块和类命名时,要使它能清晰地表明自己的功能和用法,使得写下的代码直观明了. 常用重构手法为重命名,包 ...

  10. Android签名 - APK签名系统SignApk.jar

    signapk.jar是Android源码包中的一个签名工具. 代码位于:Android源码目录下,signapk.jar 可以编译build/tools/signapk/ 得到. 使用signapk ...

最新文章

  1. LVS学习笔记--概念
  2. 产品问答 | 3-5年的PM,如何提升竞争力?
  3. webpack最新版本_webpack小结-开发环境构建优化
  4. SpringBoot+Vue 完整的外卖系统,手机端和后台管理
  5. 临时上传的文件-20170707
  6. Android 中文 API——android.widget合集(中)(50篇)(chm格式)
  7. 多所985、211高校教授被通报!国自然发布处理决定!
  8. 计算机等级考试中电脑死机了,GRE考试电脑死机
  9. Labview连接sql server数据库
  10. 华大单片机移植TencentOS
  11. 和刘备相关的人(九 )
  12. java面向对象抽象类和接口
  13. PS打开psd文件后黑屏
  14. 编程语言ASCII码对照表
  15. C# 实例解释面向对象编程中的单一职责原则
  16. Git的下载与安装教程
  17. ML:机器学习模型提效之监督学习中概率校准的简介、案例应用之详细攻略
  18. 小白学python之前要学会什么_小白学 Python(1):开篇
  19. Nacos源码系列—订阅机制的前因后果(下)
  20. 可以媲美TortoiseSVN的LINUX版SVN客户端软件RabbitVCS

热门文章

  1. mybatis中大于,小于,大于等于,小于等于,转义写法
  2. 磁性微型机器人通过结肠翻筋斗以输送药物
  3. 分享一下杭州医院的看病流程(我去的杭州市第三人民医院)
  4. 《炬丰科技-半导体工艺》SC1/SC2蚀刻后Si表面的分析
  5. 学习VTK9笔记(三)打开stl文件
  6. C语言实现三子棋游戏(规范化)
  7. 美国的ACH支付体系
  8. 在MAC环境下玩转树莓派
  9. 五分钟玩转Andriod开发环境配置
  10. python自动产品分类_商品分类(一堆多)