TOTP(Time-based One-Time Password) とーとぷ
簡単に言うとこんな感じ!
そう、まさにそれだよ!TOTPは「今この瞬間だけ使える6桁のパスワード」を自動生成する仕組みなんだ。30秒ごとに番号が変わるから、盗み見されても即使えなくなる。銀行の「ワンタイムパスワード」と同じ発想で、スマホアプリが時刻をもとに計算してくれるってこと!
TOTPとは
TOTP(Time-based One-Time Password) とは、「現在時刻」と「あらかじめ共有した秘密鍵」を組み合わせて、短時間だけ有効な使い捨てパスワードを生成する認証方式です。Google AuthenticatorやMicrosoft Authenticatorなどの 認証アプリ が採用しており、ログイン時にIDとパスワードに加えて入力する6桁の数字がまさにTOTPです。
TOTPが生まれた背景には、パスワード単体の脆弱性 があります。固定パスワードは一度漏れたら何度でも悪用されますが、TOTPは30秒ごとに新しいコードが生成されるため、たとえ盗み見されても次の30秒後には無効になります。これにより 二要素認証(2FA) の「知っていること(パスワード)+持っていること(認証アプリ)」という二重の壁を実現できます。
ビジネスの現場では、社内システムやクラウドサービスへのログイン強化策として急速に普及しています。設定はQRコードをスキャンするだけで完了するため、ハードウェアトークン に比べてコストがかからず、スマートフォンさえあれば運用できる手軽さも大きな魅力です。
TOTPの仕組みと構造
TOTPは3つの要素を組み合わせて動作します。
| 要素 | 内容 | 具体例 |
|---|---|---|
| 秘密鍵(シークレット) | サーバーとアプリが共有する文字列 | QRコードに埋め込まれる |
| 現在時刻(Unixタイム) | 1970年1月1日からの経過秒数 | 30秒単位に丸める |
| HMAC-SHA1 | 秘密鍵と時刻から数値を計算するアルゴリズム | 結果の一部を6桁に切り出す |
生成の流れは次のとおりです。
① QRコードをスキャン → 秘密鍵をアプリに保存
② アプリが「現在時刻 ÷ 30秒」の値(タイムステップ)を計算
③ 秘密鍵 + タイムステップ を HMAC-SHA1 で計算
④ 計算結果を切り詰めて6桁の数字を生成
⑤ サーバーも同じ計算をして、一致したら認証成功!
覚え方:「時計とカギで金庫を開ける」
TOTPを覚えるなら 「時計(Time)とカギ(秘密鍵)」 を思い浮かべてください。銀行の金庫は「カギ+時限スイッチ」で開きます。TOTPも同じで、正しいカギ(秘密鍵)と正しい時間(現在時刻)が揃わないと扉が開きません。
有効期間と時刻ずれの許容
| 項目 | 標準値 | 補足 |
|---|---|---|
| コード有効期間 | 30秒 | RFC 6238 の規定 |
| 許容する時刻ずれ | ±1ステップ(±30秒) | スマホの時刻同期ずれに対応 |
| コード桁数 | 6桁(推奨) | 8桁にも拡張可能 |
| アルゴリズム | HMAC-SHA1 | SHA-256/512 も利用可能 |
歴史と背景
- 1980年代:ワンタイムパスワード(OTP)の概念が登場。S/KEY方式(カウンターベース)が先行して開発される
- 2005年頃:OATH(Open Authentication)コンソーシアムが設立。OTPの標準化を推進
- 2011年:HOTP(HMAC-based OTP) がRFC 4226として標準化。カウンターベースのOTPが公式規格に
- 2011年:HOTPを時刻ベースに発展させた TOTP が RFC 6238 として標準化
- 2012年頃:Google Authenticatorがオープンソース化。TOTP対応アプリが一気に普及
- 2020年代:クラウドサービスのセキュリティ強化ニーズが高まり、TOTPを使った2FAが事実上の標準に。GitHub・AWS・Slackなど主要サービスが対応
- 現在:パスキー(FIDO2)の台頭でTOTP以外の選択肢も増えつつあるが、シンプルさから依然広く採用される
HOTPとTOTPの違い、そして関連技術の比較
TOTPはHOTPを進化させた規格です。両者の違いと他のOTP方式との比較を整理します。
TOTPの弱点とフィッシング対策
TOTPは強力ですが、フィッシングサイト には注意が必要です。偽サイトに誘導されてコードを入力してしまうと、30秒以内に悪用されるリスクがあります。この弱点を克服するのがFIDO2/パスキーです。
| 脅威 | TOTP | FIDO2/パスキー |
|---|---|---|
| パスワード漏洩 | ✅ 防げる | ✅ 防げる |
| SIMスワップ | ✅ 防げる(SMS OTPより安全) | ✅ 防げる |
| フィッシング | ⚠️ 30秒以内に悪用される可能性 | ✅ ドメイン検証で防げる |
| 導入コスト | ✅ 低い(アプリのみ) | ⚠️ 対応デバイスが必要 |
関連する規格・RFC
| 規格・RFC番号 | 内容 |
|---|---|
| RFC 6238 | TOTPの標準仕様。時刻ベースのOTP生成アルゴリズムを定義 |
| RFC 4226 | HOTPの標準仕様。TOTPの基礎となるカウンターベースOTP |
| RFC 2104 | HMAC(Hash-based Message Authentication Code)の定義。TOTPの計算に使用 |
| RFC 6287 | OCRA(OATHチャレンジレスポンス)アルゴリズム。OTPの拡張仕様 |
関連用語
- 二要素認証(2FA) — パスワードに加えてもう一つの認証要素を組み合わせるセキュリティ手法
- 多要素認証(MFA) — 2つ以上の異なる認証要素を組み合わせる認証方式
- HOTP — カウンターベースのワンタイムパスワード方式。TOTPの前身
- FIDO2 / パスキー — 公開鍵暗号を使ったフィッシング耐性の高い次世代認証規格
- HMAC — 秘密鍵とハッシュ関数を組み合わせたメッセージ認証コード。TOTPの計算基盤
- シングルサインオン(SSO) — 一度のログインで複数サービスに認証を通す仕組み
- 認証アプリ — Google AuthenticatorやMicrosoft AuthenticatorなどTOTPを生成するスマホアプリ
- SMS認証 — SMSでワンタイムパスワードを送る方式。TOTPより利便性は高いがSIMスワップ攻撃に弱い