ワンタイムパスワード(OTP)は、一度だけ、または短時間だけ有効な使い捨てコードです。固定パスワードが漏れても、その情報だけではログインを成立させにくくできるため、クラウドサービス、社外アクセス、管理者アカウントの保護で広く使われています。
ただし、OTPを追加しただけで安全が完成するわけではありません。OTPにも弱点があり、特にフィッシング詐欺に対しては、入力させられたコードをその場で悪用される余地があります。運用では、方式選定だけでなく、初期登録、端末紛失時の復旧、試行回数制限、監視まで含めて設計する必要があります。
ワンタイムパスワード(One-Time Password:OTP)とは、使い回しできない一時的なコードで本人確認を補う仕組みです。一般的には、IDと固定パスワードに追加して使い、固定パスワードだけではログインを完了させない構成にします。
この考え方の利点は、固定パスワードが漏れた場合でも、追加の条件がなければ不正ログインを成立させにくくなる点です。特に、パスワードリスト攻撃や漏えい済み認証情報の使い回しに対しては、パスワード単独認証より突破されにくくなります。
| OTPの役割 | 固定パスワードが漏れても、それだけではログインを成立させにくくする |
|---|---|
| 典型的な使い方 | ID・パスワードに追加して入力する/承認時に一時コードを使う |
| 誤解しやすい点 | OTPを導入しても、フィッシングや復旧運用の不備まで自動で解決するわけではない |
固定パスワードが破られる経路は、総当たりだけではありません。実際の侵害では、偽サイトへの入力、他サービスからの漏えい情報の悪用、マルウェアによる認証情報の窃取などが重なります。
OTPの役割は、こうした経路のうち「固定パスワードだけで成立する攻撃」を成立しにくくすることです。ただし、OTPにも苦手な攻撃があるため、導入だけで安全性を言い切ることはできません。
OTPでは、サーバーと利用者側が、同じ前提から同じコードを生成するか、またはサーバー側が正当なコードかどうかを検証します。多くの方式は、事前に共有した秘密情報を基にコードを生成します。
代表的な方式は、HOTPとTOTPです。違いは、何を変数としてコードを変化させるかにあります。
HOTPは、サーバーと利用者側で共有したカウンター値を使ってコードを変える方式です。ボタンを押すごとに次のコードが出るタイプのトークンは、この考え方で説明しやすくなります。
時刻に依存しない一方で、利用者側とサーバー側のカウンターずれをどう吸収するかが運用上の論点になります。押し過ぎや未同期に備えた検証窓を持たせる設計がよく使われます。
TOTPは、現在時刻を一定間隔に区切った値を使ってコードを生成する方式です。認証アプリで30秒ごとにコードが変わる形式は、この方式が典型です。
時刻同期を前提にするため、端末の時計が大きくずれると失敗しやすくなります。そのため、サーバー側では一定の時刻ずれを吸収する検証窓を持つ実装が一般的です。
チャレンジレスポンスでは、サーバーが提示する値に対して利用者側がレスポンスを生成し、サーバーが正当性を確認します。ログインごとに条件が変わるため、設計次第で再送攻撃に強くできます。
ただし、一般的な6桁コード型のOTPより実装や運用が複雑になりやすく、金融系や専用システムなど、要件が明確な場面で使われることが多くなります。
OTPの安全性は、コードそのものより、コード生成に使う秘密情報が守られていることに支えられています。設計では、少なくとも次の点を外せません。
OTPは、どの方法で生成・受領するかによって、利便性とリスクが変わります。企業利用で比較されやすい代表例を整理します。
| ハードウェアトークン | スマホ不要で使いやすい一方、配布・回収・在庫管理・故障交換の負荷が出る |
|---|---|
| 認証アプリ | 導入しやすくTOTPと相性が良い一方、端末紛失・故障・機種変更時の復旧設計が欠かせない |
| メール通知 | 手軽だが、メールアカウントが侵害されていると防御効果が下がりやすい |
| SMS認証 | 導入しやすい一方、フィッシングや電話番号運用の弱点を持ちやすい |
専用機器がコードを生成・表示し、利用者が入力する方式です。スマホの持ち込みを前提にしない環境では使いやすい一方、紛失、盗難、故障時の無効化と再発行の手順が要ります。
スマートフォン上の認証アプリがOTPを生成する方式です。配布物が不要で導入しやすく、TOTPの代表的な実装として広く使われています。
ただし、端末の紛失、故障、機種変更、初期化は必ず起きます。再登録を業務停止にしないための復旧設計がなければ、利便性はすぐに下がります。
登録済みメールアドレスへコードを送る方式です。手軽ですが、メールアカウントが侵害されていれば、OTPを追加しても防御効果は大きく下がります。配送遅延や迷惑メール判定も、業務利用では無視しにくい問題です。
SMS認証は広く使われていますが、リアルタイムの入力誘導に弱く、転送設定や番号再発行を巡る論点もあります。重要度が高い用途では、認証アプリやFIDO2のような別方式も比較対象に入ります。
OTPを追加すると、固定パスワードが漏れても、それだけではログインを完了させにくくなります。特に、漏えい済み認証情報の再利用に対しては、一定の抑止効果があります。
固定パスワードに対し、別経路で受け取るOTPを組み合わせると、二要素認証や多要素認証の構成にしやすくなります。特に、管理者アカウント、社外アクセス、重要データに触れるシステムの補強で効果が出やすくなります。
全利用者を同時に切り替えなくても、まずは高リスクのアカウントから適用し、順次対象を広げる進め方が取りやすくなります。認証強化の入口としては扱いやすい方式です。
利用者はコード確認や入力を追加で行うため、利便性は下がりやすくなります。ログイン頻度が高い業務では、再認証間隔やリスクに応じた要求条件を調整しないと、現場の負担が大きくなります。
OTPは手元のデバイスが使えることを前提にしやすいため、紛失や故障が起きると業務停止につながります。復旧を例外扱いせず、日常イベントとして設計へ入れる必要があります。
OTPは使い捨てでも、偽サイトへ入力させられれば、その場で攻撃者が正規サイトへ中継して悪用できる場合があります。つまり、OTPは固定パスワード単独よりは強いものの、フィッシング耐性そのものを保証する方式ではありません。
メールやSMSは手軽ですが、前提となるメールアカウントや電話番号の保護が弱いと意味が薄れます。一方で、認証アプリは比較的強化しやすい反面、復旧設計が弱いと現場が止まります。自社の端末管理、ヘルプデスク体制、復旧フローと合わせて選ぶ必要があります。
攻撃者が先にOTPを登録できてしまえば、その後の認証強化は崩れます。登録時にどの情報で本人確認するか、登録後に通知や監査ログをどう残すかまで決めておく必要があります。
端末紛失や故障は、例外ではなく前提です。少なくとも、再登録の受付条件、暫定アクセスの期限と権限、ヘルプデスクの対応範囲は定義しておく方が安全です。ここが弱いと、共有OTPや恒久例外が増えやすくなります。
最初に効果が出やすいのは、管理者アカウント、リモートアクセス、重要データに触れる業務システムなど、突破時の影響が大きい入口です。すべてへ一律適用するより、優先順位を付けた方が導入しやすくなります。
OTPは短いコードを使うことが多いため、無制限に試せる状態では総当たりの余地が残ります。失敗回数制限、レート制限、追加確認、異常試行の検知と通知をそろえて、初めて実効性が出ます。
OTPを導入しても、フィッシング対策を別に持たなければ、入力させられたコードを悪用される余地があります。利用者教育だけでなく、ログイン通知、異常検知、リスクベースの追加認証、必要に応じたより耐性の高い方式の採用も視野に入ります。
A.一度だけ、または短時間だけ有効な使い捨てコードです。固定パスワードと組み合わせると、漏えい時の不正ログインを成立させにくくできます。
A.同じコードを繰り返し使えず、有効時間も短いことが多いためです。固定パスワードだけでログインを完了しにくくできます。
A.HOTPはカウンター値でコードを変え、TOTPは時刻でコードを変える方式です。認証アプリで30秒ごとに変わるコードはTOTPの典型です。
A.サーバーが提示する値に対し、利用者側がレスポンスを生成して返し、サーバーが正当性を確認する方式です。条件が毎回変わる設計にしやすくなります。
A.近年は配布物が不要な認証アプリが選ばれやすくなっています。ただし、どちらでも紛失や故障時の再登録手順を先に決めておく必要があります。
A.手軽ですが、メールアカウントが侵害されていると防御効果は大きく下がります。重要用途では他方式も比較対象になります。
A.広く使われていますが、フィッシングや電話番号運用の弱点を持ちやすくなります。重要度と運用前提に応じて選ぶ必要があります。
A.一定の抑止効果はありますが、入力させられたコードをその場で悪用される余地があります。別の対策と合わせて考える必要があります。
A.OTPが使えずログインできなくなる可能性があります。再登録や暫定アクセスの手順を用意し、業務停止を避ける設計にしておく必要があります。
A.管理者アカウント、リモートアクセス、重要データに触れる業務システムなど、突破時の影響が大きい入口から優先して適用すると効果が出やすくなります。