(57)【要約】【課題】入力の数値が暗号化された状態で関数計算する秘密計算装置に頑強性を付加する。【解決手段】各暗号文変換装置に証明手段を付随させ、また、それとは独立に検証装置を設置する。暗号文変換装置の証明手段は、当該暗号文変換装置の入出力が所定の命題を満たしていることについてのゼロ知識証明を検証装置に行う。検証装置は該ゼロ知識証明を検証し、検証成功／不成功を暗号文変換装置や制御装置に送信する。暗号文変換装置や制御装置は、検証不成功の通知を受けた場合、直近の検証に成功した状態に戻して計算をやり直す。【選択図】図１
2006203829.tif 000002
【特許請求の範囲】
【請求項１】
ある有限体上で定義された楕円曲線の有理点からなる群をＧとし、ＰをＧの元とし、Ｐの位数をｐとし、秘密鍵ｘ∈｛１,…,ｐ｝に対してＱ＝ｘＰとし、（Ｇ,ｐ,Ｐ,Ｑ）を公開鍵とし、
平文ａ∈｛０,１｝を暗号化する暗号関数Ｅが
Ｅ（ａ,ｒ）＝（Ａ,Ｂ）＝（Ｐ（ｒ＋ａ），Ｑｒ）
と定義され（ｒは１以上ｐ以下の乱数）、
平文ａ∈｛０,１｝を平文［ａ］∈｛−１,１｝に対応する暗号文に変換し、暗号文Ｅ（［ａ］，ｒ），Ｅ（［ｂ］，ｓ）から［ａ＊ｂ］∈｛−１,１｝（＊は排他的論理和を意味するとする。以下、同様）の暗号文を計算する秘密計算方法において、
ネットワークで結ばれた、制御装置、複数の暗号文変換装置、複数の復号装置および検証装置を備え、
第１の暗号文変換装置が制御装置から、Ｅ（ａ,ｒ）（＝（Ａ,Ｂ））とＥ（ｂ,ｓ）（＝（Ｘ,Ｙ））を入力として、ランダムビットｅ1および１以上ｐ以下の乱数ｔ1,ｕ1を生成し、暗号文（Ａ′,Ｂ′），（Ｘ′,Ｙ′）を
【数１】
2006203829.tif 000008
により計算して、該暗号文（Ａ′,Ｂ′），（Ｘ′,Ｙ′）を第２の暗号文変換装置および検証装置に送信し、且つ、該暗号文（Ａ′,Ｂ′），（Ｘ′,Ｙ′）が［数１］の関係を満たしていることを検証装置にゼロ知識証明し、
第２の暗号文変換装置は、暗号文（Ａ′,Ｂ′），（Ｘ′,Ｙ′）を入力として、ランダムビットｅ2および１以上ｐ以下の乱数ｔ2,ｕ2を生成し、暗号文（Ａ″,Ｂ″），（Ｘ″,Ｙ″）を、
【数２】
2006203829.tif 000009
により計算して、を複数の復号装置に送信し、（Ｘ″,Ｙ″）を制御装置に送信し、（Ａ″,Ｂ″）およびを検証装置に送信し、且つ、該暗号文（Ａ″,Ｂ″），（Ｘ″,Ｙ″）が［数２］の関係を満たしていることを検証装置にゼロ知識証明し、
複数の復号装置は、（Ａ″,Ｂ″）を入力として分散復号を行って、当該処理結果を制御装置に送信し、
制御装置は複数の復号装置の処理結果から復号結果［ｃ］∈｛−１,１｝を得て、１以上ｐ以下の乱数ｗを生成し、暗号文（Ｃ，Ｄ）を
（Ｃ，Ｄ）＝（Ｘ″［ｃ］,Ｙ″［ｃ］）
により計算して、該（Ｃ，Ｄ）を平文［ａ＊ｂ］に対する暗号文と認識し、
検証装置は、各暗号文変換装置によるゼロ知識証明を検証して、逐次、暗号文変換装置や制御装置に対して検証成功あるいは不成功を送信し、
暗号文変換装置や制御装置は、検証不成功を受信すると、直前の状態に戻して計算を続行せしめることを特徴とする秘密計算方法。
【請求項２】
請求項１記載の秘密計算方法において、
第１あるいは第２の暗号文変換装置を証明者、検証装置を検証者として、下記プロトコル１を用いて、（Ａ′,Ｂ′），（Ｘ′,Ｙ′）あるいは（Ａ″,Ｂ″），（Ｘ″,Ｙ″）が［数１］あるいは［数２］の関係を満たしていることをゼロ知識証明する、
【数３】
2006203829.tif 000010
ことを特徴とする秘密計算方法。
【請求項３】
請求項１記載の秘密計算方法において、
第１あるいは第二の暗号文変換装置を証明者、検証装置を検証者として、下記プロトコル３を用いて、（Ａ′,Ｂ′），（Ｘ′,Ｙ′）あるいは（Ａ″,Ｂ″），（Ｘ″,Ｙ″）が［数１］あるいは［数２］の関係を満たしていることをゼロ知識証明する、
【数４】
2006203829.tif 000011
ことを特徴とする秘密計算方法。
【請求項４】
請求項１乃至３のいずれか１項に記載の秘密計算方法において、複数組の（Ａi,Ｂi）,（Ｘi,Ｙi）（ｉ＝１,２,…,ｎ）を順次入力して、複数組の［ａi＊ｂi］の暗号文をパイプライン形式に順次計算することを特徴とする秘密計算方法。
【請求項５】
ネットワークで結ばれた、一つあるいは複数の暗号文生成装置、制御装置、複数の暗号文変換装置、複数の復号装置および検証装置を具備し、請求項１乃至４のいずれか１項に記載の秘密計算方法を実施することを特徴とする秘密計算システム。
【請求項６】
請求項１乃至４に記載の秘密計算方法をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報セキュリテイの技術分野に関し、特に暗号技術を応用し、関数への入力値を知ることなく、当該関数の計算および出力結果の取得を可能とする技術に関する。
【背景技術】
【０００２】
従来、関数への入力値を知ることなく、当該関数の計算および出力結果の取得を可能とする手段としては、例えば、非特許文献１で提案されている技術（以降これをＳＴ０４と略記する）がある。ＳＴ０４を用いれば、ある（複数の）数値に対して、ある暗号アルゴリズムを用いて変換することで当該数値を秘匿し、当該変換された数値を入力として、ある複数の装置が計算に協力することで、入力の（元の）数値を漏らすことなく関数の出力結果を得ることができる。更に出力結果の正当性、すなわち各装置が正しい処理を行ったかどうかを検証することもできる。以降、関数への入力値を知ることなく、当該関数の計算および出力結果の取得が可能な方法を便宜上、秘密計算方法と呼ぶことにする。
【０００３】
ＳＴO4では、非特許文献１の中で明記している暗号アルゴリズムＥに対して、ａ，ｂ（ａ，ｂは０または１のどちらかであるとする）の暗号文Ｅ（ａ），Ｅ（ｂ）が与えられれば、ある複数の装置が計算に協力することで、ａ，ｂを知らなくともａ＋ｂの暗号文Ｅ（ａ＋ｂ）、および暗号文Ｅ（ａ＊ｂ）を求めることができる。便宜上、ここで「＊」は排他的論理和を意味するとする。「＋」は論理和である。また、例えば非特許文献２で提案されている分散復号技術を用いることで、一定数以上の装置が復号計算に協力した暗号文（例えばＥ（ａ＋ｂ）やＥ（ａ＊ｂ））に限り復号できる。
【０００４】
【非特許文献１】Ｂ．Ｓchoenmakers  and  Ｐ．Ｔuyls，“Ｐractical  Ｔwo‐Ｐarty  Ｃomputation  based  on  the  Ｃonditional  Ｇates，”ＡＳＩＡＣＲＹＰＴ  ２００４，Ｄec．２００４．
【非特許文献２】Ｔ.Ｒ.Ｐedersen,“Ａ  threshold  cryptosystem  without  a  trusted  party,”Ａdvances  in  Ｃrytology−ＥＵＲＯＣＲＹＰＴ  ’91,ＬＮＣＳ  ５４７,pp.５２２−５２６,Ｓpringer−Ｖerlag,１９９１.
【発明の開示】
【発明が解決しようとする課題】
【０００５】
０または１からなる入力の数値が暗号化された状態のまま、当該数値の加算および排他的論理和の結果（の暗号文）を求めることができれば、当該数値の論理和（ＯＲ）および論理積（ＡＮＤ）の結果（の暗号文）を求めることができる。すなわち、理論的には、入力の数値が暗号化された状態のまま多くの関数を計算できることになる。この機能を秘密計算と呼ぶことにする。
【０００６】
従来より公知のＳＴ０４の技術では秘密計算を実現するために、一定の手続きの計算を行って入出力する多数の計算装置を設置し、暗号文を入力して計算して出力して他の計算装置に転送する過程を繰り返す。また、その過程で誤り等を検出すればやり直す。
この途中の計算に誤り、ないし虚偽の出力があった場合、その状況を検出してその場で誤りを排除可能である性質は、実用上の効率の観点から重要である。この性質を頑強性と呼ぶことにする。しかしながら、ＳＴ０４の技術においては、計算の過程の一部で正しくない入出力が行われたとき、計算全体をやり正す必要がある問題がある。すなわち、ＳＴ０４の技術に基づく秘密計算方式は頑強とはいえない。
【０００７】
本発明の課題は、ＳＴ０４の方式による秘密計算機能を実装する装置やシステムに頑強性を付加することである。
【課題を解決するための手段】
【０００８】
はじめに、ＳＴ０４による秘密計算方式について説明する。
Ｇをある有限群とし、ＰをＧの元とする。Ｇの位数をｐとする。そして秘密鍵ｘ∈｛１，…，ｐ｝に対してＱ＝ｘＰとし、（Ｇ，ｐ，Ｐ，Ｑ）を公開鍵とする。
このとき、平文ａを暗号化する暗号関数Ｅを次のように定義する。
Ｅ（ａ，ｒ）＝（Ａ，Ｂ）＝（Ｐ（ｒ＋ａ），Ｑｒ）
ここでｒは１以上ｐ以下の乱数である。
ａとして０または１のいずれかをとり、平文ａを暗号化した暗号文を、所定の方式により、それぞれ−１あるいは１の平文［ａ］に対応する暗号文に変換する。
【０００９】
つぎに、以下のようにして［ａ］∈｛−１，１｝としてＥ（［ａ］，ｒ），Ｅ（［ｂ］，ｓ）から［ａ＊ｂ］∈｛−１，１｝の暗号文を求める。
先ず、暗号文変換装置が制御装置より（Ｇ，ｐ，Ｐ，Ｑ），Ｅ（ａ，ｒ）（＝（Ａ，Ｂ）），Ｅ（ｂ，ｓ）（＝（Ｘ，Ｙ））を入力として以下の処理を行う。
１．ランダムビットｅおよび１以上ｐ以下の乱数ｔ，ｕを生成する。
２．以下に従って（Ａ′，Ｂ′），（Ｘ′，Ｙ′）を求め、それを複数の復号装置に送信する。
【００１０】
【数１】
2006203829.tif 000003
上記（Ａ，Ｂ），（Ｘ，Ｙ）から（Ａ′，Ｂ′），（Ｘ′，Ｙ′）を求める操作を暗号文変換装置（１）が行う。同様の操作を暗号文変換装置（２）が行い（Ａ′，Ｂ′），（Ｘ′，Ｙ′）を入力として（Ａ″，Ｂ″），（Ｘ″，Ｙ″）を出力する。
【００１１】
ＳＴ０４では一般に複数台の暗号文変換装置が上記操作を順に繰り返すことにより、計算秘密を実現している。ここでは簡単のために暗号文変換装置は２台として説明する。
次に複数の復号装置が（Ａ″，Ｂ″）を入力として分散復号を行い、当該処理結果を制御装置に送信することで、制御装置は（Ａ″，Ｂ″）の復号結果［ｃ］∈｛−１，１｝を得る（このときｃ＝ａ＊ｅが成り立つ）。一方、（Ｘ″，Ｙ″）は平文［ｂ＊ｅ］に対する暗号文となる。
【００１２】
制御装置は、当該復号結果［ｃ］∈｛−１，１｝について以下の処理を行う。
１．１以上ｐ以下の乱数ｗを生成する。
２．以下に従って（Ｃ，Ｄ）を求める。
（Ｃ，Ｄ）＝（Ｘ″［ｃ］，Ｙ″［ｃ］）
このとき（Ｃ，Ｄ）は平文［ａ＊ｂ］に対する暗号文となる。最初にＥ（ａ，ｒ）からＢ（［ａ］，ｒ）を計算した手続きを逆にこたどることにより、Ｅ（ａ＊ｂ，ｒ′）を得ることができる。
【００１３】
本発明によるＳＴ０４の方式に対する頑強性の付与は、検証装置を新規に設置し、暗号文変換装置が（Ａ，Ｂ），（Ｘ，Ｙ）から（Ａ′，Ｂ′），（Ｘ′，Ｙ′）や、（Ａ′，Ｂ′），（Ｘ′，Ｙ′）から（Ａ″，Ｂ″），（Ｘ″，Ｙ″）などを求める換作を行う際に、そのつど入出力の正当性をゼロ知識証明によって検証装置に対して証明することを特徴とする。そのために、暗号文変換装置には付随して証明装置（証明手段）を設置する。
【００１４】
暗号変換装置に付随する照明装置（証明手段）は、当該暗号文変換装置の入出力が所定の命題を満たしていることについての、ゼロ知識証明を行う。検証装置は、証明装置と対になりゼロ知識証明を検証する。証明と検証の方式の詳細は実施の形態で説明する。
【００１５】
検証装置は、制御装置とも接続され、証明の検証に成功しなかった場合は、その情報を制御装置に送信する。制御装置は、検証不成功の通知を受けた場合、直近に検証に成功した状態に戻して計算をやり直すことができるようにする。なお、検証装置は、検証の成功／不成功を後段の暗号文変換装置や復号装置に直接送信することも可能である。後段の暗号分変換装置や復号装置は、検証成功を受け取った場合のみ処理を実行する。
【発明の効果】
【００１６】
本発明の秘密計算方法によれば、暗号文変換装置が正しくない入出力を行った場合、その影響が他の装置の入出力の全体に影響することを防止でき、ＳＴ０４の方式による秘密計算装置やシステムに対して頑強性を付与することができる。
【発明を実施するための最良の形態】
【００１７】
以下、本発明の実施の形態について図面を用いて詳細に説明する。
【００１８】
［第１の実施の形態］
第１の実施の形態におけるシステム構成は、図１に示すように、同一のネットワーク１００で結ばれた、１０の暗号文生成装置１,…,Ｎ（Ｎは適当な自然数）、制御装置２０、暗号文変換装置３０（１），３０（２）、復号装置４０（１）,４０（２）、および検証装置５０からなる。ここで復号装置を複数に設定しているのは、復号装置が単一であれば、当該復号装置は入力の数値の暗号文も復号できる権限を持つことになるが、復号装置を複数に設定すれば、分散復号技術を用いて、それら復号装置が結託しない限りは入力の数値を知ることが困難とできるためである。なお、本実施の形態では、簡単に復号装置の数は２としたが、一般に２以上いくつでもよい。暗号文変換装置についても同様であり、その数を増加すればするほど、不正結託による耐性を高めることができるが、ここでは簡単のために２とする。
【００１９】
暗号文変換装置３０（１），３０（２）はそれぞれ証明手段を具備し、当該暗号文変換の入出力が所定の命題を満たしていることについてのゼロ知識証明を行う。検証装置５０は暗号文変換装置３０（１），３０（２）の証明手段と対となりゼロ知識証明を検証し、検証成功／不成功（ＯＫ／ＮＧ）を制御装置２０に通知する。なお、検証装置５０は、暗号文装置３０（１）の検証成功／不成功を次の暗号文変換装置３０（２）に送信し、また、暗号文変換装置３０（２）の検証成功／不成功を復号装置４０（１）、４０（２）に送信することでもよい。
【００２０】
はじめに本実施の形態における復号装置を２つとした場合の公開鍵（Ｇ，ｐ，Ｐ，Ｑ）の生成について、図２の処理シーケンス図を参照して説明する。
制御装置２０は、有限体および楕円曲線を生成するためのパラメータを与えることで有限体および楕円曲線をそれぞれ一つずつ決定し（Ｓ１０１）、更に当該有限体上で定義された当該楕円曲線の有理点からなる群Ｇを決定する（Ｓ１０２）。また、Ｇの元を一つ選び、これをＰとする（Ｓ１０３）。次に、Ｐの位数ｐを計算する（Ｓ１０４）。そして、（Ｇ,ｐ,Ｐ）の組を復号装置４０（ｉ）（ｉ＝１,２）に送信する。
【００２１】
復号装置４０（ｉ）は、（Ｇ,ｐ,Ｐ）を入力として、１以上ｐ以下の乱数ｘiを生成後、Ｑi＝ｘiＰを計算し、Ｑiを制御装置２０に送信する（Ｓ１０５〜Ｓ１０８）。ここでは、復号装置４０（１）は乱数ｘ1を生成し（Ｓ１０５）、Ｑ1＝ｘ1Ｐを計算して（Ｓ１０６）、当該Ｑ1を制御装置２０に送信し、また、復号装置４０（２）は乱数ｘ2を生成し（Ｓ１０７）、Ｑ2＝ｘ2Ｐを計算して（Ｓ１０８）、Ｑ２を制御装置２０に送信する。
【００２２】
制御装置２０は、Ｑ＝Ｑ1＋Ｑ2を計算し（Ｓ１０９）、（Ｇ,ｐ,Ｐ,Ｑ）を公開する（Ｓ１１０）。
【００２３】
以上の準備の下、ＳＴ０４による秘密計算方式と共に本実施の形態の検証方式の詳細について説明する。
平文ａ∈｛０,１｝を暗号化する暗号関数Ｅは、先に述べたように
Ｅ（ａ,ｒ）＝（Ａ,Ｂ）＝（Ｐ（ｒ＋ａ）,Ｑｒ）
と定義される。ここでｒは１以上ｐ以下の乱数である。
【００２４】
図３（Ａ），（Ｂ）に本実施の形態における全体処理シーケンス例を示す。ここで、各装置は（Ｇ,ｐ,Ｐ,Ｑ）を保持しているとする。また、ａ,ｂ∈｛０,１｝の暗号文Ｅ（ａ,ｒ）（＝（Ａ,Ｂ））,Ｅ（ｂ,ｓ）（＝（Ｘ,Ｙ））は、暗号文生成装置１０（ｉ）,（ｊ）から制御装置２０へ事前に与えられているとする。
【００２５】
先ず、制御装置２０は、Ｅ（ａ,ｒ）（＝（Ａ,Ｂ））とＥ（ｂ，ｓ）（＝（Ｘ，Ｙ））を暗号文変換装置３０（１）へ送信する。暗号文変換装置３０（１）はＥ（ａ,ｒ）（＝（Ａ,Ｂ））とＥ（ｂ，ｓ）（＝（Ｘ，Ｙ））を入力とし、以下の処理を行う。
１．ランダムビットｅ1および１以上ｐ以下の乱数ｔ1，ｕ1を生成する（Ｓ２０１）。
２．以下の［数２］に従って暗号文（Ａ′,Ｂ′），（Ｘ′,Ｙ′）を求め（Ｓ２０２）、当該暗号文（Ａ′,Ｂ′），（Ｘ′,Ｙ′）を暗号文変換装置３０（２）および検証装置５０に送信する。
【００２６】
【数２】
2006203829.tif 000004
３．（Ａ′,Ｂ′），（Ｘ′,Ｙ′）が［数２］の関係を満たしていることを検証装置５０にゼロ知識証明する（Ｓ２０３，Ｓ２０４）。
【００２７】
ゼロ知識証明は、文献「Ｒ.Ｃramer,Ｉ.Ｄamgard  and  Ｂ.Ｓchoenmakers,“Ｐroofs  of  partialknowledge  and  Ｓimplified  design  of  withss  hiding  protocols,”Ａcvances  in  Ｃryptology−ＣＲＹＰＴＯ  ′９４」ＬＮＣＳ  ８３９,pp．１７４−１８７,Ｓpringer−Ｖerlag,１９９４．」（以下、非特許文献３と称す）および文献「Ｄ.Ｌ.Ｃhaum  and  Ｔ.Ｐ.Ｐedersen“Ｗallet  databases  with  observers,”Ａcvances  in  Ｃryptology−ＣＲＹＰＴＯ  ’92,ＬＮＣＳ  ７４０,pp.８０−１０５,Ｓpringer−Ｖerlag,１９９３」（以下、非特許文献４と称す）の方法を組み合わせて行うとする。
【００２８】
暗号文変換装置３０（１）（の証明手段）は、（Ａ′,Ｂ′），（Ｘ′,Ｙ′）が［数１］の関係を満たす（正規の手続きで計算されている）ことを示すためには、（Ａ，Ｂ）に対する計算と（Ｘ，Ｙ）に対する計算では共通のｅ１が用いられていることから、
［命題１］
「（Ａ′,Ｂ′）＝（ＡＰｔ1，ＢＱｔ1）かつ（Ｘ′,Ｙ′）＝（ＸＰｕ1,ＹＱｕ1）」
または
「（Ａ′,Ｂ′）＝（Ａ−1Ｐｔ1，Ｂ−1Ｑｔ1）かつ（Ｘ′,Ｙ′）＝（Ｘ−1Ｐｕ1,Ｙ−1Ｑｕ1）」
であることを証明することが必要十分である。
【００２９】
［命題１］は次の［命題１′］と同値である。
［命題１′］
「(Ａ′,Ｂ′)＝(ＡＰｔ1，ＢＱｔ1)かつ(Ａ′,Ｂ′)＝(Ａ−1Ｐｔ1，Ｂ−1Ｑｔ1)」
かつ
「(Ａ′,Ｂ′)＝(ＡＰｔ1，ＢＱｔ1)または(Ｘ′,Ｙ′)＝(Ｘ−1Ｐｕ1,Ｙ−1Ｑｕ1）」
かつ
「(Ｘ′,Ｙ′)＝(ＸＰｕ1,ＹＱｕ1)または(Ａ′,Ｂ′)＝(Ａ−1Ｐｔ1，Ｂ−1Ｑｔ1）」
かつ
「(Ｘ′,Ｙ′)＝(ＸＰｕ1,ＹＱｕ1)または(Ｘ′,Ｙ′)＝(Ｘ−1Ｐｕ1,Ｙ−1Ｑｕ1）」
【００３０】
［命題１′］のゼロ知識証明を与えるために、まず、以下で与える［プトロコル１］を定義する。これは［非特許文献３］および［非特許文献４］の方法を組み合わせて得られる。
【００３１】
［プロトコル１］は、Ｐを底としたＰ0の離散対数とＱを底としたＱ0の離散対数が等しい、あるいは、Ｐを底としたＰ1の離散対数とＱを底としたＱ1の離散対数が等しいことを、ゼロ知識証明技術を用いて証明するプロトコルである。
【００３２】
【数３】
2006203829.tif 000005
【００３３】
暗号文変換装置３０（１）は、［命題１′］のゼロ知識証明を、下記の手続きにより上記［プトロコル１］を４回実行して得て、証明を暗号文の出力とともに検証装置５０に送信する（Ｓ２０３）。
［証明１］
「（Ａ′，Ｂ′）＝（ＡＰｔ１，ＢＱｔ１）または
（Ａ′，Ｂ′）＝（Ａ−１Ｐｔ１，Ｂ−１Ｑｔ１）」
を［プロトコル１］を用いて証明。すなわち、［プロトコル１］において、
（（Ｇ，ｐ，Ｐ，Ｑ），（Ｐ０，Ｑ０），（Ｐ１，Ｑ１））
←（（Ｇ，ｐ，Ｐ，Ｑ），（Ａ′/Ａ，Ｂ′/Ｂ），（ＡＡ′,ＢＢ′/Ｑ））と代入すればよい。
［証明２］
「（Ａ′，Ｂ′）＝（ＡＰｔ１，ＢＱｔ１）または
（Ｘ′，Ｙ′）＝（Ｘ−１Ｐｕ１，Ｙ−１Ｑｕ１）」
を［プロトコル１］を用いて証明。すなわち、［プロトコル１］において、
（（Ｇ，ｐ，Ｐ，Ｑ），（Ｐ０，Ｑ０），（Ｐ１，Ｑ１））
←（（Ｇ，ｐ，Ｐ，Ｑ），（Ａ′/Ａ，Ｂ′/Ｂ），（ＸＸ′,ＹＹ′））と代入すればよい。
［証明３］
「（Ｘ′，Ｙ′）＝（ＸＰｕ１，ＹＱｕ１）または
（Ａ′，Ｂ′）＝（Ａ−１Ｐｔ１，Ｂ−１Ｑｔ１）」
を［プロトコル１］を用いて証明。すなわち、［プロトコル１］において、
（（Ｇ，ｐ，Ｐ，Ｑ），（Ｐ０，Ｑ０），（Ｐ１，Ｑ１））
←（（Ｇ，ｐ，Ｐ，Ｑ），（Ｘ′/Ｘ，Ｙ′/Ｙ），（ＡＡ′,ＢＢ′））と代入すればよい。
［証明４］
「（Ｘ′，Ｙ′）＝（ＸＰｕ１，ＹＱｕ１）または
（Ｘ′，Ｙ′）＝（Ｘ−１Ｐｕ１，Ｙ−１Ｑｕ１）」
を［プロトコル１］を用いて証明。すなわち、［プロトコル１］において、
（（Ｇ，ｐ，Ｐ，Ｑ），（Ｐ０，Ｑ０），（Ｐ１，Ｑ１））
←（（Ｇ，ｐ，Ｐ，Ｑ），（Ｘ′/Ｘ，Ｙ′/Ｙ），（ＸＸ′,ＹＹ′））と代入すればよい。
【００３４】
証明を受信した検証装置は、４回の証明すべてについてそれぞれ［プロトコル１］にしたがって検証して、すべてが［プロトコル１］の証明として受理される場合に限って、証明を受理する（Ｓ２０４）。それ以外の場合には、制御装置２０に対して、証明不受理の信号を送信する。証明不受理の信号を受けた制御装置２０は、直近に証明を受理した状態に戻して計算を実行するようにする。
【００３５】
ここでは、検証装置５０は暗号文変換装置３０（１）の当該証明事項を受理したとして話を進める。
検証装置５０が暗号文変換装置３０（１）の当該証明事項を受理したなら、暗号文変換装置３０（２）は（Ａ′,Ｂ′），（Ｘ′,Ｙ′）を入力とし、以下の処理を行う。
１．ランダムビットｅ2および１以上ｐ以下の乱数ｕ2，ｔ2を生成する（Ｓ２０５）。
２．以下の［数４］に従って暗号文を求め（Ｓ２０６）、復号装置４０（１）,（２）にｆ（Ａ″,Ｂ″）を送信し、検証装置５０には（Ａ″,Ｂ″），（Ｘ″,Ｙ″）送信する。また、（Ｘ″,Ｙ″）を制御装置２０に送信する。
【００３６】
【数４】
2006203829.tif 000006
３．（Ａ″,Ｂ″），（Ｘ″,Ｙ″）が［数４］の関係を満たしていることを検証装置５０にゼロ知識証明する（Ｓ２０７，Ｓ２０８）。
ここで、当該ゼロ知識証明は、先の［数２］に対する場合と同様であるので省略する。すなわち、先のｕ１，ｔ１をｕ２，ｔ２と置き替えるだけでよい。
【００３７】
ここでは、検証装置５０は暗号文変換装置３０（２）の当該証明事項を受理したとして話を進める。
【００３８】
検証装置５０が暗号文変換装置３０（２）の当該証明事項を受理したなら、復号装置４０（１）は（Ａ″,Ｂ″）を入力とし、ｘ1Ａ″を計算し、それを制御装置２０に送信する（Ｓ２０９）。同様に、復号装置４０（２）は（Ａ″,Ｂ″）を入力とし、ｘ2Ａ″を計算し、それを制御装置２０に送信する（Ｓ２１０）。
【００３９】
制御装置２０は、復号装置４０（１）、（２）から当該計算結果を受信することで、（Ａ″,Ｂ″）の復号結果［ｃ］を得る（このとき、ｃ＝ａ＊ｂが成り立つ）（Ｓ２１１）。一方、（Ｘ″,Ｙ″）は平文［ｂ＊ｅ］に対する暗号文となる。その後、制御装置２０は、当該復号結果［ｃ］∈｛−１,１｝について、次式に従って暗号文（Ｃ,Ｄ）を求める（Ｓ２１２）。
（Ｃ，Ｄ）＝（Ｘ″［ｃ］,Ｙ″［ｃ］）
【００４０】
このとき（Ｃ，Ｄ）は平文［ａ＊ｂ］∈｛−１，１｝に対する暗号文となる。制御装置２０は、必要に応じて（Ｃ，Ｄ）を出力する（Ｓ２１３）。ここで、最初にＥ（ａ，ｒ）からＥ（［ａ］，ｒ）を計算した手続きを逆にたどることにより、Ｅ（ａ＊ｂ，ｒ′）を得ることができる。
【００４１】
［第２の実施の形態］
第２の実施の形態におけるシステム構成は、第１の実施の形態と同様であり、図１に示すように同一のネットワーク１００で結ばれた、暗号文生成装置１０（１）,…,（Ｎ）、制御装置２０、暗号文変換装置３０（１）,（２）、復号装置４０（１）,（２）、および検証装置５０からなる。また、シーケンスも基本的に同様である（図２、図３）。
【００４２】
第１の実施の形態と第２の実施の形態の異なる点は、暗号文変換装置３０（１）、３０（２）と検証装置５０によるゼロ知識証明方式にある。以下では、暗号文変換装置３０（１）（の証明手段）と検証装置５０によるゼロ知識証明処理を述べるが、暗号文変換装置３０（２）と検証装置５０によるゼロ知識証明処理も同様である。すなわち、（Ａ，Ｂ），（Ｘ，Ｙ）と（Ａ′,Ｂ′），（Ｘ′,Ｙ′）が（Ａ′,Ｂ′），（Ｘ″,Ｙ″）に置き替わり、ｔ１，ｕ１がｔ２，ｕ２に置き替わるだけである。
【００４３】
第２の実施の形態では、先の［命題１］をゼロ知識証明するために、次の［プロトコル３］を導入する。
［プロトコル３］は、
１．Ｐを底としたＰ0の離散対数とＱを底としたＱ0の離散対数が等しい、かつ、Ｐを底としたＱ0′の離散対数とＱを底としたＱ0′の離散対数が等しい、
または、
２．Ｐを底としたＰ1の離散対数とＱを底としたＱ1の離散対数が等しい、かつ、Ｐを底としたＰ1′の離散対数とＱを底としたＱ1′の離散対数が等しい、
ことをゼロ知識証明技術を用いて証明するプロトコルである。
【００４４】
【数５】
2006203829.tif 000007
【００４５】
暗号文変換装置３０（１）（の証明手段）は、先の［数２］の入出力が［命題１］を満たすことを、［プロトコル３］を用いて検証装置５０に対して証明することができる。すなわち、［プトロコル３］において、
（（Ｇ,ｐ,Ｐ,Ｑ）,（Ｐ0,Ｑ0）,（Ｐ1,Ｑ1）,（Ｐ0′,Ｑ0′）,（Ｐ1′,Ｑ1′），（ｅ，ｔ，ｔ′））←（（Ｇ,ｐ,Ｐ,Ｑ）,（Ａ′/Ａ，Ｂ′/Ｂ）,（ＡＡ′，ＢＢ′）,（Ｘ′/Ｘ，Ｙ′/Ｙ）,（ＸＸ′，ＹＹ′）,（ｅ1，ｔ1，ｕ1））
と代入すればよい。
【００４６】
以上、本発明の実施の形態を説明したが、さらに、復号装置４０（１）,（２）を証明者、検証装置５０を検証者として、復号装置４０（１）、４０（２）のｘ1Ａ″,ｘ2Ａ″が正しい計算結果であることをゼロ知識非対話証明技術を用いて証明することも可能とする。
【００４７】
当該証明方法は、具体的にはＰを底としたｘiＰの離散対数、およびＡ″を底としたｘiＡ″の離散対数が等しい（すなわち、ともにｘiとなる）ことを非対話で証明する方法であり、先のゼロ知識証明の基本的な技術により実現可能である。以下にプロトコル例（プトロコル２とする）を示す。
【００４８】
［プロトコル２］
入力：（ｐ,（Ｕ0,Ｖ0）＝（Ｐ,ｘiＰ），（Ｕ1,Ｖ1）＝（Ａ″,ｘiＡ″））
証明者の秘密情報：ｘi
１．証明者は以下に従ってｓ，ｚを計算し、それを検証者に送信する。
（ａ）１以上ｐ以下の乱数ｒを生成する。
（ｂ）Ｒ0＝ｒＵ0,Ｒ1＝ｒＵ1を計算する。
（ｃ）ｓ＝Ｈ（Ｕ0‖Ｖ0‖Ｕ1‖Ｖ1‖Ｒ0‖Ｒ1）を計算する。ここでＨは汎用一方向性ハッシュ関数とし、“‖”はデータの連結を意味する。
（ｄ）ｚ＝ｒ−ｓｘiを計算する。
２．検証者はＲ0′＝ｚＵ0＋ｓＶ0，Ｒ1′＝ｚＵ1＋ｓＶ1を計算後、ｓ＝Ｈ（Ｕ0‖Ｖ0‖Ｕ1‖Ｖ1‖Ｒ0′‖Ｒ1′）が成り立つかどうか検証し、成り立つときのみ当該証明事項を受理する。
【００４９】
復号装置４０（１）および復号装置４０（２）は上記１の（ａ）〜（ｄ）の処理により（ｓ,ｚ）を求め、これを検証装置５０に送信し、検証装置５０が上記２の処理により検証する。
【００５０】
また、本実施の形態では暗号文変換装置が２台の例を挙げたが、暗号文変換装置を３台以上に拡張することも容易である（ただしその方法は明らかであるため省略する）。そして当該拡張により暗号文変換装置の結託に対する耐性が高まる。これは言い換えればａ,ｂの秘匿性を効果的に高めることができる。
【００５１】
なお、図１で示したシステムにおける各部の一部もしくは全部の処理機能をコンピュータのプログラムで構成し、そのプログラムをコンピュータを用いて実行して本発明を実現することができること、あるいは、図２、図３などで示した処理手順をコンピュータのプログラムで構成し、そのプログラムをコンピュータに実行させることができることは言うまでもない。また、コンピュータでその処理機能を実現するためのプログラム、あるいは、コンピュータにその処理手順を実行させるためのプログラムを、そのコンピュータが読み取り可能な記録媒体、例えば、ＦＤ、ＭＯ、ＲＯＭ、メモリカード、ＣＤ、ＤＶＤ、リムーバブルディスクなどに記録して、保存したり、提供したりすることができるとともに、インターネット等のネットワークを通してそのプログラムを配布したりすることが可能である。
【図面の簡単な説明】
【００５２】
【図１】本発明の実施の形態のシステム構成例を示す図。
【図２】公開鍵（Ｇ,ｐ,Ｐ,Ｑ）を生成する処理シーケンス例を示す図。
【図３Ａ】本発明の実施の形態の秘密計算の処理シーケンス例を示す図。
【図３Ｂ】同じく処理シーケンス例を示す図。
【符号の説明】
【００５３】
１０  暗号文生成装置
２０  制御装置
３０  暗号文変換装置
４０  復号装置
５０  検証装置
１００  ネットワーク
【図１】
2006203829.tif 000012
【図２】
2006203829.tif 000013
【図３Ａ】
2006203829.tif 000014
【図３Ｂ】
2006203829.tif 000015