(57)【特許請求の範囲】
【請求項１】
１以上の通信装置を経由し、匿名で暗号文を伝送する匿名暗号文通信システムに用いられる鍵を生成する鍵生成装置であって、
上記暗号文の宛先となる宛先装置ｊ（ｊは自然数）に対応する秘密鍵ｘ（ｊ）（ｘ（ｊ）は整数）を格納する秘密鍵格納部と、
有限体上に定義された楕円曲線Ｅ上の点から構成される第１巡回群の元を、上記宛先装置ｊに対応する検査鍵Ｇ（ｊ）として格納する検査鍵格納部と、
上記楕円曲線Ｅ上の点から構成される第２巡回群の元を、上記宛先装置ｊに対応する公開鍵ｇ（ｊ，１）として格納する公開鍵格納部と、
上記検査鍵Ｇ（ｊ）の上記楕円曲線Ｅ上でのｘ（ｊ）倍算値Ｙ（ｊ）＝ｘ（ｊ）・Ｇ（ｊ）を、上記宛先装置ｊに対応する検査鍵Ｙ（ｊ）として求める検査鍵生成部と、
上記公開鍵ｇ（ｊ，１）の上記楕円曲線Ｅ上でのｘ（ｊ）倍算値ｙ（ｊ，１）＝ｘ（ｊ）・ｇ（ｊ，１）を、上記宛先装置ｊに対応する公開鍵ｙ（ｊ，１）として求める公開鍵生成部と、
を有することを特徴とする鍵生成装置。
【請求項２】
請求項１に記載の鍵生成装置であって、
上記第２巡回群は、
上記第１巡回群の何れの元も含まない巡回群である、
ことを特徴とする鍵生成装置。
【請求項３】
請求項２に記載の鍵生成装置であって、
上記第１巡回群は、
上記楕円曲線Ｅ上でのｐ倍算値（ｐは素数）が無限遠点となる上記楕円曲線Ｅ上の点Ｒの集合Ｅ［ｐ］から、上記楕円曲線Ｅのフロベニウス写像の各固有値に関する各固有空間を除いた非固有空間における位数ｐの巡回群であり、
上記第２巡回群は、
上記楕円曲線Ｅのフロベニウス写像の何れかの固有値に関する固有空間である、
ことを特徴とする鍵生成装置。
【請求項４】
請求項３に記載の鍵生成装置であって、
上記公開鍵ｇ（ｊ，１）は、
上記集合Ｅ［ｐ］上の元を上記第２巡回群に写す一方向性準同型写像である関数ψに、上記検査鍵Ｇ（ｊ）を代入して得られた値ψ（Ｇ（ｊ））であり、
上記検査鍵生成部は、
上記検査鍵Ｇ（ｊ）の上記楕円曲線Ｅ上でのｘ（ｊ）倍算を行い、上記検査鍵Ｙ（ｊ）を求め、
上記公開鍵生成部は、
上記検査鍵Ｙ（ｊ）を上記関数ψに代入し、上記公開鍵ｙ（ｊ，１）を求める、
ことを特徴とする鍵生成装置。
【請求項５】
請求項４に記載の鍵生成装置であって、
上記関数ψは、同型写像である、
ことを特徴とする鍵生成装置。
【請求項６】
請求項４に記載の鍵生成装置であって、
上記楕円曲線Ｅは、
非超特異楕円曲線であり、  
上記関数ψは、
上記集合Ｅ［ｐ］上の元を上記第２巡回群に写す射影である、
ことを特徴とする鍵生成装置。
【請求項７】
請求項２に記載の鍵生成装置であって、
上記第１巡回群は、
上記楕円曲線Ｅのフロベニウス写像の第１固有値に関する第１固有空間であり、
上記第２巡回群は、
上記楕円曲線Ｅのフロベニウス写像の第２固有値（≠第１固有値）に関する第２固有空間である、
ことを特徴とする鍵生成装置。
【請求項８】
匿名で暗号文を伝送する匿名暗号文通信システムを構成する通信装置であって、
請求項１に記載の検査鍵Ｇ（ｊ），Ｙ（ｊ）を、それらに対応する宛先装置ｊ（ｊは自然数）に関連付けて格納する検査鍵格納部と、
請求項１に記載の公開鍵ｇ（ｊ，１）の楕円曲線Ｅ上でのｖ倍算値（ｖは整数）である公開鍵ｇ（ｊ，ｉ）（ｉは自然数）と、請求項１に記載の公開鍵ｙ（ｊ，１）の当該楕円曲線Ｅ上でのｖ倍算値である公開鍵ｙ（ｊ，ｉ）とを、暗号文Ｃ（ｊ，ｉ）に対応する公開鍵として、他の通信装置から受信する受信部と、
上記公開鍵ｇ（ｊ，ｉ）と上記公開鍵ｙ（ｊ，ｉ）とを格納する暗号化鍵格納部と、
ペアリング関数に上記公開鍵ｇ（ｊ，ｉ）と上記検査鍵Ｙ（ｊ）とを代入した第１代入結果値を求める第１ペアリング演算部と、
上記ペアリング関数に上記公開鍵ｙ（ｊ，ｉ）と上記検査鍵Ｇ（ｊ）とを代入した第２代入結果値を求める第２ペアリング演算部と、
上記第１代入結果値と上記第２代入結果値とを比較し、上記第１代入結果値と上記第２代入結果値とが一致した場合に、上記検査鍵Ｇ（ｊ），Ｙ（ｊ）に関連付けられている上記宛先装置ｊが上記暗号文Ｃ（ｊ，ｉ）の宛先である、と判定する判定部と、
を有することを特徴とする通信装置。
【請求項９】
１以上の通信装置を経由し、匿名で暗号文の伝送を行う匿名暗号文通信システムであって、
上記暗号文の宛先となる宛先装置ｊ（ｊは自然数）に対応する秘密鍵ｘ（ｊ）（ｘ（ｊ）は整数）を格納する秘密鍵格納部と、有限体上に定義された楕円曲線Ｅ上の点から構成される第１巡回群の元を、上記宛先装置ｊに対応する検査鍵Ｇ（ｊ）として格納する検査鍵格納部と、上記楕円曲線Ｅ上の点から構成される第２巡回群の元を、上記宛先装置ｊに対応する公開鍵ｇ（ｊ，１）として格納する公開鍵格納部と、上記検査鍵Ｇ（ｊ）の上記楕円曲線Ｅ上でのｘ（ｊ）倍算値Ｙ（ｊ）＝ｘ（ｊ）・Ｇ（ｊ）を、上記宛先装置ｊに対応する検査鍵Ｙ（ｊ）として求める検査鍵生成部と、上記公開鍵ｇ（ｊ，１）の上記楕円曲線Ｅ上でのｘ（ｊ）倍算値ｙ（ｊ，１）＝ｘ（ｊ）・ｇ（ｊ，１）を、上記宛先装置ｊに対応する公開鍵ｙ（ｊ，１）として求める公開鍵生成部と、を具備する鍵生成装置と、
上記検査鍵Ｇ（ｊ），Ｙ（ｊ）を、それらに対応する宛先装置ｊに関連付けて格納する検査鍵格納部と、上記公開鍵ｇ（ｊ，１）の上記楕円曲線Ｅ上でのｖ倍算値（ｖは整数）である公開鍵ｇ（ｊ，ｉ）（ｉは自然数）と、上記公開鍵ｙ（ｊ，１）の当該楕円曲線Ｅ上でのｖ倍算値である公開鍵ｙ（ｊ，ｉ）とを、暗号文Ｃ（ｊ，ｉ）に対応する公開鍵として、他の通信装置から受信する受信部と、上記公開鍵ｇ（ｊ，ｉ）と上記公開鍵ｙ（ｊ，ｉ）とを格納する暗号化鍵格納部と、ペアリング関数に上記公開鍵ｇ（ｊ，ｉ）と上記検査鍵Ｙ（ｊ）とを代入した第１代入結果値を求める第１ペアリング演算部と、上記ペアリング関数に上記公開鍵ｙ（ｊ，ｉ）と上記検査鍵Ｇ（ｊ）とを代入した第２代入結果値を求める第２ペアリング演算部と、上記第１代入結果値と上記第２代入結果値とを比較し、上記第１代入結果値と上記第２代入結果値とが一致した場合に、上記検査鍵Ｇ（ｊ），Ｙ（ｊ）に関連付けられている上記宛先装置ｊが上記暗号文Ｃ（ｊ，ｉ）の宛先である、と判定する判定部と、を具備する通信装置と、
を有することを特徴とする匿名暗号文通信システム。
【請求項１０】
１以上の通信装置を経由し、匿名で暗号文を伝送する匿名暗号文通信システムに用いられる鍵を生成する鍵生成装置の鍵生成方法であって、
秘密鍵格納部に、上記暗号文の宛先となる宛先装置ｊ（ｊは自然数）に対応する秘密鍵ｘ（ｊ）（ｘ（ｊ）は整数）を格納しておき、
検査鍵格納部に、有限体上に定義された楕円曲線Ｅ上の点から構成される第１巡回群の元を、上記宛先装置ｊに対応する検査鍵Ｇ（ｊ）として格納しておき、
公開鍵格納部に、上記楕円曲線Ｅ上の点から構成される第２巡回群の元を、上記宛先装置ｊに対応する公開鍵ｇ（ｊ，１）として格納しておき、
検査鍵生成部が、上記検査鍵Ｇ（ｊ）の上記楕円曲線Ｅ上でのｘ（ｊ）倍算値Ｙ（ｊ）＝ｘ（ｊ）・Ｇ（ｊ）を、上記宛先装置ｊに対応する検査鍵Ｙ（ｊ）として求めるステップと、
公開鍵生成部が、上記公開鍵ｇ（ｊ，１）の上記楕円曲線Ｅ上でのｘ（ｊ）倍算値ｙ（ｊ，１）＝ｘ（ｊ）・ｇ（ｊ，１）を、上記宛先装置ｊに対応する公開鍵ｙ（ｊ，１）として求めるステップと、
を実行することを特徴とする鍵生成方法。
【請求項１１】
匿名で暗号文を伝送する匿名暗号文通信システムを構成する通信装置の通信処理方法であって、
検査鍵格納部に、請求項８に記載の検査鍵Ｇ（ｊ），Ｙ（ｊ）を、それらに対応する宛先装置ｊ（ｊは自然数）に関連付けて格納しておき、
受信部が、請求項８に記載の公開鍵ｇ（ｊ，１）の楕円曲線Ｅ上でのｖ倍算値（ｖは整数）である公開鍵ｇ（ｊ，ｉ）（ｉは自然数）と、請求項８に記載の公開鍵ｙ（ｊ，１）の当該楕円曲線Ｅ上でのｖ倍算値である公開鍵ｙ（ｊ，ｉ）とを、暗号文Ｃ（ｊ，ｉ）に対応する公開鍵として、他の通信装置から受信するステップと、
暗号化鍵格納部に、上記公開鍵ｇ（ｊ，ｉ）と上記公開鍵ｙ（ｊ，ｉ）とを格納するステップと、
第１ペアリング演算部が、ペアリング関数に上記公開鍵ｇ（ｊ，ｉ）と上記検査鍵Ｙ（ｊ）とを代入した第１代入結果値を求めるステップと、
第２ペアリング演算部が、上記ペアリング関数に上記公開鍵ｙ（ｊ，ｉ）と上記検査鍵Ｇ（ｊ）とを代入した第２代入結果値を求めるステップと、
判定部が、上記第１代入結果値と上記第２代入結果値とを比較し、上記第１代入結果値と上記第２代入結果値とが一致した場合に、上記検査鍵Ｇ（ｊ），Ｙ（ｊ）に関連付けられている上記宛先装置ｊが上記暗号文Ｃ（ｊ，ｉ）の宛先である、と判定するステップと、
を実行することを特徴とする通信処理方法。
【請求項１２】
１以上の通信装置を経由し、匿名で暗号文の伝送を行う匿名暗号文通信方法であって、
鍵生成装置の秘密鍵格納部に、上記暗号文の宛先となる宛先装置ｊ（ｊは自然数）に対応する秘密鍵ｘ（ｊ）（ｘ（ｊ）は整数）を格納しておき、
上記鍵生成装置の検査鍵格納部に、有限体上に定義された楕円曲線Ｅ上の点から構成される第１巡回群の元を、上記宛先装置ｊに対応する検査鍵Ｇ（ｊ）として格納しておき、
上記鍵生成装置の公開鍵格納部に、上記楕円曲線Ｅ上の点から構成される第２巡回群の元を、上記宛先装置ｊに対応する公開鍵ｇ（ｊ，１）として格納しておき、
上記鍵生成装置の検査鍵生成部が、上記検査鍵Ｇ（ｊ）の上記楕円曲線Ｅ上でのｘ（ｊ）倍算値Ｙ（ｊ）＝ｘ（ｊ）・Ｇ（ｊ）を、上記宛先装置ｊに対応する検査鍵Ｙ（ｊ）として求めるステップと、
上記鍵生成装置の公開鍵生成部が、上記公開鍵ｇ（ｊ，１）の上記楕円曲線Ｅ上でのｘ（ｊ）倍算値ｙ（ｊ，１）＝ｘ（ｊ）・ｇ（ｊ，１）を、上記宛先装置ｊに対応する公開鍵ｙ（ｊ，１）として求めるステップと、を実行し、
いずれかの通信装置の検査鍵格納部に、上記検査鍵Ｇ（ｊ），Ｙ（ｊ）を、それらに対応する宛先装置ｊに関連付けて格納しておき、
上記通信装置の受信部が、上記公開鍵ｇ（ｊ，１）の上記楕円曲線Ｅ上でのｖ倍算値（ｖは整数）である公開鍵ｇ（ｊ，ｉ）（ｉは自然数）と、上記公開鍵ｙ（ｊ，１）の当該楕円曲線Ｅ上でのｖ倍算値である公開鍵ｙ（ｊ，ｉ）とを、暗号文Ｃ（ｊ，ｉ）に対応する公開鍵として、他の通信装置から受信するステップと、
上記通信装置の暗号化鍵格納部に、上記公開鍵ｇ（ｊ，ｉ）と上記公開鍵ｙ（ｊ，ｉ）とを格納するステップと、
上記通信装置の第１ペアリング演算部が、ペアリング関数に上記公開鍵ｇ（ｊ，ｉ）と上記検査鍵Ｙ（ｊ）とを代入した第１代入結果値を求めるステップと、
上記通信装置の第２ペアリング演算部が、上記ペアリング関数に上記公開鍵ｙ（ｊ，ｉ）と上記検査鍵Ｇ（ｊ）とを代入した第２代入結果値を求めるステップと、
上記通信装置の判定部が、上記第１代入結果値と上記第２代入結果値とを比較し、上記第１代入結果値と上記第２代入結果値とが一致した場合に、上記検査鍵Ｇ（ｊ），Ｙ（ｊ）に関連付けられている上記宛先装置ｊが上記暗号文Ｃ（ｊ，ｉ）の宛先である、と判定するステップと、を実行する、
ことを特徴とする匿名暗号文通信方法。
【請求項１３】
請求項１から７の何れかに記載の鍵生成装置としてコンピュータを機能させるための鍵生成プログラム。
【請求項１４】
請求項８に記載の通信装置としてコンピュータを機能させるための通信処理プログラム。
【請求項１５】
請求項１３に記載の鍵生成プログラムを格納したコンピュータ読み取り可能な記録媒体。
【請求項１６】
請求項１４に記載の通信処理プログラムを格納したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報セキュリティ技術に関し、特に、暗号化されたメッセージの匿名通信を行う技術に関する。
【背景技術】
【０００２】
近年、公衆電話通信網の発達に従い、情報セキュリティ技術に注目が集まっている。情報セキュリティ技術は、情報理論や計算量理論など様々な背景技術に基づき構成されうる。中でも計算量理論に基づくものが効率等の面から最も実用的と考えられており、現在盛んに研究が行われている。このような計算量理論に基づく情報セキュリティ技術の一つに、離散対数問題に基づく公開鍵暗号であるElGamal暗号がある。
ElGamal暗号では、ｍ∈Ｚｐ＊を平文、（Ｃ１，Ｃ２）を暗号文とする。なお、ｐは、十分大きな素数であり、Ｚｐ＊は、位数ｐの乗法群を意味する。
【０００３】
〔鍵生成〕
十分大きい素数ｐを生成し、乗法群Ｚｐ＊の生成元ｇを求める。また、乱数ｘ∈ＵＺｐ−１を定め、y=gx mod pを計算する。なお、ＵＺｐ−１は、０以上ｐ−１未満の任意の整数を意味する。ここで、
＜秘密鍵＞ｘ
＜公開鍵＞ｙ，ｇ，ｐ
とする。但し、ｇ，ｐは、システム共通の値であってもよい。
〔暗号化〕
乱数ｔ∈ＵＺｐ−１を生成し、Enc(m, y)=(C1, C2)=(gtmod p, m・yt mod p)によって平文ｍを暗号化する。
〔復号〕
Dec(C2, C1, x)=C2/C1x mod p=mによって復号を行う。
【０００４】
このElGamal暗号では、暗号文と公開鍵だけから同じ平文に対する新しい暗号文を生成できる。この操作をre-encryption（再暗号化）と呼ぶ。２００２年Philippe Golleらは、公開鍵と暗号文のペアのみから、対応する秘密鍵と平文の内容を変化させずに新しい公開鍵と暗号文のペアを出力するUniversal re-encryptionを提案した（例えば、非特許文献１参照）。このUniversal re-encryptionでは、ｕ０，ｕ１を乱数として、（ｇ，ｙ，Ｃ１，Ｃ２）を（ｇｕ０，ｙｕ０，Ｃ１・ｇｕ１，Ｃ２・ｙｕ１）とする操作を行う。ここで、ｇｕ０を乗法群Ｚｐ＊の新しい生成元とみなせば、（ｇｕ０，ｙｕ０）は、上述と同じ秘密鍵ｘに対応する新しい公開鍵となり、（Ｃ１・ｇｕ１，Ｃ２・ｙｕ１）は、上述の秘密鍵ｘ及び平文ｍに対する新しい暗号文となる。つまり、この操作により、秘密鍵ｘ及び平文ｍの内容を変化させずに、公開鍵と暗号文のペアのみから、新しい公開鍵及び新しい暗号文を生成することができる。
【０００５】
ここで、この操作過程を知らず、なおかつ、ｕ０又は秘密鍵ｘを知らない者にとって、（ｇ，ｙ）と（ｇｕ０，ｙｕ０）とが同じ秘密鍵ｘに対応しているか否かを判断することは非常に難しい。このことは、上述の操作によって生成された新しい公開鍵が、どの公開鍵から生成されたのかを秘匿化できることを意味する。その結果、操作前の公開鍵が誰の公開鍵であるかが知られていたとしても、上述の操作過程を知らず、なおかつ、ｕ０又は秘密鍵ｘを知らない者は、新しく生成された新しい公開鍵が誰のものであるかを識別できない。即ち、新しい公開鍵は匿名性を持つ。
【０００６】
図１３（ａ）（ｂ）は、上述のようなUniversal re-encryptionによって公開鍵と暗号文とを更新しつつ匿名でデータ通信を行うシステムの構成を例示した概念図である。
図１３（ａ）に例示するように、このシステムでは、Universal re-encryptionを行う機能を具備する複数のクライアント装置が通信可能に接続され、通信ネットワークを構成する。暗号文を生成するクライアント装置は、公開サーバ装置で公開されている必ずしも匿名でない公開鍵のリストから、暗号文の宛先の装置（宛先装置）となるクライアント装置で利用可能な秘密鍵に対応する公開鍵を取得する。公開鍵を取得したクライアント装置は、この公開鍵を用いて暗号文を生成し、さらに暗号文と公開鍵とのペアをUniversal re-encryptionし、他の任意のクライアント装置に送信する。なお、匿名性を維持するため、最初に暗号文を生成するクライアント装置は、宛先装置であるクライアント装置と直接通信を行わないものとする。他のクライアント装置から暗号文と公開鍵とのペアを受け取ったクライアント装置は、その暗号文が、自ら利用可能な秘密鍵によって復号可能であるか否かを判定し、復号可能な暗号文については秘密鍵を用いて復号し、復号できない暗号文については、その暗号文と対応する公開鍵とのペアをUniversal re-encryptionしてさらに他の任意なクライアント装置に送信する（図１３（ｂ）参照）。これにより、１以上のクライアント装置を中継し、不特定多数の匿名のメッセージを宛先装置であるクライアント装置に伝送することができる。
【非特許文献１】Philippe Golle, Markus Jakobsson, Ari Juels, and Paul Syverson, "Universal re-encryption for mixnets," In Proceedings of the 2004 RSA Conference, Cryptographer's track, San Francisco, USA, February 2004.
【発明の開示】
【発明が解決しようとする課題】
【０００７】
このようなシステムにおいて暗号文が宛先装置であるクライアント装置に到達するのは、その暗号文が、偶然、宛先装置であるクライアント装置に到達するときである。しかし、このような通信方法では効率が悪い。そのため、宛先装置以外の所定のクライアント装置に暗号文が到達した場合に、通信内容を秘密にしたまま宛先装置であるクライアント装置に暗号文が転送される仕組みとしておくことが望ましい。例えば、図１３（ａ）のクライアント装置５０１が宛先装置である場合において、クライアント装置５０１に隣接するクライアント装置５０２にクライアント装置５０１宛の暗号文が到達した際、暗号文に対応する平文がクライアント装置５０２に知られることなく、暗号文がクライアント装置５０１に転送される仕組みとしておくことが望ましい。
【０００８】
しかし、従来構成においてこのような仕組みを実現するためには、宛先装置であるクライアント装置が他のクライアント装置に秘密鍵を渡すか、或いは、他のクライアント装置に暗号文が到達するたびに、宛先装置であるクライアント装置に対話的通信（問い合わせ）を行うしかなかった。ところが、前者の場合、宛先装置以外のクライアント装置も暗号文の復号を行うことができるため、当該暗号文に対応する平文の内容が他のクライアント装置に知られてしまう危険性がある。また、後者の場合には、対話的通信のための通信量が増大し、通信の効率化が図れない。
【０００９】
本発明はこのような点に鑑みてなされたものであり、匿名で暗号文を伝送する匿名暗号文通信システムにおいて、暗号文に対応する平文を他のクライアント装置に知られることなく、効率的に通信を行うことが可能な技術を提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明では、まず、暗号文の宛先となる宛先装置ｊ（ｊは自然数）に対応する秘密鍵ｘ（ｊ）（ｘ（ｊ）は整数）と、有限体上に定義された楕円曲線Ｅ上の点から構成される第１巡回群の元である検査鍵Ｇ（ｊ）と、楕円曲線Ｅ上の点から構成される第２巡回群の元である公開鍵ｇ（ｊ，１）とを生成する。さらに、検査鍵Ｇ（ｊ）の楕円曲線Ｅ上でのｘ（ｊ）倍算値Y(j)=x(j)・G(j)を、宛先装置ｊに対応する検査鍵Ｙ（ｊ）として求め、公開鍵ｇ（ｊ，１）の楕円曲線Ｅ上でのｘ（ｊ）倍算値y(j,1)=x(j)・g(j,1)を、宛先装置ｊに対応する公開鍵ｙ（ｊ，１）とする。なお、「公開鍵」とは、不特定多数者に公開される鍵のみを意味するのではなく、特定多数者に共有されるパラメータをも含む概念である。
【００１１】
そして、ネットワークを構成する何れかの通信装置（例えば、クライアント装置）内に、上述の検査鍵Ｇ（ｊ），Ｙ（ｊ）を宛先装置ｊと関連付けて格納し、１以上の通信装置を経由した匿名の暗号文通信を行う。
ここで、検査鍵Ｇ（ｊ），Ｙ（ｊ）が格納された上記通信装置は、以下のように、受信した暗号文の宛先を判定する。
【００１２】
まず、この通信装置は、他の通信装置から送信された公開鍵ｇ（ｊ，ｉ），公開鍵ｙ（ｊ，１）（ｉは自然数）と暗号文Ｃ（ｊ，ｉ）とを受信する。なお、公開鍵ｇ（ｊ，ｉ）は、公開鍵ｇ（ｊ，１）が更新されたものであり、公開鍵ｇ（ｊ，１）の楕円曲線Ｅ上でのｖ倍算値（ｖは整数）である。また、公開鍵ｙ（ｊ，ｉ）は、公開鍵ｙ（ｊ，１）が更新されたものであり、公開鍵ｙ（ｊ，１）の当該楕円曲線Ｅ上でのｖ倍算値である。また、暗号文Ｃ（ｊ，ｉ）は、公開鍵ｇ（ｊ，１）と上記公開鍵ｙ（ｊ，１）とを用いて生成された暗号文Ｃ（ｊ，１）、或いは、当該暗号文Ｃ（ｊ，１）を１回以上再暗号化した暗号文である。
【００１３】
次に、この通信装置は、ペアリング関数に公開鍵ｇ（ｊ，ｉ）と検査鍵Ｙ（ｊ）とを代入した第１代入結果値を求め、さらに当該ペアリング関数に公開鍵ｙ（ｊ，ｉ）と検査鍵Ｇ（ｊ）とを代入した第２代入結果値を求める。そして、通信装置は、これらの第１代入結果値と第２代入結果値とを比較し、第１代入結果値と第２代入結果値とが一致した場合に、検査鍵Ｇ（ｊ），Ｙ（ｊ）に関連付けられている宛先装置ｊが、暗号文Ｃ（ｊ，ｉ）の宛先である、と判定する。
【００１４】
ここで、宛先装置ｊに対応する検査鍵Ｙ（ｊ）と検査鍵Ｇ（ｊ）とは、楕円曲線Ｅ上でのY(j)=x(j)・G(j)の関係を満たす（関係１）。また、公開鍵ｙ（ｊ，１）と公開鍵ｇ（ｊ，１）とは、楕円曲線Ｅ上でのy(j,1)=x(j)・g(j,1）の関係を満たす。さらに、公開鍵ｙ（ｊ，ｉ）と公開鍵ｙ（ｊ，１）とは、楕円曲線Ｅ上でのy(j,i)=v・y(j,1)の関係を満たし、公開鍵ｇ（ｊ，ｉ）と公開鍵ｇ（ｊ，１）とは、楕円曲線Ｅ上でのg(j,i)=v・g(j,1)の関係を満たす。そして、これらの各公開鍵は何れも第２巡回群の元となるためy(j,i)=x(j)・g(j,i)の関係も満たす（関係２）。そして、これらの（関係１）と（関係２）と、ペアリング関数の性質（詳細は後述）とにより、同じｊに対応する第１代入結果値と第２代入結果値とは一致する。これにより、この通信装置は、更新された公開鍵ｇ（ｊ，ｉ）とｙ（ｊ，ｉ）とが、検査鍵Ｙ（ｊ），Ｇ（ｊ）及び宛先装置ｊに対応していることが分かる。
【００１５】
また、本発明において好ましくは、第２巡回群は、第１巡回群の何れの元も含まない。
ペアリング関数の性質（詳細は後述）により、ペアリング関数に代入される公開鍵と検査鍵とが同じ値であった場合、その代入結果値には、公開鍵と検査鍵との値が反映されず、必ず１となる。これは、本発明における暗号文の宛先判定の誤りの原因となる。検査鍵が属する第１巡回群と、公開鍵が属する第２巡回群とを重複させない構成とすることにより、このような問題を回避できる。
【００１６】
また、本発明において好ましくは、第１巡回群は、楕円曲線Ｅ上でのｐ倍算値（ｐは素数）が無限遠点となる楕円曲線Ｅ上の点Ｒの集合Ｅ［ｐ］から、楕円曲線Ｅのフロベニウス写像の各固有値に関する各固有空間を除いた非固有空間における位数ｐの巡回群であり、第２巡回群は、楕円曲線Ｅのフロベニウス写像の何れかの固有値に関する固有空間である。なお、「フロベニウス写像」「固有値」「固有空間」の詳細については後述する。
【００１７】
このような第１巡回群と第２巡回群とは、元が重複しない。よって、ペアリング関数に代入される公開鍵と検査鍵とが一致し、その代入結果値が１になってしまい、暗号文の宛先を判定する際に誤りが発生してしまうことを防止できる。
さらに好ましくは、公開鍵ｇ（ｊ，１）は、集合Ｅ［ｐ］上の元を第２巡回群に写す一方向性準同型写像である関数ψに、検査鍵Ｇ（ｊ）を代入して生成され、検査鍵Ｙ（ｊ）は、検査鍵Ｇ（ｊ）を楕円曲線Ｅ上でｘ（ｊ）倍算を行って生成され、公開鍵ｙ（ｊ，１）は、検査鍵Ｙ（ｊ）を関数ψに代入して生成される。
【００１８】
このように、第２巡回群で、公開鍵ｇ（ｊ，１）の楕円曲線Ｅ上のｘ（ｊ）倍算を実際に行って公開鍵ｙ（ｊ，１）を求めるのではなく、Y(j)=x(j)・G(j)の関係を満たす検査鍵Ｇ（ｊ）と検査鍵Ｙ（ｊ）とを、それぞれ、一方向性準同型写像である関数ψによって第２巡回群に写し、公開鍵ｇ（ｊ，１）と公開鍵ｙ（ｊ，１）とを求めることにより、演算量が大きい楕円曲線Ｅ上でのスカラー倍算を削減することができる。また、関数ψの一方向性により、公開鍵ｇ（ｊ，１）と公開鍵ｙ（ｊ，１）のみから、検査鍵Ｇ（ｊ）と検査鍵Ｙ（ｊ）とが知られてしまうことを抑制できる。さらに、関数ψの準同型性により、Y(j)=x(j)・G(j)の関係を満たす検査鍵Ｇ（ｊ），Ｙ（ｊ）の関数ψによる各写像ｇ（ｊ，１），ｙ（ｊ，１）は、y(j,1)=x(j)・g(j,1)の関係を満たす。
【００１９】
また、さらに本発明において好ましくは、上記の関数ψは、一方向性同型写像である。これにより、検査鍵Ｇ（ｊ）と公開鍵ｇ（ｊ，１）とが１対１で対応し、検査鍵Ｙ（ｊ）と公開鍵ｙ（ｊ，１）とが１対１で対応する。これにより、異なるｊに対応する公開鍵が同一の検査鍵に対応したり、異なるｊに対応する検査鍵が同一の公開鍵に対応したりし、セキュリティ上の問題や判定誤りの問題が生じることを防止できる。このような一方向性同型写像としては、例えば、楕円曲線Ｅを非超特異楕円曲線とした場合における、集合Ｅ［ｐ］上の元を第２巡回群に写す射影を例示できる。
【００２０】
また、第１巡回群を、楕円曲線Ｅのフロベニウス写像の第１固有値に関する第１固有空間とし、第２巡回群を、楕円曲線Ｅのフロベニウス写像の第２固有値（≠第１固有値）に関する第２固有空間としてもよい。
このような第１巡回群と第２巡回群とは、元が重複しない。よって、ペアリング関数に代入される公開鍵と検査鍵とが一致し、その代入結果値が１になってしまい、暗号文の宛先を判定する際に誤りが発生してしまうことを防止できる。
【発明の効果】
【００２１】
本発明では、匿名で暗号文を伝送する匿名暗号文通信システムにおいて、暗号文に対応する平文を他のクライアント装置に知られることなく、効率的に通信を行うことができる。
【発明を実施するための最良の形態】
【００２２】
以下、本発明を実施するための最良の形態を図面を参照して説明する。
〔技術的な前提・定義〕
まず、各実施の形態の説明に入る前に、技術的な前提や定義を説明する。
＜楕円曲線＞
まず、体Ｋ上で定義された楕円曲線について説明する。
一般に、体Ｋ上で定義された楕円曲線Ｅとは、ａ１，ａ２，ａ３，ａ４，ａ６∈Ｋとして、等式
E: y2+a1・x・y+a3・y=x3+a2・x2+a4・x+a6    …(1)
を満たす点（ｘ,ｙ）の集合に無限遠点と呼ばれる特別な点Ｏを付加したものである。体Ｋ上に定義された楕円曲線Ｅ上の任意の２点に対して楕円加算と呼ばれる二項演算＋及び楕円曲線Ｅ上の任意の１点に対して楕円逆元と呼ばれる単項演算−がそれぞれ有限回のＫの体演算により定義できる。また、以下の性質を持つことにより、体Ｋ上に定義された楕円曲線Ｅは楕円加算に関して群をなす。
【００２３】
［１］体Ｋ上に定義された楕円曲線Ｅ上の任意の２点Ｒ１，Ｒ２に対して、Ｒ１＋Ｒ２は楕円曲線Ｅ上の点である。
［２］体Ｋ上に定義された楕円曲線Ｅ上の任意の３点Ｒ１，Ｒ２，Ｒ３に対して、Ｒ１＋（Ｒ２＋Ｒ３）＝（Ｒ１＋Ｒ２）＋Ｒ３が成り立つ（結合律）。
［３］無限遠点Ｏに関して、体Ｋ上に定義された楕円曲線Ｅ上の任意の点Ｒ１に対して、Ｒ１＋Ｏ＝Ｏ＋Ｒ１＝Ｒ１が成り立つ（単位元の存在）。
［４］体Ｋ上に定義された楕円曲線Ｅ上の任意の点Ｒ１に対して逆元（−Ｒ１）が存在してＲ１＋（−Ｒ１）＝（−Ｒ１）＋Ｒ１＝Ｏが成立する（逆元の存在）。
［５］体Ｋ上に定義された楕円曲線Ｅ上の任意の２点Ｒ１，Ｒ２に対して、Ｒ１＋Ｒ２＝Ｒ２＋Ｒ１が成り立つ（交換律）。
【００２４】
体Ｋ上に定義された楕円曲線Ｅ上の１点Ｒがあれば、楕円加算を用いて２・Ｒ＝Ｒ＋Ｒとなる体Ｋ上に定義された楕円曲線Ｅ上の点２・Ｒを作ることができる。同様にして、３Ｒ＝２・Ｒ＋Ｒなどとすることにより、任意の正整数αに対してα・Ｒを定義することができる。また、任意の正整数αに対して（−α）・Ｒ＝α・（−Ｒ）及び０・Ｒ＝Ｏと定義すると、結局任意の整数βに対してβ・Ｒを定義することができる。このように整数βと体Ｋ上に定義された楕円曲線Ｅ上の点Ｒから点β・Ｒを求めることを楕円スカラー倍（或いは、楕円曲線Ｅ上の倍算）と呼ぶ。また、二項演算−をＲ１−Ｒ２＝Ｒ１＋（−Ｒ２）として定義し、これを楕円減算と呼ぶ。
【００２５】
特に、体Ｋが有限体であって、体Ｋ上の点、或いは体Ｋの有限次拡大上の点Ｒが式（１）上の点であるとき、点Ｒは有限巡回群を生成する。そして、この有限巡回群を用いて暗号系や署名系を構成することがしばしば行われる。このような暗号系や署名系では、楕円加算や楕円スカラー倍が効率的に計算可能な楕円曲線Ｅを用いる。
【００２６】
ここでｐを素数とし、有限体上定義された楕円曲線Ｅ上の点Ｒのうち、ｐ・Ｒ＝Ｏを満たす点Ｒの集合をＥ［ｐ］とする。この集合Ｅ［ｐ］は以下の性質を有するので、集合Ｅ［ｐ］は、楕円加算を加法とし、楕円スカラー倍をスカラー倍とする体Ｚ／ｐＺ上の線形空間であるといえる。
【００２７】
楕円加算に関して、
［１］Ｅ［ｐ］上の任意の２点Ｒ１，Ｒ２に対して、楕円加算Ｒ１＋Ｒ２はＥ［ｐ］上の点である。
［２］楕円加算の結合律は、Ｅ［ｐ］上でも成立する。
［３］楕円加算の交換律は、Ｅ［ｐ］上でも成立する。
［４］無限遠点ＯはＥ［ｐ］上の点であり、Ｅ［ｐ］上の任意の点Ｒ１に対して、Ｏ＋Ｒ１＝Ｒ１が成立する。
［５］Ｅ［ｐ］上の任意の点Ｒ１に対して逆元（−Ｒ１）はＥ［ｐ］上に唯一存在する。
【００２８】
楕円スカラー倍に関して、
［１］Ｅ［ｐ］上の任意の点Ｒ１及び体Ｚ／ｐＺの任意の元α１に対して、楕円スカラー倍α１Ｒ１はＥ［ｐ］上の点である。
［２］Ｅ［ｐ］上の任意の点Ｒ１及び体Ｚ／ｐＺの任意の２元α１，α２に対して、（α１＋α２）Ｒ１＝α１・Ｒ１＋α２・Ｒ１が成り立つ。
［３］Ｅ［ｐ］上の任意の２点Ｒ１，Ｒ２及び体Ｚ／ｐＺの任意の元α１に対して、α１・（Ｒ１＋Ｒ２）＝α１・Ｒ１＋α１・Ｒ２が成り立つ。
［４］Ｅ［ｐ］上の任意の点Ｒ１及び体Ｚ／ｐＺの任意の２元α１，α２に対して、（α１・α２）・Ｒ１＝α１・（α２・Ｒ１）が成り立つ。
［５］Ｅ［ｐ］上の任意の点Ｒ１及び体Ｚ／ｐＺの任意の乗法単位元１に対して、１・Ｒ１＝Ｒ１が成り立つ。
【００２９】
＜楕円ElGamal暗号＞
次に、楕円曲線Ｅに基づく楕円ElGamal暗号について説明する。楕円ElGamal暗号は、前述したElGamal暗号における有限体上の乗法演算を、楕円曲線Ｅ上の加法演算に対応させることで構成できる。
楕円ElGamal暗号では、ｍ∈Ｅ［ｐ］を平文、（Ｃ１，Ｃ２）∈Ｅ［ｐ］を暗号文とする。
［鍵生成］
まず、生成元ｇ∈Ｅ［ｐ］を求める。そして、乱数ｘ∈ＵＺｐを定め、楕円曲線Ｅ上での楕円スカラー倍算値y=ｘ・gを計算する。ここで、
［秘密鍵］ｘ
［公開鍵］ｇ，ｙ，Ｅ［ｐ］
とする。但し、ｇ，Ｅ［ｐ］は、システム共通の値であってもよい。
【００３０】
［暗号化］
乱数ｔ∈ＵＺｐを生成し、楕円曲線Ｅ上でEnc(m, y)=(C1, C2)=(t・g, m+t・y)の演算を行って平文ｍを暗号化する。
〔復号〕
楕円曲線Ｅ上でDnc(C2, C1, x)=C2‐x・C1=mの演算を行って復号を行う。
【００３１】
この楕円ElGamal暗号でも、暗号文と公開鍵だけから同じ平文に対する新しい暗号文を生成（再暗号化：re-encryption）できる。即ち、乱数等のランダム数ｕ０，ｕ１∈ＵＺｐを定め、楕円曲線Ｅ上で(g, y, C1, C2)を(u0・g,u0・y,C1+u1・g,C2+u1・y)とする操作を行うことにより再暗号化できる。ここで、(u0・g,u0・y)は新たな公開鍵であり、(C1+u1・g,C2+u1・y)は、新たな暗号文となる。
【００３２】
＜有限体のフロベニウス写像＞
次に、有限体のフロベニウス写像について説明する。
ここで、γを整数、ｑを素数又はその冪とする。有限体ＧＦ（ｑγ）上の元ｗを表現するのに、有限体ＧＦ（ｑ）上のγ個の元の組ｗｉ（０≦ｉ＜γ）を用いることができる。γ個のｗｉ∈ＧＦ（ｑ）（０≦ｉ＜γ）の組をＧＦ（ｑγ）上の元に対応させる代表的な方法は、γ個のδｉ∈ＧＦ（ｑγ）（０≦ｉ＜γ）を使って、
【数１】
0004758814.tif 000002
なる対応を取るものである。この時、δｉ∈ＧＦ（ｑγ）（０≦ｉ＜γ）は、ＧＦ（ｑ）γとＧＦ（ｑγ）とで１対１対応が取れるような特別な組み合わせであるとする。このような性質を持つδｉ∈ＧＦ（ｑγ）（０≦ｉ＜γ）を基底と呼ぶ。
【００３３】
ところで二項定理によれば、
【数２】
0004758814.tif 000003
が成立する。右辺の各項の係数は二項係数と呼ばれる定数で、ｉ≠０かつｉ≠ｑの場合、必ずｑの倍数となる。δ，θ∈ＧＦ（ｑγ）の時は、ｑの整数倍は０と同値であるから、
(δ+θ)q=δq+θq
が成立する。さらに、ｃ∈ＧＦ（ｑ）なるｃに関して、ｃｑ＝ｃが成立する。
【００３４】
一般に、δ１，δ２，…，δｎを不定元とする任意のＧＦ（ｑ）係数有利式ｆ（δ１，δ２，…，δｎ）に対して、
f(δ１，δ２,…，δｎ)q=ｆ（δ１q，δ２q，…，δｎq）  …(2)
が成立する。従って、
【数３】
0004758814.tif 000004
δｉ∈ＧＦ（ｑγ），wi∈ＧＦ（ｑ）
となるとき、
【数４】
0004758814.tif 000005
が成立する。従って事前に
【数５】
0004758814.tif 000006
なるｃｉｊ∈ＧＦ（ｑ）が求められていれば、
【数６】
0004758814.tif 000007
によって、元の基底δｉを用いたｗｑの表現が得られる。即ち、ｗ∈ＧＦ（ｑγ）を表現するベクトル（ｗｉ）に行列（ｃｉｊ）を掛けるだけでｗｑを表現するベクトルが得られる。この演算コストは、一般には、ＧＦ（ｑγ）上の乗算１回分の演算コストとほぼ等しい。また、行列（ｃｉｊ）ｎ（ｎ＝２，３，・・・）を事前に求めておけば、行列（ｃｉｊ）ｎを掛けるだけで、ｗｓ（但しｓ＝ｑｎとする。）を表現するベクトルを求めることができる。あるいは逆行列（ｃｉｊ）−１を事前に求めておけば、逆行列（ｃｉｊ）−１を掛けるだけでｗ１／ｑを表現するベクトルを得られる。従って、一般の整数ｎに対して、ｗｓの演算コストは一般にＧＦ（ｑγ）上の乗算１回分の演算コストに等しくなる。さらに、行列（ｃｉｊ）が簡単になるような特別な基底が存在し、そのような基底を採用した場合、ｗｓの演算コストはＧＦ（ｑγ）上の乗算と比較して無視できるほどに小さくなる。
【００３５】
そして、ＧＦ（ｑγ）上の元ｗからｗｑへの写像をフロベニウス写像と呼び、整数ｎに関して、ｗからｗｓへの写像をｑｎ乗フロベニウス写像と呼ぶ。
【００３６】
＜楕円曲線のフロベニウス写像＞
次に、楕円曲線のフロベニウス写像について説明する。
γを整数、ｑを素数又はその冪とする。有限体ＧＦ（ｑ）上に定義された（ａ１，ａ２，ａ３，ａ４，ａ６∈ＧＦ（ｑ）とする）楕円曲線
E: y2+a1・x・y+a3・y=x3+a2・x2+a4・x+a6    …(3)
上の有限体ＧＦ（ｑγ）有理点ＲをＲ＝（ｒ１，ｒ２）とする。そして、
【数７】
0004758814.tif 000008
を満たすφを、楕円曲線Ｅのフロベニウス写像と呼ぶ。式（２）に示した有限体のフロベニウス写像の性質により、点Ｒが有限体ＧＦ（ｑ）上に定義された楕円曲線Ｅ上の点であるならば、点φＲも、この楕円曲線Ｅ上の点であるといえる。一般に、有限体ＧＦ（ｑ）上に定義された楕円曲線Ｅ上の点の楕円加算及び楕円スカラー倍は、与えられる点の座標に関するＧＦ（ｑ）係数有理写像で与えられる。そして、有限体のフロベニウス写像の式（２）に示される性質から、下記の性質が成り立つので、フロベニウス写像φは線形空間Ｅ［ｐ］の線形変換であるといえる。
［１］楕円曲線のフロベニウス写像は、有限体ＧＦ（ｑ）上に定義された楕円曲線Ｅ上の自己同型写像である。つまり、φ（Ｒ１＋Ｒ２）＝（φＲ１）＋（φＲ２）が成り立つ。
［２］楕円スカラー倍と楕円曲線のフロベニウス写像は可換である。つまり、φ（α・Ｒ）＝α（φＲ）が成り立つ。
［３］特に、Ｅ［ｐ］上の点は楕円曲線のフロベニウス写像によってＥ［ｐ］上の点に移る。つまり、∀Ｒ∈Ｅ［ｐ］，ｐ（φＲ）＝φ（ｐ・Ｒ）＝Ｏである。
ｎを整数として、一般に楕円曲線Ｅのｑｎ乗フロベニウス写像φｎは、
【数８】
0004758814.tif 000009
と定義されるが、上記の楕円曲線Ｅのフロベニウス写像φの性質は、楕円曲線Ｅのｑｎ乗フロベニウス写像φｎでも同様に成立する。
【００３７】
＜フロベニウス写像の固有空間と射影＞
次に、フロベニウス写像の固有空間と射影について説明する。
参考文献１：「イアン・Ｆ・ブラケ，ガディエル・セロッシ，ナイジェル・Ｐ・スマート＝著、鈴木治郎＝訳，「楕円曲線暗号」，出版＝ピアソン・エデュケーション，ISBN4-89471-431-0，p112」
にあるように、フロベニウス写像φは式（３）で表される楕円曲線上の任意のＧＦ（ｑγ）有理点Ｒに対して、
(φ2‐t・φ+q)・R=Ｏ    …(4)
を満たす（但しｔは、ｑ，ａ１，ａ２，ａ３，ａ４，ａ６によって一意に決定される整数である。）。フロベニウス写像φに関する多項式φ2‐t・φ+qを特性多項式と呼ぶ。楕円曲線をＥ［ｐ］（但しｐは素数とする。）に限定すると、楕円スカラー倍はＺ／ｐＺで考えればよい。Ｚ／ｐＺ係数の特性多項式は分解体上で、
φ2‐t・φ+q=(φ‐λ１)(φ‐λ2)        …(4-1)
と分解でき、λ１、λ２をフロベニウス写像φの固有値と呼ぶ。以下においては、λ１、λ２∈Ｚ／ｐＺでかつλ１≠λ２である場合を考える。線形空間であるＥ［ｐ］の線形変換関数ψλ１，ψλ２（但し、下付き添え字のλ１及びλ２は、それぞれλ１及びλ２を表す。）を
ψλ1=(λ1‐λ2)-1(φ‐λ2)       …(4-2)
ψλ2=(λ2‐λ1)-1(φ‐λ1)       …(4-3)
と定義すると、任意のＥ［ｐ］上の点Ｒに対して、
P=ψλ1R=(λ1‐λ2)-1(φR‐λ2R)     …(5)
Q=ψλ2R=(λ2‐λ1)-1(φR‐λ1R)     …(6)
なるＥ［Ｌ］上の点Ｐ，Ｑが存在し、点Ｒは、
R=P+Q      …(7)
と一意に分解できる。
【００３８】
線形空間Ｅ［ｐ］の線形変換関数ψλ１による像ψλ１（Ｅ［ｐ］）を、「フロベニウス写像φの固有値λ１に関する固有空間」と呼び、固有空間ψλ１（Ｅ［ｐ］）上の任意の点Ｐに関して、
φP=λ１P
が成り立つ。また、楕円曲線Ｅ上の点から固有空間ψλ１（Ｅ［ｐ］）への準同型写像を、ψλ１（Ｅ［ｐ］）への「射影」と呼ぶ。さらに、この射影がＥ［ｐ］の元を固有空間ψλ１（Ｅ［ｐ］）へ写すものであった場合、この射影は同型写像となる。なお、線形変換関数ψλ１は、Ｅ［ｐ］からψλ１（Ｅ［ｐ］）への同型写像である射影の１つである。
【００３９】
同様に、線形空間Ｅ［ｐ］の線形変換関数ψλ２による像ψλ２（Ｅ［ｐ］）を、「フロベニウス写像φの固有値λ２に関する固有空間」と呼び、固有空間ψλ２（Ｅ［ｐ］）上の任意の点Ｑに関して、
φQ=λ2Q
が成り立つ。楕円曲線Ｅ上の点から固有空間ψλ２（Ｅ［ｐ］）への準同型写像を、ψλ２（Ｅ［ｐ］）への「射影」と呼ぶ。さらに、この射影がＥ［ｐ］の元を固有空間ψλ２（Ｅ［ｐ］）へ写すものであった場合、この射影は同型写像となる。なお、線形変換関数ψλ２は、ψλ２（Ｅ［ｐ］）への同型写像である射影の１つである。また、式（７）に示される分解を、フロベニウス写像φの固有空間に関する固有分解と呼ぶ。固有空間は、それぞれ、位数ｐの巡回群となり、
E[p]=ψλ1(E[p])×ψλ２(E[p])
を満たす。
【００４０】
一般に、ｑｎ乗フロベニウス写像φｎに関しても、Ｅ［ｐ］に関するＺ／ｐＺ係数の特性多項式
(φｎ)2‐tn・(φｎ)+qｎ=(φｎ‐λ１ｎ)(φｎ‐λ2ｎ)
（tnはｔ，ｎ，ｑによって決まる整数）を考えることによって、上記と同様に、固有値、固有空間、固有分解、射影などを構成できる。そこで、本発明における「フロベニウス写像φ」とはｑｎ乗フロベニウス写像φｎ（ｎは１以上の整数）をいうものとする。
【００４１】
＜射影の一方向性＞
次に、射影の一方向性について説明する。ｐが十分に大きい素数であるとして、Ｅ［ｐ］に関して、フロベニウス写像φの固有値λ１，λ２が、λ１，λ２∈Ｚ／ｐＺかつλ１≠λ２である場合を考える。固有空間ψλ１（Ｅ［ｐ］）の任意の生成元Ｐ’及び固有空間ψλ２（Ｅ［ｐ］）の任意の生成元Ｑ’を用い、Ｅ［ｐ］上の任意の点Ｒは、
R=α１・P’+α２・Q’
と書ける（但し、α１，α２∈Ｚ／ｐＺである）。点Ｒを生成元として生成される巡回群〈Ｒ〉上の任意の点Ｒ1から、固有空間ψλ１（Ｅ［ｐ］）或いは固有空間ψλ２（Ｅ［ｐ］）への射影は、それぞれ式（５）（６）に従って、楕円加算、楕円逆元、楕円スカラー倍、フロベニウス写像を用いて効率的に演算できる。一方、α１≠０かつα２≠０の時、Ｒ1の射影Ｐ1＝ψλ１Ｒ1或いはＱ1＝ψλ２Ｒ1のいずれか一方からＲ1を求めることは、楕円曲線Ｅが超特異楕円曲線（supersingularcurve）である場合を除いて、一般には困難である。即ち、射影は一方向性を有する。
【００４２】
＜ペアリング＞
次に、ペアリング（pairing）について説明する。なお、本明細書で用いる「ペアリング関数」との用語もペアリングと同義である。
参考文献２：「Alfred. J. Menezes，ELLIPTIC CURVE PUBLIC KEY CRYPTOSYSTEMS，KLUWER ACADEMIC PUBLISHERS， ISBN0-7923-9368-6，pp. 61-81」
μｐを、楕円曲線の定義体Ｋの代数閉体上の乗法単位元１のｐ乗根の作る乗法群とする。参考文献２に示すように、ペアリングｅｐとは、
ｅｐ：E[p]×E[p]=μｐ    …(8)
なる関数であり、次の性質を持つ。
【００４３】
［１］Ｅ［ｐ］上の任意の点Ｒ１に対して、ｅｐ（Ｒ１，Ｒ１）＝１が成り立つ。
［２］Ｅ［ｐ］上の任意の２点Ｒ１、Ｒ２に対して、ｅｐ（Ｒ１，Ｒ２）＝ｅｐ（Ｒ２，Ｒ１）−１が成り立つ。
［３］Ｅ［ｐ］上の任意の３点Ｒ１，Ｒ２，Ｒ３に対して、ｅｐ（Ｒ１＋Ｒ２，Ｒ３）＝ｅｐ（Ｒ１，Ｒ３）ｅｐ（Ｒ２，Ｒ３）であり、ｅｐ（Ｒ１，Ｒ２＋Ｒ３）＝ｅｐ（Ｒ１，Ｒ２）ｅｐ（Ｒ１，Ｒ３）が成り立つ。
［４］Ｅ［ｐ］上の任意の点Ｒ１に対して、ｅｐ（Ｒ１，Ｏ）＝１が成り立つ。
［５］Ｅ［ｐ］上のある点Ｒ１がＥ［ｐ］上の全ての点Ｒ２に対して、ｅｐ（Ｒ１，Ｒ２）＝１を満たすなら、Ｒ１＝Ｏが成り立つ。
【００４４】
なお、ペアリングｅｐの具体例としては、参考文献２に示されるＷｅｉｌペアリングやＴａｔｅペアリングなどを挙げることができる。また、ペアリングが効率的に計算可能な非超特異楕円曲線（non-supersingular curve）の生成方法については、以下の参考文献などに開示されている。
【００４５】
参考文献３：「A. Miyaji, M. Nakabayashi, S.Takano, "New explicit conditions of elliptic curve Traces for FR-Reduction," IEICE Trans. Fundamentals, vol. E84-A, no05, pp. 1234-1243, May 2001」
参考文献４：「M. Scott, P. S. L. M. Barreto, "Generating more NMT elliptic curve s," http://eprint .iacr. org/2004/058/」
参考文献５：「P.S.L.M. Barreto, B. Lynn, M. Scott, "Constructing elliptic curves with prescribed embedding degrees," Proc. SCN '2002, LNCS 2576, pp.257-267, Springer-Verlag. 2003」
参考文献６：「R. Dupont, A. Enge, F. Morain, "Building curves with arbitrary small MOV degree over finite prime fields," http://eprint.iacr.org/2002/094/」
〔第１の実施の形態〕
次に、本発明における第１の実施の形態について説明する。
【００４６】
＜構成＞
まず、第１の実施の形態の構成について説明する。
［全体構成］
まず、第１の実施の形態における匿名暗号文通信システム１の全体構成を説明する。
図１は、第１の実施の形態における匿名暗号文通信システム１の全体構成を例示した概念図である。
図１に例示するように、匿名暗号文通信システム１は、鍵生成を行う鍵生成装置１０と、クライアント装置２０，３０−１，３０−２，３０−３，３０−４，５０等と、公開サーバ装置６０とを有している。各装置は、例えば、所定のプログラムが公知の通信可能なコンピュータに読み込まれることにより構成される。
【００４７】
鍵生成装置１０は、本システムに用いられる暗号化のための秘密鍵、公開鍵、及び検査鍵を生成する装置である。また、公開サーバ装置６０は、鍵生成装置１０で生成された公開鍵を本システム上で公開するサーバ装置である。
【００４８】
また、クライアント装置２０，３０−１，３０−２，３０−３，３０−４，５０は、暗号文の生成、中継、受け取りの各処理がなされるネットワーク上のノードである。匿名通信の前提として、暗号文を生成するクライアント装置、暗号文を中継するクライアント装置、及び、最終的に暗号文を受け取るクライアント装置は、通信のたびに任意に決まる。しかし、本形態では、一例として、クライアント装置２０で暗号文が生成され、クライアント装置３０−１，３０−２，３０−３等が再暗号化を行いながら暗号文を中継し、クライアント装置５０に暗号文が伝送される様子を示す。
【００４９】
各クライアント装置２０，３０−１，３０−２，３０−３，３０−４，５０等は、ピア・ツー・ピア（peer-to-peer）の通信方式、或いは、図示していない特定の通信サーバ装置を経由した通信方式などによって、１以上の他のクライアント装置と通信可能に構成される。図１の例の場合、クライアント装置２０は、クライアント装置３０−１と通信可能に構成され、クライアント装置３０−１は、クライアント装置３０−２，３０−３と通信可能に構成され、クライアント装置３０−２は、クライアント装置３０−４，５０と通信可能に構成されている。なお、どのクライアント装置とクライアント装置とを通信可能とするかは事前に静的に定めておいてもよいし、通信環境などに応じて動的に変更してもよい。
【００５０】
また、鍵生成装置１０は、公開サーバ装置６０と、ＬＡＮ（Local Area Network）やインターネットなどを通じて通信可能に構成されている。また、公開サーバ装置６０は、インターネットなどを通じて各クライアント装置と通信可能に構成されている。さらに、鍵生成装置１０は、少なくとも一部のクライアント装置の秘密鍵を生成するが、この秘密鍵をそのクライアント装置にネットワークを通じて送信する場合には、盗聴や改竄等の問題を考慮した通信回線を必要とする（図示せず）。
【００５１】
［鍵生成装置１０の構成］
次に、鍵生成装置１０の構成を説明する。
図２は、第１の実施の形態における鍵生成装置１０のハードウェア構成を例示したブロック図である。
図２に例示するように、この例の鍵生成装置１０は、ＣＰＵ（Central Processing Unit）１１、入力部１２、出力部１３、補助記憶装置１４、ＲＯＭ（Read Only Memory）１５、ＲＡＭ（Random Access Memory）１６、バス１７及び通信部１８を有している。
【００５２】
この例のＣＰＵ１１は、制御部１１ａ、演算部１１ｂ及びレジスタ１１ｃを有し、レジスタ１１ｃに読み込まれた各種プログラムに従って様々な演算処理を実行する。また、この例の入力部１２は、データが入力される入力ポート、キーボード、マウス等であり、出力部１３は、データを出力する出力ポート、外部記録媒体へのデータ記憶装置、印刷装置、ディスプレイなどである。補助記憶装置１４は、例えば、ハードディスク、ＭＯ（Magneto-Optical disc）、半導体メモリ等であり、各種プログラムを格納したプログラム領域１４ａ及び各種データが格納されるデータ領域１４ｂを有している。また、ＲＡＭ１６は、例えば、ＳＲＡＭ (Static Random Access Memory)、ＤＲＡＭ (Dynamic Random Access Memory)等であり、上記のプログラムが書き込まれるプログラム領域１６ａ及び各種データが書き込まれるデータ領域１６ｂを有している。また、通信部１８は、ネットワークカードなどである。また、この例のバス１７は、ＣＰＵ１１、入力部１２、出力部１３、補助記憶装置１４、ＲＯＭ１５、ＲＡＭ１６及び通信部１８を、データのやり取りが可能なように接続する。
【００５３】
図３は、ＣＰＵ１１にプログラムが読み込まれることにより構成される第１の実施の形態における鍵生成装置１０の機能構成を例示したブロック図である。なお、図３における矢印はデータの流れを示すが、一時メモリ１０ｉや制御部１０ｊに入出力されるデータの流れは省略してある。
【００５４】
図３に例示するように、鍵生成装置１０は、メモリ１０ａと、ランダム数生成部１０ｂと、検査鍵生成部１０ｃ，１０ｄと、公開鍵生成部１０ｅ，１０ｆと、送信部１０ｇと、出力部１０ｈと、一時メモリ１０ｉと、制御部１０ｊとを有している。また、メモリ１０ａは、格納部１０ａａ〜１０ａｇを有している。なお、メモリ１０ａ及び一時メモリ１０ｉは、例えば、図２に記載したレジスタ１１ｃ、補助記憶装置１４、ＲＡＭ１６、或いはこれらを結合した記憶領域に相当する。また、ランダム数生成部１０ｂ、検査鍵生成部１０ｃ，１０ｄ、公開鍵生成部１０ｅ，１０ｆ及び制御部１０ｊは、それぞれ処理を実現するためのプログラムがＣＰＵ１１に読み込まれることにより構成されるものである。また、送信部１０ｇは、所定のプログラムが読み込まれたＣＰＵ１１の制御のもと駆動する通信部１８であり、出力部１０ｈは、所定のプログラムが読み込まれたＣＰＵ１１の制御のもと駆動する出力部１３である。また、鍵生成装置１０は、制御部１０ｊの制御のもと各処理を実行する。さらに、特に明示しない限り、演算過程の各データは逐一一時メモリ１０ｉに読み書きされる。
【００５５】
［クライアント装置２０の詳細構成］
次に、クライアント装置２０の詳細構成を説明する。
図４は、第１の実施の形態のクライアント装置２０の機能構成を例示したブロック図である。なお、前述のように、本形態では、クライアント装置２０が暗号文を生成する場合を例にとって説明する。そこで、クライアント装置２０については、暗号文の生成に関連する機能構成のみを説明し、他の機能構成の説明を省略する。すなわち、クライアント装置２０は、暗号文を中継するクライアント装置３０−１，３０−２，３０−３，３０−４などの機能構成を具備していてもよいし、具備していなくてもよい。
【００５６】
クライアント装置２０も図２のような通信可能な公知のコンピュータに所定のプログラムが実行されることにより構成される。図４に例示するように、本形態のクライアント装置２０は、メモリ２０ａと、受信部２０ｂと、入力部２０ｃと、ランダム数生成部２０ｄと、暗号化部２０ｅと、再暗号化部２０ｆと、送信部２０ｇと、一時メモリ２０ｈと、制御部２０ｉとを有している。また、メモリ２０ａは、格納部２０ａａ〜２０ａｊを有し、再暗号化部２０ｆは、ランダム数生成部２０ｆａと、公開鍵更新部２０ｆｂと、暗号文更新部２０ｆｃとを有している。なお、メモリ２０ａ及び一時メモリ２０ｈは、例えば、図２に記載したレジスタ１１ｃ、補助記憶装置１４、ＲＡＭ１６、或いはこれらを結合した記憶領域に相当する。また、ランダム数生成部２０ｄ、暗号化部２０ｅ、再暗号化部２０ｆ及び制御部２０ｉは、それぞれ処理を実現するためのプログラムがＣＰＵ１１に読み込まれることにより構成されるものである。また、受信部２０ｂ及び送信部２０ｇは、所定のプログラムが読み込まれたＣＰＵ１１の制御のもと駆動する通信部１８である。また、入力部２０ｃは、所定のプログラムが読み込まれたＣＰＵ１１の制御のもと駆動する入力部１２である。また、クライアント装置２０は、制御部２０ｉの制御のもと各処理を実行する。さらに、特に明示しない限り、演算過程の各データは逐一一時メモリ２０ｈに読み書きされる。
【００５７】
［クライアント装置３０の詳細構成］
次に、クライアント装置３０の詳細構成を説明する。
図５は、クライアント装置３０の機能構成を例示したブロック図である。なお、クライアント装置３０とは、暗号文の中継を行うクライアント装置３０−１，３０−２，３０−３，３０−４である。以下、クライアント装置３０−１，３０−２，３０−３，３０−４を総称する場合には、クライアント装置３０と表現し、クライアント装置３０−１，３０−２，３０−３，３０−４を区別する必要がある場合には、クライアント装置３０−１，３０−２，３０−３，３０−４と表現する。なお、前述のように、本形態では、クライアント装置３０が暗号文の中継を行う場合を例にとって説明する。そこで、クライアント装置３０については、暗号文の中継に関連する機能構成のみを説明し、他の機能構成の説明を省略する。すなわち、クライアント装置３０は、暗号文を生成するクライアント装置２０の機能構成を具備していてもよいし、具備していなくてもよい。
【００５８】
図５に例示するように、クライアント装置３０は、メモリ３０ａと、受信部３０ｂと、ペアリング演算部３０ｃと、ペアリング演算部３０ｄと、判定部３０ｅａと、再暗号化部３０ｆと、送信部３０ｇと、一時メモリ３０ｈと、制御部３０ｉとを有している。また、メモリ３０ａは、格納部３０ａａ〜３０ａｋを有し、判定部３０ｅは、比較部３０ｅａと判定処理部３０ｅｂとを有する。さらに、再暗号化部３０ｆは、ランダム数生成部３０ｆａと、公開鍵更新部３０ｆｂと、暗号文更新部３０ｆｃとを有する。なお、メモリ３０ａ及び一時メモリ３０ｈは、例えば、図２に記載したレジスタ１１ｃ、補助記憶装置１４、ＲＡＭ１６、或いはこれらを結合した記憶領域に相当する。また、ペアリング演算部３０ｃ、ペアリング演算部３０ｄ、判定部３０ｅａ、再暗号化部３０ｆ、及び制御部３０ｉは、それぞれ処理を実現するためのプログラムがＣＰＵ１１に読み込まれることにより構成されるものである。また、受信部３０ｂ及び送信部３０ｇは、所定のプログラムが読み込まれたＣＰＵ１１の制御のもと駆動する通信部１８である。また、クライアント装置３０は、制御部３０ｉの制御のもと各処理を実行する。さらに、特に明示しない限り、演算過程の各データは逐一一時メモリ３０ｈに読み書きされる。
【００５９】
＜処理＞
次に、第１の実施の形態における処理を説明する。
［前処理］
まず、前述の参考文献３〜６に記載されている手法などを用い、ペアリングが効率的に計算可能な有限上に定義された非超特異楕円曲線である楕円曲線Ｅを生成する。次に、生成された楕円曲線Ｅ上の点Ｒのうち、ｐ・Ｒ＝Ｏを満たす点Ｒの集合Ｅ［ｐ］を生成する。なお、集合Ｅ［ｐ］の具体的なデータ構成としては、例えば、集合Ｅ［ｐ］の各元を示すデータや、集合Ｅ［ｐ］を導出可能な数式やパラメータなどを例示できる。すなわち、集合Ｅ［ｐ］の元の選択処理や、集合Ｅ［ｐ］上での楕円加算や楕円スカラー倍算等を行うために必要な情報が反映されたデータ構成であればよい。さらに、生成された楕円曲線Ｅのパラメータを用い、楕円曲線Ｅに対応する特性多項式を求め、さらに楕円曲線のフロベニウス写像φの固有値λ１，λ２を求める（式（４−１）参照）。また、楕円曲線のフロベニウス写像φと固有値λ１，λ２とを用い、式（４−２）（４−３）により、線形変換関数ψλ１，ψλ２を生成する。ここまでの演算は、鍵生成装置１０で行ってもよいし、図示していない他のコンピュータを用いてもよい。
【００６０】
以上のように生成された集合Ｅ［ｐ］は、鍵生成装置１０のメモリ１０ａの格納部１０ａａと、クライアント装置２０，３０の各メモリ２０ａ，３０ａの格納部２０ａａ，３０ａａに格納される。また、生成された線形変換関数ψλ１，ψλ２と固有値λ１，λ２とは、鍵生成装置１０のメモリ１０ａの格納部１０ａｂに格納される。なお、集合Ｅ［ｐ］、線形変換関数ψλ１，ψλ２、固有値λ１，λ２は、一旦公開サーバ装置６０に公開された後、各クライアント装置にダウンロードされてもよいし、各装置を構成するためのプログラムやデータに予め格納される構成であってもよい。
【００６１】
［鍵生成装置１０の処理］
次に、鍵生成装置１０の処理について説明する。
図６は、第１の実施の形態の鍵生成装置１０の処理を説明するためのフローチャートである。以下、このフローチャートに従い、第１の実施の形態の鍵生成装置１０の処理を説明する。
【００６２】
まず、鍵生成装置１０のランダム数生成部１０ｂが、暗号文の宛先となる宛先装置ｊ（ｊは自然数）であるクライアント装置５０に対応する整数の秘密鍵ｘ（ｊ）（ｘ（ｊ)∈UZp，ｐは素数）をランダムに生成し、メモリ１０ａの格納部１０ａｄに格納する（ステップＳ１）。なお、この秘密鍵ｘ（ｊ）の生成には、例えば、ＳＨＡ-１等の一方向性ハッシュ関数を用いて構成される、計算量理論に基づく擬似乱数生成アルゴリズムなどを用いる。また、例えば、乱数表やクライアント装置５０などから提供された秘密情報などを用い、クライアント装置間で重複しないように秘密鍵ｘ（ｊ）を設定してもよい。
【００６３】
次に、検査鍵生成部１０ｃが、メモリ１０ａの格納部１０ａａから集合Ｅ［ｐ］を読み込み、格納部１０ａｂから線形変換関数ψλ１，ψλ２を読み込む。そして、検査鍵生成部１０ｃは、これらを用い、集合Ｅ［ｐ］から各固有空間ψλ１（Ｅ［ｐ］），ψλ２（Ｅ［ｐ］）を除いた「非固有空間」における位数ｐの巡回群（第１巡回群）の元を、宛先装置ｊであるクライアント装置５０に対応する検査鍵Ｇ（ｊ）として選択し、メモリ１０ａの格納部１０ａｃに格納する（ステップＳ２）。
【００６４】
また、検査鍵生成部１０ｄが、メモリ１０ａの格納部１０ａａから集合Ｅ［ｐ］を読み込み、格納部１０ａｃから検査鍵Ｇ（ｊ）を読み込み、格納部１０ａｄから秘密鍵ｘ（ｊ）を読み込む。そして、検査鍵生成部１０ｄは、これらの情報を用い、検査鍵Ｇ（ｊ）の楕円曲線Ｅ上でのｘ（ｊ）倍算Y(j)=x(j)・G(j)を実際に行って、宛先装置ｊであるクライアント装置５０の検査鍵Ｙ（ｊ）を求め、メモリ１０ａの格納部１０ａｅに格納する（ステップＳ３）。 
【００６５】
また、公開鍵生成部１０ｅが、集合Ｅ［ｐ］上の元を固有空間ψλ１（Ｅ［ｐ］）に写す射影である関数ψに、メモリ１０ａの格納部１０ａｃから読み込んだ検査鍵Ｇ（ｊ）を代入し、その代入結果ψ（Ｇ（ｊ））を公開鍵ｇ（ｊ，１）とし、メモリ１０ａの格納部１０ａｆに格納する（ステップＳ４）。なお、関数ψとしては、例えば、線形変換関数ψλ１や、（λ１-λ2）ψλ１などが例示でき、公開鍵生成部１０ｅは、メモリ１０ａの格納部１０ａｂから読み込んだ各データを用いて関数ψを生成する。また、本形態の関数ψは一方向性同型写像となる（〔技術的な前提・定義〕参照）。さらに、固有空間ψλ１（Ｅ［ｐ］）は、位数ｐの巡回群（第２巡回群）となり（〔技術的な前提・定義〕参照）、上述した「非固有空間」における位数ｐの巡回群（第１巡回群）の何れの元も含まない。また、公開鍵生成部１０ｅの処理は、固有空間ψλ１（Ｅ［ｐ］）（第２巡回群）の元を公開鍵ｇ（ｊ，１）として生成する処理に相当する。
【００６６】
次に、公開鍵生成部１０ｆが、メモリ１０ａの格納部１０ａｅから読み込んだ検査鍵Ｙ（ｊ）を、公開鍵生成部１０ｅで用いたのと同じ関数ψに代入し、その代入結果ψ（Ｙ（ｊ））を公開鍵ｙ（ｊ，１）として、メモリ１０ａの格納部１０ａｇに格納する（ステップＳ５）。なお、ステップ３よりY(j)=x(j)・G(j)の関係を満たす。また、関数ψは同型写像である。よって、ステップＳ４及びＳ５で求められたg(j,1)=ψ(G(j))とy(j,1)=ψ(Y(j))とは、y(j,1)=x(j)・g(j,1)の関係を満たす。すなわち、公開鍵生成部１０ｆの処理は、公開鍵ｇ（ｊ，１）の楕円曲線Ｅ上でのｘ（ｊ）倍算値y(j,1)=x(j)・g(j,1)を公開鍵ｙ（ｊ，１）として求める処理に相当する。
【００６７】
その後、送信部１０ｇは、メモリ１０ａの格納部１０ａｆ，１０ａｇからそれぞれ読み込まれた公開鍵ｇ（ｊ，１）と公開鍵ｙ（ｊ，１）とを公開サーバ装置６０に送信する（ステップＳ６）。公開サーバ装置６０は、送信された公開鍵ｇ（ｊ，１）と公開鍵ｙ（ｊ，１）とを、宛先装置ｊであるクライアント装置５０に対応する公開鍵として公開する。具体的には、公開サーバ装置６０は、例えば、公開鍵ｇ（ｊ，１）と公開鍵ｙ（ｊ，１）とを宛先装置ｊであるクライアント装置５０に関連付けた公開鍵リストを、ネットワークを通じてアクセス可能な記録媒体に格納し、クライアント装置等からの要求に応じて公開鍵ｇ（ｊ，１）と公開鍵ｙ（ｊ，１）とを配信する。
【００６８】
また、出力部１０ｈは、メモリ１０ａの格納部１０ａｃ，１０ａｄ，１０ａｅからそれぞれ読み込んだ検査鍵Ｇ（ｊ）と秘密鍵ｘ（ｊ）と検査鍵Ｙ（ｊ）とを出力する（ステップＳ７）。出力された秘密鍵ｘ（ｊ）及び検査鍵Ｇ（ｊ），Ｙ（ｊ）は、安全にクライアント装置５０に届けられる。具体的には、例えば、秘密鍵ｘ（ｊ）及び検査鍵Ｇ（ｊ），Ｙ（ｊ）を格納した記録媒体をクライアント装置５０の管理者に送付したり、更に別の暗号によって秘密鍵ｘ（ｊ）及び検査鍵Ｇ（ｊ），Ｙ（ｊ）をクライアント装置５０に配送したりする。
【００６９】
秘密鍵ｘ（ｊ）及び検査鍵Ｇ（ｊ），Ｙ（ｊ）は、クライアント装置５０内のメモリに安全に格納される。さらに、クライアント装置５０或いはその管理者は、検査鍵Ｇ（ｊ）
，Ｙ（ｊ）を所定のクライアント装置に渡す。本形態では、クライアント装置３０−２にクライアント装置５０に対応する検査鍵Ｇ（ｊ），Ｙ（ｊ）が渡される。クライアント装置３０−２は、そのメモリ３０ａの格納部３０ａｅに、検査鍵Ｇ（ｊ），Ｙ（ｊ）を宛先装置ｊであるクライアント装置５０に関連付けて格納する。なお、クライアント装置３０−１には、クライアント装置５０以外のクライアント装置に対応する検査鍵が格納されているものとする。
【００７０】
［暗号文生成処理］
次に、クライアント装置２０が行う暗号文生成処理について説明する。
図７は、第１の実施の形態における暗号文生成処理を説明するためのフローチャートである。以下、図７を用いて、クライアント装置２０の暗号文生成処理を説明する。
まず、クライアント装置２０は、公開サーバ装置６０にアクセスし、宛先装置ｊであるクライアント装置５０に対応する公開鍵ｇ（ｊ，１）と公開鍵ｙ（ｊ，１）との送信を要求する。この要求に対し、公開サーバ装置６０は、公開鍵ｇ（ｊ，１）と公開鍵ｙ（ｊ，１）とをクライアント装置２０に送信し、クライアント装置２０は、受信部２０ｂでこれを受信する。受信された公開鍵ｇ（ｊ，１）と公開鍵ｙ（ｊ，１）とは、それぞれメモリ２０ａの格納部２０ａｂ，２０ａｃに格納される（ステップＳ１１）。
【００７１】
次に、入力部２０ｃに暗号化を行う平文ｍ∈Ｅ［ｐ］が入力され、メモリ２０ａの格納部２０ａｄに格納される（ステップＳ１２）。また、ランダム数生成部２０ｄが、整数の
ランダム数ｔ（t∈UZp）を生成してメモリ２０ａの格納部２０ａｅに格納する（ステップＳ１３）。なお、ランダム数ｔの生成には、例えば、所定の擬似乱数生成アルゴリズムを用いるが、特にこれには限定されず、ランダム数ｔはシリアルに生成される値であってもよいし、固定値であってもよい。また、ランダム数ｔが固定値である場合、ステップＳ１３の処理を省略してもよい。
【００７２】
次に、暗号化部２０ｅが、メモリ２０ａの格納部２０ａａ，２０ａｂ，２０ａｃから、それぞれ、集合Ｅ［ｐ］，公開鍵ｇ（ｊ，１），ｙ（ｊ，１）を読み込む。そして、暗号化部２０ｅは、集合Ｅ［ｐ］上での楕円ElGamal暗号方式によって平文ｍの暗号文C(j,1)=(C1,1,C1,2)を生成し、暗号文Ｃ（ｊ，１）をメモリ２０ａの格納部２０ａｆに格納する（ステップＳ１４）。すなわち、暗号化部２０ｅは、楕円曲線Ｅ上での楕円スカラー倍算C1,1=t・g(j,1)によってＣ１，１を算出し、楕円曲線Ｅ上での楕円スカラー倍算t・y(j,1)と楕円加算C1,2=t・y(j,1)+mとによってＣ１，２を算出し、暗号文Ｃ（ｊ，１）をメモリ２０ａの格納部２０ａｆに格納する。なお、ｔが１である場合には、楕円スカラー倍算は不要である。
【００７３】
次に、再暗号化部２０ｆのランダム数生成部２０ｆａが、整数のランダム数ｕ０，ｕ１（ｕ０，ｕ１∈ＵＺｐ）を生成してメモリ２０ａの格納部２０ａｊに格納する（ステップＳ１５）。ランダム数ｕ０，ｕ１の生成には、例えば、擬似乱数生成アルゴリズムを用いる。
【００７４】
次に、再暗号化部２０ｆの公開鍵更新部２０ｆｂが、メモリ２０ａの格納部２０ａａ，２０ａｂ，２０ａｃ，２０ａｊから、それぞれ、集合Ｅ［ｐ］，公開鍵ｇ（ｊ，１），ｙ（ｊ，１），ランダム数ｕ０を読み込む。そして、公開鍵更新部２０ｆｂは、楕円曲線Ｅ上での楕円スカラー倍算によってg(j,2)=u0・g(j,1)とy(j,2)=u0・y(j,1)とを求め、これらを新たな公開鍵ｇ（ｊ，２），ｙ（ｊ，２）として、メモリ２０ａの格納部２０ａｇ，２０ａｈにそれぞれ格納する（ステップＳ１６）。
【００７５】
さらに、再暗号化部２０ｆの暗号文更新部２０ｆｃが、メモリ２０ａの格納部２０ａａ，２０ａｆ，２０ａｊから、それぞれ、集合Ｅ［ｐ］，暗号文C(j,1)=(C1,1,C1,2)，ランダム数ｕ１を読み込む。そして、暗号文更新部２０ｆｃは、楕円曲線Ｅ上での楕円スカラー倍算によってu1・g(j,1)とu1・y(j,1)とを求め、楕円曲線Ｅ上での楕円加算によって
C2,1=C1,1+u1・g(j,1)とC2,2=C1,2+u1・y(j,1)とを求め、C(j,2)=(C2,1,C2,2)を新たな暗号文として、メモリ２０ａの格納部２０ａｉに格納する（ステップＳ１７）。
【００７６】
このように生成された暗号文Ｃ（ｊ，２）と公開鍵ｇ（ｊ，２），ｙ（ｊ，２）とは、それぞれ、メモリ２０ａの格納部２０ａｉ，２０ａｇ，２０ａｈから読み込まれ、送信部２０ｇから他の任意なクライアント装置３０-１に送信される（ステップＳ１８）。
【００７７】
［中継通信処理］
ここでは、まず、クライアント装置３０が実行する中継通信処理について説明し、その後、クライアント装置３０−１，３０−２の具体的な処理を説明する。
図８は、クライアント装置３０が実行する中継通信処理を説明するためのフローチャートである。まず、このフローチャートを用いて、クライアント装置３０の中継通信処理を説明する。
【００７８】
まず、クライアント装置３０の受信部３０ｂは、他のクライアント装置から送信された暗号文Ｃ（ｊ，ｉ）と公開鍵ｇ（ｊ，ｉ）と公開鍵ｙ（ｊ，ｉ）とを受信し、それらを、それぞれ、メモリ３０ａの格納部３０ａｂ，３０ａｃ，３０ａｄに格納する（ステップＳ２１）。なお、ｉは自然数であり、暗号文及び公開鍵の初期値にはi=1が対応し、これらが更新されるたびにi=i+1によって更新されていく。暗号文を生成するクライアント装置２０も、暗号文及び公開鍵を１回更新する本形態の例では、クライアント装置２０から暗号文及び公開鍵が送信された時点でi=2となっている。
【００７９】
次に、制御部３０ｉが、メモリ３０ａに何れかのクライアント装置に対応する検査鍵が格納されているか否かを判断する（ステップＳ２２）。ここで、検査鍵が格納されていないと判断された場合には、ステップＳ２７に進む（ステップＳ２７の処理は後述する）。一方、検査鍵が格納されていると判断された場合、ペアリング演算部３０ｃは、メモリ３０ａの格納部３０ａｃ，３０ａｅから、それぞれ、公開鍵ｇ（ｊ，ｉ），検査鍵Ｙ（ｊ’）を読み込み、これらをペアリング関数ｅｐに代入した第１代入結果値ｅｐ（ｇ（ｊ，ｉ），Ｙ（ｊ’））を求める。この第１代入結果値ｅｐ（ｇ（ｊ，ｉ），Ｙ（ｊ’））は、メモリ３０ａの格納部３０ａｆに格納される（ステップＳ２３）。さらに、ペアリング演算部３０ｄは、メモリ３０ａの格納部３０ａｄ，３０ａｅから、それぞれ、公開鍵ｙ（ｊ，ｉ），検査鍵Ｇ（ｊ’）を読み込み、これらをペアリング関数ｅｐに代入した第２代入結果値ｅｐ（ｙ（ｊ，ｉ），Ｇ（ｊ’））を求める。この第２代入結果値ｅｐ（ｙ（ｊ，ｉ），Ｇ（ｊ’））は、メモリ３０ａの格納部３０ａｇに格納される（ステップＳ２４）。
【００８０】
その後、判定部３０ｅの比較部３０ｅａが、メモリ３０ａの格納部３０ａｆ,３０ａｇから、それぞれ、第１代入結果値ｅｐ（ｇ（ｊ，ｉ），Ｙ（ｊ’））と第２代入結果値ｅｐ（ｙ（ｊ，ｉ），Ｇ（ｊ’））とを読み込み、これらが一致するか否かを判断する（ステップＳ２５）。
ここで、ep(g(j,i),Y(j’))=ep(y(j,i),G(j’))であると判断された場合、判定部３０ｅの判定処理部３０ｅｂは、メモリ３０ａの格納部３０ａｅで検査鍵Ｇ（ｊ’），Ｙ（ｊ’）に関連付けられている宛先装置ｊ’が、暗号文Ｃ（ｊ，ｉ）の宛先であると判定し、送信部３０ｇに、格納部３０ａｂに格納されている暗号文Ｃ（ｊ，ｉ）を、宛先装置ｊ’であるクライアント装置５０に送信させる。
【００８１】
［ep(g(j,i),Y(j’))=ep(y(j,i),G(j’))により宛先が判定できる理由］
検査鍵Ｇ（ｊ’），Ｙ（ｊ’）に関連付けられている宛先装置ｊ’が、暗号文Ｃ（ｊ，ｉ）の宛先であるとは、j=j’であるということである。j=j’である場合、第１代入結果値はｅｐ（ｇ（ｊ，ｉ），Ｙ（ｊ））となる。そして、前述のステップＳ３よりY(j)=x(j)・G(j)の関係を満たすため、第１代入結果値はｅｐ（ｇ（ｊ，ｉ），ｘ（ｊ）・Ｇ（ｊ））と書ける。さらに、〔技術的な前提・定義〕で説明したペアリングの性質［３］「Ｅ［ｐ］上の任意の３点Ｒ１，Ｒ２，Ｒ３に対して、ｅｐ（Ｒ１＋Ｒ２，Ｒ３）＝ｅｐ（Ｒ１，Ｒ３）ｅｐ（Ｒ２，Ｒ３）であり、ｅｐ（Ｒ１，Ｒ２＋Ｒ３）＝ｅｐ（Ｒ１，Ｒ２）ｅｐ（Ｒ１，Ｒ３）が成り立つ。」により、第１代入結果値はｘ（ｊ）・ｅｐ（ｇ（ｊ，ｉ），Ｇ（ｊ））と変形できる。
【００８２】
一方、ｊ＝ｊ’である場合、第２代入結果値はｅｐ（ｙ（ｊ，ｉ），Ｇ（ｊ））となる。また、前述のように、関数ψは同型写像であるため、ステップＳ４及びＳ５で求められたg(j,1)=ψ(G(j))とy(j,1)=ψ(Y(j))とは、y(j,1)=x(j)・g(j,1)の関係を満たす。さらに、公開鍵ｙ（ｊ，ｉ）と公開鍵ｙ（ｊ，１）とは、楕円曲線Ｅ上でのy(j,i)=v・y(j,1)の関係を満たし、公開鍵ｇ（ｊ，ｉ）と公開鍵ｇ（ｊ，１）とは、楕円曲線Ｅ上でのg(j,i)=v・g(j,1)の関係を満たす。ただし、ｖは整数である。そして、これらの各公開鍵は何れも固有空間ψλ１（Ｅ［ｐ］）（第２巡回群）の元となるためy(j,i)=x(j)・g(j,i)の関係も満たす。よって、第２代入結果値はｅｐ（ｘ（ｊ）・ｇ（ｊ，ｉ），Ｇ（ｊ））と書ける。そして、上述のペアリングの性質［３］より、第２代入結果値はｘ（ｊ）・ｅｐ（ｇ（ｊ，ｉ），Ｇ（ｊ））と変形できる。
【００８３】
以上より、ｊ＝ｊ’である場合、ep(g(j,i),Y(j’))=ep(y(j,i),G(j’))を満たすことがいえる。また、検査鍵Y(j’), G(j’)が属する非固有空間（第１巡回群）と、公開鍵g(j,i), y(j,i)が属する固有空間ψλ１（Ｅ［ｐ］）（第２巡回群）とは、相互に元が重複しない。よって、〔技術的な前提・定義〕で説明したペアリングの性質［１］「Ｅ［ｐ］上の任意の点Ｒ１に対して、ｅｐ（Ｒ１，Ｒ１）＝１が成り立つ。」によってｊ≠ｊ’のときにep(g(j,i),Y(j’))=ep(y(j,i),G(j’))=1となってしまうこともない。以上より、検査鍵Y(j’), G(j’)が属する非固有空間（第１巡回群）と、公開鍵g(j,i), y(j,i)が属する固有空間ψλ１（Ｅ［ｐ］）（第２巡回群）との位数が十分に大きければ、ep(g(j,i),Y(j’))=ep(y(j,i),G(j’))を満たす場合、j=j’である可能性は非常に高い。そのため、ep(g(j,i),Y(j’))=ep(y(j,i),G(j’))である場合、検査鍵Ｇ（ｊ’），Ｙ（ｊ’）に関連付けられている宛先装置ｊ’が、暗号文Ｃ（ｊ，ｉ）の宛先であると判定することは妥当である（［ep(g(j,i),Y(j’))=ep(y(j,i),G(j’))により宛先が判定できる理由］の説明終わり）。
【００８４】
一方、ステップＳ２５でep(g(j,i),Y(j’))=ep(y(j,i),G(j’))でないと判断された場合、以下のステップＳ２７以降の処理が実行される。
まず、再暗号化部３０ｆのランダム数生成部３０ｆａが、整数のランダム数ｕ０，ｕ１（ｕ０，ｕ１∈ＵＺｐ）を生成してメモリ３０ａの格納部３０ａｈに格納する（ステップＳ２７）。ランダム数ｕ０，ｕ１の生成には、例えば、擬似乱数生成アルゴリズムを用いる。
【００８５】
次に、再暗号化部３０ｆの公開鍵更新部３０ｆｂが、メモリ３０ａの格納部３０ａａ，３０ａｃ，３０ａｄ，３０ａｈから、それぞれ、集合Ｅ［ｐ］，公開鍵ｇ（ｊ，ｉ），ｙ（ｊ，ｉ），ランダム数ｕ０を読み込む。
そして、公開鍵更新部３０ｆｂは、楕円曲線Ｅ上での楕円スカラー倍算によってg(j, i+1)=u0・g(j,i)とy(j,i+1)=u0・y(j,i)とを求め、これらを新たな公開鍵ｇ（ｊ，ｉ＋１），ｙ（ｊ，ｉ＋１）として、メモリ３０ａの格納部３０ａｉ，３０ａｊにそれぞれ格納する（ステップＳ２８）。
【００８６】
さらに、再暗号化部３０ｆの暗号文更新部３０ｆｃが、メモリ３０ａの格納部３０ａａ，３０ａｂ，３０ａｈから、それぞれ、集合Ｅ［ｐ］，暗号文C(j,i)=(C1,1, C1,2)，ランダム数ｕ１を読み込む。そして、暗号文更新部３０ｆｃは、楕円曲線Ｅ上での楕円スカラー倍算によってu1・g(j,i)とu1・y(j,i)とを求め、楕円曲線Ｅ上での楕円加算によって
C2,1=C1,1+u1・g(j,i)とC2,2=C1,2+u1・y(j,i)とを求め、C(j,i+1)=(C2,1,C2,2)を新たな暗号文として、メモリ３０ａの格納部３０ａｋに格納する（ステップＳ２９）。
【００８７】
このように生成された暗号文Ｃ（ｊ，ｉ＋１）と公開鍵ｇ（ｊ，ｉ＋１），ｙ（ｊ，ｉ＋１）とは、それぞれ、メモリ３０ａの格納部３０ａｋ，３０ａｉ，３０ａｊから読み込まれ、送信部３０ｇから他の任意なクライアント装置３０に送信される（ステップＳ３０）。
【００８８】
［クライアント装置３０−１の場合］
以上のクライアント装置３０の処理をクライアント装置３０−１に当てはめて説明する。前述のようにクライアント装置３０−１に格納される検査鍵は、クライアント装置５０に対応するものではない。すなわち、ｊ’≠ｊである。この場合、クライアント装置３０−１は、ステップＳ２１〜Ｓ２５、Ｓ２７〜Ｓ３０の処理を実行し、再暗号化された暗号文Ｃ（ｊ，３）と公開鍵ｇ（ｊ，３），ｙ（ｊ，３）とをクライアント装置３０−２,３０−３に送信する。
【００８９】
［クライアント装置３０−２の場合］
前述のように、クライアント装置３０−２には、クライアント装置５０に対応する検査鍵が格納される。すなわち、ｊ’＝ｊである。この場合、クライアント装置３０−２は、クライアント装置３０−１から暗号文Ｃ（ｊ，３）と公開鍵ｇ（ｊ，３），ｙ（ｊ，３）とを受け取り、ステップＳ２１〜Ｓ２６の処理を実行し、暗号文Ｃ（ｊ，３）を宛先装置であるクライアント装置５０に送信する。
【００９０】
〔第２の実施の形態〕
次に、本発明における第２の実施の形態について説明する。
本形態は、第１の実施の形態の変形例であり、鍵生成装置の公開鍵の生成方法のみが相違する。以下では、鍵生成装置及び鍵生成方法の相違点のみについて説明する。
【００９１】
［鍵生成装置の構成］
図９は、第２の実施の形態における鍵生成装置１１０の機能構成を例示したブロック図である。なお、図９において第１の実施の形態と共通する部分については、図３と同じ符号を用いた。
図９に例示するように、本形態の鍵生成装置１１０は、メモリ１０ａと、ランダム数生成部１０ｂと、検査鍵生成部１０ｃ，１０ｄと、公開鍵生成部１１０ｅ，１１０ｆと、送信部１０ｇと、出力部１０ｈと、一時メモリ１０ｉと、制御部１０ｊとを有している。なお、本形態の鍵生成装置１１０も、公知のコンピュータに所定のプログラムが読み込まれることにより構成されるものである。
【００９２】
［鍵生成装置１１０の処理］
次に、鍵生成装置１１０の処理について説明する。
図１０は、第２の実施の形態の鍵生成装置１１０の処理を説明するためのフローチャートである。以下、このフローチャートに従い、第２の実施の形態の鍵生成装置１１０の処理を説明する。
【００９３】
まず、鍵生成装置１１０は、第１の実施の形態のステップＳ１〜Ｓ３と同じ処理を実行する（ステップＳ５１〜Ｓ５３）。次に、公開鍵生成部１１０ｅが、メモリ１０ａの格納部１０ａａから集合Ｅ［ｐ］を読み込み、格納部１０ａｂから線形変換関数ψλ１を読み込む。そして、公開鍵生成部１１０ｅは、楕円曲線Ｅのフロベニウス写像φの固有値λ１に関する固有空間ψλ１（Ｅ［ｐ］）の元を、宛先装置ｊであるクライアント装置５０に対応する公開鍵ｇ（ｊ，１）として選択し、メモリ１０ａの格納部１０ａｆに格納する（ステップＳ５４）。なお、この公開鍵ｇ（ｊ，１）の選択は、例えば、所定の擬似乱数生成アルゴリズムを用いてランダムに行われる。
【００９４】
次に、公開鍵生成部１１０ｆが、メモリ１０ａの格納部１０ａｆから公開鍵ｇ（ｊ，１）を読み込み、この公開鍵ｇ（ｊ，１）の楕円曲線Ｅ上でのｘ（ｊ）倍算y(j,1)=x(j)・g(j,1)を実際に行って、宛先装置ｊであるクライアント装置５０に対応する公開鍵ｙ（ｊ，１）を求め、メモリ１０ａの格納部１０ａｇに格納する（ステップＳ５５）。
【００９５】
その後、第１の実施の形態におけるステップＳ６,Ｓ７と同じ処理が実行される（ステップＳ５６,５７）。
以上のように公開鍵を定めることとしても、各クライアント装置は、第１の実施の形態と同じ処理を実行できる。さらに、関数を用いるのではなく、公開鍵と検査鍵とを独立に生成することとしたため、公開鍵から検査鍵が推測されることはない。
【００９６】
〔第３の実施の形態〕
次に、本発明における第３の実施の形態について説明する。
本形態は、第１,２の実施の形態の変形例である。楕円曲線Ｅのフロベニウス写像φの固有値λ１に関する固有空間ψλ１（Ｅ［ｐ］）を第１巡回群として用い、
楕円曲線Ｅのフロベニウス写像φの固有値λ２（≠λ１）に関する固有空間ψλ２（Ｅ［ｐ］）を第２巡回群として用いる。また、元の線形成を保ったまま、固有空間ψλ１（Ｅ［ｐ］）の元を、固有空間ψλ２（Ｅ［ｐ］）に映す写像を定義することは困難であるため、第２の実施の形態と同様、固有空間ψλ１（Ｅ［ｐ］）及び固有空間ψλ２（Ｅ［ｐ］）、それぞれで楕円スカラー倍演算を実行し、検査鍵及び公開鍵を生成する。以下では、鍵生成装置及び鍵生成方法の相違点のみについて説明する。
【００９７】
［鍵生成装置の構成］
図１１は、第３の実施の形態における鍵生成装置２１０の機能構成を例示したブロック図である。なお、図１１において第１の実施の形態と共通する部分については、図３と同じ符号を用いた。
図１１に例示するように、本形態の鍵生成装置２１０は、メモリ１０ａと、ランダム数生成部１０ｂと、検査鍵生成部２１０ｃ，１０ｄと、公開鍵生成部２１０ｅ，２１０ｆと、送信部１０ｇと、出力部１０ｈと、一時メモリ１０ｉと、制御部１０ｊとを有している。なお、本形態の鍵生成装置２１０も、公知のコンピュータに所定のプログラムが読み込まれることにより構成されるものである。
【００９８】
［鍵生成装置２１０の処理］
次に、鍵生成装置２１０の処理について説明する。
図１２は、第３の実施の形態の鍵生成装置２１０の処理を説明するためのフローチャートである。以下、このフローチャートに従い、第３の実施の形態の鍵生成装置２１０の処理を説明する。
【００９９】
まず、鍵生成装置２１０は、第１の実施の形態のステップＳ１と同じ処理（整数のランダム数である秘密鍵ｘ（ｊ）の生成・格納）を実行する（ステップＳ６１）。次に、検査鍵生成部２１０ｃが、メモリ１０ａの格納部１０ａａから集合Ｅ［ｐ］を読み込み、格納部１０ａｂから線形変換関数ψλ１を読み込む。そして、検査鍵生成部２１０ｃは、楕円曲線Ｅのフロベニウス写像φの固有値λ１に関する固有空間ψλ１（Ｅ［ｐ］）の元を、宛先装置ｊであるクライアント装置５０に対応する検査鍵Ｇ（ｊ） として選択し、メモリ１０ａの格納部１０ａｃに格納する（ステップＳ６２）。そして、第１の実施の形態のステップＳ３と同じく、検査鍵Ｇ（ｊ）の楕円曲線Ｅ上でのｘ（ｊ）倍算Y(j)=x(j)・G(j)を実際に行って、宛先装置ｊに対応する検査鍵Ｙ（ｊ）を求め、メモリ１０ａの格納部１０ａｅに格納する（ステップＳ６３）。 
【０１００】
次に、公開鍵生成部２１０ｅが、メモリ１０ａの格納部１０ａａから集合Ｅ［ｐ］を読み込み、格納部１０ａｂから線形変換関数ψλ２を読み込む。そして、公開鍵生成部１１０ｅは、楕円曲線Ｅのフロベニウス写像φの固有値λ２（≠λ１）に関する固有空間ψλ２（Ｅ［ｐ］）の元を、宛先装置ｊであるクライアント装置５０に対応する公開鍵ｇ（ｊ，１）として選択し、メモリ１０ａの格納部１０ａｆに格納する（ステップＳ６４）。なお、この公開鍵ｇ（ｊ，１）の選択は、例えば、所定の擬似乱数生成アルゴリズムを用いてランダムに行われる。
【０１０１】
次に、公開鍵生成部２１０ｆが、メモリ１０ａの格納部１０ａｆから公開鍵ｇ（ｊ，１）を読み込み、この公開鍵ｇ（ｊ，１）の楕円曲線Ｅ上でのｘ（ｊ）倍算y(j,1)=x(j)・g(j,1)を実際に行って、宛先装置ｊであるクライアント装置５０に対応する公開鍵ｙ（ｊ，１）を求め、メモリ１０ａの格納部１０ａｇに格納する（ステップＳ６５）。
その後、第１の実施の形態におけるステップＳ６,Ｓ７と同じ処理が実行される（ステップＳ６６,Ｓ６７）。
【０１０２】
以上のように公開鍵を定めることとしても、各クライアント装置は、第１の実施の形態と同じ処理を実行できる。さらに、関数を用いるのではなく、公開鍵と検査鍵とを独立に生成することとしたため、公開鍵から検査鍵が推測されることはない。
なお、本発明は上述の実施の形態に限定されるものではない。例えば、上述の各実施の形態では、楕円ElGamal暗号を用いた場合を例にとって説明したが、効率的にペアリング関数の演算が可能な楕円曲線上で実装可能な公開鍵暗号であって、再暗号化が可能なものであれば楕円ElGamal暗号以外の暗号系に本発明を適用してもよい。
【０１０３】
また、上述の各実施の形態では、楕円曲線として非超特異楕円曲線を用いる場合を説明したが、楕円曲線として超特異楕円曲線を用いてもよい。ただ、この場合には、射影の一方向性が保証できないため、安全性の面から、第２,第３の実施の形態のように、公開鍵と検査鍵とを独立に生成することが望ましい。
また、上述の各実施の形態では、クライアント装置とは別に鍵生成装置を設けることとしたが、各クライアント装置が自らの秘密鍵、公開鍵、検査鍵を生成する構成であってもよい。
【０１０４】
また、上述の各実施の形態では、クライアント装置がペアリング関数を用い、暗号文の宛先を判定することとした。しかし、クライアント装置とは別の宛先判定用のサーバ装置を設けてもよい。この場合、このサーバ装置に各宛先装置に対応する検査鍵を格納しておく。そして、各クライアント装置は、受信した公開鍵をこのサーバ装置に送信し、これを受信したサーバ装置が、本発明のペアリングを用いた宛先判定を行い、この結果を返す。この場合、このサーバ装置が「通信装置」に対応することになる。
【０１０５】
また、上述の各実施の形態では、第１巡回群と第２巡回群との元を重複させないようにし、ペアリング関数の演算結果が１となってしまうことを防止した。しかし、ペアリング関数の演算結果が１になってしまうことによる判定誤りを受け入れるのであれば、第１巡回群と第２巡回群との元が少なくとも一部で重複してもよい。
【０１０６】
また、上述の各実施の形態では、暗号文を生成するクライアント装置２０も再暗号化や公開鍵の更新を行うこととした。しかし、クライアント装置２０がこれらを行わず、公開サーバ装置６０から受け取った公開鍵で生成した暗号文と当該公開鍵とを、他のクライアント装置に送信する構成であってもよい。
【０１０７】
また、上述の各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。その他、本発明の趣旨を逸脱しない範囲で適宜変更が可能であることはいうまでもない。
【０１０８】
また、上述の各処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよいが、具体的には、例えば、磁気記録装置として、ハードディスク装置、フレキシブルディスク、磁気テープ等を、光ディスクとして、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ（Random Access Memory）、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）等を、光磁気記録媒体として、ＭＯ（Magneto-Optical disc）等を、半導体メモリとしてＥＥＰ−ＲＯＭ（Electronically Erasable and Programmable-Read Only Memory）等を用いることができる。
【０１０９】
また、このプログラムの流通は、例えば、そのプログラムを記録したＤＶＤ、ＣＤ−ＲＯＭ等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
【０１１０】
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記録媒体に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるＡＳＰ（Application Service Provider）型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの（コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等）を含むものとする。
【０１１１】
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、本装置を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
【産業上の利用可能性】
【０１１２】
本発明の産業上の利用分野としては、例えば、インターネットやＬＡＮ等における匿名通信等を例示できる。
【図面の簡単な説明】
【０１１３】
【図１】図１は、第１の実施の形態における匿名暗号文通信システムの全体構成を例示した概念図である。
【図２】図２は、第１の実施の形態における鍵生成装置のハードウェア構成を例示したブロック図である。
【図３】図３は、第１の実施の形態における鍵生成装置の機能構成を例示したブロック図である。
【図４】図４は、第１の実施の形態のクライアント装置の機能構成を例示したブロック図である。
【図５】図５は、クライアント装置の機能構成を例示したブロック図である。
【図６】図６は、第１の実施の形態の鍵生成装置の処理を説明するためのフローチャートである。
【図７】図７は、第１の実施の形態における暗号文生成処理を説明するためのフローチャートである。
【図８】図８は、クライアント装置が実行する中継通信処理を説明するためのフローチャートである。
【図９】図９は、第２の実施の形態における鍵生成装置の機能構成を例示したブロック図である。
【図１０】図１０は、第２の実施の形態の鍵生成装置の処理を説明するためのフローチャートである。
【図１１】図１１は、第３の実施の形態における鍵生成装置の機能構成を例示したブロック図である。
【図１２】図１２は、第３の実施の形態の鍵生成装置の処理を説明するためのフローチャートである。
【図１３】図１３（ａ）（ｂ）は、Universal re-encryptionによって公開鍵と暗号文とを更新しつつ匿名でデータ通信を行う従来のシステムの構成を例示した概念図である。
【符号の説明】
【０１１４】
１０,１１０,２１０  鍵生成装置
２０,３０,５０  クライアント装置
【図１】
0004758814.tif 000010
【図２】
0004758814.tif 000011
【図３】
0004758814.tif 000012
【図４】
0004758814.tif 000013
【図５】
0004758814.tif 000014
【図６】
0004758814.tif 000015
【図７】
0004758814.tif 000016
【図８】
0004758814.tif 000017
【図９】
0004758814.tif 000018
【図１０】
0004758814.tif 000019
【図１１】
0004758814.tif 000020
【図１２】
0004758814.tif 000021
【図１３】
0004758814.tif 000022