(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024175753
(43)【公開日】2024-12-19
(54)【発明の名称】スパンプログラム調整装置、暗号化装置、復号装置、鍵生成装置、スパンプログラム調整方法及びスパンプログラム調整プログラム
(51)【国際特許分類】
G09C 1/00 20060101AFI20241212BHJP
【FI】
G09C1/00 620Z
【審査請求】未請求
【請求項の数】8
【出願形態】OL
(21)【出願番号】P 2023093724
(22)【出願日】2023-06-07
(71)【出願人】
【識別番号】000006013
【氏名又は名称】三菱電機株式会社
(74)【代理人】
【識別番号】110002491
【氏名又は名称】弁理士法人クロスボーダー特許事務所
(72)【発明者】
【氏名】早坂 健一郎
(57)【要約】
【課題】ガウスの消去法により、非0成分がより少ないαを計算可能にする。
【解決手段】スパンプログラム取得部22は、暗号文の復号条件を構成するための複数の属性それぞれに行が対応付けられた行列Mを有するスパンプログラムを取得する。スパンプログラム調整部23は、復号条件を満たすために必要な属性の個数が少なくなる属性に対応付けられた行ほど、ガウスの消去法においてピボットとして選択され易くなるように、スパンプログラム取得部22によって生成されたスパンプログラムが有する行列Mの行を置換して行列M’を生成する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
暗号文の復号条件を構成するための複数の属性それぞれに行が対応付けられた行列Mを有するスパンプログラムを取得するスパンプログラム取得部と、
前記復号条件を満たすために必要な属性の個数が少なくなる属性に対応付けられた行ほど、ガウスの消去法においてピボットとして選択され易くなるように、前記スパンプログラム取得部によって生成された前記スパンプログラムが有する前記行列Mの行を置換して行列M’を生成するスパンプログラム調整部と
を備えるスパンプログラム調整装置。
【請求項2】
前記復号条件は、前記複数の属性を1つ以上のand演算子と1つ以上のor演算子とを用いて結合した論理条件により表され、
前記スパンプログラム調整部は、
前記複数の属性それぞれと前記1つ以上のand演算子それぞれと前記1つ以上のor演算子それぞれとをノードとした多分木であって、前記複数の属性それぞれをリーフとし、前記1つ以上のand演算子それぞれと前記1つ以上のor演算子それぞれとをリーフ以外のノードとした多分木によって、前記復号条件を表す木構造化部と、
前記木構造化部によって表された前記多分木における前記1つ以上のor演算子のノードそれぞれに対して、紐づくリーフの数が少ない順に子のノードを整列する整列部と、
前記整列部によって整列された前記多分木を根から辿って先に到達するリーフが示す属性に対応する行ほど、前記ガウスの消去法において前記ピボットとして選択され易い位置になるように、前記行列Mの行を置換して行列M’を生成する置換部と
を備える請求項1に記載のスパンプログラム調整装置。
【請求項3】
請求項1に記載のスパンプログラム調整装置と、
前記スパンプログラム調整部によって生成された前記行列M’を含む暗号文を生成する暗号化部と
を備える暗号化装置。
【請求項4】
請求項1に記載のスパンプログラム調整装置と、
前記スパンプログラム調整部によって生成された前記行列M’を用いて前記暗号文を復号する復号部と
を備える復号装置。
【請求項5】
前記スパンプログラム調整部は、前記行列Mのうち、属性の集合Γに含まれる属性に対応する行が抽出された行列Mδを、前記行列Mとして用いる
請求項4に記載の復号装置。
【請求項6】
請求項1に記載のスパンプログラム調整装置と、
前記スパンプログラム調整部によって生成された前記行列M’を用いて復号鍵を生成する鍵生成部
を備える鍵生成装置。
【請求項7】
コンピュータが、暗号文の復号条件を構成するための複数の属性それぞれに行が対応付けられた行列Mを有するスパンプログラムを取得し、
コンピュータが、前記復号条件を満たすために必要な属性の個数が少なくなる属性に対応付けられた行ほど、ガウスの消去法においてピボットとして選択され易くなるように、前記スパンプログラムが有する前記行列Mの行を置換して行列M’を生成するスパンプログラム調整方法。
【請求項8】
暗号文の復号条件を構成するための複数の属性それぞれに行が対応付けられた行列Mを有するスパンプログラムを取得するスパンプログラム取得処理と、
前記復号条件を満たすために必要な属性の個数が少なくなる属性に対応付けられた行ほど、ガウスの消去法においてピボットとして選択され易くなるように、前記スパンプログラム取得処理によって生成された前記スパンプログラムが有する前記行列Mの行を置換して行列M’を生成するスパンプログラム調整処理と
を行うスパンプログラム調整装置としてコンピュータを機能させるスパンプログラム調整プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、スパンプログラムを用いた関数型暗号方式における復号処理の高速化技術に関する。
【背景技術】
【0002】
関数型暗号方式は、暗号文を復号可能な条件を設定できる暗号である。関数型暗号方式には、復号可能な条件を暗号文に設定する暗号文ポリシー関数型暗号と、秘密鍵に設定する鍵ポリシー関数型暗号とがある。暗号文ポリシー関数型暗号は、例えばクラウドサーバ上の機密情報管理システムに適用できる。暗号文ポリシー関数型暗号は、暗号化の際に復号可能なユーザを、所属及び役職といった属性のブール式で設定できるため、機密性の高いデータの安全な保管に適している。
例えば、復号条件として「人事部 and 課長 or 部長」を設定した暗号文を生成とする。この場合には、人事部の課長は「人事部」と「課長」との属性を持つ自らの秘密鍵で暗号文を復号できる。一方で、総務部の課長は復号条件を満たす秘密鍵を所持していないため暗号文を復号できない。
【0003】
関数型暗号方式を実現する具体的な方式として、特許文献1及び非特許文献1には、スパンプログラムを用いて復号可否を制御する方式が記載されている。スパンプログラムは、L行×r列の行列Mとラベルρとで構成される。行列Mの各行は復号可能なユーザの条件式に含まれる各属性に対応付けされており、どの行がどの属性に対応付けられているかはラベルρによって示される。以降は簡単のため、モノトーンなスパンプログラムとそれを用いた復号手順について説明する。
【0004】
スパンプログラムは、暗号文を復号可能な条件である復号条件を表している。ある属性の集合Γが与えられたとき、属性の集合Γが復号条件を満足するか否かがスパンプログラムを用いて判定される。対応する属性が属性の集合Γに含まれている行列Mの行を抜き出した行列をMδとする。このとき、属性の集合Γに対し、復号条件は1→∈span<Mδ>であれば受理し、さもなければ拒絶することを表す。ここで、span<Mδ>はMδの各行の線形結合全体である。1→は成分が全て1のr次元行ベクトルである。
【0005】
復号処理では、暗号文(又は秘密鍵)に含まれるスパンプログラム(M,ρ)と、秘密鍵(又は暗号文)に含まれる属性の集合Γとに対して、1→=αMを満たすL次元行ベクトルαが、もし存在すれば計算される。そのようなαが存在する場合、すなわち復号条件を満たす場合、0でないαの成分αiに対応する暗号文のベクトルと秘密鍵のベクトルとに対して、ペアリング演算とαi乗とが実行され、掛け合わされて平文が得られる。一方、そのようなαが存在しない場合は復号条件を満たしていないと分かる。
【0006】
特許文献2には、行列Mの成分が0又は1となるようにスパンプログラムを生成する手法が記載されている。特許文献2に記載された方法により生成されたスパンプログラムを使用すると、αの成分αiが0又は1となるものが存在する。言い換えると、各成分αiは対応する属性が復号条件を真にするために必要(αi=1)か不要(αi=0)かを表す。よって、復号処理の実行時間の多くはペアリング演算が占める。ペアリング演算は0でないαの成分αiの個数に比例する回数実行されるため、αに0でない成分が少ないほど復号は高速に実行できる。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開2011-232475号公報
【特許文献2】国際公開第2016/002020号
【非特許文献】
【0008】
【非特許文献1】T. Okamoto, K. Takashima, “Fully Secure Functional Encryption with General Relations from the Decisional Linear Assumption,” CRYPTO 2010, 191-208.
【発明の概要】
【発明が解決しようとする課題】
【0009】
行列Mδに対してαを計算する方法として、ガウスの消去法がある。しかし、ガウスの消去法によるαの計算では、αが複数存在する場合、非0成分がより少ないαが必ず得られるとは限らない。また特許文献1及び特許文献2では、非0成分がより少ないαの計算方法については言及されていない。
例えば、復号条件prd=((A and B) or C) or Dに対して、属性の集合はΓ={A,B,C,E}であるとする。この場合、行列Mδは3×2の行列であり、各行は属性A,B,Cに対応する。このとき、成分が0又は1のαは(1,1,0)と(0,0,1)との2通りが存在し、復号条件を満たす属性の組み合わせを示している。すなわち、前者は属性A,B∈Γによって復号条件が真になることを意味しており、後者は属性C∈Γによって復号条件が真になることを意味している。ここで、復号をより高速に実行するためには、α=(1,1,0)よりも0でない成分が少ないα=(0,0,1)を採用すべきである。α=(1,1,0)が得られた場合でも、行列Mδの核の基底(-1,-1,1)を加算することでα=(0,0,1)を得ることができるが、基底の個数が増えるほど0でない成分の少ないαの探索は困難となる。
【0010】
本開示は、ガウスの消去法により、非0成分がより少ないαを計算可能にすることを目的とする。
【課題を解決するための手段】
【0011】
本開示に係るスパンプログラム調整装置は、
暗号文の復号条件を構成するための複数の属性それぞれに行が対応付けられた行列Mを有するスパンプログラムを取得するスパンプログラム取得部と、
前記復号条件を満たすために必要な属性の個数が少なくなる属性に対応付けられた行ほど、ガウスの消去法においてピボットとして選択され易くなるように、前記スパンプログラム取得部によって生成された前記スパンプログラムが有する前記行列Mの行を置換して行列M’を生成するスパンプログラム調整部と
を備える。
【発明の効果】
【0012】
本開示では、復号条件を満たすために必要な属性の個数が少なくなる属性に対応付けられた行ほど、ガウスの消去法においてピボットとして選択され易くなるように、行列Mの行を置換して行列M’を生成する。ガウスの消去法により、この行列M’からαを計算することにより、非0成分がより少ないαを計算可能である。その結果、復号処理を効率化できる。
【図面の簡単な説明】
【0013】
【
図1】実施の形態1に係る暗号化装置10の機能構成図。
【
図2】実施の形態1に係る暗号化装置10の全体的な動作のフローチャート。
【
図3】実施の形態1に係るスパンプログラム生成処理のフローチャート。
【
図4】実施の形態1に係るスパンプログラム取得処理及び実施の形態1に係るスパンプログラム調整処理のフローチャート。
【
図8】実施の形態1に係る暗号化処理のフローチャート。
【
図10】実施の形態2に係る復号装置30の機能構成図。
【
図11】実施の形態2に係る復号装置30の全体的な動作のフローチャート。
【
図12】実施の形態2に係る復号処理のフローチャート。
【
図13】変形例1に係る復号装置30の全体的な動作のフローチャート。
【
図14】実施の形態3に係る鍵生成装置50の機能構成図。
【
図15】実施の形態3に係る鍵生成装置50の全体的な動作のフローチャート。
【
図16】実施の形態3に係る鍵生成処理のフローチャート。
【
図17】実施の形態1に係る暗号化装置10と、実施の形態2に係る復号装置30と、実施の形態3に係る鍵生成装置50とのハードウェア構成図。
【発明を実施するための形態】
【0014】
実施の形態1.
実施の形態1では、暗号文ポリシー関数型暗号における暗号化装置10がスパンプログラム調整装置100を備える例を説明する。
【0015】
***構成の説明***
図1を参照して、実施の形態1に係る暗号化装置10の機能構成を説明する。
暗号化装置10は、機能構成要素として、スパンプログラム生成部21と、スパンプログラム取得部22と、スパンプログラム調整部23と、暗号化部24とを備える。スパンプログラム調整部23は、木構造化部231と、整列部232と、置換部233とを備える。暗号化装置10の各機能構成要素の機能はソフトウェアにより実現される。
スパンプログラム取得部22と、スパンプログラム調整部23との機能がスパンプログラム調整装置100に相当する。
【0016】
***動作の説明***
図2から
図8を参照して、実施の形態1に係る暗号化装置10の動作を説明する。
実施の形態1に係る暗号化装置10の動作手順は、実施の形態1に係る暗号化方法に相当する。また、実施の形態1に係る暗号化装置10の動作を実現するプログラムは、実施の形態1に係る暗号化プログラムに相当する。
実施の形態1に係る暗号化装置10のうちスパンプログラム調整装置100の動作手順は、実施の形態1に係るスパンプログラム調整方法に相当する。また、実施の形態1に係る暗号化装置10のうちスパンプログラム調整装置100のスパンプログラム調整プログラムに相当する。
【0017】
図2を参照して、実施の形態1に係る暗号化装置10の全体的な動作を説明する。
(ステップS11:スパンプログラム生成処理)
スパンプログラム生成部21は、暗号文を復号可能な条件である復号条件prdの入力を受け付ける。スパンプログラム生成部21は、復号条件prdに基づき、スパンプログラムSを生成する。スパンプログラムSは、行列Mとラベルρとを有する。
【0018】
(ステップS12:スパンプログラム取得処理)
スパンプログラム取得部22は、ステップS11で生成されたスパンプログラムSと、
ステップS11で受け付けされた復号条件prdとを取得する。
【0019】
(ステップS13:スパンプログラム調整処理)
スパンプログラム調整部23は、ステップS12で取得されたスパンプログラムSが有する行列M及びラベルρを調整して行列M’及びラベルρ’を有するスパンプログラムS’を生成する。
具体的には、スパンプログラム調整部23は、復号条件を満たすために必要な属性の個数が少なくなる属性に対応付けられた行ほど、ガウスの消去法においてピボットとして選択され易くなるように、行列Mの行を置換して行列M’を生成する。スパンプログラム調整部23は、行列Mの行が置換されたことに合わせて、ラベルρを変換してラベルρ’を生成する。これにより、非0成分が少ないαを計算可能な行列M’とラベルρ’とを有するスパンプログラムS’が生成される。
【0020】
(ステップS14:暗号化処理)
暗号化部24は、公開鍵pk及び平文mと、ステップS13で生成されたスパンプログラムS’とを取得する。暗号化部24は、公開鍵pk及び平文mから生成された暗号成分cと、行列M’及びラベルρ’とを有するスパンプログラムS’とを含む暗号文CTを生成する。
【0021】
図3を参照して、実施の形態1に係るスパンプログラム生成処理(
図2のステップS11)を説明する。
(ステップS21:条件受付処理)
スパンプログラム生成部21は、復号条件prdの入力を受け付ける。
復号条件prdは、暗号化装置10のユーザによって入力される。あるいは、復号条件prdは、外部の装置から通信インタフェース14を介して入力される。
【0022】
(ステップS22:生成処理)
スパンプログラム生成部21は、ステップS111で取得された復号条件prdに基づき、スパンプログラムSを生成する。具体的には、スパンプログラム生成部21は、特許文献2に記載された方法等に従い、スパンプログラムSを生成する。
スパンプログラムSは、行列Mとラベルρとを有する。行列Mは、復号条件を構成するための複数の属性それぞれに行が対応付けられたL行r列の行列である。ラベルρは、行列Mのどの行が複数の属性のうちのどの属性に対応付けられているかを示す。
【0023】
(ステップS23:送信処理)
スパンプログラム生成部21は、スパンプログラムS=(M,ρ)と復号条件prdとをスパンプログラム調整装置100に送信する。
【0024】
図4を参照して、実施の形態1に係るスパンプログラム取得処理(
図2のステップS12)及びスパンプログラム調整処理(
図2のステップS13)を説明する。つまり、
図4を参照して、実施の形態1に係るスパンプログラム調整装置100の処理を説明する。
ステップS31の処理が
図2のステップS12の処理に対応している。また、ステップS32からステップS35の処理が
図2のステップS13の処理に対応している。
【0025】
(ステップS31:取得処理)
スパンプログラム取得部22は、ステップS23で送信されたスパンプログラムS=(M,ρ)と復号条件prdとを取得する。
【0026】
(ステップS32:木構造化処理)
木構造化部231は、
図5に示すように、ステップS31で取得された復号条件prd
を多分木201によって表す。
具体的に説明する。復号条件prdは、複数の属性を1つ以上のand演算子と1つ以上のor演算子とを用いて結合した論理条件により表される。木構造化部231は、復号条件prdを構成する複数の属性それぞれと1つ以上のand演算子それぞれと1つ以上のor演算子それぞれとをノード202に設定する。木構造化部231は、複数の属性それぞれをリーフ203とし、1つ以上のand演算子それぞれと1つ以上のor演算子それぞれとをリーフ203以外のノード202とする。そして、木構造化部231は、復号条件prdにおける接続関係に従い各ノード202を接続することにより、復号条件prdを多分木201によって表す。
【0027】
図5では、復号条件prd=(A and B and C) or (D and E) or Fである。
そこで、属性A,B,C,D,E,Fそれぞれと、3つのand演算子それぞれと、2つのor演算子それぞれとがノード202に設定される。このうち、属性A,B,C,D,E,Fそれぞれがリーフ203に設定される。残りの3つのand演算子それぞれ及び2つのor演算子それぞれがリーフ203ではないノード202に設定される。
属性A,B,Cがand演算子で結合されている。そのため、属性A,B,Cに対応するリーフ203がand演算子に対応するノード202Xに接続される。また、属性D,Eがand演算子で結合されている。そのため、属性D,Eに対応するリーフ203がand演算子に対応するノード202Yに接続される。and演算子で結合された属性A,B,Cと、and演算子で結合された属性D,Eと、属性Fとがor演算子で結合されている。そのため、属性A,B,Cに対応するリーフ203が接続されたand演算子に対応するノード202Xと、属性D,Eに対応するリーフ203が接続されたand演算子に対応するノード202Yと、属性Fに対応するリーフ203とがor演算子に対応するノード202Zに接続される。
【0028】
(ステップS33:整列処理)
整列部232は、ステップS32で表された多分木201における1つ以上のor演算子のノードそれぞれに対して、紐づくリーフ203の数が少ない順に子のノード202を整列する。
具体的には、整列部232は、1つ以上のor演算子のノード202それぞれを対象のor演算子のノード202に設定する。整列部232は、対象のor演算子のノード202に接続された複数の子のノード202それぞれについて、紐づけられたリーフ203の数をカウントする。整列部232は、対象のor演算子に接続された複数の子のノード202を、カウントされたリーフ203の数が少ない順に整列する。
【0029】
図5では、or演算子のノード202として、ノード202Zがある。ノード202Zには、子のノード202として、ノード202Xと、ノード202Yと、属性Fに対応するリーフ203とがある。ノード202Xには、3つのリーフ203が紐づいている。ノード202Yには、2つのリーフ203が紐づいている。属性Fに対応するリーフ203は、それ自身の1つのリーフ203である。
そのため、
図6に示すように、属性Fに対応するリーフ203、ノード202Y、ノード202Xの順に整列される。
図6では、左側を先頭として整列されている。
【0030】
(ステップS34:置換処理)
置換部233は、ステップS33で整列された多分木201に基づき、ステップS31で取得されたスパンプログラムSが有する行列Mの行を置換して行列M’を生成する。また、置換部233は、行列Mの行が置換されたことに合わせて、ラベルρを変換してラベルρ’を生成する。これにより、置換部233は、スパンプログラムS’=(M’,ρ’)を生成する。
具体的には、置換部233は、ステップS33で整列された順に従い多分木201を根から辿る。置換部233は、先に到達するリーフ203が示す属性に対応する行ほど、ガウスの消去法においてピボットとして選択され易い位置になるように、行列Mの行を置換する。これにより、置換部233は、行列M’を生成する。そして、置換部233は、入れ替わった先の行を示すように、ラベルρを変換してラベルρ’を生成する。
【0031】
図6では、根となるノード202は、ノード202Zである。そこで、ノード202Zから整列された順に従い多分木201が辿られる。上述した通り、
図6では、左側を先頭として整列されているので、左側から順に多分木201が辿られる。そのため、属性F,D,E,A,B,Cの順に対応するリーフ203に到達することになる。そして、属性F,D,E,A,B,Cの順に、対応する行がガウスの消去法においてピボットとして選択され易い位置になるように、行列Mの行が置換される。
ここで、復号条件prd=(A and B and C) or (D and E) or Fである場合には、例えば、
図7に示すように6行4列の行列Mが生成される。行列Mでは、1行目から順に属性A,B、C,D,E,Fに対応付けられている。ここでは、行番号が小さいほどガウスの消去法においてピボットとして選択され易いとする。すると、属性F,D,E,A,B,Cの順に、行列Mの行が置換され、行列M’が生成される。この際、行列Mの行が入れ替わったことに対応して、ラベルρが変換されラベルρ’が生成される。
【0032】
(ステップS35:送信処理)
置換部233は、ステップS34で生成された行列M’とラベルρ’とを有するスパンプログラムS’を暗号化部24に送信する。
【0033】
図8を参照して、実施の形態1に係る暗号化処理(
図2のステップS14)を説明する。
(ステップS41:取得処理)
暗号化部24は、公開鍵pk及び平文mと、ステップS35で送信されたスパンプログラムS’=(M’,ρ’)とを取得する。
【0034】
(ステップS42:暗号成分生成処理)
暗号化部24は、ステップS41で取得された公開鍵pk及び平文mから暗号成分cを生成する。暗号成分cの生成方法は、採用する関数型暗号方式に応じた方法である。例えば、暗号成分cの生成方法は、特許文献1又は非特許文献1に記載された関数型暗号方式における方法である。
【0035】
(ステップS43:送信処理)
暗号化部24は、ステップS42で生成された暗号成分cと、ステップS41で取得されたスパンプログラムS’=(M’,ρ’)とを含む暗号文CTを、宛先に送信する。
【0036】
***実施の形態1の効果***
以上のように、実施の形態1に係るスパンプログラム調整装置100は、復号条件を満たすために必要な属性の個数が少なくなる属性に対応付けられた行ほど、ガウスの消去法においてピボットとして選択され易くなるように、行列Mの行を置換する。これにより、行列M’が生成される。そして、実施の形態1に係る暗号化装置10は、この行列M’を含む暗号文CTを生成する。
ガウスの消去法により、この行列M’からαを計算することにより、非0成分がより少ないαを計算可能である。その結果、暗号文CTの復号処理を効率化できる。
【0037】
図9を参照して、実施の形態1の効果を説明する。
ここでは、復号時に使用される属性の集合Γ=(A,D,E,F)であるとする。復号処理では、対応する属性が属性の集合Γに含まれている行列Mの行を抜き出して行列M
δが生成される。そのため、行列Mから生成された行列M
δと、行列M’から生成された行列M’
δとは
図9に示すようになる。
行列M
δの各行は1行目から順に属性A,D,E,Fと紐づいている。行列M
δの転置に全ての成分が-1の列を追加した行列に対してガウスの消去法を行った結果が行列Tである。行列Tの5列目からα=(0,1,1,0)が得られ、他の列から基底(0,-1,-1,1)が得られる。αから、復号条件prdを満たす属性としてD,Eが採用され、αの非0成分の個数は2である。
行列M’
δの各行は1行目から順に属性F,D,E,Aと紐づいている。ここで、行列M’
δの転置に全ての成分が-1の列を追加した行列に対してガウスの消去法を行った結果が行列T’である。行列T’の5列目からα=(1,0,0,0)が得られ、他の列から基底(-1,1,1,0)が得られる。αから、復号条件prdを満たす属性としてFが採用され、αの非0成分の個数は1である。
このように、スパンプログラムS’=(M’,ρ’)を用いることにより、復号条件prdを満たすために必要な属性の個数がより少ない属性が優先的にピボット列になる。そのため、αの非0成分の個数を削減できる。その結果、復号におけるペアリング演算の回数を削減でき、復号処理を効率化できる。
【0038】
実施の形態2.
実施の形態2は、スパンプログラムSの調整を復号装置30で行う点が実施の形態1と異なる。実施の形態2では、この異なる点を説明して、同一の点については説明を省略する。
【0039】
***構成の説明***
図10を参照して、実施の形態2に係る復号装置30の機能構成を説明する。
復号装置30は、機能構成要素として、暗号文取得部41と、スパンプログラム取得部42と、スパンプログラム調整部43と、復号部44とを備える。スパンプログラム調整部43は、木構造化部431と、整列部432と、置換部433とを備える。復号装置30の各機能構成要素の機能はソフトウェアにより実現される。
スパンプログラム取得部42と、スパンプログラム調整部43との機能がスパンプログラム調整装置100に相当する。
【0040】
***動作の説明***
図11及び
図12を参照して、実施の形態2に係る復号装置30の動作を説明する。
実施の形態2に係る復号装置30の動作手順は、実施の形態2に係る復号方法に相当する。また、実施の形態2に係る復号装置30の動作を実現するプログラムは、実施の形態2に係る復号プログラムに相当する。
【0041】
図11を参照して、実施の形態2に係る復号装置30の全体的な動作を説明する。
(ステップS51:暗号文取得処理)
暗号文取得部41は、公開鍵pkと、暗号文CTと、秘密鍵SKとを取得する。暗号文CTは、暗号成分cと、スパンプログラムS=(M,ρ)と、復号条件prdとを含む。つまり、実施の形態2では、暗号文CTは、スパンプログラムS’=(M’,ρ’)ではなく、スパンプログラムS=(M,ρ)と、復号条件prdとを含む。秘密鍵SKは、鍵要素kと、属性の集合Γとを含む。
【0042】
(ステップS52:スパンプログラム取得処理)
スパンプログラム取得部42は、ステップS51で取得された暗号文CTに含まれるスパンプログラムS及び復号条件prdを取得する。
【0043】
(ステップS53:スパンプログラム調整処理)
スパンプログラム調整部43は、ステップS52で取得されたスパンプログラムSが有する行列M及びラベルρを調整して行列M’及びラベルρ’を有するスパンプログラムS’を生成する。スパンプログラムSからスパンプログラムS’を生成する方法は、実施の形態1と同じである。
【0044】
(ステップS54:復号処理)
復号部44は、ステップS53で生成されたスパンプログラムS’に含まれる行列M’と、公開鍵pkと、秘密鍵SKとを用いて暗号文CTを復号する。
【0045】
図12を参照して、実施の形態2に係る復号処理(
図11のステップS54)を説明する。
(ステップS61:取得処理)
復号部44は、公開鍵pkと、ステップS51で取得された暗号文CTに含まれる暗号成分cと、ステップS53で生成されたスパンプログラムS’=(M’,ρ’)と、秘密鍵SKとを取得する。
【0046】
(ステップS62:行列Mδ生成処理)
復号部44は、ステップS61で取得されたスパンプログラムS’=(M’,ρ’)と、秘密鍵SKに含まれる属性の集合Γとから、行列M’δを生成する。つまり、復号部44は、属性が属性の集合Γに含まれている行列M’の行を抜き出して行列M’δを生成する。
【0047】
(ステップS63:属性特定処理)
復号部44は、行列M’δの転置に全ての成分が-1の列を追加した行列に対してガウスの消去法を行い、行列T’を生成する。復号部44は、行列T’により復号に必要な属性を特定する。
【0048】
(ステップS64:ペアリング演算処理)
復号部44は、ステップS63で特定された属性に対応する暗号成分cの要素と鍵成分kの要素とについてのペアリング演算等を行う。これにより、暗号文CTが復号される。
【0049】
***実施の形態2の効果***
以上のように、実施の形態2に係るスパンプログラム調整装置100は、復号条件を満たすために必要な属性の個数が少なくなる属性に対応付けられた行ほど、ガウスの消去法においてピボットとして選択され易くなるように、行列Mの行を置換する。これにより、行列M’が生成される。そして、実施の形態2に係る復号装置30は、この行列M’を用いて暗号文CTを復号する。
実施の形態1と同様に、ガウスの消去法により、この行列M’からαを計算することにより、非0成分がより少ないαを計算可能である。その結果、暗号文CTの復号処理を効率化できる。
【0050】
***他の構成***
<変形例1>
実施の形態2では、行列Mを置換して行列M’が生成され、行列M’から行列M’δが生成された。しかし、行列Mから行列Mδが生成され行列Mδを置換して行列M’δが生成されてもよい。この場合にも、実施の形態2と同様の効果が得られる。
【0051】
図13を参照して、変形例1に係る復号装置30の全体的な動作を説明する。
ステップS71の処理は、
図11のステップS51と同じである。
【0052】
(ステップS72:行列Mδ生成処理)
復号部44は、ステップS71で取得されたスパンプログラムS=(M,ρ)と、秘密鍵SKに含まれる属性の集合Γとから、行列Mδを生成する。つまり、復号部44は、属性が属性の集合Γに含まれている行列Mの行を抜き出して行列Mδを生成する。また、復号部44は、ラベルρから行列Mδの各行に対応するラベルを抽出したラベルρδを生成する。
【0053】
(ステップS73:スパンプログラム取得処理)
スパンプログラム取得部42は、ステップS71で取得された復号条件prdと、ステップS72で生成された行列Mδ及びラベルρδとを取得する。
【0054】
(ステップS74:スパンプログラム調整処理)
スパンプログラム調整部43は、ステップS73で取得された行列Mδを調整して行列M’δを生成する。行列Mδを調整した行列M’δを生成する方法は、実施の形態1で行列Mから行列M’を生成した方法と同じである。
【0055】
(ステップS75:復号処理)
復号部44は、ステップS74で生成された行列M’
δと、公開鍵pkと、秘密鍵SKとを用いて暗号文CTを復号する。具体的には、復号部44は、
図12のステップS63及びステップS64の処理を実行する。
【0056】
実施の形態3.
実施の形態3は、鍵ポリシー関数型暗号の場合に復号処理の高速化を図る点が実施の形態1,2と異なる。実施の形態3では、この異なる点を説明して、同一の点については説明を省略する。
【0057】
実施の形態1,2では、暗号文ポリシー関数型暗号を想定していたため、暗号文CTにスパンプログラムSが含まれた。しかし、鍵ポリシー関数型暗号の場合には、鍵生成装置50によって生成される秘密鍵SKにスパンプログラムSが含まれる。そのため、実施の形態3では、鍵生成装置50が、スパンプログラムSを調整してスパンプログラムS’を生成し、スパンプログラムS’を秘密鍵SKに設定する。
【0058】
***構成の説明***
図14を参照して、実施の形態3に係る鍵生成装置50の機能構成を説明する。
鍵生成装置50は、機能構成要素として、スパンプログラム生成部61と、スパンプログラム取得部62と、スパンプログラム調整部63と、鍵生成部64とを備える。スパンプログラム調整部63は、木構造化部631と、整列部632と、置換部633とを備える。鍵生成装置50の各機能構成要素の機能はソフトウェアにより実現される。
スパンプログラム取得部62と、スパンプログラム調整部63との機能がスパンプログラム調整装置100に相当する。
【0059】
図15及び
図16を参照して、実施の形態3に係る鍵生成装置50の動作を説明する。
実施の形態3に係る鍵生成装置50の動作手順は、実施の形態3に係る鍵生成方法に相当する。また、実施の形態3に係る鍵生成装置50の動作を実現するプログラムは、実施の形態3に係る鍵生成プログラムに相当する。
【0060】
図15を参照して、実施の形態3に係る鍵生成装置50の全体的な動作を説明する。
(ステップS81:スパンプログラム生成処理)
スパンプログラム生成部61は、秘密鍵で復号可能な条件である復号条件prdの入力を受け付ける。スパンプログラム生成部61は、復号条件prdに基づき、スパンプログラムSを生成する。
【0061】
ステップS82及びステップS83の処理は、
図2のステップS12及びステップS13の処理と同じである。
【0062】
(ステップS84:鍵生成処理)
鍵生成部64は、公開鍵pk及び秘密鍵skと、属性の集合Γと、ステップS83で生成されたスパンプログラムS’とを取得する。鍵生成部64は、公開鍵pk及び秘密鍵skと属性の集合Γとから生成された鍵成分kと、属性の集合Γと、行列M’及びラベルρ’とを有するスパンプログラムS’とを含む秘密鍵SKを生成する。
【0063】
図16を参照して、実施の形態3に係る鍵生成処理(
図15のステップS84)を説明する。
(ステップS91:取得処理)
鍵生成部64は、公開鍵pk及び秘密鍵skと、属性の集合Γと、ステップS83で生成されたスパンプログラムS’=(M’,ρ’)とを取得する。
【0064】
(ステップS92:鍵成分生成処理)
暗号化部24は、ステップS91で取得された公開鍵pk及び秘密鍵skと、属性の集合Γとから鍵成分kを生成する。鍵成分kの生成方法は、採用する関数型暗号方式に応じた方法である。例えば、鍵成分kの生成方法は、特許文献1又は非特許文献1に記載された関数型暗号方式における方法である。
【0065】
(ステップS93:送信処理)
鍵生成部64は、ステップS92で生成された鍵成分kと、ステップS91で取得された属性の集合Γ及びスパンプログラムS’=(M’,ρ’)とを含む秘密鍵SKを、宛先に送信する。
【0066】
***実施の形態3の効果***
以上のように、実施の形態3に係るスパンプログラム調整装置100は、復号条件を満たすために必要な属性の個数が少なくなる属性に対応付けられた行ほど、ガウスの消去法においてピボットとして選択され易くなるように、行列Mの行を置換する。これにより、行列M’が生成される。そして、実施の形態3に係る鍵生成装置50は、この行列M’を用いて秘密鍵SKを生成する。
実施の形態1と同様に、ガウスの消去法により、この行列M’からαを計算することにより、非0成分がより少ないαを計算可能である。その結果、暗号文CTの復号処理を効率化できる。
【0067】
図17を参照して、実施の形態1に係る暗号化装置10と、実施の形態2に係る復号装置30と、実施の形態1に係る3に係る鍵生成装置50とのハードウェア構成を説明する。
暗号化装置10は、コンピュータである。
暗号化装置10は、プロセッサ11と、メモリ12と、ストレージ13と、通信インタフェース14とのハードウェアを備える。プロセッサ11は、信号線を介して他のハードウェアと接続され、これら他のハードウェアを制御する。
【0068】
復号装置30は、コンピュータである。
復号装置30は、プロセッサ31と、メモリ32と、ストレージ33と、通信インタフ
ェース34とのハードウェアを備える。プロセッサ31は、信号線を介して他のハードウェアと接続され、これら他のハードウェアを制御する。
【0069】
鍵生成装置50は、コンピュータである。
鍵生成装置50は、プロセッサ51と、メモリ52と、ストレージ53と、通信インタフェース54とのハードウェアを備える。プロセッサ51は、信号線を介して他のハードウェアと接続され、これら他のハードウェアを制御する。
【0070】
プロセッサ11,31,51は、プロセッシングを行うICである。ICはIntegrated Circuitの略である。プロセッサ11,31,51は、具体例としては、CPU、DSP、GPUである。CPUは、Central Processing
Unitの略である。DSPは、Digital Signal Processorの略である。GPUは、Graphics Processing Unitの略である。
【0071】
メモリ12,32,52は、データを一時的に記憶する記憶装置である。メモリ12,32,52は、具体例としては、SRAM、DRAMである。SRAMは、Static
Random Access Memoryの略である。DRAMは、Dynamic
Random Access Memoryの略である。
【0072】
ストレージ13,33,53は、データを保管する記憶装置である。ストレージ13,33,53は、具体例としては、HDDである。HDDは、Hard Disk Driveの略である。また、ストレージ13,33,53は、SD(登録商標)メモリカード、CompactFlash(登録商標)、NANDフラッシュ、フレキシブルディスク、光ディスク、コンパクトディスク、Blu-ray(登録商標)ディスク、DVDといった可搬記録媒体であってもよい。SDは、Secure Digitalの略である。DVDは、Digital Versatile Diskの略である。
【0073】
通信インタフェース14,34,54は、外部の装置と通信するためのインタフェースである。通信インタフェース14,34,54は、具体例としては、Ethernet(登録商標)、USB、HDMI(登録商標)のポートである。USBは、Universal Serial Busの略である。HDMIは、High-Definition
Multimedia Interfaceの略である。
ストレージ13には、暗号化装置10の各機能構成要素の機能を実現するプログラムが格納されている。このプログラムは、プロセッサ11によりメモリ12に読み込まれ、プロセッサ11によって実行される。これにより、暗号化装置10の各機能構成要素の機能が実現される。
【0074】
図17では、プロセッサ11,31,51は、1つだけ示されていた。しかし、プロセッサ11,31,51は、複数であってもよく、複数のプロセッサ11,31,51が、各機能を実現するプログラムを連携して実行してもよい。
【0075】
実施の形態1-3では、各機能構成要素がソフトウェアで実現された。しかし、各機能構成要素はハードウェアで実現されてもよい。この場合について、実施の形態1と異なる点を説明する。
【0076】
各機能構成要素がハードウェアで実現される場合には、暗号化装置10は、プロセッサ11とメモリ12とストレージ13とに代えて、電子回路を備える。電子回路は、各機能構成要素と、メモリ12と、ストレージ13との機能とを実現する専用の回路である。
【0077】
各機能構成要素がハードウェアで実現される場合には、復号装置30は、プロセッサ31とメモリ32とストレージ33とに代えて、電子回路を備える。電子回路は、各機能構成要素と、メモリ32と、ストレージ33との機能とを実現する専用の回路である。
【0078】
各機能構成要素がハードウェアで実現される場合には、鍵生成装置50は、プロセッサ51とメモリ52とストレージ53とに代えて、電子回路を備える。電子回路は、各機能構成要素と、メモリ52と、ストレージ53との機能とを実現する専用の回路である。
【0079】
電子回路としては、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ロジックIC、GA、ASIC、FPGAが想定される。GAは、Gate Arrayの略である。ASICは、Application Specific Integrated Circuitの略である。FPGAは、Field-Programmable Gate Arrayの略である。
各機能構成要素を1つの電子回路で実現してもよいし、各機能構成要素を複数の電子回路に分散させて実現してもよい。
【0080】
<変形例2>
変形例2として、一部の各機能構成要素がハードウェアで実現され、他の各機能構成要素がソフトウェアで実現されてもよい。
【0081】
プロセッサ11,31,51とメモリ12,32,52とストレージ13,33,53と電子回路とを処理回路という。つまり、各機能構成要素の機能は、処理回路により実現される。
【0082】
また、以上の説明における「部」を、「回路」、「工程」、「手順」、「処理」又は「処理回路」に読み替えてもよい。
【0083】
以下、本開示の諸態様を付記としてまとめて記載する。
(付記1)
暗号文の復号条件を構成するための複数の属性それぞれに行が対応付けられた行列Mを有するスパンプログラムを取得するスパンプログラム取得部と、
前記復号条件を満たすために必要な属性の個数が少なくなる属性に対応付けられた行ほど、ガウスの消去法においてピボットとして選択され易くなるように、前記スパンプログラム取得部によって生成された前記スパンプログラムが有する前記行列Mの行を置換して行列M’を生成するスパンプログラム調整部と
を備えるスパンプログラム調整装置。
(付記2)
前記復号条件は、前記複数の属性を1つ以上のand演算子と1つ以上のor演算子とを用いて結合した論理条件により表され、
前記スパンプログラム調整部は、
前記複数の属性それぞれと前記1つ以上のand演算子それぞれと前記1つ以上のor演算子それぞれとをノードとした多分木であって、前記複数の属性それぞれをリーフとし、前記1つ以上のand演算子それぞれと前記1つ以上のor演算子それぞれとをリーフ以外のノードとした多分木によって、前記復号条件を表す木構造化部と、
前記木構造化部によって表された前記多分木における前記1つ以上のor演算子のノードそれぞれに対して、紐づくリーフの数が少ない順に子のノードを整列する整列部と、
前記整列部によって整列された前記多分木を根から辿って先に到達するリーフが示す属性に対応する行ほど、前記ガウスの消去法において前記ピボットとして選択され易い位置になるように、前記行列Mの行を置換して行列M’を生成する置換部と
を備える付記1に記載のスパンプログラム調整装置。
(付記3)
付記1又は2に記載のスパンプログラム調整装置と、
前記スパンプログラム調整部によって生成された前記行列M’を含む暗号文を生成する暗号化部と
を備える暗号化装置。
(付記4)
付記1又は2に記載のスパンプログラム調整装置と、
前記スパンプログラム調整部によって生成された前記行列M’を用いて前記暗号文を復号する復号部と
を備える復号装置。
(付記5)
前記スパンプログラム調整部は、前記行列Mのうち、属性の集合Γに含まれる属性に対応する行が抽出された行列Mδを、前記行列Mとして用いる
付記4に記載の復号装置。
(付記6)
付記1又は2に記載のスパンプログラム調整装置と、
前記スパンプログラム調整部によって生成された前記行列M’を用いて復号鍵を生成する鍵生成部
を備える鍵生成装置。
(付記7)
コンピュータが、暗号文の復号条件を構成するための複数の属性それぞれに行が対応付けられた行列Mを有するスパンプログラムを取得し、
コンピュータが、前記復号条件を満たすために必要な属性の個数が少なくなる属性に対応付けられた行ほど、ガウスの消去法においてピボットとして選択され易くなるように、前記スパンプログラムが有する前記行列Mの行を置換して行列M’を生成するスパンプログラム調整方法。
(付記8)
暗号文の復号条件を構成するための複数の属性それぞれに行が対応付けられた行列Mを有するスパンプログラムを取得するスパンプログラム取得処理と、
前記復号条件を満たすために必要な属性の個数が少なくなる属性に対応付けられた行ほど、ガウスの消去法においてピボットとして選択され易くなるように、前記スパンプログラム取得処理によって生成された前記スパンプログラムが有する前記行列Mの行を置換して行列M’を生成するスパンプログラム調整処理と
を行うスパンプログラム調整装置としてコンピュータを機能させるスパンプログラム調整プログラム。
【0084】
以上、本開示の実施の形態及び変形例について説明した。これらの実施の形態及び変形例のうち、いくつかを組み合わせて実施してもよい。また、いずれか1つ又はいくつかを部分的に実施してもよい。なお、本開示は、以上の実施の形態及び変形例に限定されるものではなく、必要に応じて種々の変更が可能である。
【符号の説明】
【0085】
100 スパンプログラム調整装置、10 暗号化装置、11 プロセッサ、12 メモリ、13 ストレージ、14 通信インタフェース、21 スパンプログラム生成部、22 スパンプログラム取得部、23 スパンプログラム調整部、231 木構造化部、232 整列部、233 置換部、24 暗号化部、30 復号装置、31 プロセッサ、32 メモリ、33 ストレージ、34 通信インタフェース、41 暗号文取得部、42 スパンプログラム取得部、43 スパンプログラム調整部、431 木構造化部、432 整列部、433 置換部、44 復号部、50 鍵生成装置、51 プロセッサ、52 メモリ、53 ストレージ、54 通信インタフェース、61 スパンプログラ
ム生成部、62 スパンプログラム取得部、63 スパンプログラム調整部、631 木構造化部、632 整列部、633 置換部、64 鍵生成部、201 多分木、202
ノード、203 リーフ。