(57)【要約】  合成数位数のペアリング演算を使わずに、高機能な暗号システムを実現する。ランダム行列選択部１４２は、暗号パラメータ設定装置１００が算出した複数のペアリング対数係数ηｉに基づいて、所定の条件を満たす複数の行列のなかからランダム行列Ｖ＊をランダムに選択する。出力基底算出部１４３は、暗号パラメータ設定装置１００が算出した複数の基底因子Ｄ〜ｊと、ランダム行列選択部１４２が選択したランダム行列Ｖ＊とに基づいて、複数の出力基底ｇｋを算出する。
2009090750.tif 000002
【特許請求の範囲】
【請求項１】
データを処理する処理装置と、ランダム因子選択部と、基底因子生成部と、ペアリング対数算出部と、パラメータ設定部とを有し、
上記ランダム因子選択部は、上記処理装置を用いて、ランダム因子Ｄ＊として、巡回群Ｇ’の複数の要素のなかから要素を選択し、
上記基底因子生成部は、上記処理装置を用いて、上記ランダム因子選択部が選択したランダム因子Ｄ＊に基づいて、複数の写像Ｇｊ（ただし、上記複数の写像Ｇｊは上記巡回群Ｇ’から複数の巡回群Ｇ’ｊそれぞれへの準同型写像。）により上記ランダム因子Ｄ＊を写像して、複数の基底因子Ｄ〜ｊを算出し、
上記ペアリング対数算出部は、上記処理装置を用いて、群Ｇ（ただし、上記群Ｇは上記複数の巡回群Ｇ’ｊの直積で、上記群Ｇに含まれる二つの要素の間の双線形ペアリング演算によるペアリング値を計算可能。）における上記複数の基底因子Ｄ〜ｊの間のペアリング値の対数を算出して、複数のペアリング対数係数ηｉとし、
上記パラメータ設定部は、上記処理装置を用いて、上記基底因子生成部が算出した複数の基底因子Ｄ〜ｊと、上記ペアリング対数算出部が算出した複数のペアリング対数係数ηｉとを、暗号演算に用いられる暗号パラメータとする
ことを特徴とする暗号パラメータ設定装置。
【請求項２】
上記ランダム因子選択部は、上記処理装置を用いて、ランダム因子Ｄ＊として、有限体Ｆｐ上における代数曲線Ｃのヤコビ多様体ＪａｃＣの因子がなす群の部分群である巡回群Ｇ’の複数の要素のなかから要素を選択し、
上記基底因子生成部は、上記処理装置を用いて、上記有限体Ｆｐを有限代数拡大した拡大体Ｋ上における代数曲線Ｃのヤコビ多様体ＪａｃＣの因子がなす群における複数の自己準同型写像を上記複数の写像Ｇｊとして、上記複数の基底因子Ｄ〜ｊを算出する
ことを特徴とする請求項１に記載の暗号パラメータ設定装置。
【請求項３】
データを処理する処理装置と、ランダム因子選択部と、基底因子生成部と、離散対数算出部と、ペアリング対数算出部と、パラメータ設定部とを有し、
上記ランダム因子選択部は、上記処理装置を用いて、有限体Ｆｐ上における種数ｄの代数曲線Ｃ（ただし、上記有限体Ｆｐの位数ｐは素数。上記種数ｄは２以上の整数。）のヤコビ多様体ＪａｃＣの複数の因子のなかから、ランダム因子Ｄ＊を選択し、
上記基底因子生成部は、上記処理装置を用いて、上記ランダム因子選択部が選択したランダム因子Ｄ＊に基づいて、複数の基底因子Ｄ〜ｊを算出し、
上記離散対数算出部は、上記処理装置を用いて、複数の離散対数ｌκを算出し、
上記ペアリング対数算出部は、上記処理装置を用いて、上記離散対数算出部が算出した複数の離散対数ｌκに基づいて、複数のペアリング対数係数ηｉを算出し、
上記パラメータ設定部は、上記処理装置を用いて、上記基底因子生成部が算出した複数の基底因子Ｄ〜ｊと、上記ペアリング対数算出部が算出した複数のペアリング対数係数ηｉとに基づいて、暗号演算に用いられる暗号パラメータを設定する
ことを特徴とする暗号パラメータ設定装置。
【請求項４】
上記ランダム因子選択部は、上記処理装置を用いて、有限体Ｆｐ上における超楕円曲線Ｃ：Ｙ２＝Ｘｗ＋１（ただし、ｗは素数で、ｗ＝２ｄ＋１。上記位数ｐを上記素数ｗで割った余りａは位数がｗの有限体Ｆｗの乗法群Ｆｗ＊の生成元。）のヤコビ多様体ＪａｃＣの複数の因子のなかから、ランダム因子Ｄ＊を選択し、
上記基底因子生成部は、上記処理装置を用いて、上記ランダム因子選択部が選択したランダム因子Ｄ＊に基づいて、上記ランダム因子Ｄ＊にガウス和作用素Ｇｊ（ただし、ｊは０以上２ｄ−１以下の整数。上記ガウス和作用素Ｇｊは数１に示す拡大体Ｋ上におけるヤコビ多様体ＪａｃＣ上の作用。上記拡大体Ｋは上記有限体Ｆｐを２ｄ次拡大した代数拡大体。）を作用させて、上記拡大体Ｋ上におけるヤコビ多様体ＪａｃＣの複数の基底因子Ｄ〜ｊ＝Ｇｊ（Ｄ＊）を算出し、
上記離散対数算出部は、上記処理装置を用いて、上記余りａに基づいて、数２を満たす複数の離散対数ｌκ（ただし、κは１以上２ｄ−１以下の整数。上記複数の離散対数ｌκは０以上２ｄ−１以下の整数。）を算出し、
上記ペアリング対数算出部は、上記処理装置を用いて、上記離散対数算出部が算出した複数の離散対数ｌκに基づいて、数３に示す計算式を計算して、複数のペアリング対数係数ηｉ（ただし、ｉは０以上２ｄ−１以下の整数。上記複数のペアリング対数係数ηｉは０以上ｒ−１以下の整数。ｒは上記ランダム因子Ｄ＊の位数。）を算出する
ことを特徴とする請求項３に記載の暗号パラメータ設定装置。
【数１】
2009090750.tif 000024
ただし、ρは上記拡大体Ｋ上における超楕円曲線Ｃ上の作用（ｘ，ｙ）→（ζｘ，ｙ）に対応する上記ヤコビ多様体ＪａｃＣ上の作用。ζは、１のｗ乗根。
【数２】
2009090750.tif 000025
【数３】
2009090750.tif 000026
【請求項５】
データを処理する処理装置と、データを記憶する記憶装置と、基底因子記憶部と、ペアリング対数記憶部と、出力基底算出部と、鍵算出部とを有し、
上記基底因子記憶部は、上記記憶装置を用いて、複数の基底因子Ｄ〜ｊとして、群Ｇの複数の要素（ただし、上記群Ｇは位数が同じ複数の巡回群の直積で、上記群Ｇに含まれる二つの要素の間の双線形ペアリング演算によるペアリング値を計算可能。上記複数の基底因子Ｄ〜ｊは互いに一次独立。）を記憶し、
上記ペアリング対数記憶部は、上記記憶装置を用いて、複数のペアリング対数係数ηｉとして、上記複数の基底因子Ｄ〜ｊの間のペアリング値の対数を記憶し、
上記出力基底算出部は、上記処理装置を用いて、上記基底因子記憶部が記憶した複数の基底因子Ｄ〜ｊと、上記ペアリング対数記憶部が記憶した複数のペアリング対数係数ηｉとに基づいて、上記群Ｇの要素である複数の出力基底ｇｋ（ただし、上記複数の出力基底ｇｋのうち少なくともいずれか二つの出力基底ｇｋの間のペアリング値が１。）を算出し、
上記鍵算出部は、上記処理装置を用いて、上記出力基底算出部が算出した複数の出力基底ｇｋに基づいて、暗号演算に用いられる鍵を算出する
ことを特徴とする鍵生成装置。
【請求項６】
上記鍵生成装置は、更に、ランダム行列選択部を有し、
上記ランダム行列選択部は、上記処理装置を用いて、上記ペアリング対数記憶部が記憶した複数のペアリング対数係数ηｉに基づいて、関係式Ｍ’＝Ｖ・Ｍ・ＶＴ（ただし、Ｍ’はｍ’μνをμ行ν列成分とするｂ次の正方行列。ｂは上記出力基底算出部が算出する複数の出力基底ｇｋの数。Ｖは０以上ｒ−１以下の整数を値にとる変数ｃμνをμ行ν列成分とするｂ行ｆ列の行列。ｒは上記複数の巡回群の位数。ｆは上記基底因子記憶部が記憶した複数の基底因子Ｄ〜ｊの数。Ｍは上記ペアリング対数記憶部が記憶したペアリング対数係数ηｉのうち基底因子Ｄ〜μと基底因子Ｄ〜νとの間のペアリング対数係数ηｉをμ行ν列成分とするｆ次の正方行列。ＶＴは上記行列Ｖを転置したｆ行ｂ列の行列。）においてｍ’ｕｖ＝０（ただし、ｕ及びｖは１以上ｂ以下の所定の整数。）となる複数の行列Ｖのなかから、ランダム行列Ｖ＊をランダムに選択し、
上記出力基底算出部は、上記処理装置を用いて、上記基底因子記憶部が記憶した複数の基底因子Ｄ〜ｊと、上記ランダム行列選択部が選択したランダム行列Ｖ＊とに基づいて、上記複数の出力基底ｇｋ＝ｖｋ・Ｄ〜（ただし、ｋは１以上ｂ以下の整数。ｖｋは上記ランダム行列Ｖ＊の第ｋ行ベクトル。Ｄ〜は上記複数の基底因子Ｄ〜ｊをｊ＋１行目の成分とするｆ次の縦ベクトル。）を算出する
ことを特徴とする請求項５に記載の鍵生成装置。
【請求項７】
上記基底因子記憶部は、上記記憶装置を用いて、上記複数の基底因子Ｄ〜ｊとして、有限体Ｆｐを有限代数拡大した拡大体Ｋ上における代数曲線Ｃのヤコビ多様体ＪａｃＣの複数の因子がなす群の部分群である群Ｇの複数の要素を記憶する
ことを特徴とする請求項５に記載の鍵生成装置。
【請求項８】
データを処理する処理装置と、データを記憶する記憶装置と、基底因子記憶部と、ペアリング対数記憶部と、ランダム行列選択部と、出力基底算出部と、鍵算出部とを有し、
上記基底因子記憶部は、上記記憶装置を用いて、上記請求項４に記載の暗号パラメータ設定装置が算出した複数の基底因子Ｄ〜ｊを記憶し、
上記ペアリング対数記憶部は、上記記憶装置を用いて、上記暗号パラメータ設定装置が算出した複数のペアリング対数係数ηｉを記憶し、
上記ランダム行列選択部は、上記処理装置を用いて、複数の整数ｍ’μν（μ及びνは、１以上ｂ以下の整数。ｂは２以上２ｄ以下の整数。）が満たすべき所定の条件に基づいて、関係式：Ｍ’＝Ｖ・Ｍ・ＶＴ（ただし、Ｍ’は整数ｍ’μνをμ行ν列成分とするｂ次の正方行列。Ｖは０以上ｒ−１以下のいずれかの整数を値とする変数ｃμνをμ行ν列成分とするｂ行２ｄ列の行列。ＶＴは上記行列Ｖを転置した２ｄ行ｂ列の正方行列。Ｍは、整数ｍμνをμ行ν列成分とする２ｄ次の正方行列。上記整数ｍμνは、μ＋ν＝２ｄ＋１のときην＋１、μ＋ν≠２ｄ＋１のとき０。）を満たす複数の行列Ｖのなかから、ランダム行列Ｖ＊をランダムに選択し、
上記出力基底算出部は、上記処理装置を用いて、上記基底因子記憶部が記憶した複数の基底因子Ｄ〜ｊと、上記ランダム行列選択部が選択したランダム行列Ｖ＊とに基づいて、複数の出力基底ｇｋ＝ｖｋ・Ｄ〜（ただし、ｋは１以上ｂ以下の整数。ｇｋは上記拡大体Ｋ上におけるヤコビ多様体ＪａｃＣの因子。ｖｋは上記ランダム行列Ｖ＊の第ｋ行ベクトル。Ｄ〜は上記複数の基底因子Ｄ〜ｊをｊ＋１行目の成分とする２ｄ次の縦ベクトル。）を算出し、
上記パラメータ算出部は、上記処理装置を用いて、上記出力基底算出部が算出した複数の出力基底ｇｋと上記ランダム行列選択部が選択したランダム行列Ｖ＊とに基づいて、暗号演算に用いられる鍵を算出する
ことを特徴とする鍵生成装置。
【請求項９】
上記鍵生成装置は、更に、一致条件入力部を有し、
上記一致条件入力部は、上記処理装置を用いて、上記複数の出力基底ｇｋのうち、出力基底ｇμと出力基底ｇνとのペアリング値ｅ（ｇμ，ｇν）が１になるべき出力基底の組を示す整数の組（μ，ν）を入力し、
上記ランダム行列選択部は、上記処理装置を用いて、上記一致条件入力部が入力した整数の組（μ，ν）に基づいて、条件：ｍ’μν＝０を満たすランダム行列Ｖ＊を選択する
ことを特徴とする請求項８に記載の鍵生成装置。
【請求項１０】
上記鍵生成装置は、更に、不一致条件入力部を有し、
上記不一致条件入力部は、上記処理装置を用いて、上記複数の出力基底ｇｋのうち、出力基底ｇμと出力基底ｇνとのペアリング値ｅ（ｇμ，ｇν）が１になるべきでない出力基底の組を示す整数の組（μ，ν）を入力し、
上記ランダム行列選択部は、上記処理装置を用いて、上記不一致条件入力部が入力した整数の組（μ，ν）に基づいて、条件ｍ’μν≠０を満たすランダム行列Ｖ＊を選択する
ことを特徴とする請求項８に記載の鍵生成装置。
【請求項１１】
請求項１に記載の暗号パラメータ設定装置と、請求項５に記載の鍵生成装置とを有し、
上記基底因子記憶部は、上記記憶装置を用いて、上記暗号パラメータ設定装置が算出した複数の基底因子Ｄ〜ｊを記憶し、
上記ペアリング対数記憶部は、上記記憶装置を用いて、上記暗号パラメータ設定装置が算出した複数のペアリング対数係数ηｉを記憶する
ことを特徴とする暗号システム。
【請求項１２】
上記暗号システムは、更に、暗号文生成装置と、暗号文復号装置とを有し、
上記暗号文生成装置は、上記暗号パラメータ設定装置が設定した暗号パラメータと、上記鍵生成装置が生成した鍵とに基づいて、暗号文を生成し、
上記暗号文復号装置は、上記暗号パラメータ設定装置が設定した暗号パラメータと、上記鍵生成装置が生成した鍵とに基づいて、上記暗号文生成装置が生成した暗号文を復号する
ことを特徴とする請求項１１に記載の暗号システム。
【請求項１３】
上記暗号システムは、複数の暗号文復号装置を有し、更に、不正者追跡装置を有し、
上記鍵生成装置は、更に、公開鍵設定部と、個人鍵設定部と、追跡鍵設定部とを有し、
上記公開鍵設定部は、上記暗号文生成装置が暗号文を生成するために用いる公開鍵を設定し、
上記個人鍵設定部は、上記暗号文生成装置が生成した暗号文を上記複数の暗号文復号装置それぞれが復号するために用いる複数の個人鍵を設定し、
上記追跡鍵設定部は、上記不正者追跡装置が個人鍵の漏洩元を判別するために用いる追跡鍵を設定し、
上記暗号文生成装置は、上記鍵生成装置が設定した公開鍵に基づいて、暗号文を生成し、
上記複数の暗号文復号装置は、それぞれ、上記鍵生成装置が設定した複数の個人鍵のうち、上記暗号文復号装置の利用者に対応する個人鍵に基づいて、上記暗号文生成装置が生成した暗号文を復号し、
上記不正者追跡装置は、上記鍵生成装置が設定した追跡鍵に基づいて、暗号文を生成し、生成した暗号文を、上記暗号文生成装置が生成した暗号文を復号する海賊復号装置に復号させた結果を解析して、上記海賊復号装置が暗号文の復号に用いた個人鍵を判別する
ことを特徴とする請求項１２に記載の暗号システム。
【請求項１４】
上記暗号パラメータ設定装置は、請求項４に記載の暗号パラメータ設定装置であり、
上記鍵生成装置は、請求項８に記載の鍵生成装置であり、
上記ランダム因子選択部は、上記処理装置を用いて、有限体Ｆｐ上における超楕円曲線Ｃ：Ｙ２＝Ｘ５＋１（ただし、素数ｐを５で割った余りａは２または３。）のヤコビ多様体ＪａｃＣの複数の因子のなかから、ランダム因子Ｄ＊を選択し、
上記ランダム行列選択部は、上記処理装置を用いて、条件：ｍ’１２＝ｍ’２１＝ｍ’３４＝ｍ’４３＝ｍ’１４＝ｍ’４１＝ｍ’２３＝ｍ’３２＝０，ｍ’１１≠０，ｍ’２２≠０，ｍ’３３≠０，ｍ’４４≠０を満たす４行４列のランダム行列Ｖ＊を選択し、
上記出力基底算出部は、上記処理装置を用いて、上記基底因子記憶部が記憶した複数の基底因子Ｄ〜ｊと、上記ランダム行列選択部が算出したランダム行列Ｖ＊とに基づいて、四つの出力基底ｇｋ＝ｖｋ・Ｄ〜（ただし、ｋは１以上４以下の整数。）を算出し、
上記鍵算出部は、利用者人数入力部と、公開行基底算出部と、公開列基底算出部と、行乱数生成部と、列乱数生成部と、ペアリング乱数生成部と、共通乱数生成部と、公開共通因子算出部と、公開行第一因子算出部と、公開行第二因子算出部と、公開ペアリング値算出部と、公開列因子算出部と、公開鍵設定部と、個人因子算出部と、個人鍵設定部とを有し、
上記利用者人数入力部は、上記処理装置を用いて、利用者の数ｎを表わす整数ｎ１及び整数ｎ２（ただし、ｎ＝ｎ１ｎ２）を入力し、
上記公開行基底算出部は、上記処理装置を用いて、上記出力基底算出部が算出した出力基底ｇ１と出力基底ｇ２とに基づいて、上記ヤコビ多様体ＪａｃＣの因子ｇ＝ｇ１＋ｇ２を算出し、
上記公開列基底算出部は、上記処理装置を用いて、上記出力基底算出部が算出した出力基底ｇ３と出力基底ｇ４とに基づいて、上記ヤコビ多様体ＪａｃＣの因子ｈ＝ｇ３＋ｇ４を算出し、
上記行乱数生成部は、上記処理装置を用いて、上記利用者人数入力部が入力した整数ｎ１に基づいて、ｎ１個の乱数ｒｘ（ただし、ｘは１以上ｎ１以下の整数。乱数ｒｘは１以上ｒ−１以下の整数。）をランダムに生成し、
上記列乱数生成部は、上記処理装置を用いて、上記利用者人数入力部が入力した整数ｎ２に基づいて、ｎ２個の乱数ｃｙ（ただし、ｙは１以上ｎ２以下の整数。乱数ｃｙは１以上ｒ−１以下の整数。）をランダムに生成し、
上記ペアリング乱数生成部は、上記処理装置を用いて、上記利用者人数入力部が入力した整数ｎ１に基づいて、ｎ１個の乱数αｘ（ただし、ｘは１以上ｎ１以下の整数。乱数αｘは１以上ｒ−１以下の整数。）をランダムに生成し、
上記共通乱数生成部は、上記処理装置を用いて、乱数β（ただし、乱数βは１以上ｒ−１以下の整数。）をランダムに生成し、
上記公開共通因子算出部は、上記処理装置を用いて、上記出力基底算出部が算出した出力基底ｇ２と、上記共通乱数生成部が生成した乱数βとに基づいて、上記ヤコビ多様体ＪａｃＣの因子Ｅ＝β・ｇ２を算出し、
上記公開行第一因子算出部は、上記処理装置を用いて、上記出力基底算出部が算出した出力基底ｇ２と、上記行乱数生成部が生成したｎ１個の乱数ｒｘと、上記共通乱数生成部が生成した乱数βとに基づいて、上記ヤコビ多様体ＪａｃＣのｎ１個の因子Ｅｘ＝β・ｒｘ・ｇ２（ただし、ｘは１以上ｎ１以下の整数。）を算出し、
上記公開行第二因子算出部は、上記処理装置を用いて、上記出力基底算出部が算出した出力基底ｇ４と、上記行乱数生成部が生成したｎ１個の乱数ｒｘと、上記共通乱数生成部が生成した乱数βとに基づいて、上記ヤコビ多様体ＪａｃＣのｎ１個の因子Ｆｘ＝β・ｒｘ・ｇ４（ただし、ｘは１以上ｎ１以下の整数。）を算出し、
上記公開ペアリング値算出部は、上記処理装置を用いて、上記出力基底算出部が算出した出力基底ｇ２と、上記ペアリング乱数生成部が生成したｎ１個の乱数αｘと、上記共通乱数生成部が生成した乱数βとに基づいて、ｎ１個のペアリング値Ｇｘ＝ｅ（ｇ４，ｇ４）β・αｘ（ただし、ペアリングｅはｅ（Ｄ，Ｄ’）＝ｅＷ（Ｄ，φ（Ｄ’））。ｅＷはヴェイユペアリング。φは上記ヤコビ多様体ＪａｃＣ上における計算可能な準同型写像。）を算出し、
上記公開列因子算出部は、上記処理装置を用いて、上記公開行基底算出部が算出した因子ｇと、上記列乱数生成部が生成した乱数ｃｙとに基づいて、上記ヤコビ多様体ＪａｃＣのｎ２個の因子Ｈｙ＝ｃｙ・ｇ（ただし、ｙは１以上ｎ２以下の整数。）を算出し、
上記公開鍵設定部は、上記処理装置を用いて、上記公開行基底算出部が算出した因子ｇと、上記公開列基底算出部が算出した因子ｈと、上記公開共通因子算出部が算出した因子Ｅと、上記公開行第一因子算出部が算出したｎ１個の因子Ｅｘと、上記公開行第二因子算出部が算出したｎ１個の因子Ｆｘと、上記公開ペアリング値算出部が算出したｎ１個のペアリング値Ｇｘと、上記公開列因子算出部が算出したｎ２個の因子Ｈｙとに基づいて、公開鍵ＰＫ＝（ｇ，ｈ，Ｅ，Ｅｘ，Ｆｘ，Ｇｘ，Ｈｙ）（ただし、ｘは１以上ｎ１以下の整数。ｙは１以上ｎ２以下の整数。）を設定し、
上記個人因子算出部は、上記処理装置を用いて、上記公開行基底算出部が算出した因子ｇと、上記行乱数生成部が生成したｎ１個の乱数ｒｘと、上記列乱数生成部が生成したｎ２個の乱数ｃｙと、上記ペアリング乱数生成部が生成したｎ１個の乱数αｘとに基づいて、ｎ個の因子Ｋｘ，ｙ＝αｘ・ｇ＋ｒｘｃｙ・ｇ（ただし、ｘは１以上ｎ１以下の整数。ｙは１以上ｎ２以下の整数。）を算出し、
上記個人鍵設定部は、上記処理装置を用いて、上記個人因子算出部が算出したｎ個の因子Ｋｘ，ｙに基づいて、ｎ人の利用者にそれぞれ対応するｎ個の個人鍵ＳＫｘ，ｙ＝（Ｋｘ，ｙ）を設定し、
上記暗号文生成装置は、データを処理する処理装置と、公開鍵入力部と、平文入力部と、暗号共通乱数生成部と、暗号列乱数生成部と、暗号行乱数生成部と、暗号行第一因子算出部と、暗号行第二因子算出部と、暗号行第三因子算出部と、暗号鍵算出部と、平文暗号化部と、行暗号文設定部と、暗号列第一因子算出部と、暗号列第二因子算出部と、列暗号文設定部とを有し、
上記公開鍵入力部は、上記処理装置を用いて、上記鍵生成装置が設定した公開鍵ＰＫ＝（ｇ，ｈ，Ｅ，Ｅｘ，Ｆｘ，Ｇｘ，Ｈｙ）を入力し、
上記平文入力部は、上記処理装置を用いて、暗号化する平文Ｍを入力し、
上記暗号共通乱数生成部は、上記処理装置を用いて、乱数ｔ（ただし、乱数ｔは１以上ｒ−１以下の整数。）をランダムに生成し、
上記暗号列乱数生成部は、上記処理装置を用いて、ｎ２個以下の乱数ｗｙ（ただし、ｙは１以上ｎ２以下の整数。乱数ｗｙは１以上ｒ−１以下の整数。）を生成し、
上記暗号行乱数生成部は、上記処理装置を用いて、ｎ１個以下の乱数ｓｘ（ただし、ｘは１以上ｎ１以下の整数。乱数ｓｘは１以上ｒ−１以下の整数。）を生成し、
上記暗号行第一因子算出部は、上記処理装置を用いて、上記公開鍵入力部が入力した公開鍵ＰＫに含まれるｎ１個の因子Ｅｘと、上記暗号行乱数生成部が生成したｎ１個以下の乱数ｓｘとに基づいて、ヤコビ多様体ＪａｃＣのｎ１個以下の因子Ｒｘ＝ｓｘ・Ｅｘ（ただし、ｘは１以上ｎ１以下の整数。）を算出し、
上記暗号行第二因子算出部は、上記処理装置を用いて、上記公開鍵入力部が入力した公開鍵ＰＫに含まれるｎ１個の因子Ｆｘと、上記暗号行乱数生成部が生成したｎ１個以下の乱数ｓｘとに基づいて、ヤコビ多様体ＪａｃＣのｎ１個以下の因子Ｒ〜ｘ＝ｓｘ・Ｆｘ（ただし、ｘは１以上ｎ１以下の整数。）を算出し、
上記暗号行第三因子算出部は、上記処理装置を用いて、上記公開鍵入力部が入力した公開鍵ＰＫに含まれる因子Ｅと、上記暗号共通乱数生成部が生成した乱数ｔと、上記暗号行乱数生成部が生成したｎ１個以下の乱数ｓｘとに基づいて、ヤコビ多様体ＪａｃＣのｎ１個以下の因子Ａｘ＝ｓｘｔ・Ｅ（ただし、ｘは１以上ｎ１以下の整数。）を算出し、
上記暗号鍵算出部は、上記処理装置を用いて、上記公開鍵入力部が入力した公開鍵ＰＫに含まれるｎ１個のペアリング値Ｇｘと、上記暗号共通乱数生成部が生成した乱数ｔと、上記暗号行乱数生成部が生成したｎ１個以下の乱数ｓｘとに基づいて、ｎ１個以下のペアリング値ＣＫｘ＝Ｇｘｓｘｔ（ただし、ｘは１以上ｎ１以下の整数。）を算出し、
上記平文暗号化部は、上記処理装置を用いて、上記平文入力部が入力した平文Ｍと、上記暗号鍵算出部が算出したｎ１個以下のペアリング値ＣＫｘとに基づいて、上記ｎ１個以下のペアリング値ＣＫｘをそれぞれ暗号鍵として使用して上記平文Ｍを暗号化して、ｎ１個以下の暗号文Ｂｘ（ただし、ｘは１以上ｎ１以下の整数。）を生成し、
上記行暗号文設定部は、上記処理装置を用いて、上記暗号行第一因子算出部が算出したｎ１個以下の因子Ｒｘと、上記暗号行第二因子算出部が算出したｎ１個以下の因子Ｒ〜ｘと、上記暗号行第三因子算出部が算出したｎ１個以下の因子Ａｘと、上記平文暗号化部が生成したｎ１個以下の暗号文Ｂｘとに基づいて、ｎ１個以下の行暗号文ＣＴｘ＝（Ｒｘ，Ｒ〜ｘ，Ａｘ，Ｂｘ）（ただし、ｘは１以上ｎ１以下の整数。）を設定し、
上記暗号列第一因子算出部は、上記処理装置を用いて、上記公開鍵入力部が入力した公開鍵ＰＫに含まれる因子ｈ及び因子Ｈｙと、上記暗号共通乱数生成部が生成した乱数ｔと、上記暗号列乱数生成部が生成した乱数ｗｙとに基づいて、ヤコビ多様体ＪａｃＣのｎ２個以下の因子Ｃｙ＝ｔ・Ｈｙ＋ｗｙ・ｈ（ただし、ｙは１以上ｎ２以下の整数。）を算出し、
上記暗号列第二因子算出部は、上記処理装置を用いて、上記公開鍵入力部が入力した公開鍵ＰＫに含まれる因子ｇと、上記暗号列乱数生成部が生成した乱数ｗｙとに基づいて、ヤコビ多様体ＪａｃＣのｎ２個以下の因子Ｃ〜ｙ＝ｗｙ・ｇ（ただし、ｙは１以上ｎ２以下の整数。）を算出し、
上記列暗号文設定部は、上記処理装置を用いて、上記暗号列第一因子算出部が算出したｎ２個以下の因子Ｃｙと、上記暗号列第二因子算出部が算出したｎ２個以下の因子Ｃ〜ｙとに基づいて、ｎ２個以下の列暗号文ＣＴｙ＝（Ｃｙ，Ｃ〜ｙ）（ただし、ｙは１以上ｎ２以下の整数。）を設定し、
上記暗号文復号装置は、データを記憶する記憶装置と、データを処理する処理装置と、個人鍵記憶部と、行暗号文入力部と、列暗号文入力部と、復号鍵算出部と、暗号文復号部とを有し、
上記個人鍵記憶部は、上記記憶装置を用いて、上記鍵生成装置が設定したｎ個の個人鍵ＳＫｘ，ｙのうち、上記暗号文復号装置の利用者に対応する所定のインデックスＸ及びＹ（ただし、Ｘは１以上ｎ１以下の整数。Ｙは１以上ｎ２以下の整数。）に対応する個人鍵ＳＫＸ，Ｙ＝（ＫＸ，Ｙ）を記憶し、
上記行暗号文入力部は、上記処理装置を用いて、上記暗号文生成装置が設定したｎ１個以下の行暗号文ＣＴｘのうち、上記インデックスＸに対応する行暗号文ＣＴＸ＝（ＲＸ，Ｒ〜Ｘ，ＡＸ，ＢＸ）を入力し、
上記列暗号文入力部は、上記処理装置を用いて、上記暗号文生成装置が設定したｎ２個以下の列暗号文ＣＴｙのうち、上記インデックスＹに対応する列暗号文ＣＴＹ＝（ＣＹ，Ｃ〜Ｙ）を入力し、
上記復号鍵算出部は、上記処理装置を用いて、上記個人鍵記憶部が記憶した個人鍵ＳＫＸ，Ｙと、上記行暗号文入力部が入力した行暗号文ＣＴＸに含まれる因子ＲＸ及び因子Ｒ〜Ｘ及び因子ＡＸと、上記列暗号文入力部が入力した列暗号文ＣＴＹに含まれる因子ＣＹ及び因子Ｃ〜Ｙとに基づいて、ペアリング値ＣＫ’＝ｅ（ＫＸ，Ｙ，ＡＸ）・ｅ（Ｒ〜Ｘ,Ｃ〜Ｙ）／ｅ（ＣＹ，ＲＸ）を算出し、
上記暗号文復号部は、上記処理装置を用いて、上記行暗号文入力部が入力した行暗号文ＣＴＸに含まれる暗号文ＢＸと、上記復号鍵算出部が算出したペアリング値ＣＫ’とに基づいて、上記ペアリング値ＣＫ’を復号鍵として使用して上記暗号文ＢＸを復号して、復号文Ｍ’を生成する
ことを特徴とする請求項１２に記載の暗号システム。
【請求項１５】
上記暗号システムは、複数の暗号文復号装置を有し、更に、不正者追跡装置を有し、
上記鍵算出部は、更に、追跡鍵設定部を有し、
上記追跡鍵設定部は、上記処理装置を用いて、上記出力基底算出部が算出した四つの出力基底ｇｋと、上記行乱数生成部が生成したｎ１個の乱数ｒｘと、上記ペアリング乱数生成部が生成したｎ１個の乱数αｘと、上記列乱数生成部が生成したｎ２個の乱数ｃｙとに基づいて、追跡鍵ＴＫ＝（ｇｋ，ｒｘ，αｘ，ｃｙ）（ただし、ｋは１以上４以下の整数。ｘは１以上ｎ１以下の整数。ｙは１以上ｎ２以下の整数。）を設定し、
上記不正者追跡装置は、データを記憶する記憶装置と、データを処理する処理装置と、追跡鍵記憶部と、目標決定部と、追跡平文生成部と、追跡共通乱数生成部と、追跡列乱数生成部と、追跡行乱数生成部と、撹乱行乱数生成部と、撹乱列乱数生成部と、追跡行第一因子算出部と、追跡行第二因子算出部と、追跡行第三因子算出部と、追跡暗号鍵算出部と、追跡平文暗号化部と、追跡行暗号文設定部と、追跡列第一因子算出部と、追跡列第二因子算出部と、追跡列暗号文設定部と、復号文入力部と、漏洩元判別部とを有し、
上記追跡鍵記憶部は、上記記憶装置を用いて、鍵生成装置が設定した追跡鍵ＴＫ＝（ｇｋ，ｒｘ，αｘ，ｃｙ）を記憶し、
上記目標決定部は、上記処理装置を用いて、上記インデックスｘを三つのグループに分類し、上記処理装置を用いて、上記インデックスｙを二つのグループに分類し、
上記追跡平文生成部は、上記処理装置を用いて、平文Ｍを生成し、
上記追跡共通乱数生成部は、上記処理装置を用いて、乱数ｔ（ただし、乱数ｔは１以上ｒ以下の整数。）をランダムに生成し、
上記追跡列乱数生成部は、上記処理装置を用いて、ｎ２個以下の乱数ｗｙ（ただし、ｙは１以上ｎ２以下の整数。乱数ｗｙは１以上ｒ−１以下の整数。）をランダムに生成し、
上記追跡行乱数生成部は、上記処理装置を用いて、ｎ１個以下の乱数ｓｘ（ただし、ｘは１以上ｎ１以下の整数。乱数ｓｘは１以上ｒ−１以下の整数。）をランダムに生成し、
上記撹乱行乱数生成部は、上記処理装置を用いて、ｎ１個以下の乱数ｖｘ，１（ただし、ｘは１以上ｎ１以下の整数。乱数ｖｘ，１は１以上ｒ−１以下の整数。）と、ｎ１個以下の乱数ｖｘ，２（ただし、ｘは１以上ｎ１以下の整数。乱数ｖｘ，２は１以上ｒ−１以下の整数。）と、ｎ１個以下の乱数ｖｘ，３（ただし、ｘは１以上ｎ１以下の整数。乱数ｖｘ，３は１以上ｒ−１以下の整数。）とをランダムに生成し、
上記撹乱列乱数生成部は、上記処理装置を用いて、ｎ２個以下の乱数ｚｐ，ｙ（ただし、ｙは１以上ｎ２以下の整数。乱数ｚｐ，ｙは１以上ｒ−１以下の整数。）をランダムに生成し、
上記追跡行第一因子算出部は、上記処理装置を用いて、上記追跡鍵記憶部が記憶した追跡鍵ＴＫに含まれる因子ｇ１及び因子ｇ２及びｎ１個の乱数ｒｘと、上記目標決定部がインデックスｘを分類した三つのグループと、上記追跡行乱数生成部が生成したｎ１個以下の乱数ｓｘと、上記撹乱行乱数生成部が生成したｎ１個以下の乱数ｖｘ，１とに基づいて、上記三つのグループのうち第一のグループに属するインデックスｘについて、因子Ｒｘ＝ｓｘｒｘ・ｇ２（ただし、ｘは１以上ｎ１以下の整数。）を算出し、上記三つのグループのうち第二のグループに属するインデックスｘについて、因子Ｒｘ＝ｓｘｒｘ・（ｇ１＋ｇ２）（ただし、ｘは１以上ｎ１以下の整数。）を算出し、上記三つのグループのうち第三のグループに属するインデックスｘについて、因子Ｒｘ＝ｖｘ，１・（ｇ１＋ｇ２）（ただし、ｘは１以上ｎ１以下の整数。）を算出し、
上記追跡行第二因子算出部は、上記処理装置を用いて、上記追跡鍵記憶部が記憶した追跡鍵ＴＫに含まれる因子ｇ３及び因子ｇ４及びｎ１個の乱数ｒｘと、上記目標決定部がインデックスｘを分類した三つのグループと、上記追跡行乱数生成部が生成したｎ１個以下の乱数ｓｘと、上記撹乱行乱数生成部が生成したｎ１個以下の乱数ｖｘ，１とに基づいて、上記三つのグループのうち第一のグループに属するインデックスｘについて、因子Ｒ〜ｘ＝ｓｘｒｘ・ｇ４（ただし、ｘは１以上ｎ１以下の整数。）を算出し、上記三つのグループのうち第二のグループに属するインデックスｘについて、因子Ｒ〜ｘ＝ｓｘｒｘ・（ｇ３＋ｇ４）（ただし、ｘは１以上ｎ１以下の整数。）を算出し、上記三つのグループのうち第三のグループに属するインデックスｘについて、因子Ｒ〜ｘ＝ｖｘ，１・（ｇ３＋ｇ４）（ただし、ｘは１以上ｎ１以下の整数。）を算出し、
上記追跡行第三因子算出部は、上記処理装置を用いて、上記追跡鍵記憶部が記憶した追跡鍵ＴＫに含まれる因子ｇ１及び因子ｇ２と、上記目標決定部がインデックスｘを分類した三つのグループと、上記追跡共通乱数生成部が生成した乱数ｔと、上記追跡行乱数生成部が生成したｎ１個以下の乱数ｓｘと、上記撹乱行乱数生成部が生成したｎ１個以下の乱数ｖｘ，２とに基づいて、上記三つのグループのうち第一のグループに属するインデックスｘについて、因子Ａｘ＝ｓｘｔ・ｇ２（ただし、ｘは１以上ｎ１以下の整数。）を算出し、上記三つのグループのうち第二のグループに属するインデックスｘについて、因子Ａｘ＝ｓｘｔ・（ｇ１＋ｇ２）（ただし、ｘは１以上ｎ１以下の整数。）を算出し、上記三つのグループのうち第三のグループに属するインデックスｘについて、因子Ａｘ＝ｖｘ，２・（ｇ１＋ｇ２）（ただし、ｘは１以上ｎ１以下の整数。）を算出し、
上記追跡暗号鍵算出部は、上記処理装置を用いて、上記追跡鍵記憶部が記憶した追跡鍵ＴＫに含まれる因子ｇ１及び因子ｇ２及びｎ１個の乱数αｘと、上記目標決定部がインデックスｘを分類した三つのグループと、上記追跡行乱数生成部が生成したｎ１個以下の乱数ｓｘと、上記撹乱行乱数生成部が生成したｎ１個以下の乱数ｖｘ，３とに基づいて、上記三つのグループのうち第一のグループに属するインデックスｘについて、ペアリング値ＣＫｘ＝ｅ（ｇ２，ｇ２）αｘｓｘｔ（ただし、ｘは１以上ｎ１以下の整数。）を算出し、上記三つのグループのうち第二のグループに属するインデックスｘについて、ペアリング値ＣＫｘ＝ｅ（ｇ１＋ｇ２，ｇ１＋ｇ２）αｘｓｘｔ（ただし、ｘは１以上ｎ１以下の整数。）を算出し、上記三つのグループのうち第三のグループに属するインデックスｘについて、ペアリング値ＣＫｘ＝ｅ（ｇ１＋ｇ２，ｇ１＋ｇ２）ｖｘ，２（ただし、ｘは１以上ｎ１以下の整数。）を算出し、
上記追跡平文暗号化部は、上記処理装置を用いて、上記追跡暗号鍵算出部が算出したｎ１個以下のペアリング値ＣＫｘと、上記追跡平文生成部が生成した平文Ｍとに基づいて、上記ｎ１個以下のペアリング値ＣＫｘをそれぞれ暗号鍵として使用して上記平文Ｍを暗号化して、ｎ１個以下の暗号文Ｂｘ（ただし、ｘは１以上ｎ１以下の整数。）を生成し、
上記追跡行暗号文設定部は、上記処理装置を用いて、上記追跡行第一因子算出部が算出したｎ１個以下の因子Ｒｘと、上記追跡行第二因子算出部が算出したｎ１個以下の因子Ｒ〜ｘと、上記追跡行第三因子算出部が算出したｎ１個以下の因子Ａｘと、上記追跡平文暗号化部が生成したｎ１個以下の暗号文Ｂｘとに基づいて、ｎ１個以下の行暗号文ＣＴｘ＝（Ｒｘ，Ｒ〜ｘ，Ａｘ，Ｂｘ）（ただし、ｘは１以上ｎ１以下の整数。）を設定し、
上記追跡列第一因子算出部は、上記処理装置を用いて、上記追跡鍵記憶部が記憶した追跡鍵ＴＫに含まれる因子ｇ１及び因子ｇ２及び因子ｇ３及び因子ｇ４及びｎ２個の乱数ｃｙと、上記目標決定部がインデックスｙを分類した二つのグループと、上記追跡共通乱数生成部が生成した乱数ｔと、上記追跡列乱数生成部が生成したｎ２個以下の乱数ｗｙと、上記撹乱列乱数生成部が生成したｎ２個以下の乱数ｚｐ，ｙとに基づいて、上記二つのグループのうち第一のグループに属するインデックスｙについて、因子Ｃｙ＝ｔｃｙ・（ｇ１＋ｇ２）＋ｗｙ・（ｇ３＋ｇ４）（ただし、ｙは１以上ｎ２以下の整数。）を算出し、上記二つのグループのうち第二のグループに属するインデックスｙについて、因子Ｃｙ＝ｔｃｙ・（ｇ３＋ｇ４）＋ｚｐ，ｙ・ｇ１＋ｗｙ・（ｇ３＋ｇ４）（ただし、ｙは１以上ｎ２以下の整数。）を算出し、
上記追跡列第二因子算出部は、上記処理装置を用いて、追跡鍵記憶部が記憶した追跡鍵ＴＫに含まれる因子ｇ１及び因子ｇ２と、上記追跡列乱数生成部が生成したｎ２個以下の乱数ｗｙとに基づいて、ｎ２個以下の因子Ｃ〜ｙ＝ｗｙ・（ｇ１＋ｇ２）（ただし、ｙは１以上ｎ２以下の整数。）を算出し、
上記追跡列暗号文設定部は、上記処理装置を用いて、上記追跡列第一因子算出部が算出したｎ２個以下の因子Ｃｙと、上記追跡列第二因子算出部が算出したｎ２個以下の因子Ｃ〜ｙとに基づいて、ｎ２個以下の列暗号文ＣＴｙ＝（Ｃｙ，Ｃ〜ｙ）（ただし、ｙは１以上ｎ２以下の整数。）を設定し、
上記復号文入力部は、上記処理装置を用いて、上記暗号文生成装置が生成した暗号文を復号する海賊復号装置が、上記追跡行暗号文設定部が設定したｎ１個以下の行暗号文ＣＴｘと、上記追跡列暗号文設定部が設定したｎ２個以下の列暗号文ＣＴｙとを含む暗号文を復号して生成した復号文Ｍ’を入力し、
上記漏洩元判別部は、上記処理装置を用いて、上記追跡平文生成部が生成した平文Ｍと、上記復号文入力部が入力した復号文Ｍ’とを比較して、上記海賊復号装置が復号に使用した個人鍵Ｋｘ，ｙを判別する
ことを特徴とする請求項１４に記載の暗号システム。
【請求項１６】
上記暗号システムは、更に、署名鍵発行装置と、複数の署名装置と、署名検証装置と、署名者追跡装置とを有し、
上記署名鍵発行装置は、暗号パラメータ設定装置が設定した暗号パラメータと、上記鍵生成装置が生成した鍵とに基づいて、上記複数の署名装置にそれぞれ対応する複数の署名鍵を生成し、
上記複数の署名装置のうち少なくともいずれかの署名装置は、上記署名鍵発行装置が生成した複数の署名鍵のうち、上記署名装置に対応する署名鍵を使用して、署名を生成し、
上記署名検証装置は、上記暗号パラメータ設定装置が設定した暗号パラメータと、上記鍵生成装置が生成した鍵とを使用して、上記署名装置が生成した署名を検証し、
上記署名者追跡装置は、上記暗号パラメータ設定装置が設定した暗号パラメータと、上記鍵生成装置が生成した鍵とを使用して、上記署名装置が生成した署名を解析し、上記署名を生成した署名装置を判別する
ことを特徴とする請求項１１に記載の暗号システム。
【請求項１７】
上記暗号パラメータ設定装置は、請求項４に記載の暗号パラメータ設定装置であり、
上記鍵生成装置は、請求項８に記載の鍵生成装置であり、
上記ランダム因子選択部は、上記処理装置を用いて、有限体Ｆｐ上における超楕円曲線Ｃ：Ｙ２＝Ｘ５＋１（ただし、素数ｐを５で割った余りａは２または３。）のヤコビ多様体ＪａｃＣの複数の因子のなかから、ランダム因子Ｄ＊を選択し、
上記ランダム行列選択部は、上記処理装置を用いて、条件：ｍ’１２＝ｍ’２１＝０，ｍ’１１≠０，ｍ’２２≠０を満たす２行２列のランダム行列Ｖ＊を選択し、
上記出力基底算出部は、上記処理装置を用いて、上記基底因子記憶部が記憶した複数の基底因子Ｄ〜ｊと、上記ランダム行列選択部が算出したランダム行列Ｖ＊とに基づいて、二つの出力基底ｇｋ＝ｖｋ・Ｄ〜（ただし、ｋは１以上２以下の整数。）を算出し、
上記鍵算出部は、ビット長入力部と、基底乱数生成部と、ペアリング乱数生成部と、マスター乱数生成部と、公開基底算出部と、公開第一因子算出部と、公開ペアリング値算出部と、公開第二因子生成部と、公開第三因子生成部と、公開ビット因子生成部と、マスター因子算出部と、公開鍵設定部と、マスター鍵設定部と、追跡鍵設定部とを有し、
上記ビット長入力部は、上記処理装置を用いて、署名するメッセージのビット長ｍを入力し、
上記基底乱数生成部は、上記処理装置を用いて、乱数β（ただし、乱数βは１以上ｒ−１以下の整数。）をランダムに生成し、
上記ペアリング乱数生成部は、上記処理装置を用いて、乱数α（ただし、乱数αは１以上ｒ−１以下の整数。）をランダムに生成し、
上記マスター乱数生成部は、上記処理装置を用いて、乱数ω（ただし、乱数ωは１以上ｒ−１以下の整数。）をランダムに生成し、
上記公開基底算出部は、上記処理装置を用いて、上記出力基底算出部が算出した出力基底ｇ１と出力基底ｇ２と、上記基底乱数生成部が生成した乱数βとに基づいて、上記ヤコビ多様体ＪａｃＣの因子ｇ＝ｇ２＋β・ｇ１を算出し、
上記公開第一因子算出部は、上記処理装置を用いて、上記マスター乱数生成部が生成した乱数ωと、上記公開基底算出部が算出した因子ｇとに基づいて、上記ヤコビ多様体ＪａｃＣの因子Ω＝ω・ｇを算出し、
上記公開ペアリング値算出部は、上記処理装置を用いて、上記ペアリング乱数生成部が生成した乱数αと、上記公開基底算出部が算出した因子ｇとに基づいて、ペアリング値Ａ＝ｅ（ｇ，ｇ）αを算出し、
上記公開第二因子生成部は、上記処理装置を用いて、上記ヤコビ多様体ＪａｃＣの因子ｕをランダムに生成し、
上記公開第三因子生成部は、上記処理装置を用いて、上記ヤコビ多様体ＪａｃＣの因子ｖ’をランダムに生成し、
上記公開ビット因子生成部は、上記処理装置を用いて、上記ビット長入力部が入力したビット長ｍに基づいて、上記ヤコビ多様体ＪａｃＣのｍ個の因子ｖｉ（ただし、ｉは１以上ｍ以下の整数。）をランダムに生成し、
上記マスター因子算出部は、上記処理装置を用いて、上記ペアリング乱数生成部が生成した乱数αと、上記公開基底算出部が算出した因子ｇとに基づいて、上記ヤコビ多様体ＪａｃＣの因子ｇ’＝α・ｇを算出し、
上記公開鍵設定部は、上記処理装置を用いて、上記出力基底算出部が算出した因子ｇ１と、上記公開基底算出部が算出した因子ｇと、上記公開第一因子算出部が算出した因子Ωと、上記公開ペアリング値算出部が算出したペアリング値Ａと、上記公開第二因子生成部が生成した因子ｕと、上記公開第三因子生成部が生成した因子ｖ’と、上記公開ビット因子生成部が生成したｍ個の因子ｖｉとに基づいて、公開鍵ＰＫ＝（ｇ１，ｇ，Ω，Ａ，ｕ，ｖ’，ｖｉ）（ただし、ｉは１以上ｍ以下の整数。）を設定し、
上記マスター鍵設定部は、上記処理装置を用いて、上記マスター乱数生成部が生成した乱数ωと、上記マスター因子算出部が算出した因子ｇ’とに基づいて、マスター鍵ＭＫ＝（ω，ｇ’）を設定し、
上記追跡鍵設定部は、上記処理装置を用いて、上記出力基底算出部が算出した出力基底ｇ２に基づいて、追跡鍵ＴＫ＝（ｇ２）を設定し、
上記署名鍵発行装置は、データを記憶する記憶装置と、データを処理する処理装置と、マスター鍵記憶部と、発行公開鍵入力部と、識別子生成部と、署名第一鍵算出部と、署名第二鍵算出部と、署名第三鍵算出部と、署名鍵設定部と、識別子設定部とを有し、
上記マスター鍵記憶部は、上記記憶装置を用いて、上記鍵生成装置が設定したマスター鍵ＭＫ＝（ω，ｇ’）を記憶し、
上記発行公開鍵入力部は、上記処理装置を用いて、上記鍵生成装置が設定した公開鍵ＰＫ＝（ｇ１，ｇ，Ω，Ａ，ｕ，ｖ’，ｖｉ）を入力し、
上記識別子生成部は、上記処理装置を用いて、識別子ｓＩＤ（ただし、識別子ｓＩＤは１以上ｒ−１以下の整数。）をランダムに生成し、
上記署名第一鍵算出部は、上記処理装置を用いて、上記マスター鍵記憶部が記憶したマスター鍵ＭＫに含まれる乱数ω及び因子ｇ’と、上記識別子生成部が生成した識別子ｓＩＤとに基づいて、上記ヤコビ多様体ＪａｃＣの因子Ｋ１＝｛１／（ω＋ｓＩＤ）｝・ｇ’を算出し、
上記署名第二鍵算出部は、上記処理装置を用いて、上記発行公開鍵入力部が記憶した公開鍵ＰＫに含まれる因子ｇと、上記識別子生成部が生成した識別子ｓＩＤとに基づいて、上記ヤコビ多様体ＪａｃＣの因子Ｋ２＝ｓＩＤ・ｇを算出し、
上記署名第三鍵算出部は、上記処理装置を用いて、上記発行公開鍵入力部が記憶した公開鍵ＰＫに含まれる因子ｕと、上記識別子生成部が生成した識別子ｓＩＤとに基づいて、上記ヤコビ多様体ＪａｃＣの因子Ｋ３＝ｓＩＤ・ｕを算出し、
上記署名鍵設定部は、上記処理装置を用いて、上記署名第一鍵算出部が算出した因子Ｋ１と、上記署名第二鍵算出部が算出した因子Ｋ２と、上記署名第三鍵算出部が算出した因子Ｋ３とに基づいて、署名鍵ＳＫ＝（Ｋ１，Ｋ２，Ｋ３）を設定し、
上記識別子設定部は、上記処理装置を用いて、上記識別子生成部が生成した識別子ｓＩＤを、上記署名鍵設定部が設定した署名鍵ＳＫを識別する識別子に設定し、
上記署名装置は、データを記憶する記憶装置と、データを処理する処理装置と、署名鍵記憶部と、署名公開鍵入力部と、署名メッセージ入力部と、署名メッセージ因子算出部と、署名第一乱数生成部と、署名第二乱数生成部と、署名第一因子算出部と、署名第二因子算出部と、署名第三因子算出部と、署名第四因子算出部と、署名第五因子算出部と、署名第六因子算出部と、署名出力部とを有し、
上記署名鍵記憶部は、上記記憶装置を用いて、上記鍵生成装置が設定した署名鍵ＳＫ＝（Ｋ１，Ｋ２，Ｋ３）を記憶し、
上記署名公開鍵入力部は、上記処理装置を用いて、上記鍵生成装置が設定した公開鍵ＰＫ＝（ｇ１，ｇ，Ω，Ａ，ｕ，ｖ’，ｖｉ）を入力し、
上記署名メッセージ入力部は、上記処理装置を用いて、署名するメッセージＭを入力し、
上記署名メッセージ因子算出部は、上記処理装置を用いて、上記署名公開鍵入力部が入力した公開鍵ＰＫに含まれる因子ｖ’及びｍ個の因子ｖｉと、上記署名メッセージ入力部が入力したメッセージＭとに基づいて、上記ヤコビ多様体ＪａｃＣの因子ｖ＝ｖ’＋Σ（μｉ・ｖｉ）（ただし、ｉは１以上ｍ以下の整数。μｉは上記メッセージＭのｉ番目のビットを表わす０または１の整数。）を算出し、
上記署名第一乱数生成部は、上記処理装置を用いて、乱数ｓ（ただし、乱数ｓは以上ｒ−１以下の整数。）を生成し、
上記署名第二乱数生成部は、上記処理装置を用いて、四つの乱数ｔｊ（ただし、ｊは１以上４以下の整数。乱数ｔｊは１以上ｒ−１以下の整数。）をランダムに生成し、
上記署名第一因子算出部は、上記処理装置を用いて、上記署名公開鍵入力部が入力した公開鍵ＰＫに含まれる因子ｇ１と、上記署名鍵記憶部が記憶した署名鍵ＳＫに含まれる因子Ｋ１と、上記署名第二乱数生成部が生成した乱数ｔ１とに基づいて、上記ヤコビ多様体ＪａｃＣの因子σ１＝Ｋ１＋ｔ１・ｇ１を算出し、
上記署名第二因子算出部は、上記処理装置を用いて、上記署名公開鍵入力部が入力した公開鍵ＰＫに含まれる因子ｇ１と、上記署名鍵記憶部が記憶した署名鍵ＳＫに含まれる因子Ｋ２と、上記署名第二乱数生成部が生成した乱数ｔ２とに基づいて、上記ヤコビ多様体ＪａｃＣの因子σ２＝Ｋ２＋ｔ２・ｇ１を算出し、
上記署名第三因子算出部は、上記処理装置を用いて、上記署名公開鍵入力部が入力した公開鍵ＰＫに含まれる因子ｇ１と、上記署名鍵記憶部が記憶した署名鍵ＳＫに含まれる因子Ｋ３と、上記署名メッセージ因子算出部が算出した因子ｖと、上記署名第一乱数生成部が生成した乱数ｓと、上記署名第二乱数生成部が生成した乱数ｔ３とに基づいて、上記ヤコビ多様体ＪａｃＣの因子σ３＝Ｋ３＋ｓ・ｖ＋ｔ３・ｇ１を算出し、
上記署名第四因子算出部は、上記処理装置を用いて、上記署名公開鍵入力部が入力した公開鍵ＰＫに含まれる因子ｇ及び因子ｇ１と、上記署名第一乱数生成部が生成した乱数ｓと、上記署名第二乱数生成部が生成した乱数ｔ４とに基づいて、上記ヤコビ多様体ＪａｃＣの因子σ４＝−ｓ・ｇ＋ｔ４・ｇ１を算出し、
上記署名第五因子算出部は、上記処理装置を用いて、上記署名公開鍵入力部が入力した公開鍵ＰＫに含まれる因子ｇ１及び因子Ωと、上記署名鍵記憶部が記憶した署名鍵ＳＫに含まれる因子Ｋ１及び因子Ｋ２と、上記署名第二乱数生成部が生成した乱数ｔ１及び乱数ｔ２とに基づいて、上記ヤコビ多様体ＪａｃＣの因子π１＝ｔ１ｔ２・ｇ１＋ｔ２・Ｋ１＋ｔ１・（Ｋ２＋Ω）を算出し、
上記署名第六因子算出部は、上記処理装置を用いて、上記署名公開鍵入力部が入力した公開鍵ＰＫに含まれる因子ｇ及び因子ｕと、上記署名メッセージ因子算出部が算出した因子ｖと、上記署名第二乱数生成部が生成した乱数ｔ２及び乱数ｔ３及び乱数ｔ４とに基づいて、上記ヤコビ多様体ＪａｃＣの因子π２＝ｔ２・ｕ−ｔ３・ｇ−ｔ４・ｖを算出し、
上記署名出力部は、上記処理装置を用いて、上記署名第一因子算出部が算出した因子σ１と、上記署名第二因子算出部が算出した因子σ２と、上記署名第三因子算出部が算出した因子σ３と、上記署名第四因子算出部が算出した因子σ４と、上記署名第五因子算出部が算出した因子π１と、上記署名第六因子算出部が算出した因子π２とに基づいて、署名σ＝（σ１，σ２，σ３，σ４，π１，π２）を出力し、
上記署名検証装置は、データを処理する処理装置と、検証公開鍵入力部と、検証署名入力部と、検証メッセージ入力部と、検証メッセージ因子算出部と、署名第一検証値算出部と、署名第二検証値算出部と、署名第三検証値算出部と、署名第四検証値算出部と、署名検証判定部とを有し、
上記検証公開鍵入力部は、上記処理装置を用いて、上記鍵生成装置が設定した公開鍵ＰＫ＝（ｇ１，ｇ，Ω，Ａ，ｕ，ｖ’，ｖｉ）を入力し、
上記検証署名入力部は、上記処理装置を用いて、上記署名装置が出力した署名σ＝（σ１，σ２，σ３，σ４，π１，π２）を入力し、
上記検証メッセージ入力部は、上記処理装置を用いて、上記署名σにより署名されたメッセージＭを入力し、
上記検証メッセージ因子算出部は、上記処理装置を用いて、上記検証公開鍵入力部が入力した公開鍵ＰＫに含まれる因子ｖ’及びｍ個の因子ｖｉと、上記検証メッセージ入力部が入力したメッセージＭとに基づいて、上記ヤコビ多様体ＪａｃＣの因子ｖ＝ｖ’＋Σ（μｉ・ｖｉ）（ただし、ｉは１以上ｍ以下の整数。μｉは上記メッセージＭのｉ番目のビットを表わす０または１の整数。）を算出し、
上記署名第一検証値算出部は、上記処理装置を用いて、上記検証公開鍵入力部が入力した公開鍵ＰＫに含まれる因子ｇ１と、上記検証署名入力部が入力した署名σに含まれる因子π１とに基づいて、ペアリング値Ｃ＝ｅ（ｇ１，π１）を算出し、
上記署名第二検証値算出部は、上記処理装置を用いて、上記検証公開鍵入力部が入力した公開鍵ＰＫに含まれる因子Ω及びペアリング値Ａと、上記検証署名入力部が入力した署名σに含まれる因子σ１及び因子σ２とに基づいて、ペアリング値Ｃ’＝ｅ（σ１，σ２＋Ω）／Ａを算出し、
上記署名第三検証値算出部は、上記処理装置を用いて、上記検証公開鍵入力部が入力した公開鍵ＰＫに含まれる因子ｇ１と、上記検証署名入力部が入力した署名σに含まれる因子π２とに基づいて、ペアリング値Ｄ＝ｅ（ｇ１，π２）を算出し、
上記署名第四検証値算出部は、上記処理装置を用いて、上記検証公開鍵入力部が入力した公開鍵ＰＫに含まれる因子ｕ及び因子ｇと、上記検証署名入力部が入力した署名σに含まれる因子σ２及び因子σ３及び因子σ４と、上記検証メッセージ因子算出部が算出した因子ｖとに基づいて、ペアリング値Ｄ’＝ｅ（σ２，ｕ）／｛ｅ（ｇ，σ３）・ｅ（σ４，ｖ）｝を算出し、
上記署名検証判定部は、上記処理装置を用いて、上記署名第一検証値算出部が算出したペアリング値Ｃと、上記署名第二検証値算出部が算出したペアリング値Ｃ’と、上記署名第三検証値算出部が算出したペアリング値Ｄと、上記署名第四検証値算出部が算出したペアリング値Ｄ’とに基づいて、上記ペアリング値Ｃと上記ペアリング値Ｃ’とが等しいか否か、及び、上記ペアリング値Ｄと上記ペアリング値Ｄ’とが等しいか否かを判定し、上記ペアリング値Ｃと上記ペアリング値Ｃ’とが等しく、かつ、上記ペアリング値Ｄと上記ペアリング値Ｄ’とが等しいと判定した場合に、上記検証署名入力部が入力した署名σが有効であると判定し、
上記署名者追跡装置は、データを記憶する記憶装置と、データを処理する処理装置と、追跡鍵記憶部と、識別子記憶部と、追跡署名入力部と、署名ペアリング値算出部と、識別子ペアリング値算出部と、署名者判別部とを有し、
上記追跡鍵記憶部は、上記記憶装置を用いて、上記鍵生成装置が設定した追跡鍵ＴＫ＝（ｇ２）を記憶し、
上記識別子記憶部は、上記記憶装置を用いて、上記署名鍵発行装置が発行した署名鍵ＳＫを識別する識別子ｓＩＤを記憶し、
上記追跡署名入力部は、上記処理装置を用いて、上記署名装置が出力した署名σを入力し、
上記署名ペアリング値算出部は、上記処理装置を用いて、上記追跡鍵記憶部が記憶した追跡鍵ＴＫに含まれる因子ｇ２と、上記追跡署名入力部が入力した署名σに含まれる因子σ２とに基づいて、ペアリング値Ｅ＝ｅ（ｇ２，σ２）を算出し、
上記識別子ペアリング値算出部は、上記処理装置を用いて、上記追跡鍵記憶部が記憶した追跡鍵ＴＫに含まれる因子ｇ２と、上記識別子記憶部が記憶した識別子ｓＩＤとに基づいて、ペアリング値ＥＩＤ＝ｅ（ｇ２，ｇ２）ｓＩＤを算出し、
上記署名者判別部は、上記処理装置を用いて、上記識別子ペアリング値算出部が算出したペアリング値ＥＩＤのなかから、上記署名ペアリング値算出部が算出したペアリング値Ｅと一致するものを探すことにより、上記追跡署名入力部が入力した署名σを生成した署名鍵ＳＫの識別子を判別する
ことを特徴とする請求項１１に記載の暗号システム。
【請求項１８】
データを処理する処理装置を有するコンピュータを、請求項１に記載の暗号パラメータ設定装置として機能させることを特徴とするプログラム。
【請求項１９】
データを処理する処理装置を有するコンピュータを、請求項５に記載の鍵生成装置として機能させることを特徴とするプログラム。
【請求項２０】
データを処理する処理装置を有する暗号パラメータ設定装置が、暗号演算に用いられる暗号パラメータを設定する暗号パラメータ設定方法において、
上記処理装置が、ランダム因子Ｄ＊として、巡回群Ｇ’の複数の要素のなかから要素を選択し、
上記処理装置が、選択したランダム因子Ｄ＊に基づいて、複数の写像Ｇｊ（ただし、上記複数の写像Ｇｊは上記巡回群Ｇ’から複数の巡回群Ｇ’ｊそれぞれへの準同型写像。）により上記ランダム因子Ｄ＊を写像して、複数の基底因子Ｄ〜ｊを算出し、
上記処理装置が、群Ｇ（ただし、上記群Ｇは上記複数の巡回群Ｇ’ｊの直積で、上記群Ｇに含まれる二つの要素の間の双線形ペアリング演算によるペアリング値を計算可能。）における上記複数の基底因子Ｄ〜ｊの間のペアリング値の対数を算出して、複数のペアリング対数係数ηｉとし、
上記処理装置が、算出した複数の基底因子Ｄ〜ｊと、算出した複数のペアリング対数係数ηｉとを、上記暗号パラメータとする
ことを特徴とする暗号パラメータ設定方法。
【請求項２１】
データを処理する処理装置を有する暗号パラメータ設定装置が、暗号演算に用いられる暗号パラメータを設定する暗号パラメータ設定方法において、
上記処理装置が、有限体Ｆｐ上における種数ｄの超楕円曲線Ｃ（ただし、上記有限体Ｆｐの位数ｐは素数。上記種数ｄは２以上の整数。）のヤコビ多様体ＪａｃＣの複数の因子のなかから、ランダム因子Ｄ＊をランダムに選択し、
上記処理装置が、選択したランダム因子Ｄ＊に基づいて、複数の基底因子Ｄ〜ｊを算出し、
上記処理装置が、複数の離散対数ｌκ（ただし、κは１以上２ｄ−１以下の整数。離散対数ｌκは０以上２ｄ−１以下の整数。）を算出し、
上記処理装置が、算出した複数の離散対数ｌκに基づいて、複数のペアリング対数係数ηｉ（ただし、ｉは０以上２ｄ−１以下の整数。ペアリング対数係数ηｉは０以上ｒ−１以下の整数。ｒは上記ヤコビ多様体ＪａｃＣの複数の因子の位数。）を算出し、
上記処理装置が、算出した複数の基底因子Ｄ〜ｊと、算出した複数のペアリング対数係数ηｉとに基づいて、上記暗号パラメータを設定する
ことを特徴とする暗号パラメータ設定方法。
【請求項２２】
データを処理する処理装置と、データを記憶する記憶装置とを有する鍵生成装置が、暗号演算に用いられる鍵を生成する鍵生成方法において、
上記記憶装置が、複数の基底因子Ｄ〜ｊとして、群Ｇの複数の要素（ただし、上記群Ｇは位数が同じ複数の巡回群の直積で、上記群Ｇに含まれる二つの要素の間の双線形ペアリング演算によるペアリング値を計算可能。上記複数の基底因子Ｄ〜ｊは互いに一次独立。）を記憶し、
上記記憶装置が、複数のペアリング対数係数ηｉとして、上記複数の基底因子Ｄ〜ｊの間のペアリング値の対数を記憶し、
上記処理装置が、上記記憶装置が記憶した複数の基底因子Ｄ〜ｊと、上記記憶装置が記憶した複数のペアリング対数係数ηｉとに基づいて、上記群Ｇの要素である複数の出力基底ｇｋ（ただし、上記複数の出力基底ｇｋのうち少なくともいずれか二つの出力基底ｇｋの間のペアリング値が１。）を算出し、
上記処理装置が、算出した複数の出力基底に基づいて、上記鍵を算出する
ことを特徴とする鍵生成方法。
【請求項２３】
データを処理する処理装置と、データを記憶する記憶装置とを有する鍵生成装置が、暗号演算に用いられる鍵を生成する鍵生成方法において、
上記記憶装置が、有限体Ｆｐを有限代数拡大した拡大体Ｋ上における種数ｄの代数曲線Ｃ（ただし、上記有限体Ｆｐの位数ｐは素数。上記種数ｄは２以上の整数。ｗは素数で、ｗ＝２ｄ＋１。）のヤコビ多様体ＪａｃＣの複数の基底因子Ｄ〜ｊと、上記複数の基底因子の間のペアリング値の関係を表わす複数のペアリング対数係数ηｉとを記憶し、
上記処理装置が、上記記憶装置が記憶した複数のペアリング対数係数ηｉに基づいて、所定の条件を満たすランダム行列Ｖ＊をランダムに選択し、
上記処理装置が、上記記憶装置が記憶した複数の基底因子Ｄ〜ｊと、選択したランダム行列Ｖ＊とに基づいて、複数の出力基底ｇｋを算出し、
上記処理装置が、算出した複数の出力基底ｇｋに基づいて、上記鍵を算出する
ことを特徴とする鍵生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、暗号システムで使用する暗号パラメータを設定する暗号パラメータ設定装置及び鍵を生成する鍵生成装置に関する。
【背景技術】
【０００２】
合成数位数のペアリング演算を用いて、高機能な暗号や署名を実現する暗号システムが提案されている。
【非特許文献１】Ｄ．Ｂｏｎｅｈ、Ａ．Ｓａｈａｉ、Ｂ．Ｗａｔｅｒｓ「Ｆｕｌｌｙ  Ｃｏｌｌｕｓｉｏｎ  Ｒｅｓｉｓｔａｎｔ  Ｔｒａｉｔｏｒ  Ｔｒａｃｉｎｇ  Ｗｉｔｈ  Ｓｈｏｒｔ  Ｃｉｐｈｅｒｔｅｘｔｓ  ａｎｄ  Ｐｒｉｖａｔｅ  Ｋｅｙｓ」Ｅｕｒｏｃｒｙｐｔ  ２００６、２００６年。
【非特許文献２】Ｄ．Ｂｏｎｅｈ、Ｂ．Ｗａｔｅｒｓ「Ａ  Ｆｕｌｌｙ  Ｒｅｓｉｓｔａｎｔ  Ｂｒｏａｄｃａｓｔ，Ｔｒａｃｅ，ａｎｄ  Ｒｅｖｏｋｅ  Ｓｙｓｔｅｍ」ＡＣＭ  ＣＣＳ  ２００６、２００６年。
【非特許文献３】Ｄ．Ｂｏｎｅｈ、Ｅ．Ｇｏｈ、Ｋ．Ｎｉｓｓｉｍ「Ｅｖａｌｕａｔｉｎｇ  ２−ＤＮＦ  Ｆｏｒｍｕｌａｓ  ｏｎ  Ｃｉｐｈｅｒｔｅｘｔｓ」ＴＣＣ  ２００５、２００５年。
【非特許文献４】Ｘ．Ｂｏｙｅｎ、Ｂ．Ｗａｔｅｒｓ「Ｆｕｌｌ−Ｄｏｍａｉｎ  Ｓｕｂｇｒｏｕｐ  Ｈｉｄｉｎｇ  ａｎｄ  Ｃｏｎｓｔａｎｔ−Ｓｉｚｅ  Ｇｒｏｕｐ  Ｓｉｇｎａｔｕｒｅｓ」ＰＫＣ  ２００７、２００７年。
【非特許文献５】Ｄ．Ｂｏｎｅｈ、Ｂ．Ｗａｔｅｒｓ「Ｃｏｎｊｕｎｃｔｉｖｅ，Ｓｕｂｓｅｔ，ａｎｄ  Ｒａｎｇｅ  Ｑｕｅｒｉｅｓ  ｏｎ  Ｅｎｃｒｙｐｔｅｄ  Ｄａｔａ」ＴＣＣ  ２００７、２００７年。
【非特許文献６】Ｓ．Ｄ．Ｇａｌｂｒａｉｔｈ、Ｊ．Ｐｕｊｏｌａｓ、Ｃ．Ｒｉｔｚｅｎｔｈａｌｅｒ、Ｂ．Ｓｍｉｔｈ「Ｄｉｓｔｏｒｔｉｏｎ  Ｍａｐｓ  Ｆｏｒ  Ｇｅｎｕｓ  Ｔｗｏ  Ｃｕｒｖｅｓ」ａｒＸｉｖ：ｍａｔｈ．ＮＴ／０６１１４７１、２００６年。
【非特許文献７】Ｓ．Ｄ．Ｇａｌｂｒａｉｔｈ、Ｆ．Ｈｅｓｓ、Ｆ．Ｖｅｒｃａｕｔｅｒｅｎ「Ｈｙｐｅｒｅｌｌｉｐｔｉｃ  ｐａｉｒｉｎｇｓ」Ｐａｉｒｉｎｇ  ２００７、ＬＮＣＳ  ４５７５、１０８〜１３１ページ、２００７年。
【非特許文献８】Ｄ．Ｆｒｅｅｍａｎ「Ｃｏｎｓｔｒｕｃｔｉｎｇ  Ｐａｉｒｉｎｇ−Ｆｒｉｅｎｄｌｙ  Ｇｅｎｕｓ  ２  Ｃｕｒｖｅｓ  ｗｉｔｈ  Ｏｒｄｉｎａｒｙ  Ｊａｃｏｂｉａｎｓ」Ｐａｉｒｉｎｇ  ２００７、ＬＮＣＳ  ４５７５、１５２〜１７６ページ、２００７年。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
合成数位数のペアリング演算を用いる暗号システムの安全性は、合成数位数の素因数分解が困難であることを根拠としている。
素因数分解が困難であることを安全性の根拠とする暗号システムは、一般に、暗号に必要となるデータのサイズが大きくなり、暗号演算に時間がかかる。【０００４】
この発明は、例えば、上記のような課題を解決するためになされたものであり、合成数位数のペアリング演算に代わる他の演算を用いて、合成数位数のペアリング演算を用いて構成される暗号システムと同等もしくはそれ以上に高機能な暗号システムを構成することを目的とする。
【課題を解決するための手段】
【０００５】
この発明にかかる暗号パラメータ設定装置は、
データを処理する処理装置と、ランダム因子選択部と、基底因子生成部と、ペアリング対数算出部と、パラメータ設定部とを有し、
上記ランダム因子選択部は、上記処理装置を用いて、ランダム因子Ｄ＊として、巡回群Ｇ’の複数の要素のなかから要素を選択し、
上記基底因子生成部は、上記処理装置を用いて、上記ランダム因子選択部が選択したランダム因子Ｄ＊に基づいて、複数の写像Ｇｊ（ただし、上記複数の写像Ｇｊは上記巡回群Ｇ’から複数の巡回群Ｇ’ｊそれぞれへの準同型写像。）により上記ランダム因子Ｄ＊を写像して、複数の基底因子Ｄ〜ｊを算出し、
上記ペアリング対数算出部は、上記処理装置を用いて、群Ｇ（ただし、上記群Ｇは上記複数の巡回群Ｇ’ｊの直積で、上記群Ｇに含まれる二つの要素の間の双線形ペアリング演算によるペアリング値を計算可能。）における上記複数の基底因子Ｄ〜ｊの間のペアリング値の対数を算出して、複数のペアリング対数係数ηｉとし、
上記パラメータ設定部は、上記処理装置を用いて、上記基底因子生成部が算出した複数の基底因子Ｄ〜ｊと、上記ペアリング対数算出部が算出した複数のペアリング対数係数ηｉとを、暗号演算に用いられる暗号パラメータとすることを特徴とする。【０００６】
この発明にかかる暗号パラメータ設定装置は、以下の特徴を有する。
上記ランダム因子選択部は、上記処理装置を用いて、ランダム因子Ｄ＊として、有限体Ｆｐ上における代数曲線Ｃのヤコビ多様体ＪａｃＣの因子がなす群の部分群である巡回群Ｇ’の複数の要素のなかから要素を選択し、
上記基底因子生成部は、上記処理装置を用いて、上記有限体Ｆｐを有限代数拡大した拡大体Ｋ上における代数曲線Ｃのヤコビ多様体ＪａｃＣの因子がなす群における複数の自己準同型写像を上記複数の写像Ｇｊとして、上記複数の基底因子Ｄ〜ｊを算出する。【０００７】
この発明にかかる暗号パラメータ設定装置は、
データを処理する処理装置と、ランダム因子選択部と、基底因子生成部と、離散対数算出部と、ペアリング対数算出部と、パラメータ設定部とを有し、
上記ランダム因子選択部は、上記処理装置を用いて、有限体Ｆｐ上における種数ｄの代数曲線Ｃ（ただし、上記有限体Ｆｐの位数ｐは素数。上記種数ｄは２以上の整数。）のヤコビ多様体ＪａｃＣの複数の因子のなかから、ランダム因子Ｄ＊をランダムに選択し、
上記基底因子生成部は、上記処理装置を用いて、上記ランダム因子選択部が選択したランダム因子Ｄ＊に基づいて、複数の基底因子Ｄ〜ｊを算出し、
上記離散対数算出部は、上記処理装置を用いて、複数の離散対数ｌκを算出し、
上記ペアリング対数算出部は、上記処理装置を用いて、上記離散対数算出部が算出した複数の離散対数ｌκに基づいて、複数のペアリング対数係数ηｉを算出し、
上記パラメータ設定部は、上記処理装置を用いて、上記基底因子生成部が算出した複数の基底因子Ｄ〜ｊと、上記ペアリング対数算出部が算出した複数のペアリング対数係数ηｉとに基づいて、暗号演算に用いられる暗号パラメータを設定することを特徴とする。【０００８】
この発明にかかる暗号パラメータ設定装置は、以下の特徴を有する。
上記ランダム因子選択部は、上記処理装置を用いて、有限体Ｆｐ上における超楕円曲線Ｃ：Ｙ２＝Ｘｗ＋１（ただし、ｗは素数で、ｗ＝２ｄ＋１。上記位数ｐを上記素数ｗで割った余りａは位数がｗの有限体Ｆｗの乗法群Ｆｗ＊の生成元。）のヤコビ多様体ＪａｃＣの複数の因子のなかから、ランダム因子Ｄ＊を選択し、
上記基底因子生成部は、上記処理装置を用いて、上記ランダム因子選択部が選択したランダム因子Ｄ＊に基づいて、上記ランダム因子Ｄ＊にガウス和作用素Ｇｊ（ただし、ｊは０以上２ｄ−１以下の整数。上記ガウス和作用素Ｇｊは数１に示す拡大体Ｋ上におけるヤコビ多様体ＪａｃＣ上の作用。上記拡大体Ｋは上記有限体Ｆｐを２ｄ次拡大した代数拡大体。）を作用させて、上記拡大体Ｋ上におけるヤコビ多様体ＪａｃＣの複数の基底因子Ｄ〜ｊ＝Ｇｊ（Ｄ＊）を算出し、
上記離散対数算出部は、上記処理装置を用いて、上記余りａに基づいて、数２を満たす複数の離散対数ｌκ（ただし、κは１以上２ｄ−１の整数。上記複数の離散対数ｌκは０以上２ｄ−１以下の整数。）を算出し、
上記ペアリング対数算出部は、上記処理装置を用いて、上記離散対数算出部が算出した複数の離散対数ｌκに基づいて、数３に示す計算式を計算して、複数のペアリング対数係数ηｉ（ただし、ｉは０以上２ｄ−１以下の整数。上記複数のペアリング対数係数ηｉは０以上ｒ−１以下の整数。ｒは上記ランダム因子Ｄ＊の位数。）を算出する。【０００９】
【数１】
2009090750.tif 000003
【００１０】
ただし、ρは上記拡大体Ｋ上における超楕円曲線Ｃ上の作用（ｘ，ｙ）→（ζｘ，ｙ）に対応する上記ヤコビ多様体ＪａｃＣ上の作用。ζは、１のｗ乗根。
【数２】
2009090750.tif 000004
【００１１】
【数３】
2009090750.tif 000005
【００１２】
この発明にかかる鍵生成装置は、  データを処理する処理装置と、データを記憶する記憶装置と、基底因子記憶部と、ペアリング対数記憶部と、出力基底算出部と、鍵算出部とを有し、
上記基底因子記憶部は、上記記憶装置を用いて、複数の基底因子Ｄ〜ｊとして、群Ｇの複数の要素（ただし、上記群Ｇは位数が同じ複数の巡回群の直積で、上記群Ｇに含まれる二つの要素の間の双線形ペアリング演算によるペアリング値を計算可能。上記複数の基底因子Ｄ〜ｊは互いに一次独立。）を記憶し、
上記ペアリング対数記憶部は、上記記憶装置を用いて、複数のペアリング対数係数ηｉとして、上記複数の基底因子Ｄ〜ｊの間のペアリング値の対数を記憶し、
上記出力基底算出部は、上記処理装置を用いて、上記基底因子記憶部が記憶した複数の基底因子Ｄ〜ｊと、上記ペアリング対数記憶部が記憶した複数のペアリング対数係数ηｉとに基づいて、上記群Ｇの要素である複数の出力基底ｇｋ（ただし、上記複数の出力基底ｇｋのうち少なくともいずれか二つの出力基底ｇｋの間のペアリング値が１。）を算出し、
上記鍵算出部は、上記処理装置を用いて、上記出力基底算出部が算出した複数の出力基底ｇｋに基づいて、暗号演算に用いられる鍵を算出することを特徴とする。【００１３】
この発明にかかる鍵生成装置は、更に、ランダム行列選択部を有し、
上記ランダム行列選択部は、上記処理装置を用いて、上記ペアリング対数記憶部が記憶した複数のペアリング対数係数ηｉに基づいて、関係式Ｍ’＝Ｖ・Ｍ・ＶＴ（ただし、Ｍ’はｍ’μνをμ行ν列成分とするｂ次の正方行列。ｂは上記出力基底算出部が算出する複数の出力基底ｇｋの数。Ｖは０以上ｒ−１以下の整数を値にとる変数ｃμνをμ行ν列成分とするｂ行ｆ列の行列。ｒは上記複数の巡回群の位数。ｆは上記基底因子記憶部が記憶した複数の基底因子Ｄ〜ｊの数。Ｍは上記ペアリング対数記憶部が記憶したペアリング対数係数ηｉのうち基底因子Ｄ〜μと基底因子Ｄ〜νとの間のペアリング対数係数ηｉをμ行ν列成分とするｆ次の正方行列。ＶＴは上記行列Ｖを転置したｆ行ｂ列の行列。）においてｍ’ｕｖ＝０（ただし、ｕ及びｖは１以上ｂ以下の所定の整数。）となる複数の行列Ｖのなかから、ランダム行列Ｖ＊をランダムに選択し、
上記出力基底算出部は、上記処理装置を用いて、上記基底因子記憶部が記憶した複数の基底因子Ｄ〜ｊと、上記ランダム行列選択部が選択したランダム行列Ｖ＊とに基づいて、上記複数の出力基底ｇｋ＝ｖｋ・Ｄ〜（ただし、ｋは１以上ｂ以下の整数。ｖｋは上記ランダム行列Ｖ＊の第ｋ行ベクトル。Ｄ〜は上記複数の基底因子Ｄ〜ｊをｊ＋１行目の成分とするｆ次の縦ベクトル。）を算出することを特徴とする。【００１４】
この発明にかかる鍵生成装置は、以下の特徴を有する。
上記基底因子記憶部は、上記記憶装置を用いて、上記複数の基底因子Ｄ〜ｊとして、有限体Ｆｐを有限代数拡大した拡大体Ｋ上における代数曲線Ｃのヤコビ多様体ＪａｃＣの複数の因子がなす群の部分群である群Ｇの複数の要素を記憶する。【００１５】
この発明にかかる鍵生成装置は、
データを処理する処理装置と、データを記憶する記憶装置と、基底因子記憶部と、ペアリング対数記憶部と、ランダム行列選択部と、出力基底算出部と、鍵算出部とを有し、
上記基底因子記憶部は、上記記憶装置を用いて、上記暗号パラメータ設定装置が算出した複数の基底因子Ｄ〜ｊを記憶し、
上記ペアリング対数記憶部は、上記記憶装置を用いて、上記暗号パラメータ設定装置が算出した複数のペアリング対数係数ηｉを記憶し、
上記ランダム行列選択部は、上記処理装置を用いて、複数の整数ｍ’μν（μ及びνは、１以上ｂ以下の整数。ｂは２以上２ｄ以下の整数。）が満たすべき所定の条件に基づいて、関係式：Ｍ’＝Ｖ・Ｍ・ＶＴ（ただし、Ｍ’は整数ｍ’μνをμ行ν列成分とするｂ次の正方行列。Ｖは０以上ｒ−１以下のいずれかの整数を値とする変数ｃμνをμ行ν列成分とするｂ行２ｄ列の行列。ＶＴは上記行列Ｖを転置した２ｄ行ｂ列の正方行列。Ｍは、整数ｍμνをμ行ν列成分とする２ｄ次の正方行列。上記整数ｍμνは、μ＋ν＝２ｄ＋１のときην＋１、μ＋ν≠２ｄ＋１のとき０。）を満たす複数の行列Ｖのなかから、ランダム行列Ｖ＊をランダムに選択し、
上記出力基底算出部は、上記処理装置を用いて、上記基底因子記憶部が記憶した複数の基底因子Ｄ〜ｊと、上記ランダム行列選択部が選択したランダム行列Ｖ＊とに基づいて、複数の出力基底ｇｋ＝ｖｋ・Ｄ〜（ただし、ｋは１以上ｂ以下の整数。ｇｋは上記拡大体Ｋ上におけるヤコビ多様体ＪａｃＣの因子。ｖｋは上記ランダム行列Ｖ＊の第ｋ行ベクトル。Ｄ〜は上記複数の基底因子Ｄ〜ｊをｊ＋１行目の成分とする２ｄ次の縦ベクトル。）を算出し、
上記パラメータ算出部は、上記処理装置を用いて、上記出力基底算出部が算出した複数の出力基底ｇｋと上記ランダム行列選択部が選択したランダム行列Ｖ＊とに基づいて、暗号演算に用いられる鍵を算出することを特徴とする。【００１６】
この発明にかかる鍵生成装置は、更に、一致条件入力部を有し、
上記一致条件入力部は、上記処理装置を用いて、上記複数の出力基底ｇｋのうち、出力基底ｇμと出力基底ｇνとのペアリング値ｅ（ｇμ，ｇν）が１になるべき出力基底の組を示す整数の組（μ，ν）を入力し、
上記ランダム行列選択部は、上記処理装置を用いて、上記一致条件入力部が入力した整数の組（μ，ν）に基づいて、条件：ｍ’μν＝０を満たすランダム行列Ｖ＊を選択することを特徴とする。【００１７】
この発明にかかる鍵生成装置は、更に、不一致条件入力部を有し、
上記不一致条件入力部は、上記処理装置を用いて、上記複数の出力基底ｇｋのうち、出力基底ｇμと出力基底ｇνとのペアリング値ｅ（ｇμ，ｇν）が１になるべきでない出力基底の組を示す整数の組（μ，ν）を入力し、
上記ランダム行列選択部は、上記処理装置を用いて、上記不一致条件入力部が入力した整数の組（μ，ν）に基づいて、条件ｍ’μν≠０を満たすランダム行列Ｖ＊を選択することを特徴とする。【００１８】
この発明にかかる暗号システムは、暗号パラメータ設定装置と、鍵生成装置とを有し、
上記基底因子記憶部は、上記記憶装置を用いて、上記暗号パラメータ設定装置が算出した複数の基底因子Ｄ〜ｊを記憶し、
上記ペアリング対数記憶部は、上記記憶装置を用いて、上記暗号パラメータ設定装置が算出した複数のペアリング対数係数ηｉを記憶することを特徴とする。【００１９】
この発明にかかる暗号システムは、更に、暗号文生成装置と、暗号文復号装置とを有し、
上記暗号文生成装置は、上記暗号パラメータ設定装置が設定した暗号パラメータと、上記鍵生成装置が生成した鍵とに基づいて、暗号文を生成し、
上記暗号文復号装置は、上記暗号パラメータ設定装置が設定した暗号パラメータと、上記鍵生成装置が生成した鍵とに基づいて、上記暗号文生成装置が生成した暗号文を復号することを特徴とする。【００２０】
この発明にかかる暗号システムは、複数の暗号文復号装置を有し、更に、不正者追跡装置を有し、
上記鍵生成装置は、更に、公開鍵設定部と、個人鍵設定部と、追跡鍵設定部とを有し、
上記公開鍵設定部は、上記暗号文生成装置が暗号文を生成するために用いる公開鍵を設定し、
上記個人鍵設定部は、上記暗号文生成装置が生成した暗号文を上記複数の暗号文復号装置それぞれが復号するために用いる複数の個人鍵を設定し、
上記追跡鍵設定部は、上記不正者追跡装置が個人鍵の漏洩元を判別するために用いる追跡鍵を設定し、
上記暗号文生成装置は、上記鍵生成装置が設定した公開鍵に基づいて、暗号文を生成し、
上記複数の暗号文復号装置は、それぞれ、上記鍵生成装置が設定した複数の個人鍵のうち、上記暗号文復号装置の利用者に対応する個人鍵に基づいて、上記暗号文生成装置が生成した暗号文を復号し、
上記不正者追跡装置は、上記鍵生成装置が設定した追跡鍵に基づいて、暗号文を生成し、生成した暗号文を、上記暗号文生成装置が生成した暗号文を復号する海賊復号装置に復号させた結果を解析して、上記海賊復号装置が暗号文の復号に用いた個人鍵を判別することを特徴とする。【００２１】
この発明にかかる暗号システムは、以下の特徴を有する。
上記ランダム因子選択部は、上記処理装置を用いて、有限体Ｆｐ上における超楕円曲線Ｃ：Ｙ２＝Ｘ５＋１（ただし、素数ｐを５で割った余りａは２または３。）のヤコビ多様体ＪａｃＣの複数の因子のなかから、ランダム因子Ｄ＊を選択し、
上記ランダム行列選択部は、上記処理装置を用いて、条件：ｍ’１２＝ｍ’２１＝ｍ’３４＝ｍ’４３＝ｍ’１４＝ｍ’４１＝ｍ’２３＝ｍ’３２＝０，ｍ’１１≠０，ｍ’２２≠０，ｍ’３３≠０，ｍ’４４≠０を満たす４行４列のランダム行列Ｖ＊を選択し、
上記出力基底算出部は、上記処理装置を用いて、上記基底因子記憶部が記憶した複数の基底因子Ｄ〜ｊと、上記ランダム行列選択部が算出したランダム行列Ｖ＊とに基づいて、四つの出力基底ｇｋ＝ｖｋ・Ｄ〜（ただし、ｋは１以上４以下の整数。）を算出し、
上記鍵算出部は、利用者人数入力部と、公開行基底算出部と、公開列基底算出部と、行乱数生成部と、列乱数生成部と、ペアリング乱数生成部と、共通乱数生成部と、公開共通因子算出部と、公開行第一因子算出部と、公開行第二因子算出部と、公開ペアリング値算出部と、公開列因子算出部と、公開鍵設定部と、個人因子算出部と、個人鍵設定部とを有し、
上記利用者人数入力部は、上記処理装置を用いて、利用者の数ｎを表わす整数ｎ１及び整数ｎ２（ただし、ｎ＝ｎ１ｎ２）を入力し、
上記公開行基底算出部は、上記処理装置を用いて、上記出力基底算出部が算出した出力基底ｇ１と出力基底ｇ２とに基づいて、上記ヤコビ多様体ＪａｃＣの因子ｇ＝ｇ１＋ｇ２を算出し、
上記公開列基底算出部は、上記処理装置を用いて、上記出力基底算出部が算出した出力基底ｇ３と出力基底ｇ４とに基づいて、上記ヤコビ多様体ＪａｃＣの因子ｈ＝ｇ３＋ｇ４を算出し、
上記行乱数生成部は、上記処理装置を用いて、上記利用者人数入力部が入力した整数ｎ１に基づいて、ｎ１個の乱数ｒｘ（ただし、ｘは１以上ｎ１以下の整数。乱数ｒｘは１以上ｒ−１以下の整数。）をランダムに生成し、
上記列乱数生成部は、上記処理装置を用いて、上記利用者人数入力部が入力した整数ｎ２に基づいて、ｎ２個の乱数ｃｙ（ただし、ｙは１以上ｎ２以下の整数。乱数ｃｙは１以上ｒ−１以下の整数。）をランダムに生成し、
上記ペアリング乱数生成部は、上記処理装置を用いて、上記利用者人数入力部が入力した整数ｎ１に基づいて、ｎ１個の乱数αｘ（ただし、ｘは１以上ｎ１以下の整数。乱数αｘは１以上ｒ−１以下の整数。）をランダムに生成し、
上記共通乱数生成部は、上記処理装置を用いて、乱数β（ただし、乱数βは１以上ｒ−１以下の整数。）をランダムに生成し、
上記公開共通因子算出部は、上記処理装置を用いて、上記出力基底算出部が算出した出力基底ｇ２と、上記共通乱数生成部が生成した乱数βとに基づいて、上記ヤコビ多様体ＪａｃＣの因子Ｅ＝β・ｇ２を算出し、
上記公開行第一因子算出部は、上記処理装置を用いて、上記出力基底算出部が算出した出力基底ｇ２と、上記行乱数生成部が生成したｎ１個の乱数ｒｘと、上記共通乱数生成部が生成した乱数βとに基づいて、上記ヤコビ多様体ＪａｃＣのｎ１個の因子Ｅｘ＝β・ｒｘ・ｇ２（ただし、ｘは１以上ｎ１以下の整数。）を算出し、
上記公開行第二因子算出部は、上記処理装置を用いて、上記出力基底算出部が算出した出力基底ｇ４と、上記行乱数生成部が生成したｎ１個の乱数ｒｘと、上記共通乱数生成部が生成した乱数βとに基づいて、上記ヤコビ多様体ＪａｃＣのｎ１個の因子Ｆｘ＝β・ｒｘ・ｇ４（ただし、ｘは１以上ｎ１以下の整数。）を算出し、
上記公開ペアリング値算出部は、上記処理装置を用いて、上記出力基底算出部が算出した出力基底ｇ２と、上記ペアリング乱数生成部が生成したｎ１個の乱数αｘと、上記共通乱数生成部が生成した乱数βとに基づいて、ｎ１個のペアリング値Ｇｘ＝ｅ（ｇ４，ｇ４）β・αｘ（ただし、ペアリングｅはｅ（Ｄ，Ｄ’）＝ｅＷ（Ｄ，φ（Ｄ’））。ｅＷはヴェイユペアリング。φは上記ヤコビ多様体ＪａｃＣ上における計算可能な準同型写像。）を算出し、
上記公開列因子算出部は、上記処理装置を用いて、上記公開行基底算出部が算出した因子ｇと、上記列乱数生成部が生成した乱数ｃｙとに基づいて、上記ヤコビ多様体ＪａｃＣのｎ２個の因子Ｈｙ＝ｃｙ・ｇ（ただし、ｙは１以上ｎ２以下の整数。）を算出し、
上記公開鍵設定部は、上記処理装置を用いて、上記公開行基底算出部が算出した因子ｇと、上記公開列基底算出部が算出した因子ｈと、上記公開共通因子算出部が算出した因子Ｅと、上記公開行第一因子算出部が算出したｎ１個の因子Ｅｘと、上記公開行第二因子算出部が算出したｎ１個の因子Ｆｘと、上記公開ペアリング値算出部が算出したｎ１個のペアリング値Ｇｘと、上記公開列因子算出部が算出したｎ２個の因子Ｈｙとに基づいて、公開鍵ＰＫ＝（ｇ，ｈ，Ｅ，Ｅｘ，Ｆｘ，Ｇｘ，Ｈｙ）（ただし、ｘは１以上ｎ１以下の整数。ｙは１以上ｎ２以下の整数。）を設定し、
上記個人因子算出部は、上記処理装置を用いて、上記公開行基底算出部が算出した因子ｇと、上記行乱数生成部が生成したｎ１個の乱数ｒｘと、上記列乱数生成部が生成したｎ２個の乱数ｃｙと、上記ペアリング乱数生成部が生成したｎ１個の乱数αｘとに基づいて、ｎ個の因子Ｋｘ，ｙ＝αｘ・ｇ＋ｒｘｃｙ・ｇ（ただし、ｘは１以上ｎ１以下の整数。ｙは１以上ｎ２以下の整数。）を算出し、
上記個人鍵設定部は、上記処理装置を用いて、上記個人因子算出部が算出したｎ個の因子Ｋｘ，ｙに基づいて、ｎ人の利用者にそれぞれ対応するｎ個の個人鍵ＳＫｘ，ｙ＝（Ｋｘ，ｙ）を設定し、
上記暗号文生成装置は、データを処理する処理装置と、公開鍵入力部と、平文入力部と、暗号共通乱数生成部と、暗号列乱数生成部と、暗号行乱数生成部と、暗号行第一因子算出部と、暗号行第二因子算出部と、暗号行第三因子算出部と、暗号鍵算出部と、平文暗号化部と、行暗号文設定部と、暗号列第一因子算出部と、暗号列第二因子算出部と、列暗号文設定部とを有し、
上記公開鍵入力部は、上記処理装置を用いて、上記鍵生成装置が設定した公開鍵ＰＫ＝（ｇ，ｈ，Ｅ，Ｅｘ，Ｆｘ，Ｇｘ，Ｈｙ）を入力し、
上記平文入力部は、上記処理装置を用いて、暗号化する平文Ｍを入力し、
上記暗号共通乱数生成部は、上記処理装置を用いて、乱数ｔ（ただし、乱数ｔは１以上ｒ−１以下の整数。）をランダムに生成し、
上記暗号列乱数生成部は、上記処理装置を用いて、ｎ２個以下の乱数ｗｙ（ただし、ｙは１以上ｎ２以下の整数。乱数ｗｙは１以上ｒ−１以下の整数。）を生成し、
上記暗号行乱数生成部は、上記処理装置を用いて、ｎ１個以下の乱数ｓｘ（ただし、ｘは１以上ｎ１以下の整数。乱数ｓｘは１以上ｒ−１以下の整数。）を生成し、
上記暗号行第一因子算出部は、上記処理装置を用いて、上記公開鍵入力部が入力した公開鍵ＰＫに含まれるｎ１個の因子Ｅｘと、上記暗号行乱数生成部が生成したｎ１個以下の乱数ｓｘとに基づいて、ヤコビ多様体ＪａｃＣのｎ１個以下の因子Ｒｘ＝ｓｘ・Ｅｘ（ただし、ｘは１以上ｎ１以下の整数。）を算出し、
上記暗号行第二因子算出部は、上記処理装置を用いて、上記公開鍵入力部が入力した公開鍵ＰＫに含まれるｎ１個の因子Ｆｘと、上記暗号行乱数生成部が生成したｎ１個以下の乱数ｓｘとに基づいて、ヤコビ多様体ＪａｃＣのｎ１個以下の因子Ｒ〜ｘ＝ｓｘ・Ｆｘ（ただし、ｘは１以上ｎ１以下の整数。）を算出し、
上記暗号行第三因子算出部は、上記処理装置を用いて、上記公開鍵入力部が入力した公開鍵ＰＫに含まれる因子Ｅと、上記暗号共通乱数生成部が生成した乱数ｔと、上記暗号行乱数生成部が生成したｎ１個以下の乱数ｓｘとに基づいて、ヤコビ多様体ＪａｃＣのｎ１個以下の因子Ａｘ＝ｓｘｔ・Ｅ（ただし、ｘは１以上ｎ１以下の整数。）を算出し、
上記暗号鍵算出部は、上記処理装置を用いて、上記公開鍵入力部が入力した公開鍵ＰＫに含まれるｎ１個のペアリング値Ｇｘと、上記暗号共通乱数生成部が生成した乱数ｔと、上記暗号行乱数生成部が生成したｎ１個以下の乱数ｓｘとに基づいて、ｎ１個以下のペアリング値ＣＫｘ＝Ｇｘｓｘｔ（ただし、ｘは１以上ｎ１以下の整数。）を算出し、
上記平文暗号化部は、上記処理装置を用いて、上記平文入力部が入力した平文Ｍと、上記暗号鍵算出部が算出したｎ１個以下のペアリング値ＣＫｘとに基づいて、上記ｎ１個以下のペアリング値ＣＫｘをそれぞれ暗号鍵として使用して上記平文Ｍを暗号化して、ｎ１個以下の暗号文Ｂｘ（ただし、ｘは１以上ｎ１以下の整数。）を生成し、
上記行暗号文設定部は、上記処理装置を用いて、上記暗号行第一因子算出部が算出したｎ１個以下の因子Ｒｘと、上記暗号行第二因子算出部が算出したｎ１個以下の因子Ｒ〜ｘと、上記暗号行第三因子算出部が算出したｎ１個以下の因子Ａｘと、上記平文暗号化部が生成したｎ１個以下の暗号文Ｂｘとに基づいて、ｎ１個以下の行暗号文ＣＴｘ＝（Ｒｘ，Ｒ〜ｘ，Ａｘ，Ｂｘ）（ただし、ｘは１以上ｎ１以下の整数。）を設定し、
上記暗号列第一因子算出部は、上記処理装置を用いて、上記公開鍵入力部が入力した公開鍵ＰＫに含まれる因子ｈ及び因子Ｈｙと、上記暗号共通乱数生成部が生成した乱数ｔと、上記暗号列乱数生成部が生成した乱数ｗｙとに基づいて、ヤコビ多様体ＪａｃＣのｎ２個以下の因子Ｃｙ＝ｔ・Ｈｙ＋ｗｙ・ｈ（ただし、ｙは１以上ｎ２以下の整数。）を算出し、
上記暗号列第二因子算出部は、上記処理装置を用いて、上記公開鍵入力部が入力した公開鍵ＰＫに含まれる因子ｇと、上記暗号列乱数生成部が生成した乱数ｗｙとに基づいて、ヤコビ多様体ＪａｃＣのｎ２個以下の因子Ｃ〜ｙ＝ｗｙ・ｇ（ただし、ｙは１以上ｎ２以下の整数。）を算出し、
上記列暗号文設定部は、上記処理装置を用いて、上記暗号列第一因子算出部が算出したｎ２個以下の因子Ｃｙと、上記暗号列第二因子算出部が算出したｎ２個以下の因子Ｃ〜ｙとに基づいて、ｎ２個以下の列暗号文ＣＴｙ＝（Ｃｙ，Ｃ〜ｙ）（ただし、ｙは１以上ｎ２以下の整数。）を設定し、
上記暗号文復号装置は、データを記憶する記憶装置と、データを処理する処理装置と、個人鍵記憶部と、行暗号文入力部と、列暗号文入力部と、復号鍵算出部と、暗号文復号部とを有し、
上記個人鍵記憶部は、上記記憶装置を用いて、上記鍵生成装置が設定したｎ個の個人鍵ＳＫｘ，ｙのうち、上記暗号文復号装置の利用者に対応する所定のインデックスＸ及びＹ（ただし、Ｘは１以上ｎ１以下の整数。Ｙは１以上ｎ２以下の整数。）に対応する個人鍵ＳＫＸ，Ｙ＝（ＫＸ，Ｙ）を記憶し、
上記行暗号文入力部は、上記処理装置を用いて、上記暗号文生成装置が設定したｎ１個以下の行暗号文ＣＴｘのうち、上記インデックスＸに対応する行暗号文ＣＴＸ＝（ＲＸ，Ｒ〜Ｘ，ＡＸ，ＢＸ）を入力し、
上記列暗号文入力部は、上記処理装置を用いて、上記暗号文生成装置が設定したｎ２個以下の列暗号文ＣＴｙのうち、上記インデックスＹに対応する列暗号文ＣＴＹ＝（ＣＹ，Ｃ〜Ｙ）を入力し、
上記復号鍵算出部は、上記処理装置を用いて、上記個人鍵記憶部が記憶した個人鍵ＳＫＸ，Ｙと、上記行暗号文入力部が入力した行暗号文ＣＴＸに含まれる因子ＲＸ及び因子Ｒ〜Ｘ及び因子ＡＸと、上記列暗号文入力部が入力した列暗号文ＣＴＹに含まれる因子ＣＹ及び因子Ｃ〜Ｙとに基づいて、ペアリング値ＣＫ’＝ｅ（ＫＸ，Ｙ，ＡＸ）・ｅ（Ｒ〜Ｘ,Ｃ〜Ｙ）／ｅ（ＣＹ，ＲＸ）を算出し、
上記暗号文復号部は、上記処理装置を用いて、上記行暗号文入力部が入力した行暗号文ＣＴＸに含まれる暗号文ＢＸと、上記復号鍵算出部が算出したペアリング値ＣＫ’とに基づいて、上記ペアリング値ＣＫ’を復号鍵として使用して上記暗号文ＢＸを復号して、復号文Ｍ’を生成することを特徴とする。【００２２】
この発明にかかる暗号システムは、複数の暗号文復号装置を有し、更に、不正者追跡装置を有し、
上記鍵算出部は、更に、追跡鍵設定部を有し、
上記追跡鍵設定部は、上記処理装置を用いて、上記出力基底算出部が算出した四つの出力基底ｇｋと、上記行乱数生成部が生成したｎ１個の乱数ｒｘと、上記ペアリング乱数生成部が生成したｎ１個の乱数αｘと、上記列乱数生成部が生成したｎ２個の乱数ｃｙとに基づいて、追跡鍵ＴＫ＝（ｇｋ，ｒｘ，αｘ，ｃｙ）（ただし、ｋは１以上４以下の整数。ｘは１以上ｎ１以下の整数。ｙは１以上ｎ２以下の整数。）を設定し、
上記不正者追跡装置は、データを記憶する記憶装置と、データを処理する処理装置と、追跡鍵記憶部と、目標決定部と、追跡平文生成部と、追跡共通乱数生成部と、追跡列乱数生成部と、追跡行乱数生成部と、撹乱行乱数生成部と、撹乱列乱数生成部と、追跡行第一因子算出部と、追跡行第二因子算出部と、追跡行第三因子算出部と、追跡暗号鍵算出部と、追跡平文暗号化部と、追跡行暗号文設定部と、追跡列第一因子算出部と、追跡列第二因子算出部と、追跡列暗号文設定部と、復号文入力部と、漏洩元判別部とを有し、
上記追跡鍵記憶部は、上記記憶装置を用いて、鍵生成装置が設定した追跡鍵ＴＫ＝（ｇｋ，ｒｘ，αｘ，ｃｙ）を記憶し、
上記目標決定部は、上記処理装置を用いて、上記インデックスｘを三つのグループに分類し、上記処理装置を用いて、上記インデックスｙを二つのグループに分類し、
上記追跡平文生成部は、上記処理装置を用いて、平文Ｍを生成し、
上記追跡共通乱数生成部は、上記処理装置を用いて、乱数ｔ（ただし、乱数ｔは１以上ｒ以下の整数。）をランダムに生成し、
上記追跡列乱数生成部は、上記処理装置を用いて、ｎ２個以下の乱数ｗｙ（ただし、ｙは１以上ｎ２以下の整数。乱数ｗｙは１以上ｒ−１以下の整数。）をランダムに生成し、
上記追跡行乱数生成部は、上記処理装置を用いて、ｎ１個以下の乱数ｓｘ（ただし、ｘは１以上ｎ１以下の整数。乱数ｓｘは１以上ｒ−１以下の整数。）をランダムに生成し、
上記撹乱行乱数生成部は、上記処理装置を用いて、ｎ１個以下の乱数ｖｘ，１（ただし、ｘは１以上ｎ１以下の整数。乱数ｖｘ，１は１以上ｒ−１以下の整数。）と、ｎ１個以下の乱数ｖｘ，２（ただし、ｘは１以上ｎ１以下の整数。乱数ｖｘ，２は１以上ｒ−１以下の整数。）と、ｎ１個以下の乱数ｖｘ，３（ただし、ｘは１以上ｎ１以下の整数。乱数ｖｘ，３は１以上ｒ−１以下の整数。）とをランダムに生成し、
上記撹乱列乱数生成部は、上記処理装置を用いて、ｎ２個以下の乱数ｚｐ，ｙ（ただし、ｙは１以上ｎ２以下の整数。乱数ｚｐ，ｙは１以上ｒ−１以下の整数。）をランダムに生成し、
上記追跡行第一因子算出部は、上記処理装置を用いて、上記追跡鍵記憶部が記憶した追跡鍵ＴＫに含まれる因子ｇ１及び因子ｇ２及びｎ１個の乱数ｒｘと、上記目標決定部がインデックスｘを分類した三つのグループと、上記追跡行乱数生成部が生成したｎ１個以下の乱数ｓｘと、上記撹乱行乱数生成部が生成したｎ１個以下の乱数ｖｘ，１とに基づいて、上記三つのグループのうち第一のグループに属するインデックスｘについて、因子Ｒｘ＝ｓｘｒｘ・ｇ２（ただし、ｘは１以上ｎ１以下の整数。）を算出し、上記三つのグループのうち第二のグループに属するインデックスｘについて、因子Ｒｘ＝ｓｘｒｘ・（ｇ１＋ｇ２）（ただし、ｘは１以上ｎ１以下の整数。）を算出し、上記三つのグループのうち第三のグループに属するインデックスｘについて、因子Ｒｘ＝ｖｘ，１・（ｇ１＋ｇ２）（ただし、ｘは１以上ｎ１以下の整数。）を算出し、
上記追跡行第二因子算出部は、上記処理装置を用いて、上記追跡鍵記憶部が記憶した追跡鍵ＴＫに含まれる因子ｇ３及び因子ｇ４及びｎ１個の乱数ｒｘと、上記目標決定部がインデックスｘを分類した三つのグループと、上記追跡行乱数生成部が生成したｎ１個以下の乱数ｓｘと、上記撹乱行乱数生成部が生成したｎ１個以下の乱数ｖｘ，１とに基づいて、上記三つのグループのうち第一のグループに属するインデックスｘについて、因子Ｒ〜ｘ＝ｓｘｒｘ・ｇ４（ただし、ｘは１以上ｎ１以下の整数。）を算出し、上記三つのグループのうち第二のグループに属するインデックスｘについて、因子Ｒ〜ｘ＝ｓｘｒｘ・（ｇ３＋ｇ４）（ただし、ｘは１以上ｎ１以下の整数。）を算出し、上記三つのグループのうち第三のグループに属するインデックスｘについて、因子Ｒ〜ｘ＝ｖｘ，１・（ｇ３＋ｇ４）（ただし、ｘは１以上ｎ１以下の整数。）を算出し、
上記追跡行第三因子算出部は、上記処理装置を用いて、上記追跡鍵記憶部が記憶した追跡鍵ＴＫに含まれる因子ｇ１及び因子ｇ２と、上記目標決定部がインデックスｘを分類した三つのグループと、上記追跡共通乱数生成部が生成した乱数ｔと、上記追跡行乱数生成部が生成したｎ１個以下の乱数ｓｘと、上記撹乱行乱数生成部が生成したｎ１個以下の乱数ｖｘ，２とに基づいて、上記三つのグループのうち第一のグループに属するインデックスｘについて、因子Ａｘ＝ｓｘｔ・ｇ２（ただし、ｘは１以上ｎ１以下の整数。）を算出し、上記三つのグループのうち第二のグループに属するインデックスｘについて、因子Ａｘ＝ｓｘｔ・（ｇ１＋ｇ２）（ただし、ｘは１以上ｎ１以下の整数。）を算出し、上記三つのグループのうち第三のグループに属するインデックスｘについて、因子Ａｘ＝ｖｘ，２・（ｇ１＋ｇ２）（ただし、ｘは１以上ｎ１以下の整数。）を算出し、
上記追跡暗号鍵算出部は、上記処理装置を用いて、上記追跡鍵記憶部が記憶した追跡鍵ＴＫに含まれる因子ｇ１及び因子ｇ２及びｎ１個の乱数αｘと、上記目標決定部がインデックスｘを分類した三つのグループと、上記追跡行乱数生成部が生成したｎ１個以下の乱数ｓｘと、上記撹乱行乱数生成部が生成したｎ１個以下の乱数ｖｘ，３とに基づいて、上記三つのグループのうち第一のグループに属するインデックスｘについて、ペアリング値ＣＫｘ＝ｅ（ｇ２，ｇ２）αｘｓｘｔ（ただし、ｘは１以上ｎ１以下の整数。）を算出し、上記三つのグループのうち第二のグループに属するインデックスｘについて、ペアリング値ＣＫｘ＝ｅ（ｇ１＋ｇ２，ｇ１＋ｇ２）αｘｓｘｔ（ただし、ｘは１以上ｎ１以下の整数。）を算出し、上記三つのグループのうち第三のグループに属するインデックスｘについて、ペアリング値ＣＫｘ＝ｅ（ｇ１＋ｇ２，ｇ１＋ｇ２）ｖｘ，２（ただし、ｘは１以上ｎ１以下の整数。）を算出し、
上記追跡平文暗号化部は、上記処理装置を用いて、上記追跡暗号鍵算出部が算出したｎ１個以下のペアリング値ＣＫｘと、上記追跡平文生成部が生成した平文Ｍとに基づいて、上記ｎ１個以下のペアリング値ＣＫｘをそれぞれ暗号鍵として使用して上記平文Ｍを暗号化して、ｎ１個以下の暗号文Ｂｘ（ただし、ｘは１以上ｎ１以下の整数。）を生成し、
上記追跡行暗号文設定部は、上記処理装置を用いて、上記追跡行第一因子算出部が算出したｎ１個以下の因子Ｒｘと、上記追跡行第二因子算出部が算出したｎ１個以下の因子Ｒ〜ｘと、上記追跡行第三因子算出部が算出したｎ１個以下の因子Ａｘと、上記追跡平文暗号化部が生成したｎ１個以下の暗号文Ｂｘとに基づいて、ｎ１個以下の行暗号文ＣＴｘ＝（Ｒｘ，Ｒ〜ｘ，Ａｘ，Ｂｘ）（ただし、ｘは１以上ｎ１以下の整数。）を設定し、
上記追跡列第一因子算出部は、上記処理装置を用いて、上記追跡鍵記憶部が記憶した追跡鍵ＴＫに含まれる因子ｇ１及び因子ｇ２及び因子ｇ３及び因子ｇ４及びｎ２個の乱数ｃｙと、上記目標決定部がインデックスｙを分類した二つのグループと、上記追跡共通乱数生成部が生成した乱数ｔと、上記追跡列乱数生成部が生成したｎ２個以下の乱数ｗｙと、上記撹乱列乱数生成部が生成したｎ２個以下の乱数ｚｐ，ｙとに基づいて、上記二つのグループのうち第一のグループに属するインデックスｙについて、因子Ｃｙ＝ｔｃｙ・（ｇ１＋ｇ２）＋ｗｙ・（ｇ３＋ｇ４）（ただし、ｙは１以上ｎ２以下の整数。）を算出し、上記二つのグループのうち第二のグループに属するインデックスｙについて、因子Ｃｙ＝ｔｃｙ・（ｇ３＋ｇ４）＋ｚｐ，ｙ・ｇ１＋ｗｙ・（ｇ３＋ｇ４）（ただし、ｙは１以上ｎ２以下の整数。）を算出し、
上記追跡列第二因子算出部は、上記処理装置を用いて、追跡鍵記憶部が記憶した追跡鍵ＴＫに含まれる因子ｇ１及び因子ｇ２と、上記追跡列乱数生成部が生成したｎ２個以下の乱数ｗｙとに基づいて、ｎ２個以下の因子Ｃ〜ｙ＝ｗｙ・（ｇ１＋ｇ２）（ただし、ｙは１以上ｎ２以下の整数。）を算出し、
上記追跡列暗号文設定部は、上記処理装置を用いて、上記追跡列第一因子算出部が算出したｎ２個以下の因子Ｃｙと、上記追跡列第二因子算出部が算出したｎ２個以下の因子Ｃ〜ｙとに基づいて、ｎ２個以下の列暗号文ＣＴｙ＝（Ｃｙ，Ｃ〜ｙ）（ただし、ｙは１以上ｎ２以下の整数。）を設定し、
上記復号文入力部は、上記処理装置を用いて、上記暗号文生成装置が生成した暗号文を復号する海賊復号装置が、上記追跡行暗号文設定部が設定したｎ１個以下の行暗号文ＣＴｘと、上記追跡列暗号文設定部が設定したｎ２個以下の列暗号文ＣＴｙとを含む暗号文を復号して生成した復号文Ｍ’を入力し、
上記漏洩元判別部は、上記処理装置を用いて、上記追跡平文生成部が生成した平文Ｍと、上記復号文入力部が入力した復号文Ｍ’とを比較して、上記海賊復号装置が復号に使用した個人鍵Ｋｘ，ｙを判別することを特徴とする。【００２３】
この発明にかかる暗号システムは、更に、署名鍵発行装置と、複数の署名装置と、署名検証装置と、署名者追跡装置とを有し、
上記署名鍵発行装置は、暗号パラメータ設定装置が設定した暗号パラメータと、上記鍵生成装置が生成した鍵とに基づいて、上記複数の署名装置にそれぞれ対応する複数の署名鍵を生成し、
上記複数の署名装置のうち少なくともいずれかの署名装置は、上記署名鍵発行装置が生成した複数の署名鍵のうち、上記署名装置に対応する署名鍵を使用して、署名を生成し、
上記署名検証装置は、上記暗号パラメータ設定装置が設定した暗号パラメータと、上記鍵生成装置が生成した鍵とを使用して、上記署名装置が生成した署名を検証し、
上記署名者追跡装置は、上記暗号パラメータ設定装置が設定した暗号パラメータと、上記鍵生成装置が生成した鍵とを使用して、上記署名装置が生成した署名を解析し、上記署名を生成した署名装置を判別することを特徴とする。【００２４】
この発明にかかる暗号システムは、以下の特徴を有する。
上記ランダム因子選択部は、上記処理装置を用いて、有限体Ｆｐ上における超楕円曲線Ｃ：Ｙ２＝Ｘ５＋１（ただし、素数ｐを５で割った余りａは２または３。）のヤコビ多様体ＪａｃＣの複数の因子のなかから、ランダム因子Ｄ＊を選択し、
上記ランダム行列選択部は、上記処理装置を用いて、条件：ｍ’１２＝ｍ’２１＝０，ｍ’１１≠０，ｍ’２２≠０を満たす２行２列のランダム行列Ｖ＊を選択し、
上記出力基底算出部は、上記処理装置を用いて、上記基底因子記憶部が記憶した複数の基底因子Ｄ〜ｊと、上記ランダム行列選択部が算出したランダム行列Ｖ＊とに基づいて、二つの出力基底ｇｋ＝ｖｋ・Ｄ〜（ただし、ｋは１以上２以下の整数。）を算出し、
上記鍵算出部は、ビット長入力部と、基底乱数生成部と、ペアリング乱数生成部と、マスター乱数生成部と、公開基底算出部と、公開第一因子算出部と、公開ペアリング値算出部と、公開第二因子生成部と、公開第三因子生成部と、公開ビット因子生成部と、マスター因子算出部と、公開鍵設定部と、マスター鍵設定部と、追跡鍵設定部とを有し、
上記ビット長入力部は、上記処理装置を用いて、署名するメッセージのビット長ｍを入力し、
上記基底乱数生成部は、上記処理装置を用いて、乱数β（ただし、乱数βは１以上ｒ−１以下の整数。）をランダムに生成し、
上記ペアリング乱数生成部は、上記処理装置を用いて、乱数α（ただし、乱数αは１以上ｒ−１以下の整数。）をランダムに生成し、
上記マスター乱数生成部は、上記処理装置を用いて、乱数ω（ただし、乱数ωは１以上ｒ−１以下の整数。）をランダムに生成し、
上記公開基底算出部は、上記処理装置を用いて、上記出力基底算出部が算出した出力基底ｇ１と出力基底ｇ２と、上記基底乱数生成部が生成した乱数βとに基づいて、上記ヤコビ多様体ＪａｃＣの因子ｇ＝ｇ２＋β・ｇ１を算出し、
上記公開第一因子算出部は、上記処理装置を用いて、上記マスター乱数生成部が生成した乱数ωと、上記公開基底算出部が算出した因子ｇとに基づいて、上記ヤコビ多様体ＪａｃＣの因子Ω＝ω・ｇを算出し、
上記公開ペアリング値算出部は、上記処理装置を用いて、上記ペアリング乱数生成部が生成した乱数αと、上記公開基底算出部が算出した因子ｇとに基づいて、ペアリング値Ａ＝ｅ（ｇ，ｇ）αを算出し、
上記公開第二因子生成部は、上記処理装置を用いて、上記ヤコビ多様体ＪａｃＣの因子ｕをランダムに生成し、
上記公開第三因子生成部は、上記処理装置を用いて、上記ヤコビ多様体ＪａｃＣの因子ｖ’をランダムに生成し、
上記公開ビット因子生成部は、上記処理装置を用いて、上記ビット長入力部が入力したビット長ｍに基づいて、上記ヤコビ多様体ＪａｃＣのｍ個の因子ｖｉ（ただし、ｉは１以上ｍ以下の整数。）をランダムに生成し、
上記マスター因子算出部は、上記処理装置を用いて、上記ペアリング乱数生成部が生成した乱数αと、上記公開基底算出部が算出した因子ｇとに基づいて、上記ヤコビ多様体ＪａｃＣの因子ｇ’＝α・ｇを算出し、
上記公開鍵設定部は、上記処理装置を用いて、上記出力基底算出部が算出した因子ｇ１と、上記公開基底算出部が算出した因子ｇと、上記公開第一因子算出部が算出した因子Ωと、上記公開ペアリング値算出部が算出したペアリング値Ａと、上記公開第二因子生成部が生成した因子ｕと、上記公開第三因子生成部が生成した因子ｖ’と、上記公開ビット因子生成部が生成したｍ個の因子ｖｉとに基づいて、公開鍵ＰＫ＝（ｇ１，ｇ，Ω，Ａ，ｕ，ｖ’，ｖｉ）（ただし、ｉは１以上ｍ以下の整数。）を設定し、
上記マスター鍵設定部は、上記処理装置を用いて、上記マスター乱数生成部が生成した乱数ωと、上記マスター因子算出部が算出した因子ｇ’とに基づいて、マスター鍵ＭＫ＝（ω，ｇ’）を設定し、
上記追跡鍵設定部は、上記処理装置を用いて、上記出力基底算出部が算出した出力基底ｇ２に基づいて、追跡鍵ＴＫ＝（ｇ２）を設定し、
上記署名鍵発行装置は、データを記憶する記憶装置と、データを処理する処理装置と、マスター鍵記憶部と、発行公開鍵入力部と、識別子生成部と、署名第一鍵算出部と、署名第二鍵算出部と、署名第三鍵算出部と、署名鍵設定部と、識別子設定部とを有し、
上記マスター鍵記憶部は、上記記憶装置を用いて、上記鍵生成装置が設定したマスター鍵ＭＫ＝（ω，ｇ’）を記憶し、
上記発行公開鍵入力部は、上記処理装置を用いて、上記鍵生成装置が設定した公開鍵ＰＫ＝（ｇ１，ｇ，Ω，Ａ，ｕ，ｖ’，ｖｉ）を入力し、
上記識別子生成部は、上記処理装置を用いて、識別子ｓＩＤ（ただし、識別子ｓＩＤは１以上ｒ−１以下の整数。）をランダムに生成し、
上記署名第一鍵算出部は、上記処理装置を用いて、上記マスター鍵記憶部が記憶したマスター鍵ＭＫに含まれる乱数ω及び因子ｇ’と、上記識別子生成部が生成した識別子ｓＩＤとに基づいて、上記ヤコビ多様体ＪａｃＣの因子Ｋ１＝｛１／（ω＋ｓＩＤ）｝・ｇ’を算出し、
上記署名第二鍵算出部は、上記処理装置を用いて、上記発行公開鍵入力部が記憶した公開鍵ＰＫに含まれる因子ｇと、上記識別子生成部が生成した識別子ｓＩＤとに基づいて、上記ヤコビ多様体ＪａｃＣの因子Ｋ２＝ｓＩＤ・ｇを算出し、
上記署名第三鍵算出部は、上記処理装置を用いて、上記発行公開鍵入力部が記憶した公開鍵ＰＫに含まれる因子ｕと、上記識別子生成部が生成した識別子ｓＩＤとに基づいて、上記ヤコビ多様体ＪａｃＣの因子Ｋ３＝ｓＩＤ・ｕを算出し、
上記署名鍵設定部は、上記処理装置を用いて、上記署名第一鍵算出部が算出した因子Ｋ１と、上記署名第二鍵算出部が算出した因子Ｋ２と、上記署名第三鍵算出部が算出した因子Ｋ３とに基づいて、署名鍵ＳＫ＝（Ｋ１，Ｋ２，Ｋ３）を設定し、
上記識別子設定部は、上記処理装置を用いて、上記識別子生成部が生成した識別子ｓＩＤを、上記署名鍵設定部が設定した署名鍵ＳＫを識別する識別子に設定し、
上記署名装置は、データを記憶する記憶装置と、データを処理する処理装置と、署名鍵記憶部と、署名公開鍵入力部と、署名メッセージ入力部と、署名メッセージ因子算出部と、署名第一乱数生成部と、署名第二乱数生成部と、署名第一因子算出部と、署名第二因子算出部と、署名第三因子算出部と、署名第四因子算出部と、署名第五因子算出部と、署名第六因子算出部と、署名出力部とを有し、
上記署名鍵記憶部は、上記記憶装置を用いて、上記鍵生成装置が設定した署名鍵ＳＫ＝（Ｋ１，Ｋ２，Ｋ３）を記憶し、
上記署名公開鍵入力部は、上記処理装置を用いて、上記鍵生成装置が設定した公開鍵ＰＫ＝（ｇ１，ｇ，Ω，Ａ，ｕ，ｖ’，ｖｉ）を入力し、
上記署名メッセージ入力部は、上記処理装置を用いて、署名するメッセージＭを入力し、
上記署名メッセージ因子算出部は、上記処理装置を用いて、上記署名公開鍵入力部が入力した公開鍵ＰＫに含まれる因子ｖ’及びｍ個の因子ｖｉと、上記署名メッセージ入力部が入力したメッセージＭとに基づいて、上記ヤコビ多様体ＪａｃＣの因子ｖ＝ｖ’＋Σ（μｉ・ｖｉ）（ただし、ｉは１以上ｍ以下の整数。μｉは上記メッセージＭのｉ番目のビットを表わす０または１の整数。）を算出し、
上記署名第一乱数生成部は、上記処理装置を用いて、乱数ｓ（ただし、乱数ｓは以上ｒ−１以下の整数。）を生成し、
上記署名第二乱数生成部は、上記処理装置を用いて、四つの乱数ｔｊ（ただし、ｊは１以上４以下の整数。乱数ｔｊは１以上ｒ−１以下の整数。）をランダムに生成し、
上記署名第一因子算出部は、上記処理装置を用いて、上記署名公開鍵入力部が入力した公開鍵ＰＫに含まれる因子ｇ１と、上記署名鍵記憶部が記憶した署名鍵ＳＫに含まれる因子Ｋ１と、上記署名第二乱数生成部が生成した乱数ｔ１とに基づいて、上記ヤコビ多様体ＪａｃＣの因子σ１＝Ｋ１＋ｔ１・ｇ１を算出し、
上記署名第二因子算出部は、上記処理装置を用いて、上記署名公開鍵入力部が入力した公開鍵ＰＫに含まれる因子ｇ１と、上記署名鍵記憶部が記憶した署名鍵ＳＫに含まれる因子Ｋ２と、上記署名第二乱数生成部が生成した乱数ｔ２とに基づいて、上記ヤコビ多様体ＪａｃＣの因子σ２＝Ｋ２＋ｔ２・ｇ１を算出し、
上記署名第三因子算出部は、上記処理装置を用いて、上記署名公開鍵入力部が入力した公開鍵ＰＫに含まれる因子ｇ１と、上記署名鍵記憶部が記憶した署名鍵ＳＫに含まれる因子Ｋ３と、上記署名メッセージ因子算出部が算出した因子ｖと、上記署名第一乱数生成部が生成した乱数ｓと、上記署名第二乱数生成部が生成した乱数ｔ３とに基づいて、上記ヤコビ多様体ＪａｃＣの因子σ３＝Ｋ３＋ｓ・ｖ＋ｔ３・ｇ１を算出し、
上記署名第四因子算出部は、上記処理装置を用いて、上記署名公開鍵入力部が入力した公開鍵ＰＫに含まれる因子ｇ及び因子ｇ１と、上記署名第一乱数生成部が生成した乱数ｓと、上記署名第二乱数生成部が生成した乱数ｔ４とに基づいて、上記ヤコビ多様体ＪａｃＣの因子σ４＝−ｓ・ｇ＋ｔ４・ｇ１を算出し、
上記署名第五因子算出部は、上記処理装置を用いて、上記署名公開鍵入力部が入力した公開鍵ＰＫに含まれる因子ｇ１及び因子Ωと、上記署名鍵記憶部が記憶した署名鍵ＳＫに含まれる因子Ｋ１及び因子Ｋ２と、上記署名第二乱数生成部が生成した乱数ｔ１及び乱数ｔ２とに基づいて、上記ヤコビ多様体ＪａｃＣの因子π１＝ｔ１ｔ２・ｇ１＋ｔ２・Ｋ１＋ｔ１・（Ｋ２＋Ω）を算出し、
上記署名第六因子算出部は、上記処理装置を用いて、上記署名公開鍵入力部が入力した公開鍵ＰＫに含まれる因子ｇ及び因子ｕと、上記署名メッセージ因子算出部が算出した因子ｖと、上記署名第二乱数生成部が生成した乱数ｔ２及び乱数ｔ３及び乱数ｔ４とに基づいて、上記ヤコビ多様体ＪａｃＣの因子π２＝ｔ２・ｕ−ｔ３・ｇ−ｔ４・ｖを算出し、
上記署名出力部は、上記処理装置を用いて、上記署名第一因子算出部が算出した因子σ１と、上記署名第二因子算出部が算出した因子σ２と、上記署名第三因子算出部が算出した因子σ３と、上記署名第四因子算出部が算出した因子σ４と、上記署名第五因子算出部が算出した因子π１と、上記署名第六因子算出部が算出した因子π２とに基づいて、署名σ＝（σ１，σ２，σ３，σ４，π１，π２）を出力し、
上記署名検証装置は、データを処理する処理装置と、検証公開鍵入力部と、検証署名入力部と、検証メッセージ入力部と、検証メッセージ因子算出部と、署名第一検証値算出部と、署名第二検証値算出部と、署名第三検証値算出部と、署名第四検証値算出部と、署名検証判定部とを有し、
上記検証公開鍵入力部は、上記処理装置を用いて、上記鍵生成装置が設定した公開鍵ＰＫ＝（ｇ１，ｇ，Ω，Ａ，ｕ，ｖ’，ｖｉ）を入力し、
上記検証署名入力部は、上記処理装置を用いて、上記署名装置が出力した署名σ＝（σ１，σ２，σ３，σ４，π１，π２）を入力し、
上記検証メッセージ入力部は、上記処理装置を用いて、上記署名σにより署名されたメッセージＭを入力し、
上記検証メッセージ因子算出部は、上記処理装置を用いて、上記検証公開鍵入力部が入力した公開鍵ＰＫに含まれる因子ｖ’及びｍ個の因子ｖｉと、上記検証メッセージ入力部が入力したメッセージＭとに基づいて、上記ヤコビ多様体ＪａｃＣの因子ｖ＝ｖ’＋Σ（μｉ・ｖｉ）（ただし、ｉは１以上ｍ以下の整数。μｉは上記メッセージＭのｉ番目のビットを表わす０または１の整数。）を算出し、
上記署名第一検証値算出部は、上記処理装置を用いて、上記検証公開鍵入力部が入力した公開鍵ＰＫに含まれる因子ｇ１と、上記検証署名入力部が入力した署名σに含まれる因子π１とに基づいて、ペアリング値Ｃ＝ｅ（ｇ１，π１）を算出し、
上記署名第二検証値算出部は、上記処理装置を用いて、上記検証公開鍵入力部が入力した公開鍵ＰＫに含まれる因子Ω及びペアリング値Ａと、上記検証署名入力部が入力した署名σに含まれる因子σ１及び因子σ２とに基づいて、ペアリング値Ｃ’＝ｅ（σ１，σ２＋Ω）／Ａを算出し、
上記署名第三検証値算出部は、上記処理装置を用いて、上記検証公開鍵入力部が入力した公開鍵ＰＫに含まれる因子ｇ１と、上記検証署名入力部が入力した署名σに含まれる因子π２とに基づいて、ペアリング値Ｄ＝ｅ（ｇ１，π２）を算出し、
上記署名第四検証値算出部は、上記処理装置を用いて、上記検証公開鍵入力部が入力した公開鍵ＰＫに含まれる因子ｕ及び因子ｇと、上記検証署名入力部が入力した署名σに含まれる因子σ２及び因子σ３及び因子σ４と、上記検証メッセージ因子算出部が算出した因子ｖとに基づいて、ペアリング値Ｄ’＝ｅ（σ２，ｕ）／｛ｅ（ｇ，σ３）・ｅ（σ４，ｖ）｝を算出し、
上記署名検証判定部は、上記処理装置を用いて、上記署名第一検証値算出部が算出したペアリング値Ｃと、上記署名第二検証値算出部が算出したペアリング値Ｃ’と、上記署名第三検証値算出部が算出したペアリング値Ｄと、上記署名第四検証値算出部が算出したペアリング値Ｄ’とに基づいて、上記ペアリング値Ｃと上記ペアリング値Ｃ’とが等しいか否か、及び、上記ペアリング値Ｄと上記ペアリング値Ｄ’とが等しいか否かを判定し、上記ペアリング値Ｃと上記ペアリング値Ｃ’とが等しく、かつ、上記ペアリング値Ｄと上記ペアリング値Ｄ’とが等しいと判定した場合に、上記検証署名入力部が入力した署名σが有効であると判定し、
上記署名者追跡装置は、データを記憶する記憶装置と、データを処理する処理装置と、追跡鍵記憶部と、識別子記憶部と、追跡署名入力部と、署名ペアリング値算出部と、識別子ペアリング値算出部と、署名者判別部とを有し、
上記追跡鍵記憶部は、上記記憶装置を用いて、上記鍵生成装置が設定した追跡鍵ＴＫ＝（ｇ２）を記憶し、
上記識別子記憶部は、上記記憶装置を用いて、上記署名鍵発行装置が発行した署名鍵ＳＫを識別する識別子ｓＩＤを記憶し、
上記追跡署名入力部は、上記処理装置を用いて、上記署名装置が出力した署名σを入力し、
上記署名ペアリング値算出部は、上記処理装置を用いて、上記追跡鍵記憶部が記憶した追跡鍵ＴＫに含まれる因子ｇ２と、上記追跡署名入力部が入力した署名σに含まれる因子σ２とに基づいて、ペアリング値Ｅ＝ｅ（ｇ２，σ２）を算出し、
上記識別子ペアリング値算出部は、上記処理装置を用いて、上記追跡鍵記憶部が記憶した追跡鍵ＴＫに含まれる因子ｇ２と、上記識別子記憶部が記憶した識別子ｓＩＤとに基づいて、ペアリング値ＥＩＤ＝ｅ（ｇ２，ｇ２）ｓＩＤを算出し、
上記署名者判別部は、上記処理装置を用いて、上記識別子ペアリング値算出部が算出したペアリング値ＥＩＤのなかから、上記署名ペアリング値算出部が算出したペアリング値Ｅと一致するものを探すことにより、上記追跡署名入力部が入力した署名σを生成した署名鍵ＳＫの識別子を判別することを特徴とする。【００２５】
この発明にかかるコンピュータプログラムは、
データを処理する処理装置を有するコンピュータを、上記暗号パラメータ設定装置として機能させることを特徴とする。【００２６】
この発明にかかるコンピュータプログラムは、
データを処理する処理装置を有するコンピュータを、上記鍵生成装置として機能させることを特徴とする。【００２７】
この発明にかかる暗号パラメータ設定方法は、
データを処理する処理装置を有する暗号パラメータ設定装置が、暗号演算に用いられる暗号パラメータを設定する暗号パラメータ設定方法において、
上記処理装置が、ランダム因子Ｄ＊として、巡回群Ｇ’の複数の要素のなかから要素を選択し、
上記処理装置が、選択したランダム因子Ｄ＊に基づいて、複数の写像Ｇｊ（ただし、上記複数の写像Ｇｊは上記巡回群Ｇ’から複数の巡回群Ｇ’ｊそれぞれへの準同型写像。）により上記ランダム因子Ｄ＊を写像して、複数の基底因子Ｄ〜ｊを算出し、
上記処理装置が、群Ｇ（ただし、上記群Ｇは上記複数の巡回群Ｇ’ｊの直積で、上記群Ｇに含まれる二つの要素の間の双線形ペアリング演算によるペアリング値を計算可能。）における上記複数の基底因子Ｄ〜ｊの間のペアリング値の対数を算出して、複数のペアリング対数係数ηｉとし、
上記処理装置が、算出した複数の基底因子Ｄ〜ｊと、算出した複数のペアリング対数係数ηｉとを、上記暗号パラメータとすることを特徴とする。【００２８】
この発明にかかる暗号パラメータ設定方法は、
データを処理する処理装置を有する暗号パラメータ設定装置が、暗号演算に用いられる暗号パラメータを設定する暗号パラメータ設定方法において、
上記処理装置が、有限体Ｆｐ上における種数ｄの超楕円曲線Ｃ（ただし、上記有限体Ｆｐの位数ｐは素数。上記種数ｄは２以上の整数。）のヤコビ多様体ＪａｃＣの複数の因子のなかから、ランダム因子Ｄ＊をランダムに選択し、
上記処理装置が、選択したランダム因子Ｄ＊に基づいて、複数の基底因子Ｄ〜ｊを算出し、
上記処理装置が、複数の離散対数ｌκ（ただし、κは１以上２ｄ−１以下の整数。離散対数ｌκは０以上２ｄ−１以下の整数。）を算出し、
上記処理装置が、算出した複数の離散対数ｌκに基づいて、複数のペアリング対数係数ηｉ（ただし、ｉは０以上２ｄ−１以下の整数。ペアリング対数係数ηｉは０以上ｒ−１以下の整数。）を算出し、
上記処理装置が、算出した複数の基底因子Ｄ〜ｊと、算出した複数のペアリング対数係数ηｉとに基づいて、上記暗号パラメータを設定することを特徴とする。【００２９】
この発明にかかる鍵生成方法は、
データを処理する処理装置と、データを記憶する記憶装置とを有する鍵生成装置が、暗号演算に用いられる鍵を生成する鍵生成方法において、
上記記憶装置が、複数の基底因子Ｄ〜ｊとして、群Ｇの複数の要素（ただし、上記群Ｇは位数が同じ複数の巡回群の直積で、上記群Ｇに含まれる二つの要素の間の双線形ペアリング演算によるペアリング値を計算可能。上記複数の基底因子Ｄ〜ｊは互いに一次独立。）を記憶し、
上記記憶装置が、複数のペアリング対数係数ηｉとして、上記複数の基底因子Ｄ〜ｊの間のペアリング値の対数を記憶し、
上記処理装置が、上記記憶装置が記憶した複数の基底因子Ｄ〜ｊと、上記記憶装置が記憶した複数のペアリング対数係数ηｉとに基づいて、上記群Ｇの要素である複数の出力基底ｇｋ（ただし、上記複数の出力基底ｇｋのうち少なくともいずれか二つの出力基底ｇｋの間のペアリング値が１。）を算出し、
上記処理装置が、算出した複数の出力基底に基づいて、上記鍵を算出することを特徴とする。【００３０】
この発明にかかる鍵生成方法は、
データを処理する処理装置と、データを記憶する記憶装置とを有する鍵生成装置が、暗号演算に用いられる鍵を生成する鍵生成方法において、
上記記憶装置が、有限体Ｆｐを有限代数拡大した拡大体Ｋ上における種数ｄの代数曲線Ｃ（ただし、上記有限体Ｆｐの位数ｐは素数。上記種数ｄは２以上の整数。ｗは素数で、ｗ＝２ｄ＋１。）のヤコビ多様体ＪａｃＣの複数の基底因子Ｄ〜ｊと、上記複数の基底因子の間のペアリング値の関係を表わす複数のペアリング対数係数ηｉとを記憶し、
上記処理装置が、上記記憶装置が記憶した複数のペアリング対数係数ηｉに基づいて、所定の条件を満たすランダム行列Ｖ＊をランダムに選択し、
上記処理装置が、上記記憶装置が記憶した複数の基底因子Ｄ〜ｊと、選択したランダム行列Ｖ＊とに基づいて、複数の出力基底ｇｋを算出し、
上記処理装置が、算出した複数の出力基底ｇｋに基づいて、暗号演算に用いられる鍵を算出することを特徴とする。
【発明の効果】
【００３１】
この発明にかかる暗号パラメータ設定装置によれば、高度な暗号方式を実現するために利用できる群構造を有する群Ｇを構成するために必要な具体的な暗号パラメータを、多項式時間内に算出することができるという効果を奏する。
【発明を実施するための最良の形態】
【００３２】
実施の形態１．
実施の形態１について、図１〜図１２を用いて説明する。【００３３】
図１は、この実施の形態における暗号システム８００の全体構成の一例を示すシステム構成図である。
暗号システム８００は、暗号パラメータ設定装置１００、放送型暗号通信システム８１０を有する。【００３４】
暗号パラメータ設定装置１００は、放送型暗号通信システム８１０で使用する暗号パラメータ（システムパラメータ）を設定する。
暗号パラメータ設定装置１００が設定する暗号パラメータには、例えば、暗号演算に用いられる群の定義などが含まれる。暗号演算に用いられる群の定義とは、例えば、有限体の位数や、代数曲線の係数や、ペアリング演算の定義などである。
暗号パラメータ設定装置１００が設定した暗号パラメータは公開され、例えば、放送型暗号通信システム８１０を構成する装置の製造者が、公開された暗号パラメータを組み込んだ装置を製造する。製造者は、公開された暗号パラメータに特化することで処理を高速化した装置を製造する場合があり、その場合、暗号パラメータ設定装置１００がひとたび暗号パラメータを設定したら、容易に変更できない。あるいは、製造者は、公開された暗号パラメータの変更に対応できる装置を製造し、安全性要求基準の変更に伴って、暗号パラメータ設定装置１００が、より安全性の高い暗号パラメータを設定することとしてもよい。【００３５】
放送型暗号通信システム８１０は、鍵生成装置５００、暗号文生成装置２００、複数の暗号文復号装置３００、不正者追跡装置４００を有する。  放送型暗号通信システム８１０は、暗号パラメータ設定装置１００が設定した暗号パラメータを用いて、鍵生成装置５００が暗号演算に用いる鍵を生成し、暗号文生成装置２００が１つの平文Ｍを暗号化して配信し、暗号文復号装置３００がそれぞれ保持している個人鍵ＳＫを使って、復号文Ｍ’を取得する放送型の暗号通信システムである。【００３６】
複数の暗号文復号装置３００のうち、暗号文復号装置３００ａ〜３００ｃは、正規の暗号文復号装置３００であり、放送型暗号通信システム８１０の一部である。これに対して、暗号文復号装置３００ｚは、不正な暗号文復号装置３００であり、放送型暗号通信システム８１０の一部ではない。【００３７】
鍵生成装置５００は、暗号パラメータ設定装置１００が設定した暗号パラメータに基づいて、放送型暗号通信システム８１０で使用する鍵を生成する。暗号パラメータ設定装置１００が生成する鍵には、公開鍵ＰＫ（ｐｕｂｌｉｃ  ｋｅｙ）、個人鍵ＳＫ（ｐｒｉｖａｔｅ  ｋｅｙ）、追跡鍵ＴＫ（ｔｒａｃｅｒ’ｓ  ｋｅｙ）などがある。
鍵生成装置５００が生成した公開鍵ＰＫは、放送型暗号通信システム８１０の利用者に公開される。
鍵生成装置５００が設定した個人鍵ＳＫは、正規の暗号文復号装置３００ａ〜３００ｃそれぞれに対して、１つずつ割り当てられる。正規の暗号文復号装置３００ａ〜３００ｃは、割り当てられた個人鍵ＳＫを秘密裡に保持する。
鍵生成装置５００が生成した追跡鍵ＴＫは、不正者追跡装置４００が秘密裡に保持する。【００３８】
暗号文生成装置２００は、平文Ｍを入力し、公開鍵ＰＫを用いて、入力した平文Ｍを暗号化して、暗号文ＣＴを生成する。
暗号文生成装置２００が生成した暗号文ＣＴは、例えば、通信や放送などにより、複数の暗号文復号装置３００に伝達される。【００３９】
複数の暗号文復号装置３００は、伝達された暗号文ＣＴを入力し、公開されている公開鍵ＰＫと、保持している個人鍵ＳＫとを用いて、入力した暗号文ＣＴを復号して、復号文Ｍ’を生成する。暗号文復号装置３００が保持している個人鍵ＳＫが正しいものであれば、暗号文復号装置３００が生成する復号文Ｍ’は、暗号文生成装置２００が入力した平文Ｍと同じになる。
平文Ｍは、例えば、スクランブル放送を復号するための共通鍵である。正規の利用者は、暗号文復号装置３００が生成した復号文Ｍ’を用いて、スクランブル放送を復号し、視聴する。【００４０】
不正な暗号文復号装置３００ｚ（海賊復号装置：ｐｉｒａｔｅ  ｄｅｃｏｒｄｅｒ）は、正規の暗号文復号装置３００ａ〜３００ｃのいずれかから不正に入手した個人鍵ＳＫを保持しているものとする。不正な暗号文復号装置３００ｚは、正しい個人鍵ＳＫを保持しているので、暗号文ＣＴを正しく復号できる。したがって、不正な暗号文復号装置３００ｚの利用者は、例えば、スクランブル放送を復号し、視聴することができる。【００４１】
いま、不正な暗号文復号装置３００ｚが闇市場で売られていることが発見されたとする。放送型暗号通信システム８１０の管理者は、不正な暗号文復号装置３００ｚを購入して解析し、誰の個人鍵ＳＫが漏洩したかを突き止めようとするだろう。【００４２】
不正者追跡装置４００は、公開されている公開鍵ＰＫと、保持している追跡鍵ＴＫとを用いて、不正者追跡用の暗号文ＣＴを生成する。不正者追跡装置４００が生成する暗号文ＣＴは、通常の暗号文ＣＴと区別できないようになっている。不正者追跡装置４００が生成した暗号文ＣＴを不正な暗号文復号装置３００ｚに入力すると、不正な暗号文復号装置３００ｚは、保持している個人鍵ＳＫを用いて、暗号文ＣＴを復号して復号文Ｍ’を生成する。不正者追跡装置４００は、不正な暗号文復号装置３００ｚが生成した復号文Ｍ’を入力し、解析する。不正者追跡装置４００が生成する追跡用の暗号文ＣＴは、これを復号した復号文Ｍ’のなかに、復号に用いた個人鍵ＳＫに関する情報が含まれるよう、仕組んである。不正者追跡装置４００は、復号文Ｍ’を解析することにより、復号に用いた個人鍵ＳＫに関する情報を取得し、不正な暗号文復号装置３００ｚが保持している個人鍵ＳＫが、どこから漏れたかを判別する。【００４３】
図２は、この実施の形態における暗号パラメータ設定装置１００、鍵生成装置５００、暗号文生成装置２００、暗号文復号装置３００、不正者追跡装置４００の外観の一例を示す図である。
暗号パラメータ設定装置１００、鍵生成装置５００、暗号文生成装置２００、暗号文復号装置３００、不正者追跡装置４００は、システムユニット９１０、ＣＲＴ（Ｃａｔｈｏｄｅ・Ｒａｙ・Ｔｕｂｅ）やＬＣＤ（液晶）の表示画面を有する表示装置９０１、キーボード９０２（Ｋｅｙ・Ｂｏａｒｄ：Ｋ／Ｂ）、マウス９０３、ＦＤＤ９０４（Ｆｌｅｘｉｂｌｅ・Ｄｉｓｋ・Ｄｒｉｖｅ）、コンパクトディスク装置９０５（ＣＤＤ）、プリンタ装置９０６、スキャナ装置９０７などのハードウェア資源を備え、これらはケーブルや信号線で接続されている。
システムユニット９１０は、コンピュータであり、ファクシミリ機９３２、電話器９３１とケーブルで接続され、また、ローカルエリアネットワーク９４２（ＬＡＮ）、ゲートウェイ９４１を介してインターネット９４０に接続されている。【００４４】
図３は、この実施の形態における暗号パラメータ設定装置１００、鍵生成装置５００、暗号文生成装置２００、暗号文復号装置３００、不正者追跡装置４００のハードウェア資源の一例を示す図である。
暗号パラメータ設定装置１００、鍵生成装置５００、暗号文生成装置２００、暗号文復号装置３００、不正者追跡装置４００は、プログラムを実行するＣＰＵ９１１（Ｃｅｎｔｒａｌ・Ｐｒｏｃｅｓｓｉｎｇ・Ｕｎｉｔ、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう）を備えている。ＣＰＵ９１１は、バス９１２を介してＲＯＭ９１３、ＲＡＭ９１４、通信装置９１５、表示装置９０１、キーボード９０２、マウス９０３、ＦＤＤ９０４、ＣＤＤ９０５、プリンタ装置９０６、スキャナ装置９０７、磁気ディスク装置９２０と接続され、これらのハードウェアデバイスを制御する。磁気ディスク装置９２０の代わりに、光ディスク装置、メモリカード読み書き装置などの記憶装置でもよい。
ＲＡＭ９１４は、揮発性メモリの一例である。ＲＯＭ９１３、ＦＤＤ９０４、ＣＤＤ９０５、磁気ディスク装置９２０の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置あるいは記憶部の一例である。
通信装置９１５、キーボード９０２、スキャナ装置９０７、ＦＤＤ９０４などは、入力部、入力装置の一例である。
また、通信装置９１５、表示装置９０１、プリンタ装置９０６などは、出力部、出力装置の一例である。【００４５】
通信装置９１５は、ファクシミリ機９３２、電話器９３１、ＬＡＮ９４２等に接続されている。通信装置９１５は、ＬＡＮ９４２に限らず、インターネット９４０、ＩＳＤＮ等のＷＡＮ（ワイドエリアネットワーク）などに接続されていても構わない。インターネット９４０或いはＩＳＤＮ等のＷＡＮに接続されている場合、ゲートウェイ９４１は不用となる。
磁気ディスク装置９２０には、オペレーティングシステム９２１（ＯＳ）、ウィンドウシステム９２２、プログラム群９２３、ファイル群９２４が記憶されている。プログラム群９２３のプログラムは、ＣＰＵ９１１、オペレーティングシステム９２１、ウィンドウシステム９２２により実行される。【００４６】
上記プログラム群９２３には、以下に述べる実施の形態の説明において「〜部」として説明する機能を実行するプログラムが記憶されている。プログラムは、ＣＰＵ９１１により読み出され実行される。
ファイル群９２４には、以下に述べる実施の形態の説明において、「〜の判定結果」、「〜の計算結果」、「〜の処理結果」として説明する情報やデータや信号値や変数値やパラメータが、「〜ファイル」や「〜データベース」の各項目として記憶されている。「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。ディスクやメモリになどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してＣＰＵ９１１によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示などのＣＰＵの動作に用いられる。抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示のＣＰＵの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリやキャッシュメモリやバッファメモリに一時的に記憶される。
また、以下に述べる実施の形態の説明において説明するフローチャートの矢印の部分は主としてデータや信号の入出力を示し、データや信号値は、ＲＡＭ９１４のメモリ、ＦＤＤ９０４のフレキシブルディスク、ＣＤＤ９０５のコンパクトディスク、磁気ディスク装置９２０の磁気ディスク、その他光ディスク、ミニディスク、ＤＶＤ（Ｄｉｇｉｔａｌ・Ｖｅｒｓａｔｉｌｅ・Ｄｉｓｋ）等の記録媒体に記録される。また、データや信号は、バス９１２や信号線やケーブルその他の伝送媒体によりオンライン伝送される。【００４７】
また、以下に述べる実施の形態の説明において「〜部」として説明するものは、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち、「〜部」として説明するものは、ＲＯＭ９１３に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、ＤＶＤ等の記録媒体に記憶される。プログラムはＣＰＵ９１１により読み出され、ＣＰＵ９１１により実行される。すなわち、プログラムは、以下に述べる「〜部」としてコンピュータを機能させるものである。あるいは、以下に述べる「〜部」の手順や方法をコンピュータに実行させるものである。【００４８】
図４は、この実施の形態における暗号パラメータ設定装置１００の機能ブロックの構成の一例を示すブロック構成図である。
暗号パラメータ設定装置１００は、安全性指数入力部１１０、因子群生成部１２０、パラメータ設定部１４０を有する。【００４９】
安全性指数入力部１１０は、ＣＰＵ９１１を用いて、安全性指数（ｓｅｃｕｒｉｔｙ  ｐａｒａｍｅｔｅｒ）を入力する。安全性指数とは、放送型暗号通信システム８１０の安全性を決めるパラメータであり、例えば、因子群生成部１２０が生成する基底因子などにより構成される因子群の位数のビット数などである。
安全性指数入力部１１０は、ＲＡＭ９１４を用いて、入力した安全性指数を表わすデータを記憶する。【００５０】
因子群生成部１２０は、位数決定部１２１、ランダム因子選択部１２２、基底因子生成部１２３、離散対数算出部１２４、ペアリング対数算出部１２５を有する。【００５１】
位数決定部１２１は、ＣＰＵ９１１を用いて、安全性指数入力部１１０が記憶した安全性指数を表わすデータを入力する。位数決定部１２１は、ＣＰＵ９１１を用いて、入力したデータが表わす安全性指数に基づいて、有限体Ｆｐ（Ｆｉｎｉｔｅ  Ｆｉｅｌｄ）の位数ｐを決定する。例えば、位数決定部１２１は、ＣＰＵ９１１を用いて、有限体Ｆｐ上の代数曲線Ｃ（ａｌｇｅｂｒａｉｃ  ｃｕｒｖｅ）のヤコビ多様体ＪａｃＣ（Ｊａｃｏｂｉａｎ  ｖａｒｉｅｔｙ）の因子Ｄ（ｄｉｖｉｓｏｒ）の位数が、安全性指数で定められたビット数になるよう、有限体Ｆｐの位数ｐを決定する。なお、一般に、有限体の位数は素数または素数のべき乗であるが、位数決定部１２１は、有限体Ｆｐの位数ｐが素数になるよう、位数ｐを決定する。【００５２】
ここで、有限体Ｆｐ上におけるヤコビ多様体ＪａｃＣの因子がなす群の位数＃ＪａｃＣ（Ｆｐ）は、１以上の素数の積で表わされる。有限体Ｆｐ上におけるヤコビ多様体ＪａｃＣの因子のなかから、任意の因子を選択し、選択した因子を生成元（ｇｅｎｅｒａｔｏｒ）とするねじれ部分群（ｔｏｒｓｉｏｎ  ｓｕｂｇｒｏｕｐ）を考えると、このねじれ部分群の位数（すなわち、選択した因子の位数）は、有限体Ｆｐ上におけるヤコビ多様体ＪａｃＣの因子がなす群の位数＃ＪａｃＣ（Ｆｐ）の約数である。
以下で述べるように、暗号パラメータ設定装置１００は、位数ｒが十分大きな素数である因子群を、鍵生成装置５００が構成できるよう、暗号パラメータを設定する。そのため、位数決定分１２１は、有限体Ｆｐ上におけるヤコビ多様体ＪａｃＣの因子がなす群の位数＃ＪａｃＣ（Ｆｐ）の素因数のなかに十分大きな素数が存在するよう、位数ｐを決定する。【００５３】
以下の例では、代数曲線Ｃとして、２ねじれ点（ｔｏｒｓｉｏｎ  ｐｏｉｎｔ）を有する超特異（ｓｕｐｅｒｓｉｎｇｕｌａｒ）超楕円（ｈｙｐｅｒｅｌｌｉｐｔｉｃ）曲線Ｃ：Ｙ２＝Ｘｗ＋１を用いる場合について説明する。ここで、ｗは５以上の素数であるものとする。このとき、超楕円曲線Ｃの種数ｄ（ｇｅｎｕｓ）は、ｗ＝２ｄ＋１である。例えば、ｗ＝５の場合であれば、超楕円曲線Ｃの種数ｄは２である。【００５４】
上記の例において、位数決定部１２１は、ＣＰＵ９１１を用いて、有限体Ｆｐの位数ｐを素数ｗで割った余りａ（＝ｐ  ｍｏｄ  ｗ）が、位数ｗの有限体の乗法群Ｆｗ＊の生成元となるよう、位数ｐを決定する。例えば、ｗ＝５の場合であれば、位数決定部１２１は、位数ｐを５で割った余りａが２または３になるよう、位数ｐを決定する。【００５５】
位数決定部１２１は、ＣＰＵ９１１を用いて、位数ｐを選択し、選択した位数ｐに基づいて、有限体Ｆｐ上におけるヤコビ多様体ＪａｃＣの因子がなす群の位数＃ＪａｃＣ（Ｆｐ）を算出する。位数決定部１２１は、ＣＰＵ９１１を用いて、算出した位数＃ＪａｃＣ（Ｆｐ）の素因数ｒを算出する。位数決定部１２１は、ＣＰＵ９１１を用いて、算出した素因数ｒのなかに安全性指数で定められたビット数以上のものがあるか判定し、素因数ｒが安全性指数で定められたビット数未満であれば、位数ｐを選び直す。
位数決定部１２１は、ＣＰＵ９１１を用いて、安全性指数で定められたビット数以上である素因数ｒを、有限体Ｆｐ上におけるヤコビ多様体ＪａｃＣの因子Ｄの位数とし、ＲＡＭ９１４を用いて、決定した有限体Ｆｐの位数ｐを表わすデータと、算出したヤコビ多様体ＪａｃＣの因子Ｄの位数ｒを表わすデータとを記憶する。【００５６】
ランダム因子選択部１２２は、ＣＰＵ９１１を用いて、位数決定部１２１が記憶した有限体Ｆｐの位数ｐを表わすデータと、ヤコビ多様体ＪａｃＣの因子Ｄの位数ｒを表わすデータとを入力する。ランダム因子選択部１２２は、入力したデータが表わす位数ｐと位数ｒとに基づいて、有限体Ｆｐ上におけるヤコビ多様体ＪａｃＣの複数の因子Ｄのうち、位数ｒの因子Ｄのなかから、自明でない（ｎｏｎ−ｔｒｉｖｉａｌ）因子をランダムに選択し、ランダム因子Ｄ＊とする。
ランダム因子選択部１２２は、ＲＡＭ９１４を用いて、選択したランダム因子Ｄ＊を表わすデータを記憶する。なお、ヤコビ多様体ＪａｃＣの因子を表わすデータとは、例えば、因子のマムフォード（Ｍｕｍｆｏｒｄ）表現における多項式の係数を表わすデータなどである。有限体Ｆｐ上におけるヤコビ多様体ＪａｃＣの因子の場合、マムフォード表現における多項式の係数は、０以上ｐ未満の整数である。【００５７】
基底因子生成部１２３は、ＣＰＵ９１１を用いて、ランダム因子選択部１２２が記憶したランダム因子Ｄ＊を表わすデータを入力する。
基底因子生成部１２３は、ＣＰＵ９１１を用いて、入力したデータが表わすランダム因子Ｄ＊に基づいて、複数の基底因子Ｄ〜ｊ（ただし、ｊは０以上２ｄ−１以下の整数。）を算出する。例えば、ｗ＝５の場合であれば、基底因子生成部１２３は、ＣＰＵ９１１を用いて、四つの基底因子Ｄ〜０，Ｄ〜１，Ｄ〜２，Ｄ〜３を算出する。【００５８】
基底因子生成部１２３は、ＣＰＵ９１１を用いて、所定の複数の作用素Ｇｊ（ｏｐｅｒａｔｏｒ）（ただし、ｊは０以上２ｄ−１以下の整数。）をランダム因子Ｄ＊にそれぞれ作用させて、基底因子Ｄ〜ｊを算出する。
以下の例において、作用素Ｇｊは、数４で表わされるガウス和（Ｇａｕｓｓ  Ｓｕｍ）作用素であるものとする。【００５９】
【数４】
2009090750.tif 000006
【００６０】
ただし、ρは、超楕円曲線Ｃ上の作用（ｘ，ｙ）→（ζｘ，ｙ）に対応するヤコビ多様体ＪａｃＣ上の作用である。すなわち、ヤコビ多様体ＪａｃＣの因子は超楕円曲線Ｃ上の点の形式和で表わされるから、因子を構成する超楕円曲線Ｃ上の点（ｘ，ｙ）を超楕円曲線Ｃ上の点（ζｘ，ｙ）に写像する作用を用いて、ヤコビ多様体ＪａｃＣの因子をヤコビ多様体ＪａｃＣの因子に写像する作用ρを構成できる。なお、ζは１のｗ乗根である。すなわちζｗ＝１かつζ≠１である。（ζｘ）ｗ＝ζｗｘｗ＝ｘｗであるから、作用（ｘ、ｙ）→（ζｘ，ｙ）は、超楕円曲線Ｃ：Ｙ２＝Ｘｗ＋１上の点を超楕円曲線Ｃ上の点に写像する。
また、ｉは、０以上２ｄ−１以下の整数である。ｐは、位数決定部１２１が決定した有限体Ｆｐの位数である。ａは、有限体Ｆｐの位数ｐを素数ｗで割った余りである。【００６１】
位数決定部１２１が有限体Ｆｐの位数ｐを決定する際の条件より、余りａは位数ｗの有限体Ｆｗの生成元である。したがって、余りａは１ではない。すなわち、ｗはｐ−１の約数ではないので、ζは、有限体Ｆｐに存在しない。そこで、ζを含むよう、有限体Ｆｐを拡大した拡大体Ｋ（ｅｘｔｅｓｉｏｎ  ｆｉｅｌｄ）を考える。ζｗ＝１かつζ≠１なので、Σ（ζｉ）＝０（ただし、ｉは０以上２ｄ以下の整数。）である。したがって、拡大体Ｋは、２ｄ次の多項式Σ（ｘｉ）を生成多項式（ｇｅｎｅｒａｔｏｒ  ｐｏｌｙｎｏｍｉａｌ）として有限体Ｆｐを代数拡大（ａｌｇｅｂｒａｉｃ  ｅｘｔｅｎｓｉｏｎ）した体であり、拡大次数（ｏｒｄｅｒ  ｏｆ  ｅｘｔｅｎｓｉｏｎ）は、２ｄである。
拡大体Ｋの元は、有限体Ｆｐの元を係数とする２ｄ−１次の多項式で表わされる。すなわち、拡大体Ｋは、有限体Ｆｐ上の２ｄ次元ベクトル空間であり、２ｄ個の０以上ｐ−１以下の整数を表わすデータの組で、拡大体Ｋの元を表わすことができる。暗号パラメータ設定装置１００は、このデータの組が表わす多項式の加算や乗算を計算し、生成多項式で割った余りを計算することにより、拡大体Ｋの元の加算や乗算を計算できる。
また、拡大体Ｋ上におけるヤコビ多様体ＪａｃＣの因子は、例えば、マムフォード表現を用いて表わす場合、拡大体Ｋの元をマムフォード表現における多項式の係数とすることにより、表わすことができる。【００６２】
基底因子生成部１２３は、ＣＰＵ９１１を用いて、拡大体Ｋ上における演算を計算することにより、拡大体Ｋ上におけるヤコビ多様体ＪａｃＣの因子である基底因子Ｄ〜ｊを算出する。
例えば、ｗ＝５、ａ＝２の場合であれば、基底因子生成部１２３は、ＣＰＵ９１１を用いて、数５に示す計算式を計算して、基底因子Ｄ〜０，Ｄ〜１，Ｄ〜２，Ｄ〜３を算出する。【００６３】
【数５】
2009090750.tif 000007
【００６４】
ここで、Ｄ０，Ｄ１，Ｄ２，Ｄ３は拡大体Ｋ上におけるヤコビ多様体ＪａｃＣの因子であり、Ｄ０＝ρ（Ｄ＊），Ｄ１＝ρ２（Ｄ＊），Ｄ２＝ρ４（Ｄ＊），Ｄ３＝ρ８（Ｄ＊）である。なお、ζ５＝１よりＤ＊＝ρ５（Ｄ＊）であるから、Ｄ３＝ρ３（Ｄ＊）である。したがって、因子Ｄ０，Ｄ１，Ｄ２，Ｄ３は、数６に示す手順により計算できる。【００６５】
【数６】
2009090750.tif 000008
【００６６】
なお、ヤコビ多様体ＪａｃＣの因子の加算を多項式時間内に計算するアルゴリズムは、中国人剰余定理（Ｃｈｉｎｅｓｅ  ｒｅｍａｉｎｄｅｒ  ｔｈｅｏｒｅｍ）を用いる方式などが知られているので、暗号パラメータ設定装置１００は、多項式時間内にヤコビ多様体ＪａｃＣの因子の加算を計算することができる。【００６７】
基底因子生成部１２３は、ＲＡＭ９１４を用いて、算出した複数の基底因子Ｄ〜ｊを表わすデータを記憶する。【００６８】
基底因子生成部１２３は、２ｄ個の基底因子を算出する。基底因子生成部１２３が算出する基底因子Ｄ〜ｊには、以下の性質がある。
２ｄ個の基底因子Ｄ〜ｊは、拡大次数２ｄの拡大体Ｋ上におけるヤコビ多様体ＪａｃＣの因子であり、互いに一次独立である。
また、ガウス和作用素Ｇｊは準同型なので、基底因子Ｄ〜ｊの位数は、ランダム因子Ｄ＊と同じｒである。
したがって、２ｄ個の基底因子Ｄ〜ｊから有限生成される群Ｇ（以下「有限生成因子群」と呼ぶ。）は、２ｄ個の位数ｒの巡回群の直積である。【００６９】
離散対数算出部１２４は、ＣＰＵ９１１を用いて、位数決定部１２１が記憶した有限体Ｆｐの位数ｐを表わすデータと、有限体Ｆｐ上におけるヤコビ多様体ＪａｃＣの因子Ｄの位数ｒを表わすデータとを入力する。離散対数算出部１２４は、入力したデータが表わす位数ｐと位数ｒとに基づいて、複数の離散対数ｌκ（ただし、κは１以上２ｄ−１以下の整数。離散対数ｌκは０以上２ｄ−１以下の整数。）を算出する。例えば、ｗ＝５の場合であれば、離散対数算出部１２４は、ＣＰＵ９１１を用いて、三つの離散対数ｌ１，ｌ２，ｌ３を算出する。【００７０】
以下の例において、離散対数算出部１２４は、ＣＰＵ９１１を用いて、数７を満たす離散対数ｌκを算出するものとする。【００７１】
【数７】
2009090750.tif 000009
【００７２】
ただし、ａは、有限体Ｆｐの位数ｐを素数ｗで割った余りである。位数決定部１２１が位数ｐを決定するときの条件より、余りａは、位数ｗの有限体の乗法群Ｆｗ＊の生成元であるから、１≦κ≦２ｄ−１（＝ｗ−２）のときａκ≠１（ｍｏｄ  ｗ）であり、数７を満たすｌκが必ず存在する。【００７３】
離散対数算出部１２４は、例えば、ＣＰＵ９１１を用いて、２ｄ−１個のａκ（を素数ｗで割った余り）をすべて算出し、ＲＡＭ９１４を用いて、算出した２ｄ−１個のａκを記憶する。次に、離散対数算出部１２４は、ＣＰＵ９１１を用いて、算出したａκに基づいて、ａκ−１（を素数ｗで割った余り）を算出し、算出したａκ−１と、記憶した２ｄ−１個のａκとを比較して等しいものを見つけることにより、離散対数ｌκを算出する。
例えば、ｗ＝５、ａ＝２の場合であれば、離散対数算出部１２４は、ＣＰＵ９１１を用いて、２１＝２（ｍｏｄ  ４。以下同じ。）、２２＝４、２３＝３を算出し、２−１＝１＝２０、４−１＝３＝２３、３−１＝２＝２１であることを判定して、ｌ１＝０、ｌ２＝３、ｌ３＝１を算出する。【００７４】
なお、素数ｗ及び余りａによって定まる複数の離散対数ｌκ（ｗ，ａ）をあらかじめ算出しておき、離散対数算出部１２４が、磁気ディスク装置９２０を用いて、複数の離散対数ｌκを表わすデータを記憶しておいてもよい。離散対数算出部１２４は、ＣＰＵ９１１を用いて、入力したデータが表わす有限体Ｆｐの位数ｐと、素数ｗとに基づいて、余りａを算出し、あらかじめ記憶した離散対数ｌκ（ｗ，ａ）のなかから、素数ｗ及び余りａに対応する複数の離散対数ｌκを取得してもよい。【００７５】
離散対数算出部１２４は、ＲＡＭ９１４を用いて、算出した複数の離散対数ｌκを表わすデータを記憶する。【００７６】
ペアリング対数算出部１２５は、ＣＰＵ９１１を用いて、離散対数算出部１２４が記憶した複数の離散対数ｌκを表わすデータを入力する。ペアリング対数算出部１２５は、ＣＰＵ９１１を用いて、入力したデータが表わす複数の離散対数ｌκに基づいて、複数のペアリング対数係数ηｉ（ただし、ｉは０以上２ｄ−１以下の整数。ペアリング対数係数ηｉは０以上ｒ−１以下の整数。ｒはヤコビ多様体ＪａｃＣの因子Ｄの位数。）を算出する。例えば、ｗ＝５の場合であれば、ペアリング対数算出部１２５は、ＣＰＵ９１１を用いて、四つのペアリング対数係数η０，η１，η２，η３を算出する。【００７７】
以下の例において、ペアリング対数算出部１２５は、ＣＰＵ９１１を用いて、数８に示す計算式を計算して、複数のペアリング対数係数ηｉを算出するものとする。【００７８】
【数８】
2009090750.tif 000010
【００７９】
ただし、ｉは、０以上２ｄ−１以下の整数である。κは、１以上２ｄ−１以下の整数である。ｐは、位数決定部１２１が決定した有限体Ｆｐの位数である。ｒは、位数決定部１２１が算出した有限体Ｆｐ上におけるヤコビ多様体ＪａｃＣの因子Ｄがなす群の位数である。
例えば、ｗ＝５の場合であれば、ペアリング対数算出部１２５は、ＣＰＵ９１１を用いて、数９に示す計算式を計算して、四つのペアリング対数係数η０，η１，η２，η３を算出する。【００８０】
【数９】
2009090750.tif 000011
【００８１】
ペアリング対数算出部１２５は、ＲＡＭ９１４を用いて、算出した複数のペアリング対数係数ηｉを表わすデータを記憶する。【００８２】
パラメータ設定部１４０は、ＣＰＵ９１１を用いて、位数決定部１２１が記憶した有限体Ｆｐの位数ｐを表わすデータと有限体Ｆｐ上におけるヤコビ多様体ＪａｃＣの因子Ｄがなす群の位数ｒを表わすデータと、基底因子生成部１２３が記憶した複数の基底因子Ｄ〜ｊを表わすデータと、ペアリング対数算出部１２５が記憶した複数のペアリング対数係数ηｉを表わすデータとを入力する。パラメータ設定部１４０は、ＣＰＵ９１１を用いて、入力したデータが表わす位数ｐと位数ｒと複数の基底因子Ｄ〜ｊと複数のペアリング対数係数ηｉとを、暗号パラメータに設定する。【００８３】
図５は、この実施の形態における暗号パラメータ設定装置１００が、暗号パラメータを算出する暗号パラメータ算出処理の流れの一例を示すフローチャート図である。【００８４】
安全性指数入力工程Ｓ７１１において、安全性指数入力部１１０は、ＣＰＵ９１１を用いて、安全性指数を入力する。【００８５】
位数決定工程Ｓ７１２において、位数決定部１２１は、ＣＰＵ９１１を用いて、安全性指数入力工程Ｓ７１１で安全性指数入力部１１０が入力した安全性指数に基づいて、有限体Ｆｐの位数ｐを決定する。位数決定部１２１は、ＣＰＵ９１１を用いて、決定した有限体Ｆｐの位数ｐに基づいて、有限体Ｆｐ上におけるヤコビ多様体ＪａｃＣの因子Ｄの位数ｒを算出する。【００８６】
ランダム因子選択工程Ｓ７１３において、ランダム因子選択部１２２は、ＣＰＵ９１１を用いて、有限体Ｆｐ上におけるヤコビ多様体ＪａｃＣの因子のうち位数ｒの因子のなかから、ランダム因子Ｄ＊をランダムに選択する。【００８７】
基底因子算出工程Ｓ７１４において、基底因子生成部１２３は、ＣＰＵ９１１を用いて、ランダム因子選択工程Ｓ７１３で選択したランダム因子Ｄ＊に基づいて、拡大体Ｋ上におけるヤコビ多様体ＪａｃＣの複数の基底因子Ｄ〜ｊを算出する。【００８８】
離散対数算出工程Ｓ７１５において、離散対数算出部１２４は、ＣＰＵ９１１を用いて、複数の離散対数ｌｋを算出する。【００８９】
ペアリング対数係数算出工程Ｓ７１６において、ペアリング対数算出部１２５は、ＣＰＵ９１１を用いて、離散対数算出工程Ｓ７１５で離散対数算出部１２４が算出した離散対数ｌｋに基づいて、複数のペアリング対数係数ηｉを算出する。【００９０】
ここで、ヤコビ多様体ＪａｃＣの因子同士のペアリング演算ｅを、ｅ（Ｄ，Ｄ’）＝ｅＷ（Ｄ，φ（Ｄ’））と定義する。なお、ｅＷは、ヴェイユ（Ｗｅｉｌ）ペアリングである。また、φは、拡大体Ｋ上におけるヤコビ多様体ＪａｃＣの因子がなす群における多項式時間内に計算可能な自己準同型写像である。例えば、φは、超楕円曲線Ｃ上のｐ乗フロベニウス写像πｐ：（ｘ，ｙ）→（ｘｐ，ｙｐ）に対応するヤコビ多様体ＪａｃＣ上の写像である。
ヴェイユペアリングの値を多項式時間内に計算するアルゴリズムは、既に知られているので、暗号パラメータ設定装置１００は、ペアリング演算ｅの演算結果であるペアリング値を、多項式時間内に計算することができる。【００９１】
このように定義したペアリング演算ｅには、以下の性質がある。
同じ因子同士のペアリング演算ｅの演算結果であるペアリング値ｅ（Ｄ，Ｄ）は、因子Ｄの位数が１でない限り、ｅ（Ｄ，Ｄ）≠１である。
ヴェイユペアリングｅＷは双線形ペアリングなので、ペアリング演算ｅも双線形ペアリングである。すなわち、ヤコビ多様体ＪａｃＣのすべての因子Ｄ及びＤ’について、数１０が成り立つ。【００９２】
【数１０】
2009090750.tif 000012
【００９３】
ここで、ａ及びｂは、任意の整数である。ａ・Ｄは、ヤコビ多様体ＪａｃＣの因子Ｄをａ回加えた結果得られる因子を表わす。【００９４】
また、ペアリング演算ｅの引数として、２ｄ個の位数ｒの基底因子Ｄ〜ｊから有限生成される有限生成因子群Ｇに含まれる因子を取る場合、ペアリング値全体がなす群は、有限生成因子群Ｇと同じく、２ｄ個の位数ｒの巡回群の直積となる。【００９５】
更に、ｕ＝ｅ（Ｄ＊，Ｄ０）、ｕ〜ｉ，ｊ＝ｅ（Ｄ〜ｉ，Ｄ〜ｊ）（ただし、ｉ及びｊは、０以上２ｄ−１以下の整数。）とおくと、数１１が成り立つ。【００９６】
【数１１】
2009090750.tif 000013
【００９７】
ただし、ηνは、ペアリング対数算出部１２５が算出したペアリング対数係数である。【００９８】
鍵生成装置５００は、この性質を利用して、暗号システム８００で使用する鍵を設定する。【００９９】
図６は、この実施の形態における鍵生成装置５００の機能ブロックの構成の一例を示すブロック構成図である。
鍵生成装置５００は、基底因子記憶部５１１、ペアリング対数記憶部５１２、条件記憶部１３０、条件入力部１４１、ランダム行列選択部１４２、出力基底算出部１４３、鍵算出部１５０を有する。【０１００】
基底因子記憶部５１１は、ＲＯＭ９１３を用いて、暗号パラメータ設定装置１００が設定した暗号パラメータのうち複数の基底因子Ｄ〜ｊを表わすデータを記憶している。
ペアリング対数記憶部５１２は、ＲＯＭ９１３を用いて、暗号パラメータ設定装置１００が設定した暗号パラメータのうち複数のペアリング対数係数ηｉを表わすデータを記憶している。
なお、基底因子記憶部５１１及びペアリング対数記憶部５１２は、磁気ディスク装置９２０などが記憶したプログラムに組み込まれた形で、磁気ディスク装置９２０などを用いて、暗号パラメータを記憶してもよい。【０１０１】
条件記憶部１３０は、磁気ディスク装置９２０を用いて、後述する出力基底算出部１４３が算出する複数の出力基底ｇｉ（ただし、ｉは１以上ｂ以下の整数。ｂはｄ以上２ｄ以下の整数。）が満たすべき条件を表わすデータを記憶している。
条件記憶部１３０が記憶しているデータが表わす条件は、出力基底算出部１４３が算出するｂ個の出力基底ｇｉのうち二つの出力基底のペアリング値が、１になるべきか、１以外になるべきか、任意の値でよいかを表わす。
条件記憶部１３０が記憶しているデータは、例えば、一致条件データと、不一致条件データとの２つのデータからなる。一致条件データは、出力基底ｇμと出力基底ｇνとのペアリング値が１になるべき出力基底の組を示す２つの整数の組（μ，ν）（ただし、μ及びνは１以上ｂ以下の整数。）を表わすデータの集合である。不一致条件データも一致条件データと同様、２つの整数の組（μ，ν）（ただし、μ及びνは１以上ｂ以下の整数。）を表わすデータの集合であるが、不一致条件データが表わす整数の組（μ，ν）は、出力基底ｇμと出力基底ｇνとのペアリング値が１以外になるべき出力基底の組を示す。出力基底ｇμと出力基底ｇνとの組を示す整数の組（μ，ν）を表わすデータが、一致条件データにも不一致条件データにも含まれていない場合、出力基底ｇμと出力基底ｇνとのペアリング値は、任意の値でよいことを表わす。【０１０２】
条件入力部１４１は、ＣＰＵ９１１を用いて、条件記憶部１３０が記憶した出力基底が満たすべき条件を表わすデータを入力する。条件入力部１４１（一致条件入力部及び不一致条件入力部の一例）は、例えば、条件記憶部１３０が記憶した一致条件データ及び不一致条件データを入力する。
条件入力部１４１は、ＲＡＭ９１４を用いて、入力した出力基底が満たすべき条件を表わすデータを記憶する。【０１０３】
ランダム行列選択部１４２は、ＣＰＵ９１１を用いて、条件入力部１４１が記憶した出力基底が満たすべき条件を表わすデータと、ペアリング対数記憶部５１２が記憶した複数のペアリング対数係数ηｉを表わすデータとを入力する。ランダム行列選択部１４２は、入力したデータが表わす条件に基づいて、条件を満たす行列Ｖのなかから、行列Ｖ＊をランダムに選択し、ランダム行列Ｖ＊とする。
ここで、行列Ｖは、ｂ行２ｄ列の行列である。例えば、ｗ＝５，ｂ＝２の場合であれば、行列Ｖは、２行４列の行列である。行列Ｖのμ行ν列成分をｃμ，νとすると（μは１以上ｂ以下の整数。νは１以上２ｄ以下の整数。）、ｃμ，νは、０以上ｒ−１以下の整数を値に取る変数である。ランダム行列選択部１４２は、ＣＰＵ９１１を用いて、入力したデータが表わす条件に基づいて、変数ｃμ，νの値を決定する。
ランダム行列選択部１４２は、ＣＰＵ９１１を用いて、関係式：Ｍ’＝Ｖ・Ｍ・ＶＴを満たす行列Ｖを探す。ここで、行列ＶＴは、行列Ｖを転置した２ｄ行ｂ列行列である。転置行列ＶＴのν行μ列成分（μは１以上ｂ以下の整数。νは１以上２ｄ以下の整数。）は、変数ｃμ，νである。
行列Ｍは、２ｄ次の正方行列である。例えば、ｗ＝５の場合であれば、行列Ｍは、４次の正方行列である。行列Ｍのμ行ν列成分をｍμ，ν（μ及びνは１以上２ｄ以下の整数。）とすると、μ＋ν＝２ｄ＋１のときｍμ，ν＝ην−１、μ＋ν≠２ｄ＋１のときｍμ，ν＝０である。
行列Ｍ’は、ｂ次の正方行列である。例えば、ｂ＝２の場合であれば、行列Ｍ’は２次の正方行列である。行列Ｍ’のμ行ν列成分をｍ’μ，ν（μ及びνは１以上ｂ以下の整数。）とすると、数１２が成り立つ。【０１０４】
【数１２】
2009090750.tif 000014
【０１０５】
ただし、ｉは、０以上２ｄ−１以下の整数である。ηｉは、暗号パラメータ設定装置１００のペアリング対数算出部１２５が算出したペアリング対数係数である。
ランダム行列選択部１４２は、例えば、ＣＰＵ９１１を用いて、入力した一致条件データが表わす整数の組（μ，ν）について、ｍ’μ，ν＝０となるよう、ｃμ，νを算出する。また、ランダム行列選択部１４２は、ＣＰＵ９１１を用いて、入力した不一致条件データが表わす整数の組（μ，ν）について、ｍ’μ，ν≠０となるよう、ｃμ，νを算出する。
例えば、ランダム行列選択部１４２は、ＣＰＵ９１１を用いて、変数ｃμ，νの数（＝２ｄ・ｂ）から、入力した一致条件データが表わす整数の組の数を差し引いて、自由度を算出する。ランダム行列選択部１４２は、ＣＰＵ９１１を用いて、算出した自由度に基づいて、変数ｃμ，νのなかから、自由度と同じ数の変数ｃμ，νを、ランダムに選択する。ランダム行列選択部１４２は、ＣＰＵ９１１を用いて、選択した変数ｃμ，νの値を、ランダムに決定する。例えば、ｗ＝５、ｂ＝２の場合であれば、変数ｃμ，νの数は、４・２＝８個である。一致条件データが表わす整数の組が２つあるとすると、自由度は、８−２＝６なので、ランダム行列選択部１４２は、８個の変数ｃμ，νのなかから６個を選択し、ランダムに値を決定する。
次に、ランダム行列選択部１４２は、ＣＰＵ９１１を用いて、一致条件データに基づいて定まる方程式を解き、残りの変数ｃμ，νの値を決定する。ランダム行列選択部１４２は、ＣＰＵ９１１を用いて、決定した変数ｃμ，νの値を、不一致条件データに基づいて定まる方程式に代入し、ｍ’μ，ν≠０となっているか確認する。ｍ’μ，ν＝０となるものがある場合、ランダム行列選択部１４２は、ＣＰＵ９１１を用いて、ランダムに変数ｃμ，νを選択するところからやり直す。不一致条件データに基づいて定まる方程式がすべて満たされた場合、ランダム行列選択部１４２は、ＲＡＭ９１４を用いて、決定した変数ｃμ，νの値を表わすデータを記憶する。【０１０６】
ランダム行列選択部１４２は、ＣＰＵ９１１を用いて、決定した変数ｃμ，νの値をμ行ν列成分とする行列をランダム行列Ｖ＊とし、ＲＡＭ９１４を用いて、ランダム行列Ｖ＊を表わすデータを記憶する。【０１０７】
出力基底算出部１４３は、ＣＰＵ９１１を用いて、基底因子記憶部５１１が記憶した複数の基底因子Ｄ〜ｊを表わすデータと、ランダム行列選択部１４２が記憶したランダム行列Ｖ＊を表わすデータとを入力する。
出力基底算出部１４３は、ＣＰＵ９１１を用いて、入力したデータが表わす複数の基底因子Ｄ〜ｊと、ランダム行列Ｖ＊とに基づいて、複数の出力基底ｇｉ（ただし、ｉは１以上ｂ以下の整数。ｂはｄ以上２ｄ以下の整数。）を算出する。
出力基底算出部１４３は、ＣＰＵ９１１を用いて、複数の出力基底ｇｉ＝ｖｉ・Ｄ〜（ただし、ｉは１以上ｂ以下の整数。ｖｉはランダム行列Ｖ＊の第ｉ行ベクトル。Ｄ〜は、基底因子生成部１２３が算出した基底因子Ｄ〜ｊを第ｊ＋１行目の成分とする２ｄ次の列ベクトル。）を算出する。すなわち、出力基底算出部１４３は、ＣＰＵ９１１を用いて、数１３に示す計算式を計算して、ｂ個の出力基底ｇｉを算出する。【０１０８】
【数１３】
2009090750.tif 000015
【０１０９】
ただし、ｉは、１以上ｂ以下の整数である。ｊは、０以上２ｄ−１以下の整数である。ｃｉ，ｊ＋１は、ランダム行列選択部１４２が選択したランダム行列Ｖ＊のｉ行ｊ＋１列成分である。Ｄ〜ｊは、暗号パラメータ設定装置１００の基底因子生成部１２３が算出した基底因子である。【０１１０】
出力基底算出部１４３は、ＲＡＭ９１４を用いて、算出した複数の出力基底ｇｉを表わすデータを記憶する。【０１１１】
出力基底算出部１４３が算出する複数の出力基底ｇｉは、有限生成因子群Ｇに含まれる。
基底因子生成部１２３が算出した複数の基底因子Ｄ〜ｊの間には、ペアリング値が上述した値になるという関係がある（数１１参照）。このため、出力基底算出部１４３が算出した複数の出力基底の間には、ｍ’ｉ，ｊ＝０なら、出力基底ｇｉと出力基底ｇｊとのペアリング値が１になるという関係が成り立つ。【０１１２】
鍵算出部１５０は、ＣＰＵ９１１を用いて、出力基底算出部１４３が記憶した出力基底ｇｉを表わすデータを入力する。
鍵算出部１５０は、ＣＰＵ９１１を用いて、入力したデータが表わす出力基底ｇｉに基づいて、公開鍵ＰＫ、個人鍵ＳＫ、追跡鍵ＴＫなどの鍵を算出する。【０１１３】
図７は、この実施の形態における鍵生成装置５００が、出力基底ｇｉを算出する出力基底算出処理の流れの一例を示すフローチャート図である。【０１１４】
条件入力工程Ｓ７２１において、条件入力部１４１は、ＣＰＵ９１１を用いて、出力基底ｇｉが満たすべき条件を入力する。【０１１５】
ランダム行列選択工程Ｓ７２２において、ランダム行列選択部１４２は、ＣＰＵ９１１を用いて、ペアリング対数記憶部５１２が記憶したデータが表わす複数のペアリング対数係数ηｉに基づいて、条件入力部１４１が入力した条件を満たす行列Ｖのなかから、ランダム行列Ｖ＊をランダムに選択する。【０１１６】
出力基底算出工程Ｓ７１８において、出力基底算出部１４３は、ＣＰＵ９１１を用いて、基底因子記憶部５１１が記憶したデータが表わす複数の基底因子Ｄ〜ｊと、ランダム行列選択工程Ｓ７１７で選択したランダム行列Ｖ＊とに基づいて、複数の出力基底ｇｉを算出する。【０１１７】
次に、このようにして算出した出力基底ｇｉに基づいて算出する鍵について説明する。
なお、以下の例では、超楕円曲線として、種数２の超楕円曲線Ｃ：Ｙ２＝Ｘ５＋１を使用し（すなわち、ｄ＝２、ｗ＝５）、出力基底算出部１４３は、四つの出力基底ｇ１，ｇ２，ｇ３，ｇ４を算出し（すなわち、ｂ＝４）、条件記憶部１３０は、一致条件データとして、八つの整数の組（１，２）、（１，４）、（２，１）、（２，３）、（３，２）、（３，４）、（４，１）、（４，３）を表わすデータを記憶し、不一致条件データとして、四つの整数の組（１，１）、（２，２）、（３，３）、（４，４）を表わすデータを記憶しているものとする。すなわち、出力基底算出部１４３が算出する四つの出力基底ｇ１，ｇ２，ｇ３，ｇ４の間のペアリング値は、ｅ（ｇ１，ｇ２）＝ｅ（ｇ１，ｇ４）＝ｅ（ｇ２，ｇ１）＝ｅ（ｇ２，ｇ３）＝ｅ（ｇ３，ｇ２）＝ｅ（ｇ３，ｇ４）＝ｅ（ｇ４，ｇ１）＝ｅ（ｇ４，ｇ３）＝１、ｅ（ｇ１，ｇ１）≠１、ｅ（ｇ２，ｇ２）≠１、ｅ（ｇ３，ｇ３）≠１、ｅ（ｇ４，ｇ４）≠１であるという関係が成り立っている。【０１１８】
図８は、この実施の形態における鍵算出部１５０の内部ブロックの構成の一例を示す詳細ブロック図である。
鍵算出部１５０は、利用者人数入力部１５１、乱数生成部１６０、公開鍵算出部１７０、個人鍵算出部１８０、公開鍵設定部１９１、個人鍵設定部１９２、追跡鍵設定部１９３を有する。【０１１９】
利用者人数入力部１５１は、ＣＰＵ９１１を用いて、暗号システム８００の利用者の人数（正規の暗号文復号装置３００の数）の最大値を示す２つの整数ｎ１，ｎ２を入力する。ここで、暗号システム８００の利用者の人数の最大値ｎは、ｎ＝ｎ１・ｎ２である。暗号システム８００の利用者は、インデックスｘ（ただし、ｘは１以上ｎ１以下の整数。）と、インデックスｙ（ただし、ｙは１以上ｎ２以下の整数。）との組（ｘ，ｙ）によって、一意に識別される。
なお、ｎ１とｎ２とは等しくてもよい。その場合、利用者人数入力部１５１は、ＣＰＵ９１１を用いて、暗号システム８００の利用者の人数の最大値ｎ＝ｎ１２を示す１つの整数ｎ１を入力してもよい。あるいは、利用者人数入力部１５１は、ＣＰＵ９１１を用いて、暗号システム８００の利用者の人数の最大値ｎを示す１つの整数ｎを入力し、入力した整数ｎの平方根を下回らない最小の整数ｎ１を算出してもよい。
利用者人数入力部１５１は、ＲＡＭ９１４を用いて、入力した２つの整数ｎ１，ｎ２を表わすデータを記憶する。【０１２０】
乱数生成部１６０は、行乱数生成部１６１、ペアリング乱数生成部１６２、列乱数生成部１６３、共通乱数生成部１６４を有する。【０１２１】
行乱数生成部１６１は、ＣＰＵ９１１を用いて、位数決定部１２１が記憶したヤコビ多様体ＪａｃＣの因子の位数ｒを表わすデータと、利用者人数入力部１５１が記憶した整数ｎ１を表わすデータとを入力する。行乱数生成部１６１は、ＣＰＵ９１１を用いて、入力したデータが表わす位数ｒと整数ｎ１とに基づいて、１以上ｒ−１以下の整数をｎ１個ランダムに選択し、ｎ１個の乱数ｒｘ（ただし、ｘは１以上ｎ１以下の整数。）とする。行乱数生成部１６１は、ＲＡＭ９１４を用いて、選択したｎ１個の乱数ｒｘを表わすデータを記憶する。【０１２２】
ペアリング乱数生成部１６２は、ＣＰＵ９１１を用いて、位数決定部１２１が記憶したヤコビ多様体ＪａｃＣの因子の位数ｒを表わすデータと、利用者人数入力部１５１が記憶した整数ｎ１を表わすデータとを入力する。ペアリング乱数生成部１６２は、ＣＰＵ９１１を用いて、入力したデータが表わす位数ｒと整数ｎ１とに基づいて、１以上ｒ−１以下の整数をｎ１個ランダムに選択し、ｎ１個の乱数αｘ（ただし、ｘは１以上ｎ１以下の整数。）とする。ペアリング乱数生成部１６２は、ＲＡＭ９１４を用いて、選択したｎ１個の乱数αｘを表わすデータを記憶する。【０１２３】
列乱数生成部１６３は、ＣＰＵ９１１を用いて、位数決定部１２１が記憶したヤコビ多様体ＪａｃＣの因子の位数ｒを表わすデータと、利用者人数入力部１５１が記憶した整数ｎ２を表わすデータとを入力する。列乱数生成部１６３は、ＣＰＵ９１１を用いて、入力したデータが表わす位数ｒと整数ｎ２とに基づいて、１以上ｒ−１以下の整数をｎ２個ランダムに選択し、ｎ２個の乱数ｃｙ（ただし、ｙは１以上ｎ２以下の整数。）とする。列乱数生成部１６３は、ＲＡＭ９１４を用いて、選択したｎ２個の乱数ｃｙを表わすデータを記憶する。【０１２４】
共通乱数生成部１６４は、ＣＰＵ９１１を用いて、位数決定部１２１が記憶したヤコビ多様体ＪａｃＣの因子の位数ｒを表わすデータを入力する。共通乱数生成部１６４は、ＣＰＵ９１１を用いて、入力したデータが表わす位数に基づいて、１以上ｒ−１以下の整数をランダムに選択し、乱数βとする。共通乱数生成部１６４は、ＲＡＭ９１４を用いて、選択した乱数βを表わすデータを記憶する。【０１２５】
公開鍵算出部１７０は、公開行基底算出部１７１、公開列基底算出部１７２、公開共通因子算出部１７３、公開行第一因子算出部１７４、公開行第二因子算出部１７５、公開ペアリング値算出部１７６、公開列因子算出部１７７を有する。【０１２６】
公開行基底算出部１７１は、ＣＰＵ９１１を用いて、出力基底算出部１４３が記憶した出力基底ｇ１，ｇ２を表わすデータを入力する。公開行基底算出部１７１は、ＣＰＵ９１１を用いて、入力したデータが表わす出力基底ｇ１，ｇ２に基づいて、拡大体Ｋ上におけるヤコビ多様体ＪａｃＣの因子ｇ＝ｇ１＋ｇ２を算出する。すなわち、公開行基底算出部１７１は、ＣＰＵ９１１を用いて、因子ｇ１と因子ｇ２とを加算した因子を算出して、因子ｇとする。公開行基底算出部１７１は、ＲＡＭ９１４を用いて、算出した因子ｇを表わすデータを記憶する。なお、出力基底ｇ１，ｇ２は、有限生成因子群Ｇに含まれるから、公開行基底算出部１７１が算出する因子ｇも、有限生成因子群Ｇに含まれる。【０１２７】
公開列基底算出部１７２は、ＣＰＵ９１１を用いて、出力基底算出部１４３が記憶した出力基底ｇ３，ｇ４を表わすデータを入力する。公開列基底算出部１７２は、ＣＰＵ９１１を用いて、入力したデータが表わす出力基底ｇ３，ｇ４に基づいて、拡大体Ｋ上におけるヤコビ多様体ＪａｃＣの因子ｈ＝ｇ３＋ｇ４を算出する。すなわち、公開列基底算出部１７２は、ＣＰＵ９１１を用いて、因子ｇ３と因子ｇ４とを加算した因子を算出して、因子ｈとする。因子ｈは、有限生成因子群Ｇに含まれる。公開列基底算出部１７２は、ＲＡＭ９１４を用いて、算出した因子ｈを表わすデータを記憶する。【０１２８】
公開共通因子算出部１７３は、ＣＰＵ９１１を用いて、出力基底算出部１４３が記憶した出力基底ｇ２を表わすデータと、共通乱数生成部１６４が記憶した乱数βを表わすデータとを入力する。公開共通因子算出部１７３は、ＣＰＵ９１１を用いて、入力したデータが表わす出力基底ｇ２と乱数βとに基づいて、拡大体Ｋ上におけるヤコビ多様体ＪａｃＣの因子Ｅ＝β・ｇ２を算出する。すなわち、公開列基底算出部１７２は、ＣＰＵ９１１を用いて、因子ｇ２をβ回加算した因子を算出して、因子Ｅとする。因子Ｅは、有限生成因子群Ｇに含まれる。公開共通因子算出部１７３は、ＲＡＭ９１４を用いて、算出した因子Ｅを表わすデータを記憶する。【０１２９】
公開行第一因子算出部１７４は、ＣＰＵ９１１を用いて、出力基底算出部１４３が記憶した出力基底ｇ２を表わすデータと、行乱数生成部１６１が記憶したｎ１個の乱数ｒｘを表わすデータと、共通乱数生成部１６４が記憶した乱数βを表わすデータとを入力する。公開行第一因子算出部１７４は、ＣＰＵ９１１を用いて、入力したデータが表わす出力基底ｇ２とｎ１個の乱数ｒｘと乱数βとに基づいて、拡大体Ｋ上におけるヤコビ多様体ＪａｃＣのｎ１個の因子Ｅｘ＝βｒｘ・ｇ２（ただし、ｘは１以上ｎ１以下の整数。）を算出する。すなわち、公開行第一因子算出部１７４は、ＣＰＵ９１１を用いて、因子ｇ２をβ掛けるｒｘ回加算した因子を算出して、因子Ｅｘとする。因子Ｅｘは、有限生成因子群Ｇに含まれる。公開行第一因子算出部１７４は、ＲＡＭ９１４を用いて、算出したｎ１個の因子Ｅｘを表わすデータを記憶する。
なお、Ｅ＝β・ｇ２であるから、公開行第一因子算出部１７４は、ＣＰＵ９１１を用いて、公開共通因子算出部１７３が記憶した因子Ｅを表わすデータと、行乱数生成部１６１が記憶したｎ１個の乱数ｒｘを表わすデータとを入力し、ＣＰＵ９１１を用いて、ｎ１個の因子Ｅｘ＝ｒｘ・Ｅ（ただし、ｘは１以上ｎ１以下の整数。）を算出してもよい。すなわち、公開行第一因子算出部１７４は、ＣＰＵ９１１を用いて、因子Ｅをｒｘ回加算した因子を算出して、因子Ｅｘとしてもよい。【０１３０】
公開行第二因子算出部１７５は、ＣＰＵ９１１を用いて、出力基底算出部１４３が記憶した出力基底ｇ４を表わすデータと、行乱数生成部１６１が記憶したｎ１個の乱数ｒｘを表わすデータと、共通乱数生成部１６４が記憶した乱数βを表わすデータとを入力する。公開行第二因子算出部１７５は、ＣＰＵ９１１を用いて、入力したデータが表わす出力基底ｇ４とｎ１個の乱数ｒｘと乱数βとに基づいて、拡大体Ｋ上におけるヤコビ多様体ＪａｃＣのｎ１個の因子Ｆｘ＝βｒｘ・ｇ４（ただし、ｘは１以上ｎ１以下の整数。）を算出する。すなわち、公開行第二因子算出部１７５は、ＣＰＵ９１１を用いて、因子ｇ４をβ掛けるｒｘ回加算した因子を算出して、因子Ｆｘとする。因子Ｆｘは、有限生成因子群Ｇに含まれる。公開行第二因子算出部１７５は、ＲＡＭ９１４を用いて、算出したｎ１個の因子Ｆｘを表わすデータを記憶する。【０１３１】
公開ペアリング値算出部１７６は、ＣＰＵ９１１を用いて、出力基底算出部１４３が記憶した出力基底ｇ２を表わすデータと、ペアリング乱数生成部１６２が記憶したｎ１個の乱数αｘを表わすデータと、共通乱数生成部１６４が記憶した乱数βを表わすデータとを入力する。公開ペアリング値算出部１７６は、ＣＰＵ９１１を用いて、入力したデータが表わす出力基底ｇ２とｎ１個の乱数αｘと乱数βとに基づいて、ペアリング値Ｇｘ＝ｅ（ｇ２，ｇ２）βαｘ（ただし、ｘは１以上ｎ１以下の整数。）を算出する。すなわち、公開ペアリング値算出部１７６は、ＣＰＵ９１１を用いて、因子ｇ２と因子ｇ２とのペアリング値をβ掛けるαｘ回乗算したペアリング値を算出して、ペアリング値Ｇｘとする。公開ペアリング値算出部１７６は、ＲＡＭ９１４を用いて、算出したｎ１個のペアリング値Ｇｘを表わすデータを記憶する。【０１３２】
公開列因子算出部１７７は、ＣＰＵ９１１を用いて、公開行基底算出部１７１が記憶した因子ｇを表わすデータと、共通乱数生成部１６４が記憶したｎ２個の乱数ｃｙを表わすデータとを入力する。公開列因子算出部１７７は、ＣＰＵ９１１を用いて、入力したデータが表わす因子ｇとｎ２個の乱数ｃｙとに基づいて、拡大体Ｋ上におけるヤコビ多様体ＪａｃＣのｎ２個の因子Ｈｙ＝ｃｙ・ｇ（ただし、ｙは１以上ｎ２以下の整数。）を算出する。すなわち、公開列因子算出部１７７は、ＣＰＵ９１１を用いて、因子ｇをｃｙ回加算した因子を算出して、因子Ｈｙとする。因子Ｈｙは、有限生成因子群Ｇに含まれる。公開列因子算出部１７７は、ＲＡＭ９１４を用いて、算出したｎ２個の因子Ｈｙを表わすデータを記憶する。【０１３３】
個人鍵算出部１８０は、個人因子算出部１８１を有する。【０１３４】
個人因子算出部１８１は、ＣＰＵ９１１を用いて、行乱数生成部１６１が記憶したｎ１個の乱数ｒｘを表わすデータと、ペアリング乱数生成部１６２が記憶したｎ１個の乱数αｘを表わすデータと、列乱数生成部１６３が記憶したｎ２個の乱数ｃｙを表わすデータと、公開行基底算出部１７１が記憶した因子ｇを表わすデータとを入力する。個人因子算出部１８１は、ＣＰＵ９１１を用いて、入力したデータが表わすｎ１個の乱数ｒｘとｎ１個の乱数αｘとｎ２個の乱数ｃｙと因子ｇとに基づいて、拡大体Ｋ上におけるヤコビ多様体ＪａｃＣのｎ個の因子Ｋｘ，ｙ＝（αｘ＋ｒｘｃｙ）・ｇ（ただし、ｘは１以上ｎ１以下の整数。ｙは１以上ｎ２以下の整数。）を算出する。すなわち、個人因子算出部１８１は、因子ｇをαｘ回加算した因子と、因子ｇをｒｘ掛けるｃｙ回加算した因子とを加算した因子を算出して因子Ｋｘ，ｙとする。因子Ｋｘ，ｙは、有限生成因子群Ｇに含まれる。個人因子算出部１８１は、ＲＡＭ９１４を用いて、算出したｎ個の因子Ｋｘ，ｙを表わすデータを記憶する。【０１３５】
公開鍵設定部１９１は、ＣＰＵ９１１を用いて、公開行基底算出部１７１が記憶した因子ｇを表わすデータと、公開列基底算出部１７２が記憶した因子ｈを表わすデータと、公開共通因子算出部１７３が記憶した因子Ｅを表わすデータと、公開行第一因子算出部１７４が記憶したｎ１個の因子Ｅｘを表わすデータと、公開行第二因子算出部１７５が記憶したｎ１個の因子Ｆｘを表わすデータと、公開ペアリング値算出部１７６が記憶したｎ１個のペアリング値Ｇｘを表わすデータと、公開列因子算出部１７７が記憶したｎ２個の因子Ｈｙを表わすデータとを入力する。公開鍵設定部１９１は、ＣＰＵ９１１を用いて、入力したデータが表わす因子ｇと因子ｈと因子Ｅとｎ１個の因子Ｅｘとｎ１個の因子Ｆｘとｎ１個のペアリング値Ｇｘとｎ２個の因子Ｈｙとに基づいて、（２ｎ１＋ｎ２＋３）個の因子とｎ１個のペアリング値Ｇｘとの組（ｇ，ｈ，Ｅ，Ｅ１，Ｅ２，…，Ｅｎ１，Ｆ１，Ｆ２，…，Ｆｎ１，Ｇ１，Ｇ２，…，Ｇｎ１，Ｈ１，Ｈ２，…，Ｈｎ２）を、公開鍵ＰＫに設定する。【０１３６】
個人鍵設定部１９２は、ＣＰＵ９１１を用いて、個人因子算出部１８１が記憶したｎ個の因子Ｋｘ，ｙを表わすデータを入力する。個人鍵設定部１９２は、ＣＰＵ９１１を用いて、入力したデータが表わすｎ個の因子Ｋｘ，ｙに基づいて、インデックスｘ及びインデックスｙの組（ｘ，ｙ）によって識別される利用者それぞれについて、１つの因子Ｋｘ，ｙを個人鍵ＳＫに設定する。【０１３７】
追跡鍵設定部１９３は、ＣＰＵ９１１を用いて、出力基底算出部１４３が記憶した出力基底ｇ１，ｇ２，ｇ３，ｇ４を表わすデータと、行乱数生成部１６１が記憶したｎ１個の乱数ｒｘを表わすデータと、ペアリング乱数生成部１６２が記憶したｎ１個の乱数αｘを表わすデータと、列乱数生成部１６３が記憶したｎ２個の乱数ｃｙを表わすデータと、共通乱数生成部１６４が記憶した乱数βを表わすデータとを入力する。追跡鍵設定部１９３は、ＣＰＵ９１１を用いて、入力したデータが表わす出力基底ｇ１，ｇ２，ｇ３，ｇ４とｎ１個の乱数ｒｘとｎ１個の乱数αｘとｎ２個の乱数ｃｙと乱数βとに基づいて、４つの因子と（２ｎ１＋ｎ２＋１）個の整数の組（ｇ１，ｇ２，ｇ３，ｇ４，ｒ１，ｒ２，…，ｒｎ１，α１，α２，…，αｎ１，ｃ１，ｃ２，…ｃｎ２，β）を、追跡鍵ＴＫに設定する。【０１３８】
次に、上記のようにして生成した鍵を利用して暗号化・復号を行う暗号文生成装置２００及び暗号文復号装置３００について説明する。【０１３９】
図９は、この実施の形態における暗号文生成装置２００の機能ブロックの構成の一例を示すブロック構成図である。
暗号文生成装置２００は、平文Ｍを暗号化して、暗号文ＣＴを生成する。暗号文ＣＴは、ｎ１個の行暗号文ＣＴｘ（ただし、ｘは１以上ｎ１以下の整数。）と、ｎ２個の列暗号文ＣＴｙ（ただし、ｙは１以上ｎ２以下の整数。）とを含む。行暗号文ＣＴｘは、２つのインデックスの組（ｘ，ｙ）で識別される最大ｎ人の利用者のうち、同じインデックスｘで識別される最大ｎ２人の利用者に対する共通の暗号文である。列暗号文ＣＴｙは、２つのインデックスの組（ｘ，ｙ）で識別される最大ｎ人の利用者のうち、同じインデックスｙで識別される最大ｎ１人の利用者に対する共通の暗号文である。したがって、すべての利用者に対して、それぞれ異なる行暗号文ＣＴｘと列暗号文ＣＴｙとの組（ＣＴｘ，ＣＴｙ）が、その利用者に対する暗号文となる。【０１４０】
なお、あるインデックスｘで識別される利用者すべてに対して暗号文を送らない場合、暗号文生成装置２００は、そのインデックスｘに対する行暗号文ＣＴｘを生成しなくてもよい。また、あるインデックスｙで識別される利用者すべてに対して暗号文を送らない場合、暗号文生成装置２００は、そのインデックスｙに対応する列暗号文ＣＴｙを生成しなくてもよい。すなわち、暗号文生成装置２００が生成する行暗号文ＣＴｘの数は、ｎ１個以下であってもよいし、暗号文生成装置２００が生成する列暗号文ＣＴｙの数は、ｎ２個以下であってもよい。
以下の説明では、すべてのインデックスに対応する行暗号文ＣＴｘ及び列暗号文ＣＴｙを生成するものとする。【０１４１】
暗号文生成装置２００は、公開鍵入力部２１１、平文入力部２２１、暗号乱数生成部２３０、行暗号文生成部２４０、列暗号文生成部２５０、行暗号文設定部２６１、列暗号文設定部２６２を有する。【０１４２】
公開鍵入力部２１１は、ＣＰＵ９１１を用いて、鍵生成装置５００が設定した公開鍵ＰＫを入力する。公開鍵入力部２１１は、磁気ディスク装置９２０を用いて、入力した公開鍵ＰＫに含まれる因子ｇと因子ｈと因子Ｅとｎ１個の因子Ｅｘとｎ１個の因子Ｆｘとｎ１個のペアリング値Ｇｘとｎ２個の因子Ｈｙとを表わすデータを記憶する。【０１４３】
平文入力部２２１は、ＣＰＵ９１１を用いて、暗号化したい平文Ｍを入力する。平文入力部２２１は、ＲＡＭ９１４を用いて、入力した平文Ｍを表わすデータを記憶する。【０１４４】
暗号乱数生成部２３０は、暗号共通乱数生成部２３１、暗号行乱数生成部２３２、暗号列乱数生成部２３３を有する。【０１４５】
暗号共通乱数生成部２３１は、ＣＰＵ９１１を用いて、ヤコビ多様体ＪａｃＣの因子の位数ｒに基づいて、１以上ｒ−１以下の整数をランダムに選択し、乱数ｔとする。共通乱数生成部１６４は、ＲＡＭ９１４を用いて、選択した乱数ｔを表わすデータを記憶する。【０１４６】
暗号行乱数生成部２３２は、ＣＰＵ９１１を用いて、ヤコビ多様体ＪａｃＣの因子の位数ｒと、暗号システム８００の利用者の人数の最大値ｎを表わす２つの整数ｎ１，ｎ２のうちの整数ｎ１とに基づいて、１以上ｒ−１以下の整数をｎ１個ランダムに選択し、ｎ１個の乱数ｓｘ（ただし、ｘは１以上ｎ１以下の整数。）とする。暗号行乱数生成部２３２は、ＲＡＭ９１４を用いて、選択したｎ１個の乱数ｓｘを表わすデータを記憶する。【０１４７】
暗号列乱数生成部２３３は、ＣＰＵ９１１を用いて、ヤコビ多様体ＪａｃＣの因子の位数ｒと、暗号システム８００の利用者の人数の最大値ｎを表わす２つの整数ｎ１，ｎ２のうちの整数ｎ２とに基づいて、１以上ｒ−１以下の整数をｎ２個ランダムに選択し、ｎ２個の乱数ｗｙ（ただし、ｙは１以上ｎ２以下の整数。）とする。暗号行乱数生成部２３２は、ＲＡＭ９１４を用いて、選択したｎ１個の乱数ｓｘを表わすデータを記憶する。【０１４８】
行暗号文生成部２４０は、暗号行第一因子算出部２４１、暗号行第二因子算出部２４２、暗号行第三因子算出部２４３、暗号鍵算出部２４４、平文暗号化部２４５を有する。【０１４９】
暗号行第一因子算出部２４１は、ＣＰＵ９１１を用いて、公開鍵入力部２１１が記憶したｎ１個の因子Ｅｘを表わすデータと、暗号行乱数生成部２３２が記憶したｎ１個の乱数ｓｘを表わすデータとを入力する。暗号行第一因子算出部２４１は、ＣＰＵ９１１を用いて、入力したデータが表わすｎ１個の因子Ｅｘとｎ１個の乱数ｓｘとに基づいて、拡大体Ｋ上におけるヤコビ多様体ＪａｃＣのｎ１個の因子Ｒｘ＝ｓｘ・Ｅｘ（ただし、ｘは１以上ｎ１以下の整数。）を算出する。すなわち、暗号行第一因子算出部２４１は、ＣＰＵ９１１を用いて、因子Ｅｘをｓｘ回加算した因子を算出して、因子Ｒｘとする。因子Ｒｘは、有限生成因子群Ｇに含まれる。暗号行第一因子算出部２４１は、ＲＡＭ９１４を用いて、算出したｎ１個の因子Ｒｘを表わすデータを記憶する。【０１５０】
暗号行第二因子算出部２４２は、ＣＰＵ９１１を用いて、公開鍵入力部２１１が記憶したｎ１個の因子Ｆｘを表わすデータと、暗号行乱数生成部２３２が記憶したｎ１個の乱数ｓｘを表わすデータとを入力する。暗号行第二因子算出部２４２は、ＣＰＵ９１１を用いて、入力したデータが表わすｎ１個の因子Ｆｘとｎ１個の乱数ｓｘとに基づいて、拡大体Ｋ上におけるヤコビ多様体ＪａｃＣのｎ１個の因子Ｒ〜ｘ＝ｓｘ・Ｆｘ（ただし、ｘは１以上ｎ１以下の整数。）を算出する。すなわち、暗号行第二因子算出部２４２は、ＣＰＵ９１１を用いて、因子Ｆｘをｓｘ回加算した因子を算出して、因子Ｒ〜ｘとする。因子Ｒ〜ｘは、有限生成因子群Ｇに含まれる。暗号行第二因子算出部２４２は、ＲＡＭ９１４を用いて、算出したｎ１個の因子Ｒ〜ｘを表わすデータを記憶する。【０１５１】
暗号行第三因子算出部２４３は、ＣＰＵ９１１を用いて、公開鍵入力部２１１が記憶した因子Ｅを表わすデータと、暗号共通乱数生成部２３１が記憶した乱数ｔを表わすデータと、暗号行乱数生成部２３２が記憶したｎ１個の乱数ｓｘを表わすデータとを入力する。暗号行第三因子算出部２４３は、ＣＰＵ９１１を用いて、入力したデータが表わす因子Ｅと乱数ｔとｎ１個の乱数ｓｘとに基づいて、拡大体Ｋ上におけるヤコビ多様体ＪａｃＣのｎ１個の因子Ａｘ＝ｓｘｔ・Ｅ（ただし、ｘは１以上ｎ１以下の整数。）を算出する。すなわち、暗号行第三因子算出部２４３は、ＣＰＵ９１１を用いて、因子Ｅをｓｘ掛けるｔ回加算した因子を算出して、因子Ａｘとする。因子Ａｘは、有限生成因子群Ｇに含まれる。暗号行第三因子算出部２４３は、ＲＡＭ９１４を用いて、算出したｎ１個の因子Ａｘを表わすデータを記憶する。【０１５２】
暗号鍵算出部２４４は、ＣＰＵ９１１を用いて、公開鍵入力部２１１が記憶したｎ１個のペアリング値Ｇｘを表わすデータと、暗号共通乱数生成部２３１が記憶した乱数ｔを表わすデータと、暗号行乱数生成部２３２が記憶したｎ１個の乱数ｓｘを表わすデータとを入力する。暗号鍵算出部２４４は、ＣＰＵ９１１を用いて、入力したデータが表わすｎ１個のペアリング値Ｇｘと乱数ｔとｎ１個の乱数ｓｘとに基づいて、ｎ１個のペアリング値ＣＫｘ＝Ｇｘｓｘｔ（ただし、ｘは１以上ｎ１以下の整数。）を算出する。すなわち、暗号鍵算出部２４４は、ペアリング値Ｇｘをｓｘ掛けるｔ回乗算したペアリング値を算出して、ペアリング値ＣＫｘとする。暗号鍵算出部２４４は、ＲＡＭ９１４を用いて、算出したｎ１個のペアリング値ＣＫｘを表わすデータを記憶する。【０１５３】
平文暗号化部２４５は、ＣＰＵ９１１を用いて、平文入力部２２１が記憶した平文Ｍを表わすデータと、暗号鍵算出部２４４が記憶したｎ１個のペアリング値ＣＫｘを表わすデータとを入力する。平文暗号化部２４５は、ＣＰＵ９１１を用いて、入力したデータが表わす平文Ｍとｎ１個のペアリング値ＣＫｘとに基づいて、ｎ１個のペアリング値ＣＫｘそれぞれを暗号鍵として使用して平文Ｍを暗号化して、ｎ１個の暗号文Ｂｘ（ただし、ｘは１以上ｎ１以下の整数。）を生成する。例えば、平文暗号化部２４５は、ＣＰＵ９１１を用いて、平文Ｍをペアリング値とみなし、ペアリング値Ｍとペアリング値ＣＫｘとを乗算したペアリング値Ｍ・ＣＫｘを算出して、暗号文Ｂｘとする。平文暗号化部２４５は、ＲＡＭ９１４を用いて、生成したｎ１個の暗号文Ｂｘを記憶する。【０１５４】
列暗号文生成部２５０は、暗号列第一因子算出部２５１、暗号列第二因子算出部２５２を有する。【０１５５】
暗号列第一因子算出部２５１は、ＣＰＵ９１１を用いて、公開鍵入力部２１１が記憶した因子ｈ及びｎ２個の因子Ｈｙを表わすデータと、暗号共通乱数生成部２３１が記憶した乱数ｔを表わすデータと、暗号列乱数生成部２３３が記憶したｎ２個の乱数ｗｙを表わすデータとを入力する。暗号列第一因子算出部２５１は、ＣＰＵ９１１を用いて、入力したデータが表わす因子ｈとｎ２個の因子Ｈｙと乱数ｔとｎ２個の乱数ｗｙとに基づいて、拡大体Ｋ上におけるヤコビ多様体ＪａｃＣのｎ２個の因子Ｃｙ＝ｔ・Ｈｙ＋ｗｙ・ｈ（ただし、ｙは１以上ｎ２以下の整数。）を算出する。すなわち、暗号列第一因子算出部２５１は、ＣＰＵ９１１を用いて、因子Ｈｙをｔ回加算した因子と、因子ｈをｗｙ回加算した因子とを加算した因子を算出して、因子Ｃｙとする。因子Ｃｙは、有限生成因子群Ｇに含まれる。暗号列第一因子算出部２５１は、ＲＡＭ９１４を用いて、算出したｎ２個の因子Ｃｙを表わすデータを記憶する。【０１５６】
暗号列第二因子算出部２５２は、ＣＰＵ９１１を用いて、公開鍵入力部２１１が記憶した因子ｇを表わすデータと、暗号列乱数生成部２３３が記憶したｎ２個の乱数ｗｙを表わすデータとを入力する。暗号列第二因子算出部２５２は、ＣＰＵ９１１を用いて、入力したデータが表わす因子ｇとｎ２個の乱数ｗｙとに基づいて、拡大体Ｋ上におけるヤコビ多様体ＪａｃＣのｎ２個の因子Ｃ〜ｙ＝ｗｙ・ｇ（ただし、ｙは１以上ｎ２以下の整数。）を算出する。すなわち、暗号列第二因子算出部２５２は、ＣＰＵ９１１を用いて、因子ｇをｗｙ回加算した因子を算出して、因子Ｃ〜ｙとする。因子Ｃ〜ｙは、有限生成因子群Ｇに含まれる。暗号列第二因子算出部２５２は、ＲＡＭ９１４を用いて、算出したｎ２個の因子Ｃ〜ｙを表わすデータを記憶する。【０１５７】
行暗号文設定部２６１は、ＣＰＵ９１１を用いて、暗号行第一因子算出部２４１が記憶したｎ１個の因子Ｒｘを表わすデータと、暗号行第二因子算出部２４２が記憶したｎ１個の因子Ｒ〜ｘを表わすデータと、暗号行第三因子算出部２４３が記憶したｎ１個の因子Ａｘを表わすデータと、平文暗号化部２４５が記憶したｎ１個の暗号文Ｂｘを表わすデータとを入力する。行暗号文設定部２６１は、ＣＰＵ９１１を用いて、入力したデータが表わすｎ１個の因子Ｒｘとｎ１個の因子Ｒ〜ｘとｎ１個の因子Ａｘとｎ１個の暗号文Ｂｘとに基づいて、３つの因子と１つの暗号文との組（Ｒｘ，Ｒ〜ｘ，Ａｘ，Ｂｘ）（ただし、ｘは１以上ｎ１以下の整数。）をｎ１個生成し、ｎ１個の行暗号文ＣＴｘとする。【０１５８】
列暗号文設定部２６２は、ＣＰＵ９１１を用いて、暗号列第一因子算出部２５１が記憶したｎ２個の因子Ｃｙを表わすデータと、暗号列第二因子算出部２５２が記憶したｎ２個の因子Ｃ〜ｙを表わすデータとを入力する。列暗号文設定部２６２は、ＣＰＵ９１１を用いて、入力したデータが表わすｎ２個の因子Ｃｙとｎ２個の因子Ｃ〜ｙとに基づいて、２つの因子の組（Ｃｙ，Ｃ〜ｙ）（ただし、ｙは１以上ｎ２以下の整数。）をｎ２個生成し、ｎ２個の列暗号文ＣＴｙとする。【０１５９】
図１０は、この実施の形態における（正規の）暗号文復号装置３００の機能ブロックの構成の一例を示すブロック構成図である。
正規の暗号文復号装置３００は、暗号文生成装置２００が生成した暗号文ＣＴを入力し、そのなかから自己の利用者に対応する行暗号文ＣＴｘ及び列暗号文ＣＴｙを取り出して、復号する。【０１６０】
正規の暗号文復号装置３００は、暗号文入力部３１１、インデックス記憶部３２１、行暗号文入力部３２２、列暗号文入力部３２３、個人鍵記憶部３３１、復号文生成部３４０を有する。【０１６１】
暗号文入力部３１１は、ＣＰＵ９１１を用いて、暗号文生成装置２００が生成した暗号文ＣＴを入力する。暗号文入力部３１１は、ＲＡＭ９１４を用いて、入力した暗号文ＣＴを表わすデータを記憶する。【０１６２】
インデックス記憶部３２１は、あらかじめ、ＲＯＭ９１３を用いて、自己に利用者に対応する２つのインデックスＸ，Ｙを表わすデータを記憶している。【０１６３】
行暗号文入力部３２２は、ＣＰＵ９１１を用いて、暗号文入力部３１１が記憶した暗号文ＣＴを表わすデータと、インデックス記憶部３２１が記憶したインデックスＸを表わすデータとを入力する。行暗号文入力部３２２は、ＣＰＵ９１１を用いて、入力したデータが表わす暗号文ＣＴとインデックスＸとに基づいて、暗号文ＣＴのなかから、インデックスＸを有する利用者に対する一つの行暗号文ＣＴＸを取得する。行暗号文入力部３２２は、ＲＡＭ９１４を用いて、取得した行暗号文ＣＴＸに含まれる因子ＲＸと因子Ｒ〜Ｘと因子ＡＸと暗号文ＢＸとを表わすデータを記憶する。【０１６４】
列暗号文入力部３２３は、ＣＰＵ９１１を用いて、暗号文入力部３１１が記憶した暗号文ＣＴを表わすデータと、インデックス記憶部３２１が記憶したインデックスＹを表わすデータとを入力する。列暗号文入力部３２３は、ＣＰＵ９１１を用いて、入力したデータが表わす暗号文ＣＴとインデックスＹとに基づいて、暗号文ＣＴのなかから、インデックスＹを有する利用者に対する一つの列暗号文ＣＴＹを取得する。列暗号文入力部３２３は、ＲＡＭ９１４を用いて、取得した列暗号文ＣＴＹに含まれる因子ＣＹと因子Ｃ〜Ｙとを表わすデータを記憶する。【０１６５】
個人鍵記憶部３３１は、あらかじめ、耐タンパ性のある記憶装置を用いて、鍵生成装置５００が設定した個人鍵ＫＸ，Ｙを表わすデータを記憶している。【０１６６】
復号文生成部３４０は、復号鍵算出部３４１、暗号文復号部３４２を有する。【０１６７】
復号鍵算出部３４１は、ＣＰＵ９１１を用いて、行暗号文入力部３２２が記憶した因子ＲＸと因子Ｒ〜Ｘと因子ＡＸとを表わすデータと、列暗号文入力部３２３が記憶した因子ＣＹと因子Ｃ〜Ｙとを表わすデータと、個人鍵記憶部３３１が記憶した個人鍵ＫＸ，Ｙを表わすデータとを入力する。復号鍵算出部３４１は、ＣＰＵ９１１を用いて、入力したデータが表わす因子ＲＸと因子Ｒ〜Ｘと因子ＡＸと因子ＣＹと因子Ｃ〜Ｙと個人鍵ＫＸ，Ｙとに基づいて、ペアリング値ＣＫ’＝ｅ（ＫＸ，Ｙ，ＡＸ）・ｅ（Ｒ〜Ｘ，Ｃ〜Ｙ）／ｅ（ＣＹ，ＲＸ）を算出する。すなわち、復号鍵算出部３４１は、ＣＰＵ９１１を用いて、因子ＫＸ，Ｙと因子ＡＸとのペアリング値と、因子Ｒ〜Ｘと因子Ｃ〜Ｙとのペアリング値とを乗算したペアリング値を、因子ＣＹとＲＸとのペアリング値で割ったペアリング値を算出して、ペアリング値ＣＫ’とする。復号鍵算出部３４１は、ＲＡＭ９１４を用いて、算出したペアリング値ＣＫ’を表わすデータを記憶する。【０１６８】
暗号文復号部３４２は、ＣＰＵ９１１を用いて、行暗号文入力部３２２が記憶した暗号文ＢＸを表わすデータと、復号鍵算出部３４１が記憶したペアリング値ＣＫ’を表わすデータとを入力する。暗号文復号部３４２は、ＣＰＵ９１１を用いて、入力したデータが表わす暗号文ＢＸとペアリング値ＣＫ’とに基づいて、ペアリング値ＣＫ’を復号鍵として使用して暗号文ＢＸを復号して、復号文Ｍ’を生成する。例えば、暗号文復号部３４２は、ＣＰＵ９１１を用いて、暗号文ＢＸをペアリング値とみなし、ペアリング値ＢＸとペアリング値ＣＫ’の逆数との積であるペアリング値ＢＸ／ＣＫ’を算出して、復号文Ｍ’とする。暗号文復号部３４２は、ＲＡＭ９１４を用いて、生成した復号文Ｍ’を記憶する。【０１６９】
ここで、暗号文生成装置２００の暗号鍵算出部２４４が生成するペアリング値ＣＫＸを、公開されていないパラメータを用いて表わすと、数１４になる。【０１７０】
【数１４】
2009090750.tif 000016
【０１７１】
また、暗号文復号装置３００の復号鍵算出部３４１が生成するペアリング値ＣＫ’を、公開されていないパラメータを用いて表わすと、数１５になる。【０１７２】
【数１５】
2009090750.tif 000017
【０１７３】
ここで、出力基底算出部１４３が算出した出力基底ｇ１，ｇ２，ｇ３，ｇ４の間の関係より、ｅ（ｇ１，ｇ２）＝ｅ（ｇ１，ｇ４）＝ｅ（ｇ２，ｇ１）＝ｅ（ｇ２，ｇ３）＝ｅ（ｇ３，ｇ２）＝ｅ（ｇ３，ｇ４）＝ｅ（ｇ４，ｇ１）＝ｅ（ｇ４，ｇ３）＝１、ｅ（ｇ１，ｇ１）≠１、ｅ（ｇ２，ｇ２）≠１、ｅ（ｇ３，ｇ３）≠１、ｅ（ｇ４，ｇ４）≠１なので、ペアリング値ＣＫ’は、数１６のように表わせる。【０１７４】
【数１６】
2009090750.tif 000018
【０１７５】
すなわち、暗号文生成装置２００の暗号鍵算出部２４４が算出するペアリング値ＣＫＸと、暗号文復号装置３００の復号鍵算出部３４１が算出するペアリング値ＣＫ’とは等しくなる。これにより、暗号文生成装置２００と暗号文復号装置３００とは、共通の暗号鍵と復号鍵とを共有できる。【０１７６】
次に、上記のような暗号システム８００において、不正な暗号文復号装置３００ｚを解析して個人鍵の漏洩元を判別する不正者追跡装置４００について説明する。【０１７７】
図１１は、この実施の形態における不正者追跡装置４００の機能ブロックの構成の一例を示すブロック構成図である。
不正者追跡装置４００は、追跡用の暗号文ＣＴを生成し、不正な暗号文復号装置３００ｚに入力する。不正者追跡装置４００は、不正な暗号文復号装置３００ｚが暗号文ＣＴを復号した復号文Ｍ’を入力し、解析することにより、暗号文復号装置３００ｚが利用している個人鍵ＫＸ，Ｙを特定する。【０１７８】
不正者追跡装置４００は、追跡鍵記憶部４１１、目標決定部４２１、追跡平文生成部４２２、追跡乱数生成部４３０、追跡行暗号文生成部４４０、追跡列暗号文生成部４５０、行暗号文設定部４６１、列暗号文設定部４６２、暗号文出力部４６３、復号文入力部４７１、漏洩元判別部４７２を有する。【０１７９】
追跡鍵記憶部４１１は、あらかじめ、耐タンパ性を有する記憶装置を用いて、鍵生成装置５００が設定した追跡鍵ＴＫを表わすデータを記憶している。【０１８０】
目標決定部４２１は、ＣＰＵ９１１を用いて、暗号システム８００のｎ人の利用者を、インデックスｘやインデックスｙに基づいて、複数のグループに分類する。目標決定部４２１は、ＲＡＭ９１４を用いて、分類したグループを表わすデータを記憶する。【０１８１】
追跡平文生成部４２２は、ＣＰＵ９１１を用いて、追跡用の暗号文ＣＴにおいて暗号化される平文Ｍをランダムに生成する。追跡平文生成部４２２は、ＲＡＭ９１４を用いて、生成した平文Ｍを表わすデータを記憶する。【０１８２】
追跡乱数生成部４３０は、ＣＰＵ９１１を用いて、追跡用の暗号文ＣＴを生成するために用いられる複数の乱数を生成する。追跡乱数生成部４３０は、ＲＡＭ９１４を用いて、生成した複数の乱数を表わすデータを記憶する。【０１８３】
追跡行暗号文生成部４４０は、ＣＰＵ９１１を用いて、追跡鍵記憶部４１１が記憶した追跡鍵ＴＫを表わすデータと、目標決定部４２１が記憶したグループを表わすデータと、追跡乱数生成部４３０が記憶した複数の乱数を表わすデータと、追跡平文生成部４２２が記憶した平文Ｍを表わすデータとを入力する。追跡行暗号文生成部４４０は、ＣＰＵ９１１を用いて、入力したデータが表わす追跡鍵ＴＫとグループと複数の乱数と平文Ｍとに基づいて、ｎ１個の追跡用の行暗号文ＣＴｘを生成するために必要な複数の因子などを生成する。追跡行暗号文生成部４４０は、ＲＡＭ９１４を用いて、生成した複数の因子などを表わすデータを記憶する。【０１８４】
追跡列暗号文生成部４５０は、ＣＰＵ９１１を用いて、追跡鍵記憶部４１１が記憶した追跡鍵ＴＫを表わすデータと、目標決定部４２１が記憶したグループを表わすデータと、追跡乱数生成部４３０が記憶した複数の乱数を表わすデータとを入力する。追跡列暗号文生成部４５０は、ＣＰＵ９１１を用いて、入力したデータが表わす追跡鍵ＴＫとグループと複数の乱数とに基づいて、ｎ２個の追跡用の列暗号文ＣＴｙを生成するために必要な複数の因子などを生成する。追跡列暗号文生成部４５０は、ＲＡＭ９１４を用いて、生成した複数の因子などを表わすデータを記憶する。【０１８５】
行暗号文設定部４６１（追跡行暗号文設定部）は、ＣＰＵ９１１を用いて、追跡行暗号文生成部４４０が記憶した複数の因子などを表わすデータを入力する。行暗号文設定部４６１は、ＣＰＵ９１１を用いて、入力したデータが表わす複数の因子などに基づいて、ｎ１個の追跡用の行暗号文ＣＴｘを設定する。行暗号文設定部４６１は、ＲＡＭ９１４を用いて、設定したｎ１個の追跡用の行暗号文ＣＴｘを表わすデータを記憶する。【０１８６】
列暗号文設定部４６２（追跡列暗号文設定部）は、ＣＰＵ９１１を用いて、追跡列暗号文生成部４５０が記憶した複数の因子などを表わすデータを入力する。列暗号文設定部４６２は、ＣＰＵ９１１を用いて、入力したデータが表わす複数の因子などに基づいて、ｎ２個の追跡用の列暗号文ＣＴｙを設定する。列暗号文設定部４６２は、ＲＡＭ９１４を用いて、設定したｎ２個の追跡用の列暗号文ＣＴｙを表わすデータを記憶する。【０１８７】
暗号文出力部４６３は、ＣＰＵ９１１を用いて、行暗号文設定部４６１が記憶したｎ１個の追跡用の行暗号文ＣＴｘを表わすデータと、列暗号文設定部４６２が記憶したｎ２個の追跡用の列暗号文ＣＴｙを表わすデータとを入力する。暗号文出力部４６３は、ＣＰＵ９１１を用いて、入力したデータが表わすｎ１個の追跡用の行暗号文ＣＴｘとｎ２個の追跡用の列暗号文ＣＴｙとに基づいて、追跡用の暗号文ＣＴを生成する。暗号文出力部４６３は、ＣＰＵ９１１を用いて、生成した追跡用の暗号文ＣＴを、不正な暗号文復号装置３００ｚに対して出力する。【０１８８】
復号文入力部４７１は、ＣＰＵ９１１を用いて、暗号文出力部４６３が出力した追跡用の暗号文ＣＴを暗号文復号装置３００ｚが復号した復号文Ｍ’を入力する。復号文入力部４７１は、入力した復号文Ｍ’を表わすデータを記憶する。【０１８９】
漏洩元判別部４７２は、ＣＰＵ９１１を用いて、目標決定部４２１が記憶したグループを表わすデータと、追跡平文生成部４２２が記憶した平文Ｍを表わすデータと、復号文入力部４７１が記憶した復号文Ｍ’を表わすデータとを入力する。漏洩元判別部４７２は、ＣＰＵ９１１を用いて、入力したデータが表わす平文Ｍと復号文Ｍ’とに基づいて、暗号文復号装置３００ｚが追跡用の暗号文ＣＴを正しく復号できたか否かを判定する。
不正者追跡装置４００が生成する追跡用の暗号文ＣＴは、目標決定部４２１が分類した複数のグループのうち、所定のグループに属する利用者の個人鍵Ｋｘ，ｙを用いた場合には正しく復号できるが、それ以外のグループに属する利用者の個人鍵Ｋｘ，ｙを用いた場合には正しく復号できないよう構成されている。
したがって、グループの分類を変えながら、暗号文復号装置３００ｚに、追跡用の暗号文ＣＴを復号させ、正しく復号できるかを判定することにより、不正な暗号文復号装置３００ｚが使用している個人鍵Ｋｘ，ｙのインデックスｘ及びｙを特定できる。【０１９０】
漏洩元判別部４７２は、不正な暗号文復号装置３００ｚが使用している個人鍵Ｋｘ，ｙのインデックスｘ及びｙを特定できた場合、ＣＰＵ９１１を用いて、特定したインデックスｘ，ｙを出力する。
漏洩元判別部４７２は、不正な暗号文復号装置３００ｚが使用している個人鍵Ｋｘ，ｙのインデックスｘ及びｙをまだ特定できない場合、ＲＡＭ９１４を用いて、判定結果を表わすデータを記憶する。【０１９１】
目標決定部４２１は、ＣＰＵ９１１を用いて、漏洩元判別部４７２が記憶した判定結果を表わすデータを入力し、入力したデータが表わす判定結果に基づいて、グループ分けを変更する。
不正者追跡装置４００は、変更したグループ分けに基づいて新たに生成した追跡用の暗号文ＣＴを、再び暗号文復号装置３００ｚに入力し、復号文Ｍ’を解析する。これを繰り返すことにより、不正者追跡装置４００は、不正な暗号文復号装置３００ｚが使用している個人鍵Ｋｘ，ｙのインデックスｘ及びｙを特定する。【０１９２】
図１２は、この実施の形態における不正者追跡装置４００のうち、追跡乱数生成部４３０、追跡行暗号文生成部４４０、追跡列暗号文生成部４５０の内部ブロックの一例を示す詳細ブロック図である。
なお、この例において、目標決定部４２１は、ＣＰＵ９１１を用いて、暗号システム８００の利用者を、インデックスｘに基づいて３つのグループに分け、インデックスｙに基づいて２つのグループに分け、全部で６つのグループに分類するものとする。目標決定部４２１は、ＣＰＵ９１１を用いて、２つの整数ｉ，ｊ（ただし、ｉは１以上ｎ１以下の整数。ｊは１以上ｎ２以下の整数。）を決定し、ＲＡＭ９１４を用いて、決定した整数ｉ，ｊを表わすデータを記憶する。ここで、整数ｉは、暗号システム８００の利用者を、インデックスｘがｉより大きい第一のグループと、インデックスｘがｉと等しい第二のグループと、インデックスｘがｉより小さい第三のグループとに分類する。また、整数ｊは、暗号システム８００の利用者を、インデックスｙがｊ以上である第一のグループと、インデックスｙがｊ未満である第二のグループとに分類する。この２種類の分類の組み合わせにより、暗号システム８００の利用者は、６つのグループに分類される。【０１９３】
追跡乱数生成部４３０は、追跡共通乱数生成部４３１、追跡行乱数生成部４３２、追跡列乱数生成部４３３、撹乱行乱数生成部４３４、撹乱列乱数生成部４３５を有する。
追跡共通乱数生成部４３１、追跡行乱数生成部４３２、追跡列乱数生成部４３３はそれぞれ、暗号文生成装置２００の暗号共通乱数生成部２３１、暗号行乱数生成部２３２、暗号列乱数生成部２３３と同様なので、ここでは説明を省略する。【０１９４】
撹乱行乱数生成部４３４は、ＣＰＵ９１１を用いて、目標決定部４２１が決定した整数ｉと、ヤコビ多様体ＪａｃＣの因子の位数ｒとに基づいて、１以上ｒ−１以下の３（ｉ−１）個の整数をランダムに選択し、乱数ｖｘ，１、ｖｘ，２、ｖｘ，３（ただし、ｘは１以上ｉ未満の整数。）とする。撹乱行乱数生成部４３４は、ＲＡＭ９１４を用いて、選択した乱数ｖｘ，１、ｖｘ，２、ｖｘ，３を表わすデータを記憶する。【０１９５】
撹乱列乱数生成部４３５は、ＣＰＵ９１１を用いて、目標決定部４２１が決定した整数ｊと、ヤコビ多様体ＪａｃＣの因子の位数ｒとに基づいて、１以上ｒ−１以下のｊ−１個の整数をランダムに選択し、乱数ｚｐ，ｙ（ただし、ｙは１以上ｊ未満の整数。）とする。撹乱列乱数生成部４３５は、ＲＡＭ９１４を用いて、選択した乱数ｚｐ，ｙを表わすデータを記憶する。【０１９６】
追跡行暗号文生成部４４０は、追跡行第一因子算出部４４１、追跡行第二因子算出部４４２、追跡行第三因子算出部４４３、追跡暗号鍵算出部４４４、追跡平文暗号化部４４５を有する。【０１９７】
追跡行第一因子算出部４４１は、暗号文生成装置２００の暗号行第一因子算出部２４１に相当する。追跡行第一因子算出部４４１は、ＣＰＵ９１１を用いて、目標決定部４２１が決定した整数ｉと、追跡鍵ＴＫに含まれる因子ｇ２及びｎ１個の乱数ｒｘと、因子ｇ（追跡鍵ＴＫに含まれる因子ｇ１，ｇ２から算出してもよいし、公開鍵ＰＫから取得してもよい。）と、追跡行乱数生成部４３２が生成したｎ１個の乱数ｓｘと、撹乱行乱数生成部４３４が生成したｉ−１個の乱数ｖｘ，１とに基づいて、拡大体Ｋ上におけるヤコビ多様体ＪａｃＣのｎ１個の因子Ｒｘを算出する。
インデックスｘが整数ｉより大きい場合、追跡行第一因子算出部４４１は、ＣＰＵ９１１を用いて、因子Ｒｘ＝ｓｘｒｘ・ｇ２（ただし、ｘはｉ＋１以上ｎ１以下の整数。）を算出する。すなわち、追跡行第一因子算出部４４１は、ＣＰＵ９１１を用いて、因子ｇ２をｓｘ掛けるｒｘ回加算した因子を算出し、因子Ｒｘとする。
インデックスｘが整数ｉと等しい場合、追跡行第一因子算出部４４１は、ＣＰＵ９１１を用いて、因子Ｒｘ＝ｓｘｒｘ・ｇ（ただし、ｘ＝ｉ。）を算出する。すなわち、追跡行第一因子算出部４４１は、ＣＰＵ９１１を用いて、因子ｇをｓｘ掛けるｒｘ回加算した因子を算出し、因子Ｒｘとする。
インデックスｘが整数ｉより小さい場合、追跡行第一因子算出部４４１は、ＣＰＵ９１１を用いて、因子Ｒｘ＝ｖｘ，１・ｇ（ただし、ｘは１以上ｉ−１以下の整数。）を算出する。すなわち、追跡行第一因子算出部４４１は、ＣＰＵ９１１を用いて、因子ｇをｖｘ，１回加算した因子を算出し、因子Ｒｘとする。
いずれの場合も、因子Ｒｘは、有限生成因子群Ｇに含まれる。
追跡行第一因子算出部４４１は、ＲＡＭ９１４を用いて、算出したｎ１個の因子Ｒｘを表わすデータを記憶する。【０１９８】
追跡行第二因子算出部４４２は、暗号文生成装置２００の暗号行第二因子算出部２４２に相当する。追跡行第二因子算出部４４２は、ＣＰＵ９１１を用いて、目標決定部４２１が決定した整数ｉと、追跡鍵ＴＫに含まれる因子ｇ４及びｎ１個の乱数ｒｘと、因子ｈ（追跡鍵ＴＫに含まれる因子ｇ３及びｇ４から算出してもよいし、公開鍵ＰＫから取得してもよい。）と、追跡行乱数生成部４３２が生成したｎ１個の乱数ｓｘと、撹乱行乱数生成部４３４が生成したｉ−１個の乱数ｖｘ，１とに基づいて、拡大体Ｋ上におけるヤコビ多様体ＪａｃＣのｎ１個の因子Ｒ〜ｘを算出する。
インデックスｘが整数ｉより大きい場合、追跡行第二因子算出部４４２は、ＣＰＵ９１１を用いて、因子Ｒ〜ｘ＝ｓｘｒｘ・ｇ４（ただし、ｘはｉ＋１以上ｎ１以下の整数。）を算出する。すなわち、追跡行第二因子算出部４４２は、ＣＰＵ９１１を用いて、因子ｇ４をｓｘ掛けるｒｘ回加算した因子を算出し、因子Ｒ〜ｘとする。
インデックスｘが整数ｉと等しい場合、追跡行第二因子算出部４４２は、ＣＰＵ９１１を用いて、因子Ｒ〜ｘ＝ｓｘｒｘ・ｈ（ただし、ｘ＝ｉ。）を算出する。すなわち、追跡行第二因子算出部４４２は、ＣＰＵ９１１を用いて、因子ｈをｓｘ掛けるｒｘ回加算した因子を算出し、因子Ｒ〜ｘとする。
インデックスｘが整数ｉより小さい場合、追跡行第二因子算出部４４２は、ＣＰＵ９１１を用いて、因子Ｒ〜ｘ＝ｖｘ，１・ｈ（ただし、ｘは１以上ｉ−１以下の整数。）を算出する。すなわち、追跡行第二因子算出部４４２は、ＣＰＵ９１１を用いて、因子ｈをｖｘ，１回加算した因子を算出し、因子Ｒ〜ｘとする。
いずれの場合も、因子Ｒ〜ｘは、有限生成因子群Ｇに含まれる。
追跡行第二因子算出部４４２は、ＲＡＭ９１４を用いて、算出したｎ１個の因子Ｒ〜ｘを表わすデータを記憶する。【０１９９】
追跡行第三因子算出部４４３は、暗号文生成装置２００の暗号行第三因子算出部２４３に相当する。追跡行第三因子算出部４４３は、ＣＰＵ９１１を用いて、目標決定部４２１が決定した整数ｉと、追跡鍵ＴＫに含まれる因子ｇ２と、追跡共通乱数生成部４３１が生成した乱数ｔと、追跡行乱数生成部４３２が生成したｎ１個の乱数ｓｘと、撹乱行乱数生成部４３４が生成したｉ−１個の乱数ｖｘ，２とに基づいて、拡大体Ｋ上におけるヤコビ多様体ＪａｃＣのｎ１個の因子Ａｘを算出する。
インデックスｘが整数ｉより大きい場合、追跡行第三因子算出部４４３は、ＣＰＵ９１１を用いて、因子Ａｘ＝ｓｘｔ・ｇ２（ただし、ｘはｉ＋１以上ｎ１以下の整数。）を算出する。すなわち、追跡行第三因子算出部４４３は、ＣＰＵ９１１を用いて、因子ｇ２をｓｘ掛けるｔ回加算した因子を算出し、因子Ａｘとする。
インデックスｘが整数ｉと等しい場合、追跡行第三因子算出部４４３は、ＣＰＵ９１１を用いて、因子Ａｘ＝ｓｘｔ・ｇ（ただし、ｘ＝ｉ。）を算出する。すなわち、追跡行第三因子算出部４４３は、ＣＰＵ９１１を用いて、因子ｇをｓｘ掛けるｔ回加算した因子を算出し、因子Ａｘとする。
インデックスｘが整数ｉより小さい場合、追跡行第三因子算出部４４３は、ＣＰＵ９１１を用いて、因子Ａｘ＝ｖｘ，２・ｇ（ただし、ｘは１以上ｉ−１以下の整数。）を算出する。すなわち、追跡行第三因子算出部４４３は、ＣＰＵ９１１を用いて、因子ｇをｖｘ，２回加算した因子を算出し、因子Ａｘとする。
いずれの場合も、因子Ａｘは、有限生成因子群Ｇに含まれる。
追跡行第三因子算出部４４３は、ＲＡＭ９１４を用いて、算出したｎ１個の因子Ｒ〜ｘを表わすデータを記憶する。【０２００】
追跡暗号鍵算出部４４４は、暗号文生成装置２００の暗号鍵算出部２４４に相当する。追跡暗号鍵算出部４４４は、ＣＰＵ９１１を用いて、目標決定部４２１が決定した整数ｉと、追跡鍵ＴＫに含まれる因子ｇ２とｎ１個の乱数αｘと、因子ｇと、追跡共通乱数生成部４３１が生成した乱数ｔと、追跡行乱数生成部４３２が生成したｎ１個の乱数ｓｘと、撹乱行乱数生成部４３４が生成したｉ−１個の乱数ｖｘ，３とに基づいて、ｎ１個のペアリング値ＣＫｘを算出する。
インデックスｘが整数ｉより大きい場合、追跡暗号鍵算出部４４４は、ＣＰＵ９１１を用いて、ペアリング値ＣＫｘ＝ｅ（ｇ２，ｇ）αｘｓｘｔ（ただし、ｘはｉ＋１以上ｎ１以下の整数。）を算出する。すなわち、追跡暗号鍵算出部４４４は、ＣＰＵ９１１を用いて、因子ｇ２と因子ｇとのペアリング値をαｘ掛けるｓｘ掛けるｔ回乗算したペアリング値を算出し、ペアリング値ＣＫｘとする。
インデックスｘが整数ｉと等しい場合、追跡暗号鍵算出部４４４は、ＣＰＵ９１１を用いて、ペアリング値ＣＫｘ＝ｅ（ｇ，ｇ）αｘｓｘｔ（ただし、ｘ＝ｉ。）を算出する。すなわち、追跡暗号鍵算出部４４４は、ＣＰＵ９１１を用いて、因子ｇと因子ｇとのペアリング値をαｘ掛けるｓｘ掛けるｔ回乗算したペアリング値を算出し、ペアリング値ＣＫｘとする。
インデックスｘが整数ｉより小さい場合、追跡暗号鍵算出部４４４は、ＣＰＵ９１１を用いて、ペアリング値ＣＫｘ＝ｅ（ｇ，ｇ）ｖｘ，３（ただし、ｘは１以上ｉ−１以下の整数。）を算出する。すなわち、追跡暗号鍵算出部４４４は、ＣＰＵ９１１を用いて、因子ｇと因子ｇとのペアリング値をｖｘ，３回乗算したペアリング値を算出し、ペアリング値ＣＫｘとする。
追跡暗号鍵算出部４４４は、ＲＡＭ９１４を用いて、算出したｎ１個のペアリング値ＣＫｘを表わすデータを記憶する。【０２０１】
追跡平文暗号化部４４５は、暗号文生成装置２００の平文暗号化部２４５に相当する。追跡平文暗号化部４４５は、ＣＰＵ９１１を用いて、追跡平文生成部４２２が記憶した平文Ｍを表わすデータと、追跡暗号鍵算出部４４４が記憶したｎ１個のペアリング値ＣＫｘを表わすデータとを入力する。追跡平文暗号化部４４５は、ＣＰＵ９１１を用いて、入力したデータが表わす平文Ｍと、ｎ１個のペアリング値ＣＫｘとに基づいて、ｎ１個のペアリング値ＣＫｘそれぞれを暗号鍵として使用して平文Ｍを暗号化して、ｎ１個の暗号文Ｂｘ（ただし、ｘは１以上ｎ１以下の整数。）を生成する。例えば、平文暗号化部２４５は、ＣＰＵ９１１を用いて、平文Ｍをペアリング値とみなし、ペアリング値Ｍとペアリング値ＣＫｘとを乗算したペアリング値Ｍ・ＣＫｘを算出して、暗号文Ｂｘとする。平文暗号化部２４５は、ＲＡＭ９１４を用いて、生成したｎ１個の暗号文Ｂｘを記憶する。【０２０２】
追跡列暗号文生成部４５０は、追跡列第一因子算出部４５１、追跡列第二因子算出部４５２を有する。【０２０３】
追跡列第一因子算出部４５１は、暗号文生成装置２００の暗号列第一因子算出部２５１に相当する。追跡列第一因子算出部４５１は、ＣＰＵ９１１を用いて、目標決定部４２１が決定した整数ｊと、追跡鍵ＴＫに含まれる因子ｇ１及びｎ２個の乱数ｃｙと、因子ｇと、因子ｈと、追跡共通乱数生成部４３１が生成した乱数ｔと、追跡列乱数生成部４３３が生成したｎ２個の乱数ｗｙと、撹乱列乱数生成部４３５が生成したｊ−１個の乱数ｚｐ，ｙとに基づいて、拡大体Ｋ上におけるヤコビ多様体ＪａｃＣのｎ２個の因子Ｃｙを算出する。
インデックスｙが整数ｊ以上の場合、追跡列第一因子算出部４５１は、ＣＰＵ９１１を用いて、因子Ｃｙ＝ｔｃｙ・ｇ＋ｗｙ・ｈ（ただし、ｙはｊ以上ｎ２以下の整数。）を算出する。すなわち、追跡列第一因子算出部４５１は、ＣＰＵ９１１を用いて、因子ｇをｔ掛けるｃｙ回加算した因子と、因子ｈをｗｙ回加算した因子とを加算した因子を算出して、因子Ｃｙとする。
インデックスｙが整数ｊ未満の場合、追跡列第一因子算出部４５１は、ＣＰＵ９１１を用いて、因子Ｃｙ＝ｔｃｙ・ｇ＋ｚｐ，ｙ・ｇ１＋ｗｙ・ｈ（ただし、ｙは１以上ｊ−１以下の整数。）を算出する。すなわち、追跡列第一因子算出部４５１は、ＣＰＵ９１１を用いて、因子ｇをｔ掛けるｃｙ回加算した因子と、因子ｇ１をｚｐ，ｙ回加算した因子と、因子ｈをｗｙ回加算した因子とを加算した因子を算出して、因子Ｃｙとする。
いずれの場合も、因子Ｃｙは、有限生成因子群Ｇに含まれる。
追跡列第一因子算出部４５１は、ＲＡＭ９１４を用いて、算出したｎ２個の因子Ｃｙを表わすデータを記憶する。【０２０４】
追跡列第二因子算出部４５２は、暗号文生成装置２００の暗号列第二因子算出部２５２に相当する。追跡列第二因子算出部４５２は、ＣＰＵ９１１を用いて、追跡列乱数生成部４３３が算出したｎ２個の乱数ｗｙと、因子ｇとに基づいて、拡大体Ｋ上におけるヤコビ多様体ＪａｃＣのｎ２個の因子Ｃ〜ｙ＝ｗｙ・ｇを算出する。すなわち、追跡列第二因子算出部４５２は、ＣＰＵ９１１を用いて、因子ｇをｗｙ回加算した因子を算出して、因子Ｃ〜ｙとする。因子Ｃ〜ｙは、有限生成因子群Ｇに含まれる。追跡列第二因子算出部４５２は、ＲＡＭ９１４を用いて、算出したｎ２個の因子Ｃ〜ｙを表わすデータを記憶する。【０２０５】
以上のようにして算出した複数の因子や暗号文に基づいて、行暗号文設定部４６１が行暗号文ＣＴｘを設定し、列暗号文設定部４６２が列暗号文ＣＴｙを設定して、暗号文出力部４６３が追跡用の暗号文ＣＴを出力する。【０２０６】
暗号文出力部４６３が出力する追跡用の暗号文ＣＴは、インデックスｘがｉより大きい個人鍵Ｋｘ，ｙを使用して復号すると、インデックスｙの値に関わらず、追跡平文生成部４２２が生成した平文Ｍと同じ復号文Ｍ’を得る。また、インデックスｘがｉより小さい個人鍵Ｋｘ，ｙを使用して復号すると、インデックスｙの値に関わらす、追跡平文生成部４２２が生成した平文Ｍと無関係の復号文Ｍ’を得る。インデックスｘがｉと等しい個人鍵Ｋｘ，ｙを使用して復号すると、インデックスｙがｊ以上であれば、追跡平文生成部４２２が生成した平文Ｍと同じ復号文Ｍ’を得るが、インデックスｙがｊ未満であれば、追跡平文生成部４２２が生成した平文Ｍと無関係の復号文Ｍ’を得る。【０２０７】
したがって、暗号文出力部４６３が出力した追跡用の暗号文ＣＴを不正な暗号文復号装置３００ｚに入力し、復号した結果得られる復号文Ｍ’を解析すれば、不正な暗号文復号装置３００ｚが使用している個人鍵Ｋｘ，ｙの漏洩元を判別できる。【０２０８】
以上のような不正者追跡装置４００が個人鍵の漏洩元を判別するためには、不正な暗号文復号装置３００ｚが、通常の暗号文ＣＴと追跡用の暗号文ＣＴとを区別できないことが必要である。もし仮に、不正な暗号文復号装置３００ｚが、通常の暗号文ＣＴと追跡用の暗号文ＣＴとを区別できたとすると、追跡用の暗号文ＣＴを入力したと不正な暗号文復号装置３００ｚが判別したとき、復号文Ｍ’を出力しないように（あるいは、ランダムな復号文Ｍ’を出力するように）構成すれば、不正者追跡装置４００が個人鍵の漏洩元を判別するための手がかりを得ることができなくなる。【０２０９】
ここで、暗号文ＣＴと追跡用の暗号文ＣＴとの違いは、因子Ｒｘ，Ｒ〜ｘ，Ａｘなどが、因子ｇ２や因子ｇ４の整数倍か、因子ｇや因子ｈの整数倍かである。ｇ２やｇ４の整数倍である因子は、因子ｇ１や因子ｇ３（あるいはその整数倍の因子）とのペアリング値が１になるので、因子ｇ１や因子ｇ３（あるいはその整数倍の因子）とのペアリング値を算出できれば、暗号文ＣＴと追跡用の暗号文ＣＴとの違いを判別できる。しかし、因子ｇ１や因子ｇ３（あるいはその整数倍の因子）は、公開されていないし、公開鍵ＰＫに含まれる因子などから算出することも、実質的に不可能である。したがって、ペアリング値を算出することにより、暗号文ＣＴと追跡用の暗号文ＣＴとの違いを判別することはできない。【０２１０】
また、因子ｇ２や因子ｇ４の整数倍である因子も、因子ｇや因子ｈの整数倍である因子も、位数はｒであり、等しい。すなわち、因子の位数を求めても、暗号文ＣＴと追跡用の暗号文ＣＴとの違いを判別することはできない。【０２１１】
したがって、不正な暗号文復号装置３００ｚは、通常の暗号文ＣＴと追跡用の暗号文ＣＴとを区別できず、不正者追跡装置４００は、個人鍵の漏洩元を判別することができる。【０２１２】
この実施の形態における暗号パラメータ設定装置１００は、
データを処理する処理装置（ＣＰＵ９１１）と、ランダム因子選択部１２２と、基底因子生成部１２３と、ペアリング対数算出部１２５と、パラメータ設定部１４０とを有する。
上記ランダム因子選択部１２２は、上記処理装置（ＣＰＵ９１１）を用いて、ランダム因子Ｄ＊として、巡回群Ｇ’（有限体Ｆｐ上における超楕円曲線Ｃのヤコビ多様体ＪａｃＣがなす群の部分群）の複数の要素のなかから要素を選択する。
上記基底因子生成部１２３は、上記処理装置（ＣＰＵ９１１）を用いて、上記ランダム因子選択部１２２が選択したランダム因子Ｄ＊に基づいて、複数の写像Ｇｊ（ガウス和作用素Ｇｊ）（ただし、上記複数の写像Ｇｊは上記巡回群Ｇ’から複数の巡回群Ｇ’ｊそれぞれへの準同型写像。）により上記ランダム因子Ｄ＊を写像して、複数の基底因子Ｄ〜ｊを算出する。
上記ペアリング対数算出部１２５は、上記処理装置（ＣＰＵ９１１）を用いて、群Ｇ（有限生成因子群Ｇ）（ただし、上記群Ｇは上記複数の巡回群Ｇ’ｊの直積で、上記群Ｇに含まれる二つの要素の間の双線形ペアリング演算によるペアリング値を計算可能。）における上記複数の基底因子Ｄ〜ｊの間のペアリング値の対数を算出して、複数のペアリング対数係数ηｉとする。
上記パラメータ設定部１４０は、上記処理装置（ＣＰＵ９１１）を用いて、上記基底因子生成部１２３が算出した複数の基底因子Ｄ〜ｊと、上記ペアリング対数算出部１２５が算出した複数のペアリング対数係数ηｉとを、暗号演算に用いられる暗号パラメータとする。【０２１３】
この実施の形態における暗号パラメータ設定装置１００によれば、高度な暗号方式を実現するために利用できる群構造を有する群Ｇを構成するために必要な具体的な暗号パラメータを算出できるという効果を奏する。【０２１４】
この実施の形態におけるランダム因子選択部１２２は、上記処理装置（ＣＰＵ９１１）を用いて、ランダム因子Ｄ＊として、有限体Ｆｐ上における代数曲線Ｃ（超楕円曲線Ｃ）のヤコビ多様体ＪａｃＣの因子がなす群の部分群である巡回群Ｇ’の複数の要素のなかから要素を選択する。
上記基底因子生成部１２３は、上記処理装置（ＣＰＵ９１１）を用いて、上記有限体Ｆｐを有限代数拡大した拡大体Ｋ上における代数曲線Ｃ（超楕円曲線Ｃ）のヤコビ多様体ＪａｃＣの因子がなす群における複数の自己準同型写像（ガウス和作用素Ｇｊ）を上記複数の写像Ｇｊとして、上記複数の基底因子Ｄ〜ｊを算出する。【０２１５】
この実施の形態における暗号パラメータ設定装置１００によれば、高度な暗号方式を実現するために利用できる群構造を有する群Ｇを構成するために必要な具体的な暗号パラメータを算出できるという効果を奏する。【０２１６】
この実施の形態における暗号パラメータ設定装置１００は、データを処理する処理装置（ＣＰＵ９１１）と、ランダム因子選択部１２２と、基底因子生成部１２３と、離散対数算出部１２４と、ペアリング対数算出部１２５と、パラメータ設定部１４０とを有する。
上記ランダム因子選択部１２２は、上記処理装置（ＣＰＵ９１１）を用いて、有限体Ｆｐ上における種数ｄの代数曲線Ｃ（超楕円曲線Ｃ）（ただし、上記有限体Ｆｐの位数ｐは素数。上記種数ｄは２以上の整数。）のヤコビ多様体ＪａｃＣの複数の因子のなかから、ランダム因子Ｄ＊を選択する。
上記基底因子生成部１２３は、上記処理装置（ＣＰＵ９１１）を用いて、上記ランダム因子選択部１２２が選択したランダム因子Ｄ＊に基づいて、複数の基底因子Ｄ〜ｊを算出する。
上記離散対数算出部１２４は、上記処理装置（ＣＰＵ９１１）を用いて、複数の離散対数ｌκを算出する。
上記ペアリング対数算出部１２５は、上記処理装置（ＣＰＵ９１１）を用いて、上記離散対数算出部１２４が算出した複数の離散対数ｌκに基づいて、複数のペアリング対数係数ηｉを算出する。
上記パラメータ設定部１４０は、上記処理装置（ＣＰＵ９１１）を用いて、上記基底因子生成部１２３が算出した複数の基底因子Ｄ〜ｊと、上記ペアリング対数算出部１２５が算出した複数のペアリング対数係数ηｉとに基づいて、暗号演算に用いられる暗号パラメータを設定する。【０２１７】
ここで、有限生成因子群Ｇの群構造は、２ｄ個の位数ｒの巡回群の直積である。すなわち、有限生成因子群Ｇは、位数ｒの剰余群を成分とする２ｄ次元のベクトル空間である。
このような有限生成因子群Ｇの群構造を利用することにより、高度な暗号方式が実現可能になる。そのような高度な暗号方式を実現するためには、具体的な暗号パラメータや鍵の値を多項式時間内に算出できることが必要である。【０２１８】
この実施の形態における暗号パラメータ設定装置１００によれば、上記のような高度な暗号方式を実現するために利用できる群構造を有する有限生成因子群Ｇを構成するために必要な具体的な暗号パラメータを、多項式時間内に算出することができるという効果を奏する。【０２１９】
この実施の形態におけるランダム因子選択部１２２は、上記処理装置（ＣＰＵ９１１）を用いて、有限体Ｆｐ上における超楕円曲線Ｃ：Ｙ２＝Ｘｗ＋１（ただし、ｗは素数で、ｗ＝２ｄ＋１。上記位数ｐを上記素数ｗで割った余りａは位数がｗの有限体Ｆｗの乗法群Ｆｗ＊の生成元。）のヤコビ多様体ＪａｃＣの複数の因子のなかから、ランダム因子Ｄ＊を選択する。
上記基底因子生成部１２３は、上記処理装置（ＣＰＵ９１１）を用いて、上記ランダム因子選択部１２２が選択したランダム因子Ｄ＊に基づいて、上記ランダム因子Ｄ＊にガウス和作用素Ｇｊ（ただし、ｊは０以上２ｄ−１以下の整数。上記ガウス和作用素Ｇｊは数１７に示す拡大体Ｋ上におけるヤコビ多様体ＪａｃＣ上の作用。上記拡大体Ｋは上記有限体Ｆｐを２ｄ次拡大した代数拡大体。ζは１のｗ乗根。）を作用させて、複数の基底因子Ｄ〜ｊ＝Ｇｊ（Ｄ＊）を算出する。
上記離散対数算出部１２４は、上記処理装置（ＣＰＵ９１１）を用いて、上記余りａに基づいて、数１８を満たす複数の離散対数ｌκ（ただし、κは１以上２ｄ−１の整数。上記複数の離散対数ｌκは０以上２ｄ−１以下の整数。）を算出する。
上記ペアリング対数算出部１２５は、上記処理装置（ＣＰＵ９１１）を用いて、上記離散対数算出部１２４が算出した複数の離散対数ｌκに基づいて、数１９に示す計算式を計算して、複数のペアリング対数係数ηｉ（ただし、ｉは０以上２ｄ−１以下の整数。上記複数のペアリング対数係数ηｉは０以上ｒ−１以下の整数。ｒは上記ランダム因子Ｄ＊の位数。）を算出する。【０２２０】
【数１７】
2009090750.tif 000019
【０２２１】
ただし、ρは上記拡大体Ｋ上における超楕円曲線Ｃ上の作用（ｘ，ｙ）→（ζｘ，ｙ）に対応する上記ヤコビ多様体ＪａｃＣ上の作用。ζは、１のｗ乗根。【０２２２】
【数１８】
2009090750.tif 000020
【０２２３】
【数１９】
2009090750.tif 000021
【０２２４】
この実施の形態における暗号パラメータ設定装置１００によれば、上記のような数式を具体的に計算することにより、高度な暗号方式を実現するために利用できる群構造を有する有限生成因子群Ｇを構成するために必要な具体的な暗号パラメータを、多項式時間内に算出することができるという効果を奏する。【０２２５】
この実施の形態における鍵生成装置５００は、データを処理する処理装置（ＣＰＵ９１１）と、データを記憶する記憶装置（ＲＯＭ９１３、磁気ディスク装置９２０など）と、基底因子記憶部５１１と、ペアリング対数記憶部５１２と、出力基底算出部１４３と、鍵算出部１５０とを有する。
上記基底因子記憶部５１１は、上記記憶装置（ＲＯＭ９１３）を用いて、複数の基底因子Ｄ〜ｊとして、群Ｇ（有限生成因子群Ｇ）の複数の要素（ただし、上記群Ｇは位数が同じ複数の巡回群の直積で、上記群Ｇに含まれる二つの要素の間の双線形ペアリング演算によるペアリング値を計算可能。上記複数の基底因子Ｄ〜ｊは互いに一次独立。）を記憶する。
上記ペアリング対数記憶部５１２は、上記記憶装置（ＲＯＭ９１３）を用いて、複数のペアリング対数係数ηｉとして、上記複数の基底因子Ｄ〜ｊの間のペアリング値の対数を記憶する。
上記出力基底算出部１４３は、上記処理装置（ＣＰＵ９１１）を用いて、上記基底因子記憶部５１１が記憶した複数の基底因子Ｄ〜ｊと、上記ペアリング対数記憶部５１２が記憶した複数のペアリング対数係数ηｉとに基づいて、上記群Ｇ（有限生成因子群Ｇ）の要素である複数の出力基底ｇｋ（ただし、上記複数の出力基底ｇｋのうち少なくともいずれか二つの出力基底ｇｋの間のペアリング値が１。）を算出する。
上記鍵算出部１５０は、上記処理装置（ＣＰＵ９１１）を用いて、上記出力基底算出部１４３が算出した複数の出力基底ｇｋに基づいて、暗号演算に用いられる鍵を算出する。【０２２６】
この実施の形態における鍵生成装置５００によれば、少なくともいずれか二つの出力基底ｇｋの間のペアリング値が１である複数の出力基底ｇｋに基づいて、暗号演算に用いられる鍵を算出するので、ｅ（ｇｋ１，ｇｋ２）＝１である二つの出力基底のうち一方の出力基底ｇｋ１とのペアリング演算を、他方の出力基底ｇｋ２にかかる成分を消去する射影作用素として利用することができ、この射影作用素を用いた高度な暗号方式を実現することができるという効果を奏する。【０２２７】
この実施の形態における鍵生成装置５００は、更に、ランダム行列選択部１４２を有する。
上記ランダム行列選択部１４２は、上記処理装置（ＣＰＵ９１１）を用いて、上記ペアリング対数記憶部５１２が記憶した複数のペアリング対数係数ηｉに基づいて、関係式Ｍ’＝Ｖ・Ｍ・ＶＴ（ただし、Ｍ’はｍ’μνをμ行ν列成分とするｂ次の正方行列。ｂは上記出力基底算出部１４３が算出する複数の出力基底ｇｋの数。Ｖは０以上ｒ−１以下の整数を値にとる変数ｃμνをμ行ν列成分とするｂ行ｆ列の行列。ｒは上記複数の巡回群の位数。ｆは上記基底因子記憶部５１１が記憶した複数の基底因子Ｄ〜ｊの数。Ｍは上記ペアリング対数記憶部５１２が記憶したペアリング対数係数ηｉのうち基底因子Ｄ〜μと基底因子Ｄ〜νとの間のペアリング対数係数ηｉをμ行ν列成分とするｆ次の正方行列。ＶＴは上記行列Ｖを転置したｆ行ｂ列の行列。）においてｍ’ｕｖ＝０（ただし、ｕ及びｖは１以上ｂ以下の所定の整数。）となる複数の行列Ｖのなかから、ランダム行列Ｖ＊をランダムに選択する。
上記出力基底算出部１４３は、上記処理装置（ＣＰＵ９１１）を用いて、上記基底因子記憶部５１１が記憶した複数の基底因子Ｄ〜ｊと、上記ランダム行列選択部１４２が選択したランダム行列Ｖ＊とに基づいて、上記複数の出力基底ｇｋ＝ｖｋ・Ｄ〜（ただし、ｋは１以上ｂ以下の整数。ｖｋは上記ランダム行列Ｖ＊の第ｋ行ベクトル。Ｄ〜は上記複数の基底因子Ｄ〜ｊをｊ＋１行目の成分とするｆ次の縦ベクトル。）を算出する。【０２２８】
この実施の形態における鍵生成装置５００によれば、関係式Ｍ’＝Ｖ・Ｍ・ＶＴにおいてｍ’ｕｖ＝０となるランダム行列Ｖ＊をランダムに選択し、選択したランダム行列Ｖ＊に基づいて、複数の出力基底ｇｋ＝ｖｋ・Ｄ〜を算出するので、出力基底ｇｕと出力基底ｇｖとの間のペアリング値ｅ（ｇｕ，ｇｖ）が１である複数の出力基底ｇｋを算出できるという効果を奏する。また、複数の基底因子Ｄ〜ｊと複数の出力基底ｇｋとの間の関係にはランダムな要素であるランダム行列Ｖ＊が介在するので、ランダム行列Ｖ＊を知らない暗号システム８００の利用者は、複数の出力基底ｇｋを推測することができず、複数の出力基底ｇｋを秘密鍵に利用することができるという効果を奏する。【０２２９】
この実施の形態における基底因子記憶部５１１は、上記記憶装置（ＲＯＭ９１３）を用いて、上記複数の基底因子Ｄ〜ｊとして、有限体Ｆｐを有限代数拡大した拡大体Ｋ上における代数曲線Ｃのヤコビ多様体ＪａｃＣの複数の因子がなす群の部分群である群Ｇ（有限生成因子群Ｇ）の複数の要素を記憶する。
この実施の形態における鍵生成装置５００によれば、複数の基底因子Ｄ〜ｊとして有限体Ｆｐを有限代数拡大した拡大体Ｋ上における代数曲線Ｃのヤコビ多様体ＪａｃＣの複数の因子がなす群の部分群である有限生成因子群Ｇの複数の要素を使用するので、コンピュータが、因子の加算やペアリング演算などの演算をすることができるという効果を奏する。【０２３０】
この実施の形態における鍵生成装置５００は、データを処理する処理装置（ＣＰＵ９１１）と、データを記憶する記憶装置（ＲＯＭ９１３、磁気ディスク装置９２０など）と、基底因子記憶部５１１と、ペアリング対数記憶部５１２と、ランダム行列選択部１４２と、出力基底算出部１４３と、鍵算出部１５０とを有する。
上記基底因子記憶部５１１は、上記記憶装置（ＲＯＭ９１３）を用いて、上記暗号パラメータ設定装置１００が算出した複数の基底因子Ｄ〜ｊを記憶する。
上記ペアリング対数記憶部５１２は、上記記憶装置（ＲＯＭ９１３）を用いて、上記暗号パラメータ設定装置１００が算出した複数のペアリング対数係数ηｉを記憶する。
上記ランダム行列選択部１４２は、上記処理装置（ＣＰＵ９１１）を用いて、複数の整数ｍ’μν（μ及びνは、１以上ｂ以下の整数。ｂは２以上２ｄ以下の整数。）が満たすべき所定の条件に基づいて、関係式：Ｍ’＝Ｖ・Ｍ・ＶＴ（ただし、Ｍ’は整数ｍ’μνをμ行ν列成分とするｂ次の正方行列。Ｖは０以上ｒ−１以下のいずれかの整数を値とする変数ｃμνをμ行ν列成分とするｂ行２ｄ列の行列。ＶＴは上記行列Ｖを転置した２ｄ行ｂ列の正方行列。Ｍは、整数ｍμνをμ行ν列成分とする２ｄ次の正方行列。上記整数ｍμνは、μ＋ν＝２ｄ＋１のときην＋１、μ＋ν≠２ｄ＋１のとき０。）を満たす複数の行列Ｖのなかから、ランダム行列Ｖ＊をランダムに選択する。
上記出力基底算出部１４３は、上記処理装置（ＣＰＵ９１１）を用いて、上記暗号パラメータ記憶部５１０が記憶した複数の基底因子Ｄ〜ｊと、上記ランダム行列選択部１４２が選択したランダム行列Ｖ＊とに基づいて、複数の出力基底ｇｋ＝ｖｋ・Ｄ〜（ただし、ｋは１以上ｂ以下の整数。ｇｋは上記拡大体Ｋ上におけるヤコビ多様体ＪａｃＣの因子。ｖｋは上記ランダム行列Ｖ＊の第ｋ行ベクトル。Ｄ〜は上記複数の基底因子Ｄ〜ｊをｊ＋１行目の成分とする２ｄ次の縦ベクトル。）を算出する。【０２３１】
この実施の形態における鍵生成装置５００によれば、上記条件を満たす行列Ｖのなかからランダム行列選択部１４２が選択したランダム行列Ｖ＊に基づいて、出力基底算出部１４３が出力基底ｇｋを算出するので、出力基底ｇｋ間のペアリング値が所望の値になる出力基底ｇｋを算出することができる。これにより、上記のような高度な暗号方式を実現するために利用できる群構造を有する有限生成因子群Ｇを構成し、構成した有限生成因子群Ｇを利用した具体的な鍵の値を、多項式時間内に算出することができるという効果を奏する。【０２３２】
この実施の形態における鍵生成装置５００は、更に、一致条件入力部（条件入力部１４１）を有する。
上記一致条件入力部（条件入力部１４１）は、上記処理装置（ＣＰＵ９１１）を用いて、上記複数の出力基底ｇｋのうち、出力基底ｇμと出力基底ｇνとのペアリング値ｅ（ｇμ，ｇν）が１になるべき出力基底の組を示す整数の組（μ，ν）を入力する。
上記ランダム行列選択部１４２は、上記処理装置（ＣＰＵ９１１）を用いて、上記一致条件入力部（条件入力部１４１）が入力した整数の組（μ，ν）に基づいて、条件：ｍ’μν＝０を満たすランダム行列Ｖ＊を選択する。【０２３３】
この実施の形態における鍵生成装置５００によれば、上記条件を満たす行列Ｖのなかからランダム行列選択部１４２が選択したランダム行列Ｖ＊に基づいて、出力基底算出部１４３が出力基底ｇｋを算出するので、２つの出力基底ｇｋの間のペアリング値が１になる出力基底ｇｋを算出することができる。これにより、上記のような高度な暗号方式を実現するためにに利用できる群構造を有する有限生成因子群Ｇを構成し、構成した有限生成因子群Ｇを利用した具体的な鍵の値を、多項式時間内に算出することができるという効果を奏する。【０２３４】
この実施の形態における鍵生成装置５００は、更に、不一致条件入力部（条件入力部１４１）を有する。
上記不一致条件入力部（条件入力部１４１）は、上記処理装置（ＣＰＵ９１１）を用いて、上記複数の出力基底ｇｋのうち、出力基底ｇμと出力基底ｇνとのペアリング値ｅ（ｇμ，ｇν）が１になるべきでない出力基底の組を示す整数の組（μ，ν）を入力する。
上記ランダム行列選択部１４２は、上記処理装置を用いて、上記不一致条件入力部（条件入力部１４１）が入力した整数の組（μ，ν）に基づいて、条件ｍ’μν≠０を満たすランダム行列Ｖ＊を選択する。【０２３５】
この実施の形態における鍵生成装置５００によれば、上記条件を満たす行列Ｖのなかからランダム行列選択部１４２が選択したランダム行列Ｖ＊に基づいて、出力基底算出部１４３が出力基底ｇｋを算出するので、２つの出力基底ｇｋの間のペアリング値が１以外になる出力基底ｇｋを算出することができる。これにより、上記のような高度な暗号方式を実現するためにに利用できる群構造を有する有限生成因子群Ｇを構成し、構成した有限生成因子群Ｇを利用した具体的な鍵の値を、多項式時間内に算出することができるという効果を奏する。【０２３６】
この実施の形態における暗号システム８００は、暗号パラメータ設定装置１００と、鍵生成装置５００とを有する。
上記基底因子記憶部５１１は、上記記憶装置（ＲＯＭ９１３）を用いて、上記暗号パラメータ設定装置１００が算出した複数の基底因子Ｄ〜ｊを記憶する。
上記ペアリング対数記憶部５１２は、上記記憶装置（ＲＯＭ９１３）を用いて、上記暗号パラメータ設定装置１００が算出した複数のペアリング対数係数ηｉを記憶する。
この実施の形態における暗号システム８００によれば、暗号パラメータ設定装置１００が算出した具体的な複数の基底因子Ｄ〜ｊと複数のペアリング対数係数ηｉの値を使用して、鍵生成装置５００が鍵を生成するので、高度な暗号方式を実現するために必要な鍵の具体的な値を計算することができるという効果を奏する。【０２３７】
この実施の形態における暗号システム８００は、更に、暗号文生成装置２００と、暗号文復号装置３００とを有する。
上記暗号文生成装置２００は、上記暗号パラメータ設定装置１００が設定した暗号パラメータと、上記鍵生成装置５００が生成した鍵とに基づいて、暗号文を生成する。
上記暗号文復号装置３００は、上記暗号パラメータ設定装置１００が設定した暗号パラメータと、上記鍵生成装置５００が生成した鍵に基づいて、上記暗号文生成装置２００が生成した暗号文を復号する。【０２３８】
この実施の形態における暗号システム８００によれば、暗号パラメータ設定装置１００が設定した暗号パラメータに基づいて、上記のような高度な暗号方式を実現するために利用できる群構造を有する有限生成因子群Ｇを鍵生成装置５００が構成し、構成した有限生成因子群Ｇを利用した具体的な鍵の値を算出し、鍵生成装置５００が生成した鍵を用いて、暗号文生成装置２００が暗号文を生成し、暗号文生成装置２００が生成した暗号文を暗号文復号装置３００が復号するので、有限生成因子群Ｇの群構造を利用した高度な暗号方式を実現することができるという効果を奏する。【０２３９】
この実施の形態における暗号システム８００は、複数の暗号文復号装置３００ａ〜３００ｃを有し、更に、不正者追跡装置４００を有する。
上記鍵生成装置５００は、更に、公開鍵設定部１９１と、個人鍵設定部１９２と、追跡鍵設定部１９３とを有する。
上記公開鍵設定部１９１は、上記暗号文生成装置２００が暗号文を生成するために用いる公開鍵ＰＫを設定する。
上記個人鍵設定部１９２は、上記暗号文生成装置２００が生成した暗号文ＣＴを上記複数の暗号文復号装置３００ａ〜３００ｃそれぞれが復号するために用いる複数の個人鍵ＳＫｘ，ｙを設定する。
上記追跡鍵設定部１９３は、上記不正者追跡装置４００が個人鍵ＳＫｘ，ｙの漏洩元を判別するために用いる追跡鍵ＴＫを設定する。
上記暗号文生成装置２００は、上記鍵生成装置５００が設定した公開鍵ＰＫに基づいて、暗号文ＣＴを生成する。
上記複数の暗号文復号装置３００ａ〜３００ｃは、それぞれ、上記鍵生成装置５００が設定した複数の個人鍵ＳＫｘ，ｙのうち、上記暗号文復号装置３００ａ〜３００ｃの利用者に対応する個人鍵ＳＫｘ，ｙに基づいて、上記暗号文生成装置２００が生成した暗号文ＣＴを復号する。
上記不正者追跡装置４００は、上記鍵生成装置５００が設定した追跡鍵ＴＫに基づいて、暗号文ＣＴを生成し、生成した暗号文ＣＴを、上記暗号文生成装置２００が生成した暗号文ＣＴを復号する海賊復号装置（不正な暗号文復号装置３００ｚ）が復号した結果（復号文Ｍ’）を解析して、上記海賊復号装置が暗号文の復号に用いた個人鍵ＳＫｘ，ｙを判別する。【０２４０】
この実施の形態における暗号システム８００によれば、有限生成因子群Ｇの群構造を利用して、個人鍵の漏洩元を判別する高度な暗号方式を実現することができるという効果を奏する。【０２４１】
この実施の形態におけるランダム因子選択部１２２は、上記処理装置（ＣＰＵ９１１）を用いて、有限体Ｆｐ上における超楕円曲線Ｃ：Ｙ２＝Ｘ５＋１（ただし、素数ｐを５で割った余りａは２または３。）のヤコビ多様体ＪａｃＣの複数の因子のなかから、ランダム因子Ｄ＊を選択する。
ランダム行列選択部１４２は、上記処理装置（ＣＰＵ９１１）を用いて、条件：ｍ’１２＝ｍ’２１＝ｍ’３４＝ｍ’４３＝ｍ’１４＝ｍ’４１＝ｍ’２３＝ｍ’３２＝０，ｍ’１１≠０，ｍ’２２≠０，ｍ’３３≠０，ｍ’４４≠０を満たす４行４列のランダム行列Ｖ＊を選択する。
上記出力基底算出部１４３は、上記処理装置（ＣＰＵ９１１）を用いて、上記基底因子記憶部５１１が記憶した複数の基底因子Ｄ〜ｊと、上記ランダム行列選択部１４２が算出したランダム行列Ｖ＊とに基づいて、四つの出力基底ｇｋ＝ｖｋ・Ｄ〜（ただし、ｋは１以上４以下の整数。）を算出する。
上記鍵算出部１５０は、利用者人数入力部１５１と、公開行基底算出部１７１と、公開列基底算出部１７２と、行乱数生成部１６１と、列乱数生成部１６３と、ペアリング乱数生成部１６２と、共通乱数生成部１６４と、公開共通因子算出部１７３と、公開行第一因子算出部１７４と、公開行第二因子算出部１７５と、公開ペアリング値算出部１７６と、公開列因子算出部１７７と、公開鍵設定部１９１と、個人因子算出部１８１と、個人鍵設定部１９２とを有する。
上記利用者人数入力部１５１は、上記処理装置（ＣＰＵ９１１）を用いて、利用者の数ｎを表わす整数ｎ１及び整数ｎ２（ただし、ｎ＝ｎ１ｎ２）を入力する。
上記公開行基底算出部１７１は、上記処理装置（ＣＰＵ９１１）を用いて、上記出力基底算出部１４３が算出した出力基底ｇ１と出力基底ｇ２とに基づいて、上記ヤコビ多様体ＪａｃＣの因子ｇ＝ｇ１＋ｇ２を算出する。
上記公開列基底算出部１７２は、上記処理装置（ＣＰＵ９１１）を用いて、上記出力基底算出部１４３が算出した出力基底ｇ３と出力基底ｇ４とに基づいて、上記ヤコビ多様体ＪａｃＣの因子ｈ＝ｇ３＋ｇ４を算出する。
上記行乱数生成部１６１は、上記処理装置（ＣＰＵ９１１）を用いて、上記利用者人数入力部１５１が入力した整数ｎ１に基づいて、ｎ１個の乱数ｒｘ（ただし、ｘは１以上ｎ１以下の整数。乱数ｒｘは１以上ｒ−１以下の整数。）をランダムに生成する。
上記列乱数生成部１６３は、上記処理装置（ＣＰＵ９１１）を用いて、上記利用者人数入力部１５１が入力した整数ｎ２に基づいて、ｎ２個の乱数ｃｙ（ただし、ｙは１以上ｎ２以下の整数。乱数ｃｙは１以上ｒ−１以下の整数。）をランダムに生成する。
上記ペアリング乱数生成部１６２は、上記処理装置（ＣＰＵ９１１）を用いて、上記利用者人数入力部１５１が入力した整数ｎ１に基づいて、ｎ１個の乱数αｘ（ただし、ｘは１以上ｎ１以下の整数。乱数αｘは１以上ｒ−１以下の整数。）をランダムに生成する。
上記共通乱数生成部１６４は、上記処理装置（ＣＰＵ９１１）を用いて、乱数β（ただし、βは１以上ｒ−１以下の整数。）をランダムに生成する。
上記公開共通因子算出部１７３は、上記処理装置（ＣＰＵ９１１）を用いて、上記出力基底算出部１４３が算出した出力基底ｇ２と、上記共通乱数生成部１６４が生成した乱数βとに基づいて、上記ヤコビ多様体ＪａｃＣの因子Ｅ＝β・ｇ２を算出する。
上記公開行第一因子算出部１７４は、上記処理装置（ＣＰＵ９１１）を用いて、上記出力基底算出部１４３が算出した出力基底ｇ２と、上記行乱数生成部１６１が生成したｎ１個の乱数ｒｘと、上記共通乱数生成部１６４が生成した乱数βとに基づいて、上記ヤコビ多様体ＪａｃＣのｎ１個の因子Ｅｘ＝β・ｒｘ・ｇ２（ただし、ｘは１以上ｎ１以下の整数。）を算出する。
上記公開行第二因子算出部１７５は、上記処理装置（ＣＰＵ９１１）を用いて、上記出力基底算出部１４３が算出した出力基底ｇ４と、上記行乱数生成部１６１が生成したｎ１個の乱数ｒｘと、上記共通乱数生成部１６４が生成した乱数βとに基づいて、上記ヤコビ多様体ＪａｃＣのｎ１個の因子Ｆｘ＝β・ｒｘ・ｇ４（ただし、ｘは１以上ｍ以下の整数。）を算出する。
上記公開ペアリング値算出部１７６は、上記処理装置（ＣＰＵ９１１）を用いて、上記出力基底算出部１４３が算出した出力基底ｇ２と、上記ペアリング乱数生成部１６２が生成したｎ１個の乱数αｘと、上記共通乱数生成部１６４が生成した乱数βとに基づいて、ｎ１個のペアリング値Ｇｘ＝ｅ（ｇ４，ｇ４）β・αｘ（ただし、ペアリングｅはｅ（Ｄ，Ｄ’）＝ｅＷ（Ｄ，φ（Ｄ’））。ｅＷはヴェイユペアリング。φは上記ヤコビ多様体ＪａｃＣ上における計算可能な準同型写像。）を算出する。
上記公開列因子算出部１７７は、上記処理装置（ＣＰＵ９１１）を用いて、上記公開行基底算出部１７１が算出した因子ｇと、上記列乱数生成部１６３が生成した乱数ｃｙとに基づいて、上記ヤコビ多様体ＪａｃＣのｎ２個の因子Ｈｙ＝ｃｙ・ｇ（ただし、ｙは１以上ｎ２以下の整数。）を算出する。
上記公開鍵設定部１９１は、上記処理装置（ＣＰＵ９１１）を用いて、上記公開行基底算出部１７１が算出した因子ｇと、上記公開列基底算出部１７２が算出した因子ｈと、上記公開共通因子算出部１７３が算出した因子Ｅと、上記公開行第一因子算出部１７４が算出したｎ１個の因子Ｅｘと、上記公開行第二因子算出部１７５が算出したｎ１個の因子Ｆｘと、上記公開ペアリング値算出部１７６が算出したｎ１個のペアリング値Ｇｘと、上記公開列因子算出部１７７が算出したｎ２個の因子Ｈｙとに基づいて、公開鍵ＰＫ＝（ｇ，ｈ，Ｅ，Ｅｘ，Ｆｘ，Ｇｘ，Ｈｙ）（ただし、ｘは１以上ｎ１以下の整数。ｙは１以上ｎ２以下の整数。）を設定する。
上記個人因子算出部１８１は、上記処理装置（ＣＰＵ９１１）を用いて、上記公開行基底算出部１７１が算出した因子ｇと、上記行乱数生成部１６１が生成したｎ１個の乱数ｒｘと、上記列乱数生成部１６３が生成したｎ２個の乱数ｃｙと、上記ペアリング乱数生成部１６２が生成したｎ１個の乱数αｘとに基づいて、ｎ個の因子Ｋｘ，ｙ＝αｘ・ｇ＋ｒｘｃｙ・ｇ（ただし、ｘは１以上ｎ１以下の整数。ｙは１以上ｎ２以下の整数。）を算出する。
上記個人鍵設定部１９２は、上記処理装置（ＣＰＵ９１１）を用いて、上記個人因子算出部１８１が算出したｎ個の因子Ｋｘ，ｙに基づいて、ｎ人の利用者にそれぞれ対応するｎ個の個人鍵ＳＫｘ，ｙ＝（Ｋｘ，ｙ）を設定する。【０２４２】
この実施の形態における暗号文生成装置２００は、データを処理する処理装置（ＣＰＵ９１１）と、公開鍵入力部２１１と、平文入力部２２１と、暗号共通乱数生成部２３１と、暗号列乱数生成部２３３と、暗号行乱数生成部２３２と、暗号行第一因子算出部２４１と、暗号行第二因子算出部２４２と、暗号行第三因子算出部２４３と、暗号鍵算出部２４４と、平文暗号化部２４５と、行暗号文設定部２６１と、暗号列第一因子算出部２５１と、暗号列第二因子算出部２５２と、列暗号文設定部２６２とを有する。
上記公開鍵入力部２１１は、上記処理装置（ＣＰＵ９１１）を用いて、上記鍵生成装置５００が設定した公開鍵ＰＫ＝（ｇ，ｈ，Ｅ，Ｅｘ，Ｆｘ，Ｇｘ，Ｈｙ）を入力する。
上記平文入力部２２１は、上記処理装置（ＣＰＵ９１１）を用いて、暗号化する平文Ｍを入力する。
上記暗号共通乱数生成部２３１は、上記処理装置（ＣＰＵ９１１）を用いて、乱数ｔ（ただし、乱数ｔは１以上ｒ以下の整数。）をランダムに生成する。
上記暗号列乱数生成部２３３は、上記処理装置（ＣＰＵ９１１）を用いて、ｎ２個以下の乱数ｗｙ（ただし、ｙは１以上ｎ２以下の整数。乱数ｗｙは１以上ｒ−１以下の整数。）を生成する。
上記暗号行乱数生成部２３２は、上記処理装置（ＣＰＵ９１１）を用いて、ｎ１個以下の乱数ｓｘ（ただし、ｘは１以上ｎ１以下の整数。乱数ｓｘは１以上ｒ−１以下の整数。）を生成する。
上記暗号行第一因子算出部２４１は、上記処理装置（ＣＰＵ９１１）を用いて、上記公開鍵入力部２１１が入力した公開鍵ＰＫに含まれるｎ１個の因子Ｅｘと、上記暗号行乱数生成部２３２が生成したｎ１個以下の乱数ｓｘとに基づいて、ヤコビ多様体ＪａｃＣのｎ１個以下の因子Ｒｘ＝ｓｘ・Ｅｘ（ただし、ｘは１以上ｎ１以下の整数。）を算出する。
上記暗号行第二因子算出部２４２は、上記処理装置（ＣＰＵ９１１）を用いて、上記公開鍵入力部２１１が入力した公開鍵ＰＫに含まれるｎ１個の因子Ｆｘと、上記暗号行乱数生成部２３２が生成したｎ１個以下の乱数ｓｘとに基づいて、ヤコビ多様体ＪａｃＣのｎ１個以下の因子Ｒ〜ｘ＝ｓｘ・Ｆｘ（ただし、ｘは１以上ｎ１以下の整数。）を算出する。
上記暗号行第三因子算出部２４３は、上記処理装置（ＣＰＵ９１１）を用いて、上記公開鍵入力部２１１が入力した公開鍵ＰＫに含まれる因子Ｅと、上記暗号共通乱数生成部２３１が生成した乱数ｔと、上記暗号行乱数生成部２３２が生成したｎ１個以下の乱数ｓｘとに基づいて、ヤコビ多様体ＪａｃＣのｎ１個以下の因子Ａｘ＝ｓｘｔ・Ｅ（ただし、ｘは１以上ｎ１以下の整数。）を算出する。
上記暗号鍵算出部２４４は、上記処理装置（ＣＰＵ９１１）を用いて、上記公開鍵入力部２１１が入力した公開鍵ＰＫに含まれるｎ１個のペアリング値Ｇｘと、上記暗号共通乱数生成部２３１が生成した乱数ｔと、上記暗号行乱数生成部２３２が生成したｎ１個以下の乱数ｓｘとに基づいて、ｎ１個以下のペアリング値ＣＫｘ＝Ｇｘｓｘｔ（ただし、ｘは１以上ｎ１以下の整数。）を算出する。
上記平文暗号化部２４５は、上記処理装置（ＣＰＵ９１１）を用いて、上記平文入力部２２１が入力した平文Ｍと、上記暗号鍵算出部２４４が算出したｎ１個以下のペアリング値ＣＫｘとに基づいて、上記ｎ１個以下のペアリング値ＣＫｘをそれぞれ暗号鍵として使用して上記平文Ｍを暗号化して、ｎ１個以下の暗号文Ｂｘ（ただし、ｘは１以上ｎ１以下の整数。）を生成する。
上記行暗号文設定部２６１は、上記処理装置（ＣＰＵ９１１）を用いて、上記暗号行第一因子算出部２４１が算出したｎ１個以下の因子Ｒｘと、上記暗号行第二因子算出部２４２が算出したｎ１個以下の因子Ｒ〜ｘと、上記暗号行第三因子算出部２４３が算出したｎ１個以下の因子Ａｘと、上記平文暗号化部２４５が生成したｎ１個以下の暗号文Ｂｘとに基づいて、ｎ１個以下の行暗号文ＣＴｘ＝（Ｒｘ，Ｒ〜ｘ，Ａｘ，Ｂｘ）（ただし、ｘは１以上ｎ１以下の整数。）を設定する。
上記暗号列第一因子算出部２５１は、上記処理装置（ＣＰＵ９１１）を用いて、上記公開鍵入力部２１１が入力した公開鍵ＰＫに含まれる因子ｈ及び因子Ｈｙと、上記暗号共通乱数生成部２３１が生成した乱数ｔと、上記暗号列乱数生成部２３３が生成した乱数ｗｙとに基づいて、ヤコビ多様体ＪａｃＣのｎ２個以下の因子Ｃｙ＝ｔ・Ｈｙ＋ｗｙ・ｈ（ただし、ｙは１以上ｎ２以下の整数。）を算出する。
上記暗号列第二因子算出部２５２は、上記処理装置（ＣＰＵ９１１）を用いて、上記公開鍵入力部２１１が入力した公開鍵ＰＫに含まれる因子ｇと、上記暗号列乱数生成部２３３が生成した乱数ｗｙとに基づいて、ヤコビ多様体ＪａｃＣのｎ２個以下の因子Ｃ〜ｙ＝ｗｙ・ｇ（ただし、ｙは１以上ｎ２以下の整数。）を算出する。
上記列暗号文設定部２６２は、上記処理装置（ＣＰＵ９１１）を用いて、上記暗号列第一因子算出部２５１が算出したｎ２個以下の因子Ｃｙと、上記暗号列第二因子算出部２５２が算出したｎ２個以下の因子Ｃ〜ｙとに基づいて、ｎ２個以下の列暗号文ＣＴｙ＝（Ｃｙ，Ｃ〜ｙ）（ただし、ｙは１以上ｎ２以下の整数。）を設定する。【０２４３】
この実施の形態における暗号文復号装置３００は、データを記憶する記憶装置と、データを処理する処理装置（ＣＰＵ９１１）と、個人鍵記憶部３３１と、行暗号文入力部３２２と、列暗号文入力部３２３と、復号鍵算出部３４１と、暗号文復号部３４２とを有する。
上記個人鍵記憶部３３１は、上記記憶装置を用いて、上記鍵生成装置５００が設定したｎ個の個人鍵ＳＫｘ，ｙのうち、上記暗号文復号装置３００の利用者に対応する所定のインデックスＸ及びＹ（ただし、Ｘは１以上ｎ１以下の整数。Ｙは１以上ｎ２以下の整数。）に対応する個人鍵ＳＫＸ，Ｙ＝（ＫＸ，Ｙ）を記憶する。
上記行暗号文入力部３２２は、上記処理装置（ＣＰＵ９１１）を用いて、上記暗号文生成装置２００が設定したｎ１個以下の行暗号文ＣＴｘのうち、上記インデックスＸに対応する行暗号文ＣＴＸ＝（ＲＸ，Ｒ〜Ｘ，ＡＸ，ＢＸ）を入力する。
上記列暗号文入力部３２３は、上記処理装置（ＣＰＵ９１１）を用いて、上記暗号文生成装置２００が設定したｎ２個以下の列暗号文ＣＴｙのうち、上記インデックスＹに対応する列暗号文ＣＴＹ＝（ＣＹ，Ｃ〜Ｙ）を入力する。
上記復号鍵算出部３４１は、上記処理装置（ＣＰＵ９１１）を用いて、上記個人鍵記憶部３３１が記憶した個人鍵ＳＫＸ，Ｙと、上記行暗号文入力部３２２が入力した行暗号文ＣＴＸに含まれる因子ＲＸ及び因子Ｒ〜Ｘ及び因子ＡＸと、上記列暗号文入力部３２３が入力した列暗号文ＣＴＹに含まれる因子ＣＹ及び因子Ｃ〜Ｙとに基づいて、ペアリング値ＣＫ’＝ｅ（ＫＸ，Ｙ，ＡＸ）・ｅ（Ｒ〜Ｘ,Ｃ〜Ｙ）／ｅ（ＣＹ，ＲＸ）を算出する。
上記暗号文復号部３４２は、上記処理装置（ＣＰＵ９１１）を用いて、上記行暗号文入力部３２２が入力した行暗号文ＣＴＸに含まれる暗号文ＢＸと、上記復号鍵算出部３４１が算出したペアリング値ＣＫ’とに基づいて、上記ペアリング値ＣＫ’を復号鍵として使用して上記暗号文ＢＸを復号して、復号文Ｍ’を生成する。【０２４４】
この実施の形態における暗号システム８００によれば、有限生成因子群Ｇの群構造を利用して、ｎ人の利用者に対して一つの平文Ｍを暗号化して送る暗号文ＣＴを、（３ｎ１＋２ｎ２）個のヤコビ多様体ＪａｃＣの因子と、４ｎ１個の暗号文Ｂｘとにより構成する暗号方式を実現できるという効果を奏する。【０２４５】
この実施の形態における暗号システム８００は、複数の暗号文復号装置３００ａ〜３００ｃを有し、更に、不正者追跡装置４００を有する。
上記鍵算出部１５０は、更に、追跡鍵設定部１９３を有する。
上記追跡鍵設定部１９３は、上記処理装置（ＣＰＵ９１１）を用いて、上記出力基底算出部１４３が算出した四つの出力基底ｇｋと、上記行乱数生成部１６１が生成したｎ１個の乱数ｒｘと、上記ペアリング乱数生成部１６２が生成したｎ１個の乱数αｘと、上記列乱数生成部１６３が生成したｎ２個の乱数ｃｙとに基づいて、追跡鍵ＴＫ＝（ｇｋ，ｒｘ，αｘ，ｃｙ）（ただし、ｋは１以上４以下の整数。ｘは１以上ｎ１以下の整数。ｙは１以上ｎ２以下の整数。）を設定する。
上記不正者追跡装置４００は、データを記憶する記憶装置と、データを処理する処理装置（ＣＰＵ９１１）と、追跡鍵記憶部４１１と、目標決定部４２１と、追跡平文生成部４２２と、追跡共通乱数生成部４３１と、追跡列乱数生成部４３３と、追跡行乱数生成部４３２と、撹乱行乱数生成部４３４と、撹乱列乱数生成部４３５と、追跡行第一因子算出部４４１と、追跡行第二因子算出部４４２と、追跡行第三因子算出部４４３と、追跡暗号鍵算出部４４４と、追跡平文暗号化部４４５と、追跡行暗号文設定部（行暗号文設定部４６１）と、追跡列第一因子算出部４５１と、追跡列第二因子算出部４５２と、追跡列暗号文設定部（列暗号文設定部４６２）と、復号文入力部４７１と、漏洩元判別部４７２とを有する。
上記追跡鍵記憶部４１１は、上記記憶装置を用いて、鍵生成装置５００が設定した追跡鍵ＴＫ＝（ｇｋ，ｒｘ，αｘ，ｃｙ）を記憶する。
上記目標決定部４２１は、上記処理装置（ＣＰＵ９１１）を用いて、上記インデックスｘを三つのグループに分類し、上記処理装置（ＣＰＵ９１１）を用いて、上記インデックスｙを二つのグループに分類する。
上記追跡平文生成部４２２は、上記処理装置（ＣＰＵ９１１）を用いて、平文Ｍを生成する。
上記追跡共通乱数生成部４３１は、上記処理装置（ＣＰＵ９１１）を用いて、乱数ｔ（ただし、乱数ｔは１以上ｒ以下の整数。）をランダムに生成する。
上記追跡列乱数生成部４３３は、上記処理装置（ＣＰＵ９１１）を用いて、ｎ２個以下の乱数ｗｙ（ただし、ｙは１以上ｎ２以下の整数。乱数ｗｙは１以上ｒ−１以下の整数。）をランダムに生成する。
上記追跡行乱数生成部４３２は、上記処理装置（ＣＰＵ９１１）を用いて、ｎ１個以下の乱数ｓｘ（ただし、ｘは１以上ｎ１以下の整数。乱数ｓｘは１以上ｒ−１以下の整数。）をランダムに生成する。
上記撹乱行乱数生成部４３４は、上記処理装置（ＣＰＵ９１１）を用いて、ｎ１個以下の乱数ｖｘ，１（ただし、ｘは１以上ｎ１以下の整数。乱数ｖｘ，１は１以上ｒ−１以下の整数。）と、ｎ１個以下の乱数ｖｘ，２（ただし、ｘは１以上ｎ１以下の整数。乱数ｖｘ，２は１以上ｒ−１以下の整数。）と、ｎ１個以下の乱数ｖｘ，３（ただし、ｘは１以上ｎ１以下の整数。乱数ｖｘ，３は１以上ｒ−１以下の整数。）とをランダムに生成する。
上記撹乱列乱数生成部４３５は、上記処理装置（ＣＰＵ９１１）を用いて、ｎ２個以下の乱数ｚｐ，ｙ（ただし、ｙは１以上ｎ２以下の整数。乱数ｚｐ，ｙは１以上ｒ−１以下の整数。）を生成する。
上記追跡行第一因子算出部４４１は、上記処理装置（ＣＰＵ９１１）を用いて、上記追跡鍵記憶部４１１が記憶した追跡鍵ＴＫに含まれる因子ｇ１及び因子ｇ２及びｎ１個の乱数ｒｘと、上記目標決定部４２１がインデックスｘを分類した三つのグループと、上記追跡行乱数生成部４３２が生成したｎ１個以下の乱数ｓｘと、上記撹乱行乱数生成部４３４が生成したｎ１個以下の乱数ｖｘ，１とに基づいて、上記三つのグループのうち第一のグループに属するインデックスｘについて、因子Ｒｘ＝ｓｘｒｘ・ｇ２（ただし、ｘは１以上ｎ１以下の整数。）を算出し、上記三つのグループのうち第二のグループに属するインデックスｘについて、因子Ｒｘ＝ｓｘｒｘ・（ｇ１＋ｇ２）（ただし、ｘは１以上ｎ１以下の整数。）を算出し、上記三つのグループのうち第三のグループに属するインデックスｘについて、因子Ｒｘ＝ｖｘ，１・（ｇ１＋ｇ２）（ただし、ｘは１以上ｎ１以下の整数。）を算出する。
上記追跡行第二因子算出部４４２は、上記処理装置（ＣＰＵ９１１）を用いて、上記追跡鍵記憶部４１１が記憶した追跡鍵ＴＫに含まれる因子ｇ３及び因子ｇ４及びｎ１個の乱数ｒｘと、上記目標決定部４２１がインデックスｘを分類した三つのグループと、上記追跡行乱数生成部４３２が生成したｎ１個以下の乱数ｓｘと、上記撹乱行乱数生成部４３４が生成したｎ１個以下の乱数ｖｘ，１とに基づいて、上記三つのグループのうち第一のグループに属するインデックスｘについて、因子Ｒ〜ｘ＝ｓｘｒｘ・ｇ４（ただし、ｘは１以上ｎ１以下の整数。）を算出し、上記三つのグループのうち第二のグループに属するインデックスｘについて、因子Ｒ〜ｘ＝ｓｘｒｘ・（ｇ３＋ｇ４）（ただし、ｘは１以上ｎ１以下の整数。）を算出し、上記三つのグループのうち第三のグループに属するインデックスｘについて、因子Ｒ〜ｘ＝ｖｘ，１・（ｇ３＋ｇ４）（ただし、ｘは１以上ｎ１以下の整数。）を算出する。
上記追跡行第三因子算出部４４３は、上記処理装置（ＣＰＵ９１１）を用いて、上記追跡鍵記憶部４１１が記憶した追跡鍵ＴＫに含まれる因子ｇ１及び因子ｇ２と、上記目標決定部４２１がインデックスｘを分類した三つのグループと、上記追跡共通乱数生成部４３１が生成した乱数ｔと、上記追跡行乱数生成部４３２が生成したｎ１個以下の乱数ｓｘと、上記撹乱行乱数生成部４３４が生成したｎ１個以下の乱数ｖｘ，２とに基づいて、上記三つのグループのうち第一のグループに属するインデックスｘについて、因子Ａｘ＝ｓｘｔ・ｇ２（ただし、ｘは１以上ｎ１以下の整数。）を算出し、上記三つのグループのうち第二のグループに属するインデックスｘについて、因子Ａｘ＝ｓｘｔ・（ｇ１＋ｇ２）（ただし、ｘは１以上ｎ１以下の整数。）を算出し、上記三つのグループのうち第三のグループに属するインデックスｘについて、因子Ａｘ＝ｖｘ，２・（ｇ１＋ｇ２）（ただし、ｘは１以上ｎ１以下の整数。）を算出する。
上記追跡暗号鍵算出部４４４は、上記処理装置（ＣＰＵ９１１）を用いて、上記追跡鍵記憶部４１１が記憶した追跡鍵ＴＫに含まれる因子ｇ１及び因子ｇ２及びｎ１個の乱数αｘと、上記目標決定部４２１がインデックスｘを分類した三つのグループと、上記追跡行乱数生成部４３２が生成したｎ１個以下の乱数ｓｘと、上記撹乱行乱数生成部４３４が生成したｎ１個以下の乱数ｖｘ，３とに基づいて、上記三つのグループのうち第一のグループに属するインデックスｘについて、ペアリング値ＣＫｘ＝ｅ（ｇ２，ｇ２）αｘｓｘｔ（ただし、ｘは１以上ｎ１以下の整数。）を算出し、上記三つのグループのうち第二のグループに属するインデックスｘについて、ペアリング値ＣＫｘ＝ｅ（ｇ１＋ｇ２，ｇ１＋ｇ２）αｘｓｘｔ（ただし、ｘは１以上ｎ１以下の整数。）を算出し、上記三つのグループのうち第三のグループに属するインデックスｘについて、ペアリング値ＣＫｘ＝ｅ（ｇ１＋ｇ２，ｇ１＋ｇ２）ｖｘ，２（ただし、ｘは１以上ｎ１以下の整数。）を算出する。
上記追跡平文暗号化部４４５は、上記処理装置（ＣＰＵ９１１）を用いて、上記追跡暗号鍵算出部４４４が算出したｎ１個以下のペアリング値ＣＫｘと、上記追跡平文生成部４２２が生成した平文Ｍとに基づいて、上記ｎ１個以下のペアリング値ＣＫｘをそれぞれ暗号鍵として使用して上記平文Ｍを暗号化して、ｎ１個以下の暗号文Ｂｘ（ただし、ｘは１以上ｎ１以下の整数。）を生成する。
上記追跡行暗号文設定部（行暗号文設定部４６１）は、上記処理装置（ＣＰＵ９１１）を用いて、上記追跡行第一因子算出部４４１が算出したｎ１個以下の因子Ｒｘと、上記追跡行第二因子算出部４４２が算出したｎ１個以下の因子Ｒ〜ｘと、上記追跡行第三因子算出部４４３が算出したｎ１個以下の因子Ａｘと、上記追跡平文暗号化部４４５が生成したｎ１個以下の暗号文Ｂｘとに基づいて、ｎ１個以下の行暗号文ＣＴｘ＝（Ｒｘ，Ｒ〜ｘ，Ａｘ，Ｂｘ）（ただし、ｘは１以上ｎ１以下の整数。）を設定する。
上記追跡列第一因子算出部４５１は、上記処理装置（ＣＰＵ９１１）を用いて、上記追跡鍵記憶部４１１が記憶した追跡鍵ＴＫに含まれる因子ｇ１及び因子ｇ２及び因子ｇ３及び因子ｇ４及びｎ２個の乱数ｃｙと、上記目標決定部４２１がインデックスｙを分類した二つのグループと、上記追跡共通乱数生成部４３１が生成した乱数ｔと、上記追跡列乱数生成部４３３が生成したｎ２個以下の乱数ｗｙと、上記撹乱列乱数生成部４３５が生成したｎ２個以下の乱数ｚｐ，ｙとに基づいて、上記二つのグループのうち第一のグループに属するインデックスｙについて、因子Ｃｙ＝ｔｃｙ・（ｇ１＋ｇ２）＋ｗｙ・（ｇ３＋ｇ４）（ただし、ｙは１以上ｎ２以下の整数。）を算出し、上記二つのグループのうち第二のグループに属するインデックスｙについて、因子Ｃｙ＝ｔｃｙ・（ｇ３＋ｇ４）＋ｚｐ，ｙ・ｇ１＋ｗｙ・（ｇ３＋ｇ４）（ただし、ｙは１以上ｎ２以下の整数。）を算出する。
上記追跡列第二因子算出部４５２は、上記処理装置（ＣＰＵ９１１）を用いて、追跡鍵記憶部４１１が記憶した追跡鍵ＴＫに含まれる因子ｇ１及び因子ｇ２と、上記追跡列乱数生成部４３３が生成したｎ２個以下の乱数ｗｙとに基づいて、ｎ２個以下の因子Ｃ〜ｙ＝ｗｙ・（ｇ１＋ｇ２）（ただし、ｙは１以上ｎ２以下の整数。）を算出する。
上記追跡列暗号文設定部（列暗号文設定部４６２）は、上記処理装置（ＣＰＵ９１１）を用いて、上記追跡列第一因子算出部４５１が算出したｎ２個以下の因子Ｃｙと、上記追跡列第二因子算出部４５２が算出したｎ２個以下の因子Ｃ〜ｙとに基づいて、ｎ２個以下の列暗号文ＣＴｙ＝（Ｃｙ，Ｃ〜ｙ）（ただし、ｙは１以上ｎ２以下の整数。）を設定する。
上記復号文入力部４７１は、上記処理装置（ＣＰＵ９１１）を用いて、上記暗号文生成装置２００が生成した暗号文を復号する海賊復号装置（不正な暗号文復号装置３００ｚ）が、上記追跡行暗号文設定部（行暗号文設定部４６１）が設定したｎ１個以下の行暗号文ＣＴｘと、上記追跡列暗号文設定部（列暗号文設定部４６２）が設定したｎ２個以下の列暗号文ＣＴｙとを含む暗号文ＣＴを復号して生成した復号文Ｍ’を入力する。
上記漏洩元判別部４７２は、上記処理装置（ＣＰＵ９１１）を用いて、上記追跡平文生成部４２２が生成した平文Ｍと、上記復号文入力部４７１が入力した復号文Ｍ’とを比較して、上記海賊復号装置（不正な暗号文復号装置３００ｚ）が復号に使用した個人鍵Ｋｘ，ｙを判別する。【０２４６】
この実施の形態における暗号システム８００によれば、有限生成因子群Ｇの群構造を利用して、漏洩した個人鍵Ｋｘ，ｙを不正に利用する海賊復号装置を解析して、個人鍵の漏洩元を判別できる高度な暗号方式を実現できるという効果を奏する。【０２４７】
この実施の形態における暗号パラメータ設定装置１００あるいは鍵生成装置５００は、データを処理する処理装置を有するコンピュータを上記暗号パラメータ設定装置１００あるいは鍵生成装置５００として機能させるプログラムを、コンピュータが実行することにより実現できる。【０２４８】
この実施の形態におけるプログラムによれば、上記のような高度な暗号方式を実現するために利用できる群構造を有する有限生成因子群Ｇを構成するために必要な具体的な暗号パラメータを、多項式時間内に算出することができる暗号パラメータ設定装置を実現できるという効果を奏する。【０２４９】
この実施の形態におけるプログラムによれば、上記のような高度な暗号方式を実現するために利用できる群構造を有する有限生成因子群Ｇを構成し、構成した有限生成因子群Ｇを利用した具体的な鍵の値を、多項式時間内に算出することができる鍵生成装置を実現できるという効果を奏する。【０２５０】
この実施の形態における暗号パラメータ設定装置１００が、暗号演算に用いられる暗号パラメータを設定する暗号パラメータ設定方法は、以下の工程を有することを特徴とする。
上記処理装置（ＣＰＵ９１１）が、ランダム因子Ｄ＊として、巡回群Ｇ’（有限体Ｆｐ上における代数曲線Ｃのヤコビ多様体ＪａｃＣの因子がなす群の部分群）の複数の要素のなかから要素を選択する。
上記処理装置（ＣＰＵ９１１）が、選択したランダム因子Ｄ＊に基づいて、複数の写像Ｇｊ（ガウス和作用素Ｇｊ）（ただし、上記複数の写像Ｇｊは上記巡回群Ｇ’から複数の巡回群Ｇ’ｊそれぞれへの準同型写像。）により上記ランダム因子Ｄ＊を写像して、複数の基底因子Ｄ〜ｊを算出する。
上記処理装置（ＣＰＵ９１１）が、群Ｇ（有限生成因子群Ｇ）（ただし、上記群Ｇは上記複数の巡回群Ｇ’ｊの直積で、上記群Ｇに含まれる二つの要素の間の双線形ペアリング演算によるペアリング値を計算可能。）における上記複数の基底因子Ｄ〜ｊの間のペアリング値の対数を算出して、複数のペアリング対数係数ηｉとする。
上記処理装置（ＣＰＵ９１１）が、算出した複数の基底因子Ｄ〜ｊと、算出した複数のペアリング対数係数ηｉとを、上記暗号パラメータとする。【０２５１】
この実施の形態における暗号パラメータ設定装置１００によれば、高度な暗号方式を実現するために利用できる群構造を有する群Ｇを構成するために必要な具体的な暗号パラメータを算出できるという効果を奏する。【０２５２】
この実施の形態における暗号パラメータ設定装置１００が、暗号演算に用いられる暗号パラメータを設定する暗号パラメータ設定方法は、以下の工程を有することを特徴とする。
上記処理装置（ＣＰＵ９１１）が、有限体Ｆｐ上における種数ｄの超楕円曲線Ｃ（ただし、上記有限体Ｆｐの位数ｐは素数。上記種数ｄは２以上の整数。）のヤコビ多様体ＪａｃＣの複数の因子のなかから、ランダム因子Ｄ＊をランダムに選択する。
上記処理装置（ＣＰＵ９１１）が、選択したランダム因子Ｄ＊に基づいて、複数の基底因子Ｄ〜ｊを算出する。
上記処理装置（ＣＰＵ９１１）が、複数の離散対数ｌκ（ただし、κは１以上２ｄ−１以下の整数。離散対数ｌκは０以上２ｄ−１以下の整数。）を算出する。
上記処理装置（ＣＰＵ９１１）が、算出した複数の離散対数ｌκに基づいて、複数のペアリング対数係数ηｉ（ただし、ｉは０以上２ｄ−１以下の整数。ペアリング対数係数ηｉは０以上ｒ−１以下の整数。ｒは上記ヤコビ多様体ＪａｃＣの複数の因子の位数。）を算出する。
上記処理装置（ＣＰＵ９１１）が、算出した複数の基底因子Ｄ〜ｊと、算出した複数のペアリング対数係数ηｉとに基づいて、上記暗号パラメータを設定する。【０２５３】
この実施の形態における暗号パラメータ設定方法によれば、高度な暗号方式を実現するために利用できる群構造を有する有限生成因子群Ｇを構成するために必要な具体的な暗号パラメータを、多項式時間内に算出することができるという効果を奏する。【０２５４】
この実施の形態における鍵生成装置５００が、暗号演算に用いられる鍵を生成する鍵生成方法は、以下の工程を有することを特徴とする。
上記記憶装置（ＲＯＭ９１３）が、複数の基底因子Ｄ〜ｊとして、群Ｇ（有限生成因子群Ｇ）の複数の要素（ただし、上記群Ｇは位数が同じ複数の巡回群の直積で、上記群Ｇに含まれる二つの要素の間の双線形ペアリング演算によるペアリング値を計算可能。上記複数の基底因子Ｄ〜ｊは互いに一次独立。）を記憶する。
上記記憶装置（ＲＯＭ９１３）が、複数のペアリング対数係数ηｉとして、上記複数の基底因子Ｄ〜ｊの間のペアリング値の対数を記憶する。
上記処理装置（ＣＰＵ９１１）が、上記記憶装置（ＲＯＭ９１３）が記憶した複数の基底因子Ｄ〜ｊと、上記記憶装置（ＲＯＭ９１３）が記憶した複数のペアリング対数係数ηｉとに基づいて、上記群Ｇの要素である複数の出力基底ｇｋ（ただし、上記複数の出力基底ｇｋのうち少なくともいずれか二つの出力基底ｇｋの間のペアリング値が１。）を算出する。
上記処理装置（ＣＰＵ９１１）が、算出した複数の出力基底に基づいて、上記鍵を算出する。【０２５５】
この実施の形態における鍵生成方法によれば、高度な暗号方式を実現するために利用できる群構造を有する群Ｇを具体的に構成し、構成した群Ｇを利用した具体的な鍵の値を算出できるという効果を奏する。【０２５６】
この実施の形態における鍵生成装置５００が、暗号演算に用いられる鍵を生成する鍵生成方法は、以下の工程を有することを特徴とする。
上記記憶装置（ＲＯＭ９１３）が、有限体Ｆｐを有限代数拡大した拡大体Ｋ上における種数ｄの代数曲線Ｃ（ただし、上記有限体Ｆｐの位数ｐは素数。上記種数ｄは２以上の整数。ｗは素数で、ｗ＝２ｄ＋１。）のヤコビ多様体ＪａｃＣの複数の基底因子Ｄ〜ｊと、上記複数の基底因子の間のペアリング値の関係を表わす複数のペアリング対数係数ηｉとを記憶する。
上記処理装置（ＣＰＵ９１１）が、上記記憶装置が記憶した複数のペアリング対数係数ηｉに基づいて、所定の条件を満たすランダム行列Ｖ＊をランダムに選択する。
上記処理装置（ＣＰＵ９１１）が、上記記憶装置が記憶した複数の基底因子Ｄ〜ｊと、選択したランダム行列Ｖ＊とに基づいて、複数の出力基底ｇｋを算出する。
上記処理装置（ＣＰＵ９１１）が、算出した複数の出力基底ｇｋに基づいて、上記鍵を算出する。【０２５７】
この実施の形態における鍵生成方法によれば、上記のような高度な暗号方式を実現するために利用できる群構造を有する有限生成因子群Ｇを構成し、構成した有限生成因子群Ｇを利用した具体的な鍵の値を、多項式時間内に算出することができるという効果を奏する。【０２５８】
実施の形態２．
実施の形態２について、図１３〜図１９を用いて説明する。
この実施の形態では、ヤコビ多様体ＪａｃＣの因子がなす群の群構造を利用した高度な暗号方式の別の例について説明する。【０２５９】
図１３は、この実施の形態における暗号システム８００Ｂの全体構成の一例を示すシステム構成図である。
暗号システム８００Ｂは、暗号パラメータ設定装置１００、グループ署名システム８２０を有する。
暗号パラメータ設定装置１００は、グループ署名システム８２０でしようする暗号パラメータ（システムパラメータ）を設定する。
なお、暗号パラメータ設定装置１００の詳細については、実施の形態１で説明したものと同様なので、ここでは説明を省略する。【０２６０】
グループ署名システム８２０は、鍵生成装置５００Ｂ、署名鍵発行装置６００、複数の署名装置２００Ｂ、署名検証装置３００Ｂ、署名者追跡装置４００Ｂを有する。
グループ署名システム８２０において、複数の署名装置２００ＢのいずれかがメッセージＭに署名し、署名検証装置３００Ｂが署名σを検証する。グループ署名システム８２０には匿名性があり、署名検証装置３００Ｂにはどの署名装置２００Ｂが署名したかわからない。しかし、署名者追跡装置４００Ｂは、どの署名装置２００Ｂが署名したかを追跡できるので、グループの責任者は、署名者を判別できる。【０２６１】
鍵生成装置５００Ｂは、グループ署名システム８２０で使用する鍵を生成する。鍵生成装置５００Ｂが生成する鍵には、公開鍵ＰＫ、追跡鍵ＴＫ、マスター鍵ＭＫなどがある。
公開鍵ＰＫは、一般に公開される。マスター鍵ＭＫは、署名鍵発行装置６００が秘密裡に保持する。追跡鍵ＴＫは、署名者追跡装置４００Ｂが秘密裡に保持する。【０２６２】
署名鍵発行装置６００は、マスター鍵ＭＫを使用して署名鍵ＳＫを生成する。署名鍵発行装置６００は、グループの責任者が管理し、グループのメンバーとして署名をすることを許す署名装置２００Ｂに対して、生成した署名鍵ＳＫを発行する。署名鍵発行装置６００が発行した署名鍵ＳＫは、署名装置２００Ｂが秘密裡に保持する。
また、署名鍵発行装置６００は、識別子ｓＩＤを生成する。署名鍵発行装置６００が生成した識別子ｓＩＤは、署名鍵ＳＫを識別するためのものであり、署名者追跡装置４００Ｂが秘密裡に保持する。【０２６３】
署名装置２００Ｂは、メッセージＭを入力し、署名鍵ＳＫを使用して署名σを生成する。
署名検証装置３００Ｂは、メッセージＭ及び署名σを入力し、公開鍵ＰＫを使用して署名σを検証する。
署名者追跡装置４００Ｂは、署名σを入力し、追跡鍵ＴＫ及び識別子ｓＩＤを使用して署名者を判別する。【０２６４】
図１４は、この実施の形態における鍵生成装置５００Ｂの機能ブロックの構成の一例を示すブロック構成図である。
なお、実施の形態１で説明した鍵生成装置５００と共通する部分については、同一の符号を付し、ここでは説明を省略する。【０２６５】
出力基底算出部１４３は、ＣＰＵ９１１を用いて、二つの出力基底ｇ１，ｇ２を算出する。
条件記憶部１３０は、一致条件データとして、二つの整数の組（１，２）、（２，１）を表わすデータを記憶し、不一致条件データとして、二つの整数の組（１，１）、（２，２）を表わすデータを記憶している。すなわち、出力基底算出部１４３は、ペアリング値がｅ（ｇ１，ｇ２）＝ｅ（ｇ２，ｇ１）＝１、ｅ（ｇ１，ｇ１）≠１、ｅ（ｇ２，ｇ２）≠１である二の出力基底ｇ１，ｇ２を算出する。【０２６６】
図１５は、この実施の形態における鍵算出部１５０Ｂの内部ブロックの構成の一例を示す詳細ブロック図である。
鍵算出部１５０Ｂは、ビット長入力部１５１Ｂ、乱数生成部１６０Ｂ、公開鍵算出部１７０Ｂ、マスター鍵算出部１８０Ｂ、公開鍵設定部１９１Ｂ、マスター鍵設定部１９２Ｂ、追跡鍵設定部１９３Ｂを有する。【０２６７】
ビット長入力部１５１Ｂは、ＣＰＵ９１１を用いて、ビット長ｍを入力する。ビット長ｍは、あらかじめ定められた署名すべきメッセージＭのビット長を示す。ビット長入力部１５１Ｂは、ＲＡＭ９１４を用いて、入力したビット長を表わすデータを記憶する。【０２６８】
乱数生成部１６０Ｂは、基底乱数生成部１６３Ｂ、ペアリング乱数生成部１６１Ｂ、マスター乱数生成部１６２Ｂを有する。
基底乱数生成部１６３Ｂは、ＣＰＵ９１１を用いて、１以上ｒ−１以下の整数をランダムに選択し、乱数βとする。基底乱数生成部１６３Ｂは、ＲＡＭ９１４を用いて、選択した乱数βを表わすデータを記憶する。
ペアリング乱数生成部１６１Ｂは、ＣＰＵ９１１を用いて、１以上ｒ−１以下の整数をランダムに選択し、乱数αとする。ペアリング乱数生成部１６１Ｂは、ＲＡＭ９１４を用いて、選択した乱数αを表わすデータを記憶する。
マスター乱数生成部１６２Ｂは、ＣＰＵ９１１を用いて、１以上ｒ−１以下の整数をランダムに選択し、乱数ωとする。マスター乱数生成部１６２Ｂは、ＲＡＭ９１４を用いて、選択した乱数ωを表わすデータを記憶する。【０２６９】
公開鍵算出部１７０Ｂは、公開基底算出部１７１Ｂ、公開第一因子算出部１７２Ｂ、公開ペアリング値算出部１７３Ｂ、公開第二因子生成部１７４Ｂ、公開第三因子生成部１７５Ｂ、公開ビット因子生成部１７６Ｂを有する。【０２７０】
公開基底算出部１７１Ｂは、ＣＰＵ９１１を用いて、出力基底算出部１４３が記憶した出力基底ｇ１，ｇ２を表わすデータと、基底乱数生成部１６３Ｂが記憶した乱数βを表わすデータとを入力する。公開基底算出部１７１Ｂは、ＣＰＵ９１１を用いて、入力したデータが表わす出力基底ｇ１，ｇ２と乱数βとに基づいて、拡大体Ｋ上におけるヤコビ多様体ＪａｃＣの因子ｇ＝ｇ２＋β・ｇ１を算出する。すなわち、公開基底算出部１７１Ｂは、ＣＰＵ９１１を用いて、因子ｇ１をβ回加算した因子を算出し、算出した因子と因子ｇ２とを加算した因子を算出して、因子ｇとする。因子ｇは、有限生成因子群Ｇに含まれる。公開基底算出部１７１Ｂは、ＣＰＵ９１１を用いて、算出した因子ｇを表わすデータを記憶する。【０２７１】
公開第一因子算出部１７２Ｂは、ＣＰＵ９１１を用いて、マスター乱数生成部１６２Ｂが記憶した乱数ωを表わすデータと、公開基底算出部１７１Ｂが記憶した因子ｇを表わすデータとを入力する。公開第一因子算出部１７２Ｂは、ＣＰＵ９１１を用いて、入力したデータが表わす乱数ωと因子ｇとに基づいて、拡大体Ｋ上におけるヤコビ多様体ＪａｃＣの因子Ω＝ω・ｇを算出する。すなわち、公開第一因子算出部１７２Ｂは、ＣＰＵ９１１を用いて、因子ｇをω回加算した因子を算出して、因子Ωとする。因子Ωは、有限生成因子群Ｇに含まれる。公開第一因子算出部１７２Ｂは、ＲＡＭ９１４を用いて、算出した因子Ωを表わすデータを記憶する。【０２７２】
公開ペアリング値算出部１７３Ｂは、ＣＰＵ９１１を用いて、ペアリング乱数生成部１６１Ｂが記憶した乱数αを表わすデータと、公開基底算出部１７１Ｂが記憶した因子ｇを表わすデータとを入力する。公開ペアリング値算出部１７３Ｂは、ＣＰＵ９１１を用いて、入力したデータが表わす乱数αと因子ｇとに基づいて、ペアリング値Ａ＝ｅ（ｇ，ｇ）αを算出する。すなわち、公開ペアリング値算出部１７３Ｂは、ＣＰＵ９１１を用いて、因子ｇと因子ｇとのペアリング値をα回乗算したペアリング値を算出して、ペアリング値Ａとする。公開ペアリング値算出部１７３Ｂは、ＲＡＭ９１４を用いて、算出したペアリング値Ａを表わすデータを記憶する。【０２７３】
公開第二因子生成部１７４Ｂは、ＣＰＵ９１１を用いて、有限生成因子群Ｇに含まれる因子のなかからランダムに因子を選択して、因子ｕとする。例えば、公開第二因子生成部１７４Ｂは、ＣＰＵ９１１を用いて、１以上ｒ−１以下の２ｄ個の整数をランダムに選択して２ｄ個の乱数ｕｊ（ただし、ｊは０以上２ｄ−１以下の整数。）とし、暗号パラメータ設定装置１００が設定した暗号パラメータに含まれる２ｄ個の基底因子Ｄ〜ｊと、生成した２ｄ個の乱数とに基づいて、有限生成因子群Ｇに含まれる因子ｕ＝Σ（ｕｊ・Ｄ〜ｊ）（ただし、ｊは０以上２ｄ−１以下の整数。）を算出する。すなわち、公開第二因子生成部１７４Ｂは、ＣＰＵ９１１を用いて、２ｄ個の基底因子Ｄ〜ｊをそれぞれｕｉ回加算した２ｄ個の因子を算出し、算出した２ｄ個の因子をすべて加算した因子を算出して、因子ｕとする。公開第二因子生成部１７４Ｂは、ＲＡＭ９１４を用いて、選択した因子ｕを表わすデータを記憶する。【０２７４】
公開第三因子生成部１７５Ｂは、ＣＰＵ９１１を用いて、有限生成因子群Ｇに含まれる因子のなかからランダムに因子を選択して、因子ｖ’とする。公開第三因子生成部１７５Ｂは、ＲＡＭ９１４を用いて、選択した因子ｖ’を表わすデータを記憶する。【０２７５】
公開ビット因子生成部１７６Ｂは、ＣＰＵ９１１を用いて、ビット長入力部１５１Ｂが記憶したビット長ｍを表わすデータを入力する。公開ビット因子生成部１７６Ｂは、ＣＰＵ９１１を用いて、入力したデータが表わすビット長ｍに基づいて、有限生成因子群Ｇに含まれる因子のなかからｍ個の因子をランダムに選択して、ｍ個の因子ｖｉ（ただし、ｉは１以上ｍ以下の整数。）とする。公開ビット因子生成部１７６Ｂは、ＲＡＭ９１４を用いて、選択したｍ個の因子ｖｉを表わすデータを記憶する。【０２７６】
マスター鍵算出部１８０Ｂは、マスター因子算出部１８１Ｂを有する。
マスター因子算出部１８１Ｂは、ＣＰＵ９１１を用いて、ペアリング乱数生成部１６１Ｂが記憶した乱数αを表わすデータと、公開基底算出部１７１Ｂが記憶した因子ｇを表わすデータとを入力する。マスター因子算出部１８１Ｂは、ＣＰＵ９１１を用いて、入力したデータが表わす乱数αと因子ｇとに基づいて、拡大体Ｋ上におけるヤコビ多様体ＪａｃＣの因子ｇ’＝α・ｇを算出する。すなわち、マスター因子算出部１８１Ｂは、ＣＰＵ９１１を用いて、因子ｇをα回加算した因子を算出して、因子ｇ’とする。因子ｇ’は、有限生成因子群Ｇに含まれる。マスター因子算出部１８１Ｂは、ＣＰＵ９１１を用いて、算出した因子ｇ’を表わすデータを記憶する。【０２７７】
公開鍵設定部１９１Ｂは、ＣＰＵ９１１を用いて、出力基底算出部１４３が記憶した出力基底ｇ１を表わすデータと、公開基底算出部１７１Ｂが記憶した因子ｇを表わすデータと、公開第一因子算出部１７２Ｂが記憶した因子Ωを表わすデータと、公開ペアリング値算出部１７３Ｂが記憶したペアリング値Ａを表わすデータと、公開第二因子生成部１７４Ｂが記憶した因子ｕを表わすデータと、公開第三因子生成部１７５Ｂが記憶した因子ｖ’を表わすデータと、公開ビット因子生成部１７６Ｂが記憶したｍ個の因子ｖｉを表わすデータとを入力する。公開鍵設定部１９１Ｂは、ＣＰＵ９１１を用いて、入力したデータが表わす出力基底ｇ１と因子ｇと因子Ωとペアリング値Ａと因子ｕと因子ｖ’とｍ個の因子ｖｉとに基づいて、ｍ＋５個の因子とペアリング値との組（ｇ１，ｇ，Ω，Ａ，ｕ，ｖ’，ｖ１，ｖ２…，ｖｍ）を、公開鍵ＰＫに設定する。【０２７８】
マスター鍵設定部１９２Ｂは、ＣＰＵ９１１を用いて、マスター乱数生成部１６２Ｂが記憶した乱数ωを表わすデータと、マスター因子算出部１８１Ｂが記憶した因子ｇ’を表わすデータとを入力する。マスター鍵設定部１９２Ｂは、ＣＰＵ９１１を用いて、入力したデータが表わす乱数ωと因子ｇ’とに基づいて、整数と因子との組（ω，ｇ’）を、マスター鍵ＭＫに設定する。【０２７９】
追跡鍵設定部１９３Ｂは、ＣＰＵ９１１を用いて、出力基底算出部１４３が記憶した出力基底ｇ２を表わすデータを入力する。追跡鍵設定部１９３Ｂは、ＣＰＵ９１１を用いて、入力したデータが表わす出力基底ｇ２に基づいて、因子ｇ２を追跡鍵ＴＫに設定する。【０２８０】
図１６は、この実施の形態における署名鍵発行装置６００の機能ブロックの構成の一例を示すブロック構成図である。
署名鍵発行装置６００は、発行要求入力部１５４Ｃ、発行済識別子記憶部１５５Ｃ、マスター鍵記憶部１５６Ｃ、公開鍵入力部１５７Ｃ、識別子生成部１６０Ｃ、署名鍵算出部１８０Ｃ、識別子設定部１９４Ｃ、署名鍵設定部１９５Ｃを有する。【０２８１】
マスター鍵記憶部１５６Ｃは、あらかじめ、耐タンパ性のある記憶装置を用いて、鍵生成装置５００Ｂが設定したマスター鍵ＭＫ＝（ω，ｇ’）を表わすデータを記憶している。
発行済識別子記憶部１５５Ｃは、耐タンパ性のある記憶装置を用いて、既に発行した署名鍵ＳＫの識別子ｓＩＤを表わすデータを記憶している。【０２８２】
公開鍵入力部１５７Ｃ（発行公開鍵入力部）は、磁気ディスク装置９２０を用いて、署名鍵発行装置６００が設定した公開鍵ＰＫを表わすデータを記憶している。【０２８３】
発行要求入力部１５４Ｃは、ＣＰＵ９１１を用いて、署名鍵ＳＫの発行を要求する署名鍵発行要求を入力する。
識別子生成部１６０Ｃは、発行要求入力部１５４Ｃが署名鍵発行要求を入力した場合に、ＣＰＵ９１１を用いて、マスター鍵記憶部１５６Ｃが記憶したマスター鍵ＭＫに含まれる乱数ωを表わすデータと、発行済識別子記憶部１５５Ｃが記憶した発行済署名鍵ＳＫの識別子ｓＩＤを表わすデータとを入力する。
識別子生成部１６０Ｃは、ＣＰＵ９１１を用いて、１以上ｒ−１以下の整数をランダムに選択し、新しい署名鍵ＳＫの識別子ｓＩＤとする。
識別子生成部１６０Ｃは、ＣＰＵ９１１を用いて、入力したデータが表わす乱数ωと、選択した新しい署名鍵ＳＫの識別子ｓＩＤとに基づいて、位数ｒの剰余環Ｚ／ｒＺにおいてω＋ｓＩＤに乗法に関する逆元があるか否かを判定する。ω＋ｓＩＤに逆元がないと判定した場合、識別子生成部１６０Ｃは、ＣＰＵ９１１を用いて、識別子ｓＩＤを選び直す。
なお、位数ｒは素数なので、ω＋ｓＩＤがｒで割り切れなければ、ω＋ｓＩＤに乗法に関する逆元がある。ω及びｓＩＤはともに１以上ｒ−１以下の整数であるから、ω＋ｓＩＤ≠ｒであれば、ω＋ｓＩＤに乗法に関する逆元がある。識別子生成部１６０Ｃは、ＣＰＵ９１１を用いて、乱数ωと識別子ｓＩＤとの和ω＋ｓＩＤを算出し、算出した和ω＋ｓＩＤが位数ｒと等しい場合に、識別子ｓＩＤを選び直す。
識別子生成部１６０Ｃは、ＣＰＵ９１１を用いて、選択した新しい署名鍵ＳＫの識別子ｓＩＤと、入力したデータが表わす発行済署名鍵ＳＫの識別子ｓＩＤとに基づいて、発行済み署名鍵ＳＫの識別子ｓＩＤのなかに、選択した新しい署名鍵ＳＫの識別子ｓＩＤと一致するものがないか判定する。一致するものがあると判定した場合、識別子生成部１６０Ｃは、ＣＰＵ９１１を用いて、識別子ｓＩＤを選び直す。
選択した新しい署名鍵ＳＫの識別子ｓＩＤが、ωとの和に逆元があり、発行済署名鍵ＳＫの識別子ｓＩＤと異なる場合、識別子生成部１６０Ｃは、ＲＡＭ９１４を用いて、選択した新しい署名鍵ＳＫの識別子ｓＩＤを記憶する。【０２８４】
発行済識別子記憶部１５５Ｃは、耐タンパ性のある記憶装置を用いて、識別子生成部１６０Ｃが記憶した新しい署名鍵ＳＫの識別子ｓＩＤを表わすデータを、それまで記憶していた発行済署名鍵ＳＫの識別子ｓＩＤを表わすデータに追加して記憶する。【０２８５】
署名鍵算出部１８０Ｃは、署名第一鍵算出部１８４Ｃ、署名第二鍵算出部１８５Ｃ、署名第三鍵算出部１８６Ｃを有する。【０２８６】
署名第一鍵算出部１８４Ｃは、ＣＰＵ９１１を用いて、マスター鍵記憶部１５６Ｃが記憶したマスター鍵ＭＫに含まれる乱数ω及び因子ｇ’を表わすデータと、識別子生成部１６０Ｃが記憶した新しい署名鍵ＳＫの識別子ｓＩＤを表わすデータとを入力する。署名第一鍵算出部１８４Ｃは、入力したデータが表わす乱数ωと因子ｇ’と識別子ｓＩＤとに基づいて、拡大体Ｋ上におけるヤコビ多様体ＪａｃＣの因子Ｋ１＝｛１／（ω＋ｓＩＤ）｝・ｇ’を算出する。すなわち、署名第一鍵算出部１８４Ｃは、ＣＰＵ９１１を用いて、位数ｒの剰余環Ｚ／ｒＺにおいて整数ωと整数ｓＩＤとの和の逆数１／（ω＋ｓＩＤ）を算出し、因子ｇ’を、算出した逆数１／（ω＋ｓＩＤ）回加算した因子を算出して、因子Ｋ１とする。因子Ｋ１は、有限生成因子群Ｇに含まれる。署名第一鍵算出部１８４Ｃは、ＲＡＭ９１４を用いて、算出した因子Ｋ１を表わすデータを記憶する。【０２８７】
署名第二鍵算出部１８５Ｃは、ＣＰＵ９１１を用いて、公開鍵入力部１５７Ｃが記憶した公開鍵ＰＫに含まれる因子ｇを表わすデータと、識別子生成部１６０Ｃが記憶した新しい署名鍵ＳＫの識別子ｓＩＤを表わすデータとを入力する。署名第二鍵算出部１８５Ｃは、ＣＰＵ９１１を用いて、入力したデータが表わす因子ｇと識別子ｓＩＤとに基づいて、拡大体Ｋ上におけるヤコビ多様体ＪａｃＣの因子Ｋ２＝ｓＩＤ・ｇを算出する。すなわち、署名第二鍵算出部１８５Ｃは、ＣＰＵ９１１を用いて、因子ｇをｓＩＤ回加算した因子を算出して、因子Ｋ２とする。因子Ｋ２は、有限生成因子群Ｇに含まれる。署名第二鍵算出部１８５Ｃは、ＲＡＭ９１４を用いて、算出した因子Ｋ２を表わすデータを記憶する。【０２８８】
署名第三鍵算出部１８６Ｃは、ＣＰＵ９１１を用いて、公開鍵入力部１５７Ｃが記憶した公開鍵ＰＫに含まれる因子ｕを表わすデータと、識別子生成部１６０Ｃが記憶した新しい署名鍵ＳＫの識別子ｓＩＤを表わすデータとを入力する。署名第三鍵算出部１８６Ｃは、ＣＰＵ９１１を用いて、入力したデータが表わす因子ｕと識別子ｓＩＤとに基づいて、拡大体Ｋ上におけるヤコビ多様体ＪａｃＣの因子Ｋ３＝ｓＩＤ・ｕを算出する。すなわち、署名第三鍵算出部１８６Ｃは、ＣＰＵ９１１を用いて、因子ｕをｓＩＤ回加算した因子を算出して、因子Ｋ３とする。因子Ｋ３は、有限生成因子群Ｇに含まれる。署名第三鍵算出部１８６Ｃは、ＲＡＭ９１４を用いて、算出した因子Ｋ３を表わすデータを記憶する。【０２８９】
識別子設定部１９４Ｃは、ＣＰＵ９１１を用いて、識別子生成部１６０Ｃが記憶した新しい署名鍵ＳＫの識別子ｓＩＤを表わすデータを入力する。識別子設定部１９４Ｃは、ＣＰＵ９１１を用いて、入力したデータが表わす識別子ｓＩＤに基づいて、識別子ｓＩＤを設定する。【０２９０】
署名鍵設定部１９５Ｃは、ＣＰＵ９１１を用いて、署名第一鍵算出部１８４Ｃが記憶した因子Ｋ１を表わすデータと、署名第二鍵算出部１８５Ｃが記憶した因子Ｋ２を表わすデータと、署名第三鍵算出部１８６Ｃが記憶した因子Ｋ３を表わすデータとを入力する。署名鍵設定部１９５Ｃは、ＣＰＵ９１１を用いて、入力したデータが表わす因子Ｋ１と因子Ｋ２と因子Ｋ３とに基づいて、三つの因子の組（Ｋ１，Ｋ２，Ｋ３）を、署名鍵ＳＫに設定する。【０２９１】
図１７は、この実施の形態における署名装置２００Ｂの機能ブロックの構成の一例を示すブロック構成図である。
署名装置２００Ｂは、公開鍵入力部２１１Ｂ、署名鍵入力部２１２Ｂ、署名鍵検証部２２０Ｂ、署名鍵記憶部２２５Ｂ、メッセージ入力部２１３Ｂ、署名乱数生成部２３０Ｂ、メッセージ因子算出部２４０Ｂ、署名算出部２５０Ｂ、署名出力部２６１Ｂを有する。【０２９２】
公開鍵入力部２１１Ｂ（署名公開鍵入力部）は、ＣＰＵ９１１を用いて、鍵生成装置５００Ｂが設定した公開鍵ＰＫを入力する。署名鍵第一検証値算出部２２１Ｂは、磁気ディスク装置９２０を用いて、入力した公開鍵ＰＫを表わすデータを記憶する。【０２９３】
署名鍵入力部２１２Ｂは、ＣＰＵ９１１を用いて、署名鍵発行装置６００が発行した署名鍵ＳＫを入力する。署名鍵入力部２１２Ｂは、ＲＡＭ９１４を用いて、入力した署名鍵ＳＫを表わすデータを記憶する。【０２９４】
署名鍵検証部２２０Ｂは、署名鍵入力部２１２Ｂが入力した署名鍵ＳＫの整合性を検証する。
署名鍵検証部２２０Ｂは、署名鍵第一検証値算出部２２１Ｂ、署名鍵第二検証値算出部２２２Ｂ、署名鍵第三検証値算出部２２３Ｂ、署名鍵検証判定部２２４Ｂを有する。【０２９５】
署名鍵第一検証値算出部２２１Ｂは、ＣＰＵ９１１を用いて、公開鍵入力部２１１Ｂが記憶した公開鍵ＰＫに含まれる因子Ωを表わすデータと、署名鍵入力部２１２Ｂが記憶した署名鍵ＳＫに含まれる因子Ｋ１，Ｋ２を表わすデータとを入力する。署名鍵第一検証値算出部２２１Ｂは、ＣＰＵ９１１を用いて、入力したデータが表わす因子Ωと因子Ｋ１と因子Ｋ２とに基づいて、ペアリング値Ａ’＝ｅ（Ｋ１，Ｋ２＋Ω）を算出する。すなわち、署名鍵第一検証値算出部２２１Ｂは、ＣＰＵ９１１を用いて、因子Ｋ１と、因子Ｋ２と因子Ωとを加算した因子とのペアリング値を算出し、ペアリング値Ａ’とする。署名鍵第一検証値算出部２２１Ｂは、ＲＡＭ９１４を用いて、算出したペアリング値Ａ’を表わすデータを記憶する。【０２９６】
署名鍵第二検証値算出部２２２Ｂは、ＣＰＵ９１１を用いて、公開鍵入力部２１１Ｂが記憶した公開鍵ＰＫに含まれる因子ｕを表わすデータと、署名鍵入力部２１２Ｂが記憶した署名鍵ＳＫに含まれる因子Ｋ２を表わすデータとを入力する。署名鍵第二検証値算出部２２２Ｂは、ＣＰＵ９１１を用いて、入力したデータが表わす因子ｕと因子Ｋ２とに基づいて、ペアリング値Ｂ＝ｅ（Ｋ２，ｕ）を算出する。すなわち、署名鍵第二検証値算出部２２２Ｂは、ＣＰＵ９１１を用いて、因子Ｋ２と、因子ｕとのペアリング値を算出して、ペアリング値Ｂとする。署名鍵第二検証値算出部２２２Ｂは、ＲＡＭ９１４を用いて、算出したペアリング値Ｂを表わすデータを記憶する。【０２９７】
署名鍵第三検証値算出部２２３Ｂは、ＣＰＵ９１１を用いて、公開鍵入力部２１１Ｂが記憶した公開鍵ＰＫに含まれる因子ｇを表わすデータと、署名鍵入力部２１２Ｂが記憶した署名鍵ＳＫに含まれる因子Ｋ３を表わすデータとを入力する。署名鍵第三検証値算出部２２３Ｂは、ＣＰＵ９１１を用いて、入力したデータが表わす因子ｇと因子Ｋ３とに基づいて、ペアリング値Ｂ’＝ｅ（ｇ，Ｋ３）を算出する。すなわち、署名鍵第三検証値算出部２２３Ｂは、ＣＰＵ９１１を用いて、因子ｇと、因子Ｋ３とのペアリング値を算出して、ペアリング値Ｂ’とする。署名鍵第三検証値算出部２２３Ｂは、ＲＡＭ９１４を用いて、算出したペアリング値Ｂ’を表わすデータを記憶する。【０２９８】
署名鍵検証判定部２２４Ｂは、ＣＰＵ９１１を用いて、公開鍵入力部２１１Ｂが記憶した公開鍵ＰＫに含まれるペアリング値Ａを表わすデータと、署名鍵第一検証値算出部２２１Ｂが記憶したペアリング値Ａ’を表わすデータと、署名鍵第二検証値算出部２２２Ｂが記憶したペアリング値Ｂを表わすデータと、署名鍵第三検証値算出部２２３Ｂが記憶したペアリング値Ｂ’を表わすデータとを入力する。署名鍵検証判定部２２４Ｂは、ＣＰＵ９１１を用いて、入力したデータが表わすペアリング値Ａとペアリング値Ａ’とペアリング値Ｂとペアリング値Ｂ’とに基づいて、ペアリング値Ａとペアリング値Ａ’とが一致するか否か、ペアリング値Ｂとペアリング値Ｂ’とが一致するか否かを判定する。署名鍵検証判定部２２４Ｂは、ＣＰＵ９１１を用いて、ペアリング値Ａとペアリング値Ａ’とが一致し、かつ、ペアリング値Ｂとペアリング値Ｂ’とが一致した場合に、署名鍵入力部２１２Ｂが入力した署名鍵ＳＫに整合性があると判定する。【０２９９】
署名鍵記憶部２２５Ｂは、署名鍵検証判定部２２４Ｂが署名鍵ＳＫに整合性があると判定した場合、ＣＰＵ９１１を用いて、署名鍵入力部２１２Ｂが記憶した署名鍵ＳＫを表わすデータを入力する。署名鍵記憶部２２５Ｂは、耐タンパ性のある記憶装置を用いて、入力した署名鍵ＳＫを表わすデータを記憶する。【０３００】
メッセージ入力部２１３Ｂ（署名メッセージ入力部）は、ＣＰＵ９１１を用いて、署名すべきメッセージＭを入力する。ここで、メッセージＭのビット長はｍであり、メッセージＭのｉ番目のビットをμｉ（ただし、ｉは１以上ｍ以下の整数。μｉは０または１。）と表わす。メッセージ入力部２１３Ｂは、ＲＡＭ９１４を用いて、入力したメッセージＭを表わすデータを記憶する。【０３０１】
メッセージ因子算出部２４０Ｂ（署名メッセージ因子算出部）は、メッセージ入力部２１３Ｂが入力したメッセージＭを有限生成因子群Ｇに含まれる因子に変換する。
メッセージ因子算出部２４０Ｂは、ＣＰＵ９１１を用いて、公開鍵入力部２１１Ｂが記憶した公開鍵ＰＫに含まれる因子ｖ’及びｍ個の因子ｖｉを表わすデータと、メッセージ入力部２１３Ｂが記憶したメッセージＭを表わすデータとを入力する。メッセージ因子算出部２４０Ｂは、ＣＰＵ９１１を用いて、入力したデータが表わす因子ｖ’とｍ個の因子ｖｉとメッセージＭとに基づいて、拡大体Ｋ上におけるヤコビ多様体ＪａｃＣの因子ｖ＝ｖ’＋Σ（μｉ・ｖｉ）（ただし、ｉは１以上ｍ以下の整数。）を算出する。すなわち、メッセージ因子算出部２４０Ｂは、ＣＰＵ９１１を用いて、ｍ個の因子ｖｉのうちメッセージＭのビットμｉが１であるビットに対応する因子ｖｉを合計した因子と、因子ｖ’とを加算した因子を算出して、因子ｖとする。因子ｖは、有限生成因子群Ｇに含まれる。メッセージ因子算出部２４０Ｂは、ＲＡＭ９１４を用いて、算出した因子ｖを表わすデータを記憶する。【０３０２】
署名乱数生成部２３０Ｂは、署名σを算出するために使用する乱数を生成する。
署名乱数生成部２３０Ｂは、署名第一乱数生成部２３１Ｂ、署名第二乱数生成部２３２Ｂを有する。
署名第一乱数生成部２３１Ｂは、ＣＰＵ９１１を用いて、１以上ｒ−１以下の整数をランダムに選択し、乱数ｓとする。署名第一乱数生成部２３１Ｂは、ＲＡＭ９１４を用いて、選択した乱数ｓを表わすデータを記憶する。
署名第二乱数生成部２３２Ｂは、ＣＰＵ９１１を用いて、１以上ｒ−１以下の整数を四つランダムに選択し、乱数ｔｊ（ただし、ｊは１以上４以下の整数。）とする。署名第二乱数生成部２３２Ｂは、ＲＡＭ９１４を用いて、選択した四つの乱数ｔｊを表わすデータを記憶する。【０３０３】
署名算出部２５０Ｂは、署名σを構成する因子を算出する。
署名算出部２５０Ｂは、署名第一因子算出部２５１Ｂ、署名第二因子算出部２５２Ｂ、署名第三因子算出部２５３Ｂ、署名第四因子算出部２５４Ｂ、署名第五因子算出部２５５Ｂ、署名第六因子算出部２５６Ｂを有する。【０３０４】
署名第一因子算出部２５１Ｂは、ＣＰＵ９１１を用いて、公開鍵入力部２１１Ｂが記憶した公開鍵ＰＫに含まれる因子ｇ１を表わすデータと、署名鍵記憶部２２５Ｂが記憶した署名鍵ＳＫに含まれる因子Ｋ１を表わすデータと、署名第二乱数生成部２３２Ｂが記憶した乱数ｔ１を表わすデータとを入力する。署名第一因子算出部２５１Ｂは、ＣＰＵ９１１を用いて、入力したデータが表わす因子ｇ１と因子Ｋ１と乱数ｔ１とに基づいて、拡大体Ｋ上におけるヤコビ多様体ＪａｃＣの因子σ１＝Ｋ１＋ｔ１・ｇ１を算出する。すなわち、署名第一因子算出部２５１Ｂは、ＣＰＵ９１１を用いて、因子ｇ１をｔ１回加算した因子と、因子Ｋ１とを加算した因子を算出して、因子σ１とする。因子σ１は、有限生成因子群Ｇに含まれる。署名第一因子算出部２５１Ｂは、ＲＡＭ９１４を用いて、算出した因子σ１を表わすデータを記憶する。【０３０５】
署名第二因子算出部２５２Ｂは、ＣＰＵ９１１を用いて、公開鍵入力部２１１Ｂが記憶した公開鍵ＰＫに含まれる因子ｇ１を表わすデータと、署名鍵記憶部２２５Ｂが記憶した署名鍵ＳＫに含まれる因子Ｋ２を表わすデータと、署名第二乱数生成部２３２Ｂが記憶した乱数ｔ２を表わすデータとを入力する。署名第二因子算出部２５２Ｂは、ＣＰＵ９１１を用いて、入力したデータが表わす因子ｇ１と因子Ｋ２と乱数ｔ２とに基づいて、拡大体Ｋ上におけるヤコビ多様体ＪａｃＣの因子σ２＝Ｋ２＋ｔ２・ｇ１を算出する。すなわち、署名第二因子算出部２５２Ｂは、ＣＰＵ９１１を用いて、因子ｇ１をｔ２回加算した因子と、因子Ｋ２とを加算した因子を算出して、因子σ２とする。因子σ２は、有限生成因子群Ｇに含まれる。署名第二因子算出部２５２Ｂは、ＲＡＭ９１４を用いて、算出した因子σ２を表わすデータを記憶する。【０３０６】
署名第三因子算出部２５３Ｂは、ＣＰＵ９１１を用いて、公開鍵入力部２１１Ｂが記憶した公開鍵ＰＫに含まれる因子ｇ１を表わすデータと、署名鍵記憶部２２５Ｂが記憶した署名鍵ＳＫに含まれる因子Ｋ３を表わすデータと、メッセージ因子算出部２４０Ｂが記憶した因子ｖを表わすデータと、署名第一乱数生成部２３１Ｂが記憶した乱数ｓを表わすデータと、署名第二乱数生成部２３２Ｂが記憶した乱数ｔ３を表わすデータとを入力する。署名第三因子算出部２５３Ｂは、ＣＰＵ９１１を用いて、入力したデータが表わす因子ｇ１と因子Ｋ３と因子ｖと乱数ｓと乱数ｔ３とに基づいて、拡大体Ｋ上におけるヤコビ多様体ＪａｃＣの因子σ３＝Ｋ３＋ｓ・ｖ＋ｔ３・ｇ１を算出する。すなわち、署名第一因子算出部２５１Ｂは、ＣＰＵ９１１を用いて、因子ｇ１をｔ３回加算した因子と、因子ｖをｓ回加算した因子と、因子Ｋ３とを加算した因子を算出して、因子σ３とする。因子σ３は、有限生成因子群Ｇに含まれる。署名第三因子算出部２５３Ｂは、ＲＡＭ９１４を用いて、算出した因子σ３を表わすデータを記憶する。【０３０７】
署名第四因子算出部２５４Ｂは、ＣＰＵ９１１を用いて、公開鍵入力部２１１Ｂが記憶した公開鍵ＰＫに含まれる因子ｇ１及び因子ｇを表わすデータと、署名第一乱数生成部２３１Ｂが記憶した乱数ｓを表わすデータと、署名第二乱数生成部２３２Ｂが記憶した乱数ｔ４を表わすデータとを入力する。署名第四因子算出部２５４Ｂは、ＣＰＵ９１１を用いて、入力したデータが表わす因子ｇ１と因子ｇと乱数ｓと乱数ｔ４とに基づいて、拡大体Ｋ上におけるヤコビ多様体ＪａｃＣの因子σ４＝−ｓ・ｇ＋ｔ４・ｇ１を算出する。すなわち、署名第四因子算出部２５４Ｂは、ＣＰＵ９１１を用いて、因子ｇを（ｒ−ｓ）回加算した因子と、因子ｇ１をｔ４回加算した因子とを加算した因子を算出して、因子σ４とする。因子σ４は、有限生成因子群Ｇに含まれる。署名第四因子算出部２５４Ｂは、ＲＡＭ９１４を用いて、算出した因子σ４を表わすデータを記憶する。【０３０８】
署名第五因子算出部２５５Ｂは、ＣＰＵ９１１を用いて、公開鍵入力部２１１Ｂが記憶した公開鍵ＰＫに含まれる因子ｇ１及び因子Ωを表わすデータと、署名鍵記憶部２２５Ｂが記憶した署名鍵ＳＫに含まれる因子Ｋ１及び因子Ｋ２を表わすデータと、署名第二乱数生成部２３２Ｂが記憶した乱数ｔ１及び乱数ｔ２を表わすデータとを入力する。署名第五因子算出部２５５Ｂは、ＣＰＵ９１１を用いて、入力したデータが表わす因子ｇ１と因子Ωと因子Ｋ１と因子Ｋ２と乱数ｔ１と乱数ｔ２とに基づいて、拡大体Ｋ上におけるヤコビ多様体ＪａｃＣの因子π１＝ｔ１ｔ２・ｇ１＋ｔ２・Ｋ１＋ｔ１・（Ｋ２＋Ω）を算出する。すなわち、署名第五因子算出部２５５Ｂは、ＣＰＵ９１１を用いて、因子ｇ１をｔ１掛けるｔ２回加算した因子と、因子Ｋ１をｔ２回加算した因子と、因子Ｋ２と因子Ωとを加算した因子をｔ１回加算した因子とを加算した因子を算出して、因子π１とする。因子π１は、有限生成因子群Ｇに含まれる。署名第五因子算出部２５５Ｂは、ＲＡＭ９１４を用いて、算出した因子π１を表わすデータを記憶する。【０３０９】
署名第六因子算出部２５６Ｂは、ＣＰＵ９１１を用いて、公開鍵入力部２１１Ｂが記憶した公開鍵ＰＫに含まれる因子ｇ及び因子ｕを表わすデータと、メッセージ因子算出部２４０Ｂが記憶した因子ｖを表わすデータと、署名第二乱数生成部２３２Ｂが記憶した乱数ｔ２及び乱数ｔ３及び乱数ｔ４を表わすデータとを入力する。署名第六因子算出部２５６Ｂは、ＣＰＵ９１１を用いて、入力したデータが表わす因子ｇと因子ｕと因子ｖと乱数ｔ２と乱数ｔ３と乱数ｔ４とに基づいて、拡大体Ｋ上におけるヤコビ多様体ＪａｃＣの因子π２＝ｔ２・ｕ−ｔ３・ｇ−ｔ４・ｖを算出する。すなわち、署名第六因子算出部２５６Ｂは、ＣＰＵ９１１を用いて、因子ｕをｔ２回加算した因子と、因子ｇを（ｒ−ｔ３）回加算した因子と、因子ｖを（ｒ−ｔ４）回加算した因子とを加算した因子を算出して、因子π２とする。因子π２は、有限生成因子群Ｇに含まれる。署名第六因子算出部２５６Ｂは、ＲＡＭ９１４を用いて、算出した因子π２を表わすデータを記憶する。【０３１０】
署名出力部２６１Ｂは、ＣＰＵ９１１を用いて、署名第一因子算出部２５１Ｂが記憶した因子σ１を表わすデータと、署名第二因子算出部２５２Ｂが記憶した因子σ２を表わすデータと、署名第三因子算出部２５３Ｂが記憶した因子σ３を表わすデータと、署名第四因子算出部２５４Ｂが記憶した因子σ４を表わすデータと、署名第五因子算出部２５５Ｂが記憶した因子π１を表わすデータと、署名第六因子算出部２５６Ｂが記憶した因子π２を表わすデータとを入力する。署名出力部２６１Ｂは、ＣＰＵ９１１を用いて、入力したデータが表わす因子σ１と因子σ２と因子σ３と因子σ４と因子π１と因子π２とに基づいて、六つの因子の組（σ１，σ２，σ３，σ４，π１，π２）を、署名σとして出力する。【０３１１】
図１８は、この実施の形態における署名検証装置３００Ｂの機能ブロックの構成の一例を示すブロック構成図である。
署名検証装置３００Ｂは、公開鍵入力部３１１Ｂ、メッセージ入力部３１３Ｂ、署名入力部３１２Ｂ、メッセージ因子算出部３４０Ｂ、署名検証部３５０Ｂを有する。【０３１２】
公開鍵入力部３１１Ｂ（検証公開鍵入力部）は、ＣＰＵ９１１を用いて、鍵生成装置５００Ｂが設定した公開鍵ＰＫを入力する。公開鍵入力部３１１Ｂは、磁気ディスク装置９２０を用いて、入力した公開鍵ＰＫを表わすデータを記憶する。
メッセージ入力部３１３Ｂ（検証メッセージ入力部）は、ＣＰＵ９１１を用いて、署名されたメッセージＭを入力する。メッセージ入力部３１３Ｂは、ＲＡＭ９１４を用いて、入力したメッセージＭを表わすデータを記憶する。
署名入力部３１２Ｂ（検証署名入力部）は、ＣＰＵ９１１を用いて、メッセージ入力部３１３Ｂが入力したメッセージＭに対する署名σを入力する。署名入力部３１２Ｂは、ＲＡＭ９１４を用いて、入力した署名σを表わすデータを記憶する。【０３１３】
メッセージ因子算出部３４０Ｂ（検証メッセージ因子算出部）は、署名装置２００Ｂのメッセージ因子算出部２４０Ｂと同様、メッセージ入力部３１３Ｂが入力したメッセージＭを有限生成因子群Ｇに含まれる因子ｖに変換する。【０３１４】
署名検証部３５０Ｂは、署名第一検証値算出部３５１Ｂ、署名第二検証値算出部３５２Ｂ、署名第三検証値算出部３５３Ｂ、署名第四検証値算出部３５４Ｂ、署名検証判定部３５５Ｂを有する。【０３１５】
署名第一検証値算出部３５１Ｂは、ＣＰＵ９１１を用いて、公開鍵入力部３１１Ｂが記憶した公開鍵ＰＫに含まれる因子ｇ１を表わすデータと、署名入力部３１２Ｂが記憶した署名σに含まれる因子π１を表わすデータとを入力する。署名第一検証値算出部３５１Ｂは、ＣＰＵ９１１を用いて、入力したデータが表わす因子ｇ１と因子π１とに基づいて、ペアリング値Ｃ＝ｅ（ｇ１，π１）を算出する。すなわち、署名第一検証値算出部３５１Ｂは、ＣＰＵ９１１を用いて、因子ｇ１と因子π１とのペアリング値を算出して、ペアリング値Ｃとする。署名第一検証値算出部３５１Ｂは、ＲＡＭ９１４を用いて、算出したペアリング値Ｃを表わすデータを記憶する。【０３１６】
署名第二検証値算出部３５２Ｂは、ＣＰＵ９１１を用いて、公開鍵入力部３１１Ｂが記憶した公開鍵ＰＫに含まれる因子Ω及びペアリング値Ａを表わすデータと、署名入力部３１２Ｂが記憶した署名σに含まれる因子σ１及び因子σ２を表わすデータとを入力する。署名第二検証値算出部３５２Ｂは、ＣＰＵ９１１を用いて、入力したデータが表わす因子Ωとペアリング値Ａと因子σ１と因子σ２とに基づいて、ペアリング値Ｃ’＝ｅ（σ１，σ２＋Ω）／Ａを算出する。すなわち、署名第二検証値算出部３５２Ｂは、ＣＰＵ９１１を用いて、因子σ１と、因子σ２と因子Ωとを加算した因子とのペアリング値と、ペアリング値Ａの逆数とを乗算したペアリング値を算出し、ペアリング値Ｃ’とする。署名第二検証値算出部３５２Ｂは、ＲＡＭ９１４を用いて、算出したペアリング値Ｃ’を表わすデータを記憶する。【０３１７】
署名第三検証値算出部３５３Ｂは、ＣＰＵ９１１を用いて、公開鍵入力部３１１Ｂが記憶した公開鍵ＰＫに含まれる因子ｇ１を表わすデータと、署名入力部３１２Ｂが記憶した署名σに含まれる因子π２を表わすデータとを入力する。署名第三検証値算出部３５３Ｂは、ＣＰＵ９１１を用いて、入力したデータが表わす因子ｇ１と因子π２とに基づいて、ペアリング値Ｄ＝ｅ（ｇ１，π２）を算出する。すなわち、署名第三検証値算出部３５３Ｂは、ＣＰＵ９１１を用いて、因子ｇ１と因子π２とのペアリング値を算出して、ペアリング値Ｄとする。署名第三検証値算出部３５３Ｂは、ＲＡＭ９１４を用いて、算出したペアリング値Ｄを表わすデータを記憶する。【０３１８】
署名第四検証値算出部３５４Ｂは、ＣＰＵ９１１を用いて、公開鍵入力部３１１Ｂが記憶した公開鍵ＰＫに含まれる因子ｕ及び因子ｇを表わすデータと、署名入力部３１２Ｂが記憶した署名σに含まれる因子σ２及び因子σ３及び因子σ４を表わすデータと、メッセージ因子算出部３４０Ｂが記憶した因子ｖを表わすデータとを入力する。署名第四検証値算出部３５４Ｂは、ＣＰＵ９１１を用いて、入力したデータが表わす因子ｕと因子ｇと因子σ２と因子σ３と因子σ４と因子ｖとに基づいて、ペアリング値Ｄ’＝ｅ（σ２，ｕ）／｛ｅ（ｇ，σ３）・ｅ（σ４，ｖ）｝を算出する。すなわち、署名第四検証値算出部３５４Ｂは、ＣＰＵ９１１を用いて、因子σ２と因子ｕとのペアリング値と、因子ｇと因子σ３とのペアリング値の逆数と、因子σ４と因子ｖとのペアリング値の逆数とを乗算したペアリング値を算出して、ペアリング値Ｄ’とする。署名第四検証値算出部３５４Ｂは、ＲＡＭ９１４を用いて、算出したペアリング値Ｄ’を表わすデータを記憶する。【０３１９】
署名検証判定部３５５Ｂは、ＣＰＵ９１１を用いて、署名第一検証値算出部３５１Ｂが記憶したペアリング値Ｃを表わすデータと、署名第二検証値算出部３５２Ｂが記憶したペアリング値Ｃ’を表わすデータと、署名第三検証値算出部３５３Ｂが記憶したペアリング値Ｄを表わすデータと、署名第四検証値算出部３５４Ｂが記憶したペアリング値Ｄ’を表わすデータとを入力する。署名検証判定部３５５Ｂは、ＣＰＵ９１１を用いて、入力したデータが表わすペアリング値Ｃとペアリング値Ｃ’とペアリング値Ｄとペアリング値Ｄ’とに基づいて、ペアリング値Ｃとペアリング値Ｃ’とが一致するか否か、ペアリング値Ｄとペアリング値Ｄ’とが一致するか否かを判定する。署名検証判定部３５５Ｂは、ＣＰＵ９１１を用いて、ペアリング値Ｃとペアリング値Ｃ’とが一致し、かつ、ペアリング値Ｄとペアリング値Ｄ’とが一致した場合に、メッセージＭに対する署名σが有効であると判定する。【０３２０】
図１９は、この実施の形態における署名者追跡装置４００Ｂの機能ブロックの構成の一例を示すブロック構成図である。
署名者追跡装置４００Ｂは、署名入力部４１２Ｂ、追跡鍵記憶部４１４Ｂ、識別子記憶部４１５Ｂ、署名ペアリング値算出部４５１Ｂ、識別子ペアリング値算出部４５２Ｂ、署名者判別部４５３Ｂを有する。【０３２１】
追跡鍵記憶部４１４Ｂは、あらかじめ、耐タンパ性のある記憶装置を用いて、鍵生成装置５００Ｂが設定した追跡鍵ＴＫを表わすデータを記憶している。
識別子記憶部４１５Ｂは、あらかじめ、耐タンパ性のある記憶装置を用いて、署名鍵発行装置６００が発行した複数の署名鍵ＳＫそれぞれの識別子ｓＩＤを表わすデータを記憶している。【０３２２】
署名入力部４１２Ｂ（追跡署名入力部）は、ＣＰＵ９１１を用いて、署名者を判別したい署名σを入力する。署名入力部４１２Ｂは、ＲＡＭ９１４を用いて、入力した署名σを表わすデータを記憶する。【０３２３】
署名ペアリング値算出部４５１Ｂは、ＣＰＵ９１１を用いて、追跡鍵記憶部４１４Ｂが記憶した追跡鍵ＴＫに含まれる因子ｇ２を表わすデータと、署名入力部４１２Ｂが記憶した署名σに含まれる因子σ２を表わすデータとを入力する。署名ペアリング値算出部４５１Ｂは、ＣＰＵ９１１を用いて、入力したデータが表わす因子ｇ２と因子σ２とに基づいて、ペアリング値Ｅ＝ｅ（ｇ２，σ２）を算出する。すなわち、署名ペアリング値算出部４５１Ｂは、ＣＰＵ９１１を用いて、因子ｇ２と因子σ２とのペアリング値を算出して、ペアリング値Ｅとする。署名ペアリング値算出部４５１Ｂは、ＲＡＭ９１４を用いて、算出したペアリング値Ｅを表わすデータを記憶する。【０３２４】
識別子ペアリング値算出部４５２Ｂは、ＣＰＵ９１１を用いて、追跡鍵記憶部４１４Ｂが記憶した追跡鍵ＴＫに含まれる因子ｇ２を表わすデータと、識別子記憶部４１５Ｂが記憶した複数の識別子ｓＩＤを表わすデータとを入力する。識別子ペアリング値算出部４５２Ｂは、ＣＰＵ９１１を用いて、入力したデータが表わす因子ｇ２と複数の識別子ｓＩＤとに基づいて、複数のペアリング値ＥＩＤ＝ｅ（ｇ２，ｇ２）ｓＩＤをそれぞれ算出する。すなわち、識別子ペアリング値算出部４５２Ｂは、ＣＰＵ９１１を用いて、因子ｇ２と因子ｇ２とのペアリング値をｓＩＤ回乗算したペアリング値を算出して、ペアリング値ＥＩＤとする。識別子ペアリング値算出部４５２Ｂは、ＲＡＭ９１４を用いて、算出した複数のペアリング値ＥＩＤを表わすデータを記憶する。【０３２５】
署名者判別部４５３Ｂは、ＣＰＵ９１１を用いて、署名ペアリング値算出部４５１Ｂが記憶したペアリング値Ｅを表わすデータと、識別子ペアリング値算出部４５２Ｂが記憶した複数のペアリング値ＥＩＤを表わすデータとを入力する。署名者判別部４５３Ｂは、ＣＰＵ９１１を用いて、入力したデータが表わすペアリング値Ｅと複数のペアリング値ＥＩＤとに基づいて、複数のペアリング値ＥＩＤのなかから、ペアリング値Ｅと一致するものを探す。署名者判別部４５３Ｂは、ペアリング値Ｅと一致するペアリング値ＥＩＤが見つかった場合、ＣＰＵ９１１を用いて、そのペアリング値ＥＩＤを算出するもととなった識別子ｓＩＤが、署名σを生成した署名鍵ＳＫの識別子であると判定する。【０３２６】
ここで、署名ペアリング値算出部４５１Ｂが算出するペアリング値Ｅを、公開されていないパラメータを用いて表わすと、数２０になる。
【数２０】
2009090750.tif 000022
【０３２７】
出力基底算出部１４３が算出した出力基底ｇ１，ｇ２，ｇ３の間の関係より、ｅ（ｇ１，ｇ２）＝ｅ（ｇ２，ｇ１）＝ｅ（ｇ２，ｇ３）＝ｅ（ｇ３，ｇ２）＝１、ｅ（ｇ１，ｇ１）≠１、ｅ（ｇ２，ｇ２）≠１、ｅ（ｇ３，ｇ３）≠１なので、ペアリング値Ｅは、数２１のように表わせる。【０３２８】
【数２１】
2009090750.tif 000023
【０３２９】
したがって、ペアリング値Ｅと一致するペアリング値ＥＩＤを見つけることにより、署名者を判別することができる。【０３３０】
この実施の形態における暗号システム８００Ｂは、更に、署名鍵発行装置６００と、複数の署名装置２００Ｂと、署名検証装置３００Ｂと、署名者追跡装置４００Ｂとを有する。
上記署名鍵発行装置６００は、暗号パラメータ設定装置１００Ｂが設定した暗号パラメータと、鍵生成装置５００Ｂが生成した鍵（マスター鍵ＭＫ）とに基づいて、上記複数の署名装置２００Ｂにそれぞれ対応する複数の署名鍵ＳＫを生成する。
上記複数の署名装置２００Ｂのうち少なくともいずれかの署名装置２００Ｂは、上記署名鍵発行装置６００が生成した複数の署名鍵ＳＫのうち、上記署名装置２００Ｂに対応する署名鍵ＳＫを使用して、署名σを生成する。
上記署名検証装置３００Ｂは、上記暗号パラメータ設定装置１００Ｂが設定した暗号パラメータと、鍵生成装置５００が生成した鍵（公開鍵ＰＫ）とを使用して、上記署名装置２００Ｂが生成した署名を検証する。
上記署名者追跡装置４００Ｂは、上記暗号パラメータ設定装置１００Ｂが設定した暗号パラメータと、鍵生成装置５００が生成した鍵（追跡鍵ＴＫ）とを使用して、上記署名装置２００Ｂが生成した署名σを解析し、上記署名σを生成した署名装置２００Ｂを判別する。【０３３１】
この実施の形態における暗号システム８００によれば、上記のような高度な暗号方式を実現するために利用できる群構造を有する有限生成因子群Ｇを構成するために必要な具体的な暗号パラメータを暗号パラメータ設定装置１００Ｂが設定し、暗号パラメータ設定装置１００Ｂが設定した暗号パラメータに基づいて、鍵生成装置５００が有限生成因子群Ｇを構成し、構成した有限生成因子群Ｇを利用した具体的な鍵の値を算出し、鍵生成装置５００が算出した鍵を用いて、署名鍵発行装置６００が署名鍵ＳＫを生成し、署名装置２００Ｂが署名σを生成し、署名検証装置３００Ｂが署名σを検証し、署名者追跡装置４００Ｂが署名σを生成した署名装置２００Ｂを判別するので、有限生成因子群Ｇの群構造を利用した高度な暗号方式を実現することができるという効果を奏する。【０３３２】
この実施の形態におけるランダム因子選択部１２２は、上記処理装置（ＣＰＵ９１１）を用いて、有限体Ｆｐ上における超楕円曲線Ｃ：Ｙ２＝Ｘ５＋１（ただし、素数ｐを５で割った余りａは２または３。）のヤコビ多様体ＪａｃＣの複数の因子のなかから、ランダム因子Ｄ＊を選択する。
上記ランダム行列選択部１４２は、上記処理装置（ＣＰＵ９１１）を用いて、条件：ｍ’１２＝ｍ’２１＝０，ｍ’１１≠０，ｍ’２２≠０を満たす３行３列のランダム行列Ｖ＊を選択する。
上記出力基底算出部１４３は、上記処理装置（ＣＰＵ９１１）を用いて、上記基底因子記憶部５１１が算出した複数の基底因子Ｄ〜ｊと、上記ランダム行列選択部１４２が算出したランダム行列Ｖ＊とに基づいて、二つの出力基底ｇｋ＝ｖｋ・Ｄ〜（ただし、ｋは１以上２以下の整数。）を算出する。
上記鍵算出部１５０Ｂは、ビット長入力部１５１Ｂと、基底乱数生成部１６３Ｂと、ペアリング乱数生成部１６１Ｂと、マスター乱数生成部１６２Ｂと、公開基底算出部１７１Ｂと、公開第一因子算出部１７２Ｂと、公開ペアリング値算出部１７３Ｂと、公開第二因子生成部１７４Ｂと、公開第三因子生成部１７５Ｂと、公開ビット因子生成部１７６Ｂと、マスター因子算出部１８１Ｂと、公開鍵設定部１９１Ｂと、マスター鍵設定部１９２Ｂと、追跡鍵設定部１９３Ｂとを有する。
上記ビット長入力部１５１Ｂは、上記処理装置（ＣＰＵ９１１）を用いて、署名するメッセージＭのビット長ｍを入力する。
上記基底乱数生成部１６３Ｂは、上記処理装置（ＣＰＵ９１１）を用いて、乱数β（ただし、乱数βは１以上ｒ−１以下の整数。）をランダムに生成する。
上記ペアリング乱数生成部１６１Ｂは、上記処理装置（ＣＰＵ９１１）を用いて、乱数α（ただし、乱数αは１以上ｒ−１以下の整数。）をランダムに生成する。
上記マスター乱数生成部１６２Ｂは、上記処理装置（ＣＰＵ９１１）を用いて、乱数ω（ただし、乱数ωは１以上ｒ−１以下の整数。）をランダムに生成する。
上記公開基底算出部１７１Ｂは、上記処理装置（ＣＰＵ９１１）を用いて、上記出力基底算出部１４３が算出した出力基底ｇ１と出力基底ｇ２と、上記基底乱数生成部１６３Ｂが生成した乱数βとに基づいて、上記ヤコビ多様体ＪａｃＣの因子ｇ＝ｇ２＋β・ｇ１を算出する。
上記公開第一因子算出部１７２Ｂは、上記処理装置（ＣＰＵ９１１）を用いて、上記マスター乱数生成部１６２Ｂが生成した乱数ωと、上記公開基底算出部１７１Ｂが算出した因子ｇとに基づいて、上記ヤコビ多様体ＪａｃＣの因子Ω＝ω・ｇを算出する。
上記公開ペアリング値算出部１７３Ｂは、上記処理装置（ＣＰＵ９１１）を用いて、上記ペアリング乱数生成部１６１Ｂが生成した乱数αと、上記公開基底算出部１７１Ｂが算出した因子ｇとに基づいて、ペアリング値Ａ＝ｅ（ｇ，ｇ）αを算出する。
上記公開第二因子生成部１７４Ｂは、上記処理装置（ＣＰＵ９１１）を用いて、上記ヤコビ多様体ＪａｃＣの因子ｕをランダムに生成する。
上記公開第三因子生成部１７５Ｂは、上記処理装置（ＣＰＵ９１１）を用いて、上記ヤコビ多様体ＪａｃＣの因子ｖ’をランダムに生成する。
上記公開ビット因子生成部１７６Ｂは、上記処理装置（ＣＰＵ９１１）を用いて、上記ビット長入力部１５１Ｂが入力したビット長ｍに基づいて、上記ヤコビ多様体ＪａｃＣのｍ個の因子ｖｉ（ただし、ｉは１以上ｍ以下の整数。）をランダムに生成する。
上記マスター因子算出部１８１Ｂは、上記処理装置（ＣＰＵ９１１）を用いて、上記ペアリング乱数生成部１６１Ｂが生成した乱数αと、上記公開基底算出部１７１Ｂが算出した因子ｇとに基づいて、上記ヤコビ多様体ＪａｃＣの因子ｇ’＝α・ｇを算出する。
上記公開鍵設定部１９１Ｂは、上記処理装置（ＣＰＵ９１１）を用いて、上記出力基底算出部１４３が算出した因子ｇ１と、上記公開基底算出部１７１Ｂが算出した因子ｇと、上記公開第一因子算出部１７２Ｂが算出した因子Ωと、上記公開ペアリング値算出部１７３Ｂが算出したペアリング値Ａと、上記公開第二因子生成部１７４Ｂが生成した因子ｕと、上記公開第三因子生成部１７５Ｂが生成した因子ｖ’と、上記公開ビット因子生成部１７６Ｂが生成したｍ個の因子ｖｉとに基づいて、公開鍵ＰＫ＝（ｇ１，ｇ，Ω，Ａ，ｕ，ｖ’，ｖｉ）（ただし、ｉは１以上ｍ以下の整数。）を設定する。
上記マスター鍵設定部１９２Ｂは、上記処理装置（ＣＰＵ９１１）を用いて、上記マスター乱数生成部１６２Ｂが生成した乱数ωと、上記マスター因子算出部１８１Ｂが算出した因子ｇ’とに基づいて、マスター鍵ＭＫ＝（ω，ｇ’）を設定する。
上記追跡鍵設定部１９３Ｂは、上記処理装置（ＣＰＵ９１１）を用いて、上記出力基底算出部１４３が算出した出力基底ｇ２に基づいて、追跡鍵ＴＫ＝（ｇ２）を設定する。【０３３３】
この実施の形態における署名鍵発行装置６００は、データを記憶する記憶装置と、データを処理する処理装置（ＣＰＵ９１１）と、マスター鍵記憶部１５６Ｃと、発行公開鍵入力部（公開鍵入力部１５７Ｃ）と、識別子生成部１６０Ｃと、署名第一鍵算出部１８４Ｃと、署名第二鍵算出部１８５Ｃと、署名第三鍵算出部１８６Ｃと、署名鍵設定部１９５Ｃと、識別子設定部１９４Ｃとを有する。
上記マスター鍵記憶部１５６Ｃは、上記記憶装置を用いて、上記鍵生成装置５００Ｂが設定したマスター鍵ＭＫ＝（ω，ｇ’）を記憶する。
上記発行公開鍵入力部（公開鍵入力部１５７Ｃ）は、上記処理装置（ＣＰＵ９１１）を用いて、上記鍵生成装置５００Ｂが設定した公開鍵ＰＫ＝（ｇ１，ｇ，Ω，Ａ，ｕ，ｖ’，ｖｉ）を入力する。
上記識別子生成部１６０Ｃは、上記処理装置（ＣＰＵ９１１）を用いて、識別子ｓＩＤ（ただし、識別子ｓＩＤは１以上ｒ−１以下の整数。）をランダムに生成する。
上記署名第一鍵算出部１８４Ｃは、上記処理装置（ＣＰＵ９１１）を用いて、上記マスター鍵記憶部１５６Ｃが記憶したマスター鍵ＭＫに含まれる乱数ω及び因子ｇ’と、上記識別子生成部１６０Ｃが生成した識別子ｓＩＤとに基づいて、上記ヤコビ多様体ＪａｃＣの因子Ｋ１＝｛１／（ω＋ｓＩＤ）｝・ｇ’を算出する。
上記署名第二鍵算出部１８５Ｃは、上記処理装置（ＣＰＵ９１１）を用いて、上記発行公開鍵入力部（公開鍵入力部１５７Ｃ）が記憶した公開鍵ＰＫに含まれる因子ｇと、上記識別子生成部１６０Ｃが生成した識別子ｓＩＤとに基づいて、上記ヤコビ多様体ＪａｃＣの因子Ｋ２＝ｓＩＤ・ｇを算出する。
上記署名第三鍵算出部１８６Ｃは、上記処理装置（ＣＰＵ９１１）を用いて、上記発行公開鍵入力部（公開鍵入力部１５７Ｃ）が記憶した公開鍵ＰＫに含まれる因子ｕと、上記識別子生成部１６０Ｃが生成した識別子ｓＩＤとに基づいて、上記ヤコビ多様体ＪａｃＣの因子Ｋ３＝ｓＩＤ・ｕを算出する。
上記署名鍵設定部１９５Ｃは、上記処理装置（ＣＰＵ９１１）を用いて、上記署名第一鍵算出部１８４Ｃが算出した因子Ｋ１と、上記署名第二鍵算出部１８５Ｃが算出した因子Ｋ２と、上記署名第三鍵算出部１８６Ｃが算出した因子Ｋ３とに基づいて、署名鍵ＳＫ＝（Ｋ１，Ｋ２，Ｋ３）を設定する。
上記識別子設定部１９４Ｃは、上記処理装置（ＣＰＵ９１１）を用いて、上記識別子生成部１６０Ｃが生成した識別子ｓＩＤを、上記署名鍵設定部１９５Ｃが設定した署名鍵ＳＫを識別する識別子に設定する。【０３３４】
この実施の形態における署名装置２００Ｂは、データを記憶する記憶装置と、データを処理する処理装置（ＣＰＵ９１１）と、署名鍵記憶部２２５Ｂと、署名公開鍵入力部（公開鍵入力部２１１Ｂ）と、署名メッセージ入力部（メッセージ入力部２１３Ｂ）と、署名メッセージ因子算出部（メッセージ因子算出部２４０Ｂ）と、署名第一乱数生成部２３１Ｂと、署名第二乱数生成部２３２Ｂと、署名第一因子算出部２５１Ｂと、署名第二因子算出部２５２Ｂと、署名第三因子算出部２５３Ｂと、署名第四因子算出部２５４Ｂと、署名第五因子算出部２５５Ｂと、署名第六因子算出部２５６Ｂと、署名出力部２６１Ｂとを有する。
上記署名鍵記憶部２２５Ｂは、上記記憶装置を用いて、上記鍵生成装置５００Ｂが設定した署名鍵ＳＫ＝（Ｋ１，Ｋ２，Ｋ３）を記憶する。
上記署名公開鍵入力部（公開鍵入力部２１１Ｂ）は、上記処理装置（ＣＰＵ９１１）を用いて、上記鍵生成装置５００Ｂが設定した公開鍵ＰＫ＝（ｇ１，ｇ，Ω，Ａ，ｕ，ｖ’，ｖｉ）を入力する。
上記署名メッセージ入力部（メッセージ入力部２１３Ｂ）は、上記処理装置（ＣＰＵ９１１）を用いて、署名するメッセージＭを入力する。
上記署名メッセージ因子算出部（メッセージ因子算出部２４０Ｂ）は、上記処理装置（ＣＰＵ９１１）を用いて、上記署名公開鍵入力部（公開鍵入力部２１１Ｂ）が入力した公開鍵ＰＫに含まれる因子ｖ’及びｍ個の因子ｖｉと、上記署名メッセージ入力部（メッセージ入力部２１３Ｂ）が入力したメッセージＭとに基づいて、上記ヤコビ多様体ＪａｃＣの因子ｖ＝ｖ’＋Σ（μｉ・ｖｉ）（ただし、ｉは１以上ｍ以下の整数。μｉは上記メッセージＭのｉ番目のビットを表わす０または１の整数。）を算出する。
上記署名第一乱数生成部２３１Ｂは、上記処理装置（ＣＰＵ９１１）を用いて、乱数ｓ（ただし、乱数ｓは以上ｒ−１以下の整数。）を生成する。
上記署名第二乱数生成部２３２Ｂは、上記処理装置（ＣＰＵ９１１）を用いて、四つの乱数ｔｊ（ただし、ｊは１以上４以下の整数。乱数ｔｊは１以上ｒ−１以下の整数。）をランダムに生成する。
上記署名第一因子算出部２５１Ｂは、上記処理装置（ＣＰＵ９１１）を用いて、上記署名公開鍵入力部（公開鍵入力部２１１Ｂ）が入力した公開鍵ＰＫに含まれる因子ｇ１と、上記署名鍵記憶部２２５Ｂが記憶した署名鍵ＳＫに含まれる因子Ｋ１と、上記署名第二乱数生成部２３２Ｂが生成した乱数ｔ１とに基づいて、上記ヤコビ多様体ＪａｃＣの因子σ１＝Ｋ１＋ｔ１・ｇ１を算出する。
上記署名第二因子算出部２５２Ｂは、上記処理装置（ＣＰＵ９１１）を用いて、上記署名公開鍵入力部（公開鍵入力部２１１Ｂ）が入力した公開鍵ＰＫに含まれる因子ｇ１と、上記署名鍵記憶部２２５Ｂが記憶した署名鍵ＳＫに含まれる因子Ｋ２と、上記署名第二乱数生成部２３２Ｂが生成した乱数ｔ２とに基づいて、上記ヤコビ多様体ＪａｃＣの因子σ２＝Ｋ２＋ｔ２・ｇ１を算出する。
上記署名第三因子算出部２５３Ｂは、上記処理装置（ＣＰＵ９１１）を用いて、上記署名公開鍵入力部（公開鍵入力部２１１Ｂ）が入力した公開鍵ＰＫに含まれる因子ｇ１と、上記署名鍵記憶部２２５Ｂが記憶した署名鍵ＳＫに含まれる因子Ｋ３と、上記署名メッセージ因子算出部（メッセージ因子算出部２４０Ｂ）が算出した因子ｖと、上記署名第一乱数生成部２３１Ｂが生成した乱数ｓと、上記署名第二乱数生成部２３２Ｂが生成した乱数ｔ３とに基づいて、上記ヤコビ多様体ＪａｃＣの因子σ３＝Ｋ３＋ｓ・ｖ＋ｔ３・ｇ１を算出する。
上記署名第四因子算出部２５４Ｂは、上記処理装置（ＣＰＵ９１１）を用いて、上記署名公開鍵入力部（公開鍵入力部２１１Ｂ）が入力した公開鍵ＰＫに含まれる因子ｇ及び因子ｇ１と、上記署名第一乱数生成部２３１Ｂが生成した乱数ｓと、上記署名第二乱数生成部２３２Ｂが生成した乱数ｔ４とに基づいて、上記ヤコビ多様体ＪａｃＣの因子σ４＝−ｓ・ｇ＋ｔ４・ｇ１を算出する。
上記署名第五因子算出部２５５Ｂは、上記処理装置（ＣＰＵ９１１）を用いて、上記署名公開鍵入力部（公開鍵入力部２１１Ｂ）が入力した公開鍵ＰＫに含まれる因子ｇ１及び因子Ωと、上記署名鍵記憶部２２５Ｂが記憶した署名鍵ＳＫに含まれる因子Ｋ１及び因子Ｋ２と、上記署名第二乱数生成部２３２Ｂが生成した乱数ｔ１及び乱数ｔ２とに基づいて、上記ヤコビ多様体ＪａｃＣの因子π１＝ｔ１ｔ２・ｇ１＋ｔ２・Ｋ１＋ｔ１・（Ｋ２＋Ω）を算出する。
上記署名第六因子算出部２５６Ｂは、上記処理装置（ＣＰＵ９１１）を用いて、上記署名公開鍵入力部（公開鍵入力部２１１Ｂ）が入力した公開鍵ＰＫに含まれる因子ｇ及び因子ｕと、上記署名メッセージ因子算出部（メッセージ因子算出部２４０Ｂ）が算出した因子ｖと、上記署名第二乱数生成部２３２Ｂが生成した乱数ｔ２及び乱数ｔ３及び乱数ｔ４とに基づいて、上記ヤコビ多様体ＪａｃＣの因子π２＝ｔ２・ｕ−ｔ３・ｇ−ｔ４・ｖを算出する。
上記署名出力部２６１Ｂは、上記処理装置（ＣＰＵ９１１）を用いて、上記署名第一因子算出部２５１Ｂが算出した因子σ１と、上記署名第二因子算出部２５２Ｂが算出した因子σ２と、上記署名第三因子算出部２５３Ｂが算出した因子σ３と、上記署名第四因子算出部２５４Ｂが算出した因子σ４と、上記署名第五因子算出部２５５Ｂが算出した因子π１と、上記署名第六因子算出部２５６Ｂが算出した因子π２とに基づいて、署名σ＝（σ１，σ２，σ３，σ４，π１，π２）を出力する。【０３３５】
この実施の形態における署名検証装置３００Ｂは、データを処理する処理装置（ＣＰＵ９１１）と、検証公開鍵入力部（公開鍵入力部３１１Ｂ）と、検証署名入力部（署名入力部３１２Ｂ）と、検証メッセージ入力部（メッセージ入力部３１３Ｂ）と、検証メッセージ因子算出部（メッセージ因子算出部３４０Ｂ）と、署名第一検証値算出部３５１Ｂと、署名第二検証値算出部３５２Ｂと、署名第三検証値算出部３５３Ｂと、署名第四検証値算出部３５４Ｂと、署名検証判定部３５５Ｂとを有する。
上記検証公開鍵入力部（公開鍵入力部３１１Ｂ）は、上記処理装置（ＣＰＵ９１１）を用いて、上記鍵生成装置５００Ｂが設定した公開鍵ＰＫ＝（ｇ１，ｇ，Ω，Ａ，ｕ，ｖ’，ｖｉ）を入力する。
上記検証署名入力部（署名入力部３１２Ｂ）は、上記処理装置（ＣＰＵ９１１）を用いて、上記署名装置２００Ｂが出力した署名σ＝（σ１，σ２，σ３，σ４，π１，π２）を入力する。
上記検証メッセージ入力部（メッセージ入力部３１３Ｂ）は、上記処理装置（ＣＰＵ９１１）を用いて、上記署名σにより署名されたメッセージＭを入力する。
上記検証メッセージ因子算出部（メッセージ因子算出部３４０Ｂ）は、上記処理装置（ＣＰＵ９１１）を用いて、上記検証公開鍵入力部（公開鍵入力部３１１Ｂ）が入力した公開鍵ＰＫに含まれる因子ｖ’及びｍ個の因子ｖｉと、上記検証メッセージ入力部（メッセージ入力部３１３Ｂ）が入力したメッセージＭとに基づいて、上記ヤコビ多様体ＪａｃＣの因子ｖ＝ｖ’＋Σ（μｉ・ｖｉ）（ただし、ｉは１以上ｍ以下の整数。μｉは上記メッセージＭのｉ番目のビットを表わす０または１の整数。）を算出する。
上記署名第一検証値算出部３５１Ｂは、上記処理装置（ＣＰＵ９１１）を用いて、上記検証公開鍵入力部（公開鍵入力部３１１Ｂ）が入力した公開鍵ＰＫに含まれる因子ｇ１と、上記検証署名入力部（署名入力部３１２Ｂ）が入力した署名σに含まれる因子π１とに基づいて、ペアリング値Ｃ＝ｅ（ｇ１，π１）を算出する。
上記署名第二検証値算出部３５２Ｂは、上記処理装置（ＣＰＵ９１１）を用いて、上記検証公開鍵入力部（公開鍵入力部３１１Ｂ）が入力した公開鍵ＰＫに含まれる因子Ω及びペアリング値Ａと、上記検証署名入力部（署名入力部３１２Ｂ）が入力した署名σに含まれる因子σ１及び因子σ２とに基づいて、ペアリング値Ｃ’＝ｅ（σ１，σ２＋Ω）／Ａを算出する。
上記署名第三検証値算出部３５３Ｂは、上記処理装置（ＣＰＵ９１１）を用いて、上記検証公開鍵入力部（公開鍵入力部３１１Ｂ）が入力した公開鍵ＰＫに含まれる因子ｇ１と、上記検証署名入力部（署名入力部３１２Ｂ）が入力した署名σに含まれる因子π２とに基づいて、ペアリング値Ｄ＝ｅ（ｇ１，π２）を算出する。
上記署名第四検証値算出部３５４Ｂは、上記処理装置（ＣＰＵ９１１）を用いて、上記検証公開鍵入力部（公開鍵入力部３１１Ｂ）が入力した公開鍵ＰＫに含まれる因子ｕ及び因子ｇと、上記検証署名入力部（署名入力部３１２Ｂ）が入力した署名σに含まれる因子σ２及び因子σ３及び因子σ４と、上記検証メッセージ因子算出部（メッセージ因子算出部３４０Ｂ）が算出した因子ｖとに基づいて、ペアリング値Ｄ’＝ｅ（σ２，ｕ）／｛ｅ（ｇ，σ３）・ｅ（σ４，ｖ）｝を算出する。
上記署名検証判定部３５５Ｂは、上記処理装置（ＣＰＵ９１１）を用いて、上記署名第一検証値算出部３５１Ｂが算出したペアリング値Ｃと、上記署名第二検証値算出部３５２Ｂが算出したペアリング値Ｃ’と、上記署名第三検証値算出部３５３Ｂが算出したペアリング値Ｄと、上記署名第四検証値算出部３５４Ｂが算出したペアリング値Ｄ’とに基づいて、上記ペアリング値Ｃと上記ペアリング値Ｃ’とが等しいか否か、及び、上記ペアリング値Ｄと上記ペアリング値Ｄ’とが等しいか否かを判定し、上記ペアリング値Ｃと上記ペアリング値Ｃ’とが等しく、かつ、上記ペアリング値Ｄと上記ペアリング値Ｄ’とが等しいと判定した場合に、上記検証署名入力部（署名入力部３１２Ｂ）が入力した署名σが有効であると判定する。【０３３６】
この実施の形態における署名者追跡装置４００Ｂは、データを記憶する記憶装置と、データを処理する処理装置（ＣＰＵ９１１）と、追跡鍵記憶部４１４Ｂと、識別子記憶部４１５Ｂと、追跡署名入力部（署名入力部４１２Ｂ）と、署名ペアリング値算出部４５１Ｂと、識別子ペアリング値算出部４５２Ｂと、署名者判別部４５３Ｂとを有する。
上記追跡鍵記憶部４１４Ｂは、上記記憶装置を用いて、上記鍵生成装置５００Ｂが設定した追跡鍵ＴＫ＝（ｇ２）を記憶する。
上記識別子記憶部４１５Ｂは、上記記憶装置を用いて、上記署名鍵発行装置６００が発行した署名鍵ＳＫを識別する識別子ｓＩＤを記憶する。
上記追跡署名入力部（署名入力部４１２Ｂ）は、上記処理装置（ＣＰＵ９１１）を用いて、上記署名装置２００Ｂが出力した署名σを入力する。
上記署名ペアリング値算出部４５１Ｂは、上記処理装置（ＣＰＵ９１１）を用いて、上記追跡鍵記憶部４１４Ｂが記憶した追跡鍵ＴＫに含まれる因子ｇ２と、上記追跡署名入力部（署名入力部４１２Ｂ）が入力した署名σに含まれる因子σ２とに基づいて、ペアリング値Ｅ＝ｅ（ｇ２，σ２）を算出する。
上記識別子ペアリング値算出部４５２Ｂは、上記処理装置（ＣＰＵ９１１）を用いて、上記追跡鍵記憶部４１４Ｂが記憶した追跡鍵ＴＫに含まれる因子ｇ２と、上記識別子記憶部４１５Ｂが記憶した識別子ｓＩＤとに基づいて、ペアリング値ＥＩＤ＝ｅ（ｇ２，ｇ２）ｓＩＤを算出する。
上記署名者判別部４５３Ｂは、上記処理装置（ＣＰＵ９１１）を用いて、上記識別子ペアリング値算出部４５２Ｂが算出したペアリング値ＥＩＤのなかから、上記署名ペアリング値算出部４５１Ｂが算出したペアリング値Ｅと一致するものを探すことにより、上記追跡署名入力部（署名入力部４１２Ｂ）が入力した署名σを生成した署名鍵ＳＫの識別子を判別する。【０３３７】
この実施の形態における暗号システム８００Ｂによれば、有限生成因子群Ｇの群構造を利用して、匿名性を有するとともに、署名者を追跡可能なグループ署名を実現することができるという効果を奏する。
【図面の簡単な説明】
【０３３８】
【図１】実施の形態１における暗号システム８００の全体構成の一例を示すシステム構成図。
【図２】実施の形態１における暗号パラメータ設定装置１００、鍵生成装置５００、暗号文生成装置２００、暗号文復号装置３００、不正者追跡装置４００の外観の一例を示す図。
【図３】実施の形態１における暗号パラメータ設定装置１００、鍵生成装置５００、暗号文生成装置２００、暗号文復号装置３００、不正者追跡装置４００のハードウェア資源の一例を示す図。
【図４】実施の形態１における暗号パラメータ設定装置１００の機能ブロックの構成の一例を示すブロック構成図。
【図５】実施の形態１における暗号パラメータ設定装置１００が、暗号パラメータを算出する暗号パラメータ算出処理の流れの一例を示すフローチャート図。
【図６】実施の形態１における鍵生成装置５００の機能ブロックの構成の一例を示すブロック構成図。
【図７】実施の形態１における鍵生成装置５００が、出力基底ｇｉを算出する出力基底算出処理の流れの一例を示すフローチャート図。
【図８】実施の形態１における鍵算出部１５０の内部ブロックの構成の一例を示す詳細ブロック図。
【図９】実施の形態１における暗号文生成装置２００の機能ブロックの構成の一例を示すブロック構成図。
【図１０】実施の形態１における（正規の）暗号文復号装置３００の機能ブロックの構成の一例を示すブロック構成図。
【図１１】実施の形態１における不正者追跡装置４００の機能ブロックの構成の一例を示すブロック構成図。
【図１２】実施の形態１における不正者追跡装置４００のうち、追跡乱数生成部４３０、追跡行暗号文生成部４４０、追跡列暗号文生成部４５０の内部ブロックの一例を示す詳細ブロック図。
【図１３】実施の形態２における暗号システム８００Ｂの全体構成の一例を示すシステム構成図。
【図１４】実施の形態２における鍵生成装置５００Ｂの機能ブロックの構成の一例を示すブロック構成図。
【図１５】実施の形態２における鍵算出部１５０Ｂの内部ブロックの構成の一例を示す詳細ブロック図。
【図１６】実施の形態２における署名鍵発行装置６００の機能ブロックの構成の一例を示すブロック構成図。
【図１７】実施の形態２における署名装置２００Ｂの機能ブロックの構成の一例を示すブロック構成図。
【図１８】実施の形態２における署名検証装置３００Ｂの機能ブロックの構成の一例を示すブロック構成図。
【図１９】実施の形態２における署名者追跡装置４００Ｂの機能ブロックの構成の一例を示すブロック構成図。
【符号の説明】
【０３３９】
１００，１００Ｂ  暗号パラメータ設定装置、１１０  安全性指数入力部、１２０  因子群生成部、１２１  位数決定部、１２２  ランダム因子選択部、１２３  基底因子生成部、１２４  離散対数算出部、１２５  ペアリング対数算出部、１３０  条件記憶部、１４０  パラメータ設定部、１４１  条件入力部、１４２  ランダム行列選択部、１４３  出力基底算出部、１５０  鍵算出部、１５１  利用者人数入力部、１６０  乱数生成部、１６１  行乱数生成部、１６２  ペアリング乱数生成部、１６３  列乱数生成部、１６４  共通乱数生成部、１７０  公開鍵算出部、１７１  公開行基底算出部、１７２  公開列基底算出部、１７３  公開共通因子算出部、１７４  公開行第一因子算出部、１７５  公開行第二因子算出部、１７６  公開ペアリング値算出部、１７７  公開列因子算出部、１８０  個人鍵算出部、１８１  個人因子算出部、１９１  公開鍵設定部、１９２  個人鍵設定部、１９３  追跡鍵設定部、２００  暗号文生成装置、２１１  公開鍵入力部、２２１  平文入力部、２３０  暗号乱数生成部、２３１  暗号共通乱数生成部、２３２  暗号行乱数生成部、２３３  暗号列乱数生成部、２４０  行暗号文生成部、２４１  暗号行第一因子算出部、２４２  暗号行第二因子算出部、２４３  暗号行第三因子算出部、２４４  暗号鍵算出部、２４５  平文暗号化部、２５０  列暗号文生成部、２５１  暗号列第一因子算出部、２５２  暗号列第二因子算出部、２６１  行暗号文設定部、２６２  列暗号文設定部、３００  暗号文復号装置、３１１  暗号文入力部、３２１  インデックス記憶部、３２２  行暗号文入力部、３２３  列暗号文入力部、３３１  個人鍵記憶部、３４０  復号文生成部、３４１  復号鍵算出部、３４２  暗号文復号部、４００  不正者追跡装置、４１１  追跡鍵記憶部、４２１  目標決定部、４２２  追跡平文生成部、４３０  追跡乱数生成部、４３１  追跡共通乱数生成部、４３２  追跡行乱数生成部、４３３  追跡列乱数生成部、４３４  撹乱行乱数生成部、４３５  撹乱列乱数生成部、４４０  追跡行暗号文生成部、４４１  追跡行第一因子算出部、４４２  追跡行第二因子算出部、４４３  追跡行第三因子算出部、４４４  追跡暗号鍵算出部、４４５  追跡平文暗号化部、４５０  追跡列暗号文生成部、４５１  追跡列第一因子算出部、４５２  追跡列第二因子算出部、４６１  行暗号文設定部、４６２  列暗号文設定部、４６３  暗号文出力部、４７１  復号文入力部、４７２  漏洩元判別部、５００  鍵生成装置、５１１  基底因子記憶部、５１２  ペアリング対数記憶部、１５０Ｂ  鍵算出部、１５１Ｂ  ビット長入力部、１６０Ｂ  乱数生成部、１６１Ｂ  ペアリング乱数生成部、１６２Ｂ  マスター乱数生成部、１６３Ｂ  基底乱数生成部、１７０Ｂ  公開鍵算出部、１７１Ｂ  公開基底算出部、１７２Ｂ  公開第一因子算出部、１７３Ｂ  公開ペアリング値算出部、１７４Ｂ  公開第二因子生成部、１７５Ｂ  公開第三因子生成部、１７６Ｂ  公開ビット因子生成部、１８０Ｂ  マスター鍵算出部、１８１Ｂ  マスター因子算出部、１９１Ｂ  公開鍵設定部、１９２Ｂ  マスター鍵設定部、１９３Ｂ  追跡鍵設定部、６００  署名鍵発行装置、１５４Ｃ  発行要求入力部、１５５Ｃ  発行済識別子記憶部、１５６Ｃ  マスター鍵記憶部、１５７Ｃ  公開鍵入力部、１６０Ｃ  識別子生成部、１８０Ｃ  署名鍵算出部、１８４Ｃ  署名第一鍵算出部、１８５Ｃ  署名第二鍵算出部、１８６Ｃ  署名第三鍵算出部、１９４Ｃ  識別子設定部、１９５Ｃ  署名鍵設定部、２００Ｂ  署名装置、２１１Ｂ  公開鍵入力部、２１２Ｂ  署名鍵入力部、２１３Ｂ  メッセージ入力部、２２０Ｂ  署名鍵検証部、２２１Ｂ  署名鍵第一検証値算出部、２２２Ｂ  署名鍵第二検証値算出部、２２３Ｂ  署名鍵第三検証値算出部、２２４Ｂ  署名鍵検証判定部、２２５Ｂ  署名鍵記憶部、２３０Ｂ  署名乱数生成部、２３１Ｂ  署名第一乱数生成部、２３２Ｂ  署名第二乱数生成部、２４０Ｂ  メッセージ因子算出部、２５０Ｂ  署名算出部、２５１Ｂ  署名第一因子算出部、２５２Ｂ  署名第二因子算出部、２５３Ｂ  署名第三因子算出部、２５４Ｂ  署名第四因子算出部、２５５Ｂ  署名第五因子算出部、２５６Ｂ  署名第六因子算出部、２６１Ｂ  署名出力部、３００Ｂ  署名検証装置、３１１Ｂ  公開鍵入力部、３１２Ｂ  署名入力部、３１３Ｂ  メッセージ入力部、３４０Ｂ  メッセージ因子算出部、３５０Ｂ  署名検証部、３５１Ｂ  署名第一検証値算出部、３５２Ｂ  署名第二検証値算出部、３５３Ｂ  署名第三検証値算出部、３５４Ｂ  署名第四検証値算出部、３５５Ｂ  署名検証判定部、４００Ｂ  署名者追跡装置、４１２Ｂ  署名入力部、４１４Ｂ  追跡鍵記憶部、４１５Ｂ  識別子記憶部、４５１Ｂ  署名ペアリング値算出部、４５２Ｂ  識別子ペアリング値算出部、４５３Ｂ  署名者判別部、８００，８００Ｂ  暗号システム、９０１  表示装置、９０２  キーボード、９０３  マウス、９０４  ＦＤＤ、９０５  ＣＤＤ、９０６  プリンタ装置、９０７  スキャナ装置、９１０  システムユニット、９１１  ＣＰＵ、９１２  バス、９１３  ＲＯＭ、９１４  ＲＡＭ、９１５  通信装置、９２０  磁気ディスク装置、９２１  ＯＳ、９２２  ウィンドウシステム、９２３  プログラム群、９２４  ファイル群、９３１  電話器、９３２  ファクシミリ機、９４０  インターネット、９４１  ゲートウェイ、９４２  ＬＡＮ。
【図１】
2009090750.tif 000027
【図２】
2009090750.tif 000028
【図３】
2009090750.tif 000029
【図４】
2009090750.tif 000030
【図５】
2009090750.tif 000031
【図６】
2009090750.tif 000032
【図７】
2009090750.tif 000033
【図８】
2009090750.tif 000034
【図９】
2009090750.tif 000035
【図１０】
2009090750.tif 000036
【図１１】
2009090750.tif 000037
【図１２】
2009090750.tif 000038
【図１３】
2009090750.tif 000039
【図１４】
2009090750.tif 000040
【図１５】
2009090750.tif 000041
【図１６】
2009090750.tif 000042
【図１７】
2009090750.tif 000043
【図１８】
2009090750.tif 000044
【図１９】
2009090750.tif 000045
【手続補正書】
【提出日】平成22年3月26日(2010.3.26)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項８
【補正方法】変更
【補正の内容】
【請求項８】
データを処理する処理装置と、データを記憶する記憶装置と、基底因子記憶部と、ペアリング対数記憶部と、ランダム行列選択部と、出力基底算出部と、鍵算出部とを有し、
上記基底因子記憶部は、上記記憶装置を用いて、上記請求項４に記載の暗号パラメータ設定装置が算出した複数の基底因子Ｄ〜ｊを記憶し、
上記ペアリング対数記憶部は、上記記憶装置を用いて、上記暗号パラメータ設定装置が算出した複数のペアリング対数係数ηｉを記憶し、
上記ランダム行列選択部は、上記処理装置を用いて、複数の整数ｍ’μν（μ及びνは、１以上ｂ以下の整数。ｂは２以上２ｄ以下の整数。）が満たすべき所定の条件に基づいて、関係式：Ｍ’＝Ｖ・Ｍ・ＶＴ（ただし、Ｍ’は整数ｍ’μνをμ行ν列成分とするｂ次の正方行列。Ｖは０以上ｒ−１以下のいずれかの整数を値とする変数ｃμνをμ行ν列成分とするｂ行２ｄ列の行列。ＶＴは上記行列Ｖを転置した２ｄ行ｂ列の行列。Ｍは、整数ｍμνをμ行ν列成分とする２ｄ次の正方行列。上記整数ｍμνは、μ＋ν＝２ｄ＋１のときην＋１、μ＋ν≠２ｄ＋１のとき０。）を満たす複数の行列Ｖのなかから、ランダム行列Ｖ＊をランダムに選択し、
上記出力基底算出部は、上記処理装置を用いて、上記基底因子記憶部が記憶した複数の基底因子Ｄ〜ｊと、上記ランダム行列選択部が選択したランダム行列Ｖ＊とに基づいて、複数の出力基底ｇｋ＝ｖｋ・Ｄ〜（ただし、ｋは１以上ｂ以下の整数。ｇｋは上記拡大体Ｋ上におけるヤコビ多様体ＪａｃＣの因子。ｖｋは上記ランダム行列Ｖ＊の第ｋ行ベクトル。Ｄ〜は上記複数の基底因子Ｄ〜ｊをｊ＋１行目の成分とする２ｄ次の縦ベクトル。）を算出し、
上記鍵算出部は、上記処理装置を用いて、上記出力基底算出部が算出した複数の出力基底ｇｋと上記ランダム行列選択部が選択したランダム行列Ｖ＊とに基づいて、暗号演算に用いられる鍵を算出する
ことを特徴とする鍵生成装置。
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項１４
【補正方法】変更
【補正の内容】
【請求項１４】
上記暗号パラメータ設定装置は、請求項４に記載の暗号パラメータ設定装置であり、
上記鍵生成装置は、請求項８に記載の鍵生成装置であり、
上記ランダム因子選択部は、上記処理装置を用いて、有限体Ｆｐ上における超楕円曲線Ｃ：Ｙ２＝Ｘ５＋１（ただし、素数ｐを５で割った余りａは２または３。）のヤコビ多様体ＪａｃＣの複数の因子のなかから、ランダム因子Ｄ＊を選択し、
上記ランダム行列選択部は、上記処理装置を用いて、条件：ｍ’１２＝ｍ’２１＝ｍ’３４＝ｍ’４３＝ｍ’１４＝ｍ’４１＝ｍ’２３＝ｍ’３２＝０，ｍ’１１≠０，ｍ’２２≠０，ｍ’３３≠０，ｍ’４４≠０を満たす４行４列のランダム行列Ｖ＊を選択し、
上記出力基底算出部は、上記処理装置を用いて、上記基底因子記憶部が記憶した複数の基底因子Ｄ〜ｊと、上記ランダム行列選択部が算出したランダム行列Ｖ＊とに基づいて、四つの出力基底ｇｋ＝ｖｋ・Ｄ〜（ただし、ｋは１以上４以下の整数。）を算出し、
上記鍵算出部は、利用者人数入力部と、公開行基底算出部と、公開列基底算出部と、行乱数生成部と、列乱数生成部と、ペアリング乱数生成部と、共通乱数生成部と、公開共通因子算出部と、公開行第一因子算出部と、公開行第二因子算出部と、公開ペアリング値算出部と、公開列因子算出部と、公開鍵設定部と、個人因子算出部と、個人鍵設定部とを有し、
上記利用者人数入力部は、上記処理装置を用いて、利用者の数ｎを表わす整数ｎ１及び整数ｎ２（ただし、ｎ＝ｎ１ｎ２）を入力し、
上記公開行基底算出部は、上記処理装置を用いて、上記出力基底算出部が算出した出力基底ｇ１と出力基底ｇ２とに基づいて、上記ヤコビ多様体ＪａｃＣの因子ｇ＝ｇ１＋ｇ２を算出し、
上記公開列基底算出部は、上記処理装置を用いて、上記出力基底算出部が算出した出力基底ｇ３と出力基底ｇ４とに基づいて、上記ヤコビ多様体ＪａｃＣの因子ｈ＝ｇ３＋ｇ４を算出し、
上記行乱数生成部は、上記処理装置を用いて、上記利用者人数入力部が入力した整数ｎ１に基づいて、ｎ１個の乱数ｒｘ（ただし、ｘは１以上ｎ１以下の整数。乱数ｒｘは１以上ｒ−１以下の整数。）をランダムに生成し、
上記列乱数生成部は、上記処理装置を用いて、上記利用者人数入力部が入力した整数ｎ２に基づいて、ｎ２個の乱数ｃｙ（ただし、ｙは１以上ｎ２以下の整数。乱数ｃｙは１以上ｒ−１以下の整数。）をランダムに生成し、
上記ペアリング乱数生成部は、上記処理装置を用いて、上記利用者人数入力部が入力した整数ｎ１に基づいて、ｎ１個の乱数αｘ（ただし、ｘは１以上ｎ１以下の整数。乱数αｘは１以上ｒ−１以下の整数。）をランダムに生成し、
上記共通乱数生成部は、上記処理装置を用いて、乱数β（ただし、乱数βは１以上ｒ−１以下の整数。）をランダムに生成し、
上記公開共通因子算出部は、上記処理装置を用いて、上記出力基底算出部が算出した出力基底ｇ２と、上記共通乱数生成部が生成した乱数βとに基づいて、上記ヤコビ多様体ＪａｃＣの因子Ｅ＝β・ｇ２を算出し、
上記公開行第一因子算出部は、上記処理装置を用いて、上記出力基底算出部が算出した出力基底ｇ２と、上記行乱数生成部が生成したｎ１個の乱数ｒｘと、上記共通乱数生成部が生成した乱数βとに基づいて、上記ヤコビ多様体ＪａｃＣのｎ１個の因子Ｅｘ＝β・ｒｘ・ｇ２（ただし、ｘは１以上ｎ１以下の整数。）を算出し、
上記公開行第二因子算出部は、上記処理装置を用いて、上記出力基底算出部が算出した出力基底ｇ４と、上記行乱数生成部が生成したｎ１個の乱数ｒｘと、上記共通乱数生成部が生成した乱数βとに基づいて、上記ヤコビ多様体ＪａｃＣのｎ１個の因子Ｆｘ＝β・ｒｘ・ｇ４（ただし、ｘは１以上ｎ１以下の整数。）を算出し、
上記公開ペアリング値算出部は、上記処理装置を用いて、上記出力基底算出部が算出した出力基底ｇ２と、上記ペアリング乱数生成部が生成したｎ１個の乱数αｘと、上記共通乱数生成部が生成した乱数βとに基づいて、ｎ１個のペアリング値Ｇｘ＝ｅ（ｇ４，ｇ４）β・αｘ（ただし、ペアリングｅはｅ（Ｄ，Ｄ’）＝ｅＷ（Ｄ，φ（Ｄ’））。ｅＷはヴェイユペアリング。φは上記ヤコビ多様体ＪａｃＣ上における計算可能な準同型写像。）を算出し、
上記公開列因子算出部は、上記処理装置を用いて、上記公開行基底算出部が算出した因子ｇと、上記列乱数生成部が生成したｎ２個の乱数ｃｙとに基づいて、上記ヤコビ多様体ＪａｃＣのｎ２個の因子Ｈｙ＝ｃｙ・ｇ（ただし、ｙは１以上ｎ２以下の整数。）を算出し、
上記公開鍵設定部は、上記処理装置を用いて、上記公開行基底算出部が算出した因子ｇと、上記公開列基底算出部が算出した因子ｈと、上記公開共通因子算出部が算出した因子Ｅと、上記公開行第一因子算出部が算出したｎ１個の因子Ｅｘと、上記公開行第二因子算出部が算出したｎ１個の因子Ｆｘと、上記公開ペアリング値算出部が算出したｎ１個のペアリング値Ｇｘと、上記公開列因子算出部が算出したｎ２個の因子Ｈｙとに基づいて、公開鍵ＰＫ＝（ｇ，ｈ，Ｅ，Ｅｘ，Ｆｘ，Ｇｘ，Ｈｙ）（ただし、ｘは１以上ｎ１以下の整数。ｙは１以上ｎ２以下の整数。）を設定し、
上記個人因子算出部は、上記処理装置を用いて、上記公開行基底算出部が算出した因子ｇと、上記行乱数生成部が生成したｎ１個の乱数ｒｘと、上記列乱数生成部が生成したｎ２個の乱数ｃｙと、上記ペアリング乱数生成部が生成したｎ１個の乱数αｘとに基づいて、ｎ個の因子Ｋｘ，ｙ＝αｘ・ｇ＋ｒｘｃｙ・ｇ（ただし、ｘは１以上ｎ１以下の整数。ｙは１以上ｎ２以下の整数。）を算出し、
上記個人鍵設定部は、上記処理装置を用いて、上記個人因子算出部が算出したｎ個の因子Ｋｘ，ｙに基づいて、ｎ人の利用者にそれぞれ対応するｎ個の個人鍵ＳＫｘ，ｙ＝（Ｋｘ，ｙ）を設定し、
上記暗号文生成装置は、データを処理する処理装置と、公開鍵入力部と、平文入力部と、暗号共通乱数生成部と、暗号列乱数生成部と、暗号行乱数生成部と、暗号行第一因子算出部と、暗号行第二因子算出部と、暗号行第三因子算出部と、暗号鍵算出部と、平文暗号化部と、行暗号文設定部と、暗号列第一因子算出部と、暗号列第二因子算出部と、列暗号文設定部とを有し、
上記公開鍵入力部は、上記処理装置を用いて、上記鍵生成装置が設定した公開鍵ＰＫ＝（ｇ，ｈ，Ｅ，Ｅｘ，Ｆｘ，Ｇｘ，Ｈｙ）を入力し、
上記平文入力部は、上記処理装置を用いて、暗号化する平文Ｍを入力し、
上記暗号共通乱数生成部は、上記処理装置を用いて、乱数ｔ（ただし、乱数ｔは１以上ｒ−１以下の整数。）をランダムに生成し、
上記暗号列乱数生成部は、上記処理装置を用いて、ｎ２個以下の乱数ｗｙ（ただし、ｙは１以上ｎ２以下の整数。乱数ｗｙは１以上ｒ−１以下の整数。）を生成し、
上記暗号行乱数生成部は、上記処理装置を用いて、ｎ１個以下の乱数ｓｘ（ただし、ｘは１以上ｎ１以下の整数。乱数ｓｘは１以上ｒ−１以下の整数。）を生成し、
上記暗号行第一因子算出部は、上記処理装置を用いて、上記公開鍵入力部が入力した公開鍵ＰＫに含まれるｎ１個の因子Ｅｘと、上記暗号行乱数生成部が生成したｎ１個以下の乱数ｓｘとに基づいて、ヤコビ多様体ＪａｃＣのｎ１個以下の因子Ｒｘ＝ｓｘ・Ｅｘ（ただし、ｘは１以上ｎ１以下の整数。）を算出し、
上記暗号行第二因子算出部は、上記処理装置を用いて、上記公開鍵入力部が入力した公開鍵ＰＫに含まれるｎ１個の因子Ｆｘと、上記暗号行乱数生成部が生成したｎ１個以下の乱数ｓｘとに基づいて、ヤコビ多様体ＪａｃＣのｎ１個以下の因子Ｒ〜ｘ＝ｓｘ・Ｆｘ（ただし、ｘは１以上ｎ１以下の整数。）を算出し、
上記暗号行第三因子算出部は、上記処理装置を用いて、上記公開鍵入力部が入力した公開鍵ＰＫに含まれる因子Ｅと、上記暗号共通乱数生成部が生成した乱数ｔと、上記暗号行乱数生成部が生成したｎ１個以下の乱数ｓｘとに基づいて、ヤコビ多様体ＪａｃＣのｎ１個以下の因子Ａｘ＝ｓｘｔ・Ｅ（ただし、ｘは１以上ｎ１以下の整数。）を算出し、
上記暗号鍵算出部は、上記処理装置を用いて、上記公開鍵入力部が入力した公開鍵ＰＫに含まれるｎ１個のペアリング値Ｇｘと、上記暗号共通乱数生成部が生成した乱数ｔと、上記暗号行乱数生成部が生成したｎ１個以下の乱数ｓｘとに基づいて、ｎ１個以下のペアリング値ＣＫｘ＝Ｇｘｓｘｔ（ただし、ｘは１以上ｎ１以下の整数。）を算出し、
上記平文暗号化部は、上記処理装置を用いて、上記平文入力部が入力した平文Ｍと、上記暗号鍵算出部が算出したｎ１個以下のペアリング値ＣＫｘとに基づいて、上記ｎ１個以下のペアリング値ＣＫｘをそれぞれ暗号鍵として使用して上記平文Ｍを暗号化して、ｎ１個以下の暗号文Ｂｘ（ただし、ｘは１以上ｎ１以下の整数。）を生成し、
上記行暗号文設定部は、上記処理装置を用いて、上記暗号行第一因子算出部が算出したｎ１個以下の因子Ｒｘと、上記暗号行第二因子算出部が算出したｎ１個以下の因子Ｒ〜ｘと、上記暗号行第三因子算出部が算出したｎ１個以下の因子Ａｘと、上記平文暗号化部が生成したｎ１個以下の暗号文Ｂｘとに基づいて、ｎ１個以下の行暗号文ＣＴｘ＝（Ｒｘ，Ｒ〜ｘ，Ａｘ，Ｂｘ）（ただし、ｘは１以上ｎ１以下の整数。）を設定し、
上記暗号列第一因子算出部は、上記処理装置を用いて、上記公開鍵入力部が入力した公開鍵ＰＫに含まれる因子ｈ及び因子Ｈｙと、上記暗号共通乱数生成部が生成した乱数ｔと、上記暗号列乱数生成部が生成した乱数ｗｙとに基づいて、ヤコビ多様体ＪａｃＣのｎ２個以下の因子Ｃｙ＝ｔ・Ｈｙ＋ｗｙ・ｈ（ただし、ｙは１以上ｎ２以下の整数。）を算出し、
上記暗号列第二因子算出部は、上記処理装置を用いて、上記公開鍵入力部が入力した公開鍵ＰＫに含まれる因子ｇと、上記暗号列乱数生成部が生成した乱数ｗｙとに基づいて、ヤコビ多様体ＪａｃＣのｎ２個以下の因子Ｃ〜ｙ＝ｗｙ・ｇ（ただし、ｙは１以上ｎ２以下の整数。）を算出し、
上記列暗号文設定部は、上記処理装置を用いて、上記暗号列第一因子算出部が算出したｎ２個以下の因子Ｃｙと、上記暗号列第二因子算出部が算出したｎ２個以下の因子Ｃ〜ｙとに基づいて、ｎ２個以下の列暗号文ＣＴｙ＝（Ｃｙ，Ｃ〜ｙ）（ただし、ｙは１以上ｎ２以下の整数。）を設定し、
上記暗号文復号装置は、データを記憶する記憶装置と、データを処理する処理装置と、個人鍵記憶部と、行暗号文入力部と、列暗号文入力部と、復号鍵算出部と、暗号文復号部とを有し、
上記個人鍵記憶部は、上記記憶装置を用いて、上記鍵生成装置が設定したｎ個の個人鍵ＳＫｘ，ｙのうち、上記暗号文復号装置の利用者に対応する所定のインデックスＸ及びＹ（ただし、Ｘは１以上ｎ１以下の整数。Ｙは１以上ｎ２以下の整数。）に対応する個人鍵ＳＫＸ，Ｙ＝（ＫＸ，Ｙ）を記憶し、
上記行暗号文入力部は、上記処理装置を用いて、上記暗号文生成装置が設定したｎ１個以下の行暗号文ＣＴｘのうち、上記インデックスＸに対応する行暗号文ＣＴＸ＝（ＲＸ，Ｒ〜Ｘ，ＡＸ，ＢＸ）を入力し、
上記列暗号文入力部は、上記処理装置を用いて、上記暗号文生成装置が設定したｎ２個以下の列暗号文ＣＴｙのうち、上記インデックスＹに対応する列暗号文ＣＴＹ＝（ＣＹ，Ｃ〜Ｙ）を入力し、
上記復号鍵算出部は、上記処理装置を用いて、上記個人鍵記憶部が記憶した個人鍵ＳＫＸ，Ｙと、上記行暗号文入力部が入力した行暗号文ＣＴＸに含まれる因子ＲＸ及び因子Ｒ〜Ｘ及び因子ＡＸと、上記列暗号文入力部が入力した列暗号文ＣＴＹに含まれる因子ＣＹ及び因子Ｃ〜Ｙとに基づいて、ペアリング値ＣＫ’＝ｅ（ＫＸ，Ｙ，ＡＸ）・ｅ（Ｒ〜Ｘ,Ｃ〜Ｙ）／ｅ（ＣＹ，ＲＸ）を算出し、
上記暗号文復号部は、上記処理装置を用いて、上記行暗号文入力部が入力した行暗号文ＣＴＸに含まれる暗号文ＢＸと、上記復号鍵算出部が算出したペアリング値ＣＫ’とに基づいて、上記ペアリング値ＣＫ’を復号鍵として使用して上記暗号文ＢＸを復号して、復号文Ｍ’を生成する
ことを特徴とする請求項１２に記載の暗号システム。
【手続補正３】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項１７
【補正方法】変更
【補正の内容】
【請求項１７】
上記暗号パラメータ設定装置は、請求項４に記載の暗号パラメータ設定装置であり、
上記鍵生成装置は、請求項８に記載の鍵生成装置であり、
上記ランダム因子選択部は、上記処理装置を用いて、有限体Ｆｐ上における超楕円曲線Ｃ：Ｙ２＝Ｘ５＋１（ただし、素数ｐを５で割った余りａは２または３。）のヤコビ多様体ＪａｃＣの複数の因子のなかから、ランダム因子Ｄ＊を選択し、
上記ランダム行列選択部は、上記処理装置を用いて、条件：ｍ’１２＝ｍ’２１＝０，ｍ’１１≠０，ｍ’２２≠０を満たす２行２列のランダム行列Ｖ＊を選択し、
上記出力基底算出部は、上記処理装置を用いて、上記基底因子記憶部が記憶した複数の基底因子Ｄ〜ｊと、上記ランダム行列選択部が算出したランダム行列Ｖ＊とに基づいて、二つの出力基底ｇｋ＝ｖｋ・Ｄ〜（ただし、ｋは１以上２以下の整数。）を算出し、
上記鍵算出部は、ビット長入力部と、基底乱数生成部と、ペアリング乱数生成部と、マスター乱数生成部と、公開基底算出部と、公開第一因子算出部と、公開ペアリング値算出部と、公開第二因子生成部と、公開第三因子生成部と、公開ビット因子生成部と、マスター因子算出部と、公開鍵設定部と、マスター鍵設定部と、追跡鍵設定部とを有し、
上記ビット長入力部は、上記処理装置を用いて、署名するメッセージのビット長ｍを入力し、
上記基底乱数生成部は、上記処理装置を用いて、乱数β（ただし、乱数βは１以上ｒ−１以下の整数。）をランダムに生成し、
上記ペアリング乱数生成部は、上記処理装置を用いて、乱数α（ただし、乱数αは１以上ｒ−１以下の整数。）をランダムに生成し、
上記マスター乱数生成部は、上記処理装置を用いて、乱数ω（ただし、乱数ωは１以上ｒ−１以下の整数。）をランダムに生成し、
上記公開基底算出部は、上記処理装置を用いて、上記出力基底算出部が算出した出力基底ｇ１と出力基底ｇ２と、上記基底乱数生成部が生成した乱数βとに基づいて、上記ヤコビ多様体ＪａｃＣの因子ｇ＝ｇ２＋β・ｇ１を算出し、
上記公開第一因子算出部は、上記処理装置を用いて、上記マスター乱数生成部が生成した乱数ωと、上記公開基底算出部が算出した因子ｇとに基づいて、上記ヤコビ多様体ＪａｃＣの因子Ω＝ω・ｇを算出し、
上記公開ペアリング値算出部は、上記処理装置を用いて、上記ペアリング乱数生成部が生成した乱数αと、上記公開基底算出部が算出した因子ｇとに基づいて、ペアリング値Ａ＝ｅ（ｇ，ｇ）αを算出し、
上記公開第二因子生成部は、上記処理装置を用いて、上記ヤコビ多様体ＪａｃＣの因子ｕをランダムに生成し、
上記公開第三因子生成部は、上記処理装置を用いて、上記ヤコビ多様体ＪａｃＣの因子ｖ’をランダムに生成し、
上記公開ビット因子生成部は、上記処理装置を用いて、上記ビット長入力部が入力したビット長ｍに基づいて、上記ヤコビ多様体ＪａｃＣのｍ個の因子ｖｉ（ただし、ｉは１以上ｍ以下の整数。）をランダムに生成し、
上記マスター因子算出部は、上記処理装置を用いて、上記ペアリング乱数生成部が生成した乱数αと、上記公開基底算出部が算出した因子ｇとに基づいて、上記ヤコビ多様体ＪａｃＣの因子ｇ’＝α・ｇを算出し、
上記公開鍵設定部は、上記処理装置を用いて、上記出力基底算出部が算出した出力基底ｇ１と、上記公開基底算出部が算出した因子ｇと、上記公開第一因子算出部が算出した因子Ωと、上記公開ペアリング値算出部が算出したペアリング値Ａと、上記公開第二因子生成部が生成した因子ｕと、上記公開第三因子生成部が生成した因子ｖ’と、上記公開ビット因子生成部が生成したｍ個の因子ｖｉとに基づいて、公開鍵ＰＫ＝（ｇ１，ｇ，Ω，Ａ，ｕ，ｖ’，ｖｉ）（ただし、ｉは１以上ｍ以下の整数。）を設定し、
上記マスター鍵設定部は、上記処理装置を用いて、上記マスター乱数生成部が生成した乱数ωと、上記マスター因子算出部が算出した因子ｇ’とに基づいて、マスター鍵ＭＫ＝（ω，ｇ’）を設定し、
上記追跡鍵設定部は、上記処理装置を用いて、上記出力基底算出部が算出した出力基底ｇ２に基づいて、追跡鍵ＴＫ＝（ｇ２）を設定し、
上記署名鍵発行装置は、データを記憶する記憶装置と、データを処理する処理装置と、マスター鍵記憶部と、発行公開鍵入力部と、識別子生成部と、署名第一鍵算出部と、署名第二鍵算出部と、署名第三鍵算出部と、署名鍵設定部と、識別子設定部とを有し、
上記マスター鍵記憶部は、上記記憶装置を用いて、上記鍵生成装置が設定したマスター鍵ＭＫ＝（ω，ｇ’）を記憶し、
上記発行公開鍵入力部は、上記処理装置を用いて、上記鍵生成装置が設定した公開鍵ＰＫ＝（ｇ１，ｇ，Ω，Ａ，ｕ，ｖ’，ｖｉ）を入力し、
上記識別子生成部は、上記処理装置を用いて、識別子ｓＩＤ（ただし、識別子ｓＩＤは１以上ｒ−１以下の整数。）をランダムに生成し、
上記署名第一鍵算出部は、上記処理装置を用いて、上記マスター鍵記憶部が記憶したマスター鍵ＭＫに含まれる乱数ω及び因子ｇ’と、上記識別子生成部が生成した識別子ｓＩＤとに基づいて、上記ヤコビ多様体ＪａｃＣの因子Ｋ１＝｛１／（ω＋ｓＩＤ）｝・ｇ’を算出し、
上記署名第二鍵算出部は、上記処理装置を用いて、上記発行公開鍵入力部が記憶した公開鍵ＰＫに含まれる因子ｇと、上記識別子生成部が生成した識別子ｓＩＤとに基づいて、上記ヤコビ多様体ＪａｃＣの因子Ｋ２＝ｓＩＤ・ｇを算出し、
上記署名第三鍵算出部は、上記処理装置を用いて、上記発行公開鍵入力部が記憶した公開鍵ＰＫに含まれる因子ｕと、上記識別子生成部が生成した識別子ｓＩＤとに基づいて、上記ヤコビ多様体ＪａｃＣの因子Ｋ３＝ｓＩＤ・ｕを算出し、
上記署名鍵設定部は、上記処理装置を用いて、上記署名第一鍵算出部が算出した因子Ｋ１と、上記署名第二鍵算出部が算出した因子Ｋ２と、上記署名第三鍵算出部が算出した因子Ｋ３とに基づいて、署名鍵ＳＫ＝（Ｋ１，Ｋ２，Ｋ３）を設定し、
上記識別子設定部は、上記処理装置を用いて、上記識別子生成部が生成した識別子ｓＩＤを、上記署名鍵設定部が設定した署名鍵ＳＫを識別する識別子に設定し、
上記署名装置は、データを記憶する記憶装置と、データを処理する処理装置と、署名鍵記憶部と、署名公開鍵入力部と、署名メッセージ入力部と、署名メッセージ因子算出部と、署名第一乱数生成部と、署名第二乱数生成部と、署名第一因子算出部と、署名第二因子算出部と、署名第三因子算出部と、署名第四因子算出部と、署名第五因子算出部と、署名第六因子算出部と、署名出力部とを有し、
上記署名鍵記憶部は、上記記憶装置を用いて、上記鍵生成装置が設定した署名鍵ＳＫ＝（Ｋ１，Ｋ２，Ｋ３）を記憶し、
上記署名公開鍵入力部は、上記処理装置を用いて、上記鍵生成装置が設定した公開鍵ＰＫ＝（ｇ１，ｇ，Ω，Ａ，ｕ，ｖ’，ｖｉ）を入力し、
上記署名メッセージ入力部は、上記処理装置を用いて、署名するメッセージＭを入力し、
上記署名メッセージ因子算出部は、上記処理装置を用いて、上記署名公開鍵入力部が入力した公開鍵ＰＫに含まれる因子ｖ’及びｍ個の因子ｖｉと、上記署名メッセージ入力部が入力したメッセージＭとに基づいて、上記ヤコビ多様体ＪａｃＣの因子ｖ＝ｖ’＋Σ（μｉ・ｖｉ）（ただし、ｉは１以上ｍ以下の整数。μｉは上記メッセージＭのｉ番目のビットを表わす０または１の整数。）を算出し、
上記署名第一乱数生成部は、上記処理装置を用いて、乱数ｓ（ただし、乱数ｓは１以上ｒ−１以下の整数。）を生成し、
上記署名第二乱数生成部は、上記処理装置を用いて、四つの乱数ｔｊ（ただし、ｊは１以上４以下の整数。乱数ｔｊは１以上ｒ−１以下の整数。）をランダムに生成し、
上記署名第一因子算出部は、上記処理装置を用いて、上記署名公開鍵入力部が入力した公開鍵ＰＫに含まれる因子ｇ１と、上記署名鍵記憶部が記憶した署名鍵ＳＫに含まれる因子Ｋ１と、上記署名第二乱数生成部が生成した乱数ｔ１とに基づいて、上記ヤコビ多様体ＪａｃＣの因子σ１＝Ｋ１＋ｔ１・ｇ１を算出し、
上記署名第二因子算出部は、上記処理装置を用いて、上記署名公開鍵入力部が入力した公開鍵ＰＫに含まれる因子ｇ１と、上記署名鍵記憶部が記憶した署名鍵ＳＫに含まれる因子Ｋ２と、上記署名第二乱数生成部が生成した乱数ｔ２とに基づいて、上記ヤコビ多様体ＪａｃＣの因子σ２＝Ｋ２＋ｔ２・ｇ１を算出し、
上記署名第三因子算出部は、上記処理装置を用いて、上記署名公開鍵入力部が入力した公開鍵ＰＫに含まれる因子ｇ１と、上記署名鍵記憶部が記憶した署名鍵ＳＫに含まれる因子Ｋ３と、上記署名メッセージ因子算出部が算出した因子ｖと、上記署名第一乱数生成部が生成した乱数ｓと、上記署名第二乱数生成部が生成した乱数ｔ３とに基づいて、上記ヤコビ多様体ＪａｃＣの因子σ３＝Ｋ３＋ｓ・ｖ＋ｔ３・ｇ１を算出し、
上記署名第四因子算出部は、上記処理装置を用いて、上記署名公開鍵入力部が入力した公開鍵ＰＫに含まれる因子ｇ及び因子ｇ１と、上記署名第一乱数生成部が生成した乱数ｓと、上記署名第二乱数生成部が生成した乱数ｔ４とに基づいて、上記ヤコビ多様体ＪａｃＣの因子σ４＝−ｓ・ｇ＋ｔ４・ｇ１を算出し、
上記署名第五因子算出部は、上記処理装置を用いて、上記署名公開鍵入力部が入力した公開鍵ＰＫに含まれる因子ｇ１及び因子Ωと、上記署名鍵記憶部が記憶した署名鍵ＳＫに含まれる因子Ｋ１及び因子Ｋ２と、上記署名第二乱数生成部が生成した乱数ｔ１及び乱数ｔ２とに基づいて、上記ヤコビ多様体ＪａｃＣの因子π１＝ｔ１ｔ２・ｇ１＋ｔ２・Ｋ１＋ｔ１・（Ｋ２＋Ω）を算出し、
上記署名第六因子算出部は、上記処理装置を用いて、上記署名公開鍵入力部が入力した公開鍵ＰＫに含まれる因子ｇ及び因子ｕと、上記署名メッセージ因子算出部が算出した因子ｖと、上記署名第二乱数生成部が生成した乱数ｔ２及び乱数ｔ３及び乱数ｔ４とに基づいて、上記ヤコビ多様体ＪａｃＣの因子π２＝ｔ２・ｕ−ｔ３・ｇ−ｔ４・ｖを算出し、
上記署名出力部は、上記処理装置を用いて、上記署名第一因子算出部が算出した因子σ１と、上記署名第二因子算出部が算出した因子σ２と、上記署名第三因子算出部が算出した因子σ３と、上記署名第四因子算出部が算出した因子σ４と、上記署名第五因子算出部が算出した因子π１と、上記署名第六因子算出部が算出した因子π２とに基づいて、署名σ＝（σ１，σ２，σ３，σ４，π１，π２）を出力し、
上記署名検証装置は、データを処理する処理装置と、検証公開鍵入力部と、検証署名入力部と、検証メッセージ入力部と、検証メッセージ因子算出部と、署名第一検証値算出部と、署名第二検証値算出部と、署名第三検証値算出部と、署名第四検証値算出部と、署名検証判定部とを有し、
上記検証公開鍵入力部は、上記処理装置を用いて、上記鍵生成装置が設定した公開鍵ＰＫ＝（ｇ１，ｇ，Ω，Ａ，ｕ，ｖ’，ｖｉ）を入力し、
上記検証署名入力部は、上記処理装置を用いて、上記署名装置が出力した署名σ＝（σ１，σ２，σ３，σ４，π１，π２）を入力し、
上記検証メッセージ入力部は、上記処理装置を用いて、上記署名σにより署名されたメッセージＭを入力し、
上記検証メッセージ因子算出部は、上記処理装置を用いて、上記検証公開鍵入力部が入力した公開鍵ＰＫに含まれる因子ｖ’及びｍ個の因子ｖｉと、上記検証メッセージ入力部が入力したメッセージＭとに基づいて、上記ヤコビ多様体ＪａｃＣの因子ｖ＝ｖ’＋Σ（μｉ・ｖｉ）（ただし、ｉは１以上ｍ以下の整数。μｉは上記メッセージＭのｉ番目のビットを表わす０または１の整数。）を算出し、
上記署名第一検証値算出部は、上記処理装置を用いて、上記検証公開鍵入力部が入力した公開鍵ＰＫに含まれる因子ｇ１と、上記検証署名入力部が入力した署名σに含まれる因子π１とに基づいて、ペアリング値Ｃ＝ｅ（ｇ１，π１）を算出し、
上記署名第二検証値算出部は、上記処理装置を用いて、上記検証公開鍵入力部が入力した公開鍵ＰＫに含まれる因子Ω及びペアリング値Ａと、上記検証署名入力部が入力した署名σに含まれる因子σ１及び因子σ２とに基づいて、ペアリング値Ｃ’＝ｅ（σ１，σ２＋Ω）／Ａを算出し、
上記署名第三検証値算出部は、上記処理装置を用いて、上記検証公開鍵入力部が入力した公開鍵ＰＫに含まれる因子ｇ１と、上記検証署名入力部が入力した署名σに含まれる因子π２とに基づいて、ペアリング値Ｄ＝ｅ（ｇ１，π２）を算出し、
上記署名第四検証値算出部は、上記処理装置を用いて、上記検証公開鍵入力部が入力した公開鍵ＰＫに含まれる因子ｕ及び因子ｇと、上記検証署名入力部が入力した署名σに含まれる因子σ２及び因子σ３及び因子σ４と、上記検証メッセージ因子算出部が算出した因子ｖとに基づいて、ペアリング値Ｄ’＝ｅ（σ２，ｕ）／｛ｅ（ｇ，σ３）・ｅ（σ４，ｖ）｝を算出し、
上記署名検証判定部は、上記処理装置を用いて、上記署名第一検証値算出部が算出したペアリング値Ｃと、上記署名第二検証値算出部が算出したペアリング値Ｃ’と、上記署名第三検証値算出部が算出したペアリング値Ｄと、上記署名第四検証値算出部が算出したペアリング値Ｄ’とに基づいて、上記ペアリング値Ｃと上記ペアリング値Ｃ’とが等しいか否か、及び、上記ペアリング値Ｄと上記ペアリング値Ｄ’とが等しいか否かを判定し、上記ペアリング値Ｃと上記ペアリング値Ｃ’とが等しく、かつ、上記ペアリング値Ｄと上記ペアリング値Ｄ’とが等しいと判定した場合に、上記検証署名入力部が入力した署名σが有効であると判定し、
上記署名者追跡装置は、データを記憶する記憶装置と、データを処理する処理装置と、追跡鍵記憶部と、識別子記憶部と、追跡署名入力部と、署名ペアリング値算出部と、識別子ペアリング値算出部と、署名者判別部とを有し、
上記追跡鍵記憶部は、上記記憶装置を用いて、上記鍵生成装置が設定した追跡鍵ＴＫ＝（ｇ２）を記憶し、
上記識別子記憶部は、上記記憶装置を用いて、上記署名鍵発行装置が発行した署名鍵ＳＫを識別する識別子ｓＩＤを記憶し、
上記追跡署名入力部は、上記処理装置を用いて、上記署名装置が出力した署名σを入力し、
上記署名ペアリング値算出部は、上記処理装置を用いて、上記追跡鍵記憶部が記憶した追跡鍵ＴＫに含まれる因子ｇ２と、上記追跡署名入力部が入力した署名σに含まれる因子σ２とに基づいて、ペアリング値Ｅ＝ｅ（ｇ２，σ２）を算出し、
上記識別子ペアリング値算出部は、上記処理装置を用いて、上記追跡鍵記憶部が記憶した追跡鍵ＴＫに含まれる因子ｇ２と、上記識別子記憶部が記憶した識別子ｓＩＤとに基づいて、ペアリング値ＥＩＤ＝ｅ（ｇ２，ｇ２）ｓＩＤを算出し、
上記署名者判別部は、上記処理装置を用いて、上記識別子ペアリング値算出部が算出したペアリング値ＥＩＤのなかから、上記署名ペアリング値算出部が算出したペアリング値Ｅと一致するものを探すことにより、上記追跡署名入力部が入力した署名σを生成した署名鍵ＳＫの識別子を判別する
ことを特徴とする請求項１１に記載の暗号システム。
【手続補正４】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項１８
【補正方法】変更
【補正の内容】
【請求項１８】
データを処理する処理装置を有するコンピュータを、請求項１乃至請求項４のいずれかに記載の暗号パラメータ設定装置として機能させることを特徴とするプログラム。
【手続補正５】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項１９
【補正方法】変更
【補正の内容】
【請求項１９】
データを処理する処理装置を有するコンピュータを、請求項５乃至請求項１０のいずれかに記載の鍵生成装置として機能させることを特徴とするプログラム。
【国際調査報告】
2009090750.tif 000046
2009090750.tif 000047
2009090750.tif 000048
2009090750.tif 000049
2009090750.tif 000050