Http和Https究竟有啥不一樣?

1.從HTTP說起

說起HTTP請求,我們幾乎每天都在發出這樣的請求,例如我們在瀏覽器中輸入http://www.baidu.com時,就是向百度的服務器發出一個http請求,而百度的服務器同時會給我們返回該請求的一個回應。再例如,我們在一個登錄的場景下,輸入用戶名="123",密碼="666666",然後按下登錄按鈕,此時http請求中將攜帶著用戶名和密碼兩個信息提交到服務器,然後服務器從http請求的報文中提取到用戶名和密碼等信息。

Http和Https究竟有啥不一樣?

很明顯,http請求存在著一個很嚴重的問題,http協議傳輸的是明文,如果中間有個黑客攔截到該請求,就攔截到了我們的數據,就能將我們的用戶名和密碼看得一清二楚,這樣隱私的數據就非常容易洩露出去。

Http和Https究竟有啥不一樣?

因此,我們很容易想到,我們可以對數據加密去解決該問題呀!這就引出了我們今天的主題:HTTPS,於是,有了下圖的場景。

Http和Https究竟有啥不一樣?

可以看出,黑客即使截取到了我們請求的數據,他看到也只是一串亂碼,根本不知道是啥子玩意,所以,HTTPS就是一種將數據加密後再傳輸的協議。


2.HTTP和HTTPS的對比

Http和Https究竟有啥不一樣?

從上圖可以看到,HTTP和HTTPS協議底層都是基於TCP的協議,只是HTTPS協議中間多了一層SSL或者TLS,因此,很簡單,HTTPS就是HTTP協議加上SSL/TLS。TLS是SSL的升級版,它們的作用都是進行加密的連接。


3.對稱加密

特點:靠一個密鑰來加密數據,使用相同的一個密鑰來解密數據。首先用戶需要把自己的一把鑰匙給送給服務器,用戶用這把鑰匙加密數據,然後服務器待會拿這把相同的鑰匙去解密用戶接下來發送的數據。

Http和Https究竟有啥不一樣?

那麼,這樣的加密算法有什麼不妥呢?首先,如果用戶擁有相同的密鑰的話,我的密鑰能解你的數據,你的密鑰能解密我的數據,這樣,別有用心的用戶就能截取和破解你的數據了,所以,每個用戶都必須擁有一把只屬於自己的密鑰,那每個用戶的密鑰都要先發給服務器,那有5000萬個用戶服務器就有5000萬把密鑰,這明顯給服務器增加了太多太多的負荷,這是顯然不符合我們的需求的;其次,如果在客戶端第一次發送密鑰給服務器的時候,此次發送是明文發送的,黑客此刻在中間截取到了我們的密鑰,那接下來的數據黑客也能破解掉,這明顯也是不符合我們的需求。但是,該加密方式計算量小,加密和解密的速度比較快,適合加密比較大的數據。好了,講完對稱加密,我們知道對稱加密存在著一些缺點,由此產生了第二種的加密方式,就是非對稱加密。


4.非對稱加密

特點:有一個公鑰和一個私鑰,公鑰加密只能私鑰解密,私鑰加密只能公鑰解密。因為解密和加密使用不同的鑰匙,所以稱為非對稱加密。公鑰和私鑰都放在服務器上,公鑰是可以隨便傳輸的,私鑰是絕對不會暴露的,數據傳輸是安全的。

說了這麼多抽象的東東,我們看一個具體的例子。

Http和Https究竟有啥不一樣?

首先服務器端把公鑰傳給客戶端,客戶端拿到公鑰後對數據進行加密,然後客戶端發送使用公鑰加密過的數據到服務器,服務器收到加密後的數據後使用私鑰對數據進行解密。

此刻,黑客即使拿到公鑰和公鑰加密後的數據,也沒法解密,因為公鑰加密的數據公鑰是解不了的,只有私鑰能解。

該加密方式數據傳輸雖然安全,但是計算量大,加密和解密的速度比較慢。

那麼,有沒有一種方法是加密解密速度快,而且又是數據傳輸安全的呢?根據對稱加密的優點和非對稱加密的優點,由此誕生了HTTPS的加密方式,接下來我們看一下HTTPS加密、解密及驗證的過程。


5.HTTPS加密、解密及驗證過程

Http和Https究竟有啥不一樣?

假如服務器端存有一個公鑰777和一個私鑰888,首先,瀏覽器發出一個https請求,如https://www.baidu.com,服務器端響應請求,返回一個SSL數字證書給客戶端,SSL數字證書包括了公鑰和服務器的身份標識信息,客戶端收到SSL數字證書之後,驗證該數字證書是否有效,如無效,則瀏覽器會發出不安全警告,如有效,就會先生成一個隨機碼如6666,然後使用公鑰777對這個隨機碼進行加密,然後傳輸該加密後的隨機碼到服務器,服務器使用私鑰888進行解密,得到客戶端的隨機碼為6666,以上該過程就是我們說的非對稱加密。此時,客戶端和服務器都同時擁有了該隨機碼6666,然後,把這個隨機碼6666用作對稱加密的密鑰,用密鑰6666對userName和passWord的信息進行加密,發送到服務器端,服務器端同樣使用相同的密鑰6666對數據進行解密,最後得到userName和passWord的信息。以上為整個HTTPS加密、解密及驗證的過程。


總結

本文從HTTP的不安全引出HTTPS,HTTPS就是在HTTP的基礎上增加了一層SSL的加密協議,然後進一步講述了兩種不同的加密方式,分別是對稱加密和非對稱加密,然後講述了兩者的不同及各自的優缺點,HTTPS綜合了兩種加密方式,最後,給出了完整的HTTPS加密、解密及驗證過程。


分享到:


相關文章: