(57)【特許請求の範囲】
【請求項１】
第１ノードと、
第２ノードと、
上記第１ノードと上記第２ノードとの間の暗号化通信に使用されるセッション鍵を生成する認証サーバと、を備え、
上記第１ノードと上記認証サーバとは、上記第１ノードと上記認証サーバとの間の暗号化通信に使用される第１秘密鍵を保持するように構成され、
上記第２ノードと上記認証サーバとは、上記第２ノードと上記認証サーバとの間の暗号化通信に使用される第２秘密鍵を保持するように構成され、
上記第１ノードは、上記セッション鍵の発行を上記認証サーバに要求するにあたっては、第１ノンスを生成して上記認証サーバに送信するように構成され、
上記第２ノードは、上記セッション鍵の発行を上記認証サーバに要求するにあたっては、第２ノンスを生成して上記認証サーバに送信するように構成され、
上記認証サーバは、
上記第１ノンスと上記第２ノンスとを受け取ると上記セッション鍵を新たに生成し、
上記受け取った第１ノンスと上記新たに生成されたセッション鍵と所定の第１付加情報とを含む第１メッセージと上記第１秘密鍵とを用いて第１メッセージ認証コードの値を計算し、
上記受け取った第１ノンスと上記新たに生成されたセッション鍵と上記第１付加情報とを上記第１秘密鍵を用いて暗号化して第１暗号文を作成し、
上記第１暗号文と上記第１メッセージ認証コードの値とを上記第１ノードに送信し、
上記受け取った第２ノンスと上記新たに生成されたセッション鍵と所定の第２付加情報とを含む第２メッセージと上記第２秘密鍵とを用いて第２メッセージ認証コードの値を計算し、
上記受け取った第２ノンスと上記新たに生成されたセッション鍵と上記第２付加情報とを上記第２秘密鍵を用いて暗号化して第２暗号文を作成し、
上記第２暗号文と上記第２メッセージ認証コードの値とを上記第２ノードに送信するように構成され、
上記第１ノードは、
上記第１暗号文および上記第１メッセージ認証コードの値を受け取ると、上記第１秘密鍵を用いて上記第１暗号文を復号して上記セッション鍵と上記第１付加情報とを取得し、
上記第１ノードが記憶する上記第１ノンスと、上記第１暗号文を復号して得られた上記セッション鍵および上記第１付加情報と、上記第１秘密鍵とを用いて上記第１メッセージ認証コードの値を計算し、
上記第１ノードが計算した上記第１メッセージ認証コードの値が上記認証サーバから受け取った上記第１メッセージ認証コードの値に一致するか否かを判定することで上記認証サーバから受け取った上記セッション鍵の認証を行うように構成され、
上記第２ノードは、
上記第２暗号文および上記第２メッセージ認証コードの値を受け取ると、上記第２秘密鍵を用いて上記第２暗号文を復号して上記セッション鍵と上記第２付加情報とを取得し、
上記第２ノードが記憶する上記第２ノンスと、上記第２暗号文を復号して得られた上記セッション鍵および上記第２付加情報と、上記第２秘密鍵とを用いて上記第２メッセージ認証コードの値を計算し、
上記第２ノードが計算した上記第２メッセージ認証コードの値が上記認証サーバから受け取った上記第２メッセージ認証コードの値に一致するか否かを判定することで上記認証サーバから受け取った上記セッション鍵の認証を行うように構成され、
上記第１付加情報および上記第２付加情報は、アクセス制御の許可情報であって、
上記認証サーバは、
上記第１ノードまたは上記第２ノードからアクセス制御の要求情報を受け取ると、受け取った上記アクセス制御の要求情報とあらかじめ登録されたアクセス制御の登録情報とを比較し、上記受け取ったアクセス制御の要求情報が上記アクセス制御の登録情報に含まれていない場合、上記アクセス制御の登録情報を上記アクセス制御の許可情報として用いるように構成される
ことを特徴とする暗号鍵配布システム。
【請求項２】
第１ノードと、
第２ノードと、
上記第１ノードと上記第２ノードとの間の暗号化通信に使用されるセッション鍵を生成する認証サーバと、を備え、
上記第１ノードと上記認証サーバとは、上記第１ノードと上記認証サーバとの間の暗号化通信に使用される第１秘密鍵を保持するように構成され、
上記第２ノードと上記認証サーバとは、上記第２ノードと上記認証サーバとの間の暗号化通信に使用される第２秘密鍵を保持するように構成され、
上記第１ノードは、上記セッション鍵の発行を上記認証サーバに要求するにあたっては、第１ノンスを生成して上記認証サーバに送信するように構成され、
上記第２ノードは、上記セッション鍵の発行を上記認証サーバに要求するにあたっては、第２ノンスを生成して上記認証サーバに送信するように構成され、
上記認証サーバは、
上記第１ノンスと上記第２ノンスとを受け取ると上記セッション鍵を新たに生成し、
上記受け取った第１ノンスと上記新たに生成されたセッション鍵と所定の第１付加情報とを含む第１メッセージと上記第１秘密鍵とを用いて第１メッセージ認証コードの値を計算し、
上記受け取った第１ノンスと上記新たに生成されたセッション鍵と上記第１付加情報とを上記第１秘密鍵を用いて暗号化して第１暗号文を作成し、
上記第１暗号文と上記第１メッセージ認証コードの値とを上記第１ノードに送信し、
上記受け取った第２ノンスと上記新たに生成されたセッション鍵と所定の第２付加情報とを含む第２メッセージと上記第２秘密鍵とを用いて第２メッセージ認証コードの値を計算し、
上記受け取った第２ノンスと上記新たに生成されたセッション鍵と上記第２付加情報とを上記第２秘密鍵を用いて暗号化して第２暗号文を作成し、
上記第２暗号文と上記第２メッセージ認証コードの値とを上記第２ノードに送信するように構成され、
上記第１ノードは、
上記第１暗号文および上記第１メッセージ認証コードの値を受け取ると、上記第１秘密鍵を用いて上記第１暗号文を復号して上記セッション鍵と上記第１付加情報とを取得し、
上記第１ノードが記憶する上記第１ノンスと、上記第１暗号文を復号して得られた上記セッション鍵および上記第１付加情報と、上記第１秘密鍵とを用いて上記第１メッセージ認証コードの値を計算し、
上記第１ノードが計算した上記第１メッセージ認証コードの値が上記認証サーバから受け取った上記第１メッセージ認証コードの値に一致するか否かを判定することで上記認証サーバから受け取った上記セッション鍵の認証を行うように構成され、
上記第２ノードは、
上記第２暗号文および上記第２メッセージ認証コードの値を受け取ると、上記第２秘密鍵を用いて上記第２暗号文を復号して上記セッション鍵と上記第２付加情報とを取得し、
上記第２ノードが記憶する上記第２ノンスと、上記第２暗号文を復号して得られた上記セッション鍵および上記第２付加情報と、上記第２秘密鍵とを用いて上記第２メッセージ認証コードの値を計算し、
上記第２ノードが計算した上記第２メッセージ認証コードの値が上記認証サーバから受け取った上記第２メッセージ認証コードの値に一致するか否かを判定することで上記認証サーバから受け取った上記セッション鍵の認証を行うように構成され、
上記第１付加情報および上記第２付加情報は、アクセス制御の許可情報であって、
上記第１ノードと上記第２ノードとの間の通信を中継するプロキシノードを有し、
上記認証サーバは、上記プロキシノードに上記アクセス制御の許可情報を送信するように構成され、
上記プロキシノードは、上記認証サーバから受け取った上記アクセス制御の許可情報に基づいて上記第１ノードと上記第２ノードとの間の通信を中継するように構成される
ことを特徴とする請求項１記載の暗号鍵配布システム。
【請求項３】
上記第１ノードおよび上記第２ノードにはグループ識別子が付与され、
上記第１付加情報および上記第２付加情報は、グループ識別子を含み、
上記プロキシノードは、上記グループ識別子を用いてアクセス制御を行うように構成される
ことを特徴とする請求項２記載の暗号鍵配布システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ通信においてノード間の通信に用いるセッション鍵を認証サーバから各ノードに配布する暗号鍵配布システムに関する。
【背景技術】
【０００２】
一般に、セッション鍵の配布を行うプロトコルとしては、通信の開始者と応答者との２個のノード間で認証を行う２者キー配布プロトコル（２ＰＫＤＰ＝2 Party Key Distribution Protocol）と、通信の開始者と応答者との２者に認証者としての認証サーバを加えた３者キー配布プロトコル（３ＰＫＤＰ＝3 Party Key Distribution Protocol）とが知られている（たとえば、特許第３０７８８４１号公報参照）。【０００３】
２ＰＫＤＰでは、通信を開始する開始者のノードが応答者のノードに対してセッション鍵の配布を要求し、応答者のノードが開始者のノードにセッション鍵を配布する。ここでは、開始者のノードと応答者のノードとは共通の秘密鍵を事前に保有するものとする。【０００４】
特許第３０７８８４１号公報に記載された２ＰＫＤＰの技術では、開始者のノードは、セッション鍵の配布を要求するにあたってノンスを生成し、開始者のノードの識別情報（アドレスなど）とノンスとを応答者のノードに送信する。応答者のノードは、開始者のノードから鍵配布の要求を受けると、セッション鍵を生成するとともに、ノンスとセッション鍵と応答者のノードの識別情報（アドレスなど）とをメッセージとし秘密鍵を用いてメッセージ認証コードの値（ＭＡＣ値）を算出し、さらに、セッション鍵とＭＡＣ値とを暗号化した暗号文を生成する。【０００５】
応答者のノードは、当該暗号文にＭＡＣ値を付加して開始者のノードに送信し、開始者のノードでは、秘密鍵を用いて暗号文を復号化することによりセッション鍵を取得する。また、ＭＡＣ値が付加されていることにより、暗号文の正真性（改竄されていないこと）を確認することができる。【０００６】
一方、３ＰＫＤＰでは、通信の開始者となるノードと通信の応答者となるノードとの一方が他方のデータを中継して認証サーバと通信することにより、認証サーバが生成したセッション鍵を両ノードで共有することが可能になっている。３ＰＫＤＰにおいては、開始者のノードと応答者のノードとのどちらが認証サーバと通信するかに応じてプッシュシナリオとプルシナリオとが考えられている。【０００７】
プッシュシナリオでは、開始者のノードが、応答者のノードと通信した後に認証サーバと通信することにより、認証サーバから開始者のノードに宛てた暗号文と応答者のノードに宛てた暗号文とを受け取って、開始者のノードに宛てた暗号文からセッション鍵を取得するとともに、応答者のノードに宛てた暗号文を応答者のノードに引き渡して応答者のノードにセッション鍵を取得させる。【０００８】
一方、プルシナリオでは、開始者のノードが応答者のノードと通信すると、応答者のノードが、認証サーバと通信することにより、認証サーバから開始者のノードに宛てた暗号文と応答者のノードに宛てた暗号文とを受け取って、応答者のノードに宛てた暗号文からセッション鍵を取得するとともに、開始者のノードに宛てた暗号文を開始者のノードに引き渡して開始者のノードにセッション鍵を取得させる。【０００９】
プッシュシナリオとプルシナリオとのいずれのプロトコルを用いるかにかかわらず、セッション鍵を含む暗号文の正真性（改竄されていないこと）を保証するために、暗号文にはＭＡＣ値を付加している。また、認証サーバから各ノードに宛てた暗号文は、認証サーバと各ノードとにおいて事前に登録されている秘密鍵を用いて暗号化および復号化している。【００１０】
ただし、３ＰＫＤＰの認証サーバは、２ＰＫＤＰにおける応答者のノードと同様に、各ノードで生成されたノンスとセッション鍵と各ノードの識別情報とをメッセージとし秘密鍵を用いてＭＡＣ値を算出し、各ノードに宛ててセッション鍵とＭＡＣ値を含めて暗号化した暗号文を送信する。【００１１】
３ＰＫＤＰにおけるプッシュシナリオの一例を図１３に示す。図示例では、ノードＡが開始者であり、ノードＢが応答者になる。ここでは、各ノードＡ，Ｂが、それぞれ認証サーバＳと共通の秘密鍵（共通鍵）Ｋａｓ，Ｋｂｓを事前に保有しているものとする。【００１２】
まず、ノードＡは、ノンスＮａｓおよびノンスＮａｂを生成し、ノードＢに対して、ノードＡの識別情報ＩＤａおよびノードＢの識別情報ＩＤｂとともに、生成したノンスＮａｓ，Ｎａｂを送信する（Ｐ１）。また、ノードＢは、ノンスＮｂｓを生成し、ノードＡから受け取った識別情報ＩＤａとノンスＮａｓとに加えて、ノードＢの識別情報ＩＤｂとノンスＮｂｓとを認証サーバＳに送信する（Ｐ２）。【００１３】
認証サーバＳでは、ノードＢからノンスＮａｓ，Ｎｂｓを受け取ると、セッション鍵Ｋｓを生成する。また、ノードＡと共通の秘密鍵Ｋａｓを用いて、ノンスＮａｓとセッション鍵ＫｓとノードＢの識別情報ＩＤｂと所要の付加情報αとでメッセージ認証コードの値（ＭＡＣ値）ＭＡＣ〔Ｋａｓ〕（Ｎａｓ，α，Ｋｓ，ＩＤｂ）を計算する。さらに、当該ＭＡＣ値をノンスＮｓａに用い、ノンスＮｓａとセッション鍵Ｋｓとを暗号化した暗号文ＥＮＣ〔Ｋａｓ〕（Ｎｓａ，Ｋｓ）を生成する。【００１４】
加えて、認証サーバＳでは、ノードＢと共通の秘密鍵Ｋｂｓを用いて、ノンスＮｂｓとセッション鍵ＫｓとノードＡの識別情報ＩＤａと所要の付加情報βとでＭＡＣ値ＭＡＣ〔Ｋｂｓ〕（Ｎｂｓ，β，Ｋｓ，ＩＤａ）を計算するとともに、当該ＭＡＣ値をノンスＮｓｂに用い、ノンスＮｓｂとセッション鍵Ｋｓとを暗号化した暗号文ＥＮＣ〔Ｋｂｓ〕（Ｎｓｂ，Ｋｓ）を生成する。【００１５】
上述した付加情報α，βは、各ノードＡ，Ｂに宛てた情報であって、たとえば、セッション鍵Ｋｓの有効期間などを示す情報として用いる。【００１６】
認証サーバＳにおいてセッション鍵Ｋｓを含む２つの暗号文は、それぞれＭＡＣ値と付加情報α，βとが付加されてノードＢに送信される（Ｐ３）。ノードＢでは、認証サーバＳから暗号文を受け取ると、秘密鍵Ｋｂｓで暗号化された暗号文を復号化して、ノンスＮｓｂとセッション鍵Ｋｓとを取得する。また、ノンスＮｓｂは、ＭＡＣ値ＭＡＣ〔Ｋｂｓ〕（Ｎｂｓ，β，Ｋｓ，ＩＤａ）であるから、既知のノンスＮｂｓおよび識別情報ＩＤａと取得したセッション鍵Ｋｓおよび付加情報βとを用いてＭＡＣ値を計算し、受信したＭＡＣ値と照合することにより、暗号文の正真性を確認する。【００１７】
次に、ノードＢは、認証サーバＳから受け取ったノードＡへの暗号文ＥＮＣ〔Ｋａｓ〕（Ｎｓａ，Ｋｓ）とＭＡＣ値ＭＡＣ〔Ｋａｓ〕（Ｎａｓ，α，Ｋｓ，ＩＤｂ）と付加情報αとをノードＡに転送する。ただし、ノードＢを通過したことを保証するために、ノードＢは新たなノンスＮｂａを生成するとともに、セッション鍵ＫｓによるＭＡＣ値ＭＡＣ〔Ｋｓ〕（Ｎａｂ，Ｎｂａ，ＩＤｂ）を計算し、このＭＡＣ値とノンスＮｂａとを付加してノードＡに送信する（Ｐ４）。【００１８】
ノードＡでは、ノードＢから暗号文ＥＮＣ〔Ｋａｓ〕（Ｎｓａ，Ｋｓ）を受信すると、暗号鍵Ｋａｓを用いて復号化し、ノンスＮｓａとセッション鍵Ｋｓとを取得する。また、ノードＢと同様に、ＭＡＣ値ＭＡＣ〔Ｋａｓ〕（Ｎａｓ，α，Ｋｓ，ＩＤｂ）、ＭＡＣ〔Ｋｓ〕（Ｎａｂ，Ｎｂａ，ＩＤｂ）を計算し、受信したＭＡＣ値と照合することにより、暗号文の正真性を確認する。【００１９】
その後、ノードＡは、秘密鍵ＫａｓによるＭＡＣ値ＭＡＣ〔Ｋａｓ〕（Ｎａｓ，Ｋｓ）と、セッション鍵ＫｓによるＭＡＣ値ＭＡＣ〔Ｋｓ〕（Ｎａｂ，Ｎｂａ）とを算出し、ノードＢに返送する（Ｐ５）。ノードＢでは、ＭＡＣ値ＭＡＣ〔Ｋｓ〕（Ｎａｂ，Ｎｂａ）を算出することにより、ノードＡからの応答であることを確認する（Ｐ５）。【００２０】
さらに、ノードＢでは、秘密鍵ＫｂｓによるＭＡＣ値ＭＡＣ〔Ｋｂｓ〕（Ｎｂｓ，Ｋｓ）を算出し、当該ＭＡＣ値をノードＡから受け取ったＭＡＣ値ＭＡＣ〔Ｋａｓ〕（Ｎａｓ，Ｋｓ）とともに認証サーバＳに送信する（Ｐ６）。認証サーバＳでは、これらのＭＡＣ値によりノードＢからの応答であることを確認することができる。【００２１】
上述したように、特許第３０７８８４１号公報に記載された鍵配布の技術では、ノードないし認証サーバが、セッション鍵を生成した後に、ノンスを含むＭＡＣ値を算出し、セッション鍵とＭＡＣ値とを暗号化した暗号文にＭＡＣ値を付加してセッション鍵を配布している。【００２２】
すなわち、特許第３０７８８４１号公報に記載された鍵配布の技術では、暗号文はノンスを含むＭＡＣ値とセッション鍵とを含んでおり、セッション鍵を受け取るノードにとって既知ではない付加情報を送信する場合には、暗号文とＭＡＣ値とともに付加情報を暗号化せずに送信することになる。【００２３】
したがって、付加情報を第三者に盗聴される可能性があり、３ＰＫＤＰの場合には、認証サーバとの通信を中継する一方のノードにおいて他方のノードの付加情報が取得されるから、付加情報を秘密裏に送信することができないという問題が生じる。
【発明の開示】
【００２４】
本発明は上記事由に鑑みて為されたものであり、その目的は、セッション鍵を配布するにあたり、正真性の確認が可能であるのはもちろんのこと、セッション鍵以外の付加情報も暗号化して送信することも可能にした暗号鍵配布システムを提供することにある。
【００２５】
本発明に係る暗号鍵配布システムは、第１ノードと、第２ノードと、上記第１ノードと上記第２ノードとの間の暗号化通信に使用されるセッション鍵を生成する認証サーバと、を備える。上記第１ノードと上記認証サーバとは、上記第１ノードと上記認証サーバとの間の暗号化通信に使用される第１秘密鍵を保持するように構成される。上記第２ノードと上記認証サーバとは、上記第２ノードと上記認証サーバとの間の暗号化通信に使用される第２秘密鍵を保持するように構成される。上記第１ノードは、上記セッション鍵の発行を上記認証サーバに要求するにあたっては、第１ノンスを生成して上記認証サーバに送信するように構成される。上記第２ノードは、上記セッション鍵の発行を上記認証サーバに要求するにあたっては、第２ノンスを生成して上記認証サーバに送信するように構成される。上記認証サーバは、上記第１ノンスと上記第２ノンスとを受け取ると上記セッション鍵を新たに生成し、上記受け取った第１ノンスと上記新たに生成されたセッション鍵と所定の第１付加情報とを含む第１メッセージと上記第１秘密鍵とを用いて第１メッセージ認証コードの値を計算し、上記受け取った第１ノンスと上記新たに生成されたセッション鍵と上記第１付加情報とを上記第１秘密鍵を用いて暗号化して第１暗号文を作成し、上記第１暗号文と上記第１メッセージ認証コードの値とを上記第１ノードに送信し、上記受け取った第２ノンスと上記新たに生成されたセッション鍵と所定の第２付加情報とを含む第２メッセージと上記第２秘密鍵とを用いて第２メッセージ認証コードの値を計算し、上記受け取った第２ノンスと上記新たに生成されたセッション鍵と上記第２付加情報とを上記第２秘密鍵を用いて暗号化して第２暗号文を作成し、上記第２暗号文と上記第２メッセージ認証コードの値とを上記第２ノードに送信するように構成される。上記第１ノードは、上記第１暗号文および上記第１メッセージ認証コードの値を受け取ると、上記第１秘密鍵を用いて上記第１暗号文を復号して上記セッション鍵と上記第１付加情報とを取得し、上記第１ノードが記憶する上記第１ノンスと、上記第１暗号文を復号して得られた上記セッション鍵および上記第１付加情報と、上記第１秘密鍵とを用いて上記第１メッセージ認証コードの値を計算し、上記第１ノードが計算した上記第１メッセージ認証コードの値が上記認証サーバから受け取った上記第１メッセージ認証コードの値に一致するか否かを判定することで上記認証サーバから受け取った上記セッション鍵の認証を行うように構成される。上記第２ノードは、上記第２暗号文および上記第２メッセージ認証コードの値を受け取ると、上記第２秘密鍵を用いて上記第２暗号文を復号して上記セッション鍵と上記第２付加情報とを取得し、上記第２ノードが記憶する上記第２ノンスと、上記第２暗号文を復号して得られた上記セッション鍵および上記第２付加情報と、上記第２秘密鍵とを用いて上記第２メッセージ認証コードの値を計算し、上記第２ノードが計算した上記第２メッセージ認証コードの値が上記認証サーバから受け取った上記第２メッセージ認証コードの値に一致するか否かを判定することで上記認証サーバから受け取った上記セッション鍵の認証を行うように構成される。
【００２６】
また、上記第１付加情報および上記第２付加情報は、アクセス制御の許可情報である。
【００２７】
さらに、上記認証サーバは、上記第１ノードまたは上記第２ノードからアクセス制御の要求情報を受け取ると、受け取った上記アクセス制御の要求情報とあらかじめ登録されたアクセス制御の登録情報とを比較し、上記受け取ったアクセス制御の要求情報が上記アクセス制御の登録情報に含まれていない場合、上記アクセス制御の登録情報を上記アクセス制御の許可情報として用いるように構成される。
【００２８】
別の好ましい形態では、上記暗号鍵配布システムは、第１ノードと、第２ノードと、上記第１ノードと上記第２ノードとの間の暗号化通信に使用されるセッション鍵を生成する認証サーバと、を備える。上記第１ノードと上記認証サーバとは、上記第１ノードと上記認証サーバとの間の暗号化通信に使用される第１秘密鍵を保持するように構成される。上記第２ノードと上記認証サーバとは、上記第２ノードと上記認証サーバとの間の暗号化通信に使用される第２秘密鍵を保持するように構成される。上記第１ノードは、上記セッション鍵の発行を上記認証サーバに要求するにあたっては、第１ノンスを生成して上記認証サーバに送信するように構成される。上記第２ノードは、上記セッション鍵の発行を上記認証サーバに要求するにあたっては、第２ノンスを生成して上記認証サーバに送信するように構成される。上記認証サーバは、上記第１ノンスと上記第２ノンスとを受け取ると上記セッション鍵を新たに生成し、上記受け取った第１ノンスと上記新たに生成されたセッション鍵と所定の第１付加情報とを含む第１メッセージと上記第１秘密鍵とを用いて第１メッセージ認証コードの値を計算し、上記受け取った第１ノンスと上記新たに生成されたセッション鍵と上記第１付加情報とを上記第１秘密鍵を用いて暗号化して第１暗号文を作成し、上記第１暗号文と上記第１メッセージ認証コードの値とを上記第１ノードに送信し、上記受け取った第２ノンスと上記新たに生成されたセッション鍵と所定の第２付加情報とを含む第２メッセージと上記第２秘密鍵とを用いて第２メッセージ認証コードの値を計算し、上記受け取った第２ノンスと上記新たに生成されたセッション鍵と上記第２付加情報とを上記第２秘密鍵を用いて暗号化して第２暗号文を作成し、上記第２暗号文と上記第２メッセージ認証コードの値とを上記第２ノードに送信するように構成される。上記第１ノードは、上記第１暗号文および上記第１メッセージ認証コードの値を受け取ると、上記第１秘密鍵を用いて上記第１暗号文を復号して上記セッション鍵と上記第１付加情報とを取得し、上記第１ノードが記憶する上記第１ノンスと、上記第１暗号文を復号して得られた上記セッション鍵および上記第１付加情報と、上記第１秘密鍵とを用いて上記第１メッセージ認証コードの値を計算し、上記第１ノードが計算した上記第１メッセージ認証コードの値が上記認証サーバから受け取った上記第１メッセージ認証コードの値に一致するか否かを判定することで上記認証サーバから受け取った上記セッション鍵の認証を行うように構成される。上記第２ノードは、上記第２暗号文および上記第２メッセージ認証コードの値を受け取ると、上記第２秘密鍵を用いて上記第２暗号文を復号して上記セッション鍵と上記第２付加情報とを取得し、上記第２ノードが記憶する上記第２ノンスと、上記第２暗号文を復号して得られた上記セッション鍵および上記第２付加情報と、上記第２秘密鍵とを用いて上記第２メッセージ認証コードの値を計算し、上記第２ノードが計算した上記第２メッセージ認証コードの値が上記認証サーバから受け取った上記第２メッセージ認証コードの値に一致するか否かを判定することで上記認証サーバから受け取った上記セッション鍵の認証を行うように構成される。また、上記第１付加情報および上記第２付加情報は、アクセス制御の許可情報である。さらに、上記第１ノードと上記第２ノードとの間の通信を中継するプロキシノードを有する。上記認証サーバは、上記プロキシノードに上記アクセス制御の許可情報を送信するように構成される。上記プロキシノードは、上記認証サーバから受け取った上記アクセス制御の許可情報に基づいて上記第１ノードと上記第２ノードとの間の通信を中継するように構成される。
【００２９】
この場合、さらに好ましい形態では、上記第１ノードおよび上記第２ノードにはグループ識別子が付与される。上記第１付加情報および上記第２付加情報は、グループ識別子を含む。上記プロキシノードは、上記グループ識別子を用いてアクセス制御を行うように構成される。
【図面の簡単な説明】
【００３２】
【図１】実施形態１の暗号鍵配布システムの動作説明図である。
【図２】同上の暗号鍵配布システムの構成図である。
【図３】同上の暗号鍵配布システムの他例の動作説明図である。
【図４】実施形態２の暗号鍵配布システムの動作説明図である。
【図５】同上の暗号鍵配布システムの構成図である。
【図６】実施形態３の暗号鍵配布システムの動作説明図である。
【図７】同上の暗号鍵配布システムの構成図である。
【図８】実施形態４の暗号鍵配布システムの動作説明図である。
【図９】同上の暗号鍵配布システムの要部の動作説明図である。
【図１０】本発明の２者キー配布プロトコルを示す動作説明図である。
【図１１】本発明の３者キー配布プロトコルを示す動作説明図である。
【図１２】本発明の３者キー配布プロトコルの他例を示す動作説明図である。
【図１３】従来の３者キー配布プロトコルを示す動作説明図である。
【発明を実施するための形態】
【００３３】
背景技術において説明したように、セッション鍵の認証配布の技術には、２者間で行う２ＰＫＤＰ（2 Party Key Distribution Protocol）と、３者間で行う３ＰＫＤＰ（3 Party Key Distribution Protocol）とが知られている。以下に説明する実施形態では、本発明の技術思想を３ＰＫＤＰに適用した場合を例示するが、下記の２ＰＫＤＰにおいても本発明の技術思想を適用することは可能である。また、以下に説明する認証サーバおよびノードは、いずれも通信機能を備えるコンピュータを用いて構成され、広域情報通信網（インターネットなど）やローカル情報通信網を用いて通信可能であるものとする。
（１）２ＰＫＤＰ
まず、２ＰＫＤＰの場合について、基本的な手順を示すために、図１０に示すように、２個のノードＡ，Ｂの間でセッション鍵Ｋｓを共有する場合を例として示す。ここでは、ノードＡがノードＢに対してセッション鍵Ｋｓの配布を要求し、ノードＢがセッション鍵ＫｓをノードＡに配布するものとする。また、セッション鍵Ｋｓを配布するノードＢと、セッション鍵Ｋｓの配布を要求するノードＡとは、共通の秘密鍵（すなわち、共通鍵）Ｋａｂを事前に保有しているものとする。言い換えると、ノードＢはノードＡの通信相手であるとともに、認証サーバとしても機能していることになる。
【００３４】
ただし、ノードＡ，Ｂが共通の秘密鍵Ｋａｂを持つ代わりに、セッション鍵Ｋｓを配布するノードＢが、セッション鍵Ｋｓの配布を要求するノードＡの識別情報（アドレスなど）ＩＤａと、ノードＡが保有する秘密鍵Ｋａｂとを対応付けて事前に保有していてもよい。
【００３５】
ノードＡは、セッション鍵Ｋｓの配布を要求するにあたり、ノンスＮａｂを生成し、ノードＡの識別情報ＩＤａとノンスＮａｂとをノードＢに送信する（Ｐ１）。
【００３６】
一方、ノードＢは、ノードＡから鍵配布の要求を受けると、セッション鍵Ｋｂａを生成するとともに、秘密鍵Ｋａｂを用いて、ノンスＮａｂとセッション鍵Ｋｓとを暗号化した暗号文ＥＮＣ〔Ｋａｂ〕（Ｎａｂ，Ｋｓ）を生成する。また、ノードＢでは、ノードＡの秘密鍵Ｋａｂを用いたメッセージ認証コードの値（ＭＡＣ値）ＭＡＣ〔Ｋａｂ〕（Ｎａｂ，Ｋｓ，ＩＤｂ）を計算し、暗号文にＭＡＣ値を付加してノードＡに送信する（Ｐ２）。
【００３７】
ノードＡでは、ノードＢから送信された情報を受け取ると、秘密鍵Ｋａｂを用いて、ノンスＮａｂとセッション鍵ＫｓとノードＢの識別情報（アドレスなど）ＩＤｂとを復号化する。また、秘密鍵ＫａｂによるＭＡＣ値ＭＡＣ〔Ｋａｂ〕（Ｎａｂ，Ｋｓ）を計算し、ＭＡＣ値をノードＢに返送する（Ｐ３）。
【００３８】
ノードＢでは、ノードＡからのＭＡＣ値ＭＡＣ〔Ｋａｂ〕（Ｎａｂ，Ｋｓ）を受け取ると、既知の秘密鍵ＫａｂとノンスＮａｂとセッション鍵Ｋｓとを用いてＭＡＣ値を計算し、計算したＭＡＣ値とノードＡから受け取ったＭＡＣ値とを比較することにより、セッション鍵ＫｓがノードＡに対して安全に伝送されたことを確認する。
【００３９】
セッション鍵Ｋｓを含む暗号文ＥＮＣ〔Ｋａｂ〕（Ｎａｂ，Ｋｓ）としては、たとえば、ノンスＮａｂを一方向性関数に代入した結果を秘密鍵Ｋａｂで暗号化したメッセージと、セッション鍵Ｋｓとの排他的論理和を用いることができる。なお、ノードＢでのセッション鍵Ｋｓの暗号化の際に、ノードＢの識別情報ＩＤｂを含めるようにしてもよい。
（２）３ＰＫＤＰ
次に、３ＰＫＤＰの場合について、基本的な手順を示すために、図１１に示すように、２個のノードＡ，Ｂと認証サーバＳとを用い、２個のノードＡ，Ｂが互いに通信する際に用いるセッション鍵Ｋｓを、認証サーバＳが配布する場合を例として説明する。各ノードＡ，Ｂは、それぞれ認証サーバＳと共通の秘密鍵（共通鍵）Ｋａｓ，Ｋｂｓを事前に保有しているものとする。
【００４０】
ただし、２ＰＫＤＰの場合と同様に、認証サーバＳと各ノードＡ，Ｂとが共通の秘密鍵Ｋａｓ，Ｋａｂを持つ代わりに、認証サーバＳが、各ノードＡ，Ｂの識別情報ＩＤａ，ＩＤｂと秘密鍵Ｋａｓ，Ｋｂｓとを対応付けた情報を事前に保有していてもよい。
【００４１】
図１１の動作例では、ノードＡが通信の開始者になり、応答者であるノードＢがノードＡと認証サーバＳとの間の通信を中継する動作を採用している。したがって、認証サーバＳが発行したセッション鍵Ｋｓは、ノードＢを介してノードＡに引き渡される。
【００４２】
この動作例では、まずノードＡは、認証サーバＳに対するノンスＮａｓを生成し、ノードＡの識別情報ＩＤａとノンスＮａｓとをノードＢに送信する（Ｐ１）。
【００４３】
一方、ノードＢは、ノードＡからノンスＮａｓを受け取ると、ノンスＮｂｓを生成し、ノードＡから受け取った識別情報ＩＤａとノンスＮａｓとに加えて、ノードＢの識別情報ＩＤｂとノンスＮｂｓとを認証サーバＳに送信する（Ｐ２）。
【００４４】
認証サーバＳは、ノードＢから識別情報ＩＤａ，ＩＤｂとノンスＮａｓ，Ｎｂｓとを受け取ると、セッション鍵Ｋｓを生成し、ノードＡに対応する秘密鍵Ｋａｓを用いて、ノンスＮａｓとセッション鍵Ｋｓとを暗号化した暗号文ＥＮＣ〔Ｋａｓ〕（Ｎａｓ，Ｋｓ）を生成するとともに、ノードＢに対応する秘密鍵Ｋｂｓを用いて、ノンスＮｂｓとセッション鍵Ｋｓとを暗号化した暗号文ＥＮＣ〔Ｋｂｓ〕（Ｎｂｓ，Ｋｓ）を生成する。
【００４５】
また、認証サーバＳでは、ノードＡに対応する秘密鍵Ｋａｓを用いたＭＡＣ値ＭＡＣ〔Ｋａｓ〕（Ｎａｓ，Ｋｓ，ＩＤｂ）を計算するとともに、ノードＢに対応する秘密鍵Ｋｂｓを用いたＭＡＣ値ＭＡＣ〔Ｋｂｓ〕（Ｎｂｓ，Ｋｓ，ＩＤａ）を計算する。認証サーバＳにおいてセッション鍵Ｋｓを暗号化した２つの暗号文は、それぞれＭＡＣ値が付加されて、ノードＢに送信される（Ｐ３）。
【００４６】
ノードＢでは、認証サーバＳから暗号文ＥＮＣ〔Ｋｂｓ〕（Ｎｂｓ，Ｋｓ）を受け取ると、秘密鍵Ｋｂｓを用いてノンスＮｂｓとセッション鍵Ｋｓとを復号化し、セッション鍵Ｋｓを取得するとともに、ＭＡＣ値を用いてセッション鍵Ｋｓの正真性を確認する。
【００４７】
さらに、ノードＢでは、認証サーバＳからノードＡへの暗号文ＥＮＣ〔Ｋａｓ〕（Ｎａｓ，Ｋｓ）およびＭＡＣ値ＭＡＣ〔Ｋａｓ〕（Ｎａｓ，Ｋｓ，ＩＤｂ）をノードＡに転送する。このとき、ノードＢを通過したことを保証するために、新たなノンスＮｂａを生成するとともに、セッション鍵ＫｓによるＭＡＣ値ＭＡＣ〔Ｋｓ〕（Ｎａｓ，Ｎｂａ，ＩＤｂ）を計算し、当該ＭＡＣ値とノンスＮｂａとを付加してノードＡに送信する（Ｐ４）。
【００４８】
ノードＡでは、ノードＢから暗号文ＥＮＣ〔Ｋａｓ〕（Ｎａｓ，Ｋｓ）を受け取ると、秘密鍵Ｋａｓを用いてノンスＮａｓとセッション鍵Ｋｓとを複合化し、セッション鍵Ｋｓを取得するとともに、ＭＡＣ値を用いてセッション鍵Ｋｓが認証サーバＳで発行されノードＢを経由して伝送されたものであることを確認する。
【００４９】
セッション鍵Ｋｓを受け取ったノードＡは、セッション鍵ＫｓによるＭＡＣ値ＭＡＣ〔Ｋｓ〕（Ｎａｓ，Ｎｂａ）とを計算し、ノードＢに返送する（Ｐ５）。ノードＢでは、このＭＡＣ値ＭＡＣ〔Ｋｓ〕（Ｎａｓ，Ｎｂａ）を用いることにより、ノードＡがセッション鍵Ｋｓを受け取ったことを確認することができる。
【００５０】
上述の動作例において、セッション鍵Ｋｓを暗号化した暗号文ＥＮＣ〔Ｋａｓ〕（Ｎａｓ，Ｋｓ）、ＥＮＣ〔Ｋｂｓ〕（Ｎｂｓ，Ｋｓ）としては、たとえば、各ノンスＮａｓ，Ｎｂｓをそれぞれ一方向性関数に代入した結果をそれぞれ秘密鍵Ｋａｓ，Ｋｂｓで暗号化したメッセージと、セッション鍵Ｋｓとの排他的論理和を用いることができる。
【００５１】
上述した各手順Ｐ１〜Ｐ５には、さまざまなデータをオプションとして付加することができる。図１２にオプションを付加した動作例を示す。図示例では、まずノードＡからノードＢにノンスＮａｓを送信する手順Ｐ１において、ノードＢの識別情報ＩＤｂと、ノードＡからノードＢに対するノンスＮａｂとを付加している。
【００５２】
また、認証サーバＳからノードＢに対してセッション鍵Ｋｓを含む暗号文を送信する手順Ｐ３と、ノードＢからノードＡに対してセッション鍵Ｋｓを含む暗号文を送信する手順Ｐ４とにおいて、それぞれ暗号文の中に通信相手となるノードＡ，Ｂの識別情報ＩＤａ，ＩＤｂを含めている。すなわち、ノードＡが受け取る暗号文にはノードＢの識別情報ＩＤｂを含め、ノードＢが受け取る暗号文にはノードＡの識別情報ＩＤａを含めている。
【００５３】
さらに、ノードＡからノードＢに確認応答を送信する手順Ｐ５において、ノードＢに宛てたＭＡＣ値ＭＡＣ〔Ｋｓ〕（Ｎａｂ，Ｎｂａ）だけではなく、認証サーバＳに宛てた秘密鍵ＫａｓによるＭＡＣ値ＭＡＣ〔Ｋａｓ〕（Ｎａｓ，Ｋｓ）も送信している。
【００５４】
ノードＢは、この確認応答を受け取ると、秘密鍵Ｋｂｓを用いたＭＡＣ値ＭＡＣ〔Ｋｂｓ〕（Ｎｂｓ，Ｋｓ）を計算し、ノードＡから受け取った秘密鍵ＫａｓによるＭＡＣ値ＭＡＣ〔Ｋａｓ〕（Ｎａｓ，Ｋｓ）とともに、ＭＡＣ値ＭＡＣ〔Ｋｂｓ〕（Ｎｂｓ，Ｋｓ）を認証サーバＳに送信する（Ｐ６）。認証サーバＳでは、これらのＭＡＣ値をノードＢから受け取って照合することによって、ノードＡ，Ｂがセッション鍵Ｋｓを受け取ったことを確認する。
【００５５】
以下では、秘密鍵の認証を３者間で行う図１１または図１２に示した動作に基づいて、種々の動作例を説明する。ただし、以下に説明する動作例は、図１１または図１２の動作と図１０の動作との関係に基づいて２ＰＤＫＰに適用することも可能である。すなわち、２ＰＤＫＰの場合、ノードＢが認証サーバＳとしても機能する。言い換えれば、認証サーバＳの処理がノードＢの内部で行われていると考えることができる。また、図１２に示した手順に基づいて説明している動作についても、図１２の動作と図１１の動作との関係に基づいて図１２の動作で示したオプションを除去した動作とすることが可能である。
【００５６】
（実施形態１）
本例では、まず、図１に示すように、図１１に示した基本の動作に加え、各ノードＡ，Ｂへのセッション鍵Ｋｓの配布に伴って、各ノードＡ，Ｂに対する付加情報α，βも併せて送信する例について説明する。付加情報α，βとしては、鍵の有効期限、アクセス回数、課金などの情報を持たせることができ、セッション鍵Ｋｓの配布と同様に付加情報α，βも暗号化して送信される。
【００５７】
付加情報α、βは、具体的には、セッション鍵Ｋｓの有効期限、セッション鍵Ｋｓを用いた通信回数（アクセス回数）、セッション鍵Ｋｓを用いた通信によりサービスを享受する場合の課金情報のうちの少なくとも一つの情報として用いる。
【００５８】
セッション鍵Ｋｓの有効期限は、セッション鍵Ｋｓを配布した時点のタイムスタンプと有効期間とを付加情報α，βに用い、タイムスタンプで記述された日時から有効期間が経過した時点で、当該セッション鍵Ｋｓを無効にする。また、アクセス回数は、セッション鍵Ｋｓの有効期限と同様に、セッション鍵Ｋｓの寿命を規定する情報であり、セッション鍵Ｋｓを用いた通信の有効回数を付加情報α，βに用い、セッション鍵Ｋｓを用いて行った通信の回数が有効回数を超えると、当該セッション鍵Ｋｓを無効にする。
【００５９】
さらに、課金情報としては課金金額を用い、この場合、ノードＡ，Ｂにおいて付加情報α，βとしての課金金額を受信すると、ノードＡ，Ｂが保持している予算と比較してセッション鍵Ｋｓを用いた通信を行うか否かを判断する。また、付加情報α，βとして、セッション鍵Ｋｓの有効期間とともに課金金額を用いることにより、有効期間の満了時において徴収する課金金額を通知することも可能である。
【００６０】
付加情報α，βについては、上述した用途以外にも適宜に用いることが可能であり、ノードＡ，Ｂを用いて構築するシステムの動作に応じて、付加情報α，βの取り扱いを規定すればよい。
【００６１】
本実施形態の暗号鍵配布システムは、図２に示すように、ノード（第１ノード）Ａと、ノード（第２ノード）Ｂと、ノードＡとノードＢとの間の暗号化通信に使用されるセッション鍵を生成する認証サーバＳと、を備える。
【００６２】
ノードＡは、通信ユニット（第１通信ユニット）１０と、記憶ユニット（第１記憶ユニット）１１と、ノンス生成ユニット（第１ノンス生成ユニット）１２と、セッション鍵要求ユニット（第１セッション鍵要求ユニット）１３と、を備える。
【００６３】
通信ユニット１０は、情報通信網を通じて認証サーバＳおよびノードＢと通信するように構成される。
【００６４】
記憶ユニット１１は、秘密鍵（第１秘密鍵）Ｋａｓを記憶するように構成される。また、記憶ユニット１１は、ノードＡの識別情報ＩＤａを記憶するように構成される。
【００６５】
ノンス生成ユニット１２は、ノンス（第１ノンス）Ｎａｓを生成するように構成される。
【００６６】
セッション鍵要求ユニット１３は、セッション鍵Ｋｓの発行を認証サーバＳに要求する際に、ノンス生成ユニット１２に第１ノンスＮａｓを生成させるように構成される。ノンス生成ユニット１２が第１ノンスＮａｓを生成すると、セッション鍵要求ユニット１３は、ノンス生成ユニット１２が生成した第１ノンスＮａｓを記憶ユニット１１に記憶させるように構成される。第１ノンスＮａｓは、ノードＡが認証サーバＳからセッション鍵Ｋｓを受け取る手順が終了するまでは、記憶ユニット１１に記憶される。
【００６７】
また、ノンス生成ユニット１２が第１ノンスＮａｓを生成すると、セッション鍵要求ユニット１３は、通信ユニット１０を制御して、ノンス生成ユニット１２が生成した第１ノンスＮａｓを認証サーバＳに送信するように構成される。
【００６８】
本実施形態の場合、セッション鍵要求ユニット１３は、ノンス生成ユニット１２が生成した第１ノンスＮａｓと、記憶ユニット１１に記憶された識別情報ＩＤａとを、ノードＢを経由して、認証サーバＳに送信するように構成される。すなわち、セッション鍵要求ユニット１３は、ノンス生成ユニット１２が生成した第１ノンスＮａｓと、記憶ユニット１１に記憶された識別情報ＩＤａとを、ノードＢに送信するように構成される。
【００６９】
ノードＢは、通信ユニット（第２通信ユニット）２０と、記憶ユニット（第２記憶ユニット）２１と、ノンス生成ユニット（第２ノンス生成ユニット）２２と、セッション鍵要求ユニット（第２セッション鍵要求ユニット）２３と、を備える。
【００７０】
通信ユニット２０は、情報通信網を通じて認証サーバＳおよびノードＡと通信するように構成される。
【００７１】
記憶ユニット２１は、秘密鍵（第２秘密鍵）Ｋｂｓを記憶するように構成される。また、記憶ユニット２１は、ノードＢの識別情報ＩＤｂを記憶するように構成される。
【００７２】
ノンス生成ユニット２２は、ノンス（第２ノンス）Ｎｂｓを生成するように構成される。
【００７３】
セッション鍵要求ユニット２３は、セッション鍵Ｋｓの発行を認証サーバＳに要求する際に、ノンス生成ユニット２２に第２ノンスＮｂｓを生成させるように構成される。ノンス生成ユニット２２が第２ノンスＮｂｓを生成すると、セッション鍵要求ユニット２３は、ノンス生成ユニット２２が生成した第２ノンスＮｂｓを記憶ユニット２１に記憶させるように構成される。第２ノンスＮｂｓは、ノードＢが認証サーバＳからセッション鍵Ｋｓを受け取る手順が終了するまでは、記憶ユニット２１に記憶される。
【００７４】
また、ノンス生成ユニット２２が第２ノンスＮｂｓを生成すると、セッション鍵要求ユニット２３は、通信ユニット２０を制御して、ノンス生成ユニット２２が生成した第２ノンスＮｂｓを認証サーバＳに送信するように構成される。
【００７５】
本実施形態の場合、セッション鍵要求ユニット２３は、ノードＡから第１ノンスＮａｓと識別情報ＩＤａとを受け取ると、ノンス生成ユニット２２が生成した第２ノンスＮｂｓと、記憶ユニット２１に記憶された識別情報ＩＤｂとを、ノードＡから受け取った第１ノンスＮａｓおよび識別情報ＩＤａとともに、認証サーバＳに送信するように構成される。
【００７６】
認証サーバＳは、通信ユニット（第３通信ユニット）３０と、秘密鍵記憶ユニット３１と、セッション鍵生成ユニット３２と、演算ユニット（第３演算ユニット）３３と、暗号文生成ユニット３４と、暗号文送信ユニット３５と、を備える。
【００７７】
通信ユニット３０は、情報通信網を通じて各ノードＡ，Ｂと通信するように構成される。
【００７８】
秘密鍵記憶ユニット３１は、ノードＡの秘密鍵（第１秘密鍵）Ｋａｓと、ノードＢの秘密鍵（第２秘密鍵）Ｋｂｓと、を記憶するように構成される。より詳細には、秘密鍵記憶ユニット３１は、ノードごとに識別情報と秘密鍵との対応関係が登録された鍵データベースを記憶している。例えば、ノードＡについては、識別情報ＩＤａに秘密鍵Ｋａｓが対応付けられ、ノードＢについては、識別情報ＩＤｂに秘密鍵Ｋｂｓが対応付けられている。
【００７９】
このように、ノードＡと認証サーバＳとは、ノードＡと認証サーバＳとの間の暗号化通信に使用される第１秘密鍵Ｋａｓを保持する。また、ノードＢと認証サーバＳとは、ノードＢと認証サーバＳとの間の暗号化通信に使用される第２秘密鍵Ｋｂｓを保持する。
【００８０】
セッション鍵生成ユニット３２は、通信ユニット３０が第１ノンスＮａｓと第２ノンスＮｂｓとを受け取るとセッション鍵Ｋｓを新たに生成するように構成される。
【００８１】
演算ユニット３３は、通信ユニット３０が受け取った第１ノンスＮａｓとセッション鍵生成ユニット３２が新たに生成したセッション鍵Ｋｓと所定の第１付加情報αとを含むメッセージ（第１メッセージ）と秘密鍵記憶ユニット３１に記憶された第１秘密鍵Ｋａｓとを用いてメッセージ認証コードの値（第１メッセージ認証コードの値）ＭＡＣ［Ｋａｓ］（Ｎａｓ，α，Ｋｓ，ＩＤｂ）を計算するように構成される。本実施形態では、第１メッセージは、第１ノンスＮａｓと、セッション鍵Ｋｓと、第１付加情報αと、ノードＡと通信するノードＢの識別情報ＩＤｂと、を含んでいる。
【００８２】
また、演算ユニット３３は、通信ユニット１０が受け取った第２ノンスＮｂｓとセッション鍵生成ユニット３２が新たに生成したセッション鍵Ｋｓと所定の第２付加情報βとを含むメッセージ（第２メッセージ）と秘密鍵記憶ユニット３１に記憶された第２秘密鍵Ｋｂｓとを用いてメッセージ認証コードの値（第２メッセージ認証コードの値）ＭＡＣ［Ｋｂｓ］（Ｎｂｓ，β，Ｋｓ，ＩＤａ）を計算するように構成される。本実施形態では、第１メッセージは、第２ノンスＮｂｓと、セッション鍵Ｋｓと、第２付加情報βと、ノードＢと通信するノードＡの識別情報ＩＤｂと、を含んでいる。
【００８３】
暗号文生成ユニット３４は、通信ユニット３０が受け取った第１ノンスＮａｓとセッション鍵生成ユニット３２が新たに生成したセッション鍵Ｋｓと第１付加情報αとを秘密鍵記憶ユニット３１に記憶された第１秘密鍵Ｋａｓを用いて暗号化して暗号文（第１暗号文）ＥＮＣ［Ｋａｓ］（Ｎａｓ，α，Ｋｓ）を作成するように構成される。また、暗号文生成ユニット３４は、通信ユニット３０が受け取った第２ノンスＮｂｓとセッション鍵生成ユニット３２が新たに生成したセッション鍵Ｋｓと第２付加情報βとを秘密鍵記憶ユニット３１に記憶された第２秘密鍵Ｋｂｓを用いて暗号化して暗号文（第２暗号文）ＥＮＣ［Ｋｂｓ］（Ｎｂｓ，β，Ｋｓ）を作成するように構成される。
【００８４】
暗号文送信ユニット３５は、通信ユニット３０を制御して、暗号文生成ユニット３４が生成した第１暗号文ＥＮＣ［Ｋａｓ］（Ｎａｓ，α，Ｋｓ）と演算ユニット３３が計算した第１メッセージ認証コードの値ＭＡＣ［Ｋａｓ］（Ｎａｓ，α，Ｋｓ，ＩＤｂ）とをノードＡに送信するように構成される。また、暗号文送信ユニット３５は、通信ユニット３０を制御して、暗号文生成ユニット３４が生成した第２暗号文ＥＮＣ［Ｋｂｓ］（Ｎｂｓ，β，Ｋｓ）と演算ユニット３３が計算した第２メッセージ認証コードの値ＭＡＣ［Ｋｂｓ］（Ｎｂｓ，β，Ｋｓ，ＩＤａ）とをノードＢに送信するように構成される。
【００８５】
ノードＡは、さらに、復号ユニット（第１復号ユニット）１４と、演算ユニット（第１演算ユニット）１５と、認証ユニット（第１認証ユニット）１６と、を備える。
【００８６】
復号ユニット１４は、通信ユニット１０が第１暗号文ＥＮＣ［Ｋａｓ］（Ｎａｓ，α，Ｋｓ）および第１メッセージ認証コードの値ＭＡＣ［Ｋａｓ］（Ｎａｓ，α，Ｋｓ，ＩＤｂ）を受け取ると、記憶ユニット１１に記憶された第１秘密鍵Ｋａｓを用いて第１暗号文ＥＮＣ［Ｋａｓ］（Ｎａｓ，α，Ｋｓ）を復号して第１ノンスＮａｓとセッション鍵Ｋｓと第１付加情報αとを取得するように構成される。
【００８７】
演算ユニット１５は、記憶ユニット１１に記憶された第１ノンスＮａｓと、復号ユニット１４が第１暗号文ＥＮＣ［Ｋａｓ］（Ｎａｓ，α，Ｋｓ）を復号して得られたセッション鍵Ｋｓおよび第１付加情報αと、記憶ユニット１１に記憶された第１秘密鍵Ｋａｓとを用いて第１メッセージ認証コードの値ＭＡＣ［Ｋａｓ］（Ｎａｓ，α，Ｋｓ，ＩＤｂ）を計算するように構成される。
【００８８】
認証ユニット１６は、演算ユニット１５が計算した第１メッセージ認証コードの値ＭＡＣ［Ｋａｓ］（Ｎａｓ，α，Ｋｓ，ＩＤｂ）が認証サーバＳから受け取った第１メッセージ認証コードの値ＭＡＣ［Ｋａｓ］（Ｎａｓ，α，Ｋｓ，ＩＤｂ）に一致するか否かを判定することで認証サーバＳから受け取ったセッション鍵Ｋｓの認証を行うように構成される。
【００８９】
認証ユニット１６は、演算ユニット１５が計算した第１メッセージ認証コードの値ＭＡＣ［Ｋａｓ］（Ｎａｓ，α，Ｋｓ，ＩＤｂ）が認証サーバＳから受け取った第１メッセージ認証コードの値ＭＡＣ［Ｋａｓ］（Ｎａｓ，α，Ｋｓ，ＩＤｂ）に一致しなければ、セッション鍵Ｋｓに異常があると判断するように構成される。この場合、認証ユニット１６は、例えば、セッション鍵Ｋｓを破棄する。
【００９０】
認証ユニット１６は、演算ユニット１５が計算した第１メッセージ認証コードの値ＭＡＣ［Ｋａｓ］（Ｎａｓ，α，Ｋｓ，ＩＤｂ）が認証サーバＳから受け取った第１メッセージ認証コードの値ＭＡＣ［Ｋａｓ］（Ｎａｓ，α，Ｋｓ，ＩＤｂ）に一致すれば、セッション鍵Ｋｓが正常であると判断するように構成される。この場合、認証ユニット１６は、例えば、認証サーバＳから受け取ったセッション鍵Ｋｓを記憶ユニット１１に記憶させるように構成される。
【００９１】
なお、認証ユニット１６は、復号ユニット１４が得た第１ノンスＮａｓと記憶ユニット１１に記憶された第１ノンスＮａｓとを比較するように構成される。認証ユニット１６は、復号ユニット１４が得た第１ノンスＮａｓが記憶ユニット１１に記憶された第１ノンスＮａｓに一致しなければ、セッション鍵Ｋｓの認証を行わないように構成される。
【００９２】
このようにしてノードＢが認証サーバＳからセッション鍵Ｋｓを取得すると、通信ユニット１０は、ノードＢと通信する際には、認証サーバＳより受け取ったセッション鍵Ｋｓを用いて、ノードＢに送信するデータの暗号化およびノードＢから受け取ったメッセージ（データ）の復号を行うように構成される。
【００９３】
ノードＢは、さらに、復号ユニット（第２復号ユニット）２４と、演算ユニット（第２演算ユニット）２５と、認証ユニット（第２認証ユニット）２６と、を備える。
【００９４】
復号ユニット２４は、通信ユニット２０が第２暗号文ＥＮＣ［Ｋｂｓ］（Ｎｂｓ，β，Ｋｓ）および第２メッセージ認証コードの値ＭＡＣ［Ｋｂｓ］（Ｎｂｓ，β，Ｋｓ，ＩＤａ）を受け取ると、記憶ユニット２１に記憶された第２秘密鍵Ｋｂｓを用いて第２暗号文ＥＮＣ［Ｋｂｓ］（Ｎｂｓ，β，Ｋｓ）を復号して第２ノンスＮｂｓとセッション鍵Ｋｓと第２付加情報βとを取得するように構成される。
【００９５】
演算ユニット２５は、記憶ユニット２１に記憶された第２ノンスＮｂｓと、復号ユニット２４が第２暗号文ＥＮＣ［Ｋｂｓ］（Ｎｂｓ，β，Ｋｓ）を復号して得られたセッション鍵Ｋｓおよび第２付加情報βと、記憶ユニット２１に記憶された第２秘密鍵Ｋｂｓとを用いて第２メッセージ認証コードの値ＭＡＣ［Ｋｂｓ］（Ｎｂｓ，β，Ｋｓ，ＩＤａ）を計算するように構成される。
【００９６】
認証ユニット２６は、演算ユニット２５が計算した第２メッセージ認証コードの値ＭＡＣ［Ｋｂｓ］（Ｎｂｓ，β，Ｋｓ，ＩＤａ）が認証サーバＳから受け取った第２メッセージ認証コードの値ＭＡＣ［Ｋｂｓ］（Ｎｂｓ，β，Ｋｓ，ＩＤａ）に一致するか否かを判定することで認証サーバＳから受け取ったセッション鍵Ｋｓの認証を行うように構成される。
【００９７】
認証ユニット２６は、演算ユニット２５が計算した第２メッセージ認証コードの値ＭＡＣ［Ｋｂｓ］（Ｎｂｓ，β，Ｋｓ，ＩＤａ）が認証サーバＳから受け取った第２メッセージ認証コードの値ＭＡＣ［Ｋｂｓ］（Ｎｂｓ，β，Ｋｓ，ＩＤａ）に一致しなければ、セッション鍵Ｋｓに異常があると判断するように構成される。この場合、認証ユニット２６は、例えば、セッション鍵Ｋｓを破棄する。
【００９８】
認証ユニット２６は、演算ユニット２５が計算した第２メッセージ認証コードの値ＭＡＣ［Ｋｂｓ］（Ｎｂｓ，β，Ｋｓ，ＩＤａ）が認証サーバＳから受け取った第２メッセージ認証コードの値ＭＡＣ［Ｋｂｓ］（Ｎｂｓ，β，Ｋｓ，ＩＤａ）に一致すれば、セッション鍵Ｋｓが正常であると判断するように構成される。この場合、認証ユニット２６は、例えば、認証サーバＳから受け取ったセッション鍵Ｋｓを記憶ユニット２１に記憶させるように構成される。
【００９９】
なお、認証ユニット２６は、復号ユニット２４が得た第２ノンスＮｂｓと記憶ユニット２１に記憶された第２ノンスＮｂｓとを比較するように構成される。認証ユニット２６は、復号ユニット２４が得た第２ノンスＮｂｓが記憶ユニット２１に記憶された第２ノンスＮｂｓに一致しなければ、セッション鍵Ｋｓの認証を行わないように構成される。
【０１００】
このようにしてノードＢが認証サーバＳからセッション鍵Ｋｓを取得すると、通信ユニット２０は、ノードＡと通信する際には、認証サーバＳより受け取ったセッション鍵Ｋｓを用いて、ノードＡに送信するデータの暗号化およびノードＡから受け取ったメッセージ（データ）の復号を行うように構成される。
【０１０１】
以下に説明する動作例では、ノードＡを通信の開始者（サブジェクト＝主体）とし、ノードＢを通信の応答者（オブジェクト＝客体）とする。主体と客体とのノードＡ，Ｂは、セッション鍵Ｋｓの配布によって暗号化したメッセージによる通信が可能になったとき、主体（ノードＡ）が客体（ノードＢ）を制御することが可能になる。
【０１０２】
主体のノードＡと客体のノードＢとが暗号を用いて通信を行うには、認証サーバＳからノードＡ，Ｂ間で共通の秘密鍵（セッション鍵Ｋｓ）を得て、セッション鍵Ｋｓをメッセージの暗号化に用いる必要がある。
【０１０３】
ノードＡ，Ｂが認証サーバＳからセッション鍵Ｋｓを受け取るには、図１１に示した動作と同様に、まず、ノードＡからノードＢに対して、ノードＡの識別情報ＩＤａとノンスＮａｓとを送信する（Ｐ１）。
【０１０４】
ノードＡからノードＢに送信するメッセージには、ノードＢの識別情報ＩＤｂと、ノードＢに対して生成したノンスＮａｂとをオプションとして付加してもよい（図３参照）。ノンスＮａｓおよびノンスＮａｂは、ノードＡにおいて、セッション鍵Ｋｓの配布を要求するたびに（ノンス生成ユニット１２によって）生成され、セッション鍵Ｋｓの配布手順が完了するまで一時的に（記憶ユニット１１に）記憶される。
【０１０５】
ノードＡがオプションとしてノードＢの識別情報ＩＤｂを付加する場合の例としては、ノードＡが同報通信を行う場合がある。同報通信を行う場合には、ノードＢ以外の他のノードもノードＡからのメッセージを受信するから、ノードＢと他のノードとを区別してノードＢにメッセージを受け取らせるために、ノードＢの識別情報ＩＤｂをオプションとして用いるのである。
【０１０６】
また、ノードＡでは、認証サーバＳからの応答を保証するためにノンスＮａｓを用いており、ノードＡとノードＢとの間でセッション鍵Ｋｓを確認する手順でもこのノンスＮａｓを使い回すことにより手順を簡略化しているが、鍵配布をより安全に行うには、経路別に異なるノンスを用いることが望ましい。
【０１０７】
すなわち、ノンスは１回性が原則であり、同じノンスを繰り返して送信しないのが理想であるが、実際には通信経路やノードＡ，Ｂの障害などにより再送によって同じノンスを再送する場合があるから、再送攻撃（リプレイ攻撃）により鍵配布に障害を生じる場合がある。そこで、リプレイ攻撃に対する耐性を高めて鍵配布の安全性を高めるには、ノードＡとノードＢとの間でセッション鍵Ｋｓを確認する手順で用いるノンスＮａｂを、ノードＡが認証サーバＳからの応答を保証するために用いるノンスＮａｓとは別にオプションで生成し、経路別のノンスＮａｂ，Ｎａｓを用いるのが望ましい。
【０１０８】
ノードＢは、ノードＡから手順Ｐ１のメッセージを受け取ると、ノードＡの識別情報ＩＤａ、ノンスＮａｓ（オプションが付加されていれば、ノードＢの識別情報ＩＤｂ、ノンスＮａｂ）を抽出するとともに、ノンスＮｂｓを生成する。さらに、ノードＡの識別情報ＩＤａ、ノンスＮａｓ（オプションが付加されていれば、ノードＢの識別情報ＩＤｂ、ノンスＮａｂ）に、ノードＢの識別情報ＩＤｂ、ノンスＮｂｓを付加したメッセージ（鍵配布要求）を、認証サーバＳに宛てて送信する（Ｐ２）。ノンスＮｂｓは、ノードＢにおいて、認証サーバＳにセッション鍵Ｋｓの配布を要求するたびに（ノンス生成ユニット２２によって）生成され、セッション鍵Ｋｓの配布手順が完了するまで一時的に（記憶ユニット２１に）記憶される。手順Ｐ１，Ｐ２は、図１１に示した３ＰＫＤＰの基本の手順と同様である。
【０１０９】
認証サーバＳでは、ノードＢから手順Ｐ２のメッセージを受け取ると、ノードＡ，Ｂが通信に用いるセッション鍵Ｋｓを生成する。認証サーバＳには、各ノードＡ，Ｂごとに識別情報ＩＤａ，ＩＤｂと秘密鍵Ｋａｓ，Ｋｂｓとを対応付けて記憶した鍵データベース（図示せず）を備えており、ノードＢから鍵配布要求のメッセージを受け取ると、メッセージから抽出したノードＡ、Ｂの識別情報ＩＤａ、ＩＤｂを鍵データベースに照合し、各ノードＡ，Ｂごとの秘密鍵Ｋａｓ，Ｋｂｓを抽出する。
【０１１０】
さらに、認証サーバＳでは、各ノードＡ，Ｂに対応する各秘密鍵Ｋａｓ，Ｋｂｓをそれぞれ用いて、各ノードＡ，Ｂがそれぞれ生成したノンスＮａｓ，Ｎｂｓ、付加情報α，β、セッション鍵Ｋｓを暗号化した暗号文ＥＮＣ〔Ｋａｓ〕（Ｎａｓ，α，Ｋｓ）、ＥＮＣ〔Ｋｂｓ〕（Ｎｂｓ，β，Ｋｓ）を生成する。また、各メッセージに対して、各ノードＡ，Ｂに対応する秘密鍵Ｋａｓ，Ｋｂｓを用いたＭＡＣ値ＭＡＣ〔Ｋａｓ〕（Ｎａｓ，α，Ｋｓ，ＩＤｂ）、ＭＡＣ〔Ｋｂｓ〕（ＮＢｓ，β，Ｋｓ，ＩＤａ）も生成する。
【０１１１】
ここに、暗号文ＥＮＣ〔Ｋａｓ〕（Ｎａｓ，α，Ｋｓ）とＭＡＣ値ＭＡＣ〔Ｋａｓ〕（Ｎａｓ，α，Ｋｓ，ＩＤｂ）との組は、ノードＢを経由してノードＡに宛てて送信されるデータであり、暗号文ＥＮＣ〔Ｋｂｓ〕（Ｎｂｓ，β，Ｋｓ）とＭＡＣ値ＭＡＣ〔Ｋｂｓ〕（ＮＢｓ，β，Ｋｓ，ＩＤａ）との組は、ノードＢに宛てて送信されるデータである。したがって、ノードＡ，Ｂごとにデータを受け取ることができるように、データの並び順が決められる。ここでは、前に並ぶ組がノードＡに宛てたデータであり、後に並ぶ組がノードＢに宛てたデータになっている。上述のようにして認証サーバＳにおいて生成されたデータは、ノードＢに宛てて送信される（Ｐ３）。
【０１１２】
認証サーバＳにおいて、各ノードＡ，Ｂに配布するセッション鍵Ｋｓを暗号化したメッセージを生成する際に、各ノードＡ，Ｂがセッション鍵Ｋｓを用いて互いに通信する相手のノードＡ，Ｂの識別情報ＩＤａ，ＩＤｂをオプションとして含めてもよい（図３参照）。つまり、ノードＡに宛てるメッセージをＥＮＣ〔Ｋａｓ〕（Ｎａｓ，α，Ｋｓ，ＩＤｂ）とし、ノードＢに宛てるメッセージをＥＮＣ〔Ｋｂｓ〕（Ｎｂｓ，β，Ｋｓ，ＩＤａ）とする。
【０１１３】
このように、オプションを含めると、ノードＡでは、ノードＢの識別情報ＩＤｂを事前に認識せずに鍵配布要求を行うことが可能になる。つまり、ノードＡでは、認証サーバＳからセッション鍵Ｋｓを含むメッセージを受け取ることにより、通信相手となるノードＢの識別情報ＩＤｂを知ることができる。また、識別情報ＩＤｂによって相応の相手かどうかを判断して、以後の通信を継続するか否かを判定することが可能になる。あるいはまた、認証サーバＳがセッション鍵Ｋｓを配布した通信相手の識別情報ＩＤａ，ＩＤｂを確認することができるから、ノードＡ，Ｂにおいて通信相手の識別情報ＩＤａ，ＩＤｂを互いに確認することによって、ノードＡからノードＢへのメッセージあるいはノードＢから認証サーバＳへのメッセージの改竄の有無を確認することが可能になる。
【０１１４】
ノードＢは、鍵認証サーバＳから手順Ｐ３によるデータを受信すると、データの順番を用いてノードＢ宛ての暗号文の組（暗号文ＥＮＣ〔Ｋｂｓ〕（Ｎｂｓ，β，Ｋｓ）とＭＡＣ値ＭＡＣ〔Ｋｂｓ〕（ＮＢｓ，β，Ｋｓ，ＩＤａ）との組）を抽出し、暗号文ＥＮＣ〔Ｋｂｓ〕（Ｎｂｓ，β，Ｋｓ）を復号してセッション鍵Ｋｓなどを取り出す。ここで、メッセージから取り出したノンスＮｂｓをノードＢ（記憶ユニット２１）が記憶しているノンスＮｂｓと比較することにより、メッセージの改竄の有無を確認し、受信したノンスＮｂｓと記憶しているノンスＮｂｓとが不一致の場合には、異常とみなして以後の処理を行わない。
【０１１５】
さらに、ノードＢが記憶しているノンスＮｂｓと、メッセージから復号した付加情報βと、メッセージから復号したセッション鍵Ｋｓと、通信相手であるノードＡの識別情報ＩＤａと、ノードＢが保有している秘密鍵Ｋｂｓとを用いて、認証サーバＳと同じアルゴリズムを用いてＭＡＣ値ＭＡＣ〔Ｋｂｓ〕（Ｎｂｓ，β，Ｋｓ，ＩＤａ）を計算し、認証サーバＳから受け取ったＭＡＣ値ＭＡＣ〔Ｋｂｓ〕（Ｎｂｓ，β，Ｋｓ，ＩＤａ）と比較することにより、メッセージの改竄の有無を確認する。ここでも、受信したＭＡＣ値が計算したＭＡＣ値と不一致であれば、異常とみなして以後の処理を行わない。
【０１１６】
通信相手であるノードＡの識別情報ＩＤａは、ノードＢにおいてあらかじめ記憶しておけばよいが、識別情報ＩＤａがメッセージにオプションとして含まれているときには、メッセージから抽出した識別情報ＩＤａを用いる（図３参照）。
【０１１７】
ノードＢが認証サーバＳから異常なくデータを受信できている場合には、認証サーバＳから受け取ったセッション鍵Ｋｓと、手順Ｐ１でノードＡから受け取ったノンスＮａｓと、ノードＢが生成したノンスＮｂｓと、ノードＢの識別情報ＩＤｂとを用いてＭＡＣ値ＭＡＣ〔Ｋｓ〕（Ｎａｓ，Ｎｂｓ，ＩＤｂ）を（演算ユニット２５で）計算する。
【０１１８】
また、ノードＢでは、認証サーバＳから受け取ったノードＡに宛てた暗号文ＥＮＣ〔Ｋａｓ〕（Ｎａｓ，α，Ｋｓ）とＭＡＣ値ＭＡＣ〔Ｋａｓ〕（Ｎａｓ，α，Ｋｓ，ＩＤｂ）との組を抽出するとともに、このデータの後にＭＡＣ値ＭＡＣ〔Ｋｓ〕（Ｎａｓ，Ｎｂｓ，ＩＤｂ）とノードＢが生成したノンスＮｂｓとを付加し、ノードＡに宛てて送信する（Ｐ４）。ノンスＮｂｓを付加しているのは、ＭＡＣ値をノードＡにおいて計算する際に必要になるからである。
【０１１９】
ここで、ノードＡからノードＢに送信するデータにおいて、オプションとしてノンスＮａｂを用いるのと同様の理由で、ノードＢからノードＡに送信するデータにおいて、ノンスＮｂｓを用いる代わりに、ノードＢにおいてノードＡへのデータの送信にのみ用いるノンスＮｂａを（ノンス生成ユニット２２で）新たに生成し、手順Ｐ４においてノンスＮｂｓに代えてノンスＮｂａを用いてもよい。また、手順Ｐ１においてノンスＮａｂを用いている場合には、手順Ｐ４においてもＭＡＣ〔Ｋｓ〕（Ｎａｓ，Ｎｂｓ，ＩＤｂ）におけるノンスＮａｓに代えてノンスＮａｂを用いることができる。すなわち、ＭＡＣ値として、ＭＡＣ〔Ｋｓ〕（Ｎａｂ，Ｎｂａ，ＩＤｂ）を用いる。この場合、ノードＢからノードＡに対してノンスＮｂｓではなくノンスＮｂａを付加して送信する。
【０１２０】
ノードＡは、ノードＢから手順Ｐ４によるデータを受信すると、暗号文ＥＮＣ〔Ｋａｓ〕（Ｎａｓ，α，Ｋｓ）を抽出して復号することにより、セッション鍵Ｋｓなどを取り出す。ここに、復号するメッセージはデータの並び順により認識する。ここで、メッセージ
から取り出したノンスＮａｓをノードＡが記憶しているノンスＮａｓと比較することにより、メッセージの改竄の有無を確認し、受信したノンスＮａｓと記憶しているノンスＮａｓとが不一致であれば、異常とみなして以後の処理を行わない。
【０１２１】
さらに、ノードＡが記憶しているノンスＮａｓと、メッセージから復号した付加情報αと、メッセージから復号したセッション鍵Ｋｓと、通信相手であるノードＢの識別情報ＩＤｂと、ノードＡが保有している秘密鍵Ｋａｓとを用いて、認証サーバＳと同じアルゴリズムを用いてＭＡＣ値ＭＡＣ〔Ｋａｓ〕（Ｎａｓ，α，Ｋｓ，ＩＤｂ）を計算し、ノードＢから受け取ったＭＡＣ値ＭＡＣ〔Ｋａｓ〕（Ｎａｓ，α，Ｋｓ，ＩＤｂ）と比較することにより、メッセージの改竄の有無を確認する。ここでも、受信したＭＡＣ値が計算したＭＡＣ値と不一致であれば、異常とみなして以後の処理を行わない。
【０１２２】
通信相手であるノードＢの識別情報ＩＤｂは、ノードＡにおいてあらかじめ記憶しておけばよいが、識別情報ＩＤｂがメッセージにオプションとして含まれているときには、メッセージから抽出した識別情報ＩＤｂを用いる。
【０１２３】
また、ノードＡが記憶しているノンスＮａｓと、ノードＢから送信されたノンスＮｂｓと、通信相手であるノードＢの識別情報ＩＤｂと、メッセージから復号したセッション鍵Ｋｓとを用いてＭＡＣ値ＭＡＣ〔Ｋｓ〕（Ｎａｓ，Ｎｂｓ，ＩＤｂ）を（演算ユニット１５で）計算し、（認証ユニット１６で）ノードＢから受け取ったＭＡＣ値ＭＡＣ〔Ｋｓ〕（Ｎａｓ，Ｎｂｓ，ＩＤｂ）と比較することにより、メッセージの改竄の有無を確認する。この場合も、受信したＭＡＣ値と計算したＭＡＣ値とが不一致であれば、異常とみなして以後の処理を行わない。
【０１２４】
上述のようにして、ノードＡがノードＢから異常なくセッション鍵Ｋｓを受け取った場合には、ノードＡではノードＢから受け取ったセッション鍵Ｋｓを保持する。また、ノンスＮａｓとノンスＮｂｓとセッション鍵Ｋｓとによって、ノードＢに対する確認応答のためのＭＡＣ値ＭＡＣ〔Ｋｓ〕（Ｎａｓ，Ｎｂｓ）を（演算ユニット１５によって）生成し、このＭＡＣ値をノードＢに宛てて送信する（Ｐ５）。
【０１２５】
手順Ｐ４において、ノンスＮａｓ，Ｎｂｓに代えてオプションであるノンスＮａｂ，Ｎｂａを用い、ＭＡＣ値としてＭＡＣ〔Ｋｓ〕（Ｎａｂ，Ｎｂａ，ＩＤｂ）を用い、ノンスＮｂａをノードＡにおいて受信しているときには（図３参照）、ノードＡにおいても異常の検出にＭＡＣ値ＭＡＣ〔Ｋｓ〕（Ｎａｂ，Ｎｂａ，ＩＤｂ）を用いる。
【０１２６】
ところで、図１に示すように、認証サーバＳは、セッション鍵ＫｓをノードＡ，Ｂに配布した後に、ノードＢから応答を受けることをもって鍵配布の手順を終了させることができるが、図３に示すように、ノードＡ，Ｂが認証サーバＳに対して確認応答を行うようにしてもよい。この場合、認証サーバＳは、確認応答を受け取った後にノードＡ，Ｂに対して受取確認を返送する。以下に認証サーバＳにおいて確認応答を受け取る場合の動作を説明する。
【０１２７】
すなわち、ノードＡでは、手順Ｐ５において、ノードＢに対する確認応答だけではなく、認証サーバＳに対しても確認応答を送信するために、ノードＢに送信するＭＡＣ値を、ＭＡＣ〔Ｋｓ〕（Ｎａｓ，Ｎｂｓ）に代えてＭＡＣ〔Ｋｓ〕（Ｎａｂ，Ｎｂａ）とし、さらに、認証サーバＳに宛てた確認応答のためのＭＡＣ値ＭＡＣ〔Ｋａｓ〕（Ｎａｓ，Ｋｓ）を付加する（図３の手順Ｐ５参照）。
【０１２８】
また、認証サーバＳへの確認応答を行うにあたっては、ノードＡにおいて新たなノンスＮａｓ′を（ノンス生成ユニット１２で）生成し、認証サーバＳからの応答が得られるまでノンスＮａｓ′を一時的に（記憶ユニット１１に）記憶するのが望ましい。ノンスＮａｓ′を生成した場合には、ノンスＮａｓ′を併せてノードＢに送信する。
【０１２９】
手順Ｐ５によりノードＡからのデータを受信したノードＢでは、データの並び順に基づいてノードＢに宛てられたＭＡＣ値ＭＡＣ〔Ｋｓ〕（Ｎａｓ，Ｎｂｓ）を分離するとともに、保持しているセッション鍵Ｋｓと、一時的に記憶しているノンスＮｂｓおよびノンスＮａｓとを用いてＭＡＣ値ＭＡＣ〔Ｋｓ〕（Ｎａｓ，Ｎｂｓ）を（演算ユニット２５で）計算し、受信したＭＡＣ値と計算したＭＡＣ値とを（認証ユニット２６で）比較する。両ＭＡＣ値が一致していれば、セッション鍵Ｋｓをそのまま保持する。
【０１３０】
さらに、ノードＢでは、新たなノンスＮｂｓ′を（ノンス生成ユニット２２で）生成するとともに、認証サーバＳに宛てたＭＡＣ値ＭＡＣ〔Ｋｂｓ〕（Ｎｂｓ，Ｋｓ）を（演算ユニット２５で）計算し、ノードＡから認証サーバＳに宛てたＭＡＣ値ＭＡＣ〔Ｋａｓ〕（Ｎａｓ，Ｋｓ）およびノンス値Ｎａｓ′とともに、ＭＡＣ値ＭＡＣ〔Ｋｂｓ〕（Ｎｂｓ，Ｋｓ）およびノンスＮｂｓ′を認証サーバＳに送信する（Ｐ６）。ノンスＮｂｓ′は認証サーバＳからの受取確認があるまで一時的に（記憶ユニット２１に）保持される。
【０１３１】
ここで、認証サーバＳへの確認応答のためにノンスＮａｓ′およびノンスＮｂｓ′を新たに生成しているのは、手順Ｐ１について説明した理由と同様に、ノンスの１回性を担保して通信の安全性を高めるためである。ただし、新たなノンスＮａｓ′，Ｎｂｓ′の送信に伴ってトラフィックが増加するから、トラフィックの増加を好まない場合には、手順Ｐ２で受け取ったノンスＮａｓ，Ｎｂｓを確認応答に用いてもよい。
【０１３２】
認証サーバＳ（演算ユニット３３）は、ノードＢから手順Ｐ６によって確認応答を受け取ると、鍵データベースに記憶している秘密鍵Ｋａｓ，Ｋｂｓと、保持しているセッション鍵Ｋｓと、ノンスＮａｓ，Ｎｂｓとを用いて、ＭＡＣ値ＭＡＣ〔Ｋａｓ〕（Ｎａｓ，Ｋｓ），ＭＡＣ〔Ｋｂｓ〕（Ｎｂｓ，Ｋｓ）を計算する。認証サーバＳでは、手順Ｐ６により受信したＭＡＣ値と、計算したＭＡＣ値とを比較し、両者が一致していなければ、セッション鍵Ｋｓの配布に異常があったと（演算ユニット３３によって）判断し、ノードＡ，Ｂへの受取応答を行わずに処理を終了する。
【０１３３】
この場合、ノードＡ，Ｂではセッション鍵Ｋｓの受け取りに失敗したと（認証ユニット１６，２６によって）判断する。セッション鍵Ｋｓの受け取りに失敗したときには、保持しているセッション鍵Ｋｓを廃棄し、必要があればあらためてセッション鍵Ｋｓの配布を要求する。認証ユニット１６，２６は、規定の制限時間内に認証サーバＳから受取応答が得られなければ、セッション鍵Ｋｓの受け取りに失敗したと判断する。
【０１３４】
一方、認証サーバＳにおいて、手順Ｐ６で受け取ったＭＡＣ値と計算したＭＡＣ値とが一致している場合には、各ノードＡ，Ｂの秘密鍵Ｋａｓ，Ｋｂｓと、各ノードＡ，Ｂで生成され手順Ｐ２で受け取ったノンスＮａｓ′，Ｎｂｓ′とを用い、各ノードＡ，Ｂに宛てたＭＡＣ値ＭＡＣ〔Ｋａｓ〕（Ｎａｓ′），ＭＡＣ〔Ｋｂｓ〕（Ｎｂｓ′）を（演算ユニット３３で）計算し、ノードＢに宛てて受取確認を送信する（Ｐ７）。
【０１３５】
ノードＢは、手順Ｐ７によるデータを認証サーバＳから受信すると、データの並び順によりノードＢに対応するＭＡＣ値ＭＡＣ〔Ｋｂｓ〕（Ｎｂｓ′）を分離して抽出する。また、秘密鍵Ｋｂｓおよび一時的に記憶しているノンスＮｂｓ′を用いてＭＡＣ値ＭＡＣ〔Ｋｂｓ〕（Ｎｂｓ′）を（演算ユニット２５によって）計算し、受信したＭＡＣ値と計算したＭＡＣ値とを（認証ユニット２６によって）比較する。
【０１３６】
両者が一致していれば、保持しているセッション鍵ＫｓをノードＡとの通信に用いることを確定し、さらに、認証サーバＳから受信したＭＡＣ値ＭＡＣ〔Ｋａｓ〕（Ｎａｓ′）をノードＡに宛てて送信する（Ｐ８）。また、ノードＢでは、認証サーバＳから手順Ｐ７で受信したＭＡＣ値と、手順Ｐ７に対応して計算したＭＡＣ値とが不一致である場合には、ノードＢが保持しているセッション鍵Ｋｓを破棄し、ノードＡへのＭＡＣ値の送信を行わずに処理を終了する。
【０１３７】
ノードＡは、ノードＢから手順Ｐ８によりＭＡＣ値ＭＡＣ〔Ｋａｓ〕（Ｎａｓ′）を受け取ると、秘密鍵ＫａｓとノンスＮａｓとを用いてＭＡＣ値ＭＡＣ〔Ｋａｓ〕（Ｎａｓ′）を（演算ユニット１５によって）計算し、受信したＭＡＣ値と計算したＭＡＣ値とを（認証ユニット１６によって）比較し、両ＭＡＣ値が一致していれば、ノードＡが保持しているセッション鍵ＫｓをノードＢとの通信に用いることを確定する。
【０１３８】
一方、両ＭＡＣ値が不一致である場合、あるいはまた手順Ｐ５でノードＢに対してデータを送信した後に規定の制限時間内に、手順Ｐ８によるＭＡＣ値ＭＡＣ〔Ｋａｓ〕（Ｎａｓ′）をノードＢから受け取らない場合には、保持しているセッション鍵Ｋｓを破棄し、必要に応じてセッション鍵Ｋｓの配布要求をあらためて行う。
【０１３９】
以上説明したように、図１に示す手順Ｐ１〜Ｐ５または図３に示す手順Ｐ１〜Ｐ８を用いることにより、セッション鍵Ｋｓを安全に配布することが可能になる。なお、図１はオプションを含まない動作例を示しており、図３はすべてのオプションを含む場合の動作例を示している。ただし、オプションは上述した説明に従って必要に応じて適宜に選択することが可能である。
【０１４０】
また、上述した手順Ｐ３，Ｐ４のように、暗号化したメッセージとＭＡＣ値との組を送信するに際して、ＲＦＣ４３０９で提唱されているＡＥＳ−ＣＣＭという暗号化方式を用い、メッセージの暗号化にはＡＥＳを用い、ＭＡＣ値としてＣＣＭのＭＡＣを利用してもよい。
【０１４１】
以上述べた本実施形態の暗号鍵配布システムが採用する鍵配布方法は、複数のノードからなるグループ内での通信に使用されるセッション鍵をコンピュータ通信システム内で配布する方法である。ここで、セッション鍵を生成する機能およびセッション鍵をグループ内の各ノードに配布する機能を有する認証サーバが各ノードと秘密鍵を共有している。上記鍵配布方法は、グループ内のいずれかのノードの識別情報と当該ノードが生成したノンスとグループ内の他のノードの識別情報とを認証サーバに送信するステップと、認証サーバがグループ内の各ノードが共通に用いるセッション鍵を生成するステップと、認証サーバが第１のノードから受け取ったノンスと生成したセッション鍵と適宜の付加情報とをメッセージとし各ノードの秘密鍵を用いてメッセージ認証コードの値を算出するステップと、認証サーバが少なくとも第１のノードから受け取ったノンスと生成したセッション鍵と前記付加情報とを各ノードの秘密鍵を用いて暗号化した各ノード宛ての暗号文に、各ノードごとの秘密鍵を用いて生成したメッセージ認証コードの値を付加して各ノードに送るステップと、前記グループ内の各ノードにおいて認証サーバから受け取った暗号化されたデータを復号化することによりセッション鍵を抽出するステップと、前記グループ内の各ノードが秘密鍵と復号化したデータとを用いて前記メッセージ認証コードの値を算出し、算出したメッセージ認証コードの値が認証サーバから受け取ったメッセージ認証コードの値と一致するときに、抽出したセッション鍵が認証されたとみなすステップとを含む。
【０１４２】
上記鍵配布方法を実現するために、本実施形態の暗号鍵配布システムは、第１ノードＡと、第２ノードＢと、第１ノードＡと第２ノードＢとの間の暗号化通信に使用されるセッション鍵を生成する認証サーバＳと、を備える。
【０１４３】
第１ノードＡと認証サーバＳとは、第１ノードＡと認証サーバＳとの間の暗号化通信に使用される第１秘密鍵を保持するように構成される。第２ノードＢと認証サーバＳとは、第２ノードＢと認証サーバＳとの間の暗号化通信に使用される第２秘密鍵を保持するように構成される。
【０１４４】
第１ノードＡは、セッション鍵の発行を認証サーバＳに要求するにあたっては、第１ノンスを生成して認証サーバＳに送信するように構成される。第２ノードＢは、セッション鍵の発行を認証サーバＳに要求するにあたっては、第２ノンスを生成して認証サーバＳに送信するように構成される。
【０１４５】
認証サーバＳは、第１ノンスと第２ノンスとを受け取るとセッション鍵を新たに生成するように構成される。
【０１４６】
認証サーバＳは、受け取った第１ノンスと新たに生成されたセッション鍵と所定の第１付加情報とを含む第１メッセージと第１秘密鍵とを用いて第１メッセージ認証コードの値を計算するように構成される。認証サーバＳは、受け取った第１ノンスと新たに生成されたセッション鍵と第１付加情報とを第１秘密鍵を用いて暗号化して第１暗号文を作成するように構成される。認証サーバＳは、第１暗号文と第１メッセージ認証コードの値とを第１ノードに送信するように構成される。
【０１４７】
認証サーバＳは、受け取った第２ノンスと新たに生成されたセッション鍵と所定の第２付加情報とを含む第２メッセージと第２秘密鍵とを用いて第２メッセージ認証コードの値を計算するように構成される。認証サーバＳは、受け取った第２ノンスと新たに生成されたセッション鍵と第２付加情報とを第２秘密鍵を用いて暗号化して第２暗号文を作成するように構成される。認証サーバＳは、第２暗号文と第２メッセージ認証コードの値とを第２ノードに送信するように構成される。
【０１４８】
第１ノードＡは、第１暗号文および第１メッセージ認証コードの値を受け取ると、第１秘密鍵を用いて第１暗号文を復号してセッション鍵と第１付加情報とを取得するように構成される。第１ノードＡは、第１ノードＡが記憶する第１ノンスと、第１暗号文を復号して得られたセッション鍵および第１付加情報と、第１秘密鍵とを用いて第１メッセージ認証コードの値を計算するように構成される。第１ノードＡは、第１ノードが計算した第１メッセージ認証コードの値が認証サーバＳから受け取った第１メッセージ認証コードの値に一致するか否かを判定することで認証サーバから受け取ったセッション鍵の認証を行うように構成される。
【０１４９】
第２ノードＢは、第２暗号文および第２メッセージ認証コードの値を受け取ると、第２秘密鍵を用いて第２暗号文を復号してセッション鍵と第２付加情報とを取得するように構成される。第２ノードＢは、第２ノードＢが記憶する第２ノンスと、第２暗号文を復号して得られたセッション鍵および第２付加情報と、第２秘密鍵とを用いて第２メッセージ認証コードの値を計算するように構成される。第２ノードＢは、第２ノードが計算した第２メッセージ認証コードの値が認証サーバＳから受け取った第２メッセージ認証コードの値に一致するか否かを判定することで認証サーバＳから受け取ったセッション鍵の認証を行うように構成される。
【０１５０】
本実施形態の構成によれば、認証サーバＳが、少なくとも第１のノードから受け取ったノンスと生成したセッション鍵と付加情報とを各ノードの秘密鍵を用いて暗号化した各ノード宛ての暗号文に、第１のノードから受け取ったノンスと生成したセッション鍵と付加情報とから算出したメッセージ認証コードの値を付加し、各ノードに宛てて暗号文とメッセージ認証コードとを送信するから、認証サーバがセッション鍵を各ノードに配布するにあたり、メッセージ認証コードの値を用いて正真性の確認が可能であるのはもちろんのこと、セッション鍵以外の付加情報も暗号化して送信することも可能になる。言い換えると、認証サーバが各ノードに対して付加情報を送信するにあたって、付加情報を暗号化することにより、他のノードで付加情報が盗聴されることがない。しかも、メッセージ認証コードの値を算出するのに必要な情報を含む暗号文をノードに送信しているから、セッション鍵を受け取ったノードでは、付加情報を含むメッセージ認証コードの値を算出することができ、セッション鍵および付加情報が改竄されていないこと（つまり、正真性）を確認することができる。
【０１５１】
（実施形態２）
本実施形態の暗号鍵配布システムは、図５に示すように、主に認証サーバＳがアクセス情報生成ユニット３６と、アクセス情報記憶ユニット３７とを備えている点で実施形態１の暗号鍵配布システムと異なる。
【０１５２】
本実施形態の暗号鍵配布システムでは、アクセス制御の情報（ノード間のアクセスの可否を示す情報）として、アクセス制御の要求情報（アクセス要求情報）と、アクセス制御の登録情報（アクセス登録情報）と、アクセス制御の許可情報（アクセス許可情報）とが用いられる。アクセス要求情報は、ノードが要求するアクセス権限を示す情報である。アクセス登録情報は、ノードの製造者や管理者によって予めノードに与えられたアクセス権限を示す情報である。アクセス許可情報は、実際にノードに与えられるアクセス権限を示す情報である。本実施形態では、アクセス許可情報は、アクセス要求情報とアクセス登録情報とに基づいて生成される。
【０１５３】
アクセス情報記憶ユニット３７は、アクセス制御の登録情報を記憶するように構成される。
【０１５４】
アクセス情報生成ユニット３６は、アクセス制御の許可情報を生成するように構成される。アクセス情報生成ユニット３６は、たとえば、ノードＡ（Ｂ）からアクセス制御の要求情報Ｐａｓ（Ｐｂｓ）を受け取ったときに、受け取ったアクセス制御の要求情報Ｐａｓ（Ｐｂｓ）とアクセス制御の登録情報との共通部分（言い換えれば積集合）を求めるように構成される。アクセス情報生成ユニット３６は、求められた共通部分をアクセス制御の許可情報Ｐｓａ（Ｐｓｂ）として用いるように構成される。
【０１５５】
本実施形態では、暗号文生成ユニット３４は、第１付加情報αとしてアクセス情報生成ユニット３６が生成したノードＡに関するアクセス制御の許可情報を用いるように構成される。また、暗号文生成ユニット３４は、第２付加情報βとしてアクセス情報生成ユニット３６が生成したノードＢに関するアクセス制御の許可情報を用いるように構成される。
【０１５６】
本実施形態の場合、セッション鍵要求ユニット１３は、ノンス生成ユニット１２が生成したノンスＮａｓ，Ｎａｂと、記憶ユニット１１に記憶された識別情報ＩＤａ，ＩＤｂと、アクセス要求情報Ｐａｓとを、ノードＢを経由して、認証サーバＳに送信するように構成される。すなわち、セッション鍵要求ユニット１３は、ノンスＮａｓ，Ｎａｂと、識別情報ＩＤａ，ＩＤｂと、アクセス要求情報Ｐａｓとを、ノードＢに送信するように構成される。また、セッション鍵要求ユニット２３は、ノードＡからノンスＮａｓ，Ｎａｂと識別情報ＩＤａ，ＩＤｂと、アクセス要求情報Ｐａｓとを受け取ると、ノンス生成ユニット２２が生成した第２ノンスＮｂｓと、アクセス要求情報Ｐｂｓとを、ノードＡから受け取ったノンスＮａｓと識別情報ＩＤａ，ＩＤｂとアクセス要求情報Ｐａｓとともに、認証サーバＳに送信するように構成される。
【０１５７】
本動作例では、実施形態１の動作に加えてアクセス制御を行う場合について説明する。すなわち、実施形態１では付加情報α、βとしてセッション鍵Ｋｓの有効期間、アクセス回数、課金情報を例示したが、本実施形態では、付加情報α，βをアクセス制御に利用する例について説明する。アクセス制御には、各ノードＡ，Ｂが保有する情報を他のノードＡ，Ｂに提供するか否か（提供）と、各ノードＡ，Ｂが他のノードＡ，Ｂの提供している情報に加える操作（読出、書込、実行）とが含まれる。つまり、アクセス制御の情報は、各ノードＡ，Ｂが保有する情報からどの情報を提供可能かを決定し、また提供される情報に対してどのような操作を行うかを決定する。
【０１５８】
以下の説明では、実施形態１におけるオプションを含む図３の動作例に対してアクセス制御を可能にするように変更を加えた例を説明する。ただし、図１に示した動作例に対してもアクセス制御を可能にするように変更を加えることが可能である。また、２ＰＤＫＰの場合には、図１０に従って認証サーバＳを除いた動作に変更することが可能である。
【０１５９】
本動作例では、アクセス制御のために、図４に示すように、手順Ｐ１においてノードＡからノードＢに送信するデータにアクセス制御の要求情報（アクセス要求情報）Ｐａｓを含め、手順Ｐ２においてノードＢから認証サーバＳに送信するデータにアクセス制御の要求情報Ｐａｓ，Ｐｂｓを含めている。本動作例では、アクセス制御の要求情報Ｐａｓ，Ｐｂｓは、必要に応じて採用されるオプションであるが、本動作例ではアクセス制御を行う動作について説明するから、アクセス制御の要求情報Ｐａｓ，Ｐｂｓを用いる動作についてのみ説明する。
【０１６０】
認証サーバＳは、ノードＢからアクセス制御の要求情報Ｐａｓ，Ｐｂｓを受け取ると、ノードＡに対するアクセス制御の許可情報ＰｓａとノードＢに対するアクセス制御の許可情報Ｐｓｂとを（アクセス情報生成ユニット３６によって）生成し、手順Ｐ３，Ｐ４で用いる付加情報α，βの内容を、それぞれアクセス制御の許可情報Ｐｓａ，Ｐｓｂとする。
【０１６１】
本動作例では、手順Ｐ４においてノードＢから認証サーバＳへのアクセス制御の要求情報Ｐｂｓを用い、手順Ｐ５，Ｐ６においてアクセス制御の要求情報Ｐａｓ，ＰｂｓをＭＡＣ値に含めて用いている。
【０１６２】
認証サーバＳは、ノードＡ，Ｂに対してセッション鍵Ｋｓを発行することによりノードＡ，Ｂの間で通信を許可する機能を備えるだけでなく、ノードＡ，Ｂの保有する情報について一方から他方へのアクセスを制限する機能を備える。認証サーバＳが発行するアクセス制御の許可情報Ｐｓａ，Ｐｓｂには、以下の各種類があり、認証サーバＳでは、アクセス制御の要求情報Ｐａｓ，Ｐｂｓを受け取ると、あらかじめ定めた規則に従って、以下のいずれかの許可情報Ｐｓａ，Ｐｓｂを（アクセス情報生成ユニット３６によって）発行する。
【０１６３】
アクセス制御の要求情報Ｐａｓ，Ｐｂｓおよびアクセス制御の許可情報Ｐｓａ，Ｐｓｂでは、ノードＡ，Ｂの保有する情報について、読出、書込、実行、提供の４種類の操作が選択可能であり、それぞれ”read”、”write”、”execute”、”provide”と記述する。たとえば、ノードＢが保有する情報をＲＢで表すとき、ノードＡが情報ＲＢの読出を行うことを要求するときには、「Ａ read ＲＢ」と記述する。また、ノードＢが情報ＲＢを提供するときには、「Ｂ provide ＲＢ」と記述する。さらに、複数の操作を並記する場合には、並記する各操作の間を縦線（｜）で仕切る。たとえば、ノードＡが情報ＲＢの読出と書込との操作を要求するときには、「Ａ read｜write ＲＢ」と記述する。
【０１６４】
まず、ノードＢが複数種類の情報を保有している場合であって、ノードＢが保有する複数種類の情報に関して、ノードＡがアクセス可能な情報の種類を制限するために、認証サーバＳ（アクセス情報生成ユニット３６）がアクセス制御の許可情報Ｐｓａ，Ｐｓｂを発行する場合を例示する。つまり、認証サーバＳは、ノードＡからノードＢへのアクセスの要求と、ノードＢが提供を許可する情報とに基づいて、ノードＡ，Ｂに対するアクセス制御の許可情報Ｐｓａ，Ｐｓｂを発行する。
【０１６５】
ここでは、ノードＢが３種類の情報ＲＢ１〜ＲＢ３を保有し、ノードＡはノードＢのすべての情報ＲＢ１〜ＲＢ３にアクセスするとともに読出、書込、実行のすべての操作を要求し、ノードＢは１種類の情報ＲＢ１の提供のみを許可する場合を例示する。
【０１６６】
すなわち、ノードＡからのアクセス制御の要求情報Ｐａｓは、「Ａ read ｜write ｜execute ＲＢ１，ＲＢ２，ＲＢ３」であり、ノードＡは、ノードＢを経由して当該要求情報Ｐａｓを認証サーバＳに送信する（Ｐ１）。一方、ノードＢは、アクセス制御の要求情報Ｐｂｓとして、「Ｂ provide ＲＢ１」を認証サーバＳに送信する（Ｐ２）。
【０１６７】
一方、認証サーバＳは、各ノードＡ，Ｂごとのアクセス制御に関して登録情報（アクセス制御の登録情報）を保有している。アクセス制御の登録情報は、各ノードＡ，Ｂごとに、ノードＡ，Ｂの製造者や管理者によって、認証サーバＳに設けたアクセス情報記憶部（アクセス情報記憶ユニット）３７に事前に登録される。アクセス制御の登録情報は、ノードＡに関して「Ａ read ｜write ｜execute ＲＢ１，ＲＢ２」であり、ノードＢに関して「Ｂ provide ＲＢ１，ＲＢ２」であるものとする。
【０１６８】
認証サーバＳでは、ノードＢからアクセス制御の要求情報Ｐａｓ，Ｐｂｓを受け取ったときに、各ノードＡ，Ｂごとに、アクセス制御の要求情報Ｐａｓ，Ｐｂｓとアクセス制御の登録情報との共通部分（積集合）を（アクセス情報生成ユニット３６によって）求める。
【０１６９】
上述の例では、ノードＡからのアクセス制御の要求情報Ｐａｓが「Ａ read ｜write ｜execute ＲＢ１，ＲＢ２，ＲＢ３」であり、ノードＡに関するアクセス制御の登録情報が「Ａ read ｜write ｜execute ＲＢ１，ＲＢ２」であるから、ノードＡに関しては、共通部分は「Ａ read ｜write ｜execute ＲＢ１，ＲＢ２」になる。また、ノードＢからのアクセス制御の要求情報Ｐｂｓが「Ｂ provide ＲＢ１」であり、ノードＢに関するアクセス制御の登録情報が「Ｂ provide ＲＢ１，ＲＢ２」であるから、ノードＢに関しては、共通部分は「Ｂ provide ＲＢ１」になる。
【０１７０】
認証サーバＳ（アクセス情報生成ユニット３６）は、各ノードＡ，Ｂに対してそれぞれ求めた共通部分をアクセス制御の許可情報Ｐｓａ，Ｐｓｂとする。すなわち、ノードＡに対するアクセス制御の許可情報Ｐｓａは「Ａ read ｜write ｜execute ＲＢ１，ＲＢ２」になり、ノードＢに対するアクセス制御の許可情報Ｐｓｂは「Ｂ provide ＲＢ１」になる。
【０１７１】
上述したように、これらのアクセス制御の許可情報Ｐｓａ，Ｐｓｂは、（暗号文生成ユニット３４によって）手順Ｐ３，Ｐ４における付加情報α，βとして用いられ、さらに手順Ｐ４〜Ｐ６においても用いられる。つまり、認証サーバＳは、アクセス制御の許可情報Ｐｓａ，Ｐｓｂを各ノードＡ，Ｂに対してそれぞれ引き渡す。
【０１７２】
アクセス制御の許可情報Ｐｓａ，Ｐｓｂが渡された各ノードＡ，Ｂでは、通信の開始者であるノードＡからのアクセス制御の要求情報のうち、通信の応答者であるノードＢからのアクセス制御の要求情報に対応する範囲内の操作のみが可能になる。
【０１７３】
ここにおいて、認証サーバＳからノードＡに引き渡されるアクセス制御の許可情報Ｐｓａは「Ａ read ｜write ｜execute ＲＢ１，ＲＢ２」であり、ノードＢの情報ＲＢ１，ＲＢ２に対して、読出、書込、実行の操作を要求しているが、ノードＢに引き渡されるアクセス制御の許可情報Ｐｓｂは「Ｂ provide ＲＢ１」であり、ノードＡがノードＢから享受可能なサービスは、ノードＢが提供している情報ＲＢ１に限られる。すなわち、ノードＡはノードＢの保有する情報ＲＢ１についてのみ読出、書込、実行の操作が可能になる。
【０１７４】
上述の動作例では、アクセス制御の許可情報Ｐｓａ，Ｐｓｂを、認証サーバＳがノードＡ，Ｂから受信したアクセス制御の要求情報Ｐａｓ，Ｐｂｓと、あらかじめ認証サーバＳが保有しているアクセス制御の登録情報との共通部分（積集合）として生成しているが、共通部分ではなく合成（和集合）とすることも可能である。
【０１７５】
すなわち、積集合を用いると、ノードＡ，Ｂからの要求情報よりも制限が強められることで厳しいポリシーを提供することになるが、和集合を用いると、ノードＡ，Ｂからの要求情報よりも制限が弱められることになる。
【０１７６】
ところで、認証サーバＳに登録されるアクセス制御の登録情報は適宜に更新され、ノードＡ，Ｂではアクセス制御の登録情報が更新されたことを認識していない場合がある。このような場合に備えて、認証サーバＳでは、ノードＡ，Ｂから受信したアクセス制御の要求情報が、アクセス制御の登録情報に含まれていない場合には、アクセス制御の登録情報をアクセス制御の許可情報として、ノードＡ，Ｂへの付加情報α，βに含めてノードＡ，Ｂに送信する。したがって、ノードＡ，Ｂでは、アクセス制御の登録情報として認証サーバＳに登録された新たなアクセス制御の許可情報を受け取ることが可能になる。
【０１７７】
このとき、アクセス制御の許可情報は、ノードＡ，Ｂへの暗号文に含まれるとともに、メッセージ認証コードの値の演算にも用いられ、アクセス制御の許可情報を他者に知られることなくノードＡ，Ｂに受け取らせることができ、しかも、メッセージ認証コードにより正真性も確認できるから、ノードＡ，Ｂに対してアクセス制御の許可情報を安全に受け取らせることが可能になる。しかも、この構成では、認証サーバＳにおいてアクセス制御の登録情報を変更すれば、ノードＡ，Ｂに与えるアクセス制御の許可情報を変更することができるから、アクセス制御の変更を簡単に行うことができる。
【０１７８】
上述の例のように、ノードＡからのアクセス制御の要求情報Ｐａｓが「Ａ read ｜write ｜execute ＲＢ１，ＲＢ２，ＲＢ３」であり、ノードＡに関するアクセス制御の登録情報が「Ａ read ｜write ｜execute ＲＢ１，ＲＢ２」であるから、ノードＡに対するアクセス制御の許可情報Ｐｓａは「Ａ read ｜write ｜execute ＲＢ１，ＲＢ２，ＲＢ３」になる。また、ノードＢからのアクセス制御の要求情報Ｐｂｓが「Ｂ provide ＲＢ１」であり、ノードＢに関するアクセス制御の登録情報が「Ｂ provide ＲＢ１，ＲＢ２」であるから、ノードＢに対するアクセス制御の許可情報Ｐｓｂは「Ｂ provide ＲＢ１，ＲＢ２」になる。
【０１７９】
この場合、ノードＡはノードＢの保有する情報ＲＢ１，ＲＢ２について読出、書込、実行の操作が可能になる。
【０１８０】
認証サーバＳにおいて、各ノードＡ，Ｂに提供するアクセス制御の許可情報Ｐｓａ，Ｐｓｂとして、アクセス制御の要求情報Ｐｓａ，Ｐｓｂとアクセス制御の登録情報との和集合を用いるのが有効な例としては、たとえば、ノードＡによりすべての情報に対する操作を可能にする場合が考えられる。
【０１８１】
この場合、認証サーバＳにおいてノードＡに対するアクセス制御の登録情報として、すべての情報を指定するワイルドカード（＊）を設定しておけば（すなわち、アクセス制御の登録情報として「Ａ read ｜write ｜execute ＊」を設定しておけば）、ノードＡからのアクセス制御の要求情報Ｐａｓの内容にかかわらず、認証サーバＳはノードＡに対するアクセス制御の許可情報Ｐｓａを「Ａ read ｜write ｜execute ＊」とするから、ノードＡは他のノードが提供するすべての情報に対する操作を行うことが可能になる。
【０１８２】
ここで、アクセス制御の許可情報Ｐｓａを、アクセス制御の要求情報Ｐａｓとアクセス制御の登録情報との積集合とする場合であれば、情報を指定するためにワイルドカード（＊）を用いようとすれば、アクセス制御の要求情報Ｐａｓとアクセス制御の登録情報との両方について、ワイルドカード（＊）を用いることが必要になる。これに対して、上述のように和集合を用いることにより、認証サーバＳが保有するアクセス制御の登録情報のみについてワイルドカード（＊）を用いることで、ノードＡに対するアクセス制御の許可情報Ｐｓａにワイルドカード（＊）を用いることが可能になる。
【０１８３】
ただし、和集合を用いる場合でも、ノードＡが操作することができる情報は、他のノードが提供する範囲内の情報に限られる。
【０１８４】
上述の動作例では、認証サーバＳにおいてノードＡ，Ｂからのアクセス制御の要求情報Ｐａｓ，Ｐｂｓと、認証サーバＳが保有するアクセス制御の登録情報との積集合または和集合をアクセス制御の許可情報Ｐｓａ，Ｐｓｂに用いる例を説明したが、差集合を用いることも可能である。さらに、複数種類の集合の組み合わせを用いることも可能であり、各ノードＡ，Ｂごとに異なる集合を用いることも可能である。どの集合をどのノードＡ，Ｂへのアクセス制御の許可情報Ｐｓａ，Ｐｓｂとして用いるかは、任意に選択することが可能である。
【０１８５】
上述の動作例では、手順Ｐ１，Ｐ２において、ノードＡ，Ｂから認証サーバＳに対して送信するデータにアクセス制御の要求情報Ｐａｓ，Ｐｂｓを含んでいるが、手順Ｐ１，Ｐ２においてノードＡ，Ｂが送信するデータにアクセス制御の許可情報Ｐｓａ，Ｐｓｂを含まない場合には、サーバＳではアクセス制御の登録情報をアクセス制御の許可情報Ｐｓａ，Ｐｓｂとして各ノードＡ，Ｂに送信する。
【０１８６】
なお、本動作例では、各ノードＡ，Ｂは、セッション鍵Ｋｓを受け取る際にアクセス制御の許可情報Ｐｓａ，Ｐｓｂを受け取るのであって、その後、セッション鍵Ｋｓを用いた通信を行う際に、アクセス制御の許可情報Ｐｓａ，Ｐｓｂで指定された情報に対する操作が可能になる。実施形態１で説明した付加情報α，βが必要であれば、アクセス制御の許可情報Ｐｓａ，Ｐｓｂの前後のいずれかに付加情報α，βを付加してもよい。他の構成および動作は実施形態１と同様である。
【０１８７】
本動作例では、手順Ｐ１，Ｐ２においてノードＡ，Ｂから認証サーバＳに対してアクセス制御の要求情報Ｐａｓ，Ｐｂｓを付加情報として送信しても、アクセス制御の許可情報Ｐｓａ，Ｐｓｂは暗号化されることによって秘匯されることになる。なお、アクセス制御の要求情報Ｐａｓ，Ｐｂｓは、必要がなければ送信しなくてもよい。
【０１８８】
以上述べた本実施形態の暗号鍵配布システムが採用する鍵配布方法は、複数のノードからなるグループ内での通信に使用されるセッション鍵をコンピュータ通信システム内で配布する方法である。ここで、セッション鍵を生成する機能およびセッション鍵をグループ内の各ノードに配布する機能を有する認証サーバが各ノードと秘密鍵を共有している。上記鍵配布方法は、グループ内のいずれかのノードの識別情報と当該ノードが生成したノンスとグループ内の他のノードの識別情報とを認証サーバに送信するステップと、認証サーバがグループ内の各ノードが共通に用いるセッション鍵を生成するステップと、認証サーバが第１のノードから受け取ったノンスと生成したセッション鍵とアクセス制御の許可情報を含む付加情報とをメッセージとし各ノードの秘密鍵を用いてメッセージ認証コードの値を算出するステップと、認証サーバが少なくとも第１のノードから受け取ったノンスと生成したセッション鍵とアクセス制御の許可情報とを各ノードの秘密鍵を用いて暗号化した各ノード宛ての暗号文に、各ノードごとの秘密鍵を用いて生成したメッセージ認証コードの値を付加して各ノードに送るステップと、前記グループ内の各ノードにおいて認証サーバから受け取った暗号化されたデータを復号化することによりセッション鍵およびアクセス制御の許可情報を抽出するステップと、前記グループ内の各ノードが秘密鍵と復号化したデータとを用いて前記メッセージ認証コードの値を算出し、算出したメッセージ認証コードの値が認証サーバから受け取ったメッセージ認証コードの値と一致するときに、抽出したセッション鍵が認証されたとみなすステップとを含む。
【０１８９】
上記鍵配布方法を実現するために、本実施形態の暗号鍵配布システムでは、第１付加情報αおよび第２付加情報βは、アクセス制御の許可情報である。
【０１９０】
本実施形態の構成によれば、付加情報がアクセス制御の許可情報を含む点を除いて実施形態１の構成と同様であり、同様の効果を奏する。ここに、背景の技術として説明した従来技術では、アクセス制御の許可情報が暗号化されずにノードに送信されているのに対して、アクセス制御の許可情報を暗号文に含めて送信するとともに、メッセージ認証コードの値を付加しているので、アクセス制御の許可情報が他者に漏洩することを防止でき、しかも、アクセス制御の許可情報についても正真性の確認が可能になる。
【０１９１】
なお、認証サーバは、ノードからアクセス制御の要求情報を受信すると、アクセス制御の要求情報とあらかじめ登録されたアクセス制御の登録情報とを比較し、アクセス制御の要求情報がアクセス制御の登録情報に含まれていない場合、アクセス制御の登録情報をアクセス制御の許可情報に用い、アクセス制御の許可情報を含む暗号文に、メッセージ認証コードの値を付加してグループ内の各ノードに送信してもよい。
【０１９２】
すなわち、認証サーバＳ（アクセス情報生成ユニット３６）は、第１ノードＡまたは第２ノードＢからアクセス制御の要求情報を受け取ると、受け取ったアクセス制御の要求情報とあらかじめ登録されたアクセス制御の登録情報とを比較し、受け取ったアクセス制御の要求情報がアクセス制御の登録情報に含まれていない場合、アクセス制御の登録情報をアクセス制御の許可情報として用いるように構成されていてもよい。
【０１９３】
このように、認証サーバにおいて、アクセス制御の登録情報があり、ノードからのアクセス制御の要求情報にはアクセス制御の登録情報が含まれていない場合、アクセス制御の登録情報をアクセス制御の許可情報とし、かつアクセス制御の許可情報を暗号文に含め、かつメッセージ認証コードの値を付加して送信する構成を採用すると、認証サーバにおいてアクセス制御の登録情報を最新のものにしておくことで、ノードにおけるアクセス制御の許可情報を最新のものに更新することができる。言い換えると、認証サーバにおいてアクセス制御の登録情報を変更するだけで、アクセス制御の許可情報を簡単に変更することができる。
【０１９４】
また、認証サーバＳ（アクセス情報生成ユニット３６）は、変更可能なアクセス制御の登録情報に基づいてアクセス制御の許可情報を生成するように構成されていてもよい。
【０１９５】
また、認証サーバＳ（アクセス情報生成ユニット３６）は、ノードからアクセス制御の要求情報を受信すると、受け取ったアクセス制御の要求情報とあらかじめ登録されたアクセス制御の登録情報との論理演算によりアクセス制御の許可情報を生成するように構成されていてもよい。
【０１９６】
このように、認証サーバにアクセス制御の登録情報を持たせると、ノードにおいてアクセス制御の情報を変更しなくとも、認証サーバにおいてアクセス制御の登録情報を変更するだけで、アクセス制御の変更を簡単に行うことができる。
【０１９７】
また、認証サーバにアクセス制御の登録情報を持たせるとともに、ノードからのアクセス制御の要求情報とアクセス制御の登録情報との論理演算により、アクセス制御の許可情報を生成する技術を採用すれば、ノードにおいてアクセス制御の情報を変更しなくとも、認証サーバに登録したアクセス制御の登録情報と認証サーバにおける論理演算の内容とのいずれかを変更するだけで、アクセス制御の変更を簡単に行うことができる。
【０１９８】
（実施形態３）
本実施形態の暗号鍵配布システムは、図７に示すように、主として第１ノードＡと第２ノードＢとの間の通信を中継するプロキシノードＣを有する点で実施形態２の暗号鍵配布システムと異なる。
【０１９９】
本実施形態において、ノードは、プロキシノードＣを通じて間接的に別のノードと通信するように構成される。
【０２００】
本実施形態において、認証サーバＳは、プロキシノードＣにアクセス制御の許可情報を送信するように構成される。
【０２０１】
プロキシノードＣは、通信ユニット（第４通信ユニット）４０と、許可情報記憶ユニット４１と、アクセス制御ユニット４２と、を備えている。
【０２０２】
通信ユニット４０は、情報通信網を通じて各ノードＡ，Ｂおよび認証サーバＳと通信可能に構成される。
【０２０３】
許可情報記憶ユニット４１は、認証サーバＳから受け取ったアクセス制御の許可情報を記憶するように構成される。
【０２０４】
アクセス制御ユニット４２は、許可情報記憶ユニット４１に記憶されたアクセス制御の許可情報を参照して、ノードＡ，Ｂ間のアクセス制御を行うように構成される。
【０２０５】
本動作例では、実施形態２のようにノードＡ，Ｂにおいてアクセス制御を行うとともに、プロキシノードＣを付加したときの動作例について説明する。プロキシノードＣは、図６に示すように、通信の開始者であるノードＡと通信の応答者であるノードＢとの通信を中継する機能を有する。
【０２０６】
言い換えると、ノードＡとノードＢとは直接に通信を行うのではなく、プロキシノードＣを介して通信を行うことになる。また、図示例において、開始者であるノードＡは、認証サーバＳとの間でも直接に通信を行わず、プロキシノードＣが認証サーバＳと通信を行っている。一方、応答者であるノードＢは、認証サーバＳとプロキシノードＣとのどちらとも直接に通信を行う。
【０２０７】
図６を参照して、さらに具体的に説明する。ここでは、通信の開始者であるノードＡがプロキシノードＣに対してアクセス制御の要求情報を送信すると、プロキシノードＣが認証サーバＳにアクセスする（図６の矢印はデータの送信を示している）。
【０２０８】
以下の動作例では、ノードＡからのアクセス制御の要求情報が「Ａ read ｜write ｜execute ＲＢ１，ＲＢ２，ＲＢ３」、ノードＢからのアクセス制御の要求情報が「Ｂ provide ＲＢ１」、プロキシノードＣからのアクセス制御の要求情報が「Ｃ read ｜write ｜execute ｜provide ＊」であるものとする。
【０２０９】
また、認証サーバＳの保有しているアクセス制御の登録情報が、ノードＡに対して「Ａread ｜write ｜execute ＲＢ１，ＲＢ２」、ノードＢに対して「Ｂ provide ＲＢ１，ＲＢ２」、プロキシノードＣに対して「Ｃ read ｜write ｜execute ｜provide ＊」であるものとする。さらに、認証サーバＳ（アクセス情報生成ユニット３６）では、各ノードＡ，ＢとプロキシノードＣとに対するアクセス制御の許可情報を、各ノードＡ，ＢとプロキシノードＣとのそれぞれのアクセス制御の要求情報とアクセス制御の登録情報との共通部分（積集合）としてそれぞれ生成するものとする。
【０２１０】
図６の上部の８本の矢印と下部の８本の矢印とは、それぞれ図４における手順Ｐ１〜Ｐ８に対応している。すなわち、上部の８本の矢印では、ノードＡとプロキシノードＣと認証サーバＳとを、図４におけるノードＡとノードＢと認証サーバＳとの関係で示している。また、下部の８本の矢印では、プロキシノードＣとノードＢと認証サーバＳとを、図４におけるノードＡとノードＢと認証サーバＳとの関係で示している。
【０２１１】
図６に示す動作では、認証サーバＳからプロキシノードＣに「Ｃ provide ＊」を手順Ｐ３で送信し、プロキシノードＣからノードＡに「Ａ read ｜write ｜execute ＲＢ１，ＲＢ２」を手順Ｐ４で送信している。また、認証サーバＳからノードＢに「Ｂ provide ＲＢ１」を手順Ｐ３で送信し、ノードＢからプロキシノードＣに「Ｃ read |write |execute ＊」を手順Ｐ４で送信している。
【０２１２】
したがって、図６に示しているように、ノードＡに対するアクセス制御の許可情報は「Ａ read ｜write ｜execute ＲＢ１，ＲＢ２」になり、ノードＢに対するアクセス制御の許可情報は「Ｂ provide ＲＢ１」になり、プロキシノードＣに対するアクセス制御の許可情報は「Ｃ read ｜write ｜execute ｜provide ＊」になる（プロキシノードＣについては、読出、書込、実行と、提供とを分離して記載している）。なお、認証サーバＳからプロキシノードＣに「Ｃ read |write |execute ＊」を手順Ｐ３で送信し、ノードＢからプロキシノードＣに「Ｃ provide ＊」を手順Ｐ４で送信してもよい。要するに、最終的に、プロキシノードＣに対するアクセス制御の許可情報は「Ｃ read ｜write ｜execute ｜provide ＊」になればよい。
【０２１３】
ノードＡ，ＢとプロキシノードＣとに対して、上述のようにアクセス制御の許可情報を与えると、プロキシノードＣ（アクセス制御ユニット４２）は（許可情報記憶ユニット４１に記憶されたアクセス制御の許可情報を参照して）ノードＡからノードＢへのアクセスを中継する。つまり、ノードＡがプロキシノードＣにアクセスすると、プロキシノードＣがノードＢにアクセスし、ノードＢからの応答がプロキシノードＣを介してノードＡに返される。
【０２１４】
ここで、プロキシノードＣにはアクセス制限がないが、ノードＡからノードＢに対するアクセスは、「Ａ read ｜write ｜execute ＲＢ１，ＲＢ２」の制限があり、さらにノードＢでは、「Ｂ provide ＲＢ１」の制限があるから、結果として、プロキシノードがノードＡからノードＢへのアクセスを中継した場合、ノードＡはノードＢの情報ＲＢ１にしかアクセスすることができないことになる。
【０２１５】
このように、プロキシノードＣに対してアクセス制御の許可情報として「Ｃ read ｜write ｜execute ｜provide ＊」が与えられるから、ノードＡが情報ＲＢ１の操作（読出、書込、実行）の要求を行った場合には、プロキシノードＣが情報ＲＢ１に対する操作を引き受け、ノードＡに代わってプロキシノードＣがノードＢの情報ＲＢ１への操作の要求を行うことで、ノードＢはアクセス制御の許可情報に基づいて情報ＲＢ１を提供する。したがって、プロキシノードＣは情報ＲＢ１を取得することができる。プロキシノードＣが取得した情報ＲＢ１は、プロキシノードＣからノードＡに提供される。
【０２１６】
一方、プロキシノードＣは、ノードＡが情報ＲＢ２の操作を要求した場合にもノードＢへ当該要求を行うが、ノードＢに対するアクセス制御の許可情報には情報ＲＢ２の提供が含まれていないから、ノードＢからプロキシノードＣに対して情報ＲＢ２の提供は行われず、ノードＡは情報ＲＢ２の操作は行えないことになる。
【０２１７】
ここで、ノードＢによるアクセス制御の要求情報が「Ｂ provide ＲＢ１，ＲＢ２」である場合には、ノードＡによる情報ＲＢ２の操作が可能になる。また同様に、認証サーバＳにおいて、アクセス制御の許可情報として、アクセス制御の要求情報とアクセス制御の登録情報との共通部分（積集合）ではなく和集合を用いる場合にも、ノードＢは情報ＲＢ２を提供することができる。プロキシノードＣを設けている点を除けば、他の構成および動作は実施形態２と同様である。
【０２１８】
以上述べたように本実施形態の暗号鍵配布システムでは、グループ内のノード間の通信を中継するプロキシノードＣを設け、認証サーバからプロキシノードにアクセス制御の許可情報を送信する構成を採用している。
【０２１９】
すなわち、本実施形態の暗号鍵配布システムは、第１ノードＡと第２ノードＢとの間の通信を中継するプロキシノードＣを有する。認証サーバＳは、プロキシノードＣにアクセス制御の許可情報を送信するように構成される。プロキシノードＣは、認証サーバＳから受け取ったアクセス制御の許可情報に基づいて第１ノードＡと第２ノードＢとの間の通信を中継するように構成される。
【０２２０】
このように、アクセス制御を行う場合にプロキシノードを用いると、ノードにおいてアクセス制御の情報を変更しなくとも、プロキシノードにおいてアクセス制御に関する情報を変更するだけで、アクセス制御の変更を簡単に行うことが可能になる。
【０２２１】
（実施形態４）
本動作例は、複数個のノードに対してグループを設定し、グループ別にノードのアクセス制御を行う場合について説明する。説明を簡単にするために、図８のように、４台のノードＡ，Ｂ，Ｄ，ＥとプロキシノードＣとが通信可能であって、上述した実施形態３と同様に、鍵配布の機能を有した認証サーバＳを用いるものとする。図８に示す動作は、上から８本ずつの矢印が、それぞれ図４における手順Ｐ１〜Ｐ８に対応している。また、以下では、ノードＡ，ＢとノードＤ，Ｅとを別のグループに区分する技術について説明する。ここでは、ノードＥがノードＡと同様に情報の要求を行い、ノードＤがノードＢと同様に情報の提供を行う場合を想定する。
【０２２２】
ノードＡ，Ｂ，Ｄ，Ｅを複数のグループに区分することが必要になるのは、情報の種類別に識別子を設定し、かつ同種の情報を提供するノードが複数存在する場合である。たとえば、ＲＢ１という識別子を温度情報に対応付け、ノードＢ，Ｄのいずれもが温度情報を提供可能である場合に、２個のノードＡ，Ｅが情報ＲＢ１に対する操作の要求を行ったときに、プロキシノードＣでは、ノードＢ，Ｄのどちらの情報ＲＢ１に対する操作の要求かを区別することができない。
【０２２３】
このような場合に、ノードＡ，ＢとノードＤ，Ｅとを異なるグループに区分することによって、ノードＡが情報ＲＢ１を要求しているときにはノードＢから提供し、ノードＥが情報ＲＢ１を要求しているときにはノードＤから提供することが可能になる。本動作例では、図９に示すように、実施形態１において説明した手順Ｐ３，Ｐ４で送信する付加情報α，βに、グループを区分するグループ識別子を含めている。以下では、ノードＡ，ＢとノードＤ，Ｅとを異なるグループとし、各グループごとにグループ識別子としてＧ１，Ｇ２を付与する。
【０２２４】
いま、手順Ｐ３，Ｐ４において、付加情報としてグループ識別子Ｇ１を送信するものとする。プロキシノードＣは、認証サーバＳから同じセッション鍵Ｋｓが配布されたノードごとにグループ識別子Ｇ１，Ｇ２を記憶しておき、プロキシノードＣが受信したデータに含まれるグループ識別子Ｇ１，Ｇ２が記憶したグループ識別子Ｇ１，Ｇ２と一致しないか、プロキシノードＣが受信したデータにグループ識別子Ｇ１，Ｇ２が含まれない場合には、受信したデータの中継を行わない。
【０２２５】
すなわち、本実施形態では、許可情報記憶ユニット４１は、認証サーバＳから同じセッション鍵Ｋｓが配布されたノードごとにグループ識別子Ｇ１，Ｇ２を記憶するように構成される。また、アクセス制御ユニット４２は、通信ユニット４０が受信したデータに含まれるグループ識別子Ｇ１，Ｇ２が、許可情報記憶ユニット４１に記憶されたグループ識別子Ｇ１，Ｇ２と一致しないか、通信ユニット４０が受信したデータにグループ識別子Ｇ１，Ｇ２が含まれない場合には、受信したデータの中継を行わないように構成される。
【０２２６】
なお、１個のノードが複数のグループに属している場合には、手順Ｐ１，Ｐ２においてグループ識別子を用い、どのグループに属するかを指定することができる。この場合、１個のノードが複数のグループに属している場合に、認証サーバＳにおいてアクセス制御の許可情報をグループ識別子の和集合として生成することで、プロキシノードＣは和集合に含まれるすべてのグループにアクセスを許可することができる。
【０２２７】
たとえば、ノードＡ，Ｂがグループ１（グループ識別子Ｇ１）に属し、ノードＤ，Ｅがグループ２（グループ識別子Ｇ２）に属しているときに、プロキシノードＣでは、ノードＡとの間で通信する手順Ｐ１の際にはグループ識別子Ｇ１がセットされ、ノードＤとの間で通信する手順Ｐ２の際にはグループ識別子Ｇ２がセットされ、ノードＢとの間で通信する手順Ｐ３の際にはグループ識別子Ｇ１がセットされ、ノードＥとの間で通信する手順Ｐ４の際にはグループ識別子Ｇ２がセットされる。
【０２２８】
プロキシノードＣ（アクセス制御ユニット４２）は、どの手順においてどのグループ識別子をセットするかを対応付けたデータテーブルを（たとえば許可情報記憶ユニット４１に）有しており、当該データテーブルを参照することにより、ノード間でデータの中継を行うか否かを決定する。同様に、情報ごとにグループ識別子を対応付けておき、情報を受け取ったノードにおいて、グループ識別子で情報を選別することも可能である。
【０２２９】
本実施形態の動作例を図８を用いて説明する。図８では、ノードＡがノードＢから情報ＲＢ１を取得し、ノードＥがノードＤから情報ＲＢ１を取得する例を示している。ノードＡに対しては、手順Ｐ３において認証サーバＳが「Ｃ provide ＊」をプロキシノードＣに送信するとともに、手順Ｐ４において、プロキシノードＣを介して認証サーバＳからの「Ａ read｜write｜execute ＲＢ１」をノードＡに送信する。また、ノードＢに対しては、手順Ｐ３において認証サーバＳが「Ｂ provide ＲＢ１」をノードＢに送信するとともに、手順Ｐ４において、ノードＢを介して認証サーバＳからの「Ｃ read｜write｜execute ＊」をプロキシノードＣに送信する。
【０２３０】
ノードＥに対しては、手順Ｐ３において認証サーバＳが「Ｃ provide ＊」をプロキシノードＣに送信するとともに、手順Ｐ４において、プロキシノードＣを介して認証サーバＳからの「Ｅ read｜write｜execute ＲＢ１」をノードＥに送信する。また、ノードＤに対しては、手順Ｐ３において認証サーバＳが「Ｄ provide ＲＢ１」をノードＤに送信するとともに、手順Ｐ４において、ノードＤを介して認証サーバＳからの「Ｃ read｜write｜execute ＊」をプロキシノードＣに送信する。
【０２３１】
ノードＡ，Ｂ，Ｄ，ＥとプロキシノードＣとに対して、上述のようにアクセス制御の許可情報を与えると、プロキシノードＣは、ノードＡからノードＢへのアクセスを中継し、ノードＥからノードＤへのアクセスを中継することになる。つまり、ノードＡがプロキシノードＣにアクセスすると、プロキシノードＣがノードＢにアクセスし、ノードＢからの応答がプロキシノードＣを介してノードＡに返され、一方、ノードＥがプロキシノードＣにアクセスすると、プロキシノードＣがノードＤにアクセスし、ノードＤからの応答がプロキシノードＣを介してノードＥに返される。
【０２３２】
ここで、プロキシノードＣにはセッション鍵に対応付けてグループ識別子が登録されており、ノードＡが情報ＲＢ１へのアクセス制御の要求を行うと、同じグループ識別子Ｇ１を有するノードＢの情報ＲＢ１がノードＡに返される。また、ノードＥが情報ＲＢ１へのアクセス制御の要求を行うと、同じグループ識別子Ｇ２を有するノードＤの情報ＲＢ１がノードＥに返される。
【０２３３】
他の構成および動作は実施形態２と同様である。また、図９に示す動作例は、実施形態１においてオプションを付加した図３の動作例に対応付けているが、オプションを持たない図１の動作例に対応付けることも可能である。
【０２３４】
以上述べた本実施形態の鍵認証システムでは、ノードにグループ識別子を付与し、前記付加情報にグループ識別子を含め、グループ識別子を用いてアクセス制御を行う。
【０２３５】
すなわち、各ノードＡ，Ｂ，Ｄ，Ｅにはグループ識別子が付与される。また、第１付加情報αおよび第２付加情報βは、グループ識別子を含む。そして、プロキシノードＣ（アクセス制御ユニット４２）は、グループ識別子を用いてアクセス制御を行うように構成される。
【０２３６】
このように、アクセス制御を行う場合にグループ識別子を用いると、アクセス制御の及ぶ範囲をグループ識別子により制限することが可能になる。言い換えると、暗号文の到達範囲をグループ識別子により制限することが可能になる。
【図１】
0005432999.tif 000002
【図２】
0005432999.tif 000003
【図３】
0005432999.tif 000004
【図４】
0005432999.tif 000005
【図５】
0005432999.tif 000006
【図６】
0005432999.tif 000007
【図７】
0005432999.tif 000008
【図８】
0005432999.tif 000009
【図９】
0005432999.tif 000010
【図１０】
0005432999.tif 000011
【図１１】
0005432999.tif 000012
【図１２】
0005432999.tif 000013
【図１３】
0005432999.tif 000014