数字签名

数字证书:

  证明软件开发商身份的一个东西,要向权威机构(他们的证书会嵌到电脑系统中)申请,申请时要有自己的身份证营业执照之类的,申请的证书有效期一年,一年到了会提示更新证书。

  内容:

    公钥,(私钥申请者的证书会有),上级证书对其(这张证书)的签名, 证书拥有者信息

 

签名过程:

  1. 发布者从CA机构(如VeriSign)申请数字证书
  2. 发布者开发出代码;借助代码签名工具(vs和.net都有)。
  发布者将使用MD5或SHA算法产生代码的哈希值,然后用证书私钥对该哈希值签名,从而产生一个新的hash值--数字签名;
 
--发给用户环境的东西:
  代码,代码数字签名,证书(包含公钥,上级证书对其(这张证书)的签名等)
 
 
验证过程:
  3. 用户的运行环境访问到该软件包,并检验软件发布者的代码签名数字证书的有效性。由于VeriSign根证书的公钥已经嵌入到用户的运行环境的可信根证书库,所以运行环境可验证发布者代码签名数字证书的真实性;
  --如何验证该公钥的有效性:
    每张证书都包含上级证书对其的签名,一层一层验证,最终用根证书的公钥(内嵌系统)验证这个证书的合法性。
  4. 用户的运行环境使用数字证书公钥)解数字签名,解出哈希值
  5. 用户的运行环境使用同样的算法新产生一个原代码的哈希值
  6. 用户的运行环境比较两个哈希值。如果相同,将发出通知声明代码已验证通过。所以用户可以相信该代码确实由证书拥有者发布,并且未经篡改。
posted @ 2016-11-27 17:43  shinymood  阅读(165)  评论(0编辑  收藏  举报