TOTP とは何ですか?
時間ベースのワンタイムパスワード (Time-Based One-Time Password, TOTP) は、現在の時刻を主要な要素として使用するアルゴリズムによって生成される、一時的でユニークなコードです。一般的な ワンタイムパスワード (One-time password, OTP) と同様に、TOTP は一度しか使用されませんが、通常 30 秒から 60 秒の固定寿命があります。期限が切れると、自動的に新しいコードが生成されます。
TOTP 標準はインターネット技術特別策定チーム (IETF) によって RFC 6238 に定義されており、様々な二要素認証 (2FA) や多要素認証 (MFA) システムで広く採用されています。TOTP はクライアント (ユーザーデバイス) とサーバー間の同期された時間に依存しているため、高レベルのセキュリティを提供し、予測や再利用が困難です。
TOTP の仕組み
TOTP の生成には以下のステップが含まれます:
- 共有秘密: 初回セットアップ時に、共有の秘密鍵が生成され、クライアントとサーバーの両方に安全に保存されます。この鍵は通常 QR コードとしてエンコードされ、ユーザーは認証アプリを使用してスキャンします。
- 時間間隔: 現在の時刻は通常 30 秒の固定間隔で区切られます。
- アルゴリズムの適用: 共有秘密鍵と現在のタイムスタンプがハッシュベースのアルゴリズム (多くの場合 HMAC-SHA1) に供給され、ユニークな数値コードが生成されます。
- 同期: クライアントとサーバーの両方が同じ共有秘密と現在のタイムスタンプを使用してコードを個別に生成します。コードは両者が同期している場合のみ一致します。
- 検証: ユーザーがログインまたは重要な取引を行う際、認証アプリに表示される TOTP を入力します。その後サーバーは内部生成した TOTP と比較し検証します。
TOTP を使用する場合
通常の OTP が推奨されますが、新しい認証コードの「トリガー」を行うことができない場合には TOTP が推奨されます。
- TOTP の例: 認証アプリ
- OTP の例: Eメール、SMS
OTP と TOTP の違いは何ですか?
主な違いは、TOTP が時間ベースであるという点です。デバイスがサーバーに接続されていない場合に適しています。サーバーは新しい認証コードをメールアドレスや電話番号に送信することは簡単ですが、それにはメールや電話がオンラインである必要があります。しかし、認証アプリはオフラインのままで「時間」を使用して認証コードを確認できます。