複数のクライアント装置と、前記複数のクライアント装置の間で情報を暗号化して共有するための共通鍵を生成する鍵生成装置とを含む鍵共有システムであって、クライアント装置は、前記情報を共有する1つ以上のクライアント装置を指定する指定情報を取得する取得手段と、前記指定情報を送信するクライアント側送信手段と、前記鍵生成装置から、前記情報を暗号化するための共通鍵を受信するクライアント側受信手段と、を備え、前記鍵生成装置は、マスター鍵を記憶する記憶手段と、前記クライアント装置から、前記指定情報を受信する受信手段と、前記指定情報をソートするソート手段と、前記ソート手段でソートされた前記指定情報と、前記マスター鍵とに基づいて、前記共通鍵を生成する生成手段と、前記共通鍵を前記クライアント装置へ送信する送信手段と、を備え、前記指定情報は、その指定情報で指定される他のクライアント装置へ通知され、前記他のクライアント装置は通知された前記指定情報を前記鍵生成装置へ送信し、前記鍵生成装置は受信した指定情報と前記マスター鍵とに基づいて前記共通鍵を生成し、生成された共通鍵を当該他のクライアント装置へ送信し、前記共通鍵は、その共通鍵を復元するための値として、前記クライアント装置および前記他のクライアント装置のそれぞれと前記鍵生成装置との間で、それぞれ分散されて記憶される、ことを特徴とする鍵共有システム。前記鍵共有システムは、複数の鍵生成装置を含み、前記複数のクライアント装置は、前記複数の鍵生成装置から受信した複数の前記共通鍵を合成して1つの共通鍵を取得する合成手段を備える、ことを特徴とする請求項1に記載の鍵共有システム。前記クライアント装置は、乱数を生成する乱数生成手段をさらに備え、前記クライアント側送信手段は前記鍵生成装置へさらに乱数を送信し、前記生成手段は、ソートされた前記指定情報と前記マスター鍵と前記乱数とに基づいて前記共通鍵を生成し、前記乱数が前記他のクライアント装置へさらに通知され、前記他のクライアント装置は、前記乱数を前記鍵生成装置へさらに送信し、前記鍵生成装置は、受信した前記指定情報および前記乱数と前記マスター鍵とに基づいて前記共通鍵を生成し、生成された共通鍵を当該他のクライアント装置へ送信する、ことを特徴とする請求項1又は2に記載の鍵共有システム。前記ソート手段は、前記指定情報で指定されたクライアント装置に、その指定情報を送信したクライアント装置が含まれない場合、当該クライアント装置を指定する情報を当該指定情報に含めてソートし、前記送信手段は、さらに、前記指定情報を送信したクライアント装置を指定する情報を当該指定情報に含めた情報を、前記クライアント装置へ送信する、ことを特徴とする請求項1から3のいずれか1項に記載の鍵共有システム。前記鍵生成装置は、前記指定情報で指定されたクライアント装置に、その指定情報を送信したクライアント装置が含まれない場合、前記共通鍵を生成しない、ことを特徴とする請求項1から3のいずれか1項に記載の鍵共有システム。前記マスター鍵は、有効期間の異なる複数のマスター鍵を含み、前記生成手段は、複数のマスター鍵のうち1つを用いて前記共通鍵を生成し、複数のマスター鍵のうち1つを特定する特定情報が、前記他のクライアント装置へ通知され、前記他のクライアント装置は、前記特定情報を前記鍵生成装置へさらに送信し、前記鍵生成装置は、前記特定情報で特定される前記マスター鍵を用いて前記共通鍵を生成し、生成された共通鍵を当該他のクライアント装置へ送信する、ことを特徴とする請求項1から5のいずれか1項に記載の鍵共有システム。複数のクライアント装置の間で情報を暗号化して共有するための共通鍵を生成する鍵生成装置であって、マスター鍵を記憶する記憶手段と、クライアント装置から、前記情報を共有する1つ以上のクライアント装置を指定する指定情報を受信する受信手段と、前記指定情報をソートするソート手段と、前記ソート手段でソートされた前記指定情報と、前記マスター鍵とに基づいて、前記共通鍵を生成する生成手段と、前記共通鍵を前記クライアント装置へ送信する送信手段と、を備え、前記共通鍵は、前記クライアント装置との間で分散されて記憶される、ことを特徴とする鍵生成装置。請求項7に記載の鍵生成装置としてコンピュータを機能させることを特徴とするプログラム。特許文献1に記載の技術は、秘密鍵を分散して保管するストレージサーバとグループメンバのクライアント装置からそれぞれの分散鍵が漏えいすると、グループメンバの秘密鍵が復元でき、それを用いてデータが得られるという課題があった。また、グループメンバの公開鍵の入手や公開鍵証明書の検証などにより全体の構成や実装が複雑になるという課題もあった。また、特許文献2に記載の技術は、グループメンバの個人鍵が漏えいすると、暗号化されて配布されたグループ鍵の暗号を解除することができるため、そのグループ鍵で暗号化された元のデータが復元できるという課題があった。また、特許文献3に記載の技術は、KPSのマスター鍵秘密アルゴリズムが漏えいすると、すべてのユーザの鍵が計算できてしまうという課題があった。本発明は上記課題に鑑みなされたものであり、秘匿性を確保しながら、グループ鍵を柔軟に共有する技術を提供することを目的とする。上記目的を達成するため、本発明による鍵共有システムは、複数のクライアント装置と、前記複数のクライアント装置の間で情報を暗号化して共有するための共通鍵を生成する鍵生成装置とを含む鍵共有システムであって、クライアント装置は、前記情報を共有する1つ以上のクライアント装置を指定する指定情報を取得する取得手段と、前記指定情報を送信するクライアント側送信手段と、前記鍵生成装置から、前記情報を暗号化するための共通鍵を受信するクライアント側受信手段と、を備え、前記鍵生成装置は、マスター鍵を記憶する記憶手段と、前記クライアント装置から、前記指定情報を受信する受信手段と、前記指定情報をソートするソート手段と、前記ソート手段でソートされた前記指定情報と、前記マスター鍵とに基づいて、前記共通鍵を生成する生成手段と、前記共通鍵を前記クライアント装置へ送信する送信手段と、を備え、前記指定情報は、その指定情報で指定される他のクライアント装置へ通知され、前記他のクライアント装置は通知された前記指定情報を前記鍵生成装置へ送信し、前記鍵生成装置は受信した指定情報と前記マスター鍵とに基づいて前記共通鍵を生成し、生成された共通鍵を当該他のクライアント装置へ送信し、前記共通鍵は、その共通鍵を復元するための値として、前記クライアント装置および前記他のクライアント装置のそれぞれと前記鍵生成装置との間で、それぞれ分散されて記憶される。本発明によれば、秘密情報が漏えいしてもグループ鍵を秘匿しながら、グループ鍵を柔軟に生成して共有する鍵共有システム、鍵生成装置、及びプログラムを提供することができる。以下、添付図面を参照して本発明の実施の形態を詳細に説明する。なお、本発明は、非特許文献2に記載のLR-AKELeakage-ResilientAuthenticatedKeyExchangeのシングルモード、クラスタモード、新クラスタモードに基づく。まず、背景知識としてLR-AKEのシングルモード、クラスタモード、新クラスタモードについて説明する。なお、LR-AKEに基づき、保護すべきデータから、このデータを復元するための複数の値を生成し、生成した値を分散して管理する構成は、非特許文献1に記載されている。LR-AKEのシングルモード図1は、非特許文献1に記載のLR-AKEのシングルモードを説明する図であり、システムは、クライアント装置1と、サーバ装置2とを備えている。クライアント装置1の記憶部11は、クライアント情報110を保存しており、サーバ装置2の記憶部21は、クライアント情報110の対であるサーバ情報210を保存している。図1に示すように、クライアント情報110は、アカウント情報111、保護対象であるデータDKを復元するための値CDK及び公開鍵PKを示す情報を含んでいる。また、サーバ情報210は、アカウント情報111の対である検証情報211、保護対象であるデータDKを復元するための値であり、値CDKの対である値SDK、及び、公開鍵PKの対である秘密鍵SKを示す情報を含んでいる。なお、値CDK及び値SDKは、データDK及びクライアント装置1のユーザのパスワードに基づき生成されており、データDKは、値CDK及び値SDK並びにクライアント装置1のユーザのパスワードから復元可能である。さらに、アカウント情報111は、ユーザ識別子及びアカウント情報のインデックスとして使用されるランダム値pcidと、秘密値csを示す情報を含んでいる。また、検証情報211は、ランダム値pcidのハッシュ値であるhpcidと、秘密値csとクライアント装置1のユーザのパスワードに基づき生成した秘密値ssを示す情報を含んでいる。ユーザがクライアント装置1にパスワードを入力すると、クライアント装置1の認証部12は、パスワード、ランダム値pcid、秘密値cs及び公開鍵PKに基づき値msを生成し、値msから認証データを生成する。そして、生成した認証用データをサーバ装置2に送信する。サーバ装置2の認証部22は、ハッシュ値hpcid、秘密値ss及び秘密鍵SKに基づきクライアント装置1と同じ値msを生成し、この値に基づきクライアント装置1から受信する認証データを検証する。クライアント装置1の認証成功後、クライアント装置1の通信処理部13とサーバ装置2の通信処理部23は、それぞれ、値msからクライアント装置1とサーバ装置2間の通信を暗号化するための通信用暗号鍵を生成する。つまり、クライアント装置1及びサーバ装置2との間に安全な通信路が確立される。サーバ装置2が、この安全な通信路を使用して、クライアント装置1に値SDKを送信することで、クライアント装置1は、ユーザのパスワード、値SDK及び値CDKに基づきデータDKを安全に復元することができる。さらに、非特許文献1に記載のシステムでは、クライアント装置1とサーバ装置2による認証が成功する度に、情報生成更新部14は、値msを使用して秘密値cs及び値CDKを更新し、新たなランダム値を生成してランダム値pcidを更新する。また、情報生成更新部14は、更新後のランダム値pcidから新たなハッシュ値hpcidを計算してサーバ装置2に送信する。また、サーバ装置2の情報生成更新部24は、値msを使用して秘密値ss及び値SDKを更新し、また、ハッシュ値hpcidを、クライアント装置1から受信する値に更新する。よって、データDKを復元するためには、同じ回に生成された値SDK及び値CDKを入手する必要がある。値SDK及び値CDKは分散して管理されており、かつ、認証の都度更新されるため、データDKは安全に保護される。なお、クライアント情報110及びサーバ情報210の初期値については、いずれかの装置で両方を生成し、ネットワークではなく、外部記憶装置を利用してそれぞれの装置に保存する方法であってもよい。なお、非特許文献1は、これらを生成するための初期化プロトコルを開示しており、クライアント装置1とサーバ装置2が初期化プロトコルを実行する。LR-AKEのクラスタモード図2は、非特許文献1に記載のLR-AKEのクラスタモードを説明する図であり、システムは、クライアント装置3と、サーバ装置4及び5を備えている。なお、図2においては、説明を簡略化するため、各装置に保存されている情報のみを表示している。図2において、クライアント装置3が保持するアカウント情報311aを含むクライアント情報310a及びサーバ装置4が保持する検証情報411aを含むサーバ情報410aは、それぞれ、図1のクライアント装置1のクライアント情報110及びサーバ装置2のサーバ情報210に対応する。つまり、クライアント装置3は、サーバ装置4の認証を受けた後に、サーバ装置4から値SDK1を取得することでデータDKを復元することができる。同様に、クライアント装置3が保持するアカウント情報311bを含むクライアント情報310b及びサーバ装置5が保持する検証情報511bを含むサーバ情報510bは、それぞれ、図1のクライアント装置1のクライアント情報110及びサーバ装置2のサーバ情報210に対応する。つまり、クライアント装置3は、サーバ装置5の認証を受けた後に、サーバ装置5から値SDK2を取得することでデータDKを復元することができる。さらに、サーバ装置5が保持するアカウント情報511cを含むクライアント情報510c及びサーバ装置4が保持する検証情報411cを含むサーバ情報410cは、それぞれ、図1のクライアント装置1のクライアント情報110及びサーバ装置2のサーバ情報210に対応する。つまり、サーバ装置5は、サーバ装置4の認証を受けた後に、サーバ装置4から値SDK3を取得することでデータDKを復元することができる。図2に示すクラスタモードにおいては、クライアント装置3、サーバ装置4及びサーバ装置5のいずれか1つが故障となったり、各装置を接続する伝送路の2つが障害となったりしてもユーザは、データDKを復元することが可能である。LR-AKEの新クラスタモード図3は、非特許文献3に記載のLR-AKEの新クラスタモードを説明する図であり、システムは、クライアント装置6、サーバ装置7並びに8、及びクライアント装置6に接続可能な外部の記憶装置620を備える。なお、図3においては、説明を簡略化するため、各装置に保存されている情報のみを表示している。また、図3のクライアント装置6、サーバ装置7及び8の相互の関係は、図2のクライアント装置3、サーバ装置4及び5の相互の関係と同様である。すなわち、例えば、クライアント装置6は、サーバ装置7の認証を受けた後に、サーバ装置7から値SDK1を取得することでデータDKを復元することができる。また、新クラスタモードでも、クライアント装置6とサーバ装置7との間、及びクライアント装置6とサーバ装置8との間では、ユーザが記憶する短いパスワードを用いて認証やデータDKの復元などを実行する。ただし、サーバ装置7とサーバ装置8との間では、全数探索が困難となる程度の十分長い第1のパスワードを用いる。そして、クライアント装置6は、アカウント情報610bに含めて第1のパスワードを記憶する。また、クライアント装置6は、サーバ装置8と通信して、バックアップ用のアカウント情報611zを含むクライアント情報610zと、検証情報811zを含むサーバ情報810zの対の生成を行う。サーバ情報810zは、サーバ装置8の記憶部に保存されるが、クライアント情報610zは、クライアント装置6ではなく、クライアント装置6に接続可能な外部の記憶装置620に保存される。なお、クライアント情報610zは、第1のパスワードを含んでいる。新クラスタモードでは、例えば、クライアント装置6が故障したとしても、記憶装置620のクライアント情報610zを使用して、サーバ装置8のサーバ情報810zを使用した認証を受けることで、サーバ装置8とは安全な通信路を確保することができる。この安全な通信路によりクライアント情報810cをサーバ装置8から安全に取得することができるため、クライアント装置6は、サーバ装置7と認証を行うことで安全にデータDKを復元することが可能となる。つまり、クライアント装置6が破損したとしても、サーバ装置8の設置場所に出向くことなく、これら情報の復旧を行うことができる。<<実施形態1>>続いて、LR-AKEのシングルモードに基づく、グループ間でのデータ共有方式を用いる場合の本発明の実施形態について説明する。システム構成図4は実施形態1の鍵共有システムの構成を示す概略図である。図4においては、グループ鍵GKの生成を要求するユーザを要求者Uと表し、要求者UがデータDを共有したいグループメンバをそれぞれメンバM1~メンバMnと表す。要求者Uのクライアント装置1000は、メンバM1~Mnを特定する情報であるグループメンバ集合G、自らの識別子U及び乱数Nを認証サーバ装置1100に送信し、グループ鍵GKの生成を要求する。ここで、グループ鍵GKとは、要求者UとメンバM1~Mnとの間で共通鍵暗号を用いてデータDを共有するために用いる暗号用の鍵である。認証サーバ装置は、受信した情報と、自らが保持するマスター鍵MKとを用いて鍵生成を実行し、生成したグループ鍵GKを要求者のクライアント装置1000へ送信する。そして、要求者は、受信したグループ鍵GKを用いてデータDを暗号化し、ストレージサーバ装置1200へその暗号化されたデータC=EncGKDを格納する。メンバM1のクライアント装置1050~メンバMnのクライアント装置1060は、グループメンバを特定する情報G’と乱数Nとを要求者Uのクライアント装置1000から受信する。メンバM1のクライアント装置1050~メンバMnのクライアント装置1060は、受信した情報を、認証サーバ装置1100へ送信してグループ鍵GKの生成を要求することにより、そのグループ鍵GKを取得する。そして、ストレージサーバ装置1200に格納された暗号化されたデータCを読み出し、暗号化を解除して、元のデータDを得ることで、データDが要求者とメンバM1~Mnとの間で共有される。以下では、これらの装置と、その動作について詳細に説明する。装置構成図5は、要求者のクライアント装置1000と、認証サーバ装置1100の機能構成例を示すブロック図である。クライアント装置1000は、例えば、通信処理部1001、グループメンバ集合取得部1002、乱数生成部1003、記憶部1004、及び暗号化部1005を備える。認証サーバ装置1100は、例えば、通信処理部1101、判定部1102、ソート部1103、グループ鍵生成部1104、記憶部1105、及びマスター鍵生成部1106とを備える。なお図5においては、LR-AKEのシングルモードを実行するための機能部については図示を省略しているが、クライアント装置1000及び認証サーバ装置1100は、例えば、それぞれ図1のクライアント装置1及びサーバ装置2で示す機能をも備える。また、クライアント装置1000と認証サーバ装置1100の間で送受信するメッセージは、すべてLR-AKEのシングルモードにより保護される。なお、図5においては、メンバのクライアント装置の構成図については省略しているが、メンバM1のクライアント装置1050~メンバMnのクライアント装置1060も要求者のクライアント装置1000と同様の構成を有する。そして、メンバM1のクライアント装置1050やメンバMnのクライアント装置1060も、場合によっては、グループ鍵GKの要求者として動作することができる。クライアント装置の装置構成クライアント装置1000において、通信処理部1001は、様々な信号やメッセージの送受信を実行する。例えば、通信処理部1001は、要求者の識別子U、データDを共有するメンバを指定する指定情報であるグループメンバ集合G、及び乱数Nを含むメッセージを認証サーバ装置1100へ送信し、グループ鍵GKを認証サーバ装置1100から受信する。また、通信処理部1001は、ストレージサーバ装置1200への、後述する暗号化部1005が暗号化したデータCの格納を実行してもよい。グループメンバ集合取得部1002は、例えば要求者ユーザの入力により、データDを共有するグループメンバ集合Gを取得する。グループメンバ集合Gは、例えば、識別子IDやメールアドレスなどの、メンバM1~Mnを特定する情報の集合である。乱数生成部1003は、認証サーバ装置1100においてグループ鍵GKの生成に用いる乱数Nを生成する。乱数Nは同じグループ中で異なるグループ鍵GKを生成する場合などに用いることができる。なお、同じグループ中では異なるグループ鍵GKを生成する必要がない場合などは、認証サーバ装置1100へ乱数Nを送信する必要がないため、この場合は乱数生成部1003を省略することもできる。記憶部1004は、例えばメモリなどの記憶装置であり、要求者の識別子UやデータDを格納する。暗号化部1005は、認証サーバ装置1100が生成したグループ鍵GKを用いて、データDを暗号化する。なお、要求者の識別子Uをクライアント装置から認証サーバ装置1100へ送信すると説明したが、例えばLR-AKEの認証の時点で、認証サーバ装置1100がクライアント装置の識別子、すなわち識別子Uを取得できる場合は、この送信は不要である。認証サーバ装置の装置構成認証サーバ装置1100の通信処理部1101は、クライアント装置1000の通信処理部1001と同様に、様々な信号やメッセージの送受信を実行する。例えば、通信処理部1101は、要求者の識別子U、グループメンバ集合G、及び乱数Nを含むメッセージをクライアント装置1000から受信し、グループ鍵GKをクライアント装置1000へ送信する。判定部1102は、要求者の識別子Uがグループメンバ集合Gに含まれているかを判定し、含まれていない場合は、例えば、グループメンバ集合Gに要求者の識別子Uを加えた集合GUを出力する。また、判定部1102は、要求者の識別子Uがグループメンバ集合Gに含まれている場合は、グループメンバ集合Gをそのまま出力する。なお、判定部1102は、要求者の識別子Uがグループメンバ集合Gに含まれていない場合は、グループ鍵GKを生成しないことを決定して、何も出力しないようにしてもよい。また、グループ鍵GKを生成しない旨の情報を含むメッセージを生成し、そのメッセージを通信処理部1101を介してクライアント装置1000へ送信してもよい。ソート部1103は、判定部が出力したグループメンバ集合G又は集合GUをソートする。ソートすることにより、グループメンバ集合G又は集合GUにおいて、複数のグループメンバの識別子がどのような順序で含まれていたとしても、同一のグループメンバ集合に対しては同一のソート結果G’が得られるようになる。これにより、後述するグループ鍵生成部1104に入力される値を一意に定めることが可能となる。なお、このソート結果G’は、通信処理部1101を介してクライアント装置1000へ送信されてもよい。これは、要求者の識別子Uがグループメンバ集合Gに含まれていなかった場合に特に有効である。すなわち、グループメンバ集合Gに要求者の識別子Uが含まれない状態でそのグループメンバ集合GがメンバM1~Mnに通知されると、メンバM1~Mnは、そのグループメンバ集合Gを用いて要求者Uとは異なるグループ鍵GKを受信する場合がある。これは、メンバM1~Mnはグループメンバ集合Gに要求者の識別子Uが含まれていないことを知らない場合に起こる。この場合、認証サーバ装置1100においてグループ鍵GKの生成に用いるソート結果G’は、要求者に対しては識別子Uを含み、メンバM1~Mnに対しては識別子Uを含まない。このため、生成されるグループ鍵GKはそれぞれ異なり、データの共有ができなくなってしまう。これに対し、要求者のクライアント装置1000へソート結果G’を送信し、要求者が、グループメンバ集合Gではなくソート結果G’をメンバM1~Mnと共有することにより、同一のグループ鍵GKを得ることが可能となる。記憶部1105は、例えば、メモリなどの記憶装置であり、マスター鍵MKを記憶する。マスター鍵MKは、マスター鍵生成部1106が生成する。なお、マスター鍵MKは所定の有効期限を有していてもよく、マスター鍵生成部1106は、所定の有効期限が到来すると新しいマスター鍵MKを生成するようにしてもよい。また、記憶部1105は、ある時点において複数の有効なマスター鍵MKを記憶してもよい。例えば、記憶部1105は、生成時が1週間ずつずれた、有効期間が2週間のマスター鍵MKを2つ記憶しておいてもよい。複数のマスター鍵MKが存在する場合、後述のグループ鍵生成部1104は、そのいずれかを用いてグループ鍵GKを生成する。グループ鍵生成部1104は、ソート結果G’と、乱数Nと、記憶部1105に記憶されたマスター鍵MKとを用いて、グループ鍵GKを生成する。グループ鍵生成部1104は、生成関数として例えばHMAC関数を使う場合、グループ鍵GKを、次のように計算する。GK=HMACMKNonce:N||ID:U||ID:M1||ID:M2||...||ID:Mn||AT:attribute1||...||AT:attributenここで、Nonce:、ID:、AT:はその後の文字列の種類を表す識別子であり、||は連結を表すが、単に文字列を連結するのではなく、セパレータシンボルを挟んで連結することを意味する。セパレータシンボルはN、U、M1、attribute1などと識別可能な文字又は文字列であり、例えばこれらの変数で使用することが許されない予約語である。なお、グループ鍵生成部1104は、HMAC関数の代わりにKDF関数やハッシュ関数などの計算を用いてグループ鍵GKを生成してもよい。なお、生成されたグループ鍵GKは、通信処理部1101を介してクライアント装置へ送信されるが、この通信だけ、LR-AKEのシングルモードを用いた安全な通信路を介して行われてもよい。このとき、マスター鍵MKが複数存在する場合は、どのマスター鍵MKを用いたかを特定する特定情報をクライアント装置へ送信する。なお、グループ鍵GKの記憶においては、グループ鍵GKをそのままクライアント装置1000に記憶させるのではなく、例えば、グループ鍵GKを、値CGK0、SGK0として分散させる。そして、クライアント装置1000はCGK0を、認証サーバ装置1100はSGK0をそれぞれ記憶する。このため、クライアント装置1000がグループ鍵GKを再度取得するには、パスワードの入力により、LR-AKEのシングルモードを用いた安全な通信路を介して、認証サーバ装置1100からSGK0を取得することが必要となる。なお、上述の説明では、グループメンバ集合Gを識別子の集合としたが、グループメンバ集合Gは、データDを共有したいユーザの属性に関する情報であってもよい。属性に関する情報とは、例えば、年齢や男女、所属部署、または所定のメーリングリストに加入しているか否か、などを含む。要求者は、例えば、グループメンバ集合Gにおいて、18歳以上、女性、総務部などの少なくとも1つの属性を指定する。グループメンバ集合Gとして属性を用いる場合、判定部1102は、要求者がその属性に含まれない場合は、グループ鍵GKの生成をしないことを決定し、何も出力しない。また、ソート部1103は、グループメンバ集合Gに複数の属性の情報が含まれている場合、その情報をソートする。また、グループメンバ集合Gは、識別子と属性の情報とを組み合わせた情報であってもよい。なお、グループメンバ集合Gの値が、識別子であるか、属性の情報であるか、それらの組み合わせであるか、などを認証サーバ装置1100が判定することができるように、クライアント装置はメッセージにこれらを識別するコードを含めてもよい。要求者のクライアント装置の動作続いて、要求者のクライアント装置1000の動作について、図6を参照して説明する。図6は、クライアント装置1000の動作を示すフローチャートである。まず、要求者は、LR-AKEのシングルモードを用いた安全な通信路の確立のためにパスワードを入力するS601。そして、クライアント装置1000は、認証用サーバ装置との間の安全な通信路を確立しようとするS602。具体的には、クライアント装置は、パスワード、ランダム値pcid、秘密値cs、及び公開鍵PKに基づいて値msを生成し、値msを用いて認証用データを生成し、その認証用データを認証サーバ装置1100へ送信する。そして、認証サーバ装置1100は、ハッシュ値hpcid、秘密値ss、及び秘密鍵SKに基づいて、クライアント装置1000と同じ値msを生成し、この鍵に基づいて認証用データを検証することによりクライアント装置1000を認証する。認証が成功すると、クライアント装置1000と認証サーバ装置1100は、通信を暗号化するための通信用暗号鍵を生成し、安全な通信路を確立する。クライアント装置は、パスワードを間違えるなど、通信路の確立に失敗するとS603でNo、再度パスワードの入力S601へ戻る。なお、通信路の確立に所定回数連続で失敗すると、パスワードの入力をロックし、ユーザからの入力を受け付けないようにしてもよい。一方、通信路の確立に成功するとS603でYes、クライアント装置は、ユーザから、データDを共有するグループメンバの入力を受け付け、そのグループメンバを指定する指定情報であるグループメンバ集合Gを取得するS604。そして、乱数生成部1003は、乱数Nを生成するS605。なお、S604とS605は、実行する順序が逆であってもよく、また、同時に実行されてもよい。また、同一のグループメンバに対して、異なるグループ鍵GKを生成する必要がない場合などは、乱数Nの生成S605を省略してもよい。その場合、以下の処理では、乱数Nの代わりに定数を用いてもよいし、乱数Nの送受信を行わないようにしてもよい。通信処理部1001は、グループメンバ集合Gと乱数Nが揃うと、それに識別子Uを加えたメッセージを生成し、そのメッセージを認証サーバ装置1100へ送信するS606。なお、識別子Uは、S602の安全な通信路の確立の時点で認証サーバ装置1100がクライアント装置を認識できるため、メッセージに含めなくてもよい。その後、通信処理部1001は、認証サーバ装置1100からメッセージを受信するS607。そして、そのメッセージがグループ鍵GKを含んでいた場合S608でYes、データDを暗号化する。そして、受信したソート結果G’又はグループ集合Gもしくは集合GUとその暗号化したデータCとを関連付けてにストレージサーバ装置1200へ格納するS609。そして、受信したソート結果G’又はグループ集合Gもしくは集合GUと、S605で生成した乱数Nとを、メンバM1~Mnのクライアント装置に通知しS610、処理を終了する。なお、認証サーバ装置1100からグループ鍵GKの生成に使用したマスター鍵MKを示す情報を受信していた場合は、要求者のクライアント装置はメンバM1~Mnのクライアント装置へこの情報も通知する。また、グループ鍵GKの生成に使用したマスター鍵MKを示す情報を通知する場合は、同時に、そのマスター鍵MKの有効期限以前のグループ鍵GKを要求できる期限を通知してもよい。メンバM1~Mnがマスター鍵MKの有効期限以降のタイミングでグループ鍵GKを要求すると、マスター鍵MKが更新されているため、要求者とメンバM1~Mnとで異なるグループ鍵GKを取得することとなるからである。一方、受信したメッセージがグループ鍵GKを含んでいない場合S608でNo、そのまま処理を終了する。上述のように、要求者の識別子Uと、乱数Nとは、必ずしも認証サーバ装置1100へ送信される必要はない。すなわち、クライアント装置1000は、グループメンバ集合Gは必ず認証サーバ装置1100へ送信し、場合によって、要求者の識別子Uや乱数Nを同時に送信する。なお、グループ鍵はクライアント装置と認証サーバ装置1100との間で、それぞれCGK、SGKとして分散して保存される。クライアント装置においては、認証が成功するたびに、値msを用いてCGKと秘密値csとが更新され、新しいランダム値を生成されることによりランダム値pcidが更新される。また、更新後のpcidからハッシュ値hpcidが計算され、認証サーバ装置1100に送信する。認証サーバ装置1100は、値msを用いて秘密値ssと値SGKとを更新し、さらに、受信したhpcidによりハッシュ値hpcidを更新する。このように、分散管理および値の更新により、グループ鍵GKは安全に保護される。認証サーバ装置の動作続いて、認証サーバ装置1100の動作について、図7を参照して説明する。図7は、認証サーバ装置1100の動作を示すフローチャートである。認証サーバ装置1100は、まず、クライアント装置1000から、識別子U、グループメンバ集合G、及び乱数Nを含むメッセージを受信するS701。続いて、判定部1102は、識別子Uがグループメンバ集合Gに含まれているかを判定するS702。すなわち、グループメンバ集合Gによって、要求者が指定されるかを判定する。そして、識別子Uがグループメンバ集合Gに含まれていない場合S702でNoは、グループメンバ集合Gに識別子Uを追加した集合GUを出力するS703。また、識別子Uがグループメンバ集合Gに含まれている場合S702でYesは、グループメンバ集合Gをそのまま出力する。なお、識別子Uがグループメンバ集合Gに含まれていない場合S702でNoには、そのまま処理を終了し、グループ鍵GKの生成を行わないようにしてもよい。特に、グループメンバ集合Gが属性で記述されていた場合に、識別子Uが示す属性が、グループメンバ集合Gとして記述されている属性に含まれていない場合は、そのまま処理を終了することが望ましい。グループメンバ集合Gとして記述されている属性に識別子Uが示す属性を加えると、ユーザが意図しない範囲までデータDが共有されてしまうからである。続いて、ソート部1103は、出力されたグループメンバ集合Gまたは集合GUをソートし、ソート結果G’を出力するS704。これは、グループ鍵生成部1104に対して、同じ内容のグループメンバ集合Gまたは集合GUに対して一意に定まる文字列を与えることを目的としている。グループ鍵生成部1104は、ソート結果G’と、乱数Nと、マスター鍵MKとを用いてグループ鍵GKを生成するS705。なお、マスター鍵MKが複数存在する場合で、グループ鍵GKの生成に使用するマスター鍵MKを指定されている場合は、その、マスター鍵を用いてグループ鍵GKを生成する。なお、マスター鍵MKが複数存在する場合で、グループ鍵GKの生成に使用するマスター鍵MKを指定されていない場合は、所定のルールで使用するマスター鍵MKを選定する。マスター鍵MKは、要求者に対するグループ鍵GKの生成と、要求者が指定するメンバM1~Mnに対するグループ鍵GKの生成の両方に用いられる。そして、異なるマスター鍵MKを用いると、ソート結果G’や乱数Nが同一であっても異なるグループ鍵GKが生成される。このため、要求者がグループ鍵GKの生成を要求した時点から、メンバM1~Mnがグループ鍵GKを要求するための所定の期間を確保できるように、マスター鍵MKの有効期限までに所定の期間が残っていることが望ましい。したがって、クライアント装置1000から使用するマスター鍵MKを特定する特定情報を受信していない場合、認証サーバ装置1100は、例えば、有効期限が最も遅く到来するマスター鍵MKを使用するマスター鍵MKとして選定する。具体的には、例えば、認証サーバ装置1100は、生成されたタイミングが1週間ずれた、有効期間が2週間のマスター鍵MKを2つ保持している場合、2つのマスター鍵MKのうち、有効期間が1週間以上残っているものをグループ鍵GKの生成に用いる。最後に、通信処理部1101は、生成されたグループ鍵GKとソート結果G’とを、クライアント装置へ安全な通信路を介して送信するS706。なお、通信処理部1101は、マスター鍵MKが複数存在する場合は、同時に、グループ鍵GKの生成に使用したマスター鍵MKを特定する特定情報を送信する。この特定情報とは、例えば、2つのマスター鍵MKが存在する場合は、そのどちらを用いたかを示す1ビットの情報であってもよい。なお、ソート結果G’の通知は、クライアント装置がメンバM1~Mnに最終的なグループメンバ集合Gを通知するための情報を提供するものである。メンバM1~Mnは、そのグループメンバ集合Gを用いて、認証サーバ装置1100へグループ鍵を要求する。ここで、認証サーバ装置1100は、メンバM1~Mnからのグループ鍵GK要求に対しても、グループメンバ集合Gのソートを行う。このため、通信処理部1101は、ソート結果G’に代えて、判定部から出力されたグループメンバ集合Gまたは集合GUのいずれかを送信してもよい。識別子Uがグループメンバ集合Gに含まれていないときS702でNoにそのまま処理を終了する場合は、ソート結果G’やグループ集合G、または集合GUを送信しないでもよい。これは、この場合は、クライアント装置からメンバM1~Mnへ提供する最終的なグループメンバ集合Gと、認証サーバ装置1100へ送信する初期のグループメンバ集合Gとに違いがないことが明らかだからである。グループのメンバのクライアント装置の動作続いて、メンバMj1≦j≦nのクライアント装置の動作について、図8を参照して説明する。図8は、メンバMjのクライアント装置の動作を示すフローチャートである。メンバMjのクライアント装置は、ソート結果G’と乱数Nとを、要求者のクライアント装置1000から受信するS801。なお、要求者のクライアント装置1000がグループ鍵GKの生成に使用したマスター鍵MKを特定する特定情報を認証サーバ装置1100から受信していた場合は、メンバMjのクライアント装置はこの情報も受信する。その後のグループ鍵GKを取得する処理は、要求者のクライアント装置と同様に行うため、同様の処理については同様の番号を付して説明を省略するS601~S603、S606~S608。なお、S606では、要求者の識別子Uに代えてメンバの識別子Mjを、そして、グループメンバ集合Gとしてソート結果G’を、それぞれ送信する。さらに、S606では、要求者のクライアント装置からグループ鍵GKの生成に使用したマスター鍵MKを示す情報を受信した場合は、その情報も送信する。なお、要求者のクライアント装置1000が乱数Nとの送信を省略している場合は、乱数Nとの送信を省略してもよい。同様に、認証サーバ装置1100がLR-AKEによってメンバMjを特定できる場合は、識別子Mjを送信しなくてもよい。認証サーバ装置1100は、このメッセージに基づいて、要求者のクライアント装置に対してグループ鍵GKを発行したのと同様に、メンバMjのクライアント装置に対してもグループ鍵GKを発行する。ここで、要求者のクライアント装置に対するグループ鍵GKの発行と、メンバMjのクライアント装置に対するグループ鍵GKの発行とでは、グループ鍵GKの生成に用いる値G’、N、MKはすべて等しいものとなる。この結果、同一のグループ鍵が要求者とメンバMjとに対して発行されることとなる。グループ鍵GKを受信したメンバMjのクライアント装置は、続いて、ストレージサーバ装置1200へアクセスするS802。そして、ストレージサーバ装置1200に格納されている暗号化されたデータCに関連付けて保存されているソート結果G’又はグループメンバ集合Gもしくは集合GUのうち、自らが含まれるものを探索する。なお、この探索は、S801で受信したG’を用いて、そのG’と同一のG’に関連付けられている暗号化されたデータCを探索するようにしてもよい。そして、自らが含まれているソート結果G’又はグループメンバ集合Gもしくは集合GUに関連する暗号化されたデータDを取得するS803。そして、受信したグループ鍵GKを用いて暗号化解除したデータを取得するS804。なお、取得されたグループ鍵GKは、メンバMjと認証サーバ装置1100との間で、分散管理および値を更新されることによって安全に保護される。このようにして、要求者とメンバM1~Mnとは、公開してもよい情報であるグループメンバ集合Gと乱数Nとを共有するだけで、共通のグループ鍵を安全に共有することができる。なお、悪意の第三者がグループメンバ集合Gと乱数Nとを用いてグループ鍵GKを生成しようとすると、認証サーバ装置1100の判定部1102において、第三者の識別子U’がグループメンバ集合Gの値に加えられた集合GU’が生成される。その結果、グループ鍵生成部1104で生成されるグループ鍵GK’は、要求者とメンバM1~Mnとの間で共有されたグループ鍵GKとは異なることとなる。また、悪意の第三者が、その識別子U’を偽装したとしても、LR-AKEにおいて、ユーザ認証が行われるため、その認証の結果と識別子U’とを比較することで識別子の偽装を発見することができる。このため、悪意の第三者は、暗号化されたデータCについて、暗号化を解除することができず、要求者とメンバM1~Mnとは、共通のグループ鍵を安全に共有することができる。<<実施形態2>>続いて、LR-AKEのクラスタモードに基づく、グループ間でのデータ共有方式を用いる場合の本発明の実施形態について説明する。システム構成図9は実施形態2の鍵共有システムの構成を示す概略図である。図9においては、要求者は、メンバM1~Mnとの間で共通鍵暗号を用いてデータDを共有するための部分グループ鍵PGK1及びPGK2の生成を、複数の認証サーバ装置1100及び1150に要求する。ここで、要求者のクライアント装置では、LR-AKEのクラスタモードを用いた安全な通信路を認証用サーバ装置S1及びS2との間に確立する。そして、要求者のクライアント装置は、認証用サーバ装置S1及びS2へ、グループメンバ集合G、乱数N、要求者の識別子Uを送信し、部分グループ鍵PGKの生成を要求する。認証サーバ装置1100と認証サーバ装置1150は、それぞれ図7のような動作により部分グループ鍵PGK1及びPGK2を生成する。ここで、LR-AKEのシングルモードにおけるグループ鍵GKと、ここで生成される部分グループ鍵PGK1及びPGK2とは同様のものである。そして、認証サーバ装置1100と認証サーバ装置1150は、それぞれ生成した部分グループ鍵PGK1とPGK2とを要求者のクライアント装置へ送信する。そして、要求者のクライアント装置は、生成された複数の部分グループ鍵PGK1及びPGK2を連結又は合成してグループ鍵GKを生成する。そしてそのグループ鍵GKを用いてデータDを暗号化し、ストレージサーバ装置1200へその暗号化されたデータC=EncGKDを格納する。メンバM1~Mnのクライアント装置は、要求者のクライアント装置から、実施形態1と同様にソート結果G’、乱数N、及び場合によっては使用すべきマスター鍵MKを指定する情報とを取得する。そして、LR-AKEのクラスタモードを用いて認証サーバ装置1100及び1150との間に安全な通信路を確立して、それらの情報を認証サーバ装置1100及び1150へ送信し、部分グループ鍵PGK1及びPGK2を取得する。そして、メンバM1~Mnのクライアント装置は、得られた部分グループ鍵PGK1及びPGK2からグループ鍵GKを生成する。そして、ストレージサーバ装置1200に格納された暗号化されたデータCを読み出し、暗号化を解除して、元のデータDを得ることで、データDが要求者とメンバM1~Mnとの間で共有される。なお、要求者又はメンバM1~Mnのクライアント装置と、認証サーバ装置1100及び1150との間では、LR-AKEのクラスタモードを用いたグループ鍵GKの分散管理及びそれに関する値の更新が行われる。ここで、クライアント装置と、認証サーバ装置1100及び1150との間で分散管理される対象は、部分グループ鍵PGKではなく、複数の部分グループ鍵PGKを連結させた値であるグループ鍵GKである。これにより、クライアント装置又は認証サーバ装置1100もしくは認証サーバ装置1150のいずれかが故障した場合などにおいても、2つの装置に分散管理された情報を用いて過去に生成されたグループ鍵を取得することができる。なお、グループ鍵GKの合成は、例えば複数の部分グループ鍵PGK同士の排他的論理和を計算することにより実行されてもよいし、又は、複数の部分グループ鍵PGKを引数とするハッシュ計算により実行されてもよい。また、その他の複数の部分グループ鍵PGKから1つの値を得ることができる計算によって合成後のグループ鍵GKを得てもよい。ただし、要求者とメンバM1~Mnのクライアント装置の間で同一の演算を実行する必要がある。このため、例えば、要求者は、ソート結果G’と乱数Nに加えて、グループ鍵演算方法を指定する情報をメンバM1~Mnに通知してもよい。なお、これは、認証サーバ装置が3つ以上存在し、部分グループ鍵PGKも3つ以上存在しても同様である。このように、本実施形態では、複数の認証サーバ装置を用いてグループ鍵を生成するため、1つの認証サーバ装置からマスター鍵が漏えいしても、グループ鍵GKを復元することはできない。このため、より高いセキュリティを実現することが可能となる。また、新クラスタモードに基づく、グループ間でのデータ共有方式を用いる場合の実施形態も、上記のクラスタモードに基づく場合と同様にして実現することができる。そして、この場合、複数の認証サーバ装置1100及び1150が結託しても、グループ鍵GKを求めることがより困難となるため、さらに高いセキュリティを実現することが可能となる。これまで説明したように、本発明は、クライアント装置または認証サーバ装置から秘密情報が漏えいしても、グループ鍵を秘匿できる特徴を有しながら、グループのメンバのIDや属性に基づいてグループ鍵を柔軟に生成して共有することができる。特に、本発明では、グループ鍵GKは1つまたは複数の認証サーバ装置により分散管理されるため、ストレージサーバ装置1200とメンバのクライアント装置に記憶されたすべての秘密情報が漏えいしても元のデータを復元することはできない。また、メンバの公開鍵の入手や公開鍵証明書の検証などが不要であるため、全体の構成や実装を容易に行うことができる。また、認証サーバ装置は、マスター鍵MKさえ記憶しておくことにより、要求者とメンバM1~Mnとの間で共通のグループ鍵GKを生成することができる。これは、マスター鍵MKを持つオンラインサーバにIDを指定してオンラインでマスター鍵MKを取得するKDCに対しても有効である。<<その他の実施形態>>なお、上述した装置の各機能要素は、専用のハードウェアによって実現されることもできるが、CPUとコンピュータプログラムを用いたソフトウェア処理によって実現されてもよい。すなわち、例えば乱数生成部のように部装置のような用語が用いられているとしても、その実現手段はハードウェアに限定されるものではなく、ソフトウェア処理による手段によっても実装可能である。また、2つ以上の機能要素を1つのハードウェア回路にまとめてもよく、あるいは2つ以上の機能要素をそれぞれサブプログラムとして含んだ1つのプログラムにまとめてもよい。例えば、上述の機能の全てを、プロセッサとメモリとプログラムコードを用いて実現してもよい。さらに、各機能要素をFPGAのようなプログラマブルな回路を用いて実現してもよい。また、その他にも具体的な実施の態様ごとの要求に応じて、適切な実装手段を選択するようにしてもよい。