ウェブサービスへのサインインで、メールアドレスとパスワードによる認証だけではセキュリティ的に不安が残るため、2段階認証や多要素認証を利用したサインインに設定している人は多いはず。しかし、SMSや認証アプリを使った認証はモバイル端末に強く依存するため、登録しているスマートフォンをなくしてしまったり壊してしまったりするとサインインができなくなってしまいます。

Bitwarden/Vaultwarden、KeePassXCなどのパスワードマネージャーには、認証アプリでワンタイムパスワードを発行するTime-based One-time Password(TOTP)のトークンを登録してワンタイムパスワードを振りだす機能が搭載されています。パスワードマネージャーでワンタイムパスワードを発行できるようにすれば、端末に依存することなく2段階認証を利用できます。そこで、2段階認証・多要素認証設定時の認証キーをローカルで安全にデコードし、パスワードマネージャーに登録してみました。

今回はAmazonの2段階認証で、オープンソースのパスワードマネージャーであるBitwardenを利用して簡単にログインできるように設定します。Amazonのアカウントサービスから「ログインとセキュリティ」をクリック。



「2段階認証」の「オンにする」をクリック。



2段階認証手段の登録画面が表示されます。「認証アプリ」を選択すると、QRコードが表示されます。このQRコードの下に「バーコードをスキャンできませんか?」と表示されるので、これをクリック。



すると、認証キーが表示されるので、コピーします。



Bitwardenで、ログイン情報を登録します。「ユーザ名」と「パスワード」、そして先ほどコピーしたキーを「認証キー」に入力。URLに「https://www.amazon.co.jp/ap/signin」と入力して、「保存」をクリックします。



すると、認証アプリで生成されるワンタイムパスワードがBitwarden上で生成されました。



Amazonの2段階認証登録画面に戻り、認証コードを入力すると、2段階認証に成功します。



AmazonではQRコードを読み込めない場合を想定して認証キーを表示できる仕様になっていますが、認証キーがわからない場合があります。そこで、オープンソースの多機能キャプチャーソフト「ShareX」を使い、QRコードから認証キーを抽出します。

ShareX - Windows に無料でダウンロードしてインストールする | Microsoft Store

https://apps.microsoft.com/detail/9nblggh4z1sp?hl=ja-JP&gl=JP

まず、認証アプリへの登録に必要なQRコードをスクリーンショットで撮影します。



ShareXの左にあるメニューから「ツール」を選択し、「QRコード」をクリック。



以下のウィンドウが表示されるので、「Scan image file...」をクリックし、先ほど撮影したQRコードのスクリーンショットを選択。



すると、QRコードが自動で認識され、デコード結果が左側に表示されます。このデコードされた文字列の中に認証キーが含まれているので、これをBitwardenなどのパスワードマネージャーに登録すればOKです。



Bitwarden/VaultwardenやKeePassXCにはモバイル向けのアプリやブラウザの拡張機能があるので、PCでもスマートフォンでも利用でき、特定の端末に依存することがなくなります。また、Bitwarden/Vaultwardenは自前のサーバーでデータベースを管理できるので、自分のパスワードをローカルで安全に管理することも可能。ただし、当然のことながら、パスワードマネージャーのマスターパスワード自体が漏えいすると意味がないので注意してください。