(57)【特許請求の範囲】
【請求項１】
メッセージデータに対する署名データを生成する署名生成装置であって、
１の公開鍵に複数の秘密鍵が対応している署名方式の鍵生成方法を用いて生成される前記複数の秘密鍵のうち前回署名に利用した秘密鍵とは異なる他の１の秘密鍵を、所定の取得方法により取得する秘密鍵取得手段と、
取得した前記他の１の秘密鍵を用いて、前記メッセージデータに、前記署名方式の署名方法による署名を施して署名データを生成する署名生成手段とを備え、
前記秘密鍵取得手段は、
前記複数の秘密鍵を記憶しており、記憶している前記複数の秘密鍵から前記他の１の秘密鍵を、前記所定の取得方法により取得し、
前記署名方式は、格子を用いた署名方式であり、
前記秘密鍵取得手段は、前記格子を用いた署名方式の鍵生成方法にて生成された前記複数の秘密鍵を記憶し、
前記署名方式は、ＮＴＲＵ署名方式であり、
加算、減算、乗算と元の大きさを示すノルムが定義されたＮ次元配列の集合である環Ｒと、前記環Ｒのイデアルｑとに対し、前記環Ｒの元ｆ，ｇおよび、ｆ（ｍｏｄ  ｑ）の逆数である元Ｆｑを生成し、前記元ｇおよび前記元Ｆｑの積とｍｏｄ  ｑで合同である元ｈを前記公開鍵として生成する公開鍵生成ステップと、
ｆ×Ｇ−ｇ×Ｆ＝ｑを満たし、かつ、ノルムが予め与えられた所定値より小さい前記環Ｒの元の対である複数の解（Ｆ，Ｇ）＝（Ｆ＿１，Ｇ＿１），（Ｆ＿２，Ｇ＿２），…，（Ｆ＿ｕ，Ｇ＿ｕ）  （ｕは１より大きい正整数）を生成し、複数の前記元の４つ組（ｆ，ｇ，Ｆ＿１，Ｇ＿１），（ｆ，ｇ，Ｆ＿２，Ｇ＿２），…，（ｆ，ｇ，Ｆ＿ｕ，Ｇ＿ｕ）のそれぞれを前記秘密鍵として生成する秘密鍵生成ステップと、
生成した前記複数の秘密鍵のうち１の秘密鍵を用いて、署名データを生成する署名生成ステップとを含み、
前記秘密鍵取得手段が記憶している前記複数の秘密鍵は、前記秘密鍵ステップにより生成され、
前記署名生成手段は、前記署名生成ステップにより前記署名データを生成する
ことを特徴とする署名生成装置。
【請求項２】
前記所定の取得方法とは、複数の秘密鍵のうちの１の秘密鍵をランダムに取得することであり、
前記秘密鍵取得手段は、
前記複数の秘密鍵のうちの前回署名に利用した秘密鍵とは異なる前記他の１の秘密鍵をランダムに取得する
ことを特徴とする請求項１に記載の署名生成装置。
【請求項３】
前記署名生成装置は、
前記署名方式を用いて前記公開鍵及び前記複数の秘密鍵を生成する鍵生成装置
を含むことを特徴とする請求項１に記載の署名生成装置。
【請求項４】
前記所定の取得方法とは、複数の秘密鍵のうちの１の秘密鍵をランダムに取得することであり、
前記鍵取得手段は、
記憶している前記複数の秘密鍵から前回署名に利用した秘密鍵とは異なる前記他の１の秘密鍵をランダムに取得する
ことを特徴とする請求項１に記載の署名生成装置。
【請求項５】
前記所定の取得方法とは、記憶している順序に基づいて、複数の秘密鍵のうちの１の秘密鍵を取得することであり、
前記鍵取得手段は、
前記複数の秘密鍵を記憶している順序に基づいて、前回署名に利用した秘密鍵とは異なる前記他の１の秘密鍵を取得する
ことを特徴とする請求項１に記載の署名生成装置。
【請求項６】
前記所定の取得方法とは、複数の秘密鍵のうち前回署名に利用した秘密鍵とは異なる他の１の秘密鍵を、前記鍵生成方法により生成して取得することであり、
前記鍵取得手段は、
前記１の公開鍵に対応し、前記署名方式にて生成された第１秘密鍵を記憶しており、前記第１秘密鍵を利用した後、前記鍵生成方法により前記１の公開鍵に対応する第２秘密鍵を生成し、記憶している前記第１秘密鍵を、生成した前記第２秘密鍵へと更新し、前記署名データの生成時に、記憶している前記第２秘密鍵を前記１の秘密鍵として取得する
ことを特徴とする請求項１に記載の署名生成装置。
【請求項７】
メッセージデータに対する署名データの生成及び検証に用いる鍵を生成する鍵生成装置であって、
１の公開鍵に複数の秘密鍵が対応する署名方式により前記１の公開鍵を生成する公開鍵生成手段と、
前記署名方式により前記１の公開鍵に対応する複数の秘密鍵を生成する秘密鍵生成手段とを備え、
前記署名方式は、格子を用いた方式であり、
前記公開鍵生成手段は、
前記署名方式により、前記公開鍵を生成し、
前記秘密鍵生成手段は、
前記署名方式により、前記複数の秘密鍵を生成し、
前記署名方式は、ＮＴＲＵ署名方式であり、
加算、減算、乗算と元の大きさを示すノルムが定義されたＮ次元配列の集合である環Ｒと、前記環Ｒのイデアルｑとに対し、前記環Ｒの元ｆ，ｇおよび、ｆ（ｍｏｄ  ｑ）の逆数である元Ｆｑを生成し、前記元ｇおよび前記元Ｆｑの積とｍｏｄ  ｑで合同である元ｈを前記公開鍵として生成する公開鍵生成ステップと、
ｆ×Ｇ−ｇ×Ｆ＝ｑを満たし、かつ、ノルムが予め与えられた所定値より小さい前記環Ｒの元の対である複数の解（Ｆ，Ｇ）＝（Ｆ＿１，Ｇ＿１），（Ｆ＿２，Ｇ＿２），…，（Ｆ＿ｕ，Ｇ＿ｕ）  （ｕは１より大きい正整数）を生成し、複数の前記元の４つ組（ｆ，ｇ，Ｆ＿１，Ｇ＿１），（ｆ，ｇ，Ｆ＿２，Ｇ＿２），…，（ｆ，ｇ，Ｆ＿ｕ，Ｇ＿ｕ）のそれぞれを前記秘密鍵として生成する秘密鍵生成ステップとを含み、
前記公開鍵生成手段は、前記公開鍵生成ステップにより前記公開鍵を生成し、
前記秘密鍵生成手段は、前記秘密鍵生成ステップにより前記複数の秘密鍵を生成する
ことを特徴とする鍵生成装置。
【請求項８】
メッセージデータに対する署名データを生成する署名生成装置と、署名の検証を行う署名検証装置とからなる署名システムであって、
前記署名生成装置は、
１の公開鍵に複数の秘密鍵が対応している署名方式の鍵生成方法を用いて生成される前記複数の秘密鍵のうち前回署名に利用した秘密鍵とは異なる他の１の秘密鍵を、所定の取得方法により取得する秘密鍵取得手段と、
取得した前記他の１の秘密鍵を用いて、前記メッセージデータに、前記署名方式の署名方法による署名を施して署名データを生成する署名生成手段とを備え、
前記署名検証装置は、
前記公開鍵を用いて、前記署名データを検証する検証手段を備え、
前記秘密鍵取得手段は、
前記複数の秘密鍵を記憶しており、記憶している前記複数の秘密鍵から前記他の１の秘密鍵を、前記所定の取得方法により取得し、
前記署名方式は、格子を用いた署名方式であり、
前記秘密鍵取得手段は、前記格子を用いた署名方式の鍵生成方法にて生成された前記複数の秘密鍵を記憶し、
前記署名方式は、ＮＴＲＵ署名方式であり、
加算、減算、乗算と元の大きさを示すノルムが定義されたＮ次元配列の集合である環Ｒと、前記環Ｒのイデアルｑとに対し、前記環Ｒの元ｆ，ｇおよび、ｆ（ｍｏｄ  ｑ）の逆数である元Ｆｑを生成し、前記元ｇおよび前記元Ｆｑの積とｍｏｄ  ｑで合同である元ｈを前記公開鍵として生成する公開鍵生成ステップと、
ｆ×Ｇ−ｇ×Ｆ＝ｑを満たし、かつ、ノルムが予め与えられた所定値より小さい前記環Ｒの元の対である複数の解（Ｆ，Ｇ）＝（Ｆ＿１，Ｇ＿１），（Ｆ＿２，Ｇ＿２），…，（Ｆ＿ｕ，Ｇ＿ｕ）  （ｕは１より大きい正整数）を生成し、複数の前記元の４つ組（ｆ，ｇ，Ｆ＿１，Ｇ＿１），（ｆ，ｇ，Ｆ＿２，Ｇ＿２），…，（ｆ，ｇ，Ｆ＿ｕ，Ｇ＿ｕ）のそれぞれを前記秘密鍵として生成する秘密鍵生成ステップと、
生成した前記複数の秘密鍵のうち１の秘密鍵を用いて、署名データを生成する署名生成ステップとを含み、
前記秘密鍵取得手段が記憶している前記複数の秘密鍵は、前記秘密鍵ステップにより生成され、
前記署名生成手段は、前記署名生成ステップにより前記署名データを生成する
ことを特徴とする署名システム。
【請求項９】
メッセージデータに対する署名データを生成する署名生成装置の集積回路であって、
１の公開鍵に複数の秘密鍵が対応している署名方式の鍵生成方法を用いて生成される前記複数の秘密鍵のうち前回署名に利用した秘密鍵とは異なる他の１の秘密鍵を、所定の取得方法により取得する秘密鍵取得手段と、
取得した前記他の１の秘密鍵を用いて、前記メッセージデータに、前記署名方式の署名方法による署名を施して署名データを生成する署名生成手段とを備え、
前記署名方式は、格子を用いた方式であり、
前記公開鍵生成手段は、
前記署名方式により、前記公開鍵を生成し、
前記秘密鍵生成手段は、
前記署名方式により、前記複数の秘密鍵を生成し、
前記署名方式は、ＮＴＲＵ署名方式であり、
加算、減算、乗算と元の大きさを示すノルムが定義されたＮ次元配列の集合である環Ｒと、前記環Ｒのイデアルｑとに対し、前記環Ｒの元ｆ，ｇおよび、ｆ（ｍｏｄ  ｑ）の逆数である元Ｆｑを生成し、前記元ｇおよび前記元Ｆｑの積とｍｏｄ  ｑで合同である元ｈを前記公開鍵として生成する公開鍵生成ステップと、
ｆ×Ｇ−ｇ×Ｆ＝ｑを満たし、かつ、ノルムが予め与えられた所定値より小さい前記環Ｒの元の対である複数の解（Ｆ，Ｇ）＝（Ｆ＿１，Ｇ＿１），（Ｆ＿２，Ｇ＿２），…，（Ｆ＿ｕ，Ｇ＿ｕ）  （ｕは１より大きい正整数）を生成し、複数の前記元の４つ組（ｆ，ｇ，Ｆ＿１，Ｇ＿１），（ｆ，ｇ，Ｆ＿２，Ｇ＿２），…，（ｆ，ｇ，Ｆ＿ｕ，Ｇ＿ｕ）のそれぞれを前記秘密鍵として生成する秘密鍵生成ステップとを含み、
前記公開鍵生成手段は、前記公開鍵生成ステップにより前記公開鍵を生成し、
前記秘密鍵生成手段は、前記秘密鍵生成ステップにより前記複数の秘密鍵を生成する
ことを特徴とする集積回路。
【請求項１０】
メッセージデータに対する署名データの生成及び検証に用いる鍵を生成する鍵生成装置の集積回路であって、
１の公開鍵に複数の秘密鍵が対応する署名方式により前記１の公開鍵を生成する公開鍵生成手段と、
前記署名方式により前記１の公開鍵に対応する複数の秘密鍵を生成する秘密鍵生成手段とを備え、
前記署名方式は、格子を用いた方式であり、
前記公開鍵生成手段は、
前記署名方式により、前記公開鍵を生成し、
前記秘密鍵生成手段は、
前記署名方式により、前記複数の秘密鍵を生成し、
前記署名方式は、ＮＴＲＵ署名方式であり、
加算、減算、乗算と元の大きさを示すノルムが定義されたＮ次元配列の集合である環Ｒと、前記環Ｒのイデアルｑとに対し、前記環Ｒの元ｆ，ｇおよび、ｆ（ｍｏｄ  ｑ）の逆数である元Ｆｑを生成し、前記元ｇおよび前記元Ｆｑの積とｍｏｄ  ｑで合同である元ｈを前記公開鍵として生成する公開鍵生成ステップと、
ｆ×Ｇ−ｇ×Ｆ＝ｑを満たし、かつ、ノルムが予め与えられた所定値より小さい前記環Ｒの元の対である複数の解（Ｆ，Ｇ）＝（Ｆ＿１，Ｇ＿１），（Ｆ＿２，Ｇ＿２），…，（Ｆ＿ｕ，Ｇ＿ｕ）  （ｕは１より大きい正整数）を生成し、複数の前記元の４つ組（ｆ，ｇ，Ｆ＿１，Ｇ＿１），（ｆ，ｇ，Ｆ＿２，Ｇ＿２），…，（ｆ，ｇ，Ｆ＿ｕ，Ｇ＿ｕ）のそれぞれを前記秘密鍵として生成する秘密鍵生成ステップとを含み、
前記公開鍵生成手段は、前記公開鍵生成ステップにより前記公開鍵を生成し、
前記秘密鍵生成手段は、前記秘密鍵生成ステップにより前記複数の秘密鍵を生成する
ことを特徴とする集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報セキュリティ技術としての暗号技術に関し、特に、ディジタル署名の技術に関する。
【背景技術】
【０００２】
受信装置から送信装置へデータを送信する際の送信者の特定及びデータの改ざんを防止するための技術として、公開鍵暗号の一種であるディジタル署名方式がある。これを簡単に説明すると、送信装置が、送信したいデータに対し、送信装置の秘密鍵を用いて署名データを作成し、送信したいデータと共に署名データを受信装置へ送信し、受信装置は、送信装置の秘密鍵に対応する公開鍵を用いて署名データを検証し、改ざんされているか否かを判定する方法である（例えば、非特許文献１参照）。ここで、公開鍵から秘密鍵の値は計算困難である。
【０００３】
最近、高速処理が可能な公開鍵暗号として、ＮＴＲＵ暗号が提案されている（例えば、非特許文献２参照）。このＮＴＲＵ暗号は、ある法の下でべき乗剰余演算を行うＲＳＡ暗号や楕円曲線上の点のスカラ倍演算を行う楕円曲線暗号に比べ、高速に演算可能な多項式演算により暗号化と復号化を行うので、従来の公開鍵暗号よりも高速に処理することが可能で、ソフトウェアの処理でも実用的な時間で処理可能である。
【０００４】
従って、公開鍵暗号にＮＴＲＵ暗号を用いた暗号通信システムでは、従来の公開鍵暗号を用いた暗号通信システムよりも、送信装置及び受信装置の処理が高速に行えるという利点がある。
上記で提案された方式は、データを暗号化する守秘暗号方式であったが、その後、ＮＴＲＵ暗号のディジタル署名方式が提案されている（非特許文献３参照）。ディジタル署名方式については解読法の出現などで、方式が幾度か変更された。以下では、ＮＴＲＵＳｉｇｎと呼ばれるディジタル署名方式について簡単に説明する（詳細については、特許文献２及び非特許文献４参照）。
【０００５】
ＮＴＲＵＳｉｇｎ署名方式の鍵生成において、多項式Ｘ＾Ｎ−１を法とし、整数係数を有する多項式の環Ｒに属する複数の元と、環Ｒのイデアルとを用いることにより、秘密鍵及び公開鍵が生成される。ここで、「Ｘ＾ａ」はＸのａ乗を意味することとする。ＮＴＲＵＳｉｇｎ署名方式におけるメッセージに対する署名では、生成した秘密鍵と、メッセージのハッシュ値である２・Ｎ次元のベクトルとが用いられる。ＮＴＲＵＳｉｇｎ署名方式における署名検証では、公開鍵と、メッセージに対する署名と、メッセージのハッシュ値である２・Ｎ次元のベクトルとが用いられる。なお、非特許文献４及び非特許文献５に、ＮＴＲＵＳｉｇｎ署名方式にて用いられる環及び環のイデアルについて記載がなされているので、ここでの説明は省略する。
【０００６】
＜ＮＴＲＵＳｉｇｎ署名方式＞
（１）ＮＴＲＵＳｉｇｎ署名方式のパラメータ
ＮＴＲＵＳｉｇｎ署名方式は、非負整数のパラメータ、Ｎ，ｑ，ｄｆ，ｄｇ，Ｎｏｒｍｂｏｕｎｄを用いる。以下に、これらのパラメータの意味を説明する。
（１−１）パラメータＮ
ＮＴＲＵＳｉｇｎ署名方式は、多項式の演算により署名生成及び署名検証を行うディジタル署名方式である。ＮＴＲＵＳｉｇｎ署名方式で扱う多項式の次数は、上記パラメータＮにより決まる。
【０００７】
ＮＴＲＵＳｉｇｎ署名方式で扱う多項式は、上記パラメータＮに対し、Ｎ−１次以下の整数係数多項式であり、例えばＮ＝５のとき、Ｘ＾４＋Ｘ＾３＋１等の多項式である。なお、多項式に対しては、（ｍｏｄ  Ｘ＾Ｎ−１）演算を施し、常に、Ｎ−１次以下からなる整数係数多項式を算出する。なぜなら、（ｍｏｄ  Ｘ＾Ｎ−１）演算を施すことにより、Ｘ＾Ｎ＝１という関係式が成り立つため、Ｎ次以上の変数に対しては、常にＮ−１次以下の変数へと変換することができるからである。ここで、多項式に対して、（ｍｏｄ  Ｘ＾Ｎ−１）演算を施すことにより得られる整数係数多項式は、多項式環Ｒの元となることがわかる。
【０００８】
また、公開鍵ｈ、署名ｓはいずれも、Ｎ−１次以下の多項式として表現される。また、秘密鍵は４つのＮ−１次以下の多項式対（ｆ，ｇ，Ｆ，Ｇ）である。すなわち、ｆ，ｇ，Ｆ，ＧはいずれもＮ−１次以下の多項式であり、多項式環Ｒの元である。なお、以下では、４つ組（ｆ，ｇ，Ｆ，Ｇ）を２つの対（ｆ，ｇ），（Ｆ，Ｇ）のさらなる対と捉えて、｛（ｆ，ｇ），（Ｆ，Ｇ）｝と表記する場合もある。
【０００９】
そして、多項式演算は、上記パラメータＮに対し、Ｘ＾Ｎ＝１という関係式を用いて、演算結果が常にＮ−１次以下の多項式になるように演算される。例えば、Ｎ＝５の場合、多項式Ｘ＾４＋Ｘ＾２＋１と多項式Ｘ＾３＋Ｘの積は、多項式と多項式の積を×、整数と多項式の積（あるいは整数と整数の積）を・とすると、Ｘ＾５＝１という関係から、
（Ｘ＾４＋Ｘ＾２＋１）×（Ｘ＾３＋Ｘ）
＝Ｘ＾７＋２・Ｘ＾５＋２・Ｘ＾３＋Ｘ
＝Ｘ＾２・１＋２・１＋２・Ｘ＾３＋Ｘ
＝２・Ｘ＾３＋Ｘ＾２＋Ｘ＋２
というように、常にＮ−１次以下の多項式になるように演算される。
【００１０】
なお、ＮＴＲＵＳｉｇｎ署名方式では、Ｎ−１次の多項式ａ＝ａ＿０＋ａ＿１・Ｘ＋ａ＿２・Ｘ＾２＋…＋ａ＿（Ｎ−１）・Ｘ＾（Ｎ−１）はベクトル（ａ＿０，ａ＿１，ａ＿２，…，ａ＿（Ｎ−１））と同一視する。ａ＿０，ａ＿１，ａ＿２，…，ａ＿（Ｎ−１）は多項式ａの係数であり、整数である。
（１−２）パラメータｑ
ＮＴＲＵＳｉｇｎ署名方式では、２以上の整数であり、多項式環Ｒのイデアルであるパラメータｑを用いる。ＮＴＲＵＳｉｇｎ署名方式で出現する多項式の係数は、ｑを法とした剰余を取る。
【００１１】
（１−３）パラメータｄｆ，ｄｇ
ＮＴＲＵＳｉｇｎ署名方式で扱う秘密鍵の一部である多項式ｆ及び、公開鍵である多項式ｈを生成するときに多項式ｆと共に用いる多項式ｇの選び方は、それぞれパラメータｄｆ，ｄｇにより決まる。
まず、多項式ｆは、ｄｆ個の係数が１であり、かつ他の係数は０となるように選ぶ。すなわち、多項式ｆはＮ−１次以下の多項式であり、０次（定数項）からＮ−１次まで、Ｎ個の係数があるが、このＮ個の係数のうち、ｄｆ個の係数が１であり、かつ（Ｎ−ｄｆ）個の係数が０となるように選ぶ。
【００１２】
そして、多項式ｇは、ｄｇ個の係数が１であり、かつ他の係数は０となるように選ぶ。
（１−４）パラメータＮｏｒｍｂｏｕｎｄ
ＮＴＲＵＳｉｇｎ署名方式では、後述するが署名ｓから作られる２・Ｎ次元のベクトルとメッセージのハッシュ値である２・Ｎ次元のベクトルの距離を計算し、この距離により正しい署名であるかを判定する。Ｎｏｒｍｂｏｕｎｄは、この判定の際に使用するしきい値である。すなわち、上記距離がＮｏｒｍｂｏｕｎｄ未満であれば、正しい署名として受理し、Ｎｏｒｍｂｏｕｎｄ以上であれば、正しくない署名とし拒否する。
【００１３】
非特許文献４には、ＮＴＲＵＳｉｇｎ署名方式のパラメータの例として、（Ｎ，ｑ，ｄｆ，ｄｇ，Ｎｏｒｍｂｏｕｎｄ）＝（２５１，１２８，７３，７１，３１０）の例が挙げられている。
（２）メッセージのハッシュ値、ノルム及びベクトル間の距離
ＮＴＲＵＳｉｇｎ署名方式では、メッセージｍのハッシュ値に対する署名を作成する。メッセージｍのハッシュ値は、Ｎ次の多項式の対（ｍ１，ｍ２）であり、２・Ｎ次元のベクトルと同一視される。メッセージからハッシュ値を求めるハッシュ関数については、非特許文献１が詳しい。
【００１４】
ＮＴＲＵＳｉｇｎ署名方式では、署名検証にベクトルの距離を用いる。以下でその定義を示す。
多項式ａ＝ａ＿０＋ａ＿１・Ｘ＋ａ＿２・Ｘ＾２＋…＋ａ＿（Ｎ−１）・Ｘ＾（Ｎ−１）のノルム｜｜ａ｜｜を以下のように定義する。
｜｜ａ｜｜＝ｓｑｒｔ（（ａ＿０−μ）＾２＋（ａ＿１−μ）＾２＋…＋（ａ＿（Ｎ−１）−μ）＾２）
μ＝（１／Ｎ）・（ａ＿０＋ａ＿１＋ａ＿２＋…＋ａ＿（Ｎ−１））
ここで、ｓｑｒｔ（ｘ）はｘの平方根を示す。
【００１５】
多項式ａ，ｂの対（ａ，ｂ）のノルム｜｜（ａ，ｂ）｜｜を以下のように定義する。
｜｜（ａ，ｂ）｜｜＝ｓｑｒｔ（｜｜ａ｜｜＾２＋｜｜ｂ｜｜＾２）
多項式ａ，ｂの対（ａ，ｂ）とｃ，ｄの対（ｃ，ｄ）との距離は、｜｜（ｃ−ａ，ｄ−ｂ）｜｜で定義される。
これにより、（ｍｏｄ  Ｘ＾Ｎ−１）演算を施すことにより得られたＮ−１次以下の整数係数多項式は、加算、減算、乗算、及び元の大きさを示すノルムが定義されたＮ次元配列とみなすことができ、多項式環Ｒは、Ｎ次元配列の集合とみなすことができる。
【００１６】
（３）ＮＴＲＵＳｉｇｎ署名方式の鍵生成
ＮＴＲＵＳｉｇｎ署名方式では、上述したように、パラメータｄｆ，ｄｇを用いてランダムに多項式ｆ，多項式ｇを生成する。そして非特許文献４に記載の通り、Ｆｑ×ｆ＝１（ｍｏｄ  ｑ）となる多項式Ｆｑを用いて、
ｈ＝Ｆｑ×ｇ（ｍｏｄ  ｑ）
により、多項式ｈを生成する。ここで、多項式Ｆｑは、多項式ｆの逆元と呼ばれる。さらに、以下の式を満たすようなノルムが小さい多項式Ｆ，Ｇを求める。
【００１７】
ｆ×Ｇ−ｇ×Ｆ＝ｑ
秘密鍵を｛（ｆ，ｇ），（Ｆ，Ｇ）｝、公開鍵をｈとする。秘密鍵は、署名を生成するための鍵であり、署名生成鍵とも呼ばれる。また、公開鍵は、署名を検証するための鍵であり、署名検証鍵とも呼ばれる。
ここで、ｘ＝ｙ（ｍｏｄ  ｑ）は、多項式ｙの第ｉ次の係数を、剰余が０からｑ−１の範囲に収まるように法ｑで割ったときの剰余を、多項式ｘの第ｉ次の係数とする演算である（０≦ｉ≦Ｎ−１）。すなわち、多項式ｙの各係数を、０から（ｑ−１）の範囲に収まるようにｍｏｄ  ｑ演算した多項式を、多項式ｘとする演算である。
【００１８】
（４）ＮＴＲＵＳｉｇｎ署名方式の署名生成
ＮＴＲＵＳｉｇｎ署名方式の署名生成では、署名対象であるメッセージｍの署名ｓを計算する。まず、メッセージｍに対するハッシュ値である２・Ｎ次元のベクトル（ｍ１，ｍ２）（ｍ１及びｍ２はＮ次多項式）を計算する。
この２・Ｎ次元のベクトル（ｍ１，ｍ２）と秘密鍵｛（ｆ，ｇ），（Ｆ，Ｇ）｝を用いて、以下の式を満たす多項式ａ，ｂ，Ａ，Ｂを計算する。
【００１９】
Ｇ×ｍ１−Ｆ×ｍ２＝Ａ＋ｑ×Ｂ
−ｇ×ｍ１＋ｆ×ｍ２＝ａ＋ｑ×ｂ
ここで、Ａ，ａの係数は〈−ｑ／２〉＋１から〈ｑ／２〉の範囲に収まるように法ｑで割ったときの剰余を取ったものとする。すなわち、法ｑで割ったときの剰余が〈ｑ／２〉からｑ−１である場合は、ｑ減算して、上記範囲に収まるよう調整する。ここで、〈ｘ〉は、ｘ以下の数の中で最も大きい数を示す。例えば、〈−１／２〉＝−１である。
【００２０】
次に以下の式より、ｓ，ｔを計算し、ｓを署名として出力する。
ｓ＝ｆ×Ｂ＋Ｆ×ｂ  （ｍｏｄ  ｑ）
ｔ＝ｇ×Ｂ＋Ｇ×ｂ  （ｍｏｄ  ｑ）
（５）ＮＴＲＵＳｉｇｎ署名方式の署名検証
ＮＴＲＵＳｉｇｎ署名方式の署名生成では、署名ｓが署名対象であるメッセージｍの正しい署名であるかを検証する。まず、メッセージｍに対するハッシュ値である２・Ｎ次元のベクトル（ｍ１，ｍ２）を計算する。
【００２１】
公開鍵ｈを用いて、以下の式より、多項式ｔを計算する。
ｔ＝ｓ×ｈ  （ｍｏｄ  ｑ）
２・Ｎ次元ベクトル（ｓ，ｔ）と（ｍ１，ｍ２）の距離を求め、Ｎｏｒｍｂｏｕｎｄ未満であるかをチェックする。Ｎｏｒｍｂｏｕｎｄ未満であれば、署名ｓが正しいと判定して署名ｓを受理する。Ｎｏｒｍｂｏｕｎｄ以上であれば、署名ｓが不正と判定して署名ｓを拒否する。
【特許文献１】特表２０００−５１６７３３号公報
【特許文献２】国際公開番号  ＷＯ２００３／０５０９９８号
【非特許文献１】岡本龍明、山本博資、「現代暗号」、産業図書（１９９７年）
【非特許文献２】Ｊ．Ｈｏｆｆｓｔｅｉｎ，  Ｊ．Ｐｉｐｈｅｒ，  ａｎｄ  Ｊ．Ｈ．  Ｓｉｌｖｅｒｍａｎ，  “ＮＴＲＵ：  Ａ  ｒｉｎｇ  ｂａｓｅｄ  ｐｕｂｌｉｃ  ｋｅｙ  ｃｒｙｐｔｏｓｙｓｔｅｍ”，  Ｌｅｃｔｕｒｅ  Ｎｏｔｅｓ  ｉｎ  Ｃｏｍｐｕｔｅｒ  Ｓｃｉｅｎｃｅ，  １４２３，  ｐｐ．２６７−２８８，  Ｓｐｒｉｎｇｅｒ−Ｖｅｒｌａｇ，  １９９８．
【非特許文献３】Ｊ．Ｈｏｆｆｓｔｅｉｎ，  Ｊ．Ｐｉｐｈｅｒ  ａｎｄ  Ｊ．Ｓｉｌｖｅｒｍａｎ，  “ＮＳＳ：  Ａｎ  ＮＴＲＵ  Ｌａｔｔｉｃｅ−Ｂａｓｅｄ  Ｓｉｇｎａｔｕｒｅ  Ｓｃｈｅｍｅ，”  Ａｄｖａｎｃｅｓ  ｉｎ  Ｃｒｙｐｔｏｐｌｏｇｙ−Ｅｕｒｏｃｒｙｐｔ  ’０１，  ＬＮＣＳ，  Ｖｏｌ．２０４５，  ｐｐ．１２３−１３７，  Ｓｐｒｉｎｇｅｒ−Ｖｅｒｌａｇ，  ２００１
【非特許文献４】Ｊ．Ｈｏｆｆｓｔｅｉｎ，  Ｎ．Ｇｒａｈａｍ，  Ｊ．Ｐｉｐｈｅｒ，  Ｊ．Ｓｉｌｖｅｒｍａｎ  ａｎｄ  Ｗ．Ｗｈｙｔｅ，  “ＮＴＲＵＳｉｇｎ：  Ｄｉｇｉｔａｌ  Ｓｉｇｎａｔｕｒｅｓ  Ｕｓｉｎｇ  ｔｈｅ  ＮＴＲＵ  Ｌａｔｔｉｃｅ，”  ＣＴ−ＲＳＡ’０３，  ＬＮＣＳ，  Ｖｏｌ．２６１２，  ｐｐ．１２２−１４０，  Ｓｐｒｉｎｇｅｒ−Ｖｅｒｌａｇ，  ２００３
【非特許文献５】Ｊ．Ｈｏｆｆｓｔｅｉｎ，  Ｎ．Ｇｒａｈａｍ，  Ｊ．Ｐｉｐｈｅｒ，Ｊ．Ｈ．Ｓｉｌｖｅｒｍａｎ，Ｗ．Ｗｈｙｔｅ，”ＮＴＲＵＳｉｇｎ：  Ｄｉｇｉｔａｌ  Ｓｉｇｎａｔｕｒｅｓ  Ｕｓｉｎｇ  ｔｈｅ  ＮＴＲＵ  Ｌａｔｔｉｃｅ  Ｐｒｅｌｉｍｉｎａｒｙ  Ｄｒａｆｔ  ２−−Ａｐｒｉｌ  ２，２００２”，［２００５年１月２０日検索］、インターネット＜ＵＲＬ：  ｈｔｔｐ：／／ｗｗｗ．ｎｔｒｕ．ｃｏｍ／ｃｒｙｐｔｏｌａｂ／ｐｄｄ／ＮＴＲＵＳｉｇｎ−ｐｒｅＶ２．ｐｄｆ＞
【発明の開示】
【発明が解決しようとする課題】
【００２２】
上述したＮＴＲＵＳｉｇｎ署名方式には、Ｔｒａｎｓｃｒｉｐｔ  ａｔｔａｃｋと呼ばれる攻撃がある。Ｔｒａｎｓｃｒｉｐｔ  ａｔｔａｃｋは、複数の署名文（メッセージと署名の対）から秘密鍵を求める攻撃である。Ｔｒａｎｓｃｒｉｐｔ  ａｔｔａｃｋの詳細は、非特許文献４に記載されているので、ここでは、以下で簡単に説明する。
Ｔｒａｎｓｃｒｉｐｔ  ａｔｔａｃｋは、複数の署名ｓとメッセージのハッシュ値（ｍ１，ｍ２）の一部ｍ１との差分ｍ１−ｓが
ｍ１−ｓ＝ｅ１×ｆ＋ｅ２×Ｆ
ｅ１，ｅ２は係数が−１／２から１／２の範囲に入る多項式
となることを利用しており、差分ｍ１−ｓの２次モーメント及び４次モーメントの平均値を取ることで、秘密鍵の一部であるｆ，Ｆを求める。ここで、多項式ａの２次モーメントａ〜２とは、ａ＝ａ＿０＋ａ＿１・Ｘ＋ａ＿２・Ｘ＾２＋…＋ａ＿（Ｎ−２）・Ｘ＾（Ｎ−２）＋ａ＿（Ｎ−１）・Ｘ＾（Ｎ−１）とａの相反ａ＊＝ａ＿０＋ａ＿（Ｎ−１）・Ｘ＋ａ＿（Ｎ−２）・Ｘ＾２＋…＋ａ＿２・Ｘ＾（Ｎ−２）＋ａ＿１・Ｘ＾（Ｎ−１）との積ａ〜＝ａ×ａ＊である。また、４次モーメントａ〜４は、ａ〜２の２乗、すなわち、ａ〜４＝ａ〜２×ａ〜２である。
【００２３】
（ｍ１−ｓの２次モーメント）＝（ｅ１×ｆ＋ｅ２×Ｆ）×（ｅ１＊×ｆ＊＋ｅ２＊×Ｆ＊）
＝ｅ１〜×ｆ〜＋ｅ２〜×Ｆ〜＋ｅ１×ｆ×ｅ２＊×Ｆ＊＋ｅ２×Ｆ×ｅ１＊×ｆ＊
署名文の個数が増大すると、ｍ１−ｓの２次モーメントの平均に含まれるｅ１〜，ｅ２〜はある一定値ｋ１，ｋ２に収束し、上記の式のｅ１×ｆ×ｅ２＊×Ｆ＊とｅ２×Ｆ×ｅ１＊×ｆ＊は０に近づく。したがって、署名文の個数が大きい場合、ｍ１−ｓの２次モーメントの平均は、ｋ１×ｆ〜＋ｋ２×Ｆ〜にほぼ等しくなる。さらに４次モーメントの平均でも、同様にｆ及びＦに関連する情報を得られ、両方の情報からｆを求めることが可能になる。非特許文献４によると、２次モーメント及び４次モーメントの平均から秘密鍵に関する情報が得られるために必要な署名文の個数はそれぞれ１０＾４、１０＾８である。したがって、ＮＴＲＵＳｉｇｎ署名方式のＴｒａｎｓｃｒｉｐｔ  ａｔｔａｃｋを成功させるためには、１０＾８個以上の署名文が必要と考えられている。
【００２４】
本発明は、署名データに対するＴｒａｎｓｃｒｉｐｔ  ａｔｔａｃｋを防ぐことのできる署名生成装置、鍵生成装置、署名システム、署名生成方法、署名検証プログラム、署名検証方法、鍵生成プログラム、署名生成用の集積回路及び鍵生成用の集積回路を提供することを目的とする。
【課題を解決するための手段】
【００２５】
上記目的を達成するために、本発明は、メッセージデータに対する署名データを生成する署名生成装置であって、１の公開鍵に複数の秘密鍵が対応している署名方式の鍵生成方法を用いて生成される前記複数の秘密鍵のうち前回署名に利用した秘密鍵とは異なる他の１の秘密鍵を、所定の取得方法により取得する秘密鍵取得手段と、取得した前記他の１の秘密鍵を用いて、前記メッセージデータに、前記署名方式の署名方法による署名を施して署名データを生成する署名生成手段とを備えることを特徴とする。
【発明の効果】
【００２６】
上記に示した構成によると、署名生成装置は、１の公開鍵に対応する複数の秘密鍵のうち前回署名に利用した秘密鍵とは異なる他の１の秘密鍵を取得している。これにより、Ｔｒａｎｓｃｒｉｐｔ  ａｔｔａｃｋを実行する攻撃者は、署名データを入手して、Ｔｒａｎｓｃｒｉｐｔ  ａｔｔａｃｋを試みても、入手した署名データが前回署名に利用した秘密鍵、及び今回の署名に用いた秘密鍵のどちらにて署名されたかが分からないため、署名生成装置は、署名データに対するＴｒａｎｓｃｒｉｐｔ  ａｔｔａｃｋを防ぐことができる。
【００２７】
ここで、前記所定の取得方法とは、複数の秘密鍵のうちの１の秘密鍵をランダムに取得することであり、前記秘密鍵取得手段は、前記複数の秘密鍵のうちの前回署名に利用した秘密鍵とは異なる前記他の１の秘密鍵をランダムに取得するとしてもよい。
この構成によると、署名生成装置は、複数の秘密鍵から前回の署名に利用した秘密鍵とは異なる他の１の秘密鍵をランダムに取得するので、Ｔｒａｎｓｃｒｉｐｔ  ａｔｔａｃｋを実行する攻撃者は、署名データを入手して、Ｔｒａｎｓｃｒｉｐｔ  ａｔｔａｃｋを試みても、入手した署名データがどの秘密鍵にて生成されたかがわからないため、署名生成装置は、署名データに対するＴｒａｎｓｃｒｉｐｔ  ａｔｔａｃｋを防ぐことができる。
【００２８】
ここで、前記秘密鍵取得手段は、前記複数の秘密鍵を記憶しており、記憶している前記複数の秘密鍵から前記他の１の秘密鍵を、前記所定の取得方法により取得するとしてもよい。
この構成によると、署名生成装置は、記憶している複数の秘密鍵から前記他の１の秘密鍵を取得するので、前記１の公開鍵に対応する秘密鍵を確実に取得することができる。
【００２９】
ここで、前記署名方式は、格子を用いた署名方式であり、前記秘密鍵取得手段は、前記格子を用いた署名方式の鍵生成方法にて生成された前記複数の秘密鍵を記憶しているとしてもよい。
この構成によると、格子を用いた鍵生成及び署名生成行う署名方式は、格子の性質上、１の公開鍵に対して、複数の秘密鍵を生成することができる。これにより、署名生成装置は、１の公開鍵に対する複数の秘密鍵を記憶することができる。
【００３０】
ここで、前記署名方式は、ＮＴＲＵ署名方式であり、加算、減算、乗算と元の大きさを示すノルムが定義されたＮ次元配列の集合である環Ｒと、前記環Ｒのイデアルｑとに対し、前記環Ｒの元ｆ，ｇおよび、ｆ（ｍｏｄ  ｑ）の逆数である元Ｆｑを生成し、前記元ｇおよび前記元Ｆｑの積とｍｏｄ  ｑで合同である元ｈを前記公開鍵として生成する公開鍵生成ステップと、ｆ×Ｇ−ｇ×Ｆ＝ｑを満たし、かつ、ノルムが予め与えられた所定値より小さい前記環Ｒの元の対である複数の解（Ｆ，Ｇ）＝（Ｆ＿１，Ｇ＿１），（Ｆ＿２，Ｇ＿２），…，（Ｆ＿ｕ，Ｇ＿ｕ）  （ｕは１より大きい正整数）を生成し、複数の前記元の４つ組（ｆ，ｇ，Ｆ＿１，Ｇ＿１），（ｆ，ｇ，Ｆ＿２，Ｇ＿２），…，（ｆ，ｇ，Ｆ＿ｕ，Ｇ＿ｕ）のそれぞれを前記秘密鍵として生成する秘密鍵生成ステップと、生成した前記複数の秘密鍵のうち１の秘密鍵を用いて、署名データを生成する署名生成ステップとを含み、前記秘密鍵取得手段が記憶している前記複数の秘密鍵は、前記秘密鍵ステップにより生成され、前記署名生成手段は、前記署名生成ステップにより前記署名データを生成するとしてもよい。
【００３１】
この構成によると、署名方式は、環Ｒとイデアルｑとを用いて、公開鍵、及び前記公開鍵に対応する複数の秘密鍵を生成し、生成した複数の秘密鍵のうち１の秘密鍵を用いて署名を行うので、前記署名生成装置は、前記署名方式を用いることにより、公開鍵に対応している秘密鍵を用いて確実に署名を行うことができる。
ここで、前記署名生成装置は、前記署名方式を用いて前記公開鍵及び前記複数の秘密鍵を生成する鍵生成装置を含むとしてもよい。
【００３２】
この構成によると、署名生成装置は、当該装置に含まれる鍵生成装置を用いて前記公開鍵、及び前記複数の秘密鍵を生成することができる。
ここで、前記所定の取得方法とは、複数の秘密鍵のうちの１の秘密鍵をランダムに取得することであり、前記鍵取得手段は、記憶している前記複数の秘密鍵から前回署名に利用した秘密鍵とは異なる前記他の１の秘密鍵をランダムに取得するとしてもよい。
【００３３】
この構成によると、署名生成装置は、記憶している複数の秘密鍵から前回の署名に利用した秘密鍵とは異なる前記他の１の秘密鍵をランダムに取得するので、Ｔｒａｎｓｃｒｉｐｔ  ａｔｔａｃｋに対する防御を高めることができる。
ここで、前記所定の取得方法とは、記憶している順序に基づいて、複数の秘密鍵のうちの１の秘密鍵を取得することであり、前記鍵取得手段は、前記複数の秘密鍵を記憶している順序に基づいて、前回署名に利用した秘密鍵とは異なる前記他の１の秘密鍵を取得するとしてもよい。
【００３４】
この構成によると、署名生成装置は、署名データ毎に、署名に用いる秘密鍵を使い分けるので、Ｔｒａｎｓｃｒｉｐｔ  ａｔｔａｃｋに対する防御を高めることができる。
ここで、前記所定の取得方法とは、複数の秘密鍵のうち前回署名に利用した秘密鍵とは異なる他の１の秘密鍵を、前記鍵生成方法により生成して取得することであり、前記鍵取得手段は、前記１の公開鍵に対応し、前記署名方式にて生成された第１秘密鍵を記憶しており、前記第１秘密鍵を利用した後、前記鍵生成方法により前記１の公開鍵に対応する第２秘密鍵を生成し、記憶している前記第１秘密鍵を、生成した前記第２秘密鍵へと更新し、前記署名データの生成時に、記憶している前記第２秘密鍵を前記１の秘密鍵として取得するとしてもよい。
【００３５】
この構成によると、署名生成装置は、第１秘密鍵の利用後、前記第１秘密鍵を前記第２秘密鍵へと更新しているので、前記署名データを生成する際には、前記第１秘密鍵とは異なる第２秘密鍵を確実に用いることができる。
また、本発明は、メッセージデータに対する署名データの生成及び検証に用いる鍵を生成する鍵生成装置であって、１の公開鍵に複数の秘密鍵が対応する署名方式により前記１の公開鍵を生成する公開鍵生成手段と、前記署名方式により前記１の公開鍵に対応する複数の秘密鍵を生成する秘密鍵生成手段とを備えることを特徴とする。
【００３６】
この構成によると、鍵生成装置は、１の公開鍵と、前記公開鍵に対応する複数の秘密鍵とを生成する。このとき、署名を行う装置が、署名の際に前記複数の秘密鍵のうち１の秘密鍵を用いると、Ｔｒａｎｓｃｒｉｐｔ  ａｔｔａｃｋを実行する攻撃者は、署名されたデータを入手して、Ｔｒａｎｓｃｒｉｐｔ  ａｔｔａｃｋを試みても、入手した署名されたデータが前記複数の秘密鍵うちどの秘密鍵にて生成されたかがわからない。そのため、鍵生成装置は、署名データに対するＴｒａｎｓｃｒｉｐｔ  ａｔｔａｃｋを防ぐことができる。
【００３７】
ここで、前記署名方式は、格子を用いた方式であり、前記公開鍵生成手段は、前記署名方式により、前記公開鍵を生成し、前記秘密鍵生成手段は、前記署名方式により、前記複数の秘密鍵を生成するとしてもよい。
この構成によると、鍵生成装置は、格子を用いた署名方式にて鍵生成を行うので、格子の性質上、１の公開鍵と、前記公開鍵に対応する複数の秘密鍵とを生成することができる。
【００３８】
ここで、前記署名方式は、ＮＴＲＵ署名方式であり、加算、減算、乗算と元の大きさを示すノルムが定義されたＮ次元配列の集合である環Ｒと、前記環Ｒのイデアルｑとに対し、前記環Ｒの元ｆ，ｇおよび、ｆ（ｍｏｄ  ｑ）の逆数である元Ｆｑを生成し、前記元ｇおよび前記元Ｆｑの積とｍｏｄ  ｑで合同である元ｈを前記公開鍵として生成する公開鍵生成ステップと、ｆ×Ｇ−ｇ×Ｆ＝ｑを満たし、かつ、ノルムが予め与えられた所定値より小さい前記環Ｒの元の対である複数の解（Ｆ，Ｇ）＝（Ｆ＿１，Ｇ＿１），（Ｆ＿２，Ｇ＿２），…，（Ｆ＿ｕ，Ｇ＿ｕ）  （ｕは１より大きい正整数）を生成し、複数の前記元の４つ組（ｆ，ｇ，Ｆ＿１，Ｇ＿１），（ｆ，ｇ，Ｆ＿２，Ｇ＿２），…，（ｆ，ｇ，Ｆ＿ｕ，Ｇ＿ｕ）のそれぞれを前記秘密鍵として生成する秘密鍵生成ステップとを含み、前記公開鍵生成手段は、前記公開鍵生成ステップにより前記公開鍵を生成し、前記秘密鍵生成手段は、前記秘密鍵生成ステップにより前記複数の秘密鍵を生成するとしてもよい。
【００３９】
この構成によると、鍵生成装置は、署名方式に含まれる公開鍵生成ステップ及び秘密鍵生成ステップを用いることにより、公開鍵、及び前記公開鍵に対応する複数の秘密鍵を生成することができる。
また、本発明は、メッセージデータに対する署名データを生成する署名生成装置と、署名の検証を行う署名検証装置とからなる署名システムであって、前記署名生成装置は、１の公開鍵に複数の秘密鍵が対応している署名方式の鍵生成方法を用いて生成される前記複数の秘密鍵のうち前回署名に利用した秘密鍵とは異なる他の１の秘密鍵を、所定の取得方法により取得する秘密鍵取得手段と、取得した前記他の１の秘密鍵を用いて、前記メッセージデータに、前記署名方式の署名方法による署名を施して署名データを生成する署名生成手段とを備え、前記署名検証装置は、前記公開鍵を用いて、前記署名データを検証する検証手段を備えることを特徴とする。
【００４０】
この構成によると、署名システムは、署名生成装置にて、１の公開鍵に対応する複数の秘密鍵のうち前回の署名に利用した秘密鍵とは異なる１の秘密鍵を取得している。これにより、Ｔｒａｎｓｃｒｉｐｔ  ａｔｔａｃｋを実行する攻撃者は、署名データを入手して、Ｔｒａｎｓｃｒｉｐｔ  ａｔｔａｃｋを試みても、入手した署名データが前回署名に利用した秘密鍵、及び今回の署名に用いた秘密鍵のどちらにて署名されたかが分からないため、署名生成装置は、署名データに対するＴｒａｎｓｃｒｉｐｔ  ａｔｔａｃｋを防ぐことができる。また、公開鍵は、前記複数の秘密鍵それぞれに対応しているので、署名検証装置は、前記複数の秘密鍵のうち１の秘密鍵を用いて生成された署名データを、前記公開鍵を用いて検証することができる。
【発明を実施するための最良の形態】
【００４１】
１．第１の実施の形態
以下、本発明に係る第１の実施の形態としてのディジタル署名システム１について、図面を参照して説明する。
１．１  ディジタル署名システム１の概要
ディジタル署名システム１は、図１に示すように、署名生成装置１０と、署名検証装置２０と、鍵生成装置３０と、通信路５０とから構成されている。
【００４２】
鍵生成装置３０は、従来のＮＴＲＵＳｉｇｎ署名方式を改良した改良ＮＴＲＵＳｉｇｎ署名方式用いて、鍵生成を行い、複数の秘密鍵｛（ｆ，ｇ），（Ｆ＿１，Ｇ＿１）｝，｛（ｆ，ｇ），（Ｆ＿２，Ｇ＿２）｝，・・・及び１の公開鍵ｈを生成する。なお、改良ＮＴＲＵＳｉｇｎ署名方式用いた鍵生成については後述する。また、公開鍵ｈは、複数の秘密鍵｛（ｆ，ｇ），（Ｆ＿１，Ｇ＿１）｝，｛（ｆ，ｇ），（Ｆ＿２，Ｇ＿２）｝，・・・の全てに対応する公開鍵である。
【００４３】
署名生成装置１０は、鍵生成装置３０にて生成された複数の秘密鍵のうち１の秘密鍵と、改良ＮＴＲＵＳｉｇｎ署名方式とを用いて、メッセージデータｍに対する署名データセットＳＳを生成し、通信路５０を介して署名検証装置２０に、生成した署名データセットＳＳを送信する。なお、署名データセットＳＳの構成については、後述する。
署名検証装置２０は、署名生成装置１０から、署名データセットＳＳを受信し、受信した署名データセットＳＳがメッセージデータｍの正しい署名であるかを、改良ＮＴＲＵＳｉｇｎ署名方式を用いて検証する。署名検証装置２０は、署名データセットＳＳが正しいと判定する場合には、署名データセットＳＳを受理し、署名データセットＳＳが不正と判定する場合には、署名データセットＳＳを拒否する。
【００４４】
改良ＮＴＲＵＳｉｇｎ署名方式の鍵生成では、多項式Ｘ＾Ｎ−１を法とし、整数係数を有する多項式の環Ｒに属する複数の元と、環Ｒのイデアルとを用いることにより、１の公開鍵及び公開鍵に対応する複数の秘密鍵が生成される。改良ＮＴＲＵＳｉｇｎ署名方式におけるメッセージに対する署名では、１の秘密鍵と、メッセージのハッシュ値である２・Ｎ次元のベクトルとが用いられる。改良ＮＴＲＵＳｉｇｎ署名方式における署名検証では、公開鍵と、メッセージに対する署名と、メッセージのハッシュ値である２・Ｎ次元のベクトルとを用いる。なお、非特許文献４及び非特許文献５に、ＮＴＲＵＳｉｇｎ署名方式にて用いられる環及び環のイデアルについて記載がなされているので、ここでの説明は省略する。
【００４５】
以下において、改良ＮＴＲＵＳｉｇｎ署名方式について説明する。
＜改良ＮＴＲＵＳｉｇｎ署名方式＞
（１）改良ＮＴＲＵＳｉｇｎ署名方式のパラメータ
改良ＮＴＲＵＳｉｇｎ署名方式は、非負整数のパラメータ、Ｎ，ｑ，ｄｆ，ｄｇ，Ｎｏｒｍｂｏｕｎｄを持つ。これらのパラメータの定義は、従来のＮＴＲＵＳｉｇｎ署名方式と同様である。以下に、これらのパラメータの意味を説明する。
【００４６】
（１−１）パラメータＮ
改良ＮＴＲＵＳｉｇｎ署名方式は、多項式の演算により署名生成及び署名検証を行うディジタル署名方式である。改良ＮＴＲＵＳｉｇｎ署名方式で扱う多項式の次数は、上記パラメータＮにより決まる。
改良ＮＴＲＵＳｉｇｎ署名方式で扱う多項式は、上記パラメータＮに対し、Ｎ−１次以下の整数係数多項式であり、例えばＮ＝５のとき、Ｘ＾４＋Ｘ＾３＋１等の多項式である。ここで、「Ｘ＾ａ」はＸのａ乗を意味することとする。なお、多項式に対しては、（ｍｏｄ  Ｘ＾Ｎ−１）演算を施し、常に、Ｎ−１次以下からなる整数係数多項式を算出する。なぜなら、（ｍｏｄ  Ｘ＾Ｎ−１）演算を施すことにより、Ｘ＾Ｎ＝１という関係式が成り立つため、Ｎ次以上の変数に対しては、常にＮ−１次以下の変数へと変換することができるからである。ここで、多項式に対して、（ｍｏｄ  Ｘ＾Ｎ−１）演算を施すことにより得られる整数係数多項式は、多項式環Ｒの元となることがわかる。
【００４７】
また、公開鍵ｈ、署名ｓはいずれも、Ｎ−１次以下の多項式として表現される。また、秘密鍵は４つのＮ−１次以下の多項式対（ｆ，ｇ，Ｆ，Ｇ）である。すなわち、ｆ，ｇ，Ｆ，ＧはいずれもＮ−１次以下の多項式であり、多項式環Ｒの元である。なお、以下では、４つ組（ｆ，ｇ，Ｆ，Ｇ）を２つの対（ｆ，ｇ），（Ｆ，Ｇ）のさらなる対と捉えて、｛（ｆ，ｇ），（Ｆ，Ｇ）｝と表記する場合もある。
【００４８】
そして、多項式演算は、上記パラメータＮに対し、Ｘ＾Ｎ＝１という関係式を用いて、演算結果が常にＮ−１次以下の多項式になるように演算される。例えば、Ｎ＝５の場合、多項式Ｘ＾４＋Ｘ＾２＋１と多項式Ｘ＾３＋Ｘの積は、多項式と多項式の積を×、整数と多項式の積（あるいは整数と整数の積）を・とすると、Ｘ＾５＝１という関係から、
（Ｘ＾４＋Ｘ＾２＋１）×（Ｘ＾３＋Ｘ）
＝Ｘ＾７＋２・Ｘ＾５＋２・Ｘ＾３＋Ｘ
＝Ｘ＾２・１＋２・１＋２・Ｘ＾３＋Ｘ
＝２・Ｘ＾３＋Ｘ＾２＋Ｘ＋２
というように、常にＮ−１次以下の多項式になるように演算される。
【００４９】
なお、改良ＮＴＲＵＳｉｇｎ署名方式においても、Ｎ−１次の多項式ａ＝ａ＿０＋ａ＿１・Ｘ＋ａ＿２・Ｘ＾２＋…＋ａ＿（Ｎ−１）・Ｘ＾（Ｎ−１）はベクトル（ａ＿０，ａ＿１，ａ＿２，…，ａ＿（Ｎ−１））と同一視する。ａ＿０，ａ＿１，ａ＿２，…，ａ＿（Ｎ−１）は多項式ａの係数であり、整数である。
（１−２）パラメータｑ
改良ＮＴＲＵＳｉｇｎ署名方式では、２以上の整数であり、多項式環Ｒのイデアルであるパラメータｑを用いる。改良ＮＴＲＵＳｉｇｎ署名方式で出現する多項式の係数は、ｑを法とした剰余を取る。
【００５０】
（１−３）パラメータｄｆ，ｄｇ
改良ＮＴＲＵＳｉｇｎ署名方式で扱う秘密鍵の一部である多項式ｆ及び、公開鍵である多項式ｈを生成するときに多項式ｆと共に用いる多項式ｇの選び方は、それぞれパラメータｄｆ，ｄｇにより決まる。
まず、多項式ｆは、ｄｆ個の係数が１であり、かつ他の係数は０となるように選ぶ。すなわち、多項式ｆはＮ−１次以下の多項式であり、０次（定数項）からＮ−１次まで、Ｎ個の係数があるが、このＮ個の係数のうち、ｄｆ個の係数が１であり、かつ（Ｎ−ｄｆ）個の係数が０となるように選ぶ。
【００５１】
そして、多項式ｇは、ｄｇ個の係数が１であり、かつ他の係数は０となるように選ぶ。
（１−４）パラメータＮｏｒｍｂｏｕｎｄ
改良ＮＴＲＵＳｉｇｎ署名方式では、後述するが署名ｓから作られる２・Ｎ次元のベクトルとメッセージのハッシュ値である２・Ｎ次元のベクトルの距離を計算し、この距離により正しい署名であるかを判定する。Ｎｏｒｍｂｏｕｎｄは、この判定の際に使用するしきい値である。すなわち、上記距離がＮｏｒｍｂｏｕｎｄ未満であれば、正しい署名として受理し、Ｎｏｒｍｂｏｕｎｄ以上であれば、正しくない署名とし拒否する。
【００５２】
非特許文献４には、ＮＴＲＵＳｉｇｎ署名方式のパラメータの例として、（Ｎ，ｑ，ｄｆ，ｄｇ，Ｎｏｒｍｂｏｕｎｄ）＝（２５１，１２８，７３，７１，３１０）の例が挙げられている。改良ＮＴＲＵＳｉｇｎ署名方式においても、同様のパラメータ例を使用してもよい。
（２）メッセージのハッシュ値、ノルム及びベクトル間の距離
改良ＮＴＲＵＳｉｇｎ署名方式においても、メッセージｍのハッシュ値に対する署名を作成する。メッセージｍのハッシュ値は、Ｎ次の多項式の対（ｍ１，ｍ２）であり、２・Ｎ次元のベクトルと同一視される。メッセージからハッシュ値を求めるハッシュ関数については、非特許文献１が詳しい。
【００５３】
改良ＮＴＲＵＳｉｇｎ署名方式においても、従来のＮＴＲＵＳｉｇｎ署名方式と同様のベクトルの距離を用いる。以下でその定義を示す。
多項式ａ＝ａ＿０＋ａ＿１・Ｘ＋ａ＿２・Ｘ＾２＋…＋ａ＿（Ｎ−１）・Ｘ＾（Ｎ−１）のノルム｜｜ａ｜｜を以下のように定義する。
｜｜ａ｜｜＝ｓｑｒｔ（（ａ＿０−μ）＾２＋（ａ＿１−μ）＾２＋…＋（ａ＿（Ｎ−１）−μ）＾２）
μ＝（１／Ｎ）・（ａ＿０＋ａ＿１＋ａ＿２＋…＋ａ＿（Ｎ−１））
ここで、ｓｑｒｔ（ｘ）はｘの平方根を示す。
【００５４】
多項式ａ，ｂの対（ａ，ｂ）のノルム｜｜（ａ，ｂ）｜｜を以下のように定義する。
｜｜（ａ，ｂ）｜｜＝ｓｑｒｔ（｜｜ａ｜｜＾２＋｜｜ｂ｜｜＾２）
多項式ａ，ｂの対（ａ，ｂ）とｃ，ｄの対（ｃ，ｄ）との距離は、｜｜（ｃ−ａ，ｄ−ｂ）｜｜で定義される。
これにより、（ｍｏｄ  Ｘ＾Ｎ−１）演算を施すことにより得られたＮ−１次以下の整数係数多項式は、加算、減算、乗算、及び元の大きさを示すノルムが定義されたＮ次元配列とみなすことができ、多項式環Ｒは、Ｎ次元配列の集合とみなすことができる。
【００５５】
（３）改良ＮＴＲＵＳｉｇｎ署名方式の鍵生成
改良ＮＴＲＵＳｉｇｎ署名方式では、上述したように、パラメータｄｆ，ｄｇを用いてランダムに多項式ｆ，多項式ｇを生成する。そして、Ｆｑ×ｆ＝１（ｍｏｄ  ｑ）となる多項式Ｆｑを用いて、
ｈ＝Ｆｑ×ｇ（ｍｏｄ  ｑ）
により、多項式ｈを生成する。ここで、多項式Ｆｑは、多項式ｆの逆元と呼ばれる。さらに、以下の式を満たすようなノルムが所定値Ｋｅｙｂｏｕｎｄより小さい多項式Ｆ，Ｇの対（Ｆ，Ｇ）を求める。
【００５６】
ｆ×Ｇ−ｇ×Ｆ＝ｑ （＊）
次に、｛（ｆ，ｇ），（Ｆ，Ｇ）｝を秘密鍵｛（ｆ，ｇ），（Ｆ＿１，Ｇ＿１）｝とし、｛（ｆ，ｇ），（Ｆ＿１，Ｇ＿１）｝を用いて式（＊）を満たし、かつノルムが所定値Ｋｅｙｂｏｕｎｄより小さい他の対（Ｆ，Ｇ）を複数個求め、（Ｆ＿２，Ｇ＿２），（Ｆ＿３，Ｇ＿３），…とする。ここで、｛（ｆ，ｇ），（Ｆ＿１，Ｇ＿１）｝、｛（ｆ，ｇ），（Ｆ＿２，Ｇ＿２）｝、…のそれぞれを秘密鍵とし、それらの秘密鍵を含めたものを秘密鍵群と呼ぶ。また、多項式ｈを公開鍵とする。ここで、従来のＮＴＲＵＳｉｇｎ署名方式では、公開鍵及び秘密鍵は一つであり、１対１対応しているが、改良ＮＴＲＵＳｉｇｎ署名方式では公開鍵は一つであるが、その公開鍵に対応する秘密鍵は複数存在することに注意しておく。なお、ＮＴＲＵＳｉｇｎ署名方式では、一つの公開鍵に対し、上記（＊）及びノルムが所定値Ｋｅｙｂｏｕｎｄより小さい多項式Ｆ，Ｇの対（Ｆ，Ｇ）は存在すれば、複数存在する可能性がある。実施の形態１及び後述する実施の形態２では、この性質を利用している。
【００５７】
なお、所定値Ｋｅｙｂｏｕｎｄは、正しい署名と検証される署名データを生成できうる秘密鍵となる（Ｆ，Ｇ）のノルムであり、（Ｎ，ｑ，ｄｆ，ｄｇ，Ｎｏｒｍｂｏｕｎｄ）＝（２５１，１２８，７３，７１，３１０）の例の場合、例えばＫｅｙｂｏｕｎｄ＝４５である。これは、非特許文献５によると、秘密鍵を用いて生成した署名が不正と検証されてしまう検証失敗確率を、１０＾（−１２）以下とするための（Ｆ，Ｇ）のノルムの限界値である。このノルムの限界値はパラメータ（Ｎ，ｑ，ｄｆ，ｄｇ，Ｎｏｒｍｂｏｕｎｄ）に依存して変わるものであるため、上記例以外の場合は、Ｋｅｙｂｏｕｎｄを変えてもよい。具体的には、例えば、所定値Ｋｅｙｂｏｕｎｄは、検証失敗確率を１０＾（−１２）以下とするための（Ｆ，Ｇ）のノルムの限界値としてもよい。また、この検証失敗確率を１０＾（−１５）など他の値としてもよい。
【００５８】
（４）改良ＮＴＲＵＳｉｇｎ署名方式の署名生成
改良ＮＴＲＵＳｉｇｎ署名方式の署名生成では、署名対象であるメッセージｍの署名ｓを計算する。まず、秘密鍵群に含まれる複数の秘密鍵から一つの秘密鍵｛（ｆ，ｇ），（ＦＳ，ＧＳ）｝を選択する。
次に、メッセージｍに対するハッシュ値である２・Ｎ次元のベクトル（ｍ１，ｍ２）（ｍ１及びｍ２はＮ次多項式）を計算する。
【００５９】
この２・Ｎ次元のベクトル（ｍ１，ｍ２）と秘密鍵｛（ｆ，ｇ），（ＦＳ，ＧＳ）｝を用いて、以下の式を満たす多項式ａ，ｂ，Ａ，Ｂを計算する。
ＧＳ×ｍ１−ＦＳ×ｍ２＝Ａ＋ｑ×Ｂ
−ｇ×ｍ１＋ｆ×ｍ２＝ａ＋ｑ×ｂ
ここで、Ａ，ａの係数は〈−ｑ／２〉＋１から〈ｑ／２〉の範囲に収まるように法ｑで割ったときの剰余を取ったものとする。すなわち、法ｑで割ったときの剰余が〈ｑ／２〉からｑ−１である場合は、ｑ減算して、上記範囲に収まるよう調整する。ここで、〈ｘ〉は、ｘ以下の数の中で最も大きい数を示す。例えば、〈−１／２〉＝−１である。
【００６０】
次に以下の式より、ｓ，ｔを計算し、ｓを署名として出力する。
ｓ＝ｆ×Ｂ＋ＦＳ×ｂ  （ｍｏｄ  ｑ）
ｔ＝ｇ×Ｂ＋ＧＳ×ｂ  （ｍｏｄ  ｑ）
（５）改良ＮＴＲＵＳｉｇｎ署名方式の署名検証
改良ＮＴＲＵＳｉｇｎ署名方式の署名生成方法は、従来のＮＴＲＵＳｉｇｎ署名方式と同様である。まず、メッセージｍに対するハッシュ値である２・Ｎ次元のベクトル（ｍ１，ｍ２）を計算する。
【００６１】
公開鍵ｈを用いて、以下の式より、多項式ｔを計算する。
ｔ＝ｓ×ｈ  （ｍｏｄ  ｑ）
２・Ｎ次元ベクトル（ｓ，ｔ）と（ｍ１，ｍ２）の距離を求め、Ｎｏｒｍｂｏｕｎｄ未満であるかをチェックする。Ｎｏｒｍｂｏｕｎｄ未満であれば、署名ｓが正しいと判定して署名ｓを受理する。Ｎｏｒｍｂｏｕｎｄ以上であれば、署名ｓが不正と判定して署名ｓを拒否する。
【００６２】
１．２  署名生成装置１０の構成
署名生成装置１０は、図１に示すように、秘密鍵群格納部１０１と、公開鍵証明書格納部１０２と、秘密鍵選択部１０３と、署名生成部１０４と、署名データセット生成部１０５と、送信部１０６とから構成される。
署名生成装置１０は、上述した改良ＮＴＲＵＳｉｇｎ署名方式により鍵生成装置３０にて、生成された複数の秘密鍵からなる秘密鍵群と、公開鍵に対応する公開鍵証明書とを格納しており、秘密鍵群に含まれる１の秘密鍵を用いて、入力であるメッセージデータｍに対する署名データＳを生成する。
【００６３】
（１）秘密鍵群格納部１０１
秘密鍵群格納部１０１は、鍵生成装置３０にて生成された複数の秘密鍵からなる秘密鍵群を格納するための領域を有している。
なお、以降の説明において、秘密鍵群格納部１０１は、複数の秘密鍵｛（ｆ，ｇ），（Ｆ＿１，Ｇ＿１）｝，｛（ｆ，ｇ），（Ｆ＿２，Ｇ＿２）｝，…，｛（ｆ，ｇ），（Ｆ＿ｕ，Ｇ＿ｕ）｝からなる秘密鍵群ＧＫＳを格納しているものとする。ここで、ｕは秘密鍵群に含まれる秘密鍵の個数である。
【００６４】
（２）公開鍵証明書格納部１０２
公開鍵証明書格納部１０２は、公開鍵ｈの公開鍵証明書ＣＰを格納するための領域を有している。
公開鍵証明書ＣＰは、公開鍵ｈと、公開鍵ｈの署名データＳＰとからなり、鍵生成装置３０にて生成される。署名データＳＰは、鍵生成装置３０にて格納されている証明書生成鍵ＫＣＳと改良ＮＴＲＵＳｉｇｎ署名方式とを用いて生成される。また、以降の説明において、公開鍵証明書ＣＰは鍵生成装置３０により予め格納されているものとする。なお、公開鍵証明書ＣＰには、公開鍵ｈと署名データＳＰに加えて他のデータを含んでいてもよい。例えば、ユーザの識別子や証明書の期限などを含んでもよい。
【００６５】
（３）秘密鍵選択部１０３
秘密鍵選択部１０３は、署名生成部１０４から秘密鍵群から１の秘密鍵を選択する旨の選択指示を受け取ると、秘密鍵群ＧＳＫに含まれる複数の秘密鍵から１の秘密鍵をランダムに選択する。
秘密鍵選択部１０３は、選択した秘密鍵を署名生成部１０４へ出力する。
【００６６】
なお、選択はランダムでなく、外部からの入力に基づくとしてもよい。
（４）署名生成部１０４
署名生成部１０４は、署名データセット生成部１０５から、メッセージデータｍの署名データの生成の指示を示す署名生成指示を受け取ると、選択指示を秘密鍵選択部１０３へ出力する。
【００６７】
署名生成部１０４は、秘密鍵選択部１０３から選択された１の秘密鍵を受け取ると、受け取った秘密鍵を用いて、メッセージデータｍに対する署名データＳを生成、つまりメッセージデータｍに署名を施して署名データＳを生成する。
署名生成部１０４は、署名データＳの生成が完了すると、その旨を示す生成完了通知を署名データセット生成部１０５へ出力する。
【００６８】
なお、署名データＳは、改良ＮＴＲＵＳｉｇｎ署名方式に基づいて生成される。
（５）署名データセット生成部１０５
署名データセット生成部１０５は、ユーザによる操作によりメッセージデータｍを受け付けると、公開鍵証明書格納部１０２から公開鍵証明書ＣＰを読み出す。
署名データセット生成部１０５は、署名生成指示を署名生成部１０４へ出力し、その後、署名生成部１０４から生成完了通知を受け取ると、メッセージデータｍと、署名生成部１０４にて生成されたメッセージデータｍの署名データＳと、読み出した公開鍵証明書ＣＰとからなる署名データセットＳＳを生成する。
【００６９】
署名データセット生成部１０５は、送信部１０６を介して、生成した署名データセットＳＳを署名検証装置２０へ送信する。
（６）送信部１０６
送信部１０６は、署名データセットＳＳを、通信路５０を介して署名検証装置２０へ送信する。
【００７０】
１．３  署名検証装置２０の構成
署名検証装置２０は、図１に示すように、ＣＡ公開鍵格納部２０１と、署名データセット格納部２０２と、署名検証部２０３と、受信部２０４と、表示部２０５とから構成される。
（１）ＣＡ公開鍵格納部２０１
ＣＡ公開鍵格納部２０１は、鍵生成装置３０にて格納されている証明書生成鍵ＫＣＳに対応し、公開鍵証明書ＣＰを検証するための公開鍵ＫＣＰを格納している。
【００７１】
（２）署名データセット格納部２０２
署名データセット格納部２０２は、署名データセットＳＳを格納するための領域を有している。
（３）署名検証部２０３
署名検証部２０３は、署名データセットＳＳに含まれる署名データＳ、及び公開鍵証明書ＣＰに含まれる署名データＳＰを検証する。なお、署名検証部２０３は、改良ＮＴＲＵＳｉｇｎ署名方式を用いて、各署名データの検証を行う。
【００７２】
以下に、検証の動作を示す。
署名検証部２０３は、受信部２０４から検証を開始する旨の検証開始指示を受け取る。
署名検証部２０３は、署名データＳＰが公開鍵ｈの正しい署名であるかを、ＣＡ公開鍵格納部に格納されているＣＡ公開鍵ＫＰＣを用いて検証する。
署名データＳＰが正しい署名であると判断する場合には、署名検証部２０３は、署名データＳがメッセージデータｍの正しい署名であるかを、公開鍵ｈを用いて検証する。
【００７３】
署名データＳが正しい署名であると判断する場合には、署名検証部２０３は、受信した署名データセットＳＳを受理する旨のメッセージ「ＯＫ」を表示部２０５へ出力する。
各署名検証のうち何れかの署名検証において、署名データが正しくない署名であると判断する場合には、署名検証部２０３は、受信した署名データセットＳＳを拒否する旨のメッセージ「ＮＧ」を表示部２０５へ出力する。
【００７４】
（４）受信部２０４
受信部２０４は、署名生成装置１０から送信された署名データセットＳＳを、通信路５０を介して受信する。
受信部２０４は、受信した署名データセットＳＳを署名データセット格納部２０２へ格納し、その後、検証開始指示を署名検証部２０３へ出力する。
【００７５】
（５）表示部２０５
表示部２０５は、署名検証部２０３から署名検証の検証結果に係るメッセージを受け取ると、受け取ったメッセージを表示する。
１．４  鍵生成装置３０の構成
鍵生成装置３０は、図１に示すように、証明書生成鍵格納部３０１と、鍵生成部３０２と、秘密鍵群生成部３０３と、証明書生成部３０４と、鍵設定部３０５とから構成される。
【００７６】
（１）証明書生成鍵格納部３０１
証明書生成鍵格納部３０１は、公開鍵ＫＣＰに対応し、公開鍵証明書ＣＰに含まれる署名データＳＰを生成するための証明書生成鍵ＫＣＳを格納している。
（２）鍵生成部３０２
鍵生成部３０２は、従来のＮＴＲＵＳｉｇｎ署名方式の鍵生成方法を用いて、秘密鍵｛（ｆ，ｇ），（Ｆ，Ｇ）｝と公開鍵ｈを生成する。なお、従来のＮＴＲＵＳｉｇｎ署名方式による鍵生成は、公知の技術であるため、ここでの説明は省略する。
【００７７】
鍵生成部３０２は、秘密鍵群の生成を指示する鍵群生成指示を秘密鍵群生成部３０３へ出力し、公開鍵証明書ＣＰの生成を指示する証明書生成指示を証明書生成部３０４へ出力する。
（３）秘密鍵群生成部３０３
秘密鍵群生成部３０３は、所定値Ｋｅｙｂｏｕｎｄ及び秘密鍵の検索回数の上限値を示すｖＭＡＸを予め格納している。ここで、ｖＭＡＸは、例えば１０００である。
【００７８】
秘密鍵群生成部３０３は、所定値ｖＭＡＸ以下の検索回数にて、ノルム｜｜（ａ，ｂ）｜｜が、所定値Ｋｅｙｂｏｕｎｄ以下となる多項式ａ，ｂの対（ａ，ｂ）を複数個生成することにより、複数の秘密鍵を生成する。
秘密鍵群生成部３０３は、鍵生成部３０２から鍵群生成指示を受け取ると、鍵生成部３０２にて生成された秘密鍵｛（ｆ，ｇ），（Ｆ，Ｇ）｝と、改良ＮＴＲＵＳｉｇｎ署名方式の鍵生成方法とを用いて、｛（ｆ，ｇ），（Ｆ＿１，Ｇ＿１）｝，｛（ｆ，ｇ），（Ｆ＿２，Ｇ＿２）｝，…，｛（ｆ，ｇ），（Ｆ＿ｕ，Ｇ＿ｕ）｝からなる秘密鍵群ＧＫＳを生成する。ここで、ｕは秘密鍵群に含まれる秘密鍵の個数である。
【００７９】
秘密鍵群生成部３０３は、秘密鍵群ＧＳＫの生成が完了すると、生成した秘密鍵群ＧＳＫを署名生成装置１０へ格納する旨の第１格納指示を鍵設定部３０５へ出力する。
（４）証明書生成部３０４
証明書生成部３０４は、鍵生成部３０２から証明書生成指示を受け取ると、証明書生成鍵格納部３０１に格納されている証明書生成鍵ＫＣＳを読み出す。
【００８０】
証明書生成部３０４は、読み出した証明書生成鍵ＫＣＳを用いて、鍵生成部３０２にて生成された公開鍵ｈに対する公開鍵証明書ＣＰを生成する。ここで、公開鍵証明書ＣＰは公開鍵ｈと、公開鍵ｈの証明書生成鍵ＫＣＳを用いた署名データＳＰとからなる。
証明書生成部３０４は、公開鍵証明書ＣＰの生成が完了すると、生成した公開鍵証明書ＣＰを署名生成装置１０へ格納する旨の第２格納指示を鍵設定部３０５へ出力する。
【００８１】
（５）鍵設定部３０５
鍵設定部３０５は、秘密鍵群生成部３０３から第１格納指示を受け取ると、秘密鍵群生成部３０３にて生成された秘密鍵群ＧＳＫを、署名生成装置１０の秘密鍵群格納部１０１へ書き込む。
鍵設定部３０５は、証明書生成部３０４から第２格納指示を受け取ると、証明書生成部３０４にて生成された公開鍵証明書ＣＰを、署名生成装置１０の公開鍵証明書格納部１０２へ書き込む。
【００８２】
１．５  署名生成装置１０の動作
署名生成装置１０は、メッセージデータｍに対する署名データセットＳＳを生成し、通信路５０を介して署名検証装置２０へ送信する。以下に、署名生成装置１０にて行われる署名生成処理の動作について、図２にて示す流れ図を用いて説明する。
署名データセット生成部１０５は、ユーザによる操作によりメッセージデータｍを受け付ける（ステップＳ５）。
【００８３】
署名データセット生成部１０５は、公開鍵証明書格納部１０２から公開鍵証明書ＣＰを読み出し、署名生成指示を署名生成部１０４へ出力する。署名生成部１０４は、署名データセット生成部１０５から、署名生成指示を受け取ると、選択指示を秘密鍵選択部１０３へ出力する。秘密鍵選択部１０３は、署名生成部１０４から選択指示を受け取ると、秘密鍵群ＧＳＫに含まれる複数の秘密鍵から１の秘密鍵をランダムに選択する（ステップＳ１０）。
【００８４】
秘密鍵選択部１０３は、選択した秘密鍵を署名生成部１０４へ出力する。署名生成部１０４は、秘密鍵選択部１０３から選択された１の秘密鍵を受け取ると、受け取った秘密鍵を用いて、メッセージデータｍに対する署名データＳを生成する（ステップＳ１５）。なお、署名データＳは、改良ＮＴＲＵＳｉｇｎ署名方式に基づいて生成される。
署名生成部１０４は、署名データＳの生成が完了すると、その旨を示す生成完了通知を署名データセット生成部１０５へ出力する。署名データセット生成部１０５は、署名生成部１０４から生成完了通知を受け取ると、メッセージデータｍと、署名生成部１０４にて生成されたメッセージデータｍの署名データＳと、読み出した公開鍵証明書ＣＰとからなる署名データセットＳＳを生成する（ステップＳ２０）。
【００８５】
送信部１０６は、署名データセット生成部１０５にて生成された署名データセットＳＳを、通信路５０を介して署名検証装置２０へ送信する（ステップＳ２５）。
１．６  署名検証装置２０の動作
署名検証装置２０は、署名生成装置１０より署名データセットＳＳを通信路５０を介して受信し、その署名データセットＳＳを検証する。以下において、署名検証装置２０にて行われる署名検証処理について、図３にて示す流れ図を用いて説明する。
【００８６】
受信部２０４は、署名生成装置１０から送信された署名データセットＳＳを、通信路５０を介して受信する（ステップＳ１００）。
受信部２０４は、受信した署名データセットＳＳを署名データセット格納部２０２に格納する（ステップＳ１０５）。
受信部２０４は、検証開始指示を署名検証部２０３へ出力する。署名検証部２０３は、受信部２０４から検証を開始する旨の検証開始指示を受け取る。署名検証部２０３は、署名データＳＰが公開鍵ｈの正しい署名であるかを、ＣＡ公開鍵格納部に格納されているＣＡ公開鍵ＫＰＣを用いて検証する（ステップＳ１１０）。
【００８７】
署名データＳＰが正しい署名であると判断する場合には（ステップＳ１１０における「ＯＫ」）、署名検証部２０３は、署名データＳがメッセージデータｍの正しい署名であるかを、公開鍵ｈを用いて検証する（ステップＳ１１５）。
署名データＳが正しい署名であると判断する場合には（ステップＳ１１５における「ＯＫ」）、署名検証部２０３は、表示部２０５を介して、メッセージ「ＯＫ」を表示する（ステップＳ１２０）。
【００８８】
署名データＳＰが正しい署名でないと判断する場合（ステップＳ１１０における「ＮＧ」）、及び署名データＳが正しい署名でないと判断する場合には（ステップＳ１１５における「ＮＧ」）、署名検証部２０３は、表示部２０５を介して、メッセージ「ＮＧ」を表示する（ステップＳ１２５）。
なお、署名検証部２０３は、改良ＮＴＲＵＳｉｇｎ署名方式を用いて、各署名データの検証を行う。
【００８９】
１．７  鍵生成装置３０の動作
鍵生成装置３０は、秘密鍵群ＧＫＳと証明書ＣＰとを生成し、生成した秘密鍵群ＧＫＳと証明書ＣＰとを署名生成装置１０に設定する。以下において、鍵生成装置３０にて行われる鍵生成処理の動作について、図４にて示す流れ図を用いて説明する。
鍵生成部３０２は、従来のＮＴＲＵＳｉｇｎ署名方式の鍵生成方法を用いて、秘密鍵｛（ｆ，ｇ），（Ｆ，Ｇ）｝と公開鍵ｈを生成する（ステップＳ２００）。
【００９０】
鍵生成部３０２は、秘密鍵群の生成を指示する鍵群生成指示を秘密鍵群生成部３０３へ出力し、公開鍵証明書ＣＰの生成を指示する証明書生成指示を証明書生成部３０４へ出力する。秘密鍵群生成部３０３は、鍵生成部３０２から鍵群生成指示を受け取ると、秘密鍵群生成処理により、｛（ｆ，ｇ），（Ｆ＿１，Ｇ＿１）｝，｛（ｆ，ｇ），（Ｆ＿２，Ｇ＿２）｝，…，｛（ｆ，ｇ），（Ｆ＿ｕ，Ｇ＿ｕ）｝からなる秘密鍵群ＧＫＳを生成する（ステップＳ２０５）。ここで、ｕは秘密鍵群に含まれる秘密鍵の個数である。
【００９１】
証明書生成部３０４は、鍵生成部３０２から証明書生成指示を受け取ると、証明書生成鍵格納部３０１に格納されている証明書生成鍵ＫＣＳを読み出す。証明書生成部３０４は、読み出した証明書生成鍵ＫＣＳを用いて、鍵生成部３０２にて生成された公開鍵ｈに対する公開鍵証明書ＣＰを生成する（ステップＳ２１０）。
秘密鍵群生成部３０３は、秘密鍵群ＧＳＫの生成が完了すると、生成した秘密鍵群ＧＳＫを署名生成装置１０へ格納する旨の第１格納指示を鍵設定部３０５へ出力する。証明書生成部３０４は、公開鍵証明書ＣＰの生成が完了すると、生成した公開鍵証明書ＣＰを署名生成装置１０へ格納する旨の第２格納指示を鍵設定部３０５へ出力する。鍵設定部３０５は、秘密鍵群生成部３０３から第１格納指示を受け取ると、秘密鍵群生成部３０３にて生成された秘密鍵群ＧＳＫを、署名生成装置１０の秘密鍵群格納部１０１へ書き込み、証明書生成部３０４から第２格納指示を受け取ると、証明書生成部３０４にて生成された公開鍵証明書ＣＰを、署名生成装置１０の公開鍵証明書格納部１０２へ書き込む（ステップＳ２１５）。
【００９２】
１．８  秘密鍵群の生成方法
ここでは、秘密鍵群生成部３０３にて行われる改良ＮＴＲＵＳｉｇｎ署名方式を用いた秘密鍵群ＧＳＫの生成方法、つまり図４にて示す秘密鍵群生成処理の動作について、図５にて示す流れ図を用いて説明する。
秘密鍵群生成部３０３は、鍵生成部３０２にて生成された秘密鍵｛（ｆ，ｇ），（Ｆ，Ｇ）｝を秘密鍵｛（ｆ，ｇ），（Ｆ＿１，Ｇ＿１）｝として秘密鍵群ＧＫＳに加える（ステップＳ３００）。
【００９３】
秘密鍵群生成部３０３は、ｕ←２，ｖ←０，Ｆ’←Ｆ，Ｇ’←Ｇとする（ステップＳ３０５）。
次に、秘密鍵群生成部３０３は、Ｆ’←Ｆ’＋Ｘ＾ｖ×ｆ，Ｇ’←Ｇ’＋Ｘ＾ｖ×ｇとする（ステップＳ３１０）。
秘密鍵群生成部３０３は、｜｜（Ｆ’，Ｇ’）｜｜＞Ｋｅｙｂｏｕｎｄであるか否かを判定する（ステップＳ３１５）。
【００９４】
｜｜（Ｆ’，Ｇ’）｜｜＞Ｋｅｙｂｏｕｎｄでないと判定する場合には（ステップＳ３１５における「ＮＯ」）、秘密鍵群生成部３０３は、（Ｆ’，Ｇ’）を秘密鍵｛（ｆ，ｇ），（Ｆ＿ｕ，Ｇ＿ｕ）｝として秘密鍵群ＧＫＳに加え（ステップＳ３２０）、ｕ←ｕ＋１とする（ステップＳ３２５）。秘密鍵群生成部３０３は、ｖ←ｖ＋１とし（ステップＳ３３０）、ｖ＞ｖＭＡＸであるか否かを判定する（ステップＳ３３５）。
【００９５】
ｖ＞ｖＭＡＸであると判断する場合には（ステップＳ３３５における「ＹＥＳ」）、処理を終了する。ｖ＞ｖＭＡＸでないと判断する場合には（ステップＳ３３５における「ＮＯ」）、ステップＳ３１０へ戻る。
｜｜（Ｆ’，Ｇ’）｜｜＞Ｋｅｙｂｏｕｎｄであると判定する場合には（ステップＳ３１５における「ＹＥＳ」）、秘密鍵群生成部３０３は、ステップＳ３２５以降を行う。
【００９６】
なお、上記の方法により生成した秘密鍵｛（ｆ，ｇ），（Ｆ＿１，Ｇ＿１）｝，｛（ｆ，ｇ），（Ｆ＿２，Ｇ＿２）｝，…は、それぞれｆ×Ｇ＿１−ｇ×Ｆ＿１＝ｑ，  ｆ×Ｇ＿２−ｇ×Ｆ＿２＝ｑ，…を満たすことに注意する。｛（ｆ，ｇ），（Ｆ＿１，Ｇ＿１）｝は、従来のＮＴＲＵＳｉｇｎ署名方式の鍵生成方法を用いて生成するため、ｆ×Ｇ＿１−ｇ×Ｆ＿１＝ｑが成り立つ。次に、ある正整数ｉに対して｛（ｆ，ｇ），（Ｆ＿ｉ，Ｇ＿ｉ）｝に対してｆ×Ｇ＿ｉ−ｇ×Ｆ＿ｉ＝ｑが成り立つとき、｛（ｆ，ｇ），（Ｆ＿（ｉ＋１），Ｇ＿（ｉ＋１））｝に対してｆ×Ｇ＿（ｉ＋１）−ｇ×Ｆ＿（ｉ＋１）＝ｑが成り立つことを示す。上記のフローチャートのステップＳ３１０より、
Ｆ＿（ｉ＋１）＝Ｆ＿ｉ＋ｗ×ｆ，  Ｇ＿（ｉ＋１）＝Ｇ＿ｉ＋ｗ×ｇ
を満たす多項式ｗが存在する。ゆえに、
ｆ×Ｇ＿（ｉ＋１）−ｇ×Ｆ＿（ｉ＋１）＝ｆ×（Ｇ＿ｉ＋ｗ×ｇ）−ｇ×（Ｆ＿ｉ＋ｗ×ｆ）
＝ｆ×Ｇ＿ｉ＋ｗ×ｆ×ｇ−ｇ×Ｆ＿ｉ＋ｗ×ｆ×ｇ
＝ｆ×Ｇ＿ｉ−ｇ×Ｆ＿ｉ＝ｑ
が成り立つ。したがって、上記の方法により生成した秘密鍵｛（ｆ，ｇ），（Ｆ＿１，Ｇ＿１）｝，｛（ｆ，ｇ），（Ｆ＿２，Ｇ＿２）｝，…は、それぞれｆ×Ｇ＿１−ｇ×Ｆ＿１＝ｑ，  ｆ×Ｇ＿２−ｇ×Ｆ＿２＝ｑ，…を満たす。
【００９７】
秘密鍵群の生成方法は上記に限らず、ｆ×Ｇ’−ｇ×Ｆ’＝ｑを満たし、かつ｜｜（Ｆ’，Ｇ’）｜｜がＫｅｙｂｏｕｎｄ以下であるような秘密鍵｛（ｆ，ｇ），（Ｆ’，Ｇ’）｝からなる秘密鍵群を生成する方法であればよい。
１．９  第１の実施の形態の全体の動作
第１の実施の形態におけるディジタル署名システム１の全体の動作を以下に示す。
【００９８】
ディジタル署名システム１の鍵生成装置３０では、署名生成装置１０の公開鍵及び秘密鍵群を生成し、署名生成装置１０に設定する。署名生成装置１０は、メッセージデータｍに対する署名データセットＳＳを生成し、通信路５０を介して署名検証装置２０へ、生成した署名データセットＳＳを送信する。署名検証装置２０は、通信路５０を介して署名生成装置１０から、署名データセットＳＳを受信し検証する。
【００９９】
１．１０  第１の実施の形態の効果
第１の実施の形態におけるディジタル署名システム１では、署名検証するための公開鍵は一つであるが、それに対応する秘密鍵が複数存在している。署名生成装置１０では、秘密鍵群に含まれる複数の秘密鍵から一つの秘密鍵を選択し、署名データを生成している。秘密鍵群に含まれる秘密鍵の個数を２とし、それぞれの秘密鍵を｛（ｆ，ｇ），（Ｆ＿１，Ｇ＿１）｝，｛（ｆ，ｇ），（Ｆ＿２，Ｇ＿２）｝とする場合を考える。このとき、Ｔｒａｎｓｃｒｉｐｔ  ａｔｔａｃｋを実行する攻撃者は、通信路５０に流れる署名データセットを入手して、Ｔｒａｎｓｃｒｉｐｔ  ａｔｔａｃｋを試みる。攻撃者には、入手した署名データセットがどちらの秘密鍵により生成されたかがわからないため、入手した署名データセットを使用された秘密鍵により分類して、それぞれを用いて攻撃することはできない。そこで、入手したすべての署名データセットから署名とハッシュ値の差分を取り、その平均を求めることで攻撃をすると、２種類の秘密鍵を用いているため、署名データセットに２種類の秘密鍵の情報が入ってしまう。その結果、Ｔｒａｎｓｃｒｉｐｔ  ａｔｔａｃｋを実行しても、２次モーメント及び４次モーメントの平均から２種類の秘密鍵の情報が混ざった状態で入手できるが、これを一つ一つの秘密鍵の情報に分離することができない。したがって、ディジタル署名システム１は、Ｔｒａｎｓｃｒｉｐｔ  ａｔｔａｃｋを防ぐことができ、安全である。なお、上記では秘密鍵群に含まれる秘密鍵の個数を２としたが、これを３や３より大きい整数とすると、さらに２次モーメント及び４次モーメントの平均から秘密鍵の情報を分離することが困難になるため、さらに高い安全性をもつ。
【０１００】
２．  第２の実施の形態
以下、本発明に係る第２の実施の形態としてのディジタル署名システム１０００について、図面を参照して説明する。
２．１  ディジタル署名システム１０００の概要
ディジタル署名システム１０００は、署名生成装置１０１０と、署名検証装置１０２０と、通信路１０５０とから構成される。
【０１０１】
署名生成装置１０１０は、ＮＴＲＵＳｉｇｎ署名方式を用いて、メッセージデータｍに対する署名データセットＳＳを生成し、通信路１０５０を介して署名検証装置１０２０に署名データセットＳＳを送信する。なお、署名データセットＳＳの構成については、後述する。
署名検証装置１０２０は、署名生成装置１０１０から、署名データセットＳＳを受信し、受信した署名データセットＳＳがメッセージデータｍの正しい署名であるかを検証する。署名検証装置１０２０は、署名データセットＳＳが正しいと判定する場合には、署名データセットＳＳを受理し、署名データセットＳＳが不正と判定する場合には、署名データセットＳＳを拒否する。
【０１０２】
２．２  署名生成装置１０１０の構成
署名生成装置１０１０は、図６に示すように、秘密鍵格納部１１０１と、公開鍵証明書格納部１１０２と、秘密鍵更新部１１０３と、署名生成部１１０４と、署名データセット生成部１１０５と、送信部１１０６と、表示部１１０７とから構成される。
署名生成装置１０１０は、入力であるメッセージデータｍに対する署名データセットＳＳを生成し、生成した署名データセットＳＳを署名検証装置１０２０へ送信する。
【０１０３】
署名生成装置１０１０を構成する署名データセット生成部１１０５及び送信部１１０６は、それぞれ、第１の実施の形態にて示す署名データセット生成部１０５及び送信部１０６と同様の動作を行うため、ここでの説明は省略する。
（１）秘密鍵格納部１１０１
秘密鍵格納部１１０１は、秘密鍵｛（ｆ，ｇ），（Ｆ，Ｇ）｝を格納するための領域を有している。
【０１０４】
なお、ここでは、秘密鍵格納部１１０１は、秘密鍵｛（ｆ，ｇ），（Ｆ，Ｇ）｝を予め格納しているものとする。
（２）公開鍵証明書格納部１１０２
公開鍵証明書格納部１１０２は、秘密鍵｛（ｆ，ｇ），（Ｆ，Ｇ）｝に対応する公開鍵ｈの公開鍵証明書ＣＰを格納するための領域を有している。
【０１０５】
公開鍵証明書ＣＰは、公開鍵ｈと、公開鍵ｈの署名データＳＰとからなる。署名データＳＰは、改良ＮＴＲＵＳｉｇｎ署名方式に基づいて生成される。また、ここでは、公開鍵証明書格納部１１０２は、公開鍵証明書ＣＰは予め格納しているものとする。なお、公開鍵証明書ＣＰには、公開鍵ｈと署名データＳＰに加えて他のデータを含んでいてもよい。例えば、ユーザの識別子や証明書の期限などを含んでもよい。
【０１０６】
（３）秘密鍵更新部１１０３
秘密鍵更新部１１０３は、所定値Ｋｅｙｂｏｕｎｄ及び秘密鍵の検索回数の上限値を示すｖＭＡＸを予め格納している。ここで、ｖＭＡＸは、例えば１０００である。
秘密鍵更新部１１０３は、定期的、例えば、１ヶ月ごとに、以下の動作により秘密鍵格納部１１０１に格納されている秘密鍵を更新する。なお、秘密鍵の更新のタイミングは、月単位でもよいし、日単位でもよいし、時間単位でもよい。
【０１０７】
秘密鍵更新部１１０３は、改良ＮＴＲＵＳｉｇｎ署名方式を用いて、所定値ｖＭＡＸ以下の検索回数にて、ノルム｜｜（Ｆ’，Ｇ’）｜｜が、所定値Ｋｅｙｂｏｕｎｄ以下となる対（Ｆ’，Ｇ’）を生成することにより、公開鍵ｈに対応し、且つ秘密鍵格納部１１０１に格納されている秘密鍵｛（ｆ，ｇ），（Ｆ，Ｇ）｝とは異なる秘密鍵｛（ｆ，ｇ），（Ｆ’，Ｇ’）｝を生成する。
【０１０８】
秘密鍵更新部１１０３は、秘密鍵格納部１１０１に格納されている秘密鍵に新たに生成した｛（ｆ，ｇ），（Ｆ’，Ｇ’）｝を上書きして更新する。
秘密鍵更新部１１０３は、所定値ｖＭＡＸ以下にて、対（Ｆ’，Ｇ’）を生成することができない場合には、秘密鍵を更新することができない旨を示す更新不可メッセージを、表示部１１０７を介して表示する。
【０１０９】
なお、秘密鍵の更新方法の詳細については、後述する。
（４）署名生成部１１０４
署名生成部１１０４は、署名データセット生成部１１０５から、メッセージデータｍの署名データの生成の指示を示す署名生成指示を受け取ると、秘密鍵格納部１１０１から秘密鍵を読み出す。
【０１１０】
署名生成部１１０４は、読み出した秘密鍵を用いて、メッセージデータｍに対する署名データＳを生成、メッセージデータｍに署名を施して署名データＳを生成する。
署名生成部１１０４は、署名データＳの生成が完了すると、その旨を示す生成完了通知を署名データセット生成部１１０５へ出力する。
なお、署名データＳは、改良ＮＴＲＵＳｉｇｎ署名方式に基づいて生成される。
【０１１１】
（５）表示部１１０７
表示部１１０７は、秘密鍵更新部１１０３から受け取ったメッセージを表示する。
２．３  署名検証装置１０２０
署名検証装置１０２０は、図６に示すように、ＣＡ公開鍵格納部１２０１と、署名データセット格納部１２０２と、署名検証部１２０３と、受信部１２０４と、表示部１２０５とから構成される。
【０１１２】
署名検証装置１０２０を構成するＣＡ公開鍵格納部１２０１、署名データセット格納部１２０２、署名検証部１２０３、受信部１２０４、及び表示部１２０５は、それぞれ、第１の実施の形態にて示すＣＡ公開鍵格納部２０１、署名データセット格納部２０２、署名検証部２０３、受信部２０４、及び表示部２０５と同様の動作を行うため、ここでの説明は省略する。
【０１１３】
２．４  秘密鍵の更新方法
ここでは、秘密鍵更新部１１０３にて行われる秘密鍵の更新方法（秘密鍵更新処理）について、図７に示す流れ図を用いて説明する。
秘密鍵更新部１１０３は、｛（ｆ，ｇ），（Ｆ，Ｇ）｝を秘密鍵｛（ｆ，ｇ），（Ｆ＿１，Ｇ＿１）｝として秘密鍵格納部１１０１から読み出す（ステップＳ４００）。
【０１１４】
秘密鍵更新部１１０３は、変数ｖ，Ｆ’，Ｇ’に対して、ｖ←０，Ｆ’←Ｆ，Ｇ’←Ｇを設定する（ステップＳ４０５）。
秘密鍵更新部１１０３は、変数Ｆ’，Ｇ’に対して、Ｆ’←Ｆ’＋Ｘ＾ｖ×ｆ，Ｇ’←Ｇ’＋Ｘ＾ｖ×ｇを設定する（ステップＳ４１０）。
秘密鍵更新部１１０３は、ノルム｜｜（Ｆ’，Ｇ’）｜｜が所定値Ｋｅｙｂｏｕｎｄを超えているか否かを判定する（ステップＳ４１５）。
【０１１５】
ノルム｜｜（Ｆ’，Ｇ’）｜｜が所定値Ｋｅｙｂｏｕｎｄを超えていると判定する場合には（ステップＳ４１５における「ＹＥＳ」）、秘密鍵更新部１１０３は、変数ｖに対して、ｖ←ｖ＋１とし（ステップＳ４２０）、変数ｖが所定値ｖＭＡＸを超えているか否かを判定する（ステップＳ４２５）。
変数ｖが所定値ｖＭＡＸを超えていると判定する場合には（ステップＳ４２５における「ＹＥＳ」）、秘密鍵更新部１１０３は、更新不可メッセージを表示部１１０７を介して表示する（ステップＳ４３０）。変数ｖが所定値ｖＭＡＸを超えていないと判定する場合には（ステップＳ４２５における「ＮＯ」）、秘密鍵更新部１１０３は、ステップＳ４１０へ戻る。
【０１１６】
ノルム｜｜（Ｆ’，Ｇ’）｜｜が所定値Ｋｅｙｂｏｕｎｄを超えていないと判定する場合には（ステップＳ４１５における「ＮＯ」）、秘密鍵更新部１１０３は、秘密鍵格納部１１０１に格納されている秘密鍵に生成した秘密鍵｛（ｆ，ｇ），（Ｆ’，Ｇ’）｝を上書きして更新することにより、新たな秘密鍵｛（ｆ，ｇ），（Ｆ，Ｇ）｝とする（ステップＳ４３５）。
【０１１７】
なお、上記の方法により生成した秘密鍵｛（ｆ，ｇ），（Ｆ’，Ｇ’）｝は、それぞれｆ×Ｇ’−ｇ×Ｆ’＝ｑを満たすことに注意する。なお、秘密鍵の更新方法は上記に限らず、ｆ×Ｇ’−ｇ×Ｆ’＝ｑを満たし、かつ｜｜（Ｆ’，Ｇ’）｜｜がＫｅｙｂｏｕｎｄ以下の秘密鍵｛（ｆ，ｇ），（Ｆ’，Ｇ’）｝に更新する方法であればよい。
２．５  署名生成装置１０１０の動作
署名生成装置１０１０の動作は、メッセージデータｍに対する署名データセットＳＳを生成し、通信路１０５０を介して署名検証装置１０２０へ送信する「署名生成処理」と、秘密鍵を更新する「秘密鍵更新処理」の動作からなる。以下に、各処理の動作について、説明する。
【０１１８】
（１）署名生成処理
ここでは、署名生成処理の動作について、図８に示す流れ図を用いて説明する。
署名データセット生成部１１０５は、ユーザによる操作によりメッセージデータｍを受け付ける（ステップＳ５００）。
署名データセット生成部１１０５は、公開鍵証明書格納部１１０２から公開鍵証明書ＣＰを読み出し、署名生成指示を署名生成部１１０４へ出力する。署名生成部１１０４は、署名データセット生成部１０５から、署名生成指示を受け取ると、秘密鍵格納部１１０１から秘密鍵を読み出す。署名生成部１１０４は、読み出した秘密鍵を用いて、メッセージデータｍに対する署名データＳを生成する（ステップＳ５０５）。
【０１１９】
署名生成部１１０４は、署名データＳの生成が完了すると、その旨を示す生成完了通知を署名データセット生成部１１０５へ出力する。署名データセット生成部１１０５は、署名生成部１１０４から生成完了通知を受け取ると、メッセージデータｍと、署名生成部１１０４にて生成されたメッセージデータｍの署名データＳと、読み出した公開鍵証明書ＣＰとからなる署名データセットＳＳを生成する（ステップＳ５１０）。
【０１２０】
送信部１１０６は、署名データセット生成部１１０５にて生成された署名データセットＳＳを、通信路１０５０を介して署名検証装置１０２０へ送信する（ステップＳ５１５）。
（２）秘密鍵更新処理
秘密鍵更新部１１０３は、秘密鍵格納部１１０１に格納されている秘密鍵｛（ｆ，ｇ），（Ｆ，Ｇ）｝を用いて、新たな秘密鍵｛（ｆ，ｇ），（Ｆ’，Ｇ’）｝を生成し、秘密鍵格納部１１０１に格納されている秘密鍵に新たな秘密鍵を上書きして更新する。
【０１２１】
なお、詳細な動作は、図７にて示しているため、ここでの説明は省略する。
２．６  署名検証装置１０２０の動作
署名検証装置１０２０は、署名生成装置１０１０より署名データセットＳＳを通信路１０５０を介して受信し、その署名データセットＳＳを検証する。なお、署名検証装置１０２０にて行われる署名検証処理は、第１の実施の形態における図３にて示す流れ図と同様の動作であるため、ここでの説明は省略する。
【０１２２】
２．７  実施の形態２の全体の動作
第２の実施の形態におけるディジタル署名システム１０００の全体の動作を以下に示す。
ディジタル署名システム１０００の署名生成装置１０１０は、「署名生成処理」にて、入力であるメッセージデータｍに対して、署名データセットＳＳを生成し、署名検証装置１０２０へ送信する。署名検証装置１０２０は、署名生成装置１０１０から、署名データセットＳＳを受信し、受信した署名データセットを検証し、その検証結果により、署名データセットＳＳを受理する、または、拒否するかを決定する。また、「鍵更新処理」にて、署名生成装置１０１０は、秘密鍵を更新する。
【０１２３】
２．８  第２の実施の形態の効果
第２の実施の形態におけるディジタル署名システム１０００では、署名検証するための公開鍵は一つであるが、それに対応する秘密鍵が更新されていく。この更新タイミングは、通信路１０５０から署名データセットを入手して、Ｔｒａｎｓｃｒｉｐｔ  ａｔｔａｃｋを実行する攻撃者にはわからない。ここで、一回のみ秘密鍵が更新された場合について考える。攻撃者には入手した署名データセットを生成するために使用した秘密鍵の更新タイミングがわからないため、入手した署名データセットを使用された秘密鍵により厳密に分類して、それぞれを用いて攻撃することはできない。そこで、入手したすべての署名データセットから署名とハッシュ値の差分を取り、その平均を求めることで攻撃をすると、ある時期を境にして、２種類の秘密鍵を用いているため、入手した署名データセットを秘密鍵により正しく分類できない限り、署名データセットに２種類の秘密鍵の情報が入ってしまう。その結果、Ｔｒａｎｓｃｒｉｐｔ  ａｔｔａｃｋを実行しても、２次モーメント及び４次モーメントの平均から２種類の秘密鍵の情報が混ざった状態で入手できるが、これを一つ一つの秘密鍵の情報に分離することができない。したがって、ディジタル署名システム１０００では第１の実施の形態におけるディジタル署名システム１と同様に、Ｔｒａｎｓｃｒｉｐｔ  ａｔｔａｃｋを防ぐことができ、安全である。
【０１２４】
３．変形例
上記に説明した第１及び第２の実施の形態は、本発明の実施の一例であり、本発明はこれら実施の形態に何ら限定されるものではなく、その旨を逸脱しない範囲において種々なる態様で実施し得るものである。例えば、以下のような場合も本発明に含まれる。
（１）第１の実施の形態では、対（ｆ，ｇ）の各値はそれぞれ固定し、対（Ｇ，Ｆ）の各値を変更したが、これに限定されない。対（ｆ，ｇ）の値も可変として複数の秘密鍵を設定してもよい。この場合、ＮＴＲＵＳｉｇｎ署名方式の鍵の条件であるｆ×Ｇ−ｇ×Ｆ＝ｑは満たすものとする。または、対（ｆ，ｇ）の各値を可変とし、対（Ｆ，Ｇ）の各値は固定としてもよい。
【０１２５】
また、第２の実施の形態も同様に、対（ｆ，ｇ）の各値も可変として秘密鍵の更新を行ってもよい。または、対（ｆ，ｇ）の各値を可変とし、対（Ｆ，Ｇ）の各値は固定としてもよい。
（２）第１の実施の形態の秘密鍵群生成部及び第２の実施の形態における秘密鍵更新部における、秘密鍵の探索回数を示すｖＭＡＸの値は１０００に限らない。他の値、例えば、１００００でもよい。
【０１２６】
（３）第１の実施の形態において、ランダムに秘密鍵を選択するではなく、定められたルールにしたがって選択してもよい。
例えば、署名生成装置は、署名データセットを生成した回数をカウントして、第１の所定回数（例えば、１０＾７回など）に達するまで、同じ秘密鍵を使用し、その後、先とは異なる秘密鍵を第２の所定回数（例えば、１０＾８回など）に達するまで使用するとしてもよい。このとき、署名生成装置は、ポインタにより現在使用している秘密鍵を特定することにより、第１の所定回数に達するまで、同じ秘密鍵を使用することができる。このような場合においても、使用する秘密鍵の切り替えのタイミングを攻撃者がわからないため、Ｔｒａｎｓｃｒｉｐｔ  ａｔｔａｃｋに対して安全である。なお、カウントの対象は、署名データを生成した回数でもよい。
【０１２７】
または、署名生成装置は、複数の秘密鍵が格納されている順に選択してもよい。このとき、署名生成装置は、ポインタを用いて現在使用している秘密鍵を特定し、次に使用する秘密鍵へとポインタの位置を変更することにより、複数の秘密鍵が格納されている順に選択することができる。これにより、署名生成装置は、署名生成時には、前回署名に使用した秘密鍵とは別の秘密鍵を取得し、取得した別の秘密鍵を用いて、署名データを生成することができる。
【０１２８】
（４）第２の実施の形態において、秘密鍵を更新するタイミングを署名データセットを生成した回数に依存させてもよい。例えば、秘密鍵を用いて、署名データセットを所定回数（例えば、１０＾７回など）生成したときに秘密鍵を更新するとしてもよい。このような場合においても、使用する秘密鍵の切り替えのタイミングを攻撃者がわからないため、Ｔｒａｎｓｃｒｉｐｔ  ａｔｔａｃｋに対して安全である。
【０１２９】
（５）第１及び第２実施の形態では、署名方式としてＮＴＲＵＳｉｇｎ署名方式またはその方式をベースとした改良方式を用いているが、これに限らない。一つの公開鍵に対して、複数の秘密鍵が対応することが可能である署名方式であればよい。
例えば、ＮＴＲＵＳｉｇｎ署名方式とは異なり、且つ格子を用いた署名方式である。
（６）第１の実施の形態において、鍵生成装置と署名生成装置とは、個別の装置としたが、これに限定されない。ディジタル署名システム１は、鍵生成装置と署名生成装置からなる装置、及び署名検証装置から構成されるとしてもよい。
【０１３０】
（７）第１の実施の形態において、署名生成装置は、ユーザの操作によりメッセージデータを受け付けるとしたが、これに限定されない。
署名生成装置は、メッセージデータを外部の装置から受け取ってもよい。
また、第２の実施の形態においても同様に、署名生成装置は、メッセージデータを外部の装置から受け取ってもよい。
【０１３１】
（８）これらの実施の形態及び変形例の組合せであってもよい。
＜その他の変形例＞
なお、本発明を上記の実施の形態に基づいて説明してきたが、本発明は、上記の実施の形態に限定されないのはもちろんである。以下のような場合も本発明に含まれる。
（１）上記の各装置は、具体的には、マイクロプロセッサ、ＲＯＭ、ＲＡＭ、ハードディスクユニット、ディスプレィユニット、キーボード、マウスなどから構成されるコンピュータシステムである。前記ＲＡＭ又は前記ハードディスクユニットには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムに従って動作することにより、各装置は、その機能を達成する。ここで、コンピュータプログラムは、所定の機能を達成するために、コンピュータに対する指令を示す命令コードが複数個組み合わされて構成されたものである。
【０１３２】
（２）上記の各装置を構成する構成要素の一部又は全部は、１個のシステムＬＳＩ（Large Scale Integration：大規模集積回路）から構成されているとしてもよい。システムＬＳＩは、複数の構成部を１個のチップ上に集積して製造された超多機能ＬＳＩであり、具体的には、マイクロプロセッサ、ＲＯＭ、ＲＡＭなどを含んで構成されるコンピュータシステムである。前記ＲＡＭには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムに従って動作することにより、システムＬＳＩは、その機能を達成する。
【０１３３】
（３）上記の各装置を構成する構成要素の一部又は全部は、各装置に脱着可能なＩＣカード又は単体のモジュールから構成されているとしてもよい。前記ＩＣカード又は前記モジュールは、マイクロプロセッサ、ＲＯＭ、ＲＡＭ、などから構成されるコンピュータシステムである。前記ＩＣカード又は前記モジュールは、上記の超多機能ＬＳＩを含むとしてもよい。マイクロプロセッサが、コンピュータプログラムに従って動作することにより、前記ＩＣカード又は前記モジュールは、その機能を達成する。このＩＣカード又はこのモジュールは、耐タンパ性を有するとしてもよい。
【０１３４】
（４）本発明は、上記に示す方法であるとしてもよい。また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、前記コンピュータプログラムからなるディジタル信号であるとしてもよい。
また、本発明は、前記コンピュータプログラム又は前記ディジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、ＣＤ―ＲＯＭ、ＭＯ、ＤＶＤ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＢＤ（Ｂｌｕ−ｒａｙ  Ｄｉｓｃ）、半導体メモリなど、に記録したものとしてもよい。また、これらの記録媒体に記録されている前記コンピュータプログラム又は前記ディジタル信号であるとしてもよい。
【０１３５】
また、本発明は、前記コンピュータプログラム又は前記ディジタル信号を、電気通信回線、無線又は有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしてもよい。
また、本発明は、マイクロプロセッサとメモリとを備えたコンピュータシステムであって、前記メモリは、上記コンピュータプログラムを記憶しており、前記マイクロプロセッサは、前記コンピュータプログラムに従って動作するとしてもよい。
【０１３６】
また、前記プログラム又は前記ディジタル信号を前記記録媒体に記録して移送することにより、又は前記プログラム又は前記ディジタル信号を前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。
（５）上記実施の形態及び上記変形例をそれぞれ組み合わせるとしてもよい。
４．まとめ
本発明は、一つの公開鍵に対して、複数の秘密鍵が対応することが可能である署名方式を用いて、メッセージデータに対する署名データを生成する署名生成装置であって、複数の前記秘密鍵からなる秘密鍵群を格納する秘密鍵群格納部と、前記公開鍵または、前記公開鍵の証明書のいずれかを格納する公開鍵証明書格納部と、前記秘密鍵群に含まれる複数の前記秘密鍵から一つの前記秘密鍵を選択する秘密鍵選択部と、選択した前記秘密鍵を用いて、前記メッセージデータに対する前記署名データを生成する署名生成部とを備えることを特徴とする。
【０１３７】
ここで、前記署名方式は、加算、減算、乗算と元の大きさを示すノルムが定義されたＮ次元配列の集合である環Ｒと、前記環Ｒのイデアルｑに対し、前記環Ｒの元ｆ，ｇおよび、ｆ（ｍｏｄ  ｑ）の逆数である元Ｆｑを生成し、前記元ｇおよび前記元Ｆｑの積とｍｏｄ  ｑで合同である元ｈを前記公開鍵として生成し、ｆ×Ｇ−ｇ×Ｆ＝ｑを満たし、かつ、ノルムが予め与えられた所定値より小さい前記環Ｒの元の対である複数の解（Ｆ，Ｇ）＝（Ｆ＿１，Ｇ＿１），（Ｆ＿２，Ｇ＿２），…，（Ｆ＿ｕ，Ｇ＿ｕ）  （ｕは１より大きい正整数）を生成し、複数の前記元の４つ組（ｆ，ｇ，Ｆ＿１，Ｇ＿１），（ｆ，ｇ，Ｆ＿２，Ｇ＿２），…，（ｆ，ｇ，Ｆ＿ｕ，Ｇ＿ｕ）を前記秘密鍵として生成する鍵生成ステップと、前記秘密鍵を用いて前記メッセージデータに対する前記署名データを生成する署名生成ステップと、前記公開鍵を用いて前記署名データを検証する署名検証ステップとを、含むとしてもよい。
【０１３８】
ここで、前記秘密鍵選択部は、前記秘密鍵群に含まれる複数の前記秘密鍵からランダムに一つの前記秘密鍵を選択するとしてもよい。
また、本発明は、一つの公開鍵に対して、複数の秘密鍵が対応することが可能である署名方式を用いて、前記公開鍵と前記秘密鍵を生成する鍵生成装置であって、前記署名方式は、加算、減算、乗算と元の大きさを示すノルムが定義されたＮ次元配列の集合である環Ｒと、前記環Ｒのイデアルｑに対し、前記環Ｒの元ｆ，ｇおよび、ｆ（ｍｏｄ  ｑ）の逆数である元Ｆｑを生成し、前記元ｇおよび前記元Ｆｑの積とｍｏｄ  ｑで合同である元ｈを前記公開鍵として生成し、ｆ×Ｇ−ｇ×Ｆ＝ｑを満たし、かつ、ノルムが予め与えられた所定値より小さい前記環Ｒの元の対である複数の解（Ｆ，Ｇ）＝（Ｆ＿１，Ｇ＿１），（Ｆ＿２，Ｇ＿２），…，（Ｆ＿ｕ，Ｇ＿ｕ）  （ｕは１より大きい正整数）を生成し、複数の前記元の４つ組（ｆ，ｇ，Ｆ＿１，Ｇ＿１），（ｆ，ｇ，Ｆ＿２，Ｇ＿２），…，（ｆ，ｇ，Ｆ＿ｕ，Ｇ＿ｕ）を前記秘密鍵として生成する鍵生成ステップと、前記秘密鍵を用いて前記メッセージデータに対する前記署名データを生成する署名生成ステップと、前記公開鍵を用いて前記署名データを検証する署名検証ステップとを含み、前記鍵生成ステップを用いて、前記公開鍵と複数の前記秘密鍵を生成することを特徴とする。
【０１３９】
また、本発明は、一つの公開鍵に対して、複数の秘密鍵が対応することが可能である署名方式を用いて、メッセージデータに対する署名データを生成する署名生成装置であって、前記秘密鍵を格納する秘密鍵格納部と、前記公開鍵または、前記公開鍵の証明書のいずれかを格納する公開鍵証明書格納部と、前記秘密鍵を用いて、前記メッセージデータに対する前記署名データを生成する署名生成部と、前記公開鍵と対応するように前記秘密鍵を更新する秘密鍵更新部とを備えることを特徴とする。
【０１４０】
ここで、前記署名方式は、加算、減算、乗算と元の大きさを示すノルムが定義されたＮ次元配列の集合である環Ｒと、前記環Ｒのイデアルｑに対し、前記環Ｒの元ｆ，ｇおよび、ｆ（ｍｏｄ  ｑ）の逆数である元Ｆｑを生成し、前記元ｇおよび前記元Ｆｑの積とｍｏｄ  ｑで合同である元ｈを公開鍵として生成し、ｆ×Ｇ−ｇ×Ｆ＝ｑを満たし、かつ、ノルムが予め与えられた所定値より小さい前記環Ｒの元の対（Ｆ，Ｇ）を生成し、前記元の４つ組（ｆ，ｇ，Ｆ，Ｇ）を前記秘密鍵として生成し、前記秘密鍵を秘密鍵とする鍵生成ステップと、前記秘密鍵を用いて前記メッセージデータに対する前記署名データを生成する署名生成ステップと、前記公開鍵を用いて前記署名データを検証する署名検証ステップとを、含むとしてもよい。
【０１４１】
また、本発明は、一つの公開鍵に対して、複数の秘密鍵が対応することが可能である署名方式を用いて、メッセージデータに対する署名データを生成する署名生成装置と前記署名データを検証する署名検証装置とからなるディジタル署名システムであって、前記署名生成装置は、複数の前記秘密鍵からなる秘密鍵群を格納する秘密鍵群格納部と、前記公開鍵または、前記公開鍵の証明書のいずれかを格納する公開鍵証明書格納部と、前記秘密鍵群に含まれる複数の前記秘密鍵から一つの前記秘密鍵を選択する秘密鍵選択部と、選択した前記秘密鍵を用いて、前記メッセージデータに対する前記署名データを生成する署名生成部とを備えることを特徴とする。
【０１４２】
また、本発明は、一つの公開鍵に対して、複数の秘密鍵が対応することが可能である署名方式を用いて、メッセージデータに対する署名データを生成する署名生成方法であって、複数の前記秘密鍵からなる秘密鍵群を格納する秘密鍵群格納ステップと、前記公開鍵または、前記公開鍵の証明書のいずれかを格納する公開鍵証明書格納ステップと、前記秘密鍵群に含まれる複数の前記秘密鍵から一つの前記秘密鍵を選択する秘密鍵選択ステップと、選択した前記秘密鍵を用いて、前記メッセージデータに対する前記署名データを生成する署名生成ステップとを含むことを特徴とする。
【０１４３】
また、本発明は、一つの公開鍵に対して、複数の秘密鍵が対応することが可能である署名方式を用いて、メッセージデータに対する署名データを生成する署名生成方法であって、前記秘密鍵を格納する秘密鍵格納ステップと、前記公開鍵または、前記公開鍵の証明書のいずれかを格納する公開鍵証明書格納ステップと、前記秘密鍵を用いて、前記メッセージデータに対する前記署名データを生成する署名生成ステップと、前記公開鍵と対応するように前記秘密鍵を更新する秘密鍵更新ステップとを含むことを特徴とする。
【０１４４】
また、本発明は、一つの公開鍵に対して、複数の秘密鍵が対応することが可能である署名方式を用いて、メッセージデータに対する署名データを生成する署名生成装置に実行させるプログラムであって、複数の前記秘密鍵からなる秘密鍵群を格納する秘密鍵群格納ステップと、前記公開鍵または、前記公開鍵の証明書のいずれかを格納する公開鍵証明書格納ステップと、前記秘密鍵群に含まれる複数の前記秘密鍵から一つの前記秘密鍵を選択する秘密鍵選択ステップと、選択した前記秘密鍵を用いて、前記メッセージデータに対する前記署名データを生成する署名生成ステップとを前記署名生成装置に実行させることを特徴とする。
【０１４５】
ここで、前記署名方式は、加算、減算、乗算と元の大きさを示すノルムが定義されたＮ次元配列の集合である環Ｒと、前記環Ｒのイデアルｑに対し、前記環Ｒの元ｆ，ｇおよび、ｆ（ｍｏｄ  ｑ）の逆数である元Ｆｑを生成し、前記元ｇおよび前記元Ｆｑの積とｍｏｄ  ｑで合同である元ｈを前記公開鍵として生成し、ｆ×Ｇ−ｇ×Ｆ＝ｑを満たし、かつ、ノルムが予め与えられた所定値より小さい前記環Ｒの元の対である複数の解（Ｆ，Ｇ）＝（Ｆ＿１，Ｇ＿１），（Ｆ＿２，Ｇ＿２），…，（Ｆ＿ｕ，Ｇ＿ｕ）  （ｕは１より大きい正整数）を生成し、複数の前記元の４つ組（ｆ，ｇ，Ｆ＿１，Ｇ＿１），（ｆ，ｇ，Ｆ＿２，Ｇ＿２），…，（ｆ，ｇ，Ｆ＿ｕ，Ｇ＿ｕ）を前記秘密鍵として生成する鍵生成ステップと、前記秘密鍵を用いて前記メッセージデータに対する前記署名データを生成する署名生成ステップと、前記公開鍵を用いて前記署名データを検証する署名検証ステップとを含むとしてもよい。
【０１４６】
ここで、前記秘密鍵選択ステップは、前記秘密鍵群に含まれる複数の前記秘密鍵からランダムに一つの前記秘密鍵を選択するとしてもよい。
また、本発明は、一つの公開鍵に対して、複数の秘密鍵が対応することが可能である署名方式を用いて、メッセージデータに対する署名データを生成する署名生成装置に実行させるプログラムであって、前記秘密鍵を格納する秘密鍵格納ステップと、前記公開鍵または、前記公開鍵の証明書のいずれかを格納する公開鍵証明書格納ステップと、前記秘密鍵を用いて、前記メッセージデータに対する前記署名データを生成する署名生成ステップと、前記公開鍵と対応するように前記秘密鍵を更新する秘密鍵更新ステップとを前記署名生成装置に実行させることを特徴とする。
【０１４７】
ここで、前記署名方式は、加算、減算、乗算と元の大きさを示すノルムが定義されたＮ次元配列の集合である環Ｒと、前記環Ｒのイデアルｑに対し、前記環Ｒの元ｆ，ｇおよび、ｆ（ｍｏｄ  ｑ）の逆数である元Ｆｑを生成し、前記元ｇおよび前記元Ｆｑの積とｍｏｄ  ｑで合同である元ｈを公開鍵として生成し、ｆ×Ｇ−ｇ×Ｆ＝ｑを満たし、かつ、ノルムが予め与えられた所定値より小さい前記環Ｒの元の対（Ｆ，Ｇ）を生成し、前記元の４つ組（ｆ，ｇ，Ｆ，Ｇ）を前記秘密鍵として生成し、前記秘密鍵を秘密鍵とする鍵生成ステップと、前記秘密鍵を用いて前記メッセージデータに対する前記署名データを生成する署名生成ステップと、前記公開鍵を用いて前記署名データを検証する署名検証ステップとを、含むとしてもよい。
【０１４８】
また、本発明は、一つの公開鍵に対して、複数の秘密鍵が対応することが可能である署名方式を用いて、メッセージデータに対する署名データを生成する署名生成装置の集積回路であって、複数の前記秘密鍵からなる秘密鍵群を格納する秘密鍵群格納部と、前記公開鍵または、前記公開鍵の証明書のいずれかを格納する公開鍵証明書格納部と、前記秘密鍵群に含まれる複数の前記秘密鍵から一つの前記秘密鍵を選択する秘密鍵選択部と、選択した前記秘密鍵を用いて、前記メッセージデータに対する前記署名データを生成する署名生成部とを備えることを特徴とする。
【０１４９】
また、本発明は、一つの公開鍵に対して、複数の秘密鍵が対応することが可能である署名方式を用いて、メッセージデータに対する署名データを生成する署名生成装置の集積回路であって、前記秘密鍵を格納する秘密鍵格納部と、前記公開鍵または、前記公開鍵の証明書のいずれかを格納する公開鍵証明書格納部と、前記秘密鍵を用いて、前記メッセージデータに対する前記署名データを生成する署名生成部と、前記公開鍵と対応するように前記秘密鍵を更新する秘密鍵更新部とを備えることを特徴とする。
【産業上の利用可能性】
【０１５０】
上記の示したディジタル署名システムの構成によると、Ｔｒａｎｓｃｒｉｐｔ  ａｔｔａｃｋを防ぐことができる。
また、上記にて示したディジタル署名システムを構成する各装置は、電器機器製造産業において、経営的に、また継続的及び反復的に、製造し、販売することができる。
【図面の簡単な説明】
【０１５１】
【図１】ディジタル署名システム１の構成を示すブロック図である。
【図２】署名生成装置１０にて行われる署名生成処理の動作を示す流れ図である。
【図３】署名検証装置２０にて行われる署名検証処理の動作を示す流れ図である。
【図４】鍵生成装置３０にて行われる鍵生成処理の動作を示す流れ図である。
【図５】鍵生成装置３０にて行われる秘密鍵群生成処理の動作を示す流れ図である。
【図６】ディジタル署名システム１０００の構成を示すブロック図である。
【図７】署名生成装置１０１０にて行われる秘密鍵更新処理の動作を示す流れ図である。
【図８】署名生成装置１０１０にて行われる署名生成処理の動作を示す流れ図である。
【符号の説明】
【０１５２】
１    ディジタル署名システム
１０    署名生成装置
２０    署名検証装置
３０    鍵生成装置
５０    通信路
１０１    秘密鍵群格納部
１０２    公開鍵証明書格納部
１０３    秘密鍵選択部
１０４    署名生成部
１０５    署名データセット生成部
１０６    送信部
２０１    ＣＡ公開鍵格納部
２０２    署名データセット格納部
２０３    署名検証部
２０４    受信部
２０５    表示部
３０１    証明書生成鍵格納部
３０２    鍵生成部
３０３    秘密鍵群生成部
３０４    証明書生成部
３０５    鍵設定部
１０００    ディジタル署名システム
１０１０    署名生成装置
１０２０    署名検証装置
１０５０    通信路
１１０１    秘密鍵格納部
１１０２    公開鍵証明書格納部
１１０３    秘密鍵更新部
１１０４    署名生成部
１１０５    署名データセット生成部
１１０６    送信部
１１０７    表示部
１２０１    ＣＡ公開鍵格納部
１２０２    署名データセット格納部
１２０３    署名検証部
１２０４    受信部
１２０５    表示部
【図１】
0004544538.tif 000002
【図２】
0004544538.tif 000003
【図３】
0004544538.tif 000004
【図４】
0004544538.tif 000005
【図５】
0004544538.tif 000006
【図６】
0004544538.tif 000007
【図７】
0004544538.tif 000008
【図８】
0004544538.tif 000009