オープンソース

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

近年、リモートワークなどで、インターネットから企業内のネットワークにアクセスする機会が増加しています。このようなアクセスでは、安全にユーザを認証する技術が不可欠です。そのような中、ワンタイムパスワードの技術が注目されています。ユーザ情報を入力して行うパスワード認証に加えて、ワンタイムパスワードを使用することで、不正アクセスを防止し、ユーザーを安全に認証することができるからです。このページでは、ワンタイムパスワードの概要と、オープンソースソフトウェアでの実現方法について、次のような項目で説明します。

ワンタイムパスワードとは?

ワンタイムパスワードの実現には、いくつかの方法があります。ワンタイムパスワードとして利用される技術について解説します。

OSSのワンタイムパスワードは安全か?

ワンタイムパスワードのソフトウェアはオープンソースソフトウェアで入手することができます。その理由について解説します。


ワンタイムパスワードの連携

様々な機器やワンタイムパスワードの連携について解説します。

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

ワンタイムパスワードを単独で利用するより、さらにセキュリティを強化するために使われる二要素認証について解説します。

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

オープンソースソフトウェアのワンタイムパスワードであるGoogle Authenticatorについて解説します。

ワンタイムパスワードに関する事例

Google Authenticatorを使ってワンタイムパスワード認証を行うシステムを導入した事例について解説します。


ワンタイムパスワードとは?

ワンタイムパスワードとは、一度限り有効なパスワードのことです。ワンタイムパスワード(One Time Password)の頭文字をとって「OTP」とも呼ばれます。一時的にしか利用できないためワンタイムパスワードの再利用は出来ず、不正アクセスの可能性がある環境でも安全に認証を行うことができます。

ワンタイムパスワードを実現する方法には、以下のような方法があります。

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

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

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

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

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

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

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

サーバがランダムに発行したワンタイムパスワードをユーザに送付し、それを使って認証を行う方式です。パスワードだけでなく、ワンタイムなURLの生成などでもよく利用されます。会員登録など、一時的な用途で使われている認証方法です。

携帯電話のSMSサービスを使いワンタイムパスワードを送付する方法が普及しています。SMSを送付するためには、ユーザの携帯電話番号が必要です。携帯電話番号は何かあった場合に、相手の身分確認に利用することもできるため、認証と同時に存在確認をすることができます。また、SMSの代わりにメールを利用する場合もあります。この場合には、認証を行うと同時に、メールが送付できることを確認することができます。各種SNSやメーリングリストの登録などで利用されています。

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

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

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

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

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

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

OSSのワンタイムパスワードは安全か?

時刻ベースのワンタイムパスワードでは、RSA社が所有していた特許の技術が使われています。この技術の特許期限が終了したため、時刻ベースのワンタイムパスワードの技術はRFC6238で標準化され公開されました。そのため、以前は製品でしか入手することができなかったワンタイムパスワードの技術を、オープンソースソフトウェアで入手することができるようになりました。こうして広い範囲に普及したことで、より安全性が向上しています。

Google Authenticatorとは

Google Authenticatorは、Googleが開発し、オープンソースソフトウェアとして公開しているワンタイムパスワードの仕組みです。ワンタイムパスワードのソフトウェアトークンと、サーバ側での検証の仕組みを提供しています。

スマートフォン向けのGoogle Authenticatorアプリ

Google Authenticatorのソフトウェアトークンは、iPhoneやAndroidのアプリとして配布されており、端末にダウンロードすることができます。このアプリでは、ワンタイムパスワードの認証に必要なコードを生成し、表示します。仮にスマートフォンを機種変更し、新しい端末にアプリをダウンロードした場合でも、変更前のアカウントから関単に移行することができます。

<iPhone用のソフトウェアトークン>

iPhone用のワンタイムパスワードソフトウェアトークン

クライアントの登録

ワンタイムパスワードのソフトウェアトークンを利用するには、サーバ側にユーザ固有の設定を行って、その情報をソフトウェアトークンと共有する必要があります。これらの設定は、ソフトウェアトークンからカメラを起動し、QRコードを読み取ることでスマートフォンへ取り込むことができます。次の画面例は、RoundcubeのGoogle Authenticatorプラグインでワンタイムパスワードを利用する際のQRコードの表示です。

<RoundcubeのQRコード表示画面>

roundcubeのワンタイムパスワードQRコード表示画面

ワンタイムパスワードの連携

ワンタイムパスワードは、様々な認証システムやソフトウェアと連携することができます。

Linuxサーバとの連携

Google Authenticatorは、LinuxのPAM(Pluggable Authentication Modules)として実装されています。Linuxのアカウント認証と連携することで、通常のLinuxログイン時にワンタイムパスワード認証を利用することができます。PAMの構成によって、単純なワンタイムパスワード認証とすることもできますし、二要素認証として利用することもできます。

PAMで実装されているため、sshftpなど様々なアプリケーションでワンタイムパスワード認証や二要素認証を行うことができます。

RADIUSサーバとの連携

Red Hat Enterprise LinuxCentOSで標準的に採用されているFreeRADIUSは、PAMと連携した認証に対応しています。そのため、ワンタイムパスワードに対応したRADIUSサーバを構築することが可能です。

VPNやWi-Fiとの連携

RADIUSに対応したVPN装置やWi-Fiアクセスポイントを利用すれば、ネットワークアクセス時の認証でもワンタイムパスワードを利用することができます。

Apacheとの連携

Apacheの認証をGoogle Authenticatorと連携させることで、Webアプリケーションの認証をワンタイムパスワードや二要素認証にすることができます。そのため、個人情報などの重要なデータを扱うサイトなどのセキュリティを強化することができます。ApacheとGoogle Authenticatorを連携するには、2つの方法があります。

1つは、VPNやWi-Fi装置と同様の方法で、RADIUSサーバ経由でワンタイムパスワードを使う方法です。mod_auth_radiusを使って認証を行います。
もう一つの方法は、mod_authn_otpモジュールを使う方法です。mod_authn_otpはApacheでワンタイムパスワードを使うためのモジュールで、Google Authenticatorのソフトウェアトークンと連携することができます。

Webメール(Roundcube)との連携

OSSのWebメールソフトウェアのRoundcubeには、Google Authenticatorモジュールが用意されており、ワンタイムパスワードの機能を追加することができます。

<Roundcubeの二要素認証画面>

Roundcubeのワンタイムパスワード二要素認証画面

OpenAMとの連携

OpenAMとは、シングルサインオン(SSO)の認証を提供するOSSです。Google Authenticatorと連携することで、ネットワーク上の様々なWebアプリケーションで、ワンタイムパスワードを利用した二要素認証を実現することができます。

デージーネットの取り組み

デージーネットでは、Google Authenticatorのインストール方法や使い方など、詳細についてまとめた調査報告書を公開しており、無料でダウンロードすることができます。また、Google Authenticatorを使ったワンタイムパスワードのシステムをご提案しています。

ワンタイムパスワード認証の事例

Google AuthenticatorとFreeRADIUSを使ったOTP認証事例

VPN装置でワンタイムパスワードを使いたいというご要望があり、OSSのFreeRADIUSとGoogle Authenticatorを利用したシステムを導入しました。さらに、ActiveDirectoryと連携することで、ユーザ情報を管理しやすくしました。

Nextcloudファイルサーバの導入事例

二要素認証の手法を取り入れたNextcloudの導入事例

自動車関連会社にOSSのファイルサーバ「Nextcloud」を導入した事例です。お客様は、外部のお客様とのファイル共有のため、オンラインストレージの導入を検討していました。クラウドサービスのファイルサーバはコストがかかり安全面にも心配があるため、オンプレミスで利用できる「Nextcloud」を導入し、さらに二要素認証も取り入れました。

導入後のサポートについて

デージーネットでGoogle Authenticatorを使ったワンタイムパスワードの認証サーバを構築したお客様には、導入後支援サービスとして、Open Smart Assistanceを提供しています。これは、Google Authenticator単体のサポートではなく、Linuxなどを含むワンタイムパスワードの認証サーバ全体に対するサポートです。

Open Smart Assistanceでは、認証ができないなどの障害があった場合の調査等のサービスを受けることができます。また、Google Authenticatorにバグがあった場合には、回避方法の調査、コミュニティへの連絡による改善促進といったサポートを受けることができます。また、Open Smart Assistanceのクーポンサービスにより、ユーザの追加などの運用も依頼していただくことが可能です。Open Smart Assistanceについてのより詳しい情報は、以下をご確認ください。

デモのお申込み

もっと使い方が知りたい方へ
Google Authenticatorの操作方法や操作性をデモにてご確認いただけます。使い方のイメージを把握したい、使えるか判断したい場合にご活用下さい。Google Authenticatorのデモをご希望の方は、下記よりお申込みいただけます。


デモをご希望の方

デモの申し込みイメージ


OSSのワンタイムパスワード〜Google Authenticator〜の先頭へ