zoukankan      html  css  js  c++  java
  • 3、数字签名

    数字签名(digital signatrue)和数字证书(digital certificate)到底是什么。转自:http://www.ruanyifeng.com/blog/2011/08/what_is_a_digital_signature.html

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

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

    3、苏珊给鲍勃写信,写完后用鲍勃的公钥加密,达到保密的效果。

    4、鲍勃收信后,用私密解密,看到信件内容。

    image

    里要强调的是,只要鲍勃的私钥不泄露,这封信就是安全的,即使落在别人手里,也无法解密。

    5、鲍勃给苏珊回信,写完后用hash函数,生成信件的摘要(digest)。

    image

    6、然后鲍勃使用私钥,对这个摘要加密,生成"数字签名"。

    image

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

    image

    8、鲍勃收到信后,取出数字签名,用鲍勃的公钥解密,得到信件的摘要。由此证明这封信确实是鲍勃发出的。

    image

    9、苏珊再对信件本身使用hash函数,将得到的结果,与上步得到的摘要进行对比,如果二者相同就说明这封信未被修改。

    image

    10、复杂的情况出现了。道格想要欺骗苏珊,他偷偷使用了苏珊的电脑,用自己的公钥换走了鲍勃的公钥,苏珊实际拥有的是道格的公钥,但是还以为这是鲍勃的公钥。因此它可以冒充鲍勃,写信给苏珊。

    image

    11、苏珊发现无法确定公钥是否真的属于鲍勃,她想到一个办法,要求鲍勃去找"证书中心",为公钥做认证。认证中心用自己的私钥,对鲍勃的公钥和一些相关信息一起加密,生成数字证书。

    image

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

    image

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

    image

    14、下面,我们来看一个应用数字证书的实例:https协议,这个协议主要用于网页加密。

    15、首先,客户端向网页发出加密请求。

    image

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

    17、客户端的证书管理器有收信任的根证书颁发机构列表,客户端会根据这个列表,查看解开数字证书的公钥是否在列表之中。

    image

    18、如果数字证书记载的网站,与你正在浏览的网址不一致,就说明这张证书可能被冒用,浏览器会发出警告。

    image

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

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

  • 相关阅读:
    js对象数组(JSON) 根据某个共同字段 分组
    一个 函数 用来转化esSearch 的range 条件
    关于 vuex 报错 Do not mutate vuex store state outside mutation handlers.
    android listview 重用view导致的选择混乱问题
    android SDK和ADT的更新
    Android中adb push和adb install的使用区别
    pycharm中添加扩展工具pylint
    su Authentication failure解决
    Putty以及adb网络调试
    有关android源码编译的几个问题
  • 原文地址:https://www.cnblogs.com/houkai/p/3486669.html
Copyright © 2011-2022 走看看