見出し画像

KeePassXCにワンタイムパスワードを設定するとすごく便利、でもこれ危なくないか?

みなさま、Googleなど各種サービスのアカウント・パスワードはどのように管理しているでしょうか。今回紹介するKeePassXCは、アカウント・パスワードを登録して、マスターパスワードで暗号化してファイルに保存できる、パスワード管理アプリの一つです。今回はこのアプリの「ワンタイムパスワード設定機能」に感じた便利さと危うさについて書いていきます。


ワンタイムパスワードの概要

ワンタイムパスワードは、ログイン時にアカウント・パスワードとは別に入力が要求されるもので、Google Authenticatorなどのスマホアプリで生成したり、スマホにSMSで通知されたりします。この場合、仮にアカウント・パスワードが漏洩しても、ワンタイムパスワードを取得するスマホがないとログインできないため安全という理屈ですね。詳細は「多要素認証」(Wikipediaで恐縮ですが…)を参照してください。

KeePassXCのワンタイムパスワード機能は使っていいのか?

このGoogle Authenticatorスマホアプリに相当する機能がKeePassXCにもあって、アカウント・パスワードに加えて、ワンタイムパスワードもKeePassXCで管理できます。この環境を作ると、Webページへのログイン時にKeePassXC一つですべてのセキュリティ情報を参照できて超便利です!

…と思っていたのですが、これ考えてみたら危なくないかと思い立ちました。前述の通り、ワンタイムパスワードによる防御は、ワンタイムパスワードを取得できる環境が限定されることに立脚しています。KeePassXCのパスワードファイルを読み取るにはマスターパスワードが必要ですが、万一パスワードファイルとマスターパスワードの両方が漏洩した場合、アカウント・パスワード・ワンタイムパスワードのすべてをKeePassXCから取得できるため、ワンタイムパスワードによる防御が成立しません。

KeePassXCのFAQにはこう書いてある

このあたり、KeePassXCのFAQには以下の通り記述がありました。

KeePassXC allows me to store my TOTP secrets. Doesn't this undermine any advantage of two-factor authentication?
Yes. But only if you store them in the same database as your password. We believe that storing both together can still be more secure than not using 2FA at all, but to maximize the security gain from using 2FA, you should always store TOTP secrets in a separate database, secured with a different password, possibly even on a different computer.

https://keepassxc.org/docs/#faq-security-totp

抄訳を以下に示します(Chromeブラウザーで翻訳後、手動で微調整)。TOTP シークレットはワンタイムパスワードを生成するためKeePassXCに登録するデータ、2FAは2要素認証(多要素認証の要素数が2個のもの)を表します。

KeePassXC を使用すると、TOTP シークレットを保存できます。これは二要素認証の利点を損なうものではないでしょうか?
はい。ただしこの問題は、パスワードとTOTP シークレットを同じデータベースに保存した場合に限ります。両方を一緒に保存したとしても、2FA をまったく使用しないよりは安全であると考えられますが、2FA を使用することで得られるセキュリティを最大限に高めるには、TOTP シークレットを常にパスワードとは別のデータベースに保存し、別のパスワードで保護する必要があります。場合によっては別のコンピューターにデータベースを置く必要があります。

要するに、KeePassXCでワンタイムパスワードを管理する場合、セキュリティを気にするならパスワードとは別のデータベースファイルにしてくれという案内です。だったら最初から別のワンタイムパスワードアプリを使いますよね。「2FA をまったく使用しないよりは安全」という記述に、なんともなげやりな印象を受けてしまいました。

筆者が思うところ

KeePassXCでワンタイムパスワードを管理する機能をちょっと使ってみましたが、ログイン時にワンタイムパスワード用スマホを持ち出す必要がなく、KeePassXCだけを見ていればいいので本当に便利です。でもこの便利さは「人をダメにするタイプの便利さ」と感じました。スマホを持ち出す面倒は、ワンタイムパスワードのセキュリティを成立させるのに必要なものといえます。

KeePassXCが脆弱とかそういう話ではなく、便利な機能があったとしても、利便性とセキュリティを利用者側で吟味して使いましょうという話かと思います。皆様におかれましても、ご利用は自己責任でお願いいたします。

余談

  • 本記事のため、KeePassXCや、Google Authenticator/Authyといったワンタイムパスワードアプリのスクリーンショットを取得しようとしたのですが、ことごとく何も映りませんでした。そのあたりさすがセキュリティを考慮してしっかり作られているようです。

  • KeePassXCには、元となる「KeePass」というアプリが存在しますが、このKeePass(2.x)にもワンタイムパスワードの生成機能が実装されているので、本記事で言及した件は「そんなことは最初から分かっている」という感じなのでしょう。

この記事が気に入ったらサポートをしてみませんか?