代码签名证书新要求:最小密钥长度增强至3072位
发布日期:2021-12-14为了提高证书安全性,提前为未来先进技术做好准备,作为全球网络安全行业国际组织,CA/B论坛发布了如下通知:从2021年6月1日起,代码签名证书的最小密钥长度将从2048位增强至3072位。
代码签名证书(Code Signing Certificate)是软件开发商的理想解决方案。有了代码签名证书他们就可以对自己的产品(如应用程序、驱动程序、可执行文件或者其他程序)进行数字签名,保证软件代码和内容的安全性。签名后的软件可以标识开发者的真实身份,如果在传输过程中被第三方修改,将自动提醒最终用户以免被欺骗。
虽然数字签名可以在很长一段时间内保持有效。但与此同时,技术的进步容易使这些相对较老的、较弱的密钥受到暴力破解。因此,将来验证这些签名的一种方法是提高代码签名证书的最小密钥长度。
那么,密钥长度到底是什么?代码签名证书的密钥长度发生了什么变化?最重要的是,这将对代码签名证书的客户有什么影响?
什么是密钥长度
密钥长度是证书关联密钥对中的位数,用于签名和加密。密钥长度通常设置了一个加密算法的安全性上限,密钥长度越长,意味着更强的数字签名,也就更安全。理论上说,任何一种加密算法都可能被超强计算机通过暴力破解,但是在密钥长度越长的情况下,暴力破解的时间也会越长。所以理想情况下,在相当长一段时间内通过暴力破解密钥不是那么容易的。
但是随着科学技术的进步,攻击者在无人知晓的情况下恶意篡改应用程序也只是时间问题。为了确保当前的数字签名能在未来几年内可继续使用,提高密钥长度是一个很好的办法。
代码签名证书密钥长度发生了什么变化
在八年前,证书的密钥长度被要求从1024位调整至2048位。所以,现在代码签名证书的最小密钥长度是2048位,并且是非常安全的。但是,随着时间的推移,目前的安全加密签名在未来可能会受到威胁攻击,鉴于此问题,美国国家标准与技术协会(NIST)发布了NIST SP 800-57密钥管理建议:基于安全性考虑,建议在2030年之后不再使用RSA算法2048位密钥。
专注于CA和浏览器的安全技术与标准的讨论与制定的CA/B论坛在分析了NIST的建议之后,投票决定从2021年6月1日起,代码签名证书最小密钥长度为RSA3072位。
密钥长度的变化会产生什么影响
2021年6月1日之后颁发的代码证书将自动链接到3072位的根证书,因此您不用购买其他产品或重新定向3072位信任链。
在2021年6月1日之前签发的2048位代码签名证书,仍然可以有效使用。如果是在6月1日之后重签或续费代码证书,需要在生成CSR时选择RSA3072加密位数。但即使是在6月1日之前签发的2048位证书,为了遵循行业标准、提高安全性,沃通CA还是建议您尽快重签切换到3072位代码签名证书。
如何查看证书密钥长度
如果不知道自己现有证书的密钥长度,可通过以下几个简单的操作步骤就可以查看。例如,在Windows中找到您的证书文件,右键单击证书,选择【属性】,点击证书的【详细信息】选项卡,在【公钥】里即可查看到密钥长度,如下图:
Windows 10中的代码签名证书的属性窗口
如果您的代码签名证书是2048位,建议您在6月1日之后重签切换到3072位代码签名证书。
为了遵从CA/B论坛对代码签名证书的新规要求,Digicert,Entrust等国际CA纷纷调整策略。
Digicert宣布2021年5月27日之后签发的代码签名证书必须支持RSA算法3072位或更强的密钥长度。2021年上半年,Entrust已发布RSA算法4096位的根证书,新签的代码签名证书密钥长度将为RSA 3072位或4096位。如果Entrust代码签名需带有时间戳,那么就需要选择4096位的RSA密钥。具体变更详情可前往各自官方网站查询。