我的密碼管理方案

2021.12.16

行走在現今的互聯網, 我們總是有很多很多賬戶的密碼密鑰及其驗證需要管理, 這本應是有百利而無一害提升賬戶安全性的好措施, 但也更多地給我們帶來了管理和備份上的負擔. 特別是這樣或那樣的管理備份方案在便利的同時能否繼續保障我們賬戶的安全性? 這里就簡單記錄我在各個平台上使用的管理和備份方案, 也是日常的這些方案方法讓我得以在保障賬戶安全性的同時極大地簡化和便利了我的日常生活.

關於這個話題

切忌明文上雲

現如今由於多設備同步的需要想要完全獨立和斷網地使用密碼庫幾乎是不太可能, 即便這麽做了那多設備之間密碼庫的更新和數據同步對人工處理而言簡直是災難. 既然上雲不可避免, 那麽選擇一個上雲方案就顯得尤為重要, 其中最為關鍵的一點便是不可以明文上雲. 這里的明文包括但不限於各類雲密碼管理服務商, 其服務體系之可靠性從近幾年的多家所謂大品牌出現泄露就可以看出了, 更不用說其閉源的技術實現實在是讓人難以放心.

自動生成是好文明嗎?

越來越多的設備和平台包括瀏覽器都開始支援自動生成隨機的高強度密碼供用戶使用, 這些高強度密碼大多都包括大小寫字母和數字甚至特殊符號, 也可以有效規避用戶喜歡使用縮寫, 電話, 生日和紀念日之類容易被枚舉推測的內容作為密碼, 確實有效地提高了密碼的安全系數. 但換個角度來講, 用戶也開始徹底依賴於對應的設備或平台來獲取密碼了, 一旦對應的設備或平台暫時不可訪問或不便訪問, 又或者需要在外臨時使用的這些場景, 明明是自己的密碼卻就顯得遙不可及了. 因而 隨機生成密碼實在不是一個好文明. 但隨機密碼當中的大小寫混用, 引入特殊字符, 各平台密碼互不相同, 不使用易被推測和枚舉的內容等等確實是非常值得學習和借鑒的思路.

為自己設計一套密碼

從前一個問題的回答我們可以很自然地引申出這個問題. 既然隨機生成密碼這種方式並不合適或完全可取, 那我們又應該怎麽為自己設計一套能夠記憶但又有隨機密碼優點的密碼體系呢? 其實我們從上一個問題中總結的隨機密碼其優勢中入手就可以得到答案:

  • 大小寫混用
  • 引入特殊字符
  • 各平台互不相同
  • 不易被推測和枚舉

前兩點便是很容易的, 只需要在密碼內容上稍加留意即可. 而真正重要的其實是後兩者, 特別是各平台間的獨立性, 近年來越來越多的撞庫事件也無不提醒著我們這一安全隱患的危險性. 那又怎麽各平台互不相同的同時又便於記憶呢, 答案很簡單: 使用平台縮寫作為密碼前綴. 比如我們注冊 Google 賬戶時, 密碼開頭便可以是 Google 了, 注冊 Twitter 時便可以用 Twitter 作為密碼前綴, 這樣一來就不存在平台密碼互不相同可能帶來記混極岔的問題, 同時也能在這里直接滿足大小寫混用的要求, 提升密碼安全性. 接下來就是不易推測和枚舉了, 實際上這一點也並不難, 我們現在就可以透過 隨機數生成器 隨機生成六位的隨機數用於日後所有的密碼當中, 用得多了很快便能記下了, 由於數字完全是隨機生成的, 便也就不存在被社會工程學推測的可能了, 而六位數的組合又有上百萬種, 也能很大程度上規避枚舉風險. 這樣一來我們便有了形如以下形式的密碼:

  • Google688805&
  • Twitter688805&
  • Cloudflare688805&
  • ...

看起來是不是很好記? 實際上大小寫和隨機數字, 甚至特殊符號也都包含在內了, 單從密碼內容的強度而言已經非常可靠, 加之平台間密碼各不相同, 不妨現在就將自己的全套密碼規範起來?

從作業系統到工具

Windows/Linux/macOS - KeePassXC

KeePassXC 是一個跨平台的密碼管理器, 也是非移動端密碼管理方案中的上上之選. 目前 KeePassXC 的實現完全開源, 透過符合行業標準的 AES256 完成數據庫的加密, 並且 完全離線工作 非常安全可靠. 不僅支持管理各類密碼, 密鑰和兩步驗證器, 也同時支持硬件密鑰. 並且可以與其 Chrome 插件 以及 Firefox 插件 搭配使用, 實現一個快捷鍵完成用戶名密碼以及兩步驗證碼的快速填充. 值得一提的是, 由於 KeePassXC 的數據庫完全加密, 因此將其放在任何一個雲服務商的目錄來設備間同步都是沒有安全隱患的. 而我便是透過 OneDrive 來在各個 Windows 設備間完成同步, 想來我使用 KeePassXC 也有多年了, 只要用了就再也回不去了.

iOS/iPadOS - Tofu

Tofu 是 iOS/iPadOS 上非常簡單好用的兩步驗證器, 完全開源並且完全離線工作, 可以直接在 App Store 獲取並安裝使用. 在這里要說明的一點是 Tofu 並不包括密碼的存儲和管理, 它只是一個兩步驗證器. 在 iOS/iPadOS 中 iCloud Keychain 在密碼存儲同步方面做的相當好, 加之其系統級的支援可以跨應用和網站調用, 體驗是非常好的. 但密碼和 2FA 都交給 iCloud Keychain 顯然是一個危險之舉, 正如前文所述將賬戶上雲交給任何一個大廠都不是明智之舉, Apple 又何德何能得以讓我們完全信賴呢? 加之 iOS15 即便為 iCloud Keychain 引入了兩步驗證器的特性, 但體驗實在是糟糕, 既不能直接調用也不能快捷方便地查看, 不如不用! 當然, 在使用 KeePassXC 的同時還有一個 Tofu 作為後備又何嘗不是好選擇呢?

Android - KeePassDX

KeePassDX 是安卓平台上的一款開源的密碼管理器, 可以在 F-droidGoogle Play 獲取並安裝. 從名字上便可以知道它和 KeePassXC 是近親, 它們也確實是, 並且完全兼容. 正如前文所講 KeePassXC 的數據庫 .kdbx 是完全加密的, 因此透過各大雲服務商的雲服務進行設備間同步都不會有安全隱患, 在 KeePassDX 這里也是成立的. 它也具有和 KeePassXC 同樣的特性, 安全可靠並且完全離線工作, 是安卓平台密碼管理的上上之選.

補充和參考

在這里還要簡單地提一下, 或許第一次接觸到時會分不清楚 KeePass/KeePassX/KeePassXC 這些遠親和近鄰. 實際上 KeePassXC 在前兩者的基礎上發展而來, 最初的 KeePass 是一個非常成熟可靠的密碼管理工具, 它也沒有出現過任何可用性和安全性方面的問題, 但由於其代碼采用的語言和設計模式導致其跨平台性較差, 而 KeePassX 又許久沒有更新和活躍的維護, 因而 KeePassXC 就出現了. 關於更多信息也可以直接查閱官方文檔的詳細說明.