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