(57)【特許請求の範囲】
【請求項１】
複数のクライアント装置と、前記複数のクライアント装置の間で情報を暗号化して共有するための共通鍵を生成する鍵生成装置とを含む鍵共有システムであって、
クライアント装置は、
前記情報を共有する１つ以上のクライアント装置を指定する指定情報を取得する取得手段と、
前記指定情報を送信するクライアント側送信手段と、
前記鍵生成装置から、前記情報を暗号化するための共通鍵を受信するクライアント側受信手段と、
を備え、
前記鍵生成装置は、
マスター鍵を記憶する記憶手段と、
前記クライアント装置から、前記指定情報を受信する受信手段と、
前記指定情報をソートするソート手段と、
前記ソート手段でソートされた前記指定情報と、前記マスター鍵とに基づいて、前記共通鍵を生成する生成手段と、
前記共通鍵を前記クライアント装置へ送信する送信手段と、
を備え、
前記指定情報は、その指定情報で指定される他のクライアント装置へ通知され、
前記他のクライアント装置は通知された前記指定情報を前記鍵生成装置へ送信し、
前記鍵生成装置は受信した指定情報と前記マスター鍵とに基づいて前記共通鍵を生成し、生成された共通鍵を当該他のクライアント装置へ送信し、
前記共通鍵は、その共通鍵を復元するための値として、前記クライアント装置および前記他のクライアント装置のそれぞれと前記鍵生成装置との間で、それぞれ分散されて記憶される、
ことを特徴とする鍵共有システム。
【請求項２】
前記鍵共有システムは、複数の鍵生成装置を含み、
前記複数のクライアント装置は、前記複数の鍵生成装置から受信した複数の前記共通鍵を合成して１つの共通鍵を取得する合成手段を備える、
ことを特徴とする請求項１に記載の鍵共有システム。
【請求項３】
前記クライアント装置は、乱数を生成する乱数生成手段をさらに備え、
前記クライアント側送信手段は前記鍵生成装置へさらに乱数を送信し、
前記生成手段は、ソートされた前記指定情報と前記マスター鍵と前記乱数とに基づいて前記共通鍵を生成し、
前記乱数が前記他のクライアント装置へさらに通知され、
前記他のクライアント装置は、前記乱数を前記鍵生成装置へさらに送信し、
前記鍵生成装置は、受信した前記指定情報および前記乱数と前記マスター鍵とに基づいて前記共通鍵を生成し、生成された共通鍵を当該他のクライアント装置へ送信する、
ことを特徴とする請求項１又は２に記載の鍵共有システム。
【請求項４】
前記ソート手段は、前記指定情報で指定されたクライアント装置に、その指定情報を送信したクライアント装置が含まれない場合、当該クライアント装置を指定する情報を当該指定情報に含めてソートし、
前記送信手段は、さらに、前記指定情報を送信したクライアント装置を指定する情報を当該指定情報に含めた情報を、前記クライアント装置へ送信する、
ことを特徴とする請求項１から３のいずれか１項に記載の鍵共有システム。
【請求項５】
前記鍵生成装置は、前記指定情報で指定されたクライアント装置に、その指定情報を送信したクライアント装置が含まれない場合、前記共通鍵を生成しない、
ことを特徴とする請求項１から３のいずれか１項に記載の鍵共有システム。
【請求項６】
前記マスター鍵は、有効期間の異なる複数のマスター鍵を含み、
前記生成手段は、複数のマスター鍵のうち１つを用いて前記共通鍵を生成し、
複数のマスター鍵のうち１つを特定する特定情報が、前記他のクライアント装置へ通知され、
前記他のクライアント装置は、前記特定情報を前記鍵生成装置へさらに送信し、
前記鍵生成装置は、前記特定情報で特定される前記マスター鍵を用いて前記共通鍵を生成し、生成された共通鍵を当該他のクライアント装置へ送信する、
ことを特徴とする請求項１から５のいずれか１項に記載の鍵共有システム。
【請求項７】
複数のクライアント装置の間で情報を暗号化して共有するための共通鍵を生成する鍵生成装置であって、
マスター鍵を記憶する記憶手段と、
クライアント装置から、前記情報を共有する１つ以上のクライアント装置を指定する指定情報を受信する受信手段と、
前記指定情報をソートするソート手段と、
前記ソート手段でソートされた前記指定情報と、前記マスター鍵とに基づいて、前記共通鍵を生成する生成手段と、
前記共通鍵を前記クライアント装置へ送信する送信手段と、
を備え、
前記指定情報は、その指定情報で指定される他のクライアント装置へ通知され、
前記受信手段は、前記他のクライアント装置から、当該他のクライアント装置が通知された前記指定情報を、受信し、
前記生成手段は、受信した指定情報と前記マスター鍵とに基づいて前記共通鍵を生成し、
前記送信手段は、生成された共通鍵を当該他のクライアント装置へ送信し、
前記共通鍵は、その共通鍵を復元するための値として、前記クライアント装置および前記他のクライアント装置のそれぞれと前記鍵生成装置との間で、それぞれ分散されて記憶される、
ことを特徴とする鍵生成装置。
【請求項８】
請求項７に記載の鍵生成装置としてコンピュータを機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の指定されたユーザ間で用いる共通鍵を、安全に共有する技術に関する。
【背景技術】
【０００２】
近年、コンピュータ資源をネットワーク経由でサービスとして提供するクラウドコンピューティングへの関心が高まっている。例えば、ユーザがどこでも自分のデータにアクセスできるクラウドストレージサービスはすでに商用化されている。クラウドストレージサービスには、第三者との間で、またはグループ間で手軽にデータが共有できるという利点がある。一方で、すべてのデータがクラウドサービス提供者の管理下に置かれるため、センシティブなデータのセキュリティ管理を行うことが容易でないという問題がある。
【０００３】
ここで、１人のユーザが、あるｎ人のグループメンバー（Ｍ１，Ｍ２，．．．，Ｍｎ）とデータを共有することについて検討する。ユーザは、共有したいデータＤをグループ鍵ＧＫで共通鍵暗号を用いて暗号化し、その暗号文（Ｃ＝ＥｎｃGK（Ｄ））をクラウドサービス提供者が運用するストレージサーバに保存する。ここで、Ｃ＝ＥｎｃGK（Ｄ）は、グループ鍵ＧＫと共通鍵暗号アルゴリズムとを用いて、データＤを暗号化した暗号文を表す。この場合、ユーザは暗号化に使われたグループ鍵ＧＫを他のメンバーに安全に渡さなければならない。
【０００４】
特許文献１には、秘密情報を分散して保管する方法を用いて、認証局により生成されたグループメンバの秘密鍵を、ストレージサーバとグループメンバのクライアント装置に管理する技術が記載されている。秘密情報を分散して保管することにより、例えばグループメンバが所持する１つのクライアント装置が保管する分散鍵が漏えいしても、暗号化したデータが復元できない。また、特許文献２には、鍵管理サーバを設けてグループごとにグループ鍵を生成し、その鍵をグループメンバの個人鍵で暗号化して配布する方法が記載されている。特許文献３には、ユーザのＩＤに基づいて鍵を生成するＫＰＳにおいて、センタアルゴリズムを情報発信者用と情報受信者用の相異なる二つの秘密アルゴリズムで構成することでメモリ量と計算量を削減している。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００９−１０３９６８号公報
【特許文献２】特開２００６−３０３９９８号公報
【特許文献３】特開平１１−０４６１９０号公報
【非特許文献】
【０００６】
【非特許文献１】Ｈｉｄｅｋｉ  Ｉｍａｉ、ＳｅｏｎｇＨａｎ  Ｓｈｉｎ、Ｋａｚｕｋｕｎｉ  Ｋｏｂａｒａ、“Ｎｅｗ  Ｓｅｃｕｒｉｔｙ  Ｌａｙｅｒ  ｆｏｒ  ＯｖｅｒＬａｙ  Ｎｅｔｗｏｒｋｓ”、Ｊｏｕｒｎａｌ  ｏｆ  Ｃｏｍｍｕｎｉｃａｔｉｏｎｓ  ａｎｄ  Ｎｅｔｗｏｒｋｓ、Ｖｏｌ．１１、Ｎｏ．３、ｐｐ．２１１−２２８、２００９
【非特許文献２】ＬＲ−ＡＫＥ  Ｈｏｍｅｐａｇｅ、ｈｔｔｐ：／／ｗｗｗ．ｒｃｉｓ．ａｉｓｔ．ｇｏ．ｊｐ／ｐｒｏｊｅｃｔ／ＬＲ−ＡＫＥ／
【非特許文献３】恩田  泰則、辛  星漢、古原  和邦、今井  秀樹、“クラウド環境に適したオンラインデータ分散管理方式”、２０１１年暗号と情報セキュリティシンポジウム、２０１１
【発明の概要】
【発明が解決しようとする課題】
【０００７】
特許文献１に記載の技術は、秘密鍵を分散して保管するストレージサーバとグループメンバのクライアント装置からそれぞれの分散鍵が漏えいすると、グループメンバの秘密鍵が復元でき、それを用いてデータが得られるという課題があった。また、グループメンバの公開鍵の入手や公開鍵証明書の検証などにより全体の構成や実装が複雑になるという課題もあった。また、特許文献２に記載の技術は、グループメンバの個人鍵が漏えいすると、暗号化されて配布されたグループ鍵の暗号を解除することができるため、そのグループ鍵で暗号化された元のデータが復元できるという課題があった。また、特許文献３に記載の技術は、ＫＰＳのマスター鍵（秘密アルゴリズム）が漏えいすると、すべてのユーザの鍵が計算できてしまうという課題があった。
【０００８】
本発明は上記課題に鑑みなされたものであり、秘匿性を確保しながら、グループ鍵を柔軟に共有する技術を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記目的を達成するため、本発明による鍵共有システムは、複数のクライアント装置と、前記複数のクライアント装置の間で情報を暗号化して共有するための共通鍵を生成する鍵生成装置とを含む鍵共有システムであって、クライアント装置は、前記情報を共有する１つ以上のクライアント装置を指定する指定情報を取得する取得手段と、前記指定情報を送信するクライアント側送信手段と、前記鍵生成装置から、前記情報を暗号化するための共通鍵を受信するクライアント側受信手段と、を備え、前記鍵生成装置は、マスター鍵を記憶する記憶手段と、前記クライアント装置から、前記指定情報を受信する受信手段と、前記指定情報をソートするソート手段と、前記ソート手段でソートされた前記指定情報と、前記マスター鍵とに基づいて、前記共通鍵を生成する生成手段と、前記共通鍵を前記クライアント装置へ送信する送信手段と、を備え、前記指定情報は、その指定情報で指定される他のクライアント装置へ通知され、前記他のクライアント装置は通知された前記指定情報を前記鍵生成装置へ送信し、前記鍵生成装置は受信した指定情報と前記マスター鍵とに基づいて前記共通鍵を生成し、生成された共通鍵を当該他のクライアント装置へ送信し、前記共通鍵は、その共通鍵を復元するための値として、前記クライアント装置および前記他のクライアント装置のそれぞれと前記鍵生成装置との間で、それぞれ分散されて記憶される。
【発明の効果】
【００１０】
本発明によれば、秘密情報が漏えいしてもグループ鍵を秘匿しながら、グループ鍵を柔軟に生成して共有する鍵共有システム、鍵生成装置、及びプログラムを提供することができる。
【図面の簡単な説明】
【００１１】
【図１】ＬＲ−ＡＫＥのシングルモードの説明図。
【図２】ＬＲ−ＡＫＥのクラスタモードの説明図。
【図３】ＬＲ−ＡＫＥの新クラスタモードの説明図。
【図４】第１の実施形態に係る鍵共有システムを説明する概略図。
【図５】要求者のクライアント装置と認証サーバ装置との機能構成例を示すブロック図。
【図６】要求者のクライアント装置の動作を示すフローチャート。
【図７】認証サーバ装置の動作を示すフローチャート。
【図８】メンバのクライアント装置の動作を示すフローチャート。
【図９】第２の実施形態に係る鍵共有システムを説明する概略図。
【発明を実施するための形態】
【００１２】
以下、添付図面を参照して本発明の実施の形態を詳細に説明する。なお、本発明は、非特許文献２に記載のＬＲ−ＡＫＥ（Ｌｅａｋａｇｅ−Ｒｅｓｉｌｉｅｎｔ  Ａｕｔｈｅｎｔｉｃａｔｅｄ  Ｋｅｙ  Ｅｘｃｈａｎｇｅ）のシングルモード、クラスタモード、新クラスタモードに基づく。まず、背景知識としてＬＲ−ＡＫＥのシングルモード、クラスタモード、新クラスタモードについて説明する。なお、ＬＲ−ＡＫＥに基づき、保護すべきデータから、このデータを復元するための複数の値を生成し、生成した値を分散して管理する構成は、非特許文献１に記載されている。
【００１３】
（ＬＲ−ＡＫＥのシングルモード）
図１は、非特許文献１に記載のＬＲ−ＡＫＥのシングルモードを説明する図であり、システムは、クライアント装置１と、サーバ装置２とを備えている。クライアント装置１の記憶部１１は、クライアント情報１１０を保存しており、サーバ装置２の記憶部２１は、クライアント情報１１０の対であるサーバ情報２１０を保存している。
【００１４】
図１に示すように、クライアント情報１１０は、アカウント情報１１１、保護対象であるデータＤＫを復元するための値ＣＤＫ及び公開鍵ＰＫを示す情報を含んでいる。また、サーバ情報２１０は、アカウント情報１１１の対である検証情報２１１、保護対象であるデータＤＫを復元するための値であり、値ＣＤＫの対である値ＳＤＫ、及び、公開鍵ＰＫの対である秘密鍵ＳＫを示す情報を含んでいる。なお、値ＣＤＫ及び値ＳＤＫは、データＤＫ及びクライアント装置１のユーザのパスワードに基づき生成されており、データＤＫは、値ＣＤＫ及び値ＳＤＫ並びにクライアント装置１のユーザのパスワードから復元可能である。
【００１５】
さらに、アカウント情報１１１は、ユーザ識別子及びアカウント情報のインデックスとして使用されるランダム値ｐｃｉｄと、秘密値ｃｓを示す情報を含んでいる。また、検証情報２１１は、ランダム値ｐｃｉｄのハッシュ値であるｈｐｃｉｄと、秘密値ｃｓとクライアント装置１のユーザのパスワードに基づき生成した秘密値ｓｓを示す情報を含んでいる。
【００１６】
ユーザがクライアント装置１にパスワードを入力すると、クライアント装置１の認証部１２は、パスワード、ランダム値ｐｃｉｄ、秘密値ｃｓ及び公開鍵ＰＫに基づき値ｍｓを生成し、値ｍｓから認証データを生成する。そして、生成した認証用データをサーバ装置２に送信する。サーバ装置２の認証部２２は、ハッシュ値ｈｐｃｉｄ、秘密値ｓｓ及び秘密鍵ＳＫに基づきクライアント装置１と同じ値ｍｓを生成し、この値に基づきクライアント装置１から受信する認証データを検証する。クライアント装置１の認証成功後、クライアント装置１の通信処理部１３とサーバ装置２の通信処理部２３は、それぞれ、値ｍｓからクライアント装置１とサーバ装置２間の通信を暗号化するための通信用暗号鍵を生成する。つまり、クライアント装置１及びサーバ装置２との間に安全な通信路が確立される。
【００１７】
サーバ装置２が、この安全な通信路を使用して、クライアント装置１に値ＳＤＫを送信することで、クライアント装置１は、ユーザのパスワード、値ＳＤＫ及び値ＣＤＫに基づきデータＤＫを安全に復元することができる。
【００１８】
さらに、非特許文献１に記載のシステムでは、クライアント装置１とサーバ装置２による認証が成功する度に、情報生成更新部１４は、値ｍｓを使用して秘密値ｃｓ及び値ＣＤＫを更新し、新たなランダム値を生成してランダム値ｐｃｉｄを更新する。また、情報生成更新部１４は、更新後のランダム値ｐｃｉｄから新たなハッシュ値ｈｐｃｉｄを計算してサーバ装置２に送信する。また、サーバ装置２の情報生成更新部２４は、値ｍｓを使用して秘密値ｓｓ及び値ＳＤＫを更新し、また、ハッシュ値ｈｐｃｉｄを、クライアント装置１から受信する値に更新する。よって、データＤＫを復元するためには、同じ回に生成された値ＳＤＫ及び値ＣＤＫを入手する必要がある。値ＳＤＫ及び値ＣＤＫは分散して管理されており、かつ、認証の都度更新されるため、データＤＫは安全に保護される。
【００１９】
なお、クライアント情報１１０及びサーバ情報２１０の初期値については、いずれかの装置で両方を生成し、ネットワークではなく、外部記憶装置を利用してそれぞれの装置に保存する方法であってもよい。なお、非特許文献１は、これらを生成するための初期化プロトコルを開示しており、クライアント装置１とサーバ装置２が初期化プロトコルを実行する。
【００２０】
（ＬＲ−ＡＫＥのクラスタモード）
図２は、非特許文献１に記載のＬＲ−ＡＫＥのクラスタモードを説明する図であり、システムは、クライアント装置３と、サーバ装置４及び５を備えている。なお、図２においては、説明を簡略化するため、各装置に保存されている情報のみを表示している。図２において、クライアント装置３が保持するアカウント情報３１１ａを含むクライアント情報３１０ａ及びサーバ装置４が保持する検証情報４１１ａを含むサーバ情報４１０ａは、それぞれ、図１のクライアント装置１のクライアント情報１１０及びサーバ装置２のサーバ情報２１０に対応する。つまり、クライアント装置３は、サーバ装置４の認証を受けた後に、サーバ装置４から値ＳＤＫ１を取得することでデータＤＫを復元することができる。
【００２１】
同様に、クライアント装置３が保持するアカウント情報３１１ｂを含むクライアント情報３１０ｂ及びサーバ装置５が保持する検証情報５１１ｂを含むサーバ情報５１０ｂは、それぞれ、図１のクライアント装置１のクライアント情報１１０及びサーバ装置２のサーバ情報２１０に対応する。つまり、クライアント装置３は、サーバ装置５の認証を受けた後に、サーバ装置５から値ＳＤＫ２を取得することでデータＤＫを復元することができる。
【００２２】
さらに、サーバ装置５が保持するアカウント情報５１１ｃを含むクライアント情報５１０ｃ及びサーバ装置４が保持する検証情報４１１ｃを含むサーバ情報４１０ｃは、それぞれ、図１のクライアント装置１のクライアント情報１１０及びサーバ装置２のサーバ情報２１０に対応する。つまり、サーバ装置５は、サーバ装置４の認証を受けた後に、サーバ装置４から値ＳＤＫ３を取得することでデータＤＫを復元することができる。
【００２３】
図２に示すクラスタモードにおいては、クライアント装置３、サーバ装置４及びサーバ装置５のいずれか１つが故障となったり、各装置を接続する伝送路の２つが障害となったりしてもユーザは、データＤＫを復元することが可能である。
【００２４】
（ＬＲ−ＡＫＥの新クラスタモード）
図３は、非特許文献３に記載のＬＲ−ＡＫＥの新クラスタモードを説明する図であり、システムは、クライアント装置６、サーバ装置７並びに８、及びクライアント装置６に接続可能な外部の記憶装置６２０を備える。なお、図３においては、説明を簡略化するため、各装置に保存されている情報のみを表示している。また、図３のクライアント装置６、サーバ装置７及び８の相互の関係は、図２のクライアント装置３、サーバ装置４及び５の相互の関係と同様である。すなわち、例えば、クライアント装置６は、サーバ装置７の認証を受けた後に、サーバ装置７から値ＳＤＫ１を取得することでデータＤＫを復元することができる。
【００２５】
また、新クラスタモードでも、クライアント装置６とサーバ装置７との間、及びクライアント装置６とサーバ装置８との間では、ユーザが記憶する短いパスワードを用いて認証やデータＤＫの復元などを実行する。ただし、サーバ装置７とサーバ装置８との間では、全数探索が困難となる程度の十分長い第１のパスワードを用いる。そして、クライアント装置６は、アカウント情報６１０ｂに含めて第１のパスワードを記憶する。また、クライアント装置６は、サーバ装置８と通信して、バックアップ用のアカウント情報６１１ｚを含むクライアント情報６１０ｚと、検証情報８１１ｚを含むサーバ情報８１０ｚの対の生成を行う。サーバ情報８１０ｚは、サーバ装置８の記憶部に保存されるが、クライアント情報６１０ｚは、クライアント装置６ではなく、クライアント装置６に接続可能な外部の記憶装置６２０に保存される。なお、クライアント情報６１０ｚは、第１のパスワードを含んでいる。
【００２６】
新クラスタモードでは、例えば、クライアント装置６が故障したとしても、記憶装置６２０のクライアント情報６１０ｚを使用して、サーバ装置８のサーバ情報８１０ｚを使用した認証を受けることで、サーバ装置８とは安全な通信路を確保することができる。この安全な通信路によりクライアント情報８１０ｃをサーバ装置８から安全に取得することができるため、クライアント装置６は、サーバ装置７と認証を行うことで安全にデータＤＫを復元することが可能となる。つまり、クライアント装置６が破損したとしても、サーバ装置８の設置場所に出向くことなく、これら情報の復旧を行うことができる。
【００２７】
＜＜実施形態１＞＞
続いて、ＬＲ−ＡＫＥのシングルモードに基づく、グループ間でのデータ共有方式を用いる場合の本発明の実施形態について説明する。
【００２８】
（システム構成）
図４は実施形態１の鍵共有システムの構成を示す概略図である。図４においては、グループ鍵ＧＫの生成を要求するユーザを要求者Ｕと表し、要求者ＵがデータＤを共有したいグループメンバをそれぞれメンバＭ１〜メンバＭｎと表す。要求者Ｕのクライアント装置１０００は、メンバＭ１〜Ｍｎを特定する情報であるグループメンバ集合Ｇ、自らの識別子Ｕ及び乱数Ｎを認証サーバ装置１１００に送信し、グループ鍵ＧＫの生成を要求する。ここで、グループ鍵ＧＫとは、要求者ＵとメンバＭ１〜Ｍｎとの間で共通鍵暗号を用いてデータＤを共有するために用いる暗号用の鍵である。認証サーバ装置は、受信した情報と、自らが保持するマスター鍵ＭＫとを用いて鍵生成を実行し、生成したグループ鍵ＧＫを要求者のクライアント装置１０００へ送信する。そして、要求者は、受信したグループ鍵ＧＫを用いてデータＤを暗号化し、ストレージサーバ装置１２００へその暗号化されたデータ（Ｃ＝ＥｎｃＧＫ（Ｄ））を格納する。
【００２９】
メンバＭ１のクライアント装置１０５０〜メンバＭｎのクライアント装置１０６０は、グループメンバを特定する情報Ｇ’と乱数Ｎとを要求者Ｕのクライアント装置１０００から受信する。メンバＭ１のクライアント装置１０５０〜メンバＭｎのクライアント装置１０６０は、受信した情報を、認証サーバ装置１１００へ送信してグループ鍵ＧＫの生成を要求することにより、そのグループ鍵ＧＫを取得する。そして、ストレージサーバ装置１２００に格納された暗号化されたデータＣを読み出し、暗号化を解除して、元のデータＤを得ることで、データＤが要求者とメンバＭ１〜Ｍｎとの間で共有される。以下では、これらの装置と、その動作について詳細に説明する。
【００３０】
（装置構成）
図５は、要求者のクライアント装置１０００と、認証サーバ装置１１００の機能構成例を示すブロック図である。クライアント装置１０００は、例えば、通信処理部１００１、グループメンバ集合取得部１００２、乱数生成部１００３、記憶部１００４、及び暗号化部１００５を備える。認証サーバ装置１１００は、例えば、通信処理部１１０１、判定部１１０２、ソート部１１０３、グループ鍵生成部１１０４、記憶部１１０５、及びマスター鍵生成部１１０６とを備える。なお図５においては、ＬＲ−ＡＫＥのシングルモードを実行するための機能部については図示を省略しているが、クライアント装置１０００及び認証サーバ装置１１００は、例えば、それぞれ図１のクライアント装置１及びサーバ装置２で示す機能をも備える。また、クライアント装置１０００と認証サーバ装置１１００の間で送受信するメッセージは、すべてＬＲ−ＡＫＥのシングルモードにより保護される。
【００３１】
なお、図５においては、メンバのクライアント装置の構成図については省略しているが、メンバＭ１のクライアント装置１０５０〜メンバＭｎのクライアント装置１０６０も要求者のクライアント装置１０００と同様の構成を有する。そして、メンバＭ１のクライアント装置１０５０やメンバＭｎのクライアント装置１０６０も、場合によっては、グループ鍵ＧＫの要求者として動作することができる。
【００３２】
（クライアント装置の装置構成）
クライアント装置１０００において、通信処理部１００１は、様々な信号やメッセージの送受信を実行する。例えば、通信処理部１００１は、要求者の識別子Ｕ、データＤを共有するメンバを指定する指定情報であるグループメンバ集合Ｇ、及び乱数Ｎを含むメッセージを認証サーバ装置１１００へ送信し、グループ鍵ＧＫを認証サーバ装置１１００から受信する。また、通信処理部１００１は、ストレージサーバ装置１２００への、後述する暗号化部１００５が暗号化したデータＣの格納を実行してもよい。
【００３３】
グループメンバ集合取得部１００２は、例えば要求者（ユーザ）の入力により、データＤを共有するグループメンバ集合Ｇを取得する。グループメンバ集合Ｇは、例えば、識別子（ＩＤ）やメールアドレスなどの、メンバＭ１〜Ｍｎを特定する情報の集合である。乱数生成部１００３は、認証サーバ装置１１００においてグループ鍵ＧＫの生成に用いる乱数Ｎを生成する。乱数Ｎは同じグループ中で異なるグループ鍵ＧＫを生成する場合などに用いることができる。なお、同じグループ中では異なるグループ鍵ＧＫを生成する必要がない場合などは、認証サーバ装置１１００へ乱数Ｎを送信する必要がないため、この場合は乱数生成部１００３を省略することもできる。記憶部１００４は、例えばメモリなどの記憶装置であり、要求者の識別子ＵやデータＤを格納する。暗号化部１００５は、認証サーバ装置１１００が生成したグループ鍵ＧＫを用いて、データＤを暗号化する。
【００３４】
なお、要求者の識別子Ｕをクライアント装置から認証サーバ装置１１００へ送信すると説明したが、例えばＬＲ−ＡＫＥの認証の時点で、認証サーバ装置１１００がクライアント装置の識別子、すなわち識別子Ｕを取得できる場合は、この送信は不要である。
【００３５】
（認証サーバ装置の装置構成）
認証サーバ装置１１００の通信処理部１１０１は、クライアント装置１０００の通信処理部１００１と同様に、様々な信号やメッセージの送受信を実行する。例えば、通信処理部１１０１は、要求者の識別子Ｕ、グループメンバ集合Ｇ、及び乱数Ｎを含むメッセージをクライアント装置１０００から受信し、グループ鍵ＧＫをクライアント装置１０００へ送信する。判定部１１０２は、要求者の識別子Ｕがグループメンバ集合Ｇに含まれているかを判定し、含まれていない場合は、例えば、グループメンバ集合Ｇに要求者の識別子Ｕを加えた集合Ｇ＋Ｕを出力する。また、判定部１１０２は、要求者の識別子Ｕがグループメンバ集合Ｇに含まれている場合は、グループメンバ集合Ｇをそのまま出力する。なお、判定部１１０２は、要求者の識別子Ｕがグループメンバ集合Ｇに含まれていない場合は、グループ鍵ＧＫを生成しないことを決定して、何も出力しないようにしてもよい。また、グループ鍵ＧＫを生成しない旨の情報を含むメッセージを生成し、そのメッセージを通信処理部１１０１を介してクライアント装置１０００へ送信してもよい。
【００３６】
ソート部１１０３は、判定部が出力したグループメンバ集合Ｇ又は集合Ｇ＋Ｕをソートする。ソートすることにより、グループメンバ集合Ｇ又は集合Ｇ＋Ｕにおいて、複数のグループメンバの識別子がどのような順序で含まれていたとしても、同一のグループメンバ集合に対しては同一のソート結果Ｇ’が得られるようになる。これにより、後述するグループ鍵生成部１１０４に入力される値を一意に定めることが可能となる。
【００３７】
なお、このソート結果Ｇ’は、通信処理部１１０１を介してクライアント装置１０００へ送信されてもよい。これは、要求者の識別子Ｕがグループメンバ集合Ｇに含まれていなかった場合に特に有効である。すなわち、グループメンバ集合Ｇに要求者の識別子Ｕが含まれない状態でそのグループメンバ集合ＧがメンバＭ１〜Ｍｎに通知されると、メンバＭ１〜Ｍｎは、そのグループメンバ集合Ｇを用いて要求者Ｕとは異なるグループ鍵ＧＫを受信する場合がある。これは、メンバＭ１〜Ｍｎはグループメンバ集合Ｇに要求者の識別子Ｕが含まれていないことを知らない場合に起こる。この場合、認証サーバ装置１１００においてグループ鍵ＧＫの生成に用いるソート結果Ｇ’は、要求者に対しては識別子Ｕを含み、メンバＭ１〜Ｍｎに対しては識別子Ｕを含まない。このため、生成されるグループ鍵ＧＫはそれぞれ異なり、データの共有ができなくなってしまう。これに対し、要求者のクライアント装置１０００へソート結果Ｇ’を送信し、要求者が、グループメンバ集合Ｇではなくソート結果Ｇ’をメンバＭ１〜Ｍｎと共有することにより、同一のグループ鍵ＧＫを得ることが可能となる。
【００３８】
記憶部１１０５は、例えば、メモリなどの記憶装置であり、マスター鍵ＭＫを記憶する。マスター鍵ＭＫは、マスター鍵生成部１１０６が生成する。なお、マスター鍵ＭＫは所定の有効期限を有していてもよく、マスター鍵生成部１１０６は、所定の有効期限が到来すると新しいマスター鍵ＭＫを生成するようにしてもよい。また、記憶部１１０５は、ある時点において複数の有効なマスター鍵ＭＫを記憶してもよい。例えば、記憶部１１０５は、生成時が１週間ずつずれた、有効期間が２週間のマスター鍵ＭＫを２つ記憶しておいてもよい。複数のマスター鍵ＭＫが存在する場合、後述のグループ鍵生成部１１０４は、そのいずれかを用いてグループ鍵ＧＫを生成する。
【００３９】
グループ鍵生成部１１０４は、ソート結果Ｇ’と、乱数Ｎと、記憶部１１０５に記憶されたマスター鍵ＭＫとを用いて、グループ鍵ＧＫを生成する。グループ鍵生成部１１０４は、生成関数として例えばＨＭＡＣ関数を使う場合、グループ鍵ＧＫを、次のように計算する。
【００４０】
ＧＫ＝ＨＭＡＣＭＫ（Ｎｏｎｃｅ：Ｎ｜｜ＩＤ：Ｕ｜｜ＩＤ：Ｍ１｜｜ＩＤ：Ｍ２｜｜．．．｜｜ＩＤ：Ｍｎ｜｜ＡＴ：ａｔｔｒｉｂｕｔｅ１｜｜．．．｜｜ＡＴ：ａｔｔｒｉｂｕｔｅｎ）
ここで、Ｎｏｎｃｅ：、ＩＤ：、ＡＴ：はその後の文字列の種類を表す識別子であり、｜｜は連結を表すが、単に文字列を連結するのではなく、セパレータシンボルを挟んで連結することを意味する。セパレータシンボルはＮ、Ｕ、Ｍ１、ａｔｔｒｉｂｕｔｅ１などと識別可能な文字又は文字列であり、例えばこれらの変数で使用することが許されない予約語である。なお、グループ鍵生成部１１０４は、ＨＭＡＣ関数の代わりにＫＤＦ関数やハッシュ関数などの計算を用いてグループ鍵ＧＫを生成してもよい。
【００４１】
なお、生成されたグループ鍵ＧＫは、通信処理部１１０１を介してクライアント装置へ送信されるが、この通信だけ、ＬＲ−ＡＫＥのシングルモードを用いた安全な通信路を介して行われてもよい。このとき、マスター鍵ＭＫが複数存在する場合は、どのマスター鍵ＭＫを用いたかを特定する特定情報をクライアント装置へ送信する。
【００４２】
なお、グループ鍵ＧＫの記憶においては、グループ鍵ＧＫをそのままクライアント装置１０００に記憶させるのではなく、例えば、グループ鍵ＧＫを、値ＣＧＫ０、ＳＧＫ０として分散させる。そして、クライアント装置１０００はＣＧＫ０を、認証サーバ装置１１００はＳＧＫ０をそれぞれ記憶する。このため、クライアント装置１０００がグループ鍵ＧＫを再度取得するには、パスワードの入力により、ＬＲ−ＡＫＥのシングルモードを用いた安全な通信路を介して、認証サーバ装置１１００からＳＧＫ０を取得することが必要となる。
【００４３】
なお、上述の説明では、グループメンバ集合Ｇを識別子の集合としたが、グループメンバ集合Ｇは、データＤを共有したいユーザの属性に関する情報であってもよい。属性に関する情報とは、例えば、年齢や男女、所属部署、または所定のメーリングリストに加入しているか否か、などを含む。要求者は、例えば、グループメンバ集合Ｇにおいて、「１８歳以上」、「女性」、「総務部」などの少なくとも１つの属性を指定する。グループメンバ集合Ｇとして属性を用いる場合、判定部１１０２は、要求者がその属性に含まれない場合は、グループ鍵ＧＫの生成をしないことを決定し、何も出力しない。また、ソート部１１０３は、グループメンバ集合Ｇに複数の属性の情報が含まれている場合、その情報をソートする。また、グループメンバ集合Ｇは、識別子と属性の情報とを組み合わせた情報であってもよい。なお、グループメンバ集合Ｇの値が、識別子であるか、属性の情報であるか、それらの組み合わせであるか、などを認証サーバ装置１１００が判定することができるように、クライアント装置はメッセージにこれらを識別するコードを含めてもよい。
【００４４】
（要求者のクライアント装置の動作）
続いて、要求者のクライアント装置１０００の動作について、図６を参照して説明する。図６は、クライアント装置１０００の動作を示すフローチャートである。まず、要求者は、ＬＲ−ＡＫＥのシングルモードを用いた安全な通信路の確立のためにパスワードを入力する（Ｓ６０１）。そして、クライアント装置１０００は、認証用サーバ装置との間の安全な通信路を確立しようとする（Ｓ６０２）。具体的には、クライアント装置は、パスワード、ランダム値ｐｃｉｄ、秘密値ｃｓ、及び公開鍵ＰＫに基づいて値ｍｓを生成し、値ｍｓを用いて認証用データを生成し、その認証用データを認証サーバ装置１１００へ送信する。そして、認証サーバ装置１１００は、ハッシュ値ｈｐｃｉｄ、秘密値ｓｓ、及び秘密鍵ＳＫに基づいて、クライアント装置１０００と同じ値ｍｓを生成し、この鍵に基づいて認証用データを検証することによりクライアント装置１０００を認証する。認証が成功すると、クライアント装置１０００と認証サーバ装置１１００は、通信を暗号化するための通信用暗号鍵を生成し、安全な通信路を確立する。
【００４５】
クライアント装置は、パスワードを間違えるなど、通信路の確立に失敗すると（Ｓ６０３でＮｏ）、再度パスワードの入力（Ｓ６０１）へ戻る。なお、通信路の確立に所定回数連続で失敗すると、パスワードの入力をロックし、ユーザからの入力を受け付けないようにしてもよい。一方、通信路の確立に成功すると（Ｓ６０３でＹｅｓ）、クライアント装置は、ユーザから、データＤを共有するグループメンバの入力を受け付け、そのグループメンバを指定する指定情報であるグループメンバ集合Ｇを取得する（Ｓ６０４）。そして、乱数生成部１００３は、乱数Ｎを生成する（Ｓ６０５）。なお、Ｓ６０４とＳ６０５は、実行する順序が逆であってもよく、また、同時に実行されてもよい。また、同一のグループメンバに対して、異なるグループ鍵ＧＫを生成する必要がない場合などは、乱数Ｎの生成（Ｓ６０５）を省略してもよい。その場合、以下の処理では、乱数Ｎの代わりに定数を用いてもよいし、乱数Ｎの送受信を行わないようにしてもよい。
【００４６】
通信処理部１００１は、グループメンバ集合Ｇと乱数Ｎが揃うと、それに識別子Ｕを加えたメッセージを生成し、そのメッセージを認証サーバ装置１１００へ送信する（Ｓ６０６）。なお、識別子Ｕは、Ｓ６０２の安全な通信路の確立の時点で認証サーバ装置１１００がクライアント装置を認識できるため、メッセージに含めなくてもよい。その後、通信処理部１００１は、認証サーバ装置１１００からメッセージを受信する（Ｓ６０７）。そして、そのメッセージがグループ鍵ＧＫを含んでいた場合（Ｓ６０８でＹｅｓ）、データＤを暗号化する。そして、受信したソート結果Ｇ’又はグループ集合Ｇもしくは集合Ｇ＋Ｕとその暗号化したデータＣとを関連付けてにストレージサーバ装置１２００へ格納する（Ｓ６０９）。
【００４７】
そして、受信したソート結果Ｇ’又はグループ集合Ｇもしくは集合Ｇ＋Ｕと、Ｓ６０５で生成した乱数Ｎとを、メンバＭ１〜Ｍｎのクライアント装置に通知し（Ｓ６１０）、処理を終了する。なお、認証サーバ装置１１００からグループ鍵ＧＫの生成に使用したマスター鍵ＭＫを示す情報を受信していた場合は、要求者のクライアント装置はメンバＭ１〜Ｍｎのクライアント装置へこの情報も通知する。また、グループ鍵ＧＫの生成に使用したマスター鍵ＭＫを示す情報を通知する場合は、同時に、そのマスター鍵ＭＫの有効期限以前のグループ鍵ＧＫを要求できる期限を通知してもよい。メンバＭ１〜Ｍｎがマスター鍵ＭＫの有効期限以降のタイミングでグループ鍵ＧＫを要求すると、マスター鍵ＭＫが更新されているため、要求者とメンバＭ１〜Ｍｎとで異なるグループ鍵ＧＫを取得することとなるからである。一方、受信したメッセージがグループ鍵ＧＫを含んでいない場合（Ｓ６０８でＮｏ）、そのまま処理を終了する。
【００４８】
上述のように、要求者の識別子Ｕと、乱数Ｎとは、必ずしも認証サーバ装置１１００へ送信される必要はない。すなわち、クライアント装置１０００は、グループメンバ集合Ｇは必ず認証サーバ装置１１００へ送信し、場合によって、要求者の識別子Ｕや乱数Ｎを同時に送信する。
【００４９】
なお、グループ鍵はクライアント装置と認証サーバ装置１１００との間で、それぞれＣＧＫ、ＳＧＫとして分散して保存される。クライアント装置においては、認証が成功するたびに、値ｍｓを用いてＣＧＫと秘密値ｃｓとが更新され、新しいランダム値を生成されることによりランダム値ｐｃｉｄが更新される。また、更新後のｐｃｉｄからハッシュ値ｈｐｃｉｄが計算され、認証サーバ装置１１００に送信する。認証サーバ装置１１００は、値ｍｓを用いて秘密値ｓｓと値ＳＧＫとを更新し、さらに、受信したｈｐｃｉｄによりハッシュ値ｈｐｃｉｄを更新する。このように、分散管理および値の更新により、グループ鍵ＧＫは安全に保護される。
【００５０】
（認証サーバ装置の動作）
続いて、認証サーバ装置１１００の動作について、図７を参照して説明する。図７は、認証サーバ装置１１００の動作を示すフローチャートである。認証サーバ装置１１００は、まず、クライアント装置１０００から、識別子Ｕ、グループメンバ集合Ｇ、及び乱数Ｎを含むメッセージを受信する（Ｓ７０１）。続いて、判定部１１０２は、識別子Ｕがグループメンバ集合Ｇに含まれているかを判定する（Ｓ７０２）。すなわち、グループメンバ集合Ｇによって、要求者が指定されるかを判定する。そして、識別子Ｕがグループメンバ集合Ｇに含まれていない場合（Ｓ７０２でＮｏ）は、グループメンバ集合Ｇに識別子Ｕを追加した集合Ｇ＋Ｕを出力する（Ｓ７０３）。また、識別子Ｕがグループメンバ集合Ｇに含まれている場合（Ｓ７０２でＹｅｓ）は、グループメンバ集合Ｇをそのまま出力する。なお、識別子Ｕがグループメンバ集合Ｇに含まれていない場合（Ｓ７０２でＮｏ）には、そのまま処理を終了し、グループ鍵ＧＫの生成を行わないようにしてもよい。特に、グループメンバ集合Ｇが属性で記述されていた場合に、識別子Ｕが示す属性が、グループメンバ集合Ｇとして記述されている属性に含まれていない場合は、そのまま処理を終了することが望ましい。グループメンバ集合Ｇとして記述されている属性に識別子Ｕが示す属性を加えると、ユーザが意図しない範囲までデータＤが共有されてしまうからである。
【００５１】
続いて、ソート部１１０３は、出力されたグループメンバ集合Ｇまたは集合Ｇ＋Ｕをソートし、ソート結果Ｇ’を出力する（Ｓ７０４）。これは、グループ鍵生成部１１０４に対して、同じ内容のグループメンバ集合Ｇまたは集合Ｇ＋Ｕに対して一意に定まる文字列を与えることを目的としている。グループ鍵生成部１１０４は、ソート結果Ｇ’と、乱数Ｎと、マスター鍵ＭＫとを用いてグループ鍵ＧＫを生成する（Ｓ７０５）。なお、マスター鍵ＭＫが複数存在する場合で、グループ鍵ＧＫの生成に使用するマスター鍵ＭＫを指定されている場合は、その、マスター鍵を用いてグループ鍵ＧＫを生成する。なお、マスター鍵ＭＫが複数存在する場合で、グループ鍵ＧＫの生成に使用するマスター鍵ＭＫを指定されていない場合は、所定のルールで使用するマスター鍵ＭＫを選定する。
【００５２】
マスター鍵ＭＫは、要求者に対するグループ鍵ＧＫの生成と、要求者が指定するメンバＭ１〜Ｍｎに対するグループ鍵ＧＫの生成の両方に用いられる。そして、異なるマスター鍵ＭＫを用いると、ソート結果Ｇ’や乱数Ｎが同一であっても異なるグループ鍵ＧＫが生成される。このため、要求者がグループ鍵ＧＫの生成を要求した時点から、メンバＭ１〜Ｍｎがグループ鍵ＧＫを要求するための所定の期間を確保できるように、マスター鍵ＭＫの有効期限までに所定の期間が残っていることが望ましい。したがって、クライアント装置１０００から使用するマスター鍵ＭＫを特定する特定情報を受信していない場合、認証サーバ装置１１００は、例えば、有効期限が最も遅く到来するマスター鍵ＭＫを使用するマスター鍵ＭＫとして選定する。具体的には、例えば、認証サーバ装置１１００は、生成されたタイミングが1週間ずれた、有効期間が２週間のマスター鍵ＭＫを２つ保持している場合、２つのマスター鍵ＭＫのうち、有効期間が１週間以上残っているものをグループ鍵ＧＫの生成に用いる。
【００５３】
最後に、通信処理部１１０１は、生成されたグループ鍵ＧＫとソート結果Ｇ’とを、クライアント装置へ安全な通信路を介して送信する（Ｓ７０６）。なお、通信処理部１１０１は、マスター鍵ＭＫが複数存在する場合は、同時に、グループ鍵ＧＫの生成に使用したマスター鍵ＭＫを特定する特定情報を送信する。この特定情報とは、例えば、２つのマスター鍵ＭＫが存在する場合は、そのどちらを用いたかを示す１ビットの情報であってもよい。
【００５４】
なお、ソート結果Ｇ’の通知は、クライアント装置がメンバＭ１〜Ｍｎに最終的なグループメンバ集合Ｇを通知するための情報を提供するものである。メンバＭ１〜Ｍｎは、そのグループメンバ集合Ｇを用いて、認証サーバ装置１１００へグループ鍵を要求する。ここで、認証サーバ装置１１００は、メンバＭ１〜Ｍｎからのグループ鍵ＧＫ要求に対しても、グループメンバ集合Ｇのソートを行う。このため、通信処理部１１０１は、ソート結果Ｇ’に代えて、判定部から出力されたグループメンバ集合Ｇまたは集合Ｇ＋Ｕのいずれかを送信してもよい。識別子Ｕがグループメンバ集合Ｇに含まれていないとき（Ｓ７０２でＮｏ）にそのまま処理を終了する場合は、ソート結果Ｇ’やグループ集合Ｇ、または集合Ｇ＋Ｕを送信しないでもよい。これは、この場合は、クライアント装置からメンバＭ１〜Ｍｎへ提供する最終的なグループメンバ集合Ｇと、認証サーバ装置１１００へ送信する初期のグループメンバ集合Ｇとに違いがないことが明らかだからである。
【００５５】
（グループのメンバのクライアント装置の動作）
続いて、メンバＭｊ（１≦ｊ≦ｎ）のクライアント装置の動作について、図８を参照して説明する。図８は、メンバＭｊのクライアント装置の動作を示すフローチャートである。メンバＭｊのクライアント装置は、ソート結果Ｇ’と乱数Ｎとを、要求者のクライアント装置１０００から受信する（Ｓ８０１）。なお、要求者のクライアント装置１０００がグループ鍵ＧＫの生成に使用したマスター鍵ＭＫを特定する特定情報を認証サーバ装置１１００から受信していた場合は、メンバＭｊのクライアント装置はこの情報も受信する。その後のグループ鍵ＧＫを取得する処理は、要求者のクライアント装置と同様に行うため、同様の処理については同様の番号を付して説明を省略する（Ｓ６０１〜Ｓ６０３、Ｓ６０６〜Ｓ６０８）。なお、Ｓ６０６では、要求者の識別子Ｕに代えてメンバの識別子Ｍｊを、そして、グループメンバ集合Ｇとしてソート結果Ｇ’を、それぞれ送信する。さらに、Ｓ６０６では、要求者のクライアント装置からグループ鍵ＧＫの生成に使用したマスター鍵ＭＫを示す情報を受信した場合は、その情報も送信する。なお、要求者のクライアント装置１０００が乱数Ｎとの送信を省略している場合は、乱数Ｎとの送信を省略してもよい。同様に、認証サーバ装置１１００がＬＲ−ＡＫＥによってメンバＭｊを特定できる場合は、識別子Ｍｊを送信しなくてもよい。
【００５６】
認証サーバ装置１１００は、このメッセージに基づいて、要求者のクライアント装置に対してグループ鍵ＧＫを発行したのと同様に、メンバＭｊのクライアント装置に対してもグループ鍵ＧＫを発行する。ここで、要求者のクライアント装置に対するグループ鍵ＧＫの発行と、メンバＭｊのクライアント装置に対するグループ鍵ＧＫの発行とでは、グループ鍵ＧＫの生成に用いる値Ｇ’、Ｎ、ＭＫはすべて等しいものとなる。この結果、同一のグループ鍵が要求者とメンバＭｊとに対して発行されることとなる。
【００５７】
グループ鍵ＧＫを受信したメンバＭｊのクライアント装置は、続いて、ストレージサーバ装置１２００へアクセスする（Ｓ８０２）。そして、ストレージサーバ装置１２００に格納されている暗号化されたデータＣに関連付けて保存されているソート結果Ｇ’又はグループメンバ集合Ｇもしくは集合Ｇ＋Ｕのうち、自らが含まれるものを探索する。なお、この探索は、Ｓ８０１で受信したＧ’を用いて、そのＧ’と同一のＧ’に関連付けられている暗号化されたデータＣを探索するようにしてもよい。そして、自らが含まれているソート結果Ｇ’又はグループメンバ集合Ｇもしくは集合Ｇ＋Ｕに関連する暗号化されたデータＤを取得する（Ｓ８０３）。そして、受信したグループ鍵ＧＫを用いて暗号化解除したデータを取得する（Ｓ８０４）。なお、取得されたグループ鍵ＧＫは、メンバＭｊと認証サーバ装置１１００との間で、分散管理および値を更新されることによって安全に保護される。
【００５８】
このようにして、要求者とメンバＭ１〜Ｍｎとは、公開してもよい情報であるグループメンバ集合Ｇと乱数Ｎとを共有するだけで、共通のグループ鍵を安全に共有することができる。なお、悪意の第三者がグループメンバ集合Ｇと乱数Ｎとを用いてグループ鍵ＧＫを生成しようとすると、認証サーバ装置１１００の判定部１１０２において、第三者の識別子Ｕ’がグループメンバ集合Ｇの値に加えられた集合Ｇ＋Ｕ’が生成される。その結果、グループ鍵生成部１１０４で生成されるグループ鍵ＧＫ’は、要求者とメンバＭ１〜Ｍｎとの間で共有されたグループ鍵ＧＫとは異なることとなる。また、悪意の第三者が、その識別子Ｕ’を偽装したとしても、ＬＲ−ＡＫＥにおいて、ユーザ認証が行われるため、その認証の結果と識別子Ｕ’とを比較することで識別子の偽装を発見することができる。このため、悪意の第三者は、暗号化されたデータＣについて、暗号化を解除することができず、要求者とメンバＭ１〜Ｍｎとは、共通のグループ鍵を安全に共有することができる。
【００５９】
＜＜実施形態２＞＞
続いて、ＬＲ−ＡＫＥのクラスタモードに基づく、グループ間でのデータ共有方式を用いる場合の本発明の実施形態について説明する。
【００６０】
（システム構成）
図９は実施形態２の鍵共有システムの構成を示す概略図である。図９においては、要求者は、メンバＭ１〜Ｍｎとの間で共通鍵暗号を用いてデータＤを共有するための部分グループ鍵ＰＧＫ１及びＰＧＫ２の生成を、複数の認証サーバ装置１１００及び１１５０に要求する。ここで、要求者のクライアント装置では、ＬＲ−ＡＫＥのクラスタモードを用いた安全な通信路を認証用サーバ装置Ｓ１及びＳ２との間に確立する。そして、要求者のクライアント装置は、認証用サーバ装置Ｓ１及びＳ２へ、グループメンバ集合Ｇ、乱数Ｎ、要求者の識別子Ｕを送信し、部分グループ鍵ＰＧＫの生成を要求する。認証サーバ装置１１００と認証サーバ装置１１５０は、それぞれ図７のような動作により部分グループ鍵ＰＧＫ１及びＰＧＫ２を生成する。ここで、ＬＲ−ＡＫＥのシングルモードにおけるグループ鍵ＧＫと、ここで生成される部分グループ鍵ＰＧＫ１及びＰＧＫ２とは同様のものである。そして、認証サーバ装置１１００と認証サーバ装置１１５０は、それぞれ生成した部分グループ鍵ＰＧＫ１とＰＧＫ２とを要求者のクライアント装置へ送信する。
そして、要求者のクライアント装置は、生成された複数の部分グループ鍵ＰＧＫ１及びＰＧＫ２を連結又は合成してグループ鍵ＧＫを生成する。そしてそのグループ鍵ＧＫを用いてデータＤを暗号化し、ストレージサーバ装置１２００へその暗号化されたデータ（Ｃ＝ＥｎｃＧＫ（Ｄ））を格納する。
【００６１】
メンバＭ１〜Ｍｎのクライアント装置は、要求者のクライアント装置から、実施形態１と同様にソート結果Ｇ’、乱数Ｎ、及び場合によっては使用すべきマスター鍵ＭＫを指定する情報とを取得する。そして、ＬＲ−ＡＫＥのクラスタモードを用いて認証サーバ装置１１００及び１１５０との間に安全な通信路を確立して、それらの情報を認証サーバ装置１１００及び１１５０へ送信し、部分グループ鍵ＰＧＫ１及びＰＧＫ２を取得する。そして、メンバＭ１〜Ｍｎのクライアント装置は、得られた部分グループ鍵ＰＧＫ１及びＰＧＫ２からグループ鍵ＧＫを生成する。そして、ストレージサーバ装置１２００に格納された暗号化されたデータＣを読み出し、暗号化を解除して、元のデータＤを得ることで、データＤが要求者とメンバＭ１〜Ｍｎとの間で共有される。
【００６２】
なお、要求者又はメンバＭ１〜Ｍｎのクライアント装置と、認証サーバ装置１１００及び１１５０との間では、ＬＲ−ＡＫＥのクラスタモードを用いたグループ鍵ＧＫの分散管理及びそれに関する値の更新が行われる。ここで、クライアント装置と、認証サーバ装置１１００及び１１５０との間で分散管理される対象は、「部分グループ鍵ＰＧＫ」ではなく、複数の部分グループ鍵ＰＧＫを連結させた値であるグループ鍵ＧＫである。これにより、クライアント装置又は認証サーバ装置１１００もしくは認証サーバ装置１１５０のいずれかが故障した場合などにおいても、２つの装置に分散管理された情報を用いて過去に生成されたグループ鍵を取得することができる。
【００６３】
なお、グループ鍵ＧＫの合成は、例えば複数の部分グループ鍵ＰＧＫ同士の排他的論理和を計算することにより実行されてもよいし、又は、複数の部分グループ鍵ＰＧＫを引数とするハッシュ計算により実行されてもよい。また、その他の複数の部分グループ鍵ＰＧＫから１つの値を得ることができる計算によって合成後のグループ鍵ＧＫを得てもよい。ただし、要求者とメンバＭ１〜Ｍｎのクライアント装置の間で同一の演算を実行する必要がある。このため、例えば、要求者は、ソート結果Ｇ’と乱数Ｎに加えて、グループ鍵演算方法を指定する情報をメンバＭ１〜Ｍｎに通知してもよい。なお、これは、認証サーバ装置が３つ以上存在し、部分グループ鍵ＰＧＫも３つ以上存在しても同様である。
【００６４】
このように、本実施形態では、複数の認証サーバ装置を用いてグループ鍵を生成するため、１つの認証サーバ装置からマスター鍵が漏えいしても、グループ鍵ＧＫを復元することはできない。このため、より高いセキュリティを実現することが可能となる。
【００６５】
また、新クラスタモードに基づく、グループ間でのデータ共有方式を用いる場合の実施形態も、上記のクラスタモードに基づく場合と同様にして実現することができる。そして、この場合、複数の認証サーバ装置１１００及び１１５０が結託しても、グループ鍵ＧＫを求めることがより困難となるため、さらに高いセキュリティを実現することが可能となる。
【００６６】
これまで説明したように、本発明は、クライアント装置または認証サーバ装置から秘密情報が漏えいしても、グループ鍵を秘匿できる特徴を有しながら、グループのメンバのＩＤや属性に基づいてグループ鍵を柔軟に生成して共有することができる。特に、本発明では、グループ鍵ＧＫは１つまたは複数の認証サーバ装置により分散管理されるため、ストレージサーバ装置１２００とメンバのクライアント装置に記憶されたすべての秘密情報が漏えいしても元のデータを復元することはできない。また、メンバの公開鍵の入手や公開鍵証明書の検証などが不要であるため、全体の構成や実装を容易に行うことができる。また、認証サーバ装置は、マスター鍵ＭＫさえ記憶しておくことにより、要求者とメンバＭ１〜Ｍｎとの間で共通のグループ鍵ＧＫを生成することができる。これは、マスター鍵ＭＫを持つオンラインサーバにＩＤを指定してオンラインでマスター鍵ＭＫを取得するＫＤＣに対しても有効である。
【００６７】
＜＜その他の実施形態＞＞
なお、上述した装置の各機能要素は、専用のハードウェアによって実現されることもできるが、ＣＰＵとコンピュータ・プログラムを用いたソフトウェア処理によって実現されてもよい。すなわち、例えば「乱数生成部」のように「部」「装置」のような用語が用いられているとしても、その実現手段はハードウェアに限定されるものではなく、ソフトウェア処理による手段によっても実装可能である。また、２つ以上の機能要素を１つのハードウェア回路にまとめてもよく、あるいは２つ以上の機能要素をそれぞれサブプログラムとして含んだ１つのプログラムにまとめてもよい。例えば、上述の機能の全てを、プロセッサとメモリとプログラムコードを用いて実現してもよい。さらに、各機能要素をＦＰＧＡのようなプログラマブルな回路を用いて実現してもよい。また、その他にも具体的な実施の態様ごとの要求に応じて、適切な実装手段を選択するようにしてもよい。
【図１】
0005750728.tif 000002
【図２】
0005750728.tif 000003
【図３】
0005750728.tif 000004
【図４】
0005750728.tif 000005
【図５】
0005750728.tif 000006
【図６】
0005750728.tif 000007
【図７】
0005750728.tif 000008
【図８】
0005750728.tif 000009
【図９】
0005750728.tif 000010