(57)【特許請求の範囲】
【請求項１】
確率暗号文の平文である数値が指定された範囲内にあることを証明するための証明文を作成し、かつ前記証明文に基づいて当該平文の値が当該指定された範囲内にあることを検証する、暗号文の平文が区間内にあることの証明システムにおいて、
前記平文の値、当該平文を当該確率暗号文に暗号化するために用いられた乱数の値、前記指定された範囲を定める上限値と下限値、及び、正しく検証される確率を規定する安全変数の値とに基づいて、前記確率暗号文の解読困難性を失うことなく前記平文の値が前記指定された範囲内にあるか否かを判定するための前記証明文を作成する証明文作成装置と、
検証対象の前記確率暗号文、前記指定された範囲を定める上限値と下限値、前記証明文、及び、正しく検証される確率を規定する安全変数の値とに基づいて、前記平文の値が前記指定された範囲内にあるか否かを、前記安全変数に規定された以上の確率で正確に検証する検証装置を備えることを特徴とする暗号文の平文が区間内にあることの証明システム。
【請求項２】
前記証明文作成装置は、
前記確率暗号文を復号して、前記平文の値及び、当該平文を当該確率暗号文に暗号化するために用いられた前記乱数の値を取得する復号部を備え、
前記復号部により取得された前記平文の値と前記乱数の値を用いて、前記証明文を作成することを特徴とする請求項１に記載の暗号文の平文が区間内にあることの証明システム。
【請求項３】
前記証明文作成装置は、
前記上限値から前記平文の値を減算した値と、前記平文の値から前記下限値を減算した値との２種類の数値を算出する両端値との差の算出部と、
前記安全変数に基づいて定められる拡大係数の値を、前記両端値との差の算出部により算出された２種類の数値のそれぞれに乗じて、それぞれの拡大値を算出する拡大部と、
前記拡大値のそれぞれに対して、各前記拡大値以下の最大の平方数と、各前記拡大値から対応する前記平方数の値を減算した差の値とを算出することにより、前記拡大値のそれぞれを前記平方数と前記差の値とに分割する分割部と、
各前記拡大値を分割して得られた各前記数値を暗号化して、暗号文を生成する暗号化部と、
各前記拡大値を分割して得られた各前記数値に関する証明文を生成する証明文生成部を備え、
前記暗号化部により生成された前記暗号文と、証明文生成部により生成された前記数値に関する証明文とを、前記平文の値が指定された範囲内にあることを証明するための前記証明文として出力することを特徴とすることを特徴とする請求項２に記載の暗号文の平文が区間内にあることの証明システム。
【請求項４】
前記検証装置は、
前記上限値から前記平文の値を減算した値と、前記平文の値から前記下限値を減算した値との２種類の両端値との差の値の、それぞれの暗号文を生成する両端値との差の暗号文生成部と、
前記両端値との差の暗号文生成部により生成された各前記暗号文のそれぞれを、前記安全変数に基づいて定められる拡大係数を前記２種類の両端値との差の値のそれぞれに乗じて得られる値を暗号化した、拡大値暗号文に変換する拡大部と、
各前記拡大値暗号文を、それぞれに第１の暗号文と第２の暗号文との２つの暗号文の積に分解する分解部と、
各前記拡大値暗号文を分解して得られたそれぞれの前記２つの暗号文を検証する検証部と、
前記検証部による健勝結果に基づいて、当該確率暗号文の平文である数値が当該指定された範囲内にあるか否かを判定する判定部を備えることを特徴とする請求項３に記載の暗号文の平文が区間内にあることの証明システム。
【請求項５】
前記証明文作成装置の前記暗号化部は、
各前記拡大値のそれぞれに対して、前記分割部により分割された前記平方数と前記差の値との少なくとも一方を暗号化することにより、前記暗号文を生成することを特徴とする請求項４に記載の暗号文の平文が区間内にあることの証明システム。
【請求項６】
前記検証装置の前記分解部は、
各前記拡大値暗号文における、前記上限値から前記平文の値を減算した値を基に生成された側と前記平文の値から前記下限値を減算した値を基に生成された側とのそれぞれにおいて対応する、前記証明文において暗号化されて備えられている前記拡大値から算出される前記平方数と前記差の値とのいずれか一方の値の暗号文をそれぞれに取得して、各前記拡大値暗号文のそれぞれに、前記証明文に備えられる対応する側の値の暗号文を前記第１の暗号文とし、前記第１の暗号文との積が対応する前記拡大値暗号文を成す暗号文である前記第２の暗号文をそれぞれ算出することにより、各前記拡大値暗号文を分解することを特徴とする請求項５に記載の暗号文の平文が区間内にあることの証明システム。
【請求項７】
前記証明文作成装置の前記証明文生成部は、
各前記拡大値のそれぞれの前記差の値が、前記拡大係数より小さいことを証明する証明文と、各前記拡大値のそれぞれの前記平方数が、平方数を成しかつ前記確率暗号文の周期の半分より小さいことを証明する証明文とを、各前記数値に関する証明文として生成することを特徴とする請求項６に記載の暗号文の平文が区間内にあることの証明システム。
【請求項８】
前記検証装置の前記検証部は、
各前記数値に関する証明文に基づいて、前記第１の暗号文及び前記第２の暗号文を検証し、
前記第１の暗号文が前記平方数の側に対応する場合には、前記第１の暗号文の平文の値が平方数を成しかつ前記確率暗号文の周期の半分より小さいことの検証と、前記第２の暗号文の平文の値が前記拡大係数より小さいことの検証とを行い、
前記第１の暗号文が前記差の値の側に対応する場合には、前記第１の暗号文の平文の値が前記拡大係数より小さいことの検証と、前記第２の暗号文の平文の値が平方数を成しかつ前記確率暗号文の周期の半分より小さいことの検証とを行い、
前記検証装置の前記判定部は、
前記検証部による前記第１の暗号文及び前記第２の暗号文の前記検証において、いずれも受理された場合に限り、前記確率暗号文の平文である数値が前記指定された範囲内にあると判定することを特徴とする請求項７に記載の暗号文の平文が区間内にあることの証明システム。
【請求項９】
確率暗号文の平文である数値が、指定された範囲内にあることを証明するための証明文を作成する証明文作成装置において、
前記平文の値、当該平文を当該確率暗号文に暗号化するために用いられた乱数の値、前記指定された範囲を定める上限値と下限値、及び、正しく検証される確率を規定する安全変数の値とに基づいて、前記証明文を作成する手段を備えることにより、
前記確率暗号文、前記上限値、前記下限値、前記安全変数、及び、作成された前記証明文とに基づく検証において、前記確率暗号文の解読困難性を失うことなく、前記平文の値が前記指定された範囲内にあるか否かを前記安全変数に規定された以上の確率で正確に検証するための、前記証明文を作成することを特徴とする証明文作成装置。
【請求項１０】
前記確率暗号文を復号して、前記平文の値及び、当該平文を当該確率暗号文に暗号化するために用いられた前記乱数の値を取得する復号部を備え、
前記証明文を作成する手段は、
前記復号部により取得された前記平文の値と前記乱数の値を用いて、前記証明文を作成することを特徴とする請求項９に記載の証明文作成装置。
【請求項１１】
前記証明文を作成する手段は、
前記上限値から前記平文の値を減算した値と、前記平文の値から前記下限値を減算した値との２種類の数値を算出する両端値との差の算出部と、
前記安全変数に基づいて定められる拡大係数の値を、前記両端値との差の算出部により算出された２種類の数値のそれぞれに乗じて、それぞれの拡大値を算出する拡大部と、
前記拡大値のそれぞれに対して、各前記拡大値以下の最大の平方数と、各前記拡大値から対応する前記平方数の値を減算した差の値とを算出することにより、前記拡大値のそれぞれを前記平方数と前記差の値とに分割する分割部と、
各前記拡大値を分割して得られた各前記数値を暗号化して、暗号文を生成する暗号化部と、
各前記拡大値を分割して得られた各前記数値に関する証明文を生成する証明文生成部を備え、
前記暗号化部により生成された前記暗号文と、証明文生成部により生成された前記数値に関する証明文とを、前記平文の値が指定された範囲内にあることを証明するための前記証明文として出力することを特徴とすることを特徴とする請求項１０に記載の証明文作成装置。
【請求項１２】
前記暗号化部は、
各前記拡大値のそれぞれに対して、前記分割部により分割された前記平方数と前記差の値との少なくとも一方を暗号化することにより、前記暗号文を生成することを特徴とする請求項１に記載の証明文作成装置。
【請求項１３】
前記証明文生成部は、
各前記拡大値のそれぞれの前記差の値が、前記拡大係数より小さいことを証明する証明文と、各前記拡大値のそれぞれの前記平方数が、平方数を成しかつ前記確率暗号文の周期の半分より小さいことを証明する証明文とを、各前記数値に関する証明文として生成することを特徴とする請求項１１又は請求項１２に記載の証明文作成装置。
【請求項１４】
確率暗号文の平文である数値が指定された範囲内にあることを証明する証明文に基づき、当該平文の値が当該指定された範囲内にあることを検証する検証装置において、
検証対象の前記確率暗号文、前記指定された範囲を定める上限値と下限値、前記証明文、及び、正しく検証される確率を規定する安全変数の値とに基づいて、前記平文の値が前記指定された範囲内にあるか否かを、前記安全変数に規定された以上の確率で正確に検証することを特徴とする検証装置。
【請求項１５】
前記上限値から前記平文の値を減算した値と、前記平文の値から前記下限値を減算した値との２種類の両端値との差の値の、それぞれの暗号文を生成する両端値との差の暗号文生成部と、
前記両端値との差の暗号文生成部により生成された各前記暗号文のそれぞれを、前記安全変数に基づいて定められる拡大係数を前記２種類の両端値との差の値のそれぞれに乗じて得られる値を暗号化した、拡大値暗号文に変換する拡大部と、
各前記拡大値暗号文を、それぞれに第１の暗号文と第２の暗号文との２つの暗号文の積に分解する分解部と、
各前記拡大値暗号文を分解して得られたそれぞれの前記２つの暗号文を検証する検証部と、
前記検証部による健勝結果に基づいて、当該確率暗号文の平文である数値が当該指定された範囲内にあるか否かを判定する判定部を備えることを特徴とする請求項１４に記載の検証装置。
【請求項１６】
前記証明文は、
前記安全変数に基づいて定められる拡大係数を前記２種類の両端値との差の値のそれぞれに乗じて得られる値である２種類の拡大値のそれぞれにおいて、各前記拡大値以下の最大の平方数と、各前記拡大値から対応する前記平方数の値を減算した差の値との少なくとも一方の値を暗号化した、分割された値の暗号文のデータを備え、
前記分解部は、
各前記拡大値暗号文における、前記上限値から前記平文の値を減算した値を基に生成された側と前記平文の値から前記下限値を減算した値を基に生成された側とのそれぞれにおいて対応する、前記証明文において暗号化されて備えられている前記拡大値から算出される前記平方数と前記差の値とのいずれか一方の値の暗号文をそれぞれに取得して、各前記拡大値暗号文のそれぞれに、前記証明文に備えられる対応する側の値の暗号文を前記第１の暗号文とし、前記第１の暗号文との積が対応する前記拡大値暗号文を成す暗号文である前記第２の暗号文をそれぞれ算出することにより、各前記拡大値暗号文を分解することを特徴とする請求項１５に記載の検証装置。
【請求項１７】
前記証明文は、
前記安全変数に基づいて定められる拡大係数を前記２種類の両端値との差の値のそれぞれに乗じて得られる値である２種類の拡大値のそれぞれにおける、各前記拡大値以下の最大の平方数と各前記拡大値から対応する前記平方数の値を減算した差の値との分割された各値に関して、各前記差の値が、前記拡大係数より小さいことを証明する証明文と、前記平方数が、平方数を成しかつ前記確率暗号文の周期の半分より小さいことを証明する証明文とを、各前記数値に関する証明文として備え、
前記検証部は、
各前記数値に関する証明文に基づいて、前記第１の暗号文及び前記第２の暗号文を検証し、
前記第１の暗号文が前記平方数の側に対応する場合には、前記第１の暗号文の平文の値が平方数を成しかつ前記確率暗号文の周期の半分より小さいことの検証と、前記第２の暗号文の平文の値が前記拡大係数より小さいことの検証とを行い、
前記第１の暗号文が前記差の値の側に対応する場合には、前記第１の暗号文の平文の値が前記拡大係数より小さいことの検証と、前記第２の暗号文の平文の値が平方数を成しかつ前記確率暗号文の周期の半分より小さいことの検証とを行い、
前記判定部は、
前記検証部による前記第１の暗号文及び前記第２の暗号文の前記検証において、いずれも受理された場合に限り、前記確率暗号文の平文である数値が前記指定された範囲内にあると判定することを特徴とする請求項１６に記載の検証装置。
【請求項１８】
確率暗号文の平文である数値が、指定された範囲内にあることを証明するための証明文を作成する証明文作成装置による証明文作成方法であって、
前記平文の値、当該平文を当該確率暗号文に暗号化するために用いられた乱数の値、前記指定された範囲を定める上限値と下限値、及び、正しく検証される確率を規定する安全変数の値とに基づいて、前記証明文を作成するステップを備えることにより、
前記確率暗号文、前記上限値、前記下限値、前記安全変数、及び、作成された前記証明文とに基づく検証において、前記確率暗号文の解読困難性を失うことなく、前記平文の値が前記指定された範囲内にあるか否かを前記安全変数に規定された以上の確率で正確に検証するための、前記証明文を作成することを特徴とする証明文作成方法。
【請求項１９】
前記確率暗号文を復号して、前記平文の値及び、当該平文を当該確率暗号文に暗号化するために用いられた前記乱数の値を取得する復号ステップを有し、
前記証明文を作成するステップで、
前記確率暗号文を復号して取得された前記平文の値と前記乱数の値を用いて、前記証明文を作成することを特徴とする請求項１８に記載の証明文作成方法。
【請求項２０】
前記証明文を作成するステップで、
前記上限値から前記平文の値を減算した値と、前記平文の値から前記下限値を減算した値との２種類の数値を算出する両端値との差の算出ステップと、
前記安全変数に基づいて定められる拡大係数の値を、前記両端値との差の算出ステップにより算出された２種類の数値のそれぞれに乗じて、それぞれの拡大値を算出する拡大ステップと、
前記拡大値のそれぞれに対して、各前記拡大値以下の最大の平方数と、各前記拡大値から対応する前記平方数の値を減算した差の値とを算出することにより、前記拡大値のそれぞれを前記平方数と前記差の値とに分割する分割ステップと、
各前記拡大値を分割して得られた各前記数値を暗号化して暗号文を生成する暗号化ステップと、
各前記拡大値を分割して得られた各前記数値に関する証明文を生成する証明文生成ステップとを有し、
前記暗号化ステップで生成された前記暗号文と、証明文生成ステップで生成された前記数値に関する証明文とを、前記平文の値が指定された範囲内にあることを証明するための前記証明文として出力することを特徴とすることを特徴とする請求項１９に記載の証明文作成方法。
【請求項２１】
前記暗号化ステップで、
各前記拡大値のそれぞれに対して、前記分割ステップにより分割された前記平方数と前記差の値との少なくとも一方を暗号化することにより、前記暗号文を生成することを特徴とする請求項２０に記載の証明文作成方法。
【請求項２２】
前記証明文生成ステップで、
各前記拡大値のそれぞれの前記差の値が、前記拡大係数より小さいことを証明する証明文と、各前記拡大値のそれぞれの前記平方数が、平方数を成しかつ前記確率暗号文の周期の半分より小さいことを証明する証明文とを、各前記数値に関する証明文として生成することを特徴とする請求項２０又は請求項２１に記載の証明文作成方法。
【請求項２３】
確率暗号文の平文である数値が指定された範囲内にあることを証明する証明文に基づき、当該平文の値が当該指定された範囲内にあることを検証する検証装置による検証方法であって、
検証対象の前記確率暗号文、前記指定された範囲を定める上限値と下限値、前記証明文、及び、正しく検証される確率を規定する安全変数の値とに基づいて、前記平文の値が前記指定された範囲内にあるか否かを、前記安全変数に規定された以上の確率で正確に検証することを特徴とする検証方法。
【請求項２４】
前記上限値から前記平文の値を減算した値と、前記平文の値から前記下限値を減算した値との２種類の両端値との差の値の、それぞれの暗号文を生成する両端値との差の暗号文生成ステップと、
生成された各前記両端値との差の値の暗号文のそれぞれを、前記安全変数に基づいて定められる拡大係数を前記２種類の両端値との差の値のそれぞれに乗じて得られる拡大値を暗号化した、拡大値暗号文に変換する拡大ステップと、
各前記拡大値暗号文を、それぞれに第１の暗号文と第２の暗号文との２つの暗号文の積に分解する分解ステップと、
各前記拡大値暗号文を分解して得られたそれぞれの前記２つの暗号文を検証する検証ステップと、
前記検証ステップによる健勝結果に基づいて、当該確率暗号文の平文である数値が当該指定された範囲内にあるか否かを判定する判定ステップとを有することを特徴とする請求項２３に記載の検証方法。
【請求項２５】
前記証明文は、
前記安全変数に基づいて定められる拡大係数を前記２種類の両端値との差の値のそれぞれに乗じて得られる値である２種類の拡大値のそれぞれにおいて、各前記拡大値以下の最大の平方数と、各前記拡大値から対応する前記平方数の値を減算した差の値との少なくとも一方の値を暗号化した、分割された値の暗号文のデータを備え、
前記分解ステップで、
各前記拡大値暗号文における、前記上限値から前記平文の値を減算した値を基に生成された側と前記平文の値から前記下限値を減算した値を基に生成された側とのそれぞれにおいて対応する、前記証明文において暗号化されて備えられている前記拡大値から算出される前記平方数と前記差の値とのいずれか一方の値の暗号文をそれぞれに取得するステップと、
各前記拡大値暗号文のそれぞれに、前記証明文に備えられる対応する側の値の暗号文を前記第１の暗号文とし、前記第１の暗号文との積が対応する前記拡大値暗号文を成す暗号文である前記第２の暗号文をそれぞれ算出することにより、各前記拡大値暗号文を分解するステップとを有することを特徴とする請求項２４に記載の検証方法。
【請求項２６】
前記証明文は、
前記安全変数に基づいて定められる拡大係数を前記２種類の両端値との差の値のそれぞれに乗じて得られる値である２種類の拡大値のそれぞれにおける、各前記拡大値以下の最大の平方数と各前記拡大値から対応する前記平方数の値を減算した差の値との分割された各値に関して、各前記差の値が、前記拡大係数より小さいことを証明する証明文と、前記平方数が、平方数を成しかつ前記確率暗号文の周期の半分より小さいことを証明する証明文とを、各前記数値に関する証明文として備え、
前記検証ステップで、
各前記数値に関する証明文に基づいて、前記第１の暗号文及び前記第２の暗号文を検証し、
前記第１の暗号文が前記平方数の側に対応する場合には、前記第１の暗号文の平文の値が平方数を成しかつ前記確率暗号文の周期の半分より小さいことの検証と、前記第２の暗号文の平文の値が前記拡大係数より小さいことの検証とを行い、
前記第１の暗号文が前記差の値の側に対応する場合には、前記第１の暗号文の平文の値が前記拡大係数より小さいことの検証と、前記第２の暗号文の平文の値が平方数を成しかつ前記確率暗号文の周期の半分より小さいことの検証とを行い、
前記判定ステップで、
前記第１の暗号文及び前記第２の暗号文の前記検証においていずれも受理された場合に限り、前記確率暗号文の平文である数値が前記指定された範囲内にあると判定することを特徴とする請求項２５に記載の検証方法。
【請求項２７】
確率暗号文の平文である数値が指定された範囲内にあることを証明するための証明文を作成する証明文作成装置として機能するコンピュータ上で動作する証明文作成プログラムであって、
前記コンピュータに、
前記平文の値、当該平文を当該確率暗号文に暗号化するために用いられた乱数の値、前記指定された範囲を定める上限値と下限値、及び、正しく検証される確率を規定する安全変数の値とに基づいて、前記証明文を作成する処理を実行させることにより、
前記確率暗号文、前記上限値、前記下限値、前記安全変数、及び、作成された前記証明文とに基づく検証において、前記確率暗号文の解読困難性を失うことなく、前記平文の値が前記指定された範囲内にあるか否かを前記安全変数に規定された以上の確率で正確に検証するための、前記証明文の作成を実行させることを特徴とする証明文作成プログラム。
【請求項２８】
前記コンピュータに、
前記確率暗号文を復号して、前記平文の値及び、当該平文を当該確率暗号文に暗号化するために用いられた前記乱数の値を取得する復号処理を実行させ、
前記証明文を作成する処理で、
前記確率暗号文を復号して取得された前記平文の値と前記乱数の値を用いて、前記証明文の作成を実行することを特徴とする請求項２７に記載の証明文作成プログラム。
【請求項２９】
前記証明文を作成する処理で、前記コンピュータに、
前記上限値から前記平文の値を減算した値と、前記平文の値から前記下限値を減算した値との２種類の数値を算出する両端値との差の算出処理と、
前記安全変数に基づいて定められる拡大係数の値を、前記両端値との差の算出処理により算出された２種類の数値のそれぞれに乗じて、それぞれの拡大値を算出する拡大処理と、
前記拡大値のそれぞれに対して、各前記拡大値以下の最大の平方数と、各前記拡大値から対応する前記平方数の値を減算した差の値とを算出することにより、前記拡大値のそれぞれを前記平方数と前記差の値とに分割する分割処理と、
各前記拡大値を分割して得られた各前記数値を暗号化して暗号文を生成する暗号化処理と、
各前記拡大値を分割して得られた各前記数値に関する証明文を生成する証明文生成処理と、
前記暗号化処理により生成された前記暗号文と、証明文生成処理により生成された前記数値に関する証明文とを、前記平文の値が指定された範囲内にあることを証明するための前記証明文として出力する処理を実行させることを特徴とすることを特徴とする請求項２８に記載の証明文作成プログラム。
【請求項３０】
前記暗号化処理で、前記コンピュータに、
各前記拡大値のそれぞれに対して、前記分割処理により分割された前記平方数と前記差の値との少なくとも一方を暗号化することにより、前記暗号文を生成する処理を実行させることを特徴とする請求項２８に記載の証明文作成プログラム。
【請求項３１】
前記証明文生成処理で、前記コンピュータに、
各前記拡大値のそれぞれの前記差の値が、前記拡大係数より小さいことを証明する証明文と、各前記拡大値のそれぞれの前記平方数が、平方数を成しかつ前記確率暗号文の周期の半分より小さいことを証明する証明文とを、各前記数値に関する証明文として生成する処理を実行させることを特徴とする請求項２９又は請求項３０に記載の証明文作成プログラム。
【請求項３２】
確率暗号文の平文である数値が指定された範囲内にあることを証明する証明文に基づき、当該平文の値が当該指定された範囲内にあることを検証する検証装置として機能するコンピュータ上で動作する検証プログラムであって、
前記コンピュータに、
検証対象の前記確率暗号文、前記指定された範囲を定める上限値と下限値、前記証明文、及び、正しく検証される確率を規定する安全変数の値とに基づいて、前記平文の値が前記指定された範囲内にあるか否かを、前記安全変数に規定された以上の確率で正確に検証する処理を実行させることを特徴とする検証プログラム。
【請求項３３】
前記コンピュータに、
前記上限値から前記平文の値を減算した値と、前記平文の値から前記下限値を減算した値との２種類の両端値との差の値の、それぞれの暗号文を生成する両端値との差の暗号文生成処理と、
生成された各前記両端値との差の値の暗号文のそれぞれを、前記安全変数に基づいて定められる拡大係数を前記２種類の両端値との差の値のそれぞれに乗じて得られる拡大値を暗号化した、拡大値暗号文に変換する拡大処理と、
各前記拡大値暗号文を、それぞれに第１の暗号文と第２の暗号文との２つの暗号文の積に分解する分解処理と、
各前記拡大値暗号文を分解して得られたそれぞれの前記２つの暗号文を検証する検証処理と、
前記検証処理による健勝結果に基づいて、当該確率暗号文の平文である数値が当該指定された範囲内にあるか否かを判定する判定処理を実行させることを特徴とする請求項３２に記載の検証プログラム。
【請求項３４】
前記証明文は、
前記安全変数に基づいて定められる拡大係数を前記２種類の両端値との差の値のそれぞれに乗じて得られる値である２種類の拡大値のそれぞれにおいて、各前記拡大値以下の最大の平方数と、各前記拡大値から対応する前記平方数の値を減算した差の値との少なくとも一方の値を暗号化した、分割された値の暗号文のデータを備え、
前記分解処理で、前記コンピュータに、
各前記拡大値暗号文における、前記上限値から前記平文の値を減算した値を基に生成された側と前記平文の値から前記下限値を減算した値を基に生成された側とのそれぞれにおいて対応する、前記証明文において暗号化されて備えられている前記拡大値から算出される前記平方数と前記差の値とのいずれか一方の値の暗号文をそれぞれに取得する処理と、
各前記拡大値暗号文のそれぞれに、前記証明文に備えられる対応する側の値の暗号文を前記第１の暗号文とし、前記第１の暗号文との積が対応する前記拡大値暗号文を成す暗号文である前記第２の暗号文をそれぞれ算出することにより、各前記拡大値暗号文を分解する処理を実行させることを特徴とする請求項３３に記載の検証プログラム。
【請求項３５】
前記証明文は、
前記安全変数に基づいて定められる拡大係数を前記２種類の両端値との差の値のそれぞれに乗じて得られる値である２種類の拡大値のそれぞれにおける、各前記拡大値以下の最大の平方数と各前記拡大値から対応する前記平方数の値を減算した差の値との分割された各値に関して、各前記差の値が、前記拡大係数より小さいことを証明する証明文と、前記平方数が、平方数を成しかつ前記確率暗号文の周期の半分より小さいことを証明する証明文とを、各前記数値に関する証明文として備え、
前記検証処理で、前記コンピュータに、
各前記数値に関する証明文に基づいて、前記第１の暗号文及び前記第２の暗号文を検証し、前記第１の暗号文が前記平方数の側に対応する場合には、前記第１の暗号文の平文の値が平方数を成しかつ前記確率暗号文の周期の半分より小さいことの検証と、前記第２の暗号文の平文の値が前記拡大係数より小さいことを検証する処理を実行させ、
前記第１の暗号文が前記差の値の側に対応する場合には、前記第１の暗号文の平文の値が前記拡大係数より小さいことの検証と、前記第２の暗号文の平文の値が平方数を成しかつ前記確率暗号文の周期の半分より小さいことを検証する処理を実行させ、
前記判定処理で、前記コンピュータに、
前記第１の暗号文及び前記第２の暗号文の前記検証においていずれも受理された場合に限り、前記確率暗号文の平文である数値が前記指定された範囲内にあると判定する処理を実行させることを特徴とする請求項３４に記載の検証プログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、確率暗号を用いたゼロ知識証明に関し、特に、暗号化された数値が定められた区間内に属することを、その数値を隠したまま証明する暗号文の平文が区間内にあることの証明システムと、暗号化された数値が定められた区間内に属することを証明する証明文の作成方法、及びその証明文による暗号化された数値が定められた区間内に属することの検証方法に関する。
【０００２】
【従来の技術】
従来、特定の数値が定められた区間にあることを、その値を隠したまま証明する技術について、例えばファブリーチェ ブード（Fabrice Boudot）による方式がある。これは文献「エフィシエント プルーフス ザット ア コミッテッド ナンバー ライズ イン アン インターバル、アドバンス イン クリプトロジー、プロシーヂング オブ ユーロクリプト ２０００、エルエヌシーエス １８０７、シュプリンガー フェアラーグ、４３１ページから４４４ページまで、２０００年（Efficient Proofs that a Committed Number Lies in an Interval, Advance in Cryptology, Proceeding of Eurocrypt' 2000, LNCS1807, Springer-Verlag, pp. 431-444, 2000）」に開示されている。この方式では、与えられた値を、乱数を用いてコミットし、その値が定められた区間内にあることを、その値を隠したまま証明する。
【０００３】
以下に、図面を参照してこの従来の技術の概略を説明する。図１０は、この従来技術における、特定の数値が定められた区間にあることを、その特定の数値を隠したまま証明するための証明文を作成する証明文作成装置の構成を説明するためのブロック図であり、図１１は、この証明文作成装置の処理を説明するためのフローチャートであり、図１２は、この証明文作成装置の演算処理を詳細に説明するための図である。
【０００４】
図１２においては、証明文の上半分（３３−１ａ、３３−２ａ）を導く過程が点線により省略されているが、これは以下に説明する下半分（３３−３ａ、３３−４ａ）を導く過程と全く同様にして導くことができる。
【０００５】
ここでの「xをコミットする」とは、一方向性関数にxが（と場合により乱数とが）入力された結果を公開することであり、この結果をコミットメントと呼ぶ。一方向性関数の性質より、xのコミットメントよりxを求めることはできず、また、同じコミットメントを与えるx以外の入力を求めることも困難となる。こうして、数値xは、一方向性関数により（と場合により乱数を用いて）暗号化されるのである。
【０００６】
合成数nを、証明者、検証者のいずれも知らない（十分に大きな）２つの素数p、qの積であるとする。g、hを、乗法群Ｚ*nの要素で、互いを底とする離散対数のどちらも証明者と検証者は知らないとする。
【０００７】
証明者は、まず図１２の１０１に示されるように、コメットされる数１５ａ（被コミット数）である“x”と、そのコミットメントに用いる乱数１６ａである“r”を用いて、計算した値“gxhrmod n”をxのコミットメント３３−５ａとして算出する（ステップ１１０１）。このxの値が、指定された区間である[a、b]の区間内にあることを、xを秘密にしたまま証明するための証明文を作成する。
【０００８】
そして図１２の１０２において、被コミット数のx、指定された区間を定める定数１３ａである下限値a、上限値bのコミットメントから区間の両端値との差x-a（１０３）、b-x（１０４）のコミットメントを計算する（ステップ１１０２）。そして図１２の１０５、１０６において、安全変数１４ａと定められた区間の大きさから求められる変数Tを用いて、この２つのコミットメントを2T乗し、2T(x-1)、2T(b-x)のコミットメントを計算する（ステップ１１０３）。
【０００９】
そして、コミットされた各値2T(x-1)、2T(b-x)を隠したまま（解読困難性を保ったまま）、これらの値が-2Tより大きいことをそれぞれ証明する。x、a、bが整数なので、この証明は、x-a、b-xが正であること、すなわちxが[a、b]の区間内にあることの証明となる。以下ではコミットされた数が-2Tより大きいことを、その数を秘密にしたまま（解読困難性を保ったまま）、検証者に対して証明する方法について述べる。
【００１０】
以下、この秘密の数（つまり、2T(x-1)、2T(b-x)の一方の値）をXとする。vをXの平方根より小さい最大の整数とし、整数zをX-v2として取る（ステップ１１０４）。
【００１１】
ここで、v2、u、Xをコミットする。検証者は、これらのコミットメントから、コミットされた各数がv2+u=Xなる関係を満たすことが分かる。
【００１２】
そして、図１２の１１０において、uのコミットメントが、絶対値が2Tより小さい値のコミットメントであることを、uを隠したままで証明するための証明文３３−４ａを生成する。更に、図１２の１１１において、v2のコミットメントが、平方数のコミットメントであることを、vを隠したままで証明するための証明文３３−３ａを生成する（ステップ１１０５）。
【００１３】
正である平方数と、絶対値が2Tより小さい値の和であるXは-2Tより大きくなる。uの絶対値が2Tより小さいことの証明をuの値を隠して行なうためには、uの絶対値は2Tよりずっと小さい必要がある。そのような絶対値の小さなuと平方数との和で[a、b]の区間内にある整数全てが表せるように十分に大きなTを選ぶことによりXの値を隠す。また、これらの証明にはコミットメントを生成するために使った乱数が必要になる。
【００１４】
【発明が解決しようとする課題】
しかし、従来の技術では、以下に述べるような問題点があった。
【００１５】
［問題（１）］
定められた区間内にあることを証明したい数は、証明者自らコミットしたものに限られるという問題点がある（暗号文のみを与えられても証明できない）。これは、証明文の作成のために、証明にコミットした数とコミットするのに使った乱数との両方を必要とするためである。
【００１６】
［問題（２）］
証明者が乗法群Ｚ*nの位数（周期）ｎを知らないことが保証されていなければならない。これは、コミットメントのコミットされる数に関する周期を証明者が知っていると、コミットされた数(v2)が平方であることの証明は、コミットされた数の存在する区間を制限できないからである(乗法群Ｚ*nの位数はコミットメントのコミットされる数に関する周期となる)。
【００１７】
上記２つの問題点の解決が重要となる例を次に挙げる。
【００１８】
[例]
例として、アンケート式の個人の性格の傾向診断サービスを考える。
主催者は利用者にアンケートを配り、利用者はそれに回答して主催者に返送し、主催者は傾向の有無を利用者に返答する。
【００１９】
ここで利用者のプライバシー保護のため、利用者がどの項目に印をつけたか主催者に分からないようにしたい。また、主催者のノウハウを隠すためや、利用者が結果を意識してアンケートに答えることがないようにするため、アンケートの各項目が診断される傾向に正に働くのか或は負に働くのか利用者に分からないようにしたい。診断の詳細を知らせないために、利用者の傾向の具体的数値は利用者に分からないようにして、利用者の傾向がある閾値を超えたかのみを伝えたい。また、主催者が特定の利用者に故意に偽の診断結果を伝えることを防ぐために、診断結果を主催者が偽造していないことを利用者に保証したい。
【００２０】
主催者はアンケートの各質問項目に対応して、１又は０をコミットしたもの(g1hrmod n、又はg0hrmod n)のどちらかである要素からなる列を利用者に配る。各コミットメントが１のコミットメントであるか０のコミットメントであるかが対応する質問項目が診断される傾向に正に働くのか或は負に働くのかを決める。乱数rは各コミットメント毎に異なるものを使い、利用者にコミットメントされている数を分からなくする。利用者は自分の当てはまると思われる質問に対応するコミットメントと任意の乱数r"を選び、それらコミットメントとhr"との積を求め主催者に返送する。この積はg0+,・・・,+1hr'+,・・・,+r+r"mod nといった形をしており、判断に正に働く項目の質問を利用者が選んだ数がコミットされている。ここで、コミットされている数と乱数r'+,・・・,+r+r"とを主催者が知ることができれば、従来の技術を使うことにより主催者は適正判断の結果を、(傾向の)具体的な数値を示すことなく利用者に証明することができる(判断に使われる項目を選んだ数がある値を超えるかどうかで適正の有無を判断するとする)。
【００２１】
この場合に、主催者はこの積からは利用者がどの項目を選んだかは分からない。
【００２２】
[例における問題点]
上記アンケートで従来の技術を使った場合、問題（１）により主催者は、アンケート結果であるコミットメントの積からコミットされた数及び乱数を知ることができない。また、何らかの新しい方法でこれらの数が分かったとしても、主催者がＺ*nを定めたのならば、問題（２）により、その数が定められた区間にあるかどうかを証明することができない。
【００２３】
本発明の目的は、上記従来技術の欠点を解決し、証明者以外が作成したコミットメントに対しても、証明者がそのコミットメントからコミットされた数を求めて、コミットされた数が定められた区間にある場合は、検証者に対してコミットされた数を隠したまま、コミットされた数が定められた区間にあることを証明する暗号文の平文が区間内にあることの証明システムと証明文の作成方法、その証明文による検証方法を提供することである。
【００２４】
すなわち、従来の技術では、証明者自身が隠して所持している数に関してその数の属する区間を証明するものであったが、本発明においては、証明者が（証明文作成装置が）他より与えらたコミットメントに対して、コミットされた数の属する区間を証明するのである。
【００２５】
【課題を解決するための手段】
本発明の第１の証明システムは、確率暗号文の平文である数値が指定された範囲内にあることを証明するための証明文を作成し、かつ証明文に基づいて当該平文の値が当該指定された範囲内にあることを検証する、暗号文の平文が区間内にあることの証明システムにおいて、平文の値、当該平文を当該確率暗号文に暗号化するために用いられた乱数の値、指定された範囲を定める上限値と下限値、及び、正しく検証される確率を規定する安全変数の値とに基づいて、確率暗号文の解読困難性を失うことなく平文の値が指定された範囲内にあるか否かを判定するための証明文を作成する証明文作成装置と、検証対象の確率暗号文、指定された範囲を定める上限値と下限値、証明文、及び、正しく検証される確率を規定する安全変数の値とに基づいて、平文の値が指定された範囲内にあるか否かを、安全変数に規定された以上の確率で正確に検証する検証装置を備える。
【００２６】
本発明の第１の証明文作成装置は、確率暗号文の平文である数値が、指定された範囲内にあることを証明するための証明文を作成する証明文作成装置において、平文の値、当該平文を当該確率暗号文に暗号化するために用いられた乱数の値、指定された範囲を定める上限値と下限値、及び、正しく検証される確率を規定する安全変数の値とに基づいて、証明文を作成する手段を備えることにより、確率暗号文、上限値、下限値、安全変数、及び、作成された証明文とに基づく検証において、確率暗号文の解読困難性を失うことなく、平文の値が指定された範囲内にあるか否かを安全変数に規定された以上の確率で正確に検証するための、証明文を作成する。
【００２７】
本発明の第１の検証装置は、確率暗号文の平文である数値が指定された範囲内にあることを証明する証明文に基づき、当該平文の値が当該指定された範囲内にあることを検証する検証装置において、検証対象の確率暗号文、指定された範囲を定める上限値と下限値、証明文、及び、正しく検証される確率を規定する安全変数の値とに基づいて、平文の値が指定された範囲内にあるか否かを、安全変数に規定された以上の確率で正確に検証する。
【００２８】
本発明の第１の証明文作成方法は、確率暗号文の平文である数値が、指定された範囲内にあることを証明するための証明文を作成する証明文作成装置による証明文作成方法であって、平文の値、当該平文を当該確率暗号文に暗号化するために用いられた乱数の値、指定された範囲を定める上限値と下限値、及び、正しく検証される確率を規定する安全変数の値とに基づいて、証明文を作成するステップを備えることにより、確率暗号文、上限値、下限値、安全変数、及び、作成された証明文とに基づく検証において、確率暗号文の解読困難性を失うことなく、平文の値が指定された範囲内にあるか否かを安全変数に規定された以上の確率で正確に検証するための、証明文を作成する。
【００２９】
本発明の第１の検証方法は、確率暗号文の平文である数値が指定された範囲内にあることを証明する証明文に基づき、当該平文の値が当該指定された範囲内にあることを検証する検証装置による検証方法であって、検証対象の確率暗号文、指定された範囲を定める上限値と下限値、証明文、及び、正しく検証される確率を規定する安全変数の値とに基づいて、平文の値が指定された範囲内にあるか否かを、安全変数に規定された以上の確率で正確に検証する。
【００３０】
本発明の第１の証明文作成プログラムは、確率暗号文の平文である数値が指定された範囲内にあることを証明するための証明文を作成する証明文作成装置として機能するコンピュータ上で動作する証明文作成プログラムであって、コンピュータに、平文の値、当該平文を当該確率暗号文に暗号化するために用いられた乱数の値、指定された範囲を定める上限値と下限値、及び、正しく検証される確率を規定する安全変数の値とに基づいて、証明文を作成する処理を実行させることにより、確率暗号文、上限値、下限値、安全変数、及び、作成された証明文とに基づく検証において、確率暗号文の解読困難性を失うことなく、平文の値が指定された範囲内にあるか否かを安全変数に規定された以上の確率で正確に検証するための、証明文の作成を実行させる。
【００３１】
本発明の第１の検証プログラムは、確率暗号文の平文である数値が指定された範囲内にあることを証明する証明文に基づき、当該平文の値が当該指定された範囲内にあることを検証する検証装置として機能するコンピュータ上で動作する検証プログラムであって、コンピュータに、検証対象の確率暗号文、指定された範囲を定める上限値と下限値、証明文、及び、正しく検証される確率を規定する安全変数の値とに基づいて、平文の値が指定された範囲内にあるか否かを、安全変数に規定された以上の確率で正確に検証する処理を実行させる。
【００５３】
本発明においては、定められた区間にあることを証明したい値がコミットされている確率公開鍵暗号文を、復号することにより証明したい値と暗号化に用いた乱数を取得して、その証明文を作成することができる。暗号文の平文に関する周期が存在するために、平方数であることの証明文のみでは平方数の存在する区間を限定できないが、平方数の平方根が周期の半分の平方根より小さい（平方数が周期の半分より小さい）ことの証明文を備えることにより、平方数の存在する区間が限定でき検証を行なうことができる。
【００５４】
【発明の実施の形態】
本発明の上記及び他の目的、特徴及び利点を明確にすべく、以下添付した図面を参照しながら本発明の実施の形態につき詳細に説明する。
【００５５】
本発明において用いる確率公開鍵暗号では、確率暗号である公開鍵暗号系に属する暗号方法であって、秘密鍵を用いることにより暗号文から平文のみならず、暗号化のために用いた乱数をも求めることができるものである。
【００５６】
例えばこの暗号方式の例として文献「パブリックキー クリプトシステムズ ベイスド オン コンポジット ディグリー レジデュオシティー クラス、アドバンス イン クリプトロジー、プロシーヂング オブ ユーロクリプト '９９、エルエヌシーエス １５９２シュプリンガー フェアラーグ、２２３ページから２３８ページまで、１９９９年(Public-Key Cryptosystems Based on Composite Degree Residuosity Classes, Advance in Cryptology, Proceeding of Eurocrypt'99, LNCS 1592, Springer-Verlag, pp. 223-238, 1999)」による暗号方式などもこれに含まれる。
【００５７】
図１は、本発明の一実施の形態による証明文作成装置の構成を説明するためのブロック図であり、図２と図３は、本実施の形態による証明文の作成処理を説明するためのフローチャートである。
【００５８】
本実施の形態の確率公開鍵暗号文の平文の値が区間内にあることの証明方法は、秘密鍵により平文と暗号化に用いられた乱数との両方を求めることのできる確率公開鍵暗号方式による暗号文を用いる。また以下、暗号化する平文は数値データであり、またこれを暗号化した暗号文もまた数値データを成すものとして説明する。
【００５９】
図１を参照すると、本実施の形態の証明文作成装置は、証明文の作成に用いる各種データを入力するための入力部１０と、入力されたデータに基づき演算を行ない証明文を作成する演算処理部２０と、作成された証明文３３を出力する出力部３０を備えている。また、本実施の形態の証明文作成装置の演算処理部２０は、復号部２１、両端値との差の算出部２２、拡大部２３、分割部２４、暗号化部２５、証明文生成部２６、乱数生成部２７を備えている。
【００６０】
図２を参照すると、本実施の形態の証明文の作成処理は、まず復号部２１が、秘密鍵１２を用いて確率公開鍵暗号文１１を復号することにより、平文の値と暗号化に用いられた乱数の値を取得する（ステップ２０１）。
【００６１】
そして、この取得した平文と乱数の値を用いて、平文の値が定められた区間内にあることを検証者に対し証明するための証明文を作成する（ステップ２０２）。このステップ２０２における証明文の作成処理は、図３のフローチャートにおいて詳細に示している。
【００６２】
図３を参照すると、まず、両端値との差の算出部２２が、確率公開鍵暗号文１１の平文の値と、定められた区間の両端値との差を算出する（ステップ３０１）。つまり、定められた区間の上限値から平文の値を引いた値と、平文の値から定められた区間の下限値を引いた値とを算出する。
【００６３】
次に、拡大部２３が、両端値との差の算出部２２により算出された２つの値に対して、前記安全変数１４から計算された拡大係数をそれぞれ乗じることにより拡大して、拡大値をそれぞれ生成する（ステップ３０２）。
【００６４】
次に、分割部２４が、拡大部２３により拡大されたそれぞれの拡大値を分割する（ステップ３０３）。つまり、それぞれの拡大値に対して、それぞれの値を超えない最大の平方数をそれぞれに求め、それぞれの拡大値から対応する平方数を引くことにより差の整数をそれぞれ求める。これによりそれぞれの拡大値を、平方数と、差の整数との和に分割する。
【００６５】
次に、暗号化部２５が、分割部２４により分割して得られた数値を暗号化する（ステップ３０４）。この暗号化においては、２つの拡大値のそれぞれにおいて少なくとも１つ以上の分割された値（平方数又は差の整数）を暗号化する。例えば、２つの拡大値のそれぞれにおいて分割して得られた平方数を暗号化する方式や、２つの拡大値のそれぞれにおいて分割して得られた差の値を暗号化する方式により暗号化を行なう。また、この暗号化は、証明対象の確率公開鍵暗号文１１と同様の方式で行なうものであり、その暗号化に用いる乱数は、乱数生成部２７により生成された値を用いる。
【００６６】
次に、証明文生成部２６が、この分割部２４により分割して得られた数値の、それぞれに関する証明文を生成する。図３のフローチャートにおいては、まず各拡大値における差の整数（の絶対値）が、前記拡大係数より小さいことの証明文を生成する（ステップ３０５）。この証明文の生成においては、２つの差の整数と、前述の安全変数１４と、区間を定める変数１３（上限値と下限値）と、これらの値に基づいて定められる拡大係数と、暗号化部２５が暗号化に用いるために乱数生成部２７により生成された乱数と、証明対象の確率公開鍵暗号文１１の公開鍵等のデータを用いて証明文を生成する。
【００６７】
そして次に、各拡大値における前記平方数が、平方数を成すことと、かつその平方根が確率公開鍵暗号文１１の平文に関する周期の半分の平方根より小さい（つまり、各平方数は周期の半分より小さい）ことの証明文を生成する（ステップ３０６）。この証明文の生成においては、２つの前記平方数と、前記安全変数１４と、前記区間を定める変数１３（上限値と下限値）と、前記拡大係数と、前記暗号化のための乱数と、前記公開鍵等のデータを用いて証明文を生成する。
【００６８】
ここで、確率暗号文の平文に関する周期ｍは、平文xと暗号化のための乱数rとの組（ｘ，ｒ）と（ｘ＋π，ｒ）とが、常に同じ確率公開鍵暗号文を与える０でない最小のｍである。
【００６９】
最後に、以上の各ステップにより生成された、２つある平方数の確率公開鍵暗号文（又は、２つある差の整数の確率公開鍵暗号文）と、それぞれの差の整数（の絶対値）が、前記拡大係数より小さいことの証明文と、それぞれの平方数が、平方数を成すこととかつ平方数の平方根が確率公開鍵暗号文の周期の半分の平方根より小さい（つまり、各平方数は周期の半分より小さい）ことの証明文とを、前記確率公開鍵暗号文の平文が定められた区間にあることの証明文として出力する（ステップ３０７）。
【００７０】
図６は、本実施の形態による検証装置の構成を説明するためのブロック図であり、図７は、本実施の形態による検証装置の処理を説明するためのフローチャートである。
【００７１】
図６を参照すると、本実施の形態の検証装置は、検証処理に用いる各種データを入力するための入力部４０と、入力されたデータに基づき検証処理を行なう演算処理部５０と、検証結果を出力する出力部６０を備えている。また、本実施の形態の検証装置の演算処理部５０は、両端値との差の値の暗号文生成部５１、拡大部５２、分解部５３、検証部５４、判定部５５を備えている。
【００７２】
図７を参照すると、本実施の形態の検証の作成処理は、まず、両端値との差の値の暗号文生成部５１が、検証対象の確率公開鍵暗号文１１を、各両端値との差の値の暗号文に変換する（ステップ７０１）。つまり、区間を定める変数１３の上限値から確率公開鍵暗号文１１の平文を引いた値の確率公開鍵暗号文と、確率公開鍵暗号文１１の平文から下限値を引いた値の確率公開鍵暗号文とを生成する。
【００７３】
次に、拡大部５２が、両端値との差の値の暗号文生成部５１により生成された２つの両端値との差の値の暗号文のそれぞれを、その平文の値（端値との差）に前記安全変数１４から計算された拡大係数をそれぞれ乗じた拡大値の暗号文（拡大値暗号文）に変換する（ステップ７０２）。つまり、上限値から確率公開鍵暗号文の確率公開鍵暗号文を引いた値に、拡大係数を乗じた値の確率公開鍵暗号文である拡大値暗号文と、確率公開鍵暗号文の平文から下限値を引いた値に、拡大係数を乗じた値の確率公開鍵暗号文である拡大値暗号文とを生成する。
【００７４】
次に、分解部５３が、この拡大部５２により生成された各拡大値暗号文を、それぞれ２つの確率公開鍵暗号文の積に分解する（ステップ７０３）。この積に分解された暗号文（第１と第２の暗号文）においては、その一方（第１の暗号文）に証明文３３に含まれる（平文と両端値との差の取り方が）対応する側の分割された値の暗号文を用い、分解される他方の暗号文（第２の暗号文）は、先の証明文に含まれる暗号文との積が当該拡大値暗号文を成すものを算出して取る。
【００７５】
次に、検証部５４が、分解部５３により分解されて得られた各暗号文を検証する。図７のフローチャートにおいては、まず差の値の検証を行なう（ステップ７０４）。分解部５３により分解された各暗号文の内で、もし説明文３３から取り出されて用いられた暗号文が、ステップ３０３において差の値として分割された値の暗号文である場合には、その暗号文をここでの検証に用い、そうでない場合には分解された他方の暗号文を用いる。ここでの差の値の検証においては、証明文３３に含まれる、ステップ３０５において生成された差の整数（の絶対値）が前記拡大係数より小さいことの証明文を用いて、先の分解された暗号文の平文（の絶対値）が前記拡大係数より小さいことを検証する。ここで、検証結果が正しければ受理を、正しくなければ不受理を出力する。
【００７６】
そして検証部５４は、平方数の検証も行なう（ステップ７０５）。ここでの平方数の検証に用いる暗号文は、先の分解部５３により分解された暗号文の内で、差の検証に用いる側でない側の暗号文である。つまり、分解部５３により分解された各暗号文の内で、もし説明文３３から取り出されて用いられた暗号文が、ステップ３０３において平方数として分割された値の暗号文である場合には、その暗号文をここでの検証に用い、そうでない場合には分解された他方の暗号文を用いる。ここでの平方数の検証においては、証明文３３に含まれる、ステップ３０６において生成された平方数に関する証明文を用いて、先の分解された暗号文の平文が平方数であり、かつその平方根が確率公開鍵暗号文の周期の半分の平方根より小さい（つまり、その平文の値は周期の半分より小さい）ことを検証する。ここで、検証結果が正しければ受理を、正しくなければ不受理を出力する。
【００７７】
最後に、判定部５５が、検証部による差の値と平方数の検証に基づいて、もしその双方の検証においていずれも受理が出力された場合に限り、暗号化された数値が定められた区間内に属する旨の検証結果を出力する（ステップ７０６）。
【００７８】
次に、本実施の形態の一実施例を図面を参照して詳細に説明する。以下の実施例では、Paillierの暗号方式を使った例に即して説明する。
【００７９】
[準備]
正しく検証される確率を規定する安全変数１４としてt、lを準備する。本検証方法において、平文が定められた区間にないにも関わらず、検証で平文が定められた区間にあると認められてしまう確率が2-t以下である。本証明方法において、平文が定められた区間にあるにも関わらず、証明に失敗する確率が21-l以下となる。これらの確率を考慮して安全変数t、lを選ぶ。
また、区間を定める変数１３として最小値をa、最大値をbとする。
変数Tを、T=2(t+l+1)+|b-a|と定義する（ここで|b-a|とは、b-aのbit数のことである。）。後述のn=pqは、22T+1＜nとなる様に選ぶ。拡大係数を、2Tと定める。
Dを、√{2T(b-a)}を超えない最大の整数とする。
【００８０】
また以下、x^aとは、xのa乗（つまり、xa）を示すものとする。
p、qを２つの素数として、λをp-1とq-1の最小公倍数とする。
gは、gλmod n2とnが互いに素になるように選ばれているとする。
n=pqと、gを公開鍵とする。
平文xの乱数rによる暗号文eを、e=gxrnmod n2とする。
【００８１】
本実施例の確率公開鍵暗号文の平文が区間内にあることの証明文の作成方法を、図面を参照して説明する。図４、図５は、本実施例の証明文の作成を説明するための図である。
【００８２】
[平文と暗号化のための乱数を求める］（ステップ２０１）
まず、図４の４０１において、証明対象の確率公開鍵暗号文１１であるeが入力されたら、その平文４０２であるxを、x={(eλmod n2)-1}/{(gλmod n2)-1}により求め、更に、暗号化のために用いられた乱数４０３であるrを、秘密鍵１２であるλを用いてe'=eg-xmod n、n'=n-1mod λ、r=e'n'mod nとして求め、この平文xと乱数rを出力する。
【００８３】
［平文が定められた区間にあることの証明文を生成する］（ステップ２０２）
［区間の両端値との差を算出］（ステップ３０１）
図４の４０４において、平文４０２であるxと、区間を定める変数１３の最小値a、最大値bより、その差（４０５、４０６）であるx-aとb-xを求める。
【００８４】
なお以降は、２つの両端値との差x-aとb-xに対して全く同じ処理を行なうために、片方のみについて記述する。図４の証明文３３の（b-xによる）上半分（３３−１、３３−２、３３−３）を生成する過程は、証明文の（x-aによる）下半分（３３−４、３３−５、３３−６）を生成する過程と同様であるため図中では点線で示されている。ここで、両端値との差の一方であるx-aを、Xと表す（これは、点線により示されるb-xの側においても以下同様である）。
【００８５】
［拡大］（ステップ３０２）
図４の４０７において、このXに、安全変数等から計算された拡大係数2Tを用いて、2TXと拡大する。
【００８６】
［分割］（ステップ３０３）
図４の４０９において、その自乗が2TXを超えない最大の整数vを求め、差の値z（=2TX-v2）を算出する。これにより、拡大値2TXを、平方数４１１であるv2と、差の値４１０であるzに分割する。
【００８７】
［暗号化］（ステップ３０４）
本実施例においては、分離された数値の内で、差の値zを平文として暗号化する。
【００８８】
図４の４１２において、0≦r[1]＜nなる任意の乱数４１３であるr[1]を無作為に選び、図４の４１４において、差の値zの暗号文３３−６であるe[1]を、e[1]=gzr[1]nmod n2により計算する。ここで、R=r^{2T}mod n、r[2]=R/r[1]mod n、e[2]=g^{v2}r[2]nmod n2と計算すると、e[1]e[2]=gXRnmod n2が得られる。右辺は{e/ga}^{2T}mod n2又は、{gb/e}^{2T}mod n2である。
【００８９】
［差の値に関する証明文の生成］（ステップ３０５）
ここでは、暗号文e[1]の平文zの絶対値が、拡大係数2Tを超えないことを証明するための証明文を生成する。
【００９０】
0≦μ≦2Tなるμ、0≦ρ＜nなるρを無作為に選び、w=gμρnmod n2を計算する。更に、c=Hash(e[1]、w)mod 2tを求める。ここでHashとはハッシュ関数である。更に、d[1]=μ+zc、d[2]=ρr[1]nmod nを求める。
【００９１】
もし、c2T/2+1√(b-a)≦d[1]≦2Tならば、c、d[1]、d[2]のデータの組を、平文zの絶対値の上限の証明文３３−５として出力する。そうでない場合には、最初からやり直す。このやり直す確率は21-l以下となる。
【００９２】
［平方数に関する証明文の生成］（ステップ３０６）
本ステップの処理を図５を参照して説明する。ここでは、先の暗号文e[2]=gXRnmod n2の平文４１１を成すv2の値が、平方数であることと、その平方根５０２であるvが2t+lDを超えないことを証明する。
【００９３】
最初に、図５の５０４において、0≦τ＜nなる任意の乱数５０３であるτを選び、図５の５０７において、vの暗号文５０５であるw[0]を、w[0]=gvτnmod n2により計算する。
【００９４】
次に、図５の５０８において、乱数r[1]、r、安全変数１４から、R=r^{2T}mod n、r[2]=R/r[1]mod nを求め、ρ'（５０９）を、ρ'=τ-vr[2]mod nにより計算する。
【００９５】
更に、0≦μ'≦2t+lDなる任意の乱数５１０であるμ'、0≦σ＜nなる任意の乱数５１１であるσ、0≦σ'＜nなる任意の乱数５１２であるσ'、を無作為に選び、図５の５１３と５１４において、生成元５０６であるgと暗号文w[0]をそれぞれ用いて、μ'の暗号文であるw[1]=gμ'σnmod n2、w[2]=w[0]μ'σ'nmod n2を計算する（ステップ４１２、４１３）。
【００９６】
次に、図５の５１５において、ハッシュ関数Hash（）を用いて、ハッシュ値c'=Hash(e[1]、w[1]、w[2])mod 2tを求める。次に、図５の５１６、５１７、５１８において、d[3]=μ'+vc'、d[4]=στc'mod n、d[5]=σ'ρ'c'mod n、を計算する。
【００９７】
そして、図５の５１９において、証拠の大きさの確認を行ない、もしc'D≦d[3]≦2t+lDならば、c'、w[0]、d[3]、d[4]、d[5]を証明文３３−４として出力する。その他の場合は最初からやり直す。このやり直す確率は21-l以下となる。
【００９８】
［証明文の出力］（ステップ３０７）
証明部は、Xがx-aである場合とb-xである場合についてそれぞれ、分割された値の暗号文（e[1]）と、差の値の証明文（c、d[1]、d[2]）と、平方数の証明文（c'、w[0]、d[3]、d[4]、d[5]）とを、平文が区間内にあることの証明文３３として出力する。
【００９９】
本発明の確率公開鍵暗号文の平文が区間内にあることの検証方法を以下に図面を参照して説明する。図８、図９は、本実施例の検証処理を説明するための図である。
【０１００】
［両端値との差の値の暗号文を生成］（ステップ７０１）
図８の８０１において、検証対象の確率公開鍵暗号文１１であるeと、区間を定める変数１３の最小値a、最大値bより、上限値から確率公開鍵暗号文の平文を引いた値の確率公開鍵暗号文８０３であるgb/e mod n2=gb-xrnmod n2と、確率公開鍵暗号文の平文から下限値を引いた値の確率公開鍵暗号文８０２であるe/gamod n2=gx-arnmod n2とを生成する。
【０１０１】
以降、２つの両端値との差x-aとb-xによる２つの暗号文に対して、全く同じ処理を行なうために片方のみについて記述する。この暗号文８０２の平文であるx-aをXと表す（また、暗号文８０３の平文であるb-xをXと表す場合も同様である）。Xの暗号文８０６であるE=gXrnmod n2に関して、Xが0以上かつ暗号文の周期の半分以下であることを検証する。
【０１０２】
［拡大値の暗号文に変換］（ステップ７０２）
図８の８０４において、暗号文８０６であるEに対して、Tから計算された拡大係数2Tを用いて、E^{2T}mod n2=g^{2TX}rnmod n2を計算する。これにより拡大値である2TXの暗号文が算出される。
【０１０３】
［分解］（ステップ７０３）
図８の８０８において、拡大値の暗号文であるE^{2T}mod n2を、証明文３３に含まれる暗号文３３−６であるe[1]を用いて、e[1]（８１０）とe[2]（８１１）、e[2]=E^{2T}/e[1]mod n2の積に分解する。e[1]e[2]=E^{2T}である。
【０１０４】
［差の値の検証］（ステップ７０４）
図８の８１２において、e[1]の平文(z)の絶対値が2Tより小さいことを検証する。c2T/2+1√(b-a)≦d[1]≦2Tであり、かつc=Hash(e[1]、gd[1]d[2]ne[1]-cmod n2)mod 2tであれば、暗号文e[1]の平文の絶対値が2Tより小さいことを受理する。
【０１０５】
［平方数の検証］（ステップ７０５）
図８の８１２において、暗号文e[2]の平文(v2)が平方数であり、その平方根が2t+lDを超えないことを検証する。
【０１０６】
本ステップの処理を図９を参照して説明する。
図９の９０１において、c'D≦d[3]≦2t+lDであることを確認する。
図９の９０２において、w[1]を、w[1]=gd[3]d[4]nw[0]-c'mod n2と計算する。
図９の９０３において、w[2]を、w[2]=w[0]d[3]d[5]ne[1]-c'mod n2と計算する。
図９の９０４において、ハシュ値をHash(e[1]、w[1]、w[2])=Hash(e[1]、gd[3]d[4]nw[0]-c'mod n2、w[0]d[3]d[5]ne[1]-c'mod n2、)mod 2tと計算して、図９の９０５において、これがc'に等しいかどうかを確認し、もし等しい場合には、暗号文e[2]の平文(v2)が平方数でありその平方根が2t+lDを超えないことを受理する。
【０１０７】
[検証結果の出力］（ステップ７０６）
図８の８１４において、検証結果をまとめて、２つの値x-aとb-xによる２つの暗号文に対する、ステップ７０４の差の値の検証と、ステップ７０５の平方数の検証とによる両方の出力がともに受理であれば受理を、片方でも不受理であれば不受理を、検証結果８１５として出力する。
【０１０８】
次に、上記説明された証明文の作成と検証の方法における、正当性について説明する。
【０１０９】
［正当性（１）］
本発明の確率公開鍵暗号文の平文が区間内にあることの証明方法における、差の値に関するステップ３０５の証明文の作成と、その証明文によるステップ７０４による検証の正当性について述べる。
【０１１０】
式gμρn=gd[1]d[2]ne[1]-cmod n2が保証されていない場合には、式c=Hash(e[1]、gd[1]d[2]ne[1]-cmod n2)mod 2tが成立する確率は2-t以下になる。式gμρn=gd[1]d[2]ne[1]-cmod n2が成り立つためには、d[1]=μ+zcが成り立たねばならない。平文xが定められた区間にある場合、zは-2T/2+1√(b-a)≦z≦2T/2+1√(b-a)となる。この時に、c2T/2+1√(b-a)≦d[1]≦2Tが成り立たない可能性は、2-l以下である。また、この時にzが、-2T/2+1√(b-a)≦z≦2T/2+1√(b-a)のいずれの値である可能性もd[1]によらずに同じである。zが、-2T≦z≦2Tにない場合に、c2T/2+1√(b-a)≦d[1]≦2Tが成り立つ可能性は、2-t以下である。
【０１１１】
［正当性（２）］
本発明の確率公開鍵暗号文の平文が区間内にあることの証明方法における、平方数に関するステップ３０６の証明文の作成と、その証明文によるステップ７０５による検証の正当性について述べる。
【０１１２】
式gμ'σn=gd[3]d[4]nw[0]-c'mod n2と、式w[0]μ'σ'n=w[0]d[3]d[5]ne[1]-c'mod n2とが保証されていない場合においては、式c'=Hash(e[1]、w[1]、w[2])=Hash(e[1]、gd[3]d[4]nw[0]-c'mod n2、w[0]d[3]d[5]ne[1]-c'mod n2、)mod 2tが成立する確率は2-t以下になる。式gμ'σn=gd[3]d[4]nw[0]-c'mod n2と、式w[0]μ'σ'n=w[0]d[3]d[5]ne[1]-c'mod n2とが成り立つためには、d[3]=μ'+vc'が成り立たねばならない。そのため、e[2]の平文はvの平方であることが保証される。平文xが定められた区間にある場合、vは-D≦v≦Dとなる。この時に、cD≦d[3]≦2t+lDが成り立たない可能性は、2-l以下である。また、この時vの-D≦v≦Dのいずれの値である可能性もd[3]によらずに同じである。すなわち、e[2]の平文が0以上2T(b-a)以下のいずれの値である可能性もd[3]によらずに同じである。
【０１１３】
vが、-2t+l≦v≦2t+lDにあることが保証されていない場合に、cD≦d[3]≦2t+lDが成り立つ可能性は、2-t以下である。すなわち、e[2]の平文が0以上22(t+l)2T(b-a)以下でない場合にcD≦d[3]≦2t+lDが成り立つ可能性は、2-t以下である。22T+1＜nであったので、e[2]の平文はn/2より小さいことが保証される。
【０１１４】
［正当性（３）］
正当性（１）、（２）においてv、zの値の大きさが知られないためのv、zの大きさに対する条件が、v、zに対して保証される大きさの区間よりも小さい。しかし、xが定められた区間に属すればv、zは大きさの知られない区間に属する。また、xが定められた区間になければ、v、zはそれらに対して保証される大きさの区間から出てしまう。
【０１１５】
なお、本実施の形態の証明文の作成と検証は、証明文作成装置の演算処理部２０や、検証装置の演算処理部５０等の機能や、その他の機能をハードウェア的に実現することは勿論として、各機能を備えるコンピュータプログラムを、コンピュータ処理装置のメモリにロードされることで実現することができる。このコンピュータプログラムは、磁気ディスク、半導体メモリその他の記録媒体９０、９１に格納される。そして、その記録媒体からコンピュータ処理装置にロードされ、コンピュータ処理装置の動作を制御することにより、上述した各機能を実現する。
【０１１６】
以上好ましい実施の形態及び実施例をあげて本発明を説明したが、本発明は必ずしも上記実施の形態及び実施例に限定されるものではなく、その技術的思想の範囲内において様々に変形して実施することができる。
【０１１７】
【発明の効果】
以上説明したように、本発明によれば、証明者以外が作成したコミットメントに対しても、証明者がそのコミットメントからコミットされた数値を求め、コミットされた数値が定められた区間にある場合は、コミットされた数が定められた区間にあることを、コミットされた数を隠したまま証明することができる。
【図面の簡単な説明】
【図１】  本発明の一実施の形態による証明文作成装置の構成を説明するためのブロック図である。
【図２】  本発明の一実施の形態による証明文作成装置の処理を説明するためのフローチャートである。
【図３】  本発明の一実施の形態による証明文作成装置の処理を説明するためのフローチャートである。
【図４】  本発明の一実施の形態による証明文作成装置の一実施例を説明するための図である。
【図５】  本発明の一実施の形態による証明文作成装置の一実施例を説明するための図である。
【図６】  本発明の一実施の形態による検証装置の構成を説明するためのブロック図である。
【図７】  本発明の一実施の形態による検証装置の処理を説明するためのフローチャートである。
【図８】  本発明の一実施の形態による検証装置の一実施例を説明するための図である。
【図９】  本発明の一実施の形態による検証装置の一実施例を説明するための図である。
【図１０】  従来の証明文作成装置の構成を説明するためのブロック図である。
【図１１】  従来の証明文作成装置の処理を説明するためのフローチャートである。
【図１２】  従来の証明文作成装置の処理を説明するための図である。
【符号の説明】
１０  証明文作成装置の入力部
１１  確率公開鍵暗号文
１２  秘密鍵
１３  区間を定める定数
１４  安全定数
２０  証明文作成装置の演算処理部
２１  復号部
２２  両端値との差の算出部
２３  拡大部
２４  分割部
２５  暗号化部
２６  証明文生成部
２７  乱数生成部
３０  証明文作成装置の出力部
３１  分割された数値の暗号文
３２  分割された数値に関する証明文
３３  暗号化された数値が定められた区間内に属することを証明する証明文
４０  検証装置の入力部
５０  検証装置の演算処理部
５１  両端値との差の値の暗号文生成部
５２  拡大部
５３  分解部
５４  検証部
５５  判定部
６０  検証装置の出力部
６１  検証結果
９０、９１  記録媒体
【図１】
0004743364.tif 000002
【図２】
0004743364.tif 000003
【図３】
0004743364.tif 000004
【図４】
0004743364.tif 000005
【図５】
0004743364.tif 000006
【図６】
0004743364.tif 000007
【図７】
0004743364.tif 000008
【図８】
0004743364.tif 000009
【図９】
0004743364.tif 000010
【図１０】
0004743364.tif 000011
【図１１】
0004743364.tif 000012
【図１２】
0004743364.tif 000013