專文 19 / 數位

密碼管理:自架與分層安全

使用 pass、GnuPG、YubiKey、Git 與離線 LUKS 保管庫,依憑證敏感程度提供保護的自主管理密碼架構。

本譯文版本尚待母語編輯審閱。

木桌上的筆記型電腦、硬體安全權杖、兩個未連接的 USB 儲存裝置與關閉的保護盒。
本機檔案、硬體權杖與斷開連線的儲存裝置。原創插畫場景。

密碼管理需要在安全性、可存取性、可用性與操作複雜度之間取捨。

我使用以標準 Linux 工具組成的自主管理系統:pass、GnuPG、YubiKey、Git 與 LUKS。此處的自架表示密碼檔案及解密鑰匙由我控制,存取不需要密碼管理服務。

並非所有秘密都需要相同保護。憑證越敏感,存取程序就越需要明確授權。

三個存取層級

我將憑證分為三層,各自採用不同的便利性與安全性平衡。

層級 保護 儲存 常見用途
1 — 便利 裝置本機 GPG 鑰匙 本機密碼儲存庫 低影響憑證
2 — 個人 YubiKey 上的 GPG 鑰匙 跨裝置複寫的密碼儲存庫 日常敏感帳號
3 — 離線保管庫 LUKS + YubiKey 上的 GPG 鑰匙 加密卸除式 USB 儲存裝置 銀行、政府與關鍵憑證

差異除了儲存位置,也包括解密密碼的必要條件。

使用 pass 加密與控制存取

pass 將每項秘密存為獨立的 GnuPG 加密檔案,通常位於 ~/.password-store。目錄可設定一個或多個 GPG 收件者,不同目錄可使用不同收件者集合。pass 手冊。

低影響秘密可使用裝置本機鑰匙加密。較敏感憑證可使用私密解密子鑰保存在 YubiKey 的鑰匙。收件者政策由 GnuPG 執行。

增加收件者會增加解密同一秘密的另一條路徑,不是要求所有收件者共同參與。若日常存取必須使用硬體權杖,敏感目錄就只能加密給指定硬體鑰匙身分。本機收件者會提供繞過權杖的替代路徑。

使用 YubiKey 的硬體存取

對敏感憑證,我使用私密解密資料保存在 YubiKey 的 GPG 鑰匙。裝置執行私鑰操作,而不將私密資料匯出至主機檔案系統。

這讓加密密碼檔案與解密所需鑰匙分開。複寫檔案不需要將私鑰複製到每台工作站。

配合相容軟體與適當權杖,可在 Linux 與 Android 透過 NFC 或 USB 使用此方法。相容性取決於用戶端、權杖及鑰匙演算法,應測試預定組合。OpenKeychain 硬體權杖文件。

將鑰匙移至權杖前,先保存並測試密碼學復原。把秘密留在機器之外說明鑰匙分離,權杖不是秘密說明權杖復原。

關鍵憑證的離線保管庫

對關鍵憑證,我在 LUKS 加密 USB 裝置保存獨立的 pass 儲存庫。裝置預設不連接。

存取順序如下:

  1. 將 USB 裝置連接到可信任電腦。
  2. 用通行片語解鎖 LUKS 卷宗。
  3. 掛載解密後的檔案系統。
  4. 將保管庫 bind mount 到預期的密碼儲存庫位置。
  5. 透過 YubiKey 執行 GnuPG 解密,正常使用 pass。
  6. 卸載 bind mount 與檔案系統、關閉 LUKS 對映,再拔除裝置。

我用指令碼自動掛載與卸載。解鎖儲存裝置與授權使用鑰匙仍是明確步驟。

LUKS 在鎖定時保護儲存裝置,GnuPG 保護其中各項秘密。即使檔案系統已解鎖,秘密仍維持加密,直到明確解密。

密碼在遭入侵主機解密後,兩層都無法保護它。因此我只允許指定可信任裝置存取保管庫。硬體權杖保護私鑰,不會讓提出請求的電腦變得可信任。

複寫、同步與復原

日常儲存庫使用 Git 提供版本歷史與同步。加密檔案可跨裝置複寫,或保存在私有 Git 平台。只要已提交歷史仍存在,就可能取回誤改或誤刪內容。

離線保管庫使用多個加密 USB 裝置,以專用指令碼傳播更新。可依序更新,不必同時連接所有裝置。

這需要紀律。同步完成前,離線副本可能包含不同版本。傳播前先確認哪份副本包含預期變更。

Git 歷史不是備份政策,也不是存取稽核。它記錄加密檔案的提交變更,不記錄誰讀取或解密密碼。即使內容已加密,檔案與目錄名稱仍可能暴露帳號中繼資料。

儲存復原與密碼學復原是不同需求。多份保管庫副本保護儲存裝置損失,不能取回遺失私鑰或忘記的 LUKS 通行片語。復原程序必須涵蓋遺失權杖、授權私鑰、卷宗解鎖憑證與獨立備份存取。

在日常權杖不可用時測試。確認能解鎖備份卷宗,並依文件記錄的方法解密不含敏感資料的測試項目。

操作取捨

此設定需要管理收件者、硬體權杖、加密卷宗、同步與復原。它提供我重視的特性:

  • **資料控制:**密碼檔案由我掌控。
  • **可攜性:**使用成熟工具與有文件的格式。
  • **選擇性保護:**存取條件依憑證敏感程度設定。
  • **可復原性:**獨立副本與經測試的鑰匙復原減少對單一裝置的依賴。
  • **離線隔離:**不需要關鍵憑證時,實體斷開儲存裝置。
  • **服務獨立:**本機解密不需要 Git 平台或其他密碼管理供應商可用。

目標是比例適當的保護。一般憑證維持容易存取,敏感憑證需要權杖,關鍵憑證另外需要連接並解鎖離線保管庫。

持續維護收件者政策、有計畫地同步,並在鑰匙、裝置或卷宗憑證變更後重新測試復原。

下一篇專文 →回到開頭 ↑