HPKP 公鑰固定所攜帶的是中級(jí)證書或者根證書的哈希值,并與終端瀏覽器約定此哈希通常會(huì)在 1 年左右失效。如果 1 年后網(wǎng)站不再使用 TrustAsia 簽發(fā)的證書而換成其他,這會(huì)造成實(shí)際使用證書與固定的證書哈希不同。那么瀏覽器就會(huì)直接攔截用戶與服務(wù)器之間的連接,瀏覽器會(huì)認(rèn)為新更換的 CA 可能是想進(jìn)行惡意劫持。
安全研究員斯科特稱攻擊者可劫持用戶訪問并返回惡意 HPKP 頭,這種操作并不會(huì)造成用戶的數(shù)據(jù)發(fā)生泄露。但惡意 HPKP 頭在被瀏覽器接收后會(huì)阻止用戶正常訪問網(wǎng)站,因?yàn)闉g覽器校驗(yàn)到的 HPKP 頭與真實(shí)服務(wù)器不同。因此惡意攻擊者可以利用 HPKP 公鑰固定策略無差別的對(duì)所有 HTTPS 網(wǎng)站發(fā)起這種有點(diǎn)另類的拒絕訪問攻擊。雖然網(wǎng)站所有者始終沒有丟失對(duì)網(wǎng)站和服務(wù)器的控制權(quán),但由于固定哈希已經(jīng)被接收因此沒有辦法清除緩存。
參與撰寫和制定該標(biāo)準(zhǔn)(RFC 7469)的谷歌工程師稱公鑰固定變得非??膳?,該標(biāo)準(zhǔn)會(huì)對(duì)生態(tài)造成嚴(yán)重危害。除了惡意攻擊者可以偽造 HPKP 頭進(jìn)行拒絕訪問攻擊外,如果證書發(fā)生泄露需要進(jìn)行吊銷也會(huì)引發(fā)較大問題。因?yàn)榈蹁N舊證書后再請(qǐng)求簽發(fā)新證書只能選擇此前固定的 CA 機(jī)構(gòu),你不能再選擇新的 CA 機(jī)構(gòu)為你簽發(fā)證書。
基于此方面考慮 HPKP 標(biāo)準(zhǔn)在制定時(shí)已要求網(wǎng)站至少固定兩份哈希,因此最終更換證書時(shí)只能繼續(xù)選擇由 TrustAsia 或 Comodo 簽發(fā)的證書, 其他的證書瀏覽器則會(huì)拒絕接受。目前,已經(jīng)支持 HPKP 公鑰固定的瀏覽器有 Google Chrome 瀏覽器、Mozilla Firefox 瀏覽器以及 Opera 瀏覽器。既然作為標(biāo)準(zhǔn)參與制定的谷歌都決定放棄支持,Mozilla Firefox 和 Opera 勢(shì)必也會(huì)在后續(xù)停止支持公鑰固定。
谷歌去年 8 月的數(shù)據(jù)顯示全球啟用 HPKP 的站點(diǎn)僅只有 375 個(gè),這個(gè)數(shù)字對(duì)于整個(gè)互聯(lián)網(wǎng)來說真的是微不足道。同時(shí)由于很多網(wǎng)站使用 CDN 或者如 CloudFlare 類的 DDoS 防護(hù),此類服務(wù)本身就沒準(zhǔn)備支持 HPKP 公鑰固定。最終谷歌會(huì)在 2018 年 5 月份發(fā)布的 Chrome v67 版中正式棄用 HPKP,使用該標(biāo)準(zhǔn)的網(wǎng)站可以提前撤銷固定了。