TOTPとは
この記事は約 2 分で読めます
TOTP (Time-based One-Time Password) とは、現在の時刻に基づいて生成される ワンタイムパスワードの仕組みです。Google Authenticator や Microsoft Authenticator などの認証アプリで広く利用されています。通常 30 秒ごとに新しい 6 桁のコードが 生成され、パスワードに加えた二段階認証の要素として 機能します。2024 年現在、TOTP は最も広く採用されている二段階認証方式であり、 Google、GitHub、AWS など主要サービスの大半が対応しています。
現場での使用例
「AWS の本番環境アカウントに TOTP を必須化しました。全 IAM ユーザーに 認証アプリの設定を完了させ、MFA なしではコンソールにログインできない ポリシーを適用しています。」
TOTP 生成のフロー
TOTP の仕組み
TOTP は RFC 6238 で標準化されたアルゴリズムです。サーバーとクライアントが 共有する秘密鍵と現在の時刻を入力として、HMAC-SHA1 でハッシュ値を計算し、 そこから 6 桁の数値を抽出します。サーバーとクライアントの時計が同期していれば、 同じコードが生成されるため認証が成立します。二段階認証の書籍 (Amazon)で技術的な詳細を学べます。
具体的な活用シナリオ
よくある誤解は「SMS 認証と TOTP は同じレベルのセキュリティ」というものです。 SMS 認証は SIM スワップ攻撃や SS7 プロトコルの脆弱性を突かれて傍受される リスクがあります。TOTP はデバイス内で完結するため、これらの攻撃に対して はるかに安全です。NIST (米国国立標準技術研究所) も SMS 認証よりも TOTP やハードウェアキーの使用を推奨しています。
パスつく.com で生成した強力なパスワードに TOTP を組み合わせることで、 パスワードが漏洩しても不正ログインを防止できます。TOTP の秘密鍵は バックアップコードとともに安全に保管しましょう。認証アプリを使うスマートフォンを 紛失した場合に備え、バックアップコードを紙に印刷して金庫に保管するか、 複数のデバイスに認証アプリを設定しておくことが実務上のベストプラクティスです。アカウント保護の実践書 (Amazon)も参考になります。