在目前木马和病毒横行的互联网环境下,当开发者或发行者将软件、控件、驱动程序等发布到网上时,就必须考虑程序能否被用户安全的使用,而这恰是一个棘手的问题。近年来,不时曝出应用软件被黑客植入恶意代码的报道,感染了恶意代码的软件不仅会给用户造成不便或危害,更会降低用户的信任度并损害开发者的名誉,同时也是对开发者知识产权的践踏。针对这种情况,开发者或发行者需要一种途径可以提示用户不要安装那些表面正常,但实际已被恶意代码侵入的程序。而目前最佳的途径就是利用代码签名证书对程序代码进行数字签名,通俗点讲就是对软件代码进行认证。那么,代码签名证书是如何保护开发者和用户们的权益呢?
什么是代码签名证书
代码签名证书是一张数字证书,它的实现基础是PKI/CA(公钥基础设施/第三方认证授权机构)安全体系。代码签名证书通过CA签发,确立其可信性、公正性;通过PKI体系中的公、私钥技术实现加、解密和签名。代码签名证书在签发后可以封装在程序安装包中,当用户下载了经过签名的安装包并进行安装时,计算机会自动验证该代码的可信性,并提示用户可以放心下载和使用。
代码签名证书可以说是CA对开发者的代码进行的第三方认证服务,它建立了一种信任机制,让互联网上的软件传播不再混乱无序,让用户可以识别软件发行者的真实身份和来源,判断出哪些软件是安全可靠、可以安装的。
代码签名证书的价值
在传统的软件购买模式中,购买者通过检查软件外盒包装来确定应用程序的来源及完整性。然而,在互联网下载的软件因为存在着难以确认开发商及发行商的风险,若不慎在互联网中下载到被植入恶意代码的软件,不仅可能使用户遭受攻击,并导致服务中断,还会严重损害应用程序开发者的声誉。
而通过代码签名证书来标识软件发行者的身份,用户便可以选择只安装那些经过认证的软件,避免遭受攻击。同时,利用代码签名技术的软件还可以大大减少客户端防护软件误报病毒或恶意程序的次数,使用户在多次成功下载并运行具有代码签名的软件后,和开发者间的信任关系得到巩固,提升软件的安装量和客户群。
代码签名证书的使用效果
如果软件未经过代码签名证书的认证或签名遭到篡改及恶意代码的植入,计算机操作系统会给用户发行者未知的警告:
而经过代码签名证书认证的软件在安装时,发行者身份一目了然,来源更为清楚:
同时,用户还还可以查看代码签名证书的详细信息:
如何选用代码签名证书?
开发者一定要从Windows操作系统内置的受信任的根证书颁发CA机构购买代码签名证书,否则无法通过验证,也就是如果使用了不受信任的代码签名证书,计算机系统仍会按“未知发行者”进行警告。同时,对于国内的软件开发者来说,从防止技术信息泄露的角度考虑,可优先选择根证书系统建在国内的国产代码签名证书。目前,我国只有CFCA(中国金融认证中心)在国内自建了代码签名证书根证书系统(非从国外收购、迁移、交叉签名),同时其证书通过WebTrust国际安全审计认证,获得全球信任,可以全球通用。
目前,CFCA提供两种类型的代码签名证书。其中,OV型(组织型)代码签名证书使用SHA256签名算法,能为软件代码提供安全身份认证,可以满足绝大多数发行者的需求。而对于部分对软件开发安全及用户体验有较高需求的开发者来说,可以选用EV型(增强型)代码签名证书。EV型证书存储在Ukey中,存储安全性更高,同时配有时间戳系统,从时间上进一步增强代码签名的可信性和认证强度。由于安全系数和认证强度的提高,EV型代码签名证书可以获得操作系统更高的信任待遇,例如在微软的APP Store中,如果使用了EV证书,会有额外的信任度标识,带给用户更佳的信任体验。