HTTP和HTTPS的區別【面試常考】

這個是根據查閱別人的博客,並結合自己的思想總結的,發出來是對自己的檢驗也希望可以幫到大家;如有錯誤歡迎指出

HTTP和HTTPS是計算機網絡中很重要的知識點,面試的時候很容易被問他們的區別,可能每個人都會有自己理解;

HTTP是明文傳輸的,傳輸過程中容易被攔截、修改或者僞造請求;HTTPS則是在HTTP基礎上進行進行了一些信息保護,相比HTTP來說更爲安全。

 這是一個簡單的回答,但是比較籠統,如果想要找到好的工作,中間的很多細節還是需要我們去仔細研究的。

HTTPS和HTTP

HTTP是什麼:HTTP 是一種 超文本傳輸協議(Hypertext Transfer Protocol) 協議,它是一個在計算機世界裏專門在兩點之間傳輸文字、圖片、音頻、視頻等超文本數據的約定和規範。

HTTP的原理:

  1. 客戶端瀏覽器通過網絡與服務器建立連接(通過TCP實現,一般端口號爲80),建立連接後客戶端可發送請求給服務器(請求的格式爲:統一資源標識符(URL)、協議版本號,後邊是 MIME 信息包括請求修飾符、客戶機信息和許可內容)
  2. 服務器接收到請求之後會返回一定的相應(其格式爲一個狀態行,包括信息的協議版本號、一個成功或錯誤的代碼,後邊是 MIME 信息包括服務器信息、實體信息和可能的內容)

HTTP的缺點:

  1. 使用明文通信,一些重要的內容會被竊聽(密碼)
  2. 不能驗證對方的身份,可能是僞造的信息
  3. 無法驗證報文的完整性,有可能已經被修改

HTTPS如何解決HTTP的問題:

  • HTTPS 只是在 HTTP 的基礎之上增加了加密處理、認證機制和完整性保護,即 HTTPS = HTTP + 加密 + 認證 + 完整性保護
    • 加密,HTTPS 通過對數據加密來使其免受竊聽者對數據的監聽,這就意味着當用戶在瀏覽網站時,沒有人能夠監聽他和網站之間的信息交換,或者跟蹤用戶的活動,訪問記錄等,從而竊取用戶信息。
    • 數據一致性,數據在傳輸的過程中不會被竊聽者所修改,用戶發送的數據會完整的傳輸到服務端,保證用戶發的是什麼,服務器接收的就是什麼。
    • 身份認證,是指確認對方的真實身份,也就是證明你是你(可以比作人臉識別),它可以防止中間人攻擊並建立用戶信任。
  • HTTPS 不是應用層的一種新協議,只是 HTTP 協議的改進(HTTP協議中的部分通信接口被ssl/tls協議代替),通常 HTTP 直接與 TCP 進行通信,當使用 ssl 協議時則先與 ssl 通信,再由 ssl 和 tcp 通信,
  • 通過上面的分析可以看出來,HTTPS 只是在 HTTP 的基礎上增加了 ssl 協議;

HTTPS的原理:

  1. 客戶使用https的URL訪問Web服務器,要求與Web服務器建立SSL連接。
  2. Web服務器收到客戶端請求後,會將網站的證書信息(證書中包含公鑰)傳送一份給客戶端。
  3. 客戶端的瀏覽器與Web服務器開始協商SSL連接的安全等級,也就是信息加密的等級。
  4. 客戶端的瀏覽器根據雙方同意的安全等級,建立會話密鑰,然後利用網站的公鑰將會話密鑰加密,並傳送給網站。
  5. Web服務器利用自己的私鑰解密出會話密鑰。
  6. Web服務器利用會話密鑰加密與客戶端之間的通信。

區別:

  1. http是超文本傳輸協議,信息是明文傳輸,https則是具有安全性的ssl加密傳輸協議。
  2. http和https使用的是完全不同的連接方式,用的端口也不一樣,前者是80,後者是443。
  3. http的連接很簡單,是無狀態的。Https協議是由SSL+Http協議構建的可進行加密傳輸、身份認證的網絡協議,比http協議安全。(無狀態的意思是其數據包的發送、傳輸和接收都是相互獨立的。無連接的意思是指通信雙方都不長久的維持對方的任何信息。)

 SSL和TSL

SSL是“Secure Sockets Layer”的縮寫,中文叫做“安全套接層”,其出現就是爲了解決HTTP傳輸不安全的問題;到了1999年,SSL被標準化,標準化之後的名稱改爲 TLS(是“Transport Layer Security”的縮寫),中文叫做“傳輸層安全協議”,所以這兩者其實就是同一種協議,只不過是在不同階段的不同稱呼。

SSL協議是位於TCP/IP協議與各種應用層協議之間,爲數據通信提供安全支持,可分爲兩層:

  • SSL記錄協議(SSL Record Protocol):它建立在可靠的傳輸協議(如TCP)之上,爲高層協議提供數據封裝、壓縮、加密等基本功能的支持。
  • SSL握手協議(SSL Handshake Protocol):它建立在SSL記錄協議之上,用於在實際的數據傳輸開始前,通訊雙方進行身份認證、協商加密算法、交換加密密鑰等。

所以,SSL協議提供的服務有:

  1. 認證用戶和服務器,確保數據發送到正確的客戶端和服務器;

  2. 加密數據以防止數據中途被竊取;

  3. 維護數據的完整性,確保數據在傳輸過程中不被改變。

細心的同學可能會發現,這不還是HTTPS解決HTTP的那幾個問題嗎?對,還是實現加密處理、認證機制和完整性保護這三點,由此也可以看出SSL協議的重要性,這也是HTTP和HTTPS之間的主要區別。

加密 

在上面HTTPS的原理部分也提到了加密, 這裏我們就來說一下加密,通常加密分爲對稱加密、非對稱加密和混合加密

對稱加密

  • 對稱加密,又被成爲私鑰加密,即信息的發送方和接收方使用同一個祕鑰去加密和解密信息,它採用了對稱密碼編碼技術;
  • 對稱加密算法密鑰較短,破譯困難,除了數據加密標準(DES),另一個對稱密鑰加密系統是國際數據加密算法(IDEA),它比DES的加密性好,且對計算機性能要求也沒有那麼高。

優點:

        算法公開、計算量小、加密速度快、加密效率高 

缺點:

  1. 數據傳送之前,發送方和接收方需要協商好祕鑰,然後兩方都要保存好祕鑰,如果任意一方不慎將祕鑰泄露信息加密就會變得不再安全;
  2. 每對用戶每次使用對稱加密算法時,都需要使用其他人不知道的唯一祕鑰,這會使得收、發雙方所擁有的鑰匙數量巨大,密鑰管理成爲雙方的負擔;
  3. 對稱加密算法一般不能提供信息完整性的鑑別。它無法驗證發送者和接受者的身份;

 常見的對稱加密算法有: DES、3DES、Blowfish、IDEA、RC4、RC5、RC6 和 AES

非對稱加密

與對稱加密算法不同,非對稱加密算法需要使用兩個祕鑰:公開祕鑰、私有祕鑰;

公開密鑰與私有密鑰是一對,如果用公開密鑰對數據進行加密,只有用對應的私有密鑰才能解密;如果用私有密鑰對數據進行加密,那麼只有用對應的公開密鑰才能解密。因爲加密和解密使用的是兩個不同的密鑰,所以這種算法叫作非對稱加密算法。

非對稱加密算法實現機密信息交換的基本過程是:

       甲方生成一對密鑰並將其中的一把作爲公用密鑰向其它方公開;得到該公用密鑰的乙方使用該密鑰對機密信息進行加密後再發送給甲方;甲方再用自己保存的另一把專用密鑰對加密後的信息進行解密。甲方只能用其專用密鑰解密由其公用密鑰加密後的任何信息。

優點:安全

缺點:速度比較慢

常見的非對稱加密算法有: RSA、ECC(移動設備用)、Diffie-Hellman、El Gamal、DSA(數字簽名用)

混合加密

結合對稱加密和非對稱加密的優缺點,混合使用兩種加密算法而產生混合加密,TLS中也是使用的這種加密方式;

實現過程:

       首先,使用非對稱加密,用來傳輸對稱加密的祕鑰,以此可解決對稱加密傳輸過程不安全的問題;然後用隨機數產生對稱算法使用的,再用公鑰加密。對方拿到密文後用私鑰解密,取出會話密鑰。這樣,雙方就實現了對稱密鑰的安全交換。

摘要算法(Hash算法)

Hash算法特別的地方在於它是一種單向算法,用戶可以通過hash算法對目標信息生成一段特定長度的唯一hash值,卻不能通過這個hash值重新獲得目標信息。因此Hash算法常用在不可還原的密碼存儲、信息完整性校驗等。

可能有人會疑惑爲什麼要用單向的?因爲雙向的話也存在安全問題,比如說我們常用的支付寶,我們支付寶的密碼和支付密碼在數據庫存儲之前的加密算法一定是單向不可逆的,否則可能會出現程序員拿到加密後的密碼把他們再進行還原,如果是這樣的你還能放心使用支付寶嗎。

其實我們可以把Hash算法理解成一種特殊的壓縮算法,它能夠把任意長度的數據壓縮成一種固定長度的字符串,這就好像是給數據加了一把鎖。

常見的摘要算法有: MD2、MD4、MD5、HAVAL、SHA

有人可能會對MD5產生疑惑,因爲網上有些網站中可以將MD5加密後的密碼還原,其實,這是因爲MD5這種加密算法用的比較多,一些網站就把一些常用的MD5原文和密文進行了保存,它的還原只是在數據庫中查找出來的,對於比較麻煩的密碼採用MD5加密後去網站還原是還原不出來的。

認證

如何確定你自己的唯一性呢?我們在上面的敘述過程中出現過公鑰加密,私鑰解密的這個概念。提到的私鑰只有你一個人所有,能夠辨別唯一性,所以我們可以把順序調換一下,變成私鑰加密,公鑰解密。使用私鑰再加上摘要算法,就能夠實現數字簽名,從而實現認證。

到現在,綜合使用對稱加密、非對稱加密和摘要算法,我們已經實現了加密、數據認證、認證,那麼是不是就安全了呢?非也,這裏還存在一個數字簽名的認證問題。因爲私鑰是是自己的,公鑰是誰都可以發佈,所以必須發佈經過認證的公鑰,才能解決公鑰的信任問題。

發佈的公鑰必須是讓 CA(Certificate Authority,證書認證機構) 頒佈具有認證過的公鑰,才能解決公鑰的信任問題。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章