Google Authenticatorを解説:2FAコードが機能する仕組み
30秒ごとくらいに、スマートフォンに表示された短い数字が変わります。そのスマートフォンを見せたこともないウェブサイトが、なぜか新しい数字を知っています。魔法のように見えますが、これは共有された秘密情報を使うシンプルな仕組みです。
Google Authenticatorなどのアプリは、この仕組みで動作します。ここでは、コードがどのように生成されるのか、インターネットに接続していなくても使える理由、Google独自の2段階認証プロセスとの関係、そして何を保護でき、何を保護できないのかを説明します。
コードが生成される仕組み
認証アプリにアカウントを追加すると、サービスから秘密情報が提供されます。通常はQRコードまたはセットアップキーの形式で、アプリがそれを保存します。以降、サービスとスマートフォンは同じ秘密情報を保持します。コードを生成する際、アプリはその秘密情報と現在時刻を組み合わせ、サービス側も同じ計算を行います。両者の結果が一致すれば、コードが承認されます。
この方式は、TOTP(時間ベースのワンタイムパスワード)と呼ばれる公開規格で、IETF RFC 6238で定義されています。これは、カウンターを時間から導き出した値に置き換えた、古いカウンターベースの方式を発展させたものです。この規格では、アプリとサービスが同じ時間ステップを使う必要があると定められており、デフォルトとして30秒が推奨されています。そのため、コードは通常、1分間に約2回更新されます。
インターネット接続なしで使える理由
コードは、保存された秘密情報とスマートフォンの時計を使って端末上で計算されるため、スマートフォンに何かを送信する必要はありません。Googleのアプリ掲載情報によると、ネットワークやモバイル通信に接続していなくてもコードを生成できます。サービス側は、コードが送信されたときに同じ計算を行うだけで済みます。
そのため、時計が重要になります。スマートフォンの時刻が実際の時刻から大きくずれていると、アプリが仕様どおりに動作していても、計算結果が一致せずコードが拒否されます。
Google独自の2段階認証プロセスとの関係
この2つは混同されやすいものです。2段階認証プロセスは、Googleアカウントへのログイン時に追加の手順を求める機能です。Google Authenticatorは、その手順を提供できるアプリであり、Googleによると、認証アプリによる確認に対応した他のウェブサイトやアプリのコードも生成できます。他の複数の認証アプリも同じ規格に準拠しているため、コード自体が特定の企業に紐づいているわけではありません。
このアプリは、Googleアカウントがあってもなくても使用できます。ログインすると、複数の端末間でコードを同期できます。またGoogleによると、アカウントがなくても、新しい端末にコードを手動で移行できます。同期したコードはそのGoogleアカウントに依存するため、Googleアカウント自体の保護がより重要になります。Googleは、アカウントから締め出されないよう、追加の2段階認証方法を設定することも勧めています。
保護できるもの、できないもの
CISAによると、認証アプリのコードはテキストメッセージよりも安全性が高いものの、フィッシングの被害に遭う可能性は残ります。本物そっくりの偽ログインページは、入力されたコードを取得してすぐに悪用できます。これに対抗できるのは、セキュリティキーやパスキーなどのFIDOベースの方法だけです。コードを入力する前にサイトのアドレスを確認することも、保護の一環です。
コードの元となる秘密情報も、慎重に扱う必要があります。QRコードやセットアップキーを持っている人は誰でも同じコードを生成できるため、そのスクリーンショットはパスワードと同じように扱ってください。また、認証アプリが保護するのは、サービスを通じてログインするアカウントです。ウォレットのシードフレーズや秘密鍵は保護できません。
WEEXからの注意:セットアップキーはパスワードと同様に扱う
WEEXは、サポートを名乗る人を含め、誰にもワンタイムコード、QRコード、セットアップキーを共有しないようユーザーに注意を促しています。正規のサービスがこれらを求めることはありません。コードを入力する前にサイトのアドレスを確認し、バックアップキーやバックアップコードはスクリーンショットやクラウド上のメモではなく、安全なオフラインの場所に保管してください。この記事は、いかなる金融アドバイスも提供するものではありません。
まとめ
Google Authenticatorは、サービスと共有する秘密情報と現在時刻から有効期間の短いコードを生成します。そのためオフラインでも使え、時計が重要になります。同じ規格を使う複数のアプリのうちの1つであり、テキストメッセージより安全性は高いものの、フィッシングの危険は残ります。また、セットアップ時の秘密情報はパスワードと同じように慎重に扱う必要があります。強力なパスワードや慎重な行動と併用すれば、アカウントを乗っ取られにくくできます。
よくある質問
1. Google Authenticatorとは何ですか?
ログイン時の追加手順として使うワンタイムコードを生成するアプリです。Googleアカウントのほか、認証アプリによる確認に対応した他のウェブサイトやアプリでも使用できます。
2. Google Authenticatorはインターネットなしで、どのようにコードを生成しますか?
保存された秘密情報と現在時刻を使って、スマートフォン上でコードを計算します。サービス側も同じ計算を行ってコードを確認するため、スマートフォンに何かを送信する必要はありません。
3. Google Authenticatorを使うにはGoogleアカウントが必要ですか?
いいえ。Googleによると、アカウントなしでも使用できます。ログインすると複数の端末間でコードを同期でき、アカウントがない場合は新しい端末に手動で移行できます。
4. Google AuthenticatorはGoogleの2段階認証プロセスと同じものですか?
いいえ。2段階認証プロセスはGoogleアカウントの機能であり、このアプリは追加の手順を提供する方法の1つです。また、認証アプリのコードに対応した他のウェブサイトでも使用できます。
5. Google AuthenticatorはSMSコードより安全ですか?
CISAによると、認証アプリのコードはテキストメッセージよりも安全性が高いものの、フィッシングの被害に遭う可能性はあります。セキュリティキーやパスキーは、フィッシングに対してより強力な保護を提供します。