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