代码签名证书技术白皮书

  BJCA的代码证书产品是发放给全球范围内的软件发行商。实现了对软件的真实性、完整性的确认与保护,解决了软件被不法分子破解、篡改、植入木马等安全问题。

 

一、网络中存在的风险

  在木马和病毒横行的互联网上,用户经常通过网络下载软件,如何向您的用户保证您的代码是真实可信的呢?如何防止心怀叵测的黑客修改您发布的代码,植入病毒或木马,给您的用户造成损失从而毁坏您的声誉呢?

  代码签名证书是BJCA针对网上发布控件、应用程序、驱动程序等产生的代码安全问题提供的一种安全、可信产品,能满足各种数字签名的应用需要,让内容提供商和软件开发商能数字签名其软件代码、宏代码、设备驱动程序、硬件固化程序、病毒更新码、配置文件等。

  BJCA告诫用户不要运行无签名代码,因为下载/运行无签名代码会产生令人担忧的“不明发行商”的安全警告。无签名的软件会被篡改(如插入间谍软件、恶意软件或有害代码以及磁盘空间重分配)。同时,安全警告会让用户对软件产生强烈的不信任感。

  而一旦软件被进行了数字签名,消费者可确认软件开发商的身份以及确认软件自从由原始供应商发布以来未被篡改过。也使应用安装程序增加一个基本的信任水平。

 

二、完善的解决方案

  1、代码签名证书概述

  在木马和病毒横行的互联网环境下,由于互联网缺乏提供软件安全信息的机制,用户通过互联网下载或打开软件时,通常会看到一个消息框,警告运行该软件可能造成的危险,使得用户对缺乏完整性保护并且发布者不详的软件产品的信任度降低。

  代码签名证书是BJCA针对网上发布控件、应用程序、驱动程序等产生的代码安全问题提供的一种安全、可信产品。

  使用代码签名证书前后的安全警告消息框在界面上有明显的区别,如图1,图2:
 

cswp-01.png

cswp-02.png

  2、代码签名证书实现原理

  代码签名的基础是PKI安全体系。代码签名证书由签名证书私钥和公钥证书两部分组成。私钥用于代码的签名,公钥用于私钥签名的验证和证书持有者的身份识别。

  (1)发布者从CA机构(如BJCA)申请数字证书;

  (2)发布者开发出代码;借助代码签名工具,发布者将使用MD5或SHA算法产生代码的哈希值,然后用代码签名证书私钥对该哈希值签名,从而产生一个包含代码签名和软件发布者的签名证书的软件包;

  (3)用户的运行环境访问到该软件包,并检验软件发布者的代码签名数字证书的有效性。由于BJCA根证书的公钥已经嵌入到用户的运行环境的可信根证书库,所以运行环境可验证发布者代码签名数字证书的真实性;

  (4)用户的运行环境使用代码签名数字证书中含有的公钥解密被签名的哈希值;

  (5)用户的运行环境使用同样的算法新产生一个原代码的哈希值;

  (6)用户的运行环境比较两个哈希值。如果相同,将发出通知声明代码已验证通过。所以用户可以相信该代码确实由证书拥有者发布,并且未经篡改。

  整个过程对用户完全透明,用户将可以看到软件发布者提示信息,并可以选择是否信任该软件发布者。在选择信任软件发布者之后,运行所有该软件发布者签名的程序时将可以不再收到任何提示信息。

  3、代码签名证书功能介绍

  代码签名证书是BJCA针对网上发布控件、应用程序、驱动程序等产生的代码安全问题提供的一种安全、可信产品,能满足各种数字签名的应用需要,让内容提供商和软件开发商能数字签名其软件代码、宏代码、设备驱动程序、硬件固化程序、病毒更新码、配置文件等。

  BJCA提供的代码签名证书是对您的代码进行第三方认证的服务。通过对您所开发的代码进行数字签名来标识您的身份,并保证代码在签名之后不被篡改。用户在下载已经签名的代码时,计算机会自动验证该代码的可信性,并提示用户可以放心下载和使用。

  从用户角度,可以通过代码签名证书鉴别软件的发布者及软件在传输过程中是否被篡改。例如:如果某软件产品在用户计算机上执行后造成恶性后果,由于代码签名证书的可审计性,用户可依法向软件发布者索取赔偿,将很好的制止发布攻击性代码的行为。

  从软件开发者和Web管理者的角度,利用代码签名的抗伪造性,可为其商标和产品建立一定信誉。利用代码签名证书,一方面开发者可借助Java小程序、各种插件和执行文件创建出丰富多彩的页面,另一方面用户也可理性地选择所需下载的软件包。用户在多次成功下载并运行具有代码签名的软件后,用户和开发者间的信任关系将会得到巩固。

  同时,一旦软件被进行了数字签名,消费者可确认软件开发商的身份以及确认软件自从由原始供应商发布以来未被篡改过。安全警告由“担忧”变为“已知发行商”,使应用安装程序增加一个基本的信任水平。

  4、代码签名证书类型

  (1)微软代码签名证书

  微软代码签名证书主要用于证明软件开发者(个人和企业)发行的软件码符合微软认证码( Microsoft Authenticode) 规范。您可以使用微软代码签名证书来为您的软件代码进行数字签名,以便通过互联网安全分发,使得最终用户能确相信您的代码已经通过权威的第三方认证,而且没有在传输过程中被非法篡改和被破坏。主要对微软平台下的 OCX CAB EXE 文件进行签名。

  主要特点:
  - 支持Windows .exe, .dll, .class, .cab, .ocx(ActiveX)文件
  - 保护您的代码的完整性 ( 未被篡改或破坏 )
  - 证书有效期内不限签名代码次数
  - 让最终用户能确信此代码确实是您提供的,已经包含了免费时间戳服务,确保已经签名的代码永远有效

  (2)Java代码签名证书

  Java 代码签名证书主要用于证明软件开发者开发的软件代码符合 Sun Java规范。您可以使用Java 代码签名证书来为您的 Java 代码进行数字签名,以便通过互联网安全分发,使得最终用户能确信您的代码已经通过权威的第三方认证,而且没有在传输过程中被非法篡改和被破坏。主要对JaVA(j2me j2se)环境下的 JAR JAD 文件签名。

  主要特点:
  - 支持 Sun Java .jar(Java Applet) 文件(J2SE)和 J2ME MIDlet Suite文件
  - 保护您的代码的完整性 ( 未被篡改或破坏 )
  - 让最终用户能确信此代码确实是您提供的

  (3)微软徽标认证证书

  微软徽标认证证书("Designed for Windows logo" Digital IDs),用于数字签名微软Windows Logo认证的各种软件、硬件驱动程序等,提交已经签名的软件给微软测试认证,包括微软 Windows Hardware Quality Labs (WHQL) testing programs(Windows硬件质量实验室测试计划)等。

从 Windows Vista开始,微软在x64位的系统上强制推行数字签名,没有经过WHDL和RDS认证并数字签名的硬件驱动程序将无法在Vista x64版本上成功安装。在后续的Vista版本上,微软会逐步加强对数字签名的要求,最终要求所有的应用程序必须经过签名才能在Windows系统上运行。 微软代码签名证书,主要用于WHQL认证(用于获取Windows Logo)。

  (4)微软手机代码签名证书

  微软手机代码签名证书主要用于证明软件开发者开发的软件代码符合 微软规范。您可以使用微软手机代码签名证书来为您的代码进行数字签名,以便通过互联网安全分发,使得最终用户能确信您的代码已经通过权威的第三方认证,而且没有在传输过程中被非法篡改和被破坏。主要在mobile 手机平台下运行的程序进行签名

  5、代码签名证书兼容列表

  BJCA通过与各大浏览器开发厂商、移动终端开发商的深度合作,现已可以兼容市场上95%以上的浏览器、移动终端平台等。

cs-pt.png

 

三、BJCA产品优势

  (1)代码签名证书可消除IE以及Windows 操作系统中弹出的不明发行商”

  (2)完整的时间戳服务包括免费的在你的代码上盖上时间戳以保证签名不会过期。

  (3)14天内免费进行证书更换;一天之内快速反馈

  (4)组织机构确认――你的客户可看到你身份的认证证据。

  (5)由BJCA 责任程序进行支持;一次购买多年,可享受优惠折扣


四、BJCA标准服务承诺

电话热线支持

我们为您提供7X24小时最及时、专业的的电话热线服务和20分钟紧急响应机制。

网页在线客服

当您登陆BJCA网站时,即可轻松、方便的以打字方式与网页在线客服人员交流。

在线服务平台

我们为您提供一个专业、全面的在线服务平台,帮助您了解网络安全和数字证书的知识;通过FAQ,您可以轻松找到常见问题的解决方法。

Email邮件支持

您可以通过电子邮件向我们咨询产品或反映问题,我们将及时联系您,介绍产品、解决问题。

保险赔付保障

如果您因使用我们的服务器证书遭受损失,我们将为您提供高额赔偿,赔偿金额最高可达25万美

 

五、我们的客户

sslwp-04.png