時間ベースの一時パスワード(TOTP)とは、共有秘密鍵と現在の時刻から生成される短期間有効な数値コードであり、30秒ごとに自動的に更新されます。認証アプリは、QRコードを1回スキャンするとこのコードを生成し、ユーザーが特定の登録済みデバイスを所有していることを証明する第2の認証要素として機能します。
主なポイント
- TOTPは、ユーザーが単にパスワードを持っているだけでなく、登録済みのデバイスを所持していることを証明します。
- コードは、共有秘密鍵と現在の時間ステップから導出されます。
- 認証アプリは、QRコードを1回スキャンすると、オフラインでコードを生成します。
- コードは通常30秒ごとに更新されるため、リプレイ攻撃が制限されます。
- Versa SASE ClientとConcertoは、いずれもTOTPを第2の認証要素として提供しています。
このページの内容: その重要性仕組み種類TOTP およびVersaよくある質問
TOTPはなぜ重要なのでしょうか?
パスワードだけでは、リモートアクセスにおける最も脆弱な部分となります。パスワードはフィッシング攻撃の標的となり、再利用されたり、クレデンシャルスタッフィング攻撃によって収集されたりするからです。第二の認証要素を導入することで、攻撃者が情報漏洩からコピーできない証拠――つまり、ユーザーが特定のデバイスを所持しているという証拠――を要求することで、その脆弱性を解消できます。TOTPは、その証拠をオフラインで提供します。コードは、デバイスがすでに保持している秘密鍵からローカルで計算されるため、SMSの配信が遅れたり傍受されたりした場合でも機能し続けます。
TOTPはオープンスタンダードであるため、どの認証アプリでも同じ共有秘密鍵を登録して互換性のあるコードを生成できるため、組織は特定のベンダーのアプリに縛られることはありません。この移植性に加え、傍受に対する耐性があることから、NIST SP 800-63BなどのフレームワークではTOTPが推奨されており、Versa SASE Clientでも、証明書認証やSAML認証と並んでTOTPが提供されています。
TOTPとは何ですか?
TOTPは、RFC 6238において、HOTP(HMACベースのワンタイムパスワード、RFC 4226)の時間ベースのバリエーションとして定義されています。登録は、サーバーがランダムな共有秘密鍵を生成し、それを(通常はQRコード内に)エンコードすることで開始されます。これにより、認証アプリは、ユーザーが長い文字列を手入力することなく、その情報をインポートできるようになります。
コードを生成するために、アプリは現在のUnixタイムを固定のステップ(通常は30秒)で割り、秘密鍵とそのカウンタに対してHMACを計算し、その結果を短い数値文字列(通常は6桁)に切り詰めます。サーバー側でも同様の計算を行い、出力を比較しますが、時計のずれによる隣接するステップのわずかな範囲については許容されます。コードは、そのステップの有効期限が切れると再利用できません。
TOTPの種類
TOTPは、OATHの一時パスワード(OTP)ファミリーの一種です。HOTP(RFC 4226)はイベントベースの方式であり、時計を基準にするのではなく、コードが要求されるたびにカウンターをインクリメントします。これは物理的なボタンを備えたハードウェアトークンには適していますが、コードが使用されないまま放置されると同期がずれてしまう可能性があります。TOTPでは、カウンターの代わりに時間を基準とすることで、クライアントとサーバーの同期を自動的に維持しています。
TOTP自体においても、導入形態は3つのパラメータによって異なります。それは、ハッシュアルゴリズム(デフォルトはSHA-1で、SHA-256やSHA-512も選択肢としてあります)、コードの長さ(標準は6桁ですが、8桁を使用するものもあります)、および更新間隔(通常は30秒ですが、60秒を使用するものも一部あります)です。配信方法も様々で、多くはスマートフォンアプリに依存していますが、ハードウェアセキュリティキーでも同じアルゴリズムが実装されています。
TOTP &Versa
Versa SASE クライアントは、LDAP、RADIUS、またはSAMLによるユーザー認証の上に構築された、SMSや電子メールベースのOTP、x509証明書認証と並んで、多要素認証オプションの一つとしてTOTPをサポートしています。 TOTPは、Versa のDirectorノード(VOSリリース22.1.3以降)から、またはConcertoでは「Secure Client Access Rule」から有効化できます。「Client Configuration」でMFAを有効にし、「Time-Based OTP (TOTP) Authentication Service」を選択すると、時間ベースのコードが有効になります。また、Concertoリリース12.2.2以降では、登録用QRコードを電子メールで送信することも可能です。
初回登録時にTOTPが必要な場合、クライアントにQRコードが表示されます。ユーザーは任意の認証アプリでこのQRコードをスキャンし、表示されたコードを入力して登録を完了します。ワークフローの詳細については、「Versa SASE クライアントアプリケーションの使用」、「Concerto との連携におけるVersa SASE クライアントの使用」、および「ConcertoSASE エンドツーエンド設定」を参照してください。
よくある質問
TOTPとHOTPの違いは何ですか?
HOTPでは、コードが要求されるたびにカウンターが1ずつ進むため、コードの生成をスキップするとクライアントとサーバーの同期がずれてしまう可能性があります。一方、TOTPでは、カウンターの代わりに現在の時刻を一定間隔で更新することで、双方の同期を自動的に維持します。これが、ほとんどの認証アプリがTOTPを採用している理由です。
TOTPにデバイスを登録するにはどうすればよいですか?
サーバーは共有秘密鍵を生成し、それをQRコードとして表示します。認証アプリでこのQRコードをスキャンすると、その秘密鍵がインポートされます。その後、アプリはサーバーとのさらなるネットワーク通信を行うことなく、30秒ごとに新しいコードを生成します。
なぜTOTPはSMSベースのOTPよりも安全性が高いと考えられているのでしょうか?
TOTPコードは、端末内にすでに保存されている秘密鍵からローカルで生成されるため、SMSメッセージのように通信途中で傍受されることはありません。これには、被害者の電話番号を乗っ取るSIMスワップ攻撃による傍受も含まれます。また、TOTPは携帯電話回線やWi-Fiに接続していなくても機能します。
デバイスのクロックにずれが生じたらどうなりますか?
TOTPコードは現在の時刻に基づいて計算されるため、デバイスの時刻がサーバーの時刻から大きくずれていると、有効なコードが生成されなくなります。サーバーは通常、わずかな時刻のずれを許容するために、隣接する時間ステップの狭い範囲を受け入れますが、ずれが持続する場合は、デバイスの再同期が必要となります。
Versa は、SASE クライアントにおいてTOTPをどのように利用しているのでしょうか?
Versa SASE クライアントは、登録およびログイン時の第2の認証要素としてTOTPを提供します。この設定は、Versa Director または Concerto Secure クライアントアクセスルールから行います。クライアントはQRコードを1回表示します。これをスキャンすると、その後のログインでは最新のTOTPコードを入力するだけで済みます。
TOTPに関する詳細
さらに詳しく知りたい場合は、私たちが信頼している情報源を以下にご紹介します。
| RFC 6238: TOTP | RFC 4226: HOTP |
|---|---|
| TOTPアルゴリズムを定義するIETF規格:共有秘密鍵、時間ステップ、HMACがどのように組み合わさってコードが生成されるか。 | TOTPは、イベントカウンタを時刻に置き換えることで拡張した、HMACに基づくワンタイムパスワード規格である。 |
関連用語
TOTPについてお読みの方は、次にこれらもぜひご覧ください。
| ワンタイムパスワード | セキュア・ハッシュ・アルゴリズム | SASE クライアント |
|---|---|---|
| TOTPが属する、SMSやメールで送信されるコードを含む、単回使用型認証コードのより広いカテゴリー。 | TOTPが、共有秘密鍵と時間ステップを組み合わせて検証可能なコードを生成するために依存しているHMACハッシュファミリー。 | Versa のクライアントアプリケーションで、登録時およびログイン時にTOTPが第2の認証要素として提供されます。 |