デバイスプリント認証は、2013年末(2013 Q3)にリリースが予定されているOpenAM 11.0で提供される、新しい方式のリスクベース認証です。前述のアダプティブリスク認証と同様にログインしようとするユーザーの本人性を確認し、追加の認証を要求します。アダプティブリスク認証との違いは、デバイスプリントの評価を主としている点です。
デバイスプリントとは、ユーザーの使用しているOSの画面解像度や色深度、インストールされているフォントの種類、ブラウザの種類やバージョンなど、クライアント固有の情報を意味します。ログインする前にこれらの情報を収集して、認証時のリスク判断に使用します。前回ログインした際に取得したデバイスプリントと今回取得したデバイスプリントが大きく異なっていれば、不正アクセスの可能性が高いと判断します。
デバイスプリント認証でリスクを評価できる情報の一覧を以下に示します。
収集する情報 | 概要 |
---|---|
ユーザーエージェント | クライアントのユーザーエージェント(一般的にはWebブラウザ)が、前回ログイン時にOpenAMに保存されたユーザーエージェントと一致しない場合に、ペナルティポイントが追加されます。 |
インストールされているフォント | クライアントにインストールされているフォントが、前回ログイン時にOpenAMに保存されたフォントと一致しない場合に、ペナルティポイントが追加されます。 |
インストールされているプラグイン | クライアントにインストールされているプラグインが、前回ログイン時にOpenAMに保存されたプラグインと一致しない場合に、ペナルティポイントが追加されます。 |
画面色深度 | クライアントの画面色深度が、前回ログイン時にOpenAMに保存された画面色深度と一致しない場合に、ペナルティポイントが追加されます。 |
画面解像度 | クライアントの画面解像度が、前回ログイン時にOpenAMに保存された画面解像度と一致しない場合に、ペナルティポイントが追加されます。 |
タイムゾーン | クライアントのタイムゾーンが、前回ログイン時にOpenAMに保存されたタイムゾーンと一致しない場合に、ペナルティポイントが追加されます。 |
ロケーションの範囲 | クライアントの位置情報と、前回ログイン時にOpenAMに保存された位置情報との差異が許容範囲外の場合に、ペナルティポイントが追加されます。 |
これらの情報にはそれぞれペナルティポイントを設定でき、それがしきい値を超えると、追加の認証としてOTPの入力が求められます。情報が収集されていない初回ログイン時には必ずOTPの入力が求められますが、一度その情報がOpenAMのユーザーデータストアに保存されると、次回以降は同じクライアント環境からのアクセスは本人の可能性が高いと判断され、OTPの入力は求められなくなります。
前述した情報のそれぞれのペナルティポイントを1とし、しきい値を2とした場合、クライアント情報が2つ以上異なっていれば、OTPの入力画面が表示されます。
例えば、最初にログインした際に利用していたブラウザがInternet Explorer 7で、次にログインした際に利用していたブラウザがInternet Explorer 8であった場合は、差異がそれだけであればリスクの許容範囲内となりますが、さらにインストールされているプラグインが1つ追加されていれば、不正アクセスの可能性があるとみなしてOTPの入力を求めます。
これらの情報を何日間、何レコード保持するか、OTPは何桁にするか、どのように送信するか(メールまたはSMS)といった設定も可能になっています。
デバイスプリント認証を試してみたい方は、ナイトリービルド版のOpenAMを使用してください。ただしこのバージョンは2013年10月15日現在開発・テスト中のため、いくつかの未対策のバグがあります。
OATH認証はOpenAM 10.1.0-Xpressから追加された認証モジュールです。OATH(Initiative for Open AuTHentication)に準拠したOTP認証ができます。OATHでは、HOTPとTOTPの2つの方法が規定されていますが、基本的な仕組みは同じです。
いずれの認証も、OTPを生成できるOATH準拠のデバイスとソフトウェアを必要とします。例えば、Google Authenticatorなどのソフトウェアがインストールされたスマートフォンや、YubiKey(注1)が使用できます。
注1:YubiKeyはスウェーデンのYubico社が開発したUSB接続のOTP認証デバイスです。一般的なOTPの場合、ソフトウェアが発行した認証用のコードを人間が読み取って入力する手間がかかりますが、Yubikeyはキーボードデバイスとして動くため、発行したOTPをログイン画面に自動的に入力できます。Yubikeyを使った認証の手順は後述します。
ここではOATHの仕様について少し詳細に解説します。OTPの生成には、次の2つのデータが必要です。
この2つのデータをサーバとクライアントの両方で共有しておき、これらから決められたアルゴリズムで生成した数字がOTPとなります。このOTPがクライアントサーバ間で一致すれば認証OKとなります。
クライアントサーバ間で、1.と2.がそれぞれ同じ値であればOTPは一致します。しかし、2.はクライアントサーバ間でずれが生じることがあり得ます。OTPの生成回数や時刻は必ずしも一致しません。そこでOATH認証は(HOTP/TOTP認証ともに)、2.の誤差を許容するような考慮がされています。
ユーザーが決めた秘密鍵とOTPの生成回数を基に、OTPを生成する方式です。ユーザーがデバイス上でOTP生成ボタンをクリックするたびに、新しいOTPが生成されます。OTPの生成回数(カウンタと呼びます)は、デバイス上に保持され、認証成功時にサーバ側にも記憶されます。従って生成したOTPを使わず、新たにOTPを生成した場合などに、サーバ上のカウンタよりもデバイス上のカウンタが大きくなる可能性があります。OpenAMはこのずれに対応するため、デバイス上のカウンタとサーバ上のカウンタの誤差(ウィンドウサイズといいます)を許容するようになっています。
例としてウィンドウサイズを50に設定した場合を考えます。デバイス上のOTP生成ボタンをユーザーが誤って30回を押した場合でも、ウィンドウサイズで指定した誤差に達しないのでOpenAMへのログインは成功し、カウンタの値は再び同期されます。しかし、ユーザーが51回ボタンを押した場合は、OpenAMにログインすることができなくなります。
ユーザーが決めた秘密鍵と時刻を基にOTPを生成する方式です。デバイスとサーバはともに、一定時間ごとにOTPを生成します。
サーバ側(OpenAM)は「TOTPタイムステップ間隔」で生成の間隔を設定します。デバイスとサーバの時刻のずれやクライアントサーバ間の通信時間により誤差が発生するため、HOTP認証と同様に、誤差を許容する必要があります。この誤差を設定するのが、「TOTPタイムステップ数」になります。「TOTPタイムステップ間隔」と「TOTPタイムステップ数」の設定値と誤差として許容される時間の関係は以下の図のようになります。
「TOTPタイムステップ数」が2で、「TOTPタイムステップ間隔」が30秒の場合は、89秒の誤差が許容されます。この間にユーザーには1度だけ、OTPによるログインが許可されます。再度同じOTPを使用してもログインはできません。OTPを使用して他者が不正にログインすることを防ぐためです。
Yubikeyを使ったHOTP認証のフローは以下のようになります。
クライアントPCのUSBポートにYubikeyを接続し、OpenAMとYubikeyに事前設定をします(設定方法については省略します)。OpenAMのログイン画面でユーザーIDを入力し、パスワードのフィールドにカーソルを当てます。
Yubikeyデバイスのセンサーの部分を指でタッチします。
自動的にパスワードが入力され、ログインが試行されます。この時内部では、HOTPのアルゴリズムによりOTPが生成され、クライアントサーバ間でその値が一致するかどうかが検証されています。
正しく設定ができていれば、ログインできます。
今回はOpenAMの認証機能のうち、特に不正アクセスの対策に有効なものをいくつか紹介しました。リスクベース認証やOTP認証を含めた多要素認証を使うことのメリットがお分かりいただけたかと思います。
次回はOpenAM 10.0で新たに追加された姉妹製品であるOpenIG(Open Identity Gateway)について解説します。OpenIGは、OpenAMと連携して代理認証を実現したり、フェデレーションゲートウェイとして動作します。また、組み込みデータストアであるOpenDJの概要とそれを利用することで実現できる新しいセッションフェールオーバーやパスワードポリシー制御について説明します。
和田 広之(わだ ひろゆき)
野村総合研究所のオープンソースサポートサービス OpenStandiaで、オープンソースを使ったサポートや製品開発の業務に従事。
Twitter: @wadahiro
田村 広平 (たむら こうへい)
OpenAM コミッタ。
野村総合研究所のオープンソースサポートサービス OpenStandiaで、OpenAMを中心としたOSSの研究開発・テクニカルサポートを担当。
Twitter: @tamura__246
Copyright © ITmedia, Inc. All Rights Reserved.