特許第6053966号(P6053966)IP Force 特許公報掲載プロジェクト 2015.5.11 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 三菱電機株式会社の特許一覧
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6053966
(24)【登録日】2016年12月9日
(45)【発行日】2016年12月27日
(54)【発明の名称】暗号システム及び再暗号化装置
(51)【国際特許分類】
   H04L 9/08 20060101AFI20161219BHJP
   H04L 9/14 20060101ALI20161219BHJP
【FI】
   H04L9/00 601B
   H04L9/00 641
【請求項の数】8
【全頁数】86
(21)【出願番号】特願2015-557608(P2015-557608)
(86)(22)【出願日】2014年1月14日
(86)【国際出願番号】JP2014050445
(87)【国際公開番号】WO2015107620
(87)【国際公開日】20150723
【審査請求日】2015年10月29日
(73)【特許権者】
【識別番号】000006013
【氏名又は名称】三菱電機株式会社
(74)【代理人】
【識別番号】100099461
【弁理士】
【氏名又は名称】溝井 章司
(74)【代理人】
【識別番号】100151220
【弁理士】
【氏名又は名称】八巻 満隆
(72)【発明者】
【氏名】川合 豊
(72)【発明者】
【氏名】高島 克幸
【審査官】 金沢 史明
(56)【参考文献】
【文献】 特開2013−105065(JP,A)
【文献】 Yutaka KAWAI et al.,Fully-Anonymous Functional Proxy-Re-Encryption,Cryptology ePrint Archive,International Association for Cryptologic Research,2013年10月11日,Report 2013/318, Ver. 20131011:005627,pp. 1-16,[2014年2月27日検索],インターネット,URL,http://eprint.iacr.org/2013/318/20131011:005627
【文献】 Xiaohui LIANG et al.,Attribute based proxy re-encryption with delegating capabilities,Proceedings of the 4th International Symposium on Information, Computer, and Communications Security,ACM,2009年 3月,pp. 276-286
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/08
H04L 9/14
THE ACM DIGITAL LIBRARY
(57)【特許請求の範囲】
【請求項1】
2つの情報が互いに対応している場合に一方の情報が設定された暗号文を他方の情報が設定された復号鍵により復号可能な暗号方式における代理人再暗号機能を実現する暗号システムであり、
互いに対応する属性情報x,vのうちの一方が設定された暗号文ctを出力する暗号化装置と、
前記属性情報x,vのうちの他方が設定された復号鍵kを取得し、取得した復号鍵k変換情報rを乗じた復号鍵k*rkと、互いに対応する属性情報x,vのうちの一方が設定されて前記変換情報rが暗号化された暗号文ct’とを含む再暗号化鍵rkを出力する再暗号化鍵生成装置と、
前記暗号文ct前記復号鍵k*rkとのペアリング演算を計算して生成されたセッション鍵K’と、前記暗号文ct’とを含む再暗号文ctを出力する再暗号化装置とを備えることを特徴とする暗号システム。
【請求項2】
前記暗号システムは、さらに、
前記属性情報x,vのうちの他方が設定された復号鍵k’を取得し、取得した復号鍵k前記暗号文ct’とのペアリング演算を計算して前記変換情報rを生成し、生成した変換情報rと前記セッション鍵K’とからメッセージmを生成する再暗号文復号装置
を備えることを特徴とする請求項1に記載の暗号システム。
【請求項3】
前記再暗号文復号装置は、前記復号鍵k’を変換情報rで変換した復号鍵k*rkと、互いに対応する属性情報x,vのうちの一方が設定されて前記変換情報rが暗号化された暗号文ct’とを含む再暗号化鍵rkを出力し、
前記再暗号化装置は、前記再暗号文ct前記復号鍵k*rkとのペアリング演算を計算して生成されたセッション鍵K’と、前記暗号文ct’とを含む再暗号文ctを出力する
ことを特徴とする請求項2に記載の暗号システム。
【請求項4】
前記暗号化装置は、数1に示す暗号文ctを出力し、
前記再暗号化鍵生成装置は、数2に示す復号鍵kを取得し、数3に示す復号鍵k*rkと、数4に示す暗号文ct’とを含む再暗号化鍵rkを出力し、
前記再暗号化装置は、数5に示すセッション鍵K’を含む再暗号文ctを出力することを特徴とする請求項1から3のいずれか1項に記載の暗号システム。
【数1】
【数2】
【数3】
【数4】
【数5】
【請求項5】
前記暗号化装置は、数6に示す暗号文ctを出力し、
前記再暗号化鍵生成装置は、数7に示す復号鍵kを取得し、数8に示す復号鍵k*rkと、数9に示す暗号文ct’とを含む再暗号化鍵rkを出力し、
前記再暗号化装置は、数10に示すセッション鍵K’を含む再暗号文ctを出力
する
ことを特徴とする請求項1から3のいずれか1項に記載の暗号システム。
【数6】
【数7】
【数8】
【数9】
【数10】
【請求項6】
前記暗号化装置は、数11に示す暗号文ctを出力し、
前記再暗号化鍵生成装置は、数12に示す復号鍵kを取得し、数13に示す復号鍵k*rkと、数14に示す暗号文ct’とを含む再暗号化鍵rkを出力し、
前記再暗号化装置は、数15に示すセッション鍵K’を含む再暗号文ctを出力
する
ことを特徴とする請求項1から3のいずれか1項に記載の暗号システム。
【数11】
【数12】
【数13】
【数14】
【数15】
【請求項7】
前記暗号化装置は、数16に示す暗号文ctを出力し、
前記再暗号化鍵生成装置は、数17に示す復号鍵kを取得し、数18に示す復号鍵k*rkと、数19に示す暗号文ct’とを含む再暗号化鍵rkを出力し、
前記再暗号化装置は、数20に示すセッション鍵K’を含む再暗号文ctを出力
する
ことを特徴とする請求項1から3のいずれか1項に記載の暗号システム。
【数16】
【数17】
【数18】
【数19】
【数20】
【請求項8】
2つの情報が互いに対応している場合に一方の情報が設定された暗号文を他方の情報が設定された復号鍵により復号可能な暗号方式における代理人再暗号機能を実現する暗号システムにおける再暗号化装置であり、
互いに対応する属性情報x,vのうちの一方が設定された暗号文ctを取得する暗号文取得部と、
前記属性情報x,vのうちの他方が設定された復号鍵k変換情報rを乗じた復号鍵k*rkと、互いに対応する属性情報x,vのうちの一方が設定されて前記変換情報rが暗号化された暗号文ct’とを含む再暗号化鍵rkを取得する再暗号化鍵取得部と、
前記暗号文ct前記復号鍵k*rkとのペアリング演算を計算して生成されたセッション鍵K’と、前記暗号文ct’とを含む再暗号文ctを出力する再暗号文出力部と
を備えることを特徴とする再暗号化装置。
【発明の詳細な説明】
【技術分野】
【0001】
この発明は、関数型暗号における代理人再暗号化(Functional Proxy Re−Encryption、FPRE)方式に関するものである。
【背景技術】
【0002】
代理人再暗号化(Proxy Re−Encryption,PRE)は、暗号文を復号することなく、暗号文の復号権限を他者に委譲するシステムである。非特許文献1には、IDベース暗号におけるPRE(Identity−Based PRE,IBPRE)方式に関する記載がある。非特許文献2には、属性ベース暗号におけるPRE(Attribute−Based PRE,ABPRE)方式に関する記載がある。非特許文献2記載されたPRE方式では、論理積と否定とからなる属性のみを暗号文に指定することができる。
【0003】
特許文献1には、関数型暗号(Functional Encryption,FE)方式に関する記載がある。非特許文献3には、FPRE方式に関する記載がある。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2012−133214号公報
【非特許文献】
【0005】
【非特許文献1】M.Green, and G. Ateniese, Identity−Based Proxy Re−encryption. In Applied Cryptography and Network Security. volume 4521 of LNCS, pp 288−306 , 2007.
【非特許文献2】Xiaohui Liang, Zhenfu Cao, Huang Lin, Jun Shao. Attribute based proxy re−encryption with delegating capabilities. ASIACCS 2009 pp.276−286.
【非特許文献3】Yutaka kawai and Katuyuki Takashima, Fully−Anonymous Functional Proxy−Re−Encryption. Cryptology ePrint Archive: Report 2013/318
【非特許文献4】R. Canetti and S. Hohenberger. Chosen−Ciphertext Secure Proxy Re−encryption. In ACMCCS 2007.
【非特許文献5】Okamoto, T Takashima, K.:Decentralized Attribute−Based Signatures.ePrint http://eprint.iacr.org/2011/701
【非特許文献6】Okamoto, T Takashima, K.:Fully Secure Unbounded Inner−Product and Attribute−Based Encryption.ePrint http://eprint.iacr.org/2012/671
【非特許文献7】Okamoto, T., Takashima, K.: Achieving Short Ciphertexts or Short Secret−Keys for Adaptively Secure General Inner−Product Encryption. CANS 2011, LNCS, vol. 7092, pp. 138−159 Springer Heidelberg (2011).
【発明の概要】
【発明が解決しようとする課題】
【0006】
非特許文献3に記載されたFPRE方式では、暗号化アルゴリズムにより作成されるオリジナル暗号文を再暗号化すると、暗号文のサイズが3倍になる。再暗号文をさらに再暗号化すると、さらに暗号文のサイズが3倍になる。つまり、n回再暗号化を実行すると、オリジナル暗号文と比べて暗号文サイズは、3倍となり、再暗号化回数に対して指数関数的に暗号文のサイズが増加してしまう。
この発明は、再暗号化に伴う暗号文のサイズの増加量を抑えたFPRE方式を実現することを目的とする。
【課題を解決するための手段】
【0007】
この発明に係る暗号システムは、
2つの情報が互いに対応している場合に一方の情報が設定された暗号文を他方の情報が設定された復号鍵により復号可能な暗号方式における代理人再暗号機能を実現する暗号システムであり、
互いに対応する属性情報x,vのうちの一方が設定された暗号文ctを出力する暗号化装置と、
前記属性情報x,vのうちの他方が設定された復号鍵kを取得し、取得した復号鍵kを変換情報rで変換した復号鍵k*rkと、互いに対応する属性情報x,vのうちの一方が設定されて前記変換情報rが暗号化された暗号文ct’とを含む再暗号化鍵rkを出力する再暗号化鍵生成装置と、
前記暗号文ctを前記復号鍵k*rkで復号したセッション鍵K’と、前記暗号文ct’とを含む再暗号文ctを出力する再暗号化装置と
を備えることを特徴とする。
【発明の効果】
【0008】
この発明に係る暗号システムでは、変換情報で変換した復号鍵で暗号文を復号したセッション鍵と、転送先の利用者が復号可能となるように変換情報を暗号化した暗号文とを再暗号文ctとしている。これにより、再暗号化に伴う暗号文のサイズの増加量を抑えることができる。
【図面の簡単な説明】
【0009】
図1】行列M^の説明図。
図2】行列Mδの説明図。
図3】sの説明図。
図4】s→Tの説明図。
図5】CP−FPRE方式を実行する暗号システム10の構成図。
図6】鍵生成装置100の機能を示す機能ブロック図。
図7】暗号化装置200の機能を示す機能ブロック図。
図8】復号装置300の機能を示す機能ブロック図。
図9】再暗号化装置400の機能を示す機能ブロック図。
図10】再暗号文復号装置500の機能を示す機能ブロック図。
図11】Setupアルゴリズムの処理を示すフローチャート。
図12】KGアルゴリズムの処理を示すフローチャート。
図13】Encアルゴリズムの処理を示すフローチャート。
図14】RKGアルゴリズムの処理を示すフローチャート。
図15】REncアルゴリズムの処理を示すフローチャート。
図16】Dec1アルゴリズムの処理を示すフローチャート。
図17】Dec2アルゴリズムの処理を示すフローチャート。
図18】Setupアルゴリズムの処理を示すフローチャート。
図19】KP−FPRE方式を実行する暗号システム10の構成図。
図20】鍵生成装置100の機能を示す機能ブロック図。
図21】暗号化装置200の機能を示す機能ブロック図。
図22】復号装置300の機能を示す機能ブロック図。
図23】再暗号化装置400の機能を示す機能ブロック図。
図24】再暗号文復号装置500の機能を示す機能ブロック図。
図25】KGアルゴリズムの処理を示すフローチャート。
図26】Encアルゴリズムの処理を示すフローチャート。
図27】RKGアルゴリズムの処理を示すフローチャート。
図28】REncアルゴリズムの処理を示すフローチャート。
図29】Dec1アルゴリズムの処理を示すフローチャート。
図30】Dec2アルゴリズムの処理を示すフローチャート。
図31】実施の形態1〜4に示した暗号システム10の各装置のハードウェア構成の例を示す図。
【発明を実施するための形態】
【0010】
以下の説明における記法について説明する。
Aがランダムな変数または分布であるとき、数101は、Aの分布に従いAからyをランダムに選択することを表す。つまり、数101において、yは乱数である。
【数101】
Aが集合であるとき、数102は、Aからyを一様に選択することを表す。つまり、数102において、yは一様乱数である。
【数102】
数103は、yにzが設定されたこと、yがzにより定義されたこと、又はyがzを代入されたことを表す。
【数103】
aが定数であるとき、数104は、機械(アルゴリズム)Aが入力xに対しaを出力することを表す。
【数104】
数105、つまりFは、位数qの有限体を示す。
【数105】
ベクトル表記は、有限体Fにおけるベクトル表示を表す。つまり、数106である。
【数106】
数107は、数108に示す2つのベクトルxとvとの数109に示す内積を表す。
【数107】
【数108】
【数109】
は、行列Xの転置行列を表す。
数110に示す基底Bと基底Bとに対して、数111である。
【数110】
【数111】
は、数112に示す正規基底ベクトルを示す。
【数112】
【0011】
また、以下の説明において、Vt,nt,wt,zt,nu,wu,zuが下付き又は上付きで示されている場合、このVt,nt,wt,zt,nu,wu,zuはV,n,w,z,n,w,zを意味する。同様に、δi,jが上付きで示されている場合、このδi,jは、δi,jを意味する。同様に、φjが上付きで示されている場合、このφjは、φを意味する。
また、ベクトルを意味する→が下付き文字又は上付き文字に付されている場合、この→は下付き文字又は上付き文字に上付きで付されていることを意味する。
【0012】
実施の形態1.
この実施の形態では、FPRE方式を実現する基礎となる概念を説明した上で、この実施の形態に係るFPRE方式の構成について説明する。
第1に、FPREについて簡単に説明する。
第2に、FPRE方式を実現するための空間である双対ペアリングベクトル空間(Dual Pairing Vector Spaces,DPVS)という豊かな数学的構造を有する空間を説明する。
第3に、FPRE方式を実現するための概念を説明する。ここでは、スパンプログラム、属性ベクトルの内積とアクセス構造、秘密分散方式(秘密共有方式)について説明する。
第4に、この実施の形態に係るFPRE方式を説明する。この実施の形態では、暗号文ポリシーのFPRE方式(Ciphertext−Policy FPRE,CP−FPRE)方式について説明する。そこで、まず、CP−FPRE方式の基本構成について説明する。次に、このCP−FPRE方式を実現する暗号システム10の基本構成について説明する。そして、この実施の形態に係るCP−FPRE方式、及び、暗号システム10について詳細に説明する。
【0013】
<第1.FPRE>
FPREは、暗号化鍵(ek)と、復号鍵(dk)と、再暗号化鍵(rk)の関係をより高度化し、柔軟にした代理人再暗号化方式である。
【0014】
FPREは、以下の2つの特徴を持つ。
1つ目に、暗号化鍵と復号鍵とは、それぞれ属性情報xと属性情報vとが設定されている。そして、関係Rに対して、R(x、v)が成立する場合に限り、復号鍵dkは暗号化鍵ekで暗号化された暗号文を復号することができる。
2つ目に、暗号化鍵と復号鍵とに属性情報xと属性情報vとがそれぞれ設定されていることに加え、再暗号化鍵は2つの属性情報(x’,v)が設定されている。そして、R(x,v)が成立する場合に限り、再暗号化鍵rk(x’,v)は、暗号化鍵ekで暗号化された暗号文を、R(x’、v’)が成立する復号鍵dkv’で復号可能な暗号文、つまり暗号化鍵ekx’で暗号化された暗号文に変更することができる。
【0015】
関係Rが等号関係である場合、つまり、x=vである場合に限りR(x,v)が成立する場合、PRE方式はIDPREである。
【0016】
IDPREよりも一般化されたPREとして、ABPREがある。ABPREでは、暗号化鍵と復号鍵とに設定される属性情報が属性情報の組である。例えば、暗号化鍵と復号鍵とに設定される属性情報が、それぞれ、X:=(x1,...,xd)と、V:=(v1,...,vd)とである。
属性情報のコンポーネントについて、コンポーネント毎の等号関係(例えば、{x=v}t∈{1,...,d})がアクセスストラクチャSに入力される。そして、アクセスストラクチャSが入力を受理した場合にのみ、R(X,V)が成立する。つまり、暗号化鍵で暗号化された暗号文を復号鍵で復号することができる。非特許文献2では、アクセスストラクチャSが暗号文に埋め込まれている暗号文ポリシーのPRE方式を提案している。その際のアクセスストラクチャは、論理積と否定のみで構成される構造である。
【0017】
暗号文の転送機能が存在しない、つまり再暗号化鍵が存在しない、通常のFEがある。FEでは、再暗号化鍵、再暗号化処理は存在せず、暗号化鍵と復号鍵とは、それぞれ、属性情報xと属性情報vとが設定されている。そして、関係Rに対してR(x,v)が成立する場合に限り、復号鍵dk:=(dk,v)は暗号化鍵ek:=(ek,x)で暗号化された暗号文を復号することができる。
【0018】
<第2.双対ペアリングベクトル空間>
まず、対称双線形ペアリング群について説明する。
対称双線形ペアリング群(q,G,G,g,e)は、素数qと、位数qの巡回加法群Gと、位数qの巡回乗法群Gと、g≠0∈Gと、多項式時間で計算可能な非退化双線形ペアリング(Nondegenerate Bilinear Pairing)e:G×G→Gとの組である。非退化双線形ペアリングは、e(sg,tg)=e(g,g)stであり、e(g,g)≠1である。
以下の説明において、Gbpgを、1λを入力として、セキュリティパラメータをλとする双線形ペアリング群のパラメータparam:=(q,G,G,g,e)の値を出力するアルゴリズムとする。
【0019】
次に、双対ペアリングベクトル空間について説明する。
双対ペアリングベクトル空間(q,V,G,A,e)は、対称双線形ペアリング群(param:=(q,G,G,g,e))の直積によって構成することができる。双対ペアリングベクトル空間(q,V,G,A,e)は、素数q、数113に示すF上のN次元ベクトル空間V、位数qの巡回群G、空間Vの標準基底A:=(a,...,a)の組であり、以下の演算(1)(2)を有する。ここで、aは、数114に示す通りである。
【数113】
【数114】
【0020】
演算(1):非退化双線形ペアリング
空間Vにおけるペアリングは、数115によって定義される。
【数115】
これは、非退化双線形である。つまり、e(sx,ty)=e(x,y)stであり、全てのy∈Vに対して、e(x,y)=1の場合、x=0である。また、全てのiとjとに対して、e(a,a)=e(g,g)δi,jである。ここで、i=jであれば、δi,j=1であり、i≠jであれば、δi,j=0である。また、e(g,g)≠1∈Gである。
【0021】
演算(2):ディストーション写像
数116に示す空間Vにおける線形変換φi,jは、数117を行うことができる。
【数116】
【数117】
ここで、線形変換φi,jをディストーション写像と呼ぶ。
【0022】
以下の説明において、Gdpvsを、1λ(λ∈自然数)、N∈自然数、双線形ペアリング群のパラメータparam:=(q,G,G,g,e)の値を入力として、セキュリティパラメータがλであり、N次元の空間Vとする双対ペアリングベクトル空間のパラメータparam:=(q,V,G,A,e)の値を出力するアルゴリズムとする。
【0023】
なお、ここでは、上述した対称双線形ペアリング群により、双対ペアリングベクトル空間を構成した場合について説明する。なお、非対称双線形ペアリング群により双対ペアリングベクトル空間を構成することも可能である。以下の説明を、非対称双線形ペアリング群により双対ペアリングベクトル空間を構成した場合に応用することは容易である。
【0024】
<第3.FPRE方式を実現するための概念>
<第3−1.スパンプログラム>
図1は、行列M^の説明図である。
{p,...,p}を変数の集合とする。M^:=(M,ρ)は、ラベル付けされた行列である。ここで、行列Mは、F上の(L行×r列)の行列である。また、ρは、行列Mの各行に付されたラベルであり、{p,...,p,¬p,...,¬p}のいずれか1つのリテラルへ対応付けられる。なお、Mの全ての行に付されたラベルρi(i=1,...,L)がいずれか1つのリテラルへ対応付けられる。つまり、ρ:{1,...,L}→{p,...,p,¬p,...,¬p}である。
【0025】
全ての入力列δ∈{0,1}に対して、行列Mの部分行列Mδは定義される。行列Mδは、入力列δによってラベルρに値“1”が対応付けられた行列Mの行から構成される部分行列である。つまり、行列Mδは、δ=1であるようなpに対応付けられた行列Mの行と、δ=0であるような¬pに対応付けられた行列Mの行とからなる部分行列である。
図2は、行列Mδの説明図である。なお、図2では、n=7,L=6,r=5としている。つまり、変数の集合は、{p,...,p}であり、行列Mは(6行×5列)の行列である。また、図2において、ラベルρは、ρが¬pに、ρがpに、ρがpに、ρが¬pに、ρが¬pに、ρがpにそれぞれ対応付けられているとする。
ここで、入力列δ∈{0,1}が、δ=1,δ=0,δ=1,δ=0,δ=0,δ=1,δ=1であるとする。この場合、破線で囲んだリテラル(p,p,p,p,¬p,¬p,¬p)に対応付けられている行列Mの行からなる部分行列が行列Mδである。つまり、行列Mの1行目(M),2行目(M),4行目(M)からなる部分行列が行列Mδである。
【0026】
言い替えると、写像γ:{1,...,L}→{0,1}が、[ρ(j)=p]∧[δ=1]又は[ρ(j)=¬p]∧[δ=0]である場合、γ(j)=1であり、他の場合、γ(j)=0であるとする。この場合に、Mδ:=(Mγ(j)=1である。ここで、Mは、行列Mのj番目の行である。
つまり、図2では、写像γ(j)=1(j=1,2,4)であり、写像γ(j)=0(j=3,5,6)である。したがって、(Mγ(j)=1は、M,M,Mであり、行列Mδである。
すなわち、写像γ(j)の値が“0”であるか“1”であるかによって、行列Mのj番目の行が行列Mδに含まれるか否かが決定される。
【0027】
∈span<Mδ>である場合に限り、スパンプログラムM^は入力列δを受理し、他の場合には入力列δを拒絶する。つまり、入力列δによって行列M^から得られる行列Mδの行を線形結合して1が得られる場合に限り、スパンプログラムM^は入力列δを受理する。なお、1とは、各要素が値“1”である行ベクトルである。
例えば、図2の例であれば、行列Mの1,2,4行目からなる行列Mδの各行を線形結合して1が得られる場合に限り、スパンプログラムM^は入力列δを受理する。つまり、α(M)+α(M)+α(M)=1となるα,α,αが存在する場合には、スパンプログラムM^は入力列δを受理する。
【0028】
ここで、ラベルρが正のリテラル{p,...,p}にのみ対応付けられている場合、スパンプログラムはモノトーンと呼ばれる。一方、ラベルρがリテラル{p,...,p,¬p,...,¬p}に対応付けられている場合、スパンプログラムはノンモノトーンと呼ばれる。ここでは、スパンプログラムはノンモノトーンとする。そして、ノンモノトーンスパンプログラムを用いて、アクセスストラクチャ(ノンモノトーンアクセスストラクチャ)を構成する。アクセスストラクチャとは、簡単に言うと暗号へのアクセス制御を行うものである。つまり、暗号文を復号できるか否かの制御を行うものである。
詳しくは後述するが、スパンプログラムがモノトーンではなく、ノンモノトーンであることにより、スパンプログラムを利用して構成するFPRE方式の利用範囲が広がる。
【0029】
<第3−2.属性情報の内積とアクセスストラクチャ>
ここでは、属性情報の内積を用いて上述した写像γ(j)を計算する。つまり、属性情報の内積を用いて、行列Mのどの行を行列Mδに含めるかを決定する。
【0030】
(t=1,...,dでありU⊂{0,1})は、部分全集合(sub−universe)であり、属性の集合である。そして、Uは、それぞれ部分全集合の識別情報(t)と、n次元ベクトル(v)とを含む。つまり、Uは、(t,v)である。ここで、t∈{1,...,d}であり、v∈Fである。
【0031】
:=(t,v)をスパンプログラムM^:=(M,ρ)における変数pとする。つまり、p:=(t,v)である。そして、変数(p:=(t,v),(t,v’),...)としたスパンプログラムM^:=(M,ρ)をアクセスストラクチャSとする。
つまり、アクセスストラクチャS:=(M,ρ)であり、ρ:{1,...,L}→{(t,v),(t,v’),...,¬(t,v),¬(t,v’),...}である。
【0032】
次に、Γを属性の集合とする。つまり、Γ:={(t,x)|x∈Fq,1≦t≦d}である。
アクセスストラクチャSにΓが与えられた場合、スパンプログラムM^:=(M,ρ)に対する写像γ:{1,...,L}→{0,1}は、以下のように定義される。i=1,...,Lの各整数iについて、[ρ(i)=(t,v)]∧[(t,x)∈Γ]∧[v・x=0]、又は、[ρ(i)=¬(t,v)]∧[(t,x)∈Γ]∧[v・x≠0]である場合、γ(j)=1であり、他の場合、γ(j)=0とする。
つまり、属性情報vとxとの内積に基づき、写像γが計算される。そして、上述したように、写像γにより、行列Mのどの行を行列Mδに含めるかが決定される。すなわち、属性情報vとxとの内積により、行列Mのどの行を行列Mδに含めるかが決定され、1∈span<(Mγ(i)=1>である場合に限り、アクセスストラクチャS:=(M,ρ)はΓを受理する。
【0033】
<第3−3.秘密分散方式>
アクセスストラクチャS:=(M,ρ)に対する秘密分散方式について説明する。
なお、秘密分散方式とは、秘密情報を分散させ、意味のない分散情報にすることである。例えば、秘密情報sを10個に分散させ、10個の分散情報を生成する。ここで、10個の分散情報それぞれは、秘密情報sの情報を有していない。したがって、ある1個の分散情報を手に入れても秘密情報sに関して何ら情報を得ることはできない。一方、10個の分散情報を全て手に入れれば、秘密情報sを復元できる。
また、10個の分散情報を全て手に入れなくても、一部だけ(例えば、8個)手に入れれば秘密情報sを復元できる秘密分散方式もある。このように、10個の分散情報のうち8個で秘密情報sを復元できる場合を、8−out−of−10と呼ぶ。つまり、n個の分散情報のうちt個で秘密情報sを復元できる場合を、t−out−of−nと呼ぶ。このtを閾値と呼ぶ。
また、d,...,d10の10個の分散情報を生成した場合に、d,...,dまでの8個の分散情報であれば秘密情報sを復元できるが、d,...,d10までの8個の分散情報であれば秘密情報sを復元できないというような秘密分散方式もある。つまり、手に入れた分散情報の数だけでなく、分散情報の組合せに応じて秘密情報sを復元できるか否かを制御する秘密分散方式もある。
【0034】
図3は、sの説明図である。図4は、s→Tの説明図である。
行列Mを(L行×r列)の行列とする。f→Tを数118に示す列ベクトルとする。
【数118】
数119に示すsを共有される秘密情報とする。
【数119】
また、数120に示すs→TをsのL個の分散情報のベクトルとする。
【数120】
そして、分散情報sをρ(i)に属するものとする。
【0035】
アクセスストラクチャS:=(M,ρ)がΓを受理する場合、つまりγ:{1,...,L}→{0,1}について1∈span<(Mγ(i)=1>である場合、I⊆{i∈{1,...,L}|γ(i)-=1}である定数{α∈F|i∈I}が存在する。
これは、図2の例で、α(M)+α(M)+α(M)=1となるα,α,αが存在する場合には、スパンプログラムM^は入力列δを受理すると説明したことからも明らかである。つまり、α(M)+α(M)+α(M)=1となるα,α,αが存在する場合には、スパンプログラムM^が入力列δを受理するのであれば、α(M)+α(M)+α(M)=1となるα,α,αが存在する。
そして、数121である。
【数121】
なお、定数{α}は、行列Mのサイズにおける多項式時間で計算可能である。
【0036】
以下の実施の形態に係るFPRE方式は、上述したように、スパンプログラムに内積述語と秘密分散方式とを適用してアクセスストラクチャを構成する。そのため、スパンプログラムにおける行列Mや、内積述語における属性情報x及び属性情報v(述語情報)を設計することにより、アクセス制御を自由に設計することができる。つまり、非常に高い自由度でアクセス制御の設計を行うことができる。なお、行列Mの設計は、秘密分散方式の閾値等の条件設計に相当する。
例えば、上述した属性ベース暗号方式は、以下の実施の形態に係るFPRE方式におけるアクセスストラクチャにおいて、内積述語の設計をある条件に限定した場合に相当する。つまり、以下の実施の形態に係るFPRE方式におけるアクセスストラクチャに比べ、属性ベース暗号方式におけるアクセスストラクチャは、内積述語における属性情報x及び属性情報v(述語情報)の設計の自由度がない分、アクセス制御の設計の自由度が低い。なお、具体的には、属性ベース暗号方式は、属性情報{xt∈{1,...,d}と{vt∈{1,...,d}とを、等号関係に対する2次元ベクトル、例えばx:=(1,x)とv:=(v,−1)とに限定した場合に相当する。
また、内積述語暗号方式におけるPREは、以下の実施の形態に係るFPRE方式におけるアクセスストラクチャにおいて、スパンプログラムにおける行列Mの設計をある条件に限定した場合に相当する。つまり、以下の実施の形態に係るFPRE方式におけるアクセスストラクチャに比べ、内積述語暗号方式におけるアクセスストラクチャは、スパンプログラムにおける行列Mの設計の自由度がない分、アクセス制御の設計の自由度が低い。なお、具体的には、内積述語暗号方式は、秘密分散方式を1−out−of−1(あるいは、d−out−of−d)に限定した場合である。
【0037】
特に、以下の実施の形態に係るFPRE方式におけるアクセスストラクチャは、ノンモノトーンスパンプログラムを用いたノンモノトーンアクセスストラクチャを構成する。そのため、アクセス制御の設計の自由度がより高くなる。
具体的には、ノンモノトーンスパンプログラムには、否定形のリテラル(¬p)を含むため、否定形の条件を設定できる。例えば、第1会社には、A部とB部とC部とD部との4つの部署があったとする。ここで、第1会社のB部以外の部署の属するユーザにのみアクセス可能(復号可能)というアクセス制御をしたいとする。この場合に、否定形の条件の設定ができないとすると、「第1会社のA部とC部とD部とのいずれかに属すること」という条件を設定する必要がある。一方、否定形の条件の設定ができるとすると、「第1会社の社員であって、B部以外に属すること」という条件を設定することができる。つまり、否定形の条件が設定できることで、自然な条件設定が可能となる。なお、ここでは部署の数が少ないが、部署の数が多い場合等は非常に有効であることが分かる。
【0038】
<第4.FPRE方式の基本構成>
<第4−1.CP−FPRE方式の基本構成>
CP−FPRE方式の構成を簡単に説明する。なお、CP(暗号文ポリシー)とは、暗号文にPolicyが埋め込まれること、つまりアクセスストラクチャが埋め込まれることを意味する。
【0039】
CP−FPRE方式は、Setup、KG、Enc、RKG、REnc、Dec1、Dec2の7つのアルゴリズムを備える。
(Setup)
Setupアルゴリズムは、セキュリティパラメータλと、属性のフォーマットn:=(d;n,...,n;u,...,u;z,...,z)と、再暗号化回数の上限値を示す値Qとを入力として、公開パラメータpkと、マスター鍵skとを出力する確率的アルゴリズムである。
(KG)
KGアルゴリズムは、属性集合Γ:={(t,x)|x∈Fnt,1≦t≦d}と、公開パラメータpkと、マスター鍵skとを入力として、復号鍵skΓを出力する確率的アルゴリズムである。
(Enc)
Encアルゴリズムは、メッセージmと、アクセスストラクチャS=(M,ρ)と、公開パラメータpkとを入力として、暗号文ctを出力する確率的アルゴリズムである。
(RKG)
RKGアルゴリズムは、復号鍵skΓと、アクセスストラクチャS’:=(M’,ρ’)と、公開パラメータpkと、再暗号化する暗号文ctが再暗号化された回数を示す値nとを入力として、再暗号化鍵rkΓ.S’を出力する確率的アルゴリズムである。
(REnc)
REncアルゴリズムは、暗号文ctと、再暗号化鍵rkΓ.S’と、公開パラメータpkとを入力として、再暗号文ctn+1S’を出力する確率的アルゴリズムである。
(Dec1)
Dec1アルゴリズムは、再暗号文ctS’と、復号鍵skΓ’と、公開パラメータpkとを入力として、メッセージm、又は、識別情報⊥を出力するアルゴリズムである。
(Dec2)
Dec2アルゴリズムは、暗号文ct(ct)と、復号鍵skΓと、公開パラメータpkとを入力として、メッセージm、又は、識別情報⊥を出力するアルゴリズムである。
【0040】
<第4−2.暗号システム10>
CP−FPRE方式のアルゴリズムを実行する暗号システム10について説明する。
図5は、CP−FPRE方式を実行する暗号システム10の構成図である。
暗号システム10は、鍵生成装置100、暗号化装置200、復号装置300(再暗号化鍵生成装置)、再暗号化装置400、再暗号文復号装置500(再暗号化鍵生成装置)を備える。
【0041】
鍵生成装置100は、セキュリティパラメータλと、属性のフォーマットn:=(d;n,...,n;u,...,u;z,...,z)と、値Qとを入力としてSetupアルゴリズムを実行して、公開パラメータpkとマスター鍵skとを生成する。
そして、鍵生成装置100は、公開パラメータpkを公開する。また、鍵生成装置100は、属性集合Γを入力としてKGアルゴリズムを実行して、復号鍵skΓを生成して復号装置300へ秘密裏に送信する。また、鍵生成装置100は、属性集合Γ’を入力としてKGアルゴリズムを実行して、復号鍵skΓ’を生成して再暗号文復号装置500へ秘密裏に送信する。
【0042】
暗号化装置200は、メッセージmと、アクセスストラクチャSと、公開パラメータpkとを入力としてEncアルゴリズムを実行して、暗号文ctを生成する。暗号化装置200は、暗号文ctを再暗号化装置400へ送信する。
【0043】
復号装置300は、公開パラメータpkと、復号鍵skΓと、アクセスストラクチャS’と、値nとを入力としてRKGアルゴリズムを実行して、再暗号化鍵rkΓ.S’を生成する。復号装置300は、再暗号化鍵rkΓ.S’を再暗号化装置に秘密裏に送信する。
また、復号装置300は、公開パラメータpkと、復号鍵skΓと、暗号文ct(ct)とを入力としてDec2アルゴリズムを実行して、メッセージm又は識別情報⊥を出力する。
【0044】
再暗号化装置400は、公開パラメータpkと、再暗号化鍵rkΓ.S’と、暗号文ctとを入力として、REncアルゴリズムを実行して、再暗号文ctn+1S’を生成する。再暗号化装置400は、再暗号文ctn+1S’を再暗号文復号装置500へ送信する。
【0045】
再暗号文復号装置500は、公開パラメータpkと、復号鍵skΓ’と、再暗号文ctn+1S’とを入力として、Dec1アルゴリズムを実行して、メッセージm又は識別情報⊥を出力する。
【0046】
<第4−4.CP−FPRE方式及び暗号システム10の詳細>
図6から図17に基づき、CP−FPRE方式、及び、CP−FPRE方式を実行する暗号システム10の機能と動作とについて説明する。
図6は、鍵生成装置100の機能を示す機能ブロック図である。図7は、暗号化装置200の機能を示す機能ブロック図である。図8は、復号装置300の機能を示す機能ブロック図である。図9は、再暗号化装置400の機能を示す機能ブロック図である。図10は、再暗号文復号装置500の機能を示す機能ブロック図である。
図11図12とは、鍵生成装置100の動作を示すフローチャートである。なお、図11はSetupアルゴリズムの処理を示すフローチャートであり、図12はKGアルゴリズムの処理を示すフローチャートである。図13は、暗号化装置200の動作を示すフローチャートであり、Encアルゴリズムの処理を示すフローチャートである。図14は、復号装置300の動作を示すフローチャートであり、RKGアルゴリズムの処理を示すフローチャートである。図15は、再暗号化装置400の動作を示すフローチャートであり、REncアルゴリズムの処理を示すフローチャートである。図16は、再暗号文復号装置500の動作を示すフローチャートであり、Dec1アルゴリズムの処理を示すフローチャートである。図17は、復号装置300の動作を示すフローチャートであり、Dec2アルゴリズムの処理を示すフローチャートである。
【0047】
鍵生成装置100の機能と動作とについて説明する。
図6に示すように、鍵生成装置100は、マスター鍵生成部110、マスター鍵記憶部120、情報入力部130、復号鍵生成部140、鍵送信部150(鍵出力部)を備える。また、復号鍵生成部140は、乱数生成部141、復号鍵k生成部142を備える。
【0048】
まず、図11に基づき、Setupアルゴリズムの処理について説明する。
(S101:初期設定ステップ)
マスター鍵生成部110は、初期設定を実行する。
具体的には、マスター鍵生成部110は、以下の(1)から(3)までの処理を実行する。
【0049】
(1)マスター鍵生成部110は、入力装置により、セキュリティパラメータλ(1λ)と、属性のフォーマットn:=(d;n,...,n;w,...,w;z,...,z)とを入力する。ここで、dは1以上の整数であり、t=1,...,dの各整数tについて、nは1以上の整数でありw,zは0以上の整数である。
【0050】
(2)マスター鍵生成部110は、処理装置により、(1)で入力したセキュリティパラメータλを入力としてアルゴリズムGbpgを実行して、双線形ペアリング群のパラメータparam:=(q,G,G,g,e)の値を生成する。
【0051】
(3)マスター鍵生成部110は、Nに5を設定し、t=1,...,dの各整数tについてNにn+w+z+1を設定する。
【0052】
(S102:再暗号化回数入力ステップ)
マスター鍵生成部110は、入力装置により、再暗号化回数の上限を示す値Qを入力する。値Qは、1以上の整数である。
【0053】
マスター鍵生成部110は、以下のS103からS105までの処理をj=0,...,Qまで繰り返し、実行する。
【0054】
(S103:正規直交基底生成ステップ)
マスター鍵生成部110は、処理装置により、t=0,...,dの各整数tについて、数122を計算して、パラメータparamn→と、基底B0.j及び基底B0.jと、基底Bt.j及び基底Bt.jとを生成する。
【数122】
【0055】
つまり、マスター鍵生成部110は以下の処理を実行する。
(1)マスター鍵生成部110は、乱数ψを生成する。また、マスター鍵生成部110は、e(G,G)ψjをgT.jに設定する。
【0056】
t=0,...,dの各整数tについて、(2)から(5)の処理を実行する。
(2)マスター鍵生成部110は、セキュリティパラメータλと、Nと、param:=(q,G,G,g,e)の値とを入力としてアルゴリズムGdpvsを実行して、双対ペアリングベクトル空間のパラメータparamVt:=(q,V,G,A,e)の値を生成する。
【0057】
(3)マスター鍵生成部110は、Nと、Fとを入力として、線形変換X:=(χt,i,j’i,j’をランダムに生成する。なお、GLは、General Linearの略である。つまり、GLは、一般線形群であり、行列式が0でない正方行列の集合であり、乗法に関し群である。また、(χt,i,j’i,j’は、行列χt,i,j’の添え字i,j’に関する行列という意味である。ここでは、(χt,i,j’i,j’ではi,j’=1,...,Nである。
【0058】
(4)マスター鍵生成部110は、乱数ψと線形変換Xとに基づき、(νt,i,j’i,j’:=ψ・(X−1を生成する。なお、(νt,i,j’i,j’も(χt,i,j’i,j’と同様に、行列νt,i,j’の添え字i,j’に関する行列という意味である。ここでは、(νt,i,j’i,j’ではi,j’=1,...,Nである。
【0059】
(5)マスター鍵生成部110は、(3)で生成した線形変換Xに基づき、(2)で生成した標準基底Aから基底Bt.jを生成する。マスター鍵生成部110は、(4)で生成した(νt,i,j’i,j’に基づき、(2)で生成した標準基底Aから基底Bt.jを生成する。
【0060】
(6)マスター鍵生成部110は、paramn→.jに(1)で生成したgT.jと(2)で生成した{paramVtt=0,...,dとを設定する。
【0061】
(S104:公開パラメータ生成ステップ)
マスター鍵生成部110は、処理装置により、基底B0.jの部分基底B^0.jと、基底Bt.jの部分基底B^t.jと、基底B0.jの部分基底B^0.jと、基底Bt.jの部分基底B^t.jとを数123に示すように生成する。
【数123】
マスター鍵生成部110は、セキュリティパラメータλと、paramn→.jと、部分基底B^0.j,B^t.j,B^0.j,B^t.jとを公開パラメータpkとする。
【0062】
(S105:マスター鍵生成ステップ)
マスター鍵生成部110は、基底ベクトルb0.j.1をマスター鍵skとする。
【0063】
(S106:マスター鍵記憶ステップ)
マスター鍵記憶部120は、(S104)で生成した公開パラメータpkを記憶装置に記憶する。また、マスター鍵記憶部120は、(S105)で生成したマスター鍵skを記憶装置に記憶する。
【0064】
つまり、(S101)から(S105)において、鍵生成装置100は、数124に示すSetupアルゴリズムを実行して、公開パラメータpkとマスター鍵skとを生成する。そして、(S106)で、鍵生成装置100は、生成した公開パラメータpkとマスター鍵skとを記憶装置に記憶する。
なお、公開パラメータは、例えば、ネットワークを介して公開され、暗号化装置200、復号装置300、再暗号化装置400、再暗号文復号装置500が取得可能な状態にされる。
【数124】
【0065】
次に、図12に基づき、KGアルゴリズムの処理について説明する。
(S201:情報入力ステップ)
情報入力部130は、入力装置により、属性集合Γ:={(t,x:=(xt,1,...,xt,nt∈Fnt\{0}))|1≦t≦d}を入力する。なお、tは、1以上d以下の全ての整数ではなく、1以上d以下の少なくとも一部の整数であってもよい。また、属性集合Γは、例えば、復号鍵skΓの使用者の属性情報が設定されている。
【0066】
(S202:乱数生成ステップ)
乱数生成部141は、処理装置により、乱数を数125に示すように生成する。
【数125】
【0067】
(S203:復号鍵k生成ステップ)
復号鍵k生成部142は、処理装置により、j=0,...,Qの各整数jについて、復号鍵k0,jを数126に示すように生成する。
【数126】
なお、数110に示す基底Bと基底Bとに対して数111である。そのため、数126は、基底Bの基底ベクトルb0.j.1の係数として1が設定され、基底ベクトルb0.j.2の係数としてδが設定され、基底ベクトルb0.j.3の係数として0が設定され、基底ベクトルb0.j.4の係数としてφ0.jが設定され、基底ベクトルb0.j.5の係数として0が設定されることを意味する。
【0068】
また、復号鍵k生成部142は、処理装置により、属性集合Γに含まれる各整数tとj=0,...,Qの各整数jとについて、復号鍵kt.jを数127に示すように生成する。
【数127】
なお、数127は、基底Bの基底ベクトルbt.j.1,...,bt.j.ntの係数としてδt.1,...,δt.ntが設定され、基底ベクトルbt.j.nt+1,...,bt.j.nt+wtの係数として0が設定され、基底ベクトルbt.j.nt+wt+1,...,bt.j.nt+wt+ztの係数としてφt.j.1,...,φt.j.ztが設定され、基底ベクトルbt.j.nt+wt+zt+1の係数として0が設定されることを意味する。
【0069】
(S204:鍵送信ステップ)
鍵送信部150は、属性集合Γと、復号鍵k0.j,kt.jとを要素とする復号鍵skΓを、例えば通信装置によりネットワークを介して秘密裡に復号装置300へ送信する。もちろん、復号鍵skΓは、他の方法により復号装置300へ送信されてもよい。
【0070】
つまり、(S201)から(S203)において、鍵生成装置100は、数128に示すKGアルゴリズムを実行して、復号鍵skΓを生成する。そして、(S204)で、鍵生成装置100は、復号鍵skΓを復号装置300へ送信する。
【数128】
【0071】
なお、鍵生成装置100は、(S201)において、復号鍵skΓ’の使用者の属性情報が設定された属性集合Γ’:={(t,x’:=(x’t,1,...,x’t,nt∈Fnt\{0}))|1≦t≦d}を入力して、KGアルゴリズムを実行して、復号鍵skΓ’を生成する。そして、鍵生成装置100は、復号鍵skΓ’:=(Γ’,{k’0.j,{k’t.j(t,x→t)∈Γ’j=0,...,Q)を再暗号文復号装置500へ送信する。
【0072】
暗号化装置200の機能と動作とについて説明する。
図7に示すように、暗号化装置200は、公開パラメータ受信部210、情報入力部220、暗号化部230、暗号文送信部240(暗号文出力部)を備える。また、暗号化部230は、fベクトル生成部231、sベクトル生成部232、乱数生成部233、暗号文c生成部234を備える。
【0073】
図13に基づき、Encアルゴリズムの処理について説明する。
(S301:公開パラメータ受信ステップ)
公開パラメータ受信部210は、例えば、通信装置によりネットワークを介して、鍵生成装置100が生成した公開パラメータpkを受信する。
【0074】
(S302:情報入力ステップ)
情報入力部220は、入力装置により、アクセスストラクチャS:=(M,ρ)を入力する。なお、アクセスストラクチャSは、実現したいシステムの条件に応じて設定されるものである。また、アクセスストラクチャSのρは、例えば、暗号文ctを復号可能なユーザの属性情報が設定されている。ここで、ρ(i)=(t,v:=(vi,1,...,vi,nt)∈Fnt\{0})(vi,nt≠0)である。なお、MはL行r列の行列である。
また、情報入力部220は、入力装置により、復号装置300へ送信するメッセージmを入力する。
また、情報入力部220は、入力装置により、再暗号化回数nを入力する。ここで入力される再暗号化回数nは、通常であれば0となり、後述するRKGアルゴリズムでEncアルゴリズムを呼び出した場合には、RKGアルゴリズムで指定された値となる。
【0075】
(S303:fベクトル生成ステップ)
fベクトル生成部231は、処理装置により、ベクトルfを数129に示すように生成する。
【数129】
【0076】
(S304:sベクトル生成ステップ)
sベクトル生成部232は、処理装置により、ベクトルs→Tを数130に示すように生成する。
【数130】
また、sベクトル生成部232は、処理装置により、値sを数131に示すように生成する。
【数131】
【0077】
(S305:乱数生成ステップ)
乱数生成部233は、処理装置により、乱数を数132に示すように生成する。
【数132】
【0078】
(S306:暗号文c生成ステップ)
暗号文c生成部234は、処理装置により、暗号文c0.nを数133に示すように生成する。
【数133】
【0079】
また、暗号文c生成部234は、処理装置により、i=1,...,Lの各整数iについて、暗号文ci.nを数134に示すように生成する。
【数134】
【0080】
また、暗号文c生成部234は、処理装置により、暗号文cT.nを数135に示すように生成する。
【数135】
【0081】
(S307:暗号文送信ステップ)
暗号文送信部240は、アクセスストラクチャSと、暗号文c0.n,c1.n,...,cL.n,cT.nと、再暗号化回数nとを要素とする暗号文ctを、例えば通信装置によりネットワークを介して復号装置300へ送信する。もちろん、暗号文ctは、他の方法により復号装置300へ送信されてもよい。
【0082】
つまり、(S301)から(S306)において、暗号化装置200は、数136に示すEncアルゴリズムを実行して、暗号文ctを生成する。そして、(S307)で、暗号化装置200は生成した暗号文ctを復号装置300へ送信する。
【数136】
【0083】
復号装置300の機能と動作とについて説明する。
図8に示すように、復号装置300は、復号鍵受信部310(復号鍵取得部)、情報入力部320、再暗号化鍵生成部330、再暗号化鍵送信部340(再暗号化鍵出力部)、暗号文受信部350、スパンプログラム計算部360、補完係数計算部370、ペアリング演算部380、メッセージ計算部390を備える。また、再暗号化鍵生成部330は、乱数生成部331、暗号化部332、復号鍵k*rk生成部333を備える。
【0084】
ここでは、図14に基づき、RKGアルゴリズムの処理について説明する。Dec2アルゴリズムについては後述する。
【0085】
(S401:復号鍵受信ステップ)
復号鍵受信部310は、例えば、通信装置によりネットワークを介して、鍵生成装置100から送信された復号鍵skΓを受信する。また、復号鍵受信部310は、鍵生成装置100が生成した公開パラメータpkを受信する。
【0086】
(S402:情報入力ステップ)
情報入力部320は、入力装置により、アクセスストラクチャS’:=(M’,ρ’)を入力する。なお、アクセスストラクチャS’は、実現したいシステムの条件に応じて設定されるものである。また、アクセスストラクチャS’のρ’は、例えば、再暗号文ctn+1S’を復号可能なユーザの属性情報が設定されている。ここで、ρ’(i)=(t,v→’:=(v’i,1,...,v’i,nt)∈Fnt\{0})(v’i,nt≠0)である。
また、情報入力部320は、入力装置により、再暗号化回数nを入力する。ここで入力される再暗号化回数nは、何回再暗号化された暗号文を再暗号化するための再暗号化鍵を生成するかを示す。つまり、1度も再暗号化されていない暗号文ctを再暗号化するための再暗号化鍵を生成する場合には、再暗号化回数nとして0が入力される。また、1度再暗号化された暗号文ctを再暗号化するための再暗号化鍵を生成する場合には、再暗号化回数nとして1が入力される。
【0087】
(S403:乱数生成ステップ)
乱数生成部331は、処理装置により、乱数を数137に示すように生成する。
【数137】
【0088】
(S404:乱数暗号化ステップ)
暗号化部332は、処理装置により、乱数rn+1(変換情報)を数138に示すように暗号化して、暗号文ct’n+1S’を生成する。ここで、関数En+1はFからGT.n+1へのエンコード関数である。
【数138】
【0089】
(S405:復号鍵k*rk生成ステップ)
復号鍵k*rk生成部333は、処理装置により、復号鍵k*rk0.nを数139に示すように生成する。
【数139】
【0090】
また、復号鍵k*rk生成部333は、処理装置により、属性集合Γに含まれる各整数tについて、復号鍵k*rkt.nを数140に示すように生成する。
【数140】
【0091】
(S406:鍵送信ステップ)
再暗号化鍵送信部340は、属性集合Γと、アクセスストラクチャS’と、復号鍵k*rk0.n,k*rkt.nと、暗号文ct’n+1S’と、再暗号化回数n(ここでは、(S402)で入力された値)とを要素とする再暗号化鍵rkΓ,S’を、例えば通信装置によりネットワークを介して秘密裡に再暗号化装置400へ送信する。もちろん、再暗号化鍵rkΓ,S’は、他の方法により再暗号化装置400へ送信されてもよい。
【0092】
つまり、(S401)から(S405)において、復号装置300は、数141に示すRKGアルゴリズムを実行して、再暗号化鍵rkΓ,S’を生成する。そして、(S406)で、復号装置300は生成した再暗号化鍵rkΓ,S’を再暗号化装置400へ送信する。
【数141】
【0093】
再暗号化装置400の機能と動作とについて説明する。
図9に示すように、再暗号化装置400は、公開パラメータ受信部410、暗号文受信部420(暗号文取得部)、再暗号化鍵受信部430(再暗号化鍵取得部)、スパンプログラム計算部440、補間係数計算部450、ペアリング演算部460、再暗号文送信部470(再暗号文出力部)を備える。
【0094】
図15に基づき、REncアルゴリズムの処理について説明する。
(S501:公開パラメータ受信ステップ)
公開パラメータ受信部410は、例えば、通信装置によりネットワークを介して、鍵生成装置100が生成した公開パラメータpkを受信する。
【0095】
(S502:暗号文受信ステップ)
暗号文受信部420は、例えば、通信装置によりネットワークを介して、暗号化装置200が送信した暗号文ctを受信する。
【0096】
(S503:再暗号化鍵受信ステップ)
再暗号化鍵受信部430は、例えば、通信装置によりネットワークを介して、復号装置300から送信された再暗号化鍵rkΓ,S’を受信する。
【0097】
(S504:スパンプログラム計算ステップ)
スパンプログラム計算部440は、処理装置により、暗号文ctに含まれるアクセスストラクチャSが、再暗号化鍵rkΓ,S’に含まれるΓを受理するか否かを判定する。アクセスストラクチャSがΓを受理するか否かの判定方法は、実施の形態1における「第3.FPREを実現するための概念」で説明した通りである。
スパンプログラム計算部440は、アクセスストラクチャSがΓを受理する場合(S504で受理)、処理を(S505)へ進める。一方、アクセスストラクチャSがΓを拒絶する場合(S504で拒絶)、処理を終了する。
【0098】
(S505:補間係数計算ステップ)
補間係数計算部450は、処理装置により、数142となるIと、定数(補完係数){αi∈Iとを計算する。
【数142】
【0099】
(S506:ペアリング演算ステップ)
ペアリング演算部460は、処理装置により、数143を計算して、セッション鍵Kを生成する。
【数143】
【0100】
(S507:再暗号文送信ステップ)
再暗号文送信部470は、セッション鍵K’と、暗号文cT.nと、アクセスストラクチャS’と、暗号文ct’n+1S’と、再暗号化回数n+1(ここでは、(S502)で受信した暗号文ctに含まれる再暗号化回数n、あるいは、(S503)で受信した再暗号化鍵rkΓ,S’に含まれる再暗号化回数nに1を加えた値)とを要素とする再暗号文ctn+1S’を、例えば通信装置によりネットワークを介して秘密裡に再暗号文復号装置500へ送信する。もちろん、再暗号文ctn+1S’は、他の方法により再暗号文復号装置500へ送信されてもよい。
【0101】
なお、ここでは、暗号化装置200が出力した暗号文ct(ct)を再暗号化する場合を想定して説明した。しかし、再暗号化装置400が出力した再暗号文ctn+1S’を、さらに再暗号化することも可能である。
この場合、(S502)で暗号文受信部420は、暗号化装置200が出力した暗号文ctに代えて、再暗号化装置400が出力した再暗号文ctn+1S’を暗号文ctとして取得する。なお、暗号文ctn+1S’には、アクセスストラクチャS’が要素として含まれているが、このアクセスストラクチャS’を便宜的にアクセスストラクチャSと読み替える。また、暗号文ctn+1S’では、再暗号化回数がn+1となっているが、この再暗号化回数を便宜的にnと読み替える。
そして、(S507)で再暗号文送信部470は、上記要素に加え、(S502)で取得した暗号文ctに含まれていた要素(セッション鍵{K’j=1,...,n、及び、暗号文{cT.jj=0,...,n−1)を要素とする再暗号文ctn+1S’を再暗号文復号装置500へ送信する。
他の処理は、上述した通りである。
【0102】
つまり、(S501)から(S506)において、再暗号化装置400は、数144に示すREncアルゴリズムを実行して、再暗号文ctn+1S’を生成する。そして、(S507)で、再暗号化装置400は生成した再暗号文ctn+1S’を再暗号文復号装置500へ送信する。
【数144】
【0103】
なお、(S502)で受信した暗号文ctに含まれる再暗号化回数nと、(S503)で受信した再暗号化鍵rkΓ,S’に含まれる再暗号化回数nとが不一致の場合、再暗号化することはできない。
【0104】
再暗号文復号装置500の機能と動作とについて説明する。
図10に示すように、再暗号文復号装置500は、復号鍵受信部510、暗号文受信部520、スパンプログラム計算部530、補完係数計算部540、ペアリング演算部550、乱数計算部560、メッセージ計算部570を備える。
【0105】
図16に基づき、Dec1アルゴリズムの処理について説明する。
(S601:復号鍵受信ステップ)
復号鍵受信部510は、例えば、通信装置によりネットワークを介して、鍵生成装置100から送信された復号鍵skΓ’を受信する。また、復号鍵受信部310は、鍵生成装置100が生成した公開パラメータpkを受信する。
【0106】
(S602:暗号文受信ステップ)
暗号文受信部520は、例えば、通信装置によりネットワークを介して、再暗号化装置400が送信した再暗号文ctS’を受信する。
なお、REncアルゴリズムでは、再暗号文ctn+1S’を出力するとしていたが、ここでは、再暗号文ctS’と表記を変更している。つまり、再暗号化鍵rkΓ,S’( rkΓ,S’)で再暗号化回数0(n=0)の暗号文ct(ct)を再暗号化して再暗号文ctn+1(ct0+1)を生成した場合、ここでは、この再暗号文ctn+1(ct0+1)を再暗号文ct(ct)と表記している。
【0107】
(S603:スパンプログラム計算ステップ)
スパンプログラム計算部530は、処理装置により、再暗号文ctS’に含まれるアクセスストラクチャS’が、復号鍵skΓ’に含まれるΓ’を受理するか否かを判定する。アクセスストラクチャS’がΓ’を受理するか否かの判定方法は、実施の形態1における「第3.FPREを実現するための概念」で説明した通りである。
スパンプログラム計算部530は、アクセスストラクチャS’がΓ’を受理する場合(S603で受理)、処理を(S604)へ進める。一方、アクセスストラクチャS’がΓ’を拒絶する場合(S603で拒絶)、処理を終了する。
【0108】
(S604:補完係数計算ステップ)
補完係数計算部540は、処理装置により、数145となるIと、定数(補完係数){αi∈Iとを計算する。
【数145】
【0109】
(S605:ペアリング演算ステップ)
ペアリング演算部550は、処理装置により、数146を計算して、セッション鍵K’を生成する。
【数146】
【0110】
(S606:乱数計算ステップ)
乱数計算部560は、処理装置により、数147を計算して、乱数rを生成する。
【数147】
さらに、nが2以上の場合には、乱数計算部560は、処理装置により、j=n−1,...,1の各整数jについて順に、数148を計算して、乱数rを生成する。
【数148】
【0111】
(S607:メッセージ計算ステップ)
メッセージ計算部570は、処理装置により、m=cT.0/(K’r1を計算して、メッセージmを生成する。ここで、r1は、乱数rのことを意味する。
【0112】
つまり、(S601)から(S607)において、再暗号文復号装置500は、数149に示すDec1アルゴリズムを実行して、メッセージmを生成する。
【数149】
【0113】
図17に基づき、Dec2アルゴリズムの処理について説明する。
(S701:復号鍵受信ステップ)
復号鍵受信部310は、例えば、通信装置によりネットワークを介して、鍵生成装置100から送信された復号鍵skΓを受信する。また、復号鍵受信部310は、鍵生成装置100が生成した公開パラメータpkを受信する。
【0114】
(S702:暗号文受信ステップ)
暗号文受信部350は、例えば、通信装置によりネットワークを介して、暗号化装置200が送信した暗号文ct(ct)を受信する。
【0115】
(S703:スパンプログラム計算ステップ)
スパンプログラム計算部360は、処理装置により、暗号文ctに含まれるアクセスストラクチャSが、復号鍵skΓに含まれるΓを受理するか否かを判定する。アクセスストラクチャSがΓを受理するか否かの判定方法は、実施の形態1における「第3.FPREを実現するための概念」で説明した通りである。
スパンプログラム計算部360は、アクセスストラクチャSがΓを受理する場合(S703で受理)、処理を(S704)へ進める。一方、アクセスストラクチャSがΓを拒絶する場合(S703で拒絶)、処理を終了する。
【0116】
(S704:補完係数計算ステップ)
補完係数計算部370は、処理装置により、数150となるIと、定数(補完係数){αi∈Iとを計算する。
【数150】
【0117】
(S705:ペアリング演算ステップ)
ペアリング演算部380は、処理装置により、数151を計算して、セッション鍵Kを生成する。
【数151】
【0118】
(S706:メッセージ計算ステップ)
メッセージ計算部390は、処理装置により、m=cT.0/Kを計算して、メッセージmを生成する。
【0119】
つまり、(S701)から(S706)において、復号装置300は、数152に示すDec2アルゴリズムを実行して、メッセージmを生成する。
【数152】
【0120】
以上のように、実施の形態1に係る暗号システム10は、CP−FPRE方式を実現する。そのため、1つの再暗号化鍵で、様々な種類のユーザの集合に暗号文を転送することができるようになる。
【0121】
特に、実施の形態1に係る暗号システム10では、1度の再暗号化により、暗号文のサイズが、定数サイズの要素分だけが増加する。そのため、n回の再暗号化を実行しても、暗号文のサイズは、再暗号化の実行回数nに対して多項式倍の要素が増加するだけである。これは、従来FPRE方式に比べて非常に効率的であり、FPRE方式をより幅広く用いることが可能となる。
【0122】
なお、上記説明では、復号装置300が再暗号化鍵生成装置を兼ねており、復号装置300がDec2アルゴリズムだけでなく、RKGアルゴリズムも実行するとした。しかし、再暗号文ctS’をさらに再暗号化する場合の再暗号化鍵は、再暗号文復号装置500が再暗号化鍵生成装置としてRKGアルゴリズムを実行して生成する。したがって、この場合、復号装置300が備える機能構成のうちRKGアルゴリズムを実行するのに必要な機能構成を再暗号文復号装置500も備える。
また、復号装置300(や再暗号文復号装置500)と、再暗号化鍵生成装置とを別の装置としてもよい。この場合、復号装置300は、Dec2アルゴリズムを実行し、再暗号化鍵生成装置は、RKGアルゴリズムを実行する。したがって、この場合、復号装置300は、Dec2アルゴリズムを実行するのに必要な機能構成を備え、再暗号化鍵生成装置は、RKGアルゴリズムを実行するのに必要な機能構成を備える。
【0123】
また、上記説明では、Nにn+w+z+1を設定した。しかし、Nにn+w+z+βを設定してもよい。ここで、βは0以上の整数である。
また、上記説明では、Nに5を設定した。しかし、Nに1+1+w+z+βを設定してもよい。ここで、w,z,βは0以上の整数である。
【0124】
実施の形態2.
実施の形態1で説明したFPRE方式では、Setupアルゴリズムにおいて、再暗号化回数の上限値を示す値Qを入力し、j=1,...,Qの各整数jについてそれぞれ異なる基底Bt.j及び基底Bt.jを生成していた。そのため、再暗号化回数の上限値を大きくするほど、公開パラメータのサイズが大きくなり、暗号処理の効率が悪くなってしまった。
実施の形態2では、インデックス付けの技法を用いることにより、再暗号化回数の上限値をなくすとともに、再暗号化回数の上限値によらず公開パラメータのサイズを一定にしたFPRE方式について説明する。
【0125】
実施の形態2では、実施の形態1と同じ部分については説明を省略し、実施の形態1と異なる部分について説明する。
【0126】
暗号システム10の構成は、図5に示す実施の形態1に係る暗号システム10の構成と同じである。但し、Setupアルゴリズムにおいて、値Qを入力する必要はない。また、暗号システム10を構成する各装置の構成は、図6から図10に示す実施の形態1に係る各装置の構成と同じである。
【0127】
図18は、Setupアルゴリズムの処理を示すフローチャートである。他のアルゴリズムの処理の流れは、図12から図17に示す各アルゴリズムの処理の流れと同じである。REncアルゴリズムとDec2アルゴリズムとは、処理の内容も実施の形態1と同じである。
【0128】
図18に基づき、Setupアルゴリズムの処理について説明する。
(S801:正規直交基底生成ステップ)
マスター鍵生成部110は、処理装置により、数153を計算して、パラメータparamn→と、基底B及び基底Bと、基底B及び基底Bとを生成する。
【数153】
【0129】
(S802:公開パラメータ生成ステップ)
マスター鍵生成部110は、処理装置により、基底Bの部分基底B^と、基底Bの部分基底B^と、基底Bの部分基底B^と、基底Bの部分基底B^とを数154に示すように生成する。
【数154】
マスター鍵生成部110は、セキュリティパラメータλと、paramn→と、部分基底B^,B^,B^,B^とを合わせて、公開パラメータpkとする。
【0130】
(S803:マスター鍵生成ステップ)
マスター鍵生成部110は、基底ベクトルb0.1をマスター鍵skとする。
【0131】
(S804:マスター鍵記憶ステップ)
マスター鍵記憶部120は、(S802)で生成した公開パラメータpkを記憶装置に記憶する。また、マスター鍵記憶部120は、(S803)で生成したマスター鍵skを記憶装置に記憶する。
【0132】
つまり、(S801)から(S803)において、鍵生成装置100は、数155に示すSetupアルゴリズムを実行して、公開パラメータpkとマスター鍵skとを生成する。そして、(S804)で、鍵生成装置100は、生成した公開パラメータpkとマスター鍵skとを記憶装置に記憶する。
【数155】
【0133】
図12に基づき、KGアルゴリズムの処理について説明する。
(S201)の処理は、実施の形態1と同じである。
【0134】
(S202:乱数生成ステップ)
乱数生成部141は、処理装置により、乱数を数156に示すように生成する。
【数156】
【0135】
(S203:復号鍵k生成ステップ)
復号鍵k生成部142は、処理装置により、復号鍵kを数157に示すように生成する。
【数157】
【0136】
また、復号鍵k生成部142は、処理装置により、属性集合Γに含まれる各整数tについて、復号鍵kを数158に示すように生成する。
【数158】
【0137】
(S204:鍵送信ステップ)
鍵送信部150は、属性集合Γと、復号鍵k,kとを要素とする復号鍵skΓを、例えば通信装置によりネットワークを介して秘密裡に復号装置300へ送信する。
【0138】
つまり、(S201)から(S203)において、鍵生成装置100は、数159に示すKGアルゴリズムを実行して、復号鍵skΓを生成する。そして、(S204)で、鍵生成装置100は、復号鍵skΓを復号装置300へ送信する。
【数159】
【0139】
図13に基づき、Encアルゴリズムの処理について説明する。
(S301)から(S304)と、(S307)との処理は、実施の形態1と同じである。
【0140】
(S305:乱数生成ステップ)
乱数生成部233は、処理装置により、乱数を数160に示すように生成する。
【数160】
【0141】
(S306:暗号文c生成ステップ)
暗号文c生成部234は、処理装置により、暗号文c0.nを数161に示すように生成する。
【数161】
【0142】
また、暗号文c生成部234は、i=1,...,Lの各整数iについて、暗号文ci.nを数162に示すように生成する。
【数162】
【0143】
また、暗号文c生成部234は、処理装置により、暗号文cT.nを数163に示すように生成する。
【数163】
【0144】
つまり、(S301)から(S306)において、暗号化装置200は、数164に示すEncアルゴリズムを実行して、暗号文ctを生成する。そして、(S307)で、暗号化装置200は生成した暗号文ctを復号装置300へ送信する。
【数164】
【0145】
図14に基づき、RKGアルゴリズムの処理について説明する。
(S401)から(S402)と、(S404)と、(S406)との処理は、実施の形態1と同じである。
【0146】
(S403:乱数生成ステップ)
乱数生成部331は、処理装置により、乱数を数165に示すように生成する。
【数165】
【0147】
(S405:復号鍵k*rk生成ステップ)
復号鍵k*rk生成部333は、処理装置により、復号鍵k*rk0.nを数166に示すように生成する。
【数166】
【0148】
また、復号鍵k*rk生成部333は、属性集合Γに含まれる各整数tについて、復号鍵k*rkt.nを数167に示すように生成する。
【数167】
【0149】
つまり、(S401)から(S405)において、復号装置300は、数168に示すRKGアルゴリズムを実行して、再暗号化鍵rkΓ,S’を生成する。そして、(S406)で、復号装置300は生成した再暗号化鍵rkΓ,S’を再暗号化装置400へ送信する。
【数168】
【0150】
図16に基づき、Dec1アルゴリズムの処理について説明する。
(S601)から(S604)と、(S606)から(S607)との処理は、実施の形態1と同じである。
【0151】
(S605:ペアリング演算ステップ)
ペアリング演算部550は、処理装置により、数169を計算して、セッション鍵Kを生成する。
【数169】
【0152】
つまり、(S601)から(S607)において、再暗号文復号装置500は、数170に示すDec1アルゴリズムを実行して、メッセージmを生成する。
【数170】
【0153】
以上のように、実施の形態2に係る暗号システム10は、暗号文ci.0の先頭2つの基底ベクトルにインデックスμ(n,−1)を設定し、復号鍵k*rkt.nの先頭2つの基底ベクトルにインデックスσ(1,n)を埋め込んだ。これにより、再暗号化する度に、異なる基底を用いず、同じ基底を用いて再暗号化することを可能にした。
その結果、再暗号化回数の上限値を設定する必要がなくなった。また、再暗号化回数の上限値によらず、公開パラメータのサイズを一定にすることができる。
【0154】
なお、インデックスを設定した部分については、内積した結果が0となればよい。そのため、上記説明では、先頭2つの基底ベクトルの2次元にインデックスを設定したが、これに限らず、3次元以上にインデックスを設定してもよい。また、インデックスとして設定する値についても上記説明のものに限らず、他の値であってもよい。
【0155】
実施の形態3.
実施の形態1では、CP−FPRE方式について説明した。実施の形態3では、鍵ポリシーのFPRE方式(Key−Policy FPRE,KP−FPRE)方式について説明する。
【0156】
実施の形態3では、実施の形態1と同じ部分については説明を省略し、実施の形態1と異なる部分について説明する。
【0157】
まず、KP−FPRE方式の基本構成について説明する。次に、このKP−FPRE方式を実現する暗号システム10の基本構成について説明する。そして、この実施の形態に係るKP−FPRE方式、及び、暗号システム10について詳細に説明する。
【0158】
KP−FPRE方式の構成を簡単に説明する。なお、KP(鍵ポリシー)とは、鍵にPolicyが埋め込まれること、つまりアクセスストラクチャが埋め込まれることを意味する。
【0159】
<第1−1.KP−FPRE方式の基本構成>
KP−FPRE方式は、Setup、KG、Enc、RKG、REnc、Dec1、Dec2の7つのアルゴリズムを備える。
(Setup)
Setupアルゴリズムは、セキュリティパラメータλと、属性のフォーマットn:=(d;n,...,n;w,...,w;z,...,z)と、再暗号化回数の上限値を示す値Qとを入力として、公開パラメータpkと、マスター鍵skとを出力する確率的アルゴリズムである。
(KG)
KGアルゴリズムは、アクセスストラクチャS=(M,ρ)と、公開パラメータpkと、マスター鍵skとを入力として、復号鍵skを出力する確率的アルゴリズムである。
(Enc)
Encアルゴリズムは、メッセージmと、属性集合Γ:={(t,x)|x∈Fnt,1≦t≦d}と、公開パラメータpkとを入力として、暗号文ctΓを出力する確率的アルゴリズムである。
(RKG)
RKGアルゴリズムは、復号鍵skと、属性集合Γ’:={(t,x’)|x’∈Fnt,1≦t≦d}と、公開パラメータpkとを入力として、再暗号化鍵rkS,Γ’を出力する確率的アルゴリズムである。
(REnc)
REncアルゴリズムは、暗号文ctΓと、再暗号化鍵rkS,Γ’と、公開パラメータpkとを入力として、再暗号文ctn+1Γ’を出力する確率的アルゴリズムである。
(Dec1)
Dec1アルゴリズムは、再暗号文ctΓ’と、復号鍵skS’と、公開パラメータpkとを入力として、メッセージm、又は、識別情報⊥を出力するアルゴリズムである。
(Dec2)
Dec2アルゴリズムは、暗号文ctΓ(ctΓ)と、復号鍵skと、公開パラメータpkとを入力として、メッセージm、又は、識別情報⊥を出力するアルゴリズムである。
【0160】
<第1−2.暗号システム10>
KP−FPRE方式のアルゴリズムを実行する暗号システム10について説明する。
図19は、KP−FPRE方式を実行する暗号システム10の構成図である。
暗号システム10は、図5に示す暗号システム10と同様に、鍵生成装置100、暗号化装置200、復号装置300(再暗号化鍵生成装置)、再暗号化装置400、再暗号文復号装置500(再暗号化鍵生成装置)を備える。
【0161】
鍵生成装置100は、セキュリティパラメータλと、属性のフォーマットn:=(d;n,...,n;w,...,w;z,...,z)と、値Qを入力としてSetupアルゴリズムを実行して、公開パラメータpkとマスター鍵skとを生成する。
そして、鍵生成装置100は、公開パラメータpkを公開する。また、鍵生成装置100は、アクセスストラクチャSを入力としてKGアルゴリズムを実行して、復号鍵skを生成して復号装置300へ秘密裏に送信する。また、鍵生成装置100は、アクセスストラクチャS’を入力としてKGアルゴリズムを実行して、復号鍵skS’を生成して再暗号文復号装置500へ秘密裏に送信する。
【0162】
暗号化装置200は、メッセージmと、属性集合Γと、公開パラメータpkとを入力としてEncアルゴリズムを実行して、暗号文ctΓを生成する。暗号化装置200は、暗号文ctΓを再暗号化装置400へ送信する。
【0163】
復号装置300は、公開パラメータpkと、復号鍵skと、属性集合Γ’と、値nとを入力としてRKGアルゴリズムを実行して、再暗号化鍵rkS,Γ’を生成する。復号装置300は、再暗号化鍵rkS,Γ’を再暗号化装置400に秘密裏に送信する。
また、復号装置300は、公開パラメータpkと、復号鍵skと、暗号文ctΓ(ctΓ)とを入力としてDec2アルゴリズムを実行して、メッセージm又は識別情報⊥を出力する。
【0164】
再暗号化装置400は、公開パラメータpkと、再暗号化鍵rkS,Γ’と、暗号文ctΓとを入力として、REncアルゴリズムを実行して、再暗号文ctn+1Γ’を生成する。再暗号化装置400は、再暗号文ctn+1Γ’を再暗号文復号装置500へ送信する。
【0165】
再暗号文復号装置500は、公開パラメータpkと、復号鍵skS’と、再暗号文rctn+1Γ’とを入力として、Dec1アルゴリズムを実行して、メッセージm又は識別情報⊥を出力する。
【0166】
<第1−4.KP−FPRE方式及び暗号システム10の詳細>
図20から図30に基づき、KP−FPRE方式、及び、KP−FPRE方式を実行する暗号システム10の機能と動作とについて説明する。
図20は、鍵生成装置100の機能を示す機能ブロック図である。図21は、暗号化装置200の機能を示す機能ブロック図である。図22は、復号装置300の機能を示す機能ブロック図である。図23は、再暗号化装置400の機能を示す機能ブロック図である。図24は、再暗号文復号装置500の機能を示す機能ブロック図である。
図25は、鍵生成装置100の動作を示すフローチャートであり、KGアルゴリズムの処理を示すフローチャートである。図26は、暗号化装置200の動作を示すフローチャートであり、Encアルゴリズムの処理を示すフローチャートである。図27は、復号装置300の動作を示すフローチャートであり、RKGアルゴリズムの処理を示すフローチャートである。図28は、再暗号化装置400の動作を示すフローチャートであり、REncアルゴリズムの処理を示すフローチャートである。図29は、再暗号文復号装置500の動作を示すフローチャートであり、Dec1アルゴリズムの処理を示すフローチャートである。図30は、復号装置300の動作を示すフローチャートであり、Dec2アルゴリズムの処理を示すフローチャートである。
【0167】
鍵生成装置100の機能と動作とについて説明する。
図20に示すように、鍵生成装置100は、マスター鍵生成部110、マスター鍵記憶部120、情報入力部130、復号鍵生成部140、鍵送信部150(鍵出力部)を備える。また、復号鍵生成部140は、乱数生成部141、復号鍵k生成部142、fベクトル生成部143、sベクトル生成部144を備える。
【0168】
Setupアルゴリズムの処理は、実施の形態1で説明したSetupアルゴリズムの処理と基本的に同じであるため、説明を省略する。但し、基底B^、基底B^、基底B、基底Bに含める基底ベクトルが実施の形態1とは異なる。
【0169】
鍵生成装置100は、数171に示すSetupアルゴリズムを実行して、公開パラメータpkとマスター鍵skとを生成する。
【数171】
【0170】
図25に基づき、KGアルゴリズムの処理について説明する。
(S901:情報入力ステップ)
情報入力部130は、入力装置により、アクセスストラクチャS:=(M,ρ)を入力する。なお、アクセスストラクチャSの行列Mは、実現したいシステムの条件に応じて設定されるものである。また、アクセスストラクチャSのρは、例えば、復号鍵skの使用者の属性情報が設定されている。ここで、ρ(i)=(t,v:=(vi.1,...,vi.nt)∈Fnt\{0})(vi,nt≠0)である。
【0171】
(S902:fベクトル生成ステップ)
fベクトル生成部143は、処理装置により、ベクトルfを数172に示すように生成する。
【数172】
【0172】
(S903:sベクトル生成ステップ)
sベクトル生成部144は、処理装置により、ベクトルs→T:=(s,...,sを数173に示すように生成する。
【数173】
また、sベクトル生成部144は、処理装置により、値sを数174に示すように生成する。
【数174】
【0173】
(S904:乱数生成ステップ)
乱数生成部141は、処理装置により、乱数を数175に示すように生成する。
【数175】
【0174】
(S905:復号鍵k生成ステップ)
復号鍵k生成部142は、処理装置により、j=0,...,Qの各整数jについて、復号鍵k0.jを数176に示すように生成する。
【数176】
【0175】
また、復号鍵k生成部142は、処理装置により、i=1,...,Lの各整数iとj=0,...,Qの各整数jとについて、復号鍵ki.jを数177に示すように生成する。
【数177】
【0176】
(S906:鍵送信ステップ)
鍵送信部150は、アクセスストラクチャSと、復号鍵k0.j,ki.jとを要素とする復号鍵skを、例えば通信装置によりネットワークを介して秘密裡に復号装置300へ送信する。もちろん、復号鍵skは、他の方法により復号装置300へ送信されてもよい。
【0177】
つまり、(S901)から(S905)において、鍵生成装置100は、数178に示すKGアルゴリズムを実行して、復号鍵skを生成する。そして、(S906)で、鍵生成装置100は、生成した復号鍵skを復号装置300へ送信する。
【数178】
【0178】
なお、鍵生成装置100は、(S901)において、復号鍵skS’の使用者の属性情報が設定されたアクセスストラクチャS’:=(M’,ρ’)を入力して、KGアルゴリズムを実行して、復号鍵skS’を生成する。そして、復号鍵skS’:=(S’,k’,k’)を再暗号文復号装置500へ送信する。ここで、ρ’(i)=(t,v→’:=(v’i.1,...,v’i.nt)∈Fnt\{0})(v’i,nt≠0)である。
【0179】
暗号化装置200の機能と動作とについて説明する。
図21に示すように、暗号化装置200は、公開パラメータ受信部210、情報入力部220、暗号化部230、暗号文送信部240(暗号文出力部)を備える。また、暗号化部230は、乱数生成部233、暗号文c生成部234を備える。
【0180】
図26に基づき、Encアルゴリズムの処理について説明する。
(S1001:公開パラメータ受信ステップ)
公開パラメータ受信部210は、例えば、通信装置によりネットワークを介して、鍵生成装置100が生成した公開パラメータpkを受信する。
【0181】
(S1002:情報入力ステップ)
情報入力部220は、入力装置により、属性集合Γ:={(t,x:=(xt.1,...,xt.nt∈Fqnt))|1≦t≦d}を入力する。なお、tは、1以上d以下の全ての整数ではなく、1以上d以下の少なくとも一部の整数であってもよい。また、属性集合Γは、例えば、復号可能なユーザの属性情報が設定されている。
また、情報入力部220は、入力装置により、復号装置300へ送信するメッセージmを入力する。
また、情報入力部220は、入力装置により、再暗号化回数nを入力する。ここで入力される再暗号化回数nは、通常であれば0となり、後述するRKGアルゴリズムでEncアルゴリズムを呼び出した場合には、RKGアルゴリズムで指定された値となる。
【0182】
(S1003:乱数生成ステップ)
乱数生成部233は、処理装置により、乱数を数179に示すように生成する。
【数179】
【0183】
(S1004:暗号文c生成ステップ)
暗号文c生成部234は、処理装置により、暗号文c0.nを数180に示すように生成する。
【数180】
【0184】
また、暗号文c生成部234は、処理装置により、属性情報Γに含まれる各整数tについて、暗号文ct.nを数181に示すように生成する。
【数181】
【0185】
また、暗号文c生成部234は、処理装置により、暗号文cT.nを数182に示すように生成する。
【数182】
【0186】
(S1005:暗号文送信ステップ)
暗号文送信部240は、属性集合Γと、暗号文c0.n,ct.n,cT.nとを要素とする暗号文ctΓを、例えば通信装置によりネットワークを介して復号装置300へ送信する。もちろん、暗号文ctΓは、他の方法により復号装置300へ送信されてもよい。
【0187】
つまり、(S1001)から(S1004)において、暗号化装置200は、数183に示すEncアルゴリズムを実行して、暗号文ctΓを生成する。そして、(S1005)で、暗号化装置200は生成した暗号文ctΓを復号装置300へ送信する。
【数183】
【0188】
復号装置300の機能と動作とについて説明する。
図22に示すように、復号装置300は、復号鍵受信部310、情報入力部320、再暗号化鍵生成部330、再暗号化鍵送信部340(再暗号化鍵出力部)、暗号文受信部350、スパンプログラム計算部360、補完係数計算部370、ペアリング演算部380、メッセージ計算部390を備える。また、再暗号化鍵生成部330は、乱数生成部331、暗号化部332、復号鍵k*rk生成部333を備える。
【0189】
ここでは、図27に基づき、RKGアルゴリズムの処理について説明する。Dec2アルゴリズムについては後述する。
【0190】
(S1101:復号鍵受信ステップ)
復号鍵受信部310は、例えば、通信装置によりネットワークを介して、鍵生成装置100から送信された復号鍵skを受信する。また、復号鍵受信部310は、鍵生成装置100が生成した公開パラメータpkを受信する。
【0191】
(S1102:情報入力ステップ)
情報入力部320は、入力装置により、属性集合Γ’:={(t,x’:=(x’t.1,...,x’t.nt∈Fnt\{0}))|1≦t≦d}を入力する。なお、tは、1以上d以下の全ての整数ではなく、1以上d以下の少なくとも一部の整数であってもよい。また、属性集合Γ’は、例えば、再暗号文ctn+1Γ’を復号可能なユーザの属性情報が設定されている。
また、情報入力部320は、入力装置により、再暗号化回数nを入力する。ここで入力される再暗号化回数nは、何回再暗号化された暗号文を再暗号化するための再暗号化鍵を生成するかを示す。
【0192】
(S1103:乱数生成ステップ)
乱数生成部331は、処理装置により、乱数を数184に示すように生成する。
【数184】
【0193】
(S1104:乱数暗号化ステップ)
暗号化部332は、処理装置により、乱数rn+1(変換情報)を数185に示すように暗号化して、暗号文ct’n+1Γ’を生成する。ここで、関数En+1はFからGT.n+1へのエンコード関数である。
【数185】
【0194】
(S1105:復号鍵k*rk生成ステップ)
復号鍵k*rk生成部333は、処理装置により、復号鍵k*rk0.nを数186に示すように生成する。
【数186】
【0195】
また、復号鍵k*rk生成部333は、処理装置により、i=1,...,Lの各整数iについて、復号鍵k*rki.nを数187に示すように生成する。
【数187】
【0196】
(S1106:鍵送信ステップ)
再暗号化鍵送信部340は、アクセスストラクチャSと、属性集合Γ’と、復号鍵k*rk0.n,k*rki.nと、暗号文ct’n+1Γ’と、再暗号化回数n(ここでは、(S1102)で入力された値)とを要素とする再暗号化鍵rkS,Γ’を、例えば通信装置によりネットワークを介して秘密裡に再暗号化装置400へ送信する。もちろん、再暗号化鍵rkS,Γ’は、他の方法により再暗号化装置400へ送信されてもよい。
【0197】
つまり、(S1101)から(S1105)において、復号装置300は、数188に示すRKGアルゴリズムを実行して、再暗号化鍵rkS,Γ’を生成する。そして、(S1106)で、復号装置300は生成した再暗号化鍵rkS,Γ’を再暗号化装置400へ送信する。
【数188】
【0198】
再暗号化装置400の機能と動作とについて説明する。
図23に示すように、再暗号化装置400は、公開パラメータ受信部410、暗号文受信部420、再暗号化鍵受信部430、スパンプログラム計算部440、補間係数計算部450、ペアリング演算部460、再暗号文送信部470(再暗号文出力部)を備える。
【0199】
図28に基づき、REncアルゴリズムの処理について説明する。
(S1201:公開パラメータ受信ステップ)
公開パラメータ受信部410は、例えば、通信装置によりネットワークを介して、鍵生成装置100が生成した公開パラメータpkを受信する。
【0200】
(S1202:暗号文受信ステップ)
暗号文受信部420は、例えば、通信装置によりネットワークを介して、暗号化装置200が送信した暗号文ctΓ(ctΓ)を受信する。
【0201】
(S1203:再暗号化鍵受信ステップ)
再暗号化鍵受信部430は、例えば、通信装置によりネットワークを介して、復号装置300から送信された再暗号化鍵rkS,Γ’を受信する。
【0202】
(S1204:スパンプログラム計算ステップ)
スパンプログラム計算部440は、処理装置により、再暗号化鍵rkS,Γ’に含まれるアクセスストラクチャSが、暗号文ctΓに含まれるΓを受理するか否かを判定する。アクセスストラクチャSがΓを受理するか否かの判定方法は、実施の形態1における「第3.FPREを実現するための概念」で説明した通りである。
スパンプログラム計算部440は、アクセスストラクチャSがΓを受理する場合(S1204で受理)、処理を(S1205)へ進める。一方、アクセスストラクチャSがΓを拒絶する場合(S1204で拒絶)、処理を終了する。
【0203】
(S1205:補間係数計算ステップ)
補間係数計算部450は、処理装置により、数189となるIと、定数(補完係数){αi∈Iとを計算する。
【数189】
【0204】
(S1206:ペアリング演算ステップ)
ペアリング演算部460は、処理装置により、数190を計算して、セッション鍵Kを生成する。
【数190】
【0205】
(S1207:再暗号文送信ステップ)
再暗号文送信部470は、セッション鍵K’と、暗号文cT.nと、属性集合Γ’と、暗号文ct’n+1Γ’と、再暗号化回数n+1(ここでは、(S1202)で受信した暗号文ctΓに含まれる再暗号化回数n、あるいは、(S1203)で受信した再暗号化鍵rkS,Γ’に含まれる再暗号化回数nに1を加えた値)とを要素とする再暗号文ctn+1Γ’を、例えば通信装置によりネットワークを介して秘密裡に再暗号文復号装置500へ送信する。もちろん、再暗号文ctn+1Γ’は、他の方法により再暗号文復号装置500へ送信されてもよい。
【0206】
なお、ここでは、暗号化装置200が出力した暗号文ctΓを再暗号化する場合を想定して説明した。しかし、再暗号化装置400が出力した再暗号文ctn+1Γ’を、さらに再暗号化することも可能である。
この場合、(S1202)で暗号文受信部420は、暗号化装置200が出力した暗号文ctΓに代えて、再暗号化装置400が出力した再暗号文ctn+1Γ’を暗号文ctΓとして取得する。なお、暗号文ctn+1Γ’には、属性集合Γ’が要素として含まれているが、この属性集合Γ’を便宜的に属性集合Γと読み替える。また、暗号文ctn+1Γ’では、再暗号化回数がn+1となっているが、この再暗号化回数を便宜的にnと読み替える。
そして、(S1207)で再暗号文送信部470は、上記要素に加え、(S1202)で取得した暗号文ctΓに含まれていた要素(セッション鍵{K’j=1,...,n、及び、暗号文{cT.jj=0,...,n−1)を要素とする再暗号文ctn+1Γ’を再暗号文復号装置500へ送信する。
他の処理は、上述した通りである。
【0207】
つまり、(S1201)から(S1206)において、再暗号化装置400は、数191に示すREncアルゴリズムを実行して、再暗号文ctn+1Γ’を生成する。そして、(S1207)で、再暗号化装置400は生成した再暗号文ctn+1Γ’を再暗号文復号装置500へ送信する。
【数191】
【0208】
なお、(S1202)で受信した暗号文ctΓに含まれる再暗号化回数nと、(S1203)で受信した再暗号化鍵rkS,Γ’に含まれる再暗号化回数nとが不一致の場合、再暗号化することはできない。
【0209】
再暗号文復号装置500の機能と動作とについて説明する。
図24に示すように、再暗号文復号装置500は、復号鍵受信部510、暗号文受信部520、スパンプログラム計算部530、補完係数計算部540、ペアリング演算部550、乱数計算部560、メッセージ計算部570を備える。
【0210】
図29に基づき、Dec1アルゴリズムの処理について説明する。
(S1301:復号鍵受信ステップ)
復号鍵受信部510は、例えば、通信装置によりネットワークを介して、鍵生成装置100から送信された復号鍵skS’を受信する。また、復号鍵受信部310は、鍵生成装置100が生成した公開パラメータpkを受信する。
【0211】
(S1302:暗号文受信ステップ)
暗号文受信部520は、例えば、通信装置によりネットワークを介して、再暗号化装置400が送信した再暗号文ctΓ’を受信する。
なお、REncアルゴリズムでは、再暗号文ctn+1Γ’を出力するとしていたが、ここでは、再暗号文ctΓ’と表記を変更している。
【0212】
(S1303:スパンプログラム計算ステップ)
スパンプログラム計算部530は、処理装置により、復号鍵skS’に含まれるアクセスストラクチャS’が、再暗号文ctΓ’に含まれるΓ’を受理するか否かを判定する。アクセスストラクチャS’がΓ’を受理するか否かの判定方法は、実施の形態1における「第3.FPREを実現するための概念」で説明した通りである。
スパンプログラム計算部530は、アクセスストラクチャS’がΓ’を受理する場合(S1303で受理)、処理を(S1304)へ進める。一方、アクセスストラクチャS’がΓ’を拒絶する場合(S1303で拒絶)、処理を終了する。
【0213】
(S1304:補完係数計算ステップ)
補完係数計算部540は、処理装置により、数192となるIと、定数(補完係数){αi∈Iとを計算する。
【数192】
【0214】
(S1305:ペアリング演算ステップ)
ペアリング演算部550は、処理装置により、数193を計算して、セッション鍵K’を生成する。
【数193】
【0215】
(S1306)から(S1307)の処理は、図16に示す実施の形態1の(S606)から(S607)の処理と同じである。
【0216】
つまり、(S1301)から(S1307)において、再暗号文復号装置500は、数194に示すDec1アルゴリズムを実行して、メッセージmを生成する。
【数194】
【0217】
図30に基づき、Dec2アルゴリズムの処理について説明する。
(S1401:復号鍵受信ステップ)
復号鍵受信部310は、例えば、通信装置によりネットワークを介して、鍵生成装置100から送信された復号鍵skを受信する。また、復号鍵受信部310は、鍵生成装置100が生成した公開パラメータpkを受信する。
【0218】
(S1402:暗号文受信ステップ)
暗号文受信部350は、例えば、通信装置によりネットワークを介して、再暗号化装置400が送信した暗号文ctΓを受信する。
【0219】
(S1403:スパンプログラム計算ステップ)
スパンプログラム計算部360は、処理装置により、復号鍵skに含まれるアクセスストラクチャSが、暗号文ctΓに含まれるΓを受理するか否かを判定する。アクセスストラクチャSがΓを受理するか否かの判定方法は、実施の形態1における「第3.FPREを実現するための概念」で説明した通りである。
スパンプログラム計算部360は、アクセスストラクチャSがΓを受理する場合(S1403で受理)、処理を(S1404)へ進める。一方、アクセスストラクチャSがΓを拒絶する場合(S1403で拒絶)、処理を終了する。
【0220】
(S1404:補完係数計算ステップ)
補完係数計算部370は、処理装置により、数195となるIと、定数(補完係数){αi∈Iとを計算する。
【数195】
【0221】
(S1405:ペアリング演算ステップ)
ペアリング演算部380は、処理装置により、数196を計算して、セッション鍵Kを生成する。
【数196】
【0222】
(S1406:メッセージ計算ステップ)
メッセージ計算部390は、処理装置により、m=cT.0/Kを計算して、メッセージmを生成する。
【0223】
つまり、(S1401)から(S1406)において、復号装置300は、数197に示すDec2アルゴリズムを実行して、メッセージmを生成する。
【数197】
【0224】
以上のように、実施の形態3に係る暗号システム10は、KP−FPRE方式を実現する。そのため、1つの再暗号化鍵で、様々な種類のユーザの集合に暗号文を転送することができるようになる。
【0225】
なお、実施の形態2では、実施の形態1で説明したCP−FPRE方式に対して、インデックス付けの技法を用いた方式について説明した。そして、実施の形態2では、再暗号化回数の上限値をなくすとともに、再暗号化回数の上限値によらず公開パラメータのサイズを一定にしたCP−FPRE方式を実現した。
同様に、実施の形態3で説明したKP−FPRE方式に対しても、数198から数201に示すように、インデックス付けの技法を用いることができる。なお、RKGアルゴリズムとREncアルゴリズムとDec2アルゴリズムとは、処理の内容も上述したKP−FPRE方式と同じである。
これにより、再暗号化回数の上限値をなくすとともに、再暗号化回数の上限値によらず公開パラメータのサイズを一定にしたKP−FPRE方式を実現できる。
【数198】
【数199】
【数200】
【数201】
【0226】
実施の形態4.
以上の実施の形態では、双対ベクトル空間において暗号処理を実現する方法について説明した。実施の形態4では、双対加群において暗号処理を実現する方法について説明する。
【0227】
つまり、以上の実施の形態では、素数位数qの巡回群において暗号処理を実現した。しかし、合成数Mを用いて数202のように環Rを表した場合、環Rを係数とする加群においても、上記実施の形態で説明した暗号処理を適用することができる。
【数202】
【0228】
以上の実施の形態で説明したアルゴリズムにおけるFをRに変更すれば、双対加群における暗号処理を実現することができる。
【0229】
なお、以上の実施の形態では、FEによりメッセージを暗号化して宛先へ送信する場合を想定して、再暗号化装置400が暗号文を再暗号化して、暗号文の宛先を変更することについて説明した。
FEは、メッセージを暗号化して宛先へ送信する機能だけでなく、暗号文を復号することなく検索可能にする検索可能暗号を実現することも可能である。FEにより検索可能暗号を実現した場合に、以上の実施の形態で説明したアルゴリズムにより、設定された検索キーワードを変更することが可能である。
以上の実施の形態では、暗号文に設定する属性情報が復号可能なユーザを指定していた。そして、属性情報を変更することにより、暗号文の宛先を変更した。FEにより検索可能暗号を実現する場合、暗号文に設定する属性情報の一部が、検索可能なユーザを指定し、残りの属性情報の一部が、検索キーワードを指定する。そこで、以上の実施の形態で説明したアルゴリズムを利用して、属性情報のうち、検索キーワードを指定した部分を変更することにより、設定された検索キーワードを変更することが可能である。
【0230】
また、以上の実施の形態では、1台の鍵生成装置100が復号鍵を生成するとした。しかし、以上の実施の形態のアルゴリズムを、非特許文献5に記載された分散多管理者の方式と組み合わせて、複数の鍵生成装置100により1つの復号鍵が生成されるようにすることも可能である。
【0231】
また、以上の実施の形態では、属性のカテゴリを追加する場合(属性のフォーマットnにおけるdの値を増やす場合)、公開パラメータを再発行する必要があった。しかし、以上の実施の形態のアルゴリズムを、非特許文献6に記載されたUnboundedの方式と組み合わせて、公開パラメータを再発行することなく、属性のカテゴリを追加できるようにすることも可能である。
【0232】
また、以上の実施の形態では、内積暗号に用いるベクトルの長さをNとすると、公開パラメータやマスター秘密鍵のサイズはNに比例し、ユーザへ与える復号鍵の生成や暗号化の処理にNに比例する時間がかかる。しかし、以上の実施の形態のアルゴリズムを、非特許文献7に記載された方式と組み合わせて、公開パラメータやマスター秘密鍵のサイズを小さくするとともに、ユーザへ与える復号鍵の生成の処理や暗号化の処理にかかる時間を短くすることも可能である。
【0233】
また、以上の実施の形態では、鍵や暗号文を送信先の装置へ送信するとした。しかし、これに代えて、鍵や暗号文をCDやDVD等の記憶媒体に出力して、送信先の装置が記憶媒体を読み込むようにしてもよい。したがって、送信を出力、受信を取得と読み替えてもよい。
【0234】
なお、以上の実施の形態において、安全性の証明の観点から、i=1,...,Lの各整数iについてのρ(i)は、それぞれ異なる識別情報tについての肯定形の組(t,v)又は否定形の組¬(t,v)であると限定してもよい。
言い替えると、ρ(i)=(t,v)又はρ(i)=¬(t,v)である場合に、関数ρ~を、ρ~(i)=tである{1,...,L}→{1,...d}の写像であるとする。この場合、ρ~が単射であると限定してもよい。なお、ρ(i)は、上述したアクセスストラクチャS:=(M,ρ(i))のρ(i)である。
【0235】
図31は、実施の形態1〜4に示した暗号システム10の各装置(鍵生成装置100、暗号化装置200、復号装置300、再暗号化装置400、再暗号文復号装置500)のハードウェア構成の例を示す図である。
暗号システム10の各装置はコンピュータであり、暗号システム10の各装置の各要素をプログラムで実現することができる。
暗号システム10の各装置のハードウェア構成としては、バスに、演算装置901、外部記憶装置902、主記憶装置903、通信装置904、入出力装置905が接続されている。
【0236】
演算装置901は、プログラムを実行するCPU(Central Processing Unit)等である。外部記憶装置902は、例えばROM(Read Only Memory)やフラッシュメモリ、ハードディスク装置等である。主記憶装置903は、例えばRAM(Random Access Memory)等である。通信装置904は、例えば通信ボード等である。入出力装置905は、例えばマウス、キーボード、ディスプレイ装置等である。
【0237】
プログラムは、通常は外部記憶装置902に記憶されており、主記憶装置903にロードされた状態で、順次演算装置901に読み込まれ、実行される。
プログラムは、マスター鍵生成部110、マスター鍵記憶部120、情報入力部130、復号鍵生成部140、鍵送信部150、公開パラメータ受信部210、情報入力部220、暗号化部230、暗号文送信部240、復号鍵受信部310、情報入力部320、再暗号化鍵生成部330、再暗号化鍵送信部340、暗号文受信部350、スパンプログラム計算部360、補完係数計算部370、ペアリング演算部380、メッセージ計算部390、公開パラメータ受信部410、暗号文受信部420、再暗号化鍵受信部430、スパンプログラム計算部440、補間係数計算部450、ペアリング演算部460、再暗号文送信部470、復号鍵受信部510、暗号文受信部520、スパンプログラム計算部530、補完係数計算部540、ペアリング演算部550、乱数計算部560、メッセージ計算部570として説明している機能を実現するプログラムである。
更に、外部記憶装置902にはオペレーティングシステム(OS)も記憶されており、OSの少なくとも一部が主記憶装置903にロードされ、演算装置901はOSを実行しながら、上記プログラムを実行する。
また、実施の形態1〜5の説明において、「公開パラメータpk」、「マスター秘密鍵sk」、「復号鍵sk,skΓ」、「暗号文ctΓ,ct」、「再暗号化鍵rkΓ,S’,rkS,Γ’」、「再暗号文ctS’,ctΓ’」、「アクセスストラクチャS,S’」、「属性集合Γ,Γ」、「メッセージm」等として説明している情報やデータや信号値や変数値が主記憶装置903にファイルとして記憶されている。
【0238】
なお、図31の構成は、あくまでも暗号システム10の各装置のハードウェア構成の一例を示すものであり、暗号システム10の各装置のハードウェア構成は図31に記載の構成に限らず、他の構成であってもよい。
【符号の説明】
【0239】
10 暗号システム、100 鍵生成装置、110 マスター鍵生成部、120 マスター鍵記憶部、130 情報入力部、140 復号鍵生成部、141 乱数生成部、142 復号鍵k生成部、143 fベクトル生成部、144 sベクトル生成部、150 鍵送信部、200 暗号化装置、210 公開パラメータ受信部、220 情報入力部、230 暗号化部、231 fベクトル生成部、232 sベクトル生成部、233 乱数生成部、234 暗号文c生成部、240 暗号文送信部、300 復号装置、310 復号鍵受信部、320 情報入力部、330 再暗号化鍵生成部、331 乱数生成部、332 暗号化部、333 復号鍵k*rk生成部、340 再暗号化鍵送信部、350 暗号文受信部、360 スパンプログラム計算部、370 補完係数計算部、380 ペアリング演算部、390 メッセージ計算部、400 再暗号化装置、410 公開パラメータ受信部、420 暗号文受信部、430 再暗号化鍵受信部、440 スパンプログラム計算部、450 補間係数計算部、460 ペアリング演算部、470 再暗号文送信部、500 再暗号文復号装置、510 復号鍵受信部、520 暗号文受信部、530 スパンプログラム計算部、540 補完係数計算部、550 ペアリング演算部、560 乱数計算部、570 メッセージ計算部。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22
図23
図24
図25
図26
図27
図28
図29
図30
図31