以下、図面を参照して本発明の実施形態を説明する。
[第1実施形態]
まず、本発明の第1実施形態を説明する。
<構成>
図1に例示するように、本形態の鍵配送システム1は、端末装置12−1〜12−Nと鍵配送管理装置11とを有する。ただし、Nは3以上の整数である。端末装置12−1〜12−Nと鍵配送管理装置11とはインターネット等の安全ではない通信路を通じて通信可能に構成されている。
図2Aに例示するように、本形態の鍵配送管理装置11は、制御部110と配送処理部111,112と通信部118と記憶部119とを有する。図2Bに例示するように、本形態の端末装置12−hは、制御部120−hと処理部121−h〜124−hと通信部128−hと記憶部129−hとを有する。ただし、h∈[1,N]である。[1,N]は1以上N以下の整数からなる集合{1,・・・,N}を表す。各装置は、例えば、通信装置、CPU(central processing unit)等のプロセッサ(ハードウェア・プロセッサ)やRAM(random-access memory)・ROM(read-only memory)等のメモリ等を備える汎用または専用のコンピュータが所定のプログラムを実行することで構成される装置である。このコンピュータは1個のプロセッサやメモリを備えていてもよいし、複数個のプロセッサやメモリを備えていてもよい。このプログラムはコンピュータにインストールされてもよいし、予めROM等に記録されていてもよい。また、CPUのようにプログラムが読み込まれることで機能構成を実現する電子回路(circuitry)ではなく、プログラムを用いることなく処理機能を実現する電子回路を用いて一部またはすべての処理部が構成されてもよい。また、1個の装置を構成する電子回路が複数のCPUを含んでいてもよい。また、各装置は自らが備える制御部110,120−hの制御に基づいて各処理を実行する。各装置の各処理で得られたデータは、逐一、それぞれが備える記憶部119,129−hに格納され、必要に応じて読み出されて使用される。
<鍵配送処理>
以下、端末装置12−1〜12−Nからなる集合の部分集合(ユーザ集合)である端末装置12−σ(1)〜12−σ(n)がセッションを立ち上げ、共通鍵を共有する処理を説明する。ただし、nは2以上N以下の整数であり、{σ(1),・・・,σ(n)}⊂{1,・・・,N}であるとする。以降、記述を簡単にするために、一般性を失うことなく(σ(1),・・・,σ(n))=(1,・・・,n)と仮定することにする。
図3に例示するように、まず鍵配送管理装置11(図2A)の配送処理部111が、関数暗号方式に則り、端末装置12−iの識別情報Uiと有効時間区間(タイムフレーム)TFに属する時間time∈TFに対応する情報を含む情報V(Ui,time)に対応する秘密鍵uskiを生成し、各秘密鍵uskiを端末装置12−iに安全に配送する。ただし、i∈[1,n]である。「有効時間区間」は、所定の時間区間であり、所定の契機で更新される。秘密鍵uskiは、端末装置12−iの公開鍵で暗号化されてから配送されてもよいし、安全な通信路を通じて配送されてもよいし、可搬型記録媒体に格納されて配送されてもよい。秘密鍵uskiは端末装置12−i(図2B)で復号等によって取得され、記憶部129−iに安全に格納される。
「関数暗号方式」とは、「属性情報」と呼ばれる情報と「アクセス構造(または述語情報)」と呼ばれる情報との組み合わせが所定の論理式の真理値を「真」にする関係にある場合に暗号文が復号される方式である。関数暗号方式では、「属性情報」と「アクセス構造(または述語情報)」との一方の情報が秘密鍵に埋め込まれ、他方の情報が暗号文に埋め込まれる。秘密鍵に埋め込まれた「属性情報」または「アクセス構造(または述語情報)」と暗号文に埋め込まれた「アクセス構造(または述語情報)」または「属性情報」が上述の論理式の真理値を「真」にする関係にある場合、当該秘密鍵と暗号文とから復号結果が得られる。「関数暗号方式」は「関数型暗号方式」や「述語暗号方式」と呼ばれることもあり、例えば、参考文献1「T. Okamoto, K. Takashima, "Fully Secure Functional Encryption with General Relations from the Decisional Linear Assumption," Advances in Cryptology - CRYPTO 2010, Lecture Notes in Computer Science, 2010, Volume 6223/2010, 191-208」、参考文献2(J. Katz, A. Sahai, and B. Waters., "Predicate encryption supporting disjunctions, polynomial equations, and inner products," In EUROCRYPT, pp. 146-162, 2008.)、参考文献3(T. Okamoto and K. Takashima., "Hierarchical predicate encryption for inner-products," In ASIACRYPT, pp. 214-231, 2009.)等に具体的な方式が開示されている。ただし、本形態で使用可能な関数暗号方式はこれらの方式に限定されない。「情報V(Ui,time)」は、識別情報Uiと時間time∈timeに対応する情報からなる情報であってもよいし、識別情報Uiと時間time∈timeに対応する情報とその他の情報(公開パラメータやセッションID等)とからなる情報であってもよい。本形態では「情報V(Ui,time)」が「属性情報」である例を示す。「属性情報」や「アクセス構造(または述語情報)」の実装方法に限定はないが、例えば、「属性情報」や「述語情報」はベクトルまたはベクトルの集合として実装でき、「アクセス構造」は行列とその各行に対応するラベルとからなるラベル付き行列と写像(例えば、ベクトルを写す写像)とによって実装できる。例えば、「α1がη1である」という命題1と「α2がη2である」という命題2との論理和(α1=η1)∨(α2=η2)は(α1−η1)・(α2−η2)という多項式で表現できる。論理和(α1=η1)∨(α2=η2)が真である場合、(α1−η1)・(α2−η2)=0となり、論理和(α1=η1)∨(α2=η2)が偽である場合、(α1−η1)・(α2−η2)≠0となる。すなわち、論理和(α1=η1)∨(α2=η2)が真であることと、(α1−η1)・(α2−η2)=0となることとは等価である。また、「α1がη1である」という命題1と「α2がη2である」という命題2との論理積(α1=η1)∧(α2=η2)はι1・(α1−η1)+ι2・(α2−η2)という多項式で表現できる。ただし、ι1及びι2は乱数である。論理積(α1=η1)∧(α2=η2)が真である場合、ι1・(α1−η1)+ι2・(α2−η2)=0になり、論理積(α1=η1)∧(α2=η2)が偽である場合、ι1・(x1−η1)+ι2・(α2−η2)≠0となる。すなわち、論理積(α1=η1)∧(α2=η2)が真であることと、ι1・(α1−η1)+ι2・(α2−η2)=0となることとは等価である。このように、論理式は多項式によって表現することができる。また、論理式を表現する多項式は2つのベクトルの内積で表現できる。すなわち、論理式を表現する多項式は、各項の不定元成分と1とを各要素とするベクトルと、各項の係数成分を各要素とするベクトルとの内積に等しい。そのため、ベクトルまたはベクトルの集合を用いて「属性情報」や「述語情報」を実装でき、論理式の真理値が真であることを内積が0であることに置き換えることができる。同様にこのようなベクトル集合に対応する写像とラベル付き行列と用いて「アクセス構造」を実装できる。なお、time∈TFは、例えば、TF={tmin,・・・,tmax}とすれば、(time=tmin)∨・・・∨(time=tmax)のような論理和で表現できる(ステップS101)。
次に、鍵配送管理装置11および端末装置12−1〜12−nが協力して共有情報Cを生成する。この際、各端末装置12−iの端末秘密値xiが用いられる。例えば、Gを位数pの乗法巡回群とし、g∈Gを群Gの生成元とし、xi∈Zpとし、鍵配送管理装置11および端末装置12−1〜12−nが協力してC:=gx1・x2・...・xnを生成する。ただし、「α:=β」はαがβを表すこと(αをβと定義すること)を意味する。上付き添え字の「xi」は「xi」を表す。集合X={x1,・・・,xn}についてgx1・x2・...・xnをgΠXと表記する。Xが空集合の場合にはΠX=1となる。共有情報Cは、鍵配送管理装置11(図2A)の記憶部119に格納され、共有情報Cの生成に用いられた端末秘密値xiは各端末装置12−i(図2B)の記憶部129−iに安全に格納される(ステップS102)。
鍵配送管理装置11(図2A)の配送処理部111は、第1シード値K1を生成し、関数暗号方式に則って第1シード値K1を暗号化し、端末装置12−iの識別情報Uiと有効時間区間TFに属する時間に対応する情報を含む情報に対応する秘密鍵uskiで復号可能な暗号文CT’iを生成し、暗号文CT’i(ただし、i∈[1,n])と共有情報Cとを出力する。この暗号文CT’iは、秘密鍵uskiに対応する識別情報Uiおよび時間timeが論理式Pi:=(ID=Ui)∧(time∈TF)を真にする場合に、当該秘密鍵uskiを用いて復号可能となる暗号文である。なお、第1シード値K1は記憶部119に格納される(ステップS103)。
暗号文CT’iと共有情報Cは通信部118に送られ、通信部118はこれらを端末装置12−i(ただし、i∈[1,n])に送信する(ステップS104)。暗号文CT’iと共有情報Cは、各端末装置12−i(ただし、i∈[1,n])の通信部128−iに入力され、記憶部129−iに格納される。各処理部121−iは、記憶部129−iから秘密鍵uskiと暗号文CT’iとを読み込み、入力された秘密鍵uskiを用い、関数暗号方式に則って、入力された暗号文CT’iを復号して第1シード値K1を生成し、第1シード値K1を記憶部129−iに格納する(ステップS105)。
各端末装置12−iの処理部122−iは、記憶部129−iから共有情報Cと端末秘密値xiを読み込み、入力された共有情報Cと端末秘密値xiの逆元1/xiとに応じた秘匿化共有情報SCiを生成し、秘匿化共有情報SCiを出力する。例えば、処理部122−iは、SCi:=C1/xiを生成する(ステップS106)。秘匿化共有情報SCiは、通信部128−iに送られ、信部128−iは秘匿化共有情報SCiを鍵配送管理装置11に送信する(ステップS107)。
秘匿化共有情報SCi(ただし、i∈[1,n])は、鍵配送管理装置11(図2A)の通信部118に入力され、記憶部119に格納される。配送処理部112は、管理秘密値xsを生成して記憶部119に格納する(ステップS108)。配送処理部112は、記憶部119から秘匿化共有情報SCi(共有情報Cが秘匿化された秘匿化共有情報SCi)と管理秘密値xsを読み込み、入力された秘匿化共有情報SCiと管理秘密値xsとに応じた第2シード値の秘匿化情報SK2,iを生成し、第2シード値の秘匿化情報SK2,iを出力する。例えば、xs∈Zpとし、配送処理部112は、SK2,i:=SCi xs=C(1/xi)・xsを生成する。ただし、上付き添え字の「xs」は「xs」を表す。第2シード値の秘匿化情報SK2,iは通信部118に送られ、通信部118は第2シード値の秘匿化情報SK2,i(ただし、i∈[1,n])を端末装置12−iに送信する(ステップS109)。
第2シード値の秘匿化情報SK2,i(ただし、i∈[1,n])は、端末装置12−i(図2B)の通信部128−iに入力され、記憶部129−iに格納される。各処理部123−i(ただし、i∈[1,n])は、記憶部129−iから第2シード値の秘匿化情報SK2,iと端末秘密値xiとを読み込み、入力された第2シード値の秘匿化情報SK2,iと端末秘密値xiとに応じた第2シード値K2を生成して出力する。例えば、処理部123−iは、K2:=SK2,i xi=C(1/xi)・xs・xi=Cxsを生成する。第2シード値K2は記憶部129−iに格納される(ステップS109)。
各処理部124−i(ただし、i∈[1,n])は、記憶部129−iから第1シード値K1および第2シード値K2を読み込み、第1シード値K1を含む情報と第2シード値K2を含む情報とに対応する共通鍵Kを得て出力する。これにより、端末装置12−1〜12−nで共通鍵Kを共有できる。なお、第1シード値K1を含む情報は、第1シード値K1のみからなる情報であってもよいし、第1シード値K1とその他の情報(公開パラメータやセッションID等)とからなる情報であってもよい。同様に、第2シード値K2を含む情報は、第2シード値K2のみからなる情報であってもよいし、第2シード値K2とその他の情報(公開パラメータやセッションID等)とからなる情報であってもよい。また共通鍵Kは、第1シード値K1を含む情報と第2シード値K2を含む情報とから一義的に決まる。安全性の観点から、共通鍵Kは、第1シード値K1に関する情報および第2シード値K2に関する情報が隠蔽された情報であることが望ましい。言い換えると、共通鍵Kから第1シード値K1に関する情報も第2シード値K2に関する情報も漏洩しないことが望ましい。これにより、攻撃者に共通鍵Kが漏洩した場合であっても、第1シード値K1または第2シード値K2の一方を更新し、それらに応じた共通鍵Kに更新するだけで、当該攻撃者からの攻撃を防ぐことができる(ステップS110)。
<端末装置追加処理>
端末装置12−1〜12−nからなるユーザ集合に新たな端末装置12−(n+1)を追加し、共通鍵Kを更新する処理を説明する。一般性を失うことなく、新たな端末装置を端末装置12−(n+1)とすることができる。
図4に例示するように、まず、鍵配送管理装置11(図2A)の配送処理部111が、関数暗号方式に則り、端末装置12−(n+1)の識別情報Un+1と有効時間区間TFに属する時間time∈TFに対応する情報を含む情報V(n+1,time)に対応する秘密鍵uskn+1を生成し、秘密鍵uskn+1を端末装置12−(n+1)に安全に配送する。秘密鍵uskn+1は端末装置12−(n+1)(図2B)の記憶部129−(n+1)に安全に格納される(ステップS111)。
次に配送処理部111は、記憶部119から第1シード値K1を読み込み、関数暗号方式に則って第1シード値K1を暗号化し、端末装置12−(n+1)の識別情報Un+1と有効時間区間TFに属する時間に対応する情報を含む情報に対応する秘密鍵uskn+1で復号可能な暗号文CT’n+1を生成し、記憶部119に格納する。暗号文CT’n+1は、秘密鍵uskn+1に対応する識別情報Un+1および時間timeが論理式Pn+1=(ID=Un+1)∧(time∈TF)を真にする場合に、当該秘密鍵uskn+1を用いて復号可能となる暗号文である(ステップS113)。
配送処理部112は、新たな管理秘密値x’sを生成し、記憶部119に格納する。配送処理部112は、記憶部119から共有情報Cと新たな管理秘密値x’sとを読み込み、入力された共有情報Cと新たな管理秘密値x’sとに応じた新たな共有情報C’を生成し、記憶部119に格納する。例えば、x’s∈Zpとし、配送処理部112は、C’:=Cx’sを生成する。ただし、上付き添え字の「x’s」は「x’s」を表す(ステップS114)。
暗号文CT’n+1、新たな共有情報C’、および秘匿化共有情報SCi(ただし、i∈[1,n])が記憶部119から読み出されて通信部118に送られる。通信部118は、これらを端末装置12−(n+1)に送信する(ステップS115)。
暗号文CT’n+1、新たな共有情報C’、および秘匿化共有情報SCi(ただし、i∈[1,n])は、端末装置12−(n+1)(図2B)の通信部128−(n+1)に入力され、記憶部129−(n+1)に格納される。処理部121−(n+1)は、記憶部129−(n+1)から暗号文CT’n+1と秘密鍵uskn+1とを読み込み、入力された秘密鍵uskn+1を用い、関数暗号方式に則って、入力された暗号文CT’n+1を復号して第1シード値K1を生成して出力する。第1シード値K1は記憶部129−(n+1)に格納される(ステップS116)。
処理部122−(n+1)は、端末秘密値xn+1を生成して記憶部129−(n+1)に格納する。処理部122−(n+1)は、記憶部129−(n+1)から秘匿化共有情報SCi(ただし、i∈[1,n])と端末秘密値xn+1とを読み込み、入力された秘匿化共有情報SCiと端末秘密値xn+1とに応じた新たな秘匿化共有情報SC’i(ただし、i∈[1,n])を生成して記憶部129−(n+1)に格納する。例えば、xn+1∈Zpとし、処理部122−(n+1)は、SC’i:=SCi xn+1=C(1/xi)・xn+1を生成する。ただし、上付き添え字の「xn+1」は「xn+1」を表す。新たな秘匿化共有情報SC’iは記憶部129−(n+1)から読み出されて通信部128−(n+1)に送られ、通信部128−(n+1)は、新たな秘匿化共有情報SC’i(ただし、i∈[1,n])を鍵配送管理装置11に送信する(ステップS118)。
処理部123−(n+1)は、記憶部129−(n+1)から新たな共有情報C’と端末秘密値xn+1とを読み込み、入力された新たな共有情報C’と端末秘密値xn+1とに応じた新たな第2シード値K’2を生成して出力する。例えば、処理部123−(n+1)は、K’2:=C’xn+1=Cx’s・xn+1を生成する。ただし、上付き添え字の「x’s・xn+1」は「x’s・xn+1」を表す。新たな第2シード値K’2は記憶部129−(n+1)に格納される(ステップS119)。
新たな秘匿化共有情報SC’i(ただし、i∈[1,n])は、鍵配送管理装置11(図2A)の通信部118に入力され、記憶部119に格納される。配送処理部112は、記憶部119から新たな秘匿化共有情報SC’iと新たな管理秘密値x’sとを読み込み、入力された新たな秘匿化共有情報SC’iと新たな管理秘密値x’sとに応じた新たな第2シード値の秘匿化情報SK’2,i(ただし、i∈[1,n])を生成し、記憶部119に格納する。例えば、配送処理部112は、SK’2,i:=SC’i x’s=C(1/xi)・xn+1・x’sを生成する。新たな第2シード値の秘匿化情報SK’2,iが記憶部119から読み出されて通信部118に送られる。通信部118は、新たな第2シード値の秘匿化情報SK’2,iを端末装置12−i(ただし、i∈[1,n])に送信する(ステップS120)。
新たな第2シード値の秘匿化情報SK’2,iは、端末装置12−i(図2B)の通信部128−iに入力され、記憶部129−iに格納される。処理部123−iは、記憶部129−iから、新たな第2シード値の秘匿化情報SK’2,iと端末秘密値xiとを読み込み、入力された新たな第2シード値の秘匿化情報SK’2,iと端末秘密値xiとに応じた新たな第2シード値K’2を生成して記憶部129−iに格納する。例えば、処理部123−iは、K’2:=SK’2,i xi=Cx’s・xn+1を生成する。新たな第2シード値K’2は記憶部129−(n+1)に格納される(ステップS121)。
端末装置12−i(ただし、i∈[1,n])の処理部124−iは、記憶部129−iから第1シード値K1および新たな第2シード値K’2を読み込み、K1を含む情報とK’2を含む情報とに対応する共通鍵K’を生成して出力する。同様に、端末装置12−(n+1)の124−(n+1)は、記憶部129−(n+1)から第1シード値K1および新たな第2シード値K’2を読み込み、K2:=K’2とし、K1を含む情報とK2を含む情報とに対応する共通鍵K’を生成して出力する(ステップS122)。
<有効期間更新処理>
端末装置12−1〜12−nからなるユーザ集合で共通鍵Kを共有した後、有効時間区間を更新する処理を説明する。
図5Aに例示するように、まず鍵配送管理装置11(図2A)の配送処理部111が、関数暗号方式に則り、端末装置12−iの識別情報Uiと新たな有効時間区間TF’に属する時間time’∈TF’に対応する情報を含む情報V(i,time’)に対応する秘密鍵usk’iを生成し、各秘密鍵usk’iを端末装置12−iに安全に配送する。秘密鍵usk’iは端末装置12−i(図2B)の記憶部129−iに安全に格納される(ステップS130)。
鍵配送管理装置11(図2A)の配送処理部111は、新たな第1シード値K’1を生成し、関数暗号方式に則って新たな第1シード値K’1を暗号化し、端末装置12−iの識別情報Uiと新たな有効時間区間TF’に属する時間に対応する情報を含む情報に対応する秘密鍵usk’iで復号可能な新たな暗号文CT”iを生成し、新たな暗号文CT”i(ただし、i∈[1,n])を出力する。この暗号文CT”iは、秘密鍵usk’iに対応する識別情報Uiおよび時間time’が論理式Pi:=(ID=Ui)∧(time’∈TF’)を真にする場合に、当該秘密鍵usk’iを用いて復号可能となる暗号文である(ステップS131)。
暗号文CT”iは通信部118に送られ、通信部118はこれらを端末装置12−i(ただし、i∈[1,n])に送信する(ステップS132)。暗号文CT”iは、各端末装置12−i(ただし、i∈[1,n])の通信部128−iに入力され、記憶部129−iに格納される。各処理部121−iは、記憶部129−iから秘密鍵usk’iと暗号文CT”iを読み込み、入力された秘密鍵usk’iを用い、関数暗号方式に則って、入力された暗号文CT”iを復号して新たな第1シード値K’1を生成し、新たな第1シード値K’1を記憶部129−iに格納する(ステップS133)。
端末装置12−i(ただし、i∈[1,n])の処理部124−iは、記憶部129−iから新たな第1シード値K’1および第2シード値K2を読み込み、K1:=K’1とし、K1を含む情報とK2を含む情報とに対応する共通鍵K”を生成して出力する(ステップS134)。
<端末装置削除処理>
共通鍵Kを共有した端末装置12−1〜12−nからなるユーザ集合から端末装置12−jを削除し、端末装置12−i(ただし、i∈[1,n]\j)で新たな共通鍵を共有する処理を説明する。i∈[1,n]\jは、集合[1,n]からjを除いた補集合を表す。
図5Bに例示するように、まず配送処理部112は、新たな管理秘密値x”sを生成して記憶部119に格納する(ステップS135)。配送処理部112は、記憶部119から秘匿化共有情報SCi(共有情報Cが秘匿化された秘匿化共有情報SCi)と新たな管理秘密値x”sとを読み込み、入力された秘匿化共有情報SCiと新たな管理秘密値x”sとに応じた新たな第2シード値の秘匿化情報SK”2,iを生成し、新たな第2シード値の秘匿化情報SK”2,iを出力する(ただし、i∈[1,n]\j)。例えば、x”s∈Zpとし、配送処理部112は、SK”2,i:=SCi x”s=C(1/xi)・x”sを生成する。新たな第2シード値の秘匿化情報SK”2,iは通信部118に送られ、通信部118は新たな第2シード値の秘匿化情報SK”2,iを端末装置12−i(ただし、i∈[1,n]\j)に送信する(ステップS136)。
新たな第2シード値の秘匿化情報SK”2,iは、端末装置12−i(ただし、i∈[1,n]\j)(図2B)の通信部128−iに入力され、記憶部129−iに格納される。各処理部123−i(ただし、i∈[1,n]\j)は、記憶部129−iから新たな第2シード値の秘匿化情報SK”2,iと端末秘密値xiとを読み込み、入力された新たな第2シード値の秘匿化情報SK”2,iと端末秘密値xiとに応じた新たな第2シード値K”2を生成して出力する。例えば、処理部123−iは、K”2:=SK”2,i xi=C(1/xi)・x”s・xi=Cx”sを生成する。第2シード値K”2は記憶部129−i(ただし、i∈[1,n]\j)に格納される(ステップS137)。
端末装置12−i(ただし、i∈[1,n]\j)の処理部124−iは、記憶部129−iから第1シード値K1および新たな第2シード値K”2を読み込み、K2:=K”2とし、K1を含む情報とK2を含む情報とに対応する共通鍵K”’を生成して出力する(ステップS138)。
<本形態の特徴>
本形態の鍵配送処理では、鍵配送管理装置11が、関数暗号方式に則って、端末装置12−iの識別情報Uiと有効時間区間TFに属する時間time∈TFに対応する情報を含む情報V(Ui,time)に対応する秘密鍵uskiで復号可能なように第1シード値K1を暗号化し、それによって得られた暗号文CT’iを各端末装置12−i(ただし、i∈[1,n])に送信する。各端末装置12−iは、安全に格納しておいた秘密鍵uskiを用いて暗号文CT’iを復号して第1シード値K1を得る。秘密鍵uskiを知らない通信路上の攻撃者は暗号文CT’iを復号できないため第1シード値K1を得ることができない。これにより、通信路上の成り済ましによる共通鍵Kの改ざんを防止できる。また、秘密鍵uskiは有効時間区間TFに属する時間timeだけではなく、各端末装置12−iの識別情報Uiにも対応するため、他の端末装置に成り済ますことも防止できる。他の端末装置の成り済ましの問題がないのであれば、秘密鍵uskiが有効時間区間TFに属する時間timeに対応し、識別情報Uiに対応しないものであってもよい。
また、秘密鍵uskiは有効時間区間TFに属する時間で生成された暗号文CT’iのみを復号でき、有効時間区間TF以外の時間で生成された暗号文を復号できない。そのため、端末装置12−iの紛失等によって秘密鍵uskiが漏洩した場合であっても、有効時間区間を更新することで秘密鍵を無効化できる。
さらに、本形態では鍵配送管理装置11が端末装置12−i(ただし、i∈[1,n])の間の通信を中継する。各端末装置12−iはユニキャストによって鍵配送管理装置11にデータを送信し、端末装置12−i同士は直接通信を行わない。ブロードキャストのように計算・通信コストが端末装置数に依存する処理は、鍵配送管理装置11のみによって行われる。これにより、端末装置数によらず、各端末装置12−iの計算・通信コストを一定にできる。
本形態の共通鍵Kは、第1シード値K1を含む情報と第2シード値K2を含む情報とに対応する。ここで、第1シード値K1の配信には比較的計算コストが大きな関数暗号方式を利用する必要があるが、第2シード値K2の配信には関数暗号方式を用いる必要がない。そのため、有効時間区間TF内であれば、関数暗号方式を利用することなく共通鍵Kを更新できる。例えば、有効時間区間TF内であれば、関数暗号方式を利用することなく、端末装置追加処理や端末装置削除処理を実行して共通鍵Kを更新できる。これにより、できるだけ小さな計算コストで、端末装置追加処理で新たに追加された端末装置が追加前に共有されていた共有鍵を取得することを防止したり、端末装置削除処理で削除された端末装置が取得できない共通鍵へ更新をしたりすることができる。
なお、秘密鍵を格納するデバイスとして例えば参考文献4(Java Card API and Export File for Card Specification v2.2.1 (org. global platform) v1.6, http://www.safenet-inc.jp/data-encryption/hardware-security-modules-hsms/luna-hsms-key-management/luna-sa-network-hsm/)に開示された装置が利用可能である。
その他、鍵配送管理装置11と端末装置12−h(ただし、h∈[1,N])との通信時に、送信側の装置が一般的な存在的偽造不可能性を満たす電子署名を生成して送信情報に添付し、受信側の装置が電子署名の検証を行い、検証に成功した場合にのみ処理を継続してもよい。これにより、通信路上での改ざんに対する耐性が向上する。存在的偽造不可能性を満たす電子署名は、例えば、参考文献5(Mihir Bellare, Phillip Rogaway: Random Oracles are Practical: A Paradigm for Designing Efficient Protocols. ACM Conference on Computer and Communications Security 1993: 62-73)に開示されている。
[第2実施形態]
次に、本発明の第2実施形態を説明する。なお、第1実施形態と共通する事項については第1実施形態と同じ参照記号を用い、説明を省略する。
<準備>
ある集合Setについて、Setから要素ωをランダムに選ぶことをω∈RSetと表記する。あるアルゴリズムALGについて、入力xと乱数r(確定的アルゴリズムの場合は、乱数は空)に対してALGがyを出力することをy←ALG(x;r)またはALG(x;r)→yと表記する。「|Φ|」は値Φのビット長を表す。集合X={x1,・・・,xn}についてgx1・x2・...・xnをgΠXと表記する。Xが空集合の場合にはΠX=1となる。ただし、Gを位数pの乗法巡回群とし、g∈Gを群Gの生成元とする。
F={Fκ:Domκ×FSκ→Rngκ}κを、セキュリティパラメータκ上で定められた定義域{Domκ}κ、鍵空間{FSκ}κ、値域{Rngκ}κを持つ関数族とする。この時、もし多項式時間の識別者Dに対して、Fκと真性ランダム関数RFκ:Domκ→Rngκが見分けられなければ、F={Fκ}κを擬似ランダム関数族と呼ぶ。
公開鍵暗号アルゴリズムを(EGen,Enc,Dec)とする。鍵生成アルゴリズムEGenはκを入力とし、暗号化鍵ekと復号鍵dkを出力する。暗号化アルゴリズムEncは暗号化鍵ekと平文mを入力とし、暗号文CTを出力する。復号アルゴリズムDecは復号鍵dkと暗号文CTを入力とし、平文mを出力する。
電子署名アルゴリズムを(SGen,Sign,Ver)とする。鍵生成アルゴリズムSGenはκを入力とし、検証鍵vkと署名鍵skを出力する。署名生成アルゴリズムSignは署名鍵skと文書Mを入力とし、署名σを出力する。署名検証アルゴリズムVerは検証鍵vk、文書Mと署名σを入力とし、検証結果(検証成功/検証失敗)を出力する。
関数暗号アルゴリズムを(Setup,Der,FEnc,FDec)とする。セットアップアルゴリズムSetupはκを入力とし、マスタ秘密鍵mskと公開パラメータParamsを出力する。鍵導出アルゴリズムDerは公開パラメータParams、マスタ秘密鍵mskと属性情報Vを入力とし、秘密鍵uskを出力する。暗号化アルゴリズムFEncは公開パラメータParams、論理式Pに対応するアクセス構造と平文mを入力とし、暗号文CTを出力する。復号アルゴリズムFDecはユーザ秘密鍵uskと暗号文CTを入力とし、属性情報Vが論理式Pを真にする(論理式Pに対応するアクセス構造が属性情報を受け入れる)ならば平文mを出力する。
関数tPRF:{0,1}κ×FSκ×{0,1}κ×FSκ→Zpを「ねじれ擬似ランダム関数(例えば「Atsushi Fujioka, Koutarou Suzuki, Keita Xagawa, Kazuki Yoneyama: Strongly Secure Authenticated Key Exchange from Factoring, Codes, and Lattices. IACR Cryptology ePrint Archive 2012: 211 (2012),http://eprint.iacr.org/2012/211」等参照)と呼び、擬似ランダム関数Fκを用いてtPRF(a,b,a’,b’):=Fκ(a,b)(+)Fκ(a’,b’)と定義する。ただし、a,a’∈{0,1}κであり、b’,b’∈FSκである。{0,1}κはκビット列を表し、「α(+)β」はαとβとの排他的論理和を表す。
<構成>
図1に例示するように、本形態の鍵配送システム2は、端末装置22−1〜22−Nと鍵配送管理装置21とを有する。ただし、Nは3以上の整数である。端末装置22−1〜22−Nと鍵配送管理装置21とはインターネット等の安全ではない通信路を通じて通信可能に構成されている。
図6に例示するように、本形態の鍵配送管理装置21は、制御部210と秘密鍵生成部2101と秘密鍵暗号化部2102と署名生成部2103と署名検証部2104と第1シード値生成部2111(第1,6配送処理部)と第1シード値暗号化部2112(第1,6配送処理部)と管理秘密値生成部2121(第2〜5配送処理部)と第2シード値秘匿化情報生成部2122(第2〜5配送処理部)と通信部218と記憶部219とを有する。
図7に例示するように、本形態の端末装置22−hは、制御部220−hと秘密鍵復号部2201−hと端末秘密値生成部2202−hと公開情報生成部2203−hと署名生成部2204−hと署名検証部2205−hと第1シード値復号部221−h(第1処理部)と秘匿化共有情報生成部222−h(第2,6処理部)と第2シード値生成部223−h(第3,5,7処理部)と共通鍵生成部224−h(第4処理部)と通信部228−hと記憶部229−hとを有する。ただし、h∈[1,N]である。
各装置は、例えば、上述のようなコンピュータが所定のプログラムを実行することで構成される装置であってもよいし、プログラムを用いることなく処理機能を実現する電子回路を用いて一部またはすべての処理部が構成されてもよい。また、各装置は自らが備える制御部210,220−hの制御に基づいて各処理を実行する。各装置の各処理で得られたデータは、逐一、それぞれが備える記憶部219,229−hに格納され、必要に応じて読み出されて使用される。
<システムセットアップ>
鍵配送管理装置21(図6)の制御部210は、関数暗号のセットアップアルゴリズムSetupにより、公開パラメータParamsとマスタ秘密鍵mskを生成する。また制御部210は、公開鍵暗号の鍵生成アルゴリズムEGenにより、暗号化鍵eksと復号鍵dksを生成し、電子署名の鍵生成アルゴリズムSGenにより、検証鍵vksと署名鍵sksを生成する。各端末装置22−h(図7)の制御部220−hは、公開鍵暗号の鍵生成アルゴリズムEGenにより、暗号化鍵ekhと復号鍵dkhを生成し、電子署名の鍵生成アルゴリズムSGenにより、検証鍵vkhと署名鍵skhを生成する。また制御部220−hは、秘密ストリング(sth,st’h)をそれぞれsth∈FSκ、st’h∈{0,1}κとして生成する。また、鍵配送管理装置21の識別情報Sおよび各端末装置22−hの識別情報Uhが設定される。
S、U1,・・・,UN、Paramsは、鍵配送管理装置21の記憶部219および各端末装置22−hの記憶部229−h(ただし、h∈[1,N])に格納される。鍵配送管理装置21の記憶部219には、さらにmsk、sks、ek1,・・・,ekN、vk1,・・・,vkNが格納される。各端末装置22−hの記憶部229−hには、さらにdkh、skh、sth、st’h、eks、vksが格納される。
<鍵配送処理>
以下、端末装置22−1〜22−Nからなる集合の部分集合(ユーザ集合)である端末装置22−σ(1)〜22−σ(n)がセッションを立ち上げ、共通鍵を共有する処理を説明する。ただし、nは2以上N以下の整数であり、{σ(1),・・・,σ(n)}⊂{1,・・・,N}であるとする。以降、記述を簡単にするために、一般性を失うことなく(σ(1),・・・,σ(n))=(1,・・・,n)と仮定することにする。セッションには、固有のセッション識別情報sidが付され、sidは鍵配送管理装置21の記憶部219および各端末装置22−iの記憶部229−i(ただし、i∈[1,n])に格納される。セッション識別情報sidは例えば、鍵配送管理装置21によって付される。
≪関数暗号方式に則った秘密鍵の配送≫
そのセッションが有効時間区間(タイムフレーム)TFにおける最初のセッションであった場合、関数暗号方式に則った秘密鍵の配送が行われる。この場合、図8に例示するように、まず鍵配送管理装置21(図6)の秘密鍵生成部2101が、記憶部219からParams、mskを読み込み、関数暗号方式に則り、端末装置22−iの識別情報Uiと有効時間区間TFに属する時間time∈TFに対応する情報を含む属性情報Vi:=V(Ui,time)に対応する秘密鍵uski:=Der(Params,msk,Vi)(ただし、i∈[1,n])を生成して出力する。秘密鍵uskiは記憶部219に格納される(ステップS2011)。秘密鍵暗号化部2102は、記憶部219から秘密鍵uskiおよび暗号化鍵ekiを読み込み、暗号化鍵ekiを用いて秘密鍵uskiを暗号化し、暗号文CTi←Enceki(uski)を生成して出力する。ただし、下付き添え字の「eki」は「eki」を表す(ステップS2012)。暗号文CTi(ただし、i∈[1,n])は通信部218に送られ、通信部218は暗号文CTiを端末装置22−iに送信する。各暗号文CTiは端末装置22−i(図7)の通信部228−iに入力され、記憶部229−iに格納される(ステップS2013)。秘密鍵復号部2201−iは、記憶部229−iから復号鍵dkiおよび暗号文CTiを読み込み、復号鍵dkiを用いて暗号文CTiを復号して秘密鍵uski←Decdki(CTi)を生成して出力する。ただし、下付き添え字の「dki」は「dki」を表す。秘密鍵uskiは、端末装置22−iの記憶部229−iに安全に格納される(ステップS2014)。なお、セッションが有効時間区間TFにおける最初のセッションでない場合には、ステップS2011からS2014の処理が省略されてもよい。
≪共有情報の生成≫
次に、鍵配送管理装置21および端末装置22−1〜22−nが協力して共有情報C=gΠ{xi|i∈[1,n]}を生成する。図9に例示するように、まず端末装置22−1(図7)の端末秘密値生成部2202−1は、記憶部229−1からst1とst’1を読み込み、r1∈R{0,1}κとr’1∈RFSκを生成し、端末秘密値x1←tPRF(r1,st1,st’1,r’1)を生成して出力する。端末秘密値x1は記憶部229−1に格納される(ステップS2022−1)。
公開情報生成部2203−1は、記憶部229−1から端末秘密値x1を読み込んでgx1∈Gを生成する。署名生成部2203−1は、記憶部229−1から署名鍵sk1および識別情報S,U1,・・・,Unを読み込み、署名σ1←Sigsk1(U1,(U1,・・・,Un),S,g,gx1)を生成する。(U1,gx1,σ1)は通信部228−1に送られ、通信部228−1は(U1,gx1,σ1)を鍵配送管理装置21に送信する(ステップS2023−1)。
その後、w∈[1,n−1]について、鍵配送管理装置21と端末装置22−iとの間で次のように通信を行う。ただし、w∈[1,n−1]の範囲では、実行する順序が前後してもかまわない。
端末装置22−iから送信された(Ui,gΠ{xk|k∈[1,i]},σi)は、鍵配送管理装置21(図6)の通信部218に入力され、記憶部219に格納される。署名検証部2104は、記憶部219から検証鍵vkiおよび署名σiを読み込み、検証鍵vkiを用い、署名σiをVervki((Ui,(U1,・・・,Un),S,gΠ{xk|k∈[1,i−1]},gΠ{xk|k∈[1,i]}),σi)として検証する。ただし、i=1でのgΠ{xk|k∈[1,i−1]}は公開情報gΠ{xk|k∈[1,0]}:=gであり、i∈[2,n−1]でのgΠ{xk|k∈[1,i−1]}は既に端末装置22−(i−1)から受け取っているものとする(ステップS2024−i)。ここで、署名σiが正当でない(検証失敗)と判断された場合、セッションを終了する。一方、署名σiが正当である(検証成功)と判断された場合、(Ui,gΠ{xk|k∈[1,i]})が通信部218に送られ、通信部218は(Ui,gΠ{xk|k∈[1,i]})を端末装置22−(i+1)に送信する(ステップS2021−(i+1))。(Ui,gΠ{xk|k∈[1,i]})は、端末装置22−(i+1)(図7)の通信部228−(i+1)に入力され、記憶部229−(i+1)に格納される。端末装置22−(i+1)の端末秘密値生成部2202−(i+1)は、記憶部229−(i+1)からsti+1とst’i+1を読み込み、ri+1∈R{0,1}κとr’i+1∈RFSκを生成し、端末秘密値xi+1←tPRF(ri+1,sti+1,st’i+1,r’i+1)を生成して出力する。端末秘密値xi+1は記憶部229−(i+1)に格納される(ステップS2022−(i+1))。公開情報生成部2203−(i+1)は、記憶部229−(i+1)から端末秘密値xi+1およびgΠ{xk|k∈[1,i]}を読み込み、gΠ{xk|k∈[1,i+1]}:=gΠ{xk|k∈[1,i]}・xi+1∈Gを生成する。gΠ{xk|k∈[1,i+1]}は記憶部229−(i+1)に格納される。署名生成部2204−(i+1)は、記憶部229−(i+1)から署名鍵ski+1および識別情報S,U1,・・・,Unを読み込み、署名σi+1←Sigski+1(Ui+1,(U1,・・・,Un),S,gΠ{xk|k∈[1,i]},gΠ{xk|k∈[1,i+1]})を生成する。ただし、下付き添え字の「ski+1」は「ski+1」を表す。(Ui+1,gΠ{xk|k∈[1,i+1]},σi+1)は通信部228−(i+1)に送られ、通信部228−(i+1)は(Ui+1,gΠ{xk|k∈[1,i+1]},σi+1)を鍵配送管理装置21に送信する(ステップS2023−(i+1))。
上記の処理の結果、最後のステップS2023−nでは、共有情報C=gΠ{xi|i∈[1,n]}=gΠ{xk|k∈[1,n]}を含む(Un,gΠ{xk|k∈[1,n]},σn)が鍵配送管理装置21に送信される。(Un,gΠ{xk|k∈[1,n]},σn)は、鍵配送管理装置21(図6)の通信部218に入力され、記憶部219に格納される。署名検証部2104は、記憶部219から検証鍵vkn、識別情報U1,・・・,Un,S、および署名σnを読み込み、検証鍵vknを用い、署名σnをVervki((Un,(U1,・・・,Un),S,gΠ{xk|k∈[1,n−1]},gΠ{xk|k∈[1,n]}),σi)として検証する(ステップS2024−n)。ここで、署名σnが正当でないと判断された場合、セッションを終了する。一方、署名σnが正当であると判断された場合、シード値の共有処理に移る。
≪シード値の共有処理≫
図10に例示するように、シード値の共有処理では、まず鍵配送管理装置21(図6)の第1シード値生成部2111が第1シード値K1∈RFSκを生成し、記憶部219に格納する(ステップS2031)。次に、第1シード値暗号化部2112が記憶部219からParamsおよび第1シード値K1を読み込み、関数暗号方式に則って第1シード値K1を暗号化し、端末装置22−iの識別情報Uiと有効時間区間TFに属する時間timeに対応する情報を含む属性情報Pi:=(ID=Ui)∧(time∈TF)に対応する秘密鍵で復号可能な暗号文CT’i←FEnc(Params,Pi,K1)を生成して記憶部219に格納する(ステップS2032)。署名生成部2103は、記憶部219から署名鍵sks、識別情報S、U1,・・・,Un、共有情報C=gΠ{xk|k∈[1,n]}、暗号文CT’wを読み込み、w∈[1,n−1]について署名σsw←Sigsks(S,(U1,・・・,Un),S,gΠ{xk|k∈[1,n]},CT’w)を生成する。また、nについて署名σsn←Sigsks(S,(U1,・・・,Un),S,CT’n)を生成する。w∈[1,n−1]について(Uw,gΠ{xk|k∈[1,n]},CT’w,σsw)が通信部218に送られ、通信部218は(Uw,gΠ{xk|k∈[1,n]},CT’w,σsw)を端末装置22−wに送信する。(Uw,gΠ{xk|k∈[1,n]},CT’w,σsw)は端末装置22−wの通信部228−wに入力され、記憶部229−wに格納される。nについて(Un,CT’n,σsn)が通信部218に送られ、通信部218は(Un,CT’n,σsn)を端末装置22−nに送信する。(Un,CT’n,σsn)は端末装置22−nの通信部228−nに入力され、記憶部229−nに格納される。なお、記憶部229−nには、前述のステップS2023−nの過程で既にgΠ{xk|k∈[1,n]}が格納されている(ステップS2031)。
端末装置22−w(ただし、w∈[1,n−1])の署名検証部2205−wは、記憶部229−wから検証鍵vks、識別情報S、U1,・・・,Un、共有情報C=gΠ{xk|k∈[1,n]}、暗号文CT’w、および署名σswを読み込み、検証鍵vksを用い、署名σswをVervks((S,(U1,・・・,Un),S,gΠ{xk|k∈[1,n]},CT’w),σsw)として検証する(ステップS2051−w)。ここで、署名σswが正当でないと判断された場合、セッションを終了する。一方、署名σswが正当であると判断された場合、ステップS2052−wの処理に進む。端末装置22−nの署名検証部2205−nは、記憶部から検証鍵vks、識別情報S、U1,・・・,Un、暗号文CT’nを読み込み、検証鍵vksを用い、署名σsiをVervks((S,(U1,・・・,Un),S,CT’n),σsn)として検証する(ステップS2051−n)。ここで、署名σsnが正当でないと判断された場合、セッションを終了する。一方、署名σsnが正当であると判断された場合、ステップS2052−nの処理に進む。
ステップS2052−i(ただし、i∈[1,n])では、端末装置22−i(図7)の第1シード値復号部221−iが、記憶部229−iから秘密鍵uskiおよび暗号文CT’iを読み込み、秘密鍵uskiを用い、関数暗号方式に則って暗号文CT’iをK1←FDecuski(CT’i,Pi)として復号して第1シード値K1を生成して出力する。第1シード値K1は記憶部229−iに格納される(ステップS2052−i)。
次に、秘匿化共有情報生成部222−i(ただし、i∈[1,n])は、記憶部229−iから共有情報C=gΠ{xk|k∈[1,n]}および端末秘密値xiを読み込み、共有情報Cと端末秘密値の逆元1/xiとに応じた秘匿化共有情報gΠ{xk|k∈[1,n]∧k≠i}:=gΠ{xk|k∈[1,n]}/xiを生成して出力する。秘匿化共有情報gΠ{xk|k∈[1,n]∧k≠i}は記憶部229−iに格納される(ステップS206−i)。
署名生成部2204−iは、記憶部229−iから、署名鍵ski、識別情報S,U1,・・・,Un、秘匿化共有情報gΠ{xk|k∈[1,n]∧k≠i}を読み込み、署名σ’i←Sigski(Ui,(U1,・・・,Un),S,gΠ{xk|k∈[1,n]∧k≠i})を生成する。(Ui,gΠ{xk|k∈[1,n]∧k≠i},σ’i)は通信部228−iに送られ、通信部228−iは(Ui,gΠ{xk|k∈[1,n]∧k≠i},σ’i)を鍵配送管理装置21に送信する(ステップS207−i)。
図11に例示するように、各端末装置22−i(ただし、i∈[1,n])から送信された(Ui,gΠ{xk|k∈[1,n]∧k≠i},σ’i)は、鍵配送管理装置21の通信部218に入力され、記憶部219に格納される。署名検証部2104は、記憶部219から検証鍵vki、識別情報U1,・・・,Un,S、秘匿化共有情報gΠ{xk|k∈[1,n]∧k≠i}、および署名σ’iを読み込み、検証鍵vkiを用い、署名σ’iをVervki((Ui,(U1,・・・,Un),S,gΠ{xk|k∈[1,n]∧k≠i}),σ’i)として検証する(ステップS2081)。ここで、何れかの署名σ’iが正当でないと判断された場合、セッションを終了する。一方、すべての署名σ’iが正当であると判断された場合、管理秘密値生成部2121が管理秘密値xs∈RZpを生成して記憶部219に格納する(ステップS2082)。第2シード値秘匿化共有情報部2122は、記憶部219から秘匿化共有情報gΠ{xk|k∈[1,n]∧k≠i}および管理秘密値xsを読み込み、秘匿化共有情報gΠ{xk|k∈[1,n]∧k≠i}と管理秘密値xsとに応じた第2シード値の秘匿化情報gΠ{xk|k∈[1,n]∧k≠i}・xs(ただし、i∈[1,n])を生成する。第2シード値の秘匿化情報gΠ{xk|k∈[1,n]∧k≠i}・xsは記憶部219に格納される(ステップS2091)。署名生成部2103は、記憶部219から署名鍵sks、識別情報S、U1,・・・,Un、および第2シード値の秘匿化情報gΠ{xk|k∈[1,n]∧k≠i}・xsを読み込み、i∈[1,n]について署名σ’si←Sigsks(S,(U1,・・・,Un),S,gΠ{xk|k∈[1,n]∧k≠i}・xs)を生成する。(Ui,gΠ{xk|k∈[1,n]∧k≠i}・xs,σ’si)は通信部218に送られ、通信部218は、(Ui,gΠ{xk|k∈[1,n]∧k≠i}・xs,σ’si)を端末装置22−iに送信する。(Ui,gΠ{xk|k∈[1,n]∧k≠i}・xs,σ’si)は、端末装置22−i(図7)の通信部228−iに入力され、記憶部229−iに格納される(ステップS2092)。
端末装置22−i(ただし、i∈[1,n])の署名検証部2205−iは、記憶部229−iから検証鍵vks、識別情報S、U1,・・・,Un、gΠ{xk|k∈[1,n]∧k≠i}・xs、および署名σ’siを読み込み、検証鍵vksを用い、署名σ’siをVervks((S,(U1,・・・,Un),S,gΠ{xk|k∈[1,n]∧k≠i}・xs),σ’si)として検証する(ステップS2101−i)。ここで、署名σ’siが正当でないと判断された場合、セッションを終了する。一方、署名σ’siが正当であると判断された場合、第2シード値生成部223−iが、記憶部229−iから第2シード値の秘匿化情報gΠ{xk|k∈[1,n]∧k≠i}・xsおよび端末秘密値xiを読み込み、第2シード値の秘匿化情報gΠ{xk|k∈[1,n]∧k≠i}・xsと端末秘密値xiとに応じた第2シード値K2:=gΠ{xk|k∈[1,n]∧k≠i}・xs・xi=gΠ{xk|k∈[1,n]}・xsを生成して出力する。第2シード値K2は記憶部229−iに格納される(ステップS2102−i)。
共通鍵生成部224−i(ただし、i∈[1,n])は、記憶部229−iから、セッション識別情報sid、第1シード値K1、および第2シード値K2を読み込み、擬似ランダム関数Fκを用い、第1シード値K1を含む情報と第2シード値K2を含む情報とに対応する共通鍵K=Fκ(sid,K1)(+)Fκ(sid,K2)を生成して出力する。このように生成された共通鍵Kは、第1シード値K1に関する情報および第2シード値K2に関する情報が隠蔽された情報となる(ステップS211)。
<端末装置追加処理>
端末装置22−1〜22−nにより既に確立されたセッションに、新たな端末装置22−(n+1)を追加し、共通鍵Kを更新する処理を説明する。本形態でも、一般性を失うことなく、新たな端末装置を端末装置22−(n+1)とすることができる。
上述した確立されたセッションでの有効時間区間が終了し、端末装置22−1〜22−nにとって新たな有効時間区間TFでセッションを行うことになる場合、前述した関数暗号方式に則った秘密鍵uski(ただし、i∈[1,n])の配送が行われる(図8:ステップS2011〜S2014)。この処理は既に説明したため、ここでの説明を省略する。
同様に、新たな端末装置22−(n+1)にとって新たな有効時間区間TFでセッションを行うことになる場合、端末装置22−(n+1)に対し、関数暗号方式に則った秘密鍵の配送uskn+1が行われる。この場合、図12に例示するように、まず鍵配送管理装置21(図6)の秘密鍵生成部2101が、記憶部219からParams、mskを読み込み、関数暗号方式に則り、端末装置22−iの識別情報Un+1と有効時間区間TFに属する時間time∈TFに対応する情報を含む属性情報Vi:=V(Un+1,time)に対応する秘密鍵uskn+1:=Der(Params,msk,Vn+1)を生成して出力する。秘密鍵uskn+1は記憶部219に格納される(ステップS2015)。秘密鍵暗号化部2102は、記憶部219から秘密鍵uskn+1および暗号化鍵ekn+1を読み込み、暗号化鍵ekn+1を用いて秘密鍵uskn+1を暗号化し、暗号文CTn+1←Encekn+1(uskn+1)を生成して出力する。ただし、下付き添え字の「ekn+1」は「ekn+1」を表す(ステップS2016)。暗号文CTn+1は通信部218に送られ、通信部218は暗号文CTn+1を端末装置22−(n+1)に送信する。暗号文CTn+1は端末装置22−(n+1)(図7)の通信部228−(n+1)に入力され、記憶部229−(n+1)に格納される(ステップS2017)。秘密鍵復号部2201−(n+1)は、記憶部229−(n+1)から復号鍵dkn+1および暗号文CTn+1を読み込み、復号鍵dkn+1を用いて暗号文CTn+1を復号して秘密鍵uskn+1←Decdkn+1(CTn+1)を生成して出力する。ただし、下付き添え字の「dki+1」は「dkn+1」を表す。秘密鍵uskn+1は、端末装置22−(n+1)の記憶部229−(n+1)に安全に格納される(ステップS2018)。なお、端末装置22−(n+1)にとって新たな有効時間区間TFでセッションを行うことにならない場合には、ステップS2015からS2017の処理が省略されてもよい。
新たな有効時間区間TFでセッションを行うことになる場合、鍵配送管理装置21(図6)の第1シード値生成部2111が新たな第1シード値K’1∈RFSκを生成し、K1:=K’1として記憶部219に格納し(ステップS2016)、ステップS2133に進む。そうでない場合、ステップS2016を行うことなく、ステップS2133に進む。
ステップS2133では、第1シード値暗号化部2112が記憶部219からParamsおよび第1シード値K1を読み込み、関数暗号方式に則って第1シード値K1を暗号化し、端末装置の識別情報Un+1と有効時間区間TFに属する時間timeに対応する情報を含む属性情報Pn+1:=(ID=Un+1)∧(time∈TF)に対応する秘密鍵で復号可能な暗号文CT’n+1←FEnc(Params,Pn+1,K1)を生成して記憶部219に格納する(ステップS2133)。管理秘密値生成部2121が新たな管理秘密値x’s∈RZpを生成して記憶部219に格納する(ステップS2141)。第2シード値秘匿化共有情報部2122は、記憶部219から共有情報gΠ{xk|k∈[1,n]}および新たな管理秘密値x’sを読み込み、共有情報gΠ{xk|k∈[1,n]}と新たな管理秘密値x’sとに応じた新たな共有情報gΠ{xk|k∈[1,n]}・x’sを生成して出力する。新たな共有情報gΠ{xk|k∈[1,n]}・x’sは記憶部211に格納される(ステップS2142)。署名生成部2103は、記憶部219から、署名鍵sks、識別情報S、U1,・・・,Un+1、新たな共有情報gΠ{xk|k∈[1,n]}・x’s、秘匿化共有情報{gΠ{xk|k∈[1,n]∧k≠i}}i∈[1,n]、および暗号文CT’n+1を読み込み、署名σsn+1←Sigsks(S,(U1,・・・,Un+1),S,gΠ{xk|k∈[1,n]}・x’s,{gΠ{xk|k∈[1,n]∧k≠i}}i∈[1,n],CT’n+1)を生成する。(Un+1,gΠ{xk|k∈[1,n]}・x’s,{gΠ{xk|k∈[1,n]∧k≠i}}i∈[1,n],CT’n+1,σsn+1)は通信部218に送られ、通信部218は、(Un+1,gΠ{xk|k∈[1,n]}・x’s,{gΠ{xk|k∈[1,n]∧k≠i}}i∈[1,n],CT’n+1,σsn+1)を端末装置22−(n+1)に送信する。(Un+1,gΠ{xk|k∈[1,n]}・x’s,{gΠ{xk|k∈[1,n]∧k≠i}}i∈[1,n],CT’n+1,σsn+1)は、端末装置22−(n+1)(図7)の通信部228−(n+1)に入力され、記憶部229−(n+1)に格納される(ステップS215)。
端末装置22−(n+1)の署名検証部2205−(n+1)は、記憶部229−(n+1)から検証鍵vks、識別情報S、U1,・・・,Un+1、gΠ{xk|k∈[1,n]}・x’s,{gΠ{xk|k∈[1,n]∧k≠i}}i∈[1,n]、暗号文CT’n+1、および署名σsn+1を読み込み、検証鍵vksを用い、署名σsn+1をVervks((S,(U1,・・・,Un+1),S,gΠ{xk|k∈[1,n]}・x’s,{gΠ{xk|k∈[1,n]∧k≠i}}i∈[1,n],CT’n+1),σsn+1)として検証する(ステップS2161)。ここで、署名σsn+1が正当でないと判断された場合、セッションを終了する。一方、署名σsn+1が正当であると判断された場合、端末装置22−i(図7)の第1シード値復号部221−(n+1)が、記憶部229−(n+1)から秘密鍵uskn+1および暗号文CT’n+1を読み込み、秘密鍵uskn+1を用い、関数暗号方式に則って暗号文CT’n+1をK1←FDecuskn+1(CT’n+1,Pn+1)として復号して第1シード値K1を生成して出力する。第1シード値K1は記憶部229−(n+1)に格納される(ステップ2162)。
端末秘密値生成部2202−(n+1)は、記憶部229−(n+1)からstn+1とst’n+1を読み込み、rn+1∈R{0,1}κとr’n+1∈RFSκを生成し、端末秘密値xn+1←tPRF(rn+1,stn+1,st’n+1,r’n+1)を生成して出力する。端末秘密値xn+1は記憶部229−(n+1)に格納される(ステップS2171)。秘匿化共有情報生成部222−(n+1)は、記憶部229−(n+1)から秘匿化共有情報{gΠ{xk|k∈[1,n]∧k≠i}}i∈[1,n]と端末秘密値xn+1とを読み込み、i∈[1,n]について、秘匿化共有情報gΠ{xk|k∈[1,n]∧k≠i}と端末秘密値xn+1とに応じた新たな秘匿化共有情報gΠ{xk|k∈[1,n+1]∧k≠i}:=gΠ{xk|k∈[1,n]∧k≠i}・xn+1を生成して出力する。新たな秘匿化共有情報{gΠ{xk|k∈[1,n+1]∧k≠i}}i∈[1,n]は記憶部22−(n+1)に格納される(ステップS2172)。
署名生成部2204−(n+1)は、記憶部229−(n+1)から、署名鍵skn+1、識別情報S,U1,・・・,Un+1、新たな秘匿化共有情報{gΠ{xk|k∈[1,n+1]∧k≠i}}i∈[1,n]を読み込み、署名σn+1←Sigskn+1(Un+1,(U1,・・・,Un+1),S,{gΠ{xk|k∈[1,n+1]∧k≠i}}i∈[1,n])を生成する。(Un+1,{gΠ{xk|k∈[1,n+1]∧k≠i}}i∈[1,n],σn+1)は通信部228−(n+1)に送られ、通信部228−(n+1)は(Un+1,{gΠ{xk|k∈[1,n+1]∧k≠i}}i∈[1,n],σn+1)を鍵配送管理装置21に送信する(ステップS218)。
第2シード値生成部223−(n+1)は、記憶部229−(n+1)から新たな共有情報gΠ{xk|k∈[1,n]}・x’sおよび端末秘密値xn+1を読み込み、新たな共有情報gΠ{xk|k∈[1,n]}・x’sと端末秘密値xn+1とに応じた新たな第2シード値K’2:=gΠ{xk|k∈[1,n]}・x’s・xn+1=gΠ{xk|k∈[1,n+1]}・x’sを生成して出力する。新たな第2シード値K’2は記憶部229−(n+1)に格納される(ステップS219)。共通鍵生成部224−(n+1)は、記憶部229−(n+1)から、セッション識別情報sid、第1シード値K1、および新たな第2シード値K’2を読み込み、擬似ランダム関数Fκを用い、第1シード値K1を含む情報と新たな第2シード値K’2を含む情報とに対応する共通鍵K’=Fκ(sid,K1)(+)Fκ(sid,K’2)を生成して出力する(ステップS222−(n+1))。
図14に例示するように、端末装置22−(n+1)から送信された(Un+1,{gΠ{xk|k∈[1,n+1]∧k≠i}}i∈[1,n],σn+1)は、鍵配送管理装置21の通信部218に入力され、記憶部219に格納される。署名検証部2104は、記憶部219から検証鍵vkn+1、識別情報U1,・・・,Un+1,S、新たな秘匿化共有情報{gΠ{xk|k∈[1,n+1]∧k≠i}}i∈[1,n]、および署名σn+1を読み込み、検証鍵vkn+1を用い、署名σn+1をVervkn+1((Un+1,(U1,・・・,Un+1),S,{gΠ{xk|k∈[1,n+1]∧k≠i}}i∈[1,n]),σn+1)として検証する(ステップS2201)。ここで、署名σn+1が正当でないと判断された場合、セッションを終了する。一方、署名σn+1が正当であると判断された場合、制御部210がステップS2132で第1シード値K1が更新されたかを判定する。ここで、第1シード値K1が更新されていた場合、第1シード値暗号化部2112が記憶部219からParamsおよび第1シード値K1を読み込み、関数暗号方式に則って第1シード値K1を暗号化し、i∈[1,n]について、端末装置の識別情報Uiと有効時間区間TFに属する時間timeに対応する情報を含む属性情報Pi:=(ID=Ui)∧(time∈TF)に対応する秘密鍵で復号可能な暗号文CT’i←FEnc(Params,Pi,K1)を生成して記憶部219に格納し(ステップS2203)、ステップS2205に進む。一方、第1シード値K1が更新されていない場合、第1シード値暗号化部2112はCT’i:={}(空)として記憶部219に格納し(ステップS2204)、ステップS2205に進む。
ステップS2205では、第2シード値秘匿化共有情報部2122は、記憶部219から新たな秘匿化共有情報新たな秘匿化共有情報{gΠ{xk|k∈[1,n+1]∧k≠i}}i∈[1,n]および新たな管理秘密値x’sを読み込み、i∈[1,n]について、新たな秘匿化共有情報gΠ{xk|k∈[1,n+1]∧k≠i}と新たな管理秘密値x’sとに応じた新たな第2シード値の秘匿化情報gΠ{xk|k∈[1,n+1]∧k≠i}・x’sを生成して出力する。新たな第2シード値の秘匿化情報gΠ{xk|k∈[1,n+1]∧k≠i}・x’sは記憶部211に格納される(ステップS2205)。
署名生成部2103は、記憶部219から、署名鍵sks、識別情報S、U1,・・・,Un+1、新たな第2シード値の秘匿化情報gΠ{xk|k∈[1,n+1]∧k≠i}・x’s、および暗号文CT’iを読み込み、署名σ”si←Sigsks(S,(U1,・・・,Un+1),S,gΠ{xk|k∈[1,n+1]∧k≠i}・x’s,CT’i)を生成する(ただし、i∈[1,n])。(Ui,gΠ{xk|k∈[1,n+1]∧k≠i}・x’s,CT’i,σ”si)は通信部218に送られ、通信部218は、(Ui,gΠ{xk|k∈[1,n+1]∧k≠i}・x’s,CT’i,σ”si)を端末装置22−iに送信する。(Ui,gΠ{xk|k∈[1,n+1]∧k≠i}・x’s,CT’i,σ”si)は、端末装置22−i(図7)の通信部228−iに入力され、記憶部229−i(ただし、i∈[1,n])に格納される(ステップS2206)。
端末装置22−i(ただし、i∈[1,n])の署名検証部2205−iは、記憶部229−iから検証鍵vks、識別情報S、U1,・・・,Un+1、新たな第2シード値の秘匿化情報gΠ{xk|k∈[1,n+1]∧k≠i}・x’s、暗号文CT’i、および署名σ”siを読み込み、検証鍵vksを用い、署名σ”siをVervks((S,(U1,・・・,Un+1),S,gΠ{xk|k∈[1,n+1]∧k≠i}・x’s,CT’i),σ”si)として検証する(ステップS2211−i)。ここで、署名σ”siが正当でないと判断された場合、セッションを終了する。一方、署名σ”siが正当であると判断された場合、制御部220−iは記憶部229−iから暗号文CT’iを読み込み、CT’i={}であるかを判定する(ステップS2212−i)。ここで、CT’i={}でなければ、第1シード値復号部221−iが、記憶部229−iから秘密鍵uskiおよび暗号文CT’iを読み込み、秘密鍵uskiを用い、関数暗号方式に則って暗号文CT’iをK1←FDecuski(CT’i,Pi)として復号して第1シード値K1を生成して出力する。第1シード値K1は記憶部229−iに格納され(ステップS2213−i)、ステップS2214−iに進む。一方、CT’i={}であればステップS2213−iを実行することなく、ステップS2214−iに進む。
ステップS2214−i(ただし、i∈[1,n])では、第2シード値生成部223−iが、記憶部229−iから新たな第2シード値の秘匿化情報gΠ{xk|k∈[1,n+1]∧k≠i}・x’sおよび端末秘密値xiを読み込み、新たな第2シード値の秘匿化情報gΠ{xk|k∈[1,n+1]∧k≠i}・x’sと端末秘密値xiとに応じた新たな第2シード値K’2:=gΠ{xk|k∈[1,n+1]∧k≠i}・x’s・xi=gΠ{xk|k∈[1,n+1]}・x’sを生成して出力する。新たな第2シード値K’2は記憶部229−iに格納される(ステップS2214−i)。
共通鍵生成部224−i(ただし、i∈[1,n])は、記憶部229−iから、セッション識別情報sid、第1シード値K1、および新たな第2シード値K’2を読み込み、擬似ランダム関数Fκを用い、第1シード値K1を含む情報と新たな第2シード値K’2を含む情報とに対応する共通鍵K=Fκ(sid,K1)(+)Fκ(sid,K’2)を生成して出力する(ステップS222−i)。
<端末装置削除処理>
既にセッションが確立された端末装置22−1〜22−nから任意の端末装置22−jを除き、端末装置22−i(ただし、i∈[1,n]\j)で新たな共通鍵を共有する処理を説明する
図15に例示するように、管理秘密値生成部2121が新たな管理秘密値x”s∈RZpを生成して記憶部219に格納する(ステップS235)。第2シード値秘匿化情報生成部2122は、記憶部219から秘匿化共有情報gΠ{xk|k∈[1,n]∧k≠i}および新たな管理秘密値x”sを読み込み、秘匿化共有情報gΠ{xk|k∈[1,n]∧k≠i}と新たな管理秘密値x”sとに応じた新たな第2シード値の秘匿化情報gΠ{xk|k∈[1,n]∧k≠i}・x”s(ただし、i∈[1,n]\j)を生成して出力する。新たな第2シード値の秘匿化情報gΠ{xk|k∈[1,n]∧k≠i}・x”sは記憶部211に格納される(ステップS2361)。
署名生成部2103は、記憶部219から、署名鍵sks、識別情報S、U1,・・・,Uj−1,Uj+1,・・・,Un、新たな第2シード値の秘匿化情報gΠ{xk|k∈[1,n]∧k≠i}・x”sを読み込み、署名σ’”si←Sigsks(S,(U1,・・・,Uj−1,Uj+1,・・・,Un),S,gΠ{xk|k∈[1,n]∧k≠i}・x”s)(ただし、i∈[1,n]\j)を生成する。(Ui,gΠ{xk|k∈[1,n]∧k≠i}・x”s,σ’”si)は通信部218に送られ、通信部218は、((Ui,gΠ{xk|k∈[1,n]∧k≠i}・x”s,σ’”si)を端末装置22−i(ただし、i∈[1,n]\j)に送信する。(Ui,gΠ{xk|k∈[1,n]∧k≠i}・x”s,σ’”si)は、端末装置22−i(ただし、i∈[1,n]\j)の通信部228−iに入力され、記憶部229−iに格納される(ステップS2362)。
端末装置22−i(ただし、i∈[1,n]\j)の署名検証部2205−iは、記憶部229−iから検証鍵vks、識別情報S、U1,・・・,Uj−1,Uj+1,・・・,Un、新たな第2シード値の秘匿化情報gΠ{xk|k∈[1,n]∧k≠i}・x”s、および署名σ’”siを読み込み、検証鍵vksを用い、署名σ’”siをVervks((S,(U1,・・・,Uj−1,Uj+1,・・・,Un),S,gΠ{xk|k∈[1,n]∧k≠i}・x”s),σ’”si)として検証する(ステップS2371−i)。ここで、署名σ’”siが正当でないと判断された場合、セッションを終了する。一方、σ’”siが正当であると判断された場合、第2シード値生成部223−iが、記憶部229−iから新たな第2シード値の秘匿化情報gΠ{xk|k∈[1,n]∧k≠i}・x”sおよび端末秘密値xiを読み込み、新たな第2シード値の秘匿化情報gΠ{xk|k∈[1,n]∧k≠i}・x”sと端末秘密値xiとに応じた新たな第2シード値K”2:=gΠ{xk|k∈[1,n]∧k≠i}・x”s・xi=gΠ{xk|k∈[1,n]}・x”sを生成して出力する。新たな第2シード値K”2は記憶部229−iに格納される(ステップS2372−i)。共通鍵生成部224−iは、記憶部229−iから、セッション識別情報sid、第1シード値K1、および新たな第2シード値K”2を読み込み、擬似ランダム関数Fκを用い、第1シード値K1を含む情報と新たな第2シード値K”2を含む情報とに対応する共通鍵K”=Fκ(sid,K1)(+)Fκ(sid,K”2)を生成して出力する(ステップS238)。
[関数暗号方式の一例]
以下に関数暗号方式の一例を示す。本発明はこの方式に限定されない。また、[関数暗号方式の一例]の説明で使用する記号は上述で使用した記号と独立したものである。
<記号の定義>
(・)T:(・)Tは・の転置行列を表す。
(・)-1:(・)-1は・の逆行列を表す。
∧:∧は論理積(AND)を表す論理記号である。
∨:∨は論理和(OR)を表す論理記号である。
¬:¬は否定(NOT)を表す論理記号である。
命題変数:命題変数は命題の「真」,「偽」("false","true")を要素とする集合{真,偽}上の変数である。すなわち、命題変数の定義域は「真」,「偽」を要素とする集合である。命題変数及び命題変数の否定を総称してリテラル(literal)と呼ぶ。
Z:Zは整数集合を表す。
sec:secはセキュリティパラメータ(sec∈Z, sec>0)を表す。
0*:0*は*個の0からなる列を表す。
1*:1*は*個の1からなる列を表す。
Fq:Fqは位数qの有限体を表す。位数qは1以上の整数であり、例えば、素数や素数のべき乗値を位数qとする。
0F:0Fは有限体Fqの加法単位元を表す。
1F:1Fは有限体Fqの乗法単位元を表す。
δ(i,j):δ(i,j)はクロネッカーのデルタ関数を表す。i=jの場合にδ(i,j)=1Fを満たし、i≠jの場合にδ(i,j)=0Fを満たす。
E:Eは有限体Fq上で定義された楕円曲線を表す。
G1, G2,GT:G1, G2, GTは位数qの巡回群を表す。本形態では、巡回群G1, G2上で定義された演算を加法的に表現し、巡回群GT上で定義された演算を乗法的に表現する。
Ψ:Ψは1以上の整数を表す。
ψ:ψは0以上Ψ以下の整数ψ=0,...,Ψを表す。
λ:λは1以上Ψ以下の整数λ=1,...,Ψを表す。
n(ψ):n(ψ)は1以上の整数を表す。
ζ(ψ):ζ(ψ)は0以上の整数を表す。
G
1 n(ψ)+ζ(ψ):G
1 n(ψ)+ζ(ψ)はn(ψ)+ζ(ψ)個の巡回群G
1の直積を表す。
G
2 n(ψ)+ζ(ψ):G
2 n(ψ)+ζ(ψ)はn(ψ)+ζ(ψ)個の巡回群G
2の直積を表す。
g
1, g
2,g
T:g
1, g
2, g
Tは巡回群G, G
1, G
2, G
Tの生成元を表す。
V(ψ):V(ψ)はn(ψ)+ζ(ψ)個の巡回群G
1の直積からなるn(ψ)+ζ(ψ)次元のベクトル空間を表す。
V
*(ψ):V
*(ψ)はn(ψ)+ζ(ψ)個の巡回群G
2の直積からなるn(ψ)+ζ(ψ)次元のベクトル空間を表す。
Σ
ν=ν1 ν2 κ(ν):Σ
ν=ν1 ν2κ(ν)は以下を意味する。
Π
ν=ν1 ν2 κ(ν):Π
ν=ν1 ν2κ(ν)は以下を意味する。
eψ:eψは直積G1 n(ψ)+ζ(ψ)と直積G2 n(ψ)+ζ(ψ)との直積G1 n(ψ)+ζ(ψ)×G2 n(ψ)+ζ(ψ)を巡回群GTに写す非退化な双線形写像(bilinear map)を表す。双線形写像eψは、巡回群G1のn(ψ)+ζ(ψ)個の元γβ(β=1,...,n(ψ)+ζ(ψ))と巡回群G2のn(ψ)+ζ(ψ)個の元γβ *(β=1,...,n(ψ)+ζ(ψ))とを入力とし、巡回群GTの1個の元を出力する。
eψ:G1 n(ψ)+ζ(ψ)×G2 n(ψ)+ζ(ψ)→GT …(1)
双線形写像eψは以下の性質を満たす。
[双線形性]双線形写像eψは、すべてのΓ1∈G1 n(ψ)+ζ(ψ),Γ2∈G2 n(ψ)+ζ(ψ)及びν,κ∈Fqについて以下の関係を満たす。
eψ(ν・Γ1,κ・Γ2)=eψ(Γ1,Γ2)ν・κ …(2)
[非退化性]双線形写像eψは、すべてのΓ1∈G1 n(ψ)+ζ(ψ),Γ2∈G2 n(ψ)+ζ(ψ)を巡回群GTの単位元に写す写像ではない。
[計算可能性]あらゆる
Γ1∈G1 n(ψ)+ζ(ψ),Γ2∈G2 n(ψ)+ζ(ψ) …(3)
についてeψ(Γ1,Γ2)を効率的に計算するアルゴリズムが存在する。
本形態では、以下のような、巡回群G1と巡回群G2との直積G1×G2を巡回群GTに写す非退化な双線形写像を用いて双線形写像eψを構成する。
Pair:G1×G2→GT …(4)
本形態の双線形写像eψは、巡回群G1のn(ψ)+ζ(ψ)個の元γβ (β=1,...,n(ψ)+ζ(ψ))からなるn(ψ)+ζ(ψ)次元ベクトル(γ1,...,γn(ψ)+ζ(ψ))と、巡回群G2のn(ψ)+ζ(ψ)個の元γβ *(β=1,...,n(ψ)+ζ(ψ))からなるn(ψ)+ζ(ψ)次元ベクトル(γ1 *,...,γn(ψ)+ζ(ψ) *)との入力に対し、巡回群GTの1個の元を出力する。
eψ:Πβ=1 n(ψ)+ζ(ψ)Pair(γβ, γβ *) …(5)
双線形写像Pairは、巡回群G1の1個の元と巡回群G2の1個の元との組を入力とし、巡回群GTの1個の元を出力する。双線形写像Pairは、以下の性質を満たす。
[双線形性]双線形写像Pairは、すべてのΩ1∈G1,Ω2∈G2及びν,κ∈Fqについて以下の関係を満たす。
Pair(ν・Ω1,κ・Ω2)=Pair(Ω1,Ω2)ν・κ …(6)
[非退化性]双線形写像Pairは、すべての
Ω1∈G1,Ω2∈G2 …(7)
を巡回群GTの単位元に写す写像ではない。
[計算可能性]あらゆるΩ1∈G1,Ω2∈G2についてPair(Ω1,Ω2)を効率的に計算するアルゴリズムが存在する。
ai(ψ)(i=1,...,n(ψ)+ζ(ψ)):ai(ψ)は巡回群G1のn(ψ)+ζ(ψ)個の元を要素とするn(ψ)+ζ(ψ)次元の基底ベクトルを表す。基底ベクトルai(ψ)の一例は、κ1・g1∈G1をi次元目の要素とし、残りのn(ψ)+ζ(ψ)-1個の要素を巡回群G1の単位元(加法的に「0」と表現)とするn(ψ)+ζ(ψ)次元の基底ベクトルである。この場合、n(ψ)+ζ(ψ)次元の基底ベクトルai(ψ)(i=1,...,n(ψ)+ζ(ψ))の各要素をそれぞれ列挙して表現すると、以下のようになる。
a1(ψ)=(κ1・g1,0,0,...,0)
a2(ψ)=(0,κ1・g1,0,...,0) …(8)
...
an(ψ)+ζ(ψ)(ψ)=(0,0,0,...,κ1・g1)
ここで、κ1は加法単位元0F以外の有限体Fqの元からなる定数であり、κ1∈Fqの具体例はκ1=1Fである。基底ベクトルai(ψ)は直交基底であり、巡回群G1のn(ψ)+ζ(ψ)個の元を要素とするすべてのn(ψ)+ζ(ψ)次元ベクトルは、n(ψ)+ζ(ψ)次元の基底ベクトルai(ψ)(i=1,...,n(ψ)+ζ(ψ))の線形和によって表される。すなわち、n(ψ)+ζ(ψ)次元の基底ベクトルai(ψ)は前述のベクトル空間V(ψ)を張る。
ai *(ψ)(i=1,...,n(ψ)+ζ(ψ)):ai *(ψ)は巡回群G2のn(ψ)+ζ(ψ)個の元を要素とするn(ψ)+ζ(ψ)次元の基底ベクトルを表す。基底ベクトルai *(ψ)の一例は、κ2・g2∈G2をi次元目の要素とし、残りのn(ψ)+ζ(ψ)-1個の要素を巡回群G2の単位元(加法的に「0」と表現)とするn(ψ)+ζ(ψ)次元の基底ベクトルである。この場合、基底ベクトルai *(ψ)(i=1,...,n(ψ)+ζ(ψ))の各要素をそれぞれ列挙して表現すると、以下のようになる。
a1 *(ψ)=(κ2・g2,0,0,...,0)
a2 *(ψ)=(0,κ2・g2,0,...,0) …(9)
...
an(ψ)+ζ(ψ) *(ψ)=(0,0,0,...,κ2・g2)
ここで、κ2は加法単位元0F以外の有限体Fqの元からなる定数であり、κ2∈Fqの具体例はκ2=1Fである。基底ベクトルai *(ψ)は直交基底であり、巡回群G2のn(ψ)+ζ(ψ)個の元を要素とするすべてのn(ψ)+ζ(ψ)次元ベクトルは、n(ψ)+ζ(ψ)次元の基底ベクトルai *(ψ)(i=1,...,n(ψ)+ζ(ψ))の線形和によって表される。すなわち、n(ψ)+ζ(ψ)次元の基底ベクトルai *(ψ)は前述のベクトル空間V*(ψ)を張る。
なお、基底ベクトルai(ψ)と基底ベクトルai *(ψ)とは、0Fを除く有限体Fqの元τ=κ1・κ2について以下の関係を満たす。
eψ(ai(ψ), aj *(ψ))=gT τ・δ(i,j) …(10)
すなわち、i=jの場合には、式(5)(6)の関係から、以下の関係が満たされる。
eψ(ai(ψ), aj *(ψ))=Pair(g1, g2)κ1・κ2=gT τ
上付き添え字κ1,κ2はそれぞれκ1,κ2を表す。一方、i≠jの場合には、eψ(ai(ψ), aj *(ψ))=Πi=1 n(ψ)+ζ(ψ) Pair(ai(ψ), aj *(ψ))の右辺は、Pair(κ1・g1,κ2・g2)を含まず、Pair(κ1・g1,0)と Pair(0,κ2・g2)とPair(0,0)との積になる。さらに、式(6)の関係からPair(g1, 0)=Pair(0, g2)=Pair(g1, g2)0を満たす。そのため、i≠jの場合には、以下の関係が満たされる。
eψ(ai(ψ), aj *(ψ))=eψ(g1, g2)0=gT 0
特に、τ=κ1・κ2=1Fである場合(例えば、κ1=κ2=1Fの場合)、以下の関係が満たされる。
e(ai(ψ), aj *(ψ))=gT δ(i,j) …(11)
gT 0=1は巡回群GTの単位元であり、gT 1=gTは巡回群GTの生成元である。
A(ψ):A(ψ)は、基底ベクトルa
i(ψ)(i=1,...,n(ψ)+ζ(ψ))を要素とするn(ψ)+ζ(ψ)行n(ψ)+ζ(ψ)列の行列を表す。例えば、基底ベクトルa
i(ψ)(i=1,...,n(ψ)+ζ(ψ))が式(8)によって表現される場合、行列A(ψ)は以下のようになる。
A
*(ψ):A
*(ψ)は、基底ベクトルa
i *(ψ)(i=1,...,n(ψ)+ζ(ψ))を要素とするn(ψ)+ζ(ψ)行n(ψ)+ζ(ψ)列の行列を表す。例えば、基底ベクトルa
i *(ψ)(i=1,...,n(ψ)+ζ(ψ))が式(9)によって表現される場合、行列A
*(ψ)は以下のようになる。
X(ψ):X(ψ)は有限体F
qの元を要素とするn(ψ)+ζ(ψ)行n(ψ)+ζ(ψ)列の行列を表す。行列X(ψ)は基底ベクトルa
i(ψ)の座標変換に用いられる。行列X(ψ)のi行j列(i=1,...,n(ψ)+ζ(ψ),j=1,...,n(ψ)+ζ(ψ))の要素をχ
i,j(ψ)∈F
qとすると、行列X(ψ)は以下のようになる。
なお、行列X(ψ)の各要素χ
i,j(ψ)を変換係数と呼ぶ。
X
*(ψ):X
*(ψ)はX
*(ψ)=τ'・(X(ψ)
-1)
Tの関係を満たす行列である。ただし、τ'∈F
qは有限体F
qに属する任意の定数であり、例えば、τ'=1
Fである。X
*(ψ)は基底ベクトルa
i *(ψ)の座標変換に用いられる。行列X
*(ψ)のi行j列の要素をχ
i,j *(ψ)∈F
qとすると、行列X
*(ψ)は以下のようになる。
なお、行列X
*(ψ)の各要素χ
i,j *(ψ)を変換係数と呼ぶ。
この場合、n(ψ)+ζ(ψ)行n(ψ)+ζ(ψ)列の単位行列をI(ψ)とするとX(ψ)・(X
*(ψ))
T=τ'・I(ψ)を満たす。すなわち、単位行列を以下のように定義する。
これについて以下が満たされる。
ここで、n(ψ)+ζ(ψ)次元ベクトルを以下のように定義する。
χi →(ψ)=(χi,1(ψ),...,χi,n(ψ)+ζ(ψ)(ψ)) …(18)
χj →*(ψ)=(χj,1 *(ψ),...,χj,n(ψ)+ζ(ψ) *(ψ)) …(19)
すると、式(17)の関係から、n(ψ)+ζ(ψ)次元ベクトルχi →(ψ)とχj →*(ψ)との内積は、以下のようになる。
χi →(ψ)・χj →*(ψ)=τ'・δ(i,j) …(20)
bi(ψ):bi(ψ)は巡回群G1のn(ψ)+ζ(ψ)個の元を要素とするn(ψ)+ζ(ψ)次元の基底ベクトルを表す。bi(ψ)は行列X(ψ)を用いて基底ベクトルai(ψ) (i=1,...,n(ψ)+ζ(ψ))を座標変換することで得られる。具体的には、基底ベクトルbi(ψ)は、以下の演算によって得られる。
bi(ψ)=Σj=1 n(ψ)+ζ(ψ)χi,j(ψ)・aj(ψ) …(21)
例えば、基底ベクトルaj(ψ)(j=1,...,n(ψ)+ζ(ψ))が式(8)によって表現される場合、基底ベクトルbi(ψ)の各要素をそれぞれ列挙して表現すると、以下のようになる。
bi(ψ)=(χi,1(ψ)・κ1・g1,χi,2(ψ)・κ1・g1,
...,χi,n(ψ)+ζ(ψ)(ψ)・κ1・g1) …(22)
巡回群G1のn(ψ)+ζ(ψ)個の元を要素とするすべてのn(ψ)+ζ(ψ)次元ベクトルは、n(ψ)+ζ(ψ)次元の基底ベクトルbi(ψ)(i=1,...,n(ψ)+ζ(ψ))の線形和によって表される。すなわち、n(ψ)+ζ(ψ)次元の基底ベクトルbi(ψ)は前述のベクトル空間V(ψ)を張る。
bi *(ψ):bi *(ψ)は巡回群G2のn(ψ)+ζ(ψ)個の元を要素とするn(ψ)+ζ(ψ)次元の基底ベクトルを表す。bi *(ψ)は行列X*(ψ)を用いて基底ベクトルai *(ψ)(i=1,...,n(ψ)+ζ(ψ))を座標変換することで得られる。具体的には、基底ベクトルbi *(ψ)は、以下の演算によって得られる。
bi *(ψ)=Σj=1 n(ψ)+ζ(ψ)χi,j *(ψ)・aj *(ψ) …(23)
例えば、基底ベクトルaj *(ψ) (j=1,...,n(ψ)+ζ(ψ))が式(9)によって表現される場合、基底ベクトルbi *(ψ)の各要素をそれぞれ列挙して表現すると、以下のようになる。
bi *(ψ)=(χi,1 *(ψ)・κ2・g2 ,χi,2 *(ψ)・κ2・g2,
...,χi,n(ψ)+ζ(ψ) *(ψ)・κ2・g2) …(24)
巡回群G2のn(ψ)+ζ(ψ)個の元を要素とするすべてのn(ψ)+ζ(ψ)次元ベクトルは、n(ψ)+ζ(ψ)次元の基底ベクトルbi *(ψ)(i=1,...,n(ψ)+ζ(ψ))の線形和によって表される。すなわち、n(ψ)+ζ(ψ)次元の基底ベクトルbi *(ψ)は前述のベクトル空間V*(ψ)を張る。
なお、基底ベクトルb
i(ψ)と基底ベクトルb
i *(ψ)とは、0
Fを除く有限体F
qの元τ=κ
1・κ
2について以下の関係を満たす。
e
ψ(b
i(ψ), b
j *(ψ))=g
T τ・τ'・δ(i,j) …(25)
すなわち、式(5)(20)(22)(24)の関係から、以下の関係が満たされる。
特にτ=κ
1・κ
2=1
F(例えば、κ
1=κ
2=1
F)及びτ'=1
Fである場合、以下の関係が満たされる。
e
ψ(b
i(ψ), b
j *(ψ))=g
T δ(i,j) …(26)
基底ベクトルb
i(ψ)と基底ベクトルb
i *(ψ)とは、双対ペアリングベクトル空間(ベクトル空間V(ψ)とベクトル空間V
*(ψ))の双対正規直交基底である。
なお、式(25)の関係を満たすのであれば、式(8)(9)で例示したもの以外の基底ベクトルa
i(ψ)及びa
i *(ψ)や、式(21)(23)で例示したもの以外の基底ベクトルb
i(ψ)及びb
i *(ψ)を用いてもよい。
B(ψ):B(ψ)は基底ベクトルb
i(ψ) (i=1,...,n(ψ)+ζ(ψ))を要素とするn(ψ)+ζ(ψ)行n(ψ)+ζ(ψ)列の行列である。B(ψ)=X(ψ)・A(ψ)を満たす。例えば、基底ベクトルb
i(ψ)が式(22)によって表現される場合、行列B(ψ)は以下のように表される。
B
*(ψ):B
*(ψ)は基底ベクトルb
i *(ψ) (i=1,...,n(ψ)+ζ(ψ))を要素とするn(ψ)+ζ(ψ)行n(ψ)+ζ(ψ)列の行列を表す。B
*(ψ)=X
*(ψ)・A
*(ψ)を満たす。例えば、基底ベクトルb
i *(ψ) (i=1,...,n(ψ)+ζ(ψ))が式(24)によって表現される場合、行列B
*(ψ)は以下のように表される。
v(λ)→:v(λ)→は有限体Fqの元を要素とするn(λ)次元ベクトルを表す。
v(λ)→=(v1(λ),...,vn(λ)(λ))∈Fq n(λ) …(29)
vμ(λ):vμ(λ)はn(λ)次元ベクトルv(λ)→のμ(μ=1,...,n(λ))番目の要素を表す。
w(λ)→:w(λ)→は有限体Fqの元を要素とするn(λ)次元ベクトルを表す。
w(λ)→=(w1(λ),...,wn(λ)(λ))∈Fq n(λ) …(30)
wμ(λ):wμ(λ)はn(λ)次元ベクトルw(λ)→のμ(μ=1,...,n(λ))番目の要素を表す。
Enc:Encは共通鍵暗号方式の暗号化処理を示す共通鍵暗号関数を表す。
EncK(M):EncK(M)は、共通鍵Kを用い、共通鍵暗号関数Encに従って平文Mを暗号化して得られた暗号文を表す。
Dec:Decは、共通鍵暗号方式の復号処理を示す共通鍵復号関数を表す。
DecK(C):DecK(C)は、共通鍵Kを用い、共通鍵復号関数Decに従って暗号文Cを復号して得られた復号結果を表す。
<関数暗号方式の基本的な構成>
次に、関数暗号方式の基本的な構成について例示する。ここで例示する関数暗号方式では秘密情報に応じた値が所定の論理式に応じた態様で階層的に秘密分散される。所定の論理式は、第1情報と第2情報との組み合わせによって真理値が定まる命題変数を含み、必要に応じてさらに論理記号∧,∨,¬の何れか又はすべてを含む。各命題変数の真理値が特定されることで定まる当該所定の論理式の真理値が「真」となる場合に秘密情報に応じた値が復元され、それに基づいて暗号文が復号される。
<論理式と階層的な秘密分散との関係>
上述した所定の論理式と階層的な秘密分散との関係を説明する。
秘密分散とは、しきい値Kt(Kt≧1)個以上のシェア情報が得られた場合にのみ秘密情報が復元されるように、秘密情報をN(N≧2)個のシェア情報に分散することである。Kt=Nを満たす秘密分散の方式(SSS: Secret Sharing Scheme)をN-out-of-N分散方式(或いは「N-out-of-Nしきい値分散方式」)といい、Kt<Nを満たす秘密分散の方式をKt-out-of-N分散方式(或いは「Kt-out-of-Nしきい値分散方式」)という。
N-out-of-N分散方式では、すべてのシェア情報share(1),...,share(N)が与えられれば秘密情報SEを復元できるが、任意のN-1個のシェア情報share(φ1),...,share(φN-1)が与えられても秘密情報SEの情報はまったく得られない。以下に、N-out-of-N分散方式の一例を示す。
・SH1,...,SHN-1をランダムに選択する。
・SHN=SE-(SH1+...+SHN-1)の計算を行う。
・SH1,...,SHNを各シェア情報share(1),...,share(N)とする。
・すべてのシェア情報share(1),...,share(N)が与えられれば、以下の復元処理によって秘密情報SEの復元が可能である。
SE=share(1)+...+share(N) …(31)
K
t-out-of-N分散方式では、任意の相違なるK
t個のシェア情報share(φ
1),...,share(φ
Kt)が与えられれば秘密情報SEを復元できるが、任意のK
t-1個のシェア情報share(φ
1),...,share(φ
Kt-1)が与えられても秘密情報SEの情報はまったく得られない。添え字のKtはK
tを表す。以下にK
t-out-of-N分散方式の一例を示す。
・f(0)=SEを満たすK
t-1次の多項式f(x)=ξ
0+ξ
1・x+ξ
2・x
2+...+ξ
Kt-1・x
Kt-1をランダムに選ぶ。すなわち、ξ
0=SEとし、ξ
1,..., ξ
Kt-1をランダムに選ぶ。シェア情報をshare(ρ)=(ρ, f(ρ))(ρ=1,...,N)とする。(ρ, f(ρ))からのρ及びf(ρ)の抽出が可能であり、(ρ, f(ρ))の例はρとf(ρ)とのビット結合値である。
・任意の相違なるK
t個のシェア情報share(φ
1),...,share(φ
Kt)((φ
1,...,φ
Kt)⊂(1,...,N))が得られた場合、例えば、ラグランジェ(Lagrange)の補間公式を用い、以下のような復元処理によって秘密情報SEの復元が可能である。
SE=f(0)=LA
1・f(φ
1)+...+ LA
Kt・f(φ
Kt) …(32)
は先頭からρ番目の被演算子〔分母の要素(φ
ρ-φ
ρ)、分子の要素(x-φ
ρ)〕が存在しないことを意味する。すなわち、式(33)の分母は、以下のように表される。
(φ
ρ-φ
1)・...・(φ
ρ-φ
ρ-1)・(φ
ρ-φ
ρ+1)・...・(φ
ρ-φ
Kt)
式(33)の分子は、以下のように表される。
(x-φ
1)・...・(x-φ
ρ-1)・(x-φ
ρ+1)・...・(x-φ
Kt)
上述した各秘密分散を拡張し、秘密情報SEに応じた値をシェア情報shareに応じた値に秘密分散することもできる。秘密情報SEに応じた値とは秘密情報SEそのものや秘密情報SEの関数値であり、シェア情報shareに応じた値とはシェア情報shareそのものやシェア情報の関数値である。例えば、有限体Fqの元である秘密情報SE∈Fqに応じた巡回群GTの元gT SE∈GTを秘密情報SEの各シェア情報share(1),share(2)に応じた巡回群GTの元gT share(1),gT share(2)∈GTに秘密分散することもできる。上述した秘密情報SEはシェア情報shareの線形結合となる(式(31)(32))。秘密情報SEがシェア情報shareの線形結合となる秘密分散方式を線形秘密分散方式と呼ぶ。
上述した所定の論理式は、秘密情報を階層的に秘密分散して得られる木構造データによって表現できる。すなわち、ド・モルガンの法則により、上述した所定の論理式はリテラルからなる論理式、又は、論理記号∧,∨の少なくとも一部とリテラルとからなる論理式(これらを「標準形論理式」と呼ぶことにする)によって表現でき、この標準形論理式は秘密情報を階層的に秘密分散して得られる木構造データによって表現できる。
標準形論理式を表現する木構造データは複数のノードを含み、少なくとも一部のノードは1個以上の子ノードの親ノードとされ、親ノードの1つはルートノードとされ、子ノードの少なくとも一部は葉ノードとされる。ルートノードの親ノードや、葉ノードの子ノードは存在しない。ルートノードには秘密情報に応じた値が対応し、各親ノードの子ノードには当該親ノードに対応する値を秘密分散したシェア情報に応じた値が対応する。各ノードでの秘密分散形態(秘密分散方式やしきい値)は標準形論理式に応じて定まる。また、各葉ノードには標準形論理式を構成する各リテラルが対応し、当該各リテラルの真理値は第1情報と第2情報との組み合わせによって定まる。
ここで、真理値が真となったリテラルに対応する葉ノードに対応するシェア情報に応じた値は得られるが、真理値が偽となったリテラルに対応する葉ノードに対応するシェア情報に応じた値は得られないものとする。また、上述した秘密分散の性質により、親ノードに対応するシェア情報に応じた値(その親ノードがルートノードであれば秘密情報に応じた値)は、その子ノードに対応するシェア情報に応じた値が当該親ノードに対応するしきい値以上の個数だけ得られた場合にのみ復元される。そのため、どの葉ノードに対応するリテラルの真理値が真になったのかと木構造データの構成(各ノードでの秘密分散の形態を含む)とに応じ、最終的にルートノードに対応する秘密情報に応じた値が復元できるか否かが定まる。そして、各葉ノードに対応する各リテラルの真理値が標準形論理式の真理値を真にする場合にのみ最終的にルートノードに対応する秘密情報に応じた値が復元できるように木構造データが構成されている場合、このような木構造データは標準形論理式を表現する。このような標準形論理式を表現する木構造データは容易に設定できる。
<アクセス構造>
上述のように秘密情報を階層的に秘密分散して得られる木構造データによって所定の論理式を表現した場合、第1情報と第2情報との組み合わせに対して得られる葉ノードでのシェア情報に応じた値から秘密情報に応じた値を復元できるか否かによって、第1情報と第2情報との組み合わせによって定まる論理式の真理値が「真」となるか「偽」となるかを判定できる。以下、第1情報と第2情報との組み合わせによって定まる論理式の真理値が「真」となる場合に第1情報と第2情報との組み合わせを受け入れ、「偽」となる場合に第1情報と第2情報との組み合わせを拒絶する仕組みをアクセス構造と呼ぶ。
上述のように所定の論理式を表現した木構造データの葉ノードの総数をΨとし、各葉ノードに対応する識別子をλ=1,...,Ψとする。各葉ノードに対応するn(λ)次元ベクトルv(λ)→の集合{v(λ)→}λ=1,...,Ψを第1情報とし、n(λ)次元ベクトルw(λ)→の集合{w(λ)→}λ=1,...,Ψを第2情報とする。また、上述した木構造データをラベル付き行列LMT(MT,LAB)として実装する。
ラベル付き行列LMT(MT,LAB)は、以下のΨ行COL列(COL≧1)の行列MTと、行列MTの各行λ=1,...,Ψに対応付けられたラベルLAB(λ)とを含む。
行列MTの各要素mtλ,col(col=1,...,COL)は次の2つの要件を満たす。第1に、上述のように所定の論理式を表現した木構造データのルートノードに秘密情報SE∈Fqに応じた値が対応する場合、予め定められた有限体Fqの元を要素とするCOL次元ベクトルGV→と秘密情報SEに応じた有限体Fqの元を要素とするCOL次元ベクトルCV→との間に以下の関係が成立する。
GV→=(gv1,...,gvCOL)∈Fq COL …(35)
CV→=(cv1,...,cvCOL)∈Fq COL …(36)
SE=GV→・(CV→)T …(37)
以下にCOL次元ベクトルGV→の具体例を示す。
GV→=(1F,...,1F)∈Fq COL …(38)
ただし、GV→=(1F,0F,...,0F)∈Fq COLなどのその他のCOL次元ベクトルがGV→であってもよい。第2に、識別子λに対応する葉ノードにシェア情報share(λ)∈Fqに応じた値が対応する場合、以下の関係が成立する。
(share(1),...,share(Ψ))T=MT・(CV→)T …(39)
上述のように所定の論理式を表現した木構造データが定まれば、これら2つの要件を満たす行列MTを選択することは容易である。また、秘密情報SEやシェア情報share(λ)が変数であったとしても、これら2つの要件を満たす行列MTを選択することは容易である。すなわち、行列MTを定めた後で秘密情報SEやシェア情報share(λ)の値が定められてもよい。
また、行列MTの各行λ=1,...,Ψに対応付けられたラベルLAB(λ)は、識別子λに対応する葉ノードに対応するリテラル(PRO(λ)又は¬PRO(λ))に対応する。ここで、命題変数PRO(λ)の真理値が「真」であることと第1情報VSET1={λ,v(λ)→|λ=1,...,Ψ}が含むv(λ)→と第2情報VSET2={λ,w(λ)→|λ=1,...,Ψ}が含むw(λ)→との内積v(λ)→・w(λ)→が0となることとが等価であると扱い、命題変数PRO(λ)の真理値が「偽」であることと内積v(λ)→・w(λ)→が0とならないこととが等価であると扱う。PRO(λ)に対応するラベルLAB(λ)がv(λ)→を表し、¬PRO(λ)に対応するラベルLAB(λ)が¬v(λ)→を表すものとする。なお、¬v(λ)→はv(λ)→の否定を表す論理式であり、¬v(λ)→からv(λ)→の特定が可能である。また、LAB(λ)がv(λ)→を表すことを「LAB(λ)=v(λ)→」と表記し、LAB(λ)が¬v(λ)→を表すことを「LAB(λ)=¬v(λ)→」と表記する。また、LAB(λ)(λ=1,...,Ψ)の集合{LAB(λ)}λ=1,...,ΨをLABと表記する。
さらに、Ψ次元ベクトルが以下のように定義される。
TFV→=(tfv(1),...,tfv(Ψ)) …(40)
要素tfv(λ)は、内積v(λ)→・w(λ)→が0のときにtfv(λ)=1となり、0以外のときにtfv(λ)=0となる。
tfv(λ)=1 (PRO(λ)が真) if v(λ)→・w(λ)→=0 …(41)
tfv(λ)=0 (PRO(λ)が偽) if v(λ)→・w(λ)→≠0 …(42)
さらに、以下の論理式の真理値が「真」になるときLIT(λ)=1と表記し「偽」になるときLIT(λ)=0と表記する。
{(LAB(λ)=v(λ)→)∧(tfv(λ)=1)}∨{(LAB(λ)=¬v(λ)→)∧(tfv(λ)=0)} …(43)
すなわち、識別子λに対応する葉ノードに対応するリテラルの真理値が「真」になるときLIT(λ)=1と表記し「偽」になるときLIT(λ)=0と表記する。すると、行列MTが含む行ベクトルのうちLIT(λ)=1となる行ベクトルmtλ →=(mtλ,1,...,mtλ,COL)のみからなる部分行列MTTFVは以下のように表記できる。
MTTFV=(MT)LIT(λ)=1 …(44)
上述した秘密分散方式が線形秘密分散方式である場合、識別子λに対応するシェア情報share(λ)に応じた値から秘密情報SEに応じた値が復元できることと、識別子λに対応する行ベクトルmtλ →で張られるベクトル空間にCOL次元ベクトルGV→が属することとは等価である。すなわち、識別子λに対応する行ベクトルmtλ →で張られるベクトル空間にCOL次元ベクトルGV→が属するか否かを判定することで、識別子λに対応するシェア情報share(λ)に応じた値から秘密情報SEに応じた値が復元できるか否かが判定できる。行ベクトルmtλ →で張られるベクトル空間とは、行ベクトルmtλ →の線形結合で表すことができるベクトル空間を意味する。
ここで、上述の部分行列MTTFVの各行ベクトルmtλ →で張られるベクトル空間span<MTTFV>にCOL次元ベクトルGV→が属する場合に第1情報と第2情報との組み合わせが受け入れられ、そうでない場合に第1情報と第2情報との組み合わせが拒絶されることにする。これにより、上述のアクセス構造が具体化される。なお、上述したようにラベル付き行列LMT(MT,LAB)が第1情報に対応する場合、アクセス構造が第1情報と第2情報との組み合わせを受け入れることを「アクセス構造が第2情報を受け入れる」といい、アクセス構造が第1情報と第2情報との組み合わせを受け入れないことを「アクセス構造が第2情報を拒絶する」という。
受け入れ if GV→∈span<MTTFV>
拒絶 if ¬(GV→∈span<MTTFV>)
また、GV→∈span<MTTFV>の場合、以下を満たす係数const(μ)が存在し、このような係数const(μ)は行列MTのサイズのオーダーの多項式時間で求めることができる。
SE=Σμ∈SETconst(μ)・share(μ) …(45)
{const(μ)∈Fq|μ∈SET},SET⊆{1,...,λ|LIT(λ)=1}
<アクセス構造を用いた関数暗号方式の基本方式>
以下では、アクセス構造を用いた関数暗号方式によって鍵カプセル化メカニズムKEM (Key Encapsulation Mechanisms)を構成する場合の基本方式を例示する。この基本方式はSetup(1sec,(Ψ;n(1),...,n(Ψ))),GenKey(PK,MSK,LMT(MT,LAB)),Enc(PK,M,{λ,v(λ)→|λ=1,...,Ψ})(v1(λ)=1F),Dec(PK,SKS,C)を含む。また、第2情報VSET2={λ,w(λ)→|λ=1,...,Ψ}の1番目の要素w1(λ)が1Fとされる。
[Setup(1sec,(Ψ;n(1),...,n(Ψ))):セットアップ]
−入力:1sec,(Ψ;n(1),...,n(Ψ))
−出力:マスタ秘密鍵MSK,公開パラメータPK
Setupでは各ψ=0,...,Ψについて以下の処理が実行される。
(Setup-1) 1secを入力としてセキュリティパラメータsecでの位数q、楕円曲線E、巡回群G1, G2, GT、双線形写像eψ(ψ=0,...,Ψ)が生成される(param=(q, E, G1, G2, GT, eψ))。
(Setup-2) τ'∈Fqが選択され、X*(ψ)=τ'・(X(ψ)-1)Tを満たす行列X(ψ),X*(ψ)が選択される。
(Setup-3) 基底ベクトルai(ψ) (i=1,...,n(ψ)+ζ(ψ))が式(21)に従って座標変換され、n(ψ)+ζ(ψ)次元の基底ベクトルbi(ψ) (i=1,...,n(ψ)+ζ(ψ))が生成される。基底ベクトルbi(ψ) (i=1,...,n(ψ)+ζ(ψ))を要素とするn(ψ)+ζ(ψ)行n(ψ)+ζ(ψ)列の行列B(ψ)が生成される。
(Setup-4) 基底ベクトルai *(ψ) (i=1,...,n(ψ)+ζ(ψ))が式(23)に従って座標変換され、n(ψ)+ζ(ψ)次元の基底ベクトルbi *(ψ)(i=1,...,n(ψ)+ζ(ψ))が生成される。基底ベクトルbi *(ψ) (i=1,...,n(ψ)+ζ(ψ))を要素とするn(ψ)+ζ(ψ)行n(ψ)+ζ(ψ)列の行列B*(ψ)が生成される。
(Setup-5) B*(ψ)^の集合{B*(ψ)^}ψ=0,...,Ψをマスタ秘密鍵MSK={B*(ψ)^}ψ=0,...,Ψとする。B(ψ)^の集合{B(ψ)^}ψ=0,...,Ψと1secとparamとを公開パラメータPKとする。ただし、B*(ψ)^は行列B*(ψ)又はその部分行列であり、B(ψ)^は行列B(ψ)又はその部分行列である。集合{B*(ψ)^}ψ=0,...,Ψは、少なくとも、b1 *(0),b1 *(λ) …,bn(λ) *(λ)(λ=1,...,Ψ)を含む。集合{B(ψ)^}ψ=0,...,Ψは、少なくとも、b1(0),b1(λ),…,bn(λ)(λ)(λ=1,...,Ψ)を含む。以下に一例を示す。
・n(0)+ζ(0)≧5, ζ(λ)=3・n(λ)
・B(0)^=(b1(0) b3(0) b5(0))T
・B(λ)^=(b1(λ) … bn(λ)(λ) b3・n(λ)+1(λ) … b4・n(λ)(λ))T(λ=1,...,Ψ)
・B*(0)^=(b1 *(0) b3 *(0) b4 *(0))T
・B*(λ)^=(b1 *(λ) … bn(λ) *(λ) b2・n(λ)+1 *(λ) … b3・n(λ) *(λ))T(λ=1,...,Ψ)
[GenKey(PK,MSK,LMT(MT,LAB)):秘密鍵生成]
−入力:公開パラメータPK,マスタ秘密鍵MSK,第1情報VSET1={λ,v(λ)→|λ=1,...,Ψ}に対応するラベル付き行列LMT(MT,LAB)
−出力:秘密鍵SKS
(GenKey-1) 式(35)-(39)を満たす秘密情報SEに対して以下の処理が実行される。
D*(0)=-SE・b1 *(0)+Σι=2 Icoefι(0)・bι *(0) …(46)
ただし、Iは2以上n(0)+ζ(0)以下の定数である。coefι(0)∈Fqは定数又は乱数である。「乱数」とは真性乱数や擬似乱数を意味する。以下にD*(0)の一例を示す。なお、式(47)のcoef4(0)は乱数である。
D*(0)=-SE・b1 *(0)+b3 *(0)+coef4(0)・b4 *(0) …(47)
(GenKey-2) 式(35)-(39)を満たすshare(λ)(λ=1,...,Ψ)に対して以下の処理が実行される。
LAB(λ)=v(λ)→となるλに対して、以下のD*(λ)が生成される。
D*(λ)=(share(λ)+coef(λ)・v1(λ))・b1 *(λ)
+Σι=2 n(λ)coef(λ)・vι(λ)・bι *(λ)
+Σι=n(λ)+1 n(λ)+ζ(λ)coefι(λ)・bι *(λ) …(48)
LAB(λ)=¬v(λ)→となるλに対して、以下のD*(λ)が生成される。
D*(λ)=share(λ)・Σι=1 n(λ)vι(λ)・bι *(λ)
+Σι=n(λ)+1 n(λ)+ζ(λ)coefι(λ)・bι *(λ) …(49)
ただしcoef(λ),coefι(λ)∈Fqは定数又は乱数である。以下に一例を示す。
LAB(λ)=v(λ)→となるλに対して、例えば以下のD*(λ)が生成される。
D*(λ)=(share(λ)+coef(λ)・v1(λ))・b1 *(λ)
+Σι=2 n(λ)coef(λ)・vι(λ)・bι *(λ)
+Σι=2・n(λ)+1 3・n(λ)coefι(λ)・bι *(λ) …(50)
LAB(λ)=¬v(λ)→となるλに対して、例えば以下のD*(λ)が生成される。
D*(λ)=share(λ)・Σι=1 n(λ)vι(λ)・bι *(λ)
+Σι=2・n(λ)+1 3・n(λ)coefι(λ)・bι *(λ) …(51)
なお、式(50)(51)のcoef(λ)及びcoefι(λ)は乱数である。
(GenKey-3) 以下の秘密鍵が生成される。
SKS=(LMT(MT,LAB),D*(0),D*(1),...,D(Ψ)) …(52)
[Enc(PK,M,VSET2):暗号化]
−入力:公開パラメータPK,平文M,第2情報VSET2={λ,w(λ)→|λ=1,...,Ψ}(w1(λ)=1F)
−出力:暗号文C
(Enc-1) 以下の処理によって共通鍵Kの暗号文C(ψ)(ψ=0,...,Ψ)が生成される。
C(0)=υ・b1(0)+Σι=2 Iυι(0)・bι(0) …(53)
C(λ)=υ・Σι=1 n(λ)wι(λ)・bι(λ)+Σι=n(λ)+1 n(λ)+ζ(λ)υι(λ)・bι(λ) …(54)
ただし、υ,υι(ψ)∈Fq(ψ=0,...,Ψ)は定数又は乱数であり、以下の関係が満たされる。
(coef2(0),...,coefI(0))・(υ2(0),...,υI(0))=υ' …(55)
coefι(λ)・υι(λ)=0F (ι=n(λ)+1,...,n(λ)+ζ(λ)) …(56)
υ'の例はυ2(0),...,υI(0)の何れか1個である。例えば、υ,υ3(0),υ5(0),υ3・n(λ)+1(λ),...,υ4・n(λ)(λ)が乱数であり、ζ(λ)=3・n(λ)、I=5であり、以下の関係が満たされる。
(υ2(0),...,υI(0))=(0F,υ3(0),0F,υ5(0))
υ'=υ3(0)
(υn(λ)+1(λ),...,υ3・n(λ)(λ))=(0F,...,0F)
(Enc-2) 共通鍵
K=gT τ・τ'・υ'∈GT …(57)
が生成される。例えば、τ=τ'=1Fの場合、以下の関係が満たされる。
K=gT υ'∈GT …(58)
(Enc-3) 共通鍵Kを用いて平文Mの暗号文C(Ψ+1)が生成される。
C(Ψ+1)=EncK(M) …(59)
共通鍵暗号方式Encは、例えば共通鍵Kを用いて暗号化可能に構成されたカメリア(Camellia)(登録商標)やAESや共通鍵と平文との排他的論理和などでよいが、その他の簡単な例として以下のようにEncK(M)を生成してもよい。ただし、式(60)の例ではM∈GTとされる。
C(Ψ+1)=gT υ'・M …(60)
(Enc-4) 以下の暗号文が生成される。
C=(VSET2,C(0),{C(λ)}(λ,w(λ)→)∈VSET2,C(Ψ+1)) …(61)
ただし、下付き添え字の「w(λ)→」は「w(λ)→」を表す。
[Dec(PK,SKS,C):復号]
−入力:公開パラメータPK,秘密鍵SKS,暗号文C
−出力:平文M'
(Dec-1) λ=1,...,Ψについて、秘密鍵SKSが含むラベル付き行列LMT(MT,LAB)の各ラベルLAB(λ)であるn(λ)次元ベクトルv(λ)
→と暗号文CのVSET2が含むn(λ)次元ベクトルw(λ)
→との内積v(λ)
→・w(λ)
→が0となるか否かが判定され、これとLMT(MT,LAB)の各ラベルLAB(λ)とによってGV
→∈span<MT
TFV>であるか否かが判定される(式(40)-(45))。GV
→∈span<MT
TFV>でなければ暗号文Cが拒絶され、GV
→∈span<MT
TFV>であれば暗号文Cが受け入れられる。
(Dec-2) 暗号文Cが受け入れられると、SET⊆{1,...,λ|LIT(λ)=1}と式(45)を満たす係数const(μ)(μ∈SET)とが計算される。
(Dec-3) 以下の共通鍵が生成される。
式(6)(25)(55)より、以下の関係が満たされる。
式(6)(25)(41)(48)(54)(56)及びw
1(λ)=1
Fより、以下の関係が満たされる。
式(6)(25)(42)(49)(54)(56)より以下の関係がみたされる。
を満たす。
式(45)(63)-(65)より以下の関係が満たされる。
例えば、τ=τ'=1
Fの場合、以下の関係が満たされる。
K=g
T υ'∈G
T …(67)
(Dec-4) 共通鍵Kを用い、以下のように平文M'が生成される。
M'=DecK(C(Ψ+1))=DecK(C(Ψ+1)) …(68)
例えば、式(60)に例示した共通鍵暗号方式の場合、以下のように平文M'が生成される。
M'=C(Ψ+1)/K …(69)
なお、gTをGTの生成元とする代わりにgT τやgT τ'やgT τ・τ'をGTの生成元と扱ってもよい。秘密鍵SKSのλと暗号文のλとを対応関係を特定する写像を用いてC(λ)とD*(λ)との組み合わせを特定し、[Dec(PK,SKS,C):復号]の処理が実行されてもよい。第2情報VSET2={λ,w(λ)→|λ=1,...,Ψ}の1番目の要素w1(λ)が1Fとされるだけではなく、第1情報VSET1={λ,v(λ)→|λ=1,...,Ψ}のn(λ)番目の要素vn(λ)(λ)が1Fとされてもよい。要素w1(λ)が1Fでない場合にはw(λ)→の代わりにw(λ)→/w1(λ)を用いてもよく、要素vn(λ)(λ)が1Fでない場合にはv(λ)→の代わりにv(λ)→/vn(λ)(λ)を用いてもよい。第1情報VSET1={λ,v(λ)→|λ=1,...,Ψ}の代わりに第2情報VSET2={λ,w(λ)→|λ=1,...,Ψ}が用いられ、第2情報VSET2={λ,w(λ)→|λ=1,...,Ψ}の代わりに第1情報VSET1={λ,v(λ)→|λ=1,...,Ψ}が用いられてもよい。この場合には第1情報VSET1={λ,v(λ)→|λ=1,...,Ψ}の1番目の要素v1(λ)が1Fとされる。
[その他の変形例等]
なお、本発明は上述の実施形態に限定されるものではない。例えば、上記の実施形態の秘密鍵uskiは、端末装置12,22−iの識別情報Uiと有効時間区間TFに属する時間time∈TFに対応する情報を含む情報に対応するものであった。しかしながら、秘密鍵uskiが識別情報Uiに対応せず、有効時間区間TFに属する時間time∈TFに対応する情報を含む情報に対応するものであってもよい。また、共有情報Cが予め生成されていてもよいし、共有情報Cが定数であってもよい。さらに共有情報Cは第2実施形態で例示したものには限定されない。例えば、公知の鍵配送方式で鍵配送がなされる端末装置間で共有されるその他の情報を共有情報Cとしてもよい。また、各装置がネットワークを通じて情報をやり取りするのではなく、少なくとも一部の組の装置が可搬型記録媒体を介して情報をやり取りしてもよい。或いは、少なくとも一部の組の装置が非可搬型の記録媒体を介して情報をやり取りしてもよい。すなわち、これらの装置の一部からなる組み合わせが、同一の装置であってもよい。上述の各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。その他、本発明の趣旨を逸脱しない範囲で適宜変更が可能であることはいうまでもない。
上述の構成をコンピュータによって実現する場合、各装置が有すべき機能の処理内容はプログラムによって記述される。このプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体の例は、非一時的な(non-transitory)記録媒体である。このような記録媒体の例は、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等である。
このプログラムの流通は、例えば、そのプログラムを記録したDVD、CD−ROM等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。処理の実行時、このコンピュータは、自己の記録装置に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるASP(Application Service Provider)型のサービスによって、上述の処理を実行する構成としてもよい。
上記実施形態では、コンピュータ上で所定のプログラムを実行させて本装置の処理機能が実現されたが、これらの処理機能の少なくとも一部がハードウェアで実現されてもよい。