什麼是HPKP?

HPKP 是已棄用的 Web 安全響應標頭,首字母縮寫詞代表 HTTP 公鑰引腳。它旨在防止受到威脅或流氓證書頒發機構為網站頒發公開信任但由黑客控制的 HTTPS 證書。在這種情況下,黑客將能夠解密任何攔截到受影響網站的 HTTPS 流量。

提示:Web 響應頭是服務器響應請求時包含的元數據片段。其中的一小部分稱為安全標頭,因為它們啟用和配置各種安全功能。

HTTPS 證書基礎架構

構建 HTTPS 的證書基礎架構基於信任網絡。許多公司充當證書頒發機構 (CA),發布一個或多個根證書。一組根證書包含在信任庫中的所有設備中。當網站向 CA 請求其自己的 HTTPS 證書時,該證書由根證書籤名。當您的計算機看到 HTTPS 證書時,它會檢查簽名。如果證書由它信任的根證書籤名,則您的計算機也信任 HTTPS 證書。

提示:CA 還可以擁有由根證書籤名的中間證書。這些中間證書還可用於為網站簽署 HTTPS 證書。

證書頒發機構的工作是僅在他們確認請求他們的人是網站的真正所有者時才頒發證書。這種結構的想法是,如果黑客為網站創建了自己的證書,它不會由您的計算機信任的 CA 簽名,因此您將看到警告。

HPKP 做了什麼?

整個證書體係依賴於證書頒發機構的可信度。然而,最初沒有任何保護措施可以防止 CA 被黑客入侵或流氓並選擇錯誤地頒發證書。

HPKP 旨在防止這種可能性。它允許網站在稱為固定的過程中指定網站可以信任的唯一證書列表。可以固定根證書或中間證書,基本上允許單個 CA 為網站頒發證書。還可以固定網站本身的證書,甚至阻止正確的 CA 頒發另一個有效證書。

從技術上講,固定的不是證書本身,而是證書密鑰的散列。散列是一種單向加密函數。這意味著可以驗證網站提供給瀏覽器的證書是否與固定證書匹配,但無法使用哈希來製作有效證書。

HPKP 要求至少固定兩個密鑰,其中至少一個必須是備份且不在當前證書鏈中。此備份允許您將平滑切換配置為不會阻止用戶連接的新證書。

如果網站提供給瀏覽器的 HTTPS 證書與固定證書之一不匹配,則瀏覽器需要拒絕它並防止用戶繞過證書錯誤消息。

HPKP的結構

HPKP 頭包含三個必需部分和兩個可選部分。標頭必須標題為“Public-Key-Pins”,接下來的兩個或更多證書需要有一個 base64 編碼的 SHA256 哈希,以“pin-sha256=”“”的格式固定。最後一個強制部分是“max-age”,它以秒為單位計算瀏覽器應該應用限制的時間。

提示:SHA256 是 HPKP 使用的哈希算法。Base64 是一個包含 64 個字符的字符集:0-9、az、AZ,以及特殊字符“+”和“/”。如果需要,“=”用於填充到最後兩個字符。 

可選設置是“includeSubDomains”和“report-uri”。“includeSubDomains 指示瀏覽器在“max-age”計時器的持續時間內將 HPKP 保護應用於當前網站的任何子域。“report-uri”是一項允許指定網站可以發送錯誤報告的功能,旨在幫助識別和解決問題。

標題的第二個變體名為“Public-Key-Pins-Report-Only”。一切都一樣,但是,如果發現錯誤,除了向瀏覽器和“report-uri”(如果已配置)返回錯誤消息之外,不會採取任何措施。僅報告變體旨在在部署之前啟用對標頭的全面測試,其中錯誤不會給用戶帶來問題。

HPKP 的問題

HPKP 被棄用的主要原因有兩個。標題有兩種可能導致網站使用它的嚴重問題,它們被命名為 HPKP Suicide 和 Ransom PKP。

HPKP 自殺是網站的合法所有者無法訪問所有固定密鑰的問題。這可能是由於意外刪除、黑客攻擊、病毒、數據損壞或許多其他原因造成的。由於正確實施 HPKP 的複雜性,特別是在證書輪換期間保持更新,配置錯誤相對容易。但是,使用 HPKP,如果出現錯誤,將阻止所有最近訪問您網站的訪問者在“max-age”計時器的時間內訪問您的網站。網站 smashingmagazine.com 發布了一篇文章,詳細介紹了它在此問題上的經驗,在部署修復程序之前,該問題基本上使大多數訪問者的網站脫機了四天。

贖金 PKP 是一種理論上的攻擊,黑客可以訪問 Web 服務器,然後竊取所有受信任的證書和密鑰,然后索要贖金。在正常設置中,您只需生成新的密鑰和證書,並在不到一個小時的時間內備份和運行網站。但是,啟用 HPKP 後,這些密鑰是固定的,如果您無法向用戶提供固定證書,他們將無法在“max-age”計時器期間訪問該網站。根據配置以及是否存在備份,可能無法解決此問題。

由於這兩個問題,新用戶將能夠正常訪問網站,因為他們永遠不會看到舊的 HPKP 標頭指示他們的瀏覽器只信任現在丟失的證書。但是,所有最近的訪問者,例如常客和讀者,都必須等待“最大年齡”計時器的整個持續時間。

鑑於這些問題的嚴重性以及配置和維護的複雜性,HPKP 標頭的使用率非常低。最終,主要瀏覽器同意完全放棄對它的支持,並且在幾年內,HPKP 標頭被普遍棄用。



Leave a Comment

如何強制 Google Chrome 始終顯示完整網址

如何強制 Google Chrome 始終顯示完整網址

預設情況下,Chrome 不會顯示完整的 URL。您可能不太關心這個細節,但如果由於某種原因您需要顯示完整的 URL,請參閱有關如何使 Google Chrome 在網址列中顯示完整 URL 的詳細說明。

如何恢復舊版 Reddit

如何恢復舊版 Reddit

Reddit 於 2024 年 1 月再次更改了設計。桌面瀏覽器用戶可以看到重新設計,並在提供連結的同時縮小了主提要範圍

如何使用 Google Lens 複製教科書中的內容

如何使用 Google Lens 複製教科書中的內容

將書中您最喜歡的引言輸入 Facebook 非常耗時,而且充滿錯誤。了解如何使用 Google Lens 將圖書中的文字複製到您的裝置。

修復 Chrome 中找不到伺服器 DNS 位址的問題

修復 Chrome 中找不到伺服器 DNS 位址的問題

有時,當您使用 Chrome 時,您無法造訪某些網站並收到錯誤「在 Chrome 中找不到修復伺服器 DNS 位址」。以下是解決該問題的方法。

如何在 Google Home 上建立提醒的快速指南

如何在 Google Home 上建立提醒的快速指南

提醒功能一直是Google Home的一大亮點。它們確實讓我們的生活更輕鬆。讓我們快速瀏覽一下如何在 Google Home 上建立提醒,這樣您就不會錯過處理重要的事務。

Snapchat“僅限我的眼睛”:這意味著什麼以及如何設置

Snapchat“僅限我的眼睛”:這意味著什麼以及如何設置

我們都有想要保密的 Snap,無論是個人照片,還是您不希望其他人使用您的手機看到的內容。您已經可以在 Snapchat 上創建私人故事,現在,對於那些額外的私人 Snap,您可以使用 My Eyes Only Snapchat 功能來保護您的 Snapchat 隱私。

如何將 PS5 遊戲安裝或移動到外部硬盤

如何將 PS5 遊戲安裝或移動到外部硬盤

您的 PlayStation 5s 825GB 內部存儲驅動器看​​起來很多,但現代視頻遊戲可能很大。許多遊戲需要 50GB 以上,有些甚至超過 100GB。

如何在 Gmail 中使用郵件合併

如何在 Gmail 中使用郵件合併

當您想要向客戶、客戶、員工、俱樂部成員或類似群組發送同一封電子郵件時,您可以輸入一封電子郵件並使用 Gmail 郵件合併工具向所有人發送消息。Gmail 中的郵件合併曾經被稱為“多重發送”功能,可讓您插入 Google 通訊錄或 Google 表格中的郵寄列表。

Netflix:更改密碼

Netflix:更改密碼

如何使用您喜歡的瀏覽器或 Android 應用程式更改 Netflix 串流影片服務的密碼。

如何清除三星手機上的緩存

如何清除三星手機上的緩存

有時,應用程序可能加載緩慢、崩潰或占用過多存儲空間。清除手機的緩存數據可以幫助解決這些問題並為其他重要文件騰出空間。