1. 程式人生 > >HTTP和HTTPS的區別及HTTPS加密演算法

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

HTTPS協議的埠是443,HTTP協議的埠是80,其中HTTPS是相對安全的

HTTP是超文字傳輸協議

應用層協議

FTP、Telnet、SMTP、HTTP、RIP、NFS、DNS。
傳輸層協議的有

TCP協議UDP協議

HTTP和HTTPS的概念      

       HTTP:是網際網路上應用最為廣泛的一種網路協議,是一個客戶端和伺服器端請求和應答的標準(TCP),用於從WWW伺服器傳輸超文字到本地瀏覽器的傳輸協議,它可以使瀏     覽器更加高效,使網路傳輸減少。http協議屬於明文傳輸協議,互動過程以及資料傳輸都沒有進行加密,通訊雙方也沒有進行任何認證,通訊過程非常容易遭遇劫持、監聽、篡改,嚴重情況下,會造成惡意的流量劫持等問題,甚至造成個人隱私洩露(比如銀行卡卡號和密碼洩露)等嚴重的安全問題。

  HTTPS:是以安全為目標的HTTP通道,簡單講是HTTP的安全版,即HTTP下加入SSL層,HTTPS的安全基礎是SSL,因此加密的詳細內容就需要SSL。

  HTTPS協議的主要作用可以分為兩種:一種是建立一個資訊保安通道,來保證資料傳輸的安全;另一種就是確認網站的真實性。

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進行加密,所以傳輸的資料都是加密後的資料。伺服器在給客戶端傳送的資料是加密的,只有伺服器和客戶端才能讀懂,而且在進行資料互動的時,還需要用對稱祕鑰(下面有概念)進行驗證,但是伺服器又是如何將對稱祕鑰傳送給客戶端?(下面將會講到)

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 第三方無法偽造服務端(客戶端)身份 

HTTPS的加密演算法

      首先介紹兩個概念:

      對稱祕鑰:對稱金鑰加密又叫專用金鑰加密,即傳送和接收資料的雙方必使用相同的金鑰對明文進行加密和解密運算。通常有兩種模式:流加密和分組加密。

      非對稱祕鑰:非對稱加密演算法需要兩個金鑰:公開祕鑰(publickey)和私有金鑰(privatekey)。公開金鑰與私有金鑰是一對,如果用公開金鑰對資料進行加密,只有用對應的私有金鑰才能解密;如果用私有金鑰對資料進行加密,那麼只有用對應的公開金鑰才能解密。因為加密和解密使用的是兩個不同的金鑰,所以這種演算法叫作非對稱加密演算法。

1.HTTPS保證資料安全的機制:

在HTTP的概念中介紹了HTTP是非常不安全的,那麼在伺服器與客戶端傳遞資料的過程中HTTPS是如何保證資料的安全呢?

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

            2 伺服器把公鑰傳送給客戶端,並且伺服器端儲存著唯一的私鑰;

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

            4.伺服器利用自己唯一的私鑰對客戶端發來的對稱祕鑰進行解密,在此過程中,中間方無法對其解密(即使是客戶端也無法解密,因為只有伺服器端擁有唯一的私鑰),這樣保證了對稱祕鑰在收發過程中的安全,此時,伺服器端和客戶端擁有了一套完全相同的對稱祕鑰。

            5.進行資料傳輸,伺服器和客戶端雙方用公有的相同的對稱祕鑰對資料進行加密解密,可以保證在資料收發過程中的安全,即是第三方獲得資料包,也無法對其進行加密,解密和篡改。

   2.CA(電子商務認證機構)認證作用:      在上面提到的 客戶端向伺服器端發起請求時存在資料被盜取的過程:  假如伺服器端經由中間方向客戶端傳送公鑰的時候,中間方沒有將公鑰傳送給客戶端,而是偽造了醫藥公鑰,並將偽造的公鑰傳送給客戶端,此時客戶端用中間方偽造的公鑰對自己正確的對稱祕鑰加密並由中間方傳送給伺服器端,而中間方將用自己偽造的公鑰的私鑰對其進行解密,得到正確的對稱祕鑰,並將得到的正確的對稱祕鑰用伺服器端發過來的公鑰進行加密發給伺服器端,伺服器daunt再用正確的私鑰進行解密,也得到正確的對稱祕鑰,此時客戶端,伺服器端,中間方三者都擁有一套正確的對稱祕鑰,可以對傳送的資料進行加密,解密。    為了解決上述問題,一般情況下,伺服器端會向CA申請認證書,此證書包含了CA及伺服器端的一些資訊(可以理解為類似公章),這樣,伺服器端將證書發給客戶端的過程中,中間方是無法偽造的,保證了,發給客戶端的公鑰是伺服器端傳送的。