ワンタイムパスワード
ログインするごとにパスワードを変更する認証方式である。チャレンジレスポンス方式では、使い捨てのチャレンジコードを利用したが、ワンタイムパスワードはパスワードそのものを使い捨てにする。
盗聴などにより、パスワードが漏えいした場合でも、そのパスワードを使った不正利用ができない。
S/Key
UNIXで採用されているため、 ワンタイムパスワードの実装例としては普及している部類に入る。 基本的な手順としてはチャレンジレスポンス方式を応用する。S/Key方式ではシード(ランダム値)とパスフレーズの他にシーケンス番号(カウンター)を利用している点に特徴がある。
シーケンス番号の回数だけ、シードとパスフレーズからハッシュ処理をしてワンタイムパスワードを生成する。このとき、クライアント側では(シーケンス番号ー1)回しか演算せず、最後の1回をサーバ側で行うことでさらに構成を複雑化してセキュリティ強度を向上させている。また、通信ごとにシーケンス番号を減じてゆき、これが0になるとシステムを利用できなくなるため、パスフレーズの再登録が必要になり、強制的にパスフレーズを変更させるという点で優れている。
ただし、最初に登録したパスフレーズがローカルノードやユーザから直接漏れるような場合にセキュリティが破綻する点は、チャレンジレスポンス方式と変わらない。
時刻同期方式
S/Key方式では、認証に先んじてチャレンジコードをやり取りする必要があったが、時刻同期方式ではチャレンジコードの代わりに時刻をトリガー(きっかけ) にしてワンタイムパスワードを生成する。
クライアント側では、時刻からパスワードを生成するトークンとよばれるパスワード生成機構を使用する。トークンはスティック型のUSB機器などのハードウェアで提供される場合や、クライアントノードにインストールするソフトウェアとして提供される場合がある。
クライアントからは、生成されたトークンコードとあらかじめ与えられた固有の個人情報番号 (PIN)をパスコードとしてサーバに送信し、サーバでも同じ時刻をもとにパスワードを生成し、 突き合わせることで認証を行う。
ネットワーク上に余分な情報を流さないという意味においてはS/Keyより一歩考え方を推し進めた認証方式である。 しかし、時刻を要素にしてパスワードを生成する以上、各サーバ、各クライアントともに時刻の同期がとれていなければ運用することができない。
一般的な時刻同期方式では、暗号化されるとはいえ PINがネットワーク上に送信される。 これは脆弱性になる可能性があるため、PINをトークンに入力させてPINと時刻からトークンコードを生成する方法も考えられている。この場合、トークンコード=ワンタイムパスワードである。
いずれの方法を使うにせよ、トークンを紛失したりPINが流出したりしてはセキュリティレベルを維持できない。便利なハードウェアを導入した際の心の隙がセキュリティ対策を行う上で非常に大きな障害になる点は理解しておく必要がある。
(参考)令和08年 情報セキュリティマネジメント 合格教本 岡嶋 裕史(著)技術評論社


コメント