您当前的位置:   首页 > 新闻中心
代码签名的最佳实践?以及如何实施它们?
发布时间:2023-04-03 07:44:26   阅读次数:

image.png

在处理网络安全和组织安全时,为每一种可能发生的情况做好准备至关重要。其中最重要的形式之一是代码签名,尤其是对于创建和分发软件给客户的组织。从本质上讲,代码签名是一个相对简单的过程。软件发行商或分销商想要创建代码发送给客户使用,但首先他们必须确保代码可以被用户信任。这就是代码签名的用武之地。首先,使用称为证书签名请求的东西从受信任的(通常是外部的)公钥基础设施 (PKI)生成密钥对。


证书签名请求或 CSR 请求证书由受信任的 PKI 生成和签名,并与密钥对相关联。密钥对涉及公钥和私钥,顾名思义,它们分别公开和私密。CSR 和密钥对随后被发送到 PKI 的证书颁发机构,用户的身份由证书颁发机构或 CA验证。在此验证之后,CSR 本身得到验证,公钥与请求者的身份捆绑在一起,因此一旦 CA 对捆绑包进行签名,便会创建一个有效的代码签名证书。然后请求者收到证书并可以开始签署代码。


创建代码签名证书后,代码签名过程才真正开始。首先,要签名的代码通过哈希算法进行哈希处理。散列算法将文件作为输入,并创建散列摘要。哈希摘要是一系列基于文件内容的唯一数字和字母。如果一个文件只更改了一个字母,那么哈希摘要将完全不同。然后将证书的散列和私钥传递给签名算法并创建签名。然后将签名附加到代码上并发送给用户。在深入研究代码签名的最佳实践之前,让我们简要了解一下为什么代码签名如此重要。


代码签名的重要性

代码签名对许多组织的安全至关重要。如果攻击者可以窃取对其中包含恶意软件的代码进行签名的能力,那么您的组织的声誉将受到威胁。另外,可以通过代码签名来验证软件的有效性和软件的开发者。这也让通往大型应用程序商店的大门也被打开。最大的应用程序商店要求对这些应用程序商店中使用的应用程序使用代码签名。这将允许许多较小的应用程序所有者通过简单的代码签名过程将他们的应用程序发布到大型应用程序商店。现在我们知道为什么代码签名如此重要,让我们来看看代码签名最佳实践。


代码签名最佳实践

  • 病毒扫描

    任何代码签名的一个重要部分应该是恶意软件和病毒扫描到位。上传文件进行哈希处理时,应进行病毒扫描。病毒扫描之所以如此重要,是因为如果代码中嵌入了恶意软件,然后对其进行哈希处理,那么在签名过程中可能无法检测到该恶意软件。一旦代码被您的组织签署并批准,嵌入了恶意软件,用户就会毫不犹豫地将代码安装到他们的计算机上,因为受信任的组织已经批准了签署的代码。一旦下载,恶意软件就会开始感染用户的计算机,从而给您的组织带来坏名声并伤害信任该组织的用户。最好选择一种代码签名工具,该工具可以与您的组织已有的病毒和恶意软件扫描相集成。


  • 安全私钥存储

    代码签名过程中最容易受到攻击的部分之一是与证书关联的私钥。如果这个保护不当,那么整个代码签名过程就白搭了。一旦密钥被盗,对手就可以使用该密钥以组织的名义签署他们自己的代码,让用户认为它是一个可信的软件,而事实并非如此。然后他们可以发送代码,据说来自您的组织,充满恶意软件,这样所有下载和使用该软件的用户都会被感染。近年来,许多供应链攻击就是以这种方式发生的。由于对私钥采取了不适当的保护措施,攻击者能够获取这些密钥并使用代码中的恶意软件对代码进行签名。


    然后将代码发送给服务提供商,每个服务提供商都有数以千计的用户在多家不同的公司使用该软件。然后,该恶意软件能够感染所有这些用户,从而使攻击者能够窃取信息、金钱等。基于软件的密钥存储是可能的,但它远不如基于硬件的密钥存储安全。建议根据其使用基于硬件的存储方法(例如:揽阁信息提供的硬件安全模块/HSM/加密机)来选择代码签名解决方案。这些存储密钥非常安全,以至于攻击者需要先窃取设备本身,然后才能破解设备以窃取密钥。到那时,密钥可能会被轮换或变得无用,因此密钥现在已无用。


  • 二次验证

    其他工具可以与代码签名一起使用,以确保任何签名都保持安全。Active Directory、多因素身份验证、双因素身份验证等工具是跟踪谁可以签署代码以及何时签署代码的好方法。使用这些工具,用户不仅需要使用密码登录,还需要在访问网页以创建代码签名密钥对和实际签名过程之前进行第二层验证。这将阻止外部攻击者在他们不应该的时候进行签名,并且还可以跟踪组织内可能发生的任何内部威胁。组织使用的任何代码签名产品都应使用某种类型的二次验证,以确保最大限度地保护该组织发出的安全性。


  • 时间戳

    时间戳的使用是代码签名过程中使用的另一个重要工具。时间戳涉及在签名时印上特定的时间和日期,以便记录和跟踪签名过程。这通常是通过在代码签名过程中联系时间戳服务器来完成的。


  • 文件记录

    代码签名的另一个重要因素是记录每个代码签名操作和其他相关任务。创建密钥对、创建代码签名证书、实际签署代码以及更改代码签名证书或密钥对等操作都应记录下来以备将来使用。将日志存储在一个位置将允许审计员查看已发生的过程,以记录代码签名工具中发生的事情。


    此外,如果发生内部或外部威胁,那么拥有这些日志也很重要。这将允许组织跟踪已发生的过程以发现谁签署了什么。日志记录还可用于阻止恶意开发人员在中间过程中签名。如果签名过程没有得到适当团队的批准,那么它可以在为时已晚之前停止。



揽阁信息可提供的部分安全产品和解决方案信息

联系揽阁信息,您可以获取到更多满足全球合规性要求的信息安全产品资料,以及相关的整体解决方案的相关资料。如:


您还可以得到揽阁信息所提供的优质服务。

揽阁信息 · 值得您信赖的信息安全顾问!


相关阅读

购买咨询电话
021-54410609