(57)【特許請求の範囲】
【請求項１】
掲示板装置と、複数のユーザ装置と、複数の復号サーバ装置と、それらをつなぐネットワークとを備え、
掲示板装置は受信した情報を即座に電子的公開掲示板に公開し、
復号サーバ装置が、それぞれ乱数を生成し、その乱数から各ユーザ装置が当該復号サーバ装置との共通鍵を作るための鍵情報を独立に生成して、当該鍵情報を掲示板装置にネットワークを介して送信するステップと、
ユーザ装置が、それぞれ乱数を生成し、その乱数から最初の復号サーバ装置がユーザ装置との共通鍵を作るための鍵情報を生成するとともに、自身の生成した上記乱数と上記公開された復号サーバ装置のそれぞれの鍵情報とから複数の各復号サーバ装置との各共通鍵を生成し、自身の平文をそれらの共通鍵で多重に暗号化し、自身の生成した鍵情報と多重暗号の組の複数を最初の復号サーバ装置にネットワークを介して送信するステップと、
復号サーバ装置が、取得した各組中の鍵情報と自身の生成した上記乱数とから、各ユーザ装置との共通鍵と次の復号サーバに送る鍵情報とを生成し、これら各共通鍵により複数の多重暗号文を復号し、その各復号文と上記生成した次の復号サーバ装置に送る各鍵情報の組の複数よりなるリストを置換して次の復号サーバ装置にネットワークを介して送信するステップと、
を実行し、
復号サーバ装置への入力である複数のユーザ装置の暗号文およびそれに付随する情報のリストと、復号サーバ装置の出力である次の複数の復号サーバ装置への情報のリストとの対応関係を隠蔽する、
ことを特徴とする匿名通信方法。
【請求項２】
掲示板装置と、複数のユーザ装置ｊ（ｊ＝１、・・・、ｎ）と、複数の復号サーバ装置ｉ（ｉ＝１、・・・、ｍ）と、それらをつなぐネットワークとを備え、
掲示板装置は受信した情報を即座に電子的公開掲示板に公開し、
ｑがｐ−１の約数の関係にある素数ｐ，ｑ、位数がｑとなる（Ｚ／ｐＺ）*(１以上ｐ未満でかつｐと互いに素な整数の集合)の元ｇが公開されてあり、
復号サーバ装置ｉは、自ら生成した１以上ｑ未満の秘密の乱数Ａｉを用いて、ユーザ装置が当該復号サーバ装置との共通鍵を作るための鍵情報Ｗｉ＝ｇＡｉを独立に生成して、掲示板装置にネットワークを介して送信し、
ユーザ装置ｊは、独立に生成した１以上ｑ未満の秘密の乱数Ｒｊを用いて、各復号サーバ装置ｉがユーザ装置ｊとの共通鍵を作るための鍵情報Ｇ０，ｊ＝ｇＲｊを生成するとともに、Ｌを上記（Ｚ／ｐＺ）*からＺ／ｑＺ（０以上ｑ未満の整数の集合）へ写す関数とし、Ｌ０，ｊ＝１としてＬｉ，ｊ＝Ｌ（Ｇｉ，ｊ）×Ｌｉ−１，ｊを各サーバ装置につき計算し、Ｈを上記（Ｚ／ｐＺ）*から共通鍵空間へ写す関数とし、各サーバ装置ｉについてＧｉ，ｊ＝ＷｉRjLi-1,jを計算し、そのサーバ装置ｉとの共通鍵Ｋｉ，ｊ＝Ｈ（Ｇｉ，ｊ）を生成し、自身の平文ＭＳＧｊをそれらの共通鍵で多重に暗号化して多重暗号文Ｖ０，ｊ＝ＥＫ１，ｊ（・・・（ＥＫｍ，ｊ（ＭＳＧｊ））・・・）（Ｅは共通鍵暗号の暗号化アルゴリズム、添字のＫｉ，ｊはＥに用いる暗号鍵）を計算し、自身の生成した鍵情報Ｇ０，ｊと多重暗号Ｖ０，ｊの組Ｃ０，ｊ＝（Ｇ０，ｊ、Ｖ０，ｊ）を最初の復号サーバ装置にネットワークを介して送信し、
復号サーバ装置ｉは、公開情報のリストＢｉ−１＝{Ｃｉ−１，１、Ｃｉ−１，２、・・・、Ｃｉ−１，ｎ}を取得し、Ｃｉ−１，ｊの各組中の鍵情報Ｇｉ−１，ｊと上記乱数ＡｉよりＴｉ，ｊ＝Ｇｉ−１，ｊＡｉを計算し、鍵情報Ｇｉ，ｊ＝Ｇｉ−１，ｊL(Ti,j)を計算し、共通鍵Ｋｉ，ｊ＝Ｈ（Ｔｉ，ｊ）を生成し、これら各共通鍵により複数の多重暗号文を復号し、その各復号文Ｖｉ，ｊ＝ＥＫｉ＋１，ｊ（・・・（ＥＫｍ，ｊ（ＭＳＧｊ））・・・）と生成した鍵情報Ｇｉ，ｊの組Ｃｉ，ｊ＝（Ｇｉ，ｊ、Ｖｉ，ｊ）の複数よりなるリストを置換して次の復号サーバ装置にネットワークを介して送信して、
復号サーバ装置への入力である複数のユーザ装置の暗号文およびそれに付随する情報のリストと、復号サーバ装置の出力である次の複数の復号サーバ装置への情報のリストとの対応関係を隠蔽する、
ことを特徴とする匿名通信方法。
【請求項３】
請求項１又は２記載の方法において、
ユーザ装置は各復号サーバ装置との共通鍵による平文の多重暗号化の際に、暗号文にそれを復号する復号サーバ装置を示す情報をつけて暗号化することを順次行って多重暗号文を生成することを特徴とする匿名通信方法。
【請求項４】
請求項１乃至３記載の方法において、
ユーザ装置および復号サーバ装置の間で共通鍵を共有し、各々の装置はそれを自身の記憶部に識別情報をつけて格納し、
その後の通信において
各ユーザ装置は上記多重暗号化の際に、その各暗号化ごとにその暗号文の共通鍵の識別情報を付け、
各復号サーバ装置は受信した暗号文に付けられた識別情報を用いて記憶部から共通鍵を取出し、その共通鍵でその暗号文を復号し、その復号結果を次の復号サーバ装置へ送信すると共に、その装置の記憶部内のその復号に用いた共通鍵の識別情報を、複数回の通信を行う場合にその個々の通信の間に対応関係が付かないように更新する
ことを特徴とする匿名通信方法。
【請求項５】
請求項１又は２記載の方法において、
ユーザ装置からの多重暗号文を次々に復号して匿名の平文とした、複数の復号サーバ装置は、その匿名のユーザ装置に対して情報を送信するために、復号に用いた共通鍵を用いて上記復号した匿名の平文を次々に暗号化を施して多重の暗号文とし、
ユーザ装置はその多重暗号文を復号することで平文を得る、
ことを特徴とする匿名通信方法。
【請求項６】
請求項１乃至５のいずれかに記載の方法において、
ユーザ装置は多重暗号文を電子的公開掲示板上に公開し、
復号サーバ装置がそれを取得して復号し、その結果を電子的公開掲示板上に公開することを繰返し、
ユーザ装置は電子的公開掲示板に掲示された各復号サーバ装置の出力値を取得し、その取得した出力値が、自身の平文に対応したデータが正しく出力されているかどうか検証する、
ことを特徴とする匿名通信方法。
【請求項７】
請求項１ないし５のいずれかに記載の方法において、
ユーザ装置による多重暗号文、あるいは復号サーバ装置の出力情報を、ユーザ装置−復号サーバ装置間あるいは復号サーバ装置−復号サーバ装置間で署名を付与して送受信し、ユーザ装置は各復号サーバ装置の署名検証結果を提出させて不正した復号サーバ装置を検出することを特徴とする匿名通信方法。
【請求項８】
乱数生成部が、乱数Ｒjを生成する乱数生成ステップと、
関数演算部が、上記乱数Ｒｊより最初の復号サーバ装置がユーザ装置との共通鍵を作るための鍵情報を生成する鍵情報生成ステップと、
関数演算部が、匿名通信路を構成する複数の復号サーバ装置iの各公開情報Ｗｉと乱数Ｒｊとを用いて、各復号サーバ装置iとの共通鍵Ｋｉ，ｊを生成する共通鍵生成ステップと、
関数演算部が、これら共通鍵Ｋｉ，ｊを順次用いて平文ＭＳＧjを、暗号演算部で暗号化して多重暗号文を生成する多重暗号文生成ステップと、
関数演算部が、その多重暗号文と上記生成した鍵情報の組を最初の復号ユーザ装置へ送信する送信ステップと、
を実行することを特徴とする匿名通信のユーザ装置処理方法。
【請求項９】
請求項８記載の方法であって、
ｑがｐ−１の約数の関係がある素数ｐ，ｑ、位数がｑとなる（Ｚ／ｐＺ）* (１以上ｐ未満でかつｐと互いに素な整数の集合)の元ｇが公開されてあり、
サーバ装置iの１以上ｑ未満の秘密の乱数をＡｉとすると、上記公開情報ＷｉはｇＡｉであり、
上記乱数Ｒｊは１以上ｑ未満の数であり、
上記各サーバ装置がユーザ装置との共通鍵を作るための鍵情報はＧ０，ｊ＝ｇＲｊであり、
上記共通鍵生成ステップは、
Ｌを上記（Ｚ／ｐＺ）*からＺ／ｑＺ（０以上ｑ未満の整数の集合）へ写す関数とし、Ｌ０，ｊ＝１として、Ｌｉ，ｊ＝Ｌ（Ｇｉ，ｊ）×Ｌｉ−１，ｊを各サーバ装置i＝１、・・・、mにつき計算し、
Ｈを上記（Ｚ／ｐＺ）*から共通鍵空間へ写す関数とし、各サーバ装置ｉについてＧｉ，ｊ＝ＷｉRjLi-1,jを計算し、そのサーバ装置ｉとの共通鍵Ｋｉ，ｊ＝Ｈ（Ｇｉ，ｊ）を計算する、
ことを特徴とする匿名通信のユーザ装置処理方法。
【請求項１０】
関数演算部が、
ユーザ装置又は前の復号サーバ装置が生成した鍵情報と暗号文の組の複数よりなるリストを公開掲示板から取得するリスト取得ステップと、
記憶部から秘密の乱数Ａｉを取り出す乱数取り出しステップと、
そのリスト中の各組について、その鍵情報と乱数Ａｉを用いて次の復号サーバ装置に送る鍵情報と共通鍵を生成する鍵情報・共通鍵生成ステップと、
上記共通鍵によりその組の暗号文を復号する復号ステップと、
上記生成した次の復号サーバ装置に送る鍵情報と復号した暗号文の各組を作成する組情報作成ステップと、
を実行し、
置換処理部が、
上記各組情報をランダムに置換したリストを生成して次の復号サーバ装置へ送信するステップを実行する
ことを特徴とする匿名通信の復号サーバ装置処理方法。
【請求項１１】
請求項１０記載の方法において、
ｑがｐ−１の約数の関係にある素数ｐ，ｑ、位数がｑとなる（Ｚ／ｐＺ）*(１以上ｐ未満でかつｐと互いに素な整数の集合)の元ｇが公開されてあり、
乱数Ｒｊを１以上ｑ未満とし、
Ｇ０，ｊ＝ｇＲｊとし、
Ｌを上記（Ｚ／ｐＺ）*からＺ／ｑＺ（０以上ｑ未満の整数の集合）へ写す関数とし、
Ｈを上記（Ｚ／ｐＺ）*から共通鍵空間へ写す関数とし、
上記鍵情報・共通鍵生成ステップは、
取得した鍵情報Ｇｉ−１，ｊと上記乱数ＡｉよりＴｉ，ｊ＝Ｇｉ−１，ｊＡｉをｊ＝１，・・・，ｎについて演算し、
鍵情報Ｇｉ，ｊをＧｉ−１，ｊL(Ti,j)の演算により求め、
共通鍵Ｋｉ，ｊをＨ（Ｔｉ，ｊ）の演算により求める
ことを特徴とする匿名通信の復号サーバ装置処理方法。
【請求項１２】
関数演算部が、
記憶部より復号サーバ装置ｉ（ｉ＝１，２，・・・，ｍ）との共通鍵Ｋｉをｉ＝ｍから順に取り出すステップと、
共通鍵Ｋｉによる暗号文ＥKi（）を復号する復号サーバ装置ｉの識別情報ＨＥＤＤiをＥKiにつけて共通鍵Ｋｉ−１により暗号化して、平文ＭＳＧに対する多重暗号文ＥK1（ＨＥＤＤ2||ＥK2（ＨＥＤＤ3||ＥK3（・・・（ＥKm（ＭＳＧ））・・・）））を生成するステップと、
その多重暗号文を識別情報ＨＥＤＤ1の復号サーバ装置へ送信するステップと、
を実行することを特徴とする匿名通信のユーザ装置処理方法。
【請求項１３】
各復号サーバ装置ｉ（ｉ＝１，２，・・・，ｍ）との共通鍵Ｋｉをその識別情報と共に記憶部に記憶しておき、
関数演算部が、
秘匿通信路を構成する各復号サーバ装置ｕ（ｉ）（ｕは１〜ｍの自然数の間へ写す関数）の共通鍵Ｋｕ（ｉ）を記憶部よりｕ（ｉ）＝ｍ´，ｍ´−１，・・・，２，１の順に取出して、平文ＭＳＧを多重暗号化して暗号文ＥK1´（・・・（ＥKm´（ＭＳＧ））・・・）を生成する暗号文生成ステップと、
その多重暗号文と、ｕ（ｉ）＝１の復号サーバ装置との共通鍵の識別情報とをｕ（ｉ）＝１の復号サーバ装置へ送信する送信ステップと、
各復号サーバ装置ｕ（ｉ）の共通鍵Ｋｕ（ｉ）の識別情報を更新する更新ステップと、
を実行することを特徴とする秘匿通信のユーザ装置処理方法。
【請求項１４】
請求項１３記載の方法において、
共通鍵Ｋｉの識別情報として、Ｋｉに一方向性関数Ｆを施した値
Ｆｋ（Ｋｉ）＝Ｆ（Ｋｉ||Ｆｋ−１（Ｋｉ））
（Ｆ０（Ｋｉ）は空の値）（ｋは鍵の使用回数に対応した値）を用い、
上記更新ステップは、その鍵Ｋｉを使用するごとにその識別情報に一方向性関数Ｆを施してｋを＋１したＦｋ＋１（Ｋｉ）＝Ｆ（Ｋｉ||Ｆｋ（Ｋｉ））に識別情報を更新することを特徴とする匿名通信のユーザ装置処理方法。
【請求項１５】
乱数生成部が、乱数Ａｉを生成する乱数生成ステップと、
記憶部が、上記Ａｉを記憶部に記憶する乱数記憶ステップと、
関数演算部が、
Ａｉを用いてユーザ装置が当該復号サーバ装置との共通鍵を作るための鍵情報Ｗｉを生成して公開する鍵情報公開ステップと、
ユーザ装置又は前の復号サーバ装置が生成した鍵情報及び暗号文の組の複数よりなるリストを受信する受信ステップと、
受信した各組について、その鍵情報とＡｉを用いて次の復号サーバ装置に送る鍵情報と共通鍵を生成する鍵情報・共通鍵生成ステップと、
その共通鍵を用いてその組の暗号文を復号する復号ステップと、
その復号した結果を暗号文とし、これと生成した次の復号サーバ装置に送る鍵情報の組を作る組情報作成ステップと、
を実行し、
置換処理部が、
これら作った組の順序をランダムに置換して次の復号サーバ装置へ送信する置換ステップを実行する、
ことを特徴とする匿名通信の復号サーバ装置処理方法。
【請求項１６】
請求項１５記載の方法において、
ｑがｐ−１の約数の関係になる素数ｐ、ｑ、位数がｑとなる（Ｚ／ｐＺ）*(１以上ｐ未満でかつｐと互いに素な整数の集合)の元ｇが公開されてあり、
Ｌを上記（Ｚ／ｐＺ）*からＺ／ｑＺ（０以上ｑ未満の整数の集合）へ写す関数とし、
Ｈを上記（Ｚ／ｐＺ）*から共通鍵空間へ写す関数とし、
乱数Ａｉを１以上ｑ未満として、鍵情報ＷｉをｇＡｉとし、
上記鍵情報・共通鍵生成ステップは、
受信鍵情報Ｇｉ−１，ｊに対し、Ｔｉ，ｊ＝Ｇｉ−１，ｊＡｉを演算し、
鍵情報Ｇｉ，ｊをＧｉ−１，ｊL(Ti,j)の演算により生成し、
共通鍵Ｋｉ，ｊをＨ（Ｔｉ，ｊ）の演算により生成する
ことを特徴とする匿名通信の復号サーバ装置処理方法。
【請求項１７】
請求項１５又は１６記載の方法において、
上記復号した結果から復号サーバ装置識別情報を取出し、
上記置換ステップは、同一識別情報について作った組をランダムに置換して、その識別情報の復号サーバ装置へ送信することを特徴とする匿名通信の復号サーバ装置処理方法。
【請求項１８】
ｎ個のユーザ装置ｊ（ｊ＝１，２，・・・，ｎ）との共通鍵Ｋｉ，ｊをその鍵識別情報と共に記憶部に記憶しておき、
関数演算部が、
受信した鍵識別情報及び暗号文の組から鍵識別情報を取り出すステップと、
その鍵識別情報と対応する共通鍵を記憶部から取り出すステップと、
その共通鍵で暗号文を復号する復号ステップと、
その復号結果の鍵識別情報及び暗号文よりなる組を作成する組情報作成ステップと、
を実行し、
置換処理部が、
他の組と順序をランダムに置換して次の復号サーバ装置へ送信するステップを実行し、
関数演算部が、
記憶部内における、上記復号に用いた共通鍵の鍵識別情報を更新する更新ステップを実行する
ことを特徴とする匿名通信の復号サーバ装置処理方法。
【請求項１９】
請求項１８記載の方法において、
上記鍵識別情報として、その共通鍵Ｋｉ，ｊに一方向性関数Ｆを施した値
Ｆｋ（Ｋｉ）＝Ｆ（Ｋｉ||Ｆｋ−１（Ｋｉ））
（Ｆ０（Ｋｉ）は空の値）（ｋは鍵の使用回数に対応した値）を用い、
上記更新ステップは、鍵識別情報の更新を、現鍵識別情報値Ｆｋ（Ｋｉ）＝Ｆ（Ｋｉ||Ｆｋ−１（Ｋｉ））に対し一方向性関数Ｆを施してｋを＋１したＦｋ＋１（Ｋｉ）＝Ｆ（Ｋｉ||Ｆｋ（Ｋｉ））とすることを特徴とする匿名通信の復号サーバ装置処理方法。
【請求項２０】
請求項１８又は１９記載の方法において、
上記復号結果からサーバ識別情報を取出し、
そのサーバ識別情報の復号サーバ装置を上記次の復号サーバ装置とすることを特徴とする匿名通信の復号サーバ装置処理方法。
【請求項２１】
請求項８、９、１２、１３、１４の何れかに記載のユーザ装置処理方法をコンピュータに実行させるための匿名通信のユーザ装置プログラム。
【請求項２２】
請求項１０、１１、１５、１６、１７、１８、１９、２０の何れかに記載の復号サーバ装置処理方法をコンピュータに実行させるための匿名通信の復号サーバ装置プログラム。
【請求項２３】
請求項２１又は２２記載のプログラムを記憶したコンピュータ読み出し可能な記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、情報セキュリティ技術の応用技術であって、ネットワーク上で投票やアンケートのような一方向の通信だけでなく情報閲覧やコンテンツサービスのような双方向の通信にも適用できる匿名通信方法、その装置処理方法、そのプログラム及びその記録媒体に関するものである。
【０００２】
【従来の技術】
ネットワーク上で投票やアンケートのような一方向の匿名通信を実現する手段として、例えば大久保、「暗号文の長さが不変な Hybrid-Mix」（２０００年暗号と情報セキュリティシンポジウム）がある。これは共通鍵暗号を利用した匿名通信方法であり、複数のユーザ装置と、その装置による多重に暗号化された暗号文を復号する複数の復号サーバ装置と、それらをつなぐネットワークから構成される。このような構成のもとで匿名通信を実現するために、あらかじめ複数の復号サーバ装置が協力して計算を行い、それぞれの復号サーバ装置がその計算結果を暗号／復号用鍵を生成するための情報として公開する必要がある。つまり復号サーバ装置Ｍ１，Ｍ２，・・・，Ｍｍがネットワークを介して公開掲示板装置に送信する鍵情報は、それぞれが生成した秘密乱数Ａ１，Ａ２，・・・ＡｍとＸ１，Ｘ２，・・・，Ｘｍを用いて計算された（ｇA1，ｇA1X1），（ｇA1A2，ｇA1A2X1），・・・，（ｇA1A2・・・m，ｇA1A2・・・AmXm）となる。これによりユーザ装置および各復号サーバ装置は鍵を生成できるが、鍵情報のサイズが大きいことに加え、いくつかの復号サーバ装置がシステムダウンした、あるいは不正を働いたなどとして排除する場合に、従来技術では鍵情報の生成が復号サーバ装置間で依存しているために再度鍵情報を生成しなおさなくてはならない。
【０００３】
【発明が解決しようとする課題】
第１の問題点は多様な匿名通信経路の構成が困難なこと、また、いくつかの復号サーバ装置が停止した場合などに再度事前計算を行わなければならないことである。
その理由は、上記従来技術ではその事前計算により復号サーバ装置の順序づけが一意に決定されてしまい、あらかじめ複数の復号サーバ装置が協力して計算を行わなくてはならないためである。
【０００４】
第２の問題点は、投票やアンケートのような一方向の匿名通信にのみ適用できる手段においてのみ提供しているということである。
双方向の通信にも適用できれば情報閲覧やコンテンツサービスなどの匿名サービスができる。
この発明の第１の目的は、ユーザ装置が共通鍵を作るための復号サーバ装置の鍵情報を、複数の復号サーバ装置があらかじめ協力して計算を行うことを必要としない匿名通信方法を提供することにある。
この発明の第２の目的は、ユーザは利用する復号サーバ装置とその利用順序を自由に選択でき、情報閲覧やコンテンツサービスのような双方向の通信にも適用できる匿名通信方法を提供することにある。
【０００５】
【課題を解決するための手段】
この発明によれば掲示板装置と、複数のユーザ装置と、複数の復号サーバ装置と、それらをつなぐネットワークとを備え、
掲示板装置は受信した情報を即座に電子的公開掲示板に公開し、復号サーバ装置はそれぞれ独立に生成したユーザ装置が鍵を作るための鍵情報を掲示板装置にネットワークを介して送信し、
ユーザ装置は各復号サーバ装置が鍵を作るための鍵情報を生成すると共に、公開された復号サーバ装置のそれぞれの鍵情報から複数の鍵を生成し、自身の平文をそれらの鍵で多重に共通鍵暗号で暗号化し、自身の生成した鍵情報と多重暗号の組の複数を最初の復号サーバ装置にネットワークを介して送信し、
復号サーバ装置は、取得した各組中の鍵情報からそれぞれ復号鍵を生成して、これら復号鍵により複数の多重暗号文を復号し、その各復号文と生成した鍵情報の組の複数よりなるリストを置換して次の復号サーバ装置へネットワークを介して送信して、
復号サーバ装置への入力である複数のユーザ装置の暗号文及びそれに付随する情報のリストと、復号サーバ装置の出力である次の複数の復号サーバ装置への情報のリストとの対応関係を隠蔽する。
【０００６】
この発明において例えば、復号サーバ装置がネットワークを介して公開掲示板装置に送信するユーザ装置が鍵を作るための鍵情報は、復号サーバ装置をＭ１，Ｍ２，・・・，Ｍｍとすると、それぞれが生成した秘密乱数Ａ１，Ａ２，・・・，Ａｍおよび公開情報ｇをもちいて計算されたｇA1，ｇA2，・・・，ｇAmとなる。この鍵情報のみでユーザ装置は多重暗号文に必要な複数の暗号鍵を生成でき、各復号サーバ装置はユーザ装置による多重暗号文を復号するための鍵情報を生成できる。このため復号サーバ装置が不正してそれを排除した場合や復号サーバ装置が使用不能になった場合に、復号サーバ装置による鍵情報が他復号サーバ装置とは独立に生成されているために鍵情報を生成し直す必要はない。
【０００７】
また、従来技術では匿名通信経路が一意的であったが、この発明では復号サーバ装置の鍵情報が他復号サーバ装置とは独立であるため容易に匿名通信経路を多様に構成でき、その経路をユーザ自身が選択することができる。そのためには例えばユーザ装置による多重暗号文をＥK1（ＨＥＤＤ2||ＥK2（ＨＥＤＤ3||ＥK3（・・・（ＥKm（ＭＳＧ））・・・）））とし（ただしＭＳＧを平文、Ｅを共通鍵暗号の暗号化アルゴリズム、ＨＥＤＤiで復号サーバ装置ｉを表すヘッダ情報（識別情報）、||でデータの連結、ＥKi（ＭＳＧ）でＭＳＧをＥをもちいて鍵Ｋｉで暗号化したものとする）、復号サーバ装置Ｍ１は鍵Ｋ１をもちいて復号しＨＥＤＤ2||ＥK2（ＨＥＤＤ3||ＥK3（・・・（ＥKm（ＭＳＧ））・・・））を得る。これにより次に復号を行う復号サーバ装置はＨＥＤＤ2に示されているように復号サーバ装置Ｍ２であることが分かる。最終的に復号サーバ装置Ｍｍが復号することにより平文ＭＳＧを得る。
【０００８】
更に従来技術では投票やアンケートなど一方向の匿名通信にのみが考えられていたが、例えばユーザ装置による多重暗号文ＥK1（ＥK2（・・・（ＥKm（ＭＳＧ））・・・））を各復号サーバ装置が逐次ＥK2（・・・（ＥKm（ＭＳＧ））・・・），・・・，ＥKm（ＭＳＧ），ＭＳＧと復号していたものに対して、逆にユーザ装置に与える平文ＭＳＧ′を各復号サーバ装置が逐次ＥKm（ＭＳＧ′），・・・，ＥK2（・・・（ＥKm（ＭＳＧ′））・・・），ＥK1（ＥK2（・・・（ＥKm（ＭＳＧ′））・・・））と自身の鍵で暗号化を施し、その多重暗号文をユーザ装置が一括復号しＭＳＧ′を得ることで、情報閲覧やコンテンツサービスなど双方向の通信がこの発明により可能となる。これはユーザ装置から復号サーバ装置への匿名通信と同様の方法により双方向の通信においても匿名通信が可能となる。
【０００９】
【発明の実施の形態】
次に、この発明の実施の形態について図面を参照して詳細に説明する。
まず第１の実施形態として、ユーザが利用する復号サーバ装置とその匿名通信経路があらかじめ一意的に決まっていて、電子的公開掲示板を用いて匿名性を備えた鍵共有及びメッセージの復号を実現する方法を示す。
次に第２の実施形態として、利用する復号サーバ装置とその匿名通信経路は各ユーザが自由に選択でき、ユーザ装置−復号サーバ装置、復号サーバ装置−復号サーバ装置間で署名を付与して送受信し、匿名のユーザの要求に対する情報をその匿名のユーザに返送できる方法を示す。
なお第１、第２の実施形態ともに、匿名通信を行う際、離散対数問題を拠り所とするような大きな素数ｐ，ｑ（ｑはｐ−１の約数となるような関係を持つ）及び位数がｑとなるような乗法群（Ｚ／ｐＺ）*の元ｇがあらかじめ公開されているものとする。
【００１０】
第１の実施形態
図１に示すように、第１の実施形態におけるこの発明による匿名通信を実現するための構成は、ユーザ装置及び復号サーバ装置がアクセス可能な公開掲示板装置１０と、公開掲示板装置１０が受信した情報を公開するための電子的公開掲示板１１と、複数のユーザ１２と、そのユーザが操作するユーザ装置１３と、復号サーバ装置１４と、それを操作、管理する復号サーバ管理者１５と、ユーザ装置１３及び復号サーバ装置１４と、公開掲示板装置１０あるいは電子的公開掲示板１１とを結ぶネットワーク１６からなる。なお復号サーバ装置１４はｍ台あるものとし、i番目（ｉ＝１，２，・・・，ｍ）の復号サーバ装置を１４−ｉで表し、その管理者を１５−ｉとし、ユーザ１２はｎ人いるものとしそのユーザ１２には番号が割り振られており、ｊ番目のユーザ１２を１２−ｊとし、１２−ｊが操作するユーザ装置１３を１３−ｊ（ｊ＝１，２，・・・，ｎ）で表す。
【００１１】
復号サーバ装置１４−ｉ（ｉ＝１，２，・・・，ｍ）はそれぞれ別の機関が管理するなどして結託しないものとし、事前処理として，図４及び図５に示すように、ｐ，ｑ，ｇを電子的公開掲示板１１よりダウンロードして記憶部１４１に格納し（Ｓ２）、乱数生成部１４２により１以上ｑ未満の乱数Ａｉを生成し、Ａｉを記憶部１４１に格納すると共にＷｉ＝ｇAiを関数演算部１４３で計算して公開掲示板装置１０に送信する（Ｓ２）。
次にユーザ装置１３−ｊの多重暗号文と鍵情報の生成法について述べる。ユーザ装置１３−ｊの処理手順を図２に、その機能構成を図３にそれぞれ示す。
ユーザ装置１３−ｊはｐ，ｑ，ｇを電子的公開掲示板１１よりダウンロードして記憶部１３１に格納し（Ｓ１）、乱数生成部１３２より１以上ｑ未満の乱数Ｒｊを生成した後、Ｇ０，ｊ＝ｇRjを関数演算部１３３で計算し（Ｓ２）、これを鍵情報とする。また復号サーバ装置１４−ｉ（ｉ＝１，２，・・・，ｍ）の公開情報Ｗｉを電子的公開掲示板１１よりダウンロードし、Ｇｉ，ｊ＝ＷｉRjLi-1,jをｉについて１からはじめてｍまで順に関数演算部１３３で計算する。ここでＬｉ，ｊ＝Ｌ（Ｇｉ，ｊ）×Ｌｉ−１，ｊ，ただしＬ０，ｊ＝１，Ｌは乗法群（Ｚ／ｐＺ）*からＺ／ｑＺへ写す関数とする。
【００１２】
以上の準備から復号サーバ装置１４−ｉに対する共通鍵Ｋｉ，ｊ＝Ｈ（Ｇｉ，ｊ）をｉについて１からはじめてｍまで順に関数演算部１３３で生成する（Ｓ３）。ただしＨは乗法群（Ｚ／ｐＺ）*から共通鍵空間へ写す関数とする。
そして最終的にユーザ装置１３−ｊのメッセージＭＳＧｊに対して、暗号鍵Ｋｍ，ｊからはじめてＫ１，ｊまで順に用いて暗号化を関数演算部１３３で施した多重暗号文Ｖ０，ｊ＝ＥK1,j（・・・（ＥKm,j（ＭＳＧｊ））・・・）を計算して鍵情報と多重暗号文の組Ｃ０，ｊ＝（Ｇ０，ｊ，Ｖ０，ｊ）を公開掲示板装置１０に送信する（Ｓ４）。ただしＥは共通鍵暗号の暗号化アルゴリズム、添字のＫｉ，ｊはＥに用いる暗号鍵とする。
【００１３】
続いて復号サーバ装置１４の処理について述べる。復号サーバ装置１４の処理手順を図４に示す。また、復号サーバ装置１４の機能構成を図５に示す。
まず復号サーバ装置１４−１は全ユーザ装置１３からの公開情報のリストＢ０＝｛Ｃ０，１，Ｃ０，２，・・・，Ｃ０，ｎ｝を電子的公開掲示板１１より取得し（Ｓ３）、自身の生成した乱数Ａ１を記憶部１４１から取り出し、Ｔ１，ｊ＝Ｇ０、ｊA1（ｊ＝１，２，・・・，ｎ）を関数演算部１４３で計算する。これらから、鍵情報Ｇ１、ｊ＝Ｇ０，ｊL(T1,j)及び復号鍵共通鍵Ｋ１，ｊ＝Ｈ（Ｔ１，ｊ）を関数演算部１４３で生成した後（Ｓ４）、多重暗号文Ｖ０，ｊをその復号鍵Ｋ１，ｊで関数演算部１４３において復号する。この復号した値をＶ１，ｊ＝ＤK1,j（Ｖ０，ｊ）と表記する。ただしＤは共通鍵暗号の復号アルゴリズム、もちろん復号サーバ装置１４が２台以上であればＶ１，ｊは暗号文となっている。そしてｎ個の鍵情報と暗号文の組Ｃ１，ｊ＝（Ｇ１，ｊ，Ｖ１，ｊ）を作成し（Ｓ５）、この組Ｃ１，ｊの順序を置換処理部１４４で適当（ランダム）に置換して得られたリストＢ１を公開掲示板装置１０に送信する（Ｓ６）。
【００１４】
以下同様の操作を復号サーバ装置１４−ｉはｉについて２からｍまで繰り返す。すなわち復号サーバ装置１４−ｉは復号サーバ装置１４−ｉ‐１の公開リストＢｉ‐１を取得し、これから鍵情報と復号鍵を生成し、復号及び置換をした後、リストＢｉを公開掲示板装置１０に送信する。
最終的に復号サーバ装置１４−ｍの復号処理で全ユーザのメッセージＭＳＧｊを得ることができる。
この操作により全復号サーバ装置１４の置換が知られない限り、つまり各復号サーバ装置１４−ｉを管理する復号サーバ管理者１５全員が結託しない限り、ＭＳＧｊがどのユーザのものであるかの判別がつかない。ただしもちろん各復号サーバ装置１４の入出力のリストが複数のユーザ１２により構成されている必要がある。
【００１５】
またもしユーザ１２−ｊが自身のメッセージＭＳＧｊが公開されていないことを確認したい場合は、復号サーバ装置１４−ｉ各々の出力値を、これと対応する暗号文を作成して一致するものがあるか否か検証することにより、どの復号サーバ装置１４が不正を行ったか特定でき、さらにユーザ１２−ｊと復号サーバ管理者１５−ｉ双方の間で不正が報告され、かつお互いが正当だと主張した場合、例えばお互いの秘密乱数Ｒｊ，Ａｉを公開することで、第３者が双方の処理を再度行い、その計算結果を電子的公開掲示板１１に公開された情報と照らし合わせることで、どちらが不正を行ったか特定できる。
【００１６】
復号サーバ装置はそれぞれ独立に、ユーザ装置が鍵を作るための鍵情報Ｗｉを生成できることにより、一部の復号サーバ装置がシステムダウンあるいは不正を働いたとして排除された場合も、鍵情報の生成をやり直す必要がない。
上述ではユーザ装置１３−ｊからの多重暗号文を公開掲示板装置１０へ送信し、各サーバ装置１４−ｉは電子的公開掲示板１１より、リスト Ｂｉ−１を取得して、リストＢｉを生成して公開掲示板装置１０へ送信したが、ユーザ装置１３−ｊから最初のサーバ装置１４−１にＬ０，ｊを送り、サーバ装置１４−１はその生成したリストＢ１を次のサーバ装置１４−２へ送信するというように順次送信してもよい。つまり、サーバ装置１４−１，１４−２，・・・へ掲示板装置１０及び電子的公開掲示板１１を介して各生成したリストを送信しても、直接送信しても良く，この明細書では装置Ａが情報Ｂを公開掲示板装置１０へ送信し、他の装置Ｃが電子的公開掲示板１１より情報Ｂを取得することも含めて、装置Ａが情報Ｂを装置Ｃへ送信すると定義する。
【００１７】
第２の実施形態
図６に示すように、第２の実施形態におけるこの発明による匿名通信を実現するための構成は、ユーザ装置および復号サーバ装置がアクセス可能な公開掲示板装置１７と、公開掲示板装置１７が受信した情報を公開するための電子的公開掲示板１８と、複数のユーザ１９と、そのユーザが操作するユーザ装置２０と、復号サーバ装置２１と、それを操作，管理する復号サーバ管理者２２と、ユーザ１９からの要求にこたえるセンタ２３と、そのセンタ２３が操作する復号サーバ装置２４と、ユーザ装置２０及び復号サーバ装置２１と、電子的公開掲示板１８あるいは公開掲示板装置１７を結ぶネットワーク２５と、復号サーバ装置２１間とセンタ２３の復号サーバ装置２４間を全て結ぶネットワーク２５からなる。なお復号サーバ装置２１はｍ台あるものとし、その復号サーバ装置２１には番号が割り振られておりｉ番目の復号サーバ装置を２１−ｉで表し、その管理者２２を２２−ｉとし、ユーザ１９はｎ人いるものとし、そのユーザには番号が割り振られており、ｊ番目のユーザ１９を１９−ｊとし、ユーザ１９−ｊが操作するユーザ装置２０を２０−ｊ（ｊ＝１，２，・・・，ｎ）で表す。
復号サーバ装置２１−ｉ（ｉ＝１，２，・・・，ｍ）、及び２４はそれぞれ別の機関が管理するなどして結託しないものとする。
まずセンタ２３の操作する復号サーバ装置２４をｍ＋１番目の復号サーバ装置とみなして鍵共有するものとし，ユーザ装置２０−ｊは復号サーバ装置２１−ｉ（ｉ＝１，２，・・・，ｍ）、及び２４に対する暗号鍵Ｋｉ，ｊを自身の記憶部に格納しているものとする。同様に復号サーバ装置２１−ｉ、２４はユーザ装置２０−ｊ（ｊ＝１，２，・・・，ｎ）に対する復号鍵Ｋｉ，ｊを自身の記憶部に格納しているものとする。この鍵共有は電子的公開掲示板１８をもちいる必要があり、例えば第１の実施形態に示されている方法により実現できる。第１の実施形態における鍵共有の手法のみを利用して、各記憶部に共通鍵を格納し、又は第１の実施形態を実行して１回目の通信を行うと共にその際求めた共通鍵を記憶部に格納して２回目以降の通信にこの第２の実施形態を適用してもよい。
復号サーバ装置２１−ｉ（ｉ＝１，２，・・・，ｍ）、及び２４は各ユーザ装置２０と共有した鍵Ｋｉ，ｊ（ｊ＝１，２，・・・，ｎ）から一方向性関数ＦをもちいてＦ（Ｋｉ，ｊ）を計算し、（Ｋｉ，ｊ，Ｆ（Ｋｉ，ｊ））の組として即座に自身の記憶部に書きこむ。この記憶部に書きこまれた複数の組は、外部から読まれることのないように管理する必要がある。またＦとして例えば一方向性ハッシュ関数をもちいるなどし、この関数はあらかじめユーザ１９、復号サーバ管理者２２、センタ２３の間で一意的に定めておく必要がある。
この例ではＦ（Ｋｉ，ｊ）はＫｉ，ｊの鍵識別情報として用いられる。
【００１８】
ユーザ装置２０の処理手順の例を図７に、その機能構成例を図８にそれぞれ示し、ユーザ装置２０の処理について述べる。
ユーザ装置２０−ｊははじめに自身から復号サーバ装置２１及び復号サーバ装置２１から自身への双方向の経路、そして利用する複数の復号サーバ装置２１−ｉを決める（Ｓ１）。この経路をユーザ装置２０−ｊ→復号サーバ装置２１−ｕ（１）→・・・→復号サーバ装置２１−ｕ（ｍ′）→復号サーバ装置２４→復号サーバ装置２１−ｕ′（１）→・・・→復号サーバ装置２１−ｕ′（ｍ″）→ユーザ装置２０−ｊとする。ただし、ｕ、ｕ′は１からｍの自然数の間へ写す関数、ｍ′、ｍ″は自然数とする。単一の復号サーバ装置でも良いが，その場合匿名性はその単一の復号サーバ装置に対して失われる。
【００１９】
次にユーザ装置２０−ｊは関数演算部２０１により、Ｆｋ（Ｋｕ（１），ｊ），・・・，Ｆｋ（Ｋｕ（ｍ′），ｊ）、Ｆｋ（Ｋｕ′（１），ｊ），・・・，Ｆｋ（Ｋｕ′（ｍ″），ｊ）、Ｆｋ（Ｋｍ＋１，ｊ）を計算する（Ｓ２）。ここでＫｍ＋１，ｊはユーザ装置２０−ｊと復号サーバ装置2４間の共通鍵、Ｆｋ（Ｋｉ，ｊ）＝Ｆ（Ｋｉ，ｊ||Ｆｋ−１（Ｋｉ，ｊ）），ｋは関数Ｆの入力となる鍵の対象となる復号サーバ装置２１を利用した回数、ただしＦ０は空の値、||はデータの連結とする。この計算は、あらかじめＫｉ，ｊおよびＦｋ−１（Ｋｉ，ｊ）を記憶部２０２に格納しておくことで、利用回数をカウントする必要なく容易に行える。
【００２０】
そしてヘッダ情報を含んだ多重暗号文
Ｖ′ｉ，ｊ＝ＨＥＤＤu′(i+1)||Ｆｋ（Ｋｕ′(ｉ＋１)，ｊ）||ＥKu′(i+1)（Ｖ′ｉ＋１，ｊ）（ｉ＝ｍ″，ｍ″−１，・・・，１，０）
を関数演算部２０１で計算する。ただし、ＨＥＤＤiは復号サーバ装置２１−ｉを示すヘッダ情報（サーバ識別情報）、ＥKu′(m″+1)（Ｖ′ｍ″＋１，ｊ）を空の値とする。さらにセンタ２３に対するメッセージをＭＳＧｊとし、ヘッダ情報（サーバ識別情報）と鍵情報（鍵識別情報）を含んだ多重暗号文
Ｖｉ，ｊ＝ＨＥＤＤu(i+1)||Ｆｋ（Ｋｕ（ｉ＋１），ｊ）||ＥKu(i+1),j（Ｖｉ＋１，ｊ）（ｉ＝ｍ′，ｍ′−１，・・・，０）
を関数演算部２０１で計算する（Ｓ３）。ただし、ｕ（ｍ′＋１）＝ｍ′＋１，Ｖｍ′＋１＝ＭＳＧｊ||Ｖ′０，ｊとする。最終的にＶ０，ｊにユーザ１９−ｊの署名を付与した組（Ｖ０，ｊ，ＳUj（Ｖ０，ｊ））（ＳUj（ｘ）でユーザ１９−ｊによるｘを入力とした署名関数の出力値とする）をＨＥＤＤu(1)で記されているとおり、復号サーバ装置２１−ｕ（１）に送信する（Ｓ４）。
【００２１】
続いて復号サーバ装置２１の処理について述べる。復号サーバ管理者２２−ｕ（ｉ）の操作する復号サーバ装置２１−ｕ（ｉ）の処理手順の例を図９に、復号サーバ装置２１−ｕ（ｉ）の機能構成例を図１０にそれぞれ示す。
まず復号サーバ装置２１−ｕ（１）はユーザ装置２０−ｊから署名付き多重暗号文の組（Ｖ０，ｊ，ＳUj（Ｖ０，ｊ））を受信すると（Ｓ１）、これに対して関数演算部２１１でその署名が正しいか検証する（Ｓ２）。もし正しくなければその時点で処理を中断するなど、あらかじめ決められた規則に従う。その検証が正しい場合、ユーザ装置２０−ｊに、検証にパスしたことを証明する文書を署名付きで返信し（Ｓ３）、Ｖ０，ｊに含まれているＦｋ（Ｋｕ（１），ｊ）から自身の記憶部２１２に書きこまれた情報（Ｋｕ（１），ｊ，Ｆｋ（Ｋｕ（１），ｊ））を読み込み、鍵Ｋｕ（１），ｊを取り出す（Ｓ４）。
【００２２】
そしてＶ０，ｊに含まれているＥKu(1),j（Ｖ１，ｊ）を関数演算部２１１で鍵Ｋｕ（１），ｊにより復号し，Ｖ１，ｊ＝ＨＥＤＤu(2)||Ｆｋ（Ｋｕ（２），ｊ）||ＥKu(2),j（Ｖ２，ｊ）を得る（Ｓ５）。最終的にＶ１，ｊに復号サーバ装置２１−ｕ（１）の管理者２２−ｕ（１）の署名を関数演算部２１１で付与し、その復号結果と署名の組（Ｖ１，ｊ，ＳMu(1)（Ｖ１，ｊ））（ＳMu(i)（ｘ）で管理者２２−ｉによるｘを入力とした署名関数の出力値とする）を、ＨＥＤＤu(2)で記されているとおり、復号サーバ装置２１−ｕ（２）に送信する（Ｓ６）。
【００２３】
なお、この操作はユーザ１９−ｊの匿名性を確保するために、複数ユーザのデータを置換処理部２１３で置換処理を施した上でまとめて送信する必要がある。このときまとめられたユーザ数が多ければ多いほど一般により高い匿名性を確保できる。また、Ｆｋ＋１（Ｋｕ（１），ｊ）を関数演算部2１１で計算し、記憶部２１２に書きこまれたＦｋ（Ｋｕ（１），ｊ）をＦｋ＋１（Ｋｕ（１），ｊ）に書き換える（Ｓ７）。つまり共通鍵Ｋｕ（１），ｊに対する鍵識別情報を更新する。
【００２４】
なおＦｋ（Ｋｉ，ｊ）は復号サーバ装置２１−ｉのための鍵情報であり、これにより復号サーバ装置２１−ｉだけが、どのユーザの多重暗号文かを知ることなくもちいる共通鍵を識別できる。もしＦｋ（Ｋｉ，ｊ）がそれをみた他者に対して何らかの情報を与えていれば、そこから匿名性が失われる危険性がある。しかしこの方法は一方向性関数を用いることで匿名性の確保と匿名の情報に対する共通鍵の識別を両立させている。
以下同様の操作を復号サーバ装置２１−ｕ（２）から２１−ｕ（ｍ′）まで行う。
【００２５】
次にセンタ２３の操作する復号サーバ装置２４の処理について述べる。復号サーバ装置２４の処理手順の例を図１１に示し、復号サーバ装置２４の機能構成例を図１２に示す。
まず復号サーバ装置２４は復号サーバ装置２１−ｕ（ｍ′）から署名付き暗号文の組（Ｖｍ′，ｊ，ＳMu(m′)（Ｖｍ′，ｊ））を受信すると（Ｓ１）、これに対して関数演算部２４１でその署名が正しいか検証する（Ｓ２）。もし正しくなければその時点で処理を中断するなど、あらかじめ決められた規則に従う。その検証が正しい場合、復号サーバ装置２１−ｕ（ｍ′）に、パスしたことを証明する文書を署名付きで返信（Ｓ３）、Ｖｍ′，ｊに含まれているＦｋ（Ｋｕ（ｍ′＋１），ｊ）から自身の記憶部２４２に書きこまれた情報（Ｋｕ（ｍ′＋１），ｊ，Ｆｋ（Ｋｕ（ｍ′＋１），ｊ））を読みこみ、鍵Ｋｕ（Ｍ′＋１），ｊを取り出す（Ｓ４）。そしてＶｍ′，ｊに含まれているＥKu(m′+1),j（ＭＳＧｊ||Ｖ′０，ｊ）を鍵Ｋｕ（ｍ′＋１），ｊで関数演算部２４１において復号し、ＭＳＧｊおよびＶ′０，ｊを得る（Ｓ５）。
【００２６】
次にユーザ１９−ｊの要求内容が記されているＭＳＧｊの要求に応えたデータＭＳＧｊ′を作成し（Ｓ６）、Ｖ′０，ｊとＭＳＧｊ′を自身の鍵Ｋｕ（ｍ′＋１），ｊで関数演算部２４１において暗号化を施して
ＥKu(m′+1),j（ＭＳＧｊ′）を求め（Ｓ７）、これとＶ′０，ｊとの連結Ｖ″０，ｊ＝Ｖ′０，ｊ||ＥKu(m′+1),j（ＭＳＧｊ′）
を計算し（Ｓ８）、それに対する署名を関数演算部２４１で求め、この署名の組（Ｖ″０，ｊ，ＳMu(m′+1)（Ｖ″０，ｊ））をＶ′０，ｊに含まれるＨＥＤＤu′(1)に示されたとおり、復号サーバ装置２１−ｕ′（１）に送信する（Ｓ９）。
【００２７】
なお、この操作はユーザ１９−ｊの匿名性を確保するために、複数ユーザへ返信するデータを置換処理を置換処理部２４３で施した上でまとめて送信する必要がある。また、Ｆｋ＋１（Ｋｕ（ｍ′＋１），ｊ）を関数演算部２４１で計算し、記憶部２４２に書きこまれたＦｋ（Ｋｕ（ｍ′＋１），ｊ）をＦｋ＋１（Ｋｕ（ｍ′＋１），ｊ）に書き換える（Ｓ１０）。
続いて復号サーバ装置２１の処理について述べる。この場合の復号サーバ装置２１の処理手順の例を図１３に、その機能構成における入出力を図１４にそれぞれ示す。
【００２８】
まず復号サーバ装置２１−ｕ′（１）は復号サーバ装置２４から受信した署名付き多重暗号文の組（Ｖ″０，ｊ，ＳMu(m′+1)（Ｖ″０，ｊ））を受信すると（Ｓ１）、これに対してその署名が正しいか関数演算部２１１で検証する（Ｓ２）。もし正しくなければその時点で処理を中断するなど、あらかじめ決められた規則に従う。検証が正しい場合、復号サーバ装置２４に、パスしたことを証明する文書を署名付きで返信し（Ｓ３）、Ｖ″の中のＶ′０、ｊに含まれているＦｋ（Ｋｕ′（１），ｊ）から自身の記憶部２１２に書きこまれた情報（Ｋｕ′（１），ｊ，Ｆｋ（Ｋｕ′（１），ｊ））を読みこみ、鍵Ｋｕ′（１），ｊを取り出す（Ｓ４）。そしてＶ″０，ｊの中のＶ′０，ｊにふくまれているＥKu′(1)（Ｖ′１，ｊ）を関数演算部２１１においてＫｕ′（１），ｊで復号し（Ｓ５）、Ｖ′，１，ｊ＝ＨＥＤＤu′(2)||Ｆｋ（Ｋｕ′（２），ｊ）||ＥKu′(2),j（Ｖ′２，ｊ）
を得るとともに、ＥKu(m′+1),j（ＭＳＧｊ′）に対し鍵Ｋｕ′（１），ｊで関数演算部２１１において多重暗号文
ＥKu′(1),j（ＥKu(m′+1),j（ＭＳＧｊ′））
を計算する。更にこれらの連結Ｖ″１，ｊ＝Ｖ′１，ｊ||ＥKu′(1),j（ＥKu(m′+1),j（ＭＳＧｊ′））を作成する（Ｓ６）。最終的にＶ″１，ｊに復号サーバ装置２１−ｕ′（１）の管理者２２−ｕ′（１）の署名を関数演算部２１１で付与し、Ｖ″１，ｊとこの署名の組（Ｖ″１，ｊ，ＳMu′(1)（Ｖ″１，ｊ））をＨＥＤＤu′(2)で記されているとおり、復号サーバ装置２１−ｕ′（２）に送信する（Ｓ７）。
【００２９】
なお、この操作はユーザ１９−ｊの匿名性を確保するために、複数ユーザへ返信するデータを置換処理部２１３で置換処理を施した上でまとめて送信する必要がある。また、Ｆｋ＋１（Ｋｕ′（１），ｊ）を関数演算部２１１で計算し、記憶部２１２に書きこまれたＦｋ（Ｋｕ′（１），ｊ）をＦｋ＋１（Ｋｕ′（１），ｊ）に書き換える（Ｓ８）。
以下同様の操作を復号サーバ装置２１−ｕ′（２）から復号サーバ装置２１−ｕ（ｍ″）まで行う。図１５及び図１６に示すように、ユーザ装置２０−ｊは最終的に（Ｖ″ｍ″，ｊ，ＳMu(m″)（Ｖ″ｍ″，ｊ））を受信すると（Ｓ１）、その署名検証を関数演算部２０１で行い、その署名が正しければ（Ｓ２）、復号サーバ装置２１−ｕ（ｍ″）に正しかったことを、そのユーザ１９−ｊの署名を付けて返信する（Ｓ３）。記憶部２０２から共通鍵Ｋｕ′（ｍ″），ｊ，・・・，Ｋｕ′（１），ｊ，Ｋｕ（ｍ′＋１），ｊを読み出し（Ｓ４）、これらの鍵を順番に用いて、関数演算部２０１で多重暗号文ＥKu′(m″),j（・・・（ＥKu′(1),j（ＥKu(m′+1),j（ＭＳＧｊ′）））・・・）を復号してＭＳＧｊ″を得る（Ｓ４）。この際に鍵Ｋｕ′（ｍ″），ｊ，・・・，Ｋｕ′（１），ｊ，Ｋｕ（ｍ′＋１），ｊはユーザ装置２０−ｊ自身も共有しており、復号する順序もユーザ１９−ｊ自身が定めたものであり、明らかであるため、ＭＳＧｊ′を得ることができる。復号されたメッセージＭＳＧｊ′がユーザ装置２０−ｊが送信したメッセージＭＳＧｊと対応したものであるかを調べ、対応していれば、そのＭＳＧｊ′を受領する（Ｓ５）。
【００３０】
なお、図８に示したユーザ装置と図１６に示したユーザ装置とは同一であり、図１０に示した復号サーバ装置と図１４に示した復号サーバ装置とは同一であるが、データの入出力を明らかにするため説明の便宜上、分けて示した。
以上の操作により全復号サーバ装置２１の置換が知られない限り、つまり各復号サーバ装置２１−ｉを管理する復号サーバ管理者２２−ｉ全員が結託しない限り、センタ２３はＭＳＧｊがどのユーザのものであるかの判別もつかなければ、ＭＳＧｊ′がどのユーザに行くのかの判別もつかない。またセンタ２３が複数あるとすれば、復号サーバ管理者２２のうち、誰もどのユーザがどのセンタに要求をだしたか対応付けることができない。これにより秘匿性の高い匿名通信が可能となる。ただし各復号サーバ装置２１−ｉの入出力のリストが複数のユーザ１９−ｊにより構成されている必要がある。
【００３１】
またもしユーザ１９−ｊに自身の要求に対するメッセージＭＳＧｊ′が届かない場合、各復号サーバ装置２１−ｕ（ｉ）（ｉ＝１，２，・・・，ｍ′＋１）および２１−ｕ′（ｉ′）（ｉ′＝１，２，・・・，ｍ″）に、自身がパスしたことを証明する署名付き文書を提出させる。この署名付き文書を受信しなかった場合は即座に責任者に報告するなどして対処することにより、どの復号サーバ装置が不正を行ったか特定でき、さらにユーザ１９−ｊと復号サーバ管理者２２−ｉ双方の間で不正が報告され、かつお互いが正当だと主張した場合、例えばお互いの秘密乱数を公開することで、第３者が双方の処理を再度行い、その計算結果を電子的公開掲示板１８に公開された情報と照らし合わせることと必要な部分の署名付き文書を提出させてその署名を検証することで、どちらが不正を行ったか特定できる。
【００３２】
この第２の実施形態によれば多重暗号文中の各暗号文に対応する平文には次に復号を行う復号サーバ装置に対する識別情報が含まれていることにより、ユーザは利用するサーバ及び経路を自由に選択することができる。また復号サーバ装置はその際どのユーザ装置の暗号文なのかを知ることなく、どの共通鍵を用いれば良いかを鍵識別情報Ｆｋ（Ｋｉ，ｊ）により知ることができる。
第２の実施形態に示すように、復号サーバ装置２１−ｉの順にユーザが任意に選ぶことができるから、この明細書においてユーザ装置２０−ｊが多重暗号文を最初に送信する復号サーバ装置は必ずしも装置２１−１に限らず、装置２１−１〜２１−ｍ中の任意のものとすることができる。
【００３３】
なおセンタ23よりのＭＳＧｊ′には様々な形態を含めることが可能であり、例えば画像データ、それ自体が金銭的価値を持つようなデータなどが挙げられる。第２の実施形態では、ユーザ装置２０−ｊにおける多重暗号化の際に、順次復号すべき復号サーバ装置のサーバ識別情報（ヘッダ情報）ＨＥＤＤを付けたが、匿名通信路を構成する復号サーバ装置の順番が予め決っている場合はサーバ識別情報（ヘッダ情報）を省略できる。またセンタ２３がデータＭＳＧｊに対する応答を必要としない場合はユーザ装置２０−ｊにおいてＶ′０，ｊの生成を省略すればよい。
【００３４】
課題を解決するための手段の項で説明したことから明らかなように、第１の実施形態においても、サーバ識別情報（第２の実施形態におけるヘッダ情報）を用いることにより、匿名通信路の経路をユーザ自身で選択できるようにすることができる。同様に第１の実施形態においても、課題を解決するための手段の項で説明したように、双方向通信を行わせることもできる。この双方向通信は、ユーザ１９−ｊからセンタ２３への送信情報に対し、センタ２３から応答をユーザ１９−ｊに行う場合に限らず、センタ２３の復号サーバ装置２４からユーザ１９−ｊのユーザ装置２０−ｊへ情報を送信し、ユーザ１９−ｊのユーザ装置２０−ｊからその情報に対する応答をセンタの復号サーバ装置２４へ送信する場合にも適用できる。この場合に匿名通信路に用いる復号サーバ装置の順を任意に選ぶ場合は、センタ２３が復号サーバ装置２４で、ユーザ装置２０−ｊで図７のステップＳ３によりＶ′i，ｊとＶi′，ｊを計算したように、これと対応するものを生成して、最初の復号サーバ装置よりユーザ装置２０−ｊへ向けて送信すればよい。
【００３５】
第２の実施形態においても、第１の実施形態と同様に、ユーザ装置−復号サーバ装置間、２つの復号サーバ装置間の組情報送信を公開掲示板装置と電子的公開掲示板を介して行ってもよい。鍵識別情報としてはＦｋ（Ｋｉ，ｊ）に限らない、何れの鍵識別情報を用いても、複数回の通信を行う場合は、その個々の通信の間に対応関係が付かないように鍵の使用ごとに鍵情報の更新を行う。
第１の実施形態、第２の実施形態におけるユーザ装置及び復号サーバ装置間の各関数演算部は図１７に示すように機能構成として、べき乗演算部、関数Ｌ演算部、共通鍵暗号演算部、一方向性関数Ｆ演算部、関数Ｈ演算部、署名生成／検証演算部を含むものである。
【００３６】
図３、図８及び図１６に示した各ユーザ装置をコンピュータによりプログラムを実行させて機能させることもできる。この場合は、図２又は図７のみ又は図７及び図１５に示した処理手順をコンピュータに実行させるための匿名通信のユーザ装置プログラムをＣＤ−ＲＯＭ、可撓性磁気ディスクなどの記録媒体からユーザ装置のコンピュータにインストールし、又は通信回線を介してダウンロードしてそのプログラムを実行させればよい。
同様に図５、又は図１０、図１２、図１３及び図１４に示した各復号サーバ装置を、コンピュータにより、匿名通信の復号サーバ装置プログラムを実行させて機能させることもできる。
【００３７】
【発明の効果】
第１の効果は、復号サーバ装置の１つがシステムダウンしたり、不正を働いたことにより排除する場合にユーザ装置が共通鍵を作るための鍵情報を作り直す必要がない。その理由は各復号サーバ装置がそれぞれ独立に、ユーザ装置が鍵を作るための鍵情報を生成し、この鍵情報を用いてユーザ装置は共通鍵を作ることができるからである。
第２の効果は、多重暗号化の際に各暗号文にそれを復号するためのサーバ識別情報を付加する場合は、ユーザは自由に匿名通信経路を選択できることにある。
【００３８】
その理由は、本発明では復号サーバ装置は事前処理を他復号サーバ装置と協力することなく行うことができるためである。またユーザが自由に匿名通信路を選択できることは同時に匿名性の信頼度は多少落ちてもできるだけ早くレスポンス（応答）を必要とする場合や、匿名性を最重要視する場合などをユーザ自身が選択できる。
第３の効果は、ネットワーク上で情報閲覧やコンテンツサービスなどの双方向の通信を匿名で行うことができることにある。
【００３９】
その理由は、本発明ではユーザ装置から復号サーバ装置への経路ではユーザ装置が多重暗号を施すのに加え、復号サーバ装置からユーザ装置への経路ではユーザ装置が多重暗号文を一括して復号しているためである。
【図面の簡単な説明】
【図１】第１の実施形態が適用されるシステム構成例を示す図。
【図２】第１の実施形態におけるユーザ装置の処理手順の例を示す流れ図。
【図３】第１の実施形態におけるユーザ装置の機能構成例を示す図。
【図４】第１の実施形態における復号サーバ装置の処理手順の例を示す流れ図。
【図５】第１の実施形態における復号サーバ装置の機能構成例を示す図。
【図６】第２の実施形態が適用されるシステム構成例を示す図。
【図７】第２の実施形態におけるユーザ装置の処理手順の例を示す流れ図。
【図８】第２の実施形態におけるユーザ装置の機能構成例を示す図。
【図９】第２の実施形態における復号サーバ装置２１の処理手順の例を示す流れ図。
【図１０】第２の実施形態における復号サーバ装置２１の機能構成例を示す図。
【図１１】第２の実施形態における復号サーバ装置２４の処理手順の例を示す流れ図。
【図１２】第２の実施形態における復号サーバ装置２４の機能構成例を示す図。
【図１３】第２の実施形態における復号サーバ装置２１の応答通信に対する処理手順の例を示す流れ図。
【図１４】第２の実施形態における復号サーバ装置２１の応答通信における入出力状態を示す図。
【図１５】第２の実施形態におけるユーザ装置の応答通信に対する処理手順の例を示す図。
【図１６】第２の実施形態におけるユーザ装置の応答通信における入出力状態を示す図。
【図１７】第１，第２の実施形態におけるユーザ装置及び復号サーバ装置内の関数演算部の機能構成例を示す図。
【図１】
0004098510.tif 000002
【図２】
0004098510.tif 000003
【図３】
0004098510.tif 000004
【図４】
0004098510.tif 000005
【図５】
0004098510.tif 000006
【図６】
0004098510.tif 000007
【図７】
0004098510.tif 000008
【図８】
0004098510.tif 000009
【図９】
0004098510.tif 000010
【図１０】
0004098510.tif 000011
【図１１】
0004098510.tif 000012
【図１２】
0004098510.tif 000013
【図１３】
0004098510.tif 000014
【図１４】
0004098510.tif 000015
【図１５】
0004098510.tif 000016
【図１６】
0004098510.tif 000017
【図１７】
0004098510.tif 000018