よくある質問・用語集

  • もっと調べる
  • どうやって使う?

ワンタイムパスワード(OTP)とは

ワンタイムパスワードとは、一度限り有効なパスワードのことである。One Time Passwordの英語の頭文字をとって「OTP」とも呼ばれる。ワンタイムパスワードを用いた多要素認証(二段階認証)の利用を設定しておくと、一時的にしか利用できないパスワードが発行される。パスワードの再利用ができない仕組みになっているため、万が一パスワードが漏洩等した場合でも不正アクセスを防ぐことができ、よりセキュアな認証システムを構築することができる。この記事では、ワンタイムパスワード(OTP)認証の仕組みや、ワンタイムパスワード(OTP)の実装と事例について解説する。

ワンタイムパスワード(OTP)認証の仕組み

ワンタイムパスワード(OTP)認証の仕組みには、以下の方法がある。

  • 時刻同期型
  • チャレンジ・レスポンス型
  • メッセージ型

時刻同期型のワンタイムパスワード(OTP)

サーバとクライアントが、同じアルゴリズムで生成したパスワードを使って認証を行う方法である。パスワードは、ユーザ固有の情報と現在時刻を使って生成される。生成したパスワードは、時間が経過すると利用不能になるため、ワンタイムパスワードであることが保証される。

この仕組みでは、ユーザは認証に必要なワンタイムパスワードを何らかの方法で計算する必要がある。そのため、トークンと呼ばれるワンタイムパスワード生成器が必要になる。ワンタイムパスワードのトークンには、ソフトウェアトークンとハードウェアトークンが存在する。ハードウェアトークンとしては、カードタイプやスティックタイプのものが知られていて、インターネットバンキングなどで利用されている。一方ソフトウェアトークンは、スマートフォンのアプリなど、デバイス上で動作するソフトウェアでワンタイムパスワードを生成する。最近は、このソフトウェアトークンが使われる機会が増えてきている。

認証に、必ずワンタイムパスワードのトークンが必要だというデメリットがあるが、認証の手続きがユーザ・パスワード認証と同じであるため、様々な用途で利用することができ便利である。利用方法もそれほど難しくないため、広く普及しているワンタイムパスワード実現の方法である。

チャレンジ・レスポンス型のワンタイムパスワード(OTP)

認証を行うときに、あらかじめ登録されているユーザ固有の情報と、サーバが発行したランダムな数値(チャレンジコード)を使う方法である。サーバとクライアントが、それぞれに持っているユーザ情報を使って、同じアルゴリズムでレスポンスコードを生成する。それが一致すれば、認証が成功する。サーバが、必ず異なるチャレンジコードを発行することで、ワンタイムであることを保証することができる。

メッセージ型のワンタイムパスワード(OTP)

サーバがランダムに発行したパスワードをユーザに送り、それを使って認証を行う方法である。この方法はパスワードだけでなく、ワンタイムなURLの生成などでもよく利用される。

ワンタイムパスワードと二要素認証

以前までは、ユーザ名とパスワードによるパスワード認証だけで十分にセキュリティを担保できていた。しかし最近では、このパスワード認証を突破するために様々な方法が考案され、問題となっている。
例えば、パスワードを突破するためのすべてのパターンを入力して解読するブルートフォースアタックや、よくパスワードに利用される単語や文字例を利用する辞書攻撃がある。また、1つのパスワードを複数のサービスで使い回していて、どこか1つからパスワードが漏洩した際に、連鎖的に不正利用されてしまうこともある。そのため最近では、セキュリティを維持するためには、単純なユーザ名とパスワードの認証では不足していると考えられるようになっている。認証には、次のような3つの方法があると考えられてる。

  • 本人だけが知っていることでの確認
  • 本人だけが所有しているものでの確認
  • 本人自身の特性の確認

後の方法ほど、セキュリティはより強くなっている。また、これらの認証を組み合わせることで、より強固なセキュリティを実現することができる。

高いセキュリティを実現したい場合には、「本人自身の特性」を使うのがもっとも安全である。指紋認証、静脈認証、顔認証などである。しかし、導入には非常にコストがかかる。そのため、他の2つの要素を組み合わせることで、高いセキュリティを実現しようとするのが、ワンタイムパスワードなどを利用した二要素認証である。二要素認証は、「多要素認証」や「多段階認証」、「2段階認証」と呼ばれることもあり、ネットバンキングなどでよく利用されている。

ユーザ名とパスワードでの認証は、「本人だけが知っていること」にあたる。ワンタイムパスワードでは、「本人だけが所有しているもの」を使って認証を行う。近年は、この2つを組み合わせる方法が、注目されている。

ワンタイムパスワード(OTP)の実装と事例

ワンタイムパスワードには様々な実装がある。特に、時刻同期型の製品として販売されていたSecureIDは、様々な企業に導入された。また、現在でも一部のネットバンクなどでも採用されている。

こうした時刻同期型のワンタイムパスワードの技術は、特許が取得されていた。しかし、この特許の期限が到来し、2011年にはRFC 6238として標準化された。そのため、現在ではオープンソースソフトウェアでの実装が広く普及している。また、スマートフォンの普及により、ワンタイムパスワードのトークン(生成器)もアプリで提供されることが多くなっている。

Google Authenticator〜ワンタイムパスワード(OTP)のOSS

Google Authenticatorアプリのトークン

Google Authenticatorアプリのトークン

Google Authenticatorは、RFC 6238に準拠した代表的なワンタイムパスワードのオープンソースソフトウェアである。Googleが開発し、同社の各種サービスで利用可能である。また、仕組みが公開されているため、他の企業や個人が自由に利用することができる。

Google Authenticatorでは、ワンタイムパスワードのソフトウェアトークンと、サーバ側での検証の仕組みを提供する。トークンはiPhoneやAndroidのアプリとして提供されている。Google Authenticatorのサーバ側で発行したQRコードを読み取り、鍵情報をアプリに登録することで利用可能になる。

ワンタイムパスワード(OTP)のシステム連携

Google Authenticatorとシステムをうまく連携させることで、様々なシステムと連携が可能である。ここでは、いくつかの事例を紹介する。

VPNやWifiの認証でワンタイムパスワード(OTP)を利用する

Google AuthenticatorをFreeRADIUSと連携させることで、VPN装置にワンタイムパスワード認証を導入した事例である。この事例のように、RADIUSプロトコルをサポートしたネットワーク機器では、すべてワンタイムパスワード認証を導入することができる。

Webメールでワンタイムパスワード(OTP)を利用する

WebメールのソフトウェアであるRoundcubeでは、Google Authenticatorによる認証のプラグインモジュールを提供している。このモジュールを使うと、組織外からメールを読むときに、ワンタイムパスワード認証を実施することができる。

シングルサインオンでワンタイムパスワード(OTP)を利用する

シングルサインオンのソフトウェアであるOpenAMKeycloakは、ワンタイムパスワードによる認証をサポートしている。デージーネットでも、OpenAMの商用サポート版であるKAMOME SSOを利用して、ワンタイムパスワード認証を実装するシステムを構築した事例がある。

ネットサービスでワンタイムパスワード(OTP)を利用する

SaaS型で提供されているネットサービスでは、SAMLやOpenID Connectなどの外部認証に対応しているサービスが多い。OpenAMやKeycloakは、SAMLやOpenID ConnectのIdPとして動作することができるため、これらのソフトウェアと連携することで、独自にワンタイムパスワード認証を導入することができる。

ワンタイムパスワード(OTP)に対するデージーネットの取り組み

デージーネットでは、FreeRADIUSとGoogle Authenticatorを組み合わせてワンタイムパスワードに対応したRADIUSサーバの構築を行っている。また、デージーネットで構築したワンタイムパスワードに対応した認証サーバは導入後支援サポートを受けることができる。

【カテゴリ】:セキュリティ  認証  

  • もっと調べる
  • どうやって使う?

【Webセミナー】自社でOSSを採用しよう!今更聞けないOSSの基本セミナー

日程: 11月22日(金)Webセミナー「BigBlueButton」を使用します。
内容: OSSを導入したいけど、どこから手をつければいいかわからない方必見!
ご興味のあるかたはぜひご参加ください。

セミナー申込

関連用語

ワンタイムパスワード(OTP)に関連するページ(事例など)

ワンタイムパスワード(OTP)とは先頭へ