(57)【要約】【課題】複数の平文データについて電子署名を用いた署名生成時間や検証に要するデータの総量や検証時間を削減するとともに、一の平文データの検証の際に他の平文データを用いることを不要とすること。【解決手段】複数の平文データを入力し、複数の平文データそれぞれに対し、ハッシュ計算を行いハッシュデータを生成し、複数の平文データそれぞれに対し、生成された当該平文データに対応するハッシュデータ以外の全てのハッシュデータの排他的論理和を算出し当該平文データの補助データを生成し、全てのハッシュデータの排他的論理和を算出することによって署名用ビット列を生成し、署名生成鍵を用いて署名用ビット列を署名し署名データを生成し、署名データと、複数の平文データと、平文データに対応づけられた補助データとを出力する。【選択図】図１
2010171600.tif 000002
【特許請求の範囲】
【請求項１】
署名を生成するための署名生成鍵を記憶する署名生成鍵記憶部と、
複数の平文データを入力する平文データ入力部と、
前記複数の平文データそれぞれに対し、ハッシュ計算を行いハッシュデータを生成するハッシュデータ生成部と、
前記複数の平文データそれぞれに対し、前記ハッシュデータ生成部で生成された当該平文データに対応する前記ハッシュデータ以外の全てのハッシュデータの排他的論理和を算出し当該平文データの補助データを生成する補助データ生成部と、
前記ハッシュデータ生成部で生成した全てのハッシュデータの排他的論理和を算出することによって署名用ビット列を生成し、前記署名生成鍵記憶部に記憶されている署名生成鍵を用いて署名用ビット列を署名し、署名データを生成する署名データ生成部と、
前記署名データと、前記複数の平文データと、前記平文データに対応づけられた補助データとを出力するデータ出力部と、
を備える署名データ生成装置。
【請求項２】
請求項１に記載の署名データ生成装置によって生成された前記署名データ及び前記補助データと、当該補助データに対応する前記平文データと、を入力するデータ入力部と、
請求項１に記載の署名データ生成装置によって記憶される前記署名生成鍵に対応する署名検証鍵を記憶する署名検証鍵記憶部と、
前記データ入力部によって入力された前記平文データに対してハッシュ計算を行いハッシュデータを生成するハッシュデータ生成部と、
前記データ入力部によって入力された前記補助データと、前記ハッシュデータ生成部によって生成された前記ハッシュデータとの排他的論理和を算出することによって、比較用ビット列を生成する比較用ビット列生成部と、
前記データ入力部によって入力された前記署名データに対し、前記署名検証鍵記憶部に記憶される署名検証鍵を用いた復元処理を行い、検証用ビット列を生成する検証用ビット列生成部と、
前記検証用ビット列と前記比較用ビット列とを比較し、前記平文データと前記署名データとの関連性を検証する検証部と、
を備える検証装置。
【請求項３】
請求項１に記載の署名データ生成装置によって生成された前記署名データを記憶する署名データ記憶領域と、
前記署名データ生成装置によって生成された複数の前記補助データそれぞれを、対応する前記平文データと対応づけて記憶する実データ記憶領域と、
を有する署名データ記録媒体。
【請求項４】
署名データを記憶する署名データ記録媒体と、前記署名データの検証を行う複数の検証装置とを含む署名検証システムにおいて、
前記署名データ記録媒体は、
請求項１に記載の署名データ生成装置によって生成された前記署名データを、いずれの検証装置からも読み出し可能に記憶する署名データ記憶領域と、
前記署名データ生成装置によって生成された複数の前記補助データそれぞれを、対応する前記平文データと対応づけて記憶し、各平文データを所定の検証装置からのみ読み出し可能にする実データ記憶領域と、
を有し、
前記検証装置は、
前記署名データと、自装置が読み出し可能な前記平文データと、当該平文データに対応する前記補助データと、を前記署名データ記録媒体から入力するデータ入力部と、
請求項１に記載の署名データ生成装置によって記憶される前記署名生成鍵に対応する署名検証鍵を記憶する署名検証鍵記憶部と、
前記データ入力部によって入力された前記平文データに対してハッシュ計算を行いハッシュデータを生成するハッシュデータ生成部と、
前記データ入力部によって入力された前記補助データと、前記ハッシュデータ生成部によって生成された前記ハッシュデータとの排他的論理和を算出することによって、比較用ビット列を生成する比較用ビット列生成部と、
前記データ入力部によって入力された前記署名データに対し、前記署名検証鍵記憶部に記憶される署名検証鍵を用いた復元処理を行い、検証用ビット列を生成する検証用ビット列生成部と、
前記検証用ビット列と前記比較用ビット列とを比較し、前記平文データと前記署名データとの関連性を検証する検証部と、
を備えることを特徴とする署名検証システム。
【請求項５】
署名データを記憶する署名データ記録媒体と、前記署名データの検証を行う複数の検証装置とを含む署名検証システムにおいて、
前記署名データ記録媒体は、
請求項１に記載の署名データ生成装置によって生成された前記署名データを、いずれの検証装置からも読み出し可能に記憶する署名データ記憶領域を有し、
前記検証装置は、
予め前記署名データ生成装置から読み出した平文データと、当該平文データに対応した前記補助データと、を記憶する平文データ／補助データ記憶部と、
前記署名データを前記署名データ記録媒体から入力し、前記平文データと、当該平文データに対応する前記補助データと、を前記平文データ／補助データ記憶部から入力するデータ入力部と、
請求項１に記載の署名データ生成装置によって記憶される前記署名生成鍵に対応する署名検証鍵を記憶する署名検証鍵記憶部と、
前記データ入力部によって入力された前記平文データに対してハッシュ計算を行いハッシュデータを生成するハッシュデータ生成部と、
前記データ入力部によって入力された前記補助データと、前記ハッシュデータ生成部によって生成された前記ハッシュデータとの排他的論理和を算出することによって、比較用ビット列を生成する比較用ビット列生成部と、
前記データ入力部によって入力された前記署名データに対し、前記署名検証鍵記憶部に記憶される署名検証鍵を用いた復元処理を行い、検証用ビット列を生成する検証用ビット列生成部と、
前記検証用ビット列と前記比較用ビット列とを比較し、前記平文データと前記署名データとの関連性を検証する検証部と、
を備えることを特徴とする署名検証システム。
【請求項６】
署名を生成するための署名生成鍵を記憶する署名生成鍵記憶部を備える署名データ生成装置が、複数の平文データを入力する平文データ入力ステップと、
前記署名データ生成装置が、前記複数の平文データそれぞれに対し、ハッシュ計算を行いハッシュデータを生成するハッシュデータ生成ステップと、
前記署名データ生成装置が、前記複数の平文データそれぞれに対し、前記ハッシュデータ生成ステップで生成された当該平文データに対応する前記ハッシュデータ以外の全てのハッシュデータの排他的論理和を算出し当該平文データの補助データを生成する補助データ生成ステップと、
前記署名データ生成装置が、前記ハッシュデータ生成ステップで生成した全てのハッシュデータの排他的論理和を算出することによって署名用ビット列を生成し、前記署名生成鍵記憶部に記憶されている署名生成鍵を用いて署名用ビット列を署名し、署名データを生成する署名データ生成ステップと、
前記署名データ生成装置が、前記署名データと、前記複数の平文データと、前記平文データに対応づけられた補助データとを出力するデータ出力ステップと、
を備える署名データ生成方法。
【請求項７】
請求項６に記載の署名データ生成方法において用いられる前記署名生成鍵に対応する署名検証鍵を記憶する署名検証鍵記憶部を備える検証装置が、請求項６に記載の署名データ生成方法によって生成された前記署名データ及び前記補助データと、当該補助データに対応する前記平文データと、を入力するデータ入力ステップと、
前記検証装置が、入力された前記平文データに対してハッシュ計算を行いハッシュデータを生成するハッシュデータ生成ステップと、
前記検証装置が、入力された前記補助データと、前記ハッシュデータ生成ステップによって生成された前記ハッシュデータとの排他的論理和を算出することによって、比較用ビット列を生成する比較用ビット列生成ステップと、
前記検証装置が、入力された前記署名データに対し、前記署名検証鍵記憶部に記憶される署名検証鍵を用いた復元処理を行い、検証用ビット列を生成する検証用ビット列生成ステップと、
前記検証装置が、前記検証用ビット列と前記比較用ビット列とを比較し、前記平文データと前記署名データとの関連性を検証する検証ステップと、
を備える検証方法。
【請求項８】
署名を生成するための署名生成鍵を記憶する署名生成鍵記憶部を備えるコンピュータに対し、
複数の平文データを入力する平文データ入力ステップと、
前記複数の平文データそれぞれに対し、ハッシュ計算を行いハッシュデータを生成するハッシュデータ生成ステップと、
前記複数の平文データそれぞれに対し、前記ハッシュデータ生成ステップで生成された当該平文データに対応する前記ハッシュデータ以外の全てのハッシュデータの排他的論理和を算出し当該平文データの補助データを生成する補助データ生成ステップと、
前記ハッシュデータ生成ステップで生成した全てのハッシュデータの排他的論理和を算出することによって署名用ビット列を生成し、前記署名生成鍵記憶部に記憶されている署名生成鍵を用いて署名用ビット列を署名し、署名データを生成する署名データ生成ステップと、
前記署名データと、前記複数の平文データと、前記平文データに対応づけられた補助データとを出力するデータ出力ステップと、
を実行させるためのプログラム。
【請求項９】
請求項８に記載のプログラムにおいて用いられる前記署名生成鍵に対応する署名検証鍵を記憶する署名検証鍵記憶部を備えるコンピュータに対し、
請求項８に記載のプログラムの実行によって生成された前記署名データ及び前記補助データと、当該補助データに対応する前記平文データと、を入力するデータ入力ステップと、
入力された前記平文データに対してハッシュ計算を行いハッシュデータを生成するハッシュデータ生成ステップと、
入力された前記補助データと、前記ハッシュデータ生成ステップによって生成された前記ハッシュデータとの排他的論理和を算出することによって、比較用ビット列を生成する比較用ビット列生成ステップと、
入力された前記署名データに対し、前記署名検証鍵記憶部に記憶される署名検証鍵を用いた復元処理を行い、前記検証用ビット列を生成する検証用ビット列生成ステップと、
前記検証用ビット列と前記比較用ビット列とを比較し、前記平文データと前記署名データとの関連性を検証する検証ステップと、
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
暗号化処理によって電子署名用のデータを生成する署名データ生成技術、生成された電子署名用のデータを用いて検証を行う検証技術に関する。
【背景技術】
【０００２】
任意の電子データの本人確認や偽造・改竄防止を目的として、対象となる電子データ（以下、「平文データ」という）に対し電子署名のデータ（以下、「署名データ」という）を生成し、電子署名データを用いて検証する電子署名技術が提案されている。従来、一つの平文データから一つの署名データが生成され、平文データと署名データとが１対１に対応づけて取り扱われていた。このため、署名の生成時間が平文のデータ数に比例してかかることになり、このような従来の電子署名技術では複数の平文データを検証するためには、平文データと同数の署名データを検証することが必要となり、平文データ数の増大に伴って検証に必要となるデータのサイズや検証時間が増大してしまうという問題が生じていた。
【０００３】
例えば、平文データのサイズが１００ｂｙｔｅであり、署名データのサイズが１２８ｂｙｔｅである場合、平文データがｎ個になるとこれに応じて署名データの総量が１２８×ｎ（ｂｙｔｅ）となり、ｎ個の平文データの全てを検証するために必要となるデータサイズは（１００＋１２８）×ｎ（ｂｙｔｅ）となっていた。また、電子署名の検証に要するデータを生成するのに要する時間は、署名生成時間×ｎ＋ハッシュデータ生成時間×ｎであり、ハッシュデータ生成時間が１ミリ秒程度であるとすると、署名生成時間は５００ミリ秒程度となっていた。
【０００４】
このような問題に対し、複数の平文データに対し一つの署名データを生成する技術が提案されている（特許文献１参照）。この技術によれば、複数の平文データを用いて一つの署名データが生成される。そのため、平文データ数が増大したとしても、必要となる署名データ数は一つのままで増大しない。例えば、上記のように平文データのサイズが１００ｂｙｔｅであり署名データのサイズが１２８ｂｙｔｅである場合、平文データがｎ個になったとしても署名データの総量は１２８ｂｙｔｅであり、ｎ個の平文データの全てを検証するために必要となるデータサイズは１００×ｎ＋１２８（ｂｙｔｅ）であった。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００６−０６０７２４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上記の従来技術では、署名データを用いて一の平文データを検証する場合に、この署名データの生成に際して使用された他の平文データを用いる必要がある。そのため、他の平文データを検証以外の目的では必要としない装置に対しても他の平文データを開示する必要があったため、他の平文データのセキュリティの低下を招いてしまうという問題があった。
【０００７】
上記事情に鑑み、本発明は、複数の平文データについて電子署名を用いた署名生成時間や検証に要するデータの総量や検証時間を削減するとともに、一の平文データの検証の際に他の平文データを用いることを不要とすることが可能となる署名データ生成技術、署名データ記録媒体、この署名データ生成技術によって生成された署名データを用いて検証を行う検証技術、このような技術を用いたシステムを提供することを目的としている。
【課題を解決するための手段】
【０００８】
本発明の一態様は、署名データ生成装置であって、署名を生成するための署名生成鍵を記憶する署名生成鍵記憶部と、複数の平文データを入力する平文データ入力部と、前記複数の平文データそれぞれに対し、ハッシュ計算を行いハッシュデータを生成するハッシュデータ生成部と、前記複数の平文データそれぞれに対し、前記ハッシュデータ生成部で生成された当該平文データに対応する前記ハッシュデータ以外の全てのハッシュデータの排他的論理和を算出し当該平文データの補助データを生成する補助データ生成部と、前記ハッシュデータ生成部で生成した全てのハッシュデータの排他的論理和を算出することによって署名用ビット列を生成し、前記署名生成鍵記憶部に記憶されている署名生成鍵を用いて署名用ビット列を署名し、署名データを生成する署名データ生成部と、前記署名データと、前記複数の平文データと、前記平文データに対応づけられた補助データとを出力するデータ出力部と、を備える。
【０００９】
本発明の一態様は、検証装置であって、上記の署名データ生成装置によって生成された前記署名データ及び前記補助データと、当該補助データに対応する前記平文データと、を入力するデータ入力部と、上記の署名データ生成装置によって記憶される前記署名生成鍵に対応する署名検証鍵を記憶する署名検証鍵記憶部と、前記データ入力部によって入力された前記平文データに対してハッシュ計算を行いハッシュデータを生成するハッシュデータ生成部と、前記データ入力部によって入力された前記補助データと、前記ハッシュデータ生成部によって生成された前記ハッシュデータとの排他的論理和を算出することによって、比較用ビット列を生成する比較用ビット列生成部と、前記データ入力部によって入力された前記署名データに対し、前記署名検証鍵記憶部に記憶される署名検証鍵を用いた復元処理を行い、検証用ビット列を生成する検証用ビット列生成部と、前記検証用ビット列と前記比較用ビット列とを比較し、前記平文データと前記署名データとの関連性を検証する検証部と、を備える。
【００１０】
本発明の一態様は、署名データ記録媒体であって、上記の署名データ生成装置によって生成された前記署名データを記憶する署名データ記憶領域と、前記署名データ生成装置によって生成された複数の前記補助データそれぞれを、対応する前記平文データと対応づけて記憶する実データ記憶領域と、を有する。
【００１１】
本発明の一態様は、署名データを記憶する署名データ記録媒体と、前記署名データの検証を行う複数の検証装置とを含む署名検証システムにおいて、前記署名データ記録媒体は、上記の署名データ生成装置によって生成された前記署名データを、いずれの検証装置からも読み出し可能に記憶する署名データ記憶領域と、前記署名データ生成装置によって生成された複数の前記補助データそれぞれを、対応する前記平文データと対応づけて記憶し、各平文データを所定の検証装置からのみ読み出し可能にする実データ記憶領域と、を有し、前記検証装置は、前記署名データと、自装置が読み出し可能な前記平文データと、当該平文データに対応する前記補助データと、を前記署名データ記録媒体から入力するデータ入力部と、上記の署名データ生成装置によって記憶される前記署名生成鍵に対応する署名検証鍵を記憶する署名検証鍵記憶部と、前記データ入力部によって入力された前記平文データに対してハッシュ計算を行いハッシュデータを生成するハッシュデータ生成部と、前記データ入力部によって入力された前記補助データと、前記ハッシュデータ生成部によって生成された前記ハッシュデータとの排他的論理和を算出することによって、比較用ビット列を生成する比較用ビット列生成部と、前記データ入力部によって入力された前記署名データに対し、前記署名検証鍵記憶部に記憶される署名検証鍵を用いた復元処理を行い、検証用ビット列を生成する検証用ビット列生成部と、前記検証用ビット列と前記比較用ビット列とを比較し、前記平文データと前記署名データとの関連性を検証する検証部と、を備える。
【００１２】
本発明の一態様は、署名データを記憶する署名データ記録媒体と、前記署名データの検証を行う複数の検証装置とを含む署名検証システムにおいて、前記署名データ記録媒体は、上記の署名データ生成装置によって生成された前記署名データを、いずれの検証装置からも読み出し可能に記憶する署名データ記憶領域を有し、前記検証装置は、予め前記署名データ生成装置から読み出した平文データと、当該平文データに対応した前記補助データと、を記憶する平文データ／補助データ記憶部と、前記署名データを前記署名データ記録媒体から入力し、前記平文データと、当該平文データに対応する前記補助データと、を前記平文データ／補助データ記憶部から入力するデータ入力部と、上記の署名データ生成装置によって記憶される前記署名生成鍵に対応する署名検証鍵を記憶する署名検証鍵記憶部と、前記データ入力部によって入力された前記平文データに対してハッシュ計算を行いハッシュデータを生成するハッシュデータ生成部と、前記データ入力部によって入力された前記補助データと、前記ハッシュデータ生成部によって生成された前記ハッシュデータとの排他的論理和を算出することによって、比較用ビット列を生成する比較用ビット列生成部と、前記データ入力部によって入力された前記署名データに対し、前記署名検証鍵記憶部に記憶される署名検証鍵を用いた復元処理を行い、検証用ビット列を生成する検証用ビット列生成部と、前記検証用ビット列と前記比較用ビット列とを比較し、前記平文データと前記署名データとの関連性を検証する検証部と、を備える。
【００１３】
本発明は、コンピュータを、上述した署名データ生成装置又は検証装置として動作させるためのコンピュータプログラムとして特定されても良い。また、本発明は、上述した署名データ生成装置又は検証装置として機能するコンピュータが行う署名データ生成方法又は検証方法として特定されても良い。
【発明の効果】
【００１４】
本発明により、生成される署名データの数が一つとなるため複数の平文データについて電子署名を用いた署名生成時間や検証に要するデータの総量や検証時間を削減することが可能となるとともに、一の平文データの検証の際に他の平文データを用いることを不要とすることすることが可能となる。
【図面の簡単な説明】
【００１５】
【図１】署名データ生成装置の機能構成を表す概略ブロック図である。
【図２】署名データ生成装置の動作例を表すフローチャートである。
【図３】補助データ生成処理の内容を表すフローチャートである。
【図４】補助データ生成処理の具体例を表す概略図である。
【図５】署名データ生成処理の内容を表すフローチャートである。
【図６】署名データ生成処理の具体例を表す概略図である。
【図７】電子署名の検証に要するデータの総量の具体例を表す図である。
【図８】検証装置の機能構成を表す概略ブロック図である。
【図９】検証装置の動作例を表すフローチャートである。
【図１０】検証装置の処理の概略を表す概略図である。
【図１１】署名検証システムの構成例を表すシステム構成図である。
【図１２】記録媒体に記憶された各データのアクセス制御の概要を表す図である。
【図１３】署名検証システムの他の構成例を表すシステム構成図である。
【発明を実施するための形態】
【００１６】
［署名データ生成装置］
図１は、署名データ生成装置１の機能構成を表す概略ブロック図である。署名データ生成装置１は、平文データ入力部１０１、ハッシュデータ生成部１０２、補助データ生成部１０３、署名生成鍵記憶部１０４、署名データ生成部１０５、データ出力部１０６を備える。
【００１７】
平文データ入力部１０１は、電子署名の対象となるデータ（以下、「平文データ」という）を署名データ生成装置１に複数入力する。
【００１８】
ハッシュデータ生成部１０２は、平文データ毎にハッシュデータを生成する。具体的には、各平文データのハッシュデータは、例えばＭＤ２（Message Digest Algorithm 2）、ＭＤ４、ＭＤ５、ＳＨＡ（Secure Hash Algorithm）等のアルゴリズムを適用することによって生成できる。
【００１９】
補助データ生成部１０３は、ハッシュデータ生成部１０２によって算出されたハッシュデータに基づいて、各平文データに対応する補助データを生成する。具体的には、補助データ生成部１０３は、ある平文データの補助データを算出する場合、当該平文データを除く全ての平文データのハッシュデータの排他的論理和を算出し、算出された値を補助データとする。なお、全ての平文データとは、平文データ入力部１０１によって入力されたひとまとまりの平文データのことを表す。補助データの生成処理の詳細については後述する。
【００２０】
署名生成鍵記憶部１０４は、磁気ハードディスク装置や半導体記憶装置などの記憶装置を用いて構成され、電子署名のデータ（以下、「署名データ」という）を生成する際に用いられる署名生成鍵のデータを記憶する。ここで、署名生成鍵は例えば公開鍵暗号方式の一方の鍵である秘密鍵である。
【００２１】
署名データ生成部１０５は、全ての平文データのハッシュデータと署名生成鍵記憶部１０４に記憶される署名生成鍵とに基づいて、全ての平文データに共通する署名データを生成する。具体的には、署名データ生成部１０５は、全ての平文データのハッシュデータの排他的論理和を算出し、算出結果に対し署名生成鍵を用いた署名生成処理を行うことによって署名データを生成する。署名生成処理は、例えばＲＳＡ（Rivest Shamir Adleman）、ＤＳＡ（Digital Signature Algorithm）、ＥＣＤＳＡ（Elliptic Curve Digital Signature Algorithm）等のアルゴリズムを適用することによって行うことができる。署名データの生成処理の詳細については後述する。
【００２２】
データ出力部１０６は、平文データと、署名データ生成部１０５によって生成された署名データと、補助データ生成部１０３によって生成された複数の補助データとを出力する。このとき、データ出力部１０６は、各平文データと各補助データとを対応づけて出力する。
【００２３】
図２は、署名データ生成装置１の動作例を表すフローチャートである。以下、図２を用いて署名データ生成装置１の動作例について説明する。まず、平文データ入力部１０１がｎ個の平文データＭ（ｉ）を入力する（ステップＳ１０１）。なお、ｉは１〜ｎの整数であり、ｎは２以上の整数である。
【００２４】
次に、ハッシュデータ生成部１０２が、入力された各平文データＭ（ｉ）のハッシュデータｍ（ｉ）を生成する（ステップＳ１０２）。次に、補助データ生成部１０３が、補助データ生成処理を実行し、各平文データに対応する補助データを生成する（ステップＳ１０３）。
【００２５】
図３は、補助データ生成処理の内容を表すフローチャートである。以下、図３を用いて補助データ生成部１０３が実行する補助データ生成処理について説明する。
【００２６】
まず、補助データ生成部１０３は、変数ｊを生成し、“１”を代入することによって初期化する（ステップＳ２０１）。次に、補助データ生成部１０３は、変数ｋとビット列ｘを生成し初期化する（ステップＳ２０２）。具体的には、補助データ生成部１０３は、変数ｋに１を代入して初期化する。また、補助データ生成部１０３は、ハッシュデータ生成部１０２によって生成されるハッシュデータと同じ桁数のビット列ｘを生成し、全てのビットに“０”を代入して初期化する。
【００２７】
次に、補助データ生成部１０３は、変数ｊと変数ｋとの値が一致するか否か判定する（ステップＳ２０３）。変数ｊと変数ｋとの値が一致しない場合（ステップＳ２０３−ＹＥＳ）、補助データ生成部１０３は、ビット列ｘとハッシュデータｍ（ｋ）との排他的論理和を算出し、算出結果をビット列ｘに代入する（ステップＳ２０４）。
【００２８】
ステップＳ２０４の処理の後、又はステップＳ２０３において変数ｊと変数ｋとの値が一致する場合（ステップＳ２０３−ＮＯ）、補助データ生成部１０３は変数ｋの値をインクリメントする（ステップＳ２０５）。次に、補助データ生成部１０３は、変数ｋの値が、入力された平文データの数ｎよりも大きいか否か判定する（ステップＳ２０６）。変数ｋの値がｎ以下である場合（ステップＳ２０６−ＮＯ）、補助データ生成部１０３は、変数ｋの値がｎよりも大きくなるまでステップＳ２０３〜ステップＳ２０６の処理を繰り返し実行する。
【００２９】
一方、ステップＳ２０６において変数ｋの値がｎよりも大きい場合（ステップＳ２０６−ＹＥＳ）、補助データ生成部１０３は、この時点のビット列ｘの値を平文データＭ（ｊ）に対応する補助データＮ（ｊ）の値として決定し、補助データＮ（ｊ）にビット列ｘを代入する（ステップＳ２０７）。次に、補助データ生成部１０３は、変数ｊの値をインクリメントする（ステップＳ２０８）。次に、補助データ生成部１０３は、変数ｊの値がｎよりも大きいか否か判定する（ステップＳ２０９）。変数ｊの値がｎ以下である場合（ステップＳ２０９−ＮＯ）、補助データ生成部１０３は、変数ｊの値がｎよりも大きくなるまでステップＳ２０２〜ステップＳ２０９の処理を繰り返し実行し、各平文データＭ（ｉ）に対応する補助データＮ（ｉ）を算出する。そして、ステップＳ２０９において変数ｊの値がｎよりも大きい場合（ステップＳ２０９−ＹＥＳ）、補助データ生成部１０３は補助データ生成処理を終了する。
【００３０】
図４は、補助データ生成処理の具体例を表す概略図である。図４（ａ）は、三つの平文データとハッシュデータとの関係を表す図である。補助データ生成処理が実行される際には、各平文データＭ（１）〜Ｍ（３）から、それぞれハッシュデータｍ（１）〜ｍ（３）がハッシュデータ生成部１０２によって生成されている。図４（ｂ）は、三つの平文データそれぞれに対応する補助データの具体例を表す図である。平文データＭ（１）に対応する補助データＮ（１）は、他の全ての平文データＭ（２）及びＭ（３）のハッシュデータｍ（２）とｍ（３）との排他的論理和として算出される。平文データＭ（２）に対応する補助データＮ（２）及び平文データＭ（３）に対応する補助データＮ（３）もそれぞれ同様に、ハッシュデータｍ（３）とハッシュデータｍ（１）との排他的論理和、ハッシュデータｍ（１）とハッシュデータｍ（２）との排他的論理和として算出される。
【００３１】
図２に戻って署名データ生成装置１の処理の流れを説明する。ステップＳ１０３において補助データ生成部１０３が補助データ生成処理を終了すると、署名データ生成部１０５が署名データ生成処理を実行し、入力された複数の平文データに共通する一つの署名データを生成する（ステップＳ１０４）。
【００３２】
図５は、署名データ生成処理の内容を表すフローチャートである。以下、図５を用いて署名データ生成部１０５が実行する署名データ生成処理について説明する。まず、署名データ生成部１０５は、変数ｊを生成し、“１”を代入することによって初期化する（ステップＳ３０１）。次に、署名データ生成部１０５は、ビット列ｙを生成し初期化する（ステップＳ３０２）。具体的には、署名データ生成部１０５は、ハッシュデータ生成部１０２によって生成されるハッシュデータと同じ桁数のビット列ｙを生成し、全てのビットに“０”を代入して初期化する。
【００３３】
次に、署名データ生成部１０５は、ビット列ｙとハッシュデータｍ（ｊ）との排他的論理和を算出し、算出結果をビット列ｙに代入する（ステップＳ３０３）。次に、署名データ生成部１０５は、変数ｊの値をインクリメントする（ステップＳ３０４）。次に、署名データ生成部１０５は、変数ｊの値がｎよりも大きいか否か判定する（ステップＳ３０５）。変数ｊの値がｎ以下である場合（ステップＳ３０５−ＮＯ）、署名データ生成部１０５は、変数ｊの値がｎよりも大きくなるまでステップＳ３０２〜ステップＳ３０５の処理を繰り返し実行する。そして、ステップＳ３０５において変数ｊの値がｎよりも大きい場合（ステップＳ３０５−ＹＥＳ）、即ちビット列ｙの値が全てのハッシュデータｍ（ｉ）の排他的論理和となった場合、署名データ生成部１０５はこの時点のビット列ｙの値を署名用ビット列Ａの値として決定し、署名用ビット列Ａにビット列ｙを代入する（ステップＳ３０６）。このとき、必要に応じて署名生成鍵のビット列の長さにあわせるために特定用ビット列Ｂを連結するパディング処理を行い署名用ビット列Ａとしても良い。
【００３４】
そして、署名データ生成部１０５は、署名用ビット列Ａに対し、署名生成鍵記憶部１０４に記憶される署名生成鍵を用いた署名生成処理を行うことによって、署名データを生成し（ステップＳ３０７）、署名データ生成処理を終了する。
【００３５】
図６は、署名データ生成処理の具体例を表す概略図である。図６（ａ）は、三つの平文データとハッシュデータとの関係を表す図である。署名データ生成処理が実行される際には、各平文データＭ（１）〜Ｍ（３）から、それぞれハッシュデータｍ（１）〜ｍ（３）がハッシュデータ生成部１０２によって生成されている。図６（ｂ）は、三つの平文データＭ（１）〜Ｍ（３）に対応する署名用ビット列Ａの具体例を表す図である。この場合、署名用ビット列Ａは、全ての平文データＭ（１）〜Ｍ（３）のハッシュデータｍ（１）〜ｍ（３）の排他的論理和として算出される。図６（ｃ）は、三つの平文データＭ（１）〜Ｍ（３）に共通する署名データの具体例を表す図である。この図では、パディング処理を行い特定ビット列Ｂを連結している。
【００３６】
図２に戻って署名データ生成装置１の処理の流れを説明する。ステップＳ１０４において署名データ生成部１０５が署名データ生成処理を終了すると、データ出力部１０６が平文データ、署名データ及び補助データを出力し（ステップＳ１０５）、図２に表されるフローチャート全体の処理が終了する。
【００３７】
このように構成された署名データ生成装置１では、複数の平文データに対し、生成される署名データの数は一つである。また、平文データ毎に補助データが生成されるが、補助データのデータサイズは署名データのデータサイズよりも小さい。そのため、署名データ生成装置１によれば、電子署名の検証に要するデータの総量の、平文データ数の増加に伴う増加率を、従来のように平文データ毎に署名データが生成される場合に比べて小さくすることが可能となり、複数の平文データに対し１つの署名データを用いた検証を行えばよいので、複数の平文データそれぞれに応じて署名データの復元処理を複数回行う必要が無く、複数の平文データの検証に要する時間も短くなる。
【００３８】
図７は、電子署名の検証に要するデータの総量の具体例を表す図である。図７の場合、平文データのデータ量は１００ｂｙｔｅ、ハッシュデータのデータ量は２０ｂｙｔｅ（ＳＨＡ１アルゴリズムが適用された場合のデータ量に相当）、署名データのデータ量は１２８ｂｙｔｅ（ＲＳＡにおける標準的なデータ量に相当）である。図７において平文データの数が三つの場合、本発明による署名データ生成装置１による電子署名の検証に要するデータの総量は、平文データ（１００ｂｙｔｅ）×３＋補助データ（２０ｂｙｔｅ）×３＋署名データ（１２８ｂｙｔｅ）×１＝４８８ｂｙｔｅとなる。一方、従来技術による電子署名の検証に要するデータの総量は、平文データ（１００ｂｙｔｅ）×３＋署名データ（１２８ｂｙｔｅ）×３＝６８４ｂｙｔｅとなる。このように、署名データ生成装置１によれば、電子署名の検証に要するデータの総量は１９６ｂｙｔｅ削減され、全体のデータ量に占める削減率（データ量削減率）は２８．６５％となる。そして、図７から明らかなように、平文データ毎に生成される補助データのデータ量が署名データのデータ量よりも小さいため、データ量削減率は平文データの数の増加に伴って増加する。このように、署名データ生成装置１によれば、複数の平文データについて電子署名を用いた検証に要するデータの総量を削減することが可能となる。
【００３９】
また、署名データ生成装置１では、複数の平文データに共通して一つの署名データが生成されるが、一の平文データを検証する際に他の平文データを必要としない。そのため、一の平文データを検証する装置において、他の平文データを読み出せないように構成することが可能となり、他の平文データのセキュリティの低下を抑止することが可能となる。検証処理の詳細についての説明は、検証装置の説明とともに後述する。なお、一の平文データの電子署名の検証を行う際に、他の平文データから生成されたハッシュデータを用いるが、上述したようにハッシュデータから元の平文データを生成することはできないため、他の平文データのセキュリティが低下することが抑止される。
【００４０】
また、署名データ生成装置１では、電子署名の検証に要するデータを生成するのに要する時間は、署名生成時間×１＋ハッシュデータ生成時間×ｎ＋排他的論理和計算時間×ｎ×ｎである。これに対し、従来のように平文データ毎に署名データを生成する場合には、電子署名の検証に要するデータを生成するのに要する時間は、署名生成時間×ｎ＋ハッシュデータ生成時間×ｎである。一般的に署名生成時間は排他的論理和計算時間の数万倍となる。例えば、排他的論理和計算時間は０．１ミリ秒程度、ハッシュデータ生成時間は１ミリ秒程度であるとすると、署名生成時間は５００ミリ秒程度となる。そのため、署名データ生成装置１では、複数の平文データ毎に署名データの生成を行わず、共通した一つの署名データを生成するため、複数の平文データの電子署名の検証に要するデータの生成時間を従来に比べて大幅に削減することが可能となる。
【００４１】
［検証装置］
図８は、署名データ生成装置１によって生成された署名データを用いて電子署名の検証を行う検証装置２の機能構成を表す概略ブロック図である。検証装置２は、データ入力部２０１、ハッシュデータ生成部２０２、比較用ビット列生成部２０３、署名検証鍵記憶部２０４、検証用ビット列生成部２０５、検証部２０６を備える。
【００４２】
データ入力部２０１は、検証の対象となる平文データ、この平文データに対応する補助データ及び署名データを検証装置２に入力する。
ハッシュデータ生成部２０２は、署名データ生成装置１のハッシュデータ生成部１０２と同じアルゴリズムを用いて、検証対象となる平文データのハッシュデータを生成する。
【００４３】
比較用ビット列生成部２０３は、比較用ビット列として、検証対象となる平文データに対応する補助データと、検証対象となる平文データのハッシュデータとの排他的論理和を算出する。
【００４４】
署名検証鍵記憶部２０４は、磁気ハードディスク装置や半導体記憶装置などの記憶装置を用いて構成され、署名データ生成装置１の署名生成鍵記憶部１０４に記憶される署名生成鍵に対応する署名検証鍵を記憶する。
【００４５】
検証用ビット列生成部２０５は、検証の対象となる平文データに対応する署名データに対し、署名検証鍵記憶部２０４に記憶される署名検証鍵を用いて復元処理を行い、検証用ビット列を生成する。検証用ビット列生成部２０５の処理からも明らかなように、生成される検証用ビット列は、署名データ生成装置１によって生成される署名用ビット列と同じビット列である。
検証部２０６は、比較用ビット列生成部２０３によって生成された比較用ビット列と、検証用ビット列生成部２０５によって生成された検証用ビット列とを比較することによって、対象となる平文データの電子署名を検証し検証結果を出力する。
【００４６】
図９は、検証装置２の動作例を表すフローチャートである。以下、図９を用いて検証装置２の動作例について説明する。図９では、まず、データ入力部２０１が、検証の対象となる平文データＭ’（ｉ）、この平文データに対応する補助データＮ（ｉ）及び署名データを検証装置２に入力する（ステップＳ４０１）。
【００４７】
次に、ハッシュデータ生成部２０２が、検証の対象となる平文データＭ’（ｉ）のハッシュデータｍ’（ｉ）を生成する（ステップＳ４０２）。次に、比較用ビット列生成部２０３が、ハッシュデータｍ’（ｉ）と、検証の対象となる平文データＭ’（ｉ）に対応する補助データＮ（ｉ）との排他的論理和を算出し、比較用ビット列Ａ’を生成する（ステップＳ４０３）。
【００４８】
次に、検証用ビット列生成部２０５が、検証の対象となる平文データＭ’（ｉ）に対応する署名データに対し署名検証鍵によって復元処理を行い検証用ビット列Ａを取得する（ステップＳ４０４）。このとき、署名生成時にパディング処理が行われている場合は、復元処理されたビット列から特定ビット列Ｂを解除し、検証用ビット列Ａを取得する。
【００４９】
次に、検証部２０６が、検証用ビット列Ａと比較用ビット列Ａ’とが一致するか否か判定する（ステップＳ４０５）。検証用ビット列Ａと比較用ビット列Ａ’とが一致する場合（ステップＳ４０５−ＹＥＳ）、検証部２０６は平文データＭ’及び署名データについての署名検証が成功したと判定する（ステップＳ４０６）。即ち、この場合、検証部２０６は平文データＭ’（ｉ）が正当な署名データ生成装置１によって署名された平文データＭ（ｉ）であり、その後改竄がされていないと判定する。一方、検証用ビット列Ａと比較用ビット列Ａ’とが一致しない場合（ステップＳ４０５−ＮＯ）、検証部２０６は平文データＭ’及び署名データについての署名検証が失敗したと判定する（ステップＳ４０７）。即ち、この場合、検証部２０６は平文データＭ’（ｉ）が正当な署名データ生成装置１によって署名されていないか、又は署名後にデータの改竄がなされたと判定する。そして、検証部２０６が判定結果を出力する（ステップＳ４０８）。
【００５０】
図１０は、検証装置２の処理の概略を表す概略図である。図１０（ａ）は、平文データとハッシュデータとの関係を表す図である。ハッシュデータ生成部２０２によって、平文データＭ’（１）からハッシュデータｍ’（１）が算出される。図１０（ｂ）は、比較用ビット列Ａ’の概略を表す図である。平文データＭ’（１）に対応する補助データＮ（ｉ）と、ハッシュデータｍ’（ｉ）との排他的論理和が比較用ビット列Ａ’となる。図１０（ｃ）は、署名データと検証用ビット列Ａとの関係を表す図である。ここではパディング処理が行われた事例を示しており、署名データが復号化され特定ビット列Ｂの連結が解除されることによって、検証用ビット列Ａが署名データから取り出される。
【００５１】
図４、６、１０から明らかなように、平文データＭ（ｉ）とＭ’（ｉ）とが一致しており、ハッシュデータの算出アルゴリズムが一致しており、署名生成鍵・署名検証鍵が対応していれば、検証用ビット列Ａと比較用ビット列Ａ’とは一致する。即ち、平文データが改竄されておらず、正当な署名データ生成装置１によって署名データ及び補助データが生成されていれば、検証用ビット列Ａと比較用ビット列Ａ’とは一致する。そのため、上記のような処理を行う検証装置２によれば、複数の平文データに共通する署名データを用いて、他の平文データを用いることなく、一の平文データの電子署名の検証を行うことが可能となる。
【００５２】
［適用例］
図１１は、署名データ生成装置１によって生成された署名データ及び補助データを用いた署名検証システム４の構成例を表すシステム構成図である。署名検証システム４は、上述した検証装置２を用いて構成される３台の検証装置Ａ〜Ｃと、記録媒体３とを備える。例えば、検証装置Ａは銀行に設置されたＡＴＭ装置であり、検証装置Ｂはコンビニエンスストアに設置されたキオスク端末であり、検証装置Ｃは駅に設置された改札装置である。
【００５３】
図１２は、記録媒体３に記憶された各データのアクセス制御の概要を表す図である。以下、記憶媒体３について説明する。記録媒体３は、ＩＣカード等の携帯可能な記録媒体や、ＲＦＩＤ（Radio Frequency IDentification）搭載の携帯電話機等を用いて構成され、署名データ記憶領域と実データ記憶領域とを備える。署名データ記憶領域は、署名データ生成装置１によって生成された署名データを記憶し、検証装置Ａ〜Ｃのいずれもがアクセス可能（読出し可能）に構成される。実データ記憶領域は、複数の平文データＭ（Ａ）〜Ｍ（Ｃ）と、各平文データに対応して署名データ生成装置１によって生成された補助データＮ（Ａ）〜Ｎ（Ｃ）とを記憶する。実データ記憶領域には読み出し権限が設定されており、平文データＭ（Ａ）及び補助データＮ（Ａ）は検証装置Ａのみが読み出し可能であり、平文データＭ（Ｂ）及び補助データＮ（Ｂ）は検証装置Ｂのみが読み出し可能であり、平文データＭ（Ｃ）及び補助データＮ（Ｃ）は検証装置Ｃのみが読み出し可能である。
例えば、平文データＭ（Ａ）は、記録媒体３の所有者の銀行口座に関する銀行名、支店名、及び口座番号を表すデータであり、平文データ（Ｂ）は、記録媒体３の所有者の氏名及び住所を表すデータであり、平文データ（Ｃ）は、電子マネーの残高情報を表すデータである。
【００５４】
署名検証システム４では、各検証装置Ａ〜Ｃのデータ入力部２０１は、記録媒体３から署名データ、補助データ、平文データを読み出して入力を行う。なお、データ入力部２０１は、記録媒体３に記憶されている複数の平文データのうち、自装置が読み出すことが許可されている平文データのみを読み出す。
【００５５】
このように構成された署名検証システム４では、複数の平文データとその電子署名の検証に要するデータの総量を従来に比べて削減できるため、これらのデータを記憶する記録媒体３の使用メモリ量を削減することが可能となる。また、署名検証システム４では、上述した署名データ生成装置１によって電子署名の検証に要するデータを生成するため、複数の平文データの電子署名の検証に要するデータの生成時間を従来に比べて大幅に削減することが可能となる。さらに、署名検証システム４では、複数の平文データに対し１つの署名データを用いた検証を行えばよいので、複数の平文データそれぞれに応じて署名データの復元処理を複数回行う必要が無く、複数の平文データの検証に要する時間も短くなる。
【００５６】
また、一の平文データの署名検証において他の平文データが不要であるため、複数の平文データは、それぞれ読み出し可能に設定されている検証装置によってのみ読み出されるように記録媒体を構成することが可能となる。そのため、平文データのセキュリティの向上を図ることが可能となる。例えば、ＡＴＭ装置（検証装置Ａ）は、銀行名、支店名、及び口座番号を表すデータについて検証を行う場合に、氏名及び住所を表すデータ（Ｍ（Ｂ））や電子マネーの残高情報を表すデータ（Ｍ（Ｃ））を読み出すことなく検証を行うことができるため、Ｍ（Ｂ）及びＭ（Ｃ）を検証装置Ａがアクセスできないように読み出し制限を設定することによって、各平文データのセキュリティを高めることが可能となる。
【００５７】
図１３は、署名データ生成装置１によって生成された署名データ及び補助データを用いた署名検証システム７の構成例を表すシステム構成図である。署名検証システム７は、上述した検証装置２を用いて構成される３台の検証装置Ａ〜Ｃと、各検証装置に接続された平文データ／補助データ記憶部６と、記録媒体５とを備える。署名検証システム７においても、署名検証システム４と同様に、例えば検証装置Ａは銀行に設置されたＡＴＭ装置であり、検証装置Ｂはコンビニエンスストアに設置されたキオスク端末であり、検証装置Ｃは駅に設置された改札装置である。
【００５８】
記録媒体５は、ＩＣカード等の携帯可能な記録媒体や、ＲＦＩＤ搭載の携帯電話機等を用いて構成され、署名データ記憶領域を備える。署名データ記憶領域は、署名データ生成装置１によって生成された署名データを記憶し、検証装置Ａ〜Ｃのいずれもがアクセス可能に構成される。
【００５９】
平文データ／補助データ記憶部６は、予め署名データ生成装置１から読み出した平文データＭ（Ａ）〜Ｍ（Ｃ）とその補助データＮ（Ａ）〜Ｎ（Ｃ）を記憶する。具体的には、検証装置Ａに接続された平文データ／補助データ記憶部６は平文データＭ（Ａ）及び補助データＮ（Ａ）を記憶し、検証装置Ｂに接続された平文データ／補助データ記憶部６は平文データＭ（Ｂ）及び補助データＮ（Ｂ）を記憶し、検証装置Ｃに接続された平文データ／補助データ記憶部６は平文データＭ（Ｃ）及び補助データＮ（Ｃ）を記憶する。各検証装置Ａ〜Ｃは、自身に接続された平文データ／補助データ記憶部６から平文データ及び補助データを読み出し、さらに記録媒体５から署名データを読み出すことによって、署名検証を行う。
【００６０】
署名検証システム７では、各検証装置Ａ〜Ｃのデータ入力部２０１は、記録媒体３から署名データを読み出して入力を行う。また、データ入力部２０１は、自装置に接続された平文データ／補助データ記憶部６から、補助データ及び平文データを読み出して入力を行う。
【００６１】
このように構成された署名検証システム７では、複数の平文データに対応する署名データが一つで済むため、署名データを記憶する記録媒体の使用メモリ量を削減することが可能となる。
【００６２】
また、一の平文データの署名検証において他の平文データが不要であるため、複数の平文データそれぞれを検証装置に接続された平文データ／補助データ記憶部６に個別に記録することが可能となる。そのため、平文データのセキュリティの向上を図ることが可能となる。
【００６３】
上述した実施形態における署名データ生成装置又は検証装置の機能を、プログラム実行可能なＩＣカードで実現するようにしても良い。その場合、この機能を実現するためのプログラムをＩＣカードに記録して、このＩＣカードに記録されたプログラムをＩＣカードにおいて実行することによって実現しても良い。
以上、この発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【符号の説明】
【００６４】
１…署名データ生成装置，  １０１…平文データ入力部，  １０２…ハッシュデータ生成部，  １０３…補助データ生成部，  １０４…署名生成鍵記憶部，  １０５…署名データ生成部（署名データ生成部），  １０６…データ出力部，  ２…検証装置，  ２０１…データ入力部，  ２０２…ハッシュデータ生成部，  ２０３…比較用ビット列生成部，  ２０４…署名検証鍵記憶部，  ２０５…検証用ビット列生成部，  ２０６…検証部，  ３，５…記録媒体（署名データ記録媒体），  ４，７…検証システム（署名検証システム），  ６…平文データ／補助データ記憶部
【図１】
2010171600.tif 000003
【図２】
2010171600.tif 000004
【図３】
2010171600.tif 000005
【図４】
2010171600.tif 000006
【図５】
2010171600.tif 000007
【図６】
2010171600.tif 000008
【図７】
2010171600.tif 000009
【図８】
2010171600.tif 000010
【図９】
2010171600.tif 000011
【図１０】
2010171600.tif 000012
【図１１】
2010171600.tif 000013
【図１２】
2010171600.tif 000014
【図１３】
2010171600.tif 000015