(57)【要約】【課題】  検証側にて確認したい情報が署名対象に正しく含まれているか、それらの署名値及び保証情報が改ざんされていないかなどを容易に確認する。【解決手段】  文書データに添付された署名情報を基に文書データの内容を検証する署名検証装置３において、署名値４１２と保証情報４１３とを含む署名情報４１０を入力し、上記署名情報４１０に含まれる保証情報４１３を基に保証範囲情報と保証範囲の確認結果を得る保証範囲抽出部４０と、上記署名情報４１０の署名値４１２による検証を行なうと共に上記保証情報４１３を署名値に付加して所定の演算で該署名値の検証結果を得る検証部３０と、を備えた。【選択図】        図３
2006311068.tif 000002
【特許請求の範囲】
【請求項１】
文書に含まれる署名元データを基に署名情報に署名値を記載して署名対象の内容保証をする署名作成装置において、
入力された上記署名元データの保証範囲を示す保証範囲情報を基に保証情報を生成する保証情報作成部と、
上記署名値を生成すると共に上記保証情報を付加して上記署名情報を生成する署名生成部と、を備えたことを特徴とする署名作成装置。
【請求項２】
保証情報は、保証する要素名と、部分または属性の少なくともいずれかと、で構成し、保証情報作成部は、上記保証する要素名を指定する要素指定情報作成部と、上記保証する部分または属性を指定する属性指定情報作成部と、を備えることを特徴とする請求項１記載の署名作成装置。
【請求項３】
文書データに添付された署名情報を基に文書データの内容を検証する署名検証装置において、
署名値と保証情報とを含む署名情報を入力し、上記署名情報に含まれる保証情報を基に保証範囲情報と保証範囲の確認結果を得る保証範囲抽出部と、
上記署名情報の署名値による検証を行なうと共に上記保証情報を所定の演算に基いて検証を行う検証部と、を備えたことを特徴とする署名検証装置。
【請求項４】
署名情報または保証情報を改竄して、該改竄結果を検証部に出力する改竄部を備えて、検証部は上記改竄結果に対する検証結果を出力することを特徴とする請求項３記載の署名検証装置。
【請求項５】
文書データに保証情報が付加されていない場合は、入力された保証確認したい署名元データの保証範囲を示す保証範囲情報から保証情報を生成する保証情報作成部を備えて、
保証範囲抽出部は、上記保証情報を基に保証範囲情報と保証範囲の確認結果を得ることを特徴とする請求項３記載の署名検証装置。
【請求項６】
保証範囲抽出部は、保証範囲情報として要素名、部分または属性を検証することを特徴とする請求項３記載の署名検証装置。
【請求項７】
文書に含まれる署名元データを基に署名情報に署名値を記載して署名対象の内容保証をする構成であって、入力された上記署名元データの保証範囲を示す保証範囲情報を基に保証情報を生成する保証情報作成部と、上記署名値を生成すると共に上記保証情報を付加して上記署名情報を生成する署名生成部と、を備えて文書データを出力する署名作成装置と、
文書データに添付された署名情報を基に文書データの内容を検証する構成であって、出力された上記文書データ内の署名情報に含まれる保証情報を基に保証範囲情報と保証範囲の確認結果を得る保証範囲抽出部と、上記署名情報の署名値による検証を行なうと共に上記保証情報を所定の演算に基いて検証を行う検証部と、を備えた署名検証装置と、で構成されることを特徴とする署名作成・検証システム。
【請求項８】
文書に含まれる署名元データを基に署名情報に署名値を記載して署名対象の内容保証をする署名作成方法において、
入力された上記署名元データの保証範囲を示す保証範囲情報を基に保証情報を生成する保証情報作成ステップと、
上記署名値を生成すると共に上記保証情報を付加して上記署名情報を生成する署名生成ステップと、を備えたことを特徴とする署名作成方法。
【請求項９】
文書データに添付された署名情報を基に文書データの内容を検証する署名検証方法において、
署名値と保証情報とを含む署名情報を入力し、上記署名情報に含まれる保証情報を基に保証範囲情報と保証範囲の確認結果を得る保証範囲抽出ステップと、
上記署名情報の署名値による検証を行なうと共に上記保証情報を所定の演算に基いて検証を行う検証ステップと、を備えたことを特徴とする署名検証方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、通信及び計算機分野において配布された電子化文書に記載された内容を、署名によって署名者が内容保証を行う場合の署名作成・検証装置及び方法に関するものである。
【背景技術】
【０００２】
近年、計算機等から入力して作成された電子化文書の量が増えていて、しかもその内容の保証を要求される場合が増えている。
こうした従来の署名作成・検証方式において、構造化文書の例としてＸＭＬ文書に対する部分署名の方式がＷ３Ｃなどで標準化となっている。この非特許文献１により、図３０に示すように、構造化文書（ＸＭＬ文書）に対する部分署名を行う、付与された署名値を確認するといった手段が開示されている。
以下、図３０に基いてＸＭＬ署名の構造例を示す。
図３０（ａ）には、構造化文書の中に参照（Ｒｅｆｅｒｅｎｃｅ）情報に署名元データの情報が変換情報と共に含まれている。そして上記の署名元データに対して、図３０（ｂ）の一方向の生成手順で、コード変換、正規化などの処理を行ったものに対してダイジェスト値が計算され、その値を元に署名値を生成する。変換処理の有無は変換（Ｔｒａｎｓｆｏｒｍ）要素にて示される。
なお、変換処理がなく（０回実施）、署名元データそのものからダイジェストを生成する場合もある。
【０００３】
また、複数の文書の署名対象を指定した場合に、個々の署名対象である文書毎に検証操作を可能にする特許文献１に示す方式などが開示されている。
この署名方式は、ＸＭＬ文書に対して署名の付与・検証を行なうソフトウェアを備えて、このソフトウェアをＷｅｂブラウザに接続し、アプリケーション毎に特化した部分をＸＭＬ文章作成のプロセスのみに限定して、ＸＭＬ文書の署名の付与・検証機能を共通過して効率を上げる方法である。
【０００４】
署名により電子化文書を保証する場合、一つの電子化文書の量が膨大になり、付与するほうも受け取るほうも照査が大変であり、それよりも限定した部分を保証したい、保証してもらいたい、要求がある。
ところが従来の構造化文書の署名作成・検証方式では、署名元データに対して変換処理を実施した結果を元に署名値の作成を行っている。この方式では、検証側にて署名元データがどこであるか、署名値の確認により改ざんがされていないかなどの確認は容易に行えるが、実際に署名によって保証して欲しい範囲が署名対象に含まれているかを判断することは困難である。
以下の図３１に例を示す。
この図によれば、参照（Ｒｅｆｅｒｅｎｃｅ）情報から、署名元データがＮａｍｅ要素であることは容易に判断できる。つまり図において、ＵＲＩ情報よりＩＤ属性＝１２３４５の要素、即ち、本例ではＮａｍｅ要素とわかる。しかし、変換（Ｔｒａｎｓｆｏｒｍｓ）情報があることから、署名元データに対して、何らかの変換処理を施した結果に対して署名を行っている。
この場合、検証側にて、Ｎａｍｅ要素のコンテンツ（“上野なつひ”）が保証して欲しい範囲である場合でも、変換処理の内容によっては、署名対象に保証（してほしい）範囲が含まれるかを判断するのは困難である。
【特許文献１】特開２００２−９１３０３号公報
【非特許文献１】ＸＭＬ  Ｓｉｇｎａｔｕｒｅ  Ｓｙｎｔａｘ  ａｎｄ  Ｐｒｏｃｅｓｓｉｎｇ  Ｗ３Ｃ  Ｒｅｃｏｍｍｅｎｄａｔｉｏｎ  １２  Ｆｅｂｒｕａｒｙ  ２００２
【発明の開示】
【発明が解決しようとする課題】
【０００５】
従来の電子化文書の署名方法は上記のように構成されていて、その検証範囲の確認が困難である。また部分保証を行おうとしても、受け取る側で保証して欲しい範囲を知ることが出来ない、という課題がある。
即ち、例え署名があっても、例えば構造化文書の一部を保証する部分署名の場合は、添付文書が署名で保証されている一部を含んでいるのか、は不明であり、元の署名元データが復元できたとしても、コード変換等があると、保証範囲の確定が出来ないので、保証範囲を知ることが出来ない。つまり悪意の署名添付があると、それが添付された保証範囲外の書類全体があたかも保証されたかのように見える不具合がある。
従来は、そもそも保証範囲という概念が無く、従って保証範囲を規定する方式も決まっておらず、それらの定義として保証を与える側、保証を受ける側でどのように記述を行い、格納を行い、検証を行なうかが定められていない、という課題がある。
【０００６】
本発明は上記のような課題を解決するためになされたもので、検証側にて確認したい情報が署名対象に正しく含まれているか、それらの署名値及び保証情報が改ざんされていないかなどを容易に確認できることを目的とする。
【課題を解決するための手段】
【０００７】
この発明に係る署名検証装置は、文書データに添付された署名情報を基に文書データの内容を検証する署名検証装置において、
署名値と保証情報とを含む署名情報を入力し、上記署名情報に含まれる保証情報を基に保証範囲情報と保証範囲の確認結果を得る保証範囲抽出部と、
上記署名情報の署名値による検証を行なうと共に上記保証情報を所定の演算で検証結果を得る検証部と、を備えた。
【発明の効果】
【０００８】
この発明は上記のように構成されており、検証側で確認したい内容が正しく含まれているか、保証範囲情報に基づいて署名値自体や保証範囲の改竄も容易に検出できる効果がある。
【発明を実施するための最良の形態】
【０００９】
実施の形態１．
図１は、本発明の実施の形態１における署名作成装置の構成と入出力データの関係を示す図であり、図３は、署名検証装置の構成と入出力の関係を示す図である。
図１に示す署名作成装置１は、構造化文書および署名を作成するための参照情報（署名元データの指定、変換処理の内容）を元に、署名者の鍵を用いて署名情報４１０を生成し、構造化文書に付与することで、署名付き構造化文書データ４００を作成するものであり、以下の要素から構成される。プロセッサ１１と、入力部１２と、出力部１３と、外部記憶装置１４と、メモリ１５と、メモリ１５にＣＰＵ１１が読み取って実行するプログラムを記録して、入力部１２から入力された署名元データである、後に説明する構造化文書１００と参照データ２００を基に署名値を生成する署名生成部１０と、メモリ１５にＣＰＵ１１が読み取って実行するプログラムを記録して、利用者による保証したい（保証して欲しい）範囲の情報（要素、属性、コンテンツなど）の入力を受け付け、構造化文書に格納可能な保証情報４１３に変換し、署名情報４１０に付与する保証情報作成部２０とで構成される。なお、保証情報作成部２０は、検証側に配置してもよい。
【００１０】
また図２は、図１における保証情報作成部２０の詳細構成を示す図である。図において、要素指定情報作成部２１は、保証範囲情報３００中の要素名と出現順との情報から、全体かコンテンツの部分かを示す部分情報を含む指定情報４１３ａを生成し、属性指定情報作成部２２は、保証範囲情報３００中の属性名と要素指定情報作成部２１からの指定情報とに基いて、全体かコンテンツかの部分情報かまたは属性情報かを含む指定情報４１３ｂを生成する。これら二つの情報が保証情報４１３となる。この保証情報４１３は、署名値の生成とは独立に生成されるので、署名値４１２には何らの影響も与えない。従ってコンテンツの一部が改竄された場合の検出は、それが保証範囲内であろうと保証範囲外であろうと、署名値４１２を用いて従来の検出方式で検出される。しかしそれらは本実施の形態における動作には関係がないので、記述を省略する。
【００１１】
ここで図４を用いて署名対象と保証（したい／して欲しい）範囲との関係を説明する。
構造化文書１００に添付する署名元データを指定した参照情報（署名元データ）２００には、署名対象２１０を含み、この署名対象２１０は保証範囲情報３００を含む形式となる。なお、変換処理の種類（変換がない場合などを含む）によっては、署名元データ２００と署名対象２１０が一致する場合がある。署名者は、保証（したい）範囲を含めた範囲を署名対象として署名を行う。この署名値生成の手順自体は公知であり、図３０（ｂ）で示された一方方向に進行する方法で実施される。更に署名対象と保証範囲が一致する場合もあり、また図４（ｂ）のように複数の保証範囲がある場合、署名値を得る時間を少なくするために、別々に署名値を得るのでは無くて、より広い範囲を署名対象としてまとめて署名を実施する場合もある。このように保証する対象としては、
１）要素全体
２）要素のコンテンツ
３）属性値
の３つがあり、ａ）要素名と、ｂ）部分としての全体かコンテンツ、または属性、のいずれか、として指定をする。つまりａ）とｂ）とを指定する。
【００１２】
次に図３に示す署名検証装置３は、基本的には、署名付きの構造化文書データ４００から署名情報４１０を抽出して、参照情報４１１、署名値４１２を元に署名値が正しいかどうかを検証するもので、以下の要素で構成される。
プロセッサ３１と、入力部３２と、出力部３３と、外部記憶装置３４と、メモリ３５と、メモリ３５にＣＰＵ３１が読み取って実行するプログラムを記録して、入力部３２から入力された構造化文書データ４００から署名情報４１０を抽出して、参照情報４１１、署名値４１２を元に構造化文書５００と署名値の検証結果６００を生成する検証部３０と、メモリ３５にＣＰＵ３１が読み取って実行するプログラムを記録した構成で、署名情報４１０に含まれる保証情報４１３を抽出し、情報の内容を解析し、改竄部５０に対して改竄および署名検証の要求を行い、その結果を利用者に保証範囲情報７００およびその確認結果８００として通知する保証範囲抽出部４０と、メモリ３５にＣＰＵ３１が読み取って実行するプログラムを記録した構成で、保証範囲抽出部４０の要求に従い、特定の領域（要素、属性、コンテンツなど）に対する改竄を行い、改竄した署名付き構造化文書を検証部３０に対して検証要求を行い、その結果を保証範囲抽出部４０に返す改竄部５０とである。
【００１３】
次に署名作成動作について動作フローを示す図８を用いて説明する。従来方法では検出できなくて、本実施の形態では検出が可能な、署名情報そのものが改竄された場合、また保証情報を改竄された場合における動作を中心に述べる。
署名作成時に署名作成装置１では、ステップＳ８０１で構造化文書１００、Ｓ８０２で参照情報２００を入力として取得する。従来の署名値作成方法を適用してＳ８０３で署名生成部１０が署名情報４１０を作成する。またＳ８０４で保証範囲情報３００を入力し、Ｓ８０５で保証情報作成部２０が保証情報４１３を作成し、署名情報４１０に付与する。Ｓ８０５の詳細を図９に示す。
以下に署名作成処理における具体的な例を用いて説明する。
先ず構造化文書１００の例を図５に、参照データ２００の例を図６に示す。また保証範囲情報３００の例を図７（ａ）に示す。保証範囲情報３００は、保証する要素／属性、保証する対象の種類（要素全体、コンテンツ、属性値）などの情報を格納する。図７（ｂ）以下に他の保証範囲情報の表記例を示す。
【００１４】
保証情報作成部２０は、上記の保証範囲情報３００から、図９のフローに基いて、以下の保証情報４１３を生成する。具体的には、署名者は図５に対して署名を実施し、Ｌｉｓｔ要素の最初（０番目）の子要素であるＮａｍｅ要素を保証したい場合を説明する。この場合署名者は、以下の情報を用意する。
１１）要素指定情報
親要素１  Ｌｉｓｔ    出現順  指定なし（これは同じ名前の全要素を意味する）
親要素２  −（無しの意味）  出現順−
親要素ｎ  −（無し）  出現順−
当該要素  Ｎａｍｅ
出現順番  最初（０番目）
１２）種類  コンテンツ（内容）のみ
Ｓ８５１で保証範囲情報の種類を取得し、次の保証情報の雛型を作成する。
＜Ｔａｒｇｅｔｓ＞
＜Ｔａｒｇｅｔ  Ｔｙｐｅ＝”ｐａｔｈ”  Ｋｉｎｄ＝”ｃｏｎｔｅｎｔｓ”＞＜／Ｔａｒｇｅｔ＞
＜／Ｔａｒｇｅｔｓ＞
Ｓ８５２で署名者から要素指定の情報を取得して、次の形式に変換する。
／Ｌｉｓｔ／Ｎａｍｅ［０］
ここで／はファイルシステムにおけるディレクトリ情報などと同じで、先頭の／はルートを、その他の／は区切りを意味する。また／に続く文字は、要素名を指定する。［ｎ］は、同じ名前の要素が複数存在する場合などに、何番目の要素であるかを特定するために指定する。
【００１５】
保証情報作成部２０は、変換の手順としてＳ８５３で、
／＋親要素１の名前＋［親要素１の出現順］＋／親要素ｎの名前＋［親要素ｎの出現順］／当該要素の名前＋［当該要素の出現順］と連結して行く。
この場合はタイプ（種類）がコンテンツなので、保証情報の雛型に対してＳ８５２で作成した指定情報を付与して、保証情報を得る。即ち以下の形式の情報を得る。
＜Ｔａｒｇｅｔｓ＞
＜Ｔａｒｇｅｔ  Ｔｙｐｅ＝”ｐａｔｈ”  Ｋｉｎｄ＝”ｃｏｎｔｅｎｔｓ”＞／Ｌｉｓｔ／Ｎａｍｅ［０］＜／Ｔａｒｇｅｔ＞
＜／Ｔａｒｇｅｔｓ＞
なお、種類がコンテンツではなくて属性の場合は、指定情報に属性名等の情報を付与する。
Ｓ８５６で完成した保証情報を、Ｓ８５７で構造化文書データ４００に添付して終了する。
この保証情報４１３の例を図１０に示す。
生成した保証情報４１３を署名情報４１０に付与した署名付きの構造化文書データ４００は、図１１の通りとなる。
【００１６】
一方、受信側の図３で示す署名検証装置３の動作を図１２に示す。
即ち図１２のステップＳ１２０１で構造化文書データ４００を入力部３２経由で取込み、Ｓ１２０２で署名値を検証する。これらは従来の署名検証方式と同等の動作をする。また動作自体としては、以後のＳ１２０７、Ｓ１２０９、Ｓ１２１１における検証も、従来と同等の検証を行う。
Ｓ１２０３で署名情報４１０に記載の保証情報４１３から署名要素（Ｓｉｇｎａｔｕｒｅ要素）を得て、Ｓ１２０５で保証情報の検出を行って構造化文書データ４００からそれを削除して、構造化文書５００を出力部３３経由で出力する。
また保証範囲抽出部４０は、Ｓ１２０５で保証情報４１３を抽出し、改竄部５０に要求して改竄し、検証部３０でこの保証情報を保証対象の種類に応じて要素検証、属性検証、コンテンツ検証に分けて不正になることを確認する。
【００１７】
更に保証情報の検証の詳細動作を示すフロー図を図１３に示す。即ち、要素の全体（要素名＋全属性値＋内容）を検証する。例えば保証情報は以下の形式で与えられているとする。
＜Ｔａｒｇｅｔｓ＞
＜Ｔａｒｇｅｔ  Ｔｙｐｅ＝”ｐａｔｈ”  Ｋｉｎｄ＝”ｃｏｎｔｅｎｔｓ”＞／Ｌｉｓｔ／Ｎａｍｅ［０］＜／Ｔａｒｇｅｔ＞
＜／Ｔａｒｇｅｔｓ＞
Ｓ１３０１でこの情報を取得し、指定情報（／Ｌｉｓｔ／Ｎａｍｅ［０］）を取り出してトークンに区切り、Ｓ１３０３で最初のトークンを取得する。この例では指定内容としてＬｉｓｔを取得する。なお／のみの場合は、何も取得ができず、ルート要素を指定していることになり、ａｔｔｒｉｂｕｔｅ：の記述があれば属性となる。
この場合には指定内容から、Ｓ１３０４で要素名であると判定する。
【００１８】
対象データが未設定なので、Ｓ１３０９でルート要素の子要素であるＬｉｓｔ要素の一覧を取得するが、この際のプログラムの処理としては公知のＤＯＭ（Ｄｏｃｕｍｅｎｔ  Ｏｂｊｅｃｔ  Ｍｏｄｅｌ）と呼ばれるＡＰＩを用いる。更にＳ１３１０で要素の指定に［］の記述がないため、順番指定はないと判断する。Ｓ１３１１ｂで取得した要素一覧を対象データとして格納する。
これをＳ１３０２で繰返し、次のトークン（Ｎａｍｅ［０］）を取得する。
［］内は、順番指定の情報であるので、それを除いた名前で処理を行い、順番指定は［］で判断する。これは［］内の番号と要素名からＤＯＭを用いて要素の取得ができる。
Ｓ１３１３で、上記の抽出結果と対象の範囲情報である対象データとを突合わせて、確かに含まれていることを示す○、含まれていないことを示すＸを出力する。
具体例として、改竄されていない構造化文書データ４００を入力として、署名検証装置３が検証部３０を用いて検証出力した文書で、署名情報４１０を除いた構造化文書５００の例を図１４に示す。
同様に署名値の検証結果６００の例を図１５に、保証範囲情報７００の例を図１６に、保証範囲の確認結果８００に問題がなかった例を図１７に示す。この例では、Ｎａｍｅ［０］のコンテンツである”上野なつひ”のみが署名の保証範囲であり、保証範囲内での改竄が無かったものである。
【００１９】
次に保証範囲内が改竄された場合の検出動作を説明する。
検証部３０は先に説明した動作により、署名情報４１０に含まれる参照情報４１１、署名情報署名値４１２などから、以下の署名値の検証を実施し、署名値の検証結果６００を得る。また、同様に先に説明した動作により保証範囲抽出部４０は、署名情報４１０に含まれる保証情報４１３を抽出し、保証する対象の種類に応じて、以下の手順にて署名値の検証を実施する。
２１）保証範囲がコンテンツの場合
コンテンツの改ざん（文字列の削除、挿入など）をＳ１２１０で改竄部５０に要求し、改竄結果を検証部３０にて署名値の検証を行い不正となることを確認する。
２２）保証範囲が属性の場合
属性の削除、属性値の改ざん（属性値の変更）をＳ１２０８で改竄部５０に要求し、改竄結果を検証部３０にて署名値の検証を行い不正となることを確認する。
２３）保証範囲が要素の場合
上記の２１）、２２）に加え、要素の削除（要素名の変更を含む）、属性の追加といった改竄をＳ１２０６で改竄部５０に要求し、改竄結果を検証部３０にて署名値の検証を行い不正となることを確認する。
上記の結果を元に、構造化文書データ４００から署名情報４１０を取り除いた構造化文書５００と、署名値の検証結果６００、保証範囲情報７００、保証範囲の確認結果８００を検証側の利用者に通知する。
保証範囲の指定が複数ある場合には、対応する上記の処理を複数回行う。
【００２０】
２１）の例として図１８は、具体的な構造化文書データ４００で、保証範囲内のＮａｍｅ要素のコンテンツが改竄されて、”なっちゅ→”となっている例を示している。
この場合には、構造化文書５００は図１９に示される。また署名値検証を行うステップにおいて従来の同等の検証アルゴリズムによる署名値の検証結果６００は、図２０に示されるように「失敗」となり、改竄の検出ができる。
またコンテンツが保証されているとすればＳ１２０５で、保証範囲抽出部４０がこれを抽出し、署名情報４１０中の保証情報４１３からＮａｍｅ要素のコンテンツが保証されているはずと判る。図１６の例では、／ＬｉｓｔからＬｉｓｔの名前を持つ先頭要素を得て、次の／Ｎａｍｅ［０］からＬｉｓｔの子要素でＮａｍｅ要素一覧を得て、先頭［０］処理を対象データとする。この結果、保証範囲情報７００は、図２１で示されて、”なっちゅ→”が出力される。即ち、”上野なつひ”ではない。
また保証範囲の確認結果８００は、保証範囲の指定と署名対象が一致するので「○」となる。しかし、従来方式の署名検証で失敗するので改竄されたことが検出できる。
【００２１】
保証範囲は２１）であるが、改竄が保証範囲外の例として以下を説明する。
図２３は署名対象内で、しかし保証範囲外で改竄がされた例を示す図である。図において、保証範囲は先の図１１と同様のＮａｍｅ要素のコンテンツであるが、属性値は保証範囲外である。この場合には、構造化文書５００は図２４に示される。また署名値の検証結果６００は従来方式の検証で「失敗」となり、改竄の検出ができる。
なお、この場合の保証範囲情報は、図１６と同様であり、保証範囲の確認結果８００は、署名対象と保証範囲の包含関係は正しいので「○」が出力される。しかし、上記のように従来方式で検証できる。
【００２２】
上記の例は、従来方式でも検証が可能な部分の改竄を検出する動作例を含めて説明し、本方式が不具合を及ぼさず、また保証範囲の確認結果が有効であることを示した。次に本方式のみが検証可能である重要な、署名対象の指定や署名値等の署名情報そのものが改竄された場合を説明する。
図２５は、署名情報４１０自体が関係の無い他の署名と差換えられたりして、改竄された例を示す図である。この場合署名情報４１０は、Ｎａｍｅ要素のコンテンツであるとする。
この場合に出力される構造化文書５００は図２６で示され、署名値の検証結果６００は、それ自体には改竄が無いので、公知の検証方式により「成功」となる。
しかし、保証範囲情報７００は図１６と同様であり、従って保証範囲の確認結果８００は、保証範囲と署名対象の包含関係が正しくないので、図２２に示されるように、「Ｘ」が出力される。即ち保証範囲が改竄されていることが検証できる。
なお上記の改竄以外にも、署名装置のトラブルまたは署名対象の指定誤り等により、署名対象と保証範囲の包含関係が不適切な場合にも、この署名検証装置３で検出が可能である。あるいは、署名されていない構造化文書に、関係の無い署名情報を付与した場合にも、保証情報があることによって、誤りを検出できる。
【００２３】
次に保証情報を改竄された場合を説明する。
図２７は、保証情報がＮａｍｅ要素からＨｏｍｅ  Ｔｏｗｎ要素に改竄された場合の例を示す図である。
この場合の構造化文書５００は図２８に示される。
そして署名値の検証結果６００は、両方の情報が改竄されているので、「成功」となる。また保証範囲の確認結果８００は、改竄されたものを正しく検出できる意味の○、となる。
つまり、この場合に得られる保証範囲情報７００は、改竄されている図２９が出力されるので、署名側で意図した図１６の内容とは異なり、改竄された図２９が保証情報である。従って署名検証装置３側では、期待している保証内容とは異なることが容易に判る。
上記のように、通常の電子署名の他に、文書に保証範囲情報を示す保証情報を付与して、両者を用いて文書を検証するので、検証側では保証されている範囲が容易に確認でき、しかも改竄を容易に防ぐことが出来る効果がある。
【００２４】
上記では署名作成装置１側で保証情報４１３を含んだ構造化文書データ４００が得られる場合を説明したが、保証情報作成部はいわば独立の要素であり、受信側の署名検証装置３側に設けてもよい。その場合、保証して欲しい保証範囲情報３００を署名検証装置に入力して保証情報４１３を生成し、この保証情報４１３を用いて上記説明した署名値の検証と、保証情報の検証を行なうようにしてもよい。
【００２５】
実施の形態２．
実施の形態１では、専用の保証情報作成部を備えた署名作成装置、及び専用の補償範囲抽出部と改竄部とを備えた署名検証装置を説明したが、汎用の計算機を用いて、上記それぞれの動作フローで示される機能をプログラムで組み、メモリに記憶させて実行するようにしてもよい。
即ち図１において、保証情報作成部を図８及び図９に示す機能をメモリ上にプログラムで組込んだ保証情報生成ステップとし、署名生成部を図８及び既存の署名検証機能を持たせてメモリ上にプログラムで組込んだ署名生成ステップとして、これらを用いた方法としてもよい。
同様に図３において、検証部として図１２に示す機能を持たせたプログラムとして組込み、また保証範囲抽出部として図１３に示す機能を持たせたプログラムとして組込んで、これらを用いる方法としてもよい。
この方法によっても、上記の効果が得られる。
【図面の簡単な説明】
【００２６】
【図１】この発明の実施の形態１における署名作成装置の構成と入出力データの関係を示す図である。
【図２】実施の形態１における保証情報作成部の構成を示す図である。
【図３】実施の形態１における署名検証装置の構成と入出力データの関係を示す図である。
【図４】実施の形態１における構造化文書、署名対象と補償範囲との関係を示す図である。
【図５】実施の形態１における構造化文書の例を示す図である。
【図６】実施の形態１における参照情報の例を示す図である。
【図７】実施の形態１における保証範囲情報の例を示す図である。
【図８】実施の形態１における署名作成動作フローを示す図である。
【図９】実施の形態１における保証情報作成動作フローを示す図である。
【図１０】実施の形態１における保証情報の例を示す図である。
【図１１】実施の形態１における改竄されていない構造化文書の例を示す図である。
【図１２】実施の形態１における署名検証動作フローを示す図である。
【図１３】実施の形態１における保証範囲抽出部の動作フローを示す図である。
【図１４】実施の形態１における出力された改竄されていない構造化文書の例を示す図である。
【図１５】実施の形態１における署名値の検証結果の示す図である。
【図１６】実施の形態１における出力された保証範囲情報の例を示す図である。
【図１７】実施の形態１における保証範囲の確認結果の例を示す図である。
【図１８】実施の形態１における保証範囲内が改竄された構造化文書の例を示す図である。
【図１９】実施の形態１における出力された構造化文書の例を示す図である。
【図２０】実施の形態１における署名値の検証結果の示す図である。
【図２１】実施の形態１における出力された保証範囲情報の例を示す図である。
【図２２】実施の形態１における保証範囲の確認結果の例を示す図である。
【図２３】実施の形態１における保証範囲外が改竄された構造化文書の例を示す図である。
【図２４】実施の形態１における出力された構造化文書の例を示す図である。
【図２５】実施の形態１における署名情報が改竄された構造化文書の例を示す図である。
【図２６】実施の形態１における出力された構造化文書の例を示す図である。
【図２７】実施の形態１における保証情報が改竄された構造化文書の例を示す図である。
【図２８】実施の形態１における出力された構造化文書の例を示す図である。
【図２９】実施の形態１における出力された保証範囲情報の例を示す図である。
【図３０】従来の構造化文書に付与する部分署名の方式を示す図である。
【図３１】従来の構造化文書に付与する署名作成方式を示す図である。
【符号の説明】
【００２７】
１  署名作成装置、３  署名検証装置、１０  署名生成部、１１  プロセッサ（ＣＰＵ）、１２  入力部、１３  出力部、１４  外部記憶装置、１５  メモリ、２０  保証情報作成部、２１  要素指定情報作成部、２２  属性指定情報作成部、３０  検証部、３１  プロセッサ（ＣＰＵ）、３２  入力部、３３  出力部、３４  外部記憶装置、３５  メモリ、４０  保証範囲抽出部、５０  改竄部、１００  構造化文書、２００  参照情報（参照データ）、３００  保証範囲情報、４００  構造化文書データ、４１０  署名情報、４１１  参照情報、４１２  署名値、４１３  保証情報、５００  構造化文書、６００  署名値の検証結果、７００  保証範囲情報、８００  保証範囲の確認結果、Ｓ８０５  保証情報の作成ステップ。
【図１】
2006311068.tif 000003
【図２】
2006311068.tif 000004
【図３】
2006311068.tif 000005
【図４】
2006311068.tif 000006
【図５】
2006311068.tif 000007
【図６】
2006311068.tif 000008
【図７】
2006311068.tif 000009
【図８】
2006311068.tif 000010
【図９】
2006311068.tif 000011
【図１０】
2006311068.tif 000012
【図１１】
2006311068.tif 000013
【図１２】
2006311068.tif 000014
【図１３】
2006311068.tif 000015
【図１４】
2006311068.tif 000016
【図１５】
2006311068.tif 000017
【図１６】
2006311068.tif 000018
【図１７】
2006311068.tif 000019
【図１８】
2006311068.tif 000020
【図１９】
2006311068.tif 000021
【図２０】
2006311068.tif 000022
【図２１】
2006311068.tif 000023
【図２２】
2006311068.tif 000024
【図２３】
2006311068.tif 000025
【図２４】
2006311068.tif 000026
【図２５】
2006311068.tif 000027
【図２６】
2006311068.tif 000028
【図２７】
2006311068.tif 000029
【図２８】
2006311068.tif 000030
【図２９】
2006311068.tif 000031
【図３０】
2006311068.tif 000032
【図３１】
2006311068.tif 000033