開啟主選單

求真百科

HTTP強制安全傳輸技術

HTTP強制安全傳輸技術
圖片來自techbang

HTTP嚴格傳輸安全HTTP Strict Transport Security,縮寫:HSTS)是一套由互聯網工程任務組[1] 發布的互聯網安全策略機制。網站可以選擇使用HSTS策略,來讓瀏覽器強制使用HTTPS與網站進行通信,以減少會話劫持風險。

徵求修正意見書文件編號是RFC 6797,發布於2012年11月。

目錄

歷史

HSTS的雛形來自於2008年4月在北京召開的第十七屆國際萬維網大會|International World Wide Web Conference上柯林·傑克遜(Collin Jackson)和亞當·巴斯(Adam Barth)的題為「ForceHTTPS: Protecting High-Security Web Sites from Network Attacks」的演講。他們的提議是使用「ForceHTTPS」 Cookie來強制瀏覽器使用HTTPS。

2009年9月18日,他們和傑夫·霍奇斯(Jeff Hodges)發布了最初的草案,題目為"Strict Transport Security",這個草案基於ForceHTTPS,並有所修改。

2010年6月17日,這三位作者經由互聯網工程任務組發布了首版互聯網草案|Internet Draft,"HTTP Strict Transport Security"。

2012年10月2日,互聯網工程指導組|Internet Engineering Steering Group批准了將第14版HSTS草案發布為RFC的請求。

2012年11月19日,互聯網工程任務組發布RFC 6797。

作用

HSTS可以用來抵禦SSL剝離攻擊。SSL剝離攻擊是中間人攻擊的一種,由Moxie Marlinspike|Moxie Marlinspike|Moxie Marlinspike於2009年發明。他在當年的黑帽大會上發表的題為「New Tricks For Defeating SSL In Practice」的演講中將這種攻擊方式公開。SSL剝離的實施方法是阻止瀏覽器與服務器建立HTTPS連接。它的前提是用戶很少直接在地址欄輸入https://,用戶總是通過點擊鏈接或3xx重定向,從HTTP頁面進入HTTPS頁面。所以攻擊者可以在用戶訪問HTTP頁面時替換所有https://開頭的鏈接為http://,達到阻止HTTPS的目的。

HSTS可以很大程度上解決SSL剝離攻擊,因為只要瀏覽器曾經與服務器建立過一次安全連接,之後瀏覽器會強制使用HTTPS,即使鏈接被換成了HTTP。

另外,如果中間人使用自己的自簽名證書來進行攻擊,瀏覽器會給出警告,但是許多用戶會忽略警告。HSTS解決了這一問題,一旦服務器發送了HSTS字段,將不再允許用戶忽略警告。

不足

用戶首次訪問某網站是不受HSTS保護的。這是因為首次訪問時,瀏覽器還未收到HSTS,所以仍有可能通過明文HTTP來訪問。解決這個不足目前有兩種方案,一是瀏覽器預置HSTS域名列表,Google ChromeFirefoxInternet ExplorerMicrosoft Edge實現了這一方案。二是將HSTS信息加入到域名系統記錄中。但這需要保證DNS的安全性,也就是需要部署域名系統安全擴展。截至2016年這一方案沒有大規模部署。

由於HSTS會在一定時間後失效(有效期由max-age指定),所以瀏覽器是否強制HSTS策略取決於當前系統時間。部分操作系統經常通過網絡時間協議更新系統時間,如Ubuntu每次連接網絡時、OS X Lion每隔9分鐘會自動連接時間服務器。攻擊者可以通過偽造NTP信息,設置錯誤時間來繞過HSTS。解決方法是認證NTP信息,或者禁止NTP大幅度增減時間。比如Windows 8每7天更新一次時間,並且要求每次NTP設置的時間與當前時間不得超過15小時。

內容

HSTS的作用是強制客戶端(如瀏覽器)使用HTTPS與服務器建立連接。服務器開啟HSTS的方法是,當客戶端通過HTTPS發出請求時,在服務器返回的超文本傳輸協議(HTTP)響應頭中包含Strict-Transport-Security字段。非加密傳輸時設置的HSTS字段無效。

比如,https://example.com/ 的響應頭含有Strict-Transport-Security: max-age=31536000; includeSubDomains。這意味着兩點:

  1. 在接下來的31536000秒(即一年)中,瀏覽器向example.com或其子域名發送HTTP請求時,必須採用HTTPS來發起連接。比如,用戶點擊超鏈接或在地址欄輸入 http://www.example.com/ ,瀏覽器應當自動將 http 轉寫成 https,然後直接向 https://www.example.com/ 發送請求。
  2. 在接下來的一年中,如果 example.com 服務器發送的TLS證書無效,用戶不能忽略瀏覽器警告繼續訪問網站。

參考文獻