認証

ワンタイムパスワード わんたいむぱすわーど

二段階認証多要素認証TOTPHOTPSMS認証使い捨てパスワード
ワンタイムパスワードについて教えて

簡単に言うとこんな感じ!

「1回しか使えないパスワード」のことだよ!ネットバンキングにログインするとき、スマホにSMSで「123456」みたいな数字が届いて、それを入力するやつ。使ったら即失効するから、万が一盗まれても二度と使えない、超セキュアな合言葉なんだ!


ワンタイムパスワードとは

ワンタイムパスワード(OTP: One-Time Password) とは、一度しか使えない使い捨てのパスワードのことです。通常のパスワードは何度でも使い回せますが、OTPは認証に成功した瞬間、あるいは一定時間が経過すると自動的に無効になります。

OTPが生まれた背景には、固定パスワードの根本的な弱点があります。固定パスワードはフィッシング詐欺(偽サイトで入力させて盗む手口)やリスト型攻撃(漏洩したID・パスワードを別サービスで試す攻撃)に対して無力です。しかしOTPは「盗んでも次の瞬間には使えない」という性質を持つため、これらの攻撃を根本から無効化できます。

実務では、パスワード+OTP という組み合わせで使われることがほとんどです。「知っているもの(パスワード)」と「持っているもの(OTPを受け取るスマホ等)」を組み合わせることで、セキュリティを二重にする 多要素認証(MFA) の中核技術として広く普及しています。


OTPの種類と仕組み

OTPには主に2つの生成方式があります。どちらも「サーバーとクライアントが同じルールで同じ値を計算する」という考え方が根本にあります。

方式正式名称有効期限の決め方主な用途
TOTPTime-based OTP現在時刻(30秒ごとに変わる)Google Authenticator、Microsoft Authenticator
HOTPHMAC-based OTP認証回数(カウンター方式)ハードウェアトークン
SMS OTP送信後数分(サーバー側で管理)ネットバンキング、ECサイト
メールOTP送信後数分(サーバー側で管理)アカウント確認、パスワードリセット

TOTP の仕組みを「時計の針」で覚える

TOTPは「今の時刻」を種(シード)にしてパスワードを計算します。サーバーもスマホアプリも同じ秘密鍵と同じ時刻を持っているので、同じ計算をすれば同じ6桁が出る、という仕組みです。

┌─────────────────┐        ┌─────────────────┐
│   スマホアプリ   │        │    サーバー側    │
│                 │        │                 │
│  秘密鍵 + 時刻  │        │  秘密鍵 + 時刻  │
│       ↓         │        │       ↓         │
│   HMAC計算      │        │   HMAC計算      │
│       ↓         │        │       ↓         │
│   「483921」     │ ←一致→ │   「483921」     │
└─────────────────┘        └─────────────────┘
  (ユーザーが入力)          (サーバーが検証)

数字は30秒で変わる

TOTPは通常 30秒ごとに新しい値を生成 します。アプリのパスワード横にある「残り秒数を示す円グラフ」がそれを示しています。時刻がズレるとOTPも合わなくなるため、スマホの時刻自動同期が必須です。


歴史と背景

  • 1981年 — Leslie Lamportがハッシュチェーンを用いたワンタイムパスワードの概念を論文で発表。OTPの理論的出発点となった。
  • 1998年RFC 2289 として「S/KEY」ベースのOTP仕様が標準化される。
  • 2000年代前半 — ネットバンキングの普及に伴い、SMSによるOTP認証が日本でも一般化。
  • 2005年 — OATH(Initiative for Open Authentication)が HOTP仕様 を策定、後にRFC 4226として標準化。
  • 2011年RFC 6238 にてTOTPが標準化。Google AuthenticatorがTOTPを採用し、スマホアプリによる認証が爆発的に普及。
  • 2010年代後半〜現在 — フィッシング被害の増加を背景に、各金融機関・クラウドサービスがOTPを標準搭載。FIDOなどのパスワードレス認証との併用も進んでいる。

SMS・アプリ・ハードウェアトークンの比較

OTPの「受け取り手段」は大きく3種類あり、セキュリティと使いやすさのバランスが異なります。

OTP受け取り手段の比較 SMS認証 📱 携帯番号に届く ✅ 導入コストゼロ ✅ 誰でも使える ⚠️ SIMスワップに脆弱 ⚠️ 電波圏外で使えない セキュリティ: ★★★ 認証アプリ (TOTP) 📲 アプリで生成 ✅ オフラインでも動作 ✅ SMS傍受に強い ⚠️ スマホ紛失リスク ⚠️ 初期設定が必要 セキュリティ: ★★★★ ハードウェアトークン 🔑 専用デバイス ✅ フィッシングに最強 ✅ スマホ不要 ⚠️ デバイス購入コスト ⚠️ 紛失・忘れるリスク セキュリティ: ★★★★★ ※ セキュリティ評価はSIMスワップ・フィッシング耐性を加味した相対評価

SIMスワップ攻撃とは

SMS認証の弱点として知られる SIMスワップ とは、攻撃者が携帯キャリアに不正な手続きをして、被害者の電話番号を自分のSIMカードに乗っ取る攻撃です。成功するとSMSのOTPも攻撃者のスマホに届くようになります。重要なシステムほど認証アプリやハードウェアトークンの利用を検討しましょう。


関連する規格・RFC

規格・RFC番号内容
RFC 2289S/KEY ワンタイムパスワードの標準仕様(1998年)
RFC 4226HOTP(HMAC-Based One-Time Password)仕様
RFC 6238TOTP(Time-Based One-Time Password)仕様
FIDO2 / WebAuthnOTPを超えたパスワードレス認証の次世代規格

関連用語

  • 多要素認証(MFA) — パスワード+OTPなど、複数の認証要素を組み合わせる手法
  • 二段階認証 — ログインを2ステップで行う認証方式。OTPはその代表的な第2要素
  • フィッシング詐欺 — 偽サイトでパスワードやOTPを騙し取る攻撃手法
  • [FIDO