1 概要

ワンタイムパスワードは、認証のたびに新しく生成され、原則として一度だけ使えるパスワードである。固定式の合言葉と異なり、短時間で失効するため、盗み見や再利用による不正利用を抑えやすい。金融機関、業務用システム、一般向けオンラインサービスなどで広く採用されている。

1.1 定義

この方式は、利用者入力する認証情報を毎回変化させる点に特徴がある。生成には時刻、回数、秘密鍵、乱数などが関わり、サーバー側で正当性を照合する。文脈によっては、英語の略称でOTPとも呼ばれる。

1.2 特徴

最大の特徴は、漏えいしても使える時間が極めて短いことである。通常のパスワードに比べ、記録再送を通じた悪用に強い。一方で、利用者は都度の入力や受信を求められるため、操作の手間がやや増える。

1.3 利用目的

主な目的は、本人確認の強化である。特に、口座操作、機密情報へのアクセス、重要設定の変更など、失敗時の影響が大きい場面で重視される。また、二要素認証の一部として導入されることも多い。

2 歴史

ワンタイムパスワードの発想は、使い回しできない認証手段を求める流れの中で発展した。初期には、紙媒体や専用装置を用いた仕組みが中心だったが、通信技術と計算機の普及により、実用範囲が広がった。

2.1 初期の認証方式

初期の方式では、暗号表や乱数表、使い切りの認証リストが用いられた。これらは手作業に近い運用を伴い、導入先は限定されていたが、再利用を防ぐ基本思想を明確に示していた。のちに電子的な生成装置へ置き換えられていく。

2.2 普及の背景

普及を後押しした要因には、オンライン取引の増加、なりすまし対策の必要性、携帯端末の普及がある。固定パスワードだけでは防ぎにくい攻撃が増え、短寿命の認証情報が注目された。加えて、規制や業界標準が導入を促した。

2.3 現代の利用環境

現在は、スマートフォンの認証アプリ、SMS、電子メール、専用ハードウェアなど、多様な経路で配布される。クラウド型サービスやリモートワーク環境でも一般的になり、ユーザー数や用途に応じて方式を選べるようになっている。

3 仕組み

ワンタイムパスワードは、共通の秘密情報と外部条件を組み合わせて生成される。サーバーと利用者端末が同じ計算結果を導けるように設計され、照合時には有効期間や一致条件が確認される。

3.1 基本原理

基本原理は、同じ入力から同じ短期認証値を作ることにある。ただし、その入力は毎回変わるため、前回の値を繰り返し使うことはできない。方式により、時間を基準にするもの、回数で進めるもの、対話的に生成するものがある。

3.1.1 時刻同期方式

時刻同期方式は、現在時刻を区切って計算する。一定間隔ごとに値が更新されるため、利用者とサーバーの時計が近い状態であれば照合しやすい。短時間で切り替わるので、定期的な更新前提となる。

3.1.2 回数同期方式

回数同期方式では、利用のたびにカウンタを進めて新しい値を作る。認証のたびに順番が変化するため、同じ番号の再使用を避けやすい。途中で処理が失敗すると、端末とサーバーの回数がずれることがある。

3.1.3 挑戦応答方式

挑戦応答方式は、サーバーが送る挑戦値に対して、利用者側が応答を返す構造である。対話型であるため、通信経路上の状況に応じた認証が可能になる。特定のセッションに結び付く点も利点である。

3.2 生成アルゴリズム

生成アルゴリズムは、秘密鍵と変化要素を入力し、桁数をそろえた認証コードを出力する。暗号関数や切り出し処理を組み合わせ、短い文字列に変換するのが一般的である。実装ごとの差はあるが、改ざんされにくさと再現性の両立が求められる。

3.2.1 暗号学的要素

暗号学的要素には、ハッシュ関数、共通鍵、署名に近い検証処理などが含まれる。推測困難性を確保するため、単純な乱数だけに頼らず、秘密情報を中心に構成されることが多い。安全性は、鍵の管理品質にも左右される。

3.2.2 有効期限の設定

有効期限は、使い捨て性を支える重要な条件である。数十秒から数分程度に限定されることが多く、古い値の悪用余地を狭める。期限を短くすると安全性は高まりやすいが、利用者の入力遅れには注意が必要となる。

3.3 認証の流れ

一般的な流れは、利用者がコードを取得し、サービス側が受け取った値を検証するというものだ。正当と判断されればログインや操作が許可され、失敗すれば再入力や追加確認が求められる。照合は自動化され、短時間で完了する。

4 種類

ワンタイムパスワードには、表示形式や配布経路の違いによって複数の型がある。利用環境やセキュリティ要件に応じて選択され、組織向けには専用機器、一般向けにはソフトウェア型が多い。

4.1 使い捨てコード

使い捨てコードは、数字や英数字の短い列として提示される形式である。入力しやすく、広い端末で扱えるため、導入例が多い。一定回数の試行で無効化されることもある。

4.2 物理トークン

物理トークンは、専用の小型装置がコードを表示する方式である。独立した機器として動作するため、端末感染の影響を受けにくい。電池切れや紛失には注意が必要である。

4.3 アプリケーション生成型

アプリケーション生成型は、スマートフォンの認証アプリがコードを生成する。通信が不要な場合もあり、利用者にとって扱いやすい。複数サービスをまとめて管理できる点も支持されている。

4.4 電子メール受信型

電子メール受信型は、登録済みのメールアドレスに認証コードを送る方法である。追加の機器を要しない反面、メールアカウントの安全性に依存する。受信遅延や迷惑メール判定の影響を受けることがある。

4.5 短文メッセージ受信型

短文メッセージ受信型は、SMSでコードを受け取る方式である。携帯電話番号を用いるため導入しやすいが、電波状況や番号移転の問題がある。端末の乗っ取り対策としては、より強い手段と組み合わせる場合がある。

5 利用分野

ワンタイムパスワードは、重要な操作を保護する目的でさまざまな分野に使われる。利用対象は、個人のログインから企業の管理機能まで幅広い。

5.1 金融サービス

金融分野では、振込、送金、口座情報の変更などに適用される。誤用時の損失が大きいため、追加認証の価値が高い。法令や業界指針に沿って、複数手段の併用が行われることもある。

5.2 企業の情報システム

企業環境では、VPN接続、管理画面、特権アカウントの利用に組み込まれる。内部不正や外部侵入への備えとして扱われ、統合認証基盤の一部になることも多い。遠隔勤務の増加で重要性が増した。

5.3 個人向けオンラインサービス

個人向けでは、SNS、買い物、クラウド保管、ゲーム配信などで使われる。アカウント乗っ取りを防ぐ補助策として導入され、設定の簡便さが普及の鍵となる。通知型の確認と組み合わせる場合もある。

5.4 端末や機器の設定

端末や機器の設定画面でも、初期登録や管理者変更時に求められることがある。ルーター、監視装置、業務用端末などで有効であり、初回アクセスの保護に役立つ。設定変更時の誤操作も防ぎやすい。

6 利点

この方式は、安全性を高めながら比較的導入しやすい点が評価されている。既存のログイン手順に追加しやすく、運用の負担も一定範囲に収まりやすい。

6.1 再利用の防止

各コードは短命で、前回の値をそのまま再使用できない。記録された認証情報を後で流用する攻撃に対し、抑止力がある。単発の情報漏えいが直ちに継続的被害へつながりにくい。

6.2 盗難対策

通常のパスワードが盗まれても、追加の確認があれば突破しにくくなる。特に、第三者がログイン情報だけを入手した場合に有効である。ただし、別経路で同時に奪われると効果は下がる。

6.3 導入のしやすさ

多くのシステムでは、既存の認証基盤に比較的少ない変更で追加できる。利用者側も、アプリや受信手段を用意すれば始めやすい。専用ハードウェアが不要な方式は、配布面でも有利である。

7 課題

利便性が高い一方で、運用上の弱点もある。通信、端末、時刻管理など、周辺条件に依存する点があり、完全な万能策ではない。

7.1 受信手段への依存

メールやSMSに頼る方式では、受信環境が悪いと認証できない。通信障害、圏外、メール遅延が発生すると、利用者の作業が中断される。代替の取得経路を確保する設計が望ましい。

7.2 時刻ずれの問題

時刻同期方式では、端末とサーバーの時計差が大きいと照合が失敗しやすい。時刻補正の幅を広げれば使いやすくなるが、許容しすぎると安全性が下がる。同期の保守が必要となる。

7.3 フィッシングへの弱さ

偽の入力画面に誘導されると、利用者が有効なコードを盗まれるおそれがある。短時間しか使えなくても、攻撃者が即座に利用すれば被害につながる。画面の真正性確認や追加の対策が重要である。

7.4 紛失時の対応

物理トークンやスマートフォンを失うと、本人確認が難しくなる。再発行や予備手段がない場合、アクセス不能に陥ることがある。管理手順を整え、復旧経路を事前に用意しておく必要がある。

8 関連技術

ワンタイムパスワードは単独でも使えるが、他の認証技術と組み合わせることで効果が高まる。全体の設計では、利便性と強度の均衡が重視される。

8.1 二要素認証

二要素認証は、知識、所持、身体特性など異なる要素を組み合わせる方式である。ワンタイムパスワードは、所持要素や補助要素として使われることが多い。固定パスワードだけの場合より、突破難度を上げられる。

8.2 多要素認証

多要素認証は、二つ以上の独立した確認を要求する考え方である。生体認証や端末確認と併用されることがあり、重要操作向けに採用される。段階的に認証を強める設計とも相性がよい。

8.3 認証アプリケーション

認証アプリケーションは、コード生成や承認通知を行うソフトウェアである。複数サービスの鍵情報を管理し、通知ベースの承認に対応するものもある。近年の利用増加に伴い、主要な配布手段になっている。

8.4 公開鍵基盤

公開鍵基盤は、電子証明書を用いて通信相手の信頼性を確かめる枠組みである。ワンタイムパスワードとは役割が異なるが、同じ認証基盤の中で併用されることがある。相互補完により、全体の堅牢性を高めやすい。

9 セキュリティ上の注意

運用の適切さが、方式の有効性を左右する。コード自体が短命でも、扱い方を誤ると保護効果は下がる。

9.1 使い回しの危険性

同じコードを複数回使える設定や、長い有効時間は望ましくない。再送や転記の都合で残った情報が悪用される余地を広げる。期限と試行回数の管理が重要である。

9.2 共有の禁止

認証コードを他人と共有すると、本人確認の意味が損なわれる。家族や同僚との一時的な受け渡しであっても、管理責任が曖昧になりやすい。個人ごとの利用を前提に設計すべきである。

9.3 保管方法

紙やメモアプリに記録する場合は、第三者が見られない場所に置く必要がある。端末内保存でも、画面ロックや暗号化を併用すると安全性が上がる。バックアップの扱いも慎重さが求められる。

9.4 予備手段の確保

失効、紛失、端末故障に備え、予備コードや代替認証手段を用意しておくと復旧しやすい。管理者向けの再発行手順や本人確認の流れを明確にしておくことが望ましい。緊急時の手順は事前周知が有効である。

10 実装と運用

実装では、生成の正確さと照合の堅牢さが重要になる。運用面では、登録、失敗処理、復旧、監査の各要素を整える必要がある。

10.1 サーバー側の設計

サーバー側では、秘密情報の保護、検証ロジックの整合、失敗回数の制御が中心となる。ログの取り扱いにも注意が必要で、認証値をそのまま保存しない設計が望ましい。大規模環境では負荷分散も考慮される。

10.2 クライアント側の実装

利用者端末では、コード取得のしやすさ、通知の見やすさ、入力の誤りにくさが重視される。アプリ型では、初期登録時の秘密情報の扱いが特に重要である。端末間移行の仕組みも実用上の関心点となる。

10.3 失敗時の処理

認証に失敗した際は、単純な再試行だけでなく、遅延や警告を挟む設計が有効である。連続失敗が続く場合は、一時停止や追加確認を入れることがある。過剰なロックは利用不能を招くため、バランスが求められる。

10.4 管理者向け設定

管理者は、対象ユーザーの登録、解除、再発行、強制リセットを統制する。権限分離を徹底し、操作履歴を残すことで、誤設定や不正変更を追跡しやすくなる。運用規程の整備が全体の信頼性を支える。