您好,歡迎進入銳速雲官網!

售後熱線:4006-5050-10 QQ客服:2852917158 登錄 注冊

從 HTTP 到 HTTPS 再到 HSTS防劫持技術升級
編輯作者:   發布時間:2017-09-03

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

HTTP

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

HTTP 訪問過程

  HTTP 屬于 TCP/IP 模型中的應用層協議,當浏覽器與服務器進行互相通信時,需要先建立TCP 連接,之後服務器才會接收浏覽器的請求信息,當接收到信息之後,服務器返回相應的信息。最後浏覽器接受對服務器的信息應答後,對這些數據進行解釋執行。

  IMG_256

  △http 1.0 請求模式

  HTTP 1.0 時,浏覽器每次訪問都要單獨建立連接,這會造成資源的浪費。

  後來HTTP 1.1可以在一次連接中處理多個請求,并且将多個請求重疊進行

   

   

  IMG_257

  △http 1.1 請求模式

HTTP 協議特點

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

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

  3. 管線化和内容編碼:随着管線化技術的出現,HTTP 請求比持久性連接速度更快,并且當某些報文的内容過大時,爲了減少傳輸的時間,HTTP 會采取壓縮文件的方式;

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

從 HTTP 到 HTTPS

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

HTTPS

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

  IMG_258

  △ HTTP、HTTPS 差異

HTTPS 訪問過程

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

  具體過程如下:

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

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

  3. 當 Web 浏覽器收到證書之後首先需要驗證證書的合法性,如果證書受到浏覽器信任則在浏覽器地址欄會有标志顯示,否則就會顯示不受信的标識。當證書受信之後,Web 浏覽器會随機生成一串密碼,并使用證書中的公鑰加密。之後就是使用約定好的哈希算法握手消息,并生成随機數對消息進行加密,再将之前生成的信息發送給網站;

  IMG_259

  △ Chrome 浏覽器 HTTPS安全标識

  4. 當網站服務器接收到浏覽器發送過來的數據後,會使用網站本身的私鑰将信息解密确定密碼,然後通過密碼解密Web浏覽器發送過來的握手信息,并驗證哈希是否與Web浏覽器一緻。然後服務器會使用密碼加密新的握手信息,發送給浏覽器;

  5. 最後浏覽器解密并計算經過哈希算法加密的握手消息,如果與服務發送過來的哈希一緻,則此握手過程結束後,服務器與浏覽器會使用之前浏覽器生成的随機密碼和對稱加密算法進行加密交換數據。

   

  IMG_260

   

  △ HTTPS 握手過程

HTTPS 加密算法

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

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

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

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

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

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

  例如:MD5、SHA-1、SHA-2、SHA-256 等。

  4. 數字簽名:簽名就是在信息的後面再加上一段内容(信息經過 hash 後的值),可以證明信息沒有被修改過。hash 值一般都會加密後(也就是簽名)再和信息一起發送,以保證這個 hash 值不被修改。

從 HTTPS 到 HSTS

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

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

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

  IMG_261

  △ 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

  IMG_262

  開啓後等級變爲:A+

  IMG_263

總結

  從 HTTP 到 HTTPS 再到 HSTS,網站的安全系數一直在上升,防止 DNS 劫持、數據洩密的力度也再加大

   


上一篇:無 下一篇:無 返回列表 >>
版權所有:Copyright @ 2016-2022 深圳市銳速雲計算有限公司 增值電信業務經營許可證
粵B1-20171508
備案系統 粵ICP備16119720号 粵公網安備 44030902000612号