KeePass 是個自由的、開源的、多平台的、較適合個人用的密碼管理器。

密碼管理器

「為什麼要用密碼管理器?」

「和瀏覽器幫我存密碼的功能有什麼不一樣?」

早期最簡單也最不安全,卻也最多人管理密碼的方式,就是隨意貼,現在可能是變成瀏覽器幫我們存的密碼,不論是隨意貼還是瀏覽器存密碼,對需要認真保守密碼的人來說,都不是個好的做法。

隨意貼就不說了,除了隨意貼,另外一種稍微好一點的實體紀錄法是女孩們的小本本,小本本確實有做到保密的功能,但是無法備份,掉了就是永久掉了,除此之外還有抄寫時手誤的可能性,以及使用時無法複製貼上導致的效率低落,怎麼看都不會是個嚴肅的做法。

進階一點的會開檔案存,不論何種格式、有無加密,但都會有紀錄一多就難以管理的問題,必須自己手動做格式規劃與整理,其實這也可以算是一種陽春的、獨立的密碼管理器,對帳密不多的人來說確是個簡單有效的好選擇。

瀏覽器存密碼這塊,自從主流瀏覽器都導入這項功能後,的確解決了大多數人的需求,並且還附帶了可同步的特性,電腦存了手機也可以用,相當便利。這些主流瀏覽器(Safari、Firefox、Chrome、Edge)背後的大公司們看起來也都值得信賴(Google 可能有一點…不過不會賤到拿用戶的密碼作惡)。

不過在某些場景下,瀏覽器存密碼也是無法滿足的,最典型的就是台灣的網銀,台灣的網銀登入時往往需要四個欄位:身份證字號、帳號、密碼、驗證碼,而帳號與密碼兩欄在屬性上又都是密碼型態,也就是網銀的帳號、密碼這兩者實質上都是密碼,這種形式的登入不論是哪個瀏覽器都無法處理的很好,很容易造成瀏覽器誤判,最常見的情況就是記錯欄位或是記不住帳號/密碼兩者其一。最後,瀏覽器的記密碼功能還是過於單純,一律是帳號+密碼的組合,像網銀這種有兩個密碼欄位的登入頁,瀏覽器即便沒記錯,也必定會少記另外一個。

還有另一種狀況,在瀏覽器以外的場景,即瀏覽器使不上力的地方,也是非常需要一個獨立的密碼管理器的,包括一些應用軟體的帳密、遊戲的帳密、遠端登入的帳密、金鑰型的認證等等,隨著這些數位應用越來越多的佔據我們的生活,一個人所擁有的帳密只會越來越多,另外在避免共用帳密的安全顧慮之下,一個獨立的密碼管理器確實是有必要的。

KeePass 安全嗎?

接下來要問的就是「安全嗎?」

我們可以拆三個方面檢視 KeePass 的安全性,加密算法的安全性、開源的安全性、KeePass app 的安全性。

加密算法的安全性

我們在 KeePass app 內建立的每筆密碼都會彙整存在一個 kdbx 格式的檔案內,就好像 Excel 的每筆紀錄都會存在一個 xlsx 檔案內一樣。這個 kdbx 當然是加密的,根據 KeePass 的描述,它們會用 AES-256 或 ChaCha20 或 Twofish 三種加密算法對 kdbx 檔案進行加密,這三種算法也是目前業界公認最安全的算法。

開源的安全性

開源並不等於絕對的安全,但是自 KeePass 從 2004 年至今十六年的開源發展,已經經過相當長時間的考驗,另外 KeePass 開發團隊的每一行程式都詳實紀錄在版控系統內,可供查驗。

另外可以看看 CVE 的紀錄,只有四個漏洞,而且早已修復。

第三種不適合用 story 描述的工項,即過於工程面或規格面的部份,舉凡 API 交換的規格、欄位的命名規範、錯誤處理的機制、log 檔的紀錄等等,皆不屬於 story 的範疇,應該用 task 來建立這些工項,有必要的話再用 Jira 的 issue link 的功能讓 story 與 task 相關連起來。

KeePass app 的安全性

前面提過,密碼會被存到 kdbx 的檔案內,並且原生的 KeePass 並不具備雲端同步的機制(只有 FTP 的同步),即便 KeePass 有任何的漏洞,只要別人無法拿到 kdbx 檔案,就無法利用漏洞打開加密的 kdbx。

KeePass 也有拿到一些國家證書證明自己的安全性。

安裝與使用 KeePass

到 KeePass 網站下載安裝後,我們來快轉到使用的部份。

起手式當然是先開新檔案,幫新的 kdbx 找一個安全的目錄並取一個好記的檔名存起來,然後設定 kdbx 檔案的密碼:

KeePass

除了密碼外,在下面的「Key file / provider」還可以指定一個鑰匙檔作為解密之用,密碼和鑰匙檔可以擇一使用或兩者皆用,兩者皆用的話這個 kdbx 檔案被開啟時就必須輸入密碼和鑰匙檔才可完整解密。

設定完 kdbx 的密碼後,下一頁的一些屬性設定可以直接 OK 跳過,然後會到主視窗,點擊某筆密碼或新增一筆密碼會跳出如下的對話框:

KeePass

介面實在是滿簡單的,標題、用戶名稱、密碼、密碼強度提示、網址、備註等幾個欄位,有需要的填寫後即可存檔。在對話框的 Advanced 分頁可以在這筆紀錄內夾附檔,譬如說一些金鑰檔就可以夾帶在這裡。

逐筆把密碼記錄起來後記得要把這個 kdbx 檔案存檔,個人建議是異動一筆就存檔一次。另外未避免記錄時手誤,建議在每筆紀錄確認前先到那筆的網頁去驗證一次。

以上是使用介紹,因為真的滿簡單的,就不多做說明了。

KeePass 不適用的情境

在本文的第一句話說到 KeePass 較適合個人使用,因為相較於組織型的密碼管理系統,KeePass 少了一些功能,可能對於組織的密碼管理幫不上忙,簡單列舉一些:

  • 不能做分層分派,只要能打開 kdbx 的人員皆可看到全部的密碼,無法做分層分派,而往往組織用的密碼管理都是需要分層分派的。
  • 不支援開啟人身份驗證,不論是 KeePass 現有的密碼或鑰匙檔都是屬於對密碼檔的解密驗證,欠缺了對開啟人的身份驗證,這部份往往需要結合作業系統的身份驗證機制,而 KeePass 是沒有這部份的功能的。
  • 不支援更複雜的解密驗證,目前只有密碼與鑰匙檔兩種解密驗證,不支援晶片卡或硬體鑰匙做為解密驗證。
  • 以本機檔案儲存 kdbx 密碼檔,對組織型密碼系統來說,可能需要非本機端的存取架構,也就是每次人員解鎖都是對中央伺服器做驗證,驗證後也都是從中央伺服器下載密碼到記憶體內,而不會在本機儲存實體檔案。

因為以上這些特性的缺乏所以還是比較建議拿 KeePass 來做個人用途較妥。

KeePass 的跨平台兄弟

雖然 KeePass 本身是 Windows app,不過受益於開源的特性,在各個主流平台上都可以見到 KeePass 的兄弟 app 的身影,並且隨著 .net 也逐漸走向開源與跨平台的路線,KeePass 本身也具備跨平台使用的能力,在 KeePass 的下載頁可以看到 KeePass 與其它各個平台的兄弟 app,之所以稱為兄弟 app 是因為那些其它平台的 app 都不是 KeePass 的移植,而是參考 KeePass 與 kdbx 的規格而獨立撰寫的 app,其中各有優勢,唯一可以不用擔心的是我們的 kdbx 都可以在我們用的電腦或手機中使用,不用擔心被一個 app 綁住或是換平台要重建資料的困擾。