ワンタイムパスワード

ワンタイムパスワード

 ワンタイムパスワード(OTP)とは、一度しか使えないパスワードのことで、セキュリティの向上や不正ログインの防止などに用いられます。

OTPは、パスワードの生成方法によっていくつかの種類に分かれます。一般的なものには以下のようなものがあります。

  1. 時間同期型(Time-based One-time Password, TOTP)
     TOTPは、あらかじめ決められたアルゴリズムに基づいて、サーバー側とクライアント側で同期されたタイマーを利用してパスワードを生成する方法です。一般的には、Google AuthenticatorやAuthyなどのアプリケーションが使用されます。
  2. カウンタ同期型(HMAC-based One-time Password, HOTP)
     HOTPは、クライアント側でカウンターをインクリメントしながら、あらかじめ決められたアルゴリズムに基づいてパスワードを生成する方法です。主に銀行や金融機関などで使用されています。
  3. SMS型
     SMS型は、OTPをSMSで送信する方法です。簡単な実装が可能ですが、SMSが盗聴された場合に不正利用される可能性があるため、セキュリティ上の問題が指摘されています。

 また、OTPは多要素認証の一つとしても利用されます。例えば、パスワードとOTPを組み合わせた認証方式では、通常のパスワードだけでは認証できないようになり、より高いセキュリティが確保されます。


ワンタイムパスワードには、時間同期型と挑戦応答型の2つのタイプがあります。

 時間同期型のワンタイムパスワードでは、あらかじめ決められたアルゴリズムに従って、事前に生成されたパスワードが時間経過とともに変化していく仕組みになっています。認証時には、ユーザーが現在の時間に応じたパスワードを入力する必要があります。時間同期型のワンタイムパスワードは、セキュリティの強度が高く、一定期間ごとにパスワードが更新されるため、再利用攻撃や偽造攻撃に対して有効です。

 一方、挑戦応答型のワンタイムパスワードでは、認証サーバーがユーザーに対してランダムな数値(チャレンジ)を送信し、それに対してユーザーがパスワードを生成して返信する仕組みになっています。認証時には、ユーザーがチャレンジに対して生成されたパスワードを入力する必要があります。挑戦応答型のワンタイムパスワードは、鍵が共有される必要がないため、マン・イン・ザ・ミドル攻撃やキーロギング攻撃に対して有効です。

 ワンタイムパスワードは、インターネットバンキングやショッピングサイトなど、機密情報を扱うウェブサイトの認証に広く使われています。