重複使用密碼是非常有問題的。令人遺憾的是,人們對其帳戶和數據所涉及的風險並不知情。攻擊者使用來自先前數據洩露事件中的電子郵件地址和密碼,並嘗試訪問其他網站。生成隨機密碼的密碼管理器是針對這些攻擊的完美對策,為每個網站生成隨機密碼。但是那些舊密碼怎麼辦呢?我們剛剛發布了一個新功能,允許用戶藉助 haveibeenpwned.com 的幫助檢查他們的密碼,對比一個龐大的數據庫。有了這個新工具,我們可以檢查密碼,與近 50 億個賬戶的數據集進行比對。
Pwned Passwords 服務於 2017 年 8 月推出,此前 NIST 發布了具體建議,推薦將用戶提供的密碼與現有的數據洩露事件進行比對。這份建議的理由及應用程序如何利用該數據的建議在一篇名為《Introducing 306 Million Freely Downloadable Pwned Passwords》的博客文章中作了詳細描述。在 2018 年 2 月,該服務第二版發布,包含超過 5 億個密碼,並且每個密碼都記錄了其被暴露的次數。
一個小視頻,讓人更好地感受到它的運作方式。API 顯示了分析的進度。由於這是一項免費服務,我們尊重其節流機制,不想造成任何損害,因此請求被限制為每 1.5 秒一個。
第一步是從服務器下載包含您的密碼的所有祕密。在第二步中,每個祕密在您的瀏覽器中解密,之後會創建一個密碼的 sha1 哈希。Sha1 哈希長度為 160 位(二進位),即 40 個十六進位字符。這個 sha1 哈希被分成一個前綴(5 個十六進位字符)和一個後綴(35 個十六進位字符)。前綴被發送到 haveibeenpwned.com API,該 API 檢查其數據庫並返回後綴列表。客戶端將比較密碼的後綴與收到的後綴列表,並將密碼標記為洩露或未洩露。這是一種高效的方法來查詢密碼數據庫,而不必實際傳送密碼(或其弱衍生物),這被稱為k 匿名化。