[前端 · 面試 ]HTTP 總結(十一)—— HTTPS 概述

程式設計三昧發表於2021-08-11

最近我在做前端面試題總結系列,感興趣的朋友可以新增關注,歡迎指正、交流。

爭取每個知識點能夠多總結一些,至少要做到在面試時,針對每個知識點都可以侃起來,不至於啞火。

HTTPS

前言

通過前面內容的學習,相信大家對 HTTP 的概念、特點、請求方法及快取等的相關知識有了一定了解,恭喜大家在面試成功的道路上邁出了堅實的一步!

HTTP 從誕生之初到現在,已經好多年了,可以稱得上是“歷史悠久”了。中間經歷過幾次大的版本更新,依然堅挺如初。

但是不管再怎麼堅挺,跟人們需求的發展速度相比,卻稍顯遜色,比如很常見的一個需求:我使用網上銀行就行轉賬或者支付,怎麼保證我的使用者資訊(包括密碼)不會被洩漏?

由於 HTTP 協議傳輸的是明文資訊,如果在支付過程中發出的 HTTP 請求被攻擊者擷取到,那麼此請求所攜帶的使用者資訊對攻擊者來說是可見的,可能會帶來嚴重的安全隱患。

顯然,要解決這個問題,並不是對 HTTP 協議進行簡單的屬性新增就可以實現的,在這種狀況下,我們今天的主人公 —— HTTPS 就應運而生。

HTTPS

超文字傳輸安全協議,英語全稱為 HyperText Transfer Protocol Secure,縮寫叫做 HTTPS,有常被稱為 HTTP over TLS、HTTP over SSL 或 HTTP Secure。

還記得嗎?HTTP 叫做超文字傳輸協議,對比 HTTPS 的中文全稱,我們就大概可以知道二者的區別了。

HTTPS 是一種通過計算機網路進行安全通訊的傳輸協議。HTTPS 經由 HTTP 進行通訊,但利用 SSL/TLS 來加密資料包。HTTPS 開發的主要目的,是提供對網站伺服器的身份認證,保護交換資料的隱私與完整性。這個協議由網景公司(Netscape)在 1994 年首次提出,隨後擴充套件到網際網路上。

嚴格地講,HTTPS 並不是一個單獨的協議,而是對工作在一加密連線(TLS 傳輸層安全)或 SSL)上的常規 HTTP 協議的稱呼。

歷史上,HTTPS 連線經常用於全球資訊網上的交易支付和企業資訊系統中敏感資訊的傳輸。在 2000 年代末至 2010 年代初,HTTPS 開始廣泛使用,以確保各型別的網頁真實,保護賬戶和保持使用者通訊,身份和網路瀏覽的私密性。所以,我們現在見到的大多數應用網站都實現了 HTTPS 協議。

作用

HTTPS 的主要作用是在不安全的網路上建立一個安全通道,並可在使用適當的加密包和伺服器證照可被驗證且可被信任時,對竊聽和中間人攻擊提供合理的防護,其具體作用如下:

  • 資料保密性:保證資料內容在傳輸的過程中不會被第三方檢視。就像快遞員傳遞包裹一樣,都進行了封裝,別人無法獲知裡面裝了什麼 。
  • 資料完整性:及時發現被第三方篡改的傳輸內容。就像快遞員雖然不知道包裹裡裝了什麼東西,但他有可能中途掉包,資料完整性就是指如果被掉包,我們能輕鬆發現並拒收 。
  • 身份校驗安全性:保證資料到達使用者期望的目的地。就像我們郵寄包裹時,雖然是一個封裝好的未掉包的包裹,但必須確定這個包裹不會送錯地方,通過身份校驗來確保送對了地方 。

總結起來一句話:HTTPS 提供對網站伺服器的身份認證,保護交換資料的隱私與完整性

工作流程

HTTPS 預設工作在 TCP 協議 443 埠,它的工作流程一般如以下圖所示:

image-20210811204044397

  1. TCP 三次同步握手。
  2. 客戶端驗證伺服器數字證照。
  3. DH 演算法協商對稱加密演算法的金鑰、hash 演算法的金鑰。
  4. SSL 安全加密隧道協商完成。
  5. 網頁以加密的方式傳輸,用協商的對稱加密演算法和金鑰加密,保證資料機密性;用協商的hash演算法進行資料完整性保護,保證資料不被篡改。

優點

儘管 HTTPS 並非絕對安全,掌握根證照的機構、掌握加密演算法的組織同樣可以進行中間人形式的攻擊,但 HTTPS 仍是現行架構下最安全的解決方案,主要有以下幾個好處:

  • 使用 HTTPS 協議可認證使用者和伺服器,確保資料傳送到正確的客戶機和伺服器。
  • HTTPS 協議是由 SSL+HTTP 協議構建的可進行加密傳輸、身份認證的網路協議,要比 HTTP 協議安全,可防止資料在傳輸過程中不被竊取、改變,確保資料的完整性。
  • HTTPS 是現行架構下最安全的解決方案,雖然不是絕對安全,但它大幅增加了中間人攻擊的成本。
  • 谷歌曾在 2014 年 8 月份調整搜尋引擎演算法,並稱“比起同等 HTTP 網站,採用 HTTPS 加密的網站在搜尋結果中的排名將會更高”。

缺點

雖然說 HTTPS 有很大的優勢,但其相對來說,還是存在不足之處的:

  • HTTPS 協議握手階段比較費時,會使頁面的載入時間延長近 50%,增加 10% 到2 0% 的耗電。
  • HTTPS 連線快取不如 HTTP 高效,會增加資料開銷和功耗,甚至已有的安全措施也會因此而受到影響。
  • SSL 證照需要錢,功能越強大的證照費用越高,個人網站、小網站沒有必要一般不會用。
  • SSL 證照通常需要繫結 IP,不能在同一 IP 上繫結多個域名,IPv4 資源不可能支撐這個消耗。
  • HTTPS 協議的加密範圍也比較有限,在黑客攻擊、拒絕服務攻擊、伺服器劫持等方面幾乎起不到什麼作用。最關鍵的,SSL 證照的信用鏈體系並不安全,特別是在某些國家可以控制 CA 根證照的情況下,中間人攻擊一樣可行。

總結

以上就是對 HTTPS 的一些概述內容,希望對你有所幫助!

~

~本文完,感謝閱讀!

~

學習有趣的知識,結識有趣的朋友,塑造有趣的靈魂!

大家好,我是〖程式設計三昧〗的作者 隱逸王,我的公眾號是『程式設計三昧』,歡迎關注,希望大家多多指教!

你來,懷揣期望,我有墨香相迎! 你歸,無論得失,唯以餘韻相贈!

知識與技能並重,內力和外功兼修,理論和實踐兩手都要抓、兩手都要硬!

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章