僅有 0.09% 的 HTTPS 站點使用了 HPKP 證書釘
為防止攻擊者使用一個以你的域名簽發的有效證書來偽造你的網站時,HPKP 很有用
這種機制可以用於防護攻擊者運行一個假冒網站並使用有效證書來欺騙瀏覽器的攻擊行為。
攻擊者有幾種方式可以得到有效的證書。他們可以通過對 CA 的社會工程攻擊、對技術薄弱點的攻擊、CA 的數據泄露、利用脆弱的證書籤發策略等來得到。另外,如果攻擊者本身得到了瀏覽器可信任的 CA 的授權,也是可以做到的。
HPKP 就是用來解決這種問題的。
HPKP 如何工作?
當網站管理人員為他的網站設置 HPKP 頭時,第一次連接到該域名的用戶將接收到一個包括了公鑰指紋的列表,以後對該網站的訪問必定使用這些公鑰之一才能進行。
這些公鑰存儲在用戶的瀏覽器裡面,當用戶再次訪問該網站時,在建立 HTTPS 連接前,瀏覽器和伺服器會確認它們都使用了正確公鑰和伺服器證書。如果不是,那麼支持 HPKP 的瀏覽器會拒絕用戶訪問該網站。
這對於防止攻擊者通過假冒網站來欺騙用戶是一件好事,但是如果合法的網站配置錯誤的話,這會讓你的用戶幾個月都無法訪問你的網站了。
錯誤配置的 HPKP 會讓你的用戶無法訪問你的網站
做這個調查的 netcraft 公司估計是因為這個原因才導致在該標準發布一年之後,HPKP 的使用率仍然很低。
支持 HPKP 除了需要不斷的維護工作,還需要維護人員如踩鋼絲般的細心,才能避免整站的訪問被完全關閉掉。
「即使是網站管理員們設置好了有效策略,還需要時時注意:日常的維護和緊急處置都有可能造成阻擋合法訪客的事故,而且會持續阻擋很長時間。」 netcraft 的 Paul Mutton 解釋說。
這就是為什麼只有 4100 個網站的管理員們決定使用 HPKP 頭的原因。不幸的是, netcraft 說,實際上這個數字只有 3000 左右,因為大約有 1/4 的網站的 HPKP 頭設置不正確。
實現 HPKP 並不太複雜,只是需要很細心
積極的一面是,當網站管理員熟悉了如何管理白名單中的證書及其客戶端密鑰,HPKP 可以為大多數帶有敏感數據的網站提供了必要的安全措施。
一些著名的服務已經實施了 HPKP ,比如 GiHub、Mozilla 和 Pixabay 等。
儘管如此,像 Lenovo Superfish 和 Dell eDellRoot 這樣的醜聞中,他們在其產品中包含了根證書,可以讓攻擊者繞開 HPKP。此外如果攻擊者可以訪問用戶的瀏覽器,也能修改瀏覽器的可信任公鑰列表來取消 HPKP 防護,或者禁止用戶訪問合法網站而去訪問惡意偽造的網站。
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive