密碼工具 返回生成器

安全指南

什麼是 Web Crypto API?

了解 Web Crypto API 如何支援瀏覽器本機隨機密碼生成,以及它與一般 JavaScript 隨機性的不同之處。

摘要

Web Crypto API 是一個用於加密操作的瀏覽器標準。對於密碼生成,最重要的功能是 crypto.getRandomValues(),它讓網頁能夠取得適合選取密碼字元的密碼學強隨機值。

為什麼它對密碼很重要

密碼需要不可預測性。一般的 JavaScript 隨機性並非為機密而設計。Web Crypto 的存在是為了讓瀏覽器能透過標準 API 提供更安全的加密原語。PwdGen 使用該 API 進行有界隨機選取,並避免在密碼生成中使用 Math.random()

作業系統邊界

Web Crypto 並不表示網頁能直接控制硬體熵源。瀏覽器通常依賴作業系統和平台加密提供者。謹慎的方法論應說明 Web Crypto 提供 CSPRNG 輸出,而非每次呼叫都讀取 CPU 的物理雜訊。

PwdGen 如何使用它

PwdGen 請求 32 位元隨機整數,使用拒絕取樣避免模數偏差,將接受的值對應到字元索引,並打亂所需的字元類別。這使得實作保持小巧且可稽核。

詳細指引

本指南專注於將 Web Crypto API 理解為瀏覽器安全原語。它為使用者和開發者而寫,旨在了解瀏覽器隨機性的重要性,因此實際目標並非提出戲劇性的安全主張。目標是選擇一個能經得起日常使用的密碼習慣:登入表單、密碼管理器、行動鍵盤、帳戶復原、共用裝置,以及偶爾遇到有奇怪驗證規則的服務。只有當真實的人能持續遵循時,安全的建議才有用。

最安全的起點是隨機性加上唯一性。隨機性表示該值是從一個大空間中由密碼學適用的隨機源選出,而非來自生日、寵物名、鍵盤模式或喜愛的名言。唯一性表示同一個密碼不會在其他地方使用。一個長但重複使用的密碼可能在一次無關的資料外洩後迅速失效,而唯一的隨機密碼則將損害限制在單一帳戶。

針對這個主題,實用的預設是現代的 Chrome、Edge、Safari 和 Firefox,並提供 crypto.getRandomValues。您可以搭配瀏覽器支援頁面套用該預設,然後將最終值儲存在可信賴的密碼管理器中。PwdGen 在瀏覽器中本機使用 Web Crypto 生成值;生成的密碼不會傳送到 PwdGen 伺服器。這種本機設計減少了伺服器端的暴露,但無法防範所有威脅。惡意的瀏覽器擴充功能、受感染的裝置、釣魚頁面或不安全的剪貼簿處理仍可能在密碼生成後將其暴露。

最常見的問題是避免舊版瀏覽器、不安全的上下文、靜默使用 Math.random 的 polyfill,以及混淆編碼與加密。這些問題之所以重要,是因為攻擊者很少需要暴力破解所有可能的密碼,因為人類習慣給了他們捷徑。憑證填充、釣魚、外洩密碼清單和帳戶復原濫用通常比純數學搜尋更實際。這就是為什麼最佳建議結合了密碼品質與帳戶層級控制,例如 MFA、通行金鑰、復原碼儲存,以及定期檢查復原電子郵件或電話設定。

在套用建議時,請使用此檢查清單:

如果網站拒絕理想設定,請不要手動將密碼強制改為較弱的模式。一次調整一個變數。如果符號被拒絕,請啟用大寫、小寫和數字,並增加長度。如果最大長度很短,請使用可接受的最大長度,並確保該值是唯一的。如果密碼必須朗讀、列印或在電視或路由器螢幕上輸入,請考慮排除容易混淆的字元,並增加長度以補償較小的字母表。

最後,請記住密碼建議的邊界。強密碼只是一層防禦,並非保證。它無法讓釣魚頁面安全、修復惡意軟體,或補償儲存憑證不當的服務。有用的習慣雖然無聊但持久:生成唯一值、安全儲存、保護復原路徑,並在懷疑暴露時迅速更換。

安全的下一步

閱讀本指南後,先做一個小帳戶審計,而不是試圖一次修復所有問題。挑選一個被接管後會造成最大麻煩的帳戶,確認其密碼是唯一的,並檢查復原電子郵件、復原電話、MFA 方法和備份碼儲存。如果該鏈的任何部分薄弱,請先改善該部分,再處理風險較低的帳戶。這個順序讓工作可管理,並保護攻擊者最可能用作跳板的帳戶。對於什麼是 Web Crypto API?這個問題,最好的結果是形成一個可重複的習慣:本機生成、小心儲存、避免重複使用。

常見問題

PwdGen 使用 Web Crypto 的哪個部分?

PwdGen 使用 crypto.getRandomValues() 從瀏覽器請求密碼學強隨機值。

Web Crypto 是否表示每個位元組都直接來自硬體?

不是。瀏覽器通常使用由高品質熵種子植入的作業系統加密提供者;瀏覽器和作業系統選擇實作方式。

Web Crypto 在所有瀏覽器中都可用嗎?

它在現代瀏覽器中可用。如果缺少此功能,PwdGen 會停用生成功能,而不是回退到不安全的隨機性。

來源