認証アプリとは?30秒ごとに変わる6桁の数字を作るアプリの役割

2段階認証を設定するとき、「認証アプリでQRコードを読み取ってください」と表示されることがあります。認証アプリと言われても、どのアプリのことか迷うかもしれません。
本記事では、認証アプリが何をするアプリなのか、設定のQRコードに何が入っているのかを解説します。
認証アプリとは
認証アプリは、ログインのときに入力する6桁の数字(ワンタイムパスワード)を作るアプリです。数字は30秒ごとに変わり、パスワードに続けて入力する2回目の確認に使います。
「認証アプリ」は、特定のアプリの名前ではありません。この役割を持つアプリをまとめた呼び名です。たとえば、Google AuthenticatorやMicrosoft Authenticatorのような専用のアプリのほか、Appleの「パスワード」アプリや、1Passwordのようなパスワードマネージャーも、認証アプリとして使えます。
本人を確かめる3つの要素で言えば、所持情報の手段の1つです。
認証アプリがしていること
認証アプリの仕組みは、サービスと同じ暗号表を1冊ずつ持ち合うことに例えられます。下の図の上が設定のとき、下がログインのたびの動きです。
設定のとき、サービスは世界に1つだけの暗号表を作って保管し、その写しをQRコードで認証アプリに渡します。暗号表といっても、中身はランダムな英数字の長い文字列です。
ログインのたびに、認証アプリはこの暗号表と今の時刻から、6桁の数字を作ります。サービスも、自分の暗号表と同じ時刻で同じ計算をして、入力された数字と見比べる仕組みです。数字が合えば、同じ暗号表を持っている本人だと分かります。
暗号表を持つ2者が同じ時刻に同じ計算をするだけなので、認証アプリはインターネットにつながっていなくても数字を出せるわけです。計算の詳しい手順は、ワンタイムパスワードとはで解説しました。
設定のQRコードの中身
設定のQRコードに入っているのは、暗号表にあたる秘密の文字列です。QRコードは、この文字列をカメラで読み取れる形にしたものにすぎません。
認証アプリの開発元の資料には、JBSWY3DPEHPK3PXP という見本が載っています。説明用の例で、実際のサービスで使われている値ではありません。QRコードを読み取れないときに、設定の画面に「セットアップキー」などの名前で表示される英数字も、同じ文字列です。
QRコードを撮影した人は、自分の認証アプリでも同じ数字を作れてしまいます。設定の画面を人に見せたり、スクリーンショットを残したりしないでください。認証アプリに登録したあとは、文字列はアプリの中にしまわれ、目に触れなくなります。
似ているけれど別の仕組み
ログインのときには、ほかにもQRコードや数字を入力する場面があります。見た目が似ていても、認証アプリとは目的も仕組みも違うので、下の表で区別しておきましょう。左から、仕組み、何を確かめるか、認証アプリとの違いの順です。
| 仕組み | 何を確かめるか | 認証アプリとの違い |
|---|---|---|
| ゆがんだ文字やパズルの画像(CAPTCHA) | 操作しているのが人間か、プログラムか | 本人かどうかは確かめない。秘密の情報も使わない |
| パソコンに出たQRコードを、ログイン済みのスマートフォンで読み取るログイン | ログイン済みのスマートフォンを持っているか | QRコードはその場限りの受付番号で、暗号表ではない |
| SMSで届くコード | その電話番号でメッセージを受け取れるか | 数字はサービスが作って送る。手元では作らない |
2つ目の、パソコンに出たQRコードを読み取るログインには、別の注意点があります。他人から送られてきたQRコードを読み取ると、その人のパソコンでのログインを許可してしまいかねません。自分で開いた画面に出たものだけを読み取ってください。
どのアプリを認証アプリにするか
認証アプリの役割は、いくつもの種類のアプリが持てます。図に、代表的な3つの種類と、置き場所を選ぶときの注意点を示しました。
パスワードマネージャーを認証アプリにすると、ログインのときにパスワードと6桁の数字をまとめて入力してくれるので、手間がかかりません。保管庫は同期されるため、パソコンでもスマートフォンでも同じ数字を出せます。
一方で、パスワードと暗号表が同じ保管庫に入るため、保管庫を開けられた人には両方そろってしまう点に注意が必要です。2段階にはなっても、厳密な2要素認証とは言えません。考え方は2段階認証とはで解説しました。
どの方法を選ぶ場合も、パスワードマネージャー自身にログインするための2段階認証は、そのパスワードマネージャーの外にある認証アプリに登録してください。保管庫の鍵を保管庫の中にしまうことになり、開けなくなったときに取り出せないためです。
製品での使われ方
このサイトでは、パスワードマネージャーの1つである1Passwordを認証アプリとして使い、次のサービスの2段階認証を設定する手順を紹介しています。1Passwordが持つ役割は、1Passwordとはにまとめました。
参考にした一次情報
RFCは、インターネットの技術の決まりを定めた公開文書です。
- RFC 6238「TOTP: Time-Based One-Time Password Algorithm」
- Google Authenticator「Key Uri Format」
- Apple「Automatically fill verification codes on Mac」
- 1Password「Use 1Password as an authenticator for sites with two-factor authentication」
- 1Passwordのブログ「1Password and 2FA: Is it wrong to store passwords and one-time codes together?」(2023年6月22日)