你可以在一秒鐘內查到自己的密碼有沒有出現在已知的泄露庫裏,而密碼本身不會離開你的設備。聽起來矛盾,其實原理很簡單:你的瀏覽器先把密碼算成一個哈希 (一段從密碼算出來的短指紋,反推不回密碼),只把這個指紋的前五個字符發出去,和泄露庫的比對在你自己的瀏覽器裏完成。下面按順序講:為什麼要查,查詢是怎麼做到不泄露的,結果是什麼意思,查到了該怎麼辦。
| 查詢怎麼走 | |
|---|---|
| 你的密碼 | 變成 SHA-1 哈希 |
| 離開你設備的 | 只有哈希的前 5 個字符 |
| 伺服器返回的 | 所有以這 5 個字符開頭的哈希尾巴,幾百條 |
| 比對 | 在你的瀏覽器裏 |
| 密碼本身 | 哪兒也不去 |
為什麼要查
網上公開流傳着幾十億條密碼,來自過去多年被拖庫的網站。不是你常用的那幾個,而是任何網站:十年前註冊過的論壇、某個網店、某個外賣平台。這種庫一泄露,裏面的密碼就直接進了暴力破解的字典。你的密碼如果在字典裏,猜出來只要幾秒:程式順着列表往下試就行。
危險不在那個老論壇被黑了,而在同一個密碼你還在另外五個地方用着,包括電郵。電郵是其他一切的鑰匙:銀行、社交帳戶、政務平台都靠它找回密碼。所以問題不是「我被黑了嗎」,而是「我的密碼在不在第一批被試的名單裏」。
查詢是怎麼做到不泄露的
把密碼發給一個陌生網站去問它有沒有泄露,這本身就很荒唐。所以查詢是另一種做法。
- 瀏覽器先算出密碼的 SHA-1 哈希。這是單向運算,從哈希反推不回密碼。
- 只有哈希的前五個字符離開你的設備。幾百萬個不同的密碼哈希都以同樣五個字符開頭,所以從請求裏看不出你查的是哪一個。
- 泄露庫的伺服器返回所有以這五個字符開頭的哈希尾巴,通常幾百條。
- 瀏覽器在這幾百條裏找你的哈希尾巴。找到了,密碼在庫裏;沒找到,公開的泄露庫裏沒有它。
這個方法叫 k-匿名 (你藏在幾百個相似的請求裏),是查詢 Have I Been Pwned 數據庫的標準方式。那個庫多年來收集了各次已知泄露裏的密碼,只存哈希,不和電郵、姓名掛鈎。
打個比方:你去問「姓王的人裏有沒有欠債的」,對方把所有姓王的欠債名單給你,你自己在名單裏找。對方只知道你問了姓王的,不知道你是誰。
你不用信我們的話,可以自己看。開啟你的密碼泄露了嗎,再開啟瀏覽器的開發者工具,切到「網絡」標籤,輸入一個密碼。發出去的只有一個請求,去 api.pwnedpasswords.com,地址裏帶着五個字符。密碼不在裏面。
結果是什麼意思
「未找到」。 這個密碼不在公開的泄露庫裏。這不是它沒在任何地方被偷的保證:庫只知道被公開報道過的泄露,剛發生、還沒公開的那次不在裏面。但「未找到」加上一個又長又獨一無二的密碼,已經是不錯的位置。
「出現過 12000 次」。 這個數字是所有泄露庫裏帶這個密碼的記錄數。不是説你被黑了 12000 次,而是另外一萬兩千個人也想出了同一個密碼,它早就躺在破解字典的最前面。這樣的密碼不管當初從哪兒漏的,在你用它的任何網站上都能幾秒鐘被猜出來。
| 結果 | 意思 |
|---|---|
| 未找到 | 已知泄露裏沒有 |
| 出現過 1 到 10 次 | 已經進字典了,換掉 |
| 出現過幾千次 | 幾秒就能猜出 |
| 這個數字 | 不是「你被黑了幾次」,是「多少人想出了它」 |
查到了:改什麼,按什麼順序
順序比速度重要。不要慌亂地把所有密碼全改一遍,先把最值錢的關上。
- 電郵。 其他一切都靠它找回。新密碼要長,和舊的不像。
- 銀行和支付應用。 錢在哪兒,先改哪兒。
- 政務平台和所有存着身份證資訊的地方。
- 用過同一個密碼的其他網站。 真正的麻煩在這兒:你幾乎不可能記起還在哪兒用過它。這正是一個密碼用在多個網站上的危險:漏一處,全開。
- 給電郵和銀行開兩步驗證。 就算密碼再泄露一次,沒有第二步也用不了。驗證器應用比短訊驗證碼可靠,短訊可能被補辦 SIM 卡的騙子截走。
新密碼別自己想:人自己編出來的,幾乎肯定已經在字典裏。密碼生成器能生成又長又隨機的密碼,你不用記,記密碼是密碼管理器的活。
怎麼才能不用每個月都查
查泄露治的是症狀。病根是密碼重複、靠腦子編。如果每個網站都有自己單獨的隨機密碼,任何一個泄露隻影響一個帳戶,也就沒什麼可查的了。
這正是密碼管理器做的事:生成、保存、自動填寫,最重要的是,它不會把密碼填到一個地址相似的假網站上。瀏覽器自帶的、雲端的、本地的怎麼選,第一條看有沒有設備端加密:數據庫在上傳前就已加密,服務商讀不到。
説實話,我自己會這麼做:查電郵、銀行、政務平台這三個密碼。哪個查到了,當天就改。剩下的不一個一個查,花一個晚上全搬進密碼管理器,以後不再想這個問題。
| 查完之後 | |
|---|---|
| 電郵 | 新密碼 |
| 銀行 | 新密碼 |
| 這兩處 | 開兩步驗證 |
| 其餘 | 搬進密碼管理器 |
| 花的時間 | 一個晚上,以後不用再查 |
這個查詢不做什麼
它不查你的電郵地址有沒有泄露。按電郵查需要把電郵本身發出去,那就不匿名了。那種查詢在 haveibeenpwned.com 上另外做。
它看不到還沒被公開的泄露。它也不知道你在別處還用沒用同一個密碼,這隻有你自己知道。
最後一點:查密碼和 VPN 沒關係。隧道把你的地址藏起來不讓網絡看見,但密碼不是從網絡裏漏的,而是從你曾經輸入過它的那個網站的數據庫裏漏的。不同的威脅,不同的工具。
密碼查到了、又不知道從哪兒下手,把情況交給 AI。
幫我理清密碼泄露查詢之後該做什麼。
結果:(未找到 / 出現過 N 次)。
這個密碼用在哪兒:(電郵 / 銀行 / 社交 /
不記得還有哪兒)。
兩步驗證:(開了 / 沒開 / 不清楚)。
密碼管理器:(有 / 沒有)。
告訴我先改哪個、按什麼順序,以及怎麼找出
可能用了同一個密碼的網站。不要説「把所有
密碼都改了」,給我一個順序。
一句話總結
- 泄露查詢是安全的:出去的只有哈希的五個字符,密碼留在你這兒。
- 「出現過 N 次」意味着它已經在破解字典裏,在任何地方都能幾秒被猜出。
- 查到了:電郵、銀行、政務平台、兩步驗證,按這個順序。
- 想以後不再查,每個網站用密碼管理器生成的獨立隨機密碼。