ワンタイムパスワード(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は、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)を利用する
シングルサインオンのソフトウェアであるOpenAMやKeycloakは、ワンタイムパスワードによる認証をサポートしている。デージーネットでも、OpenAMの商用サポート版であるKAMOME SSOを利用して、ワンタイムパスワード認証を実装するシステムを構築した事例がある。
ネットサービスでワンタイムパスワード(OTP)を利用する
SaaS型で提供されているネットサービスでは、SAMLやOpenID Connectなどの外部認証に対応しているサービスが多い。OpenAMやKeycloakは、SAMLやOpenID ConnectのIdPとして動作することができるため、これらのソフトウェアと連携することで、独自にワンタイムパスワード認証を導入することができる。
ワンタイムパスワード(OTP)に対するデージーネットの取り組み
デージーネットでは、FreeRADIUSとGoogle Authenticatorを組み合わせてワンタイムパスワードに対応したRADIUSサーバの構築を行っている。また、デージーネットで構築したワンタイムパスワードに対応した認証サーバは導入後支援サポートを受けることができる。
【カテゴリ】:セキュリティ  認証  
【Webセミナー】Rocket.Chatだけじゃない!OSSビジネスチャットの最新情報
日程: | 12月19日(木)Webセミナー「BigBlueButton」を使用します。 |
内容: | Rocket.Chatの機能制限でお困りの方も必見!ライセンスフリーで利用できるOSSのビジネスチャットを紹介します。 |
ご興味のあるかたはぜひご参加ください。 |