One-Time Passwords (OTP) - Single-Use Codes
About 2 min read
ワンタイムパスワード (OTP: One-Time Password) とは、一度の認証にのみ有効な使い捨てのパスワードです。 固定パスワードと異なり、仮に傍受されても再利用できないため、多要素認証の 「所持情報」要素として広く利用されています。銀行のオンラインバンキング、企業の VPN 接続、 クラウドサービスのログインなど、追加の認証レイヤーとして日常的に使われる技術です。
HOTP と TOTP - 2 つの生成方式
OTP の生成方式は大きく 2 つに分かれます。 HOTP (HMAC-based One-Time Password、 RFC 4226) は カウンタベースの方式で、認証のたびにカウンタ値をインクリメントし、共有秘密鍵と カウンタ値から HMAC-SHA1 でワンタイムコードを生成します。サーバーとクライアントの カウンタが同期している限り正しく動作しますが、カウンタのずれが生じると再同期が必要になる という運用上の課題があります。
TOTP (Time-based One-Time Password、 RFC 6238) は HOTP を発展させた時刻ベースの方式です。カウンタの代わりに現在時刻 (通常 30 秒間隔) を 使用するため、カウンタ同期の問題が解消されます。 Google Authenticator や Microsoft Authenticator など 主要な認証アプリはすべて TOTP を採用しており、現在の OTP の主流です。 TOTP は OTP の一種であり、 OTP という大きなカテゴリの中に HOTP と TOTP が含まれる関係です。
SMS OTP のリスク
SMS で OTP を送信する方式は、手軽さから広く普及していますが、セキュリティ上の深刻な問題を抱えています。 最大のリスクは SIM スワップ攻撃です。 攻撃者が携帯キャリアを騙して被害者の電話番号を別の SIM カードに移し替えることで、 SMS OTP を横取りできます。 2019 年には Twitter CEO のアカウントが SIM スワップで乗っ取られた 事件が大きな注目を集めました。
さらに根本的な問題として、 SS7 (Signaling System No. 7) プロトコルの脆弱性があります。 SS7 は 1975 年に設計された電話網の信号制御プロトコルで、認証や暗号化の仕組みが ほとんどありません。攻撃者が SS7 ネットワークにアクセスできれば、 SMS メッセージを 傍受することが技術的に可能です。 NIST は 2016 年の時点で SMS OTP を「非推奨」と 位置づけており、可能な限り認証アプリやハードウェアトークンへの移行が推奨されています。
ハードウェアトークンとソフトウェアトークン
OTP の生成手段は、物理デバイス (ハードウェアトークン) とアプリ (ソフトウェアトークン) に 大別されます。ハードウェアトークンの代表格は RSA SecurID で、 1990 年代から企業の リモートアクセス認証に使われてきました。液晶画面に 60 秒ごとに変わる 6 桁のコードが 表示される、あの小さなデバイスです。物理的に独立しているためマルウェアの影響を受けにくい 反面、紛失・故障時の対応コストや、デバイスの配布・管理の負担が課題です。ハードウェアセキュリティキーの選び方も 参考にしてください。
ソフトウェアトークン (認証アプリ) は、スマートフォンにインストールするだけで利用でき、 配布コストがゼロに近い点が最大の利点です。ただし、スマートフォン自体がマルウェアに 感染した場合、 OTP が窃取されるリスクがあります。OTP authentication guides on Amazonでは、各方式の実装上の違いが詳しく解説されています。
金融機関での利用実態
日本の銀行では、オンラインバンキングの振込時に OTP を要求するのが標準的です。 かつてはハードウェアトークンの配布が主流でしたが、近年はスマートフォンアプリへの 移行が進んでいます。興味深いのは、金融機関の多くが依然として SMS OTP を併用している点です。 これはセキュリティよりもユーザーの利便性とサポートコストを優先した判断であり、 「認証アプリを使えない顧客層」への配慮という側面があります。
二段階認証の 導入率は年々上昇していますが、MFA 疲労攻撃のように OTP を悪用する新たな攻撃手法も登場しています。 OTP は万能ではなく、二段階認証の正しい理解と 組み合わせて初めて効果を発揮する技術です。
Was this article helpful?