2019年10月10日 星期四

開源密碼管理軟體:KeePass



現代人各種資訊設備充斥於日常生活,不論是工作上或在私人領域,使用各種系統便有各式各樣的密碼,電子郵件、網路硬碟、線上購物...等等,到處都需要密碼,這怎麼可能全部記住?更何況是有些系統偶爾才用這麼一次,恐怕下次要用時就忘了密碼,甚至連帳號叫什麼也不記得了。

每個人對於密碼記憶都有自己的一套方法,寫在記事本、便條紙...等等,更進一步的,用文字檔、用試算表軟體、用記事軟體的都有,但明文保存是不安全的。

除此之外,現在也有線上的密碼保管服務,例如 LastPass、1Password 之類平台,不過對於密碼保護的自主性,我個人還是比較想要使用開源軟體且檔案自管的方案。




方案介紹

在開源軟體的方案之中,有一套歷史悠久的 KeePass 軟體,它以 .NET/C# 開發,功能如下:
  • 支援以 AES 或 Twofish 演算法加密保護存放密碼庫
  • 使用 AES-KDF、Argon2 等方式防護字典檔攻擊
  • 程式記憶體資訊保護,防止密碼竊聽
  • 提供主要密碼第一道方式保護
  • 提供金鑰檔案第二道保護方式
  • 提供外掛程式擴充功能
  • 提供自動登入、自動填入帳密功能
  • 提供自動產生具複雜程度的密碼
  • 免安裝、可攜式設計
  • 支援繁體中文介面
  • 有多種平台的移植版本
  • 經過 OSI 組織 (Open Source Initiative,開放原始碼促進會) 認證的開源軟體


在不同作業系統,我分別使用以下的衍生版本:
  • Windows/macOS/Linux:KeePassXC
  • Android:KeePass2Android
  • iOS:Strongbox Password Safe


在上面的對照表中,我沒有採用最原始團隊的 KeePass 而是採用 KeePassXC,原因在於過去需要為了 macOS 與 Linux 另外使用 KeePassX,使用上稍有不同較為麻煩。

因此,採用分支的 KeePassXC,它直接提供三大桌上型電腦作業系統版本,只要使用一套即可,解決我經常跨平台使用的困擾。







安裝方式

這些軟體安裝都相當容易,在 Windows 上我直接使用可攜式版本,在 Linux 與 macOS 上使用安裝版本,只要一直下一步即可順利安裝完成。


KeePassXC 下載頁面


在 Android 與 iOS 上,分別到 Google Play 與 App Store 軟體商城中搜尋 App 名稱,安裝完成後即可順使用。



KeePass2Android 下載頁面




Strongbox Password Safe 下載頁面









主要功能

桌上型電腦版本以 macOS 版作為展示,其實三大作業系統操作邏輯是一致的。初次開啟時,會有精靈模式引導建立新資料庫,依據說明填入密碼、路徑等資訊即可建立完成。

當有資料在資料庫當中時,點選該筆資料即可查看資訊,密碼欄位預設會把密碼隱藏起來避免外洩,點選眼睛圖示即可查看。


KeePassXC 介面


如果帳號資訊需要儲存更多細節,可以利用帳號裡的進階功能自行加入所需要的欄位,例如信用卡可以自訂信用卡號、有效日、CVC 等資訊。

自訂欄位功能



為了想好足夠強度的密碼一定讓人傷透腦筋,如果沒有想法的話,KeePassXC 裡提供了功能強大的密碼產生器,幾個按鈕選下、拉桿調一下,一組超強保證讓你自己都記不起來的世紀級密碼就誕生了。


高強度密碼產生器








進階用法

除了基本的帳號密碼保存、密碼產生器以及自動填入等功能之外,我們可以有更進一步的玩法,讓 KeePass 系列的密碼管理器有更好的應用能力。

資料同步


由於現在人可能有多個裝置使用,例如我筆電用 macOS、桌機用 Windows、手機用 Android,若沒有同步密碼資料庫的方案,可能會導致密碼不一致或是缺失,這樣帶來的困擾更大。

在 KeePass 系列方案裡,有不少外掛或分支版本可提供線上同步如 oneDrive、Dropbox 等方案,但這種依靠外掛的作法還要看各平台的方案能否支援,不是那麼方便使用。

為了解決這個問題,我另外採用檔案同步服務來解決,以下是我使用過相當不錯的幾種方案,您可以挑選一種來用,都可以跨裝置同步:
  • Nextcloud 
  • Syncthing
  • Synology Cloud Station
  • QNAP Qsync Central
  • Dropbox


因此,只要把 KeePass 的密碼資料庫放進同步資料夾內,即可以在這些裝置上擁有密碼資料庫。但要特別注意 `使用完畢一定要把資料庫關閉`,以免造成有新增的設定卻被覆蓋的損失。

其中 Syncthing 套件是比較有趣的,它不像其它的套件都需要有一台伺服器 (不論是地端或雲端),而是每個裝置之間會彼此同步的去中心化架構。

若對於資料要經過非自己能掌握的伺服器有疑慮,或者不想為了裝置間的同步還要多準備一部伺服器,那麼 Syncthing 是值得一試的方案。



Syncthing 跨裝置檔案同步


上圖中的管理介面即是一部桌上型電腦與手機進行同步的管理畫面。


進階保護


儘管我們已經做到了採用的開源軟體且加密過的密碼資料庫掌握在自己手上的自主權,但是仍然擔心這個加密過的密碼資料庫外洩的話,還有沒有可以再加強的措施?

有個方法,我們可以搭配前一篇所提到的 VeraCrypt 方案,建立一個虛擬加密磁碟檔,再把這個密碼資料庫放進去。雖然變的麻煩,但就多了一道強力的保護程序,大幅提升密碼資料庫的私密性。不過有了兩道鎖,可要好好保存相關的金鑰或密碼了。


TOTP 


在兩篇之前的文章中,我們介紹了 FreeOTP Authenticator 搭配做 TOTP 雙因素驗證,用來提升各個系統登入使用的安全性,但是 FreeOTP 沒有提供匯出或備份的功能,若有更換手機或重新安裝,所有設定過的 TOTP 都要重來,較為不便。

若有較多應用 TOTP 的系統,想要備份並應用在其它裝置上操作,KeePass 系列的部份工具也有支援,分別是本文所特別選出的這三個套件都有。

更棒的是,搭配前面提到的跨裝置同步後,等與在所有裝置上都擁有一份這些 TOTP 的資料可以取用,再也不會發生臨時手機故障而讓自己是系統管理員卻進不去系統的窘境。



KeePassXC TOTP 功能


上圖是 KeePassXC 的 TOTP 功能,在項目上按下右鍵選單,即可看到這四個選項,初次建立時請點選 [安裝] TOTP,再把拿到的 TOTP Seed 輸入進去即可。

下次要登入要求 TOTP 的系統時,來到這裡點選 [顯示 TOTP] 即可看見。



KeePassXC 顯示 TOTP


桌機版本的 KeePassXC 有設定過 TOTP Seed 後,搭配上面的同步機制,讓手機上的 KeePass2AndroidStrongbox Password Safe 也可以方便取用 TOTP,不需要再設定一次了。

若要把這組 TOTP Seed 讓其它非自己的裝置取用,可以在 KeePassXC 的功能上點選 [Show TOTP QR Code],再上其它手機來拍這組 QR Code 即可。







結論

經過這篇的介紹,我們採用 KeePass 系列的軟體為我們保護密碼並分門別類保存與查詢,還可以幫我們產生足夠強度的密碼,相當方便。而且 TOTP 這種可以提升安全性的功能它也一併提供,對於許多密碼要管理的 IT 人來說是個相當重要的保險庫。再加上其它開源套件加以搭配運用,讓我們可以做到跨裝置同步以提升使用的便利性,甚至是再把他放進一層加密過的虛擬磁碟來增強安全性。

利用開源軟體超強彈性,加以互相搭配後可以產生許多不一樣的應用場景,協助我們面對重重困境,渡過難關。

最後一提,如果您還是想要建立一個集中管理且提供多人使用的密碼管理系統,我也有一個開源方案可以推薦給您:Nextcloud + Passwords App。



Nextcloud + Passwords App






參考資料