ワンタイムパスワード

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内検索

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

目的[編集]

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

技術的分類[編集]

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

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

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

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

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

もしも無限に連続するパスワードが必要であれば、シードsに対するパスワードの組を使い切った後で新しいシード値が選ばれることになる。作成された結果に基づき、それぞれのパスワードは、生成順とは逆に使われていく。

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

侵入者がワンタイムパスワードの内容を知ってしまった場合、一定期間の間アクセスあるいはログインすることができる。しかし、パスワードが偶然知られても一定期間経過後そのパスワードは無効となる。以前のパスワードから一連のパスワードの中で次に有効なものを入手するには、逆関数 f^{-1}\,を計算する方法を発見する必要がある。関数fは一方向になるように選ばれているので、実際に逆関数を算出することはきわめて困難である。関数 f\,暗号ハッシュ関数が選ばれている場合(たいていの場合はそうだが)、知られている限り一方向関数 f\,に対する逆関数の算出は不可能である。

時刻同期型ワンタイムパスワードの実装[編集]

ジャパンネット銀行のハードウェアトークン

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

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

チャレンジタ型ワンタイムパスワードの実装[編集]

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

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

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

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

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

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

各技術の比較[編集]

時刻同期型の長所とその他の方式の短所[編集]

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

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

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

時刻同期型の短所とその他の方式の長所[編集]

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

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

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

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

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

時刻同期方式とその他の方式の違い[編集]

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

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

関連技術[編集]

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

特定のワンタイムパスワード技術[編集]

商品名・技術名 提供元・開発者 特徴
N/A ザイセル 統合サービスゲートウェイセキュリティアプライアンスのラインナップ。
N/A ザイセル 二要素認証のためのワンタイムパスワードソリューション。
S/KEY ベルコア英語版[4] RFC 1760に記載されている。
SecurID セキュリティダイナミックス[5]
OTPW英語版 マーカス・クーン[6] ログインパッケージ
OTP N/A S/KEY に基づいたシステムで、S/KEY の名前に関連した商標問題が原因で改名した。RFC 2289 に記載されている。
HOTP英語版 N/A HMACベースのアルゴリズムである。OATH英語版の礎である。
飛天認証システム(FOAS) 飛天ジャパン OATH に準拠した認証サーバが用いられている。
N/A ジェムアルト 強い認証サーバ(SAサーバー)である。OATH に基づいた多くのフォーム・ファクター・デバイス(スマートカード、接続機器あるいは非接続機器他)が用いられる。
VACMAN サーバー
Digipass ハードウェアトークン
ヴァーチャル Digipass
バスコ英語版
IAP800 N/A IAP800インフラストラクチャ(OATH HOTP 及び TOTP 標準にディスプレイカードとトークン)
OTPAuth ジェームズ・A・バークレイ[7] PHPで記述されたウェブサイト認証用のウェブベースのライブラリである[8]
1Key ロー社[9] iPhone 向けのワンタイムパスワードキーの生成と管理機能を提供する。
セルラー・オーセンティケーション・トークン(CAT[10] メガASコンサルティング社 携帯電話及びその他のオペレーティングシステム向け。
N/A メガASコンサルティング社 OATH TOTPに基づいた二要素認証用のソリューションを提供している。
YubiKey ユビコ社[11] オープンソースソフトウェアライブラリで支えられたワンタイムパスワードアルゴリズムである。
TimeOTP 未来テクノロジー社[12] 世界で初めて時間同期式のカードタイプを実現した。日本では、ダウジャパン株式会社が提供している。

脚注[編集]

  1. ^ : Chip Authentication Program
  2. ^ 「ザ・レジスター」の記事(英語)
  3. ^ ワシントン・ポスト誌セキュリティ・ブログより(英語)
  4. ^ テルコーディア・テクノロジーズ英語版
  5. ^ RSAセキュリティ
  6. ^ Markus Kuhnケンブリッジ大学
  7. ^ : James A. Barkley
  8. ^ グーグルによる解説(英語)
  9. ^ : Rho
  10. ^ : Cellular Authentication Token
  11. ^ : Yubico
  12. ^ 大韓民国の会社

外部リンク[編集]