説明

準同型暗号システム、準同型暗号方法、プログラム

【課題】 IND−CCA1安全性を満たす準同型暗号を実現すること。
【解決手段】 鍵生成装置は、位数が素数qである有限群Gの元g[1],...,g[n],およびhをランダムに選び、Zの元x[1],...,x[n],y[1],...,y[n],α,およびβをランダムに選び、g[1]のx[1]乗にhのα乗をかけたものをc[1]とし、g[2]のx[2]乗にhのα乗をかけたものをc[2]とし,...という操作をnまで繰り返す事でc[1],...,c[n]を計算し、g[1]のy[1]乗にhのβ乗をかけたものをd[1]とし,g[2]のy[2]乗にhのβ乗をかけたものをd[2]とし,...という操作をnまで繰り返す事でd[1],...,d[n]を計算し、g[1],...,g[n],h,c[1],...,c[n],d[1],...,d[n]を含むデータを公開鍵として出力し、x[1],...,x[n],y[1],...,y[n],α,βを秘密鍵として出力する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、暗号技術に関し、特に、準同型暗号システム、準同型暗号方法、プログラムに関する。
【背景技術】
【0002】
インターネット上の通信の安全性を守る為に、暗号技術はかせない。暗号技術の中に,準同型暗号方式と呼ばれる技術がある。この技術は電子投票や電子現金といった様々な暗号プロトコルの部品として用いられている為、非常に重要である。
【0003】
準同型暗号方式は公開鍵暗号方式の一種で、平文の空間が群をなしており、「準同型変換」という変換を持っており、しかも平文Mの暗号文Cと平文M'の暗号文C'とを準同型変換すると、積MM'の暗号文が計算できるものの事である。厳密には、鍵生成アルゴリズム、暗号化アルゴリズム、準同型変換アルゴリズム、復号アルゴリズムという4つのアルゴリズムの組を準同型暗号方式と呼ぶ。ここで、鍵生成アルゴリズム、暗号化アルゴリズム、準同型変換アルゴリズム、復号アルゴリズムとは、以下の入出力を持つアルゴリズムの事である。
【0004】
1−1) 鍵生成アルゴリズムは公開鍵と秘密鍵とを出力する。
1−2) 暗号化アルゴリズムは公開鍵と平文とを入力として受けとり、暗号文を出力する。
1−3) 準同型変換アルゴリズムは2つの暗号文を入力として受け取り、(一般にはそれらとは異なる)変換した暗号文を出力する。
1−4) 復号アルゴリズムは秘密鍵と暗号文とを入力として受け取り、平文を出力する。
【0005】
ただしこれらのアルゴリズムは以下の2つの性質を満たさねばならない。
【0006】
2−1) 平文Mを暗号化アルゴリズムに入力して得た暗号文を復号すると、Mに戻る。
2−2) 平文Mを暗号化アルゴリズムに入力する事で暗号文Cを得、平文M'を暗号化アルゴリズムに入力する事で暗号文C'を得、準同型変換アルゴリズムにCとC'を入力する事で暗号文C''を得、そしてC''を復号アルゴリズムに入力すると、その出力として積MM'を得る。
【0007】
代表的な準同型暗号方式として、ElGamal暗号方式がある。qを素数とし、Gを位数がqである有限群とし、Zq={0,1,...,q-1}とするとき、ElGamal暗号方式とは以下の準同型暗号方式の事である。
【0008】
3−1) (鍵生成アルゴリズム) Gの元gとZqの元xをランダムに選び、h=gxを計算し、(g,h)を公開鍵とし、xを秘密鍵とする。
3−2) (暗号化アルゴリズム) Gの元である平文Mと公開鍵(g,h)とを入力として受け取り、Zqの元rをランダムに選び、u=grとv=Mhrとを計算し、(u,v)を暗号文Cとして出力する。
3−3) (準同型変換アルゴリズム) 2つの暗号文C=(u,v),C’=(u',v')を入力として受け取り、変換した暗号文C”=(uu',vv')を出力する。
3−4) (復号アルゴリズム) 秘密鍵xと暗号文C=(u,v)とを受け取り、v/uxを平文Mとして出力する。
【0009】
ところで、公開鍵暗号への攻撃のタイプとして、選択平文攻撃(Chosen Plaintext Attack、以下CPA)と選択暗号文攻撃(Chosen Ciphertext Attack、以下CCA1)とが知られている。また、いかなる部分解読も困難である場合、その暗号方式は「強秘匿性(indistinguishability of encryption、以下INDとする)」を有していると呼ばれる。
【0010】
しかしながら、ElGamal暗号をはじめとして既存の準同型暗号は、IND-CPA(選択平文攻撃に対して強秘匿)安全性という弱い安全性しか満たさない。
【0011】
このように、ElGamal暗号は準同型暗号であるが、IND-CCA1(選択暗号文攻撃に対して強秘匿)安全性を満たさない。ElGamal暗号は不正な方法で作られた暗号文を排除できない事がIND-CCA1安全性を満たさない理由である事が知られている。
【0012】
一方、非特許文献1において提案されている暗号方式は、不正な方法で作られた暗号文を排除する機構を持ち、その結果としてIND-CCA1安全性よりさらに強い安全性を満たすが、準同型暗号ではない。
【先行技術文献】
【非特許文献】
【0013】
【非特許文献1】Dennis Hofheinz, Eike Kiltz: Secure Hybrid Encryption from Weakened Key Encapsulation. CRYPTO 2007: 553-571
【発明の概要】
【発明が解決しようとする課題】
【0014】
インターネット上の通信の安全性を高める為には、可能な限り強い安全性を見たす暗号方式を利用する事が望ましい。しかしながら、既存の準同型暗号は、IND-CPA安全性という弱い安全性しか満たさない。
【0015】
本発明が解決しようとする課題は、IND-CCA1安全性というより強い安全性を満たす準同型暗号を実現する事にある。
【課題を解決するための手段】
【0016】
そこで本発明では、非特許文献1に類似したテクニックを用いて不正な方法で作られた暗号文を排除しつつ、ElGamal暗号をベースにする事でIND-CCA1安全な準同型暗号を実現する。
【0017】
すなわち、本発明による準同型暗号システムは、公開鍵と秘密鍵とを出力する鍵生成装置と、公開鍵と平文(M)とから暗号文を出力する暗号化装置と、この暗号化装置から出力される2つの暗号文から変換した暗号文を出力する準同型変換装置と、秘密鍵と暗号文とから平文(M)を復号する復号装置とを含む、準同型暗号システムであって、鍵生成装置は、位数が素数qである有限群Gの元g[1],...,g[n],およびhをランダムに選ぶ手段と、Zの元x[1],...,x[n],y[1],...,y[n],α,およびβをランダムに選ぶ手段と、g[1]のx[1]乗にhのα乗をかけたものをc[1]とし、g[2]のx[2]乗にhのα乗をかけたものをc[2]とし,...という操作をnまで繰り返す事でc[1],...,c[n]を計算する手段と、g[1]のy[1]乗にhのβ乗をかけたものをd[1]とし,g[2]のy[2]乗にhのβ乗をかけたものをd[2]とし,...という操作をnまで繰り返す事でd[1],...,d[n]を計算する手段と、g[1],...,g[n],h,c[1],...,c[n],d[1],...,d[n]を含むデータを公開鍵として出力する手段と、x[1],...,x[n],y[1],...,y[n],α,βを秘密鍵として出力する手段と、を有する。
【発明の効果】
【0018】
本発明によれば、IND-CCA1安全性というより強い安全性を満たす準同型暗号を実現する事ができる。
【図面の簡単な説明】
【0019】
【図1】本発明の一実施の形態に係る準同型暗号システムの構成を示すブロック図である。
【図2】図1に示した準同型暗号システムの各装置の構成を示すブロック図である。
【図3】図1に示した鍵生成装置の動作を説明するためのフローチャートである。
【図4】図1に示した暗号化装置の動作を説明するためのフローチャートである。
【図5】図1に示した準同型変換装置の動作を説明するためのフローチャートである。
【図6】図1に示した復号装置の動作を説明するためのフローチャートである。
【発明を実施するための形態】
【0020】
図1、図2は本発明の装置構成を描いたブロック図である。図1は、本発明の一実施の形態に係る準同型暗号システムを示すブロック図である。図示の準同型暗号システムは、送信者装置1、変換装置2、および受信者装置3から構成されている。図1ではこれら3つが別の装置である場合を想定しているが、これら3つのうち2つ以上が同一の装置であっても構わない。たとえば、変換装置2と受信者装置3が同一であってもよい。
【0021】
図2に示されるように、各装置には、演算部11,入出力部12、記憶部13、および通信部14が備わっている。これらの手段11〜14を用いる事で、本発明の利用者はそれぞれデータの演算を行ったり、データの入出力を行ったり、データを記憶したり、装置同士が通信したりする事ができる。
【0022】
演算部11は例えばコンピュータのCPUを用いて実装する事ができる。記憶部13は例えばコンピュータのメモリやハードディスクを用いて実装する事ができる。通信部14は例えばインターネットを用いて実装する事ができる。
【0023】
各装置の演算部11には、以下の装置が備わっている。送信者装置1は鍵生成装置4と暗号化装置5とを持つ。変換装置2は準同型変換装置6を持つ。受信者装置3は復号装置7を持つ。
【0024】
鍵生成装置4は、後述するような、公開鍵Yと秘密鍵Xとを出力する。暗号化装置5は公開鍵Yと平文Mとを入力として受けとり、後述するような暗号文Cを出力する。準同型変換装置6は2つの暗号文C、C’を入力として受け取り、(一般にはそれらとは異なる)変換した暗号文C”を出力する。復号装置7は秘密鍵Xと暗号文CないしC”とを入力として受け取り,平文Mを出力する。
【0025】
本発明の装置は以下の順序で実施される。まず送信者装置1は鍵生成装置4を動作させて,公開鍵Yと秘密鍵Xとを得、公開鍵Yを公開し、秘密鍵Xを記憶部13に秘密裡に保管する。受信者装置3は公開されている公開鍵Yを入手する。送信者装置1がどのような方法で公開鍵Yを公開し、受信者装置3がどのような方法で公開鍵Yを入手するかは問わない。例えばPKI(Public Key Infrastructure)を利用して公開および入手ができる。
【0026】
送信者装置1は暗号化装置5を動作させる事で平文Mを暗号化できる。暗号化装置5を複数回動作あせれば,複数の平文M、M’を暗号化でき、その結果として複数の暗号文C、C’が得られる。送信者装置1は通信部14を用いる事で、暗号文C、C’を必要に応じて変換装置2ないし受信者装置3に送る。
【0027】
変換装置2は通信部14から2つの暗号文C、C’を入手したら、準同型変換装置6を動作せる事で、変換した暗号文C”を得る事ができる。変換装置2は通信部14を用いる事で、変換した暗号文C”を必要に応じて受信者装置3に送信する。
【0028】
受信者装置3は通信部14から暗号文Cないし変換した暗号文C”を入手し、復号装置7を動作せる事で平文Mを得る。
【0029】
次に、各装置の詳細を説明する。
【0030】
qを素数とし、Gを位数がqである有限群とし、nを非負の整数とする。安全性上の観点から言えば、Gはn-Linear仮定を満たす事が望ましい。n-Linear仮定の詳細については、上記非特許文献1に記載されている。この仮定を満たすGとして例えば楕円曲線群がある。各装置の詳細は以下のとおりである。
【0031】
図3を参照して、鍵生成装置4の動作について説明する。
【0032】
まず、鍵生成装置4は、Gの元g[1],...,g[n],hをランダムに選ぶ(ステップ31)。
【0033】
次に、鍵生成装置4は、Zqの元x[1],...,x[n],y[1],...,y[n],α,βをランダムに選ぶ(ステップ32)。
【0034】
次に、鍵生成装置4は、c[1]=g[1]x[1]hα,...,c[n]=g[n]x[n]hαを計算する(ステップ33)。すなわち、鍵生成装置4は、g[1]のx[1]乗にhのα乗をかけたものをc[1]とし、g[2]のx[2]乗にhのα乗をかけたものをc[2]とし,...という操作をnまで繰り返す事でc[1],...,c[n]を計算する。
【0035】
次に、鍵生成装置4は、d[1]=g[1]y[1]hβ,...,d[n]=g[n]y[n]hβを計算する(ステップ34)。すなわち、鍵生成装置4は、g[1]のy[1]乗にhのβ乗をかけたものをd[1]とし,g[2]のy[2]乗にhのβ乗をかけたものをd[2]とし,...という操作をnまで繰り返す事でd[1],...,d[n]を計算する。
【0036】
次に、鍵生成装置4は、(g[1],...,g[n],h,c[1],...,c[n],d[1],...,d[n])を公開鍵Yとして出力する(ステップ35)。
【0037】
最後に、鍵生成装置4は、(x[1],...,x[n],y[1],...,y[n],α,β)を秘密鍵Xして出力する(ステップ36)。
【0038】
上述したように鍵生成装置4は動作するが、このような動作をコンピュータ(演算部11)上で実現することもできる。例えば、上記動作を行う鍵生成プログラムをメモリ(記憶部13)に格納しておき、それをプログラム制御プロセッサ(コンピュータ(演算部11))によって実現することで、鍵生成装置4を実現することができる。
【0039】
次に、図4を参照して、暗号化装置5の動作について説明する。
【0040】
まず、暗号化装置5は、公開鍵Y=(g[1],...,g[n],h,c[1],...,c[n],d[1],...,d[n])と平文Mとを入力として受け取る(ステップ41)。
【0041】
次に、暗号化装置5は、Zqの元r[1],...,r[n]をランダムに選ぶ(ステップ42)。
【0042】
次に、暗号化装置5は、u[1]=g[1]r[1],...,g[n]=c[n]r[n]を計算する(ステップ43)。すなわち、暗号化装置5は、g[1]のr[1]乗をu[1]とし、g[2]のr[2]乗をu[2]とし、...という操作をnまで繰り返す事でu[1],...,u[n]を計算する。
【0043】
次に、暗号化装置5は、v=hr[1]+…+r[n]を計算する(ステップ44)。すなわち、暗号化装置5は、hをr[1],...,r[n]を全て加えたものでべき乗したものをvとして計算する。
【0044】
次に、暗号化装置5は、w=Mc[1]r[1]…c[n]r[n]を計算する(ステップ45)。すなわち、暗号化装置5は、c[1]のr[1]乗,...,c[n]のr[n]乗を全てかけたものにさらにMをかけたものをwとして計算する。
【0045】
次に、暗号化装置5は、π=d[1]r[1]…d[n]r[n]を計算する(ステップ46)。すなわち、暗号化装置5は、d[1]のr[1]乗,...,[n]のr[n]乗を全てかけたものをπとして計算する。
【0046】
最後に、暗号化装置5は、(u[1],...,u[n],v,w,π)を暗号文Cとして出力する(ステップ47)。
【0047】
上述したように暗号化装置5は動作するが、このような動作をコンピュータ(演算部11)上で実現することもできる。例えば、上記動作を行う暗号化プログラムをメモリ(記憶部13)に格納しておき、それをプログラム制御プロセッサ(コンピュータ(演算部11))によって実現することで、暗号化装置5を実現することができる。
【0048】
次に、図5を参照して、準同型変換装置6の動作について説明する。
【0049】
まず、準同型変換装置6は、2つの暗号文C=(u[1],...,u[n],v,w,π),C’=(u'[1],...,u'[n],v',w',π')を入力として受け取る(ステップ51)。すなわち、準同型変換装置6は、暗号化装置5から、u[1],...,u[n],v,w,πをデータとして持つ第1の暗号文Cと、u'[1],...,u'[n],v',w',π'をデータとして持つ第2の暗号文C’とを受け取る。
【0050】
最後に、準同型変換装置6は、(u[1]u'[1],...,u[n]u'[n],vv',ww',ππ')、を変換した暗号文C”として出力する(ステップ52)。すなわち、準同型変換装置6は、u[1]とu'[1]の積u''[1],...,u[n]とu'[n]の積u''[n]を計算し、vとv'の積v''を計算し、wとw'の積w''を計算し、πとπ'の積π''を計算し、u''[1],...,u''[n],v'',w'',π''を含むデータを変換した暗号文C”として出力する。
【0051】
上述したように準同型変換装置6は動作するが、このような動作をコンピュータ(演算部11)上で実現することもできる。例えば、上記動作を行う準同型変換プログラムをメモリ(記憶部13)に格納しておき、それをプログラム制御プロセッサ(コンピュータ(演算部11))によって実現することで、準同型変換装置6を実現することができる。
【0052】
図6を参照して、復号装置7の動作について説明する。
【0053】
まず、復号装置7は、秘密鍵X=(x[1],...,x[n],y[1],...,y[n],α,β)と暗号文C=(u[1],...,u[n],v,w,π)とを入力として受け取る(ステップ61)。
【0054】
次に、復号装置7は、π=u[1]x[1]…u[n]x[n]vαならw/u[1]y[1]…u[n]y[n]vβを復号結果Mとして出力し,そうでなければ暗号文が不正である旨を出力する(ステップ62)。すなわち、復号装置7は、u[1]のx[1]乗,...,u[n]のx[n]乗を全てかけあわせたものにさらにvのα乗をかけあわせたものがπと等しければ、u[1]のy[1]乗,…,u[n]のy[n]乗を全てかけあわせたものにさらにvのβ乗をかけあわせたものによってw剰余したものを出力し、そうでなければ暗号文が不正である旨を出力する。
【0055】
上述したように復号装置7は動作するが、このような動作をコンピュータ(演算部11)上で実現することもできる。例えば、上記動作を行う復号プログラムをメモリ(記憶部13)に格納しておき、それをプログラム制御プロセッサ(コンピュータ(演算部11))によって実現することで、復号装置7を実現することができる。
【0056】
インターネット上の通信の安全性を守る為には、そこで使われている暗号の強度が強ければ強いほどよい。したがって準同型暗号方式の代表例であるElGamal暗号の代わりに、本発明に係る準同型暗号システムを用いる事でより安全にインターネット通信ができる。準同型暗号方式の代表例であるElGamal暗号は、電子投票や電子現金といった産業上有益な暗号プロトコルを作る部品として用いられている。従ってこうした暗号プロトコルにおけるElGamal暗号を本発明に係る準同型暗号システムと置き換える事で、より安全性の高い暗号プロトコルを実現できる。
【0057】
上述したように準同型暗号システムは動作するが、このような動作をコンピュータ(演算部11)上で実現することもできる。例えば、上記動作を行う暗号プログラムをメモリ(記憶部13)に格納しておき、それをプログラム制御プロセッサ(コンピュータ(演算部11))によって実現することで、準同型暗号システムを実現することができる。
【0058】
以下に、本発明の態様について説明する。
【0059】
本発明の第1の態様による準同型暗号システムは、公開鍵と秘密鍵とを出力する鍵生成装置と、公開鍵と平文(M)とから暗号文を出力する暗号化装置と、この暗号化装置から出力される2つの暗号文から変換した暗号文を出力する準同型変換装置と、秘密鍵と暗号文とから平文(M)を復号する復号装置とを含む、準同型暗号システムであって、鍵生成装置は、位数が素数qである有限群Gの元g[1],...,g[n],およびhをランダムに選ぶ手段と、Zの元x[1],...,x[n],y[1],...,y[n],α,およびβをランダムに選ぶ手段と、g[1]のx[1]乗にhのα乗をかけたものをc[1]とし、g[2]のx[2]乗にhのα乗をかけたものをc[2]とし,...という操作をnまで繰り返す事でc[1],...,c[n]を計算する手段と、g[1]のy[1]乗にhのβ乗をかけたものをd[1]とし,g[2]のy[2]乗にhのβ乗をかけたものをd[2]とし,...という操作をnまで繰り返す事でd[1],...,d[n]を計算する手段と、g[1],...,g[n],h,c[1],...,c[n],d[1],...,d[n]を含むデータを公開鍵として出力する手段と、x[1],...,x[n],y[1],...,y[n],α,βを秘密鍵として出力する手段と、を有する。
【0060】
上記本発明の第1の態様による準同型暗号システムにおいて、上記暗号化装置は、公開鍵と平文(M)とを入力として受け取る手段と、Zの元r[1],...,r[n]をランダムに選ぶ手段と、g[1]のr[1]乗をu[1]とし、g[2]のr[2]乗をu[2]とし、...という操作をnまで繰り返す事でu[1],...,u[n]を計算する手段と、hをr[1],...,r[n]を全て加えたものでべき乗したものをvとして計算する手段と、c[1]のr[1]乗,...,c[n]のr[n]乗を全てかけたものにさらにMをかけたものをwとして計算する手段と、d[1]のr[1]乗,...,d[n]のr[n]乗を全てかけたものをπとして計算する手段と、u[1],...,u[n],v,w,πを暗号文として出力する手段と、を含むものであってよい。上記準同型変換装置は、上記暗号化装置から、u[1],...,u[n],v,w,πをデータとして持つ第1の暗号文と、u'[1],...,u'[n],v',w',π'をデータとして持つ第2の暗号文とを受け取る手段と、u[1]とu'[1]の積u''[1],...,u[n]とu'[n]の積u''[n]を計算し、vとv'の積v''を計算し、wとw'の積w''を計算し、πとπ'の積π''を計算する手段と、u''[1],...,u''[n],v'',w'',π''を含むデータを変換した暗号文として出力する手段と、を含むものであってよい。上記復号装置は、x[1],...,x[n],y[1],...,y[n],α,βをデータとして持つ秘密鍵とu[1],...,u[n],v,w,πをデータとして持つ暗号文とを入力として受け取る手段と、u[1]のx[1]乗,...,u[n]のx[n]乗を全てかけあわせたものにさらにvのα乗をかけあわせたものがπと等しければ、u[1]のy[1]乗,…,u[n]のy[n]乗を全てかけあわせたものにさらにvのβ乗をかけあわせたものによってw剰余したものを出力し、そうでなければ暗号文が不正である旨を出力する手段と、を含むものであってよい。
【0061】
本発明の第2の態様による準同型暗号方法は、公開鍵と秘密鍵とを出力する鍵生成ステップと、公開鍵と平文(M)とから暗号文を出力する暗号化ステップと、この暗号化ステップから出力される2つの暗号文から変換した暗号文を出力する準同型変換ステップと、秘密鍵と暗号文とから平文(M)を復号する復号ステップとを含む、準同型暗号方法であって、鍵生成ステップは、位数が素数qである有限群Gの元g[1],...,g[n],およびhをランダムに選び、Zの元x[1],...,x[n],y[1],...,y[n],α,およびβをランダムに選び、g[1]のx[1]乗にhのα乗をかけたものをc[1]とし、g[2]のx[2]乗にhのα乗をかけたものをc[2]とし,...という操作をnまで繰り返す事でc[1],...,c[n]を計算し、g[1]のy[1]乗にhのβ乗をかけたものをd[1]とし,g[2]のy[2]乗にhのβ乗をかけたものをd[2]とし,...という操作をnまで繰り返す事でd[1],...,d[n]を計算し、g[1],...,g[n],h,c[1],...,c[n],d[1],...,d[n]を含むデータを公開鍵として出力し、x[1],...,x[n],y[1],...,y[n],α,βを秘密鍵として出力する。
【0062】
上記本発明の第2の態様による準同型暗号方法において、上記暗号化ステップは、公開鍵と平文(M)とを入力として受け取り、Zの元r[1],...,r[n]をランダムに選び、g[1]のr[1]乗をu[1]とし、g[2]のr[2]乗をu[2]とし、...という操作をnまで繰り返す事でu[1],...,u[n]を計算し、hをr[1],...,r[n]を全て加えたものでべき乗したものをvとして計算し、c[1]のr[1]乗,...,c[n]のr[n]乗を全てかけたものにさらにMをかけたものをwとして計算し、d[1]のr[1]乗,...,d[n]のr[n]乗を全てかけたものをπとして計算し、u[1],...,u[n],v,w,πを暗号文として出力するものであってよい。上記準同型変換ステップは、上記暗号化ステップから、u[1],...,u[n],v,w,πをデータとして持つ第1の暗号文と、u'[1],...,u'[n],v',w',π'をデータとして持つ第2の暗号文とを受け取り、u[1]とu'[1]の積u''[1],...,u[n]とu'[n]の積u''[n]を計算し、vとv'の積v''を計算し、wとw'の積w''を計算し、πとπ'の積π''を計算し、u''[1],...,u''[n],v'',w'',π''を含むデータを変換した暗号文として出力するものであってよい。上記復号ステップは、x[1],...,x[n],y[1],...,y[n],α,βをデータとして持つ秘密鍵とu[1],...,u[n],v,w,πをデータとして持つ暗号文とを入力として受け取り、u[1]のx[1]乗,...,u[n]のx[n]乗を全てかけあわせたものにさらにvのα乗をかけあわせたものがπと等しければ、u[1]のy[1]乗,…,u[n]のy[n]乗を全てかけあわせたものにさらにvのβ乗をかけあわせたものによってw剰余したものを出力し、そうでなければ暗号文が不正である旨を出力するものであってよい。
【0063】
本発明の第3の態様による送信者装置は、公開鍵と秘密鍵とを出力する鍵生成装置と、公開鍵と平文(M)とから暗号文を出力する暗号化装置とを含む送信者装置であって、鍵生成装置は、位数が素数qである有限群Gの元g[1],...,g[n],およびhをランダムに選ぶ手段と、Zの元x[1],...,x[n],y[1],...,y[n],α,およびβをランダムに選ぶ手段と、g[1]のx[1]乗にhのα乗をかけたものをc[1]とし、g[2]のx[2]乗にhのα乗をかけたものをc[2]とし,...という操作をnまで繰り返す事でc[1],...,c[n]を計算する手段と、g[1]のy[1]乗にhのβ乗をかけたものをd[1]とし,g[2]の[2]乗にhのβ乗をかけたものをd[2]とし,...という操作をnまで繰り返す事でd[1],...,d[n]を計算する手段と、g[1],...,g[n],h,c[1],...,c[n],d[1],...,d[n]を含むデータを公開鍵として出力する手段と、x[1],...,x[n],y[1],...,y[n],α,βを秘密鍵として出力する手段と、を有する。
【0064】
上記本発明の第3の態様による送信者装置において、上記暗号化装置は、公開鍵と平文(M)とを入力として受け取る手段と、Zの元r[1],...,r[n]をランダムに選ぶ手段と、g[1]のr[1]乗をu[1]とし、g[2]のr[2]乗をu[2]とし、...という操作をnまで繰り返す事でu[1],...,u[n]を計算する手段と、hをr[1],...,r[n]を全て加えたものでべき乗したものをvとして計算する手段と、c[1]のr[1]乗,...,c[n]のr[n]乗を全てかけたものにさらにMをかけたものをwとして計算する手段と、d[1]のr[1]乗,...,d[n]のr[n]乗を全てかけたものをπとして計算する手段と、u[1],...,u[n],v,w,πを暗号文として出力する手段と、を含むものであってよい。
【0065】
本発明の第4の態様による変換装置は、2つの暗号文から変換した暗号文を出力する準同型変換装置を含む変換装置であって、準同型変換装置は、u[1],...,u[n],v,w,πをデータとして持つ第1の暗号文と、u'[1],...,u'[n],v',w',π'をデータとして持つ第2の暗号文とを受け取る手段と、u[1]とu'[1]の積u''[1],...,u[n]とu'[n]の積u''[n]を計算し、vとv'の積v''を計算し、wとw'の積w''を計算し、πとπ'の積π''を計算する手段と、u''[1],...,u''[n],v'',w'',π''を含むデータを変換した暗号文として出力する手段と、を含む。
【0066】
本発明の第5の態様による受信者装置は、秘密鍵と暗号文とから平文(M)を復号する復号装置を含む受信者装置であって、復号装置は、x[1],...,x[n],y[1],...,y[n],α,βをデータとして持つ秘密鍵とu[1],...,u[n],v,w,πをデータとして持つ暗号文とを入力として受け取る手段と、u[1]のx[1]乗,...,u[n]のx[n]乗を全てかけあわせたものにさらにvのα乗をかけあわせたものがπと等しければ、u[1]のy[1]乗,…,u[n]のy[n]乗を全てかけあわせたものにさらにvのβ乗をかけあわせたものによってw剰余したものを出力し、そうでなければ暗号文が不正である旨を出力する手段と、を含む。
【0067】
本発明の第6の態様による送信方法は、公開鍵と秘密鍵とを出力する鍵生成ステップと、公開鍵と平文(M)とから暗号文を出力する暗号化ステップとを含む送信方法であって、鍵生成ステップは、位数が素数qである有限群Gの元g[1],...,g[n],およびhをランダムに選び、Zの元x[1],...,x[n],y[1],...,y[n],α,およびβをランダムに選び、g[1]のx[1]乗にhのα乗をかけたものをc[1]とし、g[2]のx[2]乗にhの前記α乗をかけたものをc[2]とし,...という操作をnまで繰り返す事でc[1],...,c[n]を計算し、g[1]のy[1]乗にhのβ乗をかけたものをd[1]とし,g[2]のy[2]乗にhのβ乗をかけたものをd[2]とし,...という操作をnまで繰り返す事でd[1],...,d[n]を計算し、g[1],...,g[n],h,c[1],...,c[n],d[1],...,d[n]を含むデータを公開鍵として出力し、x[1],...,x[n],y[1],...,y[n],α,βを秘密鍵として出力する。
【0068】
上記本発明の第6の態様による送信方法において、上記暗号化ステップは、公開鍵と平文(M)とを入力として受け取り、Zの元r[1],...,r[n]をランダムに選び、g[1]のr[1]乗をu[1]とし、g[2]のr[2]乗をu[2]とし、...という操作をnまで繰り返す事でu[1],...,u[n]を計算し、hをr[1],...,r[n]を全て加えたものでべき乗したものをvとして計算し、c[1]のr[1]乗,...,c[n]のr[n]乗を全てかけたものにさらにMをかけたものをwとして計算し、d[1]のr[1]乗,...,d[n]のr[n]乗を全てかけたものをπとして計算し、u[1],...,u[n],v,w,πを暗号文として出力するものであってよい。
【0069】
本発明の第7の態様による変換方法は、2つの暗号文から変換した暗号文を出力する準同型変換ステップを含む変換方法であって、準同型変換ステップは、u[1],...,u[n],v,w,πをデータとして持つ第1の暗号文と、u'[1],...,u'[n],v',w',π'をデータとして持つ第2の暗号文とを受け取り、u[1]とu'[1]の積u''[1],...,u[n]とu'[n]の積u''[n]を計算し、vとv'の積v''を計算し、wとw'の積w''を計算し、πとπ'の積π''を計算し、u''[1],...,u''[n],v'',w'',π''を含むデータを変換した暗号文として出力する。
【0070】
本発明の第8の態様による受信方法は、秘密鍵と暗号文とから平文(M)を復号する復号ステップを含む受信方法であって、復号ステップは、x[1],...,x[n],y[1],...,y[n],α,βをデータとして持つ秘密鍵とu[1],...,u[n],v,w,πをデータとして持つ暗号文とを入力として受け取り、u[1]のx[1]乗,...,u[n]のx[n]乗を全てかけあわせたものにさらにvのα乗をかけあわせたものがπと等しければ、u[1]のy[1]乗,…,u[n]のy[n]乗を全てかけあわせたものにさらにvのβ乗をかけあわせたものによってw剰余したものを出力し、そうでなければ暗号文が不正である旨を出力する。
【0071】
本発明の第9の態様による鍵生成装置は、公開鍵と秘密鍵とを出力する鍵生成装置であって、位数が素数qである有限群Gの元g[1],...,g[n],およびhをランダムに選ぶ手段と、Zの元x[1],...,x[n],y[1],...,y[n],α,およびβをランダムに選ぶ手段と、g[1]のx[1]乗にhのα乗をかけたものをc[1]とし、g[2]のx[2]乗にhのα乗をかけたものをc[2]とし,...という操作をnまで繰り返す事でc[1],...,c[n]を計算する手段と、g[1]のy[1]乗にhのβ乗をかけたものをd[1]とし,g[2]のy[2]乗にhのβ乗をかけたものをd[2]とし,...という操作をnまで繰り返す事でd[1],...,d[n]を計算する手段と、g[1],...,g[n],h,c[1],...,c[n],d[1],...,d[n]を含むデータを公開鍵として出力する手段と、x[1],...,x[n],y[1],...,y[n],α,βを秘密鍵として出力する手段と、を含む。
【0072】
本発明の第10の態様による暗号化装置は、公開鍵と平文(M)とから暗号文を出力する暗号化装置であって、g[1],...,g[n],h,c[1],...,c[n],d[1],...,d[n]を含むデータからなる公開鍵と平文(M)とを入力として受け取る手段と、Zの元r[1],...,r[n]をランダムに選ぶ手段と、g[1]のr[1]乗をu[1]とし、g[2]のr[2]乗をu[2]とし、...という操作をnまで繰り返す事でu[1],...,u[n]を計算する手段と、hをr[1],...,r[n]を全て加えたものでべき乗したものをvとして計算する手段と、c[1]のr[1]乗,...,c[n]のr[n]乗を全てかけたものにさらにMをかけたものをwとして計算する手段と、d[1]のr[1]乗,...,d[n]のr[n]乗を全てかけたものをπとして計算する手段と、u[1],...,u[n],v,w,πを暗号文として出力する手段と、を含む。
【0073】
本発明の第11の態様による準同型変換装置は、2つの暗号文から変換した暗号文を出力する準同型変換装置であって、u[1],...,u[n],v,w,πをデータとして持つ第1の暗号文と、u'[1],...,u'[n],v',w',π'をデータとして持つ第2の暗号文とを受け取る手段と、u[1]とu'[1]の積u''[1],...,u[n]とu'[n]の積u''[n]を計算し、vとv'の積v''を計算し、wとw'の積w''を計算し、πとπ'の積π''を計算する手段と、u''[1],...,u''[n],v'',w'',π''を含むデータを変換した暗号文として出力する手段と、を含む。
【0074】
本発明の第12の態様による復号装置は、秘密鍵と暗号文とから平文(M)を復号する復号装置であって、x[1],...,x[n],y[1],...,y[n],α,βをデータとして持つ秘密鍵とu[1],...,u[n],v,w,πをデータとして持つ暗号文とを入力として受け取る手段と、u[1]のx[1]乗,...,u[n]のx[n]乗を全てかけあわせたものにさらにvのα乗をかけあわせたものがπと等しければ、u[1]のy[1]乗,…,u[n]のy[n]乗を全てかけあわせたものにさらにvのβ乗をかけあわせたものによってw剰余したものを出力し、そうでなければ暗号文が不正である旨を出力する手段と、を含む。
【0075】
本発明の第13の態様による鍵生成方法は、公開鍵と秘密鍵とを出力する鍵生成方法であって、位数が素数qである有限群Gの元g[1],...,g[n],およびhをランダムに選び、Zの元x[1],...,x[n],y[1],...,y[n],α,およびβをランダムに選び、g[1]のx[1]乗にhのα乗をかけたものをc[1]とし、g[2]のx[2]乗にhのα乗をかけたものをc[2]とし,...という操作をnまで繰り返す事でc[1],...,c[n]を計算し、g[1]のy[1]乗にhのβ乗をかけたものをd[1]とし,g[2]のy[2]乗にhのβ乗をかけたものをd[2]とし,...という操作をnまで繰り返す事でd[1],...,d[n]を計算し、g[1],...,g[n],h,c[1],...,c[n],d[1],...,d[n]を含むデータを公開鍵として出力し、x[1],...,x[n],y[1],...,y[n],α,βを秘密鍵として出力する。
【0076】
本発明の第14の態様による暗号化方法は、公開鍵と平文(M)とから暗号文を出力する暗号化方法であって、g[1],...,g[n],h,c[1],...,c[n],d[1],...,d[n]を含むデータからなる公開鍵と平文(M)とを入力として受け取り、Zの元r[1],...,r[n]をランダムに選び、g[1]のr[1]乗をu[1]とし、g[2]のr[2]乗をu[2]とし、...という操作をnまで繰り返す事でu[1],...,u[n]を計算し、hをr[1],...,r[n]を全て加えたものでべき乗したものをvとして計算し、c[1]のr[1]乗,...,c[n]のr[n]乗を全てかけたものにさらにMをかけたものをwとして計算し、d[1]のr[1]乗,...,d[n]のr[n]乗を全てかけたものをπとして計算し、u[1],...,u[n],v,w,πを暗号文として出力する。
【0077】
本発明の第15の態様による準同型変換方法は、2つの暗号文から変換した暗号文を出力する準同型変換方法であって、u[1],...,u[n],v,w,πをデータとして持つ第1の暗号文と、u'[1],...,u'[n],v',w',π'をデータとして持つ第2の暗号文とを受け取り、u[1]とu'[1]の積u''[1],...,u[n]とu'[n]の積u''[n]を計算し、vとv'の積v''を計算し、wとw'の積w''を計算し、πとπ'の積π''を計算し、u''[1],...,u''[n],v'',w'',π''を含むデータを変換した暗号文として出力する。
【0078】
本発明の第16の態様による復号方法は、秘密鍵と暗号文とから平文(M)を復号する復号方法であって、x[1],...,x[n],y[1],...,y[n],α,βをデータとして持つ秘密鍵とu[1],...,u[n],v,w,πをデータとして持つ暗号文とを入力として受け取り、u[1]のx[1]乗,...,u[n]のx[n]乗を全てかけあわせたものにさらにvのα乗をかけあわせたものがπと等しければ、u[1]のy[1]乗,…,u[n]のy[n]乗を全てかけあわせたものにさらにvのβ乗をかけあわせたものによってw剰余したものを出力し、そうでなければ暗号文が不正である旨を出力する。
【0079】
本発明の第17の態様による鍵生成プログラムは、コンピュータに、公開鍵と秘密鍵とを出力させるための鍵生成プログラムであって、位数が素数qである有限群Gの元g[1],...,g[n],およびhをランダムに選ぶ手順と、Zの元x[1],...,x[n],y[1],...,y[n],α,およびβをランダムに選ぶ手順と、g[1]のx[1]乗にhのα乗をかけたものをc[1]とし、g[2]のx[2]乗にhのα乗をかけたものをc[2]とし,...という操作をnまで繰り返す事でc[1],...,c[n]を計算する手順と、g[1]のy[1]乗にhのβ乗をかけたものをd[1]とし,g[2]のy[2]乗にhのβ乗をかけたものをd[2]とし,...という操作をnまで繰り返す事でd[1],...,d[n]を計算する手順と、g[1],...,g[n],h,c[1],...,c[n],d[1],...,d[n]を含むデータを公開鍵として出力する手順と、x[1],...,x[n],y[1],...,y[n],α,βを秘密鍵として出力する手順と、を前記コンピュータに実行させる。
【0080】
本発明の第18の態様による暗号化プログラムは、コンピュータに、公開鍵と平文(M)とから暗号文を出力させる暗号化プログラムであって、g[1],...,g[n],h,c[1],...,c[n],d[1],...,d[n]を含むデータからなる公開鍵と平文(M)とを入力として受け取る手順と、Zの元r[1],...,r[n]をランダムに選ぶ手順と、g[1]のr[1]乗をu[1]とし、g[2]のr[2]乗をu[2]とし、...という操作をnまで繰り返す事でu[1],...,u[n]を計算する手順と、hをr[1],...,r[n]を全て加えたものでべき乗したものをvとして計算する手順と、c[1]のr[1]乗,...,c[n]のr[n]乗を全てかけたものにさらにMをかけたものをwとして計算する手順と、d[1]のr[1]乗,...,d[n]のr[n]乗を全てかけたものをπとして計算する手順と、u[1],...,u[n],v,w,πを暗号文として出力する手順と、をコンピュータに実行させる。
【0081】
本発明の第19の態様による準同型変換プログラムは、コンピュータに、2つの暗号文から変換した暗号文を出力させる準同型変換プログラムであって、u[1],...,u[n],v,w,πをデータとして持つ第1の暗号文と、u'[1],...,u'[n],v',w',π'をデータとして持つ第2の暗号文とを受け取る手順と、u[1]とu'[1]の積u''[1],...,u[n]とu'[n]の積u''[n]を計算し、vとv'の積v''を計算し、wとw'の積w''を計算し、πとπ'の積π''を計算する手順と、u''[1],...,u''[n],v'',w'',π''を含むデータを変換した暗号文として出力する手順と、をコンピュータに実行させる。
【0082】
本発明の第20の態様による復号プログラムは、コンピュータに、秘密鍵と暗号文とから平文(M)を復号させる復号プログラムであって、x[1],...,x[n],y[1],...,y[n],α,βをデータとして持つ秘密鍵とu[1],...,u[n],v,w,πをデータとして持つ暗号文とを入力として受け取る手順と、u[1]のx[1]乗,...,u[n]のx[n]乗を全てかけあわせたものにさらにvのα乗をかけあわせたものがπと等しければ、u[1]のy[1]乗,…,u[n]のy[n]乗を全てかけあわせたものにさらにvのβ乗をかけあわせたものによってw剰余したものを出力し、そうでなければ暗号文が不正である旨を出力する手順と、をコンピュータに実行させる。
【0083】
以上、実施形態を参照して本発明を説明したが、本発明は上記実施形態に限定されるものではない。本発明の構成や詳細には、本発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【産業上の利用可能性】
【0084】
本発明は、電子投票や電子現金といった産業上有益で、より安全性の高い暗号プロトコルを作る部品として利用され得る。
【符号の説明】
【0085】
1 ・・・ 送信者装置
2 ・・・ 変換装置
3 ・・・ 受信者装置
4 ・・・ 鍵生成装置
5 ・・・ 暗号化装置
6 ・・・ 準同型変換装置
7 ・・・ 復号装置
M ・・・ 平文
X ・・・ 秘密鍵
Y ・・・ 公開鍵
C、C’ ・・・ 暗号文
C” ・・・ 変換した暗号文

【特許請求の範囲】
【請求項1】
公開鍵と秘密鍵とを出力する鍵生成装置と、前記公開鍵と平文(M)とから暗号文を出力する暗号化装置と、該暗号化装置から出力される2つの暗号文から変換した暗号文を出力する準同型変換装置と、前記秘密鍵と前記暗号文とから前記平文(M)を復号する復号装置とを含む、準同型暗号システムであって、
前記鍵生成装置は、
位数が素数qである有限群Gの元g[1],...,g[n],およびhをランダムに選ぶ手段と、
の元x[1],...,x[n],y[1],...,y[n],α,およびβをランダムに選ぶ手段と、
前記g[1]の前記x[1]乗に前記hの前記α乗をかけたものをc[1]とし、前記g[2]の前記x[2]乗に前記hの前記α乗をかけたものをc[2]とし,...という操作をnまで繰り返す事でc[1],...,c[n]を計算する手段と、
前記g[1]の前記y[1]乗に前記hの前記β乗をかけたものをd[1]とし,前記g[2]の前記y[2]乗に前記hの前記β乗をかけたものをd[2]とし,...という操作をnまで繰り返す事でd[1],...,d[n]を計算する手段と、
前記g[1],...,前記g[n],前記h,前記c[1],...,前記c[n],前記d[1],...,前記d[n]を含むデータを前記公開鍵として出力する手段と、
前記x[1],...,前記x[n],前記y[1],...,前記y[n],前記α,前記βを前記秘密鍵として出力する手段と、
を有する、準同型暗号システム。
【請求項2】
前記暗号化装置は、
前記公開鍵と前記平文(M)とを入力として受け取る手段と、
前記Zの元r[1],...,r[n]をランダムに選ぶ手段と、
前記g[1]の前記r[1]乗をu[1]とし、前記g[2]の前記r[2]乗をu[2]とし、...という操作をnまで繰り返す事でu[1],...,u[n]を計算する手段と、
前記hを前記r[1],...,前記r[n]を全て加えたものでべき乗したものをvとして計算する手段と、
前記c[1]の前記r[1]乗,...,前記c[n]の前記r[n]乗を全てかけたものにさらに前記Mをかけたものをwとして計算する手段と、
前記d[1]の前記r[1]乗,...,前記d[n]の前記r[n]乗を全てかけたものをπとして計算する手段と、
前記u[1],...,前記u[n],前記v,前記w,前記πを前記暗号文として出力する手段と、
を含む、請求項1に記載の準同型暗号システム。
【請求項3】
前記準同型変換装置は、
前記暗号化装置から、u[1],...,u[n],v,w,πをデータとして持つ第1の暗号文と、u'[1],...,u'[n],v',w',π'をデータとして持つ第2の暗号文とを受け取る手段と、
前記u[1]と前記u'[1]の積u''[1],...,前記u[n]と前記u'[n]の積u''[n]を計算し、前記vと前記v'の積v''を計算し、前記wと前記w'の積w''を計算し、前記πと前記π'の積π''を計算する手段と、
前記u''[1],...,前記u''[n],前記v'',前記w'',前記π''を含むデータを前記変換した暗号文として出力する手段と、
を含む、請求項2に記載の準同型暗号システム。
【請求項4】
前記復号装置は、
前記x[1],...,x[n],y[1],...,y[n],α,βをデータとして持つ前記秘密鍵と前記u[1],...,u[n],v,w,πをデータとして持つ前記暗号文とを入力として受け取る手段と、
前記u[1]の前記x[1]乗,...,前記u[n]の前記x[n]乗を全てかけあわせたものにさらに前記vの前記α乗をかけあわせたものが前記πと等しければ、前記u[1]の前記y[1]乗,…,前記u[n]の前記y[n]乗を全てかけあわせたものにさらに前記vの前記β乗をかけあわせたものによって前記w剰余したものを出力し、そうでなければ前記暗号文が不正である旨を出力する手段と、
を含む請求項2又は3に記載の準同型暗号システム。
【請求項5】
公開鍵と秘密鍵とを出力する鍵生成ステップと、前記公開鍵と平文(M)とから暗号文を出力する暗号化ステップと、該暗号化ステップから出力される2つの暗号文から変換した暗号文を出力する準同型変換ステップと、前記秘密鍵と前記暗号文とから前記平文(M)を復号する復号ステップとを含む、準同型暗号方法であって、
前記鍵生成ステップは、
位数が素数qである有限群Gの元g[1],...,g[n],およびhをランダムに選び、
の元x[1],...,x[n],y[1],...,y[n],α,およびβをランダムに選び、
前記g[1]の前記x[1]乗に前記hの前記α乗をかけたものをc[1]とし、前記g[2]の前記x[2]乗に前記hの前記α乗をかけたものをc[2]とし,...という操作をnまで繰り返す事でc[1],...,c[n]を計算し、
前記g[1]の前記y[1]乗に前記hの前記β乗をかけたものをd[1]とし,前記g[2]の前記y[2]乗に前記hの前記β乗をかけたものをd[2]とし,...という操作をnまで繰り返す事でd[1],...,d[n]を計算し、
前記g[1],...,前記g[n],前記h,前記c[1],...,前記c[n],前記d[1],...,前記d[n]を含むデータを前記公開鍵として出力し、
前記x[1],...,前記x[n],前記y[1],...,前記y[n],前記α,前記βを前記秘密鍵として出力する、
準同型暗号方法。
【請求項6】
前記暗号化ステップは、
前記公開鍵と前記平文(M)とを入力として受け取り、
前記Zの元r[1],...,r[n]をランダムに選び、
前記g[1]の前記r[1]乗をu[1]とし、前記g[2]の前記r[2]乗をu[2]とし、...という操作をnまで繰り返す事でu[1],...,u[n]を計算し、
前記hを前記r[1],...,前記r[n]を全て加えたものでべき乗したものをvとして計算し、
前記c[1]の前記r[1]乗,...,前記c[n]の前記r[n]乗を全てかけたものにさらに前記Mをかけたものをwとして計算し、
前記d[1]の前記r[1]乗,...,前記d[n]の前記r[n]乗を全てかけたものをπとして計算し、
前記u[1],...,前記u[n],前記v,前記w,前記πを前記暗号文として出力する、
請求項5に記載の準同型暗号方法。
【請求項7】
前記準同型変換ステップは、
前記暗号化ステップから、u[1],...,u[n],v,w,πをデータとして持つ第1の暗号文と、u'[1],...,u'[n],v',w',π'をデータとして持つ第2の暗号文とを受け取り、
前記u[1]と前記u'[1]の積u''[1],...,前記u[n]と前記u'[n]の積u''[n]を計算し、前記vと前記v'の積v''を計算し、前記wと前記w'の積w''を計算し、前記πと前記π'の積π''を計算し、
前記u''[1],...,前記u''[n],前記v'',前記w'',前記π''を含むデータを前記変換した暗号文として出力する、
請求項6に記載の準同型暗号方法。
【請求項8】
前記復号ステップは、
前記x[1],...,x[n],y[1],...,y[n],α,βをデータとして持つ前記秘密鍵と前記u[1],...,u[n],v,w,πをデータとして持つ前記暗号文とを入力として受け取り、
前記u[1]の前記x[1]乗,...,前記u[n]の前記x[n]乗を全てかけあわせたものにさらに前記vの前記α乗をかけあわせたものが前記πと等しければ、前記u[1]の前記y[1]乗,…,前記u[n]の前記y[n]乗を全てかけあわせたものにさらに前記vの前記β乗をかけあわせたものによって前記w剰余したものを出力し、そうでなければ前記暗号文が不正である旨を出力する、
請求項6又は7に記載の準同型暗号方法。
【請求項9】
公開鍵と秘密鍵とを出力する鍵生成装置と、前記公開鍵と平文(M)とから暗号文を出力する暗号化装置とを含む送信者装置であって、
前記鍵生成装置は、
位数が素数qである有限群Gの元g[1],...,g[n],およびhをランダムに選ぶ手段と、
の元x[1],...,x[n],y[1],...,y[n],α,およびβをランダムに選ぶ手段と、
前記g[1]の前記x[1]乗に前記hの前記α乗をかけたものをc[1]とし、前記g[2]の前記x[2]乗に前記hの前記α乗をかけたものをc[2]とし,...という操作をnまで繰り返す事でc[1],...,c[n]を計算する手段と、
前記g[1]の前記y[1]乗に前記hの前記β乗をかけたものをd[1]とし,前記g[2]の前記y[2]乗に前記hの前記β乗をかけたものをd[2]とし,...という操作をnまで繰り返す事でd[1],...,d[n]を計算する手段と、
前記g[1],...,前記g[n],前記h,前記c[1],...,前記c[n],前記d[1],...,前記d[n]を含むデータを前記公開鍵として出力する手段と、
前記x[1],...,前記x[n],前記y[1],...,前記y[n],前記α,前記βを前記秘密鍵として出力する手段と、
を有する、送信者装置。
【請求項10】
前記暗号化装置は、
前記公開鍵と前記平文(M)とを入力として受け取る手段と、
前記Zの元r[1],...,r[n]をランダムに選ぶ手段と、
前記g[1]の前記r[1]乗をu[1]とし、前記g[2]の前記r[2]乗をu[2]とし、...という操作をnまで繰り返す事でu[1],...,u[n]を計算する手段と、
前記hを前記r[1],...,前記r[n]を全て加えたものでべき乗したものをvとして計算する手段と、
前記c[1]の前記r[1]乗,...,前記c[n]の前記r[n]乗を全てかけたものにさらに前記Mをかけたものをwとして計算する手段と、
前記d[1]の前記r[1]乗,...,前記d[n]の前記r[n]乗を全てかけたものをπとして計算する手段と、
前記u[1],...,前記u[n],前記v,前記w,前記πを前記暗号文として出力する手段と、
を含む、請求項9に記載の送信者装置。
【請求項11】
2つの暗号文から変換した暗号文を出力する準同型変換装置を含む変換装置であって、
前記準同型変換装置は、
u[1],...,u[n],v,w,πをデータとして持つ第1の暗号文と、u'[1],...,u'[n],v',w',π'をデータとして持つ第2の暗号文とを受け取る手段と、
前記u[1]と前記u'[1]の積u''[1],...,前記u[n]と前記u'[n]の積u''[n]を計算し、前記vと前記v'の積v''を計算し、前記wと前記w'の積w''を計算し、前記πと前記π'の積π''を計算する手段と、
前記u''[1],...,前記u''[n],前記v'',前記w'',前記π''を含むデータを前記変換した暗号文として出力する手段と、
を含む、変換装置。
【請求項12】
秘密鍵と暗号文とから平文(M)を復号する復号装置を含む受信者装置であって、前記復号装置は、
x[1],...,x[n],y[1],...,y[n],α,βをデータとして持つ前記秘密鍵とu[1],...,u[n],v,w,πをデータとして持つ前記暗号文とを入力として受け取る手段と、
前記u[1]の前記x[1]乗,...,前記u[n]の前記x[n]乗を全てかけあわせたものにさらに前記vの前記α乗をかけあわせたものが前記πと等しければ、前記u[1]の前記y[1]乗,…,前記u[n]の前記y[n]乗を全てかけあわせたものにさらに前記vの前記β乗をかけあわせたものによって前記w剰余したものを出力し、そうでなければ前記暗号文が不正である旨を出力する手段と、
を含む受信者装置。
【請求項13】
公開鍵と秘密鍵とを出力する鍵生成ステップと、前記公開鍵と平文(M)とから暗号文を出力する暗号化ステップとを含む送信方法であって、
前記鍵生成ステップは、
位数が素数qである有限群Gの元g[1],...,g[n],およびhをランダムに選び、
の元x[1],...,x[n],y[1],...,y[n],α,およびβをランダムに選び、
前記g[1]の前記x[1]乗に前記hの前記α乗をかけたものをc[1]とし、前記g[2]の前記x[2]乗に前記hの前記α乗をかけたものをc[2]とし,...という操作をnまで繰り返す事でc[1],...,c[n]を計算し、
前記g[1]の前記y[1]乗に前記hの前記β乗をかけたものをd[1]とし,前記g[2]の前記y[2]乗に前記hの前記β乗をかけたものをd[2]とし,...という操作をnまで繰り返す事でd[1],...,d[n]を計算し、
前記g[1],...,前記g[n],前記h,前記c[1],...,前記c[n],前記d[1],...,前記d[n]を含むデータを前記公開鍵として出力し、
前記x[1],...,前記x[n],前記y[1],...,前記y[n],前記α,前記βを前記秘密鍵として出力する、
送信方法。
【請求項14】
前記暗号化ステップは、
前記公開鍵と前記平文(M)とを入力として受け取り、
前記Zの元r[1],...,r[n]をランダムに選び、
前記g[1]の前記r[1]乗をu[1]とし、前記g[2]の前記r[2]乗をu[2]とし、...という操作をnまで繰り返す事でu[1],...,u[n]を計算し、
前記hを前記r[1],...,前記r[n]を全て加えたものでべき乗したものをvとして計算し、
前記c[1]の前記r[1]乗,...,前記c[n]の前記r[n]乗を全てかけたものにさらに前記Mをかけたものをwとして計算し、
前記d[1]の前記r[1]乗,...,前記d[n]の前記r[n]乗を全てかけたものをπとして計算し、
前記u[1],...,前記u[n],前記v,前記w,前記πを前記暗号文として出力する、
請求項13に記載の送信方法。
【請求項15】
2つの暗号文から変換した暗号文を出力する準同型変換ステップを含む変換方法であって、
前記準同型変換ステップは、
u[1],...,u[n],v,w,πをデータとして持つ第1の暗号文と、u'[1],...,u'[n],v',w',π'をデータとして持つ第2の暗号文とを受け取り、
前記u[1]と前記u'[1]の積u''[1],...,前記u[n]と前記u'[n]の積u''[n]を計算し、前記vと前記v'の積v''を計算し、前記wと前記w'の積w''を計算し、前記πと前記π'の積π''を計算し、
前記u''[1],...,前記u''[n],前記v'',前記w'',前記π''を含むデータを前記変換した暗号文として出力する、
変換方法。
【請求項16】
秘密鍵と暗号文とから平文(M)を復号する復号ステップを含む受信方法であって、前記復号ステップは、
x[1],...,x[n],y[1],...,y[n],α,βをデータとして持つ前記秘密鍵とu[1],...,u[n],v,w,πをデータとして持つ前記暗号文とを入力として受け取り、
前記u[1]の前記x[1]乗,...,前記u[n]の前記x[n]乗を全てかけあわせたものにさらに前記vの前記α乗をかけあわせたものが前記πと等しければ、前記u[1]の前記y[1]乗,…,前記u[n]の前記y[n]乗を全てかけあわせたものにさらに前記vの前記β乗をかけあわせたものによって前記w剰余したものを出力し、そうでなければ前記暗号文が不正である旨を出力する、
受信方法。
【請求項17】
公開鍵と秘密鍵とを出力する鍵生成装置であって、
位数が素数qである有限群Gの元g[1],...,g[n],およびhをランダムに選ぶ手段と、
の元x[1],...,x[n],y[1],...,y[n],α,およびβをランダムに選ぶ手段と、
前記g[1]の前記x[1]乗に前記hの前記α乗をかけたものをc[1]とし、前記g[2]の前記x[2]乗に前記hの前記α乗をかけたものをc[2]とし,...という操作をnまで繰り返す事でc[1],...,c[n]を計算する手段と、
前記g[1]の前記y[1]乗に前記hの前記β乗をかけたものをd[1]とし,前記g[2]の前記y[2]乗に前記hの前記β乗をかけたものをd[2]とし,...という操作をnまで繰り返す事でd[1],...,d[n]を計算する手段と、
前記g[1],...,前記g[n],前記h,前記c[1],...,前記c[n],前記d[1],...,前記d[n]を含むデータを前記公開鍵として出力する手段と、
前記x[1],...,前記x[n],前記y[1],...,前記y[n],前記α,前記βを前記秘密鍵として出力する手段と、
を含む鍵生成装置。
【請求項18】
公開鍵と平文(M)とから暗号文を出力する暗号化装置であって、
g[1],...,g[n],h,c[1],...,c[n],d[1],...,d[n]を含むデータからなる前記公開鍵と前記平文(M)とを入力として受け取る手段と、
の元r[1],...,r[n]をランダムに選ぶ手段と、
前記g[1]の前記r[1]乗をu[1]とし、前記g[2]の前記r[2]乗をu[2]とし、...という操作をnまで繰り返す事でu[1],...,u[n]を計算する手段と、
前記hを前記r[1],...,前記r[n]を全て加えたものでべき乗したものをvとして計算する手段と、
前記c[1]の前記r[1]乗,...,前記c[n]の前記r[n]乗を全てかけたものにさらに前記Mをかけたものをwとして計算する手段と、
前記d[1]の前記r[1]乗,...,前記d[n]の前記r[n]乗を全てかけたものをπとして計算する手段と、
前記u[1],...,前記u[n],前記v,前記w,前記πを前記暗号文として出力する手段と、
を含む暗号化装置。
【請求項19】
2つの暗号文から変換した暗号文を出力する準同型変換装置であって、
u[1],...,u[n],v,w,πをデータとして持つ第1の暗号文と、u'[1],...,u'[n],v',w',π'をデータとして持つ第2の暗号文とを受け取る手段と、
前記u[1]と前記u'[1]の積u''[1],...,前記u[n]と前記u'[n]の積u''[n]を計算し、前記vと前記v'の積v''を計算し、前記wと前記w'の積w''を計算し、前記πと前記π'の積π''を計算する手段と、
前記u''[1],...,前記u''[n],前記v'',前記w'',前記π''を含むデータを前記変換した暗号文として出力する手段と、
を含む準同型変換装置。
【請求項20】
秘密鍵と暗号文とから平文(M)を復号する復号装置であって、
x[1],...,x[n],y[1],...,y[n],α,βをデータとして持つ前記秘密鍵とu[1],...,u[n],v,w,πをデータとして持つ前記暗号文とを入力として受け取る手段と、
前記u[1]の前記x[1]乗,...,前記u[n]の前記x[n]乗を全てかけあわせたものにさらに前記vの前記α乗をかけあわせたものが前記πと等しければ、前記u[1]の前記y[1]乗,…,前記u[n]の前記y[n]乗を全てかけあわせたものにさらに前記vの前記β乗をかけあわせたものによって前記w剰余したものを出力し、そうでなければ前記暗号文が不正である旨を出力する手段と、
を含む復号装置。
【請求項21】
公開鍵と秘密鍵とを出力する鍵生成方法であって、
位数が素数qである有限群Gの元g[1],...,g[n],およびhをランダムに選び、
の元x[1],...,x[n],y[1],...,y[n],α,およびβをランダムに選び、
前記g[1]の前記x[1]乗に前記hの前記α乗をかけたものをc[1]とし、前記g[2]の前記x[2]乗に前記hの前記α乗をかけたものをc[2]とし,...という操作をnまで繰り返す事でc[1],...,c[n]を計算し、
前記g[1]の前記y[1]乗に前記hの前記β乗をかけたものをd[1]とし,前記g[2]の前記y[2]乗に前記hの前記β乗をかけたものをd[2]とし,...という操作をnまで繰り返す事でd[1],...,d[n]を計算し、
前記g[1],...,前記g[n],前記h,前記c[1],...,前記c[n],前記d[1],...,前記d[n]を含むデータを前記公開鍵として出力し、
前記x[1],...,前記x[n],前記y[1],...,前記y[n],前記α,前記βを前記秘密鍵として出力する、
鍵生成方法。
【請求項22】
公開鍵と平文(M)とから暗号文を出力する暗号化方法であって、
g[1],...,g[n],h,c[1],...,c[n],d[1],...,d[n]を含むデータからなる前記公開鍵と前記平文(M)とを入力として受け取り、
の元r[1],...,r[n]をランダムに選び、
前記g[1]の前記r[1]乗をu[1]とし、前記g[2]の前記r[2]乗をu[2]とし、...という操作をnまで繰り返す事でu[1],...,u[n]を計算し、
前記hを前記r[1],...,前記r[n]を全て加えたものでべき乗したものをvとして計算し、
前記c[1]の前記r[1]乗,...,前記c[n]の前記r[n]乗を全てかけたものにさらに前記Mをかけたものをwとして計算し、
前記d[1]の前記r[1]乗,...,前記d[n]の前記r[n]乗を全てかけたものをπとして計算し、
前記u[1],...,前記u[n],前記v,前記w,前記πを前記暗号文として出力する、
暗号化方法。
【請求項23】
2つの暗号文から変換した暗号文を出力する準同型変換方法であって、
u[1],...,u[n],v,w,πをデータとして持つ第1の暗号文と、u'[1],...,u'[n],v',w',π'をデータとして持つ第2の暗号文とを受け取り、
前記u[1]と前記u'[1]の積u''[1],...,前記u[n]と前記u'[n]の積u''[n]を計算し、前記vと前記v'の積v''を計算し、前記wと前記w'の積w''を計算し、前記πと前記π'の積π''を計算し、
前記u''[1],...,前記u''[n],前記v'',前記w'',前記π''を含むデータを前記変換した暗号文として出力する、
準同型変換方法。
【請求項24】
秘密鍵と暗号文とから平文(M)を復号する復号方法であって、
x[1],...,x[n],y[1],...,y[n],α,βをデータとして持つ前記秘密鍵とu[1],...,u[n],v,w,πをデータとして持つ前記暗号文とを入力として受け取り、
前記u[1]の前記x[1]乗,...,前記u[n]の前記x[n]乗を全てかけあわせたものにさらに前記vの前記α乗をかけあわせたものが前記πと等しければ、前記u[1]の前記y[1]乗,…,前記u[n]の前記y[n]乗を全てかけあわせたものにさらに前記vの前記β乗をかけあわせたものによって前記w剰余したものを出力し、そうでなければ前記暗号文が不正である旨を出力する、
復号方法。
【請求項25】
コンピュータに、公開鍵と秘密鍵とを出力させるための鍵生成プログラムであって、
位数が素数qである有限群Gの元g[1],...,g[n],およびhをランダムに選ぶ手順と、
の元x[1],...,x[n],y[1],...,y[n],α,およびβをランダムに選ぶ手順と、
前記g[1]の前記x[1]乗に前記hの前記α乗をかけたものをc[1]とし、前記g[2]の前記x[2]乗に前記hの前記α乗をかけたものをc[2]とし,...という操作をnまで繰り返す事でc[1],...,c[n]を計算する手順と、
前記g[1]の前記y[1]乗に前記hの前記β乗をかけたものをd[1]とし,前記g[2]の前記y[2]乗に前記hの前記β乗をかけたものをd[2]とし,...という操作をnまで繰り返す事でd[1],...,d[n]を計算する手順と、
前記g[1],...,前記g[n],前記h,前記c[1],...,前記c[n],前記d[1],...,前記d[n]を含むデータを前記公開鍵として出力する手順と、
前記x[1],...,前記x[n],前記y[1],...,前記y[n],前記α,前記βを前記秘密鍵として出力する手順と、
を前記コンピュータに実行させる鍵生成プログラム。
【請求項26】
コンピュータに、公開鍵と平文(M)とから暗号文を出力させる暗号化プログラムであって、
g[1],...,g[n],h,c[1],...,c[n],d[1],...,d[n]を含むデータからなる前記公開鍵と前記平文(M)とを入力として受け取る手順と、
の元r[1],...,r[n]をランダムに選ぶ手順と、
前記g[1]の前記r[1]乗をu[1]とし、前記g[2]の前記r[2]乗をu[2]とし、...という操作をnまで繰り返す事でu[1],...,u[n]を計算する手順と、
前記hを前記r[1],...,前記r[n]を全て加えたものでべき乗したものをvとして計算する手順と、
前記c[1]の前記r[1]乗,...,前記c[n]の前記r[n]乗を全てかけたものにさらに前記Mをかけたものをwとして計算する手順と、
前記d[1]の前記r[1]乗,...,前記d[n]の前記r[n]乗を全てかけたものをπとして計算する手順と、
前記u[1],...,前記u[n],前記v,前記w,前記πを前記暗号文として出力する手順と、
を前記コンピュータに実行させる暗号化プログラム。
【請求項27】
コンピュータに、2つの暗号文から変換した暗号文を出力させる準同型変換プログラムであって、
u[1],...,u[n],v,w,πをデータとして持つ第1の暗号文と、u'[1],...,u'[n],v',w',π'をデータとして持つ第2の暗号文とを受け取る手順と、
前記u[1]と前記u'[1]の積u''[1],...,前記u[n]と前記u'[n]の積u''[n]を計算し、前記vと前記v'の積v''を計算し、前記wと前記w'の積w''を計算し、前記πと前記π'の積π''を計算する手順と、
前記u''[1],...,前記u''[n],前記v'',前記w'',前記π''を含むデータを前記変換した暗号文として出力する手順と、
を前記コンピュータに実行させる準同型変換プログラム。
【請求項28】
コンピュータに、秘密鍵と暗号文とから平文(M)を復号させる復号プログラムであって、
x[1],...,x[n],y[1],...,y[n],α,βをデータとして持つ前記秘密鍵とu[1],...,u[n],v,w,πをデータとして持つ前記暗号文とを入力として受け取る手順と、
前記u[1]の前記x[1]乗,...,前記u[n]の前記x[n]乗を全てかけあわせたものにさらに前記vの前記α乗をかけあわせたものが前記πと等しければ、前記u[1]の前記y[1]乗,…,前記u[n]の前記y[n]乗を全てかけあわせたものにさらに前記vの前記β乗をかけあわせたものによって前記w剰余したものを出力し、そうでなければ前記暗号文が不正である旨を出力する手順と、
を前記コンピュータに実行させる復号プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate


【公開番号】特開2011−107407(P2011−107407A)
【公開日】平成23年6月2日(2011.6.2)
【国際特許分類】
【出願番号】特願2009−262194(P2009−262194)
【出願日】平成21年11月17日(2009.11.17)
【出願人】(000004237)日本電気株式会社 (19,353)
【Fターム(参考)】