用牛郎織女來解釋Https

2022-07-15 00:54:13 字數 1319 閱讀 7923

本文嘗試使用牛郎織女來解釋https。

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

本文主要討論傳遞的安全性。眾所周知 https就是http安全版,我們先來看一看古時傳遞資訊怎麼保證安全。

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

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

明文傳遞

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

金鑰加密

將情書內容加密後再進行傳遞:

這種方式的缺點是,傳播金鑰時,被王母攔截拿到了金鑰,資訊一樣會被洩露。

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

包裝加鎖

針對金鑰加密改進,新的通訊方式:

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

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

盒子封條

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

這樣做完之後似乎很安全,但是封條也很可能被偽造。牛郎如何才能確定是織女打的封條?於是他們找到了月老,讓月老代替織女幫她打封條。他們都信賴月老為人,因為他只會在確定織女身份後才幫她封條。這樣牛郎收到盒子一看是月老打的封條值得信賴就沒問題。

就這樣過了一段時間,鴿子開始罷工,因為每天帶著盒子飛來飛去很累。於是牛郎修訂了通訊協議,得到了最終版本。

當牛郎想和織女溝通時:

牛郎傳送乙個空訊息給織女;

織女收到訊息,準備盒子並且是通過月老封條;

牛郎收到盒子,生成金鑰放到盒子裡面鎖定傳送給織女;

織女收到盒子用鑰匙開啟取出金鑰儲存;

現在牛郎就可以使用金鑰加密情書,然後傳送給織女,不再使用盒子鎖定。

要完全理解https 協議本身是比較複雜,裡面涉及了很多通訊的專業知識和密碼學知識。本文旨在簡化解釋它通訊模型。

lintcode 1751 牛郎織女

又到了七夕節,牛郎織女相約一起去乙個nm大小的迷宮maze裡玩耍。然而沒過多久,他們就倒霉地走散了。現在給定由.s,t組成的矩陣maze,其中.表示空地,表示障礙物,s表示牛郎的位置 t表示織女的位置,牛郎和織女都會試圖尋找對方,不停地在矩陣中走動 他們可以每次向上下左右四個方向移動一格或者站著不動...

使用共享記憶體搭個鵲橋讓牛郎織女聊天

使用共享記憶體,訊號量,執行緒讓牛郎織女進行無隙聊天 本程式目的是使用共享記憶體,讓牛郎 織女可以任意通訊,本程式為牛郎端。include include include include include include static void sem p int msqid sem,int num ...

用信鴿來解釋HTTPS

密碼學是一門難以理解的學科,因為它充滿了數學定力。但是除非你要實際開發出一套加密演算法系統,否則你是沒必要強制理解哪些深奧的數學定理的。愛麗絲 鮑伯和.信鴿?這個說起來可能有點抽象,不然讓我們假設這些訊息都是由信鴿來傳遞的。我知道這個假設有些太過隨意,但相信我https就是這樣工作的,儘管它的速度快...