什么是数字证书?
2023年7月12日
代码签名可向用户、操作系统和安全工具确认应用程序确实来自声明的发布者,且自发布以来未被篡改。如果没有代码签名,软件可能会被标记为不安全、被阻止安装,或被恶意攻击者利用。
代码签名的用途是用于验证程序开发者的身份与来源,同时确认软件自签名后未被篡改。
开发者为程序、应用、可执行文件或脚本进行代码签名时,会附加一份数字证书,用于证实自身身份以及软件的完整性。代码签名证书采用公钥密码技术,该技术同样应用于其他各类数字证书。这种机制被从移动、桌面到嵌入式系统的各类操作系统与平台所支持。微软的 Windows、苹果的 Mac OS X、各 Linux 发行版以及 iOS、Android 系统均广泛使用代码签名。
随着网络威胁越来越多地瞄准软件信任层面的漏洞,代码签名已成为抵御篡改、恶意软件传播以及供应链攻击的一线防御手段。
因此,对于希望保护用户、维持平台信任、确保软件安全可靠交付的软件发布者和开发组织而言,落实严格的代码签名实践至关重要。以下最佳实践有助于应对代码签名安全最常见的风险:
监控并审计签名活动:如果缺乏可见性,滥用行为可能在造成损害前都无法被发现。你需要维护详细的代码签名事件、访问记录、审批流程和时间戳日志。定期开展日志审计有助于检测异常活动,为调查工作提供支撑。
实施代码签名需要一对唯一的加密密钥对,其中包含需严格保密的私钥,以及可公开分发的公钥。二者共同构成了公钥加密技术的基础,支持在不暴露私钥的前提下完成软件签名。
生成新的密钥对后,借助公钥基础设施(PKI)公钥会作为证书签名请求(CSR)的一部分发送给证书颁发机构(CA)。CA会验证开发者或组织的身份,然后颁发代码签名证书。
开发者获取证书后,必须对软件代码进行哈希运算。哈希是指使用哈希函数将代码转换为任意固定长度值的过程。哈希运算的输出结果称为摘要,随后会使用私钥对摘要进行加密。接下来,开发者将该摘要、代码签名证书与哈希函数组合,生成名为签名块的内容——本质上是将上述所有元素整合为一段代码,可方便地嵌入软件中。
代码签名最大的风险点在于证书关联的私有代码签名密钥的保护。如果密钥泄露,证书将失去信任度与价值,危及已签名的软件。
许多组织使用安全保险库和硬件安全模块(HSM)来提升私钥的安全防护等级。还有部分组织采用专门的证书管理平台,对所有代码签名证书的生命周期管理进行自动化加固,典型产品如Sectigo Certificate Manager。使用证书管理器可有效提升私钥及其他加密资产的完整性保障水平。
简而言之,代码签名可帮助防范恶意软件及其他恶意代码伪装成无害文件或Windows更新等正常事件植入终端用户系统。其实现原理是让用户可以验证下载的文件确实来自原始发布方而非恶意攻击者。这强化了系统内的信任机制,让开发者可以向下载软件的终端用户保证来源可信、安全。
EV代码签名证书可提供额外的安全保障。这类证书要求密钥必须存储在符合FIPS 140-2及以上标准的高保障硬件中。符合该要求的USB令牌可通过PIN码增加一层防护,你也可以选择将密钥存储在组织本地部署的HSM中。
佐治亚理工学院网络取证创新实验室的研究显示,颁发和使用扩展验证(EV)SSL/TLS证书,可使网站免受钓鱼攻击和滥用的概率达到99.99%。该白皮书由Sectigo赞助,可在此处下载.
遵循这些代码签名最佳实践,可大幅降低未经授权的软件分发、安装时出现安全警告以及用户信任流失的风险,还能提升软件安装率,让软件更顺利地被用户采纳。
受信任的证书颁发机构颁发的证书会被操作系统和安全平台广泛认可。Sectigo是全球领先的证书颁发机构,提供快速、灵活的代码签名解决方案。我们的代码签名证书可帮助发布者建立信任,保护用户免遭篡改代码侵害,同时加快软件发布流程。了解Sectigo提供的不同类型的代码签名证书,或联系我们的如需了解更多信息,请联系专家团队.
中国区服务团队