【文献】
市川 幸宏 ほか,関数型暗号アプリケーションにおける適切な述語付与方式の検討,情報処理学会研究報告 2012(平成24)年度▲6▼ [DVD−ROM],日本,一般社団法人情報処理学会,2013年04月15日,Vol.2013-DPS-154 No.5,p.1−6
(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0011】
以下、本発明の実施の形態について、図を用いて説明する。以下の実施の形態の説明及び図面において、同一の符号を付したものは、同一の部分又は相当する部分を示す。
また、以下では、Ciphertext−Policy関数型暗号への本発明の適用例及びKey−Policy関数型暗号への適用例を説明する。Unified−Policy関数型暗号にも同様に本発明は適用可能である。
【0012】
実施の形態1.
***概要***
特許文献1や特許文献2の関数型暗号では、アクセスストラクチャとして終始スパンプログラムを使用している。しかし、実際に関数型暗号を使用する際は、復号可能条件はユーザが指定するため、ユーザが理解しやすいブール代数の式で復号可能条件を指定することが多い。即ち、ユーザによって指定されたブール代数の式からスパンプログラムのアクセスストラクチャが生成される。そして、生成されたスパンプログラムのアクセスストラクチャが関数型暗号のアルゴリズムに入力される。
例えば、Ciphertext−Policy関数型暗号の場合は、ブール代数の式から生成されたアクセスストラクチャが暗号文に含められる。アクセスストラクチャとしてスパンプログラムを用いた場合は、前述のように、アクセスストラクチャのデータサイズが肥大化するという課題がある。
そこで、本実施の形態では、スパンプログラムのアクセスストラクチャに代えて、復号可能条件が記述されたブール代数の式を暗号文とともに復号装置に送信する。ブール代数の式は、スパンプログラムのアクセスストラクチャと比較して格段にデータサイズが小さい。
本実施の形態では、このように、スパンプログラムのアクセスストラクチャに代えてブール代数の式を送信することで、データサイズの削減を図ることができる。また、復号装置では、必要に応じてブール代数の式からスパンプログラムを生成することができる。
【0013】
更に、本実施の形態では、ブール代数の式を既定の圧縮ルールに従って圧縮する。そして、本実施の形態では、圧縮後のブール代数の式を復号装置に送信する。このようにすることで、データサイズの更なる削減を図ることができる。
具体的には、本実施の形態では、論理和、論理積、変数及び否定の変数をそれぞれエンコードする。例えば、論理和は0、論理積は1、変数は2、否定の変数は3にエンコードする。そして、エンコードした論理和、論理積、変数及び否定の変数をブール代数の式に沿った順に配置する。例えば、ポーランド記法を使用すれば、変数p1、p2、p3が含まれる式“p1 OR p2 AND ¬p3”は“02123”とエンコードされる。
次に、上記でエンコードされた変数のリストをエンコードする。上記の例では、エンコードされたデータの2、4、5番目にある“2”または“3”が、それぞれ変数p1、p2、p3であることをリストで表現する。即ち、リストには、スパンプログラムのラベルと同等の情報が含まれる。但し、データサイズを削減するために、本実施の形態では、変数よりもデータサイズが小さい識別子を変数の代わりにエンコードする。例えば、p1は識別子“123”、p2は識別子“456”、p3は識別子“789”とすれば、エンコード結果は“123456789”となる。
本実施の形態では、変数と変数の識別子は変数識別子変換表を用いて相互に変換する。ただし、変数識別子変換表は変数と変数の識別子の関係を表す情報の一例である。変数識別子変換表に代えて、変数と変数の識別子を相互に変換するためのルール又は関数を用いてもよい。
また、以下では、復号可能条件をP、エンコード後(圧縮後)のブール代数の式をfと表記する。また、データサイズを削減した変数のリストをρ’、fとρ’に対して復号可能条件情報をQ:=(f,ρ’)と表記する。また、変数識別子変換表をTと表記する。
つまり、本実施の形態では、エンコード後のブール代数の式fと、圧縮後のブール代数の式を伸長するための情報であるリストρ’とを復号可能条件情報Qとして扱う。
これに代えて、ブール代数の式のエンコードを行わずに、復号可能条件情報Qとして、エンコードされていないブール代数の式を送信するようにしてもよい。
【0014】
***構成の説明***
図1は、本実施の形態に係る暗号処理システム10の構成例を示す。
【0015】
本実施の形態に係る暗号処理システム10は、
図1に示すように、鍵生成装置100、暗号化装置200及び復号装置300を備える。
鍵生成装置100、暗号化装置200及び復号装置300は、それぞれコンピュータである。
鍵生成装置100、暗号化装置200及び復号装置300は、お互いに通信路で接続されている。通信路は例えばインターネット、LAN(Local Area Network)などであるが、他の種類の通信路を用いてもよい。
なお、本実施の形態では、暗号化装置200はデータ処理装置に相当する。また、暗号化装置200の動作手順は、データ処理方法に相当する。また、暗号化装置200の動作を実現するプログラムは、データ処理プログラムに相当する。
また、復号装置300の動作手順は、復号方法に相当する。また、復号装置300の動作を実現するプログラムは、復号プログラムに相当する。
【0016】
鍵生成装置100は、セキュリティパラメータλを取得する。そして、鍵生成装置100は、関数型暗号のSetupアルゴリズムを実行し、マスター公開鍵pkとマスター秘密鍵skを生成する。また、鍵生成装置100は、マスター公開鍵pkを公開する。
更に、鍵生成装置100は、属性集合Γを取得する。そして、鍵生成装置100は、関数型暗号のKeyGenアルゴリズムを実行し、属性集合Γに対するユーザ秘密鍵sk
Γを生成する。また、鍵生成装置100は、ユーザ秘密鍵sk
Γを秘密裡に復号装置300へ送信する。また、鍵生成装置100は、必要があれば変数識別子変換表Tを更新する。そして、鍵生成装置100は、変数識別子変換表Tを公開する。
鍵生成装置100は、通信路を介してマスター公開鍵pk、ユーザ秘密鍵sk
Γ及び変数識別子変換表Tを暗号化装置200又は復号装置300へ送信する。また、鍵生成装置100のユーザが郵送などでマスター公開鍵pk、ユーザ秘密鍵sk
Γ及び変数識別子変換表Tを暗号化装置200のユーザ又は復号装置300のユーザへ送付してもよい。
【0017】
暗号化装置200は、平文mと、復号可能条件Pと、マスター公開鍵pkと、変数識別子変換表Tとを取得する。そして、暗号化装置200は、関数型暗号のEncアルゴリズムを実行し、暗号文Cと復号可能条件情報Qを生成する。そして、暗号化装置200は暗号文Cと復号可能条件情報Qを復号装置300へ送信する。
【0018】
復号装置300は、暗号文C、復号可能条件情報Q、マスター公開鍵pk、ユーザ秘密鍵sk
Γ及び変数識別子変換表Tを取得する。そして、復号装置300は、関数型暗号のDecアルゴリズムを実行し、平文m又は識別情報⊥を出力する。
【0019】
図2は、鍵生成装置100の機能構成例を示す。
図16は、鍵生成装置100のハードウェア構成例を示す。
【0020】
図2に示すように、鍵生成装置100は、受信部101と、送信部102と、マスター鍵生成部103と、ユーザ秘密鍵生成部104と、変数識別子変換表生成部105とを備える。
また、
図16に示すように、鍵生成装置100は、プロセッサ151、バス152、ROM(Read Only Memory)153、RAM(Random Access Memory)154、通信ボード155、ディスプレイ156、キーボード157、マウス158、ドライブ159、磁気ディスク装置160を備える。
磁気ディスク装置160には、OS(Operating System)161、プログラム162、ファイル163が格納されている。
プログラム162は、
図2に示す、受信部101、送信部102、マスター鍵生成部103、ユーザ秘密鍵生成部104及び変数識別子変換表生成部105の機能を実現するプログラムである。
プログラム162は、プロセッサ151により磁気ディスク装置160からRAM154にロードされ、プロセッサ151により実行される。
図2は、プロセッサ151が受信部101、送信部102、マスター鍵生成部103、ユーザ秘密鍵生成部104及び変数識別子変換表生成部105の機能を実現するプログラム162を実行している状態を模式的に示している。
他のハードウェア要素については後述する。
【0021】
図2において、受信部101は、セキュリティパラメータλと属性集合Γを受信する。
【0022】
マスター鍵生成部103は、パラメータλを用いてSetupアルゴリズムを実行し、マスター公開鍵pkとマスター秘密鍵skとを生成する。
【0023】
ユーザ秘密鍵生成部104は、マスター公開鍵pkとマスター秘密鍵skと属性集合Γとを用いてKeyGenアルゴリズムを実行し、ユーザ秘密鍵sk
Γを生成する。
【0024】
変数識別子変換表生成部105は、変数識別子変換表Tに属性集合Γを追加することで、変数識別子変換表Tを更新する。
【0025】
送信部102は、マスター公開鍵pkと変数識別子変換表Tを暗号化装置200に送信する。また、送信部102は、マスター公開鍵pkとユーザ秘密鍵sk
Γと変数識別子変換表Tを復号装置300に送信する。
【0026】
図3は、暗号化装置200の機能構成例を示す。
図17は、暗号化装置200のハードウェア構成例を示す。
【0027】
図3に示すように、暗号化装置200は、受信部201と、送信部202と、暗号化部203と、アクセスストラクチャ生成部204と、復号可能条件生成部205とを備える。
また、
図17に示すように、暗号化装置200は、プロセッサ251、バス252、ROM253、RAM254、通信ボード255、ディスプレイ256、キーボード257、マウス258、ドライブ259、磁気ディスク装置260を備える。
磁気ディスク装置260には、OS261、プログラム262、ファイル263が格納されている。
プログラム262は、
図3に示す、受信部201と、送信部202と、暗号化部203と、アクセスストラクチャ生成部204と、復号可能条件生成部205の機能を実現するプログラムである。
プログラム262は、プロセッサ251により磁気ディスク装置260からRAM254にロードされ、プロセッサ251により実行される。
図3は、プロセッサ251が、受信部201と、送信部202と、暗号化部203と、アクセスストラクチャ生成部204と、復号可能条件生成部205の機能を実現するプログラム262を実行している状態を模式的に示している。
他のハードウェア要素については後述する。
【0028】
受信部201は、マスター公開鍵pkと変数識別子変換表Tを受信する。また、受信部201は、復号可能条件Pと平文mを受信する。
【0029】
復号可能条件生成部205は、復号可能条件Pと変数識別子変換表Tとを用いて復号可能条件情報Qを生成する。
なお、復号可能条件生成部205により行われる処理は、復号可能条件生成処理に相当する。
【0030】
アクセスストラクチャ生成部204は、復号可能条件情報Qと変数識別子変換表Tとを用いて、スパンプログラムのアクセスストラクチャSを生成する。
なお、アクセスストラクチャ生成部204により行われる処理は、アクセスストラクチャ生成処理に相当する。
【0031】
暗号化部203は、アクセスストラクチャSと平文mとを用いてEncアルゴリズムを実行し、暗号文Cを生成する。
つまり、暗号化部203は、送信データである暗号文Cを生成する。暗号化部203は、送信データ生成部に相当する。また、暗号化部203により行われる処理は、送信データ生成処理に相当する。
【0032】
送信部202は、暗号文Cと復号可能条件情報Qとを復号装置300に送信する。
つまり、送信部202は、アクセスストラクチャSに代えて復号可能条件情報Qを暗号文Cとともに復号装置300に送信する。
なお、送信部202により行われる処理は、送信処理に相当する。
【0033】
図4は、復号装置300の機能構成例を示す。
図18は、復号装置300のハードウェア構成例を示す。
【0034】
図4に示すように、復号装置300は、受信部301と、送信部302と、復号部303と、アクセスストラクチャ生成部304とを備える。
また、
図18に示すように、復号装置300は、プロセッサ351、バス352、ROM353、RAM354、通信ボード355、ディスプレイ356、キーボード357、マウス358、ドライブ359、磁気ディスク装置360を備える。
磁気ディスク装置360には、OS361、プログラム362、ファイル363が格納されている。
プログラム362は、
図4に示す、受信部301と、送信部302と、復号部303と、アクセスストラクチャ生成部304の機能を実現するプログラムである。
プログラム362は、プロセッサ351により磁気ディスク装置360からRAM354にロードされ、プロセッサ351により実行される。
図4は、プロセッサ351が、受信部301と、送信部302と、復号部303と、アクセスストラクチャ生成部304の機能を実現するプログラム362を実行している状態を模式的に示している。
他のハードウェア要素については後述する。
【0035】
受信部301は、マスター公開鍵pkとユーザ秘密鍵sk
Γと変数識別子変換表Tを受信する。また、受信部301は、暗号文Cと復号可能条件情報Qを受信する。
なお、受信部301により行われる処理は、受信処理に相当する。
【0036】
アクセスストラクチャ生成部304は、復号可能条件情報Qと変数識別子変換表TとからスパンプログラムのアクセスストラクチャSを生成する。
【0037】
復号部303は、アクセスストラクチャSと、ユーザ秘密鍵sk
Γに含まれる属性集合Γとを用いて、復号可能条件が成立しているか否かを判定する。復号可能条件が成立していない場合は、復号部303は、識別情報⊥を送信部302に出力する。復号可能条件が成立している場合は、復号部303は、マスター公開鍵pkと、ユーザ秘密鍵sk
Γと、アクセスストラクチャSとを用いてDecアルゴリズムを実行して、暗号文Cを復号して、平文mを得る。
なお、復号部303は判定部に相当する。また、復号部303により行われる処理は、復号処理に相当する。
【0038】
送信部302は、平文m又は識別情報⊥を出力する。
【0039】
***動作の説明***
次に、本実施の形態に係る暗号処理システム10の動作例を説明する。
【0040】
図5は、鍵生成装置100が実行するSetupアルゴリズムの動作を示すフローチャートである。
【0041】
ステップS101において、鍵生成装置100の受信部101は、セキュリティパラメータλを受信する。
【0042】
次に、ステップS102において、鍵生成装置100のマスター鍵生成部103は、ステップS101において鍵生成装置100の受信部101が受信したパラメータλを用いて、Setupアルゴリズムを実行し、マスター公開鍵pkとマスター秘密鍵skとを生成する。
【0043】
次に、ステップS103において、鍵生成装置100のマスター鍵生成部103は、ステップS102において生成したマスター公開鍵pkとマスター秘密鍵skとを保管する。
例えば、マスター公開鍵pkとマスター秘密鍵skは磁気ディスク装置160においてファイル163として保管される。
【0044】
次に、ステップS104において、鍵生成装置100の送信部102は、ステップS103において保管されているマスター公開鍵pkを暗号化装置200と復号装置300に公開する。具体的には、送信部102は、マスター公開鍵pkを暗号化装置200と復号装置300に送信する。
【0045】
次に、ステップS105において、暗号化装置200の受信部201は、ステップS104において鍵生成装置100の送信部102が送信したマスター公開鍵pkを受信する。
【0046】
また、ステップS106において、復号装置300の受信部301は、ステップS104において鍵生成装置100の送信部102が送信したマスター公開鍵pkを受信する。
【0047】
図6は、鍵生成装置100が実行するKeyGenアルゴリズムの動作を示すフローチャートである。
【0048】
ステップS201において、鍵生成装置100の受信部101は、属性集合Γを受信する。
【0049】
次に、ステップS202において、鍵生成装置100のユーザ秘密鍵生成部104は、ステップS103において保管されたマスター公開鍵pkと、マスター秘密鍵skと、ステップS201において鍵生成装置100の受信部101が受信した属性集合Γとを用いて、KeyGenアルゴリズムを実行し、ユーザ秘密鍵sk
Γを生成する。
【0050】
次に、ステップS203において、鍵生成装置100の変数識別子変換表生成部105は、ステップS201において受信された属性集合Γを変数識別子変換表Tに追加することで、変数識別子変換表Tを更新する。既に変数識別子変換表Tに属性集合Γが含まれている場合は、変数識別子変換表生成部105は、属性集合Γを変数識別子変換表Tに追加しなくてよい。但し、変数識別子変換表Tの初期状態は空集合としてもよいし、使用する属性のリストを予め設定してもよい。
【0051】
次に、ステップS204において、鍵生成装置100の送信部102は、ステップS202において鍵生成装置100のユーザ秘密鍵生成部104が生成したユーザ秘密鍵sk
Γを、秘密裡に復号装置300の受信部301へ送信する。
【0052】
次に、ステップS205において、鍵生成装置100の送信部102は、ステップS203において鍵生成装置100の変数識別子変換表生成部105が更新した変数識別子変換表Tを、暗号化装置200の受信部201と復号装置300の受信部301とに公開する。具体的には、送信部102は、変数識別子変換表Tを、暗号化装置200の受信部201と復号装置300の受信部301とに送信する。
【0053】
次に、ステップS207において、暗号化装置200の受信部201は、ステップS205において鍵生成装置100の送信部102が送信した変数識別子変換表Tを受信する。
【0054】
また、ステップS208において、復号装置300の受信部301は、ステップS204において鍵生成装置100の送信部102が送信したユーザ秘密鍵sk
Γを秘密裡に受信する。
【0055】
更に、ステップS209において、復号装置300の受信部301は、ステップS205において鍵生成装置100の送信部102が送信した変数識別子変換表Tを受信する。
【0056】
次に、本実施の形態に係る暗号化装置200の動作例を説明する。
【0057】
図7は、暗号化装置200が実行するEncアルゴリズムの動作を示すフローチャートである。
【0058】
ステップS301において、暗号化装置200の受信部201は、復号可能条件Pと平文mを受信する。
【0059】
次に、ステップS302において、暗号化装置200の復号可能条件生成部205は、ステップS301において暗号化装置200の受信部201が受信した復号可能条件Pと、ステップS207において暗号化装置200の受信部201が受信した変数識別子変換表Tとを用いて、復号可能条件情報Qを生成する。
【0060】
次に、ステップS303において、暗号化装置200のアクセスストラクチャ生成部204は、ステップS302において暗号化装置200の復号可能条件生成部205が生成した復号可能条件情報Qと、ステップS207において暗号化装置200の受信部201が受信した変数識別子変換表Tとを用いて、アクセスストラクチャSを生成する。
ステップS303で生成されるアクセスストラクチャSは、スパンプログラムである。
【0061】
次に、ステップS304において、暗号化装置200の暗号化部203は、ステップS303において暗号化装置200のアクセスストラクチャ生成部204が生成したアクセスストラクチャSと、ステップS301で暗号化装置200の受信部201が受信した平文mとを用いて、Encアルゴリズムを実行し、暗号文Cを生成する。
【0062】
次に、ステップS305において、暗号化装置200の送信部202は、ステップS304において暗号化装置200の暗号化部203が生成した暗号文Cと、ステップS302において暗号化装置200の復号可能条件生成部205が生成した復号可能条件情報Qを、復号装置300の受信部301に送信する。
【0063】
次に、ステップS306において、復号装置300の受信部301は、ステップS305において暗号化装置200の送信部202が送信した暗号文Cと復号可能条件情報Qを受信する。
【0064】
次に、本実施の形態に係る復号装置300の動作例を説明する。
【0065】
図8は、復号装置300が実行するDecアルゴリズムの動作を示すフローチャートである。
【0066】
ステップS401において、復号装置300の受信部301は、ステップS306において暗号化装置200の送信部202が送信した暗号文Cと復号可能条件情報Qを受信する。
【0067】
次に、ステップS402において、復号装置300のアクセスストラクチャ生成部304は、ステップS401において復号装置300の受信部301が受信した復号可能条件情報Qと、ステップS209において復号装置300の受信部301が受信した変数識別子変換表Tとを用いて、アクセスストラクチャSを生成する。
ステップS402のアクセスストラクチャSの生成手順は、ステップS303のアクセスストラクチャSの生成手順と同じである。
【0068】
次に、ステップS403において、復号装置300の復号部303は、ステップS402において復号装置300のアクセスストラクチャ生成部304が生成したアクセスストラクチャSと、ステップS208において復号装置300の受信部301が受信したユーザ秘密鍵sk
Γに含まれる属性集合Γとを用いて、アクセスストラクチャSが属性集合Γを受理するか否かを判定する。つまり、復号部303は、復号可能条件が成立しているか否かを判定する。
判定結果が拒絶だった場合、つまり、復号可能条件が成立していない場合は、復号部303は、ステップS406において、識別情報⊥を復号装置300の送信部302へ出力する。そして、送信部302が識別情報⊥を出力する。
一方、判定結果が受理だった場合、つまり、復号可能条件が成立している場合は、処理がステップS404に進む。
【0069】
ステップS404では、復号装置300の復号部303は、ステップS106において復号装置300の受信部301が受信したマスター公開鍵pkと、ステップS208において復号装置300の受信部301が受信したユーザ秘密鍵sk
Γと、ステップS402において復号装置300のアクセスストラクチャ生成部304が生成したアクセスストラクチャSと、ステップS401において復号装置300の受信部301が受信した暗号文Cとを用いてDecアルゴリズムを実行し、暗号文Cを復号して、平文mを復元する。
【0070】
次に、ステップS405において、復号装置300の送信部302は、ステップS404において復号装置300の復号部303が復号により得られた平文mを送信部302に出力する。そして、送信部302が平文mを出力する。
【0071】
***実施の形態の効果の説明***
本実施の形態では、スパンプログラムのアクセスストラクチャと比較してデータサイズが格段に小さい復号可能条件情報を、スパンプログラムのアクセスストラクチャに代えて復号装置に送信する。このため、本実施の形態によれば、通信帯域及びストレージを圧迫することなくCiphertext−Policy関数型暗号を実現することができる。
【0072】
実施の形態2.
本実施の形態では、Key−Policy関数型暗号においてスパンプログラムの代わりに復号可能条件情報を用いる構成を説明する。
本実施の形態では、主に実施の形態1との差異を説明する。
以下で説明していない事項は、実施の形態1と同様である。
【0073】
***構成の説明***
図9は、本実施の形態に係る暗号処理システム20の構成例を示す。
実施の形態1と同様に、本実施の形態に係る暗号処理システム20も、鍵生成装置100、暗号化装置200及び復号装置300を備える。
但し、本実施の形態では、鍵生成装置100がデータ処理装置に相当する。また、鍵生成装置100の動作手順は、データ処理方法に相当する。また、鍵生成装置100の動作を実現するプログラムは、データ処理プログラムに相当する。
【0074】
本実施の形態では、鍵生成装置100は、セキュリティパラメータλを取得する。そして、鍵生成装置100は、関数型暗号のSetupアルゴリズムを実行し、マスター公開鍵pkとマスター秘密鍵skを生成する。そして、鍵生成装置100は、マスター公開鍵pkを公開する。また、鍵生成装置100は、復号可能条件Pを取得する。そして、鍵生成装置100は、関数型暗号のKeyGenアルゴリズムを実行し、復号可能条件Pに対するユーザ秘密鍵Kを生成し、秘密裡にユーザ秘密鍵Kを復号装置300へ送信する。また、鍵生成装置100は、必要があれば変数識別子変換表Tを更新する。そして、鍵生成装置100は、変数識別子変換表Tを公開する。
鍵生成装置100は、通信路を介してマスター公開鍵pk、ユーザ秘密鍵K及び変数識別子変換表Tを暗号化装置200又は復号装置300に送信する。また、鍵生成装置100のユーザが郵送などでマスター公開鍵pk、ユーザ秘密鍵K及び変数識別子変換表Tを暗号化装置200のユーザ又は復号装置300のユーザへ送付してもよい。
【0075】
暗号化装置200は、平文mと、属性集合Γと、マスター公開鍵pkとを取得する。そして、暗号化装置200は、関数型暗号のEncアルゴリズムを実行し、暗号文C
Γを生成する。そして、暗号化装置200は暗号文C
Γを復号装置300へ送信する。
【0076】
復号装置300は、暗号文C
Γ、復号可能条件情報Q、マスター公開鍵pk、ユーザ秘密鍵K及び変数識別子変換表Tを取得する。そして、復号装置300は、関数型暗号のDecアルゴリズムを実行し、平文mまたは識別情報⊥を出力する。
【0077】
図10は、本実施の形態に係る鍵生成装置100の機能構成例を示す。
本実施の形態に係る鍵生成装置100のハードウェア構成例は
図16に示す通りである。但し、本実施の形態では、磁気ディスク装置160には、
図10に示す受信部101、送信部102、マスター鍵生成部103、変数識別子変換表生成部105、アクセスストラクチャ生成部106及び復号可能条件生成部107の機能を実現するプログラム162が格納されている。
このため、本実施の形態に係る鍵生成装置100では、
図16のプロセッサ151のブロック内にアクセスストラクチャ生成部106及び復号可能条件生成部107のブロックが追加される。
【0078】
本実施の形態では、受信部101は、パラメータλと復号可能条件Pを受信する。
【0079】
マスター鍵生成部103は、パラメータλを用いてSetupアルゴリズムを実行し、マスター公開鍵pkとマスター秘密鍵skとを生成する。
【0080】
変数識別子変換表生成部105は、変数識別子変換表Tに属性集合Γを追加することで、変数識別子変換表Tを更新する。
【0081】
復号可能条件生成部107は、復号可能条件Pと変数識別子変換表Tとを用いて復号可能条件情報Qを生成する。
なお、復号可能条件生成部107により行われる処理は、復号可能条件生成処理に相当する。
【0082】
アクセスストラクチャ生成部106は、復号可能条件情報Qと変数識別子変換表Tとを用いて、スパンプログラムのアクセスストラクチャSを生成する。
なお、アクセスストラクチャ生成部106により行われる処理は、アクセスストラクチャ生成処理に相当する。
【0083】
ユーザ秘密鍵生成部104は、マスター公開鍵pkと、マスター秘密鍵skと、アクセスストラクチャSとを用いてKeyGenアルゴリズムを実行し、ユーザ秘密鍵Kを生成する。
つまり、ユーザ秘密鍵生成部104は、送信データであるユーザ秘密鍵Kを生成する。
なお、ユーザ秘密鍵生成部104は、送信データ生成部に相当する。また、ユーザ秘密鍵生成部104により行われる処理は、送信データ生成処理に相当する。
【0084】
送信部102は、マスター公開鍵pkを暗号化装置200に送信する。
また、送信部102は、マスター公開鍵pkと変数識別子変換表Tとを復号装置300に送信する。
更に、送信部102は、ユーザ秘密鍵Kと復号可能条件情報Qとを、秘密裡に復号装置300に送信する。
つまり、送信部102は、アクセスストラクチャSに代えて復号可能条件情報Qをユーザ秘密鍵Kとともに復号装置300に送信する。
なお、送信部102により行われる処理は、送信処理に相当する。
【0085】
図11は、本実施の形態に係る暗号化装置200の機能構成例を示す。
本実施の形態に係る暗号化装置200のハードウェア構成例は
図17に示す通りである。但し、本実施の形態では、磁気ディスク装置260には、
図11に示す受信部201、送信部202及び暗号化部203の機能を実現するプログラム262が格納されている。
このため、本実施の形態に係る暗号化装置200では、
図17のプロセッサ251のブロックにアクセスストラクチャ生成部204及び復号可能条件生成部205のブロックが含まれない。
【0086】
受信部201は、属性集合Γと平文mを受信する。
【0087】
暗号化部203は、属性集合Γと平文mとを用いてEncアルゴリズムを実行し、暗号文C
Γを生成する。
【0088】
送信部202は、暗号文C
Γを復号装置300に送信する。
【0089】
図12は、本実施の形態に係る復号装置300の機能構成例を示す。
本実施の形態に係る復号装置300のハードウェア構成例は
図18に示す通りである。
【0090】
受信部301は、マスター公開鍵pkとユーザ秘密鍵Kと復号可能条件情報Qと変数識別子変換表Tを受信する。また、受信部301は、暗号文C
Γを受信する。
【0091】
アクセスストラクチャ生成部304は、復号可能条件情報Qと変数識別子変換表TとからアクセスストラクチャSを生成する。
【0092】
復号部303は、アクセスストラクチャSと、暗号文C
Γに含まれる属性集合Γとを用いて、復号可能条件が成立しているか否かを判定する。復号可能条件が成立していない場合は、復号部303は、識別情報⊥を送信部302に出力する。復号可能条件が成立している場合は、復号部303は、マスター公開鍵pkと、ユーザ秘密鍵Kと、アクセスストラクチャSとを用いてDecアルゴリズムを実行して、暗号文C
Γを復号して、平文mを得る。
【0093】
送信部302は、平文m又は識別情報⊥を出力する。
【0094】
***動作の説明***
次に、本実施の形態に係る暗号処理システム20の動作例を説明する。
【0095】
鍵生成装置100は、実施の形態1と同様に、Setupアルゴリズムを実行する。
本実施の形態でも、鍵生成装置100によるSetupアルゴリズムは、
図3に示す通りであるため、説明を省略する。
【0096】
図13は、鍵生成装置100が実行するKeyGenアルゴリズムの動作を示すフローチャートである。
【0097】
ステップS1201において、鍵生成装置100の受信部101は、復号可能条件Pを受信する。
【0098】
次に、ステップS1202において、鍵生成装置100の変数識別子変換表生成部105は、ステップS1201において受信した復号可能条件Pを変数識別子変換表Tに追加することで、変数識別子変換表Tを更新する。既に変数識別子変換表Tに復号可能条件Pが含まれている場合は追加しなくてよい。但し、変数識別子変換表Tの初期状態は空集合としてもよいし、使用する属性のリストを予め設定してもよい。
【0099】
次に、ステップS1203において、鍵生成装置100の復号可能条件生成部107は、ステップS1201において鍵生成装置100の受信部101が受信した復号可能条件Pと、ステップS1202において鍵生成装置100の変数識別子変換表生成部105が生成した変数識別子変換表Tとを用いて、復号可能条件情報Qを生成する。
【0100】
次に、ステップS1204において、鍵生成装置100のアクセスストラクチャ生成部106は、ステップS1203において鍵生成装置100の復号可能条件生成部107が生成した復号可能条件情報Qと、ステップS1201において鍵生成装置100の受信部101が受信した変数識別子変換表Tとを用いて、スパンプログラムのアクセスストラクチャSを生成する。
【0101】
次に、ステップS1205において、鍵生成装置100のユーザ秘密鍵生成部104は、ステップS103において保管されたマスター公開鍵pkと、マスター秘密鍵skと、ステップS1204において鍵生成装置100のアクセスストラクチャ生成部106が生成したアクセスストラクチャSとを用いてKeyGenアルゴリズムを実行し、ユーザ秘密鍵Kを生成する。
【0102】
次に、ステップS1206において、鍵生成装置100の送信部102は、ステップS1205において鍵生成装置100のユーザ秘密鍵生成部104が生成したユーザ秘密鍵KとステップS1203において鍵生成装置100の復号可能条件生成部107が生成した復号可能条件情報Qとを、秘密裡に復号装置300の受信部301へ送信する。
【0103】
次に、ステップS1207において、鍵生成装置100の送信部102は、ステップS1202において鍵生成装置100の変数識別子変換表生成部105が更新した変数識別子変換表Tを、暗号化装置200の受信部201と復号装置300の受信部301とに公開する。具体的には、送信部102は、変数識別子変換表Tを、暗号化装置200の受信部201と復号装置300の受信部301とに送信する。
【0104】
次に、ステップS1208において、暗号化装置200の受信部201は、ステップS1207において鍵生成装置100の送信部102が送信した変数識別子変換表Tを受信する。
【0105】
また、ステップS1209において、復号装置300の受信部301は、ステップS1206において鍵生成装置100の送信部102が送信したユーザ秘密鍵Kと復号可能条件情報Qとを秘密裡に受信する。
【0106】
更に、ステップS1210において、復号装置300の受信部301は、ステップS1207において鍵生成装置100の送信部102が送信した変数識別子変換表Tを受信する。
【0107】
図14は、暗号化装置200が実行するEncアルゴリズムの動作を示すフローチャートである。
【0108】
ステップS1301において、暗号化装置200の受信部201は、属性集合Γと平文mを受信する。
【0109】
次に、ステップS1302において、暗号化装置200の暗号化部203は、ステップS1301で暗号化装置200の受信部201が受信した属性集合Γと平文mとを用いてEncアルゴリズムを実行し、暗号文C
Γを生成する。
【0110】
次に、ステップS1303において、暗号化装置200の送信部202は、ステップS1302において暗号化装置200の暗号化部203が生成した暗号文C
Γを、復号装置300の受信部301に送信する。
【0111】
次に、ステップS1304において、復号装置300の受信部301は、ステップS1303において暗号化装置200の送信部202が送信した暗号文C
Γを受信する。
【0112】
図15は、復号装置300が実行するDecアルゴリズムの動作を示すフローチャートである。
【0113】
ステップS1401において、復号装置300の受信部301は、ステップS1304において暗号化装置200の送信部202が送信した暗号文C
Γを受信する。
【0114】
ステップS1402において、復号装置300のアクセスストラクチャ生成部304は、ステップS1209において復号装置300の受信部301が受信した復号可能条件情報Qと、ステップS1210において復号装置300の受信部301が受信した変数識別子変換表TとからアクセスストラクチャSを生成する。
ステップS1402のアクセスストラクチャSの生成手順は、ステップS1204のアクセスストラクチャSの生成手順と同じである。
【0115】
ステップS1403において、復号装置300の復号部303は、ステップS1402において復号装置300のアクセスストラクチャ生成部304が生成したアクセスストラクチャSと、ステップS1401において復号装置300の受信部301が受信した暗号文C
Γに含まれる属性集合Γとを用いて、アクセスストラクチャSが属性集合Γを受理するか否かを判定する。つまり、復号部303は、復号可能条件が成立しているか否かを判定する。
判定結果が拒絶だった場合、つまり、復号可能条件が成立していない場合は、復号部303は、ステップS1406において、識別情報⊥を復号装置300の送信部302へ出力する。そして、送信部302が識別情報⊥を出力する。
一方、判定結果が受理だった場合、つまり、復号可能条件が成立している場合は、処理がステップS1404に進む。
【0116】
ステップS1404では、復号装置300の復号部303は、ステップS106において復号装置300の受信部301が受信したマスター公開鍵pkと、ステップS1209において復号装置300の受信部301が受信したユーザ秘密鍵Kと、ステップS1402において復号装置300のアクセスストラクチャ生成部304が生成したアクセスストラクチャSと、ステップS1401において復号装置300の受信部301が受信した暗号文C
Γとを用いてDecアルゴリズムを実行し、暗号文C
Γを復号して、平文mを復元する。
【0117】
次に、ステップS1405において、復号装置300の送信部302は、ステップS1404において復号装置300の復号部303が復号により得られた平文mを送信部302に出力する。そして、送信部302が平文mを出力する。
【0118】
***実施の形態の効果の説明***
本実施の形態によれば、通信帯域及びストレージを圧迫することなくKey−Policy関数型暗号を実現することができる。
【0119】
以上、本発明の実施の形態について説明したが、これら2つの実施の形態を組み合わせて実施しても構わない。
あるいは、これら2つの実施の形態のうち、1つを部分的に実施しても構わない。
あるいは、これら2つの実施の形態を部分的に組み合わせて実施しても構わない。
なお、本発明は、これらの実施の形態に限定されるものではなく、必要に応じて種々の変更が可能である。
【0120】
***ハードウェア構成の説明***
最後に、鍵生成装置100、暗号化装置200及び復号装置300のハードウェア構成の補足説明を行う。
プロセッサ151、プロセッサ251及びプロセッサ351は、それぞれ、プロセッシングを行うIC(Integrated Circuit)である。
プロセッサ151、プロセッサ251及びプロセッサ351は、それぞれ、CPU(Central Processing Unit)、DSP(Digital Signal Processor)等である。
プロセッサ151は、バス152を介してROM153、RAM154、通信ボード155、ディスプレイ156、キーボード157、マウス158、ドライブ159及び磁気ディスク装置160を制御する。
プロセッサ251は、バス252を介してROM253、RAM254、通信ボード255、ディスプレイ256、キーボード257、マウス258、ドライブ259及び磁気ディスク装置260を制御する。
プロセッサ351は、バス352を介してROM353、RAM354、通信ボード355、ディスプレイ356、キーボード357、マウス358、ドライブ359及び磁気ディスク装置360を制御する。
ドライブ159、ドライブ259及びドライブ359は、それぞれ、FD(Flexible Disk Drive)、CD(Compact Disc)、DVDなどの記憶媒体を読み書きする装置である。
ROM153、RAM154、磁気ディスク装置160、ROM253、RAM254、磁気ディスク装置260、ROM353、RAM354及び磁気ディスク装置360は記憶装置の一例である。キーボード157、マウス158、ドライブ159、キーボード257、マウス258、ドライブ259、キーボード357、マウス358及びドライブ359は入力装置の一例である。通信ボード155、ディスプレイ156、通信ボード255、ディスプレイ256、通信ボード355及びディスプレイ356は出力装置の一例である。
通信ボード155、通信ボード255及び通信ボード355は、それぞれ、有線または無線で、LAN、インターネット、電話回線などの通信網に接続している。
【0121】
プロセッサ151はOS161の少なくとも一部を実行しながら、プログラム162を実行する。
プロセッサ151がOS161を実行することで、タスク管理、メモリ管理、ファイル管理、通信制御等が行われる。
また、プログラム162の実行結果を示す情報、データ、信号値及び変数値の少なくともいずれかが、ファイル163として磁気ディスク装置160で記憶される。また、プログラム162の実行結果を示す情報、データ、信号値及び変数値の少なくともいずれかは、ROM153、プロセッサ151内のレジスタ及びキャッシュメモリの少なくともいずれかに記憶されてもよい。
また、プログラム162は、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ(登録商標)ディスク、DVD等の可搬記録媒体に格納されていてもよい。そして、プログラム162が格納された可搬記録媒体を商業的に流通させてもよい。
【0122】
プロセッサ251はOS261の少なくとも一部を実行しながら、プログラム262を実行する。
プロセッサ251がOS261を実行することで、タスク管理、メモリ管理、ファイル管理、通信制御等が行われる。
また、プログラム262の実行結果を示す情報、データ、信号値及び変数値の少なくともいずれかが、ファイル263として磁気ディスク装置260で記憶される。また、プログラム262の実行結果を示す情報、データ、信号値及び変数値の少なくともいずれかは、ROM253、プロセッサ251内のレジスタ及びキャッシュメモリの少なくともいずれかに記憶されてもよい。
また、プログラム262は、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ(登録商標)ディスク、DVD等の可搬記録媒体に格納されていてもよい。そして、プログラム262が格納された可搬記録媒体を商業的に流通させてもよい。
【0123】
プロセッサ351はOS361の少なくとも一部を実行しながら、プログラム362を実行する。
プロセッサ351がOS361を実行することで、タスク管理、メモリ管理、ファイル管理、通信制御等が行われる。
また、プログラム362の実行結果を示す情報、データ、信号値及び変数値の少なくともいずれかが、ファイル363として磁気ディスク装置360で記憶される。また、プログラム362の実行結果を示す情報、データ、信号値及び変数値の少なくともいずれかは、ROM353、プロセッサ351内のレジスタ及びキャッシュメモリの少なくともいずれかに記憶されてもよい。
また、プログラム362は、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ(登録商標)ディスク、DVD等の可搬記録媒体に格納されていてもよい。そして、プログラム362が格納された可搬記録媒体を商業的に流通させてもよい。
【0124】
また、受信部101、送信部102、マスター鍵生成部103、ユーザ秘密鍵生成部104、変数識別子変換表生成部105、アクセスストラクチャ生成部106、復号可能条件生成部107、受信部201、送信部202、暗号化部203、アクセスストラクチャ生成部204、復号可能条件生成部205、受信部301、送信部302、復号部303及びアクセスストラクチャ生成部304の「部」を、「回路」又は「工程」又は「手順」又は「処理」に読み替えてもよい。
また、鍵生成装置100、暗号化装置200及び復号装置300は、それぞれ、処理回路により実現されてもよい。処理回路は、例えば、ロジックIC(Integrated Circuit)、GA(Gate Array)、ASIC(Application Specific Integrated Circuit)、FPGA(Field−Programmable Gate Array)である。
なお、本明細書では、プロセッサと処理回路との上位概念を、「プロセッシングサーキットリー」という。
つまり、プロセッサと処理回路とは、それぞれ「プロセッシングサーキットリー」の具体例である。