コラム

ワンタイムパスワードとは ~仕組みや種類をわかりやすく解説~

ワンタイムパスワードとは認証時に使用するパスワードの種類の1つであり、文字通り1回のみ使用可能な変動する値のパスワードです。一方、パスワードとは毎回固定された値のパスワードのことを言います

 

認証とは

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

パスワードの危険性

パスワードの危険性 同じパスワードを使いまわしたり、覚えやすい簡易的なパスワードを利用したりすると、パスワード攻撃による不正ログインの被害にあう可能性が高まります。 事実、パスワードへの攻撃の多くは、使用するユーザIDとパスワードが固定されていることが前提で行われます。言い換えると、パスワードが毎回異なるワンタイムパスワードであれば、こういった攻撃を防ぐことが可能です。
近年では、サイバー攻撃の本来の対象となる企業は直接攻撃せずに、その取引先や関係する個人が狙われる事件が多発しています。「自分のパソコンには大した情報が入っていないから関係ない」と油断していると、取引先や関係者に大損害を与えるような取り返しのつかない事態に発展することが起き始めているのです。

パスワードへの攻撃方法

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

・類推攻撃
類推攻撃 ユーザーの環境や情報から類推したパスワードを試していく方法です。 例えば、ユーザー自身や家族の誕生日、飼っているペットの名前、自身や会社の電話番号、住所、車のナンバープレートなどの情報からパスワードを類推して入力していきます。 近年はSNSに掲載された情報が用いられる場合もあります。
・リスト型攻撃
リスト型攻撃 サービス事業者から漏洩してしまったID・パスワード情報は、ネットワーク上に出回っています。 このパスワードリストを使用し、サービスへのログインを試みる方法です。ユーザーは、複数のサービスで同じID・パスワードを使い回す傾向にあるため、他の攻撃よりも成功率が高いという現実があります。従業員が、プライベートで利用しているパスワードを会社のシステムでも利用していると、この攻撃の被害に遭うことが懸念されます。
・辞書攻撃
辞書攻撃 パスワードには、辞書に掲載されている単語が使われている傾向があります。 また、キーボード配列を利用した文字列(「qwerty」や「qazwsx」)、使われやすい単語の文字の一部を似た文字に置き換えた文字列(「pa55w0rd」など)など、パスワードに使われやすい文字列があります。 このようなパスワードに使われやすい単語や文字列のリストを使用する方法です。
・総当たり攻撃(ブルートフォース攻撃)
総当たり攻撃(ブルートフォース攻撃) すべての文字を組み合わせて、すべてのパターンのパスワードをひとつずつ総当たりで入力し、強引に正解のパスワードを割り出す方法です。 非常に多くの組み合わせがあるため、効率の悪い方法ですが、認証失敗回数制限によりIDを凍結(アカウントロック)しないと、いくらでも試せるため、いつかは不正ログインされてしまう可能性があります。
・リバースブルートフォース攻撃
リバースブルートフォース攻撃 総当たり攻撃が、IDを固定しパスワードを総当たりで入力していくのに対し、パスワードを固定し、IDを総当たりで入力していく方法です。アカウントロックから逃れられるため、いつかはログイン可能なIDが割り出されてしまう可能性があります。固定するパスワードには「password」など使われやすいパスワードが用いられます。
・パスワードスプレー攻撃
パスワードスプレー攻撃 総当たり攻撃の一種ですが、「アカウントロックがかからない範囲で実行」や「機械的に連続試行しない」など、監視から怪しまれないように時間をかけて総当たり攻撃をする方法です。時間はかかるものの、監視の目を掻い潜り、継続的に攻撃し続けることが可能です。特定のサービスにこだわらず、複数のサービスを同時に攻撃対象とすることで成功率を上げています。
 

ワンタイムパスワードのメリット

上述の通り、多くのパスワードへの攻撃はパスワードが固定されている前提で行われます。すなわち、パスワードが毎回異なるワンタイムパスワードには、こういった攻撃を防ぐことに有効です。 また、ワンタイムパスワードは管理者やユーザーの負担を減らすことも可能です。通常のパスワードの場合、ユーザー数が増えれば管理が必要となるID・パスワードも増えますが、ワンタイムパスワードであればそのような手間を軽減することができます。 ユーザーも毎回異なるパスワードを使用するため定期的に行っていたパスワード変更の必要がなくなります。

ワンタイムパスワードの発行方法

ワンタイムパスワードを発行する方法は大きく分けて「トークン」「トークンレス」「SMS」「電話」などがあります。

トークンとは

トークンとはワンタイムパスワードを表示するツールです。 キーホルダータイプやカードタイプの専用機器にパスワードを表示するハードウェアトークン、スマートフォンに専用アプリをダウンロードしてパスワードを表示するソフトウェアトークンが一般的です。 逆にトークンを使わずブラウザだけでパスワードを表示することをトークンレスといいます。 これらの方式には、メリットとデメリットがあります。

・ハードウェアトークン
ハードウェアトークン

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

・ソフトウェアトークン
ソフトウェアトークン

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

・トークンレス
トークンレス

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

・SMS
サーバーが生成したワンタイムパスワードをSMSやメールアドレスに送る方法

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

・音声
サーバーが生成したワンタイムパスワードを音声電話で通知

ユーザー宛に直接音声電話によってワンタイムパスワードを通知する方法です。 メリットは電話が使えれば始められるという導入のしやすさです。デメリットは通話コストの他、受電しながらワンタイムパスワードを入力しにくい点です。

 

ワンタイムパスワードの仕組みについて

ワンタイムパスワード認証の仕組みは次の3種類があります。

・チャレンジレスポンス方式

「チャレンジ」と呼ばれるランダムな文字列を基に、ワンタイムパスワード(「レスポンス」)を生成する方式です。 チャレンジレスポンス方式では、ユーザーがサーバーに対しアクセスを要求すると、サーバーはチャレンジを生成しユーザーに返します。ユーザーは指定された計算式を使いレスポンスを生成してサーバーへ送り返します。サーバーはユーザーから送られたレスポンスと、サーバー自身が計算したパスワードを照合し、一致していれば認証が成功となるわけです。 チャレンジ&レスポンス方式

・時刻同期方式 (タイムスタンプ方式)

認証時の時刻を基に、トークンでワンタイムパスワードを生成する方式です。 最近では、ハードウェアではなくスマートフォンのアプリなどでトークンの代わりにするケースも増えています。 時刻同期方式(タイムスタンプ方式) ユーザーが手元のトークンのボタンを押すと、その時刻において有効なワンタイムパスワードが表示されます。 ユーザーがワンタイムパスワードを入力すると、サーバーが照合を行い、正しければ認証されます。

・カウンタ同期方式

発行回数を基に、トークンでワンタイムパスワードを生成する方式です。 時刻同期方式(タイムスタンプ方式) ユーザーが手元のトークンボタンを押すと、その発行回数において有効なワンタイムパスワードが表示されます。ユーザーがワンタイムパスワードを入力すると、サーバーが照合を行い、正しければ認証されます。 時刻同期方式(タイムスタンプ方式)との違いは、時刻を利用するのではなく発行回数を利用する点です。

 

ワンタイムパスワードの活用事例

・トークンレスの導入事例

・ソフトウェアトークンの導入事例

・ハードウェアトークンの導入事例

Windows OSへのサインインを二段階認証に(せぐなべブログ)

 

PAGE TOP