【文献】
DATTA, P., OKAMOTO, T. and TOMIDA, J.,Full-Hiding (Unbounded) Mulit-Input Inner Product Functional Encryption from the k-Linear Assumption,Cryptology ePrint Archive,Report 2018/061,[online],2018年02月,pp.1-38,<URL:https://eprint.iacr.org/2018/061>,[2021年8月10日検索]
【文献】
SANS, E. D. and POINTCHEVAL, D.,Unbounded Inner-Product Functional Encryption with Succinct Keys,Cryptology ePrint Archive,Report 2018/487,[online],2018年05月,pp.1-15,<URL:https://eprint.iacr.org/2018/487/20180523:025542>,[2021年8月10日検索]
(58)【調査した分野】(Int.Cl.,DB名)
一定のサイズの公開情報を入力として定義された暗号化設定情報であって、ベクトルxのサイズに応じたサイズの暗号化設定情報を用いて、前記ベクトルxが暗号化された暗号文ctxを取得する暗号文取得部と、
前記公開情報を入力として定義された鍵設定情報であって、ベクトルyのサイズに応じたサイズの鍵設定情報を用いて、前記ベクトルyが設定された秘密鍵skyを取得する秘密鍵取得部と、
前記暗号文取得部によって取得された前記暗号文ctxを、前記秘密鍵取得部によって取得された前記秘密鍵skyで復号して、前記ベクトルxと前記ベクトルyとの内積値を計算する復号部と
を備え、
前記暗号化設定情報は、前記ベクトルxの要素毎に生成されたインデックス情報Iが前記公開情報に設定されて定義され、
前記鍵設定情報は、前記ベクトルyの要素毎に生成されたインデックス情報I’であって、前記ベクトルxの対応する要素に対して生成されたインデックス情報Iとの内積値が0になるように生成されたインデックス情報I’が前記公開情報に設定されて定義された復号装置。
一定のサイズの公開情報を入力として生成された暗号化設定情報であって、ベクトルxのサイズに応じたサイズの暗号化設定情報を用いて、前記ベクトルxが暗号化された暗号文ctxを生成する暗号化装置と、
前記公開情報を入力として生成された鍵設定情報であって、ベクトルyのサイズに応じたサイズの鍵設定情報を用いて、前記ベクトルyが設定された秘密鍵skyを生成する鍵生成装置と、
前記暗号化装置によって生成された前記暗号文ctxを、前記鍵生成装置によって生成された前記秘密鍵skyで復号して、前記ベクトルxと前記ベクトルyとの内積値を計算する復号装置と
を備え、
前記暗号化設定情報は、前記ベクトルxの要素毎に生成されたインデックス情報Iが前記公開情報に設定されて定義され、
前記鍵設定情報は、前記ベクトルyの要素毎に生成されたインデックス情報I’であって、前記ベクトルxの対応する要素に対して生成されたインデックス情報Iとの内積値が0になるように生成されたインデックス情報I’が前記公開情報に設定されて定義された暗号システム。
【発明を実施するための形態】
【0008】
実施の形態1.
***表記***
以下の説明で用いられる表記を説明する。
素数pに対して、数101は、数102に示す体を示す。
【数101】
【数102】
【0009】
自然数n,mに対して、[n]は、集合{1,...,n}を示し、[m,n]は、集合{m,...,n}を示す。
【0010】
集合Sに対して、数103は、sがSから一様に選択されることを示す。
【数103】
【0011】
ベクトルは、行ベクトルとして扱う。ベクトルxに対して、数104は、無限大ノルムを示す。
【数104】
【0012】
体Kに対して、M
n(K)は、Kにおける要素を有する全てのn×n行列の集合を示し、GL
n(K)は、Kにおける要素を有する全てのn×nの正則行列の集合を示す。
【0013】
正則行列Aに対して、A
*は、(A
−1)
T、つまり随伴行列を示す。
【0014】
巡回群G
ιの生成元g
ιと、行列A及びベクトルaとに対して、[A]
ι及び[a]
ιは、それぞれ、生成元g
ιの指数部の行列及びベクトルを示す。つまり、[A]
ιは、g
ιAを示し、[a]
ιは、g
ιaを示す。
【0015】
数105に示すベクトルx及びベクトルyに対して、数106は、数107によって指数部の内積を計算する関数を示す。
【数105】
【数106】
【数107】
【0016】
***定義***
以下の説明で用いられる用語の定義を説明する。
<IPFE>
IPFEは、マスター秘密鍵mskの所有者がベクトルyに対して秘密鍵sk
yを発行可能であり、ベクトルxの暗号文ct
xを秘密鍵sk
yで復号するとベクトルxとベクトルyとの内積値だけが明らかになる方式である。
内積値の計算は、数値データに対する重み付けと、統計的な計算に対する利用といった様々な応用が可能である。
【0017】
<双線形群>
双線形群G:=(p,G
1,G
2,G
T,g
1,g
2,e)は、素数pと、位数pの巡回群G
1,G
2,G
Tと、巡回群G
1の生成元g
1と、巡回群G
2の生成元g
2と、数108に示す双線形写像eとを備え、以下の双線形性と非退化性との2つの性質を有する。
【数108】
【0018】
(双線形性)
数109が成立する。
【数109】
(非退化性)
生成元g
1,g
2に対して、e(g
1,g
2)がG
Tの生成元である。
【0019】
<双対ペアリングベクトル空間(以下、DPVS)>
自然数nに対して、数110に示すように、ランダムに双対正規直交基底(B,B
*)を選択することが可能である。
【数110】
そして、[B]
1及び[B
*]
2は、それぞれ、ベクトル空間V:=G
1n及びV
*:=G
2nの双対正規直交基底である。
【0020】
以下の2つの性質が成立する。
(性質1)
数111に示すどんなベクトルx,yに対しても、数112が成立する。
【数111】
【数112】
【0021】
(性質2)
数113に示すどんなベクトルx
1,...,x
k及びベクトルy
1,...,y
Lと、行列Mとに対しても、数114は一様に分散する。
【数113】
【数114】
さらに、数115に示すどんな集合Sに対しても、数116は一様に分散する。
【数115】
【数116】
これは、数117がランダムな双対正規直交基底であり、数118であるためである。
【数117】
【数118】
【0022】
<暗号方式の条件>
暗号化と鍵生成と復号との条件を説明する。
【0023】
暗号化及び鍵生成については、連続(con)と、分離(sep)との2つの条件がある。
連続設定では、ベクトルが暗号化又は鍵生成のアルゴリズムに入力されると、ベクトルの各要素に対して、その位置によって自動的にインデックスが設定される。つまり、ベクトル(a,b,c)に対して、aのインデックスは1が設定され、bのインデックスは2が設定され、cのインデックスは3が設定される。
分離設定では、インデックスの集合がベクトルに付加されており、暗号化及び鍵生成は、インデックスの集合に対応して実行される。言い換えると、ベクトル(a,b,c)は、ある集合、例えば{1,5,6}によってインデックスが設定される。つまり、aのインデックスは1が設定され、bのインデックスは5が設定され、cのインデックスは6が設定される。
【0024】
復号については、ct−dominant方式と、sk−dominant方式と、equal方式との3つの条件がある。
S
ctを暗号文ctのインデックスの集合とし、S
skを秘密鍵skのインデックスの集合とする。このとき、ct−dominant方式では、S
ct⊇S
skの場合に限り、暗号文ctが秘密鍵skで復号される。sk−dominant方式では、S
ct⊆S
skの場合に限り、暗号文ctが秘密鍵skで復号される。equal方式では、S
ct=S
skの場合に限り、暗号文ctが秘密鍵skで復号される。
【0025】
以下の説明では、方式の条件を(E:xx,K:yy,D:zz)と記述する。xx,yyは、連続設定を表すconと、分離設定を表すsepとのいずれかが設定される。zzは、ct−dominant方式を表すct−domと、sk−dominant方式を表すsk−domと、equal方式を表すeqとのいずれかが設定される。
実施の形態1では、(E:con,K:sep,D:ct−dom)セッティングについて説明する。つまり、実施の形態1では、長さmのベクトルの暗号文と、集合Sが付加された秘密鍵とに対して、S⊆[m]の場合に限り、暗号文を秘密鍵で復号でき、集合Sに関する内積値が得られる方式を説明する。しかし、後の実施の形態で説明するように、他の設定についても実現可能である。
【0026】
<ノルム上限>
実施の形態1で説明するUnbounded IPFE(以下、UIPFE)方式では、復号時に離散対数問題を解く処理が含まれる。そのため、扱うベクトルのノルムに上限が置かれる。ここでは、IPFE方式で使用される関数を以下のように定義することにより、扱うベクトルのノルムに上限が置かれる。
【0027】
関数族Fは、数119に示す関数f
S,yX,Yによって構成される。
【数119】
数120に示す全てのベクトルxに対して、数121の関数が定義される。
【数120】
【数121】
【0028】
***構成の説明***
<Private−key UIPFEの構成>
実施の形態1では、Private−key UIPFEを説明する。Private−key UIPFEは、秘密鍵セッティングのUIPFEである。秘密鍵セッティングは、暗号文の作成に秘密鍵が必要な方式である。
秘密鍵セッティングの暗号化方式には、端末のバックアップデータをクラウドに置いておき、必要に応じてバックアップデータをクラウドから取得するというような、暗号化と復号とを同じユーザが行うケースといった実際的な応用が存在する。
【0029】
Private−key UIPFEは、Setupアルゴリズムと、Encアルゴリズムと、KeyGenアルゴリズムと、Decアルゴリズムとを含む。Χ:={X
λ}
λ∈N,Υ:={Y
λ}
λ∈Nをノルム上限の集合体とする。ここで、Nは、自然数の集合である。
Setupアルゴリズムは、セキュリティパラメータ1
λを入力として、公開パラメータppと、マスター秘密鍵mskとを出力する。
Encアルゴリズムは、公開パラメータppと、マスター秘密鍵mskと、ベクトルx:=(x
1,...,x
m)とを入力として、暗号文ct
xを出力する。ここで、m:=m(λ)は、多項式である。
KeyGenアルゴリズムは、公開パラメータppと、マスター秘密鍵mskと、空でない集合S:=[s]と、インデックス付けされたベクトルy:=(y
i)
i∈Sとを入力として、秘密鍵sk
yを出力する。ここで、s:=s(λ)は、多項式である。
Decアルゴリズムは、公開パラメータppと、暗号文ct
xと、秘密鍵sk
yとを入力として、復号された値d∈Z、又は、識別子⊥を出力する。ここで、Zは、
整数の集合である。識別子⊥は、復号できないことを示す。
【0030】
<暗号システム1の構成>
図1を参照して、実施の形態1に係る暗号システム1の構成を説明する。
暗号システム1は、セットアップ装置10と、暗号化装置20と、鍵生成装置30と、復号装置40とを備える。セットアップ装置10と暗号化装置20と鍵生成装置30と復号装置40とは、ネットワークを介して接続される。
【0031】
図2を参照して、実施の形態1に係るセットアップ装置10の構成を説明する。
セットアップ装置10は、Setupアルゴリズムを実行するコンピュータである。
セットアップ装置10は、プロセッサ11と、メモリ12と、ストレージ13と、通信インタフェース14とのハードウェアを備える。プロセッサ11は、信号線を介して他のハードウェアと接続され、これら他のハードウェアを制御する。
【0032】
セットアップ装置10は、機能構成要素として、受付部111と、マスター鍵生成部112と、送信部113とを備える。セットアップ装置10の各機能構成要素の機能はソフトウェアにより実現される。
ストレージ13には、セットアップ装置10の各機能構成要素の機能を実現するプログラムが格納されている。このプログラムは、プロセッサ11によりメモリ12に読み込まれ、プロセッサ11によって実行される。これにより、セットアップ装置10の各機能構成要素の機能が実現される。
【0033】
図3を参照して、実施の形態1に係る暗号化装置20の構成を説明する。
暗号化装置20は、Encアルゴリズムを実行するコンピュータである。
暗号化装置20は、プロセッサ21と、メモリ22と、ストレージ23と、通信インタフェース24とのハードウェアを備える。プロセッサ21は、信号線を介して他のハードウェアと接続され、これら他のハードウェアを制御する。
【0034】
暗号化装置20は、機能構成要素として、マスター鍵取得部211と、ベクトル取得部212と、設定情報定義部213と、暗号化部214と、送信部215とを備える。暗号化装置20の各機能構成要素の機能はソフトウェアにより実現される。
ストレージ23には、暗号化装置20の各機能構成要素の機能を実現するプログラムが格納されている。このプログラムは、プロセッサ21によりメモリ22に読み込まれ、プロセッサ21によって実行される。これにより、暗号化装置20の各機能構成要素の機能が実現される。
【0035】
図4を参照して、実施の形態1に係る鍵生成装置30の構成を説明する。
鍵生成装置30は、KeyGenアルゴリズムを実行するコンピュータである。
鍵生成装置30は、プロセッサ31と、メモリ32と、ストレージ33と、通信インタフェース34とのハードウェアを備える。プロセッサ31は、信号線を介して他のハードウェアと接続され、これら他のハードウェアを制御する。
【0036】
鍵生成装置30は、機能構成要素として、マスター鍵取得部311と、ベクトル取得部312と、設定情報定義部313と、鍵生成部314と、送信部315とを備える。鍵生成装置30の各機能構成要素の機能はソフトウェアにより実現される。
ストレージ33には、鍵生成装置30の各機能構成要素の機能を実現するプログラムが格納されている。このプログラムは、プロセッサ31によりメモリ32に読み込まれ、プロセッサ31によって実行される。これにより、鍵生成装置30の各機能構成要素の機能が実現される。
【0037】
図5を参照して、実施の形態1に係る復号装置40の構成を説明する。
復号装置40は、Decアルゴリズムを実行するコンピュータである。
復号装置40は、プロセッサ41と、メモリ42と、ストレージ43と、通信インタフェース44とのハードウェアを備える。プロセッサ41は、信号線を介して他のハードウェアと接続され、これら他のハードウェアを制御する。
【0038】
復号装置40は、機能構成要素として、公開鍵取得部411と、暗号文取得部412と、復秘密鍵取得部413と、復号部414とを備える。復号装置40の各機能構成要素の機能はソフトウェアにより実現される。
ストレージ43には、復号装置40の各機能構成要素の機能を実現するプログラムが格納されている。このプログラムは、プロセッサ41によりメモリ42に読み込まれ、プロセッサ41によって実行される。これにより、復号装置40の各機能構成要素の機能が実現される。
【0039】
プロセッサ11,21,31,41は、プロセッシングを行うIC(Integrated Circuit)である。プロセッサ11,21,31,41は、具体例としては、CPU(Central Processing Unit)、DSP(Digital Signal Processor)、GPU(Graphics Processing Unit)である。
【0040】
メモリ12,22,32,42は、データを一時的に記憶する記憶装置である。メモリ12,22,32,42は、具体例としては、SRAM(Static Random Access Memory)、DRAM(Dynamic Random Access Memory)である。
【0041】
ストレージ13,23,33,43は、データを保管する記憶装置である。ストレージ13,23,33,43は、具体例としては、HDD(Hard Disk Drive)である。また、ストレージ13,23,33,43は、SD(登録商標,Secure Digital)メモリカード、CF(CompactFlash,登録商標)、NANDフラッシュ、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ(登録商標)ディスク、DVD(Digital Versatile Disk)といった可搬記録媒体であってもよい。
【0042】
通信インタフェース14,24,34,44は、外部の装置と通信するためのインタフェースである。通信インタフェース14,24,34,44は、具体例としては、Ethernet(登録商標)、USB(Universal Serial Bus)、HDMI(登録商標,High−Definition Multimedia Interface)のポートである。
【0043】
図2では、プロセッサ11は、1つだけ示されていた。しかし、プロセッサ11は、複数であってもよく、複数のプロセッサ11が、各機能を実現するプログラムを連携して実行してもよい。同様に、プロセッサ21,31,41は、複数であってもよく、複数のプロセッサ21,31,41が、各機能を実現するプログラムを連携して実行してもよい。
【0044】
***動作の説明***
以下の説明では、ノルム上限X
λ,Y
λは、ある多項式である。数122に示す関数族Fは、数123に示す関数F
Kからなる鍵空間K
λについての疑似ランダム関数(以下、PRF)族である。
【数122】
【数123】
【0045】
図6を参照して、実施の形態1に係るセットアップ装置10の動作を説明する。
実施の形態1に係るセットアップ装置10の動作は、実施の形態1に係るセットアップ方法に相当する。また、実施の形態1に係るセットアップ装置10の動作は、実施の形態1に係るセットアッププログラムの処理に相当する。
【0046】
(ステップS11:受付処理)
受付部111は、セキュリティパラメータ1
λの入力を受け付ける。
具体的には、受付部111は、通信インタフェース14を介して、セットアップ装置10のユーザによって入力されたセキュリティパラメータ1
λを受け付ける。受付部111は、セキュリティパラメータ1
λをメモリ12に書き込む。
【0047】
(ステップS12:マスター鍵生成処理)
マスター鍵生成部112は、ステップS11で受け付けられたセキュリティパラメータ1
λを入力として、双線形群Gを選択する。また、マスター鍵生成部112は、鍵空間K
λからランダムにPRF鍵Kを選択する。
具体的には、マスター鍵生成部112は、メモリ12からセキュリティパラメータ1
λを読み出す。マスター鍵生成部112は、セキュリティパラメータ1
λを入力として、双線形群の生成アルゴリズムG
BGを実行して、双線形群Gを選択する。また、マスター鍵生成部112は、セキュリティパラメータ1
λによって定まる鍵空間K
λからランダムにPRF鍵Kを選択する。マスター鍵生成部112は、双線形群G及びPRF鍵Kをメモリ12に書き込む。
【0048】
(ステップS13:送信処理)
送信部113は、ステップS12で選択された双線形群Gを公開パラメータppとして、公開する。具体的には、送信部113は、メモリ12から双線形群Gを読み出す。送信部113は、双線形群Gを公開パラメータppとして公開用のサーバに送信するといった方法により、公開する。これにより、暗号化装置20と鍵生成装置30と復号装置40とは、双線形群Gを取得可能になる。
また、送信部113は、ステップS12で選択されたPRF鍵Kをマスター秘密鍵mskとして、暗号化装置20及び鍵生成装置30に秘密裡に送信する。具体的には、送信部113は、メモリ12からPRF鍵Kを読み出す。送信部113は、PRF鍵Kをマスター秘密鍵mskとして、既存の暗号化方式で暗号化した上で暗号化装置20及び鍵生成装置30に送信する。
【0049】
つまり、セットアップ装置10は、数124に示すSetupアルゴリズムを実行する。
【数124】
【0050】
図7を参照して、実施の形態1に係る暗号化装置20の動作を説明する。
実施の形態1に係る暗号化装置20の動作は、実施の形態1に係る暗号化方法に相当する。また、実施の形態1に係る暗号化装置20の動作は、実施の形態1に係る暗号化プログラムの処理に相当する。
【0051】
(ステップS21:マスター鍵取得処理)
マスター鍵取得部211は、セットアップ装置10によって生成された公開パラメータppである双線形群Gと、マスター秘密鍵mskであるPRF鍵Kとを取得する。
具体的には、マスター鍵取得部211は、通信インタフェース24を介して、公開された公開パラメータppを取得するとともに、セットアップ装置10によって送信されたマスター秘密鍵mskを取得する。マスター鍵取得部211は、公開パラメータpp及びマスター秘密鍵mskをメモリ22に書き込む。
【0052】
(ステップS22:ベクトル取得処理)
ベクトル取得部212は、数125に示すベクトルxを取得する。ベクトルxは、暗号化の対象である。ここで、m:=m(λ)は、多項式である。
【数125】
具体的には、ベクトル取得部212は、通信インタフェース24を介して、暗号化装置20のユーザによって入力されたベクトルxを取得する。ベクトル取得部212は、ベクトルxをメモリ22に書き込む。
【0053】
(ステップS23:設定情報生成処理)
設定情報定義部213は、ステップS21で取得された一定サイズの公開情報であるマスター秘密鍵mskを入力として、ステップS22で取得された暗号化する対象のベクトルxのサイズに応じたサイズの暗号化設定情報を定義する。ここでは、設定情報定義部213は、一定サイズの公開情報に基づき、ベクトルxのサイズに応じたデータサイズ拡張用の情報を暗号化して、データサイズ拡張用の情報が設定された暗号化設定情報を生成する。ここでのデータサイズ拡張用の情報は、インデックスiである。したがって、設定情報定義部213は、インデックスiを暗号化して、インデックスiが設定された暗号化設定情報を生成する。
具体的には、設定情報定義部213は、メモリ22からマスター秘密鍵msk及びベクトルxを読み出す。設定情報定義部213は、i=1,...,mの各整数iについて、PRFである関数Fに、マスター秘密鍵mskであるPRF鍵Kと、インデックスiとを入力として、行列B
iを暗号化設定情報として生成する。mは、ベクトルxの要素数である。つまり、設定情報定義部213は、i=1,...,mの各整数iについて、B
i:=F
K(i)を計算して、行列B
iを暗号化設定情報として扱う。
なお、設定情報定義部213は、生成された行列B
iが非正則行列である場合には、識別子⊥を出力して、処理を終了する。
【0054】
(ステップS24:暗号化処理)
暗号化部214は、ステップS23で定義された暗号化設定情報を用いて、ベクトルxを暗号化して暗号文ct
xを生成する。
具体的には、暗号化部214は、i=1,...,mの各整数iについて、数126に示すように、要素c
iを計算する。つまり、暗号化部214は、インデックスiが暗号化された暗号化設定情報を用いて、ベクトルxを暗号化して要素c
iを計算する。
【数126】
暗号化部214は、メモリ12から公開パラメータppである双線形群Gに含まれる群G
1の群要素g
1を読み出す。暗号化部214は、i=1,...,mの各整数iについての各要素c
iを群要素g
1の指数部に設定した要素[c
i]
1を生成する。暗号化部214は、数127に示すように、i=1,...,mの各整数iについての要素[c
i]
1を暗号文ct
xとしてメモリ22に書き込む。
【数127】
【0055】
(ステップS25:送信処理)
送信部215は、ステップS24で生成された暗号文ct
xを復号装置40に送信する。具体的には、送信部215は、メモリ22から暗号文ct
xを読み出す。送信部215は、通信インタフェース24を介して、暗号文ct
xを復号装置40に送信する。
【0056】
つまり、暗号化装置20は、数128に示すEncアルゴリズムを実行する。
【数128】
【0057】
図8を参照して、実施の形態1に係る鍵生成装置30の動作を説明する。
実施の形態1に係る鍵生成装置30の動作は、実施の形態1に係る鍵生成方法に相当する。また、実施の形態1に係る鍵生成装置30の動作は、実施の形態1に係る鍵生成プログラムの処理に相当する。
【0058】
(ステップS31:マスター鍵取得処理)
マスター鍵取得部311は、セットアップ装置10によって生成された公開パラメータppである双線形群Gと、マスター秘密鍵mskであるPRF鍵Kとを取得する。
具体的には、マスター鍵取得部311は、通信インタフェース34を介して、公開された公開パラメータppを取得するとともに、セットアップ装置10によって送信されたマスター秘密鍵mskを取得する。マスター鍵取得部311は、公開パラメータpp及びマスター秘密鍵mskをメモリ32に書き込む。
【0059】
(ステップS32:ベクトル取得処理)
ベクトル取得部312は、集合S⊆[s]と、インデックスが設定された数129に示すベクトルyとを取得する。ここで、s:=s(λ)は、多項式である。
【数129】
具体的には、ベクトル取得部312は、通信インタフェース24を介して、鍵生成装置30のユーザによって入力された集合S及びベクトルyを取得する。ベクトル取得部312は、集合S及びベクトルyをメモリ32に書き込む。
【0060】
(ステップS33:設定情報生成処理)
設定情報定義部313は、ステップS31で取得された一定サイズの公開情報であるマスター秘密鍵mskを入力として、ステップS32で取得されたベクトルyのサイズに応じたサイズの鍵設定情報を定義する。ここでは、設定情報定義部313は、一定サイズの公開情報に基づき、ベクトルyのサイズに応じたデータサイズ拡張用の情報を暗号化して、データサイズ拡張用の情報が設定された鍵設定情報を生成する。ここでの、データサイズ拡張用の情報は、インデックスiである。したがって、設定情報定義部313は、インデックスiを暗号化して、インデックスiが設定された鍵設定情報を生成する。
具体的には、設定情報定義部313は、メモリ32からマスター秘密鍵mskと、集合Sとを読み出す。設定情報定義部313は、i∈Sの各整数iについて、PRFである関数Fに、マスター秘密鍵mskであるPRF鍵Kと、インデックスiとを入力として、行列B
iを生成する。設定情報定義部313は、行列B
iの随伴行列B
*i:=(B
i−1)
Tを鍵設定情報として生成する。つまり、設定情報定義部313は、i∈Sの各整数iについて、B
i:=F
K(i)を計算して、行列B
iの随伴行列B
*iを鍵設定情報として扱う。
なお、設定情報定義部313は、生成された行列B
iが非正則行列である場合には、識別子⊥を出力して、処理を終了する。
【0061】
(ステップS34:鍵生成処理)
鍵生成部314は、ステップS33で生成された鍵設定情報を用いて、ベクトルyを設定した秘密鍵sk
yを生成する。
具体的には、鍵生成部314は、i∈Sの各整数iについて、数130に示すように、乱数r
iを生成する。
【数130】
鍵生成部314は、i∈Sの各整数iについて、乱数r
iを用いて、数131に示すように、要素k
iを生成する。つまり、鍵生成部314は、インデックスiが暗号化された鍵設定情報を用いて、ベクトルyを暗号化して要素k
iを計算する。
【数131】
鍵生成部314は、メモリ12から公開パラメータppである双線形群Gに含まれる群G
2の群要素g
2を読み出す。鍵生成部314は、i∈Sの各整数iについて、各要素k
iを群要素g
2の指数部に設定した要素[k
i]
2を生成する。鍵生成部314は、数132に示すように、集合Sと、i∈Sの各整数iについての要素[k
i]
2とを秘密鍵sk
yとしてメモリ32に書き込む。
【数132】
【0062】
(ステップS35:送信処理)
送信部315は、ステップS34で生成された秘密鍵sk
yを復号装置40に送信する。具体的には、送信部315は、メモリ32から秘密鍵sk
yを読み出す。送信部315は、通信インタフェース34を介して、秘密鍵sk
yを復号装置40に送信する。
【0063】
つまり、鍵生成装置30は、数133に示すKeyGenアルゴリズムを実行する。
【数133】
【0064】
図9を参照して、実施の形態1に係る復号装置40の動作を説明する。
実施の形態1に係る復号装置40の動作は、実施の形態1に係る復号方法に相当する。また、実施の形態1に係る復号装置40の動作は、実施の形態1に係る復号プログラムの処理に相当する。
【0065】
(ステップS41:公開鍵取得処理)
公開鍵取得部411は、セットアップ装置10によって生成された公開パラメータppである双線形群Gを取得する。
具体的には、公開鍵取得部411は、通信インタフェース44を介して、公開された公開パラメータppを取得する。公開鍵取得部411は、公開パラメータppをメモリ42に書き込む。
【0066】
(ステップS42:暗号文取得処理)
暗号文取得部412は、暗号化装置20によって生成された暗号文ct
xを取得する。
具体的には、暗号文取得部412は、通信インタフェース44を介して、暗号化装置20によって送信された暗号文ct
xを取得する。暗号文取得部412は、暗号文ct
xをメモリ42に書き込む。
【0067】
(ステップS43:秘密鍵取得処理)
秘密鍵取得部413は、鍵生成装置30によって生成された秘密鍵sk
yを取得する。
具体的には、秘密鍵取得部413は、通信インタフェース44を介して、鍵生成装置30によって送信された秘密鍵sk
yを取得する。秘密鍵取得部413は、秘密鍵sk
yをメモリ42に書き込む。
【0068】
(ステップS44:判定処理)
復号部414は、S⊆[m]であるか否かを判定することにより、復号可能か否かを判定する。
復号部414は、S⊆[m]である場合には、処理をステップS45に進める。一方、復号部414は、S⊆[m]でない場合には、復号できないとして識別子⊥を出力して、処理を終了する。
【0069】
(ステップS45:復号処理)
復号部414は、ステップS42で取得された暗号文ct
xを、ステップS43で取得された秘密鍵sk
yで復号して、ベクトルxとベクトルyとの内積値を計算する。
具体的には、復号部414は、公開パラメータppと暗号文ct
xと秘密鍵sk
yとをメモリ42から読み出す。復号部414は、数134に示すように、暗号文ct
xと秘密鍵sk
yとについてのペアリング演算を計算することにより、値hを計算する。
【数134】
復号部414は、−|S|X
λY
λから|S|X
λY
λまでの範囲からe(g
1,g
2)
d=hであるような値dを探索する。ここで、|S|は、集合Sの要素数である。復号部414は、値dが見つかった場合には、値dを出力する。一方、復号部414は、値dが見つからない場合には、識別子⊥を出力する。
【0070】
数135に示すように、値hは計算される。
【数135】
したがって、e(g
1,g
2)
d=hであるような値dは、ベクトルxとベクトルyとの内積値になる。
【0071】
つまり、復号装置40は、数136に示すDecアルゴリズムを実行する。
【数136】
【0072】
***実施の形態1の効果***
以上のように、実施の形態1に係る暗号システム1では、暗号文ct
xは、一定のサイズの公開情報を入力として生成された暗号化設定情報であって、ベクトルxのサイズに応じたサイズの暗号化設定情報を用いて、ベクトルxが暗号化されて生成される。また、秘密鍵sk
yは、一定のサイズの公開情報を入力として生成された鍵設定情報であって、ベクトルyのサイズに応じたサイズの鍵設定情報を用いて、ベクトルyが設定されて生成される。そして、暗号文ct
xが秘密鍵sk
yで復号されて、ベクトルxとベクトルyとの内積値が計算される。そのため、暗号文及び秘密鍵の最大の長さが限定されない、IPFE方式を構築可能にすることができる。
【0073】
暗号化設定情報及び鍵設定情報は、公開情報を入力として、PRFにより生成される。これにより、一定のサイズの公開情報からランダムな暗号化設定情報及び鍵設定情報を生成することができる。
【0074】
また、暗号文ct
xの各要素[c
i]
1を構成する要素c
iに乱数zが含まれる。これにより、暗号文ct
xの一部の要素を、別途生成された他の暗号文の要素と入れ替えるといったことができないようになっている。つまり、乱数zにより、暗号文ct
xがバインドされている。
同様に、秘密鍵sk
yの各要素[k
i]
2を構成する要素k
iに乱数r
iが含まれる。これにより、秘密鍵sk
yの一部の要素を、別途生成された他の秘密鍵の要素と入れ替える、一部の要素を削除するといったことができないようになっている。つまり、乱数r
iにより、秘密鍵sk
yがバインドされている。
【0075】
***他の構成***
<変形例1>
実施の形態1では、各機能構成要素がソフトウェアで実現された。しかし、変形例1として、各機能構成要素はハードウェアで実現されてもよい。この変形例1について、実施の形態1と異なる点を説明する。
【0076】
図10を参照して、変形例1に係るセットアップ装置10の構成を説明する。
各機能構成要素がハードウェアで実現される場合には、セットアップ装置10は、プロセッサ11とメモリ12とストレージ13とに代えて、電子回路15を備える。電子回路15は、各機能構成要素と、メモリ12と、ストレージ13との機能とを実現する専用の回路である。
【0077】
図11を参照して、変形例1に係る暗号化装置20の構成を説明する。
各機能構成要素がハードウェアで実現される場合には、暗号化装置20は、プロセッサ21とメモリ22とストレージ23とに代えて、電子回路25を備える。電子回路25は、各機能構成要素と、メモリ22と、ストレージ23との機能とを実現する専用の回路である。
【0078】
図12を参照して、変形例1に係る鍵生成装置30の構成を説明する。
各機能構成要素がハードウェアで実現される場合には、鍵生成装置30は、プロセッサ31とメモリ32とストレージ33とに代えて、電子回路35を備える。電子回路35は、各機能構成要素と、メモリ32と、ストレージ33との機能とを実現する専用の回路である。
【0079】
図13を参照して、変形例1に係る復号装置40の構成を説明する。
各機能構成要素がハードウェアで実現される場合には、復号装置40は、プロセッサ41とメモリ42とストレージ43とに代えて、電子回路45を備える。電子回路45は、各機能構成要素と、メモリ42と、ストレージ43との機能とを実現する専用の回路である。
【0080】
電子回路15,25,35,45としては、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ロジックIC、GA(Gate Array)、ASIC(Application Specific Integrated Circuit)、FPGA(Field−Programmable Gate Array)が想定される。
各機能構成要素を1つの電子回路15,25,35,45で実現してもよいし、各機能構成要素を複数の電子回路15,25,35,45に分散させて実現してもよい。
【0081】
<変形例2>
変形例2として、一部の各機能構成要素がハードウェアで実現され、他の各機能構成要素がソフトウェアで実現されてもよい。
【0082】
プロセッサ11,21,31,41とメモリ12,22,32,42とストレージ13,23,33,43と電子回路15,25,35,45とを処理回路という。つまり、各機能構成要素の機能は、処理回路により実現される。
【0083】
実施の形態2.
実施の形態2では、Public−key UIPFEについて説明する。実施の形態2では、実施の形態1と異なる点を説明し、同一の点については説明を省略する。
【0084】
***構成の説明***
<Public−key UIPFEの構成>
Public−key UIPFEは、公開鍵セッティングのUIPFEである。公開鍵セッティングは、暗号文の作成に公開鍵だけが必要であり、秘密鍵は必要ない方式である。
【0085】
Public−key UIPFEは、Setupアルゴリズムと、Encアルゴリズムと、KeyGenアルゴリズムと、Decアルゴリズムとを含む。Χ:={X
λ}
λ∈N,Υ:={Y
λ}
λ∈Nをノルム上限の集合体とする。ここで、Nは、自然数の集合である。
【0086】
Setupアルゴリズムは、セキュリティパラメータ1
λを入力として、公開鍵pkと、マスター秘密鍵mskとを出力する。
Encアルゴリズムは、公開鍵pkと、ベクトルx:=(x
1,...,x
m)とを入力として、暗号文ct
xを出力する。ここで、m:=m(λ)は、多項式である。
KeyGenアルゴリズムは、公開鍵pkと、マスター秘密鍵mskと、空でない集合S:=[s]と、インデックス付けされたベクトルy:=(y
i)
i∈Sとを入力として、秘密鍵sk
yを出力する。ここで、s:=s(λ)は、多項式である。
Decアルゴリズムは、公開鍵pkと、暗号文ct
xと、秘密鍵sk
yとを入力として、復号された値d∈Z、又は、識別子⊥を出力する。ここで、Zは、
整数の集合である。識別子⊥は、復号できないことを示す。
【0087】
<暗号システム1の構成>
図14を参照して、実施の形態2に係る暗号システム1の構成を説明する。
暗号システム1は、セットアップ装置10と、暗号化装置20と、鍵生成装置30と、復号装置40とを備える。セットアップ装置10と暗号化装置20と鍵生成装置30と復号装置40とは、ネットワークを介して接続される。
暗号システム1は、セットアップ装置10から暗号化装置20にマスター秘密鍵mskが送信されていない点が
図1に示す暗号システム1と異なる。
【0088】
***動作の説明***
以下の説明では、ノルム上限X
λ,Y
λは、ある多項式である。
【0089】
図6を参照して、実施の形態2に係るセットアップ装置10の動作を説明する。
実施の形態2に係るセットアップ装置10の動作は、実施の形態2に係るセットアップ方法に相当する。また、実施の形態2に係るセットアップ装置10の動作は、実施の形態2に係るセットアッププログラムの処理に相当する。
【0090】
ステップS11の処理は、実施の形態1と同じである。
【0091】
(ステップS12:マスター鍵生成処理)
マスター鍵生成部112は、ステップS11で受け付けられたセキュリティパラメータ1
λを入力として、双線形群Gを選択する。また、マスター鍵生成部112は、7×7の正則行列Bを生成する。
具体的には、マスター鍵生成部112は、メモリ12からセキュリティパラメータ1
λを読み出す。マスター鍵生成部112は、セキュリティパラメータ1
λを入力として、双線形群の生成アルゴリズムG
BGを実行して、双線形群Gを選択する。マスター鍵生成部112は、数137に示すように、ランダムに7×7の正則行列Bを生成する。マスター鍵生成部112は、正則行列Bの随伴行列B
*:=(B
−1)
Tを生成する。マスター鍵生成部112は、双線形群Gと正則行列B及び随伴行列B
*とをメモリ12に書き込む。
【数137】
【0092】
(ステップS13:送信処理)
送信部113は、ステップS12で選択された双線形群Gと、i=1,...,4の各整数iについての正則行列Bのi行目の要素を群要素g
1の指数部に設定した要素[b
i]
1とを公開鍵pkとして、公開する。具体的には、送信部113は、メモリ12から双線形群Gを読み出す。送信部113は、双線形群Gに含まれる要素g
1を用いて、i=1,...,4の各整数iについての正則行列Bのi行目の要素を群要素g
1の指数部に設定して、要素[b
i]
1を生成する。送信部113は、双線形群G及び要素[b
1]
1,...,[b
4]
1を公開鍵pkとして公開用のサーバに送信するといった方法により、公開する。これにより、暗号化装置20と鍵生成装置30と復号装置40とは、双線形群G及び要素[b
1]
1,...,[b
4]
1を取得可能になる。
また、送信部113は、i=1,...,4の各整数iについての随伴行列B
*のi行目の要素b
*iをマスター秘密鍵mskとして、鍵生成装置30に秘密裡に送信する。具体的には、送信部113は、メモリ12から随伴行列B
*を読み出す。送信部113は、i=1,...,4の各整数iについての随伴行列B
*のi行目の要素b
*iをマスター秘密鍵mskとして、既存の暗号化方式で暗号化した上で鍵生成装置30に送信する。
【0093】
つまり、セットアップ装置10は、数138に示すSetupアルゴリズムを実行する。
【数138】
【0094】
図7を参照して、実施の形態2に係る暗号化装置20の動作を説明する。
実施の形態2に係る暗号化装置20の動作は、実施の形態2に係る暗号化方法に相当する。また、実施の形態2に係る暗号化装置20の動作は、実施の形態2に係る暗号化プログラムの処理に相当する。
【0095】
ステップS22及びステップS25の処理は、実施の形態1と同じである。
【0096】
(ステップS21:マスター鍵取得処理)
マスター鍵取得部211は、セットアップ装置10によって生成された公開鍵pkである双線形群G及び要素[b
1]
1,...,[b
4]
1を取得する。
具体的には、マスター鍵取得部211は、通信インタフェース24を介して、公開された公開鍵pkを取得する。マスター鍵取得部211は、公開鍵pkをメモリ22に書き込む。
【0097】
(ステップS23:設定情報生成処理)
設定情報定義部213は、ステップS21で取得された一定サイズの公開情報にベクトルxの要素毎に生成されたインデックス情報Iを設定した情報を、ステップS22で取得された暗号化する対象のベクトルxのサイズに応じたサイズの暗号化設定情報として定義する。
具体的には、設定情報定義部213は、i=1,...,mの各整数iについて、数139に示すように、乱数π
iを生成する。
【数139】
そして、設定情報定義部213は、i=1,...,mの各整数iについて、数140に示すように、インデックス情報Iである乱数π
iと乱数π
iに値iを乗じた値との組を設定した情報を、暗号化設定情報B
iと定義する。
【数140】
つまり、実施の形態1とは方法は異なるが、実施の形態1と同様に、設定情報定義部213は、インデックスiを暗号化して、インデックスiが設定された暗号化設定情報を定義する。
【0098】
(ステップS24:暗号化処理)
暗号化部214は、ステップS23で定義された暗号化設定情報を用いて、ベクトルxを暗号化して暗号文ct
xを生成する。
具体的には、暗号化部214は、i=1,...,mの各整数iについて、数141に示すように、要素x
i及び乱数zを設定した情報を、要素c
iと定義する。
【数141】
つまり、要素c
iは、数142に示すように定義される。
【数142】
暗号化部214は、メモリ12から公開パラメータppである双線形群Gに含まれる群G
1の群要素g
1を読み出す。暗号化部214は、i=1,...,mの各整数iについての各要素c
iを群要素g
1の指数部に設定した要素[c
i]
1を生成する。暗号化部214は、数143に示すように、i=1,...,mの各整数iについての要素[c
i]
1を暗号文ct
xとしてメモリ22に書き込む。
【数143】
【0099】
つまり、暗号化装置20は、数144に示すEncアルゴリズムを実行する。
【数144】
【0100】
図8を参照して、実施の形態2に係る鍵生成装置30の動作を説明する。
実施の形態2に係る鍵生成装置30の動作は、実施の形態2に係る鍵生成方法に相当する。また、実施の形態2に係る鍵生成装置30の動作は、実施の形態2に係る鍵生成プログラムの処理に相当する。
【0101】
ステップS32及びステップS35の処理は、実施の形態1と同じである。
【0102】
(ステップS31:マスター鍵取得処理)
マスター鍵取得部311は、セットアップ装置10によって生成された公開鍵pkである双線形群G及び要素[b
1]
1,...,[b
4]
1と、マスター秘密鍵mskである要素b
*1,...,b
*4とを取得する。
具体的には、マスター鍵取得部311は、通信インタフェース34を介して、公開された公開鍵pkを取得するとともに、セットアップ装置10によって送信されたマスター秘密鍵mskを取得する。マスター鍵取得部311は、公開鍵pk及びマスター秘密鍵mskをメモリ32に書き込む。
【0103】
(ステップS33:設定情報生成処理)
設定情報定義部313は、ステップS31で取得された一定サイズの秘密情報であるマスター秘密鍵mskである要素b
*1,...,b
*4を入力として、ステップS32で取得されたベクトルyのサイズに応じたサイズの鍵設定情報を定義する。
具体的には、設定情報定義部313は、設定情報定義部313は、メモリ32からマスター秘密鍵mskと、集合Sとを読み出す。設定情報定義部313は、i∈Sの各整数iについて、数145に示すように、乱数ρ
iを生成する。
【数145】
そして、設定情報定義部313は、i∈Sの各整数iについて、数146に示すように、インデックス情報I’である乱数ρ
iに値−iを乗じた値と乱数ρ
iとの組を設定した情報を、鍵設定情報B
*iと生成する。
【数146】
つまり、実施の形態1とは方法は異なるが、実施の形態1と同様に、設定情報定義部313は、インデックスiを暗号化して、インデックスiが設定された鍵設定情報を生成する。
【0104】
(ステップS34:鍵生成処理)
鍵生成部314は、ステップS33で定義された鍵設定情報を用いて、ベクトルyを設定した秘密鍵sk
yを生成する。
具体的には、鍵生成部314は、i∈Sの各整数iについて、数147に示すように、乱数r
iを生成する。
【数147】
鍵生成部314は、i∈Sの各整数iについて、乱数r
iを用いて、数148に示すように、要素k
iを生成する。
【数148】
つまり、要素k
iは、数149に示すようになる。
【数149】
鍵生成部314は、メモリ12から公開パラメータppである双線形群Gに含まれる群G
2の群要素g
2を読み出す。鍵生成部314は、i∈Sの各整数iについて、各要素k
iを群要素g
2の指数部に設定した要素[k
i]
2を生成する。鍵生成部314は、数150に示すように、集合Sと、i∈Sの各整数iについての要素[k
i]
2とを秘密鍵sk
yとしてメモリ32に書き込む。
【数150】
【0105】
つまり、鍵生成装置30は、数151に示すKeyGenアルゴリズムを実行する。
【数151】
【0106】
実施の形態2に係る復号装置40の動作は、実施の形態1に係る復号装置40の動作と同じである。
【0107】
***実施の形態2の効果***
以上のように、実施の形態2に係る暗号システム1では、実施の形態1と同様に、暗号文及び秘密鍵の最大の長さが限定されない、IPFE方式を構築可能にすることができる。
【0108】
暗号化設定情報及び鍵設定情報は、公開情報を入力として、インデックス情報I,I’を用いて生成される。これにより、一定のサイズの公開情報からランダムな暗号化設定情報及び鍵設定情報を生成することができる。
【0109】
***他の構成***
<変形例3>
実施の形態2では、インデックス情報Iは、乱数π
iと乱数π
iに値iを乗じた値との組であり、インデックス情報I’は、乱数ρ
iに値−iを乗じた値と乱数ρ
iとの組であった。インデックス情報I及びインデックス情報I’は、内積値が0になる値であれば、これに限定されない。
【0110】
実施の形態3.
実施の形態1,2では、(E:con,K:sep,D:ct−dom)セッティングについて説明した。実施の形態3では、他のセッティングについて説明する。実施の形態3では、実施の形態1,2と異なる点を説明し、同一の点については説明を省略する。
【0111】
他のセッティングとしては、以下のセッティング1からセッティング7の7個が考えられる。
【0112】
セッティング1:(E:con,K:con,D:ct−dom)セッティング
長さmのベクトルの暗号文と、長さnのベクトルの秘密鍵とに対して、n≦mの場合に限り、暗号文を秘密鍵で復号でき、[n]に関する内積値が得られる方式である。
【0113】
セッティング2:(E:sep,K:sep,D:ct−dom)セッティング
集合Uが付加された暗号文と、集合Sが付加された秘密鍵とに対して、S⊆Uの場合に限り、暗号文を秘密鍵で復号でき、集合Sに関する内積値が得られる方式である。
【0114】
セッティング3:(E:con,K:con,D:sk−dom)セッティング
長さmのベクトルの暗号文と、長さnのベクトルの秘密鍵とに対して、m≦nの場合に限り、暗号文を秘密鍵で復号でき、[m]に関する内積値が得られる方式である。
【0115】
セッティング4:(E:sep,K:con,D:sk−dom)セッティング
集合Uが付加された暗号文と、長さnのベクトルの秘密鍵とに対して、U⊆[n]の場合に限り、暗号文を秘密鍵で復号でき、集合Uに関する内積値が得られる方式である。
【0116】
セッティング5:(E:sep,K:sep,D:sk−dom)セッティング
集合Uが付加された暗号文と、集合Sが付加された秘密鍵とに対して、U⊆Sの場合に限り、暗号文を秘密鍵で復号でき、集合Uに関する内積値が得られる方式である。
【0117】
セッティング6:(E:con,K:con,D:eq)セッティング
長さmのベクトルの暗号文と、長さmのベクトルの秘密鍵とに対して、[m]に関する内積値が得られる方式である。
【0118】
セッティング7:(E:sep,K:sep,D:eq)セッティング
集合Sが付加された暗号文と、集合Sが付加された秘密鍵とに対して、集合Sに関する内積値が得られる方式である。
【0119】
各セッティングにおける動作の違いを説明する。
E:xx,K:yy,D:zzの違いは、暗号文を秘密鍵で復号できる条件に影響する。具体的には、
図9のステップS44での判定内容に影響する。
実施の形態1,2では、E:con,K:sep,D:ct−domであったため、S⊆[m]の場合に限り、暗号文を秘密鍵で復号できた。そのため、
図9のステップS44でS⊆[m]であるか否かが判定された。他のセッティングの場合には、
図9のステップS44でそのセッティングに応じた判定がされる。判定内容は、各セッティングで説明した通りである。
なお、D:eqの場合には、暗号文及び秘密鍵のベクトルの長さが同じである、あるいは、暗号文及び秘密鍵に付加された集合が同じであることが前提である。そのため、
図9のステップS44は不要である。又は、
図9のステップS44で、暗号文及び秘密鍵のベクトルの長さが同じであること、あるいは、暗号文及び秘密鍵に付加された集合が同じであることの判定が行われてもよい。
【0120】
また、D:zzの違いは、暗号文ct
xの要素c
iと、秘密鍵sk
yの要素k
iとの乱数の設定方法に影響する。具体的には、
図7のステップS24で設定された乱数zと、
図8のステップS34で設定された乱数r
iとの設定方法に影響する。
実施の形態1,2では、D:ct−domであったため、秘密鍵sk
yの要素k
iに乱数r
iが設定された。一方、要素k
iにおける乱数r
iが設定された要素に対応する、要素c
iにおける要素には乱数zが設定された。これにより、秘密鍵sk
yがバインドされるとともに、暗号文ct
xがバインドされた。ここで、乱数r
iは、秘密鍵sk
yの集合Sに含まれる各整数iについて、乱数r
iの和が0になるように生成された。つまり、全ての要素k
iについての乱数r
iの和が0になるように乱数r
iは生成された。
他のセッティングの場合には、D:zzに応じて、乱数r
iと乱数zとが、要素c
iと要素k
iとのどちらに設定されるかが変更される。具体的には、D:ct−domの場合には、上述した通り、要素k
iに乱数r
i設定され、要素c
iに乱数zが設定される。この場合には、全ての要素k
iについての乱数r
iの和が0になるように乱数r
iは生成される。D:sk−domの場合には、要素c
iに乱数r
iが設定され、要素k
iに乱数zが設定される。この場合には、全ての要素c
iについての乱数r
iの和が0になるように乱数r
iは生成される。D:eqの場合には、要素k
iに乱数r
iが設定され、要素c
iに乱数zが設定されるとともに、要素c
iに乱数r’
iが設定され、要素k
iに乱数z’が設定される。この場合には、全ての要素k
iについての乱数r
iの和が0になるように乱数r
iは生成され、全ての要素c
iについての乱数r’
iの和が0になるように乱数r’
iは生成される。なお、乱数r’
iは、乱数r
iとは異なる乱数であるが、乱数r
iと同様の役割を果たす乱数である。乱数z’は、乱数zとは異なる乱数であるが、乱数zと同様の役割を果たす乱数である。
【0121】
以上のように、実施の形態3に係る暗号システム1では、実施の形態1,2で説明したセッティングとは異なるセッティングについても、暗号文及び秘密鍵の最大の長さが限定されない、IPFE方式を構築可能にすることができる。
【0122】
実施の形態4.
実施の形態4では、実施の形態1で説明したPrivate−key UIPFEの処理を効率的に実現可能な方式を説明する。実施の形態4では、実施の形態1と異なる点を説明し、同一の点については説明を省略する。
【0123】
実施の形態4では、(E:con,K:con,D:eq)セッティングについて説明する。つまり、実施の形態4では、実施の形態3で説明したセッティング6について説明する。
【0124】
以下の説明では、数152に示すbinary
λは、入力をバイナリー形式に変換し、変換されたデータに0を付加してλビットにする関数である。
【数152】
【0125】
セットアップ装置10の動作は、実施の形態1と同じである。
【0126】
暗号化装置20は、数153に示すEncアルゴリズムを実行する。
【数153】
【0127】
鍵生成装置30は、数154に示すKeyGenアルゴリズムを実行する。
【数154】
【0128】
復号装置40は、数155に示すDecアルゴリズムを実行する。
【数155】
【0129】
ここでは、(E:con,K:con,D:eq)セッティングについて説明した。しかし、他のセッティングについても同様の考えに基づき実現可能である。E:sep及びK:sepの場合には、EncアルゴリズムにおけるB
mに代えて、集合S毎にB
Uを生成し、KeyGenアルゴリズムにおけるB
nに代えて、集合U毎にB
Sを生成すればよい。