打造自己的防伪标识──跟我学做数字签名

你想在自己编写的软件上刻上自己的名字吗?你想保证用户拿到的软件确实是你写的而不是被加了木马的版本吗?你可以为软件加上数字签名来做到这一切。
   本文通过一个实例,一步一步地介绍微软公司提供的数字签名工具的使用方法。
  #1 一、准备工作
   首先,你需要拥有一个数字证书。现在,在网上有很多CA(Certificate Authoritg,证书授权)中心提供此服务。文后将附有一个目前比较常见的CA中心列表。
   到MSDN下载区(http://msdn.microsoft.com/downloads/default.asp)选择左边的Security,会进入安全产品页面。在此页中选择左边的Authenticode,就会进入下载页面了。左边一共有4个选择,选择Authenticode for Internet Explorer 5.0,点击右边的连接下载codesign.exe。
   把下载的codesign.exe展开,会得到8个文件。其中对软件进行数字签名的文件是signcode.exe。
   得到数字证书和signcode.exe以后,就可以开始对软件进行数字签名了。
  #1 二、开始签名
   ①运行signcode.exe,出现数字签名向导。点击下一步,进入如(图1)1所示的文件选择界面。在该界面中可以选择要签名的文件。目前支持的文件类型有exe、dll、ocx、stl、cab、cat六种。

图1
图1

   ②选择好文件,点击下一步,会进入(图2)2所示的签名选项窗口,要求选择“典型”设置或者“自定义”设置。在这里我们选择“典型”。
图2
图2

   ③随后,会出现如(图3)3所示的要求选择签名使用的证书的窗口。点击“从存储区中选择”按钮,在已经安装的证书中选择一个,然后点下一步。
图3
图3

   ④这时,会要求填写该软件的描述。如果需要,在上边的框里填上软件的名字,下边写上主页地址,然后点下一步((图4)4)。
图4
图4

   ⑤如果需要在数字签名上加上日期,表示软件的发行日期,可以添加时间戳。在复选框上打上钩,然后在“时间戳服务URL”的框里写上http://timestamp.verisign.com/scripts/timstamp.dll就可以了。如果不需要,就直接点下一步((图5)5)。
图5
图5

   经过以上5步,数字签名向导已经收集到足够的信息对指定的文件进行签名。因为加上的签名不能去掉,所以出现如(图6)6所示窗口要求对信息进行验证。如果有问题,可以点上一步按钮退回修改;如果没有问题,点完成按钮,签名向导就会对文件进行签名。如果选择了时间戳服务,必须上网才可以成功签名,并且等待的时间可能会长一些。
图6
图6

  #1 三、验证签名
   查看签名完毕的文件的属性,会有“数字签名”页((图7)7)。
图7
图7

   点击对话框中的详细信息按钮,可以查看签名时用的证书和时间戳(如果有的话)。如果文件被修改过(我们这里使用ExeScope修改一个字符串),则会出现如(图8)8所示的详细信息窗口。
图8
图8

   附:中国常见CA中心的网址
   上海、北京、天津CA中心 http://www.sheca.com
   格尔网络安全 httpL://www.koal.com
   中国数字认证网 http://www.ca365.com
   中国电信认证中心 http://202.103.65.18
   中国金融认证中心 http://www.cfca.com.cn