为什么要进行代码签名?什么是“双签”?
发布日期:2020-02-01近期,微软正式停止了对Win7系统的更新,陪伴了一代人的操作系统已日暮西山;恰巧在2020年1月1日起,全球的CA机构已不再颁发SHA-1代码签名证书,就让我们走进操作系统更替的背后,数字签名证书的起落,以及那个更替过程中无数开发者使用的操作——双签。
软件在操作系统中为什么要进行代码签名?
首先,先科普一下,软件在操作系统中为什么要进行代码签名?如果你是软件开发人员,你可能已经知道windows系统和一些浏览器使用一种称为数字认证代码(Authenticode)的技术来标识软件的发行商,检查软件没有被病毒影响,未使用数字签名的软件可能无法正常运行。软件开发者会在软件发行前使用代码签名证书为软件代码添加数字签名。
其次,我们来了解一下代码签名证书的算法SHA算法,安全哈希算法是用于数字签名的散列算法。其中包含了SHA-1,SHA-2(包括了SHA-224,SHA-256,SHA-384,SHA-512)这几种单向散列算法。SHA1签名算法的安全性正逐年降低,极有可能被破解。
国际标准组织要求全球CA机构于2015年12月31日之后,停止签发SHA1签名算法的各种证书。微软宣布Win7及其以上版本操作系统将在2016年1月1日起不再信任采用SHA-1算法签名的软件代码,在SHA1签名算法即将被微软新版操作系统弃用,SHA2签名算法却不兼容老版本操作系统的情况下。如何让自己的软件在各个版本Windows系统通行,成了软件开发者急需解决的难题。
如何让同一份软件代码,同时支持所有版本的Windows操作系统呢?
那就是运用双签。什么叫双签?双签就是对一个软件做两次签名,先进行SHA-1签名,之后再进行SHA-2签名的做法就叫做双签。双签需要一张SHA-1证书,一张SHA-2证书,一个待签名程序,当时的市面上出现了许多具备双签功能的优秀代码签名工具,但时至2020年1月1日,CA机构正式确认不再颁发SHA-1代码签名证书后,双签也即将退出历史舞台,真正的名义上的双签可以说已经没有了。