(57)【特許請求の範囲】
【請求項１】
送信者装置及び検証者装置はそれぞれ（ｎ，ｇ）（ｎは任意の整数、ｇ∈（Ｚ／ｎＺ）X ）、岡本−内山暗号の公開鍵（ｎi ，ｇi ，ｈi ，ｋ）を共通情報として保持し、かつハッシュ関数Ｈ機能を備え、
送信者装置は乱数ｒを生成し、秘密情報ｓ∈［０，２k ）に対して上記共通情報を用いて暗号化関数ｃ＝ｇis，ｈir mod ｎi 
を演算して暗号データｃを作り、かつ共通情報を用いて秘密情報ｓに対して一方向性関数
ｗ＝ｇs mod ｎ
を演算して関数値ｗを作り、
送信者装置は更に［０，２k ］に属する乱数ｕ、［０，２3k］に属する乱数ｖをそれぞれ生成し、
乱数ｕ，ｖ上記共通情報を用いて
ａ＝ｇiuｈiv mod ｎi 
を演算して演算結果ａを求め、乱数ｕに共通情報を用いて一方向性関数
ｂ＝ｇu mod ｎ
を演算して関数値ｂを求め、
上記演算結果ａと関数値ｂの組に対しハッシュ関数
ｅ＝Ｈ（ａ，ｂ）
を演算してハッシュ値ｅを作り、
上記秘密情報ｓと乱数ｕとハッシュ値ｅを用いて
ｘ＝ｕ−ｅｓ
を計算し、上記乱数ｒとｖとハッシュ値ｅを用いて
ｙ＝ｖ−ｅｒ
を計算し、
上記ｃ，ｗとその証明用情報ｘ，ｙ，ｅを検証者装置へ送信し、
検証者装置は暗号データｃと関数値ｗ及び証明用情報（ｘ，ｙ，ｅ）を受信して、
ｘが［０，２k ］に属することを確認し、
受信データと共通情報を用いて
Ｈ（ｇixｈiyｃe ,ｇx ｗe ）を計算し、この計算結果が受信したｅと、等しいか否かを調べ、等しければ上記暗号データｃの秘密情報ｓと上記一方向性関数値ｗの変数値ｓとが等しいことを保証することを特徴とする検証可暗号方法。
【請求項２】
検証者装置との共通情報ｎ，ｇ，ｎi ，ｇi ，ｈi ，ｋが格納された記憶部と、ｎは任意の整数、ｇ∈（Ｚ／ｎＺ）X ,ｎi ，ｇi ，ｈi ，ｋは岡本−内山暗号の公開鍵、ｎi ＝ｐi2ｑi でｐi ，ｑiは素数であり、
秘密情報ｓと、上記ｇi ，ｈi ，ｎi が入力され、乱数ｒi を生成し、
ｃ＝ｇisｈir mod ｎi 
を計算して暗号データｃを出力する暗号化部と、
上記ｓと上記ｇ，ｎが入力され、
ｗ＝ｇs mod ｎ
を計算して関数値ｗを出力する一方向性関数部と、
上記ｋが入力され、０＜ｕ＜２k を満す乱数ｕを生成する第１乱数生成部と、
上記ｋが入力され、０＜ｖ＜２3kを満す乱数ｖを生成する第２乱数生成部と、
上記乱数ｕとｖ、上記ｇi ，ｈi ，ｎi が入力され、
ａ＝ｇiuｈiv mod ｎi 
を計算して計算結果ａを出力する剰余べき乗乗算部と、
上記乱数ｕと上記ｇ，ｎが入力され、
ｂ＝ｇu mod ｎ
を計算して計算結果ｂを出力する剰余べき乗計算部と、
上記計算結果ａ，ｂが入力され、ハッシュ関数値
ｅ＝Ｈ（ａ，ｂ）
を求めてハッシュ値ｅを出力するハッシュ関数部と、
上記乱数ｕ、上記ハッシュ値ｅ、上記秘密情報ｓが入力され、
ｘ＝ｕ−ｅｓ
を計算して計算結果ｘを出力する第１乗算減算部と、
上記乱数ｖ、上記ハッシュ値ｅ、上記乱数ｒが入力され、
ｙ＝ｖ−ｅｒ
を計算して計算結果ｙを出力する第２乗算減算部と、
上記暗号データｃ、上記関数値ｗ、上記計算結果ｘ，ｙ、上記ハッシュ値ｅを検証者装置へ出力する出力部と、
を具備する検証可暗号送信者装置。
【請求項３】
送信者装置との共通情報ｎ，ｇ，ｎi ，ｇi ，ｈi ，ｋが格納された記憶部と、ｎは任意の整数、ｇ∈（Ｚ／ｎＺ）X ,ｎi ，ｇi ，ｈi ，ｋは岡本−内山暗号の公開鍵、ｎi ＝ｐi2ｑi でｐi ，ｑiは素数であり、
暗号データｃ、関数値ｗ、証明用情報ｘ，ｙ，ｅを受信する受信部と、
上記ｘと上記ｋが入力され、ｘが０＜ｘ＜２k の範囲に属するか否かを判定する判定部と、
上記ｘ，ｙ，ｅ，ｃと上記ｇi ，ｈi が入力され、
ａ′＝ｇixｈiyｃe 
を計算して計算結果ａ′を出力するべき乗乗算部と、
上記ｘ，ｅ，ｗと上記ｇが入力され、
ｂ′＝ｇx ｗe 
を計算して計算結果ｂ′を出力するべき乗計算部と、
上記計算結果ａ′,ｂ′が入力され、ハッシュ関数値
ｅ′＝Ｈ（ａ′，ｂ′）
を計算してハッシュ値ｅ′を出力するハッシュ関数部と、
上記ｅとハッシュ値ｅ′が等しいか否かを比較する比較部と、
上記判定部よりの真を示す出力と、上記比較部よりの真を示す出力が入力されると、上記暗号データｃの復号結果と、上記関数値ｗの逆関数値とが等しいことを示す信号を出力する出力部と、
を具備する検証可暗号検証者装置。
【請求項４】
検証者装置との共通情報ｎ，ｇ，ｎi ，ｇi ，ｈi ，ｋが格納された記憶部を備えた、（ｎは任意の整数、ｇ∈（Ｚ／ｎＺ）X ,ｎi ，ｇi ，ｈi ，ｋは岡本−内山暗号の公開鍵、ｎi ＝ｐi2ｑi でｐi ，ｑiは素数であり）、送信者装置において秘密情報ｓを検証可暗号化するためにコンピュータを、
秘密情報ｓと、上記ｇi ，ｈi ，ｎi を用い、乱数ｒi を生成し、
ｃ＝ｇisｈirmod ｎi 
を計算して暗号データｃを求める手段、
上記ｓと上記ｇ，ｎを用いて
ｗ＝ｇs mod ｎ
を計算して関数値ｗを求める手段、
上記ｋに対し、０＜ｕ＜２k を満す乱数ｕを生成する手段、
上記ｋに対し、０＜ｖ＜２3kを満す乱数ｖを生成する手段、
上記乱数ｕとｖ、上記ｇi ，ｈi ，ｎi を用いて、
ａ＝ｇiuｈiv mod ｎ
を計算して計算結果ａを求める手段、
上記乱数ｕと上記ｇ，ｎを用いて、
ｂ＝ｇu mod ｎ
を計算して計算結果ｂを求める手段、
上記計算結果ａ，ｂの組合せに対し、ハッシュ関数値
ｅ＝Ｈ（ａ，ｂ）
を求めてハッシュ値ｅを出力する手段、
上記乱数ｕ、上記ハッシュ値ｅ、上記秘密情報ｓを用いて、
ｘ＝ｕ−ｅｓ
を計算して計算結果ｘを出力する手段、
上記乱数ｖ、上記ハッシュ値ｅ、上記乱数ｒを用いて、
ｙ＝ｖ−ｅｒ
を計算して計算結果ｙを求める手段、
上記暗号データｃ、上記関数値ｗ、上記計算結果ｘ，ｙ、上記ハッシュ値ｅを検証者装置へ出力する手段、
として機能させるための検証可暗号プログラム。
【請求項５】
送信者装置との共通情報ｎ，ｇ，ｎi ，ｇi ，ｈi ，ｋが格納された記憶部を備えた、（ｎは任意の整数、ｇ∈（Ｚ／ｎＺ）X ,ｎi ，ｇi ，ｈi ，ｋは岡本−内山暗号の公開鍵、ｎi ＝ｐi2ｑi でｐi ，ｑiは素数であり）、検証者装置において受信した検証可暗号を検証するためにコンピュータを、
暗号データｃ、関数値ｗ、証明用情報ｘ，ｙ，ｅを受信する手段、
上記ｘと上記ｋを用いて、ｘが０＜ｘ＜２k の範囲に属するか否かを判定する判定手段、
上記ｘ，ｙ，ｅ，ｃと上記ｇi ，ｈi を用いて、
ａ′＝ｇixｈiyｃe 
を計算して計算結果ａ′を出力する手段、
上記ｘ，ｅ，ｗと上記ｇを用いて、
ｂ′＝ｇx ｗe 
を計算して計算結果ｂ′を出力する手段、
上記計算結果ａ′,ｂ′を用いて、ハッシュ関数値
ｅ′＝Ｈ（ａ′，ｂ′）
を計算してハッシュ値ｅ′を出力する手段、
上記ｅとハッシュ値ｅ′が等しいか否かを比較する比較手段、
上記判定手段よりの真を示す出力と、上記比較手段よりの真を示す出力とから、上記暗号データｃの復号結果と、上記関数値ｗの逆関数値とが等しいことを示す信号を出力する手段、
として機能させるための検証可暗号の検証プログラム。
【請求項６】
請求項４又は５記載のプログラムが記録されたコンピュータが読み出し可能な記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、電気通信システムで同時署名交換方式、鍵寄託暗号方式や電子現金などのプロトコルにおいて使われる認証可暗号方法、その装置、プログラム及びその記録媒体に関する。
【０００２】
【従来の技術】
例えば利用者ＡとＢ間で電気通信を利用して同時署名交換を行う場合、完全に同時に行うことは困難であり、何れかが先になり、利用者Ｂが利用者Ａの署名ＳＡを先に受信したが、利用者Ｂがその署名ＳＢを利用者へ送らないようなことがあっては困る。そこで利用者Ａが署名ＳＡを、例えば調停機関の公開鍵を用いて認証可暗号方法で暗号化して利用者Ｂへ送り、利用者Ｂはその暗号化署名を受信し、その暗号化署名を復号することはできないが、その暗号化署名は署名ＳＡを確に暗号化したものであることを検証することができ、その検証に合格すると、利用者Ｂは自己の署名ＳＢを利用者Ａへ送り、利用者Ａは署名ＳＢを受信した後、自己の署名ＳＡを利用者Ｂへ送る。このようにすれば、利用者Ｂは署名ＳＢを送信後、利用者Ａよりの署名ＳＡが受信されなかった場合は、先に受信した暗号化署名を調停機関へ提出して、署名ＳＡを復号してもらうことができる。
【０００３】
検証可暗号方法は例えばこのようなことに利用されるが、従来、検証可暗号方法として、代表的なものは、文献［１］及び［２］がある。ここでは、特にこの発明と類似した方法である文献［２］のＢａｏの方法について簡単に説明する。Ｂａｏの方法においては、送信者は、秘密情報ｓに対して、
ｃ＝ｇis mod ｎi   ,  ｗ＝ｇs mod ｐ
を作成する。つまりｓを暗号化したデータｃとｓに対し一方向性関数ｆを適用した関数値ｗとを求める。ここで、（ｇi ,ｎi ）は、岡本−内山暗号（文献［３］参照）を簡易化したもののパラメータであり、ｐは素数、ｇ∈（Ｚ／ｐＺ）Xである。（Ｚ／ｐＺ）Xはｐを法とする既約剰余類群を表わす。
【０００４】
Ｄsk（ｃ）＝ｆ-1（ｗ）（実際には、Ｄsk（ｃ）≡±｛ｌｏｇgｗ｝（mod ｐ））であることをｓを明すことなく証明するための証明用情報を作成する。Ｄskはｓに対する暗号化関数と対応する復号関数、ｆ-1は一方向性関数ｆの逆関数を表わす。
即ち送信者はランダムにｕ∈［０，２k ）（［０，２k ）は０＜ｕ＜２k を表わす）を選び、次のａ，ｂを計算する。
ａ＝ｇiu mod ｎi   ,  ｂ＝ｇu mod ｎ
次に、ハッシュ関数Ｈを用いてｅ＝Ｈ（ａ，ｂ）を計算し、次式によりｘを求める。
【０００５】
ｘ＝ｕ−ｅｓ∈Ｚ
ここで∈Ｚは単なる数値を乗算、減算であることを表わす。
送信者はｃとｗに証明用情報（ｘ，ｅ）を付けて検証者へ送信する。
検証者はｃ，ｗ，ｘ，ｅを受信すると、
ｅ′＝Ｈ（ｇix ｗe ,ｇx ｗe ）
を計算し、この計算結果ｅ′が受信したｅと等しいか否かを検証する。ｃ，ｗ，ｘ，ｅが正しいものであれば、ｘ＝ｕ−ｅｓであるからｇix ｗe ＝ｇiu-es（ｇs ）e ＝ａ，ｇx ｗe ＝ｇu-es（ｇs ）e ＝ｂとなり、ｅ＝ｅ′となり、ｃを復号した値ｓと、ｗの逆関数値ｓとが等しいものであることが、検証できる。
【０００６】
【発明が解決しようとする課題】
前記Ｂａｏの方法は、ｃ＝ｇis mod ｎiと岡本−内山暗号を簡易化したものを使っているため、入力ｗ＝ｇs mod ｎと合わせて、秘密情報ｓについての情報が多くもれている可能性がある。
【０００７】
【課題を解決するための手段】
この発明は本来の岡本−内山暗号を使用する。ただ使用するパラメータを多少変更し、その変更にもとづき、この発明の効果が得られる。この変更の点について以下に説明する。
まず従来の岡本−内山暗号では
公開パラメータを（ｎ，ｇ，ｈ，ｋ）とし、秘密パラメータを（ｐ，ｑ，Ｌ（ｇp））とする。ここでｎ＝ｐ2ｑ，ｐ，ｑは素数、ｇは（Ｚ／ｎＺ）Xの元で、ｇを（Ｚ／ｐ2Ｚ）Xの元と考えた時（すなわちｇ^＝ｇ mod ｐ2）ｇ^の位数♯＜ｇ^＞がｐの倍数（すなわちｐ１♯＜ｇ^＞）とならないといけない。さらに、ｈはｈ＝ｇn  mod ｎで定義される。暗号化は次式による。
【０００８】
ＥPKOU（ｍ；ｒ）＝ｇmｈr  mod ｎ
ここで平文ｍ∈｛０，１｝k，乱数ｒ∈｛０，１｝3k 復号は次式による
ＤSKOU（Ｃ）＝Ｌ（Ｃp-1 mod ｐ2）／Ｌ（ｇp）（mod ｐ）
ここでｇp＝ｇp-1 mod ｐ2，Ｌ（ｘ）＝（ｘ−１）／ｐである。
一方の発明では、公開パラメータ、秘密パラメータは岡本−内山暗号のそれらと基本的には同じであるが、以下の制限を付ける。
ｎ＝ｐ2ｑ、ｐ，ｑは素数、すなわち、
ｐ′＝（ｐ−１）／２，ｑ′＝（ｑ−１）／２もまた、素数となるようなものとする。さらに、
♯＜ｇ^＞＝ｐ・ｐ′（ｇ^＝ｇ mod ｐ2）
♯＜ｇ^^＞＝ｑ′（ｇ^^＝ｇ mod ｑ）
になるようにｇ∈（Ｚ／ｎＺ）Xを取る。さらに
ｈ＝ｇnt mod ｎ（ｔ∈｛０，１｝3k）
とし、ｔは秘密として保持する。この結果、Ｂａｏ方法に比べて検証の計算量が増えるが、一方で安全性証明が付くという利点がある。本提案方法では、秘密ｓについての情報が入力ｗ（＝ｇs mod ｎ）から漏れる情報以上は漏れないことが証明できるが、Ｂａｏ方法ではそのようなことは証明できない。
【０００９】
【発明の実施の形態】
図１にこの発明が適用されるシステムの構成例を示す。送信者装置１１は検証者装置１２と通信回線１３を通じて接続されている。送信者装置１１がＩＣカードのようなもので、これに対し、検証者装置１２がＩＣカードが装着される端末のようなものでもよい。
送信者装置１１及び検証者装置１２は（ｎ，ｇ）と（ｎi ，ｇi ，ｈi ，ｋ）を共通にもち、かつ共通のハッシュ関数Ｈ機能を備えている。（ｎ，ｇ）は送信者装置１１の公開鍵であり、ｎは任意整数、ｇ∈（Ｚ／ｎＺ）Xである。（ｎi ，ｇi ，ｈi ，ｋ）は前述した制限を与えた岡本−内山暗号の公開鍵であり、一般には何れの者のものであってもよいが、特化された応用例では送信者装置１１及び検証者装置１２以外の第三者装置の公開鍵であり、例えば前記従来の技術の項で述べた同時署名では調停機関の公開鍵である。ｎi ＝ｐi2ｑi で、ｐi ，ｑiは素数である。ハッシュ関数Ｈは（Ｚ／ｎＺ）Xに属する値と（Ｚ／ｎi Ｚ）Xに属する値とを入力としてｋ′ビットの０，１よりなる値を出力する。ここでｋ，ｋ′（Ｈの出力値サイズ），ｌｏｇ  ｎ（ｎのサイズ）は、
ｋ−（ｌｏｇ  ｎ＋ｋ′）∈Ｏ（ｋ）（ｋのオーダを表わす）
の関係を満たす。例えば推奨値としてはｋ＝１２８０（ｂｉｔ）、ｌｏｇ  ｎ＝１０２４（ｂｉｔ）、ｋ′＝１２８（ｂｉｔ）である。
【００１０】
図２に送信者装置１１の機能構成例を示し、図３にその処理手順の例を示す。送信者装置１１の記憶部１０１には共通情報ｎ，ｇ，ｎi ，ｇi ，ｈi ，ｋが格納されている。秘密情報ｓは入力部１０２を通じ外部から入力され、あるいは送信者装置１１の内部で生成され、又は保持されている。秘密情報ｓが検証可暗号化のために入力されると（Ｓ１）、その秘密情報ｓと公開鍵ｇi ，ｈi ，ｎiが暗号化部１０３へ入力され、暗号化部１０３では内部の乱数生成部１０３ａで乱数ｒを生成し、ｓに対し、次の暗号化演算を行い、暗号化データｃを生成する（Ｓ２）。
【００１１】
ｃ＝ｇisｈir mod ｎi                     （１）
またｓと送信者装置１１の公開鍵ｇ，ｎが一方向性関数部１０４に入力され、次式により一方向性関数値ｗが計算される（Ｓ３）。
ｗ＝ｇs mod ｎ                        （２）
この公開鍵暗号化データｃを復号した値と、一方向性関数値ｗの逆関数値とが等しいことを、秘密情報ｓを明すことなく、かつ非対話形式で検証者装置１２で検証できる証明用情報Ｃをｃとｗに付加して検証者装置１２へ送信する。以下に証明用情報Ｃの生成方法を示す。
【００１２】
送信者装置１１はまずランダムにｕ∈［０，２k ），ｖ∈［０，２3k）を選ぶ、つまり乱数生成部１０５から０＜ｕ＜２k の乱数ｕを生成し、また乱数生成部１０６から０＜ｖ＜２3k の乱数ｖを生成する（Ｓ４）。
これら乱数ｕ,ｖと公開鍵ｇi ,ｈi ,ｎi が剰余べき乗乗算部１０７へ入力されて下記の計算がなされる（Ｓ５）。
ａ＝ｇiuｈiv mod ｎi                     （３）
またｕと公開鍵ｇ,ｎが剰余べき乗計算部１０８に入力されて下記の計算がなされる（Ｓ６）。
【００１３】
ｂ＝ｇu mod ｎ                          （４）
これら計算結果ａ,ｂはハッシュ関数部１０９に入力されて
ｅ＝Ｈ（ａ,ｂ）                        （５）
が計算される（Ｓ７）。
このハッシュ関数値ｅと乱数ｕ、秘密情報ｓ が乗算減算部１１１に入力され、
ｘ＝ｕ−ｅｓ∈Ｚ                      （６）
が計算される（Ｓ８）。ここで∈Ｚは数値ｕ，ｅ,ｓの単なる乗算、減算を示す。またｅと乱数ｖと乱数ｒが乗算減算部１１２に入力され、
ｙ＝ｖ−ｅｒ∈Ｚ                        （７）
が計算される（Ｓ９）。このようにして秘密情報ｓ についての証明用情報Ｃ＝（ｘ,ｙ,ｅ）が作られる。暗号化データｃと一方向性関数値ｗと証明用情報Ｃを出力部１１３より検証者装置１２へ出力する（Ｓ１０）。なおステップＳ２とＳ３は何れを先にしてもよく、同様にステップＳ５とＳ６、ステップＳ８とＳ９はそれぞれ何れを先にしてもよい。
【００１４】
送信者装置１１において各部は制御部１１４により動作させられる。
次に検証者装置１２における検証処理について説明する。
検証者装置１２の機能構成例を図４に示し、その処理手順の例を図５に示す。
検証者装置１２の記憶部２０１には送信者装置１１の共通情報鍵（ｎ，ｇ）（ｇi ，ｈi ，ｋ）が格納されてある。
検証者装置１２の受信部２０２に送信者装置１１から暗号化データｃ、一方向性関数値ｗ、証明用情報Ｃ＝（ｘ，ｙ，ｅ）を受信すると、必要に応じて記憶部２０１に格納する（Ｓ１）。
【００１５】
受信したｘと公開鍵ｋが判定部２０３に入力され、ｘが０＜ｘ＜２k の範囲にあるかが調べられる（Ｓ２）。
ｘがこの条件を満していれば、受信したｘ，ｙ，ｃ，ｅと公開鍵ｇi ，ｈi がべき乗乗算部２０４に入力され、
ａ′＝ｇixｈiyｃe                             （８）
が計算される（Ｓ３）。ｘに式（６）を、ｙに式（７）をｃに式（１）をそれぞれ代入すると、
0004629889.tif 000002
となる。またべき乗乗算部２０５に受信したｘ，ｅ，ｗと公開鍵ｇが入力され、
ｂ′＝ｇx ｗe                                （１０）
が計算される（Ｓ４）。ｘに式（６）をｗに式（２）を代入すると、
ｂ′＝ｇ(u-es)ｇes＝ｇu                        （１１）
となる。これら計算結果ａ′，ｂ′がハッシュ関数部２０６に入力され、
ｅ′＝Ｈ（ａ′，ｂ′）                      （１２）
が計算される（Ｓ５）。この計算結果ｅ′と受信したｅとが比較部２０７に入力され、両者が等しいか否か調べられる（Ｓ６）。等しければ合格が出力される（Ｓ７）。式（８）、式（９）からｃを復号した値がｓであればａ′＝ａになり、式（１０）と式（１１）からｗの逆関数値がｓであれば、ｂ′＝ｂとなり、式（５）と式（１２）からｅ′＝ｅであれば、ｃの復号したｓとｗ の逆関数値のｓとが等しいことになる。
【００１６】
従って、判定部２０３からのｘが条件を満す出力と、比較部２０７からのｅとｅ′が等しいことを示す出力が出力部２０８に入力されると合格を示す、つまり受信したｃの復号値と受信したｗの逆関数値とが等しいことを示す信号が出力される。判定部２０３から条件を満さないことを示す出力、比較部２０７から等しくないことを示す出力が出力部２１１に入力されると、受信したｃの復号値と、ｗの逆関数値とが等しくない、つまり正しく検証可暗号データではないことを示す信号が出力される（Ｓ８）。なおステップＳ２とＳ６の検証は何れを先にしてもよい、ステップＳ３とＳ４は何れを先にしてもよい。検証者装置１２において各部は制御部２０９により制御される。
【００１７】
送信者装置１１及び検証者装置１２は何れもコンピュータによりプログラムを実行して機能させることもできる。その場合は例えば、送信者装置１１について示すと図６に示すように、記憶部１２１、乱数生成部１２２、ハッシュ関数部１２３、剰余べき乗乗算部１２４、剰余べき乗計算部１２５、乗算減算部１２６、プログラムメモリ１２７、ＣＰＵ（マイクロプロセッサ）１２８、出力部１２９がバス１３１に接続され、プログラムメモリ１２７に、ＣＤ−ＲＯＭ、フロッピーディスク、磁気ディスクなどから例えば図２に示した方法をコンピュータに実行させるためのプログラムがインストールされ、又は通信回線を介してダウンロードされ、このメモリ１２７内のプログラムをＣＰＵ１２８が実行して、ステップＳ２で剰余べき乗乗算部１２４にサブルーチンとして式（１）を計算させ、ステップＳ３では剰余べき乗計算部１２５に式（２）を計算させ、ステップＳ４では乱数生成部１２２に乱数ｕ ，ｖを生成させ、ステップＳ５で乗余べき乗乗算部１２４に式（３）を計算させ、ステップＳ６で剰余べき乗計算部１２５に式（４）を計算させ、ステップＳ７でハッシュ関数演算部１２３に式（５）を計算させ、ステップＳ８で乗算減算部１２６に式（６）を計算させ、ステップＳ９で乗算減算部１２６に式（７）を計算させ、ステップＳ１０で出力部１２９に検証者装置１２への送出を行わせる。
【００１８】
【発明の効果】
この発明によれば、入力、ｃ，ｗに対して、
Ｄsk（ｃ）≡±｛ｌｏｇgｗ｝（mod ｐi ）
であることが証明できる一方で、秘密情報ｓについての情報が入力ｗ（＝ｇs mod ｎ）から漏れる情報以上は漏れないことが証明できる。Ｄskはｓに対する公開鍵暗号関数に対する復号関数である。
実際、以下の定理を示すことが出来る。
【００１９】
この発明は、以下の性質を満たす。
・完全性：正しい証明者が正しくプロトコルを実行した時に、検証者が検証に成功する確率は、１−２-(k-log n-k′)である。ｋ，ｎ，ｋ′について前記推奨値を代入するとこの成功確率は１−２-28となり、ほぼ１に等しい。従ってｋ′＋ｌｏｇ  ｎ＜ｋなら、常に圧倒的な確率で完全性を満たし、秘密ｓのもれがなく、検証者装置で完全に検証することができる。
・零知識性：正しい証明者が正しくプロトコルを実行した時に漏らしている知識は統計的に高々２-(k-log n-k′)である。ここで漏らしている知識とは統計的零知識証明において定義される知識である。前記数値では漏らしている知識は高々２-28となり、知識は実質的に漏れていない。
【００２０】
・健全性：検証者装置の検証プロトコルを確率εで満足させられるような証明者が存在した場合、証明者が本当に知識を持っている確率は１−｛（ｋ′）-logk′＋（ｋ′）logk′／２k′＋εSRSA｝でありそれは時間Ｏ（ｋC／（ε−２k′）2）でチェックできる。ここでＣは定数。εSRSAは証明者がＳｔｒｏｎｇＲＳＡ問題を解ける確率である。つまり秘密ｓが本当のものであることを保証している。
【図面の簡単な説明】
【図１】この発明が適用されるシステムの構成例を示す図。
【図２】この発明における送信者装置の機能構成例を示す図。
【図３】図２に示した装置の処理手順の例を示す流れ図。
【図４】この発明における検証者装置の機能構成例を示す図。
【図５】図４に示した装置の処理手順の例を示す流れ図。
【図６】送信者装置１１とコンピュータにより構成する場合の機能構成例を示す図。
参考文献
[1] G.Ateniese.Efficient verifiable encryption(and fair exchange)of digital signature. In Proceedings of the Fifth Annual Conference on Computer and Communications Security, pages 138-146,Singapore,November 1999.ACM.
[2] F.Bao.An efficient verifiable encryption scheme for encryption of discrete logarithm. In J.J.Quisquater and B.Schneier,editors,Smart Card Research and Aplications,Third International Conference,CARDIS'98,volume 1820 of Lecture Notes in Computer Science,pages 213-220,Louvain-la-Neuve,Belgium,2000. Springer-Verlag.
[3] T.Okamoto and S.Uchiyama. A new public-key cryptosystem as secure as factoring. In K.Nyberg,editor,Advances in Cryptology-EUROCRYPT'98, Lecture Notes in Computer Science,pages 308-318.Springer-Verlag,1998.
【図１】
0004629889.tif 000003
【図２】
0004629889.tif 000004
【図３】
0004629889.tif 000005
【図４】
0004629889.tif 000006
【図５】
0004629889.tif 000007
【図６】
0004629889.tif 000008