1. 程式人生 > 程式設計 >圖說HTTPS協議

圖說HTTPS協議

故事還要從月月給她老公亮亮發了一條訊息說起。

晚上亮亮下班回到家,剛一進門 "給我跪下","咋了,媳婦兒?",嘴上這樣問著,可是亮亮的身體還是很誠實。 "你不是給我發訊息說今晚不回家嗎?"說著月月掏出了手機 "天地良心我沒這麼說過,我今天收到了你的訊息還是你罵我呢",亮亮也掏出了自己的手機

"好神奇,我們收到的訊息和發出去的訊息不一樣耶,難道是我們被黑客截取了資訊"

亮亮起身拍了拍膝蓋上的灰說到:“肯定是呀,不要讓我看見他,不然我打得他媽都不認識他"

入夜了,小兩口在床上躺著想到今天發生的事兒還是哭笑不得,決定想個辦法來解決通訊不安全的問題,不然這日子沒法過了。

"亮亮,你說咋辦呢?你是程式設計師,你說有什麼辦法即使是黑客擷取到了我們的資訊也沒有辦法知道是什麼內容,就跟諜戰片裡面一樣" "可以呀,你傳送訊息給我的時候用金鑰加密,然後我收到訊息用同樣的演演算法,同樣的金鑰解密就行了,這有個專業術語叫做對稱加密"

"聽上去不錯,可是你這個有問題呀,和你一個人通訊這樣倒是可以,但是和其他人通訊怎麼辦呢?我和他們怎麼協商金鑰呢?"

"沒事兒,這難不倒我,我們還可以使用非對稱加密演演算法,它有兩個金鑰,一個叫公鑰,一個叫私鑰,公鑰加密的資料只能被私鑰解密,同樣的,私鑰加密的資料只能被公鑰解密,私鑰只能由你持有,公鑰就由我持有(可以網路分發),以後你想和我聊天就把金鑰用私鑰加密,我這邊用公鑰解密得到金鑰,然後我們還像之前講的那樣用金鑰加密訊息進行通訊。別人想和你聊天,你就把公鑰給他就行了"

“為什麼我們不直接使用非對稱加密演演算法來通訊呢?"

"非對稱加密不僅速度慢而且只支援少量資料的加密,說多了你也不懂"

"還存在一個問題耶,這個公鑰就這樣暴露出去了,黑客就可以將其替換成他的公鑰,這樣別人給我傳送訊息就相當於給這個黑客傳送訊息了"

"這個可以讓第三方進行擔保,讓它給我保證公鑰是正確的。這個第三方結構我們稱它為CA" "它如何保證呀?" "CA其實也是使用了非對稱加密演演算法,首先使用CA的私鑰對我們的公鑰加密,然後它會給你返回一個證書,裡麵包含了加密之後的公鑰,然後你本地使用CA公鑰解密這個證書就可以獲取到我們的公鑰了。你老公我是不是很聰明呀?"

"聰明?呵呵。我告訴你你還是太天真了,CA可以給你頒發證書也可以給黑客證書,你如何保證證書沒有被掉包,我收到的證書不是黑客所持有的?" 亮亮嘀咕到:"一天想東想西的,黑客哪有那麼多時間,天天守著你" "你說什麼?" "我說,我們可以在本地通過證書的編號來驗證證書是否是真實的呀?我們讓證書根據一系列資訊生成一個訊息摘要,然後將這個訊息摘要使用CA的金鑰加密形成數字簽名放到證書裡面,然後我們本地根據同樣的規則來生成訊息摘要,然後將證書中的數字簽名解密,它們兩個進行兩兩對比就行呀。"

一系列代指簽發者,證書用途,我們需要傳輸的公鑰,加密演演算法,HASH演演算法,到期時間等,對於網站來說還有域名的資訊

https_message_6.png

"聽上去不錯,可是這一切的前提是CA的公鑰可信呀,萬一內建在遊覽器和作業系統的證書不可信了怎麼辦呢?" "如果這兩個都被攻破了,那就萬事皆休了,而且世界上哪有絕對的安全呀,你要是在意資訊洩露,那你就別上網好了" "算了,還是別想那麼多了,睡覺吧,都2點鐘,明天我肯定又有黑眼圈了,都怪你。"

NetScape相繼開發了SSL1.0,SSL2.0,SSL3.0,由ISOC組織接手後,釋出了TLS 1.0(和SSL3.0幾乎沒有差異,可以向下降級),TLS1.0也被稱為SSL3.1,然後經過TLS1.1,TLS1.2,現在最新的是TLS1.3。大部分遊覽器基本都支援TLS1.2。 我們訪問網路常用的協議是HTTP協議,但是它的通訊過程並不安全,很容易被攔截,監聽,篡改。而SSL/TLS可以保證資訊保安,所以它們合併在一起就組成了我們今天要說的主角HTTPS(HTTPS=HTTP >+ SSL/TLS)。