(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-10-11
(45)【発行日】2023-10-19
(54)【発明の名称】暗号化装置、復号装置、暗号化方法及び暗号化プログラム
(51)【国際特許分類】
H04L 9/08 20060101AFI20231012BHJP
【FI】
H04L9/08 D
H04L9/08 F
(21)【出願番号】P 2020165303
(22)【出願日】2020-09-30
【審査請求日】2022-07-06
(73)【特許権者】
【識別番号】000208891
【氏名又は名称】KDDI株式会社
(74)【代理人】
【識別番号】100106002
【氏名又は名称】正林 真之
(74)【代理人】
【識別番号】100120891
【氏名又は名称】林 一好
(72)【発明者】
【氏名】石坂 理人
(72)【発明者】
【氏名】清本 晋作
【審査官】金沢 史明
(56)【参考文献】
【文献】特開2009-170967(JP,A)
【文献】特開2021-125810(JP,A)
【文献】ISHIZAKA, Masahito and KIYOMOTO, Shinsaku,Time-Specific Encryption with Constant-Size Secret-Keys Secure under Standard Assumption,Cryptology ePrint Archive,2020年,Paper 2020/595,pp. 1-30,[2023年6月26日検索], インターネット<URL: https://eprint.iacr.org/2020/595>
【文献】笠松 宏平, 他,DBDH仮定に基づく暗号文ポリシー閾値多次元範囲暗号,2013年 暗号と情報セキュリティシンポジウム(SCIS 2013),2013年01月,pp. 1-8
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/00- 9/40
G09C 1/00
(57)【特許請求の範囲】
【請求項1】
T個の数値に対して、それぞれlogTビットのビット列を割り当てる二値化部と、
多次元範囲暗号における次元毎の値に対応する数値に割り当てられた前記ビット列を結合し、結合
した結果である単一の多次元IDに基づいて秘密鍵を生成する鍵生成部と、
前記次元毎に、設定された値の範囲
を入力として、当該範囲に含まれる値それぞれに割り当てられた前記ビット列
のみを漏れなくカバーするワイルドカードID集合を生成するID集合生成部と、
前記ワイルドカードID集合から1要素ずつ取り出した組み合わせ毎に、全要素を結合して単一の多次元ワイルドカードIDとし、全組み合わせの当該多次元ワイルドカードIDを要素とした集合を生成する多次元ID集合生成部と、
前記多次元ワイルドカードIDのそれぞれに基づいて、ワイルドカードIDベース暗号方式により平文を暗号化し、当該暗号化の結果の全てを暗号文として出力する暗号化部と、を備える暗号化装置。
【請求項2】
前記多次元ID及び前記多次元ワイルドカードIDに対して、全単射関数によって示されるビット位置を入れ替える変換部を備える請求項1に記載の暗号化装置。
【請求項3】
前記二値化部は、前記数値の並びを再帰的に2分割した際に、分割点を軸に両側のブロックに含まれる前記ビット列のいずれか1ビットのみは反転し、他のビットは対称となるように0又は1を割り当てる請求項1又は請求項2に記載の暗号化装置。
【請求項4】
前記二値化部は、前記数値の並びにおいて、隣り合う数値間で1ビットのみが異なる前記ビット列を割り当てる請求項3に記載の暗号化装置。
【請求項5】
前記次元毎の値に対して前記数値は、所定の数だけ巡回シフトさせて対応付けられる請求項3又は請求項4に記載の暗号化装置。
【請求項6】
前記ID集合生成部は、前記数値の並びを再帰的に2分割していく際に得られるブロックのうち、前記範囲に含まれる最も大きなブロックの始点において、前記範囲を分割し、分割された部分範囲毎に前記ワイルドカードID集合を生成する請求項3から請求項5のいずれかに記載の暗号化装置。
【請求項7】
前記ID集合生成部は、前記部分範囲毎に生成された集合の全体をカバーする前記ワイルドカードID集合を生成する請求項6に記載の暗号化装置。
【請求項8】
請求項1から請求項7のいずれかに記載の暗号化装置により生成された暗号文
、及び前記秘密鍵を入力とし、
前記二値化部と、
前記ID集合生成部と、
前記多次元ID集合生成部と、
前記秘密鍵に対応する前記単一の多次元IDが、前記多次元ID集合生成部により生成された集合に含まれるいずれかの多次元ワイルドカードID
に合致する場合に、
前記暗号化部により生成された複数の暗号文に含まれる当該
単一の多次元ワイルドカードIDに対応する暗号文を、前記ワイルドカードIDベース暗号方式により復号する
復号部と、を備える復号装置。
【請求項9】
T個の数値に対して、それぞれlogTビットのビット列を割り当てる二値化ステップと、
多次元範囲暗号における次元毎の値に対応する数値に割り当てられた前記ビット列を結合し、結合
した結果である単一の多次元IDに基づいて秘密鍵を生成する鍵生成ステップと、
前記次元毎に、設定された値の範囲
を入力として、当該範囲に含まれる値それぞれに割り当てられた前記ビット列
のみを漏れなくカバーするワイルドカードID集合を生成するID集合生成ステップと、
前記ワイルドカードID集合から1要素ずつ取り出した組み合わせ毎に、全要素を結合して単一の多次元ワイルドカードIDとし、全組み合わせの当該多次元ワイルドカードIDを要素とした集合を生成する多次元ID集合生成ステップと、
前記多次元ワイルドカードIDのそれぞれに基づいて、ワイルドカードIDベース暗号方式により平文を暗号化し、当該暗号化の結果の全てを暗号文として出力する暗号化ステップと、をコンピュータが実行する暗号化方法。
【請求項10】
請求項1から請求項7のいずれかに記載の暗号化装置としてコンピュータを機能させるための暗号化プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、多次元範囲暗号(Multi-Dimensional Range Encryption, MDRE)を構成する装置、方法及びプログラムに関する。
【背景技術】
【0002】
従来、指定された範囲に含まれる周期(あるいは数値)に対応する秘密鍵によってのみ復号が可能な時間指定暗号(Time-Specific Encryption, TSE)の構成法が提案されている。
例えば、特許文献1及び非特許文献1では、任意のワイルドカードIDベース暗号(Wildcarded Identity-Based Encryption, WIBE)からTSEを構成する一般的構成法が提案されている。
また、非特許文献2では、任意のIDベース暗号(Identity-Based Encryption, IBE)からTSEを構成する一般的構成法が提案されている。
【0003】
さらに、1次元のTSEを多次元化したMDREについて、非特許文献3では、既存の具体的な階層的IDベース暗号(Hierarchical IBE, HIBE)方式の構成法を参考にした具体的なMDRE方式の構成法が提案されている。
【先行技術文献】
【特許文献】
【0004】
【非特許文献】
【0005】
【文献】M. Ishizaka and S. Kiyomoto. Time-specific encryption with constant size secret-keys secure under standard assumption. Cryptology ePrint Archive: Report 2020/595, 2020.
【文献】K. G. Paterson and E. A. Quaglia. Time-specific encryption. In SCN 2010, volume 6280 of LNCS, pages 1-16. Springer, 2010.
【文献】K. Kasamatsu, T. Matsuda, G. Hanaoka and H. Imai. Ciphertext policy multi-dimensional range encryption. In ICISC 2012, volume 7839 of LNCS, pages 247-261. Springer, 2012.
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、任意のWIBEからMDREを構成する一般的構成法は提案されていなかった。また、非特許文献1で提案されているTSEの構成法をMDREに拡張することは難しく、多次元化はできていなかった。
【0007】
本発明は、任意のWIBEからMDREを構成できる暗号化装置、復号装置、暗号化方法及び暗号化プログラムを提供することを目的とする。
【課題を解決するための手段】
【0008】
本発明に係る暗号化装置は、T個の数値に対して、それぞれlogTビットのビット列を割り当てる二値化部と、多次元範囲暗号における次元毎の値に対応する数値に割り当てられた前記ビット列を結合し、結合後の単一の多次元IDに基づいて秘密鍵を生成する鍵生成部と、前記次元毎に、設定された値の範囲に割り当てられた前記ビット列の全てをカバーするワイルドカードID集合を生成するID集合生成部と、前記ワイルドカードID集合から1要素ずつ取り出した組み合わせ毎に、全要素を結合して単一の多次元ワイルドカードIDとし、全組み合わせの当該多次元ワイルドカードIDを要素とした集合を生成する多次元ID集合生成部と、前記多次元ワイルドカードIDのそれぞれに基づいて、ワイルドカードIDベース暗号方式により平文を暗号化し、当該暗号化の結果の全てを暗号文として出力する暗号化部と、を備える。
【0009】
前記暗号化装置は、前記多次元ID及び前記多次元ワイルドカードIDに対して、全単射関数によって示されるビット位置を入れ替える変換部を備えてもよい。
【0010】
前記二値化部は、前記数値の並びを再帰的に2分割した際に、分割点を軸に両側のブロックに含まれる前記ビット列のいずれか1ビットのみは反転し、他のビットは対称となるように0又は1を割り当ててもよい。
【0011】
前記二値化部は、前記数値の並びにおいて、隣り合う数値間で1ビットのみが異なる前記ビット列を割り当ててもよい。
【0012】
前記次元毎の値に対して前記数値は、所定の数だけ巡回シフトさせて対応付けられてもよい。
【0013】
前記ID集合生成部は、前記数値の並びを再帰的に2分割していく際に得られるブロックのうち、前記範囲に含まれる最も大きなブロックの始点において、前記範囲を分割し、分割された部分範囲毎に前記ワイルドカードID集合を生成してもよい。
【0014】
前記ID集合生成部は、前記部分範囲毎に生成された集合の全体をカバーする前記ワイルドカードID集合を生成してもよい。
【0015】
本発明に係る復号装置は、前記暗号化装置により生成された暗号文に用いられた多次元ワイルドカードIDのいずれかの条件に、前記秘密鍵により示される前記多次元IDが合致する場合に、当該暗号文を、前記ワイルドカードIDベース暗号方式により復号する。
【0016】
本発明に係る暗号化方法は、T個の数値に対して、それぞれlogTビットのビット列を割り当てる二値化ステップと、多次元範囲暗号における次元毎の値に対応する数値に割り当てられた前記ビット列を結合し、結合後の単一の多次元IDに基づいて秘密鍵を生成する鍵生成ステップと、前記次元毎に、設定された値の範囲に割り当てられた前記ビット列の全てをカバーするワイルドカードID集合を生成するID集合生成ステップと、前記ワイルドカードID集合から1要素ずつ取り出した組み合わせ毎に、全要素を結合して単一の多次元ワイルドカードIDとし、全組み合わせの当該多次元ワイルドカードIDを要素とした集合を生成する多次元ID集合生成ステップと、前記多次元ワイルドカードIDのそれぞれに基づいて、ワイルドカードIDベース暗号方式により平文を暗号化し、当該暗号化の結果の全てを暗号文として出力する暗号化ステップと、をコンピュータが実行する。
【0017】
本発明に係る暗号化プログラムは、前記暗号化装置としてコンピュータを機能させるためのものである。
【発明の効果】
【0018】
本発明によれば、任意のWIBEからMDREを構成できる。
【図面の簡単な説明】
【0019】
【
図1】第1の構成法を実現する暗号化装置の機能構成を示す図である。
【
図2】WIBEtoMDREを構成する、セットアップアルゴリズム、鍵生成アルゴリズム、暗号化アルゴリズム、及び復号アルゴリズムの定義を示す図である。
【
図3】IBEtoTSE
PQに関する完全二分木を例示する図である。
【
図4】アルゴリズムCover
lの定義を示す図である。
【
図5】二値化アルゴリズムPQ.Binarize
l及びワイルドカードID集合生成アルゴリズムPQ.GenWID
lの定義を示す図である。
【
図6】WIBE
IKにより具体化されたWIBEtoMDRE
PQと、WIBE
BGPにより具体化されたWIBEtoMDRE
PQとを比較評価した図である。
【
図7】第2の構成法を実現する暗号化装置の機能構成を示す図である。
【
図9】一般化されたMDRE方式WIBEtoMDRE
fの定義を示す図である。
【
図10】二値化アルゴリズムIK.Binarize
l及びワイルドカードID集合生成アルゴリズムIK.GenWID
lの定義を示す図である。
【
図11】ワイルドカードID集合生成アルゴリズムIK.GenWID
lが使用する補助アルゴリズムIK.Classify
l及びIK.Divide
lの定義を示す図である。
【
図12】ワイルドカードID集合生成アルゴリズムIK.GenWID
lが使用する補助アルゴリズムIK.Latter
l、IK.Former
l、及びIK.Merge
lの定義を示す図である。
【
図13】二値化アルゴリズムIK.Binarize
lを実行した際の入力と出力との対応関係を例示する図である。
【
図14】クラス分類アルゴリズムIK.Classify
lの実行例を示す図である。
【
図15】分割アルゴリズムIK.Divide
lの実行例を示す図である。
【
図16】後半wID集合確定アルゴリズムIK.Latter
l、前半wID集合確定アルゴリズムIK.Former
l、及び前後半wID集合合併アルゴリズムIK.Merge
lのそれぞれの実行後の状態を例示する図である。
【
図17】二値化アルゴリズムIK.Binarize
l
general及びワイルドカードID集合生成アルゴリズムIK.GenWID
l
generalの定義を示す図である。
【
図18】ワイルドカードID集合生成アルゴリズムIK.GenWID
l
generalが使用する補助アルゴリズムClassify
l
general及びDivide
l
generalの定義を示す図である。
【
図19】ワイルドカードID集合生成アルゴリズムIK.GenWID
l
generalが使用する補助アルゴリズムIK.Latter
l
general、IK.Former
l
general及びIK.Merge
l
generalの定義を示す図である。
【
図20】特定のパラメータの下での二値化アルゴリズムIK.Binarize
l
generalの実行例を示す図である。
【発明を実施するための形態】
【0020】
以下、本発明の実施形態の一例について説明する。
本実施形態は、多次元範囲暗号(MDRE)の構成法に関し、まず、MDREを説明した後、ワイルドカードIDベース暗号(WIBE)について説明する。
【0021】
[多次元範囲暗号(MDRE)]
MDREは、以下の4つの多項式時間アルゴリズム{Setup,KGen,Enc,Dec}により構成される。なお、Decは確定的アルゴリズムであり、それ以外は確率的アルゴリズムである。
【0022】
まず、λ∈N(自然数)として、1λは、秘密鍵長等を決定するセキュリティパラメータである。また、D∈Nは、総次元数を表す。各次元i∈[1,D]に対して、自然数Ti∈Nについて、[0,Ti-1]は、総数値数を表す。
【0023】
セットアップアルゴリズムSetupは、(1λ,D,T1,…,TD)を入力として受け取り、マスタ公開鍵mpkとマスタ秘密鍵mskを出力する。このアルゴリズムの実行を、(mpk,msk)←Setup(1λ,D,T1,…,TD)と表記する。平文空間Mは、マスタ公開鍵mpkにより一意に定まるものとする。
セットアップアルゴリズムは、信頼できる第三者機関(Trusted Authority, TA)により実行される。マスタ秘密鍵mskは、TAにより秘密裏に保持される。また、マスタ公開鍵mpkは、3つのアルゴリズム{KGen,Enc,Dec}に対して暗黙的に入力される。
【0024】
鍵生成アルゴリズムKGenは、マスタ秘密鍵mskとD個の数値Q:=(t1,…,tD)とを入力として受け取り、秘密鍵skQを出力する。ただし、全てのi∈[1,D]について、ti∈[0,Ti-1]とする。このアルゴリズムの実行を、skQ←KGen(msk,t1,…,tD)と表記する。
この鍵生成アルゴリズムKGenは、mskを用いてTAにより実行される。生成された秘密鍵skQは、所定の安全な手段により鍵の所有者に譲渡されるものとする。
【0025】
暗号化アルゴリズムEncは、平文m∈Mと、D個の範囲R:=([L1,R1],…,[LD,RD])を入力として受け取り、暗号文CRを出力する。ただし、全てのi∈[1,D]について、[Li∈[0,Ti-1]∧Ri∈[0,Ti-1]]とする。このとき、各i∈[1,D]について、Li≦Riであれば、[Li,Ri]は、集合{Li,Li+1,…,Ri-1,Ri}と等価であり、Li>Riであれば、[Li,Ri]は、集合{Li,…,Ti-1}∪{0,…,Ri}と等価である。このアルゴリズムの実行を、CR←Enc(m,[L1,R1],…,[LD,RD])と表記する。
【0026】
復号アルゴリズムDecは、秘密鍵skQと暗号文CRとを入力として受け取り、平文m∈Mあるいは復号失敗を表す特殊な記号⊥を出力する。このアルゴリズムの実行を、m/⊥←Dec(skQ,CR)と表記する。
【0027】
ここで、いかなるMDRE方式も正当(Correct)であることが要求される。
MDRE方式ΣMDRE={Setup,KGen,Enc,Dec}が正当であるとは、ある平文mがあるD個の範囲Rの下で正しく暗号化された場合に、この暗号文は、当該範囲に含まれるD個の数値Qに対応する鍵として正しく作られた秘密鍵を用いることで、正しく復号できる場合をいい、次のように定義される。
∀λ∈N,∀D∈N,∀T1∈N,…,∀TD∈N,∀(mpk,msk)←Setup(1λ,D,T1,…,TD),∀t1∈[0,T1-1],…,∀tD∈[0,TD-1],∀skQ←KGen(msk,t1,…,tD),where Q:=(t1,…,tD),∀m∈M,∀L1∈[0,T1-1],∀R1∈[0,T1-1],…,∀LD∈[0,TD-1],∀RD∈[0,TD-1] s.t. ∧i∈[1,D]ti∈[Li,Ri],∀CR←Enc(m,[L1,R1],…,[LD,RD]),where R:=([L1,R1],…,[LD,RD]),m←Dec(skQ,CR).
【0028】
[ワイルドカードIDベース暗号(WIBE)]
WIBEは、以下の4つの多項式時間アルゴリズム{Setup,KGen,Enc,Dec}により構成される。なお、Decは確定的アルゴリズムであり、それ以外は確率的アルゴリズムである。
ここで、λ∈N(自然数)として、1λは、秘密鍵長等を決定するセキュリティパラメータである。また、l∈Nは、ID長及びワイルドカードID長を表す。
【0029】
セットアップアルゴリズムSetupは、(1λ,l)を入力として受け取り、マスタ公開鍵mpkとマスタ秘密鍵mskとを出力する。このアルゴリズムの実行を、(mpk,msk)←Setup(1λ,l)と表記する。平文空間Mは、マスタ公開鍵mpkにより一意に定まるものとする。また、マスタ公開鍵mpkは、3つのアルゴリズム{KGen,Enc,Dec}に対して暗黙的に入力される。
【0030】
鍵生成アルゴリズムKGenは、mskとID∈{0,1}lとを入力として受け取り、秘密鍵skIDを出力する。このアルゴリズムの実行を、skID←KGen(msk,ID)と表記する。
【0031】
暗号化アルゴリズムEncは、平文m∈Mと、ワイルドカードID wID∈{0,1,*}lとを入力として受け取り、暗号文CwIDを出力する。このアルゴリズムの実行を、CwID←Enc(m,wID)と表記する。
【0032】
復号アルゴリズムDecは、秘密鍵skIDと暗号文CwIDとを入力として受け取り、平文m∈Mあるいは復号失敗を表す特殊な記号⊥を出力する。このアルゴリズムの実行を、m/⊥←Dec(skID,CwID)と表記する。
【0033】
WIBE方式に関しては、これらの主要アルゴリズムに加えて次の補助アルゴリズムを導入する。
wID条件合致判定アルゴリズムMatchlは、ID∈{0,1}l及びwID∈{0,1,*}lを入力として受け取り、IDがwIDの条件に合致するか否かを判定し、ビットb∈{0,1}を出力する。具体的には、wID条件合致判定アルゴリズムMatchlは、全てのi∈[0,l-1] s.t. wID[i]∈{0,1}について、ID[i]=wID[i]が成立する場合、1を出力し、それ以外の場合、0を出力する。
【0034】
ここで、いかなるWIBE方式も正当(Correct)であることが要求される。
WIBE方式ΣWIBE={Setup,KGen,Enc,Dec}が正当であるとは、ある平文mがあるwIDの下で正しく暗号化された場合に、この暗号文は、wIDの条件を満足するIDに対応する鍵として正しく作られた秘密鍵により、正しく復号される場合をいい、次のように定義される。
∀λ∈N,∀l∈N,∀(mpk,msk)←Setup(1λ,l),∀ID∈{0,1}l,∀skID←KGen(msk,ID),∀m∈M,∀wID∈{0,1,*}l s.t. Matchl(ID,wID)=1,∀CwID←Enc(m,wID),m←Dec(skID,CwID).
【0035】
[WIBEを用いたMDREの第1の構成法]
WIBEを用いたMDREの一般的構成法の一形態(WIBEtoMDRE)では、MDRE方式が、任意の正当なWIBE方式ΣWIBE={Setup’,KGen’,Enc’,Dec’,Matchl}と、独自の確定的アルゴリズムBinarizel及びGenWIDlとを用いて構成される。
以下、MDREの構成法を実現した暗号化装置1の機能構成を示し、続いて、構成されたMDRE方式のアルゴリズムを説明する。
【0036】
図1は、第1の構成法を実現する暗号化装置1の機能構成を示す図である。
暗号化装置1は、サーバ装置又はパーソナルコンピュータ等の情報処理装置(コンピュータ)であり、制御部10及び記憶部20の他、各種データの入出力デバイス及び通信デバイス等を備える。
【0037】
制御部10は、暗号化装置1の全体を制御する部分であり、記憶部20に記憶された各種プログラムを適宜読み出して実行することにより、本実施形態における各機能を実現する。制御部10は、CPUであってよい。
【0038】
記憶部20は、ハードウェア群を暗号化装置1として機能させるための各種プログラム(暗号化プログラム)、及び各種データ等の記憶領域であり、ROM、RAM、フラッシュメモリ又はハードディスクドライブ(HDD)等であってよい。
【0039】
制御部10は、二値化部11と、ID集合生成部12と、多次元ID集合生成部13と、セットアップ部14と、鍵生成部15と、暗号化部16と、復号部17とを備える。
【0040】
二値化部11は、二値化アルゴリズムBinarizelを実行することにより、T個の数値に対して、それぞれlogTビットのビット列を割り当てる。すなわち、二値化部11は、l∈Nとしたとき、数値t∈[0,2l-1]を入力として受け取り、ビット列str∈{0,1}lを出力する。ここで、二値化アルゴリズムは正当でなければならないとする。
二値化アルゴリズムが正当であるとは、全単射である場合をいい、ビット列strは、数値tの二進数表現とは必ずしも一致しない。
【0041】
ID集合生成部12は、ワイルドカードID集合生成アルゴリズムGenWIDlを実行することにより、次元毎に、設定された値の範囲に割り当てられたビット列の全てをカバーするワイルドカードID集合を生成する。すなわち、ID集合生成部12は、l∈Nとしたとき、数値範囲[L,R](ただし、L,R∈[0,2l-1]とする)を入力として受け取り、ワイルドカードID集合T={str∈{0,1,*}l}を出力する。ここで、ワイルドカードID集合生成アルゴリズムは、正当な二値化アルゴリズムBinarizelの下で正当でなければならないとする。
【0042】
ワイルドカードID集合生成アルゴリズムが正当であるとは、出力されるワイルドカードID集合が範囲[L,R]に含まれる数値のみを漏れなくカバーする場合であり、全てのl∈N、全てのL∈[0,2l-1]、全てのR∈[0,2l-1]について、T[L,R]←GenWIDl(L,R)とした上で、次の両条件が成立する場合をいう。
・∀t∈[L,R],∃wid∈T[L,R],1←Matchl(Binarizel(t),wid).
・∀t∈[0,2l-1]\[L,R],∀wid∈T[L,R],0←Matchl(Binarizel(t),wid).
【0043】
多次元ID集合生成部13は、ID集合生成部12により生成された各次元のワイルドカードID集合から1要素ずつ取り出した組み合わせ毎に、全要素を結合して単一の多次元ワイルドカードIDとし、全組み合わせの多次元ワイルドカードIDを要素とした集合を生成する。
【0044】
セットアップ部14は、MDREにおける各次元のビット長の和をID長として、WIBE方式のセットアップアルゴリズムKGen’を使用して、マスタ公開鍵及びマスタ秘密鍵を出力する。
【0045】
鍵生成部15は、MDREにおける次元毎の値に対応する数値に割り当てられたビット列strを結合し、結合後の多次元ビット列をID(多次元ID)として、WIBE方式の鍵生成アルゴリズムKGen’を使用して秘密鍵を生成する。
【0046】
暗号化部16は、多次元ID集合生成部13により生成された集合の要素である多次元ワイルドカードIDのそれぞれに基づいて、WIBE方式の暗号化アルゴリズムEnc’を使用して平文を暗号化し、暗号化の結果の全てを暗号文として出力する。
【0047】
復号部17は、暗号化部16により生成された暗号文に用いられた多次元ワイルドカードIDのいずれかの条件に、秘密鍵により示される多次元IDが合致する場合に、この暗号文を、WIBE方式の復号アルゴリズムDec’を使用して復号する。
【0048】
図2は、WIBEtoMDREを構成する、セットアップアルゴリズムSetup、鍵生成アルゴリズムKGen、暗号化アルゴリズムEnc、及び復号アルゴリズムDecの定義を示す図である。
【0049】
WIBEtoMDREの総次元数をD∈N、各次元の総数値数をT1,…TD∈Nとする。WIBEtoMDREでは、構成要素としてID長がΣi=1
D logTiのWIBE方式を採用する。
【0050】
D個の数値t1,…,tD(ただし、ti∈[0,Ti-1])に対応する秘密鍵は、各数値の二進ビット列をstri←BinarizelogTi(ti)∈{0,1}logTiとし、さらに全ての二進ビット列を単純結合した二進ビット列(つまり、∥i=1
D stri)を単一のIDとした上で、当該IDに対応するWIBE方式の秘密鍵として生成される。
【0051】
D個の範囲[L1,R1],…,[LD,RD]の下で平文mを暗号化する際には、まず、各範囲のワイルドカードID集合T[Li,Ri]←GenWIDlogTi(Li,Ri)を求め、多次元ワイルドカードID集合T*
[L1,R1],…,[LD,RD]の要素を、各集合T[Li,Ri]から1要素ずつ取り出した組み合わせ毎に、全要素を単純結合することにより求める。つまり、T*
[L1,R1],…,[LD,RD]:={∥i=1
D widi|wid1∈T[L1,R1],…,widD∈T[LD,RD]}である。
【0052】
この多次元ワイルドカードID集合T*
[L1,R1],…,[LD,RD]に含まれる各ワイルドカードIDの下で平文mをWIBE方式の暗号化アルゴリズムにより暗号化する。
【0053】
t1,…,tDに対応する秘密鍵により、[L1,R1],…,[LD,RD]に対応する暗号文を復号する際には、各i∈[1,D]について、1←MatchlogTi(stri,widi)を満たすwidi∈T[Li,Ri]が存在するか否かを調べ、全てのi∈[1,D]について存在するならば、t1,…,tDに対応する秘密鍵(つまり、∥i=1
D striに対応するWIBE秘密鍵)により、ワイルドカードID(∥i=1
D widi)に対応するWIBE暗号文を復号し、復号結果を出力する。
【0054】
ここで、構成要素のWIBE方式が正当であり、かつ、2つのアルゴリズム(Binarizel,GenWIDl)が正当であれば、WIBEtoMDREも正当であることがいえる。
【0055】
次に、正当なアルゴリズム(Binarizel,GenWIDl)の具体例として、PQ.Binarizel及びPQ.GenWIDlを示す。また、これらのアルゴリズムに基づくWIBEtoMDREを、WIBEtoMDREPQと表記する。
【0056】
WIBEtoMDREPQにおいて使用されるアルゴリズム(PQ.Binarizel,PQ.GenWIDl)は、非特許文献2により提案されたIDベース暗号(IBE)を用いた時間指定暗号(TSE)の一般的構成法IBEtoTSEPQを技術的に参考にしている。
IBEtoTSEPQは、ID総数2T-1のIBE方式を採用する。IBEtoTSEPQにおいては、葉総数Tの完全二分木を導入する。
【0057】
図3は、IBEtoTSE
PQに関する完全二分木を例示する図である。
ここでは、深さ3、葉総数T=8(=2
3)の完全二分木を示している。
各葉ノードは、各周期(数値)t∈[0,T-1]に対応する。具体的には、二進数str∈{0,1}
logTが割り当てられた葉ノードは、この二進数を十進数化した数値t∈[0,T-1]に対応する。
【0058】
各数値t∈[0,T-1]の秘密鍵は、根ノードから数値tの葉ノードに至るまでに通過する計logT+1個のノードのIBE秘密鍵により構成される。具体的には、IDに対応する(ランダムに生成された)IBE秘密鍵をskIDと表記する場合、数値t∈[0,T-1]の秘密鍵は、skt=(skID=φ,skID=t[0],skID=t[0]∥t[1],…,skID=t[0]∥t[1]∥…∥t[logT-1])により定義される。なお、t[i]は、tの二進数表現における上位第iビットを表す。
例えば、T=8の場合、t=3の秘密鍵は、skt=3=(skφ,sk0,sk01,sk011)となる。
【0059】
次に、範囲[L,R]に対応する平文mの暗号文の生成方法を示す。ここで、ノードstr∈{0,1}≦logTに紐づけられた集合Sstrを導入する。Sstrは、先祖ノードの一つがノードstrである葉ノードの集合である。要するに、Sstr:={str∥i∈[0,logT-|str|-1]βi|βi∈{0,1}}である。ここで、|str|∈[0,logT]は、strのビット長を表す。
例えば、T=8の場合、S1={100,101,110,111}、S10={100,101}、S110={110}となる。
【0060】
範囲[L,R]に対応する暗号文生成時には、始めに集合T[L,R]={str∈{0,1}≦logT}を求める。T[L,R]は、二分木における数値Lから数値Rの葉ノード全てをカバーするノードの集合である。具体的には、T[L,R]は、次に示すアルゴリズムCoverlにより求められる。
【0061】
図4は、アルゴリズムCover
lの定義を示す図である。
ここで、Parent
lは、葉総数2
lの完全二分木において、ノード(節)を受け取り、当該ノードの親ノードを出力する関数である。なお、Cover
lは、非特許文献2におけるAlgorithm 1と機能的に同一である。
例えば、T=8の場合、T
[2,6]={01,10,110}、T
[0,6]={0,10,110}、T
[7,7]={111}となる。
【0062】
集合T[L,R]の導出後、T[L,R]に含まれる各IDの下で、それぞれ平文mのIBE暗号文が生成される。そして、生成された全ての暗号文を一つにまとめたものが範囲[L,R]の暗号文になる。
【0063】
数値tの秘密鍵で範囲[L,R]の暗号文を復号する際には、葉ノードt又はその先祖ノードに、集合T[L,R]に含まれるノードが存在するか否かを調べ、該当ノードが存在する場合は、該当ノードに対応するIBE秘密鍵により該当ノードに対応するIBE暗号文を復号する。なお、t∈[L,R]の場合に、該当ノードは確実に存在し、それ以外の場合に該当ノードは存在しない。
【0064】
図5は、二値化アルゴリズムPQ.Binarize
l及びワイルドカードID集合生成アルゴリズムPQ.GenWID
lの定義を示す図である。
二値化アルゴリズムPQ.Binarize
lでは、数値t∈[0,2
l-1]を入力として受け取り、ビット列str∈{0,1}
lが出力される。
【0065】
ワイルドカードID集合生成アルゴリズムPQ.GenWIDlでは、範囲[L,R]を入力として受け取り、まず、IBEtoTSEPQと同様の方法により、葉総数2lの完全二分木における葉ノードLから葉ノードRまでをカバーするノード集合T[L,R]={str∈{0,1}≦l}が導出される。その後、集合T[L,R]に含まれるノード(ビット列)の中で、長さがlに満たないノード(ビット列)に対して、長さがlになるように、ワイルドカード記号(*)を右から補完する変換を施した後の集合T*
[L,R]が出力される。
【0066】
次に、既存のWIBE方式によるWIBEtoMDREPQの具体化の例を示す。
WIBEtoMDREPQを具体化する既存のWIBE方式として、非特許文献1で提案されたWIBE方式WIBEIKと、次の文献Aで提案されたWIBE方式WIBEBGPを取り上げる。
文献A:O. Blazy, P. Germouty, and D. H. Phan. Downgradable identity-based encryption and applications. In CT-RSA 2019, volume 11405 of LNCS, pages 44-61. Springer, 2019.
【0067】
図6は、WIBE
IKにより具体化されたWIBEtoMDRE
PQと、WIBE
BGPにより具体化されたWIBEtoMDRE
PQとを比較評価した図である。
前者(WIBE
IKによる場合)は、暗号文長及び暗号化計算コスト、特に群上のべき乗計算回数において、漸近的に非効率であるが、秘密鍵長は対称双線形ペアリングの群要素2つ分であり、いかなるパラメータD,T
1,…,T
Dにも依存せず、一定であるという特長を持つ。対する後者(WIBE
BGPによる場合)は、前者と異なり、特定の項目で大きく劣るということが無く、全ての項目において無難に優れている。また、復号計算コストが一定であるという特長もある。
【0068】
[WIBEを用いたMDREの第2の構成法]
以下、第1の構成法の一般化に相当するMDRE方式を示す。このMDRE方式は、第1の構成法を実現する暗号化装置1に機能追加した暗号化装置1aにより実現される。
【0069】
図7は、第2の構成法を実現する暗号化装置1aの機能構成を示す図である。
暗号化装置1aの制御部10aは、新たな機能部として、変換部18を備える。
変換部18は、鍵生成に用いられる多次元ID、及び暗号化に用いられる多次元ワイルドカードIDに対して、全単射関数によって示されるビット位置を入れ替え、鍵生成部15、暗号化部16及び復号部17に提供する。
すなわち、第2の構成法では、MDRE方式を定義する上で、次に示す2種類の関数が導入される。
【0070】
【0071】
関数φ
f:
【数2】
は、全単射関数fに紐づけられた関数である。
【0072】
図8は、関数φ
fの定義を示す図である。
関数φ
fは、入力ビット列における各ビット(iビット)を、全単射関数fにより一意に定まるf(i)ビットに移動した新たなビット列を出力するものである。
【0073】
図9は、一般化されたMDRE方式WIBEtoMDRE
fの定義を示す図である。
図2のWIBEtoMDREと比べて、符号A~Dで示す箇所が変更されている。
すなわち、鍵生成アルゴリズムKGenでは、関数φ
fによって変換された後の多次元IDがWIBE方式の鍵生成アルゴリズムKGen’に入力され、暗号化アルゴリズムEncでは、関数φ
fによって変換された後の多次元ワイルドカードIDがWIBE方式の暗号化アルゴリズムEnc’に入力される。また、復号アルゴリズムDecでは、関数φ
fによって変換された後の多次元ID及び多次元ワイルドカードIDがwID条件合致判定アルゴリズムMatchに入力される。
【0074】
なお、WIBEtoMDREfが正当であることは、第1の構成法によるWIBEtoMDREが正当であることと同様に確認できる。
ちなみに、WIBEtoMDREfにおいて、関数fを、入力をそのまま出力する恒等写像としたものが第1の構成法によるWIBEtoMDREである。
【0075】
[二値化及びワイルドカードID集合生成の変形例]
特許文献1では、WIBEに基づく時間指定暗号(TSE)の一般的構成法として、最も単純な構成法、及びこれを一般化した構成法の2種類が示されている。以下、これらの構成法を、それぞれ、WIBEtoTSEIK及びWIBEtoTSEIK
generalと表記する。
【0076】
WIBEtoTSEIKは、前述のWIBEtoMDREに対して、次の制限を導入したものである。
・総次元数D=1とする。
・アルゴリズムBinarizel及びGenWIDlを、それぞれ後述のIK.Binarizel及びIK.GenWIDlに変更する。
これらのアルゴリズムの変更は、総次元数D>1のWIBEtoMDREに対しても適用可能であり、これにより、WIBEtoTSEIKと同様の効果が得られる。
【0077】
図10は、二値化アルゴリズムIK.Binarize
l及びワイルドカードID集合生成アルゴリズムIK.GenWID
lの定義を示す図である。
図11は、ワイルドカードID集合生成アルゴリズムIK.GenWID
lが使用する補助アルゴリズムIK.Classify
l及びIK.Divide
lの定義を示す図である。
図12は、ワイルドカードID集合生成アルゴリズムIK.GenWID
lが使用する補助アルゴリズムIK.Latter
l、IK.Former
l、及びIK.Merge
lの定義を示す図である。
【0078】
図13は、二値化アルゴリズムIK.Binarize
lを実行した際の入力t∈[0,2
l-1]と出力str∈{0,1}
lとの対応関係を例示する図である。
ここでは、l=5の場合を示しているが、l≠5の場合についても同様に、次の法則でビット列strが割り当てられる。
・最上位ビット(第l-1ビット)は、0で開始し、その後は2
l-1間隔で0と1とが切り替わり続ける。
・最上位ビットの次のビット(第l-2ビット)は、0で開始し、2
l-2間隔で最初の1への切り替わりが発生し、その後は2
l-1間隔で0と1とが切り替わり続ける。
・最上位ビットの次々ビット(第l-3ビット)は、0で開始し、2
l-3間隔で最初の1への切り替わりが発生し、その後は2
l-2間隔で0と1とが切り替わり続ける。
・(中略)
・最下位ビットの一つ前のビット(第1ビット)は、0で開始し、2
1=2間隔で最初の1への切り替わりが発生し、その後は2
2=4間隔で0と1とが切り替わり続ける。
・最下位ビット(第0ビット)は、0で開始し、2
0=1間隔で最初の1への切り替わりが発生し、その後は2
1=2間隔で0と1とが切り替わり続ける。
【0079】
この法則により、ビット列strには、次のような特徴が表れる。
すなわち、数値tの並びを再帰的に2分割した際に、分割点を軸に両側のブロックに含まれるビット列strのいずれか1ビットのみは反転し、他のビットは対称となる。
また、隣り合う数値tの間で1ビットのみが異なる。
【0080】
ワイルドカードID集合生成アルゴリズムIK.GenWIDlは、5つの補助アルゴリズムIK.Classifyl、IK.Dividel、IK.Latterl、IK.Formerl、IK.Mergelを使用する。
【0081】
クラス分類アルゴリズムIK.Classifylは、数値t∈[0,2l-1]を入力として受け取り、クラス番号i∈[0,l]を出力する。
具体的には、t=0の場合、lを出力し、t∈[1,2l-1]の場合、t mod 2i+1=2iを満たすi∈[0,l-1]を出力する。
【0082】
図14は、クラス分類アルゴリズムIK.Classify
lの実行例を示す図である。
ここでは、2
l=T∈{4,8,16,32}の場合の出力をそれぞれ示している。
数値tの昇順の並びを再帰的に2分割していった際に、分割された右側のブロックの左端のtに対して、左側のブロックの左端のクラス番号-1が割り当てられる。これにより、1ビットを除いて左右対称となっているビット列のブロック内において、左端のクラス番号が最大となる。
【0083】
分割アルゴリズムIK.Dividelは、L,R∈[0,2l-1]を満たす範囲[L,R]を入力として受け取り、この範囲を前半範囲[L,D-1]と後半範囲[D,R]へ二分割する分割点D∈[L,R]を出力する。
この分割点は、範囲[L,R]内の数値のうち、最もクラス番号の大きい数値である。すなわち、範囲[L,R]に含まれる最も大きなブロックの区切りで二分割される。なお、L>Rの場合、必ずD=0になる。
【0084】
図15は、分割アルゴリズムIK.Divide
lの実行例を示す図である。
ここでは、l=5とし、[L,R]∈{[0,30],[9,30],[1,30],[2,0]}の場合の分割点を、それぞれ△で示している。
例えば、範囲が[0,30]の場合は、クラス番号が5の分割点D=0、範囲が[9,30]及び[1,31]の場合は、クラス番号が4の分割点D=16、範囲が[2,0]の場合は、クラス番号が5の分割点D=0が出力される。
【0085】
後半wID集合確定アルゴリズムIK.Latter
lは、後半範囲[D,R]を入力として受け取り、ワイルドカードID集合T
[D,R]={wID
i|i∈[1,n
1]}を出力する。全てのl∈N、及びL,R∈[0,2
l-1]を満たす全てのL,Rについて、D←IK.Divide
l(L,R)とした場合、
【数3】
が存在し、以下の2つの条件を満たす。
【0086】
(1)後半範囲[D,R]は、2
k個の数値からなる前述のブロックの集合として、次のように表現できる。
【数4】
(2)全てのi∈[1,n
1]について、あるwID
i∈{0,1,*}
lが存在し、wID
iは以下を満たす。
・|wID
i|
*=k
i.
・後半範囲[D,R]の部分範囲である、
【数5】
をカバーする。
【0087】
前半wID集合確定アルゴリズムIK.Former
lは、前半範囲[L,D-1]を入力として受け取り、ワイルドカードID集合T
[L,D-1]={wID
i|i∈[n
1+1,n
2]}を出力する。全てのl∈N、及びL,R∈[0,2
l-1]を満たす全てのL,Rについて、D←IK.Divide
l(L,R)とした場合、
【数6】
が存在し、以下の2つの条件を満たす。
【0088】
(1)前半範囲[L,D-1]は、2
k個の数値からなる前述のブロックの集合として、次のように表現できる。
【数7】
(2)全てのi∈[n
1+1,n
2]について、あるwID
i∈{0,1,*}
lが存在し、wID
iは以下を満たす。
・|wID
i|
*=k
i.
・wID
iは、前半範囲[L,D-1]の部分範囲である、
【数8】
をカバーする。
【0089】
前後半wID集合合併アルゴリズムIK.Mergelは、前後半ワイルドカードID集合T[D,R],T[L,D-1]を受け取り、ワイルドカードID集合T[L,R]を出力する。
【0090】
まず、以下の条件を満たす自然数n
*を定義する。
【数9】
このとき、全てのi∈[1,n
*]について、以下の条件を満たすwID′
i∈{0,1,*}
lが存在する。
・|wID′
i|
*=k
i+1=k
n1+i+1.
・wID′
iは、wID
iとwID
n1+iによりカバーされる各範囲の和集合により定義される範囲、すなわち、
【数10】
をカバーする。
【0091】
図16は、後半wID集合確定アルゴリズムIK.Latter
l、前半wID集合確定アルゴリズムIK.Former
l、及び前後半wID集合合併アルゴリズムIK.Merge
lのそれぞれの実行後の状態を例示する図である。
ここでは、l=5,[L,R]=[1,30],D=16の場合を例示しており、Step1には、分割アルゴリズムIK.Divide
lの実行例(
図15)を示している。
【0092】
後半wID集合確定アルゴリズムIK.Latterlでは、T[D,R]:={wIDi|i∈[1,n1]}が出力される。
Step2に示す実行例の場合、図中で同一の数字が割り当てられた数値tは、単一のwID∈{0,1,*}5によりカバーされる。具体的には、n1=4,k1=3,k2=2,k3=1,k4=0,wID1=11***,wID2=101**,wID3=1001*,wID4=10001である。結果として、T[16,30]={wID1,wID2,wID3,wID4}={11***,101**,1001*,10001}が出力される。
【0093】
前半wID集合確定アルゴリズムIK.Formerlでは、T[L,D-1]:={wIDi|i∈[n1+1,n2]}が出力される。
Step3に示す実行例の場合、図中で同一の数字が割り当てられた数値tは、単一のwID∈{0,1,*}5によりカバーされる。具体的には、n2=4,n1+n2=8,k5=3,k6=2,k7=1,k8=0,wID5=01***,wID6=001**,wID7=0001*,wID8=00001である。結果として、T[1,15]={wID5,wID6,wID7,wID8}={01***,001**,0001*,00001}が出力される。
【0094】
前後半wID集合合併アルゴリズムIK.Merge
lでは、
【数11】
が出力される。
Step4に示す実行例の場合、図中で同一の数字が割り当てられた数値tは、単一のwID∈{0,1,*}
5によりカバーされる。具体的には、n
*=4,wID′
1=*1***,wID′
2=*01**,wID′
3=*001*,wID′
4=*0001である。結果として、T
[1,30]={wID′
1,wID′
2,wID′
3,wID′
4}={*1***,*01**,*001*,*0001}が出力される。
【0095】
ワイルドカードID集合生成アルゴリズムIK.GenWIDlは、各アルゴリズムを順番に実行する。具体的には、IK.GenWIDlは、範囲[L,R]に対して、最初にD←Dividel(L,R)により分割点D∈[L,R]を決定し、次にT[D,R]←IK.Latterl(D,R)により後半範囲ワイルドカードID集合T[D,R]を決定し、T[L,D-1]←IK.Formerl(L,D-1)により前半範囲ワイルドカードID集合T[L,D-1]を決定する。最後に、IK.GenWIDlは、T[L,R]←IK.Mergel(T[D,R],T[L,D-1])によりワイルドカードID集合T[L,R]を決定する。
【0096】
次に、WIBEtoTSEIK
generalは、前述のWIBEtoMDREに対して、次の制限を導入したものである。
・総次元数D=1とする。
・アルゴリズムBinarizel及びGenWIDlを、それぞれ後述のIK.Binarizel
general及びIK.GenWIDl
generalに変更する。
これらのアルゴリズムの変更は、総次元数D>1のWIBEtoMDREに対しても適用可能であり、これにより、WIBEtoTSEIK
generalと同様の効果が得られる。
【0097】
図17は、二値化アルゴリズムIK.Binarize
l
general及びワイルドカードID集合生成アルゴリズムIK.GenWID
l
generalの定義を示す図である。
図18は、ワイルドカードID集合生成アルゴリズムIK.GenWID
l
generalが使用する補助アルゴリズムIK.Classify
l
general及びIK.Divide
l
generalの定義を示す図である。
図19は、ワイルドカードID集合生成アルゴリズムIK.GenWID
l
generalが使用する補助アルゴリズムIK.Latter
l
general、IK.Former
l
general及びIK.Merge
l
generalの定義を示す図である。
【0098】
IK.Binarizel
general及びIK.GenWIDl
generalは、それぞれIK.Binarizel及びIK.GenWIDlの一般化である。これらのアルゴリズムは、ビット列strのパターンを一般化するために、関数f、関数h、定数δを導入している。
【0099】
前述の通り、IK.Binarizelにより定まる数値tと二進ビット列strとの対応関係においては、strの各ビットに、それぞれ異なる(0,1)パターンが割り当てられる。(0,1)パターンは全部でl種類ある。
具体的には、終始2l-1間隔で切り替わり続けるパターン、初回のみ2l-2間隔で切り替わりその後2l-1間隔で切り替わり続けるパターン、初回のみ2l-3間隔で切り替わりその後2l-2間隔で切り替わり続けるパターン、…、初回のみ21=2間隔で切り替わりその後22=4間隔で切り替わり続けるパターン、初回のみ20=1間隔で切り替わりその後21=2間隔で切り替わり続けるパターンである。これらのパターンを便宜上、それぞれ、Pl-1,Pl-2,…,P1,P0と表記する。
【0100】
全単射関数f:{0,1,…,l-1}→{0,1,…,l-1}は、各ビットをいずれの(0,1)パターンに割り当てるかを定義する。具体的には、ビットi∈{0,1,…,l-1}を、(0,1)パターンPf(i)に割り当てる。
【0101】
関数h:{0,1,…,l-1}→{0,1}は、各ビットi∈{0,1,…,l-1}において、(0,1)パターンの初期値を、0とするか1とするかを定義する。
【0102】
定数δ∈{0,…,2l-1}は、二進ビット列の初期値str=h[l-1]∥h[l-2]∥…∥h[1]∥h[0]を、どの数値t∈{0,…,2l-1}に対応付けるかを定義する。具体的には、str=h[l-1]∥h[l-2]∥…∥h[1]∥h[0]を、δに対応づける。
すなわち、(0,1)パターンに対して数値tをδだけ巡回シフトした対応関係が得られる。
【0103】
例えば、
図13は、
図17のIK.Binarize
l
generalにおいて、そのパラメータを、
l:=5
f({0,1,2,3,4}):={0,1,2,3,4}
h({0,1,2,3,4}):={0,0,0,0,0}
δ:=0
と設定した場合の当該アルゴリズムIK.Binarize
l
generalの実行例を示す。
【0104】
一方、
図20は、IK.Binarize
l
generalにおいて、そのパラメータを、
f({0,1,2,3,4}):={3,2,0,4,1}
h({0,1,2,3,4}):={0,1,1,0,0}
δ:=15
と設定した場合の当該アルゴリズムの実行例を示す。
【0105】
本実施形態によれば、暗号化装置1は、次元毎の数値に割り当てられたビット列の結合をIDとした秘密鍵を生成すると共に、次元毎の範囲に基づいて生成したワイルドカードID集合から、1要素ずつ取り出した組み合わせ毎に、全要素を結合して多次元ワイルドカードIDとし、全組み合わせの多次元ワイルドカードIDを要素とした集合を生成する。そして、暗号化装置1は、多次元ワイルドカードIDのそれぞれに基づいて、ワイルドカードIDベース暗号方式により平文を暗号化し、暗号化の結果の全てを暗号文として出力する。
したがって、暗号化装置1は、任意の正当なWIBE方式に基づいて、任意の正当な二値化アルゴリズム及びワイルドカードID集合生成アルゴリズムを用いることにより、TSEを多次元に拡張したMDRE方式を構成できる。
【0106】
この結果、既存の、あるいは、将来発見され得る多様なWIBE方式から、多様なMDRE方式を構築することができる。
例えば、前述のように、WIBEIKを用いた秘密鍵長が一定のMDRE方式、及びWIBEBGPを用いた全ての効率項目において無難に優れたMDRE方式が具体的に得られる。また、将来、例えば、耐量子安全性を持つWIBE方式が作られた場合、本実施形態により、耐量子安全性を持つMDRE方式を構成できる。
【0107】
暗号化装置1は、多次元ID及び多次元ワイルドカードIDに対して、全単射関数によって示されるビット位置を入れ替える機能を備えることにより、IDとなるビット列の任意の配列が可能となり、MDRE方式の一般化を実現できる。
【0108】
暗号化装置1は、数値tに対するビット列strの対応関係について、数値の並びを再帰的に2分割した際に、分割点を軸に両側のブロックに含まれるビット列のいずれか1ビットのみは反転し、他のビットは対称となるように0又は1を割り当て、また、数値の並びにおいて、隣り合う数値間で1ビットのみが異なるビット列を割り当てる。
これにより、MDREの各次元において、指定された範囲をカバーする効率的なワイルドカードIDが生成され、この結果、効率的な多次元ワイルドカードID集合が生成される。したがって、暗号化装置1は、暗号文長を短くすることができる。
【0109】
このとき、暗号化装置1は、数値tに対するビット列strの対応関係について、所定の数だけ巡回シフトさせて対応付けることで、アルゴリズムを一般化できる。
【0110】
また、暗号化装置1は、範囲[L,R]を前半及び後半に分割することにより、それぞれの部分範囲において、効率的にワイルドカードID集合を生成できる。
さらに、暗号化装置1は、部分範囲毎に求めた集合をカバーするワイルドカードID集合を生成することにより、集合を縮小できる可能性がある。この結果、暗号文が短くなることが期待できる。
【0111】
以上、本発明の実施形態について説明したが、本発明は前述した実施形態に限るものではない。また、前述した実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、実施形態に記載されたものに限定されるものではない。
【0112】
暗号化装置1による暗号化方法は、ソフトウェアにより実現される。ソフトウェアによって実現される場合には、このソフトウェアを構成するプログラムが、情報処理装置(コンピュータ)にインストールされる。また、これらのプログラムは、CD-ROMのようなリムーバブルメディアに記録されてユーザに配布されてもよいし、ネットワークを介してユーザのコンピュータにダウンロードされることにより配布されてもよい。さらに、これらのプログラムは、ダウンロードされることなくネットワークを介したWebサービスとしてユーザのコンピュータに提供されてもよい。
【符号の説明】
【0113】
1、1a 暗号化装置(復号装置)
10、10a 制御部
11 二値化部
12 ID集合生成部
13 多次元ID集合生成部
14 セットアップ部
15 鍵生成部
16 暗号化部
17 復号部
18 変換部
20 記憶部