3分鐘告訴你什麼是 非對稱加密、對稱加密、公鑰、私鑰、數字證書、數字簽名、信息摘要、中間人攻擊、CA、根證書

非對稱加密、對稱加密、公鑰、私鑰、數字證書、數字簽名、信息摘要等等,其實這些都是通信安全中的概念,既然如此咱們不妨從通信開始入手。算法

情景

禮和彌是一對異國戀人,儘管相距很遠,可是卻不影響彼此之間的愛慕之情,她們喜歡經過網絡來交流。瀏覽器

對稱加密

一天禮要給彌發送一份很是私密的內容。禮不但願通信過程當中被人截取而泄密祕密。這個時候,天然想到的方法就是對通信內容進行加密,固然除了加密外,還須要讓禮可以解密。安全

禮認爲能夠 我能夠生成 一個祕鑰 ,而後用這個祕鑰對內容進行加密,而後我把我生成的祕鑰和加密的算法告訴彌,而後她在用我告訴她的祕鑰和加密算法進行解密。服務器


上面的加密解密過程就屬於對稱加密,對稱加密,須要一個祕鑰和一個對稱加密算法。 常見的對稱加密算法有:網絡

  • DES
  • 3DES
  • AES

加密

禮把本身的想法告訴了彌,彌聽完後,提出了一個問題——「你怎麼把祕鑰給我」。禮想了會兒,的確,不可能經過網絡發給她,萬一被人把你的祕鑰被人偷看了怎麼辦。乾脆下次見面的時候告訴她?不行,下次見面不知道是何時了,難道這中間都不跟他通信嗎!想到這裏禮就很煩,我就想安全通信而已,怎麼這麼麻煩。操作系統

非對稱加密

又過了一段時間,禮興奮的跟彌說,我找到解決辦法了,咱們可使用非對稱加密算法來加密咱們的內容。
什麼是非對稱加密算法?彌問道。it

非對稱加密算法 不一樣於 對稱加密,它有一對祕鑰,一個稱爲 公鑰(publicKey) ,另外一個稱爲 私鑰(privateKey)而且只知道公鑰是沒法推算出私鑰。
另外,這種算法還有一個特別神奇的功能,那就是 經過公鑰加密的內容,只有私鑰才能夠解開,而經過私鑰加密的內容,只有公鑰才能夠解開。

非對稱加密,須要一對祕鑰和一個非對稱加密算法。 常見的非對稱加密算法有:class

  • RSA
  • DSA )

禮說,咱們能夠利用這個特性來加密咱們的通信內容。那怎麼利用能,彌問道。擴展

假如我要和你通信

  • 首先,你要生成一對祕鑰,而後把公鑰發給我。等等,公鑰被看到也沒有關係嗎,彌問道。不要緊,不要緊,你聽我說完就知道了。
  • 而後,我拿到公鑰後,對內容進行加密,而後傳給你,利用經過公鑰加密的內容,只有私鑰才能夠解開的特性,就算公鑰沒偷看,也解不開。只有持有私鑰的你才能解開。
  • 最後,你收到公鑰後就能夠經過私鑰來解開我發送的內容了。

反過來,你要和我通信也同樣

  • 首先,我生成一對祕鑰,而後把公鑰發給你。
  • 你收到後,加密要發送的內容,而後發給我
  • 我收到加密後的內容後,在經過個人私鑰解密。

嗯,的確這樣一來,咱們每一個人只有生成一對祕鑰,就能夠安全通信了。

安全與速度,兩者都要兼得

兩人,使用上面的方法進行通信一段時間後,發現了一個問題。那就是非對稱算法,加密解密速度太慢,徹底趕不上對稱加密算法。

怎麼辦了,彌想到了一個好辦法。 假設 禮和彌 要進行通信

  • 首先,禮生成一對祕鑰,而後把公鑰發給彌
  • 彌收到公鑰後,生成一個對稱加密算法的祕鑰,而後將對稱加密算法和對稱加密算法的祕鑰當作內容用公鑰加密後,在發回給彌。(其實這跟上面的步驟同樣,只是這裏的內容不是普通的內容,而是對稱加密算法和對稱加密算法的祕鑰)
  • 禮收到加密內容後,用私鑰解開內容,這樣他就安全的獲得了對稱加密的算法和祕鑰。這樣一來兩我的就至關於商量好了加密方式和祕鑰。(參考對稱加密那一章所遇到的問題)
  • 最後,兩人就能夠經過 加密解密更加快速的 對稱加密算法 來加密本身的通信內容。

信息摘要、數字簽名

雖然說 對稱加密算法 比 非對稱加密算法 要快不少,可是遇到要加密的信息不少時,速度也會很慢。並且並非全部的信息都須要加密,一些不怕被人看到的信息,我只須要防止他被人更改就好了。
那如何防止在通信過程當中信息不被別人修改呢,那就是使用 信息摘要和數字簽名。

信息摘要

什麼是信息摘要 就像一片文章的摘要同樣,信息摘要就是一段信息的摘要。它有如下特徵

  • 不管輸入的消息有多長,計算出來的消息摘要的長度老是固定的
  • 用相同的摘要算法對相同的消息求兩次摘要,其結果必然相同
  • 通常地,只要輸入的消息不一樣,對其進行摘要之後產生的摘要消息也幾乎不可能相同
  • 消息摘要是單向的,只能進行正向的信息摘要,而沒法從摘要中恢復出任何的原信息

以上這些神奇的特性是經過摘要算法來實現的,經常使用的摘要算法有:

  • MD5
  • SHA-1
  • SHA-256
  • SHA-512

這樣一來,咱們就能夠將很是長的消息,用較短的摘要表示了,而且若是有人修改了個人消息,那麼對應的摘要就會變。咱們在發信息的時候,摘要也跟着一塊兒發出去,若是信息被改了,那麼接收者一算,發現,信息的摘要和本來的摘要不一致,就知道信息被篡改了。

數字簽名

其實上面的考慮並周到,若是黑客連摘要一塊兒改了怎麼辦?因此必須讓黑客沒法更改信息摘要,作法也很簡單,就是對信息摘要進行簽名。
所謂的 簽名(動詞) 其實就是使用 私鑰對信息摘要進行加密的過程
所謂的 簽名(名詞) 其實就是 私鑰對信息摘要進行加密後的密文 數字簽名通常指的是 私鑰對信息摘要進行加密後的密文

這樣一來 個人摘要是加密的 ,若是黑客修改數字簽名,那我解密後的簽名,就不是原來的簽名了,除非碰巧解密後的簽名正好是 被修改的消息的簽名,但這種概率過低過低,幾乎不可能。

中間人攻擊

真的能夠高枕無憂了嗎?
仍是禮和彌發信息這個場景

  • 彌首先生成了一對祕鑰,而後把公鑰發給禮。
  • 這時候,黑客出現了,他也生成了一對祕鑰。而後他劫持了 彌給禮 發的消息,並偷偷把 彌的公鑰換成本身的公鑰,而後還把原來的公鑰給存了起來,最後再發給禮。
  • 禮收到公鑰後,還覺得是這是彌的公鑰,因而生成一個對稱加密算法的祕鑰,而後將對稱加密算法和對稱加密算法的祕鑰當作內容用公鑰加密後,在發回給彌。
  • 這時,黑客再次劫持,用本身的私鑰解開了加密內容。這樣黑客就有了 對稱加密算法和對稱加密算法的祕鑰了。這還不算完,他把這內容再用以前取出的彌的公鑰加密,而後在發給彌。
  • 彌收到後,還覺得是禮發來的,興高采烈的用私鑰解開,取出裏面的 對稱加密算法和祕鑰。後期兩人就用此對稱加密算法來加密通信內容。
  • 遺憾的是,這對稱加密的祕鑰不光兩人有,黑客也有,兩人的通信內容仍是被看的一清二楚。

中間人攻擊的恐怖之處在於,整個攻擊過程,通信雙方沒法察覺到任何異議,但通信內容卻暴露在黑客的眼中。

數字證書 、CA

上面的問題出在公鑰被黑客偷偷換了。 或者說是信息在傳輸過程當中被修改了。 解決辦法也很簡單,那就是不使用公鑰而是使用數字證書(如下簡稱證書)。

證書是什麼東西,簡單理解就是一個被權威機構認證的公鑰。就像咱們的畢業證會被學校蓋個章同樣,權威機構也會爲公鑰"蓋個章"。 這樣的權威機構,咱們稱做CA(Certificate Authority)數字證書認證中心。 只是這個蓋章的過程,可能和你想的不同。

  • 首先申請證書的人,會把申請資料提供給CA,這些資料包括,公鑰、公司名稱、網址等。
  • CA審覈後,會將審覈經過的資料生成信息摘要,而後 CA會用本身的私鑰對信息摘要進行簽名,這樣證書就沒法被篡改了。(CA也有一對祕鑰,其中公鑰是公開的,可是私鑰會進行特別的保護,嚴禁泄漏和盜用)

數字證書的內容包含如下部分

  • 版本號—標識證書的版本(V1 V2 V3)
  • 序列號—證書的惟一標識符。
  • 簽名 —簽名算法和內容
  • 頒發者—證書頒發者相關信息
  • 主體 —證書擁有者相關信息包含公鑰、證書過時時間等
  • 頒發者惟一標識符—證書頒發者的惟一標識符 V2 V3
  • 主體惟 一標識符—證書擁有者的惟一標識符 V2 V3
  • 擴展 —可選的標準和專用的擴展 V2 V3

因爲證書中的簽名能夠防止黑客篡改,因此,數字證書能夠用來代替公鑰。

所以禮和彌的安全通信的過程變成如下這個樣子了

  1. 首先,禮生成一對祕鑰,而後把公鑰等相關信息發給CA
  2. CA確認無誤後,爲其頒發證書。
  3. 禮將證書發給彌
  4. 彌收到證書後,確認證書的信息,而後用 「CA的公鑰」 解開證書中的簽名,而後對證書內容作摘要,最後比較兩個摘要是否一致,若是一致就說明證書沒有被竄改。
  5. 若是證書沒有被篡改,取出裏面的公鑰,生成一個對稱加密算法的祕鑰,將對稱加密算法的和祕鑰用公鑰加密,而後發給禮。
  6. 以後就能夠安全通信了(其實這也是HTTPS協議的加密過程)

(這裏提一個小問題,第四步中的CA的公鑰是怎麼來的)

根證書

CA的公鑰是怎麼來的?
CA發給我嗎?那發送的過程仍是會出現篡改的狀況啊。
除非CA的公鑰也是一個證書!!!

其實CA的公鑰的確是一個證書。
那這個證書又是誰簽發的呢?

答案是 CA的CA,也能夠成爲根CA,就同根DNS服務器同樣,全世界的根CA也就那麼幾個,負責全部CA的證書的簽發。

說以上一章的第四步能夠細分爲

  1. 彌收到禮的證書
  2. 彌用根CA的公鑰解開CA證書的簽名,而後校驗CA證書的真實性
  3. 校驗經過後,在用CA證書的公鑰解開禮的證書的簽名,而後校驗證書的真實性
  4. 校驗經過以後,就能夠認爲禮的證書是真實可信的。

有些人可能有要問了,根CA的公鑰是怎麼來的?
感受陷入了一個死循環了。
其實並不會,由於根CA的"公鑰",其實也是一個證書,可是這個證書有些特殊,他的簽發單位是它本身。

這種類型的證書也叫 自簽名證書

另外根CA的證書,會內置在咱們的操做系統和瀏覽器中。也就是說根CA的證書,天生就有,不須要去下載安裝。

總結

  • 對稱加密:這種加密算法只須要一個 祕鑰,且相較於非對稱加密 ,加密和解密速度較快
  • 非對稱加密:這種加密算法須要一對 祕鑰,其中一個叫公鑰,另外一個叫私鑰。相較於對稱加密來講 ,加密和解密速度較慢
  • 公鑰:非對稱加密中能夠被公開的祕鑰,用於對信息加密,可被封裝成證書。
  • 私鑰:非對稱加密中要保管好的祕鑰,用於對公鑰加密的信息解密,還可用於簽名
  • 信息摘要:經過信息摘要算法,將原信息摘要爲一個固定長度的摘要
  • 數字簽名:信息摘要被私鑰加密後的密文
  • 數字證書:能夠簡單理解爲 被CA認可且沒法篡改的公鑰
  • CA:簽發證書的權威機構
  • 根CA:CA的CA,能夠簽發CA的證書
  • 根證書:根CA的自簽名證書
  • 中間人攻擊:一句話說不清楚,你仍是去看中間人攻擊那一章吧!
相關文章
相關標籤/搜索