前言

我原本只知道密碼管理工具大概是安全的,所以就去研究了一下它到底是怎麼運作的。

本文要介紹的密碼管理工具是 1Password 和 Bitwarden。
接著會說明它們管理密碼的機制,以及和 Google 密碼管理工具的差異。

1. 密碼管理工具

  • 1Password(官方網站)

    • 付費的密碼管理工具
    • 除了主密碼之外,還有第二把鑰匙 Secret Key,這是它的特色
    • 就像「同時需要密碼和實體金鑰的保險箱」
  • Bitwarden(官方網站)

    • 有免費方案的密碼管理工具
    • 原始碼公開,也可以架在自己的伺服器上
    • 就像「設計圖公開的保險箱」
  • Google 密碼管理工具(比較對象)

    • 內建於 Chrome 和 Android 的免費功能
    • 與 Google 帳戶綁定
    • 就像「銀行的保管箱,而且預設銀行本身也持有鑰匙」

2. 1Password 與 Bitwarden 的基本機制

  1. 先在本機裝置上加密
    密碼清單(保管庫)會先在自己的裝置內加密,再送到伺服器。伺服器上只會留下無法解讀的資料。
  2. 主密碼不會送到伺服器
    用來打開保管庫的鑰匙,是在裝置內由主密碼生成的。因此,就算是服務商員工或入侵伺服器的人,也無法讀取內容。

    登入時也不會傳送密碼本身。
    傳送方式依工具而異,1Password 採用 SRP 這種方式,Bitwarden 則是送出由密碼產生的雜湊值。

  3. 保管庫的鑰匙會刻意花時間生成
    從主密碼和鹽值生成 256 位元金鑰時,會刻意把雜湊運算重複數十萬次。

    使用者只需要輸入一次正確密碼,所以幾乎不受影響。這種機制是為了大幅增加暴力破解所需的成本。

  4. 用來打開保管庫的「真正鑰匙」另外建立,並由主密碼衍生出的金鑰管理
    第 3 點生成的金鑰(主金鑰)無法直接打開保管庫。
    系統會先隨機產生一把「真正鑰匙」,將它加密後保存,再用主金鑰去解開這把真正鑰匙。

    另外準備真正鑰匙,可以做到以下幾點:

    • 即使更改主密碼,也不必重新把整個保管庫全部加密一次。
    • 保管庫本身是由無法被人任意猜測的金鑰保護,而不是人自行決定的密碼。
    • 可以從指紋或臉部辨識等多種途徑取出真正鑰匙。
  5. 共享時用公開金鑰加密傳遞鑰匙
    共享保管庫時,會用對方的公開金鑰把該保管庫的鑰匙加密後交給對方。對方可以用自己的私鑰解開,但伺服器無法解開。因此,即使共享,零知識也不會被破壞。

3. 各工具的特色

3-1. 1Password

  • 除了主密碼之外,還會使用 Secret Key(34 字元的隨機金鑰)。Secret Key 會在第一次設定時由裝置產生,不會送到伺服器。
  • 保管庫的鑰匙是由主密碼和 Secret Key 共同產生的。即使伺服器資料外洩,攻擊者也沒有 Secret Key。因此就算主密碼稍弱,實際上也無法用暴力破解。
  • 在新裝置登入時需要 Secret Key。如果把最初附上的 Emergency Kit 弄丟,自己也會無法開啟。
  • 鑰匙層級(2~4)比 Bitwarden 多一層。即使個人使用,也會經過私鑰與各保管庫金鑰的層層處理。

     主密碼 + Secret Key + 鹽值
        ↓ 金鑰導出
     可解鎖帳戶的金鑰(Account Unlock Key)
        ↓ 解密
     自己的私鑰(公開金鑰加密的金鑰對之一)
        ↓ 解密
     各保管庫的金鑰(vault key)
        ↓
     解密保管庫

3-2. Bitwarden

  • 只會根據主密碼產生金鑰,沒有相當於 Secret Key 的東西。因此,當伺服器資料外洩時,能依靠的只有主密碼的強度和金鑰導出的成本。前提是要使用較長的密碼短語。
  • 金鑰導出的方式可以自行選擇。可選 PBKDF2 或 Argon2id,迭代次數也可調整(1Password 的方式是固定的,不能選)。
  • 原始碼公開,第三方可以驗證。也支援自架。

4. 和 Google 密碼管理工具的差異

4-1. 預設設定的機制

Google 密碼管理工具是與 Google 帳戶綁定的功能,內建於 Chrome 和 Android。免費使用,若是 Chrome,甚至不用額外設定就能用。

儲存的密碼會同時受到 Google 帳戶登入,以及 Google 伺服器端加密這兩層保護。

因此,安全性取決於「Google 帳戶會不會被盜」以及「是否信任 Google」。
如果帳戶被盜,所有密碼都會被看見,所以前提是要設定兩步驟驗證與通行金鑰(不用密碼、改用裝置生物辨識登入的機制)。

4-2. 裝置上加密的保護方式

啟用「裝置上加密」後,鑰匙會由自己的裝置端持有。保管庫可用 Google 帳戶密碼或裝置螢幕鎖定來打開。

像螢幕鎖定 PIN 碼(4~6 位數)這種短密碼,組合數很少。即使靠金鑰導出把計算變重,還是可能被暴力破解。

因此 Google 採取的不是讓計算變重,而是限制可嘗試的次數。當你在新裝置上取回金鑰時,會要求輸入已在使用中的另一台裝置的螢幕鎖定。
連續輸錯次數不能超過 10 次,超過之後就不能再用該裝置的螢幕鎖定取回。螢幕鎖定的 PIN 本身 Google 並不知道。

4-3. 和密碼管理工具的差異

在預設設定下,第 2 章的原則 1~5 全都不適用。原因在於,加密金鑰是由 Google 持有,而不是自己持有。

  • 1 不適用,因為加密是在 Google 的伺服器端進行。
  • 2 不適用,因為 Google 在機制上可以解密內容,且也沒有主密碼這種設計。
  • 3 和 4 不適用,因為沒有從自己的密碼生成金鑰的步驟。不需要金鑰導出,也不需要包裹金鑰的那一層。
  • 5 不適用,因為金鑰由 Google 持有。雖然有與家庭群組共享的功能,但不需要把金鑰交給對方的機制。

啟用裝置上加密後,1(在裝置上加密)與 2(Google 也讀不到)就成立了。3 則是以不同方式保護。

保護思路也不同:1Password 和 Bitwarden 是設法讓就算被盜,也要花很久才能破解;啟用裝置上加密的 Google,則是從根本上避免讓人反覆嘗試。

5. 比較

1PasswordBitwardenGoogle 密碼管理工具持有金鑰的人只有自己只有自己預設是 Google。啟用裝置上加密後才是自己金鑰材料主密碼與 Secret Key主密碼Google 帳戶,或裝置螢幕鎖定伺服器資料外洩時因為沒有 Secret Key,幾乎無法破解取決於主密碼強度取決於設定。預設情況下依賴 Google 的管理弱點弄丟 Secret Key 的話,自己也無法開啟弱主密碼Google 帳戶被盜費用付費有免費方案免費可使用的範圍任何瀏覽器、任何作業系統都可任何瀏覽器、任何作業系統都可。也可自架以 Chrome 和 Android 為主6. 收費方案

金額是把年繳換算成月平均的結果(USD),實際費用會依活動或地區而異(2026-10-17 查詢)。

6-1. 1Password

方案費用內容Individual(1 人)每月 $3.99(新用戶首年每月 $2.99)1GB 儲存空間,附帶外洩等通知功能(Watchtower)Families(最多 5 人)每月 $5.99(新用戶首年每月 $4.49)可無限共享保管庫,並可設定管理員權限沒有免費方案,但有 14 天免費試用。

6-2. Bitwarden

方案費用與免費方案的差異Free免費裝置與密碼數量無限制。可共享的人數最多 1 人Premium(1 人)每月 $1.65(年費 $19.80)兩步驟驗證碼顯示(TOTP)、檔案附件、緊急存取、密碼健康檢查Families(最多 6 人)每月 $3.99(年費 $47.88)包含 6 人份 Premium,且可無限共享Teams每人每月 $4組織管理、操作記錄(事件記錄)、與公司內帳號資訊同步Enterprise每人每月 $6細部權限管理、SSO(使用公司帳號登入)、可自架。全體員工都附贈 Families

6-3. 差異總結

1Password 無法免費長期使用,單人使用一年大約要花 $36~48。

另一方面,Bitwarden 若單人使用,即使免費方案也能使用主要功能;付費的 Premium 一年也大約只要 $20。

(參考)
1Password 定價
Bitwarden 定價

7. 補充

7-1. 無法完全防守的情況

如果裝置感染病毒,保管庫打開後的畫面就可能被偷看。也可能透過鍵盤側錄器(竊取輸入文字的軟體)偷走正在輸入的主密碼。

另外,如果把主密碼本身輸入到假網站上,密碼強度就不再有意義了。

7-2. 也能防範假網站

自動填入只會在與儲存時相同網域的網站上啟動。外觀幾乎一模一樣的假網站不會自動填入任何內容,因此可以作為察覺「怪怪的」的契機。


株式会社シンシア

在株式会社xincere,我們招募沒有實務經驗的工程師以及學生工程師實習生,一起工作。
※ 關於辛西亞的工作樣貌請見此處

在辛西亞,每年大約會有 100 位沒有實務經驗的人應徵並接受技術面試。
有興趣的人,歡迎從上方連結點進去看看。


原文出處:https://qiita.com/kozakoza/items/534ca5aadd59bfd1f6b3


精選技術文章翻譯,幫助開發者持續吸收新知。

共有 0 則留言


精選技術文章翻譯,幫助開發者持續吸收新知。
🏆 本月排行榜
🥇
站長阿川
📝11   💬1  
349
🥈
mike
1
評分標準:發文×10 + 留言×3 + 獲讚×5 + 點讚×1 + 瀏覽數÷10
本數據每小時更新一次
📢 贊助商廣告 · 我要刊登