Sep 15, 2021 Viewed: 44 Tags: 超级签名   企业签   TF签名   IOS签名   APP封装  

代码签名在软件供应链中的重要性

你怎么知道你的代码是可信的?

 

在一个难以获得信任的世界里,问自己一个重要的问题。我们如何知道我们正在运行的应用程序、我们正在部署的容器或我们提供给客户的代码是真实的?我们怎么知道它没有被篡改?这一切都归结为代码签名。

 

在本博客中,我们将讨论代码签名的重要性、正确实施它的挑战,以及 Keyfactor Code Assure 如何让您在不中断开发人员工作流程的情况下集中和保护代码签名(您可以通过单击找到有关此主题的完整网络研讨会)下面的“立即观看”)。

 

今天,软件不仅仅是店面。它是每个企业背后的运营引擎。为了让引擎像润滑良好的机器一样运行,我们需要知道我们构建的一切和部署的一切都是可信的。软件供应链中信任的核心是代码签名。代码签名可证明代码源供应商的身份,并验证代码自发布以来未被篡改。

 

我们正在迅速迈向一切都需要签署的现实。不仅是我们从第三方供应商处购买的软件,同样重要的是,我们在自己的组织中构建和部署的软件。这意味着从 PowerShell 脚本、Bash 脚本、容器、库、文件和可执行文件(您可以命名)的所有内容。但是代码签名已经存在多年了。那么,发生了什么变化?

 

1. 软件供应链中的威胁

 

由于采用了 CI/CD 以及构建和测试自动化工具,应用程序和运营团队的发展速度比以往任何时候都快。这意味着可以直接看到整个管道中发生的事情的人眼更少。从高级持续威胁 (APT) 组织到地下室黑客,不法分子在这些快速变化和复杂的环境中寻找弱点或漏洞。为了保持低调,恶意代码通常会在供应链的几乎任何一点被注入或修改,而不会被发现。要么是这样,要么他们损害了代码签名过程本身。

 

攻击者可以将恶意代码注入开源软件、源代码存储库或破坏构建服务器本身。以 SolarWinds 为例,攻击者仅将几行看似良性的代码注入到单个 DLL 文件中,从而在整个供应链中造成了深刻而广泛的威胁。

 

攻击者还可能获取或窃取在易受攻击的系统上发现的代码签名密钥,以对其恶意软件工具进行签名。我们已经在许多不同的场景中看到了这种情况,其中代码签名私钥被构建服务器、开发人员工作站泄露,甚至意外暴露在固件或软件本身中。

 

因此,从安全角度来看,仅仅对代码进行签名是不够的。现在,同样重要的是:(1) 确保开发人员正在构建的内容是签名并交付给您的客户的内容,以及 (2) 用于签署代码的基础设施和私钥受到严格控制。

 

2. 代码签名:攻击者的自然目标

 

攻击者已向左转移。他们不是直接针对组织,而是在软件供应链中寻找可以窃取工具或破坏代码的薄弱环节。国家支持的 APT 41 已经掌握了这项技术十多年,通过妥协他们的软件供应商或供应商间接瞄准了广泛的公司。代码签名是攻击者的自然目标,因为它允许他们滑入供应链并从内部破坏目标。这是如何发生的:

 

  • 密钥盗窃或滥用:攻击者通过未受保护的系统或错误配置的帐户访问控制窃取代码签名材料。

  • 系统危害:攻击者还可以危害集中签名或更新服务器,以在交付过程中劫持软件更新。

  • 代码泄露:恶意代码被注入开源库或源代码存储库,并且在签名并推送给最终用户之前未被发现。

  • 内部威胁:组织内的开发人员可能会有意签署恶意代码,甚至可能会在可公开访问的软件更新或存储库中无意泄露签名密钥。


3. 代码签名的现状


尽管存在这些众所周知的威胁,但现实情况是,我们今天与之交谈的大多数组织并没有像他们应该的那样进行签名,更重要的是,他们通常没有一致的代码签名流程。在最近的一项研究中,我们发现公司平均拥有 25 个代码签名证书。大约 51% 的受访者表示,他们将相关的私钥存储在硬件安全模块 (HSM) 中。另一方面,许多人表示在构建服务器 (33%) 和开发人员工作站 (19%) 上也可以找到私钥,近三分之二 (60%) 的公司没有正式的代码访问控制和审批流程——签名密钥。

 

4. 有什么阻碍?

 

问题在于代码签名通常与软件开发松散耦合,而不是紧密集成。这两个过程是脱节的,这会造成软件交付的摩擦和延迟,或者更糟糕的是,它为不良行为者提供了利用的可能性。以下是一些常见的障碍:

 

  • 远程团队:去中心化开发是新常态,它带来了一些挑战。在机器上本地存储密钥不是一种选择,但将大文件传输到集中签名系统会导致等待时间很长。

  • 无流程:代码签名密钥在 HSM 中得到了很好的保护,但仍然需要控制签名的内容、谁可以签名等。

  • 手动流程:策略护栏必不可少,但严重依赖硬件配置和手动审批流程的流程无法扩展。

  • 无集成:缺乏文件类型支持或与现有工具(例如 SignTool、Authenticode、jarsigner)的集成使得在允许开发人员透明工作的同时保持集中控制变得极其困难。


所以问题就变成了,你如何让开发人员签署代码变得简单和透明,同时保持对他们可以签署的内容和方式的集中控制?这是我们问自己的一个问题,但我们没有去寻找答案,而是构建了它。

 

5. 关键因素代码保证

 

随着我们转向更频繁的软件更新、远程开发团队和更多产品,我们已经超越了依赖于高度安全但大量手动流程的现有签名解决方案。这就是 Keyfactor Code Assure 的用武之地。为了在我们(和我们的客户)对透明度、易用性和安全性的要求之间找到适当的平衡,我们构建了一个可以:

 

  • 保护集中控制的 HSM(物理或云)中的私钥

  • 使开发人员能够在其本地机器上使用本机工具和签名方法,而无需私钥离开中央 HSM

  • 控制不同团队和角色的访问和职责分离

  • 根据用户/组、位置、签名方法和其他参数强制执行签名策略护栏

  • 维护所有代码签名活动和密钥使用的审计跟踪和时间戳

  • 与构建服务器和 CI/CD 工具(最显着的是 Jenkins)集成以自动执行代码签名

 

 

如果您需要将您的APP发布到IOS上并且遇到了困难,我们漫林科技团队也提供高性价比、稳定、安全的苹果企业签名,欢迎大家前来咨询!

 

我们的业务涵盖:

 

超级签名,企业签,tf签名,IOS签名,app封装

 

如您需要以下服务也可以找我们:

 

线上签名app,手机签名app,苹果签名app,h5封装app,iOS超级签名,iOS企业签名,iPhone超级签名,苹果企业证书,苹果超级签名,网页封装app,ios打包,Ipa在线安装,iOS信任开发者,iOS签名证书,iostf签名,应用分发平台,网站转app,ios免签封装,ipa签名工具,ios企业证书,p12证书,iphone信任开发者,超级签名系统,app发布平台,用开发者证书签名,ios描述文件制作,苹果安装ipa,h5打包apk。

 

漫林科技,只提供最优质的的服务!





More blogs