今さら聞けないワンタイムパスワード|仕組みや活用例を解説

近年は様々なシステムで、ワンタイムパスワード(ワンタイムパスワード認証)が利用されるようになりました。皆さんの生活においても、ワンタイムパスワードを利用する機会があるでしょう。メールアドレスや携帯電話番号宛に4文字から6文字程度の文字列が届き、それをシステムへのログイン画面などに入力する仕組みです。
当たり前のように利用されるセキュリティ手法ではありますが、具体的な仕組みについて理解できていない人はいるでしょう。また、どのような場面で導入すればよいのかイメージできていない人もいるかもしれません。今回はワンタイムパスワードの基本知識から活用例など、順番に解説していきます。
ワンタイムパスワードとは
ワンタイムパスワードを直訳すると「一度限りのパスワード」という意味です。その名の通り、実際のシステムでもワンタイムパスワードは一度しか利用できません。言い換えると利用するたびに発行されるパスワードがワンタイムパスワードなのです。
実際にワンタイムパスワードを実装する際は「認証サーバ」と呼ばれるものを準備します。これはアプリケーションサーバと同じ場合もあれば、個別に準備することもあるものです。どちらでも役割には違いがなく、ワンタイムパスワードを発行したりユーザが入力した内容が正しいか評価したりします。
なお、ワンタイムパスワードが必要となる理由は、本人認証を強化するためです。一般的にはユーザーIDとパスワードで本人認証が実施されます。ただ、これらの情報は流出したり、不正利用したりされたりする可能性があります。そのため、ワンタイムパスワードなど複数の要素を用いてセキュリティを高める仕組みが注目されているのです。
ワンタイムパスワードの仕組み

ワンタイムパスワードの仕組みは複数あり、その中でも利用頻度が高い4種類について紹介します。
タイムスタンプ認証方式(時刻同期方式)
ワンタイムパスワードを発行する際の時刻を利用して、文字列を生成し、認証する方法です。時刻を利用するため、ワンタイムパスワードを発行するたびに違う文字列が生成され、より高いセキュリティを担保できます。
なお、時刻は常に進んでいるため、ユーザーがワンタイムパスワードを受け取ってから入力するまでの間に値が変わってしまいます。そのため、タイムスタンプ方式の場合は、発行したワンタイムパスワードを有効期限付きで認証サーバ側に保存する仕組みが大半です。最新のワンタイムパスワードを保存しておき、ユーザーが入力した値がそれと一致していれば、本人確認に成功したと判断します。
チャレンジレスポンス方式
チャレンジレスポンス方式は、認証サーバーから送られてくる「チャレンジ」と呼ばれる文字列に対して、正しい「レスポンス」を返すことで認証する方法です。
まず、ユーザーが認証を要求すると認証サーバはチャレンジを生成してユーザーへと送信します。そして、ユーザーは受け取ったチャレンジを事前に取り決めた処理で加工して、その結果をレスポンスとして認証サーバーへ送り返すのです。認証サーバーは、サーバー内で生成したレスポンスの期待値と実際に受け取ったレスポンスの内容を比較して、一致していれば認証できたと判断します。
なお、チャレンジレスポンス方式は一般的にイメージされるワンタイムパスワードとは異なり、パスワードの文字列を受け取ってユーザーが入力するものではありません。
カウンタ同期認証方式
ワンタイムパスワードの発行回数を用いて、認証用の文字列を発行する方法です。発行回数ごとに異なるワンタイムパスワードが生成され、認証サーバは発行回数とユーザから受け取った文字列を組み合わせて正しいかどうかを判断します。
なお、ワンタイムパスワードを回数で管理・発行するものであり、根本的な部分はタイムスタンプ認証方式と同様です。そのため、一般的にはタイムスタンプ認証方式が利用される傾向にあります。
マトリクス(マトリックス)方式
事前にランダムな文字や数値を示した「マトリクス」を生成し、それを用いてワンタイムパスワードを生成する方法です。ユーザは表示されたマトリクスを事前に定められた方法で読み解き、その場でワンタイムパスワードを理解します。例えば「右上から左下へ1文字飛ばしで読み取る」などと伝えておき、それに沿って得られた文字を入力するのです。
一見すると魅力的ですが、マトリクスの読み取り方法が流出すると、第三者でも簡単にワンタイムパスワードを生成できてしまいます。そのため、運用には難しい部分がある方法です。
ワンタイムパスワードの発行方法

ワンタイムパスワードの発行方法はいくつもあり、代表的な手法として4種類を紹介します。
メール・SMS
メールやSMSでワンタイムパスワードを受け取る方法は、これらの手法の中でも一般的です。例えば、ログイン画面でIDとパスワードを入力しログインボタンを押下すると、自動的にメールやSMSが送付されてくる仕組みが考えられます。送付されてきたワンタイムパスワードをログイン画面に追加で入力し、認証を終了させる流れです。
多くの場合、ログインIDにメールアドレスが利用されているならば、電話番号を利用したSMS認証が採用されます。メールアドレスと電話番号の個人情報を組み合わせることによって、本人確認の精度が大きく高まるからです。
なお、ログインIDが独自の文字列の場合は、メールアドレスも電話番号も利用されることがあります。ただ、SMSの送信には環境構築や毎回の料金が発生するため、それらも踏まえて最終的に方法が決定されるのです。
スマートフォンアプリ
専用のスマートフォンアプリで、ワンタイムパスワードを発行する方法があります。サービス専用のアプリケーションを利用することもあれば「Google Authenticator」などのアプリケーションを利用することもあるでしょう。自社専用のアプリケーションを作成することは手間がかかるため、他社の汎用的なアプリケーションを組み込んで実装するのです。
なお、一般的にワンタイムパスワードを発行する際は、利用者が届いたものを確認してWebサイトやアプリケーションに入力しなければなりません。しかし、スマートフォンアプリを利用すると、アプリ上の操作で認証を完了できる仕組みを構築できます。ユーザビリティの高いワンタイムパスワードの仕組みを構築できるため、頭に入れておくとよいでしょう。
パスワード用トークン
ワンタイムパスワードを生成するための専用トークンを利用する方法があります。事前に物理的な「トークン」を準備しておき、そこに表示された文字列を入力するという方式です。一般的なトークンは、画面とボタンだけが準備されていて、ボタンを押すだけで6文字から10文字程度のワンタイムパスワードが表示されます。
このような物理的なトークンを利用する場合は、事前にトークンとアプリケーションの連携が必要です。一般的にパスワード発行用のトークンはタイムスタンプ認証方式でワンタイムパスワードを生成します。そのためアプリケーションにも同じ仕組みを導入しておき、トークンで生成されるワンタイムパスワードを認証できるようにしなければならないのです。メールやSMSなどを利用する方法は、アプリケーション側でワンタイムパスワードを発行し、それとの整合性を確認します。しかし、トークンでワンタイムパスワードを生成する場合は、2ヶ所で発行されたワンタイムパスワードの整合性を評価しなければなりません。
なお、物理的なデバイスであるため、電池切れやボタンの故障などが発生するリスクがあります。また、デバイスの調達や維持にコストが発生することから、現在は積極的に利用されません。上記で解説したメールやスマートフォンアプリに置き換えられつつあります。
電話認証
ワンタイムパスワードを電話で伝えて認証する方法も存在します。指定の電話番号へ自動的に発信があり、ユーザはそこで伝えられた内容をワンタイムパスワードとして入力するのです。ワンタイムパスワードの仕組みとしては大きな違いがなく、音声で伝えられるか文字で伝えられるかの違いといえます。
なお、電話認証の重要性は理解されないことが多いですが、メールやSMSと組み合わせるための方法として重要です。場合によっては、メールの受信ができないなどの問題が生じる可能性があるため、複数の手段を設けておかなければなりません。ログインできないという問題を発生させないために、電話認証は意外と重要なのです。
ワンタイムパスワードの活用例

ワンタイムパスワードは様々なアプリケーションで利用されています。具体的にどのような活用例があるのか理解しておきましょう。
インターネットバンキング
ワンタイムパスワードの代表例ともいえるのが、オンラインバンキングへのログインです。金融関連のアプリケーションは、個人の認証を特に重要視しなければなりません。そのため、信頼性の高いワンタイムパスワードが必要とされるのです。
一般的には、メールアドレスやログインIDとパスワードを組み合わせたログイン情報が利用されています。加えて、電話番号や各社のスマートフォンアプリにワンタイムパスワードが提供される仕組みです。複数の個人情報へ認証に必要な情報を送ることによって、第三者がログインできないようにしているのです。
また、オンラインバンクにおいては、ログイン以外でもワンタイムパスワードが求められています。例えば、送金手続きや各種設定変更などでも、ワンタイムパスワードが必要です。送金時にも入力することで、不正利用できないようにハードルを高めているのです。第三者が何度もワンタイムパスワードを入手することは現実的ではなく、ログインを突破されても、被害は防げるように考えられています。
リモートワークでのログイン
リモートワークでのログインにワンタイムパスワードが利用されることが増えていきました。主に、企業内に接続する「VPNの認証」にワンタイムパスワードが採用されています。
今までは、IDとパスワードなど一般的な認証方式が大半でした。ただ、リモートワークなどが増えたことによりVPNを利用する人が増え、攻撃の対象になってしまうことも増えています。そこで、セキュリティを高めるという観点から、ワンタイムパスワードを採用する企業が増えました。
特に近年はOkta認証を採用する企業が増え、付随するワンタイムパスワードの仕組みも活用する企業が増えてきました。企業で利用する機会の多いWindowsとの親和性も高いため、セキュリティを高める手法として注目されています。
各種クラウドサービス
各種クラウドサービスもワンタイムパスワードを採用するようになってきました。クラウドサービスのように不特定多数に公開されていると、第三者から攻撃を受ける可能性が高まります。総当り攻撃などによってログイン情報が漏洩することも考えられるのです。そのため、セキュリティを強化する手法として、ワンタイムパスワードが積極的に採用されています。
ただ、ワンタイムパスワードの採用が増えているものの、全体から見るとまだまだ一部だけです。また、採用している企業やサービスもまちまちで傾向はありません。これからワンタイムパスワードが広がることで、現時点では導入されていないクラウドサービスにも、採用されるでしょう。
オンラインショッピング
オンラインショッピングでは、主に商品の購入時にワンタイムパスワードが入力されています。近年はクレジットカードの不正利用が増えているため、本人確認してから決済や請求処理が動くようになっているのです。
言い換えると、他の活用例のようにログインの段階でワンタイムパスワードが必要なECサイトはほとんど見受けられません。支払いという部分に特化して、ワンタイムパスワードを導入しています。
まとめ
ワンタイムパスワードは、認証を強化してセキュリティを高めるための手法です。一般的なIDとパスワードの認証に加えて、別の要素を利用した認証も実施します。多角的に認証することで、第三者による不正利用を防止するのです。
従来はメールやSMSを利用したものが中心でしたが、現在はスマートフォンアプリを利用したものも登場しています。これにより、導入のハードルも下がっているため、セキュリティ強化の一環として導入を検討してみましょう。