首先:
公私鑰都可以互相解密對(duì)方加密的信息,是一對(duì)密鑰
流程:
- A 生成密鑰對(duì),交給 B 公鑰。
- B 給A 發(fā)信用公鑰加密
- A 收到信用 私鑰解密
- A 回信,先 對(duì)信件內(nèi)容做 hash, 生成 摘要,然后使用 私鑰對(duì)摘要加密,就是數(shù)字簽名。附件到信件下面,發(fā)給 B
- B 收到回信,用公鑰對(duì)數(shù)字簽名解密,得到摘要。然后自己對(duì)信件內(nèi)容做一次 hash, 得到摘要。然后比對(duì)兩次 摘要是否相等,如果相等,那么信件內(nèi)容未被篡改,否者就是被篡改了
如果 C 把 B 的公鑰偷換成自己的公鑰,并欺騙 B 所擁有的公鑰就是 A的。而且 B 冒充 A 和 C 通信,用自己的私鑰和 B 來回通信,這個(gè)過程可以正常通信,沒什么技術(shù)問題。只要讓 B 相信自己就是 A !
但是,發(fā)生了欺騙,雖然通信過程有了一定的安全性,但是通信身份無法保證!
所以有了 CA(證書中心),那么作用是什么呢?
首先,A 要去 CA 為自己的公鑰做認(rèn)證,讓這個(gè)第三方機(jī)構(gòu)承認(rèn)自己的公鑰就是屬于自己的。
證書中心用自己的私鑰 對(duì) A 的公鑰和其它一些信息一起加密,生成 “數(shù)字證書”,頒發(fā)給 A
- A 和 B 通信,交給 B 信件內(nèi)容,數(shù)字簽名,數(shù)字證書
- B 收到信,用 CA 的公鑰解開數(shù)字證書,拿到 A 的公鑰
然后用得到的公鑰繼續(xù)解密數(shù)字簽名,比對(duì) 摘要
解決了什么問題:
公鑰是從權(quán)威第三方手里拿到的,不可能被偷換
新的問題:
假如 C 也去 證書中心做認(rèn)證,一開始就冒充 A 和 B 通信,這也是沒問題的。
那么如何讓 B 相信和一開始自己通信的 就是 A 呢 ?!
這就要靠 B 自己去識(shí)別通信對(duì)象的正確性,并且交換 A 的數(shù)字證書
如何識(shí)別?
假如你訪問 淘寶,淘寶的網(wǎng)址是自己辨別的。你不能輸入一個(gè)京東的網(wǎng)址,說自己訪問的是淘寶,那只能怪你自己了...
假如美女硬要把 張三當(dāng)李四看,不也是沒辦法的事情嘛...
總結(jié):
一開始的通信身份要靠自己去辨別,數(shù)字簽名,數(shù)字證書只能保證后續(xù)通信過程的安全性