SSL证书:代码签名入门

代码签名入门

2018-09-29
[摘要]代码签名证书简介及其许多好处 今天,几乎所有东西都是电脑。我们的主要运输方式?汽车,公共汽车,火车......它们都是电脑。我们用来沟通的工具?手机和笔记本电脑......绝对是电

 

 

代码签名证书简介及其许多好处

今天,几乎所有东西都是电脑。我们的主要运输方式?汽车,公共汽车,火车......它们都是电脑。我们用来沟通的工具?手机和笔记本电脑......绝对是电脑。甚至我们的房屋,冰箱和电视现在都是电脑。

在斜边下方,干净的GUI以及所有这些计算机的人体工程学形状都是代码。代码是每台计算机的基础,它控制着它的作用以及它是如何做到的。而对于现代设备,代码不再是静态的。它不断更新。有时,没有你甚至不知道。

奇怪的是,在您不知情的情况下,控制您的手机或汽车或火炉的代码可能会随时更新。是谁写了那段代码?你知道吗?你的朋友知道吗?

你的电脑知道吗?

这是一个重要的问题。当我们所依赖的设备运行代码时......他们知道代码的来源吗?他们知道这是正确的代码吗?这是安全的代码吗?

代码签名证书是了解何时拥有正确代码的解决方案的一部分。使用一些惊人的数学,代码签名将一个标识附加到代码,允许我们知道谁创作它,并保证它没有被篡改。在本文中,我们将向您介绍代码签名证书,简要说明它们的工作原理,并解释为什么以及如何开始签署代码。

问题

您是一名软件开发人员,通过互联网分发您的软件。您拥有遍布全球的用户并享有适度的成功。您是否想知道您的用户是否获得了与您分发的完全相同的代码?

如果您要分发未签名的代码,可能很难知道。也许其中一个“偷渡式下载”网站抓住了您的软件副本,并开始使用一些捆绑的广告软件进行分发。也许有人将您的软件免费上传到warez网站,但在此过程中会抛出一些恶意软件。如果您的软件足够流行,恶意软件分销商可以直接进行诱饵和切换 - 并将恶意软件隐藏在您的文件名下。

您的用户可能想知道同样的事情。这段代码合法吗?我应该相信吗?

这些是真正的风险和真正的攻击媒介。从历史上看,将危险代码伪装成用户想要运行的安全代码一直是恶意软件的主要分发方法之一。数百万人正在寻找Photoshop,Microsoft Office和Adobe Acrobat,恶意软件分销商也知道这一点。我个人因从可疑来源在线运行软件而感到内疚; 每个人都知道至少有一个人在运行一些“免费”软件后最终感染了自己。

即使是众所周知的软件分发来源也是恶意应用程序的来源。去年,当How To Geek在CNet的Download.com上测试了十个最受欢迎的节目时,最终出现了许多不必要的和麻烦的事情。

Sourceforge.com曾经是许多开源应用程序的官方存储库,已经开始使用合法应用程序分发恶意软件和有害软件,未经原作者的许可。

因此代码不仅冒着冒充的风险,而且还有不必要的篡改和修改。

我们如何弥合代码声称的代码与实际代码之间的差距?

代码签名证书尝试通过将代码与身份相关联来解决此问题。当您运行签名代码时,您将清楚地看到谁创作了它。这可能是非常强大的信息。如果您信任该作者,您可以放心地运行该程序

代码签名做什么?

代码签名证书不签署任何代码 - 它们不用于签署.PHP文件或IF语句。代码签名证书签署可执行文件脚本。您知道这些文件:.exe,.app,.msi,.cab,.dll,.jar(以及更多)。通过对这些文件进行签名,它们可以提供加密保护以防止修改,并识别软件的作者。

签名究竟意味着什么?如果您熟悉公钥加密(也由SSL证书使用),那么您将了解代码签名如何提供可靠的身份。如果没有,这是一个快速破败:

  1. 每个代码签名证书都有一个与之关联的唯一私钥,只有代码签名证书的所有者才拥有。当代码被“签名”时,该唯一私钥用于将数字签名附加到可执行脚本。
  2. 私钥将为其签名的每个可执行文件生成唯一的签名。这是因为密钥正在签署该可执行文件的“哈希”。哈希是一种数学工具,用于从任何给定的数据字符串中获取唯一值,在本例中为文件。这是阻止某人将一个有效签名附加到一个可执行文件并将其应用于他们自己的非法软件的原因。当计算机检查签名时,它可以告诉签名不是相同的代码,因为哈希值将不同。 注意:签名和加密是不同的事情。两者都很重要,并且广泛用于网络安全,通常它们一起使用。加密是另一个数学过程,它涉及修改数据,使其不能被预期接收者以外的任何人读取。请注意,代码签名证书不会加密您的文件/数据。
  3. 当最终用户运行可执行文件时,他们使用的平台(Windows,iOS,Java等)将检查签名并将其显示给用户。这使用户可以了解软件的来源,并允许他们做出有关运行它的明智决定。

请记住,代码签名提供身份。在一天结束时,当您运行可执行文件或脚本时,如果您信任该身份/作者(无论是个人还是组织),您必须自行决定。代码签名不会自动保证程序正常运行或不是故意恶意(有人可以选择签署恶意软件,希望欺骗某人自动认为已知作者意味着它是安全的)。代码签名只能保证软件与签名者分发时完全一样。

代码签名如何允许安全分发

当您需要将物理文档设为官方文档时,请对其进行签名。您的签名对您来说是独一无二的,声称您已签署,同意或撰写实体作品。在数字领域,我们有代码签名; 使用数字签名,就像传统的物理签名一样,断言身份。

数字签名在加密方面是可执行的。这意味着阅读签名的计算机可以证明它们是合法的还是伪造的。计算机不只是阅读签名并说“这段代码说它是由克雷格签署的,所以它必须是真的。”计算机检查签名以证明克雷格签署了它。

在此过程中,代码签名证书还可确保真实性完整性。让我们仔细看看这些因为它们都非常重要:

  • 真实性:这告诉用户(和计算机)软件的来源。这就是“谁”。真实性将您的身份与您签署软件的公钥/私钥联系起来。因为没有其他人拥有您的密钥,所以没有其他人可以签署声称来自您的软件。
  • 完整性:证明代码未被修改。数字签名不仅告诉签署软件的设备,还告诉他们签署的内容。这允许计算机知道代码自签名以来是否已经完全更改。这可以防止依赖于修改合法可执行文件的攻击。这还会提醒用户在下载过程中可能发生文件损坏。

代码签名可以防止大量依赖未经授权/恶意修改代码,欺诈性软件和特制恶意软件的攻击。

第二种类型的代码签名证书称为“EV代码签名”,用于最高灵敏度的应用程序。这些证书对密钥存储和签名有特殊要求,通常通过安全的闪存驱动器以物理方式邮寄给您。虽然大多数人不需要使用EV Code Signings,但我想简要提及它。

时间戳

我想在这里快速绕道来解释时间戳,这是代码签名的一个可选但非常重要的部分。

代码签名证书具有有效期(如SSL证书)。这是代码签名证书被视为“有效”的日期范围。代码签名有效期最长为3年,通常以年度增量出售。购买代码签名时,您将有机会决定要购买多少年。一旦特定证书的有效期结束,证书就会过期。那时,它实际上已经死了。

证书过期后,它不能用于签署任何新的可执行文件。在那一天,现有签名也将变为无效。除非你给时间戳

时间戳是添加到签名的附加信息,用于在签名代码时告知设备。与签名的其余部分一样,它的加密安全性。这允许设备在签名发生时与有效期进行比较。如果签证是在证书有效期内完成的,一切都还可以。签名将永久有效(尽管偶尔会有加密标准发生变化,签名最终会过时。但是,这种情况不会经常发生)。

之所以如此重要,是因为人们使用可执行文件的方式。如果您开发软件并开始分发它,您可能会继续提供相同的文件多年。可执行文件不像网页和HTTPS连接那样短暂。因此,有一天相同的软件被认为是有效的,而第二天它不是有效的,这是没有意义的。时间戳对于保持可用性随着时间的推移至关重要。它还可以节省您的资金,因为您不需要继续购买代码签名证书,除非您确实需要签署新的东西。

大多数主要CA都提供Timestamping,如Symantec,Comodo和DigiCert。但在购买证书之前,请确保检查它是否受支持。

多平台解决方案

代码签名几乎适用于所有平台。认真。如果您在Windows,OS X,iOS,Android,Java,Linux,Adobe AIR或任何其他主要平台上进行开发,则可以使用并鼓励代码签名。

越来越多的平台正在强制签署。要在iOS,Android或OS X的官方应用商店中分发软件,您必须签署代码。您的软件越接近低级别功能,签名越重要,签名越有可能是强制性的。例如,必须对所有Windows驱动程序进行签名。即使是Microsoft Office宏和Firefox扩展也需要签名。

即使签字不是强制性的,我们也总是鼓励它。它创造了更好的用户体验。没有人希望看到关于“未知”或“不受信任”的出版商的警告。安全的好处是真实的。考虑到运行可执行代码的风险,您不希望留下任何妥协的余地,即使您认为自己不是攻击的载体。

过程

获取和使用代码签名证书可分为五个主要步骤:

  1. 购买您的证书 - 选择您信任的CA并确定期限长度(证书有效期为多少年)。通常会要求您选择要登录的平台,但在大多数情况下,如果您花几分钟时间转换文件,则可以将代码签名证书用于多个平台。
  2. 验证您的身份 - 到目前为止,我们已经谈了很多关于身份的问题 - 但还没有完全解释代码签名证书如何知道你是谁。在验证过程中,CA会在您颁发证书之前确认您是您声称的人。如果您作为个人或公司申请,这个过程会有所不同。每个CA的做法都有所不同,但对于大多数人来说,这是一套依赖官方政府文件的标准化程序。如果您以个人身份申请,则表示提供政府身份证的公证副本。对于公司,您提供合法注册证明。然后,CA将通过其他渠道确认这些文件(例如,直接与您的州/国家/地区搜索您的公司记录)以确保它们是合法的。您应该预计验证过程需要5个工作日或更短时间,
  3. 安装代码签名证书 - 根据您使用的平台,接下来的两个步骤可能完全分开,也可能完全相同。在某些平台上,签名工具会处理安装和签名。在其他情况下,您需要在开始使用证书之前将代码签名证书明确导入“信任存储”。
  4. 签署您的申请 - 这就是魔术发生的地方!在您的应用程序中签名是您添加数字签名的位置。每个平台处理不同的方式。查看开发环境或平台的文档以了解您的签名方式。对于许多平台,可以使用专用工具。
  5. 分发您的应用程序 - 您的软件已准备好发送给您的用户。当他们运行软件时,他们将获得您的身份 - 并且能够相信他们正在运行您提供的合法软件。您可以通过互联网,CD,闪存驱动器或任何方法分发您的软件选择。

结论

我知道我们覆盖了很多,所以让我们快速总结一下:

代码签名证书签署可执行文件 - 从.exe到.app以及中间的每个平台。购买并申请证书后,您应该在收到证书之前等待大约一周的验证过程。

如果您开发或分发软件,则应签署代码。它已经在六个主要平台上强制执行,并在其他地方受到高度鼓励。签署您的代码将确保最佳的用户体验,并防止那些讨厌的“不受信任的发布者”警告。最重要的是,数字签名的加密保护可以防止对代码进行不必要的修改。

对代码加时间戳至关重要。在大多数开发环境中,您必须单独设置它,您应该花费额外的时间来完成它。这将确保您签名代码的长期可用性。

最后,请记住,当您开发和分发软件时,您将参与一个由用户,设备,软件和不良参与者组成的庞大生态系统。生态系统中最薄弱的地区将始终受到攻击,对安全的期望和要求将不断增加。领先于威胁并开始签署您的代码 - 您的用户会感谢您,当攻击被挫败时,您会感到宽慰。

翻译于:https://www.thesslstore.com/blog/getting-started-with-code-signing/

目前社会上普遍的设备支持GlobalSign SSL受信于每个主流的浏览器、 应用程序和设备。无论访客使用什么设备将自动信任您的SSL安全。金网科技淘宝店已全新上架GlobalSign SSL产品。金网科技拥有专业的客服技术团队可7*24小时为您提供技术服务咨询支持,咨询电话:020-80922616。

您的满意,就是我们品牌的保证。



https证书行业资讯
PFS概览

PFS概览 众所周知,若服务器的私钥泄漏,任何可以访问私钥的人...

Chrome 66 Beta即将上线 你的赛门铁克SSL证书可能会

Google Chrome 66 Beta将于3月15日,即本周四发布。 虽然谷歌和赛门铁...

Cisco VPN套件中过期的SSL证书将破坏网络配置

任何运行思科支持的虚拟专用网络(VPN)的人都可能需要安装更...

API测试是什么

什么是API API是Application Programming Interface的简写。 实现了两个或...

谷歌将在2018年9月取消“安全”标识

最后甚至会从Chrome的UI中取消挂锁图标。。。 谷歌爸爸在上周四...

最常见的开源协议

对最常见的开源协议做下总结分享 Mozilla Public License MPLLicense,允...

代码签名入门

代码签名证书简介及其许多好处 今天,几乎所有东西都是电脑。...

手把手Docker java web 应用helloword(四)

从昨天跟大家分享金网科技原创手把手Docker java web 应用hellowor...

常见的SSL错误解决办法

常见的 SSL 错误解决办法 为了保障用户的隐私信息安全,减少信...

使用Elasticsearch、Logstash和Kibana管理日志

​ 全面的日志管理和分析策略是关键任务,使组织能够理解运营...