Web 安全之 数字签名和证书

首先:

公私钥都可以互相解密对方加密的信息,是一对密钥

流程:
  1. A 生成密钥对,交给 B 公钥。
  2. B 给A 发信用公钥加密
  3. A 收到信用 私钥解密
  4. A 回信,先 对信件内容做 hash, 生成 摘要,然后使用 私钥对摘要加密,就是数字签名。附件到信件下面,发给 B
  5. B 收到回信,用公钥对数字签名解密,得到摘要。然后自己对信件内容做一次 hash, 得到摘要。然后比对两次 摘要是否相等,如果相等,那么信件内容未被篡改,否者就是被篡改了



如果 C 把 B 的公钥偷换成自己的公钥,并欺骗 B 所拥有的公钥就是 A的。而且 B 冒充 A 和 C 通信,用自己的私钥和 B 来回通信,这个过程可以正常通信,没什么技术问题。只要让 B 相信自己就是 A !

但是,发生了欺骗,虽然通信过程有了一定的安全性,但是通信身份无法保证!



所以有了 CA(证书中心),那么作用是什么呢?

首先,A 要去 CA 为自己的公钥做认证,让这个第三方机构承认自己的公钥就是属于自己的。
证书中心用自己的私钥 对 A 的公钥和其它一些信息一起加密,生成 “数字证书”,颁发给 A

  1. A 和 B 通信,交给 B 信件内容,数字签名,数字证书
  2. B 收到信,用 CA 的公钥解开数字证书,拿到 A 的公钥
    然后用得到的公钥继续解密数字签名,比对 摘要


解决了什么问题:

公钥是从权威第三方手里拿到的,不可能被偷换

新的问题:

假如 C 也去 证书中心做认证,一开始就冒充 A 和 B 通信,这也是没问题的。

那么如何让 B 相信和一开始自己通信的 就是 A 呢 ?!
这就要靠 B 自己去识别通信对象的正确性,并且交换 A 的数字证书

如何识别?
假如你访问 淘宝,淘宝的网址是自己辨别的。你不能输入一个京东的网址,说自己访问的是淘宝,那只能怪你自己了...

假如美女硬要把 张三当李四看,不也是没办法的事情嘛...

总结:

一开始的通信身份要靠自己去辨别,数字签名,数字证书只能保证后续通信过程的安全性

你可能感兴趣的:(Web 安全之 数字签名和证书)