説明

暗号証拠の再検証に基づく認証委任

一連のエンティティ内で認証を委任する方法は、ユーザーが所望のサーバーにアクセスするのに必要である、ゲートウェイデバイスとユーザー間のTLSハンドシェイクの少なくとも一部の記録に依存する。前記方法は、次に、(1)認証を確認するために、前記サーバーが前記記録された部分を再検証する場合にアクセスが望ましいサーバーか、または(2)第三者エンティティが認証を確認し、資格を前記ゲートウェイサーバーに提供して、次に前記資格を使用して、ユーザーとして前記サーバーに対して認証する場合の前記第三者エンティティのいずれかに転送される、前記TLSハンドシェイクの前記記録された部分の暗号証拠の再検証に依存する。

【発明の詳細な説明】
【背景技術】
【0001】
組織は、あるサービスをユーザーに一緒に提供する一連のエンティティを有することができる。例えば、データ、ウェブページ、機能的なソフトウェアオペレーションなどのリソースへのアクセスは、習熟かつ権限を与えられた一定のユーザーに限定する必要がある。権限のないユーザーや悪意のある攻撃者が、ウェブリソースにアクセスしようとしているユーザーのアイデンティティを認証するのに使用される機構を含むコンピューターリソースにアクセスすることを阻止するために、さまざまなアクセス制御方式が開発されている。特に、個人情報盗難の攻撃(例えば、フィッシング、ファーミング)の増加により、2要素認証が一般的になりつつある。
【0002】
T−FA(Two-factor authentication)とは、アイデンティティと権限を確立するための異なる2つの方法を必要とする任意の認証プロトコルである。T−FAの一般的な実装は、要因の一つとして「あなたが知るもの」(例えば、パスワードまたは個人識別番号)を使用し、他の要因として「あなたが有するもの」(例えば、クレジットカードまたはハードウェアトークン)か、あるいは「あなたであるもの」(例えば、指紋または網膜のパターン)を使用する。例えば、スマートカードは、T−FAを提供する方法の1つである。スマートカードは、ハードウェアトークンの一例であり、典型的には、所与のデータ上の暗号化機能を実行するなどのさまざまなセキュリティ動作が可能であるマイクロプロセッサーを含む。スマートカードは通常、証明書ベースの認証を要求するプロトコルに使用できる1つまたは複数のITU−T(International Telecommunication Union)X.509証明書(およびそれらに関連する秘密鍵)を保持する。SSL(Secure Socket Layer)、TLS(Transport Layer Security)、およびKerberos(「Public Key Cryptography for Initial Authentication in Kerberos」の省略である、PKINITを用いる)は、そのようなプロトコルのすべての例である。
【0003】
証明書を使用するのにスマートカードは必要ない。多くのデバイス(例えば、コンピューター、携帯電話)は、証明書(およびそれらに関連する秘密鍵)を格納し、使用することが可能である。例えば、Windows(登録商標) Mobile 5.0 は、(SSLまたはTLSの最上部で起動する Exchange ActiveSynch プロトコルを経由して)Eメールやカレンダー情報を同期化するために、証明書を使用して、Exchange 2003 SP2 サーバー に対して認証することができる。
【0004】
例えば、ウェブベースのアクセスを組織内部のネットワーク(イントラネット)上に置かれるウェブサーバーに提供するネットワーク端部のゲートウェイデバイスを含む、組織のネットワークの一連のエンティティに対する個人情報盗難の攻撃を阻止することが、重要である。
【0005】
認証委任は、クライアントがサーバーに対する認証を委任するか、より具体的には、第三者認証サービス(またはゲートウェイ)が、ユーザーに代わって(実質的には、そのユーザーに成り済ますことによって)リソース(またはサーバー)にアクセスして認証することができる場合として広く定義されている。アクセスされたサーバーは、認証サービスのアカウントに基づいてというよりむしろ、ユーザーのアイデンティティ上に権限付与判定の基礎を置く。
【0006】
本背景技術は、以下の発明の概要および詳細な説明に対して簡潔なコンテキストを導入するために提供される。本背景技術は、特許請求の範囲に記載された主題の範囲を決定する際の補助となることを意図しておらず、特許請求の範囲に記載された主題を上記に提示された任意のまたはすべての欠点もしくは問題を解決することができるこれらの実装のみに限定すると見なすことも意図していない。
【発明の概要】
【課題を解決するための手段】
【0007】
再検証または暗号証拠に基づいた認証委任は、ユーザーが一連のエンティティ内の特定のサーバーにアクセスを望むとき、ゲートウェイデバイスとユーザー間のTLSハンドシェイクの少なくとも一部の記録を利用する。暗号証拠は、TLSハンドシェイクの記録された部分を(1)サーバーが記録された部分を再検証して認証を確認する場合の所望のサーバーか、または(2)第三者エンティティが、記録された部分を再検証し、ユーザー資格をゲートウェイに提供することによって認証を確認し、今度はその資格を使用して、ユーザーとしてサーバーに対して認証する場合の第三者エンティティのいずれかに転送することによって提供される。いずれの場合にも、サーバーおよび第三者エンティティは、ユーザーとゲートウェイデバイス間の認証に関与せずに、TLSハンドシェイクの記録された部分を使用してユーザーアクセスを許可するかどうかの判定をする。
【0008】
さまざまな説明的な例において、暗号証拠は、TLSハンドシェイクが時宜にかなう(すなわち、「フレッシュ(fresh)」)ように保証することによって付加的なセキュリティ対策を提供するために、タイムスタンプを含む。加えて、有効なTLSハンドシェイクを確認した後、第三者エンティティは、ゲートウェイが、ユーザーに代わって、例えば、PKINITを用いたKerberosを使用して、所望のサーバーに対して認証できる一時的な(すなわち、期限付き)ユーザー資格を発行するように設定することができる。
【0009】
本概要は、簡易形式によって概念の選択を導入するために提供される。この概念は、詳細な説明の節においてさらに説明される。本概要において説明されたもの以外の要素またはステップが実現可能であり、要素またはステップは必ずしも必要とされない。本概要は、特許請求の範囲に記載された主題の主要な特徴または本質的な特徴を明らかにすることを意図しておらず、特許請求の範囲に記載された主題の範囲を決定する際の補助としての使用も意図しない。特許請求の範囲に記載された主題は、本開示のいずれの部分に述べた任意またはすべての欠点を解決する実装に限定されない。
【図面の簡単な説明】
【0010】
【図1】TLSハンドシェイクメッセージの再検証に基づく認証委任のための説明的なアーキテクチャの簡易化した機能的なブロック図である。
【図2】図1の例示的なアーキテクチャを利用して、認証プロセスのステップを示す説明的なフロー図である。
【図3】ユーザー資格が、TLSハンドシェイクの少なくとも一部の記録を受信する第三者エンティティによって提供される認証委任のための説明的なアーキテクチャの簡易化した機能的なブロック図である。
【図4】クライアントとKerberos(バージョン5)プロトコルにおける鍵配布センター間の説明的なメッセージ交換を示す図である。
【図5】図3の例示的なアーキテクチャを利用して、認証プロセスのステップを示す説明的なフロー図である。
【図6】典型的なTLSハンドシェイクフェーズのクライアントとサーバー間のメッセージの交換を示す概略メッセージフロー図である。
【発明を実施するための形態】
【0011】
再検証または暗号証拠に基づいた本認証委任の説明的なコンテキストは、クライアント/ユーザーがゲートウェイを通じて1つまたは複数のサービスプロバイダーにアクセスするものである。しかしながら、このコンテキストは単に説明的であり、他のコンテキストおよび環境でも適用できることを強調しておく。例えば、本認証委任は、ウェブサーバーがバックエンドアプリケーションまたはデータベースに対してユーザーとして認証する必要があるとき、もしくは代替的に一連のエンティティがあり連鎖するエンティティ間で認証が必要とされる場合の任意の設定において使用することができる。
【0012】
アクセスコンテキストにおいて、ゲートウェイデバイスは、ユーザーが要求を提出するウェブサーバーへのアクセスを提供し、これらの要求は、ゲートウェイに到達し、最終的には内部のウェブサーバーに到達する。しかしながら、ゲートウェイとウェブサーバーの両方は、典型的には、これらに接続しているユーザーが所望のリソースにアクセスできるかどうかを判定するために、ある認証形式を必要とする。
【0013】
ゲートウェイを組み込んで、FBA(form-based authentication)を使用する場合、ユーザーは、ログオン形式でユーザー名およびパスワードを入力する必要がある。次にユーザーは、この形式を提出し、ゲートウェイは、ユーザーのユーザー名およびパスワードを受信する。次にゲートウェイは、それらの資格を使用して、ユーザーに代わって内部のウェブサーバーに対して認証することができる。ゲートウェイがパスワードを受信し、要望通りにパスワードを使用することができるため、これは非常に簡単であり実行可能である。しかしながら、ある認証方式と一緒にはこれは実行できない。例えば、ユーザーが、パスワードを提供しない認証方式を使用してゲートウェイに対して認証する場合、ゲートウェイは、ユーザーに代わって内部のウェブサーバーに対して認証するために再使用することができる何らの資格を有さない。
【0014】
この問題に対するいくつかの解決方法が提案されている。例えば、一解決方法では、「信頼された第三者」が関与する。ここでは、ゲートウェイを「信頼する」のに先立って信頼された第三者を組み込んで、すべてのユーザーに代わって定義されたウェブサーバー(または一般的にサービス)のセットに対して認証する。この技術を、ゲートウェイ(またはフロントエンドサーバー)が、クライアントに代わって他のサーバーと使用するチケットを要求できるプロトコルとして実装することができる。信頼された第三者は、次に、ゲートウェイがその後任意のユーザーに成り済ますことができるように、任意のユーザーに代わってサービスチケットをゲートウェイに進んで提供する。
【0015】
信頼された第三者を組み込んで、具体的な条件の下にサービスチケットを提供することもできる。例えば、Kerberosプロトコルにおいて、クライアントは、サービスチケットを介してゲートウェイに対して認証し、Kerberosに制約された委任は、信頼された第三者(鍵配送センター)を組み込んで、その条件を課すことができる方法を提供する。この場合では、ゲートウェイは、主張したユーザーが実際にゲートウェイに認証(サービスチケットを介して)された証拠を提供しなければならない。これは、システム全体のセキュリティを強化するのに重要である。例えば、このような証拠を要求する利点は、侵害されたゲートウェイは、最初にユーザーがそのゲートウェイに正しく認証されなければユーザーに代わってサーバーにアクセスすることができないことである。
【0016】
これらの提案がパスワードなしの認証に対処するための方法を提供する一方で、場合によっては、KDC(Key Distribution Center)または他の信頼された第三者エンティティと関与しない認証委任モデルを実装するのが望ましいかもしれない。このようなモデルにおいて、ゲートウェイは、KDCとの通信を全く行わずに、ユーザーに代わって内部のウェブサーバーに対して認証する。この種の機能性を提供する多くの解決方法がある。例えば、一部の製品は、いったんユーザーがゲートウェイに対して認証すると、そのゲートウェイは、内部のウェブサーバーによって信頼されたトークン(HTTP(Hypertext Transfer Protocol) 場合によってはクッキー(cookie))を戻すことができるように、ゲートウェイおよび任意の数の内部のウェブサーバー上でインストール/組み込むことができる。他の提案と同様に、このモデルに対する1つの問題は、ゲートウェイは完全に信頼されたエンティティであるので、システムの全体のセキュリティを低下させることである。
【0017】
本配置は、暗号証拠の再検証に基づいた認証委任を提供する。ゲートウェイ(またはフロントエンドサーバー)は、ウェブサーバー(またはバックエンドサーバー)へのアクセスを提供する。クライアント/ユーザーは、クライアント認証を有するTLSハンドシェイクを使用してゲートウェイに対して認証する。TLSハンドシェイクの記録、または少なくともユーザーがゲートウェイに認証されたことを証明するのに十分なTLSハンドシェイクの記録は、次いで、ウェブサーバー(そのハンドシェイクの有効性を再検証する)か、または第三者エンティティ(その記録を検証した後、ユーザー資格をゲートウェイに提供し、次にゲートウェイは、ウェブサーバーに対して認証する)のいずれかに提供される。
【0018】
これより同様の参照番号が同様の要素を指す図を参照しながら、図1に本認証委任を利用する例示的なネットワークアーキテクチャを示す。クライアント/ユーザーコンピューターシステム10を、ゲートウェイ20(認証サーバとも呼ばれる)に動作可能につなげることによって、クライアント/ユーザー10とウェブサーバー30(ネットワークサーバーとも呼ばれる)のネットワーク間の通信ができるようになる。ゲートウェイ20は、ユーザーを認証するのに必要な情報を含むデータベース/ディレクトリ(図示せず)を含む(代替的に、ゲートウェイは、外部のユーザーデータベース/ディレクトリを用いてネットワーク上で通信することができる)。ログオンに応答して、ユーザー/クライアント10は、参照数字35に示すように、最初にクライアント認証を有するTLSハンドシェイクを経由してゲートウェイ20に対して認証する。TLSハンドシェイクプロトコルではクライアント認証が随意的であるため、クライアント認証は、ここで意図的に述べられていることに留意されたい。
【0019】
TLSプロトコルは、インターネット上で通信プライバシーを提供し、クライアント/サーバーアプリケーションが、盗聴、改ざん、またはメッセージ偽造を阻止するように設計された方法によって通信することを可能にする。TLSハンドシェイクプロトコルによって、アプリケーションプロトコルがそのデータの最初のバイトを送信または受信する前に、サーバーとクライアントは、互いに認証し合い、暗号アルゴリズムと暗号鍵を交渉することができる。
【0020】
TLSの1つの利点は、アプリケーションプロトコルインディペンデントがあることである。従って上位レベルプロトコルを、透過的にTLSプロトコルの最上層に置くことができる。TLSハンドシェイクプロトコルを、以下のように要約することができる。すなわち、ユーザー/クライアントは、クライアントのハローメッセージを、サーバーのハローメッセージによって応答しなければならないサーバー(図1のゲートウェイ20)に送信する。さもなければ、致命的なエラーが起こり、この接続が失敗する。クライアントのハローとサーバーのハローを使用して、クライアントとサーバー間のセキュリティ強化機能を確立する。
【0021】
図6は、典型的なTLSハンドシェイクフェーズのクライアントとサーバー間のメッセージ交換を示す概略メッセージフロー図である。TLSプロトコルは、RFC2246のTLSプロトコル バージョン1.0において詳細に記載されており、この開示は、参照することによって本明細書に組み込まれる。クライアント/ユーザーは、クライアント−サーバー関係においてゲートウェイデバイスと通信する。
【0022】
さらに具体的には、図6に示すように、実際の鍵交換は、メッセージを4つまで使用する。すなわち、サーバー証明書、サーバー鍵交換、クライアント証明書、およびクライアント鍵交換である。新しい鍵交換方法は、これらのメッセージに対しフォーマットを指定し、そのメッセージの使用を定義することによって作り出され、これによってクライアントとサーバーは、共有秘密に対して合意できる。ハローメッセージの後、サーバーは、そのメッセージが認証されるべきであるならば、メッセージの証明書を送信する。加えて、要求される場合は(例えば、サーバーが証明書を有しないか、または署名のみに対するものである場合)サーバー鍵交換メッセージを送信することができる。
【0023】
サーバーが認証された場合、暗号スイートの選択がふさわしければ、サーバーは、クライアントから証明書を要求することができる。次にサーバーは、ハンドシェイクのハローメッセージフェーズが完了したことを表示する、サーバーのハロー完了メッセージを送信する。次にサーバーは、クライアントの応答を待つ。サーバーが、証明書要求メッセージ(certificate request message)を送信した場合、クライアントは、その証明書メッセージを送信しなければならない。クライアント鍵交換メッセージが送信され、そのメッセージ内容は、クライアントハローとサーバーハロー間で選択した公開鍵アルゴリズムに依存する。クライアントが署名機能を有する証明書を送信した場合、デジタル署名された証明書検証メッセージを送信して、この証明書を明確に検証する。
【0024】
図1に戻ると、この説明的な例において、ゲートウェイ20は、このハンドシェイクの一部として交換されたデータの記録(図1では参照番号45とともにTHRとして示す)を作成する。より詳しくは、この記録は、TLSハンドシェイクの以前のすべてのメッセージに対する署名から成り、ユーザー/クライアント10がその証明書と一致する秘密鍵を実際に所有することを証明する、証明書検証メッセージまでのデータを少なくとも含む。
【0025】
TLSハンドシェイクの記録、またはTHRは次に、ユーザー/クライアント10がゲートウェイ20に認証された認証証拠(すなわち、「プルーフ(proof)」)として、内部のウェブサーバー30に直接提供される。
【0026】
内部のウェブサーバー30は、クライアント/ユーザー10とゲートウェイ20間の認証に関与せずに、単にクライアント/ユーザー10とゲートウェイ20間の認証の認証証拠(すなわち、THR)を提供されて、次いで所望のリソースへのアクセスを提供するかどうかに関する判定をするにすぎない。
【0027】
提案された方式は、TLSハンドシェイクが証明書検証メッセージを含む場合しか使用できないことに留意されたい。このメッセージは、以下のいずれかの条件が真である場合は使用されない。すなわち
1)TLSハンドシェイクは、クライアント認証を含まない。
2)クライアントとゲートウェイは、(新しいセキュリティパラメータを交渉する代わりに)以前のTLSセッションを再開するまたは現在のセッションを繰り返す決定をする。この場合、TLSハンドシェイクは、証明書検証メッセージを含まない(RFC2246の30−31ページ参照)。
3)クライアント証明書は、署名機能(すなわち、固定ディフィー・へルマンパラメーターを含むものを除くすべての証明書)を有する。例えば、暗号スイート ECDH_ECDSAとECDH_RSA(RFC4492参照)は、クライアント認証をサポートするが、証明書検証メッセージは利用しない。
【0028】
図2は、図1に示した例示的なアーキテクチャにおいて、クライアント/ユーザーが、ウェブサーバーへアクセスしようとするときに実行される認証プロセスの説明的なフロー図である。このプロセスは、クライアント/ユーザーが、ウェブサーバーリソースを所望し、ゲートウェイ20にアクセスするときに開始する(ステップ200)。クライアント/ユーザーが、ウェブサーバーにログインしていない場合、そのクライアント/ユーザーは、ウェブサーバーがアクセスを許可する前に、認証されなければならない。
【0029】
クライアント/ユーザーは次に、所望のウェブサーバーリソースを要求する(ステップ210)。クライアント/ユーザーを認証するために、ゲートウェイ20とクライアント/ユーザー10は次に、上記に詳しく説明した方法によってクライアント認証を有するTLSハンドシェイクを実行する(ステップ220)(当業者は当然、ゲートウェイ20は、クライアント/ユーザーが所望のリソースを要求する前か、またはクライアント/ユーザーがリソースを要求した後に、即座にクライアント/ユーザー10を認証できることを理解するだろう)。TLSハンドシェイクの少なくとも一部の記録が作成されて、要求されたウェブサーバーに提供される(ステップ230)。
【0030】
THRの受信後、ウェブサーバー30は、クライアント/ユーザーが、ゲートウェイに認証されたことを検証する(証明書のクライアント/ユーザーの署名を有効にすることによって、THRのメッセージおよびある実施形態におけるTHRのタイムスタンプ(以下に論ずる)も検証する)(ステップ240)。クライアント/ユーザーがウェブサーバーにアクセスする権限を与えられたと仮定して、THRが検証された場合、要求されたウェブサーバーへのアクセスが許可され(ステップ250)、THRが検証されない場合、そのアクセスは拒否される(ステップ260)。
【0031】
攻撃者がTHRを取得できて、THRを再使用してクライアント/ユーザーに成り済まそうとする場合に、このような「リプレイアタック」を阻止するか、または少なくとも抑制するために想定されるいくつかの技術および機構がある。まず、サーバーおよび/またはクライアント/ユーザーが、時間に関連するデータ(例えば、タイムスタンプ)をそれらのハンドシェイクメッセージに組み込んだと仮定して、サービスプロバイダー(例えば、内部のウェブサーバー)は、受信したTHRを調べて、それが「フレッシュ」であることを確認することができる。この解決方法は、典型的には、ゲートウェイ20およびウェブサーバー30に(またはユーザー/クライアント10およびウェブサーバー30)、同期化されたクロックを有するよう要求する。とはいえ、当業者は当然、多くの実現可能な次善策があることがわかるだろう。
【0032】
代替的に、ゲートウェイ20は、サービスプロバイダー(ウェブサーバー30)にノンスを求め、TLSハンドシェイクの一部としてユーザー/クライアント10に送信するメッセージの1つの中にノンスを組み込むことが可能である。サービスプロバイダーは次に、受信したTHRを調べて、それが以前に作成されてゲートウェイ20を通過したノンスを含むことを確認することができる。
【0033】
このような2つの可能性のいずれにおいても、ゲートウェイ20(またはユーザー/クライアント10)は、あるデータをTLSハンドシェイクメッセージに組み込む(さらに、ハンドシェイクプロトコルは基本的に、データ転送セッションのセキュリティパラメータを交渉する一連の順序付けられたメッセージである)。このようなデータの組み込みは、典型的には、以下の方法の1つによって行われるものとする。すなわち
(1)サーバーは、タイムスタンプまたはノンスをサーバーのハローメッセージ内に、このメッセージのランダムフィールドの一部として、置く(ハンドシェイクプロトコルのこの態様の詳細は、RFC2246の7.4.1.3節に見出すことができる)
(2)サーバーは、タイムスタンプまたはノンスをサーバーのハロー拡張子に置く(詳細は、RFC3546の2.2節に見出すことができる)
(3)クライアント/ユーザーは、タイムスタンプをクライアントのハローメッセージ内に、このメッセージのランダムフィールドの一部として、置く(ハンドシェイクプロトコルのこの態様の詳細は、RFC2246の7.4.1.2節に見出すことができる)
(4)クライアント/ユーザーは、タイムスタンプをクライアントのハロー拡張子内に置く(詳細は、RFC3546の2.1節に見出すことができる)
【0034】
最後に、上記の代替案の各々に加えて、サービスプロバイダ(ウェブサーバ30)は、同じTHRを2回以上使用しないことを保証するために、受信するすべてのTHRを記憶することが可能である。この記憶は、ある共有された記憶装置または通信機構を経由して、サービスプロバイダー間で共有することも可能である。
【0035】
別の説明的な実装において、ゲートウェイまたはクライアントとゲートウェイ間の通信チャネルを侵害する攻撃者に対するより一層の防御として、「2重の」TLSハンドシェイクを使用することができる。この場合、クライアント/ユーザー10およびゲートウェイ20は、クライアント認証を有しない第1のTLSハンドシェイクを実行する。第1のTLSハンドシェイクがうまく完了したとき、クライアント/ユーザー10およびゲートウェイ20は、クライアント認証を有する第2のTLSハンドシェイクを実行する。後に証拠(THR)として使用される第2のハンドシェイクは、クライアント/ユーザー10およびゲートウェイ20が第1のハンドシェイクから得たセッション鍵によって送信のために暗号化される。従ってTHRは、暗号化されずに(例えば、暗号化されていない文章で)送信されないように防御されているので、攻撃者がたとえゲートウェイ20を侵害できたとしても、THRを取得するのはより困難になるだろう。
【0036】
これまで論じられ、図1に示した実施形態は、ユーザー/クライアント10、ゲートウェイ20、およびサービスプロバイダー(ウェブサーバー30)から成る。図3に示す、以下でより詳細に論じられる代替的実施形態では、第三者エンティティ40を利用する。この場合、サービスプロバイダー(ウェブサーバー30)は、第三者エンティティ40を「信頼」して、ユーザーの実アイデンティティを提供する。このような第三者エンティティ40を、KerberosKDC(S4U2Self+S4U2Proxyなど)またはCA(Certificate Authority、認証局)にすることができる。第三者エンティティ40を、個別のエンティティとして図3に示しているが、ある構成においては、第三者エンティティ(KDCまたはCA)は、ゲートウェイ20として同じマシン上に常駐することに留意する。
【0037】
図3に示した実施形態をさらに具体的に論じる前に、KDCとして知られる信頼された第三者の使用に関与するKerberosプロトコルが、クライアントとサービス間の共有セッション鍵を交渉し、クライアントとサービス間の相互認証を提供することを論ずる。
【0038】
Kerberosの基礎は、チケットと認証コードである。チケットは、特定のサービスを目的とするエンベロープ(公開メッセージ)の対称鍵(チケットセッション鍵−2つのエンドポイント間で共有されるただ1つの鍵である)をカプセル化する。チケットの内容は、サービスのプリンシパルと発行するKDC間で共用される対称鍵を用いて暗号化される。チケットの暗号化された部分は、他の項目の中で、クライアントのプリンシパル名を含む。認証コードは、関連するチケットのチケットセッション鍵を使用して、直近に作成されたことを示すことができる記録である。チケットセッション鍵は、そのチケットを要求したクライアントにより公知である。認証コードの内容は、関連するチケットセッション鍵を用いて暗号化される。認証コードの暗号化された部分は、他の項目の中で、タイムスタンプとクライアントのプリンシパル名を含む。
【0039】
図4に示したように、Kerberos(バージョン5)プロトコルは、以下のクライアント405とKDC410間、およびクライアント405とアプリケーションサーバー415間のメッセージ交換から成る。すなわち
AS(Authentication Service、認証サービス)交換
クライアントは、典型的にはTGT(Ticket Granting Ticket、チケット保証チケット)である、KerberosAS(authentication server)から「最初の」チケットを取得する。AS−REQメッセージ420とAS−REP425メッセージはそれぞれ、クライアントとAS間の要求メッセージと応答メッセージである。
TGS(Ticket Granting Service、チケット保証サービス)交換
続いてクライアントは、認証するためにTGTを使用して、KerberosTGS(ticket-granting server)から特定のサービスのサービスチケットを要求する。TGS−REQメッセージ430とTGS−REP435メッセージはそれぞれ、クライアントとTGS間の要求メッセージと応答メッセージである。
クライアント/サーバーAP(Authentication Protocol、認証プロトコル)交換
次にクライアントは、クライアントのチケットセッション鍵の所有を認証するサービスチケットと認証コードから成るAP−REQメッセージ440を用いて要求する。サーバーは、随意的に、AP−REPメッセージ445を用いて応答することができる。AP交換は、典型的には、セッション固有対称鍵を交渉する。
【0040】
ASおよびTGSは、典型的には、KCDとしても知られる単一のデバイス内に組み込まれる。
【0041】
AS交換において、KDC応答は、他の項目の中で、チケットセッション鍵を含み、クライアントとKDC間で共有される鍵(AS応答鍵)を使用して暗号化される。AS応答鍵は、典型的には、人間ユーザー用のクライアントのパスワードから得られる。従って、人間ユーザーにとって、攻撃に対するKerberosプロトコルの抵抗力は、人間ユーザーのパスワードの効力ほど強くない。
【0042】
データ発信元認証および完全秘密を容易にするために、X.509証明書形式での非対称暗号の使用(「ISOC(Internet Society、インターネット協会)」によって管理された文書シリーズ「Request for Comments」の項目でRFC3280を参照)が普及している。確立されたPKI(Public Key Infrastructure、公開鍵基盤)は、認証および安全な通信を確立するために使用することができる鍵管理および鍵分散機構を提供する。公開鍵暗号をKerberosに付加することは、公開鍵プロトコルに上手い合同式を提供し、強力なパスワードを管理する人間ユーザーの負担を取り除き、ケルベライズ(Kerberized)されたアプリケーションが、現存する鍵サービスおよびアイデンティティ管理を利用できるようにする。
【0043】
KerberosTGTにより与えられる利点は、クライアントが、長期間の秘密を1回しかさらさないことである。TGTおよびそれに関連するセッション鍵は次に、後に続く任意のサービスチケット要求に対して使用することができる。1つの結果では、すべての追加的な認証が、最初の認証が実行された方法から独立している。その結果、最初の認証は、公開鍵暗号をKerberos認証に組み込むのに便利な場所を提供する。加えて、最初の交換の後の対称暗号の使用は、性能考察に適している。
【0044】
RFC4456は、クライアントおよびKDCが、AS交換によって相互に認証する公開鍵と秘密鍵の組を使用して、クライアントとKDCのみにより知られるAS応答鍵を交渉し、KDCによって送信されたAS−REPを暗号化できる方法およびデータ形式について記載する。
【0045】
図3を参照すると、TLSハンドシェイク(図1への参照とともに論じられたのと同様に、「2重の」ハンドシェイクにすることができる)の完了後、ゲートウェイ20は、THR45を第三者エンティティ40に提供する。図1の場合のように、再度、「信頼するエンティティ」(この場合、第三者エンティティ40)は、クライアント/ユーザー10とゲートウェイ20間の認証に関与せずに判定する。むしろ、信頼するエンティティは、THRに依存して、ユーザー資格をゲートウェイに提供するかどうかを判定する。
【0046】
さらに具体的には、有効なTLSハンドシェイク(すなわち、THR)の交換において、第三者エンティティ40は、参照番号55に示すように、UC(user credential)の形式をゲートウェイ20に戻す。ゲートウェイ20は、今度は、参照番号65に示すように、USを使用してウェブサーバー30に対して認証する。KDCの場合、ユーザー資格は、ユーザー10の名におけるKerberosのサービスチケットまたはTGTとなる。CAの場合、ユーザー資格は、ユーザーの名における証明書(通常、短い存続期間とともに)となる。
【0047】
図5は、クライアント/ユーザーが、第三者エンティティを含むシステムのウェブサーバーにアクセスしようとするときに実行される認証プロセスのステップを示す説明的なフロー図である。このシステムにおいて、そのプロセスは、クライアント/ユーザー10がゲートウェイ20にアクセスするときに開始する(ステップ500)。クライアント/ユーザー10は次に、所望のウェブサーバー30のリソースを要求する(ステップ510)。クライアント/ユーザー10がウェブサーバーにログインしていない場合、そのクライアント/ユーザー10は、ウェブサーバー30がアクセスを許可する前に認証されなければならない。
【0048】
クライアント/ユーザー10およびゲートウェイ20は次に、上記に詳細に示した方法でクライアント認証を有するTLSハンドシェイクを実行する(ステップ520)。TLSハンドシェイクの少なくとも一部の記録(THR)が作成され、第三者エンティティ(「信頼するエンティティ」)40に提供される(ステップ530)。
【0049】
THRの受信後、第三者エンティティ40は、ユーザーがゲートウェイに認証されたことを検証する(THRの証明書検証メッセージを有効化することによって)(ステップ540)。THRが有効かつフレッシュであると検証された場合(ステップ550)、ユーザー資格(例えば、CAの場合における一時的な証明書、またはKDCの場合におけるKerberosのサービスチケット)は、ゲートウェイ20に提供される(ステップ560)。ゲートウェイ20は次に、ユーザー資格を使用して、実クライアント/ユーザーとしてウェブサーバー30に対して認証する(ステップ570)。しかしながら、THRが有効かつフレッシュと検証できない場合(ステップ550において)、ユーザー資格は、ゲートウェイ20に提供されず、アクセスは拒否される(ステップ555)。
【0050】
クライアント/ユーザーがウェブサーバーにアクセスする権限を与えられたと仮定して、ユーザー資格(例えば、クライアントの証明書)がウェブサーバー30によって認証された場合、要求されたウェブサーバーへのアクセスは、クライアント/ユーザーに許可され(ステップ580)、クライアント証明を検証できない場合、アクセスは、典型的には、拒否される(ステップ590)。
【0051】
ユーザー資格は、サービスチケット(KDCベースのデプロイメントにおける)か、一時的な証明書(CAベースのデプロイメントにおける)のいずれかから成るゲートウェイ20に提供される。KDCベースのデプロイメントは、上記で論じたKerberosに制約された委任(S4U2Self+S4U2Proxy)とほぼ同じなので、これ以上論じない。その代わりに、CAベースのデプロイメントについて論じる。
【0052】
CAベースのデプロイメントにおいて、有効かつ「フレッシュ」なTHRが提供されたとき、1つまたは複数のCAを使用してクライアント証明書を発行する。このシナリオにおいて、サービスプロバイダー(ウェブサーバー30)は、CAを信頼するように組み込まれて(これは典型的には、CA自体の証明書は、サービスプロバイダーのオペレーティングシステム上のある特定の場所にインストールされなければならないことを意味する)、ユーザーの実アイデンティティを提供しなければならない。
【0053】
いったんユーザー(およびそれに関連する秘密鍵)の名においてクライアント証明書が与えられると、ゲートウェイ20は次に、実際のユーザーとしてサービスプロバイダー30に対して認証するこれらの資格を使用する。証明書および秘密鍵を使用してサービスプロバイダー(例えば、ウェブサーバー30)に対して認証するために、ゲートウェイ20およびサービスプロバイダーは、クライアント証明書をサポートする認証プロトコルを使用しなければならない。クライアント証明書をサポートする2つの公知の認証プロトコルは、TLS(またはSSL)、またはKerberos(w/PKINIT)である。上記により詳細に論じたように、TLS(またはSSL)は、(証明書に基づいた)クライアント認証を含むことができる。「Public Key Cryptography for Initial Authentication in Kerberos」と題したPKINIT機構(RFC4556)は、Kerberosを使用可能のクライアントが、公開鍵暗号を経由して(すなわち、証明書およびそれに関連する秘密鍵を経由して)TGTを取得できるKerberosプロトコルへのプロトコル拡張の機構である。さらに具体的には、このような拡張は、事前認証データフィールドの非対称鍵署名および/または暗号アルゴリズムを使用することによって、公開鍵暗号を最初の認証交換に組み込む方法を提供する。
【0054】
クライアント/ユーザーがウェブサーバーにアクセスする権限を与えられたと仮定して、いったん資格(クライアント証明書)がウェブサーバー30によって認証されると、要求されたウェブサーバーへのアクセスは、クライアント/ユーザーに許可される。もちろんクライアント証明書が検証できない場合(すなわちウェブサーバーがCAを信頼するように組み込まれてない場合)、ユーザーによるウェブサーバーへのアクセスは拒否される。
【0055】
図1の実施形態にあるように、「2重の」TLSハンドシェイクを、ゲートウェイ20を侵害する攻撃者に対するさらなる追加的な防御のために、図3の実施形態に実装することができる。
【0056】
本明細書の発明の主題を構造上の特徴および/または方法論的動作に特有な言語によって説明してきたが、特許請求の範囲に定義された発明の主題は、上記の具体的な特徴または動作に必ずしも限定されないことも理解されたい。むしろ上記の具体的な特徴または動作は、特許請求の範囲を実装する例示的な形式として開示される。
【0057】
例えば、この文書を通じて我々は、ゲートウェイを介してクライアント/ユーザーがアクセスするサービスプロバイダーから成る一連のエンティティを参照する。しかしながら、これは、実現可能なシナリオの1つにすぎず、便宜上この文書を通じて使用されているにすぎない。他の実現可能なシナリオは、バックエンドアプリケーションまたはデータベースに対するユーザーとして認証する必要があるウェブサーバーを含む。本開示の新規の態様は、連鎖の中のエンティティ間の認証を要求する一連のエンティティに適用できる。各エンティティが元のクライアントとして連鎖中の次のエンティティに対して認証しなければならない、連鎖中の任意の数のエンティティにすることができる。
【0058】
1つの要素が別の要素に反応するものとして表示される場合、それらの要素を、直接的または間接的につなげられることがさらに理解される。本明細書に図示した接続を、要素間の結合または通信インタフェースを実現するために、実際には論理的または物理的にすることができる。接続は、とりわけ、ソフトウェアプロセス間のプロセス間通信、またはネットワークコンピューター間のマシン間通信として実装することができる。
【0059】
本明細書で使用される用語「例示的な」および「説明的な」は、実施例、事例、または説明としての役割を果たすことを意味する。本明細書で「例示的」または「説明的」として記述された任意の実装またはそれらの態様は、他の実装またはそれらの態様に対して必ずしも好適または有利であるように構成されていない。
【0060】
添付した特許請求の範囲の趣旨および範囲から逸脱しなければ、上記の具体的な実施形態以外の実施形態を考案できることが理解されているので、本明細書の主題の範囲は、次の特許請求の範囲に準拠することが意図される。

【特許請求の範囲】
【請求項1】
ゲートウェイを介してクライアント/ユーザーがアクセスするサービスプロバイダー間の認証委任の方法であって、
前記クライアント/ユーザーと前記ゲートウェイ間のクライアント認証を有するTLSハンドシェイクを実行するステップ(220)と、
前記クライアント/ユーザーが前記ゲートウェイに認証されたことを証明する前記TLSハンドシェイクの少なくとも十分な量のメッセージを記録するステップ(230)と、
前記記録を前記サービスプロバイダーに提供するステップ(230)と
を備えることを特徴とする方法。
【請求項2】
前記サービスプロバイダーは、前記クライアント/ユーザーと前記ゲートウェイ間の認証に関与しないことを特徴とする請求項1に記載の方法。
【請求項3】
前記提供するステップは、前記ゲートウェイから前記サービスプロバイダーまでの直接的な記録を提供することを特徴とする請求項1に記載の方法。
【請求項4】
前記記録するステップは、証明書検証メッセージを含む、前記TLSハンドシェイクのすべてのメッセージまでを記録することを特徴とする請求項1に記載の方法。
【請求項5】
時間に関連するデータを前記TLSハンドシェイクのメッセージに組み込むステップをさらに備えることを特徴とする請求項1に記載の方法。
【請求項6】
前記クライアント/ユーザーは、前記時間に関連するデータを組み込むことを特徴とする請求項5に記載の方法。
【請求項7】
前記ゲートウェイは、前記時間に関連するデータを組み込むことを特徴とする請求項5に記載の方法。
【請求項8】
前記サービスプロバイダーによって提供されたノンスを、前記TLSハンドシェイクの一部として、前記ゲートウェイから前記クライアント/ユーザーまでのメッセージに組み込むステップをさらに備えることを特徴とする請求項1に記載の方法。
【請求項9】
前記サービスプロバイダーは、受信したすべての記録のメモリを保持する、および同じ記録が2回以上使用されていないことを確認することを特徴とする請求項1に記載の方法。
【請求項10】
TLSハンドシェイクを実行する前記ステップは、
クライアント認証を有しない第1のハンドシェイクを実行するステップと、
前記第1のハンドシェイクの実行の成功した完了後、クライアント認証を有する第2のハンドシェイクを実行するステップと
をさらに備えることを特徴とする請求項1に記載の方法。
【請求項11】
前記クライアント/ユーザーとゲートウェイ間の前記第2のハンドシェイクは、前記第1のハンドシェイクから得たセッション鍵によって暗号化されることを特徴とする請求項10に記載の方法。
【請求項12】
前記サービスプロバイダーに提供された前記記録は、暗号化されないことを特徴とする請求項11に記載の方法。
【請求項13】
認証委任を使用して、エンドサーバ上のサービスへのアクセスを許可する方法であって、
ユーザーによって要求されたサービスにアクセスするために、前記エンドサーバで要求を受信するステップ(200)と、
前記エンドサーバでの前記ユーザーと前記ゲートウェイ/中間サーバー間で実行されるクライアント認証を有するTLSハンドシェイクの少なくとも一部の記録を受信するステップ(230)と、
前記TLSハンドシェイクの部分を利用して、前記TLSハンドシェイクを再検証する、およびユーザーのアイデンティティを確認するステップ(240)と
を備えることを特徴とする方法。
【請求項14】
ゲートウェイを介してクライアント/ユーザーがアクセスするサービスプロバイダー間の認証委任の方法であって、前記ゲートウェイは、
前記クライアント/ユーザーと前記ゲートウェイ間のクライアント認証を有するTLSハンドシェイクを実行するステップ(520)と、
クライアント/ユーザーが前記ゲートウェイに認証されたことを証明するために、前記TLSハンドシェイクの少なくとも十分な量のメッセージを記録するステップ(530)と、
前記記録を第三者エンティティに提供するステップ(530)と、
前記第三者エンティティによる前記記録の有効性の確認後(550)、ユーザー資格を前記第三者エンティティから受信するステップ(560)と、
前記ユーザー資格を用いて、前記ユーザーを前記サービスプロバイダーに対して認証するステップ(570)と
を備える方法を実行することを特徴とする方法。
【請求項15】
前記第三者エンティティは、認証局(Certificate Authority)であることを特徴とする請求項14に記載の方法。
【請求項16】
ユーザー資格を受信する前記ステップは、一時的な証明書およびそれに関連する秘密鍵を受信することを備えることを特徴とする請求項15に記載の方法。
【請求項17】
前記ユーザーを前記サービスプロバイダーに対して認証する前記ステップは、PKINITを用いたKerberosを使用して実行されることを特徴とする請求項15に記載の方法。
【請求項18】
前記第三者エンティティはKDCであり、ユーザー資格を受信する前記ステップは前記KDCからKerberosのサービスチケットを受信することを備えることを特徴とする請求項14に記載の方法。
【請求項19】
前記第三者エンティティは、単一デバイスのゲートウェイと一緒に常駐することを特徴とする請求項14に記載の方法。
【請求項20】
TLSハンドシェイクを実行する前記ステップは、
クライアント認証を有しない第1のハンドシェイクを実行するステップと、
前記第1のハンドシェイクを実行するステップの成功した完了後、クライアント認証を有する第2のハンドシェイクを実行するステップと
をさらに備えることを特徴とする請求項14に記載の方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate


【公表番号】特表2010−512069(P2010−512069A)
【公表日】平成22年4月15日(2010.4.15)
【国際特許分類】
【出願番号】特願2009−539518(P2009−539518)
【出願日】平成19年11月30日(2007.11.30)
【国際出願番号】PCT/US2007/086122
【国際公開番号】WO2008/127447
【国際公開日】平成20年10月23日(2008.10.23)
【出願人】(500046438)マイクロソフト コーポレーション (3,165)
【Fターム(参考)】