代码签名证书为软件开发商提供了一个理想的解决方案,使得软件开发商能对其软件代码进行数字签名。通过对代码的数字签名来标识软件来源以及软件开发者的真实身份,保证代码在签名之后不被恶意篡改。使用户在下载已经签名的代码时,能够有效的验证该代码的可信度。
要想实现代码签名必须首先获得数字证书才能使用这些功能。并且代码签名证书针对不同的平台,其代码证书品种也不尽相同,因此使用者最好事先咨询正规的代码签名证书的颁发机构。国际上,支持种类和品种最多的是VeriSign代码签名证书。国内的VeriSign代理机构如天威诚信,可以针对不同平台的代码签名应用,提供不同的代码签名证书产品及应用解决方案。
从用户角度,可以通过代码签名服务鉴别软件的发布者及软件在传输过程中是否被篡改。如果某软件在用户计算机上执行后造成恶性后果,由于代码签名服务的可审计性,用户可依法向软件发布者索取赔偿,将很好的制止软件开发者发布攻击性代码的行为。
从软件开发者和Web管理者的角度,利用代码签名的抗伪造性,可为其商标和产品建立一定信誉。利用可信代码服务,一方面开发者可借助代码签名获取更高级别权限的API,设计各种功能强大的控件和桌面应用程序来创建出丰富多彩的页面,另一方面用户也可以理性地选择所需下载的软件包。并且利用代码签名技术,还可以大大减少客户端防护软件误报病毒或恶意程序的可能性,使用户在多次成功下载并运行具有代码签名的软件后,和开发者间的信任关系得到巩固。
代码签名证书功能实现原理
代码签名的基础是PKI安全体系。代码签名证书由签名证书私钥和公钥证书两部分组成。私钥用于代码的签名,公钥用于私钥签名的验证和证书持有者的身份识别。
申请数字证书
发布者开发出代码
2. 发布者开发出代码;借助代码签名工具,发布者将使用MD5或SHA算法产生代码的哈希值,然后用代码签名证书私钥对该哈希值签名,从而产生一个包含代码签名和软件发布者的签名证书的软件包;
运行环境访问到该软件包
3. 用户的运行环境访问到该软件包,并检验软件发布者的代码签名数字证书的有效性。由于VeriSign根证书的公钥已经嵌入到用户的运行环境的可信根证书库,所以运行环境可验证发布者代码签名数字证书的真实性;
使用代码签名
4. 用户的运行环境使用代码签名数字证书中含有的公钥解密被签名的哈希值;
新产生一个原代码的哈希值
5. 用户的运行环境使用同样的算法新产生一个原代码的哈希值;
用户的运行环境比较两个哈希值
6. 用户的运行环境比较两个哈希值。如果相同,将发出通知声明代码已验证通过。所以用户可以相信该代码确实由证书拥有者发布,并且未经篡改。
整个过程对用户完全透明,用户将可以看到软件发布者提示信息,并可以选择是否信任该软件发布者。在选择信任软件发布者之后,运行所有该软件发布者签名的程序时将可以不再收到任何提示信息。
代码签名证书种类
不同数字认证公司提供的代码签名分类不同,以下分类按照代码签名证书产品类型划分。
(1) 代码签名数字 ID(Code Signing Digital IDs): 主要包括:微软代码签名证书 (Microsoft Authenticode Digital ID) :数字签名 .exe, .dll, .cab, .msi, .ocx, .sys, .cat, .vbs;火狐控件(FireFox Extension)签名证书:数字签名 .xpi; Java 代码签名证书 (Sun Java Signing Digital ID) :数字签名 Sun J2SE/J2EE 的 Java Applet 文件,以及数字签名 J2ME MIDlet Suite 文件,支持业界最多型号和最多品牌的手机。 Office宏代码签名证书 (Microsoft® Office and VBA):数字签名 Office VBA 及宏代码;Adobe AIR代码签名证书 (Adobe® AIR™);数字签名 .AIR 桌面应用程序;Shockwave代码签名证书 (Macromedia Shockwave®);数字签名使用Macromedia® Director® 8 Shockwave Studio创建的应用程序。
(2) 微软产品徽标认证证书 (“Designed for Windows logo” Digital IDs) :用于数字签名微软 Windows Logo 认证的各种软件、硬件驱动程序等,提交已经签名的软件给微软测试认证,还包括微软 Windows Hardware Quality Labs (WHQL) testing programs(Windows 硬件质量实验室测试计划 ) 认证。用户在向微软提交注册申请前,必须首先获取一张微软代码签名证书 (Microsoft Authenticode Digital ID)。从Windows Vista开始,微软在x64位的系统上强制推行数字签名,没有经过WHDL和RDS认证并数字签名的硬件驱动程序将无法在Vista x64版本上成功安装。在后续的Vista版本上,微软会逐步加强对数字签名的要求,最终要求所有的应用程序必须经过签名才能在Windows系统上运行。
(3) 微软移动代码签名证书 (Authenticated Content Signing for Microsoft Windows Mobile)(简称ACS,现已更名为Code Signing Account for Microsoft® Mobile2Market):支持使用微软 Windows Mobile 的 SmartPhone 和 Pocket PC 的移动终端操作系统的移动应用软件的非特权签名和特权签名,以确保移动下载的软件代码在移动终端 ( 如智能手机和 PDA) 的安全。
(4) Brew代码签名证书 (Authentic Document IDs for BREW) :用于数字签名高通公司推出的无线二进制运行开发操作环境下的 基于CDMA网络 “无线互联网发射平台” 上增值业务开发运行的 Brew 代码。
(5) Symbian代码签名证书 (Symbian Siged) :用于数字签名 Symbian S60 操作系统的智能手机下的 sis、sisx 格式文件。
(6) Adobe PDF代码签名证书 (True Credentials® for Adobe) :用于数字签名 Adobe PDF 文档。
(7) Apple 代码签名证书
Code Signing Certificate for Apple
可以让软件开发商使用此签名证书在证书有效期内不限数量的对 Apple操作系统上运行的代码进行数字签名。
VeriSign 作为国际顶级的认证机构(CA),支持以上所有产品并且兼容性最好。其中微软徽标认证证书、微软移动代码签名证书、Brew代码签名证书是 VeriSign 专有的产品。