用牛郎織女來解釋Https

前言

本文嘗試使用牛郎織女來解釋Https。安全

信息交換傳遞從古至今都有,只是傳遞導體和交換方式不斷在發生變化。現代信息傳遞都是經過網絡進行。信息傳遞步驟簡化:打包 ---> 傳輸 ---> 解包,而像Http這類協議就是指定信息傳遞的標準,而信息傳遞通常主要考慮如下兩方面問題。網絡

  • 可靠性(傳遞到一半丟失??)
  • 安全性(被人攔截修改??)

本文主要討論傳遞的安全性。衆所周知 Https就是http安全版,咱們先來看一看古時傳遞信息怎麼保證安全。併發

飛鴿傳書

在通信不是很發達的年代,飛鴿傳書是一種頗有效的方式。網站

牛郎織女屬於異地戀,他們平常溝通都是經過信鴿來傳遞情書。傳遞過程當中,信息安全很重要,若是不慎被王母知道就麻煩了。因而牛郎開始研究一套安全協議。他想了如下幾種方式:加密

明文傳遞

直接將寫有「<u>我在牛家村門口</u>」情書發送給織女。這種方式安全性很低,一旦被王母攔截了鴿子拿到情書全部事情就敗漏了。打包

密鑰加密

將情書內容加密後再進行傳遞:信息安全

  • 製做密鑰「<u>7354126</u>」併發送給織女;
  • 製做密文「<u>口牛村家我在門</u>」發送給織女;
  • 織女收到密文後經過密鑰解密獲得「<u>我在牛家村門口</u>」。

這種方式的缺點是,傳播密鑰時,被王母攔截拿到了密鑰,信息同樣會被泄露。密碼

注:牛郎的這種加密方式在計算機中叫對稱加密(AES)協議

包裝加鎖

針對密鑰加密改進,新的通信方式:計算機

  • 牛郎先給織女發送一個空消息,讓她知道本身想發消息;
  • 而後織女會給牛郎發送一個帶鎖的盒子,鑰匙本身保留;
  • 牛郎收到盒子後,將寫好的情書放到盒子裏並鎖上發給織女;
  • 織女收到盒子後用鑰匙打開獲得情書。

這種方式有個缺點,王母在第二步攔截了織女發給牛郎的空盒子,而後在裏面作一些手腳,牛郎收到後就很危險。

注:上面這種加密方式在計算機中叫作非對稱加密(RSA),盒子比如爲公鑰用來加密,鑰匙爲私鑰用於解密。

盒子封條

爲了防止王母攔截盒子作手腳,織女決定發送盒子前把盒子打上封條。這樣牛郎收到盒子時先檢查盒子有沒有被動過,確認安全以後再將情書放到盒子鎖定發送。

這樣作完以後彷佛很安全,可是封條也極可能被僞造。牛郎如何才能肯定是織女打的封條?因而他們找到了月老,讓月老代替織女幫她打封條。他們都信賴月老爲人,由於他只會在肯定織女身份後才幫她封條。這樣牛郎收到盒子一看是月老打的封條值得信賴就沒問題。

注:上面提到的月老其實就是網站證書頒發機構簡稱CA。

就這樣過了一段時間,鴿子開始罷工,由於天天帶着盒子飛來飛去很累。因而牛郎修訂了通信協議,獲得了最終版本。

當牛郎想和織女溝通時:

  1. 牛郎發送一個空消息給織女;
  2. 織女收到消息,準備盒子而且是經過月老封條;
  3. 牛郎收到盒子,生成密鑰放到盒子裏面鎖定發送給織女;
  4. 織女收到盒子用鑰匙打開取出密鑰保存;
  5. 如今牛郎就可使用密鑰加密情書,而後發送給織女,再也不使用盒子鎖定。

小結

要徹底理解Https 協議自己是比較複雜,裏面涉及了不少通信的專業知識和密碼學知識。本文旨在簡化解釋它通信模型。

歡迎你們留言交流!

相關文章
相關標籤/搜索