HTTP強制安全傳輸技術

超文本传输协议响应头字段和关联策略

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

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

內容 編輯

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

比如,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憑證無效,使用者不能忽略瀏覽器警告繼續造訪網站。

歷史 編輯

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

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

2010年6月17日,這三位作者經由網際網路工程任務組發布了首版網際網路草案英語Internet Draft,"HTTP Strict Transport Security"[6]

2012年10月2日,網際網路工程指導組英語Internet Engineering Steering Group批准了將第14版HSTS草案發布為RFC的請求[7]

2012年11月19日,網際網路工程任務組發布RFC 6797[8]

作用 編輯

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

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

另外,如果中間人使用自己的自簽章憑證來進行攻擊,瀏覽器會給出警告,但是許多使用者會忽略警告。HSTS解決了這一問題,一旦伺服器傳送了HSTS欄位,將不再允許使用者忽略警告。

不足 編輯

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

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

瀏覽器支援 編輯

網站支援 編輯

根據SSL Pulse的調查,截至2015年2月,僅有2.7%的網站開啟了HSTS[17],至2023年11月的統計,有34.2%的網站開啟HSTS。

目前支援HSTS的主流網站有:支付寶[18]PayPal[2]Twitter[2]維基百科[19]等。

參見 編輯

參考文獻 編輯

  1. ^ Steven Musil. Web security protocol HSTS wins proposed standard status. CNET. 2012-10-02 [2014-11-09]. (原始內容存檔於2014-11-10). 
  2. ^ 2.0 2.1 2.2 鄒錚編譯. HTTP严格传输安全协议成互联网标准. 網界網. 2012-11-23 [2014-11-06]. (原始內容存檔於2014-11-06). 
  3. ^ 3.0 3.1 HTTP Strict Transport Security (HSTS). Internet Engineering Task Force. November 2012 [2014-11-06]. (原始內容存檔於2020-02-26). 
  4. ^ 4.0 4.1 Collin Jackson, Adam Barth. ForceHTTPS: Protecting High-Security Web Sites from Network Attacks. [2014-11-08]. (原始內容存檔於2020-02-28). 
  5. ^ Jeff Hodges, Collin Jackson, Adam Barth. Strict Transport Security. 18 September 2009 [2014-11-08]. (原始內容存檔於2014-10-12). 
  6. ^ Jeff Hodges, Collin Jackson, Adam Barth. draft-hodges-strict-transport-sec-00 - HTTP Strict Transport Security (HSTS). June 17, 2010 [2014-11-08]. (原始內容存檔於2014-11-11). 
  7. ^ The IESG. [websec] Protocol Action: 'HTTP Strict Transport Security (HSTS)' to Proposed Standard (draft-ietf-websec-strict-transport-sec-14.txt). 2 Oct 2012 [2014-11-08]. (原始內容存檔於2017-01-29). 
  8. ^ The RFC Editor Team. [websec] RFC 6797 on HTTP Strict Transport Security (HSTS). 19 Nov 2012 [2014-11-08]. (原始內容存檔於2014-11-08). 
  9. ^ Moxie Marlinspike. New Tricks For Defeating SSL In Practice (PDF). [2014-11-06]. (原始內容 (PDF)存檔於2014-12-30). 
  10. ^ 通过HTTPS保护网站的安全. Google. [2014-11-06]. (原始內容存檔於2014-12-23). 
  11. ^ David Keeler. Preloading HSTS. Mozilla. 2012年11月1日 [2014-11-06]. (原始內容存檔於2020-02-24). 
  12. ^ Bell, Mike; Walp, David. HTTP Strict Transport Security comes to Internet Explorer. February 16, 2015 [16 February 2015]. (原始內容存檔於2015-11-15). 
  13. ^ Jose Selvi. Bypassing HTTP Strict Transport Security (PDF). Blackhat Europe 2014. [2014-11-06]. (原始內容 (PDF)存檔於2014-10-22). 
  14. ^ HTTP Strict Transport Security. Mozilla. [2011-03-17]. (原始內容存檔於2012-08-13). 
  15. ^ Opera Software ASA. Web specifications support in Opera Presto 2.10. 23 April 2012 [2012-05-08]. (原始內容存檔於2016-09-11). 
  16. ^ Internet Explorer Web Platform Status and Roadmap. [2014-04-11]. (原始內容存檔於2015-06-29). 
  17. ^ SSL Pulse - Survey of the SSL Implementation of the Most Popular Web Sites. TIM Trustworthy Internet Movement. [2015-02-16]. (原始內容存檔於2017-05-15). 
  18. ^ Qualys SSL Labs - Projects / SSL Server Test / alipay.com. Qualys SSL Labs. [2014-11-06]. 
  19. ^ Chmarkine, CSteipp, Dzahn, Filippo Giunchedi, JanZerebecki, John F. Lewis. lists.wm.org - raise HSTS max-age to 1 year. Wikimedia Code Review. Oct 7, 2014 [2014-11-06]. 

外部連結 編輯