敏感數據存儲 追蹤
Brave 瀏覽器基於Chromium項目並且在Brave中使用該代碼而繼承了一些瀏覽器的行為。例如,Chromium將您的敏感數據(例如密碼、cookie/網頁會話等)以本地加密存儲。 例如,Chromium 將您的敏感數據 ( 密碼、cookie/網頁會話等) 本地加密。
工作原理
在代碼中,瀏覽器使用OSCrypt組件來完成這項任務。
在加密過程中,OSCrypt 將您的數據與操作系統的用戶綁定,以確保只有用您的操作系統密碼才能解密。
OSCrypt 在桌面上有三種不同的實現 - 每個受支持的平台有一個實現:
-
macOS:
- 它在您的鑰匙串中創建一個
Brave Safe Storage條目,並向其中添加一個base64編碼的隨機字節序列,將用於作為加密密鑰(請參見鑰匙串訪問應用中的登錄鑰匙串)。
- 它在您的鑰匙串中創建一個
-
Windows:
- 類似的加密密鑰被保存到
os_crypt.encrypted_key(在Local State文件中,位於%userprofile%/AppData/Local/BraveSoftware/Brave-Browser/User Data),該文件由Windows的數據保護API(DPAPI/CryptProtectData())加密。
- 類似的加密密鑰被保存到
-
Linux:
- 加密密鑰將被添加到密碼存儲後端,默認情況下是從您使用的桌面環境推斷的(例如GNOME的
GNOME Libsecret,KDE 5的KWallet 5等)。
- 加密密鑰將被添加到密碼存儲後端,默認情況下是從您使用的桌面環境推斷的(例如GNOME的
最常見的數據丟失原因
-
平台獨立:
- 在機器之間複製瀏覽器個人資料(例如通過USB記憶棒,時間機器備份,rsync等):由於目標機器上的瀏覽器安裝將創建與源機器上使用的不同的加密密鑰,因此不可能在新機器上解密任何原始數據——遷移個人資料數據的首選方式是通過同步。
-
平台相關:
-
macOS:
- 如果管理員重置用戶的 macOS 帳戶密碼,任何隨後解密以前加密的數據的嘗試都將失敗。
-
Windows:
- 與上面的macOS相同(例如通過
net user <username> *),但任何用戶密碼重置而未提供舊密碼時解密也會失敗。例如,通過Microsoft管理控制台中的lusrmgr.msc更改自己的密碼,也會像由管理員重置一樣行為。這是因為在DPAPI使用新密碼重新加密其主密鑰之前,通常需要舊密碼來解密密鑰。 這樣,即使用戶更改密碼,例如在 Microsoft 管理控制台中的 lusrmgr.msc ,其行為與由管理員重置的情況相同。 這背後的原因是,在 DPAPI 使用新密碼重新加密其主密鑰之前,首先需要舊密碼來解密密鑰。 在正常情況下,如果用戶將其密碼更改回舊密碼,他們將可以繼續使用,但如果Chromium更早知道第一次密碼更改(即第一次CryptUnprotectData()在os_crypt.encrypted_key上失敗),它會立即刪除舊的加密密鑰並生成新的。 在這種情況下,用舊加密密鑰加密的任何數據都是不可恢復的,不管用戶之後是否恢復其以前的 Windows 帳戶密碼。
- 與上面的macOS相同(例如通過
-
Linux:
- 在不同桌面環境(例如從 GNOME 切換到 KDE)之間切換,而沒有讓 Chromium 知道(在此範例中使用
--password-store=gnome-libsecret)。
- 在不同桌面環境(例如從 GNOME 切換到 KDE)之間切換,而沒有讓 Chromium 知道(在此範例中使用
-
macOS:
較不常見或較模糊的導致資料遺失的原因
-
macOS:
-
Brave Safe Storage金鑰鏈條項目的修改日期字段(應該與瀏覽器一樣舊)變更(而使用者的密碼並未被管理員重設),這表明要么:- Chromium 在某個時候誤覆蓋了加密金鑰,或
- Apple 的金鑰鏈 API 錯誤地報告了
Brave Safe Storage不存在(這最終會導致 Chromium 覆蓋加密金鑰),或 - 另一個應用程式(列在
Brave Safe Storage的存取控制清單中)更改了這個項目。
- 使用者的 Apple 帳戶在其機器上處於錯誤狀態。
-
-
Windows:
-
CryptUnprotectData()返回FALSE,失敗並出現意外/無文件記錄的GetLastError(),從而導致 Chromium 切換到另一個Local State中的加密金鑰。
-
結論
上述清單決非完整。 由於 Brave 和 Chrome 都是基於 Chromium 構建的,因此以上所有內容同樣適用於 Brave 和 Chrome。
一般的建議是:
- 使用 Brave 同步 — 由於 同步 的加密金鑰是由
同步驗證碼推導出來的,因此如果 OSCrypt 的加密金鑰丟失/被覆蓋/損壞/不可訪問/被報告不存在等,同步 不會受到影響,因此可以使用 同步 從另一個裝置上複製您在brave://settings/braveSync/setup(在同步設置下)中啟用的數據類型。 - 注意,Chromium 領域以外的事情可能會使 Brave/Chrome 內的東西不可用,即執行看似無害的事情會讓自己陷於困境。
除了追蹤那些影響 OSCrypt 的平台特定的錯誤外,我們還希望 Chromium 能夠考慮為用戶提供備份和還原加密金鑰的方法。