説明

暗号システム、暗号方法、プログラム、および、情報記録媒体

【課題】複数の宛先への異なるメッセージを1つの暗号文にしたり、秘密投票に応用できる暗号システム等を提供する。
【解決手段】暗号システム101において、秘密鍵計算部102は秘密鍵p[1],…,p[s]を計算し、公開鍵計算部103は公開鍵g[1],…,g[s]を計算し、サンプリング部104は当該秘密鍵の積n = p[1]…p[s]に基づいてサンプルを選び、符号化部105はx[1],…,x[s]をg[1]x[1]…g[s]x[s]に符号化し、暗号部106は平文を符号化部105に与えた結果とサンプリング部104に選ばせたサンプルを乗じて暗号文zとし、復号部107は暗号文zにOkamoto-Uchiyamaの対数関数に基づく関数を適用して復号文を得る。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、複数の平文を1つの暗号文にして当該平文を個別に復号でき、特に、複数の宛先に対する異なる平文を1つの暗号文にし、当該暗号文から自身宛の平文を安全に取得できる暗号システム暗号方法、これらをコンピュータを用いて実現するプログラム、ならびに、当該プログラムを記録したコンピュータ読取可能な情報記録媒体に関する。
【背景技術】
【0002】
従来から各種の公開鍵暗号技術が提案されており、このような公開鍵暗号については、以下の文献に開示がされている。
【非特許文献1】Okamoto T.and Uchiyama S., A New Public-key Cryptosystem as Secure as Factoring, Nyberg,K.(ed.), EUROCRYPT 1998,LNCS, vol.1403, pp.308-318, Springer,Heidelberg, 1998年
【0003】
[非特許文献1]では、Okamoto-Uchiyamaの対数関数Lpを利用した公開鍵暗号技術が提案されている。ここで、対数関数Lpとは、以下のように定義される。
【0004】
すなわち、サイズkの素数pに対する群
(Z/p2)*
と、(Z/p2)*に対して定義されるp-Sylow部分群
Γp = {x | x∈(Z/p2)*,x≡1 (mod p)}
を考える。
【0005】
Γpは、その位数(order)がpの羃に等しい最大部分群である。
【0006】
群(Z/p2)*の位数は、オイラーのトーティエント(totient)関数φにより、
φ(p2) = p(p-1)
と書くことができる。
【0007】
したがって、(Z/p2)*は、Γpと、位数(p-1)の部分群の内部直和(internal direct sum)である。
【0008】
なお、本願では、AとBの直和をA (+) Bのように記載することとする。一般的な数学記法では、(+)は、+記号を丸で囲んだ符号で表記される。
【0009】
ここで、x (mod p2)からx (mod p)への射(mapping)は、(Z/p2)*から(Z/p)*の上への準同型写像(ホモモルフィズム;homomorphism)であるから、(Z/p2)*pは、(Z/p)*と準同形である。
【0010】
したがって、位数p-1の部分群は、(Z/p)*に対する同型(アイソモルフィズム;isomorphism)であり、巡回的である。
【0011】
一方、Γpは、位数pであり、巡回的である。
【0012】
pとp-1は互いに素であるから、(Z/p)*は、巡回的である。
【0013】
ここで、x≡1 (mod p)と仮定すると、あるc∈Zが存在して
x = cp + 1
である。したがって、
xp = (cp + 1)p = Σi=0p pCi(cp)p-i
と展開できる。ここで、pCiは2項係数を意味し、
pC0 = 1;
pC1 = pCp-1 = p;
pC2 = pCp-2 = p(p-1)/2; …
であるから、
Σi=0p pCi(cp)p-i = 1 + (cp)p + (cp)2p(p-1)/2 + …
のように展開できる。
【0014】
したがって、あるd∈Zが存在して
xp = dp2 + 1
である。
【0015】
これによって、x≡1 (mod p)ならば、xp≡1 (mod p2)であることが証明された。
【0016】
したがって、
Γp = {x | x∈(Z/p2)*,x≡1 (mod p)}
である。
【0017】
すると、任意のx∈Γpに対して
x - 1 = ap
を満たす整数aが一意に定まる。
【0018】
そこで、対数関数Lpは、当該xおよびaによって、
Lp(x) = a (mod p)
と定義される。Lpは、Γpから加算群(Z/p,+)の中へのホモモルフィズムである。
【0019】
さらに、Lpは、Γpから加算群(Z/p,+)の上へのアイソモルフィズムである。
【0020】
すなわち、任意のa,b∈Γpに対して
Lp(ab) = Lp(a) + Lp(a) (mod p)
が成立する。
【0021】
特に、任意のx,y∈Γpに対して、m∈Z/pについて
y = xm
が成立すれば、
Lp(y) = mLp(x)
である。
【0022】
これから、Lp(x)≠0である限り、
m = Lp(y)Lp(x)-1
である。
【0023】
Lp(x)=0となるのは、xがΓpの単位元(identity element)である場合であり、かつ、その場合に限られる。
【0024】
そして、このようなホモモルフィズムにおける性質を利用した新たな公開鍵暗号の技術の開発が進められている。
【発明の開示】
【発明が解決しようとする課題】
【0025】
ここで、複数の平文を1つの暗号文に暗号化する一方で、当該平文を個別に復号できるような暗号システム、特に、複数の宛先に対する異なる平文を安全に1つの暗号文にし、当該暗号文から自身宛の平文を安全に取得でき、応用によっては、複数の暗号文を個別に復号することなく、平文の計算が可能となるような暗号システムが強く望まれている。
【0026】
本発明は、以上の課題を解決するもので、複数の平文を1つの暗号文にして当該平文を個別に復号でき、特に、複数の宛先に対する異なる平文を1つの暗号文にし、当該暗号文から自身宛の平文を安全に取得できる暗号システム暗号方法、これらをコンピュータを用いて実現するプログラム、ならびに、当該プログラムを記録したコンピュータ読取可能な情報記録媒体を提供することを目的とする。
【課題を解決するための手段】
【0027】
以上の目的を達成するため、本発明の原理にしたがって、下記の発明を開示する。
【0028】
本発明の第1の観点に係る暗号システムは、サイズkの素数pに対する群
(Z/p2)*
と、(Z/p2)*に対して定義されるp-Sylow部分群
Γp = {x | x∈(Z/p2)*,x≡1 (mod p)}
と、当該Γpの任意の要素xに対して
x - 1 = ap
を一意に満たす整数aにより定義される対数関数
Lp(x) = a (mod p)
と、サイズkの互いに異なる素数
p[1],…,p[s]
であって、任意の整数i,j (1≦i,j≦s,i≠j)について
p[i]は、p[j]-1の素因子ではない
素数に対して定義される整数
n = p[1]…p[s]
および群
G = (Z/n2)*
H = Gn = {xn | x∈G};
P = (Z/p[1]) (+) … (+) (Z/p[s]) = {(x[1],…,x[s]) | x[1]∈(Z/p[1]),…,x[s]∈(Z/p[s])}
と、を用い、公開鍵計算部、サンプリング部、符号化部、暗号部、復号部を有し、以下のように構成する。
【0029】
すなわち、公開鍵計算部は、当該素数
p[1],…,p[s]
のそれぞれに対して、
h[1]∈Z/p[1]2,…,h[s]∈Z/p[s]2
をランダムに選択し、整数i (1≦i≦s)のそれぞれについて、
h[i]がp[i]で割り切れないこと、
かつ、
h[i]p[i]-1≠1 (mod p[i]2)
を満たすまで当該選択を繰り返し、当該選択された
h[1],…,h[s]
に対して、中国の剰余定理により、整数i,j (1≦i≦s,i≠j)のそれぞれについて、
g[i] = h[i]p[i]-1 (mod p[i]2);
g[i] = 1 (mod p[j]2)
を満たす
g[1],…,g[s]
を計算して、
(g[1],…,g[s])
を公開鍵とする。
【0030】
一方、サンプリング部は、当該素数
p[1],…,p[s]
の積
n = p[1]…p[s]
に対する群
G = (Z/n2)*
の要素r[0]をランダムかつ一様に選択して、群
H = Gn
の要素
r = r[0]n
をランダムかつ一様にサンプリングする。
【0031】
さらに、符号化部は、整数
x[1]∈(Z/p[1]),…,x[s]∈(Z/p[s])
の直和からなる平文
(x[1],…,x[s])∈(Z/p[1]) (+) … (+) (Z/p[s])
を、公開鍵(g[1],…,g[s])により定義される符号化関数
ε(x[1],…,x[s]) = g[1]x[1]…g[s]x[s]
により符号化する。
【0032】
そして、暗号部は、整数
m[1]∈(Z/p[1]),…,m[s]∈(Z/p[s])
の直和からなる平文
(m[1],…,m[s])∈(Z/p[1]) (+) … (+) (Z/p[s])
を、符号化部に符号化させ、サンプリング部にサンプリングさせたrを乗じて、暗号文
e(m[1],…,m[s]) = ε(m[1],…,m[s])r = g[1]m[1]…g[s]m[s]r
を得る。
【0033】
一方、復号部は、当該素数
p[1],…,[s]
と当該公開鍵
(g[1],…,g[s])
に対して、整数i (1≦i≦s)のそれぞれについて定義される関数
d[i](z) = 〔Lp[i](zf[i]) (mod p[i]2)〕/〔Lp[i](g[i]f[i]) (mod p[i]2)〕;
f[i] = 〔Πj=1s p[j](p[j]-1)〕/p[i]
により、暗号文zに対する復号文
d(z) = (d[1](z),…,d[s](z))
を得る。
【0034】
また、本発明の暗号システムは、秘密鍵計算部をさらに備え、以下のように構成することができる。
【0035】
すなわち、秘密鍵計算部は、サイズkの互いに異なる素数
q[1],…,q[s]
を選択し、任意の整数i,j (1≦i,j≦s,i≠j)について
q[i]は、q[j]-1の素因子ではない
ことが満たされるまで当該選択を繰り返し、その結果得られた素数q[1],…,q[s]を、
p[1],…,p[s]
とする。
【0036】
また、本発明の暗号システムにおいて、
s = 4
であり、当該暗号システムは、暗号装置、第1復号装置、第2復号装置を有し、以下のように構成することができる。
【0037】
すなわち、当該第1復号装置は、自身の秘密鍵の候補となる素数q[1],q[2]の積q[1]q[2]を計算して当該第2復号装置に公開し、当該第2復号装置は、自身の秘密鍵の候補となる素数q[3],q[4]の積q[3]q[4]を計算して当該第2復号装置に公開し、当該第1復号装置は、公開されたq[3]q[4]がq[1]-1およびq[2]-1に対して素であることを確認し、当該第2復号装置は、公開されたq[1]q[2]がq[3]-1およびq[4]-1に対して素であることを確認し、当該第1復号装置と、当該第2復号装置と、の両者にて、当該素であることが確認されるまでこれを繰り返し、当該両者にて当該素であることが確認されたら、当該第1暗号装置は、当該素数q[1],q[2]を自身の秘密鍵p[1],p[2]とし、当該第2暗号装置は、当該素数q[3],q[4]を自身の秘密鍵p[3],p[4]として、秘密鍵計算部として機能する。
【0038】
一方、当該第1復号装置は、自身の秘密鍵p[1],p[2]からg[1],g[2]を計算し、これらを当該暗号装置に公開し、当該第2復号装置は、自身の秘密鍵p[3],p[4]からg[3],g[4]を計算し、これらを当該暗号装置に公開して、公開鍵計算部として機能する。
【0039】
さらに、当該第1復号装置は、自身の秘密鍵p[1],p[2]の積p[1]p[2]を計算し、これらを当該暗号装置に公開し、当該第2復号装置は、自身の秘密鍵p[3],p[4]の積p[3]p[4]を計算し、これらを当該暗号装置に公開し、当該暗号装置は、当該公開されたp[1]p[2],p[3]p[4]の積nを計算し、群の要素rをサンプリングして、サンプリング部として機能する。
【0040】
そして、暗号装置は、公開された公開鍵(g[1],g[2],g[3],g[4])により平文を符号化して、符号化部として機能する。
【0041】
一方、暗号装置は、符号化部に当該第1復号装置宛の平文m[1],m[2]および第2復号装置宛の平文m[3],m[4]を符号化させ、サンプリング部にサンプリングさせたrを乗じ、暗号文zを得て、暗号部として機能する。
【0042】
さらに、第1復号装置は、自身の秘密鍵p[1],p[2]からp[1](p[1]-1)p[2](p[2]-1)を計算して第2復号装置に公開し、第2復号装置は、自身の秘密鍵p[3],p[4]からp[3](p[3]-1)p[4](p[4]-1)を計算して第1復号装置に公開し、第1復号装置は、暗号文zから自身宛の復号文d[1](z),d[2](z)を計算し、第2復号装置は、暗号文zから自身宛の復号文d[3](z),d[4](z)を計算して、復号部として機能する。
【0043】
また、本発明の暗号システムにおいて、暗号部は、複数の平文を受け付け、平文を受け付けるごとに暗号文を得て、得られた暗号文のすべての積を復号部に与えるように構成することができる。
【0044】
この場合、復号部では、もとの平文の各要素同士を加算したものが、復号文として得られることになる。
【0045】
本発明のその他の観点に係る暗号方法は、上記暗号システムが実行する暗号方法である。
【0046】
典型的には、当該暗号方法は、上記の暗号装置、第1復号装置、第2復号装置が実行する。
【0047】
本発明の他の観点に係るプログラムは、コンピュータもしくはコンピュータ群を、上記暗号システムの各部として機能させるように構成する。
【0048】
典型的には、当該プログラムは、3台のコンピュータを、上記の暗号装置、第1復号装置、第2復号装置として機能させるように構成する。
【0049】
本発明の他の観点に係るコンピュータ読取可能な情報記録媒体は、上記のプログラムを記録するように構成する。たとえば、コンパクトディスク、フレキシブルディスク、ハードディスク、光磁気ディスク、ディジタルビデオディスク、磁気テープ、半導体メモリ等のコンピュータ読取可能な情報記憶媒体に記録することができる。
【0050】
なお、コンピュータもしくはコンピュータ群が、上記プログラムを実行することによって、本発明の暗号システムが実現されるが、当該プログラムは、コンピュータ通信網を介して配布・販売することができる。また、上記情報記憶媒体は、当該コンピュータとは、とは独立して配布・販売することができる。
【発明の効果】
【0051】
本発明によれば、複数の平文を1つの暗号文にして当該平文を個別に復号でき、特に、複数の宛先に対する異なる平文を1つの暗号文にし、当該暗号文から自身宛の平文を安全に取得できる暗号システム暗号方法、これらをコンピュータを用いて実現するプログラム、ならびに、当該プログラムを記録したコンピュータ読取可能な情報記録媒体を提供することができる。
【発明を実施するための最良の形態】
【0052】
以下に本発明の実施形態を説明する。なお、以下に説明する実施形態は説明のためのものであり、本願発明の範囲を制限するものではない。したがって、当業者であればこれらの各要素もしくは全要素をこれと均等なものに置換した実施形態を採用することが可能であるが、これらの実施形態も本願発明の範囲に含まれる。
【実施例1】
【0053】
図1は、本発明の実施形態の1つに係る暗号システムの概要構成を示す模式図である。以下、本図を参照して説明する。
【0054】
暗号システム101は、秘密鍵計算部102、公開鍵計算部103、サンプリング部104、符号化部105、暗号部106、復号部107を備え、典型的には、コンピュータ通信網を介して相互に通信可能な複数の復号装置111および暗号装置112からなるコンピュータ群によって実現される。
【0055】
具体的には、秘密鍵計算部102は、復号装置111によって実現され、公開鍵計算部103は、復号装置111によって実現され、サンプリング部104は、復号装置111によって実現され、符号化部105は、暗号装置112によって実現され、暗号部106は、暗号装置112によって実現され、復号部107は、復号装置111によって実現される。
【0056】
各コンピュータは、CPU(Central Processing Unit)の制御の下、NIC(Network Interface Card)を介して相互に通信可能に接続され、RAM(Random Access Memory)を一時記憶領域とし、ROM(Read Only Memory)やHD(Hard Disk)に格納されたプログラムをCPUが実行して、各種の計算を行うことで、各復号装置111や暗号装置112が実現される。
【0057】
本実施形態に係る暗号システム101では、上記のように、サイズkの素数pに対する群
(Z/p2)*
と、(Z/p2)*に対して定義されるp-Sylow部分群
Γp = {x | x∈(Z/p2)*,x≡1 (mod p)}
と、当該Γpの任意の要素xに対して
x - 1 = ap
を一意に満たす整数aにより定義される対数関数
Lp(x) = a (mod p)
とを用いる。これは、Okamoto-Uchiyamaの対数関数である。
【0058】
以下、適宜、s = 4であり、かつ、1台の暗号装置112と2台の復号装置111の組み合わせにより暗号システム101が実現される場合を典型例としてあげて説明するが、本発明の原理は、復号装置をさらに増やした場合にも適用可能であり、そのような実施形態についても本発明の範囲に含まれる。
【0059】
(秘密鍵の計算)
まず、秘密鍵計算部102における処理について説明する。図2は、秘密鍵計算部102により実行される秘密鍵計算処理の制御の流れを示すフローチャートである。以下、本図を参照して説明する。
【0060】
まず、秘密鍵計算部102は、サイズkの互いに異なる素数
q[1],…,q[s]
を選択する。上記典型例では、第1の復号装置111にて、q[1],q[2]を選択し、第2の復号装置111にて、q[3],q[4]を選択して、これはそのまま秘密としておく(ステップS201)。
【0061】
ここで選択される素数は、通常の公開鍵暗号と同様に十分な大きさを持つものが望ましく、また、選択には、たとえばユーザがキーボードを押す間隔や現在の時刻などの条件を乱数の種として使用して、素数を生成することが望ましい。
【0062】
ついで、第1の復号装置111は、積q[1]q[2]を計算し、第2の復号装置111は、積q[3]q[4]を計算する(ステップS202)。
【0063】
さらに、第1の復号装置111は、自身が計算した積q[1]q[2]を他の復号装置111に通知し、第2の復号装置111は、自身が計算した積q[3]q[4]を、他の復号装置111に通知する。すなわち、各復号装置111は、自身が計算した積をコンピュータ通信網を介して他の復号装置111と交換して、互いに公開する(ステップS203)。
【0064】
巨大な数の素因数分解は困難である、ということが公開鍵暗号の根本原理となっており、第2の復号装置111は、積q[1]q[2]を受け取ったとしても、これを素因数分解してq[1],q[2]を得ることは困難であり、第1の復号装置111は、積q[3]q[4]を受け取ったとしても、これを素因数分解してq[3],q[4]を得ることは困難である。したがって、それぞれの復号装置111がステップS201にて生成した素数は、秘密に保たれる。
【0065】
そして、第1の復号装置111は、他の復号装置111から受け取った積q[3]q[4]が、自身の生成した素数から得られる数q[1]-1およびq[2]-1に対して素であるか否かを判断し、第2復号装置111は、他の復号装置111から受け取った積q[1]q[2]が、自身の生成した素数から得られる数q[3]-1およびq[4]-1に対して素であるか否かを判断する(ステップS204)。
【0066】
そして、第1の復号装置111と第2の復号装置111とは、それぞれの判断の結果を交換する。いずれかの復号装置111で当該「素である」条件が成立していなければ(ステップS204;No)、ステップS201に戻って、それぞれの復号装置111は同じ処理を繰り返す。
【0067】
一方、当該「素である」条件がすべての復号装置111で成立すれば(ステップS204;Yes)、任意の整数i,j (1≦i,j≦s,i≠j)について
q[i]は、q[j]-1の素因子ではない
という条件が満たされることになる。
【0068】
なお、実際には、q[3]q[4]がq[1]-1またはq[2]-1と1でない素因子を持つ確率は極めて低く、q[1]q[3]がq[2]-1またはq[1]-1と1でない素因子を持つ確率は極めて低いので、実用上は、この「素である」条件のチェックは省略しても問題のないことが多い。
【0069】
そこで、第1の復号装置111では、q[1],q[2]を自身の秘密鍵p[1],p[2]とし、第2の復号装置111では、q[3],q[4]を自身の秘密鍵p[3],p[4]とする。これにより、素数q[1],…,q[s]から、秘密鍵
p[1],…,p[s]
が得られ(ステップS205)、本処理を終了する。
【0070】
このようにして、秘密鍵をそれぞれの復号装置111で生成する。なお、上記のように、復号装置の台数が増加したとしても、同様の処理を行えば良い。
【0071】
(公開鍵の計算)
上記のように、各復号装置111においてサイズkの互いに異なる素数
p[1],…,p[s]
であって、任意の整数i,j (1≦i,j≦s,i≠j)について
p[i]は、p[j]-1の素因子ではない
を満たすものを秘密鍵として得ることができたので、これから公開鍵を生成することとなる。
【0072】
図3は、公開鍵計算部103により実行される公開鍵計算処理の制御の流れを示すフローチャートである。
【0073】
すなわち、公開鍵計算部103は、当該素数
p[1],…,p[s]
のそれぞれに対して、
h[1]∈Z/p[1]2,…,h[s]∈Z/p[s]2
をランダムに選択する。上記典型例では、第1の復号装置111にて、
h[1]∈Z/p[1]2,h[2]∈Z/p[2]2
をランダムに選択し、第2の復号装置111にて、
h[3]∈Z/p[3]2,h[4]∈Z/p[4]2
をランダムに選択する(ステップS301)。
【0074】
そして、整数i (1≦i≦s)のそれぞれについて、
h[i]がp[i]で割り切れないこと、
かつ、
h[i]p[i]-1≠1 (mod p[i]2)
を満たすか否かを判断する(ステップS302)。
【0075】
この除算条件の判断は、各復号装置111で、独立に実行することができる。すなわち、i = 1,2については、第1の復号装置111で判断し、i = 3,4については、第2の復号装置111で判断する。
【0076】
そして、当該条件が満たされない復号装置111が存在する場合(ステップS302;No)、当該復号装置111において、ステップS301に戻って、処理を繰り返す。
【0077】
一方、当該条件がすべての復号装置111で満たされたら(ステップS302;Yes)、各復号装置111は、自身が選択したh[i] (1≦i≦s)を他の復号装置111に通知して、全復号装置111が、
h[1],…,h[s]
を共有するようにする(ステップS303)。上記典型例では、第1の復号装置111は、h[1],h[2]を第2の復号装置111に公開し、第2の復号装置111は、h[3],h[4]を第1の復号装置111に公開することになる。
【0078】
そして、各復号装置111は、中国の剰余定理により、整数i,j (1≦i≦s,i≠j)のそれぞれについて、
g[i] = h[i]p[i]-1 (mod p[i]2);
g[i] = 1 (mod p[j]2)
を満たす
g[1],…,g[s]
を計算する。上記典型例では、第1の復号装置111は、g[1],g[2]を計算し、第2の復号装置111は、g[3],g[4]を計算する(ステップS304)。
【0079】
この解を求めるには、ユークリッドの互除法を用いるのが典型的であるが、あるg[i]を求めるためには、自身が持つ秘密鍵p[i]を用いたp[i]2による除算のほか、一般には他の復号装置111が持つ秘密鍵p[j]を用いたp[j]2による除算が必要となる。
【0080】
そこで、後者の除算の際には、当該復号装置111から、当該他の復号装置111に対して、所望の除算を依頼し、除算の結果を応答として貰う。
【0081】
これを繰り返すことによって、互いの秘密鍵もしくはその自乗を公開せずに、互除法が実現できる。
【0082】
このようにして、公開鍵
(g[1],…,g[s])
が得られたら、これと、各復号装置111が持つ秘密鍵の積と、を、全復号装置111および暗号装置112に公開して(ステップS305)、本処理を終了する。
【0083】
上記典型例では、第1の復号装置111は、g[1],g[2]および積p[1]p[2]を公開し、第2の復号装置112は、g[3],g[4]および積p[3]p[4]を公開する。
【0084】
なお、ステップS305における公開時には、後の復号処理で利用される秘密鍵の他の情報も、他の復号装置111に公開する。
【0085】
すなわち、第1の復号装置111は、p[1](p[1]-1)p[2](p[2]-1)を公開し、第2の復号装置112は、p[3](p[3]-1)p[4](p[4]-1)を公開する。これらの秘密鍵の情報が公開されたとしても、素因数分解の困難性から、秘密鍵が知得されることはない。
【0086】
すなわち、一般に、第jの復号装置111は、秘密鍵p[2j-1],p[2j]を持ち、公開鍵g[2j-1],g[2j]、積p[2j-1]p[2j]およびp[2j-1](p[2j-1]-1)p[2j](p[2j]-1)を公開するのである。
【0087】
この公開は、コンピュータ通信網を介した通知によるのが典型的である。
【0088】
(暗号処理)
以下では、暗号装置112によって実現されるサンプリング部104、符号化部105、暗号部106が実行する暗号処理について説明する。
【0089】
当該暗号処理では、各復号装置111に伝達したい個別のメッセージを表す平文
m[1]∈(Z/p[1]),…,m[s]∈(Z/p[s])
から、一つの暗号文zを生成する。ここで一般に、p[1],…,p[s]は十分に大きいサイズkの素数であるから、m[1],…,m[s]は、これより小さいサイズの整数とすれば、すなわち、
|m[1]| < k,…,|m[s]| < k
という条件を満たすものとすれば、
m[1]∈Z,…,m[s]∈Z
となるので、秘密鍵を暗号装置112で知る必要はない。
【0090】
また、上記典型例では、m[1],m[2]は第1の復号装置111宛のメッセージであり、m[3],m[4]は第2の復号装置111宛のメッセージである。
【0091】
図4は、暗号装置112が実行する暗号処理の制御の流れを示すフローチャートである。以下、本図を参照して説明する。
【0092】
まず、サンプリング部104は、各復号装置111が公開した積をすべて乗算して、整数
n = p[1]…p[s]
を計算する(ステップS401)。上記典型例では、第1の復号装置111はp[1]p[2]を公開し、第2の復号装置111はp[3]p[4]を公開するから、これらを乗ずれば良い。
【0093】
次に、サンプリング部104は、群
G = (Z/n2)*
の要素r[0]をランダムかつ一様に選択する(ステップS402)。これは、公開鍵暗号で用いられるチャレンジ等を生成する場合と同様である。
【0094】
そして、サンプリング部104は、
H = Gn = {xn | x∈G};
の要素
r = r[0]n
を計算する(ステップS403)。
【0095】
さて、符号化部105は、直和
P = (Z/p[1]) (+) … (+) (Z/p[s]) = {(x[1],…,x[s]) | x[1]∈(Z/p[1]),…,x[s]∈(Z/p[s])}
の要素である平文
(x[1],…,x[s])∈(Z/p[1]) (+) … (+) (Z/p[s])
を構成する整数
x[1]∈(Z/p[1]),…,x[s]∈(Z/p[s])
が与えられると、公開鍵(g[1],…,g[s])により定義される符号化関数
ε(x[1],…,x[s]) = g[1]x[1]…g[s]x[s]
により符号化を行う。すなわち、乗算と羃による計算を行うものである。
【0096】
そこで、暗号化部106は、メッセージを表す整数
m[1]∈(Z/p[1]),…,m[s]∈(Z/p[s])
を符号化部105に与えて、
ε(m[1],…,m[s]) = g[1]m[1]…g[s]m[s]
を計算させる(ステップS404)。
【0097】
そして、その結果にサンプリング部104が計算したサンプルrを乗算して、暗号文
z = e(m[1],…,m[s]) = ε(m[1],…,m[s])r = g[1]m[1]…g[s]m[s]r
を得る(ステップS405)。
【0098】
その後は、当該暗号文zを、各復号装置111に送信して(ステップS406)、本処理を終了する。
【0099】
(復号処理)
以下では、暗号装置112から送信された暗号文zから、複合文を得る処理について説明する。上記典型例では、第1の復号装置111では、m[1],m[2]が得られ、第2の復号装置111では、m[3],m[4]が得られることになる。
【0100】
図5は、復号部107において実行される復号処理の制御の流れを示すフローチャートである。以下、本図を参照して説明する。
【0101】
さて、秘密鍵p[i] (1≦i≦s)を持つ復号装置111は、全公開鍵
g[1],…,g[s]
と、公開された秘密鍵の情報
p[1](p[1]-1),…,p[s](p[s]-1)
と、から、関数
d[i](z) = 〔Lp[i](zf[i]) (mod p[i]2)〕/〔Lp[i](g[i]f[i]) (mod p[i]2)〕;
f[i] = 〔Πj=1s p[j](p[j]-1)〕/p[i]
を計算することが可能となる。
【0102】
そこで、復号処理においては、復号部107は、暗号装置112から送信された暗号文zを受信すると(ステップS501)、関数
d[1](・),…,d[s](・)
により、暗号文zに対する復号文
d(z) = (d[1](z),…,d[s](z))
を計算して(ステップS502)、これを復号されたメッセージとして、本処理を終了する。すなわち、
d[1](z) = m[1],…,d[s](z) = m[s]
となるはずである。
【0103】
上記の典型例では、第1の復号装置111では、d[1](z) = m[1],d[2](z) = m[2]の復号を行い、第2の復号装置111では、d[3](z) = m[3],d[4](z) = m[4]の復号を行う。しかも、これらの復号は独立に行われ、他の復号装置111の秘密鍵そのものを利用する必要はない。
【0104】
本実施形態によれば、複数のメッセージをまとめて1つに暗号化することができる。したがって、メッセージ内の一部を改変するような攻撃の可能性を格段に抑制することが可能である。
【0105】
また、上記実施形態では、宛先ごとに2つの平文が得られることとしているが、この数は、2以上であれば任意である。すなわち、各復号装置111が有する秘密鍵を複数とするような分割方法であれば、上記と同様の処理を適用することができる。
【実施例2】
【0106】
上記実施形態の暗号システムは、宛先それぞれに独立に送られるべきメッセージを一つにまとめた暗号文を生成することとしていたが、本発明の原理は、平文に巡回群の直和を利用するものであるから、以下のような応用も可能である。
【0107】
すなわち、X,Y,Z,Wの四人の投票者が、A,Bの二人の候補者の信任投票を行うものとする。信任する場合には1で、しない場合には0で表すものとする。
【0108】
たとえば、WがAを信任、Bを不信任の場合には、投票内容は(1,0)となる。同様に、Xの投票が(1,0)、Yの投票が(0,1)、Zの投票が(1,1)であるとする。
【0109】
信任投票では、信任票の総数(1+1+0+1,0+0+1+1) = (3,2)が必要であるが、誰が誰を信任し、誰を不信任したか、は秘密に保ちたいのが一般的である。そこで、本発明の原理を応用する。
【0110】
上記のステップS405で用いる符号化関数εには、以下のような性質がある。すなわち、
ε(a+b,c+d)
= g[1]a+b…g[s]c+d
= g[1]ag[1]b…g[s]cg[s]d
= g[1]a…g[s]c×g[1]b…g[s]d
= ε(a,b)ε(c,d)
一般に、
ε(v[1]+…+v[m],w[1]+…+w[m]) = ε(v[1],w[1])…ε(v[m],w[m])
書き直して、
ε(Σi=1m v[i],Σi=1m w[i]) = Πi=1m ε(v[i],w[i])
が成立する。
【0111】
そこで、本実施形態における暗号部106の処理について説明する。図6は、本実施形態における暗号処理の制御の流れを示すフローチャートである。以下、本図を参照して説明する。
【0112】
暗号装置111側の暗号部106は、復号部107に送信する暗号文を一時的に保存する整数変数yを1に初期化する(ステップS601)。
【0113】
そして、投票者による投票入力を受け付けると(ステップS602)、ステップS401〜ステップS405を実行する(ステップS611)。この際には、一般には、ステップS401〜ステップS403で取得されるサンプルは、投票者ごとに異なるものとなる。
【0114】
i (1≦i≦m)番目の投票者がAを信任するか否かをv[i] = 1かv[i] = 0かで表現し、Bを信任するか否かをw[i] = 1かw[i] = 0かで表現したとし、当該投票者iについて得られたサンプルがr[i]だったとすると、当該投票者iの暗号文は、
ε(v[i],w[i])r[i]
である。
【0115】
ついで、得られた投票者iの暗号文zを、整数変数yに乗算して格納する(ステップS603)。すなわち、
y←y×z
を実行する。ここで「←」は代入を意味する。
【0116】
そして、投票が終わったか否かを判定し(ステップS604)、終わっていなければ(ステップS604;No)、ステップS602に戻る。投票が終わったか否かは、たとえば期間で区切る、定足数で区切る等種々の手法により判断する。
【0117】
投票が終わったら(ステップS604;Yes)、整数変数yの値を、信任投票集計を実現する復号部107に送信して(ステップS605)、本処理を終了する。
【0118】
なお、上記の乗算は、逐次に実行しているが、投票者ごとの暗号文を蓄積しておき、最後にまとめてこれらの積を計算して、yを得ることとしても良い。
【0119】
さて、整数変数yに格納される値は、投票者1から投票者mまでの投票がされたものとすると、そのそれぞれについて得られた暗号文のすべてを乗算したものである。すなわち、乗算の結果は、
y = ε(v[1],w[1])r[1]×…×ε(v[m],w[m])r[m]
= ε(v[1],w[1])×…×ε(v[m],w[m]) r[1]×…×r[m]
= ε(v[1]+…+v[m],w[1]+…+w[m])×(r[1]…r[m])
となる。ここで、暗号化におけるサンプルの値は任意であるから、この乗算の結果yは、平文(v[1]+…+v[m],w[1]+…+w[m])に対して、サンプル(r[1]…r[m])を用いた暗号文、と考えることができる。
【0120】
本実施形態では、復号装置111は、単なる集計を行うものであるから、1台にまとめることとして、秘密鍵のすべてp[1],…,p[s]を知るように構成しても良い。すなわち、上記実施形態において複数の復号装置111で分割して行っていた処理は、本実施形態では1つの復号装置111で纏めて行うことが可能である。
【0121】
すると、復号装置111では、復号により、平文(v[1]+…+v[m],w[1]+…+w[m])が得られる。すなわち、各信任投票数が得られ、しかも、誰が誰に投票したのかは秘密に保たれる。
【0122】
上記の例では、s = 2としていたが、信任投票の対象となる人数は、一般にs (s≧2)人とすることができる。この拡張は、sの数値を増やすことで自然に表現できる。
【0123】
すなわち、本実施形態では、「複数の整数を要素とする平文の暗号文」の積もまた、暗号文として考えることができ、これを復号すると、元の複数の平文の各要素同士を加算したものが復号文として得られるのである。
【0124】
本実施形態は、一般に、投票者が何らかの値を投票するが、誰がどんな値を投票したかは秘密に保ち、その総和のみを知りたい、というような場合に適用が可能である。
【産業上の利用可能性】
【0125】
以上説明したように、本発明によれば、複数の平文を1つの暗号文にして当該平文を個別に復号でき、特に、複数の宛先に対する異なる平文を1つの暗号文にし、当該暗号文から自身宛の平文を安全に取得できる暗号システム暗号方法、これらをコンピュータを用いて実現するプログラム、ならびに、当該プログラムを記録したコンピュータ読取可能な情報記録媒体を提供することができる。
【図面の簡単な説明】
【0126】
【図1】本発明の実施形態に係る暗号システムの概要構成を示す模式図である。
【図2】秘密鍵計算部により実行される秘密鍵計算処理の制御の流れを示すフローチャートである。
【図3】公開鍵計算部により実行される公開鍵計算処理の制御の流れを示すフローチャートである。
【図4】暗号装置が実行する暗号処理の制御の流れを示すフローチャートである。
【図5】復号部において実行される復号処理の制御の流れを示すフローチャートである。
【図6】暗号装置が実行する暗号処理の制御の流れを示すフローチャートである。
【符号の説明】
【0127】
101 暗号システム
102 秘密鍵計算部
103 公開鍵計算部
104 サンプリング部
105 符号化部
106 暗号部
107 復号部
111 復号装置
112 暗号装置

【特許請求の範囲】
【請求項1】
サイズkの素数pに対する群
(Z/p2)*
と、(Z/p2)*に対して定義されるp-Sylow部分群
Γp = {x | x∈(Z/p2)*,x≡1 (mod p)}
と、当該Γpの任意の要素xに対して
x - 1 = ap
を一意に満たす整数aにより定義される対数関数
Lp(x) = a (mod p)
と、サイズkの互いに異なる素数
p[1],…,p[s]
であって、任意の整数i,j (1≦i,j≦s,i≠j)について
p[i]は、p[j]-1の素因子ではない
素数に対して定義される整数
n = p[1]…p[s]
および群
G = (Z/n2)*
H = Gn = {xn | x∈G};
P = (Z/p[1]) (+) … (+) (Z/p[s]) = {(x[1],…,x[s]) | x[1]∈(Z/p[1]),…,x[s]∈(Z/p[s])}
と、を用いる暗号システムであって、
(1)当該素数
p[1],…,p[s]
のそれぞれに対して、
h[1]∈Z/p[1]2,…,h[s]∈Z/p[s]2
をランダムに選択し、整数i (1≦i≦s)のそれぞれについて、
h[i]がp[i]で割り切れないこと、
かつ、
h[i]p[i]-1≠1 (mod p[i]2)
を満たすまで当該選択を繰り返し、当該選択された
h[1],…,h[s]
に対して、中国の剰余定理により、整数i,j (1≦i≦s,i≠j)のそれぞれについて、
g[i] = h[i]p[i]-1 (mod p[i]2);
g[i] = 1 (mod p[j]2)
を満たす
g[1],…,g[s]
を計算して、
(g[1],…,g[s])
を公開鍵とする公開鍵計算部、
(2)当該素数
p[1],…,p[s]
の積
n = p[1]…p[s]
に対する群
G = (Z/n2)*
の要素r[0]をランダムかつ一様に選択して、群
H = Gn
の要素
r = r[0]n
をランダムかつ一様にサンプリングするサンプリング部、
(3)整数
x[1]∈(Z/p[1]),…,x[s]∈(Z/p[s])
の直和からなる平文
(x[1],…,x[s])∈(Z/p[1]) (+) … (+) (Z/p[s])
を、公開鍵(g[1],…,g[s])により定義される符号化関数
ε(x[1],…,x[s]) = g[1]x[1]…g[s]x[s]
により符号化する符号化部、
(4)整数
m[1]∈(Z/p[1]),…,m[s]∈(Z/p[s])
の直和からなる平文
(m[1],…,m[s])∈(Z/p[1]) (+) … (+) (Z/p[s])
を、前記符号化部に符号化させ、前記サンプリング部にサンプリングさせたrを乗じて、暗号文
e(m[1],…,m[s]) = ε(m[1],…,m[s])r = g[1]m[1]…g[s]m[s]r
を得る暗号部、
(5)当該素数
p[1],…,[s]
と当該公開鍵
(g[1],…,g[s])
に対して、整数i (1≦i≦s)のそれぞれについて定義される関数
d[i](z) = 〔Lp[i](zf[i]) (mod p[i]2)〕/〔Lp[i](g[i]f[i]) (mod p[i]2)〕;
f[i] = 〔Πj=1s p[j](p[j]-1)〕/p[i]
により、暗号文zに対する復号文
d(z) = (d[1](z),…,d[s](z))
を得る復号部
を備えることを特徴とする暗号システム。
【請求項2】
請求項1に記載の暗号システムであって、
サイズkの互いに異なる素数
q[1],…,q[s]
を選択し、任意の整数i,j (1≦i,j≦s,i≠j)について
q[i]は、q[j]-1の素因子ではない
ことが満たされるまで当該選択を繰り返し、その結果得られた素数q[1],…,q[s]を、
p[1],…,p[s]
とする秘密鍵計算部
をさらに備えることを特徴とする暗号システム。
【請求項3】
請求項2に記載の暗号システムであって、
s = 4
であり、当該暗号システムは、暗号装置、第1復号装置、第2復号装置を有し、
(1) 当該第1復号装置は、自身の秘密鍵の候補となる素数q[1],q[2]の積q[1]q[2]を計算して当該第2復号装置に公開し、
当該第2復号装置は、自身の秘密鍵の候補となる素数q[3],q[4]の積q[3]q[4]を計算して当該第2復号装置に公開し、
当該第1復号装置は、公開されたq[3]q[4]がq[1]-1およびq[2]-1に対して素であることを確認し、
当該第2復号装置は、公開されたq[1]q[2]がq[3]-1およびq[4]-1に対して素であることを確認し、
当該第1復号装置と、当該第2復号装置と、の両者にて、当該素であることが確認されるまでこれを繰り返し、
当該両者にて当該素であることが確認されたら、当該第1暗号装置は、当該素数q[1],q[2]を自身の秘密鍵p[1],p[2]とし、当該第2暗号装置は、当該素数q[3],q[4]を自身の秘密鍵p[3],p[4]として、
前記秘密鍵計算部として機能し、
(2)当該第1復号装置は、自身の秘密鍵p[1],p[2]からg[1],g[2]を計算し、これらを当該暗号装置に公開し、
当該第2復号装置は、自身の秘密鍵p[3],p[4]からg[3],g[4]を計算し、これらを当該暗号装置に公開して、
前記公開鍵計算部として機能し、
(3)当該第1復号装置は、自身の秘密鍵p[1],p[2]の積p[1]p[2]を計算し、これらを当該暗号装置に公開し、
当該第2復号装置は、自身の秘密鍵p[3],p[4]の積p[3]p[4]を計算し、これらを当該暗号装置に公開し、
当該暗号装置は、当該公開されたp[1]p[2],p[3]p[4]の積nを計算し、群の要素rをサンプリングして、
前記サンプリング部として機能し、
(4)前記暗号装置は、公開された公開鍵(g[1],g[2],g[3],g[4])により平文を符号化して、
前記符号化部として機能し、
(5)前記暗号装置は、前記符号化部に当該第1復号装置宛の平文m[1],m[2]および第2復号装置宛の平文m[3],m[4]を符号化させ、
前記サンプリング部にサンプリングさせたrを乗じ、暗号文zを得て、
前記暗号部として機能し、
(6)前記第1復号装置は、自身の秘密鍵p[1],p[2]からp[1](p[1]-1)p[2](p[2]-1)を計算して前記第2復号装置に公開し、
前記第2復号装置は、自身の秘密鍵p[3],p[4]からp[3](p[3]-1)p[4](p[4]-1)を計算して前記第1復号装置に公開し、
前記第1復号装置は、暗号文zから自身宛の復号文d[1](z),d[2](z)を計算し、
前記第2復号装置は、暗号文zから自身宛の復号文d[3](z),d[4](z)を計算して、
前記復号部として機能する
ことを特徴とする暗号システム。
【請求項4】
請求項1または2に記載の暗号システムであって、
前記暗号部は、複数の平文を受け付け、平文を受け付けるごとに暗号文を得て、得られた暗号文のすべての積を前記復号部に与える
ことを特徴とする暗号システム。
【請求項5】
サイズkの素数pに対する群
(Z/p2)*
と、(Z/p2)*に対して定義されるp-Sylow部分群
Γp = {x | x∈(Z/p2)*,x≡1 (mod p)}
と、当該Γpの任意の要素xに対して
x - 1 = ap
を一意に満たす整数aにより定義される対数関数
Lp(x) = a (mod p)
と、サイズkの互いに異なる素数
p[1],…,p[s]
であって、任意の整数i,j (1≦i,j≦s,i≠j)について
p[i]は、p[j]-1の素因子ではない
素数に対して定義される整数
n = p[1]…p[s]
および群
G = (Z/n2)*
H = Gn = {xn | x∈G};
P = (Z/p[1]) (+) … (+) (Z/p[s]) = {(x[1],…,x[s]) | x[1]∈(Z/p[1]),…,x[s]∈(Z/p[s])}
と、を用いる暗号方法であって、
(1)当該素数
p[1],…,p[s]
のそれぞれに対して、
h[1]∈Z/p[1]2,…,h[s]∈Z/p[s]2
をランダムに選択し、整数i (1≦i≦s)のそれぞれについて、
h[i]がp[i]で割り切れないこと、
かつ、
h[i]p[i]-1≠1 (mod p[i]2)
を満たすまで当該選択を繰り返し、当該選択された
h[1],…,h[s]
に対して、中国の剰余定理により、整数i,j (1≦i≦s,i≠j)のそれぞれについて、
g[i] = h[i]p[i]-1 (mod p[i]2);
g[i] = 1 (mod p[j]2)
を満たす
g[1],…,g[s]
を計算して、
(g[1],…,g[s])
を公開鍵とする公開鍵計算工程、
(2)当該素数
p[1],…,p[s]
の積
n = p[1]…p[s]
に対する群
G = (Z/n2)*
の要素r[0]をランダムかつ一様に選択して、群
H = Gn
の要素
r = r[0]n
をランダムかつ一様にサンプリングするサンプリング工程、
(3)整数
x[1]∈(Z/p[1]),…,x[s]∈(Z/p[s])
の直和からなる平文
(x[1],…,x[s])∈(Z/p[1]) (+) … (+) (Z/p[s])
を、公開鍵(g[1],…,g[s])により定義される符号化関数
ε(x[1],…,x[s]) = g[1]x[1]…g[s]x[s]
により符号化する符号化工程、
(4)整数
m[1]∈(Z/p[1]),…,m[s]∈(Z/p[s])
の直和からなる平文
(m[1],…,m[s])∈(Z/p[1]) (+) … (+) (Z/p[s])
を、前記符号化工程にて符号化し、前記サンプリング工程にサンプリングさせたrを乗じて、暗号文
e(m[1],…,m[s]) = ε(m[1],…,m[s])r = g[1]m[1]…g[s]m[s]r
を得る暗号工程、
(5)当該素数
p[1],…,[s]
と当該公開鍵
(g[1],…,g[s])
に対して、整数i (1≦i≦s)のそれぞれについて定義される関数
d[i](z) = 〔Lp[i](zf[i]) (mod p[i]2)〕/〔Lp[i](g[i]f[i]) (mod p[i]2)〕;
f[i] = 〔Πj=1s p[j](p[j]-1)〕/p[i]
により、暗号文zに対する復号文
d(z) = (d[1](z),…,d[s](z))
を得る復号工程
を備えることを特徴とする暗号方法。
【請求項6】
請求項5に記載の暗号方法であって、
サイズkの互いに異なる素数
q[1],…,q[s]
を選択し、任意の整数i,j (1≦i,j≦s,i≠j)について
q[i]は、q[j]-1の素因子ではない
ことが満たされるまで当該選択を繰り返し、その結果得られた素数q[1],…,q[s]を、
p[1],…,p[s]
とする秘密鍵計算工程
をさらに備えることを特徴とする暗号方法。
【請求項7】
請求項6に記載の暗号方法であって、
s = 4
であり、当該暗号方法は、暗号装置、第1復号装置、第2復号装置が実行し、
(1)当該第1復号装置が、自身の秘密鍵の候補となる素数q[1],q[2]の積q[1]q[2]を計算して当該第2復号装置に公開し、
当該第2復号装置が、自身の秘密鍵の候補となる素数q[3],q[4]の積q[3]q[4]を計算して当該第2復号装置に公開し、
当該第1復号装置が、公開されたq[3]q[4]がq[1]-1およびq[2]-1に対して素であることを確認し、
当該第2復号装置が、公開されたq[1]q[2]がq[3]-1およびq[4]-1に対して素であることを確認し、
当該第1復号装置と、当該第2復号装置と、の両者にて、当該素であることが確認されるまでこれを繰り返し、
当該両者にて当該素であることが確認されたら、当該第1暗号装置が、当該素数q[1],q[2]を自身の秘密鍵p[1],p[2]とし、当該第2暗号装置が、当該素数q[3],q[4]を自身の秘密鍵p[3],p[4]とすることにより、
前記秘密鍵計算工程が実行され、
(2)当該第1復号装置が、自身の秘密鍵p[1],p[2]からg[1],g[2]を計算し、これらを当該暗号装置に公開し、
当該第2復号装置が、自身の秘密鍵p[3],p[4]からg[3],g[4]を計算し、これらを当該暗号装置に公開することにより、
前記公開鍵計算工程が実行され、
(3)当該第1復号装置が、自身の秘密鍵p[1],p[2]の積p[1]p[2]を計算し、これらを当該暗号装置に公開し、
当該第2復号装置が、自身の秘密鍵p[3],p[4]の積p[3]p[4]を計算し、これらを当該暗号装置に公開し、
当該暗号装置が、当該公開されたp[1]p[2],p[3]p[4]の積nを計算し、群の要素rをサンプリングすることにより、
前記サンプリング工程が実行され、
(4)前記暗号装置が、公開された公開鍵(g[1],g[2],g[3],g[4])により平文を符号化することにより、
前記符号化工程が実行され、
(5)前記暗号装置が、前記符号化工程にて当該第1復号装置宛の平文m[1],m[2]および第2復号装置宛の平文m[3],m[4]を符号化させ、
前記サンプリング工程にてサンプリングさせたrを乗じ、暗号文zを得ることにより、
前記暗号工程が実行され、
(6)前記第1復号装置が、自身の秘密鍵p[1],p[2]からp[1](p[1]-1)p[2](p[2]-1)を計算して前記第2復号装置に公開し、
前記第2復号装置が、自身の秘密鍵p[3],p[4]からp[3](p[3]-1)p[4](p[4]-1)を計算して前記第1復号装置に公開し、
前記第1復号装置が、暗号文zから自身宛の復号文d[1](z),d[2](z)を計算し、
前記第2復号装置が、暗号文zから自身宛の復号文d[3](z),d[4](z)を計算して、
前記復号工程が実行される
ことを特徴とする暗号方法。
【請求項8】
請求項5または6に記載の暗号方法であって、
前記暗号工程では、複数の平文を受け付け、平文を受け付けるごとに暗号文を得て、得られた暗号文のすべての積を前記復号工程に与える
ことを特徴とする暗号方法。
【請求項9】
コンピュータもしくはコンピュータ群に、請求項1から4のいずれか1項に記載の暗号システムの各部を実行させることを特徴とするプログラム。
【請求項10】
コンピュータもしくはコンピュータ群に、請求項1から3のいずれか1項に記載の暗号システムの各部を実行させることを特徴とするプログラムを記録したコンピュータ読取可能な情報記録媒体。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate