HTTP和HTTPS的區別及HTTPS加密算法

1 .HTTP和HTTPS的概念      

  HTTP:是互聯網上應用最爲普遍的一種網絡協議,是一個客戶端和服務器端請求和應答的標準(TCP),用於從WWW服務器傳輸超文本到本地瀏覽器的傳輸協議,它可使瀏     覽器更加高效,使網絡傳輸減小。http協議屬於明文傳輸協議,交互過程以及數據傳輸都沒有進行加密,通訊雙方也沒有進行任何認證,通訊過程很是容易遭遇劫持、監聽、篡改,嚴重狀況下,會形成惡意的流量劫持等問題,甚至形成我的隱私泄露(好比銀行卡卡號和密碼泄露)等嚴重的安全問題。html

  HTTPS:是以安全爲目標的HTTP通道,簡單講是HTTP的安全版,即HTTP下加入SSL層,HTTPS的安全基礎是SSL,所以加密的詳細內容就須要SSL。算法

  HTTPS協議的主要做用能夠分爲兩種:一種是創建一個信息安全通道,來保證數據傳輸的安全;另外一種就是確認網站的真實性。瀏覽器

2. HTTP和HTTPS的工做原理:

  HTTP當用戶在瀏覽器的地址欄中輸入所要訪問Web的URI之後,HTTP的處理過程即會開始,HTTP中默認的端口是80端口,它的工做機制,首先是客戶端向服務器的80端口創建一個TCP鏈接,贊後而後再這個鏈接上進行請求和應答以及數據報文的發送。具體過程成以下:安全

  一次HTTP操做稱爲一個事務,其工做整個過程以下:
(1)、地址解析
  如用客戶端瀏覽器請求這個頁面:http://localhost.com:8080/index.htm
  從中分解出協議名、主機名、端口、對象路徑等部分,對於咱們的這個地址,解析獲得的結果以下:
  協議名:http
  主機名:localhost.com
  端口:8080
  對象路徑:/index.html
  在這一步,須要域名系統DNS解析域名localhost.com,得主機的IP地址。服務器

(2) 封裝HTTP請求數據包
  把以上部分結合本機本身的信息,封裝成一個HTTP請求數據包微信

(3) 封裝成TCP包,創建TCP鏈接(TCP的三次握手)
  在HTTP工做開始以前,客戶機(Web瀏覽器)首先要經過網絡與服務器創建鏈接,該鏈接是經過TCP來完成的,該協議與IP協議共同構建Internet,即著名的TCP/IP協議族,所以Internet又被稱做是TCP/IP網絡。HTTP是比TCP更高層次的應用層協議,根據規則,只有低層協議創建以後才能,才能進行高層協議的鏈接,所以,首先要創建TCP鏈接,通常TCP鏈接的端口號是80。這裏是8080端口網絡

(4)客戶機發送請求命令
       創建鏈接後,客戶機發送一個請求給服務器,請求方式的格式爲:統一資源標識符(URL)、協議版本號,後邊是MIME信息包括請求修飾符、客戶機信息和可內容。併發

(5)服務器響應
  服務器接到請求後,給予相應的響應信息,其格式爲一個狀態行,包括信息的協議版本號、一個成功或錯誤的代碼,後邊是MIME信息包括服務器信息、實體信息和可能的內容。
  實體消息是服務器向瀏覽器發送頭信息後,它會發送一個空白行來表示頭信息的發送到此爲結束,接着,它就以Content-Type應答頭信息所描述的格式發送用戶所請求的實際數據學習

(6)服務器關閉TCP鏈接
  通常狀況下,一旦Web服務器向瀏覽器發送了請求數據,它就要關閉TCP鏈接,而後若是瀏覽器或者服務器在其頭信息加入了這行代碼
  Connection:keep-alive
  TCP鏈接在發送後將仍然保持打開狀態,因而,瀏覽器能夠繼續經過相同的鏈接發送請求。保持鏈接節省了爲每一個請求創建新鏈接所需的時間,還節約了網絡帶寬。
服務器將響應信息傳給客戶端,響應體中的內容多是一個html頁面,也多是一張圖片,經過輸入流將其讀出,並寫回到顯示器上。網站

  HTTPSHTTPS實際上是有兩部分組成:HTTP + SSL / TLS,也就是在HTTP上又加了一層處理加密信息的模塊。服務端和客戶端的信息傳輸都會經過TLS進行加密,因此傳輸的數據都是加密後的數據。服務器在給客戶端發送的數據是加密的,只有服務器和客戶端才能讀懂,並且在進行數據交互的時,還須要用對稱祕鑰(下面有概念)進行驗證,可是服務器又是如何將對稱祕鑰發送給客戶端?(下面將會講到)

3. HTTP和HTTPS的區別:

  (1)HTTPS 協議須要到CA(電子商務認證機構)申請證書,通常免費證書不多,須要交費。

  (2)HTTP 是超文本傳輸協議,信息是明文傳輸,HTTPS 則是具備安全性的ssl加密傳輸協議

  (3)HTTP 和 HTTPS 使用的是徹底不一樣的鏈接方式用的端口也不同,前者是80,後者是443。

  (4)HTTP 的鏈接很簡單,是無狀態的

  (5)HTTPS 協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網絡協議 要比 HTTP 協議安全

  (6)HTTPS 內容傳輸通過完整性校驗

  (7)HTTPS 內容通過對稱加密,每一個鏈接生成一個惟一的加密密鑰

  (8)HTTPS 第三方沒法僞造服務端(客戶端)身份 

4.HTTPS的加密算法

  首先介紹兩個概念:

  對稱祕鑰:對稱密鑰加密又叫專用密鑰加密,即發送和接收數據的雙方必使用相同的密鑰對明文進行加密和解密運算。一般有兩種模式:流加密和分組加密。

  非對稱祕鑰:非對稱加密算法須要兩個密鑰:公開祕鑰(publickey)和私有密鑰(privatekey)。公開密鑰與私有密鑰是一對,若是用公開密鑰對數據進行加密,只有用對應的私有密鑰才能解密;若是用私有密鑰對數據進行加密,那麼只有用對應的公開密鑰才能解密。由於加密和解密使用的是兩個不一樣的密鑰,因此這種算法叫做非對稱加密算法。

4.1 HTTPS保證數據安全的機制:

  在HTTP的概念中介紹了HTTP是很是不安全的,那麼在服務器與客戶端傳遞數據的過程當中HTTPS是如何保證數據的安全呢?

  1.客戶端向服務器端發起SSL鏈接請求;(在此過程當中依然存在數據被中間方盜取的可能,下面將會說明如何保證此過程的安全)

  2 服務器把公鑰發送給客戶端,而且服務器端保存着惟一的私鑰;

  3.客戶端用公鑰對雙方通訊的對稱祕鑰進行加密,併發送給服務器端;

  4.服務器利用本身惟一的私鑰對客戶端發來的對稱祕鑰進行解密,在此過程當中,中間方沒法對其解密(即便是客戶端也沒法解密,由於只有服務器端擁有惟一的私鑰),這樣保證了對稱祕鑰在收發過程當中的安全,此時,服務器端和客戶端擁有了一套徹底相同的對稱祕鑰。

  5.進行數據傳輸,服務器和客戶端雙方用公有的相同的對稱祕鑰對數據進行加密解密,能夠保證在數據收發過程當中的安全,便是第三方得到數據包,也沒法對其進行加密,解密和篡改。

4.2 CA(電子商務認證機構)認證做用: 

  在上面提到的 客戶端向服務器端發起請求時存在數據被盜取的過程:  假如服務器端經由中間方向客戶端發送公鑰的時候,中間方沒有將公鑰發送給客戶端,而是僞造了一對公鑰,並將僞造的公鑰發送給客戶端,此時客戶端用中間方僞造的公鑰對本身正確的對稱祕鑰加密並由中間方發送給服務器端,而中間方將用本身僞造的公鑰的私鑰對其進行解密,獲得正確的對稱祕鑰,並將獲得的正確的對稱祕鑰用服務器端發過來的公鑰進行加密發給服務器端,服務器daunt再用正確的私鑰進行解密,也獲得正確的對稱祕鑰,此時客戶端,服務器端,中間方三者都擁有一套正確的對稱祕鑰,能夠對傳送的數據進行加密,解密。
  爲了解決上述問題,通常狀況下,服務器端會向CA申請認證書,此證書包含了CA及服務器端的一些信息(能夠理解爲相似公章),這樣,服務器端將證書發給客戶端的過程當中,中間方是沒法僞造的,保證了,發給客戶端的公鑰是服務器端發送的。

         歡迎掃碼關注個人微信公衆號,或者微信公衆號直接搜索Java傳奇,不定時更新一些學習筆記!

                                                                 

相關文章
相關標籤/搜索