zoukankan      html  css  js  c++  java
  • 数字签名是什么

    用一个小故事来梳理数字签名:

    1,鲍勃有两把钥匙,一把公钥一把私钥。

    2,鲍勃把公钥送给他的朋友,帕蒂,道格和苏珊每人一把。

    3,苏珊想给鲍勃写一份保密的信,用鲍勃的公钥加密之后就可以达到保密的效果。

    4,鲍勃收到之后,用鲍勃的私钥解密之后就可以看到信的内容,只要鲍勃的私钥不泄露,这封信就是绝对安全的。

    5,鲍勃想写回信给苏珊,采用数字签名,先用Hash函数生成信件内容的摘要(MD5或者SHA算法)。

    6,鲍勃用私钥对摘要进行加密,生成数字签名

    7,鲍勃将这个签名,附在信件的下面,一起发给苏珊。


    8,苏珊收到信件后,用鲍勃的公钥解密,得到新建的摘要,由此证明这个信件是鲍勃发的(因为只要用鲍勃的私钥加密的才能用鲍勃的公钥解密成功)。

    9,苏珊在用HASH对信件本身内容求摘要,得出来的摘要如果和上一步解密后的摘要想同,就证明这个信的内容未被修改过。

    10,如果道格想欺骗苏珊,偷偷拿走苏珊的电脑,用自己的公钥换走了鲍勃的公钥,此时苏珊实际拥有的是道格的公钥,但她还以为这是鲍勃的。所以道格就可以冒充鲍勃使用自己的私钥进行生成 数字签名,发给苏珊,苏珊用假的鲍勃的公钥进行解密。

    11,后来苏珊觉得不对劲,她觉得她无法确认自己电脑上的公钥是鲍勃的,她想到一个方法,让鲍勃去找证书中心(certificate authority 简称 CA)对他的公钥做认证。证书中心用自己的私钥,对鲍勃的公钥和一些相关信息一起加密,生成数字证书(Digital Certificate)。

    12,鲍勃拿到数字证书后,以后就放心了,以后再给苏珊写信的时候,只要在签名的同时,再附上数字证书就行了。

    13,苏珊收到信后,用CA的公钥解开数字证书,就可以拿到鲍勃真实的公钥了,然后就能证明数字签名是否真的是鲍勃了。

    14,一个应用数字证书的案例:https协议,主要用于网页加密。

    15,一个客户端向服务端发起一个加密请求。

    16,服务端用自己的私钥加密网页之后,连同本身的数字证书一起发给客户端。

    17,客户端(浏览器)的证书管理器,有“受信任的根证书颁发机构”列表,客户端会根据这个列表,查看解开数字证书的公钥是否在列表之内。

    18,如果数字证书记录的网址,和你正在浏览的网址不一样,就说明这张证书可能被冒用,浏览器发出警告。

    19,如果这张数字证书不是由受信任的机构颁发的,浏览器会发出另一种警告。

    20,如果数字证书是可靠的,客户端就可以使用证书中的服务器公钥,对信息进行加密,然后与服务器交换加密信息。





  • 相关阅读:
    网页中控制ActiveX插件高度
    一种C#开发ActiveX的思路
    注销ie中的ActiveX插件
    vs2012安装程序,无法注册ActiveX
    拓展:switch实现
    021,lambda 表达式
    020,函数:内嵌函数与闭包
    019,函数4 变量的作用域
    018,函数2 形参和实参
    017,函数
  • 原文地址:https://www.cnblogs.com/gaojf/p/12813417.html
Copyright © 2011-2022 走看看