特許第6971917号(P6971917)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

▶ 三菱電機株式会社の特許一覧 ▶ 日本電信電話株式会社の特許一覧

<>
  • 特許6971917-復号装置、暗号化装置及び暗号システム 図000060
  • 特許6971917-復号装置、暗号化装置及び暗号システム 図000061
  • 特許6971917-復号装置、暗号化装置及び暗号システム 図000062
  • 特許6971917-復号装置、暗号化装置及び暗号システム 図000063
  • 特許6971917-復号装置、暗号化装置及び暗号システム 図000064
  • 特許6971917-復号装置、暗号化装置及び暗号システム 図000065
  • 特許6971917-復号装置、暗号化装置及び暗号システム 図000066
  • 特許6971917-復号装置、暗号化装置及び暗号システム 図000067
  • 特許6971917-復号装置、暗号化装置及び暗号システム 図000068
  • 特許6971917-復号装置、暗号化装置及び暗号システム 図000069
  • 特許6971917-復号装置、暗号化装置及び暗号システム 図000070
  • 特許6971917-復号装置、暗号化装置及び暗号システム 図000071
  • 特許6971917-復号装置、暗号化装置及び暗号システム 図000072
  • 特許6971917-復号装置、暗号化装置及び暗号システム 図000073
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6971917
(24)【登録日】2021年11月5日
(45)【発行日】2021年11月24日
(54)【発明の名称】復号装置、暗号化装置及び暗号システム
(51)【国際特許分類】
   H04L 9/30 20060101AFI20211111BHJP
   G09C 1/00 20060101ALI20211111BHJP
【FI】
   H04L9/00 663Z
   G09C1/00 620Z
【請求項の数】7
【全頁数】32
(21)【出願番号】特願2018-110987(P2018-110987)
(22)【出願日】2018年6月11日
(65)【公開番号】特開2019-215391(P2019-215391A)
(43)【公開日】2019年12月19日
【審査請求日】2020年6月11日
(73)【特許権者】
【識別番号】000006013
【氏名又は名称】三菱電機株式会社
(73)【特許権者】
【識別番号】000004226
【氏名又は名称】日本電信電話株式会社
(74)【代理人】
【識別番号】110002491
【氏名又は名称】溝井国際特許業務法人
(72)【発明者】
【氏名】高島 克幸
(72)【発明者】
【氏名】富田 潤一
【審査官】 中里 裕正
(56)【参考文献】
【文献】 国際公開第2014/061324(WO,A1)
【文献】 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日検索]
【文献】 光生滋生,クラウドを支えるこれからの暗号技術,株式会社秀和システム,2015年07月01日,pp.124-132
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/30
G09C 1/00
JSTPlus/JMEDPlus/JST7580(JDreamIII)
IEEE Xplore
(57)【特許請求の範囲】
【請求項1】
一定のサイズの公開情報を入力として定義された暗号化設定情報であって、ベクトルxのサイズに応じたサイズの暗号化設定情報を用いて、前記ベクトルxが暗号化された暗号文ctを取得する暗号文取得部と、
前記公開情報を入力として定義された鍵設定情報であって、ベクトルyのサイズに応じたサイズの鍵設定情報を用いて、前記ベクトルyが設定された秘密鍵skを取得する秘密鍵取得部と、
前記暗号文取得部によって取得された前記暗号文ctを、前記秘密鍵取得部によって取得された前記秘密鍵skで復号して、前記ベクトルxと前記ベクトルyとの内積値を計算する復号部と
を備え
前記暗号化設定情報は、前記ベクトルxの要素毎に生成されたインデックス情報Iが前記公開情報に設定されて定義され、
前記鍵設定情報は、前記ベクトルyの要素毎に生成されたインデックス情報I’であって、前記ベクトルxの対応する要素に対して生成されたインデックス情報Iとの内積値が0になるように生成されたインデックス情報I’が前記公開情報に設定されて定義された復号装置。
【請求項2】
前記暗号文ctは、前記ベクトルxの各要素xを対象として、前記インデックス情報Iと対象の要素xとを設定したベクトルと、前記公開情報である行列Bとの積が群要素に設定された要素[cを含み、
前記秘密鍵skは、前記ベクトルyの各要素yを対象として、前記インデックス情報I’と対象の要素yとを設定したベクトルと、前記行列Bの随伴行列Bとの積が群要素に設定された要素[kを含み、
前記復号部は、前記暗号文ctと前記秘密鍵skとについてのペアリング演算を計算することにより、前記内積値を計算する
請求項に記載の復号装置。
【請求項3】
前記暗号文ctは、1以上の整数mと、i=1,...,mの各整数iについてのインデックス情報Iであるπ(1,i)とについて、数1に示す要素cが群要素に設定された要素[cを含み、
前記秘密鍵skは、整数の集合Sと、前記集合Sに含まれる各整数iについてのインデックス情報I’であるρ(−i,1)とについて、数2に示す要素kが群要素に設定された要素[kを含む
請求項に記載の復号装置。
【数1】
【数2】
【請求項4】
ベクトルxが暗号化された暗号文ctを、ベクトルyが設定された秘密鍵skで復号することにより、前記ベクトルxと前記ベクトルyとの内積値を計算する暗号システムにおける暗号化装置であり、
一定のサイズの公開情報を入力として、暗号化する対象のベクトルxのサイズに応じたサイズの暗号化設定情報を定義する設定情報定義部と、
前記設定情報定義部によって定義された前記暗号化設定情報を用いて、前記ベクトルxを暗号化して暗号文ctを生成する暗号化部と
を備え
前記設定情報定義部は、前記ベクトルxの要素毎に生成されたインデックス情報Iを前記公開情報に設定した情報を、前記暗号化設定情報と定義する暗号化装置。
【請求項5】
前記暗号文ctは、前記ベクトルxの各要素xを対象として、前記インデックス情報Iと対象の要素とを設定したベクトルと、前記公開情報である行列Bとの積が群要素に設定された要素[cを含む前記暗号文ctを生成する
請求項に記載の暗号化装置。
【請求項6】
前記暗号化部は、1以上の整数mと、i=1,...,mの各整数iについてのインデックス情報Iであるπ(1,i)とについて、数3に示す要素cが群要素に設定された要素[cを含む前記暗号文ctを生成する
請求項に記載の暗号化装置。
【数3】
【請求項7】
一定のサイズの公開情報を入力として生成された暗号化設定情報であって、ベクトルxのサイズに応じたサイズの暗号化設定情報を用いて、前記ベクトルxが暗号化された暗号文ctを生成する暗号化装置と、
前記公開情報を入力として生成された鍵設定情報であって、ベクトルyのサイズに応じたサイズの鍵設定情報を用いて、前記ベクトルyが設定された秘密鍵skを生成する鍵生成装置と、
前記暗号化装置によって生成された前記暗号文ctを、前記鍵生成装置によって生成された前記秘密鍵skで復号して、前記ベクトルxと前記ベクトルyとの内積値を計算する復号装置と
を備え
前記暗号化設定情報は、前記ベクトルxの要素毎に生成されたインデックス情報Iが前記公開情報に設定されて定義され、
前記鍵設定情報は、前記ベクトルyの要素毎に生成されたインデックス情報I’であって、前記ベクトルxの対応する要素に対して生成されたインデックス情報Iとの内積値が0になるように生成されたインデックス情報I’が前記公開情報に設定されて定義された暗号システム。
【発明の詳細な説明】
【技術分野】
【0001】
この発明は、内積関数型暗号(以下、IPFE)に関する。
【背景技術】
【0002】
非特許文献1には、IPFE方式が記載されている。IPFEは、実用的な統計処理及び情報処理を、プライバシーを保護したまま行うのに、大変有用である。
【先行技術文献】
【非特許文献】
【0003】
【非特許文献1】Abdalla, M., Bourse, F., De Caro, A., Pointcheval, D.: Simple functional encryption schemes for inner products. In: Katz, J. (ed.) PKC 2015. LNCS, vol. 9020, pp. 733−751. Springer, Heidelberg (Mar / Apr 2015)
【発明の概要】
【発明が解決しようとする課題】
【0004】
非特許文献1に記載されたIPFE方式では、セットアップフェーズにおいて生成されるマスター鍵によって、方式で用いられるベクトルの最大の長さが固定される。つまり、方式で用いられる暗号文及び秘密鍵の最大の長さが固定される。最大の長さが固定された後に、その長さを超えた暗号文及び秘密鍵を扱うことはできない。
セットアップフェーズにおいて、どのようなデータが暗号化されるか、また、暗号文を用いてどのような情報処理が行われるかは決まっていない場合がある。この場合には、暗号文及び秘密鍵の最大の長さを決定することは困難である。なお、最大の長さを非常に長くしておくことが考えられる。しかし、これは、不要な効率の悪化を招くことになる。
この発明は、暗号文及び秘密鍵の最大の長さが限定されない、IPFE方式を構築可能にすることを目的とする。
【課題を解決するための手段】
【0005】
この発明に係る復号装置は、
一定のサイズの公開情報を入力として生成された暗号化設定情報であって、ベクトルxのサイズに応じたサイズの暗号化設定情報を用いて、前記ベクトルxが暗号化された暗号文ctを取得する暗号文取得部と、
前記公開情報を入力として生成された鍵設定情報であって、ベクトルyのサイズに応じたサイズの鍵設定情報を用いて、前記ベクトルyが設定された秘密鍵skを取得する秘密鍵取得部と、
前記暗号文取得部によって取得された前記暗号文ctを、前記秘密鍵取得部によって取得された前記秘密鍵skで復号して、前記ベクトルxと前記ベクトルyとの内積値を計算する復号部と
を備える。
【発明の効果】
【0006】
この発明では、暗号文ctは、一定のサイズの公開情報を入力として生成された暗号化設定情報であって、ベクトルxのサイズに応じたサイズの暗号化設定情報を用いて、ベクトルxが暗号化されて生成される。また、秘密鍵skは、一定のサイズの公開情報を入力として生成された鍵設定情報であって、ベクトルyのサイズに応じたサイズの鍵設定情報を用いて、ベクトルyが設定されて生成される。そして、暗号文ctが秘密鍵skで復号されて、ベクトルxとベクトルyとの内積値が計算される。そのため、暗号文及び秘密鍵の最大の長さが限定されない、IPFE方式を構築可能にすることができる。
【図面の簡単な説明】
【0007】
図1】実施の形態1に係る暗号システム1の構成図。
図2】実施の形態1に係るセットアップ装置10の構成図。
図3】実施の形態1に係る暗号化装置20の構成図。
図4】実施の形態1に係る鍵生成装置30の構成図。
図5】実施の形態1に係る復号装置40の構成図。
図6】実施の形態1に係るセットアップ装置10の動作を示すフローチャート。
図7】実施の形態1に係る暗号化装置20の動作を示すフローチャート。
図8】実施の形態1に係る鍵生成装置30の動作を示すフローチャート。
図9】実施の形態1に係る復号装置40の動作を示すフローチャート。
図10】変形例1に係るセットアップ装置10の構成図。
図11】変形例1に係る暗号化装置20の構成図。
図12】変形例1に係る鍵生成装置30の構成図。
図13】変形例1に係る復号装置40の構成図。
図14】実施の形態2に係る暗号システム1の構成図。
【発明を実施するための形態】
【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(K)は、Kにおける要素を有する全てのn×n行列の集合を示し、GL(K)は、Kにおける要素を有する全てのn×nの正則行列の集合を示す。
【0013】
正則行列Aに対して、Aは、(A−1、つまり随伴行列を示す。
【0014】
巡回群Gιの生成元gιと、行列A及びベクトルaとに対して、[A]ι及び[a]ιは、それぞれ、生成元gιの指数部の行列及びベクトルを示す。つまり、[A]ιは、gιを示し、[a]ιは、gιを示す。
【0015】
数105に示すベクトルx及びベクトルyに対して、数106は、数107によって指数部の内積を計算する関数を示す。
【数105】
【数106】
【数107】
【0016】
***定義***
以下の説明で用いられる用語の定義を説明する。
<IPFE>
IPFEは、マスター秘密鍵mskの所有者がベクトルyに対して秘密鍵skを発行可能であり、ベクトルxの暗号文ctを秘密鍵skで復号するとベクトルxとベクトルyとの内積値だけが明らかになる方式である。
内積値の計算は、数値データに対する重み付けと、統計的な計算に対する利用といった様々な応用が可能である。
【0017】
<双線形群>
双線形群G:=(p,G,G,G,g,g,e)は、素数pと、位数pの巡回群G,G,Gと、巡回群Gの生成元gと、巡回群Gの生成元gと、数108に示す双線形写像eとを備え、以下の双線形性と非退化性との2つの性質を有する。
【数108】
【0018】
(双線形性)
数109が成立する。
【数109】
(非退化性)
生成元g,gに対して、e(g,g)がGの生成元である。
【0019】
<双対ペアリングベクトル空間(以下、DPVS)>
自然数nに対して、数110に示すように、ランダムに双対正規直交基底(B,B)を選択することが可能である。
【数110】
そして、[B]及び[Bは、それぞれ、ベクトル空間V:=G及びV:=Gの双対正規直交基底である。
【0020】
以下の2つの性質が成立する。
(性質1)
数111に示すどんなベクトルx,yに対しても、数112が成立する。
【数111】
【数112】
【0021】
(性質2)
数113に示すどんなベクトルx,...,x及びベクトルy,...,yと、行列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つの条件がある。
ctを暗号文ctのインデックスの集合とし、Sskを秘密鍵skのインデックスの集合とする。このとき、ct−dominant方式では、Sct⊇Sskの場合に限り、暗号文ctが秘密鍵skで復号される。sk−dominant方式では、Sct⊆Sskの場合に限り、暗号文ctが秘密鍵skで復号される。equal方式では、Sct=Sskの場合に限り、暗号文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に示す関数fS,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,...,x)とを入力として、暗号文ctを出力する。ここで、m:=m(λ)は、多項式である。
KeyGenアルゴリズムは、公開パラメータppと、マスター秘密鍵mskと、空でない集合S:=[s]と、インデックス付けされたベクトルy:=(yi∈Sとを入力として、秘密鍵skを出力する。ここで、s:=s(λ)は、多項式である。
Decアルゴリズムは、公開パラメータppと、暗号文ctと、秘密鍵skとを入力として、復号された値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λについての疑似ランダム関数(以下、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λを入力として、双線形群の生成アルゴリズムGBGを実行して、双線形群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を暗号化設定情報として生成する。mは、ベクトルxの要素数である。つまり、設定情報定義部213は、i=1,...,mの各整数iについて、B:=F(i)を計算して、行列Bを暗号化設定情報として扱う。
なお、設定情報定義部213は、生成された行列Bが非正則行列である場合には、識別子⊥を出力して、処理を終了する。
【0054】
(ステップS24:暗号化処理)
暗号化部214は、ステップS23で定義された暗号化設定情報を用いて、ベクトルxを暗号化して暗号文ctを生成する。
具体的には、暗号化部214は、i=1,...,mの各整数iについて、数126に示すように、要素cを計算する。つまり、暗号化部214は、インデックスiが暗号化された暗号化設定情報を用いて、ベクトルxを暗号化して要素cを計算する。
【数126】
暗号化部214は、メモリ12から公開パラメータppである双線形群Gに含まれる群Gの群要素gを読み出す。暗号化部214は、i=1,...,mの各整数iについての各要素cを群要素gの指数部に設定した要素[cを生成する。暗号化部214は、数127に示すように、i=1,...,mの各整数iについての要素[cを暗号文ctとしてメモリ22に書き込む。
【数127】
【0055】
(ステップS25:送信処理)
送信部215は、ステップS24で生成された暗号文ctを復号装置40に送信する。具体的には、送信部215は、メモリ22から暗号文ctを読み出す。送信部215は、通信インタフェース24を介して、暗号文ctを復号装置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を生成する。設定情報定義部313は、行列Bの随伴行列B:=(B−1を鍵設定情報として生成する。つまり、設定情報定義部313は、i∈Sの各整数iについて、B:=F(i)を計算して、行列Bの随伴行列Bを鍵設定情報として扱う。
なお、設定情報定義部313は、生成された行列Bが非正則行列である場合には、識別子⊥を出力して、処理を終了する。
【0061】
(ステップS34:鍵生成処理)
鍵生成部314は、ステップS33で生成された鍵設定情報を用いて、ベクトルyを設定した秘密鍵skを生成する。
具体的には、鍵生成部314は、i∈Sの各整数iについて、数130に示すように、乱数rを生成する。
【数130】
鍵生成部314は、i∈Sの各整数iについて、乱数rを用いて、数131に示すように、要素kを生成する。つまり、鍵生成部314は、インデックスiが暗号化された鍵設定情報を用いて、ベクトルyを暗号化して要素kを計算する。
【数131】
鍵生成部314は、メモリ12から公開パラメータppである双線形群Gに含まれる群Gの群要素gを読み出す。鍵生成部314は、i∈Sの各整数iについて、各要素kを群要素gの指数部に設定した要素[kを生成する。鍵生成部314は、数132に示すように、集合Sと、i∈Sの各整数iについての要素[kとを秘密鍵skとしてメモリ32に書き込む。
【数132】
【0062】
(ステップS35:送信処理)
送信部315は、ステップS34で生成された秘密鍵skを復号装置40に送信する。具体的には、送信部315は、メモリ32から秘密鍵skを読み出す。送信部315は、通信インタフェース34を介して、秘密鍵skを復号装置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を取得する。
具体的には、暗号文取得部412は、通信インタフェース44を介して、暗号化装置20によって送信された暗号文ctを取得する。暗号文取得部412は、暗号文ctをメモリ42に書き込む。
【0067】
(ステップS43:秘密鍵取得処理)
秘密鍵取得部413は、鍵生成装置30によって生成された秘密鍵skを取得する。
具体的には、秘密鍵取得部413は、通信インタフェース44を介して、鍵生成装置30によって送信された秘密鍵skを取得する。秘密鍵取得部413は、秘密鍵skをメモリ42に書き込む。
【0068】
(ステップS44:判定処理)
復号部414は、S⊆[m]であるか否かを判定することにより、復号可能か否かを判定する。
復号部414は、S⊆[m]である場合には、処理をステップS45に進める。一方、復号部414は、S⊆[m]でない場合には、復号できないとして識別子⊥を出力して、処理を終了する。
【0069】
(ステップS45:復号処理)
復号部414は、ステップS42で取得された暗号文ctを、ステップS43で取得された秘密鍵skで復号して、ベクトルxとベクトルyとの内積値を計算する。
具体的には、復号部414は、公開パラメータppと暗号文ctと秘密鍵skとをメモリ42から読み出す。復号部414は、数134に示すように、暗号文ctと秘密鍵skとについてのペアリング演算を計算することにより、値hを計算する。
【数134】
復号部414は、−|S|Xλλから|S|Xλλまでの範囲からe(g,g=hであるような値dを探索する。ここで、|S|は、集合Sの要素数である。復号部414は、値dが見つかった場合には、値dを出力する。一方、復号部414は、値dが見つからない場合には、識別子⊥を出力する。
【0070】
数135に示すように、値hは計算される。
【数135】
したがって、e(g,g=hであるような値dは、ベクトルxとベクトルyとの内積値になる。
【0071】
つまり、復号装置40は、数136に示すDecアルゴリズムを実行する。
【数136】
【0072】
***実施の形態1の効果***
以上のように、実施の形態1に係る暗号システム1では、暗号文ctは、一定のサイズの公開情報を入力として生成された暗号化設定情報であって、ベクトルxのサイズに応じたサイズの暗号化設定情報を用いて、ベクトルxが暗号化されて生成される。また、秘密鍵skは、一定のサイズの公開情報を入力として生成された鍵設定情報であって、ベクトルyのサイズに応じたサイズの鍵設定情報を用いて、ベクトルyが設定されて生成される。そして、暗号文ctが秘密鍵skで復号されて、ベクトルxとベクトルyとの内積値が計算される。そのため、暗号文及び秘密鍵の最大の長さが限定されない、IPFE方式を構築可能にすることができる。
【0073】
暗号化設定情報及び鍵設定情報は、公開情報を入力として、PRFにより生成される。これにより、一定のサイズの公開情報からランダムな暗号化設定情報及び鍵設定情報を生成することができる。
【0074】
また、暗号文ctの各要素[cを構成する要素cに乱数zが含まれる。これにより、暗号文ctの一部の要素を、別途生成された他の暗号文の要素と入れ替えるといったことができないようになっている。つまり、乱数zにより、暗号文ctがバインドされている。
同様に、秘密鍵skの各要素[kを構成する要素kに乱数rが含まれる。これにより、秘密鍵skの一部の要素を、別途生成された他の秘密鍵の要素と入れ替える、一部の要素を削除するといったことができないようになっている。つまり、乱数rにより、秘密鍵skがバインドされている。
【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,...,x)とを入力として、暗号文ctを出力する。ここで、m:=m(λ)は、多項式である。
KeyGenアルゴリズムは、公開鍵pkと、マスター秘密鍵mskと、空でない集合S:=[s]と、インデックス付けされたベクトルy:=(yi∈Sとを入力として、秘密鍵skを出力する。ここで、s:=s(λ)は、多項式である。
Decアルゴリズムは、公開鍵pkと、暗号文ctと、秘密鍵skとを入力として、復号された値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λを入力として、双線形群の生成アルゴリズムGBGを実行して、双線形群Gを選択する。マスター鍵生成部112は、数137に示すように、ランダムに7×7の正則行列Bを生成する。マスター鍵生成部112は、正則行列Bの随伴行列B:=(B−1を生成する。マスター鍵生成部112は、双線形群Gと正則行列B及び随伴行列Bとをメモリ12に書き込む。
【数137】
【0092】
(ステップS13:送信処理)
送信部113は、ステップS12で選択された双線形群Gと、i=1,...,4の各整数iについての正則行列Bのi行目の要素を群要素gの指数部に設定した要素[bとを公開鍵pkとして、公開する。具体的には、送信部113は、メモリ12から双線形群Gを読み出す。送信部113は、双線形群Gに含まれる要素gを用いて、i=1,...,4の各整数iについての正則行列Bのi行目の要素を群要素gの指数部に設定して、要素[bを生成する。送信部113は、双線形群G及び要素[b,...,[bを公開鍵pkとして公開用のサーバに送信するといった方法により、公開する。これにより、暗号化装置20と鍵生成装置30と復号装置40とは、双線形群G及び要素[b,...,[bを取得可能になる。
また、送信部113は、i=1,...,4の各整数iについての随伴行列Bのi行目の要素bをマスター秘密鍵mskとして、鍵生成装置30に秘密裡に送信する。具体的には、送信部113は、メモリ12から随伴行列Bを読み出す。送信部113は、i=1,...,4の各整数iについての随伴行列Bのi行目の要素bをマスター秘密鍵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,...,[bを取得する。
具体的には、マスター鍵取得部211は、通信インタフェース24を介して、公開された公開鍵pkを取得する。マスター鍵取得部211は、公開鍵pkをメモリ22に書き込む。
【0097】
(ステップS23:設定情報生成処理)
設定情報定義部213は、ステップS21で取得された一定サイズの公開情報にベクトルxの要素毎に生成されたインデックス情報Iを設定した情報を、ステップS22で取得された暗号化する対象のベクトルxのサイズに応じたサイズの暗号化設定情報として定義する。
具体的には、設定情報定義部213は、i=1,...,mの各整数iについて、数139に示すように、乱数πを生成する。
【数139】
そして、設定情報定義部213は、i=1,...,mの各整数iについて、数140に示すように、インデックス情報Iである乱数πと乱数πに値iを乗じた値との組を設定した情報を、暗号化設定情報Bと定義する。
【数140】
つまり、実施の形態1とは方法は異なるが、実施の形態1と同様に、設定情報定義部213は、インデックスiを暗号化して、インデックスiが設定された暗号化設定情報を定義する。
【0098】
(ステップS24:暗号化処理)
暗号化部214は、ステップS23で定義された暗号化設定情報を用いて、ベクトルxを暗号化して暗号文ctを生成する。
具体的には、暗号化部214は、i=1,...,mの各整数iについて、数141に示すように、要素x及び乱数zを設定した情報を、要素cと定義する。
【数141】
つまり、要素cは、数142に示すように定義される。
【数142】
暗号化部214は、メモリ12から公開パラメータppである双線形群Gに含まれる群Gの群要素gを読み出す。暗号化部214は、i=1,...,mの各整数iについての各要素cを群要素gの指数部に設定した要素[cを生成する。暗号化部214は、数143に示すように、i=1,...,mの各整数iについての要素[cを暗号文ctとしてメモリ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,...,[bと、マスター秘密鍵mskである要素b,...,bとを取得する。
具体的には、マスター鍵取得部311は、通信インタフェース34を介して、公開された公開鍵pkを取得するとともに、セットアップ装置10によって送信されたマスター秘密鍵mskを取得する。マスター鍵取得部311は、公開鍵pk及びマスター秘密鍵mskをメモリ32に書き込む。
【0103】
(ステップS33:設定情報生成処理)
設定情報定義部313は、ステップS31で取得された一定サイズの秘密情報であるマスター秘密鍵mskである要素b,...,bを入力として、ステップS32で取得されたベクトルyのサイズに応じたサイズの鍵設定情報を定義する。
具体的には、設定情報定義部313は、設定情報定義部313は、メモリ32からマスター秘密鍵mskと、集合Sとを読み出す。設定情報定義部313は、i∈Sの各整数iについて、数145に示すように、乱数ρを生成する。
【数145】
そして、設定情報定義部313は、i∈Sの各整数iについて、数146に示すように、インデックス情報I’である乱数ρに値−iを乗じた値と乱数ρとの組を設定した情報を、鍵設定情報Bと生成する。
【数146】
つまり、実施の形態1とは方法は異なるが、実施の形態1と同様に、設定情報定義部313は、インデックスiを暗号化して、インデックスiが設定された鍵設定情報を生成する。
【0104】
(ステップS34:鍵生成処理)
鍵生成部314は、ステップS33で定義された鍵設定情報を用いて、ベクトルyを設定した秘密鍵skを生成する。
具体的には、鍵生成部314は、i∈Sの各整数iについて、数147に示すように、乱数rを生成する。
【数147】
鍵生成部314は、i∈Sの各整数iについて、乱数rを用いて、数148に示すように、要素kを生成する。
【数148】
つまり、要素kは、数149に示すようになる。
【数149】
鍵生成部314は、メモリ12から公開パラメータppである双線形群Gに含まれる群Gの群要素gを読み出す。鍵生成部314は、i∈Sの各整数iについて、各要素kを群要素gの指数部に設定した要素[kを生成する。鍵生成部314は、数150に示すように、集合Sと、i∈Sの各整数iについての要素[kとを秘密鍵skとしてメモリ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’は、内積値が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の要素cと、秘密鍵skの要素kとの乱数の設定方法に影響する。具体的には、図7のステップS24で設定された乱数zと、図8のステップS34で設定された乱数rとの設定方法に影響する。
実施の形態1,2では、D:ct−domであったため、秘密鍵skの要素kに乱数rが設定された。一方、要素kにおける乱数rが設定された要素に対応する、要素cにおける要素には乱数zが設定された。これにより、秘密鍵skがバインドされるとともに、暗号文ctがバインドされた。ここで、乱数rは、秘密鍵skの集合Sに含まれる各整数iについて、乱数rの和が0になるように生成された。つまり、全ての要素kについての乱数rの和が0になるように乱数rは生成された。
他のセッティングの場合には、D:zzに応じて、乱数rと乱数zとが、要素cと要素kとのどちらに設定されるかが変更される。具体的には、D:ct−domの場合には、上述した通り、要素kに乱数r設定され、要素cに乱数zが設定される。この場合には、全ての要素kについての乱数rの和が0になるように乱数rは生成される。D:sk−domの場合には、要素cに乱数rが設定され、要素kに乱数zが設定される。この場合には、全ての要素cについての乱数rの和が0になるように乱数rは生成される。D:eqの場合には、要素kに乱数rが設定され、要素cに乱数zが設定されるとともに、要素cに乱数r’が設定され、要素kに乱数z’が設定される。この場合には、全ての要素kについての乱数rの和が0になるように乱数rは生成され、全ての要素cについての乱数r’の和が0になるように乱数r’は生成される。なお、乱数r’は、乱数rとは異なる乱数であるが、乱数rと同様の役割を果たす乱数である。乱数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に代えて、集合S毎にBを生成し、KeyGenアルゴリズムにおけるBに代えて、集合U毎にBを生成すればよい。
【符号の説明】
【0130】
1 暗号システム、10 セットアップ装置、11 プロセッサ、12 メモリ、13 ストレージ、14 通信インタフェース、15 電子回路、111 受付部、112 マスター鍵生成部、113 送信部、20 暗号化装置、21 プロセッサ、22 メモリ、23 ストレージ、24 通信インタフェース、25 電子回路、211 マスター鍵取得部、212 ベクトル取得部、213 設定情報定義部、214 暗号化部、215 送信部、30 鍵生成装置、31 プロセッサ、32 メモリ、33 ストレージ、34 通信インタフェース、35 電子回路、311 マスター鍵取得部、312 ベクトル取得部、313 設定情報定義部、314 鍵生成部、315 送信部、40 復号装置、41 プロセッサ、42 メモリ、43 ストレージ、44 通信インタフェース、45 電子回路、411 公開鍵取得部、412 暗号文取得部、413 秘密鍵取得部、414 復号部。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14