ワンタイム・パスワード

ワンタイム・パスワード

パスワードは、英数字や大文字と小文字を組合せることにより安全性を高めることができますが、以下のように、パスワードそのものが盗まれることが多く生じています。

  • パスワードのメモを盗まれる
  • 「キーロガー」と呼ばれるソフトをパソコンにインストールされる

キーロガーは、キーボード操作を記録します。
収集された入力文字を一見してもパスワードは分かりませんが、ID が分かれば検索した ID の直後の文字列がパスワードになります。

これらの場合、パスワードが漏洩したことに気が付かないことが多いので、3 ヵ月に 1 度など定期的にパスワードを変更するよう求められることもありますが、以下のような問題を抱えています。

  • 次の変更日までは、不正アクセスを防止できない
  • パスワードの変更は、ユーザーの負担が大きい

このようなパスワードの欠点を解決するために、ワンタイムパスワードが考案されました。
ワンタイムパスワードとは「1 度だけ有効なパスワード」で、以下のような種類があります。

  • 共通関数方式
    1. クライアント PC と個人認証サーバーに、パスワード生成の共通関数を用意する
    2. ユーザーが、クライアント PC がログイン回数を利用して生成したパスワードを個人認証サーバーに送信する
    3. 個人認証サーバーが、そのユーザーのログイン回数を利用して生成したパスワードを 2 と比較して、同じ場合はログインを許可するが、異なる場合は禁止する
  • タイムシンクロ方式
    1. ユーザーが、「トークン」と呼ばれる小型機器を保有する
    2. トークンと個人認証サーバーには、共通鍵(共通関数とほぼ同じ)が格納されており、トークンと個人認証サーバーの内蔵時計は同期している
    3. トークンは時刻を利用して 1 分おきに新しいパスワードを表示するので、ユーザーは次のパスワード変更までにログインする
  • チャレンジ & レスポンス方式
    1. ユーザーが、「トークン」と呼ばれる小型機器を保有する
    2. トークンと個人認証サーバーには、共通鍵が格納されているが、内蔵時計は不要
    3. ユーザーが、固定パスワードを送信する
    4. 個人認証サーバーが、「チャレンジコード」と呼ばれる乱数を返信する
    5. ユーザーが、トークンがチャレンジコードを利用して共通鍵から生成した「レスポンスコード」を送信する
    6. 個人認証サーバーが、チャレンジコードを利用して生成したパスワードを 5 と比較して、同じ場合はログインを許可するが、異なる場合は禁止する

いずれの方法でも、共通関数や共通鍵はユーザー毎に異なるのが一般的です。

共通関数方式は、主に利用回数や期間を限定して用いられます。

タイムシンクロ方式とチャレンジ & レスポンス方式は、トークンを利用する点は同じですが、以下のような違いがあります。

タイムシンクロ方式とチャレンジ & レスポンス方式
  タイムシンクロ方式 チャレンジ & レスポンス方式
長所 手順が簡単 安全性が高い
短所 内蔵時計の同期が必要 手順が複雑