Vaultwardenを導入したので、安全性について評価する
背景 いや、ちょっとこれも恥ずかしい話なんですがね。 僕は長いこと、「自作パスワード管理システム」的なものを運用していました。 どうやっていたかというと、 自前ホストしているRocket.Chat に、自分専用のチャンネルをひっそり立てて、 誰も入れないように鍵をかけて、 そのスレッドに “ログイン情報をラベル付きで投稿する” という、 ある意味 究極のアナログ DX をやっていたわけです。 もちろん一応、安全面は全く考えてなかったわけではなくて、 Rocket.Chat のデータは gocryptfs で暗号化されたストレージに保存 通信経路は https で暗号化 サーバは自分の管理下 チャンネルは自分しかアクセスできない と、一応「最低限の安全性」は確保しているつもりでした。 だけど、世の中ではみんな LastPass だの 1Password だの Bitwarden だのと言っているじゃないですか。 僕はこういう “流行り物” に疎いところがちょっとあって、 「パスワード管理ツールって本当に必要?」 と長年スルーしていたんですよね。 そんなとき、エンジニアの先輩から 「Bitwarden の OSS クローンで Vaultwarden っていうのがあって、自前ホストも簡単で、めっちゃ良いよ」 とすすめられました。 で、触ってみたら、UI も綺麗だし、ストレージ管理もラクだし、 正直「これはかなりイケてるな」と感じたわけです。 しかし、ここから僕の悪い癖が発動します。 “仕組みが分かっていないものに重要な情報を預けるのが嫌” これは性格なんですが、 ブラックボックスは信用できない。 暗号化の仕組みがわからないと不安になる。 果たして、 自前のサーバ(しかもレンタル)に Vaultwarden を置いて、 そこに人生の全パスワードをぶち込んで大丈夫なのか? という疑念がどうしても消えない。 結論から言うと: Vaultwarden(Bitwarden)は、むしろ「Rocket.Chatにパスワードを書いてた頃の比じゃないほど安全」だった。 調べれば調べるほど「これは信頼できる暗号設計だな」と感じたので、 今回はその 安全性の仕組み をブログとしてまとめたいと思う。 安全性の評価 Bitwarden / Vaultwarden が扱う暗号モデルは、 いわゆる ゼロ知識暗号(Zero-Knowledge Encryption) である。 ...