OpenIDを使用するサイトでの認証中のセキュリティ

OpenIDは、さまざまな無関係なサイト、ポータル、ブログ、フォーラムでの認証にユーザーが単一のアカウントを使用できるようにするオープンな分散システムです。 WEBサイトが認証またはユーザー許可の使用を伴う場合、これを実装するための可能なオプションを以下に示します。

1)電子メールを入力し、必要なデータを入力して、標準登録を使用します。

2)OpenIDプロバイダーの個人識別子を示すことにより、認証を使用します。

3)OAuthオープンプロトコルによる認証を使用する



2番目と3番目の方法のサポートは利点の1つであり、登録ユーザーの数を増やす必要があります。







1)OpenID認証を使用する目的



OpenIDを使用する主な目的は、ユーザー登録を簡素化することです。 簡素化は、シングルサインオンの分散システムで実現されます。これにより、多数のサイトで1つのログインとパスワードを使用できます。 OpenIDをサポートするサイトでは、ユーザーは毎回登録して各サイトのデータを覚える必要はありません。 代わりに、「IDプロバイダー」OpenID(IDを提供)のサイトに登録するだけで済みます。 OpenIDテクノロジーは分散化されているため、どのサイトでもOpenIDソフトウェアをエントリの手段として使用できます。 OpenIDの利便性は、OpenIDで認証する場合、訪問したサイトがユーザーの個人データ(電子メール、名前、性別、生年月日など)をすぐに送信でき、毎回この情報を入力する必要がないという事実にあります。 OpenIDプロバイダー。



2)OpenID認証の動作原理



例として、OpenID認証の動作原理を検討します。

ユーザーは、WEBブラウザーを使用して、興味のあるWebサイトにアクセスします(OpenIDの公式用語-RP)。 さらに、ユーザーがサイトのブログの1つにコメントを残したいとします。 OpenIDテクノロジーをサポートするサイトがない場合、ユーザーは登録を求められます。つまり、次のログインとパスワードを作成または受信します。 サイトがOpenIDテクノロジーをサポートしている場合、登録フィールドの横にOpenIDログインで示されます(ほとんどの場合OpenIDロゴで示されます)。 次に、ユーザーはOpenIDアドレス(プロバイダー(OP)のOpenIDサーバー上のユーザーの個人ページのアドレス)を入力できます。 たとえば、ユーザーがYandex WebサイトでOpenIDを受け取った場合、このOpenIDの形式はusername.ya.ru(「username」はyandex.ruでのユーザーのログイン)です。 以下の図に、追加の承認プロセスを示します。





以下は、OpenIDプロバイダーmyopenid.comによって発行されたOpenID識別子を使用した、 www.livejournal.comサイトでの承認のスクリーンショットです。

a。 ユーザーは、サイトwww.livejournal.comにコメントを書きたいと考えています。 ただし、彼はまだサイトに登録していませんが、プロバイダーmyopenid.comでOpenID識別子を持っています

b。 ユーザーはサイトwww.livejournal.comを開きます

c。 次に、ユーザーはOpenIDを介して認証方法を選択し、OpenIDプロバイダーのWebサイトにログインします。









d)OpenIDプロバイダーは、OpenIDアカウントを作成する段階でユーザーが以前に設定したパスワードの入力を提案します。 次に、このステップでユーザーに対応する機能を以下で検討します。





e)ユーザーはOpenIDプロバイダーのログイン名とパスワードを入力します。その後、ユーザーはサイトwww.livejournal.comで認証されます。





f)しばらくすると、Webサイトwww.livejournal.comがブラウザーに表示されます。ユーザーは既に認証されており、コメントを書き込むことができます。





3)アナログOpenID



OpenIDに加えて、登録せずにサイトリソースを使用する他の方法があります。

a)まず、シングルサインオンテクノロジーを見てみましょう。 テクノロジーは原則として非常に似ていますが、いくつかの違いがあります。

-Webポータルにいくつかの広範な独立したセクション(フォーラム、チャット、ブログなど)があり、いずれかのサービスでシングルサインオンテクノロジを使用した認証手順に合格すると、人は自動的に他のすべてのユーザーにアクセスして、アカウント情報を再入力します。 ここでは、OpenIDとシングルサインオンの機能は似ています。

-OpenIDとは異なり、「シングルサインオン」は一元化されており、企業ネットワーク内など、特定のシステム内でのみアカウントを使用できる可能性があります。 たとえば、ユーザーがユーザー名とパスワードを入力すると、特定の信頼できる企業リソース(Active Directoryなど)で認証が行われます。 さらに、自動認証は、この企業ネットワーク(IEを含む)の多くのアプリケーションおよびプログラムで可能です。 ユーザーが企業ネットワークを離れると、シングルサインオンアカウントを使用できなくなります。



b)OAuth Open Authorization Protocol。 ユーザー(第三者)のログインとパスワードを転送することなく、ユーザーの保護されたリソースへの制限付きアクセスを第三者に提供できます。 OAuthプロバイダーの例については、 en.wikipedia.org / wiki / OAuthを参照してください。 OAuthはOpenIDプロトコルの拡張であるという誤解がありますが、実際にはそうではありません。 OpenIDとOAuthには多くの共通点がありますが、後者はOpenIDとは関係のないスタンドアロンプ​​ロトコルです。

OAuthは、リソース(サービスのAPIなど)を使用する権利を提供できる許可プロトコルです。 たとえば、OAuthプロバイダーvkontakte.ruを介してlivejournal.comのOpenIDを介して認証します。後者は、一部のユーザー情報への永続的なアクセスを提供できます。

OpenIDは認証ツールです。このシステムを使用して、ユーザーが本人であることを確認できます。 OpenIDを介して認証されたユーザーが実行できるアクションは、認証パーティによって決定されます。



4)大規模なOpenIDプロバイダーと独自のOpenIDサーバーの作成



OpenIDプロバイダーのリストはopenid.net/get-an-openidで入手できます。 OpenIDプロバイダーを選択するときは、小規模プロバイダーがユーザーデータを外部に配信せず、このプロバイダーが1年で閉鎖されないという事実ではないため、ユーザーは注意する必要があります。これにより、別のプロバイダーから新しいOpenID識別子を作成する必要が生じます。

上級ユーザーの場合、サイトのURL(たとえばwww.ivan-petrov.ru )を示すOpenIDによる承認の可能性があります。これにより、HTMLヘッダーに示されているOP(OpenIDプロバイダー)に承認リクエストが転送されます。 この場合、OpenIDプロバイダーを変更するときは、HTMLヘッダーページのコードを変更するだけで十分です。OpenIDを使用した認証のURLは同じままです 。この例ではwww.ivan-petrov.ruです。 OpenID URLを指定して承認を提案するサイトでは、サイトをOpenID識別子として使用できます。 LiveJournal.comでは、これが可能です。

ユーザーがサードパーティのOpenIDプロバイダーをまったく信頼していない場合、プログラミングスキルがほとんどなくても、独自のOpenIDサーバーを作成し、承認とOpenID識別子を他のユーザーに配布するために使用できます( www.opennet.ru/base/dev/の例を参照してください) openid_server.txt.html )。



5)OpenIDセキュリティ分析



残念ながら、OpenIDテクノロジの仕様(現在はOpenID Authentication 2.0)では、OpenIDを使用する場合の認証の保護方法については説明されていません。

この点に関して、インターネットでは、攻撃者がどのように機密ユーザーデータ(たとえば、OpenIDアカウントのパスワード)を取得できるかについて、長い議論が続いています。 Ben Laurieは、OpenJプロバイダー(OP)(たとえば、LiveJournal)へのログイン/パスワードが、注意を怠るとフィッシング詐欺師にとって簡単な餌食になる簡単なシナリオを説明しました。 一般的に、シナリオは次のとおりです。

a)ユーザーがウェブサイトにアクセスして、たとえば写真を表示します。 ユーザーが写真の下にコメントを残したい場合、サイトが要求するのはOpenIDを使用して登録または認証することだけです。 ユーザーはOpenIDを選択し、そこでuser_xxx.livejournal.comなどに書き込み、フォームを送信します。

b)OpenIDの一般原則に従って、ユーザーはwww.livejournal.com/openid/server.bmlに送信されます。 ユーザーがlivejournal.comで既に認証されている場合、認証の成功のサインが写真とともにサイトに返され、追加のパラメーターが送信されます。 そうでない場合、LiveJournalはまずログイン/パスワードの入力を求めます。 これは理論上です。 実際には、写真のあるサイトはサイバー犯罪者に属している可能性があり、OPエンドポイントの代わりに、適切な方法でURLをマスクすることでユーザーをプロキシに送信できます( www.livejournal.com/openid/server.bml?lot_of_junk@evilcats.example.comなど) 。 データを入力する必要があるlivejournal.comの同じページがユーザーに表示され、evilcats.example.comプロキシを介して表示されるだけで、livejournal.comのログイン/パスワードはプロキシサーバーのログに残ります。 したがって、ユーザーがユーザー名とパスワードを入力するURLページを注意深く監視しないと、悪意のあるデータがこのデータを取得する可能性があります。 この事実は、OpenIDテクノロジーの急速な普及を妨げるものです。

一部のOpenIDブログユーザーは、上記のシナリオを回避する方法について積極的に議論しています。 たとえば、次の保護方法が提案されています。

a)ワンタイムパスワードを生成するオプション:

-OpenIDプロバイダーのユーザー間のSSLチャネルの編成

-ユーザーのPCに特別なCookieが存在すること。これは、OpenIDプロバイダーのWebサイトに最初にアクセスしたときに記録されます。

-Cookieは、OpenIDプロバイダーによって電子メールに送信されたパスワードの確認時にユーザーに送信されます。 CookieはOpenIDプロバイダーの側にも保存され、一致する必要があります。

-Cookieは、パスワードを正しく入力した後にのみSSLを介してユーザーのPCに送信されます

-その後のさまざまなサイトでのOpenID認証では、OpenIDプロバイダーはCookieをPCから受信したものと確認し、ユーザーのみが知っている、プロバイダーのOpenIDサーバーにロードされている特別な画像を表示します。 ユーザーにこの画像が表示されない場合、OpenIDサーバーとの実際の通信は行われていません。

この方法では、OpenIDによる認証を改善できますが、ブラウザーにCookieが必要です。追加のリンクがメールパスワードの形式で表示されます。



b)OpenIDを使用するときにセキュリティを強化するもう1つのより一般的な方法は、ユーザーのブラウザに特別なプラグインが表示されることです。 このプラグインがないと、OpenIDパスワードの入力はユーザーに推奨されません。 ただし、すべての主要なブラウザー開発者がこれらのプラグインを実行するということは事実ではありません。



c)3番目の方法は、OpenIDプロバイダーでの認証にSSL証明書を使用することです。 一方、この方法では、ユーザーがパスワードを入力する必要がないため、セキュリティが向上し、認証が容易になります。 一方、攻撃者はトロイの木馬を通じて証明書を取得できます。 さらに、myopenid.comなどの大規模なOpenIDプロバイダーのみがSSL証明書をサポートしています。



また、一部のOPは別のOPに登録されたOpenIDを受け入れないため、これによりSINGLE OpenID識別子の定義がわずかに変更されることに注意してください。



6)標準



-OpenID認証2.0

openid.net/specs/openid-authentication-2_0.html



-OpenID属性交換1.0

openid.net/specs/openid-attribute-exchange-1_0.html



-OpenID Simple Registration Extension 1.0

openid.net/specs/openid-simple-registration-extension-1_0.html



-Yadis Discovery Protocol(OpenIDとは別に開発)

svn.infogrid.org/infogrid/docs/yadis/yadis-v1.0.pdf



結論



1. OpenIDテクノロジーは、このテクノロジーをサポートするサイトでの便利な認証方法です。

2. OpenIDの所有者は、さまざまなサイトの多くのパスワードを保存したり、メールアドレスを提供したりする必要はありません。OpenIDアカウントのURLとパスワードを知っているだけです。

3.プロバイダーのOpenID Webサイトでアクティブセッションを認証および維持する場合、OpenIDのURLを指定するだけで、パスワードを入力せずにOpenIDを使用する他のサイトで認証が行われます。

4.バージョン2.0の仕様では、OpenIDの使用時に適切なレベルのセキュリティが提供されません。 新しいバージョンの仕様や、Webブラウザー(PC / PDA /モバイルブラウザー用)用の特別なプラグインを開発および使用する際に、セキュリティを向上させることができます。 今のところ、セキュリティを向上させるために、経験豊富なユーザーは、SSL証明書を提供するOpenIDプロバイダーに登録することをお勧めします。

5. WEBサイトおよびサービスの開発者は、OpenIDを使用して認証機能を簡単に追加できます。これに必要なすべてのライブラリが無料で利用できるためです。 OpenID認証のサポートにより、サイトの使いやすさが大幅に向上します。これは、この概念を開発するための前提条件です。



All Articles