認証とは
認証とは利用するサービスに対して自身が利用者本人であることを証明するための手続きです。サービス側へIDとパスワードを提供することで利用者が本人であることをサービス側は認識します。
パスワードの危険性

パスワードへの攻撃方法
パスワードへの攻撃方法は次のようなものが挙げられます。
・類推攻撃

・リスト型攻撃

・辞書攻撃

・総当たり攻撃(ブルートフォース攻撃)

・リバースブルートフォース攻撃

・パスワードスプレー攻撃

ワンタイムパスワードのメリット
上述の通り、多くのパスワードへの攻撃はパスワードが固定されている前提で行われます。すなわち、パスワードが毎回異なるワンタイムパスワードには、こういった攻撃を防ぐことに有効です。 また、ワンタイムパスワードは管理者やユーザーの負担を減らすことも可能です。通常のパスワードの場合、ユーザー数が増えれば管理が必要となるID・パスワードも増えますが、ワンタイムパスワードであればそのような手間を軽減することができます。 ユーザーも毎回異なるパスワードを使用するため定期的に行っていたパスワード変更の必要がなくなります。
ワンタイムパスワードの発行方法
ワンタイムパスワードを発行する方法は大きく分けて「トークン」「トークンレス」「SMS」「電話」などがあります。
トークンとは
トークンとはワンタイムパスワードを表示するツールです。 キーホルダータイプやカードタイプの専用機器にパスワードを表示するハードウェアトークン、スマートフォンに専用アプリをダウンロードしてパスワードを表示するソフトウェアトークンが一般的です。 逆にトークンを使わずブラウザだけでパスワードを表示することをトークンレスといいます。 これらの方式には、メリットとデメリットがあります。
・ハードウェアトークン

ワンタイムパスワードを生成する専用の機器(ハードウェア)のことで、カードタイプやキーホルダータイプなどがあります。 ハードウェアトークンの液晶画面に、ワンタイムパスワードを表示します。液晶画面は常時表示されている製品と、使用時にスイッチをいれて表示させるタイプの製品があります。 表示されるワンタイムパスワードは30秒ごと(または60秒ごと)に再生成されます。メリットはユーザー操作の分かりやすさです。デメリットは、持っていないとログインができないため、どこに行くにもユーザーが持ち歩かなければならないことと、盗難紛失時の不正利用リスクがあることです。また、トークンの購入や配布、電池期限や故障対応などの管理コストがユーザー数に比例して増えてしまうことです。
・ソフトウェアトークン

ワンタイムパスワードを表示するためのソフトウェアタイプのトークンです。iPhoneやAndroid上に専用アプリをインストールし、アプリ上でワンタイムパスワードを表示します。ハードウェアトークンと同様に30秒ごと(または60秒ごと)にワンタイムパスワードが再生成されます。メリットは手持ちのスマートフォンをそのまま利用できるため、追加コストを掛けずに利用できることです。一方で、手持ちのスマートフォンが無い場合は、スマートフォンの新規調達が必要というデメリットがあります。
・トークンレス

ブラウザだけでワンタイムパスワードを実現する方法です。ブラウザ上にユーザーだけが解読できる暗号表を提示し、ワンタイムパスワードを読み取ります。メリットはトークンの調達や配布、初期セットアップや管理がいらず、導入のしやすいことと、数百名、数千名を超える規模のユーザーにも即日で提供開始ができる点です。一方デメリットは、暗号表タイプのものを初めて利用する場合は、利用者に対して暗号表の使い方を伝えておく必要があることです。
・SMS

ユーザー宛にSMSやメールでワンタイムパスワードを通知する方法です。メリットは標準アプリだけで利用できることです。一方、SMSについては認証のたびに通信コストが発生します。また、SMS認証が傍受される大規模な事件が起こるなど、安全性に関して懸念されます。(米国立標準技術研究所(NIST)は、SMSでシークレットコードを送ることを禁止しています)
・音声

ユーザー宛に直接音声電話によってワンタイムパスワードを通知する方法です。 メリットは電話が使えれば始められるという導入のしやすさです。デメリットは通話コストの他、受電しながらワンタイムパスワードを入力しにくい点です。
ワンタイムパスワードの仕組みについて
ワンタイムパスワード認証の仕組みは次の3種類があります。
・チャレンジレスポンス方式
「チャレンジ」と呼ばれるランダムな文字列を基に、ワンタイムパスワード(「レスポンス」)を生成する方式です。 チャレンジレスポンス方式では、ユーザーがサーバーに対しアクセスを要求すると、サーバーはチャレンジを生成しユーザーに返します。ユーザーは指定された計算式を使いレスポンスを生成してサーバーへ送り返します。サーバーはユーザーから送られたレスポンスと、サーバー自身が計算したパスワードを照合し、一致していれば認証が成功となるわけです。
・時刻同期方式 (タイムスタンプ方式)
認証時の時刻を基に、トークンでワンタイムパスワードを生成する方式です。 最近では、ハードウェアではなくスマートフォンのアプリなどでトークンの代わりにするケースも増えています。 ユーザーが手元のトークンのボタンを押すと、その時刻において有効なワンタイムパスワードが表示されます。 ユーザーがワンタイムパスワードを入力すると、サーバーが照合を行い、正しければ認証されます。
・カウンタ同期方式
発行回数を基に、トークンでワンタイムパスワードを生成する方式です。 ユーザーが手元のトークンボタンを押すと、その発行回数において有効なワンタイムパスワードが表示されます。ユーザーがワンタイムパスワードを入力すると、サーバーが照合を行い、正しければ認証されます。 時刻同期方式(タイムスタンプ方式)との違いは、時刻を利用するのではなく発行回数を利用する点です。
ワンタイムパスワードの活用事例
・トークンレスの導入事例
・ソフトウェアトークンの導入事例
・ハードウェアトークンの導入事例