(57)【特許請求の範囲】
【請求項１】
第１署名フォーマットで生成した電子署名を第２署名フォーマットの電子署名に変換する署名フォーマット変換装置であって、
元文書ｍを記憶する記憶部と、
上記記憶部から上記元文書ｍを読み込み、中間値Ｍ＝ｆ−１（ｇ（ｍ））を算出し、当該中間値Ｍを上記記憶部に格納する中間値生成部と、
上記記憶部から上記中間値Ｍを読み込み、上記第１署名フォーマットに従った当該中間値Ｍの署名値Ｅｎｃ（ｆ（Ｍ））を算出し、当該署名値Ｅｎｃ（ｆ（Ｍ））を上記記憶部に格納する署名生成部と、
上記記憶部から上記元文書ｍと上記署名値Ｅｎｃ（ｆ（Ｍ））とを読み込み、当該署名値Ｅｎｃ（ｆ（Ｍ））を当該元文書ｍの署名値とした上記第２署名フォーマットの電子署名を生成し、当該電子署名を出力するフォーマット変換部と、
を具備し、
上記第１署名フォーマットは、
関数値Ｅｎｃ（ｆ（Ｘ））を元文書Ｘの署名値とする署名フォーマットであり、
上記第２署名フォーマットは、
関数値Ｅｎｃ（ｇ（Ｙ））を元文書Ｙの署名値とする署名フォーマットである、
ことを特徴とする署名フォーマット変換装置。
【請求項２】
第２署名フォーマットで生成した電子署名を第１署名フォーマットの電子署名に変換する署名フォーマット変換装置であって、
元文書ｍを記憶する記憶部と、
上記記憶部から上記元文書ｍを読み込み、中間値Ｍ＝ｆ−１（ｇ（ｍ））を算出し、当該中間値Ｍを上記記憶部に格納する中間値生成部と、
上記記憶部から上記中間値Ｍを読み込み、上記第２署名フォーマットに従った当該元文書ｍの署名値Ｅｎｃ（ｇ（ｍ））をＥｎｃ（ｆ（Ｍ））の演算によって算出し、当該署名値Ｅｎｃ（ｇ（ｍ））を上記記憶部に格納する署名生成部と、
上記記憶部から上記署名値Ｅｎｃ（ｇ（ｍ））と上記中間値Ｍとを読み込み、当該署名値Ｅｎｃ（ｇ（ｍ））を当該中間値Ｍの署名値とした上記第１署名フォーマットの電子署名を生成し、当該電子署名を出力するフォーマット変換部と、
を具備し、
上記第１署名フォーマットは、
関数値Ｅｎｃ（ｆ（Ｘ））を元文書Ｘの署名値とする署名フォーマットであり、
上記第２署名フォーマットは、
関数値Ｅｎｃ（ｇ（Ｙ））を元文書Ｙの署名値とする署名フォーマットである、
ことを特徴とする署名フォーマット変換装置。
【請求項３】
請求項１または２に記載の署名フォーマット変換装置であって、
上記ｇ（Ｙ）が、
ｇ（Ｙ）＝ｆ（Ａ（Ｙ））を満たし、
Ａ（Ｙ）が、
定義域Ｙに対する像が算出可能な関数である、
ことを特徴とする署名フォーマット変換装置。
【請求項４】
請求項２に記載の署名フォーマット変換装置であって、
上記記憶部から上記元文書ｍを読み込み、当該元文書ｍを出力する元文書出力部をさらに有する、
ことを特徴とする署名フォーマット変換装置。
【請求項５】
請求項１から４の何れかに記載の署名フォーマット変換装置であって、
上記ｆ（Ｘ）が、
Ｈ（Ｚ）を定義域Ｚに対するハッシュ関数とした場合における、ｆ（Ｘ）＝Ｈ（Ｘ）であり、
上記ｇ（Ｙ）が、
Ｈ’（Ｚ）を定義域Ｚに対するハッシュ関数とし、αを任意の値とし、Ｚ１｜Ｚ２をＺ１とＺ２とのビット連結とした場合における、ｇ（Ｙ）＝Ｈ（Ｈ’（Ｙ）｜α）であり、
上記中間値生成部は、
上記記憶部から上記元文書ｍを読み込み、中間値Ｍ＝Ｈ’（ｍ）|αを算出し、当該中間値Ｍを上記記憶部に格納する、
ことを特徴とする署名フォーマット変換装置。
【請求項６】
請求項４に記載の署名フォーマット変換装置から出力された第１署名フォーマットの電子署名を検証する署名検証装置であって、
署名値Ｅｎｃ（ｇ（ｍ））と中間値Ｍとを有する第１署名フォーマットの電子署名と、元文書ｍとを格納する記憶部と、
上記記憶部から上記第１署名フォーマットの電子署名を読み込み、上記第１署名フォーマットの電子署名を検証し、その検証結果を出力する第１署名検証部と、
上記記憶部から上記元文書ｍを読み込み、補助検証値Ｍ’＝ｆ−１（ｇ（ｍ））を算出し、当該補助検証値Ｍ’を上記記憶部に格納する補助検証値生成部と、
上記記憶部から上記中間値Ｍと補助検証値Ｍ’とを読み込み、当該中間値Ｍと当該検証値Ｍ’とが一致するか否かを判定し、その判定結果を出力する補助検証部と、
を具備することを特徴とする署名検証装置。
【請求項７】
請求項６に記載の署名検証装置であって、
上記ｆ（Ｘ）が、
Ｈ（Ｚ）を定義域Ｚに対するハッシュ関数とした場合における、ｆ（Ｘ）＝Ｈ（Ｘ）であり、
上記ｇ（Ｙ）が、
Ｈ’（Ｚ）を定義域Ｚに対するハッシュ関数とし、αを任意の値とし、Ｚ１｜Ｚ２をＺ１とＺ２とのビット連結とした場合における、ｇ（Ｙ）＝Ｈ（Ｈ’（Ｙ）｜α）であり、
上記補助検証値生成部は、
上記記憶部から上記元文書ｍを読み込み、補助検証値Ｍ’＝Ｈ’（ｍ）|αを算出し、当該補助検証値Ｍ’を上記記憶部に格納する、
ことを特徴とする署名検証装置。
【請求項８】
元文書ｍを記憶する記憶部と、
上記記憶部から上記元文書ｍを読み込み、中間値Ｍ＝ｆ−１（ｇ（ｍ））を算出し、当該中間値Ｍを上記記憶部に格納する中間値生成部と、を具備し、
上記中間値Ｍ＝ｆ−１（ｇ（ｍ））は、
関数値Ｅｎｃ（ｆ（Ｘ））を元文書Ｘの署名値とする第１署名フォーマットの電子署名と、関数値Ｅｎｃ（ｇ（Ｙ））を元文書Ｙの署名値とする第２署名フォーマットの電子署名との間のフォーマット変換処理に利用される値である、
ことを特徴とする事前処理装置。
【請求項９】
第１署名フォーマットで生成した電子署名を第２署名フォーマットの電子署名に変換する署名フォーマット変換方法であって、
元文書ｍを記憶部に格納する過程と、
中間値生成部が、上記記憶部から上記元文書ｍを読み込み、中間値Ｍ＝ｆ−１（ｇ（ｍ））を算出し、当該中間値Ｍを上記記憶部に格納する過程と、
署名生成部が、上記記憶部から上記中間値Ｍを読み込み、上記第１署名フォーマットに従った当該中間値Ｍの署名値Ｅｎｃ（ｆ（Ｍ））を算出し、当該署名値Ｅｎｃ（ｆ（Ｍ））を上記記憶部に格納する過程と、
フォーマット変換部が、上記記憶部から上記元文書ｍと上記署名値Ｅｎｃ（ｆ（Ｍ））とを読み込み、当該署名値Ｅｎｃ（ｆ（Ｍ））を当該元文書ｍの署名値とした上記第２署名フォーマットの電子署名を生成し、当該電子署名を出力する過程と、
を有し、
上記第１署名フォーマットは、
関数値Ｅｎｃ（ｆ（Ｘ））を元文書Ｘの署名値とする署名フォーマットであり、
上記第２署名フォーマットは、
関数値Ｅｎｃ（ｇ（Ｙ））を元文書Ｙの署名値とする署名フォーマットである、
ことを特徴とする署名フォーマット変換方法。
【請求項１０】
第２署名フォーマットで生成した電子署名を第１署名フォーマットの電子署名に変換する署名フォーマット変換方法であって、
元文書ｍを記憶部に格納する過程と、
中間値生成部が、上記記憶部から上記元文書ｍを読み込み、中間値Ｍ＝ｆ−１（ｇ（ｍ））を算出し、当該中間値Ｍを上記記憶部に格納する過程と、
署名生成部が、上記記憶部から上記中間値Ｍを読み込み、上記第２署名フォーマットに従った当該元文書ｍの署名値Ｅｎｃ（ｇ（ｍ））をＥｎｃ（ｆ（Ｍ））の演算によって算出し、当該署名値Ｅｎｃ（ｇ（ｍ））を上記記憶部に格納する過程と、
フォーマット変換部が、上記署名値Ｅｎｃ（ｇ（ｍ））と上記中間値Ｍとを読み込み、当該署名値Ｅｎｃ（ｇ（ｍ））を当該中間値Ｍの署名値とした上記第１署名フォーマットの電子署名を生成し、当該電子署名を出力する過程と、
を有し、
上記第１署名フォーマットは、
関数値Ｅｎｃ（ｆ（Ｘ））を元文書Ｘの署名値とする署名フォーマットであり、
上記第２署名フォーマットは、
関数値Ｅｎｃ（ｇ（Ｙ））を元文書Ｙの署名値とする署名フォーマットである、
ことを特徴とする署名フォーマット変換方法。
【請求項１１】
請求項１から５の何れかに記載された署名フォーマット変換装置としてコンピュータを機能させるためのプログラム。
【請求項１２】
請求項６または７に記載された署名検証装置としてコンピュータを機能させるためのプログラム。
【請求項１３】
請求項８に記載された事前処理装置としてコンピュータを機能させるためのプログラム。
【請求項１４】
請求項１１から１３に記載されたプログラムを記憶したコンピュータで読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ディジタルデータに対する電子署名のフォーマットを別のフォーマットに変換する署名フォーマット変換装置と、事前処理装置と、変換された署名を検証する署名検証装置、及び署名フォーマット変換方法とプログラムと記憶媒体に関する。
【背景技術】
【０００２】
公開鍵基盤（ＰＫＩ：Public Key Infrastracture）の普及や電子政府の推進、電子署名法（非特許文献１）の施行などの背景により、ディジタルデータに電子署名を施して、ネットワーク上を運搬、サーバ上に保管する事例が増加している。電子署名フォーマットには、いくつかの種類がある。例えば、ＰＫＣＳ＃７形式（非特許文献１）やＸＭＬ署名形式（非特許文献３）などがある。これらの署名フォーマットは、それぞれ異なっている。
【非特許文献１】電子署名及び認証業務に関する法律（平成１２年法律第102号）
【非特許文献２】電磁的記録の方式等を定める件（平成１４年法務省告示第101号）http://www.moj.go.jp/MINJI/minji41-3.html
【非特許文献３】独立行政法人情報処理推進機構セキュリティセンターＰＫＩ関連技術解説7.4  ＸＭＬ署名  http://www.ipa.go.jp/security/pki/074.html
【発明の開示】
【発明が解決しようとする課題】
【０００３】
元文書から署名値を求める関数がそれぞれ異なる署名フォーマットの間では、検証対象が異なるので署名検証を行うことができなかった。例えば、関数値Ｅｎｃ（ｆ（Ｘ））を元文書Ｘの署名値とする署名フォーマットは、関数値Ｅｎｃ（ｇ（Ｙ））を元文書Ｙの署名値とする署名フォーマットでは、元文章Ｘが正当であると判定されない。
【０００４】
この発明は、このような点に鑑みてなされたものであり、元文書から署名値を求める関数がそれぞれ異なる署名フォーマットの間で、署名検証可能に電子署名のフォーマットを変換する技術を提供することを目的とする。
【課題を解決するための手段】
【０００５】
第１の発明による署名フォーマット変換装置は、第１署名フォーマットで生成した電子署名を第２署名フォーマットの電子署名に変換する署名フォーマット変換装置である。第１署名フォーマットは、関数値Ｅｎｃ（ｆ（Ｘ））を元文書Ｘの署名値とする署名フォーマットであり、第２署名フォーマットは、関数値Ｅｎｃ（ｇ（Ｙ））を元文書Ｙの署名値とする署名フォーマットである。まず、記憶部が元文書ｍを記憶する。そして、中間値生成部が、記憶部から元文書ｍを読み込み、中間値Ｍ＝ｆ−１（ｇ（ｍ））を算出して記憶部に格納する。署名生成部が、記憶部から中間値Ｍを読み込み、第１署名フォーマットに従った中間値Ｍの署名値Ｅｎｃ（ｆ（Ｍ））を算出して記憶部に格納する。フォーマット変換部が、記憶部から元文書ｍと署名値Ｅｎｃ（ｆ（Ｍ））とを読み込み、署名値Ｅｎｃ（ｆ（Ｍ））を元文書ｍの署名値とした第２署名フォーマットの電子署名を生成して出力する。
【０００６】
第２の発明による署名フォーマット変換装置は、第２署名フォーマットで生成した電子署名を第１署名フォーマットの電子署名に変換する署名フォーマット変換装置である。上記した第１の発明と同様の記憶部と中間値生成部を備え、署名生成部は、記憶部から中間値Ｍを読み込み、第２署名フォーマットに従った元文書ｍの署名値Ｅｎｃ（ｇ（ｍ））をＥｎｃ（ｆ（Ｍ））の演算によって算出し、当該署名値Ｅｎｃ（ｇ（ｍ））を上記記憶部に格納する。そして、フォーマット変換部は、記憶部から署名値Ｅｎｃ（ｇ（ｍ））と中間値Ｍとを読み込み、当該署名値Ｅｎｃ（ｇ（ｍ））を当該中間値Ｍの署名値とした第１署名フォーマットの電子署名を生成して出力する。
【０００７】
なお、「ｆ（Ｘ）」は、定義域が（Ｘ）である関数を意味する。また、「ｇ（Ｙ）」は、定義域が（Ｙ）である関数を意味する。また、ｆ−１（Ｘ）は、ｆ（Ｘ）の逆演算関数を意味し、ｆ−１（ｆ（Ｘ））＝Ｘを満たす。また、「Ｅｎｃ（γ）」は、定義域が（λ）である関数を意味する。
【発明の効果】
【０００８】
第１の発明による署名フォーマット変換装置によれば、第１署名フォーマットで生成した電子署名を第２署名フォーマットで検証することができる。また、第２の発明による署名フォーマット変換装置によれば、第２署名フォーマットで生成した電子署名を第１署名フォーマットで検証することができる。
【発明を実施するための最良の形態】
【０００９】
以下、この発明の実施の形態を図面を参照して説明する。複数の図面中同一のものには同じ参照符号を付し、説明は繰り返さない。
【００１０】
〔この発明の原理〕
実施例の説明の前に、この発明の署名フォーマット変換方法の基本的な考え方について説明する。
【００１１】
関数値Ｅｎｃ（ｆ（Ｘ））を元文書Ｘの署名値とする第１署名フォーマットで生成された電子署名を、関数値Ｅｎｃ（ｇ（Ｙ））を元文書Ｙの署名値とする第２署名フォーマットの電子署名に変換するには、式（１）の関係にすればよい。つまり、何らかの処理を施すことで、第１署名フォーマットの署名値と第２署名フォーマットの署名値が等しくなるようにすればよい。ここで、ｆ（Ｘ）は、定義域が（Ｘ）である関数を意味する。また、「Ｅｎｃ（γ）」は、定義域が（γ）である関数を意味し、例えば、秘密鍵を用いて公開鍵暗号方式によって（γ）を暗号化する関数を意味する。関数値Ｅｎｃ（ｇ（Ｙ））も同様である。
【００１２】
Ｅｎｃ（ｆ（Ｘ））＝Ｅｎｃ（ｇ（Ｙ））          （１）
そこで、中間値Ｍを導入する。中間値Ｍは式（２）で表わせる。
Ｍ＝ｆ−１（ｇ（ｍ））              （２）
ここでｆ−１（Ｘ）はｆ（Ｘ）の逆演算関数を示す。すなわち、ｆ−１（ｆ（Ｘ））＝Ｘを満たす。この中間値Ｍを、第１署名フォーマットの署名対象とした署名値は、Ｅｎｃ（ｆ（ｆ−１（ｇ（ｍ）））＝Ｅｎｃ（ｇ（ｍ））である。これはすなわち、署名対象をｍとした第２署名フォーマットの署名値Ｅｎｃ（ｇ（ｍ））と等しい値である。このように事前に中間値Ｍを用意して、その中間値Ｍを署名対象として第１署名フォーマットで署名する方法が、第１の発明の考え方である。
【００１３】
第２の発明としては、上記した中間値Ｍを用い第２署名フォーマットに従った元文書ｍの署名値Ｅｎｃ（ｇ（ｍ））をＥｎｃ（ｆ（Ｍ））の演算によって算出する。これを計算すると、Ｅｎｃ（ｇ（ｍ））＝Ｅｎｃ（ｆ（ｆ−１（ｇ（ｍ））））である。この式から分かるように、Ｅｎｃ（ｇ（ｍ））を、中間値Ｍ＝ｆ−１（ｇ（ｍ））を署名対象とした第１署名フォーマットの署名値と解釈することで、第２署名フォーマットの署名値を第１署名フォーマットで検証することができる。
【００１４】
以上述べた第１、第２の考え方に基づく実施例を以下に示し、以降においてこの発明の具体例を詳しく説明する。
【実施例１】
【００１５】
実施例１は第１の発明の実施例である。すなわち、実施例１では、関数値Ｅｎｃ（ｆ（Ｘ））を元文章Ｘの署名値とする第１署名フォーマットで生成された電子署名を、関数Ｅｎｃ（ｇ（Ｙ））を元文書Ｙの署名値とする第２署名フォーマットの電子署名に変換する。なお、この例のｇ（Ｙ）は、ｇ（Ｙ）＝ｆ（Ａ（Ｙ））を満たす関数であり、Ａ（Ｙ）は、定義域（Ｙ）に対する像が算出可能な関数である。
【００１６】
実施例１の署名システム構成を図１に例示する。図１に例示するように、実施例１の署名システム１は、ネットワーク３を介して通信可能に接続された署名フォーマット変換装置１００と署名検証装置５００とを有する。この例の署名フォーマット変換装置１００は、生成した第１署名フォーマットの署名を、第２署名フォーマットの署名に変換する装置である。また、この実施例の署名検証装置５００は、第２署名フォーマットの署名を検証する装置である。
【００１７】
署名フォーマット変換装置１００の機能構成例を図２に示す。署名フォーマット変換装置１００は、ディジタルデータが入力される入力部１０５と、各種のディジタル値を記憶する記憶部１１０と、中間値生成部１２０と、署名生成部１３０と、フォーマット変換部１４０と、送信部１５０と、それら各部の動作を制御する制御部１６０とで構成される。なお、この例の署名フォーマット変換装置１００は、例えばＲＯＭ、ＲＡＭ、ＣＰＵ等で構成されるコンピュータに所定のプログラムが読み込まれ、ＣＰＵがそのプログラムを実行することで実現されるものである。
【００１８】
署名検証装置５００の機能構成例を図３に示す。署名検証装置５００は、受信部５０５と、記憶部５１０と、復号部５２０と、関数演算部５３０と、比較部５４０とそれら各部の動作を制御する制御部５５０とで構成される。この例の署名検証装置５００も、例えばＲＯＭ、ＲＡＭ、ＣＰＵ等で構成されるコンピュータに所定のプログラムが読み込まれ、ＣＰＵがそのプログラムを実行することで実現されるものである。
【００１９】
〔署名フォーマット変換処理〕
署名フォーマット変換装置１００の動作フローを図４に示して、署名フォーマット変換処理を説明する。最初に署名対象データとなる元文書ｍが署名フォーマット変換装置１００に入力される（ステップＳ１）。元文書ｍは、予め秘密鍵や公開鍵証明書が記憶されている記憶部１１０に記憶される（ステップＳ２）。中間値生成部１２０は、記憶部１１０から元文書ｍを読み込み、上記した式（２）の中間値Ｍ＝ｆ−１（ｇ（ｍ））を計算する（ステップＳ３）。中間値Ｍは、記憶部１１０に記憶される（ステップＳ４）。署名生成部１３０は、記憶部１１０から中間値Ｍと秘密鍵を読み込み、第１署名フォーマットに従った中間値Ｍの署名値Ｅｎｃ（ｆ（Ｍ））＝ｆ（ｆ−１（ｇ（ｍ）））を計算する（ステップＳ５）。第１署名フォーマットは、関数値Ｅｎｃ（ｆ（Ｘ））を元文書Ｘの署名値とする署名フォーマットである。署名値Ｅｎｃ（ｆ（Ｍ））は、記憶部１００に記憶される（ステップＳ６）。フォーマット変換部１４０は、記憶部１１０から元文書ｍと署名値Ｅｎｃ（ｆ（Ｍ））とを読み込み、署名値Ｅｎｃ（ｆ（Ｍ））を元文書ｍの署名値とした第２署名フォーマットの電子署名を生成する（ステップＳ７）。第２署名フォーマットは、関数値Ｅｎｃ（ｇ（Ｙ））を元文書Ｙの署名値とする署名フォーマットである。第２署名フォーマットの電子署名は、送信部１５０によって署名検証装置５００に送信される。
【００２０】
〔署名検証処理〕
署名検証装置５００の動作フローを図５に示し、署名検証処理を説明する。署名フォーマット変換装置１００から送信された第２署名フォーマットの電子署名は、受信部５０５で受信される（ステップＳ５０１）。受信された元文書ｍと署名値Ｅｎｃ（ｆ（Ｍ））から成る第２署名フォーマットの電子署名は、公開鍵が記憶された記憶部５１０に記憶される（ステップＳ５０２）。復号部５２０は、記憶部５１０から署名値Ｅｎｃ（ｆ（Ｍ））と公開鍵を読み出し、署名値Ｅｎｃ（ｆ（Ｍ））＝Ｅｎｃ（ｆ（ｆ−１（ｇ（ｍ））））を公開鍵で復号する（ステップＳ５０３）。復号された値はｇ（ｍ）である。関数演算部５３０は、記憶部５１０から元文書ｍを読み込み関数ｇで関数値ｇ（ｍ）を演算する（ステップＳ５０４）。比較部５４０は、復号されたｇ（ｍ）と関数演算部５３０で計算された関数値ｇ（ｍ）とを比較する（ステップＳ５０５）。復号されたｇ（ｍ）と元文章ｍから計算で求めたｇ（ｍ）とが一致した場合、比較部５４０は論理レベル１を、不一致の場合は論理レベル０を出力する（ステップＳ５０５）。以上の処理により、第１署名フォーマットに従った中間値Ｍの署名値Ｅｎｃ（ｆ（Ｍ））＝Ｅｎｃ（ｆ（ｆ−１（ｇ（ｍ）））が、第２署名フォーマットで検証されたことになる
【実施例２】
【００２１】
実施例２は第２の発明の実施例である。すなわち、実施例２では、関数Ｅｎｃ（ｇ（Ｙ））を元文書Ｙの署名値とする第２署名フォーマットで生成された電子署名を、関数値Ｅｎｃ（ｆ（Ｘ））を元文章Ｘの署名値とする第１署名フォーマットの電子署名に変換する。なお、この例のｇ（Ｙ）も、ｇ（Ｙ）＝ｆ（Ａ（Ｙ））を満たす関数であり、Ａ（Ｙ）は、定義域（Ｙ）に対する像が算出可能な関数である。
【００２２】
実施例２の場合は、署名システム１を構成する装置が、署名フォーマット変換装置２００と署名検証装置６００に変る。署名フォーマット変換装置２００の機能構成例を図６に示す。署名フォーマット変換装置２００は、入力部１０５と、記憶部１１０と、中間値生成部１２０と、署名生成部２３０と、フォーマット変換部２４０と、送信部１５０と、それら各部の動作を制御する制御部２６０とで構成される。入力部１０５と記憶部１１０と送信部１５０は、実施例１に示したものと同じである。
【００２３】
署名検証装置６００の機能構成例を図７に示す。署名検証装置６００は、受信部５０５と、記憶部５１０と、復号部６２０と、関数演算部６３０と、比較部６４０と、それら各部の動作を制御する制御部６５０とで構成される。受信部５０５と記憶部５１０とは、上記説明済みの署名検証装置５００と同じである。
〔署名フォーマット変換処理〕
署名フォーマット変換装置２００の動作フローを図８に示して、署名フォーマット変換処理を説明する。中間値生成部１２０で計算された中間値Ｍを記憶部１１０に記憶するステップＳ４までの動作は、上記した署名フォーマット変換装置１００の動作と同じである。
【００２４】
署名生成部２３０は、記憶部１１０から中間値Ｍと秘密鍵を読み込み、第２署名フォーマットに従った元文書ｍの署名値Ｅｎｃ（ｇ（ｍ））をＥｎｃ（ｆ（Ｍ））の演算によって算出する（ステップＳ８）。署名値Ｅｎｃ（ｇ（ｍ））＝Ｅｎｃ（ｆ（ｆ−１（ｇ（ｍ））））である。署名値Ｅｎｃ（ｇ（ｍ））は、記憶部１１０に記憶される（ステップＳ６）。フォーマット変換部２４０は、記憶部１１０から中間値Ｍと署名値Ｅｎｃ（ｇ（ｍ））を読み込み、署名値Ｅｎｃ（ｇ（ｍ））を中間値Ｍの署名値とした第１署名フォーマットの電子署名を生成する（ステップＳ９）。第１署名フォーマットの署名値は、送信部１５０によって署名検証装置６００に送信される。
【００２５】
〔署名検証処理〕
署名検証装置６００の動作フローを図９に示し、署名検証処理を説明する。署名フォーマット変換装置２００から送信された第１署名フォーマットの電子署名は、受信部５０５で受信される（ステップＳ６０１）。受信された、中間値Ｍと署名値Ｅｎｃ（ｇ（ｍ））から成る第１署名フォーマットの電子署名は、公開鍵が記憶された記憶部５１０に記憶される（ステップＳ６０２）。復号部６２０は、記憶部５１０から署名値Ｅｎｃ（ｇ（ｍ））を読み出し、Ｅｎｃ（ｇ（ｍ））＝Ｅｎｃ（ｆ（Ｍ））を公開鍵で復号する（ステップＳ６０３）。復号された値はｇ（ｍ）＝ｆ（Ｍ）である。関数演算部６３０は、記憶部５１０に記憶された中間値Ｍを読み込み関数ｆで関数値ｆ（Ｍ）＝ｆ（ｆ−１（ｇ（ｍ））を演算する（ステップＳ６０４）。比較部６３０は、復号されたｆ（Ｍ）と、関数演算部６３０で計算して求めたｆ（Ｍ）とを比較する（ステップＳ６０５）。復号されたｆ（Ｍ）＝ｇ（ｍ）と関数演算部６３０で計算された関数値ｇ（ｍ）とが等しい場合、署名値が正当であると判定される（ステップＳ６０６）つまり、第２署名フォーマットに従った中間値Ｍ＝ｆ−１（ｇ（ｍ））の署名値が、第１署名フォーマットで検証されたことになる。
【００２６】
この実施例２の場合は、実施例１と異なり元文書ｍを直接検証していない。より完全な検証が行える実施例２の変形例を次に説明する。
【００２７】
〔変形例〕
実施例２の変形例は、中間値Ｍによる検証に、更に元文書ｍから計算して求めた補助検証値Ｍ’を検証するようにしたものである。変形例における署名フォーマット変換装置２００’は、図６に示した署名フォーマット変換装置２００に元文書出力部２６０が付加されたものである。変形例における署名検証装置６００’の機能構成例を図１０に示す。署名検証装置６００’は、図７に示した署名検証装置６００そのものである第１署名検証部６１０に、補助検証値生成部６５０と、補助検証部６６０とが付加されて構成される。
【００２８】
署名検証装置６００’の動作フローを図１１に示し、署名検証処理を説明する。復号された中間値Ｍ＝ｇ（ｍ）と関数演算部６３０で計算された関数値ｇ（ｍ）とを比較するステップＳ６０４’）までの処理は、署名検証装置６００の処理と同じである。
【００２９】
署名フォーマット変換装置２００に付加された元文書出力部２６０によって、記憶部５１０には元文書ｍが記憶されている。補助検証値生成部６５０は、記憶部５１０に記憶されている元文書ｍを読み込み補助検証値Ｍ’＝ｆ−１（ｇ（ｍ））を算出する（ステップＳ６０６’）。補助検証値Ｍ’は、記憶部６１０に記憶される（ステップＳ６０７’）。補助検証部６６０は、記憶部６１０から署名フォーマット変換装置２００から送信されて来た中間値Ｍと、補助検証値Ｍ’を読み込み中間値Ｍと補助検証値Ｍ’とが一致するか否かを判定する（ステップＳ６０８’）。例えば、一致したときは論理レベル１を、不一致の場合は論理レベル０の判定結果を出力する（ステップＳ６０９’）。この補助検証値Ｍ’は、元文書ｍから計算して求めた値なので、この値が署名フォーマット変換装置２００から送信されて来た中間値Ｍと一致すれば、元文書ｍに改竄がないことになる。このように変形例においては、中間値Ｍの検証に付加して元文書ｍの検証も可能になるので、より確実な検証を行うことができる。
【実施例３】
【００３０】
実施例３は、実施例１の第１署名フォーマットをＰＫＣＳ＃７フォーマットとし、第２署名フォーマットをＸＭＬ署名フォーマットとした場合である。ここでは、上記したｆ（Ｘ）が、ｆ（Ｘ）＝Ｈ（Ｘ）であり、上記したｇ（Ｙ）が、ｇ（Ｙ）＝Ｈ（Ｈ（Ｙ）｜α）である。なお、Ｈ（Ｚ）は定義域（Ｚ）に対するハッシュ関数であり、αは任意の値であり、Ｚ１｜Ｚ２はＺ１とＺ２とのビット連結である。
【００３１】
ＰＫＣＳ＃７形式の電子署名フォーマットには、（１）署名対象データと、（２）その署名値、（３）署名検証に使うＸ５０９公開鍵証明書などの情報が、ＡＳＮ．１エンコーディングによりバイナリ化されて格納されている。一方、ＸＭＬ署名形式のフォーマットでは、（１）署名対象データと、（４）そのダイジェスト値を含むＸＭＬ要素、（５）（４）に対する署名値、（３）署名検証に使うＸ５０９公開鍵証明書などの情報が、ＸＭＬ形式で記述されている。
【００３２】
実施例３の署名フォーマット変換装置３００の大まかな機能構成は、例えば上記した図２と同じであるので、その機能構成図は省略する。ただ、実施例３では、署名形式のフォーマットを、ＰＫＣＳ＃７形式とＸＭＬ署名形式にしたことにより、図２に示した各機能構成部の中身が具体化される。そこで、以下では、各部の具体的な機能構成例を個々に示すと共に、各部の具体的な動作フロー例を図１２に示して実施例３の動作を説明する。
【００３３】
〔中間値生成部３２０（中間値生成部１２０（図２）の具体例）〕
中間値生成部３２０の機能構成例を図１３に示す。中間値生成部３２０は、入出力部３２１と、ダイジェスト値計算部３２２と、中間値Ｍ構築部３２３と、中間値Ｍ正規化部３２４と、各部の動作を制御する制御部３２５とで構成される。中間値Ｍ生成部３２０は、この例では、中間値Ｍ＝Ｈ−１（Ｈ（Ｈ（Ｙ）|α））＝Ｈ（Ｙ）|αを生成する。
【００３４】
〔中間値生成処理〕
入出力部３２１は、署名フォーマット変換装置２００の記憶部１１０から元文書ｍを読み込みダイジェスト値計算部３２２に入力する。元文書ｍは、例えばＸＭＬ形式で図１４に示すものである。ダイジェスト値計算部３２２は、ハッシュ演算部３２２ａで構成され、ＭＤ５やＳＨＡ１などのハッシュ関数により元文書ｍのダイジェスト値＝Ｈ（元文書ｍ）を計算する（図１２、ステップＳ３２１）。その際、XML Digital Signature標準（RFC3076）等で定められる正規化手順により、正規化部３２２ｂで元文書ｍを正規化（ステップＳ３２０）した後に、ダイジェスト値を計算してもよい。
【００３５】
次に中間値Ｍ構築部３２３が、ステップＳ３２１で計算したダイジェスト値をDigestValue要素、ダイジェスト計算に用いたハッシュ関数をDigestMethodAlgorithm要素、また正規化等の変換に用いるアルゴリズムをTransforms要素として持つ中間値Ｍを構築する（ステップS３２２）。この中間値ＭをＸＭＬ形式で図１５に示す。図１５において開始タグ＜SignedInfo>、終了タグ＜/SignedInfo>に挟まれたもの、つまり、図１５全体が中間値Ｍを表している。ここで、この中間値Ｍの１０行目には、ダイジェスト値＝Ｈ（元文章ｍ）が組み込まれている。すなわち、中間値Ｍの全体のビットからこのダイジェスト値を除いたビットがαに相当し、このαにダイジェスト値がビット結合されて中間値Ｍ＝Ｈ（元文書ｍ）|αとなる。中間値Ｍの１行目は、署名前に中間値Ｍに施す正規化アルゴリズムを示している。２行目は、署名に用いるアルゴリズムを示している。４行目は、署名対象要素のＩＤ番号であり、図１５に示す元文章ｍのＩＤ番号を示している。５行目は、後でフォーマット変換部１４０でＸＭＬ署名データを生成する際の、署名形式を指定するTransform Algorithm要素である。この例では、署名対象要素の中に署名要素が格納される形式のEnveloped署名であることを示している。
【００３６】
中間値Ｍ正規化部３２４は、中間値ＭのTransforms要素中に記述された正規化アルゴリズムを指定する識別子ｃ１４ｎに対応する正規化プログラムを起動して、中間値Ｍを正規化（ステップS３２３）し、記憶部１１０に記憶させる（ステップS１１１）。
【００３７】
〔署名生成部３３０（署名生成部１３０（図２）の具体例）〕
署名生成部３３０の機能構成例を図１６に示す。署名生成部３３０は、入出力部３３１と、ＸＭＬ処理部３３２と、署名部３３３と、ＰＫＣＳ＃７フォーマット構築部３３４と、各部の動作を制御する制御部３３５とから構成される。署名生成部３３０は、正規化された中間値Ｍに対して署名を行いＰＫＣＳ＃７署名データを生成する。
【００３８】
〔ＰＫＣＳ＃７署名データ生成処理〕
入出力部３３１は、記憶部１１０に記憶されている中間値Ｍを読み込みＸＭＬ処理部３３２に入力する。ＸＭＬ処理部３３２は、ＸＭＬ形式で記述された中間値ＭをＸＭＬ処理して、署名アルゴリズム情報を読み出し、中間値Ｍと共に署名部３３３に出力する（ステップＳ３３０）。署名部３３３は、中間値Ｍを署名アルゴリズム情報に対応したハッシュ関数Ｈでダイジェスト値（Ｈ(Ｈ(元文書)｜α)）化し、記憶部１１０から読み出した秘密鍵で暗号化して署名値Ｅｎｃ（ｆ（Ｍ））を生成する（ステップＳ３３１）。ここで、Ｈ(元文書)が図１５に示すDigestValueである。署名値Ｅｎｃ（ｆ（Ｍ））と、中間値Ｍと、中間値Ｍに署名する際に用いる署名アルゴリズム情報と、記憶部１１０から読み出した公開鍵証明書とが、ＰＫＣＳ＃７フォーマット構築部３３４に入力される。ＰＫＣＳ＃７フォーマット構築部３３４は、これらを入力として図１７に示すＰＫＣＳ＃７署名データを作成する（ステップＳ３３２）。なお、図１７のＰＫＣＳ＃７署名データの４行目の「正規化したSignedinfo」が中間値Ｍであり、最下行の「正規化したSignedinfo要素に対するrsa-sha1署名値」が、中間値Ｍを署名関数rsa-sha1でダイジェスト値化した値を秘密鍵で暗号化した署名値Ｅｎｃ（ｆ（Ｍ））＝Ｅｎｃ（Ｈ（Ｈ（元文書）|α））である。ＰＫＣＳ＃７署名データＥｎｃ（ｆ（Ｍ））は、入出力部３３１を介して記憶部１１０に記憶される（ステップS１１２）。
【００３９】
〔フォーマット変換部３４０（フォーマット変換部１４０の具体例）〕
フォーマット変換部３４０の機能構成例を図１８に示す。フォーマット変換部３４０は、入力部３４１と、中間値Ｍ・署名値抽出部３４２と、ＸＭＬ署名フォーマット構築部３４３と、各部の動作を制御する制御部３４４とで構成される。フォーマット変換部３４０は、記憶部１１０に記憶されている元文書ｍと、公開鍵と、ＰＫＣＳ＃７署名データＥｎｃ（ｆ（Ｍ））ｍとからＸＭＬ署名データを生成する。
【００４０】
〔ＸＭＬ署名データ変換処理〕
入出力部３４１は、記憶部１１０から署名値Ｅｎｃ（ｆ（Ｍ））を読み込み中間値Ｍ・署名値抽出部３４２に入力する。中間値Ｍ・署名値抽出部３４２は、ＰＫＣＳ＃７署名データから中間値Ｍと署名値を抽出する（ステップS３４０）。ＸＭＬ署名フォーマット構築部３４３は、記憶部１１０から元文書ｍとＸ５０９公開鍵証明書を読み込む。そして、ＸＭＬ署名フォーマットを構築する。まず最初に、元文書ｍの子要素として中間値Ｍ・署名値抽出部３４２がＰＫＣＳ＃７署名データから抽出した中間値Ｍを組み込む。その下に署名値Ｅｎｃ（ｆ（Ｍ））＝Ｅｎｃ（Ｈ(Ｈ(元文書)｜α))の署名値と、Ｘ５０９公開鍵証明書を組み込み（ステップＳ３４１）、図１９に示すＸＭＬ署名データを生成する。ＸＭＬ署名データは、署名フォーマット変換装置３００の送信部１５０によって、ネットワーク３を介して署名検証装置５００に入力される。
【００４１】
〔署名検証装置５００〕
署名検証装置５００の機能構成例を図２０に示す。署名検証装置５００は、受信部５０５と、記憶部５１０とＸＭＬ処理部５２０と、署名対象保持部５３０とダイジェスト値検証部５４０と署名値検証部５５０と、判定部５６０と、復号化部５７０と、各部を制御する制御部５８０とで構成される。更に、ダイジェスト値検証部５４０は、正規化部５４１とハッシュ演算部５４２とダイジェスト値検証部５４３から成る。また、署名値検証部５５０は、正規化部５５１とハッシュ演算部５５２と署名値検証部５５３から成る。
【００４２】
〔ＸＭＬ署名データ検証処理〕
受信部５０５は、受信したＸＭＬ署名データを記憶部５１０に記憶する。ＸＭＬ処理部５２０は、記憶部５１０からＸＭＬ署名データを読み出し、ＸＭＬ署名データから元文書ｍ、元文書ｍをダイジェスト値化する際に用いる正規化アルゴリズム情報とダイジェストアルゴリズム情報、ダイジェスト値、中間値Ｍ、中間値Ｍから署名値を計算する際に用いる正規化アルゴリズム情報と署名アルゴリズム情報、署名値、Ｘ５０９公開鍵証明書を、ＸＭＬ処理をして抽出する（ステップＳ５００）。ＸＭＬ処理部５２０は、ＸＭＬ処理でＩＤ番号が付与されている署名対象である元文書ｍを見つけ、ダイジェスト値検証部５４０の正規化部５４１に入力する。正規化部５４１は、ＸＭＬ処理部５２０からダイジェスト値の正規化アルゴリズム情報が入力されれば、アルゴリズム情報に対応した正規化プログラムを起動して元文書ｍを正規化する。ハッシュ演算部５４２は、正規化された元文書ｍをＸＭＬ処理部５２０から入力されるダイジェストアルゴリズム情報に対応するハッシュ関数で、演算しダイジェスト値＝Ｈ（元文書ｍ）を計算する。ダイジェスト値検証部５４３は、ハッシュ演算部５４２で計算されたダイジェスト値と、ＸＭＬ署名データから抽出したダイジェスト値（図１９のDigestValue）とを比較する（ステップＳ５０１）。ダイジェスト値検証部５４３は、これらが一致していれば論理レベル１を、不一致の場合は論理レベル０を判定部５６０に出力する（ステップＳ５０２）。
【００４３】
また、これらが不一致の場合は、ここで署名は不正として署名検証を終了する。ダイジェスト値が一致した場合は、引き続き署名値の検証を署名検証部５５０で行う。
【００４４】
ＸＭＬ処理部５２０は、ＸＭＬ署名データから抽出した中間値Ｍ（図１９の＜SignedInfo＞タグで挟まれた部分）を署名検証部５５０の正規化部５５１に入力する。正規化部５５１は、中間値ＭをＸＭＬ処理部５２０から入力される正規化アルゴリズム情報に従った正規化プログラムを起動して中間値Ｍを正規化する。ハッシュ演算部５５２は、正規化された中間値ＭをＸＭＬ処理部５２０から入力される署名アルゴリズム情報に対応したハッシュ関数でハッシュ演算して、秘密鍵で暗号化する直前の値を求める。この例の場合、計算で求めた値はＨ（Ｈ（元文書）|α）である。一方、ＸＭＬ署名データの署名値と公開鍵とは、ＸＭＬ処理部５２０によって復号化部５７０に入力される。復号化部５７０は、公開鍵で署名値を復号化しＨ（Ｈ（元文書）|α）を求める。
【００４５】
署名値検証部５５３は、ハッシュ演算して求めたＨ（Ｈ（元文書）|α）と、復号したＨ（Ｈ（元文書）|α）とを比較する（ステップＳ５０３）。署名値検証部５５３は、これらが一致していれば論理レベル１を、不一致の場合は論理レベル０を判定部５６０に出力する（ステップＳ５０４）。判定部５６０は、ダイジェスト値検証部５４３と署名検証部５５３の出力信号が共に論理レベル１の場合に、正当な署名と判定した結果を出力する（ステップＳ５０５）。
【００４６】
以上により、中間値Ｍを署名対象とした第１署名フォーマットの署名値Ｅｎｃ（ｆ（Ｍ））＝Ｅｎｃ（ｆ（ｆ−１（ｇ（ｍ）））＝Ｅｎｃ（ｇ（ｍ））が、元文書ｍを署名対象とした第２署名フォーマットの電子署名値Ｅｎｃ（ｇ（ｍ））として検証できた。
【実施例４】
【００４７】
実施例４は、実施例２の第２署名フォーマットをＸＭＬ署名フォーマットとし、第１署名フォーマットをＰＫＣＳ＃７フォーマットとした場合である。ここでは、上記したｆ（Ｘ）が、ｆ（Ｘ）＝Ｈ（Ｘ）であり、上記したｇ（Ｙ）が、ｇ（Ｙ）＝Ｈ（Ｈ（Ｙ）｜α）である。
【００４８】
実施例４の署名フォーマット変換装置４００のおおまか機能構成は、例えば上記した図６と同じであるので、その機能構成図は省略する。ただ、署名形式のフォーマットを、ＰＫＣＳ＃７形式とＸＭＬ署名形式にしたことにより、図６に示した各機能構成部の中身が具体化される。また、実施例４において図６の中間値生成部１２０は、実施例３で説明した中間値生成部３２０と全く同じものに具体化される。そこで以下では、中間値生成部３２０を除く各部の具体的な機能構成例を個々に示すと共に、それらの具体的な動作フロー例を図２１に示して実施例４の動作を説明する。
【００４９】
〔署名生成部４３０（署名生成部２３０（図６）の具体例）〕
署名生成部４３０の機能構成例を図２２に示す。署名生成部４３０は、入出力部４３１と、ＸＭＬ処理部４３２と、正規化部４３３と、署名部４３４と、ＸＭＬ署名フォーマット構築部４３５と、各部の動作を制御する制御部４３６とで構成される。署名生成部４３０は、記憶部１１０から中間値Ｍを読み込み、ＸＭＬ署名フォーマットに従った中間値Ｍ＝ｆ−１（ｇ（ｍ））の署名値Ｅｎｃ（ｇ（ｍ））＝Ｅｎｃ（ｆ（ｆ−１（ｇ（ｍ））））を計算する。
【００５０】
〔ＸＭＬ署名データ生成処理〕
入出力部４３１は、記憶部１１０に記憶されたＸＭＬ形式で記述された中間値ＭをＸＭＬ処理部４３２に入力する。ＸＭＬ処理部４３２は、図１５に示した中間値ＭをＸＭＬ処理して正規化アルゴリズム情報と署名アルゴリズム情報とを抽出する（ステップＳ４３０）。正規化アルゴリズム情報は、中間値Ｍと共に正規化部４３３に入力される。署名アルゴリズム情報は、署名部４３４に入力される。
【００５１】
正規化部４３３は、正規化アルゴリズム情報に従った正規化プログラムを起動して中間値Ｍを正規化する（ステップＳ４３１）。署名部４３４は、正規化された中間値Ｍを署名アルゴリズム情報に対応したハッシュ関数でハッシュ演算した後に、入出力部４３１が記憶部１１０から読み出した秘密鍵で暗号化する（ステップＳ４３２）。この処理は、署名値Ｅｎｃ（Ｈ（Ｈ（元文書）|α））（＝Ｅｎｃ（ｆ（Ｍ））＝Ｅｎｃ（ｇ（ｍ））を求める処理である。
【００５２】
ＸＭＬ署名フォーマット構築部４３５には、入出力部４３１から記憶部１１０に記憶された元文書ｍと公開鍵証明書とが入力され、署名部４３４から正規化された中間値Ｍと署名値Ｅｎｃ（ｇ（ｍ））が入力される。ＸＭＬ署名フォーマット構築部４３５は、元文書ｍの子要素として正規化された中間値Ｍと、署名値Ｅｎｃ（ｆ（Ｍ））と、公開鍵証明書とを組み込み、図１９に示すＸＭＬ署名データを作成する。ＸＭＬ署名データは、入出力部４３１を介して記憶部１１０に記憶される。
【００５３】
なお、上記では、記憶部１１０に記憶された中間値Ｍを読み込んでＸＭＬ署名データを作成する例を示した。しかし、署名生成部４３０が、元文書ｍを読み込んで中間値Ｍを生成し、ＸＭＬ署名データを作成してもよい。その場合の署名生成部４３０’を図２３に示す。署名生成部４３０’は、署名生成部４３０のＸＭＬ処理部４３２と正規化部４３３が図１３に示す中間値生成部３２０に置き換わったものである。中間値生成部３２０の動作は説明ずみであるので、説明は省略する。
【００５４】
〔フォーマット変換部４４０（フォーマット変換部２４０（図６）の具体例）〕
フォーマット変換部４４０の機能構成例を図２４に示す。フォーマット変換部４４０は、入力部４４１と、署名データ分離部４４２と、ＰＫＣＳ＃７署名データ生成部４４３と、ＰＫＣＳ＃７署名データ出力部４４４と、各部の動作を制御する制御部４４６とで構成される。
【００５５】
〔フォーマット変換処理〕
フォーマット変換部４４０は、ＸＭＬ署名データをＰＫＣＳ＃７署名データに変換する。
【００５６】
入力部４４１は、記憶部１１０に記憶されたＸＭＬ署名データを読み出して、署名データ分離部４４２に入力する。署名データ分離部４４２は、ＸＭＬ署名データをＸＭＬ処理して、中間値Ｍと、公開鍵証明書と、署名値Ｅｎｃ（ｇ（ｍ））とを、ＰＫＣＳ＃７署名データ生成部４４３に出力する。
ＰＫＣＳ＃７署名データ生成部４４３は、図１７に示すＰＫＣＳ＃７署名データを、署名データ分離部４４２から入力された中間値ＭをContentInfoとし、署名値Ｅｎｃ（ｇ（ｍ））をEncryptedDigestとして生成する。図１７において、中間値Ｍは４行目の「正規化したSignedInfo要素」であり、署名値Ｅｎｃ（ｇ（ｍ））は最下行の「正規化したSignedInfo要素に対するrsa-sha1署名」である。
【００５７】
ＰＫＣＳ＃７署名データは、ＰＫＣＳ＃７署名データ出力部４４４によって送信部１５０（図６）に出力される。
【００５８】
〔署名検証処理〕
なお、ＰＫＣＳ＃７署名データの署名検証は、前述した署名検証装置６００や署名検証装置６００’が行なう上記説明済みの動作によりなされる。ここに「ＸＭＬ署名装置で署名した署名データをＰＫＣＳ＃７署名検証装置で検証する」という目的が達成される。
なお、本発明は、上述の各実施例に限定されるものではなく、この発明の趣旨を逸脱しない範囲で適宜変更が可能である。
【００５９】
例えば、実施例３は、ｆ（Ｘ）＝Ｈ（Ｘ）、ｇ（Ｙ）＝Ｈ（Ｈ（Ｙ）｜α）とした。この例では、中間値Ｍ＝ｆ−１（ｇ（ｍ））＝Ｈ−１（Ｈ（Ｈ（Ｙ）｜α））＝Ｈ（Ｙ）｜αとなる。この場合、中間値Ｍを求めるために逆関数ｆ−１の計算を行う必要はない。しかし、中間値を求めるために逆関数ｆ−１の計算を行う必要性がある関数ｆ（Ｘ），ｇ（Ｙ）を用いた形態であってもよい。ただ、この場合には関数ｆ（Ｘ）の逆関数ｆ−１（Ｘ）が演算可能である必要がある。このような関数ｆ（Ｘ），ｇ（Ｙ）の組合せとしては、例えば、ｆ（Ｘ）＝Ｘ（＋）α，ｇ（Ｙ）＝Ｙ（＋）βを例示できる。なお、α，βは任意の値である。また、Ｚ１（＋）Ｚ２は、Ｚ１とＺ２との排他的論理和を示す。この例の場合、ｆ−１（Ｘ）＝Ｘ（＋）αとなり、中間値Ｍ＝ｆ−１（ｇ（ｍ））＝｛ｍ（＋）β｝（＋）αとなる。
【００６０】
また、実施例３と４では、ｆ（Ｘ）＝Ｈ（Ｘ）,ｇ（Ｙ）＝Ｈ（Ｈ（Ｙ）｜α）とした。しかし、ｇ（Ｙ）＝Ｈ（Ｈ’（Ｙ）｜α）としてもよい。ここで、Ｈ’（Ｙ）は、定義域を（Ｙ）とするハッシュ関数である。なお、実施例３と４に示した例は、Ｈ’＝Ｈの例である。
また、上述の各実施例では、署名フォーマット変換装置が署名生成部と中間値生成部とフォーマット変換部とを有する構成であった。しかし、中間値生成部を具備する事前処理装置と、中間値生成部生成部を具備しない署名フォーマット変換装置とをインタフェースを介して接続し、本発明の署名フォーマット変換を実現する構成であってもよい。また、中間値生成部を具備する事前処理装置と、中間値生成部生成部を具備しない署名フォーマット変換装置とがネットワークを通じて接続される構成であってもよい。このような構成の場合、中間値生成部を具備しないが署名生成部やフォーマット変換部を具備する既存の装置に事前処理装置を外付け接続するだけで、本発明の署名フォーマット変換処理を実行できる。同様に、フォーマット変換部を署名フォーマット変換装置の外部に構成する構成としてもよいし、中間値生成部を具備する装置と、署名生成部を具備する装置と、フォーマット変換部を具備する装置とを別個に構成し、それらをインタフェースやネットワーク経由で接続して使用する形態であってもよい。
【００６１】
また、実施例３，４では、ＸＭＬ署名データの形態を３つの種類の１つであるEnveloped署名の例で示したが、他の形態であるEnvelopng署名やDetached署名の形態でももちろんよい。
【００６２】
また、上記装置及び方法において説明した処理は、記載の順に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。
【００６３】
また、上述のように、各装置が有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、各装置における処理手段がコンピュータ上で実現される。
【００６４】
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記憶媒体に記憶しておくことができる。コンピュータで読み取り可能な記憶媒体としては、例えば、磁気記憶装置、光ディスク、光磁気記憶媒体、半導体メモリ等どのようなものでもよい。具体的には、例えば、磁気記憶装置として、ハードディスク装置、フレキシブルディスク、磁気テープ等を、光ディスクとして、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ（Random Access Memory）、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）/ＲＷ（ReWritable）等を、光磁気記憶媒体として、ＭＯ（Magneto Optical disc）等を、半導体メモリとしてＥＥＰ−ＲＯＭ（Electronically Erasable and Programmable-Read Only Memory）等を用いることができる。
【００６５】
また、このプログラムの流通は、例えば、そのプログラムを記憶したＤＶＤ、ＣＤ−ＲＯＭ等の可搬型記憶媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
【００６６】
また、各手段は、コンピュータ上で所定のプログラムを実行させることにより構成することにしてもよいし、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
【図面の簡単な説明】
【００６７】
【図１】この発明の署名フォーマット変換装置が使用される全体像を示す模式図。
【図２】この第１の発明の署名フォーマット変換装置１００の機能構成例を示す図。
【図３】署名検証装置５００の機能構成例を示す図。
【図４】図２の動作フローを示す図。
【図５】署名検証装置５００の動作フローを示す図。
【図６】この第２の発明の署名フォーマット変換装置２００の機能構成例を示す図。
【図７】署名検証装置６００の機能構成例を示す図。
【図８】図６の動作フローを示す図。
【図９】署名検証装置６００の動作フローを示す図。
【図１０】署名検証装置６００’の機能構成例を示す図。
【図１１】署名検証装置６００’の動作フローを示す図。
【図１２】実施例３の各部の動作フローを示す図。
【図１３】中間値生成部３２０の機能構成例を示す図。
【図１４】元文書ｍの一例を示す図。
【図１５】中間値Ｍの一例を示す図。
【図１６】署名生成部３３０の機能構成例を示す図。
【図１７】ＰＫＣＳ＃７署名データの一例を示す図。
【図１８】フォーマット変換部３４０の機能構成例を示す図。
【図１９】ＸＭＬ署名データの一例を示す図。
【図２０】この発明の実施例３の署名検証装置５００の機能構成例を示す図。
【図２１】実施例４の各部の動作フローを示す図。
【図２２】署名生成部４３０の機能構成例を示す図。
【図２３】署名生成部４３０’の機能構成例を示す図。
【図２４】フォーマット変換部４４０の機能構成例を示す図。
【図１】
0004891844.tif 000002
【図２】
0004891844.tif 000003
【図３】
0004891844.tif 000004
【図４】
0004891844.tif 000005
【図５】
0004891844.tif 000006
【図６】
0004891844.tif 000007
【図７】
0004891844.tif 000008
【図８】
0004891844.tif 000009
【図９】
0004891844.tif 000010
【図１０】
0004891844.tif 000011
【図１１】
0004891844.tif 000012
【図１２】
0004891844.tif 000013
【図１３】
0004891844.tif 000014
【図１４】
0004891844.tif 000015
【図１５】
0004891844.tif 000016
【図１６】
0004891844.tif 000017
【図１７】
0004891844.tif 000018
【図１８】
0004891844.tif 000019
【図１９】
0004891844.tif 000020
【図２０】
0004891844.tif 000021
【図２１】
0004891844.tif 000022
【図２２】
0004891844.tif 000023
【図２３】
0004891844.tif 000024
【図２４】
0004891844.tif 000025