幾個例子理解對稱加密與非對稱加密、公鑰與私鑰、簽名與驗籤、數字證書、HTTPS加密方式

# 原創,轉載請留言聯繫

爲何會出現這麼多加密啊,公鑰私鑰啊,簽名啊這些東西呢?說到底仍是保證雙方通訊的安全性與完整性。例如小明發一封表白郵件給小紅,他總不但願給別人看見吧。而各類各樣的技術就是爲了保障通訊的安全。(本文務必從上到下看)瀏覽器

1.對稱加密與非對稱加密

  • 對稱加密:

對稱加密是最快速的一種加密方式。加密和解密用的是一樣的密鑰。安全

對稱加密是怎麼實現的呢?舉個例子說明。服務器

小明寫了一封信給小紅。他用箱子裝着信,同時箱子上鎖,他去快遞店把這個箱子和開啓箱子的鑰匙一塊兒快遞給小紅。小紅收到箱子後,用鑰匙打開箱子,看信。這就是對稱加密的傳輸過程。加密

可是爲何如今不多用這種方式進行。萬一你的快遞中途丟了(在傳輸過程當中能夠數據認爲被黑客截獲),那麼拿到你快遞的人,也能夠用快遞裏的鑰匙打開這個箱子,因此信息就泄露了。而且更嚴重的是,別人能夠把你的信取出來,寫一封詐騙的信,再寄給小紅,那麼小紅就受騙啦。因此對稱加密並不安全。spa

 

  • 非對稱加密

非對稱加密就比較特殊了。非對稱加密存在着公鑰和私鑰,公鑰是用來加密內容的,私鑰是用來解密內容的it

好比小明有幾個朋友,小A、小B、小C。小明和這幾個朋友平時有祕密交流。小明本身拿着私鑰,而後給每個朋友一把公鑰。io

朋友寫信給小明時:好比小A有機密信息要告訴小明。他寫了一封信,用小明給他的公鑰加密,這時候這封信是加密的,誰都看不到的,誰都不能解密,只有小明的私鑰能夠。因此在傳輸過程當中就不怕被別人篡改了。記住,公鑰是拿來加密的,小A拿着的是公鑰。私鑰是解密的,小明拿着的是私鑰。這裏附上一個比較容易記的方法。當你收信的時候,你確定不想信給別人看過,這是私人的東西,因此收信方用的是私鑰。登錄

那麼問題來了......當小明想發信給小A的時候應該怎麼辦呢?原理

其實,小A也有本身的私鑰,他也把本身的公鑰發給小明呀。方法

小明持有的鑰匙:小明的私鑰,小A的公鑰,小B的公鑰,小C的公鑰...

小A持有的鑰匙:小A的私鑰,小明的公鑰,小B的公鑰,小C的公鑰...

小B持有的鑰匙:小B的私鑰,小明的公鑰,小A的公鑰,小C的公鑰...

小C持有的鑰匙:小C的私鑰,小明的公鑰,小A的公鑰,小B的公鑰...

看起來對稱加密是很完美,可是他也有缺點,那就是他的加密速度十分的慢,通常只用來加密一些很短的數據,若是數據過長,他的加密速度比對稱加密慢十幾倍甚至上百倍。

 

 

2.簽名與驗籤

簽名與驗證是什麼呢?

簽名與驗證是基於公鑰和私鑰的。

 

  • 簽名與驗籤的理解

小明想快遞一封信給小紅,小明是一個很隨和的人,別人看了他的信的內容都無所謂,可是必定不能修改!小明爲了讓小紅完整的讀到他的信,他用私鑰對信進行了簽名。小紅收到信以後,用小明給她的公鑰進行了驗籤。若是驗籤經過,則代表小明的信沒有被修改過,所有內容都是小明寫的。

注意,私鑰是用來簽名的。公鑰是用來驗籤的。

 

 

3.HTTPS的原理

在說數字證書以前,最好先理解一下HTTPS的原理。

若是你認真地看完上面的文字,你如今應該知道對稱加密比較快,可是不安全。非對稱加密比較慢,可是比較安全。固然是越快越好對不,那麼怎麼解決對稱加密的不安全性呢?能夠利用非對稱加密的方式,給對稱加密的鑰匙加密,而後傳輸給客戶端,這不就解決對稱密鑰的不安全性了嗎?因此,在HTTPS中,對稱加密與非對稱加密都有用到的!

例如,小明第一次瀏覽GOOGLE。這時候GOOGLE應該要把對稱加密的鑰匙發給小明呀,之後小明才能傳輸一些加密的信息給GOOGLE,並且加密也快。那麼怎麼保證這把鑰匙的安全傳輸呢?這就要用到非對稱加密了。GOOGLE先把公鑰傳輸給小明。而後用本身的私鑰加密對稱加密的鑰匙。再傳輸給小明。小明收到後,就能夠用GOOGLE的公鑰解開獲得對稱加密的鑰匙啦。到了這步,就能保證對稱加密的鑰匙的安全啦。(這裏有誤,修正於2018.12.10:)小明用GOOGLE的公鑰加密對稱加密的鑰匙,再傳輸給GOOGLE服務器。GOOGLE服務器收到後,就能夠用私鑰解開的到對稱加密的鑰匙啦。到了這步,就能保證對稱加密的鑰匙的安全傳輸啦。

自此以後,小明要搜什麼內容,就先用對稱加密的鑰匙把內容加密,而後傳輸給GOOGLE。GOOGLE拿到後,用對稱加密鑰匙解密,而且處理完以後,用對稱加密的鑰匙加密,再發回去給小明。小明收到再解密......

 

看起來已經完美無缺了,可是仍是有問題。

萬一小明剛開始收到的公鑰不是GOOGLE的公鑰呢?而是黑客發過去的公鑰,那麼小明原本想與GOOGLE交流的,不就變成與黑客交流了?

爲了解決這個問題,數字證書出現了!~~

 

 

4.數字證書

上面的問題出現後,出現瞭解決方案。下面接着上面的例子講:

GOOGLE可使用由數字證書認證機構(CA,certificate Authority)和其餘相關機關頒發的公開密鑰證書。而後給小明發公鑰時,小明就能夠知道這個確定是GOOGLE的公鑰了。

詳細過程是這樣的:

1.GOOGLE服務器把本身的公鑰登陸至數字證書認證機構。

2.數字證書機構用本身的私鑰對GOOGLE的公鑰進行簽名(還記得簽名的做用?不記得看回去),並頒發公鑰證書(證實的做用)。

3.要知道的一點是:每一個人的瀏覽器都事先植入數字證書機構的公鑰的!!!小明的也是,你的也是,個人也是。

4.小明收到了(公鑰證書+GOOGLE的公鑰)後,發現有公鑰證書耶,而後用本身瀏覽器的數字證書機構的公鑰對GOOGLE的公鑰進行驗籤!若是驗籤成功,則表明GOOGLE的公鑰是沒有修改過的,能夠放心食用。後面的過程不用說了吧,和上面例子的同樣。

相關文章
相關標籤/搜索