FAQ Hero
代码签名信任

什么是代码
签名最佳实践?

什么是代码签名最佳实践?

代码签名验证软件开发人员或发布者的身份,并确认在代码被签名到下载的整个过程中其完整性完好无损。这证明了代码可以受到信任。遗憾的是,恶意分子不断试图渗透代码签名实践,从而将恶意软件嵌入受信任的代码。

以下是一些用以减轻攻击风险的最佳实践:

  • 安全的密钥存储:如果用于签名的私钥被泄露或失窃,那么它可以被用于对被嵌入恶意软件的软件进行签名,这样被发布的软件会注册为源自该组织的合法软件。应在硬件安全模块(HSM)中保护私钥,或在待用时对其进行加密。根据CA/浏览器(CA/B)论坛要求,用于公共信任的密钥必须存储在HSM中。
  • 强制执行密钥和签名访问控制:设置策略并强制执行密钥访问控制,以确保只有获得授权的开发人员和用户才能在需要时使用特定的密钥进行签名。在云中生成密钥,这样密钥就不会被共享、丢失或被盗。强制执行职责分离,即分离生成密钥者和签名者的职责。实施多因素身份验证(MFA),以确保访问签名的人确实是其自称的那个人。对于已离职或不再需要访问签名或密钥生成的人员,吊销其访问权限。
  • 监测并审核密钥签名工作流程:追踪谁在什么时候签署了什么内容,这样您就可以对未经授权的签名做出快速响应,并采取适当的补救措施。定期审核与密钥对相关的所有活动,包括生成、证书操作、密钥分配和签名访问。
  • 保持最新状态并强制执行整个公司范围的加密标准策略:行业要求可能发生变化,以帮助组织领先于威胁形势。CA/浏览器论坛的新要求将3072位RSA定为公共可信代码签名和时间戳证书的最低密钥要求,自2021年6月1日起生效。组织内的开发人员和用户在生成密钥或进行代码签名时,可能知道也可能不知道这些变化。组织必须强制执行行业要求,以防止用户使用弱的或不合规的算法、密钥大小或曲线来生成密钥或请求证书。
  • 在SDLC流程中启用自动化的代码签名:在CI/CD管道等SDLC流程中实现签名的集成和自动化,这样您就可以降低未签名代码或不合规签名的风险。您可以设置安全控制和自动化,从而以连续、快速的软件开发节奏构建安全且合规的软件。
  • 比较来自不同生成服务器的签名:近期的软件供应链攻击造成世界各地影响力巨大的组织出现严重的运营和财务中断。恶意分子潜入目标组织的开发运营之中,并在SDLC期间将恶意软件嵌入代码中,之后这些被篡改的代码被发布并部署在客户系统之中。在发布代码之前对来自不同生成服务器的软件的哈希进行签名和比较,以查明服务器生成之间是否存在任何差异。两个或两个以上相同生成的法定数量可确保生成是安全的,并且生成中没有包含未知代码。
  • 吊销已泄露的证书:如果您发现被泄露的密钥或已签名的恶意软件,请向您的证书颁发机构(CA)报告此事件。代码签名证书需要被吊销,这将使软件不再有效,并阻止恶意软件的进一步传播。
  • 为您的已签名代码添加时间戳:避免代码签名证书过期导致软件意外过期的风险。代码签名证书的有效期为1-3年。如果代码签名证书过期,那么已签名的软件也将过期,除非软件在签名时带有时间戳。系统将记录时间戳,因此只要软件在生产中,就会继续有效。为代码添加时间戳的另一个原因是为了最大限度地减少证书吊销的影响。如果发现恶意软件并且必须吊销相关证书,时间戳将最大限度地减少影响,其原因是吊销只会影响在入侵日期之后发布的软件。