從 HTTP 到 HTTPS 再到 HSTS

 

近些年,隨着域名劫持、信息泄漏等網絡安全事件的頻繁發生,網站安全也變得愈來愈重要,也促成了網絡傳輸協議從 HTTP 到 HTTPS 再到 HSTS 的轉變。html

HTTP

HTTP(超文本傳輸協議) 是一種用於分佈式、協做式和超媒體信息系統的應用層協議。HTTP 是互聯網數據通訊的基礎。它是由萬維網協會(W3C)和互聯網工程任務組(IETF)進行協調製定了 HTTP 的標準,最終發佈了一系列的 RFC,而且在1999年6月公佈的 RFC 2616,定義了 HTTP 協議中現今普遍使用的一個版本——HTTP 1.1。算法

HTTP 訪問過程

HTTP 屬於 TCP/IP 模型中的應用層協議,當瀏覽器與服務器進行互相通訊時,須要先創建TCP 鏈接,以後服務器纔會接收瀏覽器的請求信息,當接收到信息以後,服務器返回相應的信息。最後瀏覽器接受對服務器的信息應答後,對這些數據進行解釋執行。瀏覽器


△http 1.0 請求模式

HTTP 1.0 時,瀏覽器每次訪問都要單獨創建鏈接,這會形成資源的浪費。安全

後來HTTP 1.1能夠在一次鏈接中處理多個請求,而且將多個請求重疊進行服務器


△http 1.1 請求模式

HTTP 協議特色

1. 簡單、快速、靈活:當用戶想服務器發送請求時,只需傳送請求方法和路徑便可,HTTP 容許傳輸任意類型的數據對象。而且HTTP協議簡單易用,HTTP 服務器規模小,保證了網絡通訊的速度;網絡

2. 無鏈接、無狀態:HTTP協議限制每次鏈接只處理單個請求,當服務器收到用戶請求後就會斷開鏈接,保證了傳輸時間的節省。同時HTTP協議對事務處理沒有記憶能力,若是後續的請求須要使用前面的信息就必須重傳數據;分佈式

3. 管線化和內容編碼:隨着管線化技術的出現,HTTP 請求比持久性鏈接速度更快,而且當某些報文的內容過大時,爲了減小傳輸的時間,HTTP 會採起壓縮文件的方式;post

4. HTTP支持客戶/服務器模式性能

從HTTP到HTTPS

HTTP 協議因爲其簡單快速、佔用資源少,一直被用於網站服務器和瀏覽器之間進行數據傳輸。可是在數據傳輸的過程當中也存在很明顯的問題,因爲 HTTP 是明文協議,不會對數據進行任何方式的加密。當黑客攻擊竊取了網站服務器和瀏覽器之間的傳輸報文的時,能夠直接讀取傳輸的信息,形成網站、用戶資料的泄密。所以 HTTP 不適用于敏感信息的傳播,這個時候須要引入 HTTPS(超文本傳輸安全協議)。測試

HTTPS

HTTPS(Hypertext Transfer Protocol Secure )是一種以計算機網絡安全通訊爲目的的傳輸協議。在HTTP下加入了SSL層,從而具備了保護交換數據隱私和完整性和提供對網站服務器身份認證的功能,簡單來講它就是安全版的 HTTP 。


△ HTTP、HTTPS 差別

 

HTTPS 訪問過程

HTTPS在進行數據傳輸以前會與網站服務器和Web瀏覽器進行一次握手,在握手時肯定雙方的加密密碼信息。

具體過程以下:

1. Web 瀏覽器將支持的加密信息發送給網站服務器;

2. 網站服務器會選擇出一套加密算法和哈希算法,將驗證身份的信息以證書(證書發佈CA機構、證書有效期、公鑰、證書全部者、簽名等)的形式發送給Web瀏覽器;

3. 當 Web 瀏覽器收到證書以後首先須要驗證證書的合法性,若是證書受到瀏覽器信任則在瀏覽器地址欄會有標誌顯示,不然就會顯示不受信的標識。當證書受信以後,Web 瀏覽器會隨機生成一串密碼,並使用證書中的公鑰加密。以後就是使用約定好的哈希算法握手消息,並生成隨機數對消息進行加密,再將以前生成的信息發送給網站;


△ Chrome 瀏覽器 HTTPS安全標識

4. 當網站服務器接收到瀏覽器發送過來的數據後,會使用網站自己的私鑰將信息解密肯定密碼,而後經過密碼解密Web瀏覽器發送過來的握手信息,並驗證哈希是否與Web瀏覽器一致。而後服務器會使用密碼加密新的握手信息,發送給瀏覽器;

5. 最後瀏覽器解密並計算通過哈希算法加密的握手消息,若是與服務發送過來的哈希一致,則此握手過程結束後,服務器與瀏覽器會使用以前瀏覽器生成的隨機密碼和對稱加密算法進行加密交換數據。


△ HTTPS 握手過程

HTTPS 加密算法

爲了保護數據的安全,HTTPS 運用了諸多加密算法:

1.對稱加密:有流式、分組兩種,加密和解密都是使用的同一個密鑰。

例如:DES、AES-GCM、ChaCha20-Poly1305 等。

2.非對稱加密:加密使用的密鑰和解密使用的密鑰是不相同的,分別稱爲:公鑰、私鑰,公鑰和算法都是公開的,私鑰是保密的。非對稱加密算法性能較低,可是安全性超強,因爲其加密特性,非對稱加密算法能加密的數據長度也是有限的。

例如:RSA、DSA、ECDSA、 DH、ECDHE 等。

3. 哈希算法:將任意長度的信息轉換爲較短的固定長度的值,一般其長度要比信息小得多,且算法不可逆。

例如:MD五、SHA-一、SHA-二、SHA-256 等。

4. 數字簽名:簽名就是在信息的後面再加上一段內容(信息通過 hash 後的值),能夠證實信息沒有被修改過。hash 值通常都會加密後(也就是簽名)再和信息一塊兒發送,以保證這個 hash 值不被修改。

從 HTTPS 到 HSTS

可是當網站傳輸協議從 HTTP 到 HTTPS 以後,數據傳輸真的安全了嗎?

因爲用戶習慣,一般準備訪問某個網站時,在瀏覽器中只會輸入一個域名,而不會在域名前面加上 http:// 或者 https://,而是由瀏覽器自動填充,當前全部瀏覽器默認填充的都是http://。通常狀況網站管理員會採用了 301/302 跳轉的方式由 HTTP 跳轉到 HTTPS,可是這個過程總使用到 HTTP 所以容易發生劫持,受到第三方的攻擊。

這個時候就須要用到 HSTS(HTTP 嚴格安全傳輸)。


△ HTTP 請求劫持

HSTS

HSTS是國際互聯網工程組織 IETF 正在推行一種新的 Web 安全協議,網站採用 HSTS 後,用戶訪問時無需手動在地址欄中輸入 HTTPS,瀏覽器會自動採用 HTTPS 訪問網站地址,從而保證用戶始終訪問到網站的加密連接,保護數據傳輸安全。

HSTS原理

HSTS 主要是經過服務器發送響應頭的方式來控制瀏覽器操做:

1. 首先在服務器響應頭中添加 HSTS 響應頭:

Strict-Transport-Security: max-age=expireTime [; includeSubDomains] [; preload]

此響應頭只有在 https 訪問返回時才生效,其中[ ]中的參數表示可選;

2. 設置 max-age 參數,時間設置不宜過長,建議設置時間爲 6 個月;

3. 當用戶下次使用 HTTP 訪問,客戶端就會進行內部跳轉,而且可以看到 307 Redirect Internel 的響應碼;

4. 網站服務器變成了 HTTPS 訪問源服務器。

開啓 HSTS 後網站能夠有效防範中間人的攻擊,同時也會省去網站 301/302 跳轉花費的時間,大大提高安全係數和用戶體驗。

開啓 HSTS 後網站安全係數檢測測評

開啓 HSTS 之後,能夠到 ssllabs 進行測試,網站的安全等級會進一步提高。

開啓前等級爲:A

開啓後等級變爲:A+

總結

從 HTTP 到 HTTPS 再到 HSTS,網站的安全係數一直在上升,防止 DNS 劫持、數據泄密的力度也再加大。國內公有云服務商好比又拍雲提供了完整的 HTTPS和HSTS的解決方案,不只支持 SSL 證書快速申請,HTTPS 一鍵部署,還支持一鍵開啓 HSTS,感興趣的同窗能夠前往又拍雲官網瞭解。

參考資料來源:

HTTPS 原理詳解

減小網站跳轉時間,加強網站數據安全——HSTS 詳解

HTTP請求流程(一)----流程簡介

HTTP協議詳解

 
 
轉載自: https://www.cnblogs.com/upyun/p/7447977.html
相關文章
相關標籤/搜索