(57)【要約】  復号可否を属性単位で制御可能にしつつそのメンバの変更に対して安全にかつ効率よく対応できるようにする。関数型暗号方式に、ある利用者集合に属する利用者の秘密鍵で復号できる暗号文を、新しい利用者集合に属する利用者の秘密鍵で復号できる暗号文に変換するための代理鍵をマスタ鍵に基づいて生成する代理鍵生成機能と、代理鍵生成機能によって生成された代理鍵を用いて、変更前の利用者集合に属する利用者の秘密鍵で復号できる暗号文から、該暗号文を復号せずに、新しい利用者集合に属する利用者の秘密鍵で復号できる新たな暗号文を生成する再暗号化機能を付与する。そのために代理鍵生成手段１０５および再暗号化手段１０６とを備える。
2014083784.tif 000002
【特許請求の範囲】
【請求項１】
関数型暗号方式に準拠した方法によって生成される本体部の他に、復号できる利用者の集合である利用者集合の変更に伴って変更される部分であってランダムに選択される公開鍵更新因子に基づく値が設定される部分である更新部を含む公開鍵およびマスタ鍵を生成する設定手段と、
公開鍵、マスタ鍵、述語ベクトルおよび利用者識別子が入力されると、利用者に固有でかつ利用者も知ることのない利用者識別因子を生成し、前記マスタ鍵と前記述語ベクトルと前記利用者識別因子とに基づいて生成される述語部と、前記利用者識別因子と前記マスタ鍵とに基づいて生成される利用者依存値打消部とを含む秘密鍵を生成する鍵導出手段と、
関数型暗号方式に準拠した方法により、属性ベクトルを指定して暗号文を生成する暗号化手段と、
公開鍵、秘密鍵および暗号文が入力されると、前記暗号文と前記秘密鍵の述語部とに基づいて、該秘密鍵を生成する際に使用された利用者識別因子に依存する利用者依存値を生成するとともに、前記暗号文と前記秘密鍵の利用者依存値打消部とに基づいて、該利用者依存値を打ち消すための利用者依存値打消値を生成して、生成された利用者依存値と利用者依存値打消値とを用いて前記暗号文を復号する復号手段と、
公開鍵とマスタ鍵と変更後の利用者集合とが入力されると、公開鍵更新因子を新たに生成して、生成された公開鍵更新因子に基づいて、公開鍵の更新部と、秘密鍵の更新部分である更新鍵と、マスタ鍵の更新部とを生成するとともに、生成された公開鍵更新因子と、変更前の公開鍵から得られる公開鍵更新因子と変更前のマスタ鍵とに基づいて、変更前の利用者集合に属する利用者の秘密鍵で復号できる暗号文を変更後の利用者集合に属する利用者の秘密鍵で復号できる暗号文に変換するための代理鍵と、マスタ鍵の更新部とを生成する代理鍵生成手段と、
前記代理鍵生成手段によって生成された代理鍵を用いて、変更前の利用者集合に属する利用者の秘密鍵で復号できる暗号文から、該暗号文の復号をせずに、変更後の利用者集合に属する利用者の秘密鍵で復号できる新たな暗号文を生成する再暗号化手段とを備えた
ことを特徴とする暗号システム。
【請求項２】
鍵導出手段は、利用者識別因子をその成分に含むベクトルと行列である公開鍵の一成分との積である述語部と、２以上の成分からなり、そのうちの２つが公開鍵の１つの要素と前記利用者識別因子の積からなる項を含む利用者依存値打消部とを含む秘密鍵を生成する
請求項１に記載の暗号システム。
【請求項３】
復号手段は、入力された暗号文の一部と秘密鍵の述語部とを用いて双線形写像を計算することによって、利用者依存値を生成し、
前記復号手段は、入力された暗号文の一部と秘密鍵の利用者依存値打消部とを用いて双線形写像を計算することによって、利用者依存値打消値を生成する
請求項２に記載の暗号システム。
【請求項４】
代理鍵生成手段は、公開鍵更新因子をマスタ鍵の更新部に含ませるとともに、新たに生成した公開鍵更新因子を変更前のマスタ鍵の一部で割った値を含む代理鍵を生成し、かつ更新鍵を、述語ベクトルを要せずに、新しいマスタ鍵から生成される秘密鍵の一部として生成する
請求項１から請求項３のうちのいずれか１項に記載の暗号システム。
【請求項５】
データの管理者が使用する管理装置と、暗号化されたデータを保存するデータ保存者が使用するデータ保存装置と、復号装置と、暗号装置とを備え、
前記管理装置は、
関数型暗号方式に準拠した方法によって生成される本体部の他に、復号できる利用者の集合である利用者集合の変更に伴って変更される部分であってランダムに選択される公開鍵更新因子に基づく値が設定される部分である更新部を含む公開鍵およびマスタ鍵を生成する設定手段と、
公開鍵、マスタ鍵、述語ベクトルおよび利用者識別子が入力されると、利用者に固有でかつ利用者も知ることのない利用者識別因子を生成し、前記マスタ鍵と前記述語ベクトルと前記利用者識別因子とに基づいて生成される述語部と、前記利用者識別因子と前記マスタ鍵とに基づいて生成される利用者依存値打消部とを含む秘密鍵を生成する鍵導出手段と、
公開鍵とマスタ鍵と変更後の利用者集合とが入力されると、公開鍵更新因子を新たに生成して、生成された公開鍵更新因子に基づいて、公開鍵の更新部と、秘密鍵の更新部分である更新鍵と、マスタ鍵の更新部とを生成するとともに、生成された公開鍵更新因子と、変更前の公開鍵から得られる公開鍵更新因子と変更前のマスタ鍵とに基づいて、変更前の利用者集合に属する利用者の秘密鍵で復号できる暗号文を変更後の利用者集合に属する利用者の秘密鍵で復号できる暗号文に変換するための代理鍵と、マスタ鍵の更新部とを生成する代理鍵生成手段とを含み、
前記データ保存装置は、
前記代理鍵生成手段によって生成された代理鍵を用いて、変更前の利用者集合に属する利用者の秘密鍵で復号できる暗号文から、該暗号文を復号せずに、変更後の利用者集合に属する利用者の秘密鍵で復号できる新たな暗号文を生成する再暗号化手段と、
前記再暗号化手段によって暗号化されたデータを保存する記憶手段とを含み、
前記暗号化装置は、
関数型暗号方式に準拠した方法により、属性ベクトルを指定して暗号文を生成する暗号化手段を含み、
前記復号装置は、
公開鍵、秘密鍵および暗号文が入力されると、前記暗号文と前記秘密鍵の述語部とに基づいて、該秘密鍵を生成する際に使用された利用者識別因子に依存する利用者依存値を生成するとともに、前記暗号文と前記秘密鍵の利用者依存値打消部とに基づいて、該利用者依存値を打ち消すための利用者依存値打消値を生成して、生成された利用者依存値と利用者依存値打消値とを用いて前記暗号文を復号する復号手段を含む
ことを特徴とするデータ保存システム。
【請求項６】
関数型暗号方式に準拠した方法によって生成される本体部の他に、復号できる利用者の集合である利用者集合の変更に伴って変更される部分であってランダムに選択される公開鍵更新因子に基づく値が設定される部分である更新部を含む公開鍵およびマスタ鍵と、述語ベクトルと、利用者識別子とが入力されると、利用者に固有でかつ利用者も知ることのない利用者識別因子を生成し、前記マスタ鍵と前記述語ベクトルと前記利用者識別因子とに基づいて生成される述語部と、前記利用者識別因子と前記マスタ鍵とに基づいて生成される利用者依存値打消部とを含む秘密鍵を生成する鍵導出手段を備えた
ことを特徴とする鍵導出装置。
【請求項７】
関数型暗号方式に準拠した方法によって生成される本体部の他に、復号できる利用者の集合である利用者集合の変更に伴って変更される部分であってランダムに選択される公開鍵更新因子に基づく値が設定される部分である更新部を少なくとも含む公開鍵と、述語ベクトルが指定された秘密鍵であって、利用者に固有でかつ利用者も知ることのない利用者識別因子と前記マスタ鍵と述語ベクトルとに基づく述語部と、前記利用者識別因子と前記マスタ鍵とに基づく利用者依存値打消部とを含む秘密鍵と、暗号文とが入力されると、前記暗号文と前記秘密鍵の述語部とに基づいて、該秘密鍵を生成する際に使用された利用者識別因子に依存する利用者依存値を生成するとともに、前記暗号文と前記秘密鍵の利用者依存値打消部とに基づいて、該利用者依存値を打ち消すための利用者依存値打消値を生成して、生成された利用者依存値と利用者依存値打消値とを用いて前記暗号文を復号する復号手段を備えた
ことを特徴とする復号装置。
【請求項８】
関数型暗号方式に準拠した方法によって生成される本体部の他に、復号できる利用者の集合である利用者集合の変更に伴って変更される部分であってランダムに選択される公開鍵更新因子に基づく値が設定される部分である更新部を少なくとも含む公開鍵と、関数型暗号方式に準拠した方法によって生成される本体部の他に、復号できる利用者の集合である利用者集合の変更に伴って変更される部分であってランダムに選択される公開鍵更新因子に基づく値が設定される部分である更新部を少なくとも含むマスタ鍵と、変更後の利用者集合とが入力されると、公開鍵更新因子を新たに生成して、生成された公開鍵更新因子に基づいて、公開鍵の更新部と、秘密鍵の更新部分である更新鍵と、マスタ鍵の更新部とを生成するとともに、生成された公開鍵更新因子と、変更前の公開鍵から得られる公開鍵更新因子と変更前のマスタ鍵とに基づいて、変更前の利用者集合に属する利用者の秘密鍵で復号できる暗号文を変更後の利用者集合に属する利用者の秘密鍵で復号できる暗号文に変換するための代理鍵と、マスタ鍵の更新部とを生成する代理鍵生成手段を備えた
ことを特徴とする代理鍵生成装置。
【請求項９】
秘匿性のあるデータの受け渡しをネットワークを介して行うためのデータ処理方法であって、
関数型暗号方式に準拠した方法によって生成される本体部の他に、復号できる利用者の集合である利用者集合の変更に伴って変更される部分であってランダムに選択される公開鍵更新因子に基づく値が設定される部分である更新部を含む公開鍵およびマスタ鍵を生成し、
データの復号を許可する利用者ごとに、該利用者に固有でかつ利用者も知ることのない利用者識別因子を生成し、前記マスタ鍵と述語ベクトルと前記利用者識別因子とに基づいて生成される述語部と、前記利用者識別因子と前記マスタ鍵とに基づいて生成される利用者依存値打消部とを含む秘密鍵を生成し、
データ、または、前記データの暗号文を復号する際に用いるメッセージ鍵を、属性ベクトルを指定して暗号化し、
データの暗号文または前記メッセージ鍵の暗号文を受け取ると、受け取った暗号文と、当該利用者が所持している秘密鍵の述語部とに基づいて、該秘密鍵を生成する際に使用された利用者識別因子に依存する利用者依存値を生成するとともに、前記暗号文と前記秘密鍵の利用者依存値打消部とに基づいて、該利用者依存値を打ち消すための利用者依存値打消値を生成して、生成された利用者依存値と利用者依存値打消値とを用いて前記暗号文を復号する
ことを特徴とするデータ処理方法。
【請求項１０】
復号できる利用者の集合である利用者集合が変更されると、公開鍵更新因子を新たに生成して、生成された公開鍵更新因子に基づいて、公開鍵の更新部と、秘密鍵の更新部分である更新鍵と、マスタ鍵の更新部とを生成するとともに、生成された公開鍵更新因子と、変更前の公開鍵から得られる公開鍵更新因子と、変更前のマスタ鍵とに基づいて、変更前の利用者集合に属する利用者の秘密鍵で復号できる暗号文を変更後の利用者集合に属する利用者の秘密鍵で復号できる暗号文に変換するための代理鍵と、マスタ鍵の更新部とを生成し、
生成された代理鍵を用いて、変更前の利用者集合に属する利用者の秘密鍵で復号できる暗号文から、該暗号文を復号せずに、変更後の利用者集合に属する利用者の秘密鍵で復号できる新たな暗号文を生成する
請求項９に記載のデータ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、復号できる利用者を複数指定できる暗号システム、それを利用したデータ保存システム、およびそれに用いられる鍵導出装置、復号装置、代理鍵生成装置並びにデータ処理方法に関する。
【背景技術】
【０００２】
復号できる利用者を複数指定できる暗号方式の一つに関数型暗号方式がある。関数型暗号方式は、受信者が暗号文を復号できるか否かがその受信者の所有する属性を入力とする関数値で決定されるもので、この関数を指定して暗号化する暗号方式である。また、関数型暗号方式は、暗号文をある受信者が復号できるか否かが、暗号文生成時に指定された属性とこの受信者が所持する述語によって決定される暗号方式であるとも言うことができる。非特許文献１には、関数型暗号方式の一例が記載されている。【０００３】
図１３は、非特許文献１に記載された関数型暗号方式の概略を示す説明図である。図１３に示すように、非特許文献１に記載された関数型暗号方式は、設定機能９０１と、鍵導出機能９０２と、暗号化機能９０３と、復号機能９０４とからなる。【０００４】
設定機能９０１は、公開鍵９１１とマスタ鍵９１２とを生成する。鍵導出機能９０２は、公開鍵９１１と、マスタ鍵９１２と、復号できる権限（属性）を指定する属性ベクトル９１６に対応する述語ベクトル９１３とから、該属性に対応する秘密鍵９１４を生成する。暗号化機能９０３は、公開鍵９１１と、暗号化対象の文書（平文）９１５と、当該文書を復号できる権限を指定する属性ベクトル９１６とから、暗号文９１７を生成する。復号機能９０４は、公開鍵９１１と、復号者が所持する秘密鍵９１４（例えば、秘密鍵９１４−１）と、受信した暗号文９１７とから、暗号文９１７の復号文である平文９１８を生成する。【０００５】
例えば、設定機能９０１が、公開鍵ｐｋとマスタ鍵ｍｋを出力したとする。そして、鍵導出機能９０２が、その公開鍵ｐｋとマスタ鍵ｍｋと述語ベクトルｖとを入力して、属性組の秘密鍵ｓｋを出力したとする。暗号化機能９０３は、設定機能９０１が生成した公開鍵ｐｋと、暗号化対象の文書ｍと、当該文書ｍを復号できる権限を指定する属性ベクトルｘとを入力して、文書ｍの暗号文であるＣを出力する。復号機能９０４は、設定機能９０１が生成した公開鍵ｐｋと、受信した暗号文Ｃと、復号者が所持する属性組の秘密鍵ｓｋとを入力して復号処理を行う。このとき、ｖ・ｘ＝０ならば復号に成功するので、復号文である文書ｍを生成して出力する。【０００６】
このように、関数型暗号方式を使用すれば、暗号文を生成する際に指定した属性ベクトルｘに対応する述語ベクトルｖを指定して生成された秘密鍵ｓｋを有している受信者であればその暗号文を復号できるため、１つの暗号文を複数の受信者が復号可能となる。このような関数型暗号方式を利用すれば、例えば、複数の者がアクセス可能なファイルに対して、特定の利用者集合に対してのみ閲覧を許可するといったアクセス制御を容易に実現できる。従って、クラウド等を利用したデータ保存サービスなどにおいてもその安全性を高めることに寄与することができる。例えば、企業等のある組織がネットワーク上の記憶装置にデータを保存する場合を考える。この場合、この組織のある資格を持つメンバのみが読めるべきデータを、関数型暗号方式を使用して暗号化してネットワーク上の記憶装置に保存すればよい。この時、データを読むことができる資格を述語ベクトルｖで表し、この資格を持つメンバが復号できる暗号文はｖ・ｘ＝０となる属性ｘを指定して暗号化する。組織のメンバはデータを必要とするときには、当該データが保持されている記憶装置にネットワークを介してアクセスし必要なデータを取り寄せる。このデータは上述のように関数型暗号方式により暗号化されているが、属性ｘに対応する述語ベクトルｖを持つ組織のメンバであれば関数型暗号方式における復号方法に従い復号して、利用することができる。【０００７】
一般に、クラウド等のネットワークを介したデータの取り寄せでは、要求に対して認証を行い、対応する組織のメンバにアクセス許可を限ることで安全性を持たせることができるが、認証処理にミスがある可能性もある。また、データを保持しているクラウド側（ネットワーク側）の管理が不十分であったり、管理者が不正を働けば、アクセス権限を持たない者にデータが渡ってしまう可能性もある。特に、クラウドを利用する場合、その利用者は、ネットワーク管理に関しては外部の人間となるので、外部の利用者が、ネットワークの管理が十分であるか否かを確認したり、管理者が不正を働かない確証を得ることは難しく、情報漏洩に対する不安はより大きくなるという問題があった。しかし、このような場合でもデータを関数型暗号方式を利用して暗号化していれば、正しい述語ベクトルの組の秘密鍵を持つメンバ以外がデータを手に入れたとしても、そのデータを復号することができないため、その内容が不当に明らかになることを防ぐことができる。【０００８】
また、復号できる利用者を複数指定できる暗号方式の他の例として、放送型暗号方式と呼ばれるものがある。放送型暗号方式は、復号が可能な受信者の集合を指定して暗号化を行う暗号方式であって、同一の暗号文を、それぞれ異なる秘密鍵を持った複数の受信者が受信し、それぞれ復号した結果が同じ平文となる暗号方式である。非特許文献２には、放送型暗号方式の一例が記載されている。【０００９】
図１４は、非特許文献２に記載された放送型暗号方式の概略を示す説明図である。図１４に示すように、非特許文献２に記載された放送型暗号方式は、設定機能８０１と、鍵導出機能８０２と、暗号化機能８０３と、復号機能８０４とからなる。【００１０】
設定機能８０１は、公開鍵８１１とマスタ鍵８１２とを生成する。鍵導出機能８０２は、マスタ鍵８１２と、公開鍵８１１と、復号者識別子８１３とから、当該復号者に対応する秘密鍵８１４（以下、復号者秘密鍵８１４という。）を生成する。暗号化機能８０３は、公開鍵８１１と、復号可能者の集合を指定する復号可能者集合８１６と、暗号化対象の文書（平文）８１５とから、暗号文８１７を生成する。復号機能８０４は、公開鍵８１１と、受信した暗号文８１７と、復号者が認識している復号可能者の集合を指定する復号可能者集合８１６（例えば、復号可能者集合８１６−１）と、復号者が所持している復号者秘密鍵８１４（例えば、復号者秘密鍵８１４−１）とから、暗号文８１７の復号文である平文８１８を生成する。【００１１】
暗号化機能８０３に入力された復号可能者集合８１６と、復号機能８０４に入力された復号可能者集合８１６が同一であり、暗号化機能８０３が出力した暗号文８１７と復号機能８０４に入力された暗号文８１７とが同一であり、復号機能８０４に入力された復号者秘密鍵８１４が復号機能８０４に入力された復号可能者集合８１６に属する復号者の秘密鍵であるならば、暗号化機能８０３に入力された平文８１５と復号機能８０４の出力する平文８１８は同一内容となる。【００１２】
このように、放送型暗号方式も関数型暗号方式と同様に、クラウド等を利用したデータ保存サービスなどにおいてその安全性を高めることに寄与することができる。例えば、企業等のある組織がネットワーク上の記憶装置にデータを保存する場合を考える。この場合、この組織のメンバのみが読めるべきデータを、当該組織の各メンバが属せられた復号可能者集合を示すデータを指定した上で放送型暗号方式を使用して暗号化してネットワーク上の記憶装置に保存すればよい。組織のメンバは復号可能者集合を示すデータとともに、各自対応する秘密鍵を渡される。組織のメンバはデータを必要とするときには、当該データが保持されている記憶装置にネットワークを介してアクセスし必要なデータを取り寄せる。このデータは上述のように放送型暗号方式により暗号化されているが、組織のメンバであれば本放送型暗号の復号方式に従い復号し、利用することができる。【００１３】
放送型暗号方式は、関数型暗号方式と比べて、受信者ごとに復号可能であるか否かを制御できる点が異なる。すなわち、メンバに変更があったときに復号可能者集合８１６を適宜変更すれば、変更後の復号可能者集合に応じて復号可能者を変更することができる。例えば、新しいメンバが組織に加わった場合は、鍵導出機能８０２でその新しいメンバに対して復号者秘密鍵８１４を生成するとともに、暗号化機能８０３における以降の暗号化処理で、このメンバを加えた新たな復号可能者集合８１６を用いてデータを暗号化すればよい。また、例えばあるメンバが組織を去ったときには、暗号化機能８０３における以降の暗号化処理で、そのメンバを削除した新たな復号可能者集合８１６を用いてデータを暗号化すればよい。これらの処理により、新たな復号可能者集合８１６を用いて暗号化されたデータについては、新たな復号可能者集合８１６に属する最新のメンバのみが復号できるようになる。
【先行技術文献】
【非特許文献】
【００１４】
【非特許文献１】Tatsuaki Okamoto, Katsuyuki Takashima, "Adaptively Attribute-Hiding (Hierarchical) Inner Product Encryption.", EUROCRYPT 2012, 2012, p.591-608.
【非特許文献２】Dan Boneh, Craig Gentry, Brent Waters, "Collusion Resistant Broadcast Encryption With Short Ciphertexts and Private Keys", Advances in Cryptology - CRYPTO 2005, 25th Annual International Cryptology Conference, 2005, p.258-275.
【発明の概要】
【発明が解決しようとする課題】
【００１５】
関数型暗号方式は、暗号化するときに属性を指定することによって属性単位で復号の可否を制御できるので、新たにメンバが追加された場合でもその追加されたメンバに秘密鍵を配布するだけで各メンバが既に暗号化ずみのデータを含む全ての対象データを復号できるようになるという利点がある一方で、メンバが抜けた場合にはその抜けたメンバも対象データが手に入れば復号できてしまうという問題を有している。【００１６】
一方、放送型暗号方式は、暗号化するときに復号可能者集合を指定するが、その集合内の利用者を変更することによって利用者単位で復号の可否を制御できるので、所属メンバの変更に安全に対応できるという利点がある一方で、誰が復号できるかが暗号化したときに決められ以後固定となるために、新たなメンバが既に暗号化ずみのデータを見られるようにしようとすると、メンバ変更の度に既存の暗号化データを復号して再度暗号化しなければならないという問題を有している。【００１７】
また、仮に関数型暗号方式と放送型暗号方式とを組み合わせて用いたとしても、単純には、双方の利点のみを得られるようなものにはならない。例えば、文書Ｍを、これを復号できる受信者集合を定めて放送型暗号方式を利用して暗号化し、さらにこれを復号できる受信者の属性の組を定めて関数型暗号方式を利用して暗号化したとする。すると、指定された属性を持ち、かつ指定された受信者集合に含まれる受信者でなければ復号できない様に見える。しかし、指定された受信者集合には含まれないが指定された属性を持つ受信者と、指定された属性は持たないが指定された受信者集合に含まれる受信者とが協力すれば復号は可能であり、両方の条件を同時に備える受信者である必要はない。すなわち、結託耐性が十分でない。なお、暗号化の順番を逆にしても同様である。【００１８】
さらに、そのような多段暗号化による組み合わせでは、関数型暗号方式がもつ、既に保存されていたデータに対して属性が一致すれば復元可能であるとするアクセス制限を活用できない。なぜなら、放送型暗号方式を使用すれば、それを復元できる復元者は暗号化したときに決まり、以後変更はできないからである。【００１９】
ここで、例えば組織を構成するメンバが変わったときに、今現在保存されている全ての暗号化データを全て取り出して、古い復号可能者集合を用いて復号した後、新しい復号可能者集合を用いて再度暗号化し、保存しなおすことを考える。しかし、世に存在する多くの組織、特に大きい組織では、その構成メンバの変更はよくある出来事であり、メンバ変更の度に今ある全ての暗号化データに対して、復号と再暗号化とを含む一連の処理を行うことは、極めて負担の大きいことである。【００２０】
すなわち、既存の暗号方式や、それらを単純に組み合わせて用いるだけでは、クラウド等を利用したデータ保存サービスを考えた場合、アクセス可能なメンバに変更があったときに安全性が十分でなく、また既に暗号化ずみのデータを含む全ての対象データに対して安全性を確保しようとすると、負担の大きい作業をせざるを得ないという問題があった。【００２１】
そこで、本発明は、復号可否を属性単位で制御可能にしつつそのメンバの変更に対して安全にかつ効率よく対応できるようにすることを目的とする。より具体的には、復号可能か否かを属性単位で指定でき、かつそのメンバに変更があった時でも、既に暗号化ずみのデータに対して一度復号して再暗号化するといった手間をかけずに、既に暗号化ずみのデータを含む全ての対象データに対して、安全性を確保できる暗号システム、データ保存システム、鍵導出装置、復号装置、代理鍵生成装置およびデータ処理方法を提供することを目的とする。
【課題を解決するための手段】
【００２２】
本発明による暗号システムは、関数型暗号方式に準拠した方法によって生成される本体部の他に、復号できる利用者の集合である利用者集合の変更に伴って変更される部分であってランダムに選択される公開鍵更新因子に基づく値が設定される部分である更新部を含む公開鍵およびマスタ鍵を生成する設定手段と、公開鍵、マスタ鍵、述語ベクトルおよび利用者識別子が入力されると、利用者に固有でかつ利用者も知ることのない利用者識別因子を生成し、マスタ鍵と述語ベクトルと利用者識別因子とに基づいて生成される述語部と、利用者識別因子とマスタ鍵とに基づいて生成される利用者依存値打消部とを含む秘密鍵を生成する鍵導出手段と、関数型暗号方式に準拠した方法により、属性ベクトルを指定して暗号文を生成する暗号化手段と、公開鍵、秘密鍵および暗号文が入力されると、暗号文と秘密鍵の述語部とに基づいて、該秘密鍵を生成する際に使用された利用者識別因子に依存する利用者依存値を生成するとともに、暗号文と秘密鍵の利用者依存値打消部とに基づいて、該利用者依存値を打ち消すための利用者依存値打消値を生成して、生成された利用者依存値と利用者依存値打消値とを用いて暗号文を復号する復号手段と、公開鍵とマスタ鍵と変更後の利用者集合とが入力されると、公開鍵更新因子を新たに生成して、生成された公開鍵更新因子に基づいて、公開鍵の更新部と、秘密鍵の更新部分である更新鍵と、マスタ鍵の更新部とを生成するとともに、生成された公開鍵更新因子と、変更前の公開鍵から得られる公開鍵更新因子と変更前のマスタ鍵とに基づいて、変更前の利用者集合に属する利用者の秘密鍵で復号できる暗号文を変更後の利用者集合に属する利用者の秘密鍵で復号できる暗号文に変換するための代理鍵と、マスタ鍵の更新部とを生成する代理鍵生成手段と、代理鍵生成手段によって生成された代理鍵を用いて、変更前の利用者集合に属する利用者の秘密鍵で復号できる暗号文から、該暗号文の復号をせずに、変更後の利用者集合に属する利用者の秘密鍵で復号できる新たな暗号文を生成する再暗号化手段とを備えたことを特徴とする。【００２３】
本発明によるデータ保存システムは、データの管理者が使用する管理装置と、暗号化されたデータを保存するデータ保存者が使用するデータ保存装置と、復号装置と、暗号装置とを備え、管理装置は、関数型暗号方式に準拠した方法によって生成される本体部の他に、復号できる利用者の集合である利用者集合の変更に伴って変更される部分であってランダムに選択される公開鍵更新因子に基づく値が設定される部分である更新部を含む公開鍵およびマスタ鍵を生成する設定手段と、公開鍵、マスタ鍵、述語ベクトルおよび利用者識別子が入力されると、利用者に固有でかつ利用者も知ることのない利用者識別因子を生成し、マスタ鍵と述語ベクトルと利用者識別因子とに基づいて生成される述語部と、利用者識別因子とマスタ鍵とに基づいて生成される利用者依存値打消部とを含む秘密鍵を生成する鍵導出手段と、公開鍵とマスタ鍵と変更後の利用者集合とが入力されると、公開鍵更新因子を新たに生成して、生成された公開鍵更新因子に基づいて、公開鍵の更新部と、秘密鍵の更新部分である更新鍵と、マスタ鍵の更新部とを生成するとともに、生成された公開鍵更新因子と、変更前の公開鍵から得られる公開鍵更新因子と変更前のマスタ鍵とに基づいて、変更前の利用者集合に属する利用者の秘密鍵で復号できる暗号文を変更後の利用者集合に属する利用者の秘密鍵で復号できる暗号文に変換するための代理鍵と、マスタ鍵の更新部とを生成する代理鍵生成手段とを含み、データ保存装置は、代理鍵生成手段によって生成された代理鍵を用いて、変更前の利用者集合に属する利用者の秘密鍵で復号できる暗号文から、該暗号文を復号せずに、変更後の利用者集合に属する利用者の秘密鍵で復号できる新たな暗号文を生成する再暗号化手段と、再暗号化手段によって暗号化されたデータを保存する記憶手段とを含み、暗号化装置は、関数型暗号方式に準拠した方法により、属性ベクトルを指定して暗号文を生成する暗号化手段を含み、復号装置は、公開鍵、秘密鍵および暗号文が入力されると、暗号文と秘密鍵の述語部とに基づいて、該秘密鍵を生成する際に使用された利用者識別因子に依存する利用者依存値を生成するとともに、暗号文と秘密鍵の利用者依存値打消部とに基づいて、該利用者依存値を打ち消すための利用者依存値打消値を生成して、生成された利用者依存値と利用者依存値打消値とを用いて暗号文を復号する復号手段を含むことを特徴とする。【００２４】
本発明による鍵導出装置は、関数型暗号方式に準拠した方法によって生成される本体部の他に、復号できる利用者の集合である利用者集合の変更に伴って変更される部分であってランダムに選択される公開鍵更新因子に基づく値が設定される部分である更新部を含む公開鍵およびマスタ鍵と、述語ベクトルと、利用者識別子とが入力されると、利用者に固有でかつ利用者も知ることのない利用者識別因子を生成し、マスタ鍵と述語ベクトルと利用者識別因子とに基づいて生成される述語部と、利用者識別因子とマスタ鍵とに基づいて生成される利用者依存値打消部とを含む秘密鍵を生成する鍵導出手段を備えたことを特徴とする。【００２５】
本発明による復号装置は、関数型暗号方式に準拠した方法によって生成される本体部の他に、復号できる利用者の集合である利用者集合の変更に伴って変更される部分であってランダムに選択される公開鍵更新因子に基づく値が設定される部分である更新部を少なくとも含む公開鍵と、述語ベクトルが指定された秘密鍵であって、利用者に固有でかつ利用者も知ることのない利用者識別因子とマスタ鍵と述語ベクトルとに基づく述語部と、利用者識別因子とマスタ鍵とに基づく利用者依存値打消部とを含む秘密鍵と、暗号文とが入力されると、暗号文と秘密鍵の述語部とに基づいて、該秘密鍵を生成する際に使用された利用者識別因子に依存する利用者依存値を生成するとともに、暗号文と秘密鍵の利用者依存値打消部とに基づいて、該利用者依存値を打ち消すための利用者依存値打消値を生成して、生成された利用者依存値と利用者依存値打消値とを用いて暗号文を復号する復号手段を備えたことを特徴とする。【００２６】
本発明による代理鍵生成装置は、関数型暗号方式に準拠した方法によって生成される本体部の他に、復号できる利用者の集合である利用者集合の変更に伴って変更される部分であってランダムに選択される公開鍵更新因子に基づく値が設定される部分である更新部を少なくとも含む公開鍵と、関数型暗号方式に準拠した方法によって生成される本体部の他に、復号できる利用者の集合である利用者集合の変更に伴って変更される部分であってランダムに選択される公開鍵更新因子に基づく値が設定される部分である更新部を少なくとも含むマスタ鍵と、変更後の利用者集合とが入力されると、公開鍵更新因子を新たに生成して、生成された公開鍵更新因子に基づいて、公開鍵の更新部と、秘密鍵の更新部分である更新鍵と、マスタ鍵の更新部とを生成するとともに、生成された公開鍵更新因子と、変更前の公開鍵から得られる公開鍵更新因子と変更前のマスタ鍵とに基づいて、変更前の利用者集合に属する利用者の秘密鍵で復号できる暗号文を変更後の利用者集合に属する利用者の秘密鍵で復号できる暗号文に変換するための代理鍵と、マスタ鍵の更新部とを生成する代理鍵生成手段を備えたことを特徴とする。【００２７】
本発明によるデータ処理方法は、秘匿性のあるデータの受け渡しをネットワークを介して行うためのデータ処理方法であって、関数型暗号方式に準拠した方法によって生成される本体部の他に、復号できる利用者の集合である利用者集合の変更に伴って変更される部分であってランダムに選択される公開鍵更新因子に基づく値が設定される部分である更新部を含む公開鍵およびマスタ鍵を生成し、データの復号を許可する利用者ごとに、該利用者に固有でかつ利用者も知ることのない利用者識別因子を生成し、マスタ鍵と述語ベクトルと利用者識別因子とに基づいて生成される述語部と、利用者識別因子とマスタ鍵とに基づいて生成される利用者依存値打消部とを含む秘密鍵を生成し、データ、または、データの暗号文を復号する際に用いるメッセージ鍵を、属性ベクトルを指定して暗号化し、データの暗号文またはメッセージ鍵の暗号文を受け取ると、受け取った暗号文と、当該利用者が所持している秘密鍵の述語部とに基づいて、該秘密鍵を生成する際に使用された利用者識別因子に依存する利用者依存値を生成するとともに、暗号文と秘密鍵の利用者依存値打消部とに基づいて、該利用者依存値を打ち消すための利用者依存値打消値を生成して、生成された利用者依存値と利用者依存値打消値とを用いて暗号文を復号することを特徴とする。
【発明の効果】
【００２８】
本発明によれば、復号可否を属性単位で制御可能にしつつそのメンバの変更に対して安全にかつ効率よく対応できる。
【図面の簡単な説明】
【００２９】
【図１】第１の実施形態の暗号システムの全体構成図である。
【図２】設定部１１の構成例を示すブロック図である。
【図３】鍵導出部１２の構成例を示すブロック図である。
【図４】暗号化部１３の構成例を示すブロック図である。
【図５】暗号化部１３の他の構成例を示すブロック図である。
【図６】復号部１４の構成例を示すブロック図である。
【図７】代理鍵生成部１５の構成例を示すブロック図である。
【図８】再暗号化部１６の構成例を示すブロック図である。
【図９】鍵更新部１７の構成例を示すブロック図である。
【図１０】第２の実施形態のデータ保存システムの全体構成の一例を示すブロック図である。
【図１１】第２の実施形態のデータ保存システムの他の構成例を示すブロック図である。
【図１２】本発明の概要を示すブロック図である。
【図１３】関数型暗号方式の概略を示す説明図である。
【図１４】放送型暗号方式の概略を示す説明図である。
【発明を実施するための形態】
【００３０】
まず、本発明が使用する暗号方式（以下、本発明の暗号方式という。）について説明する。本発明の暗号方式は、関数型暗号方式を改良したものであって、関数型暗号方式に次の機能を付加することによって上述の課題を解決するものである。
【００３１】
（１）代理鍵生成機能
より具体的には、ある「利用者集合Ｕ」に属する利用者の秘密鍵で復号できる暗号文を、新しい「利用者集合Ｕ’」に属する利用者の秘密鍵で復号できる暗号文に変換するための代理鍵をマスタ鍵に基づいて生成する機能。
【００３２】
（２）再暗号化機能
より具体的には、代理鍵生成機能によって生成された代理鍵を用いて、ある「利用者集合Ｕ」に属する利用者の秘密鍵で復号できる暗号文から、復号鍵を用いた復号処理を経ずに、新しい「利用者集合Ｕ’」に属する利用者の秘密鍵で復号できる暗号文を生成する機能。
【００３３】
この２つの機能を付加することで、クラウド等に保存されたデータへのアクセスが暗号方式により制御されているときに、アクセスを許可する利用者集合を次のように動的に変更できるようにする。ここで、「データへのアクセスが暗号方式により制御されている」とは、具体的には、アクセス制限の対象とするデータを所定の暗号方式を用いて暗号化して暗号化データとして保存することによって、そのデータの中身を閲覧できる者がその暗号化データを復号可能な者に制限されていることを言う。すなわち、本発明において「アクセス制御」という表現を用いた場合には、暗号化データの復号可能者を制御することを意味する。
【００３４】
すなわち、本発明の暗号方式は、この２つの機能を付加することによって、本方式により暗号化されて保存されているデータに対して、そのデータの復号を許可する利用者集合を次のように動的に変更できるようにしたものである。
【００３５】
最初に、対象とするデータは、これを復号できる権限を指定して暗号化されているとする。この時、さらにその権限を有する利用者の集合である利用者集合Ｕが指定され、この各利用者には暗号化時に指定する権限に対応し、かつ当該利用者を指定した秘密鍵が各々配られる。これにより、この暗号文を復号できるのは、この利用者集合Ｕに属し、暗号文生成時に指定された権限を保持する利用者のみとなる。なぜなら、各暗号文へのアクセスがその要求する権限によって制限されているとともに、秘密鍵の配布が利用者の集合でも制限されているからである。
【００３６】
ここで、データへのアクセス権を全て持つものはマスタ鍵を持つものである。また、マスタ鍵を用いて利用者集合に属する各利用者の秘密鍵を生成することができる。本発明では、このマスタ鍵を持つ者を管理者と呼ぶ。この管理者が、暗号化されたデータの保存を行わずに、別の者に委託することを想定する。また、暗号化されたデータを保存する者をデータ保存者という。データ保存者は、クラウド等でデータの保存業務を行う者を例に説明するが、単に暗号文を受信した受信者であってもよい。
【００３７】
今、組織の改編等により、データへのアクセスを許可する利用者を追加あるいは削除等したいとする。これは、権限が合致さえすれば暗号化されたデータを復号できる利用者集合Ｕを変更したいことに他ならない。ここでは、変更先の利用者集合をＵ’とする。
【００３８】
管理者は、上述の代理鍵生成機能を利用して、利用者集合Ｕと利用者集合Ｕ’とマスタ鍵とから代理鍵ｒｋ、その他利用者集合の変更に伴い必要とされる各種データを生成する。そして、生成した代理鍵ｒｋをデータ保存者に送付する。利用者集合の変更に伴い必要とされる各種データには、例えば、新しい利用者集合Ｕ’に属する各利用者の秘密鍵が含まれる。
【００３９】
データ保存者は、上述の再暗号化機能を利用して、自身が保存している各暗号文を、この暗号文と代理鍵とを基に再暗号化し、新しい暗号文を生成する。そして、元の暗号文をこの新しい暗号文で置き換える。新しい暗号文は、新しい利用者集合Ｕ’に属する利用者で権限が合致するものが復号可能である。従って、これらのデータへのアクセスは利用者集合Ｕ’に属する利用者に制限されているとみなすことができる。すなわち、権限が合致しさえすれば、復号が可能である利用者集合を変更することに成功したとみなせる。
【００４０】
実施形態１．
次に、本発明の暗号方式を用いた暗号システムについて図面を参照して説明する。
【００４１】
［諸定義］
まず、本実施形態の暗号システムで用いる暗号方式における各種用語の定義について説明する。Ｇ，ＧＴは、それぞれ素数ｑを位数とする巡回群であって、かつｅ：Ｇ×Ｇ→ＧＴなる双線形写像を持つものとする。gは群Ｇの生成子である。Ｆｑは位数ｑの素体である。ＶはＦｑ上のベクトル空間ＧＮを表す。また、ＡをＶの標準基底とし、Ａ：＝（ａ［ｉ］）Ｔｉ＝１，・・・，Ｎと表す。ここで、ａ［ｉ］の全ての要素は、その第ｉ番目のものを除いてＶ上０であり、第ｉ番目の要素はｇである。また、ｘ：＝（ｇ［ｉ］）Ｔｉ＝１，・・・，Ｎ∈Ｖ、ｙ：＝（ｈ［ｉ］）Ｔｉ＝１，・・・，Ｎ∈Ｖとしたとき、ｅ（ｘ，ｙ）：＝Πｅ（ｇ［ｉ］，［ｉ］）ｉ＝１Ｎ∈ＧＴとする。ただし、ｇ［ｉ］は、群Ｇの生成子であるｇとは別記号として扱っている。
【００４２】
また、群Ｇは、加法巡回群として記述される。Ｆｑの元と群Ｇの元には乗算が定義されており、Ｆｑの元がαで群Ｇの元がｇならば、それらの乗算はαｇと記述される。また、群ＧＴは、乗法巡回群として記述される。Ｆｑの元と群ＧＴの元には冪乗算が定義されており、Ｆｑの元がαで群ＧＴの元がｇＴならば、それらの乗算はｇＴαと記述される。群Ｇや群ＧＴの実現方法として、楕円曲線を用いた方法などが知られている。
【００４３】
また、ＤＯＢＧ（・，・）は、整数λとＮが入力されたら、ｐａｒａｍｓＶ＝（ｑ，Ｖ，ＧＴ，Ａ，ｅ（・，・），ｇＴ，Ｂ，Ｂ＊）を出力する双対正規直交基底生成関数である。なお、記号に付されている上付きの＊は、ＢとＢ＊とを区別するための単なる識別用の記号として用いている。ＤＯＢＧ（）内では、次のようにｐａｒａｍｓＶを生成する。最初に、大きさλのｑ，ＧＴ，Ｖ，Ａ，ｅ（・，・），ｇ：Ｇの生成子を選ぶ。また、Ｆｑのψをランダムに選び、ｇＴ：＝ｅ（ｇ，ｇ）ψを生成する。次いで、Ｆｑの元を要素とするＮ×Ｎの可逆行列ＧＬ（Ｎ，Ｆｑ）からランダムにＸを選び、Θ：＝ψ・（ＸＴ）−１を生成する。また、Ｂ：＝ＸＡ、Ｂ＊：＝ΘＡとする。なお、（ｂ［０］，・・・，ｂ［Ｎ−１］）：＝Ｂ、（ｂ＊［０］，・・・，ｂ＊［Ｎ−１］）：＝Ｂ＊である。そして、ｐａｒａｍｓＶ（ｑ，Ｖ，ＧＴ，Ａ，ｅ（・，・），ｇＴ，Ｂ，Ｂ＊）を出力する。
【００４４】
［構成］
図１は、第１の実施形態の暗号システムの全体構成図である。図１に示す暗号システムは、設定部１１と、鍵導出部１２と、暗号化部１３と、復号部１４と、代理鍵生成部１５と、再暗号化部１６と、鍵更新部１７とを備える。
【００４５】
［設定機能］
設定部１１は、公開鍵２０１とマスタ鍵２０２とを生成する。
【００４６】
図２は、設定部１１の構成例を示すブロック図である。図２に示すように、設定部１１は、設定手段１１１を含んでいてもよい。
【００４７】
公開鍵とマスタ鍵の生成方法は、基本的には一般的な関数型暗号方式における生成方法と同様でよい。ただし、以下に示すように、公開鍵２０１に、代理鍵２１３の生成に合わせて更新される更新部が少なくとも追加されるとともに、マスタ鍵２０２に、代理鍵２１３の生成に合わせて更新される更新部が少なくとも追加される。公開鍵２０１の更新部およびマスタ鍵２０２の更新部は、いずれも後述の代理鍵生成部１５によって生成される公開鍵更新因子に基づく値を設定する領域を含むものとする。なお、公開鍵更新因子は、利用者集合が変更されるタイミングで生成されるものであるので、公開鍵生成時およびマスタ鍵生成時には、当該設定部１１がランダムに選んだ仮の公開鍵更新因子に基づく値を当該領域に設定するものとする。以下では、「更新部」以外の部分であって関数型暗号方式に準拠した方法によって生成される部分を「本体部」と呼ぶ場合がある。
【００４８】
設定部１１は、例えば、次のようにして公開鍵２０１とマスタ鍵２０２とを生成する。まず、整数λとｎが入力される。すると、設定手段１１１が、ＤＯＢＧ（λ，４ｎ＋３）の出力（ｐａｒａｍｓＶ：＝（ｑ，Ｖ，ＧＴ，Ａ，ｅ（・，・），ｇＴ，Ｂ，Ｂ＊），Ｂ：＝（ｂ［１］，・・・，ｂ［４ｎ＋３］），Ｂ＊：＝（ｂ＊［１］，・・・，ｂ＊［４ｎ＋３］））を得る。設定手段１１１は、次いで、Ｂ’：＝（ｂ［１］，・・・，ｂ［ｎ］，ｂ［４ｎ＋１］，ｂ［４ｎ＋２］，ｂ［４ｎ＋３］）、Ｂ’＊：＝（ｂ＊［１］，・・・，ｂ＊［ｎ］，，ｂ＊［３ｎ＋１］，・・・，ｂ＊［４ｎ］，ｂ＊［４ｎ＋１］，ｂ＊［４ｎ＋２］，ｂ＊［４ｎ＋３］）とする。次いで、Ｆｑからランダムにγを選び、ｆ＝γｇ∈Ｖ、ｈ＝（ψ／γ）ｇとする。そして、出力手段等（図示省略）が、公開鍵２０１として（λ，ｐａｒａｍｓＶ，Ｂ’，ｆ）：＝ｐｋを出力し、マスタ鍵２０２として（Ｂ’＊，ｈ）：＝ｍｋを出力する。なお、本例の場合、ｐｋのうち、ｆ＝γｇが公開鍵２０１の「更新部」に相当し、他は「本体部」に相当する。また、ｍｋのうち、ｈがマスタ鍵の「更新部」に相当し、他は「本体部」に相当する。ここで、ある２つの４ｎ＋３成分ベクトルｚ，ｚ＊に対して以下の式（１）が成り立つ。なお、式（１）の右辺は、ｚとｚ＊の内積ｚ・ｚ＊である。
【００４９】
ｚ＊Ｂ（Ｂ＊）ｚＴ＝ｚ＊ｚＴ  ・・・式（１）
【００５０】
［鍵導出機能］
鍵導出部１２は、公開鍵２０１と、マスタ鍵２０２と、当該鍵導出部１２で生成する秘密鍵２０６に付与する権限に対応する述語ベクトル２０３と、その権限を有する利用者集合Ｕに含まれる利用者の利用者識別子２０４とに基づいて、その利用者に対応する秘密鍵２０６を生成する。
【００５１】
図３は、鍵導出部１２の構成例を示すブロック図である。図３に示すように、鍵導出部１２は、述語部生成手段１２１と、打消部生成手段１２２と、利用者識別因子生成手段１２３とを含んでいてもよい。
【００５２】
鍵導出部１２による秘密鍵２０６の生成方法は、基本的な部分については関数型暗号方式における秘密鍵の生成方法と同様でよい。ただし、本例では、利用者に固有でかつ利用者も知ることのない利用者識別因子２０５を用いて利用者固有の要素を付加する。
【００５３】
鍵導出部１２は、例えば次のようにして秘密鍵２０６を生成する。まず、最新の公開鍵２０１：＝ｐｋと、最新のマスタ鍵２０２：＝ｍｋと、述語ベクトル２０３：＝ｖと、利用者識別子２０４（例えば、利用者識別子２０４−１）：＝Ｉとが入力される。ここで、ｐｋ：＝（λ，ｐａｒａｍｓＶ，Ｂ’，ｆ）、ｍｋ：＝（Ｂ’＊，ｈ）である。すると、利用者識別因子生成手段１２３が、Ｆｑから、当該利用者の利用者識別因子２０５（例えば、利用者識別因子２０５−１）：＝αＩとσをそれぞれランダムに選ぶ。また、利用者識別因子生成手段１２３は、Ｆｑｎからベクトルｕをランダムに選ぶ。なお、利用者識別因子２０５：＝αＩは、利用者識別子２０４と、場合によってはマスタ鍵２０２との組み合わせから決定的に導出されるものであってもよい。
【００５４】
このとき選ばれた利用者識別因子２０５は、後述する代理鍵生成部１５と共有されるため、入力された利用者識別子２０４と対応づけて管理される。例えば、利用者識別子２０４と利用者識別因子２０５の対応表を生成し、保持しておいてもよい。また、例えば、利用者識別因子２０５として、利用者識別子２０４とマスタ鍵２０２とのハッシュ値を利用する場合には、その旨をあらかじめ定めておいてもよい。
【００５５】
次いで、述語部生成手段１２１が、秘密鍵２０６の述語部２０６１として、ｋ＊：＝（σｖ，０２ｎ，ｕ，１，０，αＩ）Ｂ＊を生成する。また、打消部生成手段１２２が、秘密鍵２０６の利用者依存値打消部２０６２として、ｄＩ＝αＩｈを生成する。そして、出力手段等（図示省略）が、入力された利用者識別子２０４に対応する秘密鍵２０６（例えば、秘密鍵２０６−１）として、ｓｋｖ，Ｉ：＝（ｋ＊，ｄＩ）を出力する。なお、述語部２０６１に含まれる「０２ｎ」は、全ての要素が０の要素数が２ｎ個のベクトルを表している。なお、以下、同じように０に上付きの数値または記号が付されている場合には、全ての要素が０の要素数がその上付きの数値または記号で表される個数のベクトルを表すものとする。
【００５６】
ここで、利用者識別因子αＩは利用者も知ることがなく、利用者に固有の値とみなす。また、本発明の暗号方式では、ここで生成された秘密鍵の述語部２０６１すなわちｋ＊を用いて属性ベクトルｘを指定された暗号文を復号すると、中間段階でこの利用者識別因子αＩに依存するデータである「利用者依存値」が生成されるようにする。また、利用者識別因子αＩは、この利用者依存値との間に次のような関係を有するものとする。すなわち、指定された秘密鍵を用いた結果、ｘ・ｖ＝０となる場合には、その後のステップで同秘密鍵の利用者依存値打消部２０６２に含まれるｇＩ、ｄＩを用いてこの利用者依存値を消し去ることができ、最終的な復号結果を得ることができる。一方、ｘ・ｖ＝０でない場合は、利用者依存値にランダムな値が加わりこれを復号過程の後のステップで消し去ることができずに復号に失敗する。
【００５７】
このように、本暗号方式では、秘密鍵を生成する際に利用者識別因子αＩを用いることによって、復号過程において全ての利用者ごとに異なる値を経由させるようにし、利用者ごとにその暗号文の復号を許すか否かの制御を可能にしている。
【００５８】
なお、図３に示す例では、１つの利用者識別子２０４−１が入力されると、その利用者に対応する秘密鍵２０６−１を１つ生成して出力する例を示しているが、鍵導出部１２は、利用者識別子２０４の集合からなる利用者集合Ｕを入力して、その利用者集合Ｕに含まれる各利用者識別子に対応する秘密鍵を生成して出力してもよい。
【００５９】
［暗号化機能］
暗号化部１３は、公開鍵２０１と、当該暗号化部１３で生成する暗号文２０９を復号できる権限を指定する属性ベクトル２０７とに基づいて、暗号文２０９を生成する。
【００６０】
図４は、暗号化部１３の構成例を示すブロック図である。図４に示すように、暗号化部１３は、暗号化手段１３１を含んでいてもよい。
【００６１】
暗号化の方法は、基本的には一般的な関数型暗号方式における暗号化の方法と同様でよい。ただし、以下に示すように、暗号文に、公開鍵の更新部を基に生成される第２の要素が少なくとも追加される。
【００６２】
なお、本実施形態では、ハイブリッド暗号方式を利用して文書を送信することを前提としている。このため図１では、暗号化部１３が、保護対象とする文書そのものを暗号化するのではなく、その文書を暗号化する際に使用するメッセージ鍵を生成してそれを暗号化する例を示している。ここで、ハイブリッド暗号方式とは、共通鍵暗号方式と公開鍵暗号方式とを組み合わせて用いる暗号方式をいう。より具体的には、送信者側でメッセージ鍵を任意に生成し、文書をその生成したメッセージ鍵を使用して共通鍵暗号方式で暗号化するとともに、そのメッセージ鍵を公開鍵を使用して公開鍵暗号方式で暗号化して、暗号化された文書と暗号化されたメッセージ鍵とを受信者側に送信する。そして、受信者側では、まず公開鍵暗号方式で暗号化されたメッセージ鍵を公開鍵を使用して復号してメッセージ鍵を得て、得たメッセージ鍵を使用して共通鍵暗号方式で暗号化された文書を復号して平文（文書）を得る。関数型暗号方式を発展させた本発明の暗号方式も公開鍵暗号方式の一つであるので、このようなハイブリッド暗号方式を利用して文書を送信するシステムにおいて、本発明の暗号方式を使用できる。
【００６３】
一般に、公開鍵暗号方式は鍵の配送・管理が容易であるという利点がある反面、処理に時間がかかり、大容量のファイルの暗号化には向かないという課題がある。しかし、ハイブリッド暗号方式を用いれば、共通鍵暗号方式の「処理が高速」という利点と、公開鍵暗号方式の「鍵の配送・管理が容易」という利点の両方を利用することができる。
【００６４】
暗号化部１３は、例えば次のようにしてメッセージ鍵２０８とその暗号文２０９とを生成する。まず、最新の公開鍵２０１：＝ｐｋと、属性ベクトル２０７：＝ｘ∈Ｆｑｎ（０，・・・，０）とが入力される。ここで、ｐｋ：＝（λ，ｐａｒａｍｓＶ，Ｂ’，ｆ）である。すると、暗号化手段１３１が、Ｆｑから、ｗとφとζとξとをランダムに選ぶ。暗号化手段１３１は、次いで、メッセージ鍵２０８としてＫ：＝ｇＴζを生成し、またｃ［１］：＝（ｗｘ，０２ｎ，０ｎ，ζ，φ，ξ）Ｂ、ｃ［２］：＝ζｆを生成する。そして、出力手段等（図示省略）が、メッセージ鍵２０８であるＫを出力し、暗号文２０９としてＣｘ：＝（ｃ［１］，ｃ［２］）を出力する。
【００６５】
なお、図１では図示省略しているが、ハイブリッド暗号システムとして、さらに暗号化部１３で生成されたメッセージ鍵を使用して文書を共通鍵暗号方式により暗号化する第２の暗号化部と、そのように暗号化された文書を、該文書に対応付けられているメッセージ鍵を使用して復号する第２の復号部とを備えていてもよい。
【００６６】
そのような場合には、第２の暗号化部が、暗号化部１３から出力されたメッセージ鍵２０８を使用して、保護対象とする文書を共通鍵暗号方式を使用して暗号化する。そして、その暗号化された文書とともに暗号化されたメッセージ鍵２０９とが受信者側（より具体的には、データ保存者）に送信される。
【００６７】
保護対象とする文書のサイズが小さく、処理時間がパフォーマンスに影響のない範囲である場合などには、ハイブリッド暗号を利用せずに、文書を直接、本発明の暗号方式を使用して暗号化して送信することも可能である。そのような場合は、暗号化部１３は、図５に示すように、公開鍵２０１と、属性ベクトル２０７と、暗号化の対象である文書２０８とを入力として、該文書２０８の暗号文２０９を出力する構成であってもよい。図５は、暗号化部１３の他の構成例を示すブロック図である。なお、この場合の文書２０８の暗号化の方法はメッセージ鍵の場合と同様でよい。また、図５に示す構成において、暗号化の対象とする文書２０８の代わりに、メッセージ鍵２０８となる乱数（上述のζに相当）を入力するようにしてもよい。その場合は、そのまま上述のハイブリッド暗号方式に対応可能となる。ただし、本発明の暗号方式では、乱数＝メッセージ鍵とはせず、入力された乱数と公開鍵とを組み合わせてメッセージ鍵を生成するものとする。
【００６８】
［復号機能］
復号部１４は、公開鍵２０１と、秘密鍵２０６と、暗号文２０９とに基づいて、当該暗号文２０９の復号文である平文２１０を生成する。
【００６９】
図６は、復号部１４の構成例を示すブロック図である。図６に示すように、復号部１４は、依存値生成手段１４１と、打消値生成手段１４２と、打消手段１４３とを含んでいてもよい。
【００７０】
復号の方法は、基本的には一般的な関数型暗号方式における復号方法と同様でよい。ただし、以下に示すように、利用者依存値の追加に伴って新たな処理が少なくとも追加される。より具体的には、復号処理の中間段階において秘密鍵２０６の述語部２０６１を基に暗号文から利用者依存値２１４を生成した上で、その利用者依存値２１４を秘密鍵２０６の利用者依存値打消部２０６２を基に打ち消す処理が少なくとも追加される。
【００７１】
復号部１４は、例えば次のようにして平文２１０を生成する。まず、最新の公開鍵２０１：＝ｐｋと、復号者が保持している秘密鍵２０６（例えば、秘密鍵２０６−１）：＝ｓｋｖ，Ｉと、暗号文２０９：＝Ｃｘとが入力される。ここで、ｐｋ：＝（λ，ｐａｒａｍｓＶ，Ｂ’，ｆ）、ｓｋｖ，Ｉ：＝（ｋ＊，ｄＩ）、Ｃｘ：＝（ｃ［１］，ｃ［２］）、ｃ［１］：＝（ζ，ｗｘ，０２ｎ，０ｎ，φ）Ｂ、ｃ［２］：＝ζｆである。すると、依存値生成手段１４１が、入力された秘密鍵２０６の述語部２０６１であるｋ＊を用いて、利用者依存値２１４をｒＩ：＝ｅ（ｃ［１］，ｋ＊）と生成する。また、打消値生成手段１４２が、入力された秘密鍵２０６の利用者依存値打消部２０６２であるｄＩを用いて、利用者依存値打消値２１５を、ＲＩ：＝ｅ（ｃ［２］，ｄＩ）と生成する。次いで、打消手段１４３が、復号文として、Ｋ’＝ｒＩ／ＲＩ＝｛ｅ（ｃ［１］，ｋ＊）／ｅ（ｃ［２］，ｄＩ）｝を生成する。そして、出力手段等（図示省略）が、復号文である平文２１０として、メッセージ鍵Ｋ’を出力する。
【００７２】
この後は、このメッセージ鍵Ｋ’を用いて、メッセージ鍵の暗号文２０９とともに送信された共通鍵暗号方式により暗号化された文書の暗号文を復号すれば、復号結果として該文書の平文を得ることができる。なお、共通鍵暗号方式による復号処理を行う第２の復号部を備えている場合には、その第２の復号部を使用して該文書の平文を得てもよい。
【００７３】
また、復号部１４は、暗号文２０９として直接文書が暗号化されたものが入力された場合もメッセージ鍵の復号処理と同様の復号処理を行えばよい。
【００７４】
［代理鍵生成機能］
代理鍵生成部１５は、公開鍵２０１と、マスタ鍵２０２と、変更後の利用者集合Ｕ’である変更後の利用者集合２１１とに基づいて、代理鍵２１３と、新しい公開鍵２０１と、新しいマスタ鍵２０２と、各利用者の更新鍵２１２とを生成する。ここで、新しい公開鍵２０１とは、利用者集合を変更する前の公開鍵２０１の更新部を、以下に示す公開鍵更新因子を基に変更したものをいう。また、新しいマスタ鍵２０２とは、利用者集合を変更する前のマスタ鍵２０２の更新部を、同じ公開鍵更新因子を基に変更したものをいう。また、更新鍵２１２は、新しい秘密鍵２０６の一部となるものである。また、代理鍵２１３は、上述したように、ある「利用者集合Ｕ」に属する利用者の秘密鍵で復号できる暗号文を、新しい「利用者集合Ｕ’」に属する利用者の秘密鍵で復号できる暗号文に変換する際に必要となる情報を含んだ鍵である。
【００７５】
図７は、代理鍵生成部１５の構成例を示すブロック図である。図７に示すように、代理鍵生成部１５は、更新因子選択手段１５１と、公開鍵更新手段１５２と、代理鍵生成手段１５３と、マスタ鍵更新手段１５４と、識別因子取得・生成手段１５５と、更新鍵生成手段１５６とを含んでいてもよい。
【００７６】
代理鍵生成部１５は、例えば次のようにして代理鍵、その他利用者集合の変更に伴い必要とされる各種データを生成する。まず、最新の公開鍵２０１：＝ｐｋと、マスタ鍵２０２：＝ｍｋと、新たな利用者集合２１１：＝Ｕ’とが入力される。ここで、ｐｋ：＝（λ，ｐａｒａｍｓＶ，Ｂ’，ｆ）、ｍｋ：＝（Ｂ’＊，ｈ）である。また、Ｕ∋Ｉとする。すると、まず更新因子選択手段１５１が、Ｆｑから今回の利用者集合の更新にかかる公開鍵更新因子２１６：＝γ’をランダムに選ぶ。次いで、公開鍵更新手段１５２が、公開鍵の更新部２１７をｆ’＝γ’ｇと生成する。また、代理鍵生成手段１５３が、代理鍵２１３をρ＝γ’／γと生成する。また、マスタ鍵更新手段１５４が、マスタ鍵２０２と公開鍵更新因子γ’からマスタ鍵の更新部２１８をｈ’＝（１／ρ）ｈと生成する。
【００７７】
次いで、識別因子取得・生成手段１５５は、変更後の利用者集合Ｕ’に含まれる各利用者識別子２０４を基に、各々の利用者識別子２０４に対応づけられる利用者識別因子２０５：＝（αＩ）Ｉ∈Ｕを得る。ここで得る利用者識別因子２０５は、変更前の利用者集合に含まれている利用者については該利用者の秘密鍵生成時に用いられた利用者識別因子２０５と同じ値であることを前提とする。識別因子取得・生成手段１５５は、例えば、鍵導出部１２が管理している対応表を参照することにより、該当する利用者識別因子２０５を得てもよい。また、例えば、鍵導出部１２が、利用者識別子２０４と、場合によってはマスタ鍵２０２との組み合わせから決定的に利用者識別因子２０５を導出していた場合には、識別因子取得・生成手段１５５は、同じ方法を用いて決定的に利用者識別因子２０５を導出することにより、同じ値の利用者識別因子２０５を得ることができる。なお、変更後の利用者集合に新たに含まれた利用者については、代理鍵生成部１５が鍵導出部１２と同じ方法を用いて新たに生成すればよい。なお、鍵導出部１２に依頼して新しく加入した利用者の秘密鍵を生成させた上で、上述の方法と同じ方法でその利用者の利用者識別因子２０５を得てもよい。
【００７８】
次いで、更新鍵生成手段１５６は、公開鍵更新因子２１６を基に、各利用者の秘密鍵２０６の変更部分である更新鍵２１２を、（ｕｋＩ）Ｉ∈Ｕ＝（ｄ’Ｉ）Ｉ∈Ｕ：＝（αＩｈ’）Ｉ∈Ｕと生成する。そして、出力手段等（図示省略）が、新しい公開鍵２０１としてｐｋ’：＝（λ，ｐａｒａｍｓＶ，Ｂ’，ｆ’）を出力し、新しいマスタ鍵２０２としてｍｋ’：＝（Ｂ＊’，ｈ’）を出力し、代理鍵２１３としてｒｋ：＝ρを出力し、更新鍵２１２として（ｕｋＩ）Ｉ∈Ｕ＝（ｄ’Ｉ）Ｉ∈Ｕ：＝（αＩｈ’）Ｉ∈Ｕを出力する。
【００７９】
［再暗号化機能］
再暗号化部１６は、利用者集合の変更に伴い、公開鍵２０１と、代理鍵２１３とに基づいて、変更前の秘密鍵２０６で復号可能な暗号文２０９から、変更後の秘密鍵２０６で復号可能な新たな暗号文２０９を生成する。
【００８０】
図８は、再暗号化部１６の構成例を示すブロック図である。図８に示すように、再暗号化部１６は、再暗号化手段１６１を含んでいてもよい。
【００８１】
再暗号化部１６は、例えば次のようにして既存の暗号文２０９から新しい（再暗号化された）暗号文２０９を生成する。まず、最新の公開鍵２０１：＝ｐｋと、代理鍵２１３：＝ｒｋと、変更前の暗号文２０９：＝Ｃｘとが入力される。ここで、ｐｋ：＝（λ，ｐａｒａｍｓＶ，Ｂ’，ｆ）、ｒｋ：＝ρ、Ｃｘ：＝（ｃ［１］，ｃ［２］）、ｃ［１］：＝（ｗｘ，０２ｎ，０ｎ，ζ，φ，ξ）Ｂ、ｃ［２］：＝ζｆである。すると、再暗号化手段１６１が、ｃ’［２］：＝ρ・ｃ［２］を生成して、Ｃｘ’＝（ｃ［１］、ｃ’［２］）とする。そして、出力手段等（図示省略）が、再暗号化された暗号文２０９としてＣｘ’を出力する。
【００８２】
［鍵更新機能］
鍵更新部１７は、公開鍵２０１と、変更前の秘密鍵２０６（例えば、秘密鍵２０６−１）と、その秘密鍵２０６の変更部分である更新鍵２１２（例えば、更新鍵２１２−１）とに基づいて、新しい秘密鍵２０６（例えば、秘密鍵２０６−１）を生成する。
【００８３】
図９は、鍵更新部１７の構成例を示すブロック図である。図９に示すように、鍵更新部１７は、鍵更新手段１７１を含んでいてもよい。
【００８４】
鍵更新部１７は、例えば次のようにして新しい秘密鍵２０６を生成する。まず、最新の公開鍵２０１：＝ｐｋと、ある利用者の秘密鍵２０６：＝ｓｋｖ，Ｉと、該利用者の更新鍵２１２：ｕｋＩ：＝とが入力される。ここで、ｐｋ：＝（λ，ｐａｒａｍｓＶ，Ｂ’，ｆ）、ｕｋＩ＝ｄ’Ｉ＝（αＩｈ’）、ｓｋｖ，Ｉ：＝（ｋ＊，ｄＩ）である。すると、鍵更新手段１７１は、ｓｋ’ｖ，Ｉ：＝（ｋ＊，ｄ’Ｉ）と生成する。すなわち、既存の秘密鍵２０６に含まれる利用者依存値打消部２０６２の一部であるｄＩを更新鍵として入力されたｄ’Ｉに更新する。そして、新しい秘密鍵２０６として、ｓｋ’ｖ，Ｉを出力する。
【００８５】
［暗号方式の検証］
上述の暗号方式が正しく動作することは次のことからわかる。まず、再暗号化がなされない場合に、上述の暗号化部１３で暗号化の対象とされたメッセージ鍵Ｋ（平文２０８）と、上述の復号部１４で復号処理によって得られたメッセージ鍵Ｋ’（平文２１０）とが等しいことは、以下のようにわかる。ただし、Ａ＾ＢはＡＢを表す。
【００８６】
Ｋ’＝（ｅ（ｃ［１］，ｋ＊）／ｅ（ｃ［２］，ｄＩ））
＝（ｇＴ＾（ζ＋ζαＩ＋ｗσｖｘ））／（ｇＴ＾（ζαＩ））
＝ｇＴ＾ζ
【００８７】
これが、ｖ・ｘ＝０の場合、
Ｋ’＝ｇＴ＾ζ＝ｅｋ
となり、正しく復号されることがわかる。
【００８８】
ｖ・ｘ＝０の条件を課すことで、利用者のもつ属性ｖが満たすべき条件を、述語ｘを使って使用することができる。すなわち、属性に応じたアクセスコントロールを実施することができる。ここで、ｅ（ｃ［１］，ｋ＊）が利用者依存値である。
【００８９】
また、更新された秘密鍵ｓｋ’ｖ，Ｉを用いて復号すれば、再暗号化しても復号結果が変わらないことは、次のようにわかる。
【００９０】
更新された秘密鍵ｓｋ’ｖ，Ｉは、（ｋ＊，ｄ’Ｉ）であり、また、再暗号化された暗号文の更新部分は、ｃ’［２］：＝ρｃ［２］である。ここでｄ’Ｉ＝（αＩｈ’）、ｆ’＝γ’ｇ、ρ＝γ’／γである。すると、再暗号化される前の暗号文の要素ｃ［２］＝ζｆ＝ζγｇであるが、更新されると、ｃ’［２］＝ρｃ［２］＝（γ’／γ）ζγｇ＝（γ’）ζｇ＝ζｆ’となり、更新された公開鍵ｐｋ’で暗号化された場合と同じ値となる。秘密鍵ｓｋ’ｖ，Ｉは、ｄＩがｄ’Ｉ＝（αＩｈ’）に置き換えられ、これも新しい公開鍵ｐｋ’を用いて作られた場合と同じ値になる。従って、更新される前と同様の計算により、再暗号化された暗号文を更新された秘密鍵を用いて復号すると、ｇＴ＾ζ＝ｅｋとなり、再暗号化する前と同じ値が復号される。
【００９１】
一方、更新された秘密鍵ｓｋ’ｖ，Ｉが手に入らない場合、すなわち古い秘密鍵ｓｋｖ，Ｉしか持っていない場合は、再暗号化された暗号文を復号できない。これは、更新の前後で秘密鍵は（γ’−γ）αＩｇと変化していて、利用者識別因子αＩがランダムに選ばれているため、Ｄｉｆｆｉｅ−Ｈｅｌｌｍａｎ問題を解けない限り更新された鍵を手に入れることができないためである。
【００９２】
以上の性質から、ある暗号文に対して復号できる人々を簡易な再暗号化処理を用いて動的に制御することができることがわかる。なお、暗号化時に指定された述語ベクトルは、非特許文献１と同様の理由により、この暗号文を復号できないものには明かさない。また、一旦復号して再度暗号化する場合とは異なり、本発明の暗号方式によれば再暗号化時にこの述語ベクトルを知る必要がないため、再暗号化処理を外部の業者に委託しても安全性を保つことができる。
【００９３】
なお、上述の方法はあくまで一例であって、本発明の暗号方式で追加された機能に関する部分を除けば、一般的な関数型暗号で用いられる他の方法を用いてもよい。
【００９４】
また、本発明の暗号方式で追加された機能に関する部分においても、上記例に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。例えば、利用者識別因子は、利用者に固有でかつ利用者も知ることのないものであればよい。また、復号処理との関係において、利用者識別因子を生成する機能が、暗号文の一部と秘密鍵の述語部を入力として双線形写像を計算するものであってもよい。そのような場合は、利用者依存値を生成する機能が、暗号文の一部と秘密鍵の利用者依存値打消部を入力として双線形写像を計算するものであってもよい。
【００９５】
また、秘密鍵の述語部は、マスタ鍵と述語ベクトルと利用者識別因子とを用いて生成されるものであればよい。また、利用者打消部と公開鍵との関係において、秘密鍵の述語部が、利用者識別因子をその成分に含むベクトルと行列である公開鍵の一成分との積であってもよい。そのような場合には、秘密鍵の利用者打消部は、二つ以上の成分からなり、そのうちの二つが公開鍵の一つの要素と利用者識別子の積からなる項を含むものであってもよい。
【００９６】
また、公開鍵更新因子は、ランダムに選択されるものであればよい。そして、公開鍵の更新部は、そのように選択された公開鍵更新因子と公開鍵とを用いて生成されるものであればよい。また、マスタ鍵の更新部は、公開鍵更新因子に基づいて生成されるものであればよい。また、代理鍵は、公開鍵更新因子をマスタ鍵の一部で割った値としてもよい。その上で、更新鍵を、述語ベクトルに依存を必要とせず、新しいマスタ鍵から生成される秘密部の一部とするのが好ましい。
【００９７】
以上のように、本実施形態によれば、復号可否を属性単位（例えば、組織単位）で制御可能である上に、安全かつ効率よく、そのメンバの変更に対応できる。
【００９８】
実施形態２．
次に、本発明の第２の実施形態について説明する。本実施形態は、本発明の暗号方式をデータ保存システムに適用させた例である。図１０は、第２の実施形態のデータ保存システムの全体構成の一例を示すブロック図である。なお、第１の実施形態の暗号システムと同じ機能部については同じ符合を付し説明を省略する。図１０に示すように、本実施形態のデータ保存システムは、「管理者」が使用する管理装置３１と、「データ登録者」が使用する暗号化装置３２と、「データ保存者」が使用するデータ保持・再暗号化装置３３と、「データ利用者」が使用する復号装置３４とを備えている。なお、本実施形態では、復号装置３４は２以上あり、復号が許可される利用者集合に含まれる各利用者（各「データ利用者」）が所持しているものとする。また、暗号化装置３２についても複数の利用者が使用できるよう２以上備えていてもよい。また、「データ利用者」が同時に「データ登録者」であってもよい。この場合、暗号化装置３２と復号装置３４とが同一の装置によって実現される。例えば、１つの利用者端末内に、暗号化装置３２と復号装置３４とが実装されていてもよい。
【００９９】
管理装置３１は、設定部１１と、鍵導出部１２と、代理鍵生成部１５とを備えている。また、暗号化装置３２は、ハイブリッド暗号化部３２１を備えている。ハイブリッド暗号化部３２１は、暗号化部１３と、第２の暗号化部３２２とを含んでいる。また、データ保持・再暗号化装置３３は、再暗号化部１６と、データ保持部３３１とを備えている。また、復号装置３４は、鍵更新部１７と、ハイブリッド復号部３４１とを備えている。ハイブリッド復号部３４１は、復号部１４と、第２の復号部３４２とを含んでいる。なお、図１０では、使用者の区分けによる装置の分類を示しているが、ここで示した各装置（例えば、管理装置、暗号化装置、復号装置、データ保持・再暗号化装置）の実現例として、それらが２以上の装置によって実現されていてもかまわない。例えば、設定部１１と、鍵導出部１２と、代理鍵生成部１５とがそれぞれ異なる装置に実装され、それらが安全な通信経路によって接続されることによって１つの管理装置３１として動作するものであってもよい。
【０１００】
本実施形態において、ハイブリッド暗号化部３２１は、暗号化の対象とされる文書２１９と、属性ベクトル２０７とが入力されると、共通鍵暗号方式を用いて文書２１９を暗号化した暗号文２２０と、公開鍵暗号方式（より具体的には本発明の暗号方式）を用いて、該暗号文２２０を暗号化する際に使用したメッセージ鍵２０８を暗号化した暗号文２０９とを暗号データセットとして出力する。また、第２の暗号化部３２２は、当該ハイブリッド暗号化部３２１において、暗号化の対象とされる文書２１９と、暗号化部１３が生成したメッセージ鍵２０８とを入力として、文書２１９をメッセージ鍵２０８を使用して共通鍵暗号方式で暗号化し、文書２１９の暗号文２２０を生成する。
【０１０１】
また、ハイブリッド復号部３４１は、文書の暗号文２２０と、該暗号文２２０を暗号化する際に使用したメッセージ鍵の暗号文２０９とが入力されると、文書の暗号文２２０の復号を試み、成功すれば該暗号文２２０の復号文である文書２２１を出力する。また、第２の復号部３４２は、当該ハイブリッド復号部３４１において、文書の暗号文２２０と、復号部１４によって復号されたメッセージ鍵２１０とを入力として、暗号文２２０をメッセージ鍵２１０を使用して復号し、暗号文２２０の復号文である文書２２１を生成する。
【０１０２】
また、データ保持部３３１は、文書の暗号文２２０と、該暗号文２２０を暗号化する際に使用したメッセージ鍵の暗号文２０９とを対応づけて１つの暗号データセットとして保持する記憶部である。
【０１０３】
また、本実施形態では、管理装置３１と、暗号化装置３２と、データ保持・再暗号化装置３３と、復号装置３４とは、各々ネットワークを介して接続されているものとする。なお、暗号化装置３２と復号装置３４とは、データ保持・再暗号化装置３３を介して暗号データセットを送受信可能であれば、直接通信可能に接続されていなくてもよい。
【０１０４】
設定部１１，鍵導出部１２，代理鍵生成部１５は、例えば管理装置３１が備えるＣＰＵ等のプログラムに従って動作する情報処理装置によって実現される。また、暗号化部１３，第２の暗号化部３２２は、例えば暗号化装置３２が備えるＣＰＵ等のプログラムに従って動作する情報処理装置によって実現される。また、再暗号化部１６は、例えばデータ保持・再暗号化装置３３が備えるＣＰＵ等のプログラムに従って動作する情報処理装置によって実現される。また、データ保持部３３１は、例えばデータ保持・再暗号化装置３３が備えるデータベースシステム、記憶装置等によって実現される。また、鍵更新部１７，復号部１４，第２の復号部３４２は、例えば復号装置３４が備えるＣＰＵ等のプログラムに従って動作する情報処理装置によって実現される。
【０１０５】
次に、本実施形態の動作について説明する。本実施形態の動作は大きく、準備フェーズ、暗号化フェーズ、再暗号化フェーズ、復号フェーズに分けられる。まず、準備フェーズについて説明する。準備フェーズは本システムを稼働させる前段階における処理として、次のように行われる。まず管理者が管理装置３１に対して指示を出すなどして、設定部１１に公開鍵２０１とマスタ鍵２０２とを生成させる。マスタ鍵２０２は当該管理装置３１内で保存し、他の装置には開示しない。また、公開鍵２０１は後に説明するが更新されつづける。この更新され続ける公開鍵２０１は、図１０では図示省略しているが、その最新の内容が、鍵導出部１２および代理鍵生成部１５の他にも、少なくとも鍵更新部１７、暗号化部１３、再暗号化部１６、復号部１４に対して、利用可能なように公開されているものとする。なお、鍵更新時の一連の処理中（例えば、秘密鍵の配布中や再暗号化中）においてはこの限りではなく、再暗号化が完了するまであえて公開を停止するなども考えられる。
【０１０６】
次いで、管理者は、データを読むことを許す利用者（データ利用者）を定めて、これらの識別子（利用者識別子２０４）からなる集合を利用者集合とする。そして、利用者集合に含まれる各利用者識別子２０４に、それぞれの権限に対応する述語ベクトル２０３を定めた上で、鍵導出部１２に、各利用者に対応する秘密鍵２０６を生成させる。そして、生成された秘密鍵２０６を該当する利用者が使用する復号装置３４に各々配布する。配布方法としては、例えば直接安全な通信路で送付してもよい。また、例えば各利用者のみが復号できる暗号文としてデータ保持・再暗号化装置３３に送付して委託してもよい。各利用者の復号装置３４への配布が完了すると、準備フェーズを終了する。
【０１０７】
次に、暗号化フェーズについて説明する。暗号化フェーズは、データ登録者がデータ保存者にデータの保存を委託したい場合に次のように行われる。まず、データ登録者は、最新の公開鍵２０１を手に入れる。この公開鍵２０１は、管理装置３１からだけでなく、データ保持・再暗号化装置３３から入手してもよい。次いで、データ登録者は、データ保存者に保持させたいデータの平文である文書２１９と、該文書２１９を復号可能な権限を指定する属性ベクトル２０７とを指定した上で、ハイブリッド暗号化部３２１に指示を出し、該文書２１９の暗号文２２０と、該暗号文２２０を生成した際に使用したメッセージ鍵２０８の暗号文２０９とを生成させる。ハイブリッド暗号化部３２１では、指示に応じて、まず暗号化部１３が、メッセージ鍵２０８と該メッセージ鍵２０８の暗号文２０９とを生成し、次いで、第２の暗号化部３２２が、生成されたメッセージ鍵２０８を用いて文書２１９の暗号文２２０を生成する処理を行う。なお、ここでの属性ベクトル２０７による指定が、当該文書へのアクセス制御となる。
【０１０８】
データ登録者は、このようにして得た文書の暗号文２２０と、該暗号文２２０を暗号化する際に使用したメッセージ鍵の暗号文２０９とを含む暗号データセットを、データ保持・再暗号化装置３３に送信する。暗号データセットを受け取ったデータ保持・再暗号化装置３３は、受け取った暗号データセットをデータ保持部３３１に記憶させる。
【０１０９】
次に、再暗号化フェーズについて説明する。再暗号化フェーズは、管理者が、データの復号可能権限を有する利用者集合に含ませる利用者を変更したい場合に次のように行われる。なお、この利用者集合の変更は、暗号文が利用者自身の権限に合致する権限を指定して生成されていれば復号できる利用者を個別に変更することに他ならない。このような利用者集合の変更は、組織に新たな人員が加わったり、人員が組織を去るとき等に発生する。まず、管理者は、新しい利用者集合２１１と、マスタ鍵２０２とを指定して、代理鍵生成部１５に指示を出し、新しい公開鍵２０１と、代理鍵２１３と、新しいマスタ鍵２０２と、新しい利用者集合に含まれる各利用者に応じた更新鍵２１２とを生成させる。そして、生成された代理鍵２１３をデータ保持・再暗号化装置３３に送付する。この時、生成された各利用者の更新鍵２１２についても、各利用者が使用する復号装置３４に配布する。配布方法としては、秘密鍵２０６の場合と同様でよい。また、この時、従来（変更前）の公開鍵およびマスタ鍵を生成された新しい公開鍵２０１およびマスタ鍵２０２で書き換える。このように、公開鍵２０１とマスタ鍵２０２とは更新され続ける。なお、後述するが、公開鍵２０１とマスタ鍵２０２の更新に併せて各利用者の秘密鍵２０６も更新され続ける。
【０１１０】
データ保持・再暗号化装置３３では、代理鍵２１３を受け取ったなら、再暗号化部１６に指示を出し、データ保持部３３１に保持している各暗号データセットのうちの暗号文２０９（すなわちメッセージ鍵の暗号文）に対して、順次再暗号化処理を行わせる。再暗号化部１６では、上述の再暗号化処理によって、指定された暗号文２０９を順次新しい暗号文２０９に書き換える。この書き換え処理により、保持している暗号文２０９を復号できる利用者が、新しい利用者集合に含まれる各利用者に変更される。
【０１１１】
復号装置３４では、更新鍵２１２を受け取ったなら、鍵更新部１７が、各自秘密鍵２０６を更新する。この更新は、更新鍵２１２を受け取る度に行われ、秘密鍵２０６が更新され続ける。なお、データ保持・再暗号化装置３３に更新鍵の暗号文が委託されている場合には、復号者は、各々データ保持・再暗号化装置３３にアクセスし、データ保持部３３１から自身の更新鍵２１２を暗号文の形で受け取り、それを変更前の秘密鍵等を用いて復号して更新鍵を得ればよい。なお、更新鍵取得のためのデータ保持・再暗号化装置３３へのアクセスは、例えば、更新鍵２１２の更新の通知を受け取ったときに行うようにしてもよいし、データ保持・再暗号化装置３３から暗号文を取り寄せる際に併せて更新鍵の登録有無をチェックすることにより行うことも可能である。
【０１１２】
次に、復号フェーズについて説明する。復号フェーズは、データ利用者が、データ保持・再暗号化装置３３から所望の文書（より具体的には、文書の暗号文２２０を含む暗号データセット）を取り寄せた場合に次のように行われる。あるデータ利用者が、データ保持・再暗号化装置３３から所望の文書の暗号文２２０を含む暗号データセットを取り寄せたとする。データ利用者は、自身の秘密鍵２０６を指定した上で、ハイブリッド復号部３４１に指示を出し、取り寄せた暗号データセットに対して復号処理を行わせる。ハイブリッド復号部３４１では、指示に応じて、まず復号部１４が暗号データセットに含まれる、メッセージ鍵の暗号文２０９の復号を試み、それが成功すると、得られたメッセージ鍵２１０を用いて第２の復号部３４２が文書の暗号文２２０の復号を行う。
【０１１３】
このとき、データ利用者が、メッセージ鍵の暗号文２０９の暗号化時に指定された権限を保持しているならば、自身の秘密鍵２０６を用いることにより、復号部１４での復号処理によりメッセージ鍵２１０を得ることができる。そして、このメッセージ鍵２１０を用いて第２の復号部３４２で文書の暗号文２２０を復号することにより、所望の文書２２１を得ることができる。
【０１１４】
以上のように、本実施形態によれば、クラウド等の外部機関により提供されるデータ保存サービスを利用した場合であっても、データ保存者を含む外部へのデータ漏洩の恐れを低減させつつ、データへのアクセス制御を属性単位（例えば、組織単位）で安全かつ効率よく行うことができる。
【０１１５】
特に、データを復号できる利用者の権限を指定すること、データを復号できる利用者の集合を変更することで、データへのアクセス制御を柔軟にすることができる。多くのデータ保存サービスにおけるアクセス制御は、権限によるアクセス権限の制御や利用者の加入に加えて失効が可能であることが求められている。このような求めに対して、暗号化によるアクセス制御においても、対応することができるようになる。暗号化によるアクセス制御はデータ保存者がデータを盗み見る可能性を心配する必要がないという意味において、強力な方法である。この様な強力な方法に対して、複数の利用者を一括りにしてアクセス権限を設定可能にし、また随時利用者の追加と失効を可能にする方法を提供することができることは、データ保存サービスの利用対象を大きく広げるものである。
【０１１６】
なお、図１０では、本データ保持システムが、ハイブリッド暗号を利用してデータを暗号化し、保持する場合の構成例を示したが、ハイブリッド暗号を利用せずに、直接データを本発明の暗号方式を用いて暗号化し、保持するようにしてもよい。そのような場合には、例えば、図１１に示すような構成であってもよい。
【０１１７】
図１１は、本実施形態のデータ保持システムの他の構成例を示すブロック図である。図１１に示すデータ保持システムは、暗号化装置３２が、ハイブリッド暗号化部３２１に代わって、単に暗号化部１３を備えている点が異なる。また、復号装置３４が、ハイブリッド復号部３４１に代わって、単に復号部１４を備えている点が異なる。それにより、暗号化部１３での暗号化対象がメッセージ鍵２０８ではなく平文（文書）２１９となっており、復号部１４での復号対象が、メッセージ鍵の暗号文２０９ではなく、文書の暗号文２２０となっており、データ保持部３３１の保持対象が暗号データセットではなく、文書の暗号文２２０となっているが、基本的な動作は図１０の場合と同様である。
【０１１８】
図１２は、発明の概要を示すブロック図である。図１２に示すように、本発明の暗号システムは、設定手段１０１と、鍵導出手段１０２と、暗号化手段１０３と、復号手段１０４と、代理鍵生成手段１０５と、再暗号化手段１０６とを備える。
【０１１９】
設定手段１０１（例えば、設定部１１）は、関数型暗号方式に準拠した方法によって生成される本体部の他に、復号できる利用者の集合である利用者集合の変更に伴って変更される部分であってランダムに選択される公開鍵更新因子に基づく値が設定される部分である更新部を含む公開鍵およびマスタ鍵を生成する。
【０１２０】
鍵導出手段１０２（例えば、鍵導出部１２）は、公開鍵、マスタ鍵、述語ベクトルおよび利用者識別子が入力されると、利用者に固有でかつ利用者も知ることのない利用者識別因子を生成し、マスタ鍵と述語ベクトルと利用者識別因子とに基づいて生成される述語部と、利用者識別因子とマスタ鍵とに基づいて生成される利用者依存値打消部とを含む秘密鍵を生成する。
【０１２１】
暗号化手段１０３（例えば、暗号化部１３）は、関数型暗号方式に準拠した方法により、属性ベクトルを指定して暗号文を生成する。
【０１２２】
復号手段１０４（例えば、復号部１４）は、公開鍵、秘密鍵および暗号文が入力されると、暗号文と秘密鍵の述語部とに基づいて、該秘密鍵を生成する際に使用された利用者識別因子に依存する利用者依存値を生成するとともに、暗号文と秘密鍵の利用者依存値打消部とに基づいて、該利用者依存値を打ち消すための利用者依存値打消値を生成して、生成された利用者依存値と利用者依存値打消値とを用いて暗号文を復号する。
【０１２３】
代理鍵生成手段１０５（例えば、代理鍵生成部１５）は、公開鍵とマスタ鍵と変更後の利用者集合とが入力されると、公開鍵更新因子を新たに生成して、生成された公開鍵更新因子に基づいて、公開鍵の更新部と、秘密鍵の更新部分である更新鍵と、マスタ鍵の更新部とを生成するとともに、生成された公開鍵更新因子と、変更前の公開鍵から得られる公開鍵更新因子と変更前のマスタ鍵とに基づいて、変更前の利用者集合に属する利用者の秘密鍵で復号できる暗号文を変更後の利用者集合に属する利用者の秘密鍵で復号できる暗号文に変換するための代理鍵と、マスタ鍵の更新部とを生成する。
【０１２４】
また、鍵導出手段１０２は、利用者識別因子をその成分に含むベクトルと行列である公開鍵の一成分との積である述語部と、２以上の成分からなり、そのうちの２つが公開鍵の１つの要素と利用者識別因子の積からなる項を含む利用者依存値打消部とを含む秘密鍵を生成してもよい。
【０１２５】
また、復号手段１０４は、入力された暗号文の一部と秘密鍵の述語部とを用いて双線形写像を計算することによって、利用者依存値を生成し、また、入力された暗号文の一部と秘密鍵の利用者依存値打消部とを用いて双線形写像を計算することによって、利用者依存値打消値を生成してもよい。
【０１２６】
また、代理鍵生成手段１０５は、公開鍵更新因子をマスタ鍵の更新部に含ませるとともに、新たに生成した公開鍵更新因子を変更前のマスタ鍵の一部で割った値を含む代理鍵を生成し、かつ更新鍵を、述語ベクトルを要せずに、新しいマスタ鍵から生成される秘密鍵の一部として生成してもよい。
【０１２７】
このような構成を備えることによって、復号可否を属性単位で制御可能にしつつそのメンバの変更に対して安全にかつ効率よく対応できる。
【０１２８】
この出願は、２０１２年１１月３０日に出願された日本特許出願２０１２−２６２５５５を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【０１２９】
以上、実施形態を参照して本願発明を説明したが、本願発明は上記の実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【産業上の利用の可能性】
【０１３０】
本発明は、秘匿性のあるデータの受け渡しをネットワークを介して行う用途であって、そのデータへのアクセス制御を組織等属性単位で指定したい場合に好適に適用可能である。
【符号の説明】
【０１３１】
１１  設定部
１２  鍵導出部
１３  暗号化部
１４  復号部
１５  代理鍵生成部
１６  再暗号化部
１０１  設定手段
１０２  鍵導出手段
１０３  暗号化手段
１０４  復号手段
１０５  代理鍵生成手段
１０６  再暗号化手段
２０１  公開鍵
２０２  マスタ鍵
２０３  述語ベクトル
２０４  利用者識別子
２０５  利用者識別因子
２０６  秘密鍵
２０６１  述語部
２０６１  利用者依存値打消部
２０７  属性ベクトル
２０８，２１０  平文（メッセージ鍵または文書）
２０９  暗号文（メッセージ鍵または文書）
２１１  変更後の利用者集合
２１２  更新鍵
２１３  代理鍵
２１４  利用者依存値
２１５  利用者依存値打消値
２１６  公開鍵更新因子
２１７  公開鍵の更新部
２１８  マスタ鍵の更新部
２１９，２２１  文書
２２０  文書の暗号文
３１  管理装置
３２  暗号化装置
３２１  ハイブリッド暗号化部
３２２  第２の暗号化部
３３  データ保持・再暗号化装置
３３１  データ保持部
３４  復号装置
３４１  ハイブリッド復号部
３４２  第２の復号部
【図１】
2014083784.tif 000003
【図２】
2014083784.tif 000004
【図３】
2014083784.tif 000005
【図４】
2014083784.tif 000006
【図５】
2014083784.tif 000007
【図６】
2014083784.tif 000008
【図７】
2014083784.tif 000009
【図８】
2014083784.tif 000010
【図９】
2014083784.tif 000011
【図１０】
2014083784.tif 000012
【図１１】
2014083784.tif 000013
【図１２】
2014083784.tif 000014
【図１３】
2014083784.tif 000015
【図１４】
2014083784.tif 000016
【国際調査報告】
2014083784.tif 000017
2014083784.tif 000018
2014083784.tif 000019