クライアント側にはトークンと呼ばれるパスワード計算用カードが発生する乱数を入力。その値をサーバが受けると、その時刻を元に算出した値とそれを比べて認証する。SecureIDが有名。
2.ソフトウェアによるもの
2.1.S/Key
UNIX系OSで親しまれてきており、実際、標準搭載されているものも多い。サーバとクライアントに、最初の一回だけパスフレーズを登録するところがポイント。その後はn-1回ハッシュ関数にかけた値で認証することになっている。やはりパスフレーズが重要で、その後は実質的に機器認証に近いですな。
2.2.チャレンジ&レスポンス
CHAPが代表ですが、今やWeb系システムなどで利用されまくってます。クライアントからIDを受けたサーバは、チャレンジコード(CCとします。S/KeyのSeedにあたります。)を返します。クライアントはそのCCとパスワードの組合せからハッシュした値を返します。CCは通信の都度変わるので、通信路上での値を記録して解析しようともパスワードを解くのは非常に困難なわけです。値を受けたサーバは、予め登録してあるIDのパスワードとCCを組み合わせてハッシュ値を計算したものと比較します。ポイントは、最初にサーバにIDとパスワードを登録するところ。一般にはSSLを使ってますね。(ちなみにSSL自体もチャレンジ&レスポンスを使ってますが、割愛します…)
上図はユーザ認証(NTT未来ねっと研究所 光来健一氏)より引用。