オープンソース

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

近年、リモートワーク等でインターネットから企業内のネットワークにアクセスする機会が増加したことで、安全にユーザを認証する技術が必要不可欠となっています。そうした中、ユーザ情報を入力するパスワード認証にワンタイムパスワードの使用を加えることで、不正アクセスを防止し、ユーザーを安全に認証できます。Googleが開発したGoogle Authenticatorは、ワンタイムパスワードを実現するオープンソースソフトウェアです。この記事では、Google Authenticatorの特徴や、Google Authenticatorと連携可能な認証システムについて紹介します。

目次

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

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

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

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

サーバとクライアントが、同じアルゴリズムで生成したパスワードを使って認証する方法です。パスワードは、ユーザの固有の情報と現在の時刻を使って生成されます。そのため、生成したパスワードは、時間が経過すると利用不能になり、ワンタイムパスワードであることが保証されます。認証には必ずトークンが必要という注意点はありますが、認証の手続きがID・パスワード認証と同じであるため、様々な用途で利用できて非常に便利です。利用方法もそれほど難しくはないため、ワンタイムパスワードの実現の方法として広く普及しています。

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

認証を行うときに、あらかじめ登録されているユーザ固有の情報と、サーバが発行したランダムな数値(チャレンジコード)を使って認証を行う方法です。サーバが、必ず異なるチャレンジコードを発行することで、ワンタイムパスワードであることを保証することができます。

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

サーバがランダムに発行したワンタイムパスワードをユーザに送付し、それを使って認証を行う方式です。パスワードだけでなく、ワンタイムURLの作成などでもよく利用されます。特に現在は、携帯電話のSMSサービスやメールを使い、ワンタイムパスワードを送信する方法が普及しています。会員登録など、一時的な用途で使われている認証方法です。

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

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

Google Authenticatorとは

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

Google Authenticatorでは、スマートフォン用のアプリで発行される6桁の数字からなるコードを利用して認証を行います。Google Authenticatorで発行されるコードは、RFC 4226で規程されている回数ベースのワンタイムパスワード(HOTP)アルゴリズムと、RFC 6238で規程されている時間ベースのワンタイムパスワード(TOTP)アルゴリズムをサポートしています。

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

Google Authenticatorのソフトウェアトークンは、iPhoneやAndroidなどのスマートフォン用アプリとして提供されています。このアプリでは、ワンタイムパスワードの認証に必要なコードを生成して表示します。アプリは、iPhoneはApp Store、AndroidはGoogle Playで配布されており、端末にダウンロードすることができます。

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

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

アプリをインストールした後、Google Authenticatorの管理するアカウントに紐付ける設定を行うと、ワンタイムパスワードが生成されます。サーバ側で、ワンタイムパスワードを利用するユーザを追加すると、アプリとアカウントを紐づけるQRコードが発行されます。スマートフォンでアプリを起動し、このQRコードの画像をカメラで読み取ることで、アプリとアカウントを紐付ける秘密鍵を登録することができます。アプリは、その情報を使って、30秒ごとにコードを再計算し、表示します。

認証コード生成

なお、このアプリにはアカウント情報をエクスポート/インポートするメニューがあります。このメニューから、アカウント情報のバックアップを作成することができます。また、仮にスマートフォンの機種変更などで、新しい端末に再びアプリをダウンロードした場合でも、変更前のアカウントから簡単に設定を移行することができます。

クライアントの登録

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

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

RoundcubeのQRコード表示画面

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

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

Linuxサーバとの連携

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

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

RADIUSサーバとの連携

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

VPNやWi-Fiとの連携

RADIUSに対応したVPN装置やWi-Fiアクセスポイントを利用すれば、社外などからネットワークへアクセスする際の認証でもワンタイムパスワードを利用することができ、セキュリティをより強化することができます。デージーネットでは、VPN装置でワンタイムパスワードを使いたいというお客様向けに、FreeRADIUSと組み合わせてシステムを構築した事例があります。

Apacheとの連携

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

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

Webメール(Roundcube)との連携

Roundcubeは、OSSのWebメールソフトウェアです。Roundcubeには、Google Authenticatorモジュールが用意されており、ワンタイムパスワードの機能を追加することができます。これにより、外出先などからメールサーバへリモートアクセスする場合などでも、安心してメールシステムを利用することができます。

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

Roundcubeの二要素認証画面

OpenAMとの連携

OpenAMとは、シングルサインオン(SSO)の認証を提供するソフトウェアです。OpenAMと連携させることで、ネットワーク上の様々なWebアプリケーションで、ワンタイムパスワードを利用した二要素認証を実現することができます。なお、OpenAMは当初はオープンソースとして公開されていましたが、最新版はオープンソースではなくなっています。

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

デージーネットでは、Google Authenticatorのインストール方法や使い方、設定方法など、詳細についてまとめた調査報告書を公開しており、無料でダウンロードすることができます。また、ワンタイムパスワードを使った認証システムの構築サービスも行っており、お客様の課題や用途に合わせて最適な仕組みをご提案しています。

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

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

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

情報の一覧

Google Authenticator調査報告書

無料資料ダウンロード

Google Authenticatorは、二段階認証を行うためのモバイル端末向けアプリケーションです。iPhoneやAndroid端末などにインストールして使用できます。本書では、インストール手順や使用方法を調査した内容をまとめています。

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

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

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

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

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

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

デモのお申込み

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


デモをご希望の方

デモの申し込みイメージ


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