ここで使用するセキュリティトークンは、1分ごとに異なる6桁の数字を表示する装置だ。トークン自身の持つ固有のIDと時刻をキーとした一種のハッシュ値を表示する装置と思えばよいだろう。認証サーバはユーザーIDとトークンに表示される数字を入力する。認証サーバはユーザーIDと、そのユーザーに渡したトークンのIDと現在の時刻から計算したトークンが表示するはずの値を比較し、合致した場合に正規のユーザーとしてログインを認めるというわけだ。
この場合にトークンの時刻管理が問題になる。サーバとトークンの時刻がずれていれば、計算結果の値が異なってしまうからだ。トークンの解析や設定ミスを防ぐために時刻合わせなどの設定手段を用意するわけにはいかないものの、トークンの時刻精度はサーバよりも明らかに低いため、長期間の利用の間にズレが生じる。また、ユーザーが表示を読み取ってから入力して送信するまでのタイムラグも考慮する必要がある。
RSA SecurIDではこれをサーバ側で吸収する。トークンとサーバの想定した時刻差が±2分(つまり5つの候補)のいずれかに合致する場合は時刻差を自動補正し(図2)、その時点でのサーバとの時刻の差を記録する。±4分ならばサーバは次にトークンに表示される数値を入力させて合致した場合に補正を行う。
±5分以上±40分以内ののズレが生じた場合は連続した2回分(12桁)の番号の入力が要求され、その入力がトークンの正しい計算数字と判断された場合に自動補正される。
トークンは今回使われているSID700の他にもカードサイズのものやPDA/携帯電話/パソコン上のソフトウェアタイプのものも存在する。今後の普及により、日本でも他のタイプのトークンが利用されるかもしれない。
Copyright© 2010 ITmedia, Inc. All Rights Reserved.