繁體中文

開發者工具 · SHA 雜湊計算器

將秘密貼到線上哈希工具中:為什麼摘要應該是本地的

· 為什麼它很重要

sha-256 安全 隱私 瀏覽器 API

DevTools 網路面板在本機雜湊 API 金鑰時顯示零請求
原始 ToolAcre 向量圖

如果雜湊工具將您的輸入發送到其伺服器,則您正在哈希的秘密已經離開您的電腦。這篇文章解釋了風險、Web Crypto 如何使伺服器變得不必要,以及如何驗證工具是本地的。

您散列後與設定檔進行比較的 API 金鑰 - 以及它的去向

開發人員需要對 API 金鑰進行雜湊處理,以將其與配置中儲存的值進行比較,因此他們需要使用最近的線上雜湊工具。他們貼上密鑰,單擊按鈕,然後獲取摘要。哈希值匹配,因此測試通過。他們可能沒有意識到 API 金鑰已經離開了他們的機器。在伺服器上執行的任何雜湊工具都會在計算任何摘要之前接收明文輸入。伺服器可以記錄、儲存、出售或轉發給競爭對手。

這種欺騙很微妙,因為雜湊工具可以真正產生正確的輸出,並仍然將輸入傳送到伺服器。雜湊的數學運算與位置無關,因此即使架構不安全,伺服器端雜湊在密碼學上也是正確的。攻擊者無需破壞哈希計算即可獲勝;他們只需要明文輸入。由於輸出正確而假設雜湊工具是本機的開發人員是信任錯誤的屬性。

伺服器端雜湊工具接收的內容 - 根據定義,在計算任何摘要之前的完整明文輸入

根據定義,伺服器端雜湊工具需要明文輸入作為輸入。伺服器透過 HTTPS 接收資料,這會在傳輸過程中保護資料,但僅限於到達伺服器之前。然後,伺服器記錄明文,在雜湊期間儲存在記憶體中,可能寫入磁碟,並包含在伺服器保留的任何備份或監控追蹤中。執行伺服器的公司可以讀取日誌並查看其中曾經被散列的每個秘密。

另一種方法是使用 Web Crypto,它是瀏覽器本身的加密實作。在安全來源(即 HTTPS 或 localhost)上,瀏覽器公開 crypto.subtle.digest,該函數完全在瀏覽器進程內計算 SHA-1、SHA-256、SHA-384 和 SHA-512 摘要。輸入永遠不會離開裝置,並不涉及伺服器。瀏覽器實作由瀏覽器供應商審核,由瀏覽器供應商修補,並作為優化的本機程式碼而不是附帶的 JavaScript 運作。

為什麼伺服器是不必要的 - 瀏覽器自己的 Web Crypto 在本地計算每個 SHA-2 摘要

驗證雜湊工具是否是本機只需打開 DevTools 網路面板並觀察該工具透過網路發送的內容。在大多數瀏覽器中,DevTools 使用 F12 或 Cmd+Option+I 打開,「網路」標籤是觀察網路流量的地方。打開網路標籤且可見雜湊工具後,貼上明文,點擊雜湊按鈕,然後觀察會發生什麼。如果使用本機工具,網路面板不會顯示新要求。

這種驗證方法之所以有效,是因為瀏覽器實現了同源限制。該頁面可以向自己的來源發出請求,而不會觸發 CORS 問題,因此本機工具可以根據需要向同一網域上的伺服器發出請求。當 DevTools 面板中出現網路請求時,就證明該工具正在向某個地方發送資料。檢查這一點並看到沒有網路流量的開發人員可以強有力地保證輸入不會離開瀏覽器。 ToolAcre SHA 雜湊計算器會產生一個網路面板,在雜湊時保持為空。

使用網路面板進行驗證 — 貼上、雜湊並觀察零請求

嚴格的內容安全策略可以提供網路面板檢查以外的額外保證。內容安全性原則是伺服器發送的 HTTP 標頭,宣告瀏覽器應允許哪些網域載入腳本並發出請求。禁止所有外部腳本、所有外部樣式表和所有表單提交到外部來源的策略限制了受感染頁面的行為。如果政策禁止外部請求,則攻擊者無法傳送將輸入傳送到外部伺服器的惡意程式碼。

內容安全性原則標頭與 HTTP 回應一起傳送,可以在 DevTools 網路標籤的回應標頭部分進行檢查。像 Content-Security-Policy: default-src 'self'; 這樣的行script-src 'self' 宣告腳本只能來自同一來源。包含框架祖先「none」的更嚴格策略可防止頁面嵌入 iframe,如果惡意 iframe 試圖竊取焦點,它會阻止一個攻擊向量。這些詳細資訊對於了解防禦措施很有用,但網路面板檢查仍然是主要驗證。

CSP 是縱深防禦;此處讀取的儲存庫來源未建立已部署的標頭

一個有效範例:將 AWS 或 Azure 中的 API 金鑰貼到 ToolAcre SHA 雜湊計算器中,以根據儲存的指紋進行驗證。開啟 DevTools,選擇「網路」分頁,並確保它正在錄製。將 API 金鑰貼到雜湊工具中,選擇 SHA-256,然後按一下雜湊。摘要顯示在工具中,網路面板顯示沒有新請求。該工具的文件中提供了測試向量,以便在需要時交叉檢查哈希的正確性。關鍵是 API 金鑰從未離開過瀏覽器,現在可以將摘要與儲存的值進行比較,而無需暴露秘密。

此工作流程不涵蓋瀏覽器擴充功能是否已受到損害或瀏覽器本身是否已受到損害。具有廣泛權限的惡意擴充功能可以查看所有流量、攔截剪貼簿內容並觀察使用者鍵入的內容。透過零時差漏洞或惡意安裝,受損的瀏覽器可能被迫將輸入發送到任何地方。對於這些威脅,沒有網路工具可以提供保護。正確的防禦措施是信任瀏覽器安裝、保持更新並檢查已安裝的擴充功能。

工作範例:使用無害的標記並檢查請求,而不是貼上即時 API 金鑰

對於將機密貼到工具中的任何人的建議是在貼上之前驗證該工具是否是本地的。這是一個簡單的步驟,消除了一個最大的風險:伺服器操作員、他們的員工、他們的備份和他們的日誌都看到明文。使用 DevTools 網路面板,觀察零請求,然後將金鑰信任該工具。 ToolAcre SHA 雜湊計算器旨在以這種方式使用。它不儲存任何內容,也不上傳任何內容,並「網路」面板保持為空。

對於已將機密貼到伺服器端工具中的開發人員,下一步是輪換這些機密。傳送到未知伺服器的 API 金鑰應被視為已洩漏。應該撤銷它,並頒發新的。應該更改密碼。應更換 SSH 金鑰。對於基礎架構 API 金鑰等靜態機密,這是一次性操作。對於會話令牌或臨時憑證,輪換會在令牌過期時自動發生。

這不包括瀏覽器擴充功能和受感染的機器,任何網路工具都無法防禦它們

建立對線上工具的信任始於了解計算發生的位置並使用瀏覽器開發人員工具驗證這種理解。網路面板是一個明確的訊號:如果資料離開瀏覽器,它就會出現在那裡。如果沒有請求包含獨特的測試輸入,則該會話提供本機轉換路徑的證據。它不能保證擴充、受損的瀏覽器程式碼或未來的部署。將此檢查與審查原始程式碼(如果有)結合起來可以提供信心。

對於評估用於敏感資料的加密工具的組織,原則保持不變:驗證計算是否在您控制的地方進行。對於雜湊 API 金鑰或驗證檔案的個人,請先使用網路面板檢查。對於生產系統,使用 HMAC 或簽章而不是普通雜湊進行身份驗證。 ToolAcre SHA 雜湊計算器是一種用於學習和本機摘要計算的工具。它不適用於生產認證。

重點:驗證,然後信任 — ToolAcre SHA 哈希計算器在您的瀏覽器中執行,在訪問之間不上傳任何內容,也不存儲任何內容

透明度原則是 ToolAcre 方法的核心:每個工具都會記錄其功能、瀏覽器提供的內容以及開發人員必須執行的操作。 SHA 雜湊計算器記錄其使用瀏覽器的 Web Crypto 實作 SHA-256、SHA-384 和 SHA-512,而且它不會實作 HMAC 或金鑰派生。對於散列來說,該工具是精確的。對於身份驗證,開發人員必須尋找其他地方。這種清晰度可以防止單一工具試圖做太多事情時出現的混亂。

當開發人員看到網路面板是空的且原始碼是開放的時,信任關係就建立在堅實的基礎上。該工具的作用正如它所聲稱的那樣:使用瀏覽器自己的實現在本地計算哈希值。然後,開發人員可以就該工具是否適合他們的用例做出明智的決定。對於驗證 API 金鑰來說,它非常適合。對於生產認證,需要 HMAC。對於密碼存儲,需要像 Argon2id 這樣的金鑰匯出函數。了解這些邊界是建立安全系統的第一步。