ワンタイムパスワード(OTP)

 インターネット上でパスワードを送信することは非常に危険です。通信の途中でパスワードを盗み見られる危険があるからです。そこで、通信路を暗号化するという案が出てきます。しかし、通信路の暗号化はシステムの構築が大変で導入には少しハードルが上がります。もっと簡単にパスワードを守る方法はないでしょうか。その選択肢の1つがワンタイムパスワードです。

 ワンタイムパスワード(one-time password、OTP)とは、「1回限りのパスワード」を使って本人認証をする方式です。本人認証のたび毎に有効なパスワードが変わりますので、悪意の第三者がパスワードを盗んでも、そのパスワードはもう使えません。

 ワンタイムパスワードの手法にはいくつかのものがありますが、大きく分けると、認証サーバとクライアントの間で何らかの方法で時刻を同期させて、その時刻からパスワードを生成するタイプ、認証サーバが生成したチャレンジと、パスワードから新たなパスワードを生成するタイプ、紙に印刷したパスワードのリストをお互いに持って、そのリストの何番目のものを利用するかを、合意することで、新しいパスワードを生成するタイプ、ワンタイムパスワードを携帯電話などの「out-of-band」(アクセスに用いるネットワークとは別の帯域)を使って送信するタイプ、数学的アルゴリズムに基づき古いパスワードから新しいパスワードを作成するタイプ、などがあります。




1 時刻同期型

 時刻同期型(タイムシンクロナス、Time Synchronous)はクライアントと認証サーバの間で時刻を同期させます。この方法では、ユーザにトークンを配布します。トークンはUSBデバイスなどのハードウェアトークン、あるいはPC上で動作するソフトウェアトークンです。

 時刻同期型の例を次に示します。トークンの内蔵時計(ソフトウェアトークンの場合はPCの時計)による時刻データとトークン固有のシード値から、特定時刻にそのトークンにだけ有効なトークンコードが生成され、それがパスワードとして利用されます。


 上の例では、認証サーバ側では、最初にユーザから送信されたIDを元に、ファイルサーバからユーザ固有のトークンを取り出し、トークンのシード値と時刻データからトークンコードを生成し、ユーザから送られてきたパスワード(トークンコード)と比較してチェックをし、一致すればユーザ本人と認定します。





2 チャレンジレスポンス型

 チャレンジレスポンスタイプでは、認証サーバはログインしてきたユーザにチャレンジと呼ばれる値を送ります。このチャレンジはログイン毎に違った値です。クライアントはパスワードとチャレンジを組み合わせてハッシュ計算を行い、計算結果をレスポンスコードとして認証サーバに返します。このレスポンスコードはログイン毎に違った値となりますので、悪意のある第三者に盗まれたとしても心配はありません。

 認証サーバはクライアントと共有しているパスワードと、クライアントに投げかけたチャレンジから同様にハッシュ計算を行い、クライアントが送り返してきたレスポンスコードと比較し、一致すればユーザ本人と認定します。





3 トランザクション認証番号型

 トランザクション認証番号型はサーバからユーザに予め何らかのリストを渡しておいて、そのリストを基にしてパスワードを決める方式です。

 マトリクス認証方式と呼ばれるタイプは、利用者に縦横にランダムな数字やアルファベットが並んだ暗号表を渡しておいて、認証時に右から4列目、上から5行目というように座標を通知してその位置にある文字を入力してもらいます。1回の認証で数個の数字あるいはアルファベットを入力させます。

 銀行取引などでよく利用されるのがパスワードのリストです。銀行では最初に顧客本人を面接で認証し、その後顧客にパスワードのリストを渡します。顧客はオンライン・バンキングを行う際はこのリスつの中からパスワードを1つ選択して入力し、銀行はその顧客に渡したリストから使われたパスワードを確認するという方式です。この方式では1度使ったリストは2度と使わないように、使うごとに消していきます。



4 SMSを使ったアウト・オブ・バンド型

 アウトオブバンド(out of band)とは通常のデータトラフィックとは違う帯域を使った方式ということです。実際は携帯電話のSMSを使います。

 携帯電話は音声回線網とデータ回線網を使っています。これは3.9世代と呼ばれる携帯電話でも同様です。音声回線はいわゆる3Gという回線交換網を利用し、LTE(Long Term Evolution)はデータ回線網を使います。データ回線網はパケット通信網です。

 SMS(ショートメッセージサービス、Short Message Service)は、携帯電話やPHSなどで短いテキストによるメッセージを送信するサービスです。このメッセージサービスは音声回線を利用しています。従って、宛先は電話番号を使います。SMSを使ったアウト・オブ・バンド型のワンタイムパスワードはこの回線交換網を使う方式です。

 利用者の携帯番号を予め登録しておき、利用時に認証サーバから利用者にSMSでワンタイムパスワードを通知して、利用者がその場で入力するという方式です。認証に成功した場合、あるいは成功しなくても数分から数時間経過した場合は、そのパスワードは無効となります。





5 ワンタイムパスワードでも安心できない

 ワンタイムパスワードは認証の安全性を飛躍的に高めることができますが、フィッシングに対する脆弱性が指摘されています。実際に米国の銀行では多数のユーザがフィッシング詐欺に遭い預金を引き出されています。


 次の例はチャレンジレスポンスタイプの場合です。


 このような中間者攻撃は一見すると時刻同期型のワンタイムパスワードは安全のような気もしますが、時刻同期型でもパスワードを素早く使われてしまうと、結果は同様です。時刻同期型のワンタイムパスワードが攻撃を受けたという事例も実際に発生しています(2006年、US銀行)。





更新記録

2016/09/10     作成









































ページの先頭