ワンタイムパスワード (英: one-time password、OTP) とは、コンピュータリソースに対するアクセス用に発行される、一度限り有効なパスワードのことである。

## 目的

ワンタイムパスワードの目的は、コンピュータのアカウントのようにアクセス制限されたリソースに対して未承認アクセスすることをより困難にすることにある。従来の固定パスワードによるアクセス制限では、十分な機会と時間を与えられた承認を受けない侵入者にとっては容易にアクセスしうる。定期的にパスワードを変更することで、それも一度限り有効な(いわば使い捨ての)ワンタイムパスワードを利用することで、こうしたリスクは大幅に低減することができる。

## 技術的分類

ワンタイムパスワードには、基本的に5つのタイプがある。

1. 数学的アルゴリズムに基づき、古いパスワードから新しいパスワードを生成する方式
2. 認証サーバーとクライアントからの間で時刻同期をしてパスワードを供給する方式(時刻同期タイプ)
3. 数学的アルゴリズムに基づき、チャレンジ(認証サーバーあるいはトランザクションの詳細によって選ばれる乱数など)と以前のパスワードの代わりのカウンターに基づき新しいパスワードを生成する方式(チャレンジレスポンスタイプ)
4. 紙に印刷されたパスワードのリストを用いる方式(トランザクション認証番号タイプ)
5. ワンタイムパスワードを携帯電話などの「out-of-band」(アクセスに用いるネットワークとは別の帯域)を用いる方式

### 数学的アルゴリズムを用いるワンタイムパスワードの実装

一つめのアプローチは、レスリー・ランポートが考案した一方向性関数を用いたものである。一方向性関数 fを用いたワンタイムパスワードシステムは、初期シードsを与えることで機能しはじめ、以下の式のように、一方向性関数 f を繰り返し適用することで必要個数のパスワードを生成する。

$$f(s),f(f(s)),f(f(f(s))),...,f(f(...f(s))...)$$

作成したパスワードは、生成順とは逆に使っていく。

$$f(f(...f(s))...),...,f(f(f(s))),f(f(s)),f(s)$$

無限に連続するパスワードが必要な場合は、シードsに対するパスワードの組を使い切った後で新しいシード値が選ぶ。

もしも、侵入者に生成したパスワードを知られてしまった場合、侵入者はそのパスワードを用いて一定期間の間アクセスやログインをすることができる。しかし、各パスワードについて有効期限を定めておけば、侵入者は有効期限内にしかアクセスやログインを行えない。逆関数$f^{-1}\,$を計算すれば、以前のパスワードから一連のパスワードの中で次に有効なものを入手できるが、関数$f\,$に暗号ハッシュ関数を用いれば、逆関数の算出は実用的には不可能である。

### 時刻同期型ワンタイムパスワードの実装

時刻同期ワンタイムパスワードはしばしば物理的なハードウェアトークン(ワンタイムパスワードを生成する個人用トークンが各ユーザーに配布される)とともに用いられる。トークン内部は認証サーバーの時計と同期し続ける正確な時計となっている。こうしたワンタイムパスワードシステムにおいては、新しいパスワードは以前のパスワードや秘密鍵よりもむしろ現在の時刻に基づいて生成されるため、時刻はパスワード・アルゴリズムの重要な部分を占める。

時刻同期ワンタイムパスワードを生成するために、しばしば携帯電話やPDAが用いられる。このアプローチは、多くのインターネットユーザーがすでに携帯電話を保有していることから、よりコスト効率の高い選択肢になりうる。さらに、このアプローチでは、ユーザーがアクセスする必要のあるセキュリティ・ドメインごとに異なるハードウェアトークンを携帯しなくてもすむため、より利便性に優れているといえる。

### チャレンジ型ワンタイムパスワードの実装

この方式では、ワンタイムパスワードを利用するにあたりユーザーは正規に認証を受けるための時刻同期チャレンジ(問題)に対するレスポンス(回答)をサーバーに提示する必要がある。レスポンスはクライアント側でチャレンジの内容とパスワードの文字列を基に計算される。この作業は、具体的にはトークンに値を入力することで行われる。認証可能なワンタイムパスワードが複製されることを避けるため、通常はカウンターが組み込まれ、もし同じチャレンジが二度獲得されると、異なるワンタイムパスワードを生成する。同期問題が生じる可能性があるため、通常以前のワンタイムパスワードを組み込んで計算することはしない。EMVは欧州でクレジットカードのために「チップ・オーセンティケーション・プログラム」と呼ばれるシステムの使用を始めている。

### トランザクション認証番号型ワンタイムパスワードの実装

トランザクション認証番号(TAN)は、いくつかのオンライン・バンキング・サービスで、銀行取引を認証するための単独で使用するワンタイムパスワードとして採用されている。

典型的なTANシステムにおいては、まず顧客は銀行に行き、自らを認証する。次に、銀行は50種のユニークかつランダムに生成されたパスワードのリストを紙に印刷し、顧客に手渡す。顧客は自宅からオンライン・バンキングの取引を行う際にはパスワードリストの中の一つを使って署名し、使ったパスワードをリストから消す。銀行は自らが顧客に対して発行したTANの一覧に対して使われたTANを確認する。これが一致すれば、取引は処理される。一致しなければ取引は受け付けられない。ひとたび使用されたTANは消費され、以降の取引では使用することができない。

### SMSを使ったアウト・オブ・バンド方式ワンタイムパスワードの実装

一般的にワンタイムパスワードを配布するために用いられる技術は、ショートメッセージサービス(SMS)である。SMSはすべてのハンドセットで利用でき、多くの顧客ベースを持つユビキタスなコミュニケーション・チャネルなので、SMSによるメッセージングはすべての顧客に低廉なTCOでリーチする上で最も大きな潜在能力を持っている。トークンやスマートカードなど従来の認証方式は、実装により多くのコストがかかり、保有するにも値が張り、しばしば消費者から抵抗を受ける。そうした方式は、フィッシング攻撃者が顧客をだましてトークンやスマートカードが生成したワンタイムPINを聞き出すことでオンラインセッションをハイジャックする中間者攻撃に対する脆弱性が指摘されている。また、トークンは紛失する可能性があり、ワンタイムパスワードを携帯電話に統合することで、新たな携帯機器を持ち運ぶ必要がなくなり、より安全でシンプルに認証を行える可能性がある。

## 各技術の比較

### 時刻同期型の長所とその他の方式の短所

時刻同期ワンタイムパスワードには、明確なコスト節約効果がある。ユーザーはパスワードを生成しても使わなかったり、ミスタイプをしたりする傾向がある。時刻同期方式でないワンタイムパスワード・システム上で、これをすると、クライアントと認証サーバーが非同期を起こしてしまう。この結果、認証サーバーとクライアントの非同期状態を解消するために新たなクライアントを再発行しなければならず費用が発生してしまう。

時刻同期方式でないワンタイムパスワード・システムの認証サーバーはこの問題に配慮する必要がある。具体的には、間違ったパスワードを無視する、次に見込まれるパスワードの1つだけではなくより多く(例えば10個)の中のいずれでも受け付ける、再同期機構を追加するなどの方法が考えられる。こうした配慮を施すことで、実装に際して余分な労力、例えばサーバーシステムのコストに対する影響が生じるが、同期問題は回避できる。

(原文:サーバーはこの問題に配慮(間違ったパスワードを無視したり、次の1つのパスワードだけではなく、例えば10個のパスワードのいずれでも受け付けるか、再同期機構を追加するかにより)する必要があり、そうすれば、実装時に余分な労力、例えばサーバーシステムの価格に対する影響が生じるが、同期問題は回避できる。)

### 時刻同期型の短所とその他の方式の長所

一方で、ハードウェアトークンが時計を必要としないことから、電力を連続消費せず、電池も長持ちするので、時刻同期方式でないワンタイムパスワードにも明確なコスト節約効果がある。

まとめると、大量導入時には時刻同期式ワンタイムパスワードはより高価な選択となり、より高価で耐用期間の短いトークンのためのコストは、時刻同期式でないサーバーに対する追加コストを上回るだろう。

### ワンタイムパスワードのフィッシングに対する脆弱性

時刻同期式でないワンタイムパスワードはフィッシングに対して脆弱性がある。2005年後半、スウェーデン銀行の複数の顧客が自らのワンタイムパスワードをだまし取られている。しかし、時刻同期式のワンタイムパスワードも、パスワードがすばやく攻撃者に使われてしまえばフィッシングに対して脆弱性はある。このことは、2006年US銀行の顧客に対する攻撃の中で発生した事件で確認されている。

基本的に、こうしたシステムの利用者は、中間者攻撃に対する脆弱性があることを認識し、決してワンタイムパスワードを他者に漏らすべきではない。ワンタイムパスワードが時刻同期方式であるかないかは、脆弱性の程度とは基本的に無関係である。

### 時刻同期方式とその他の方式の違い

たいていの優れた時刻同期方式ワンタイムパスワード技術は特許対象であり、詳細が一般に公開されておらず、セキュリティ専門家によって理論的に安全性が確認されているわけではない。

このことは、他の二つのワンタイムパスワード方式が一般に安全とされている暗号アルゴリズムに依拠しているのと対照的に、時刻同期ワンタイムパスワードが難解さに基づくセキュリティに依拠していることを示している。(この難解さに基づくセキュリティ原則は多くのセキュリティ専門家が冷ややかに見ている)ことから、これを回避したい場合には数学アルゴリズム型ワンタイムパスワードはよき代用品となる。

## 関連技術

たいていの場合、ワンタイムパスワードを二要素認証ソリューションの具現化している。いくつかのシングルサインオンソリューションはワンタイムパスワードを利用している。ワンタイムパスワードは、しばしばセキュリティトークンとともに用いられる。