當前位置: 妍妍網 > 碼農

HTTPS 行為大賞:三分鐘了解加密過程

2024-01-31碼農

既然 要對HTT PS進行解讀,我們首先了解,HTTPS是什麽?

HTTPS就相當於HTTP+SSL/TLS這樣的組合,HTTP(超文本傳輸協定),HTTP是tcp/ip組中的協定之一運用在套用層,也是互聯網上套用最為廣泛的協定之一,所有的WWW(全球資訊網)檔都必須遵循這個標準。而設計HTTP協定的最終目的是用來在互聯網上傳輸HTML檔,而SSL/TLS就是一種加密演算法。

下面會對HTTPS加密的前進演化過程進行解析。

1 沒有加密的時候

這個時候,客戶端與伺服器之間都已明文的方式傳輸,你只要在中間截取到數據,就可以看到客戶端和伺服器在幹些什麽。

圖片

這樣做是比較方便、節約成本,但是我們在傳輸過程中全以明文方式傳輸,誰都可以看的見,誰都可以看的懂;如果我們這傳輸的是金錢交易,很容易就被黑客劫持,讓黑客篡改了數據。故有了下面對稱金鑰加密的方式傳輸。

圖片

2 對稱金鑰加密傳輸

對稱金鑰加密傳輸是客戶端先生成一個金鑰,客戶端發送數據時,先使用金鑰給明文加密,讓他變成密文,在將密文和金鑰傳輸給伺服器,伺服器再透過客戶端發送的金鑰進行解密得到明文。

圖片

對稱金鑰加密能解決傳輸中的安全問題嗎?顯然是不能的。在客戶端生成金鑰之後,我們是要將金鑰發送給伺服器的,這樣伺服器有了金鑰才可以對客服端發送的密文解密,在這個過程中,金鑰是經過傳輸才能到達伺服器,如果在傳輸過程中被黑客劫持了,那麽黑客也可以透過金鑰將密文解密了。

既然對稱加密無法破解,那就再引入一個新的加密方法:非對稱加密。

3 非對稱加密

非對稱加密是伺服器生成兩個金鑰,我們稱這兩個金鑰:一個公鑰(pub)、一個私鑰(pri);他兩個是一對,用公鑰加密的數據,必須用私鑰才能解密;用私鑰加密的數據,必須用公鑰解密。

圖片

客戶端在發送數據時,先給伺服器大哥要公鑰,客戶端拿到公鑰後,使用公鑰加密完數據再發給伺服器,伺服器透過與公鑰配對的私鑰進行解密,這樣就算在中間遇見了黑客截取數據,我們也不怕,因為黑客就算拿到了公鑰和數據,黑客也無法使用公鑰對數據解密。

非對稱加密是否安全呢?這裏的答案還是不安全;黑客這時使用「來騙來偷襲」的陰險招式來放到客戶端這個老同誌。

客戶端在給伺服器大哥要公鑰,當伺服器發來公鑰時,黑客來了一個偷梁換柱、暗度陳倉將伺服器的公鑰A換成了公鑰B,黑客將公鑰B發送給了客戶端,客戶端就有公鑰B進行加密數據,發送給伺服器,黑客再次截取,透過私鑰B將數據解密,之後再用公鑰A加密發給伺服器大哥,就這樣黑客神不知鬼不覺就將數據拿到了手。在個期間,黑客手中有公鑰A、公鑰B和私鑰B,公鑰B和私鑰B是黑客自己生成的,公鑰A是黑客截取伺服器的。

圖片

4 引入電子證書(對稱加密+非對稱加密)

既然上方的方法都不安全,只能再修改了,引入電子證書,電子證書由可信任的第三方權威機構頒發,相當於一個身份證,可以驗證伺服器的身份。電子證書包含了證書持有者的資訊和公鑰資訊等。

這個過程中一共有五把金鑰,一把是客戶端生成的對稱金鑰,用來加密業務數據;伺服器生成的非對稱金鑰公鑰A和私鑰A用於加密對稱金鑰;頒布證書機構的非對稱密公鑰B和私鑰B(私鑰機構自己持有,公鑰客戶端電腦系統內建),用來加密證書的簽名。

客戶端拿到證書之後,首先針對證書進行校驗:

  • 得到初始的簽名: 客戶端使用系統中內建的權威機構的公鑰(權威機構的公鑰內建在作業系統當中),針對證書中的加密簽名進行解密,得到初始簽名(這個簽名是權威機構算出來的設為sum1);

  • 計算現在的簽名: 客戶端使用相同的簽名計算演算法,基於證書中的內容重新計算,得到sum2;

  • 比較兩個簽名是否相同: 如果相同,說明證書中的數據是未被修改的原始數據,如果簽名不同,說明證書的數據被篡改過,客戶端的瀏覽器就會彈窗報錯。

  • 在這個過程中,黑客可以得到我們發送的證書,也可以修改,不過黑客修改過後,客服端在用權威機構的公鑰解密後的簽名與計算後得到的現有簽名會出現不一致,這個時候我們就知道被攻擊了。

    來源:blog.csdn.net/qq_65228171/article/details/130840752

    >>

    END

    精品資料,超贊福利,免費領

    微信掃碼/長按辨識 添加【技術交流群

    群內每天分享精品學習資料

    最近開發整理了一個用於速刷面試題的小程式;其中收錄了上千道常見面試題及答案(包含基礎並行JVMMySQLRedisSpringSpringMVCSpringBootSpringCloud訊息佇列等多個型別),歡迎您的使用。

    👇👇

    👇點選"閱讀原文",獲取更多資料(持續更新中