分类
知识中心

如何利用数字证书对软件代码签名

在正版软件商店里购买软件时,软件的来源很清楚,我们可以分辨软件的提供商;同时,凭借软件的封装,我们可以看到软件有没有被拆封过。籍此,人们可以决定对软件的信任程度。但是,当软件放到了Internet上,你在下载时还能有足够的信心吗?在计算机病毒横行的今天,你正在下载的杀毒软件也许就是一个病毒程序,这样的事情一点也不奇怪,那么,我们在网上怎么信任那些EXE文件呢?通过专门的代码签名软件和数字证书,我们可以对自己开发的软件发个身份证,软件的真实性和完整性可以通过公正的第三方机构来保证。这样,用户和软件作者之间的信任通过第三方的公正机构得到了保证。

代码签名证书主要颁发给软件开发商,代码签名证书用于提供软件开发人员对其开发的软件代码–如宏、病毒更新,.exe、.dll、.cab、.ocx后缀文件等进行数字签名。一方面,可以确信软件的来源是否出自于签发者,万一用户下载的是有害软件,也可以根据证书追踪到软件的来源。另一方面,保证软件在签发之后未经篡改或破坏,使用户免遭病毒与黑客程序的侵扰。对于软件提供商来说,使用代码签名证书,其软件产品更难以被仿造和篡改,增强了软件提供商与用户间的信任度和软件商的信誉。

代码签名的另外一个作用是确定数字签名的时间,也就是时间戳。时间戳的作用在于证明某一段数据在该时间的存在性。比如你有一个重大发现,希望用它来争取诺贝尔奖,你用Word编写你的内容,但是为了证明你是第一个发现者,你需要证明你写的时间,由于文件的时间可任意修改,不能作为证明,所以你需要有一个时间戳,你通过某个Hash算法计算出你的Word文件的摘要并发送给一个权威的时间戳签名服务商(DTS),DTS对摘要和签发时间进行数字签名,形成时间戳发还给你,你将文件时间戳合并,作为将来证明你撰写时间的依据。时间戳服务需要很高的权威性,所以对私钥存储、时间来源都有很高的要求。时间戳服务器参考地址如下:http://timestamp.sheca.com/timestamp。

所以,就有了微软公司和国内软件合作伙伴的安全故事。对于国内小小的软件开发商而言,微软无异于操作系统领域的一艘航空母舰。几乎每个使用电脑的人都被囊括进微软的势力范围,所以如果能获得微软的认可和支持,那么自己的产品就算是拿到了通往国际市场的护照。现在,在国内盗版风头未减的情势之下,微软出于维护自己这个金字招牌的考虑,对有搭载之请的软件开发商提出了安全资质的要求。也就是说,无论对方的软件品质如何卓越,要想得到微软的青睐,首先得保证没有别人能够假冒。所以在把软件送到微软验证之前,合作伙伴要给它贴上一张能够被微软识别的安全标签,其中包含了软件开发商的身份信息、公钥及WHCA的签名,类似于现实生活中的商业执照,可以代表签名者在虚拟数字网络上的合法身份。给你的软件做了签名,就等于敲开了微软的第一道大门,他们才会放心地把你的产品送到美国总部进一步进行品质方面的认定。

数字时间戳服务对于软件用户和软件作者双方应该是有约束力的,参与方不能否认其行为。这其中需要在经过数字签名的交易上打上一个可信赖的时间戳,从而解决一系列的实际和法律问题。由于用户桌面时间很容易改变,由该时间产生的时间戳不可信赖,因此需要一个第三方来提供可信赖的且不可抵赖的时间戳服务。对于某些比较专业的软件,由于现在盗版软件比较猖獗,通过申请时间戳,可以证明你在某一时刻拥有这一信息。如果想查看时间戳的相关信息,选中”反签名”下的选项,单击被激活的”详细信息”按钮,即可看到时间戳的相关信息。

有了代码签名证书以后,用户和软件开发者之间就可以在相互信任的基础上,展开更加深入的合作了。