【文献】
YASUDA, Satoshi et al.,Formal Treatment of Verifiable Privacy-Preserving Data-Aggregation Protocols,LNCS, ProveSec 2018,Springer Nature Switzerland AG,2018年,Vol.11192,p.415-422
【文献】
安田 雅哉 ほか,準同型暗号を用いた複数企業間の顧客情報分析,FIT2013 第12回情報科学技術フォーラム 講演論文集,日本,一般社団法人情報処理学会、社団法人電子情報通信学会,2013年08月20日,第4分冊、RL−003,p.15−22
(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0010】
以下、本発明の実施の形態について、図を用いて説明する。以下の実施の形態の説明及び図面において、同一の符号を付したものは、同一の部分又は相当する部分を示す。
【0011】
実施の形態1.
***構成の説明***
図1は、本実施の形態に係る秘匿情報処理システム100の構成例を示す。
【0012】
図1に示すように、秘匿情報処理システム100は、共通パラメータ生成装置200と、複数のデータ供給者鍵生成装置300と、データ利用者鍵生成装置400と、複数の暗号化装置500と、準同型演算装置600と、復号装置700とを有する。
【0013】
インターネット101は、共通パラメータ生成装置200と、データ供給者鍵生成装置300と、データ利用者鍵生成装置400と、暗号化装置500と、準同型演算装置600と、復号装置700とを接続する通信路である。インターネット101はネットワークの例である。インターネット101の代わりに、他の種類のネットワークが用いられてもよい。
【0014】
共通パラメータ生成装置200は、例えば、PC(Personal Computer)である。
共通パラメータ生成装置200は、秘匿情報処理システム100で共通に用いられるパラメータである共通パラメータを生成する。更に、共通パラメータ生成装置200は、生成した共通パラメータを、インターネット101を介して、複数のデータ供給者鍵生成装置300と、データ利用者鍵生成装置400と、複数の暗号化装置500と、準同型演算装置600と、復号装置700へ送信する。
【0015】
データ供給者鍵生成装置300は、例えば、PCである。
データ供給者鍵生成装置300は、署名鍵と検証鍵を生成する。そして、データ供給者鍵生成装置300は、署名鍵を暗号化装置500へ送信する。また、データ供給者鍵生成装置300は、検証鍵を、復号装置700へ送信する。
【0016】
データ利用者鍵生成装置400は、例えば、PCである。
データ利用者鍵生成装置400は、公開鍵と秘密鍵を生成する。そして、データ利用者鍵生成装置400は、公開鍵を暗号化装置500へ送信する。また、データ利用者鍵生成装置400は、秘密鍵を復号装置700へ送信する。
【0017】
暗号化装置500は、例えば、PCである。
暗号化装置500は、データ供給者鍵生成装置300から署名鍵を受信する。また、暗号化装置500は、データ利用者鍵生成装置400から公開鍵を受信する。そして、暗号化装置500は、外部から入力された平文データ(以下、単に「平文」という)を公開鍵及び署名鍵を用いて暗号化し、暗号化により得られた暗号文データ(以下、単に「暗号文」という)を出力する。
【0018】
準同型演算装置600は、例えば、大容量の記憶媒体を持つ計算機である。
準同型演算装置600は、データ保管装置としても機能する。
すなわち、準同型演算装置600は、暗号化装置500から暗号文の保管要求があれば、暗号文を保管する。
準同型演算装置600は、保管している暗号文に対して準同型演算を行う。準同型演算装置600は、保管している暗号文と、入力された演算から、演算後暗号文を生成する。また、準同型演算装置600は、演算後暗号文を復号装置700へ送信する。
【0019】
復号装置700は、例えば、PCである。
復号装置700は、データ供給者鍵生成装置300から検証鍵を受信する。また、復号装置700は、データ利用者鍵生成装置400から秘密鍵を受信する。また、復号装置700は、準同型演算装置600から演算後暗号文を受信する。そして、復号装置700は、外部から入力された演算と、秘密鍵と、検証鍵とを用いて、演算後暗号文の復号結果を出力する。
【0020】
なお、
図1では、データ供給者鍵生成装置300と暗号化装置500が異なる計算機で実現されている。データ供給者鍵生成装置300と暗号化装置500とが同じ計算機で実現されていてもよい。つまり、単一のPCにデータ供給者鍵生成装置300の機能と暗号化装置500の機能とが含まれていてもよい。
00000
また、
図1では、共通パラメータ生成装置200と、データ利用者鍵生成装置400と、復号装置700とが異なる計算機で実現されている。共通パラメータ生成装置200と、データ利用者鍵生成装置400と、復号装置700のうちの少なくとも2つが同じ計算機で実現されていてもよい。つまり、単一のPCに共通パラメータ生成装置200の機能とデータ利用者鍵生成装置400の機能と復号装置700の機能のうちの少なくとも2つが含まれていてもよい。
【0021】
図2は、共通パラメータ生成装置200の機能構成例を示す。
【0022】
図2に示すように、共通パラメータ生成装置200は、入力部201と、共通パラメータ生成部202と、送信部203を有する。
図示していないが、共通パラメータ生成装置200は、共通パラメータ生成装置200の各要素で使用されるデータを記憶する記憶装置を有する。
【0023】
入力部201は、パラメータλを受信する。そして、入力部201は、受信したパラメータλを共通パラメータ生成部202へ送信する。
【0024】
共通パラメータ生成部202は、入力部201からパラメータλを受信する。そして、共通パラメータ生成部202は、パラメータλを用いて、秘匿情報処理システム100で共通に用いられる共通パラメータppを生成する。共通パラメータ生成部202は、生成した共通パラメータppを送信部203へ送信する。
図示していないが、共通パラメータ生成部202は、共通パラメータppを生成するために、乱数生成機能を有してもよい。
【0025】
送信部203は、共通パラメータ生成部202で生成された共通パラメータppを、複数のデータ供給者鍵生成装置300と、データ利用者鍵生成装置400と、複数の暗号化装置500と、準同型演算装置600と、復号装置700へ送信する。
【0026】
図3は、データ供給者鍵生成装置300の機能構成例を示す。
【0027】
図3に示すように、データ供給者鍵生成装置300は、受信部301と、鍵生成部302と、送信部303を有する。
図示していないが、データ供給者鍵生成装置300は、データ供給者鍵生成装置300の各要素で使用されるデータを記憶する記憶装置を有する。
【0028】
受信部301は、共通パラメータ生成装置200から共通パラメータppを受信する。そして、受信部301は、共通パラメータppを鍵生成部302へ送信する。
【0029】
鍵生成部302は、受信部301から共通パラメータppを受信する。そして、鍵生成部302は、共通パラメータppを用いて、署名鍵sskと検証鍵spkを生成する。そして、鍵生成部302は、生成した署名鍵sskと検証鍵spkを送信部303へ送信する。
図示していないが、鍵生成部302は、署名鍵sskと検証鍵spkを生成するために、乱数生成機能を有してもよい。
【0030】
送信部303は、鍵生成部302で生成された署名鍵sskを、暗号化装置500へ送信する。
また、送信部303は、鍵生成部302で生成された検証鍵spkを復号装置700へ送信する。
【0031】
図4は、データ利用者鍵生成装置400の機能構成例を示す。
データ利用者鍵生成装置400の動作手順は、鍵生成方法に相当する。また、データ利用者鍵生成装置400の動作を実現するプログラムは、鍵生成プログラムに相当する。
【0032】
図4に示すように、データ利用者鍵生成装置400は、受信部401と、鍵生成部402と、送信部403を有する。
図示していないが、データ利用者鍵生成装置400は、データ利用者鍵生成装置400の各要素で使用されるデータを記憶する記憶装置を有する。
【0033】
受信部401は、共通パラメータ生成装置200から共通パラメータppを受信する。そして、受信部401は、受信した共通パラメータppを鍵生成部402へ送信する。
受信部401により行われる処理は受信処理に相当する。
【0034】
鍵生成部402は、受信部401から共通パラメータppを受信する。そして、鍵生成部402は、共通パラメータppを用いて、公開鍵vpkと秘密鍵vskを生成する。そして、鍵生成部402は、生成した公開鍵vpkと秘密鍵vskを送信部403へ送信する。
図示していないが、鍵生成部402は、公開鍵vpkと秘密鍵vskを生成するために、乱数生成機能を有してもよい。
鍵生成部402により行われる処理は鍵生成処理に相当する。
【0035】
送信部403は、鍵生成部402で生成された公開鍵vpkを、暗号化装置500へ送信する。また、送信部403は、鍵生成部402で生成された秘密鍵vskを復号装置700へ送信する。
【0036】
図5は、暗号化装置500の機能構成例を示す。
【0037】
図5に示すように、暗号化装置500は、受信部501と、鍵保管部502と、入力部503と、暗号化部504と、送信部505を有する。
図示していないが、暗号化装置500は、暗号化装置500の各要素で使用されるデータを記憶する記憶装置を有する。
【0038】
受信部501は、データ供給者鍵生成装置300から署名鍵sskを受信する。また、受信部501は、データ利用者鍵生成装置400から公開鍵vpkを受信する。そして、受信部501は、受信した署名鍵sskと公開鍵vpkを鍵保管部502へ送信する。
【0039】
鍵保管部502は、受信部501から、署名鍵sskと公開鍵vpkを受信し、受信した署名鍵sskと公開鍵vpkを保管する。
【0040】
入力部503は、外部から平文mを受信する。そして、入力部503は、受信した平文mを暗号化部504へ送信する。
【0041】
暗号化部504は、鍵保管部502から署名鍵sskと公開鍵vpkを受信する。また、暗号化部504は、入力部503から平文mを受信する。そして、暗号化部504は、受信した平文mに、署名鍵sskと公開鍵vpkと適用して、暗号文cを生成する。そして、暗号化部504は、生成した暗号文cを送信部505へ送信する。
図示していないが、暗号化部504は、暗号文cを生成するために、乱数生成機能を有してもよい。
【0042】
送信部505は、暗号化部504で生成された暗号文cを、準同型演算装置600へ送信する。
【0043】
図6は、準同型演算装置600の機能構成例を示す。
図6に示すように、準同型演算装置600は、受信部601と、暗号文保管部602と、入力部603と、準同型演算部604と、送信部605を有する。
図示していないが、準同型演算装置600は、準同型演算装置600の各要素で使用されるデータを記憶する記憶装置を有する。
【0044】
受信部601は、暗号化装置500から暗号文cを受信する。そして、受信部601は、受信した暗号文cを暗号文保管部602へ送信する。
【0045】
暗号文保管部602は、受信部601から暗号文cを受信し、受信した暗号文cを保管する。
【0046】
入力部603は、外部から演算fを受信し、受信した演算fを準同型演算部604へ送信する。
【0047】
準同型演算部604は、暗号文保管部602から複数の暗号文cと、入力部603から演算fを受信する。そして、準同型演算部604は、複数の暗号文cに演算fを行って、演算後暗号文c*を生成し、生成した演算後暗号文c*を送信部605へ送信する。
【0048】
送信部605は、準同型演算部604で生成された演算後暗号文c*を、復号装置700へ送信する。
【0049】
図7は、復号装置700の機能構成例を示す。
【0050】
図7に示すように、復号装置700は、受信部701と、鍵保管部702と、入力部703と、復号処理部704と、送信部705を有する。
図示していないが、復号装置700は、復号装置700の各要素で使用されるデータを記憶する記憶装置を有する。
【0051】
受信部701は、データ供給者鍵生成装置300から検証鍵spkを受信する。また、受信部701は、データ利用者鍵生成装置400から秘密鍵vskを受信する。そして、受信部701は、受信した検証鍵spkと秘密鍵vskとを鍵保管部702へ送信する。
また、受信部701は、準同型演算装置600から演算後暗号文c*を受信し、受信した演算後暗号文c*を復号処理部704へ送信する。
【0052】
鍵保管部702は、受信部701から検証鍵spkと秘密鍵vskを受信し、受信した検証鍵spkと秘密鍵vskを保管する。
【0053】
入力部703は、外部から演算fを受信し、受信した演算fを復号処理部704へ送信する。
【0054】
復号処理部704は、鍵保管部702から検証鍵spkと秘密鍵vskと、演算後暗号文c*とを受信する。また、復号処理部704は、入力部703から演算fを受信する。そして、復号処理部704は、受信した演算後暗号文c*に検証鍵spkと秘密鍵vskと演算fを適用して、復号結果m*を生成し、生成した復号結果m*を送信部705へ送信する。
【0055】
送信部805は、復号処理部804で生成された復号結果m*を出力する。
【0056】
***動作の説明***
次に、本実施の形態に係る秘匿情報処理システム100に含まれる各装置の動作例を説明する。
なお、各装置の動作例を説明する前に、以下で説明における記法と定義を説明する。
【0057】
非特許文献1に記載の方法は、離散対数に基づく暗号方式を用いて構成されている。しかし、このような暗号方式は、量子コンピュータが実用化された場合、安全性が失われてしまうことが知られている。本実施の形態では、量子コンピュータに対しても耐性があるとされている格子暗号が用いられる。このように、本実施の形態においては、耐量子性を持つ任意の電子署名方式を利用できるため、利用する電子署名アルゴリズムを一般化して(Gen,Sig,Ver)として表す。
[a||b]は、ベクトルまたは行列aとベクトルまたは行列bとの連結を表す。
行列Aに対してA
Tを、行列Aに対する転置行列とする。
自然数nに対してI
nを(n×n)の単位行列とする。
任意の自然数nと多項式環Rに対して、R
nを多項式環Rの要素である多項式の複数の係数の各々をnで除算して得られた余りが複数の係数の各々である多項式を要素に持つ多項式環とする。
【0058】
図8は、共通パラメータ生成装置200の動作例を示すフローチャートである。
【0059】
ステップS201において、入力部201は、パラメータλを受信し、受信したパラメータλを共通パラメータ生成部202へ送信する。
【0060】
ステップS202において、共通パラメータ生成部202は、パラメータλをもとにセットアップアルゴリズムSetupを実行し、共通パラメータppを生成する。そして、共通パラメータ生成部202は、生成した共通パラメータppを送信部203へ送信する。
セットアップアルゴリズムSetupは、例えば、以下のような、共通パラメータppを生成するアルゴリズムである。
【0061】
Setup(1
λ):
qをパラメータλに依存して決定される2以上の整数とする。
Nを任意の2の冪数とし、kを(N+2)以下の整数とする。
χを、多項式環R=Z[X]/<X
N+1>上の分布とする。なお、多項式環Rに含まれる「Z」はベクトルである。
βを任意の整数p以下の小さな整数とする。
共通パラメータpp=(λ,q,N,k,β,R,χ)とする。
【0062】
ステップS203において、送信部203は、共通パラメータppを、複数のデータ供給者鍵生成装置300と、データ利用者鍵生成装置400と、複数の暗号化装置500と、準同型演算装置600と、復号装置700へ送信する。
【0063】
図9は、データ供給者鍵生成装置300の動作例を示すフローチャートである。
【0064】
ステップS301において、受信部301は、共通パラメータ生成装置200から共通パラメータppを受信し、受信した共通パラメータppを鍵生成部302へ送信する。
【0065】
ステップS302において、鍵生成部302は、共通パラメータppをもとにデータ供給者鍵生成アルゴリズムSKGenを実行し、署名鍵sskと検証鍵spkを生成する。
そして、鍵生成部302は、生成した署名鍵sskと検証鍵spkを送信部303へ送信する。
データ供給者鍵生成アルゴリズムSKGenは、例えば、以下のような、署名鍵sskと検証鍵spkを生成するアルゴリズムである。
【0066】
SKGen(pp):
署名鍵生成アルゴリズムSig(1
λ)を実行し、生成された署名鍵skと検証鍵pkを、SKGenアルゴリズムの出力(ssk,spk)=(sk,pk)として出力する。
【0067】
ステップS303において、送信部303は、鍵生成部302で生成された署名鍵sskを暗号化装置500へ送信し、検証鍵spkを復号装置700へ送信する。
【0068】
図10は、データ利用者鍵生成装置400の動作例を示すフローチャートである。
【0069】
ステップS401において、受信部401は、共通パラメータ生成装置200から共通パラメータppを受信し、受信した共通パラメータppを鍵生成部402へ送信する。
【0070】
ステップS402において、鍵生成部402は、共通パラメータppをもとにデータ利用者鍵生成アルゴリズムVKGenを実行し、公開鍵vpkと秘密鍵vskを生成する。
そして、鍵生成部402は、生成した公開鍵vpkと秘密鍵vskを送信部403へ送信する。
データ利用者鍵生成アルゴリズムVKGenは、例えば、以下のような、公開鍵vpkと秘密鍵vskを生成するアルゴリズムである。
【0071】
VKGen(pp):
分布χから多項式s’を選択し、s=[1||s’]により、選択した多項式s’をベクトル化してベクトルsを取得する。
多項式環R
qからN個の多項式をランダムに選択し、選択したN個の多項式をベクトル化してベクトルaを取得する。
分布χからN個の多項式を選択し、選択したN個の多項式をベクトル化してベクトルeを取得する。
整数pを用いて、b=s’a+peを計算して、ベクトルbを取得する。
A1=[b||−a]により、ベクトルbとベクトル(−a)とを連結して、(N×2)の行列A1を生成する。
(vpk,vsk)=(A1,(s,A1))を出力する。つまり、行列A1はそのまま公開鍵vpkとして用いられる。
【0072】
ステップS403において、送信部403は、鍵生成部402で生成された公開鍵vpkを暗号化装置500へ送信し、秘密鍵vskを復号装置700へ送信する。
なお、後述するように、暗号化装置500は、公開鍵vpk、つまり行列A1を、データ暗号化のための暗号化鍵として用いることができ、更に、行列A1から準同型演算のコミットメント鍵を生成することができる。
【0073】
図11は、暗号化装置500の動作例を示すフローチャートである。
【0074】
ステップS501において、受信部501は、データ供給者鍵生成装置300から署名鍵sskを受信し、データ利用者鍵生成装置400から公開鍵vpkを受信する。そして、受信部501は、受信した署名鍵sskと公開鍵vpkを鍵保管部502へ送信する。
【0075】
ステップS502において、鍵保管部502は、署名鍵sskと公開鍵vpkを受信し、受信した署名鍵sskと公開鍵vpkを保管する。
【0076】
ステップS503において、入力部503は、平文mを受信し、受信した平文mを暗号化部504へ送信する。
【0077】
ステップS504において、暗号化部504は、署名鍵sskと公開鍵vpkと平文mをもとに暗号化アルゴリズムEncを実行し、暗号文cを生成する。そして、暗号化部504は、生成した暗号文cを送信部505へ送信する。
暗号化アルゴリズムEncは、例えば、以下のような、暗号文cを生成するアルゴリズムである。
【0078】
Enc(ssk,vpk,m∈R
q):
任意の文字列からなるタグtを生成する。タグtは暗号文cごとに一意に生成される必要がある。タグtは、例えば、署名鍵sskに対応するindexと暗号文cの生成時刻から生成される。
暗号文cは次の要素(c1,{c2.1,…,c2.k},C,σ)と署名鍵sskに対応するindexから構成される。
1.多項式環R
2からN個の多項式をランダムに選択し、選択した多項式をベクトル化してベクトルr1を取得する。
c1=[m||0]+(A1)
T・r1により、ベクトルc1を取得する。
2.多項式環Rから係数の最大値がβ以下となる多項式をk個ランダムに選択し、選択結果をr2=(r2.1,…,r2.k)と定義する。
(N×2)の行列である行列A1(公開鍵vpk)から、任意の位置の(k−2)×2の行列を抽出し、抽出した行列を転置して、行列A2’を取得する。
A2=[I
2||A2’]により行列A2を取得する。
C=A2・r2+[0||m]により、コミットメント鍵Cを取得する。
3.{1,…,k}の全ての要素iに対して、以下を行う。
多項式環R
2からN個の多項式をランダムに選択し、選択した多項式をベクトル化しベクトルr3.iを取得する。
c2.i=[r2.i||0]+(A1)
T・r3.iを計算する。
4.署名アルゴリズムSig(ssk,C||t)を実行し、実行結果を署名σとして取得する。
最後に、署名鍵sskに対応するindexと暗号文c(c1,(c2.1,…,c2.k),C,σ)を出力する。
【0079】
ステップS505において、送信部505は、暗号化部504で生成された暗号文cを、準同型演算装置600へ送信する。
【0080】
図12は、準同型演算装置600の動作例を示すフローチャートである。
【0081】
ステップS601において、受信部601は、暗号化装置500から暗号文cを受信し、受信した暗号文cを暗号文保管部602へ送信する。
【0082】
ステップS602において、暗号文保管部602は、暗号文cを受信し、受信した暗号文cを保管する。
【0083】
ステップS603において、入力部603は、演算fを受信し、受信した演算fを準同型演算部604へ送信する。
【0084】
ステップS604において、準同型演算部604は、保管された複数の暗号文cと演算fをもとに準同型演算アルゴリズムEvalを実行し、演算後暗号文c*を生成する。そして、準同型演算部604は、生成した演算後暗号文c*を送信部605へ送信する。
ここでは、例として、暗号文c
(1)=(index
(1),(c1
(1),(c2.1
(1),…,c2.k
(1)),C
(1),σ
(1))),…,c
(h)=(index
(h),(c1
(h),(c2.1
(h),…,c2.k
(h)),C
(h),σ
(h)))と演算f(m1,…,mh)=w1・m1+…+wh・mhを用いて説明する。このとき、c
(1)からc
(h)は、すべて同じindexに対応する暗号文でもよい。また、c
(1)からc
(h)は、すべて異なるindexに対応する暗号文でもよい。また、c
(1)からc
(h)は、一部が同じindexに対応する暗号文でもよい。
【0086】
ステップS605において、送信部605は、準同型演算部604で生成された演算後暗号文c*を、復号装置700へ送信する。
【0087】
図13は、復号装置700の動作例を示すフローチャートである。
【0088】
ステップS701において、受信部701は、データ供給者鍵生成装置300から検証鍵spkを受信し、データ利用者鍵生成装置400から秘密鍵vskを受信し、受信した検証鍵spkと秘密鍵vskを鍵保管部702へ送信する。
【0089】
ステップS702において、鍵保管部702は、検証鍵spkと秘密鍵vskを受信し、受信した検証鍵spkと秘密鍵vskを保管する。
【0090】
ステップS703において、受信部701は、準同型演算装置600から演算後暗号文c*を受信し、受信した演算後暗号文c*を復号処理部704へ送信する。
【0091】
ステップS704において、入力部703は、演算fを受信し、受信した演算fを復号処理部704へ送信する。
【0092】
ステップS705において、復号処理部704は、複数の検証鍵spkと秘密鍵vskと演算後暗号文c*と演算fをもとに復号アルゴリズムDecを実行し、復号結果m*を生成し、送信部705へ送信する。ここでは、例として、以下に示す演算後暗号文c*と演算f(m1,…,mh)=w1・m1+…+wh・mhを用いて説明する。
【0094】
Dec(spk
(1),…,spk
(h),vsk,c*,f):
Encアルゴリズムで使用した、暗号文cに一意に対応するタグtを復元する。例えば、indexと暗号文cの生成時刻からタグtを復元する。
次に、以下のステップ(1)からステップ(5)を順に実行する。
(1){1,…,h}の全ての要素iについて、検証アルゴリズムVer(spk
(i),C
(i)||t,σ
(i))を実行し、すべてのiについて検証を通過した場合、次のステップに進む。すべてのiについて検証を通過しない場合は、エラーを表す記号⊥を出力して動作を停止する。
【0096】
ステップS706において、送信部705は、復号処理部704で生成された復号結果m*を出力する。
【0097】
***実施の形態の効果の説明***
非特許文献1に記載の方法では、暗号化装置への入力として、署名鍵と公開鍵の他にコミットメント鍵と呼ばれる鍵が必要である。本実施の形態によれば、暗号化装置500において行列A1からコミットメント鍵の生成が可能である。このため、暗号化装置500には、署名鍵と公開鍵(行列A1)のみ入力すればよく、管理すべき鍵の個数を減らすことができる。
【0098】
非特許文献1に記載の方法は、離散対数に基づく暗号方式を用いて構成されている。しかし、このような暗号方式は、量子コンピュータが実用化された場合、その安全性が失われてしまうことが知られている。本実施の形態では、量子コンピュータに対しても耐性があるとされている格子暗号を用いているため、量子コンピュータが実用化された場合でも、安全性が失われない。
【0099】
また、本実施の形態では、準同型演算装置600を用いることにより、クラウドサーバなどを用いたアグリゲータに安全にデータの収集と計算を委託することができる。ここで、「安全に」の意味は、データ供給者のデータがアグリゲータとデータ利用者に漏れないこと、計算結果がデータ供給者とアグリゲータに漏れないこと、計算結果が正しい演算によるものであることを確認可能であることを指す。
【0100】
また、本実施の形態では、準同型演算装置600が実行した演算fと、復号装置700に入力する演算f’が一致する場合のみ、復号装置700が復号結果m*を出力する。そのため、準同型演算装置600が正しく演算fを実行しなかった場合、演算fと演算f’とが一致せず、復号装置700による復号結果を得られない。このため、復号装置700が実行した演算が正しくなかったことを検出することができる。
【0101】
***ハードウェア構成の説明***
最後に、共通パラメータ生成装置200と、データ供給者鍵生成装置300と、データ利用者鍵生成装置400と、暗号化装置500と、準同型演算装置600と、復号装置700のハードウェア構成例を説明する。
【0102】
図14は、共通パラメータ生成装置200のハードウェア構成例を示す。
図14に示すように、共通パラメータ生成装置200は、プロセッサ251を備えている。プロセッサ251は、プロセッシングを行うIC(Integrated Circuit)である。プロセッサ251は、CPU(Central Processing Unit)、DSP(Digital Signal Processor)等である。
プロセッサ251はバス252を介してROM(Read Only Memory)253、RAM(Random Access Memory)254、通信ボード255、ディスプレイ256、キーボード257、マウス258、ドライブ259、磁気ディスク装置260などのハードウェアデバイスと接続され、これらのハードウェアデバイスを制御する。
ドライブ259は、FD(Flexible Disk Drive)、CD(Compact Disc)、DVD(Digital Versatile Disc)などの記憶媒体を読み書きする機器である。ROM253、RAM254、磁気ディスク装置260及びドライブ259は記憶装置の一例である。キーボード257、マウス258および通信ボード255は入力装置の一例である。ディスプレイ256および通信ボード255は出力装置の一例である。通信ボード255は有線または無線で、LAN(Local Area Network)、インターネット、電話回線などの通信網に接続している。磁気ディスク装置260には、OS261(Operating System)、プログラム262及びファイル263が記憶されている。
【0103】
プログラム262は、入力部201、共通パラメータ生成部202及び送信部203の機能を実行するプログラムである。プログラム262は、プロセッサ251により読み出され実行される。すなわち、プログラム262は、入力部201、共通パラメータ生成部202及び送信部203としてコンピュータを機能させる。また、プログラム262は、入力部201、共通パラメータ生成部202及び送信部203の手順や方法をコンピュータに実行させる。
プログラム262は、磁気ディスク、FD、光ディスク、CD、ブルーレイ(登録商標)ディスク、DVD等の可搬記録媒体に格納されていてもよい。そして、プログラム262が格納された可搬記録媒体を商業的に流通させてもよい。
【0104】
また、プロセッサ251は、OS261の少なくとも一部を実行する。
プロセッサ251はOS261の少なくとも一部を実行しながら、プログラム262を実行する。
プロセッサ901がOS261を実行することで、タスク管理、メモリ管理、ファイル管理、通信制御等が行われる。
なお、
図14は、プログラム262が実行されている状態を示す。つまり、
図14は、プログラム262がプロセッサ251にロードされ、プロセッサ251が入力部201、共通パラメータ生成部202及び送信部203として動作している状態を示す。
【0105】
ファイル263には、入力部201、共通パラメータ生成部202及び送信部203で使用される各種データ(入力、出力、判定結果、計算結果、処理結果など)が含まれる。
【0106】
入力部201、共通パラメータ生成部202及び送信部203の「部」を、「回路」又は「工程」又は「手順」又は「処理」に読み替えてもよい。
また、共通パラメータ生成装置200は、処理回路により実現されてもよい。処理回路は、例えば、ロジックIC(Integrated Circuit)、GA(Gate Array)、ASIC(Application Specific Integrated Circuit)、FPGA(Field−Programmable Gate Array)である。
なお、本明細書では、プロセッサと処理回路との上位概念を、「プロセッシングサーキットリー」という。
つまり、プロセッサと処理回路とは、それぞれ「プロセッシングサーキットリー」の具体例である。
【0107】
図15は、データ供給者鍵生成装置300のハードウェア構成例を示す。
図16は、データ利用者鍵生成装置400のハードウェア構成例を示す。
図17は、暗号化装置500のハードウェア構成例を示す。
図18は、準同型演算装置600のハードウェア構成例を示す。
図19は、復号装置700のハードウェア構成例を示す。
【0108】
データ供給者鍵生成装置300、データ利用者鍵生成装置400、暗号化装置500、準同型演算装置600及び復号装置700のハードウェア構成は、共通パラメータ生成装置200のハードウェア構成と同じである。
つまり、データ供給者鍵生成装置300は、プロセッサ351、バス352、ROM353、RAM354、通信ボード355、ディスプレイ356、キーボード357、マウス358、ドライブ359及び磁気ディスク装置360で構成される。そして、磁気ディスク装置360には、OS361、プログラム362及びファイル363が含まれる。
データ利用者鍵生成装置400は、プロセッサ451、バス452、ROM453、RAM454、通信ボード455、ディスプレイ456、キーボード457、マウス458、ドライブ459及び磁気ディスク装置460で構成される。そして、磁気ディスク装置460には、OS461、プログラム462及びファイル463が含まれる。
暗号化装置500は、プロセッサ551、バス552、ROM553、RAM554、通信ボード555、ディスプレイ556、キーボード557、マウス558、ドライブ559及び磁気ディスク装置560で構成される。そして、磁気ディスク装置560には、OS561、プログラム562及びファイル563が含まれる。
準同型演算装置600は、プロセッサ651、バス652、ROM653、RAM654、通信ボード655、ディスプレイ656、キーボード657、マウス658、ドライブ659及び磁気ディスク装置660で構成される。そして、磁気ディスク装置660には、OS661、プログラム662及びファイル663が含まれる。
復号装置700は、プロセッサ751、バス752、ROM753、RAM754、通信ボード755、ディスプレイ756、キーボード757、マウス758、ドライブ759及び磁気ディスク装置760で構成される。そして、磁気ディスク装置760には、OS761、プログラム762及びファイル763が含まれる。
【0109】
以下に示す点を除き、共通パラメータ生成装置200のハードウェア構成についての説明は、データ供給者鍵生成装置300、データ利用者鍵生成装置400、暗号化装置500、準同型演算装置600及び復号装置700のハードウェアについても適用される。
各装置では、それぞれの機能構成に対応するプログラムが磁気ディスク装置に格納されている。
つまり、プログラム362は、受信部301、鍵生成部302及び送信部303を実現するプログラムである。
プログラム462は、受信部401、鍵生成部402及び送信部403を実現するプログラムである。
プログラム562は、受信部501、鍵保管部502、入力部503、暗号化部504及び送信部505を実現するプログラムである。
プログラム662は、受信部601、暗号文保管部602、入力部603、準同型演算部604及び送信部605を実現するプログラムである。
プログラム762は、受信部701、鍵保管部702、入力部703、復号処理部704及び送信部705を実現するプログラムである。
また、データ供給者鍵生成装置300、データ利用者鍵生成装置400、暗号化装置500、準同型演算装置600及び復号装置700は、それぞれ、ロジックIC、GA、ASIC、FPGA等の処理回路により実現されてもよい。