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

ワンタイムパスワードの仕組みとして、大きく分けて2種類あります。
一つは1回使い切りのパスワードを都度発行する方法、もう一つは一定時間有効なパスワードをランダムで生成する方法になります。
今回は後者について簡単に説明していきます。

議事乱数の作り方とワンタイムパスワードの関係性

まず、パスワードを「ランダム」に生成する部分に着眼します。
現在、コンピュータ上で完全なランダムを作成することはまずできないとされており、ここをクリアするために時間をシードにして疑似乱数を生成するのが一般的です。
ワンタイムパスワードの場合は、疑似乱数の代わりにパスワードを生成することになります。この生成ロジック自体は各社個別のものになります。
そしてシードについては上記同様に時間を利用するのですが、時間だけだとみんな同じパスワードになってしまうので、ユーザごとにユニークになる値で時間を加工して利用することになります。

トークンについて

手元のトークンと呼ばれるものに一時的なパスワードを表示してユーザに入力させるものがあります。
こういったトークンはワンタイムパスワードを生成しているサーバと同じ生成ロジックをトークンに乗せてパスワードを生成しているため、サーバが生成したパスワードと同じパスワードを生成できる、ということになります。
こういったトークンについては、まずユーザごとにユニークになる値をトークンに記録して利用します。
ハードウェアトークンの場合は管理者、もしくは製造元がユニークになる値を入れて利用者に配布します。
また、スマホなどをトークンにするソフトウェアトークンの場合は、利用開始時にユーザ毎にユニークとなる値をサーバと同期させてから利用開始となります。
こういったトークンについては、内蔵時計の時間がサーバとズレるとパスワードがサーバと一致しないようになり、利用できなくなります。


今日は以上となります。