ActiveX 部件的数字签名

来源:互联网 发布:centos查看防火墙状态 编辑:程序博客网 时间:2024/04/28 15:01
ActiveX   部件的数字签名  
   
   
  Internet   Explorer   的缺省安全设置要求任何可下载的软件在下载之前必须拥有一个数字签名。数字签名能用于对以下内容进行核实:    
   
  文件的内容。  
   
   
  文件有可靠的来源。    
  签名提供了一种验证文件内容的方法,该方法确保该文件在可用于下载后未被改变过。数字签名通过标识创建软件的合法实体来验证来源。当您在可下载的软件中加入了签名,您就是合法实体。合法实体应该为签名软件被下载时或运行后所造成的损失负责。  
   
  应被签名的软件  
  有五种类型的文件可以使用数字签名:    
   
  .exe   文件  
   
   
  .cab   文件  
   
   
  .dll   文件    
   
   
  .ocx   文件  
   
   
  .vbd   文件    
  如果提供以上类型的文件下载,就应为其设置数字签名。  
   
  注意   通常,只要在部件打包后的   .cab   文件中进行签名就足够了。然而,如果要发行的   .ocx、.exe、.vbd   或   .dll   文件没有打包在   .cab   文件中,就要单独为其进行签名。  
   
  您可以通过向认证机构购买证书来获得数字签名。认证机构是一个确认身份并发行认证证书的公司。证书中包含您的数字签名,是您信用的验证。一旦出现问题,认证机构将成为您身份的见证人。  
   
  公用密钥与私用密钥  
  在使用数字签名时要使用   Authenticode   技术。Authenticode   的目的是通过建立责任制来阻止有害代码的发行。Authenticode   将验证发布代码的发行人的身份给要下载这份代码的   Internet   最终用户。此外,Authenticode   可以为用户确保该代码在签名后未被改动。  
   
  Authenticode   技术来源于公用密钥签名技术。该技术使用了密钥对来加密数据。密钥对用于文件的加密和解密。在公用密钥技术中,公用密钥和私用密钥确保了文件的私有性。公用密钥用于加密数据,而私用密钥则用来解密数据。尽管该技术用于保护诸如电子邮件之类的小文件是很成功的,但是对于大文件,这一过程却是非常消耗时间的。Authenticode   正是这种技术的一种改进形式,专供大文件使用。  
   
  Authenticode   与签名  
  以下是   Authenticode   过程中的一些步骤:    
   
  在开发者对文件签名时,要计算一个哈希数。哈希数表示文件的总字节长度。该数字用私用密钥加密并插入到文件中。然后,开发者将文件进行打包并将其部署到   Web   服务器上。  
   
   
  当用户下载或安装文件时,他们的计算机计算第二个哈希数,并同原先的进行比较。如果数字相同,则文件的内容就得到了验证。  
   
   
  浏览器使用公用密钥来决定您的身份和提供数字签名的认证机构。  
   
   
  认证机构核实开发者的身份,并将包含经私用密钥加密的开发者名字的证书授予开发者。  
   
   
  浏览器使用私用密钥将文件解密。然后进行安装。    
  ActiveX   SDK   中有用于数字签名的   Authenticode   软件工具,用户可以从   Microsoft的   Internet   站点上下载。数字签名必须从发行机构获得,例如   GTE   和   VeriSign   公司。  
   
  详细信息   关于如何下载   ActiveX   SDK   的详细信息请参阅您   MSDN   Library   CD-ROM   上的   Internet   Client   SDK,或   http://www.microsoft.com/workshop/prog/inetsdk/。有关公用和私用加密的详细信息,请在   Internet   上搜索   RSA   或公用密钥签名。  
   
  证书的保护  
  由于您的公司要为所有使用签名的文件负责,而不论签名是否经过授权,所以确保您证书的安全非常重要。您应该将证书保存在发行证书的认证机构中,将文件送去签名。如果将证书保存在自己的站点上,应严格控制其存取权限。  
   
  详细信息   要获得有关安全和数字签名的最新技术资料,请访问   Microsoft   Web   站点http://www.microsoft.com/security   上的   Microsoft   Security   Advisor   表中的   Authenticode   链接。  
   
  如何为代码签名  
  您可以对任何要发行的   .ocx、.exe、.dll、.vbd   或   .cab   文件进行签名。为代码签名主要有两步。首先,必须申请证书,然后再进行签名。  
   
  要为您的代码签名,请按以下步骤执行:    
   
  向认证机构申请证书。请访问http://www.microsoft.com/workshop/prog/security/authcode/certs.htm,以获得有关如何获得证书的指导。  
   
   
  从http://www.microsoft.com/workshop/prog/sdk/   上获取   ActiveX   SDK   的最新版本。其中包含您对代码签名所需要的工具。  
   
   
  准备要签名的文件。如果对.exe、.ocx、.vbd   或.dll   文件签名,您不需要做任何特别的事情。如果对.cab   文件签名,您必须将以下条目添加到   .ddf   文件中,并重新生成.cab   文件:    
  .Set   ReservePerCabinetSize=6144  
   
  使用   ActiveX   SDK   中的工具对文件签名。下面是对文件签名的一个示例:    
  Signcode   -prog   myfilename   -name   displayname   -info   http://www.mycompany.com   -   spc   mycredentials.spc   -pvk   myprivatekey.pvk  
   
  测试签名:    
  要测试一个签了名的.exe、.dll、.vbd   或.ocx   文件,请运行   chktrust   filename    
  filename   是您签了名的文件。  
   
   
  要测试一个签了名的.cab   文件,请运行   chktrust   -c   cabfilename.cab  
  cabfilename   是您签了名的   .cab   文件。    
  如果签名成功,以上任何一步测试都会显示证书。