説明

長期署名検証用サーバ、及び署名検証用サーバ

【課題】秘密鍵や原本データをサーバ側に渡さずにサーバ側で長期署名データ/署名データを検証する。
【解決手段】端末は、原本データの所定関数による関数値と、当該原本データの署名データ(原本データの関数値を秘密鍵で暗号化した署名値、当該秘密鍵に対応する公開鍵の公開鍵証明書)を送信し、サーバは、署名値を公開鍵で復号化して関数値を取り出し、当該取り出した関数値と端末が送信してきた関数値を比べることにより原本データの正当性を判断する。長期署名である場合、サーバは、署名データを構成する情報を用いて長期署名を確認するための関数値を作成するための情報から原本データを除いた情報を作成して端末に送信する。端末は、当該情報に原本データを加えて所定関数による関数値を計算してサーバに送信し、サーバは当該関数値を用いて長期署名の正当性を検証する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、長期署名検証用サーバ、及び署名検証用サーバに関し、例えば、長期署名、又は署名の検証を行うものに関する。
【背景技術】
【0002】
電子データの真正を証明するために、電子データを秘密鍵で暗号化することにより電子署名を行い、当該秘密鍵に対応する公開鍵で電子データを復号化することにより検証する電子署名が広く利用されている。
電子データを公開鍵で復号化することにより、当該電子データは当該公開鍵に対応する秘密鍵で暗号化されたことを確認できるが、当該秘密鍵を有しているのは署名者であるので、当該電子データが当該署名者によるものであると認定することができる。例えるなら、秘密鍵は印鑑として機能し、公開鍵は印鑑証明書として機能している。
公開鍵は、認証局が発行する公開鍵証明書により配布され、配布を受けたものは当該証明書により公開鍵の真正を確認できるようになっている。
【0003】
ところで、電子署名は、署名などに用いた暗号アルゴリズムの危殆化などに対処するため有効期限が設定されている。
また、有効期限前であっても、署名者の都合で失効したり、秘密鍵の遺漏などによりルート証明書以下の全ての証明書が失効する場合もある。
そこで、この問題に対処するため、特許文献1に示されているように、電子署名の有効性を永続させるための電子署名フォーマット(以下、長期署名フォーマット)が規定されている。
この規定は、海外においては、RFC5126やETSI TS 101 733で定義され、日本では、JIS規格(JIS X 5092/5093)で定義されている。
【0004】
長期署名フォーマットは、図1に示したように、ES、STS、ES−T、検証情報、ES−XL、ATS(1st、2nd、・・・)から構成されている。これらの内容については、後ほど実施の形態で説明する。
図11は、従来の長期署名システム100の構成例を説明するための図である。
長期署名システム100は、クライアント側に設置された長期署名サーバ101と、外部ネットワーク102に存在するCAリポジトリ103、TSA104などから構成されている。
【0005】
まず、長期署名サーバ101は、署名対象となる電子データ(原本データのハッシュ値)を受け付け(ステップ5)、秘密鍵で電子署名してESを生成し(ステップ10)、これをTSA104に送信して署名タイムスタンプを付与してもらって(ステップ15)、ES−Tを出力する(ステップ20)。
次いで、長期署名サーバ101は、出力したES−Tを受け付けて(ステップ25)、CAリポジトリ103から失効情報を取得し(ステップ30)、当該失効情報が一定時間経過後に発行されたものか判断する(ステップ35)。これは、最新の失効情報を得るためである。
【0006】
次に、長期署名サーバ101は、証明書の認証パスを取得して(ステップ40)、失効情報と認証パスによる検証情報を付与する(ステップ45)。
そして、長期署名サーバ101は、ATSの元となる情報を生成して、これを電子署名すると共にTSA104でタイムスタンプを付与してATSを生成し(ステップ50)、ES−Aを出力する(ステップ55)。
【0007】
以上のようにして長期署名データを取得することができるが、この場合、ユーザ側に長期署名サーバ101を設置し、ユーザ側で運用管理を行わなくてはならないという問題があった。
また、長期署名データの利用率の見積が容易でないことや即時的な効果がユーザにとって実感しづらいため、初期導入コストがユーザの想定コストと合わず、長期署名システムを導入しづらいという問題があった。
【0008】
この問題に関しては、例えば、図12のように、第三者が長期署名サーバ101を運営し、ユーザはクライアント端末106から長期署名サーバ101にアクセスして長期署名データを作成してもらうという方法で対処することができる。
【0009】
しかし、この場合、ユーザは、電子署名に用いる秘密鍵を長期署名サーバ101に預ける他、長期署名データの署名対象となっている原本データ(社内文書データなど)を長期署名サーバ101に送信する必要があり、機密情報(秘密鍵、原本データ)を外部に出さなくてはならないという問題があった。
また、長期署名データの検証する場合も同様に検証用のサーバに機密情報を提供するか、又は、検証用のサーバを自社で備えるかする必要があった。
【先行技術文献】
【特許文献】
【0010】
【特許文献1】特表2003−533940号公報
【発明の概要】
【発明が解決しようとする課題】
【0011】
本発明は、秘密鍵や原本データをサーバ側に渡さずに、サーバ側で長期署名、又は署名の検証をすることを目的とする。
【課題を解決するための手段】
【0012】
(1)請求項1に記載の発明では、署名対象データと前記署名対象データを検証する検証情報、及び前記署名対象データと検証情報を所定期間検証する長期検証情報を用いて構成され、原本データの正当性を検証するための長期署名データを検証者端末から受信する長期署名データ受信手段と、前記長期署名データに含まれる所定の情報を抽出して長期検証情報作成用情報を作成し、当該作成した長期検証情報作成用情報を前記検証者端末に送信する長期検証情報作成用情報送信手段と、前記検証者端末から、前記送信した長期検証情報作成用情報に前記原本データを加えて所定の関数で計算した長期検証情報作成用関数値を受信する長期検証情報作成用関数値受信手段と、前記受信した長期検証情報作成用関数値を用いて前記長期検証情報を検証する長期検証情報検証手段と、を具備したことを特徴とする長期署名検証用サーバを提供する。
(2)請求項2に記載の発明では、前記検証情報を用いて前記署名対象データを検証する署名対象データ検証手段を具備し、前記長期検証情報検証手段は、前記署名対象データ検証手段が検証した後に前記長期検証情報を検証することを特徴とする請求項1に記載の長期署名検証用サーバを提供する。
(3)請求項3に記載の発明では、電子署名値と、当該署名値の生成に用いた秘密鍵に対応する公開鍵の公開鍵証明書を含む署名データを受信する署名データ受信手段と、原本データの所定関数による関数値を受信する関数値受信手段と、前記公開鍵証明書を用いて前記電子署名値を復号化し、当該復号化した値と前記受信した関数値を比べることにより前記受信した関数値の正当性を確認する関数値確認手段と、前記公開鍵証明書の正当性を検証する認証パスに係る証明書を用いて前記公開鍵証明書の正当性を確認する証明書確認手段と、を具備したことを特徴とする署名検証用サーバを提供する。
【発明の効果】
【0013】
本発明によれば、秘密鍵などを用いる処理をクライアント端末に分担させることにより、社外に持ち出すことが困難な秘密鍵や原本データをサーバ側に渡さずに、サーバ側で長期署名、又は署名を検証できる。
【図面の簡単な説明】
【0014】
【図1】本実施の形態の概要を説明するための図である。
【図2】長期署名システムの構成を説明するための図である。
【図3】長期署名フォーマットを説明するための図である。
【図4】クライアント端末と長期署名サーバが長期署名データを作成する手順を説明するためのフローチャートである。
【図5】ES作成処理を説明するためのフローチャートである。
【図6】ES−T作成処理を説明するためのフローチャートである。
【図7】ES−XL作成処理を説明するためのフローチャートである。
【図8】ES−A(1st)作成処理を説明するためのフローチャートである。
【図9】ES−A(2nd)を作成する手順を説明するためのフローチャートである。
【図10】長期署名データの検証処理を説明するためのフローチャートである。
【図11】従来の長期署名システムの構成例を説明するための図である。
【図12】従来例で、第三者が長期署名サーバを運営する場合を説明するための図である。
【発明を実施するための形態】
【0015】
(1)実施形態の概要
図1は、本実施の形態の概要を説明するための図である。
長期署名データは、ES、STS、検証情報、ATS(1st)、ATS(2nd)、・・・を所定の長期署名フォーマットに配置することにより構成されている。
これら長期署名データの要素のうち、秘密鍵と原本データを用いた処理が必要なのは、ESとATSである。
【0016】
長期署名システム1は、これら原本データと秘密鍵を必要とする処理は、クライアント端末3で行い、長期署名データを解析・生成する処理は、長期署名サーバ2で行うことにより、原本データと秘密鍵がクライアント端末3の内部に保持したまま長期署名データを長期署名サーバ2で生成することができる。
【0017】
より詳細には、クライアント端末3は、原本データに関してはハッシュ値を計算して長期署名サーバ2に送信することにより原本データをクライアント端末3に保持し、秘密鍵に関しては、長期署名サーバ2からESを作成するためのデータを送信してもらってこれに秘密鍵で電子署名することにより秘密鍵をクライアント端末3に保持する。
一方、長期署名サーバ2は、長期フォーマットの記述形式であるXMLの解析と生成を行う。
【0018】
このように、長期署名システム1では、長期署名データを作成する処理を、秘密鍵と原本データを用いる処理と、XMLの解析・生成を行う処理に分離し、前者をクライアント端末3に分担させ、後者を長期署名サーバ2に分担させることにより、秘密鍵と原本データをクライアント端末3に保持したまま、長期署名データの生成を長期署名サーバ2にアウトソースすることができる。
【0019】
(2)実施の形態の詳細
図2は、長期署名システム1の構成を説明するための図である。
長期署名システム1は、長期署名サーバ2、クライアント端末3、タイムスタンプサーバ5、リポジトリサーバ6、7などがインターネット4で通信可能に接続されて構成されている。
【0020】
長期署名サーバ2は、CPU(Central Processing Unit)21、ROM(Read Only Memory)22、記憶部23、入出力I/F24、RAM(Random Access Memory)25、表示部26、通信制御部27などから構成されている。
【0021】
CPU21は、記憶部23などに記憶されたプログラムに従って情報処理や長期署名サーバ2の各部の制御を行う中央処理装置である。
本実施の形態では、クライアント端末3やタイムスタンプサーバ5、リポジトリサーバ6、7と通信しながら長期署名データを作成する。
【0022】
ROM22は、リードオンリメモリであって、長期署名サーバ2が動作するための基本的なプログラムやパラメータなどが記憶されている。
RAM25は、ランダムアクセスメモリであって、長期署名サーバ2がクライアント端末3などと通信して長期署名データを作成するためのワーキングメモリなどを提供する。
【0023】
記憶部23は、例えば、ハードディスクなどの大容量の記憶装置を用いて構成されており、長期署名サーバ2を動作させるためのOS(Operating System)や長期署名データを生成するためのプログラムなどが記憶されている。
表示部26は、例えば、液晶やCRT(Cathode Ray Tube)などを用いた表示装置を備えており、長期署名サーバ2の運用担当者などが長期署名サーバ2を操作するための各種画面を表示する。
【0024】
入出力I/F24は、例えば、各種操作スイッチ、キーボード、マウスなどの入出力装置を備えており、運用担当者などは入出力I/F24から長期署名サーバ2を操作することができる。
通信制御部27は、インターネット4を介してクライアント端末3、タイムスタンプサーバ5、リポジトリサーバ6、7などと通信する。なお、インターネット4は、他の形態の通信網であってもよい。
長期署名サーバ2は、通信制御部27により、クライアント端末3から電子署名値や原本データのハッシュ値(以下、原本ハッシュ値)や公開鍵証明書などを受信することができる。
【0025】
クライアント端末3は、CPU31、ROM32、記憶部33、通信制御部34、RAM35、表示部36、入出力I/F37などから構成されている。
【0026】
CPU31は、記憶部33などに記憶されたプログラムに従って情報処理やクライアント端末3の各部の制御を行う中央処理装置である。
本実施の形態では、長期署名サーバ2との各種情報の送受信、秘密鍵による電子署名などを行う。
【0027】
ROM32は、リードオンリメモリであって、クライアント端末3が動作するための基本的なプログラムやパラメータなどが記憶されている。
RAM35は、ランダムアクセスメモリであって、例えば、クライアント端末3が長期署名サーバ2と通信しながら電子署名や原本ハッシュ値の作成を行う際にワーキングメモリを提供する。
【0028】
記憶部33は、例えば、ハードディスクなどの大容量の記憶装置を用いて構成されており、クライアント端末3を動作させるためのOSや電子署名を行うための秘密鍵、当該秘密鍵に対応する公開鍵の公開鍵証明書、長期署名対象となっている原本データなどが記憶されている。
原本データとしては、例えば、ワープロやテキストエディタなどで作成された電子文書のほか、画像データ、音声データなどの各種のデータファイルが可能である。
【0029】
また、クライアント端末3が長期署名データを作成するためのプログラム(JAVA(登録商標)などで作成されている)は、作成の度に長期署名サーバ2からダウンロードするように構成してもよいし、あるいは、予め記憶部33に記憶しておき、これを使用するように構成することもできる。
【0030】
表示部36は、例えば、液晶やCRTなどを用いた表示装置を備えており、クライアント端末3のユーザがクライアント端末3を操作するための各種画面を表示する。
【0031】
入出力I/F37は、例えば、キーボード、マウス、ICカードリーダライタなどの入出力装置を備えている。
ICカードリーダライタは、ICカードを接続してクライアント端末3とICカードの通信を仲介する。
ICカードは、CPU、ROM、RAM、EEPROM(Electrically Erasable and Programmable ROM)などを備えた情報処理装置であり、例えば、クライアント端末3を使用するユーザを認証するためのユーザ認証情報などが記憶されている。
また、秘密鍵や公開鍵証明書などをICカードに記憶させ、ICカードの秘密鍵を使って電子署名するようにクライアント端末3を構成することもできる。
【0032】
通信制御部34は、インターネット4を介して長期署名サーバ2との通信を行う。長期署名サーバ2へのハッシュ値の送信、電子署名値の送信などは、通信制御部34を用いて行われる。
【0033】
タイムスタンプサーバ5は、タイムスタンプを発行するサーバであり、TSA(Time Stamp Authority:タイムスタンプ局)に設置されている。
タイムスタンプサーバ5は、時刻配信局の配信する時刻によって補正される正確な時計を有しており、タイムスタンプ発行対象となる電子データを受信すると、これに当該時計による現在日時刻を付してタイムスタンプ用の秘密鍵で電子署名(暗号化)することによりタイムスタンプを発行する。
【0034】
リポジトリサーバ6は、TSA−CA(Time Stamp Authority Certificate Authority:タイムスタンプ認証局)に設置されたサーバであって、タイムスタンプの検証に用いる公開鍵証明書(タイムスタンプに用いた秘密鍵に対応する公開鍵の公開鍵証明書)の失効情報を提供する。
失効情報にリストアップされていない公開鍵証明書は失効していないため、これによって公開鍵証明書の有効性を確認し、当該有効な公開鍵証明書によってタイムスタンプの有効性を確認することができる。
【0035】
リポジトリサーバ7は、CA(Certificate Authority)に設置されたサーバであって、クライアント端末3の行った電子署名の検証に用いる公開鍵証明書(クライアント端末3の秘密鍵に対応する公開鍵の公開鍵証明書)の失効情報を提供する。
失効情報にリストアップされていない公開鍵証明書は失効していないため、これによって公開鍵証明書の有効性を確認し、当該有効な公開鍵証明書によってクライアント端末3の行った電子署名の有効性を確認することができる。
リポジトリサーバ6とリポジトリサーバ7が提供する失効情報は、定期・不定期(例えば、24時間ごと)に更新される。
【0036】
図3は、本実施の形態で使用する長期署名データのフォーマット(長期署名フォーマット)を説明するための図である。
本実施の形態の長期署名データは、XAdES(XML Advanced Electronic Signatures)の規定に従い、XML(Extensible Markup Language)言語を用いて記述されている。
【0037】
署名前XAdESデータは、クライアント端末3が電子署名を行う対象となる署名対象データを格納したXML要素であって、KeyInfo、署名対象プロパティ、SignedInfoの各要素から構成されている。署名前XAdESデータをクライアント端末3が電子署名することによりESが生成される。
【0038】
KeyInfoには、クライアント端末3が電子署名に用いた秘密鍵に対応する公開鍵の公開鍵証明書が設定されている。公開鍵証明書には、例えば、公開鍵、公開鍵の所有者、認証局、認証局の署名などが含まれている。
署名対象プロパティには、公開鍵証明書のハッシュ値が設定されている。
SignedInfoには、原本ハッシュ値、及び署名対象プロパティのハッシュ値(以下、署名対象プロパティハッシュ値)が設定されている。
【0039】
ESは、上記の署名前XAdESデータとSignatureValueを要素として構成されている。
SignatureValueには、SignedInfoをクライアント端末3が秘密鍵で署名した署名値が設定されている。
このように、クライアント端末3がSignedInfoに対して電子署名することにより、署名前XAdESデータに対する署名が行われる。
【0040】
ES−Tは、上記のESと署名タイムスタンプを要素として構成されている。
署名タイムスタンプには、ESに対して発行されたSTS(署名タイムスタンプ)が設定されている。STSは、タイムスタンプサーバ5において、SignatureValueのハッシュ値に現在日時刻を付与して、これをタイムスタンプサーバ5の秘密鍵で電子署名したものである。
【0041】
ES−XL(ES−XLong)は、上記のES−Tと検証情報を要素として構成されている。
検証情報は、証明書群と失効情報群を用いて構成されている。
証明書群は、クライアント端末3が署名に用いた秘密鍵の公開鍵証明書と、タイムスタンプサーバ5がタイムスタンプに用いた秘密鍵の公開鍵証明書の認証パス上の公開鍵証明書で構成されている。
この認証パスは、ルート認証局は自己署名証明書を発行し、そのルート認証局は子認証局に証明書を発行し、その子認証局は孫認証局に証明書を発行し、・・・、末端の認証局は、個人、証明書所有者に証明書を発行するという証明書信頼チェーンにおいて、公開鍵証明書の検証をルート認証局まで遡って確認するものである。
失効情報群は、公開鍵証明書の失効情報で構成されている。
【0042】
ES−A(1st)は、上記のES−XLとATS(1st)を要素として構成されている。
ATS(1st)(Archive Time Stamp:アーカイブタイムスタンプ)、第1世代のATSであって、ES−Tを検証する情報、原本ハッシュ値、クライアント端末3による電子署名、タイムスタンプサーバ5によるタイムスタンプ(STS)などから所定の方法で作成されたハッシュ値が含まれており、ATS(1st)によってES−XLの正当性を検証することができる。
【0043】
ES−A(2nd)は、ES−A(1st)とATS(2nd)を要素として構成されている。
ATS(2nd)は、第2世代のATSであって、ES−A(1st)を検証する情報、原本ハッシュ値、クライアント端末3による電子署名、タイムスタンプサーバ5によるタイムスタンプ(STS、ATS(1st))などから所定の方法で生成されたハッシュ値が含まれており、ATS(2nd)によってATS(1st)の正当性を検証することができる。
図示しないが、更に、ES−A(2nd)とATS(3rd)を要素とするES−A(3rd)、ES−A(3rd)とATS(4th)を要素とするES−A(4th)、・・・と更に世代を続けることができる。
【0044】
以上のように構成された長期署名データは、次のようにして作成される。
まず、ES−XLまで作成し、署名タイムスタンプと検証情報が有効なうちにATS(1st)を取得し、ES−A(1st)を構築する。
そして、ATS(1st)が有効性を失う前(タイムスタンプトークンの公開鍵証明書の有効期限切れや失効前、あるいは、関連する暗号アルゴリズムの危殆化前)に、ATS(2nd)を取得する。
以下、同様にして現在のATSが有効性を失う前に次世代のATSを取得していくことを繰り返す。
このようにして、ES−XLに対してATSが時系列的に付与され、最新の世代のATSが有効期限内である長期署名データが得られる。
このようにして作成された長期署名データの検証については、後ほど詳細に説明する。
【0045】
図4は、クライアント端末3と長期署名サーバ2が長期署名データを作成する手順を説明するためのフローチャートである。
なお、以下の処理は、CPU21とCPU31が所定のプログラムに従って行うものである。
まず、クライアント端末3と長期署名サーバ2は、協働してES作成処理を行う(ステップ100)。
【0046】
次に、長期署名サーバ2が、ES−T作成処理と(ステップ200)、ES−XL作成処理を行う(ステップ300)。
そして、クライアント端末3と長期署名サーバ2が協働してES−A(1st)作成処理を行う(ステップ400)。
このようにして長期署名データ(ES−A)が作成される。
そして、図示しないが、作成されたES−A(1st)は、有効なうちに、ATS(2nd)を付与してES−A(2nd)に更新され、以下、長期署名データの有効性が失われないように世代を重ねていく。
【0047】
長期署名データの作成手順は、大きく分けて、以上のようなフェーズから構成されているが、以下に、これら各フェーズの詳細な手順を説明する。
図5は、ステップ100のES作成処理を説明するためのフローチャートである。
まず、クライアント端末3が長期署名データを作成する度に必要なプログラム(以下の処理を行うツール)をダウンロードする場合は、処理に先立って長期署名サーバ2からプログラムをダウンロードして実行する。
クライアント端末3が、既に必要なプログラムを記憶している場合には、これを実行する。
【0048】
次に、クライアント端末3は、長期署名対象となる原本データの入力を受け付ける(ステップ105)。
これは、ユーザがクライアント端末3において、対象となる原本データのファイルを指定するなどして行われる。
次に、クライアント端末3は、署名に使用する秘密鍵に対応する公開鍵の公開鍵証明書の入力を受け付け、長期署名サーバ2に送信する(ステップ110)。
公開鍵証明書の入力は、ユーザがクライアント端末3において、使用する公開鍵証明書を指定するなどして行われる。
【0049】
長期署名サーバ2は、クライアント端末3から公開鍵証明書を受信すると(ステップ115)、署名前XAdESデータをXMLによって作成する(ステップ120)。
このようにして、長期署名サーバ2は、クライアント端末3から長期署名データの作成要求を受けると、XMLによる長期署名フォーマットをRAM25に作成し、以下、このフォーマットに必要なデータを設定していって長期署名データを完成させる。
【0050】
次に、クライアント端末3は、原本ハッシュ値を計算し、長期署名サーバ2に送信する(ステップ125)。
このように、クライアント端末3は、長期署名サーバ2に原本ハッシュ値を送信するため、原本データをクライアント端末3から外部に出す必要がない。
そして、長期署名サーバ2は、クライアント端末3から原本ハッシュ値を受信する(ステップ130)。
【0051】
長期署名サーバ2は、以上のようにして、クライアント端末3から、公開鍵証明書と原本ハッシュ値を受信すると、まず、署名前XAdESデータにKeyInfoのエリアを作成し、これにクライアント端末3から受信した公開鍵証明書を設定する(ステップ135)。
次に、長期署名サーバ2は、公開鍵証明書のハッシュ値を計算すると共に(以下、公開鍵証明書ハッシュ値)、署名前XAdESデータに署名対象プロパティのエリアを作成し、ここに公開鍵証明書ハッシュ値を設定する(ステップ140)。
【0052】
次に、長期署名サーバ2は、署名対象プロパティハッシュ値を計算し(ステップ145)、署名前XAdESデータにSignedInfoのエリアを作成して、ここに原本ハッシュ値と署名対象プロパティハッシュ値を設定する。
長期署名サーバ2は、このようにしてSignedInfoを作成すると、署名前XAdESデータからSignedInfoエリアを抽出してクライアント端末3に送信する(ステップ150)。
【0053】
なお、本実施の形態では、長期署名サーバ2は、SignedInfoエリアをクライアント端末3に送信しているが、変形例として、長期署名サーバ2は、SignedInfoエリアのハッシュ値を計算して当該ハッシュ値をクライアント端末3に送信するように構成することもできる。
この場合、クライアント端末3は、当該ハッシュ値を秘密鍵で暗号化するだけでよい。
このように、ハッシュ値の計算は、長期署名サーバ2とクライアント端末3の何れで行ってもよい。
【0054】
クライアント端末3は、長期署名サーバ2からSignedInfoを受信すると、SignedInfoのハッシュ値を計算する。そしてこのハッシュ値に秘密鍵で電子署名して署名値を作成し(即ち、SignedInfoのハッシュ値を秘密鍵で暗号化して暗号値を生成し)、当該電子署名値を長期署名サーバ2に送信する(ステップ155)。これによって、署名前XAdESデータがクライアント端末3の秘密鍵により電子署名される。
長期署名サーバ2は、クライアント端末3から署名値を受信すると、これを署名前XAdESデータに追加してESを完成させる(ステップ160)。
このように、長期署名サーバ2は、原本データと秘密鍵とクライアント端末3に保持したままESを作成することができる。
【0055】
図6は、ステップ200のES−T作成処理を説明するためのフローチャートである。
まず、長期署名サーバ2は、ステップ100で作成したESを処理対象として入力する(ステップ205)。この際に、ESを検証するように構成することもできる。
次に、長期署名サーバ2は、ESからSignatureValueエリアを抽出し(ステップ210)、SignatureValueのハッシュ値を計算する(ステップ215)。
【0056】
次いで、長期署名サーバ2は、SignatureValueのハッシュ値に対するタイムスタンプを要求するためのTSQ(Time−stamp Request)を生成し、タイムスタンプサーバ5に送信する(ステップ220)。
タイムスタンプサーバ5は、TSQを受信すると、現在日時刻の付与後、秘密鍵で署名してTST(Time Stamp Token)を生成する。
そして、タイムスタンプサーバ5は、発行したTSTを用いてTSR(Time−stamp Response)を生成し、長期署名サーバ2に送信する(ステップ225)。
より詳細に説明すると、TSRの中にはTSTが存在し、TSRから取り出したTSTが、STS(署名タイムスタンプ)やATS(アーカイブタイムスタンプ)などと呼ばれる。
【0057】
長期署名サーバ2は、タイムスタンプサーバ5からTSRを受信し、TSRからTSTを抽出する(ステップ230)。
そして、長期署名サーバ2は、ES−Tに署名タイムスタンプエリアを作成してTSTをSTS(署名タイムスタンプ)として設定し、ES−Tの作成を完了する(ステップ235)。
【0058】
図7は、ステップ300のES−XL作成処理を説明するためのフローチャートである。
まず、長期署名サーバ2は、ステップ200で作成したES−Tを処理対象として入力する(ステップ305)。
【0059】
次に、長期署名サーバ2は、ES−Tから必要な証明書情報を割り出して、次のように収集する。
まず、長期署名サーバ2は、クライアント端末3の公開鍵証明書、即ち、署名証明書を取得し(ステップ310)、更に、当該署名証明書のルート証明書を取得する(ステップ315)。
次いで、長期署名サーバ2は、署名タイムスタンプを証明するためのTSA証明書を取得し(ステップ320)、次いで、当該TSA証明書のルート証明書を取得する(ステップ325)。これら取得対象の証明書群は長期署名サーバ2に記憶されている。
【0060】
次に、長期署名サーバ2は、証明書群の各証明書から、クライアント端末3の公開鍵証明書やSTSの公開鍵証明書、これらを検証するための認証局の証明書などが失効リストにリストアップされていないことを確認するために必要な失効情報を割り出し、これらを次のように収集する。
【0061】
なお、署名証明書は、例えば、正当な署名鍵所有者が鍵を紛失したなどの理由で、認証局に対して失効申請が行われているのにもかかわらず、失効手続きの事務処理や失効情報公開タイミングの関係で、失効情報にその失効状態が登録されていない可能性がある。
このような場合、失効してから失効情報に登録されるまで時間を要するので、長期署名サーバ2は、署名タイムスタンプを取得した後、または、証明書群を作成した後、一定期間経過後(署名証明書を発行した認証局の運用ポリシーに基づく、例えば、24時間、あるいは数日)に失効情報を収集する。
【0062】
まず、長期署名サーバ2は、CAのリポジトリサーバ7にアクセスし、収集した署名証明書のCRL(Certificate Revocation List)を要求する(ステップ330)。
これに対し、リポジトリサーバ7は、長期署名サーバ2に署名証明書のCRLを送信する(ステップ335)。
ここで、CRLは、失効した証明書を一覧したリストであって、証明書とCRLを照合することにより証明書が有効であるか否かを判断するためのものである。
【0063】
次に、長期署名サーバ2は、リポジトリサーバ7に署名証明書のルート証明書のARL(Authority Revocation List)を要求する(ステップ340)。
これに対し、リポジトリサーバ7は、長期署名サーバ2に署名証明書のルート証明書のARLを送信する(ステップ345)。
ここで、ARLは、失効した自己署名証明書などのリストである。ルートのCAは、証明書信頼チェーンにおいて最上位に位置するため、ルートのCAは、自己を自己署名証明書にて証明する。そして、ルート証明書とARLを照合することによりルート証明書が有効であるか否かを判断することができる。
【0064】
署名証明書のCRLによって署名証明書の有効性が検証でき、署名証明書のルート証明書のARLによって署名証明書のルート証明書の有効性が検証でき、署名証明書、及び署名証明書のルート証明書の検証によりクライアント端末3による署名の真正性を検証することができる。
【0065】
次に、長期署名サーバ2は、TSA−CAのリポジトリサーバ6にアクセスし、TSA証明書のCRLを要求する(ステップ350)。
これに対し、リポジトリサーバ6は、長期署名サーバ2にTSA証明書のCRLを送信する(ステップ355)。
次に、長期署名サーバ2は、リポジトリサーバ6にTSA証明書のルート証明書のARLを要求する(ステップ360)。
これに対し、リポジトリサーバ6は、長期署名サーバ2にTSA証明書のルート証明書のARLを送信する(ステップ365)。
【0066】
TSA証明書のCRLによってTSA証明書の有効性が検証でき、TSA証明書のルート証明書のARLによってTSA証明書のルート証明書の有効性が検証でき、TSA証明書、及びTSA証明書のルート証明書の検証によりSTSの正当性を検証することができる。
【0067】
クライアント端末3は、以上のようにして、証明書群と失効情報群を収集すると、これらを用いて証明書信頼チェーンの階層による認証パスを構築し、これをES−Tに追加して、ES−XLを作成する(ステップ370)。
【0068】
図8は、ステップ400のES−A(1st)作成処理を説明するためのフローチャートである。
まず、長期署名サーバ2は、ステップ300で作成したES−XLを処理対象として入力する(ステップ405)。この際に、長期署名サーバ2が、ES−XLを検証するように構成することもできる。
次に、長期署名サーバ2は、長期署名データにATSエリアを作成する(ステップ410)。
【0069】
長期署名サーバ2は、ATSエリアを作成し、ES−A(1st)を作成する準備が整うと、準備完了通知をクライアント端末3に送信する(ステップ415)。
クライアント端末3は、当該通知を受信すると、原本データを読み込んで取得する(ステップ420)。
長期署名サーバ2は、クライアント端末3に準備完了通知を送信すると、ES−A(1st)用のハッシュ値対象データ作成用データを作成する(ステップ425)。
【0070】
具体的には、長期署名サーバ2は、ES−XLから、署名対象プロパティ、SignedInfo、SignatureValue、KeyInfo、STS、証明書群、失効情報群を抽出して、これらを所定のフォームに従って設定することにより結合し、ハッシュ値対象データ作成用データを生成する。
なお、このハッシュ値対象データ作成用データは、ハッシュ値対象データから原本データを除いたものである。
長期署名サーバ2は、署名値対象データ作成用データを作成すると、これをクライアント端末3に送信する(ステップ425)。
【0071】
クライアント端末3は、長期署名サーバ2からハッシュ値対象データ作成用データを受信すると、これにステップ420で読み込んだ原本データを追加し(ステップ430)、ハッシュ値対象データを作成する。
次に、クライアント端末3は、ハッシュ値対象データのハッシュ値を計算し、このハッシュ値を長期署名サーバ2に送信する(ステップ435)。
【0072】
長期署名サーバ2は、ハッシュ値対象データのハッシュ値を受信すると、これにタイムスタンプを要求するためのTSQを生成してタイムスタンプサーバ5に送信する(ステップ440)。
タイムスタンプサーバ5は、TSQを受信すると、TSQからハッシュ値対象データのハッシュ値を取り出し、これに現在日時刻を付与して秘密鍵で署名することによりTSTを生成する。
そして、タイムスタンプサーバ5は、TSTを用いてTSRを生成し、長期署名サーバ2に送信する(ステップ445)。
【0073】
長期署名サーバ2は、タイムスタンプサーバ5からTSRを受信すると(ステップ450)、これからTSTを抽出する(ステップ460)。
そして、長期署名サーバ2は、抽出したTSTをATS(1st)としてES−XLに追加し、ES−A(1st)を生成してクライアント端末3に送信する(ステップ465)。
クライアント端末3は、長期署名サーバ2からES−A(1st)を受信して記憶する(ステップ470)。
以上のようにして、原本データと秘密鍵(署名鍵)をクライアント端末3の内部に保持したまま、長期署名サーバ2で長期署名データ(ES−A(1st))を作成することができる。
【0074】
以上のようにして作成されたES−A(1st)は、クライアント側で保存されるが、ATS(1st)の有効性が失われる前に、ES−A(1st)にATS(2nd)を付与してES−A(2nd)に更新する必要がある。そこで、次にES−A(2nd)に更新する手順について説明する。
【0075】
図9は、ES−A(2nd)を作成する手順を説明するためのフローチャートである。
まず、クライアント端末3は、ES−A(1st)を長期署名サーバ2に送信する(ステップ505)。クライアント端末3でES−A(1st)が入力された際に、これを検証するように構成することもできる。
長期署名サーバ2は、クライアント端末3からES−A(1st)を受信する(ステップ510)。
そして、長期署名サーバ2は、ES−A(1st)からATS(1st)に必要な証明書情報を割り出して、これらを以下のように収集する。
【0076】
まず、長期署名サーバ2は、ATS(1st)のTSA証明書を取得し(ステップ515)、更に、TSA証明書のルート証明書を取得する(ステップ520)。これらの証明書は、長期署名サーバ2に記憶されている。
次に、長期署名サーバ2は、TSA−CAのリポジトリサーバ6にアクセスし、ATS(1st)のTSA証明書のCRLを要求し(ステップ525)、リポジトリサーバ6は、長期署名サーバ2にCRLを送信する(ステップ530)。
そして、長期署名サーバ2は、CRLを受信する。
【0077】
次に、長期署名サーバ2は、リポジトリサーバ6にATS(1st)のTSA証明書のルート証明書のARLを要求し(ステップ535)、リポジトリサーバ6は、長期署名サーバ2に当該ルート証明書のARLを送信する(ステップ540)。
そして、長期署名サーバ2は、ARLを受信する。
【0078】
次に、長期署名サーバ2は、これら証明書群(TSA証明書、TSA証明書のルート証明書)と失効情報群(CRL、ARL)から認証パスを構築する(ステップ545)。
次に、長期署名サーバ2は、収集した証明書群と失効情報群を、それぞれATS(1st)のcertificatesエリア及びcrlsエリアに追加してATS(1st)を更新する(ステップ550)。
次に、長期署名サーバ2は、ATS(1st)を更新したES−A(1st)にATS(2nd)用のエリアを作成し、ES−A(2nd)を作成する準備が整った旨の準備完了通知をクライアント端末3に送信する(ステップ555)。
【0079】
それ以降の処理は、図8のステップ420以下と同じであり、原本データと秘密鍵をクライアント端末3の内部に保持したまま長期署名サーバ2でES−A(2nd)を作成することができる。
即ち、長期署名サーバ2は、ハッシュ値対象データ作成用データを作成してクライアント端末3に送信する。
【0080】
そして、クライアント端末3は、ハッシュ値対象データ作成用データに原本データを加えてハッシュ値を計算し、当該ハッシュ値を長期署名サーバ2に送信する。
長期署名サーバ2は、当該ハッシュ値をタイムスタンプサーバ5に送信してタイムスタンプを発行してもらい、これをES−A(1st)に追加してES−A(2nd)を作成する。
ES−A(3rd)、ES−A(4th)など後の世代も同様にして作成される。
【0081】
以上に説明した本実施の形態により、次のような効果を得ることができる。
(1)長期署名データの作成手順を長期署名サーバ2の手順とクライアント端末3の手順に分離して行うプロトコルを実現することができる。
(2)署名はクライアント端末3で行うため、秘密鍵をクライアント端末3の外部に出す必要がない。
(3)原本データは、ハッシュ値を計算して長期署名サーバ2に送信するため、原本データをクライアント端末3の外部に出す必要がない。
(4)秘密鍵と原本データを用いる処理だけクライアント端末3で行い、XMLの解析やタイムスタンプ、検証情報の取得など、コンピュータの負荷が高い処理は長期署名サーバ2で行うため、クライアント端末3の負荷を小さくすることができる。
(5)例えば、大型設計図面や、音声・動画データのような数メガバイトを超えるような原本データであっても、長期署名サーバ2に送信するのは原本ハッシュ値などであるため、通信負荷が少なくて済む。
(6)秘密鍵と原本データをユーザ側に保持したまま、長期署名データの作成をアウトソースすることができ、ユーザ環境に長期署名システムを構築する必要がないため、ユーザが運用管理(ログ監視、失敗監視、リカバリ処理等)を行う必要がない。
(7)ユーザ環境に長期署名システムを構築しないため、ユーザ環境からタイムスタンプ及び失効情報を取得するためのネットワーク設定(IP、ポートを開く等)が必要ない。
(8)認証パスの取得のための署名証明書のルート証明書及びTSA証明書のルート証明書などは、長期署名サーバ2が有しているため、これらの情報をユーザ環境で保持する必要がない。そのため、例えば、TSAが認証局を変更する場合であっても、ユーザ環境で新しい認証局証明書(ルート証明書や中間証明書)を登録しなおす必要がない。
(9)タイムスタンプは、長期署名サーバ2が取得するため、クライアント端末3のユーザ側は、TSAと契約する必要がない。
(10)長期署名フォーマットのバージョンアップや暗号アルゴリズムの危殆化発生時には、長期署名サーバ2が対応し、ユーザ側が対応する必要がない。
(11)長期署名データの生成を長期署名サーバ2にアウトソースすることにより、例えば、長期署名システムは必要だが処理文書数が見積もれないため、初期コストをかけられない、長期署名システムを運用するための要員を確保できないため自社内にサーバシステムを持てない、秘密鍵、原本データは、社内から持ち出したくない、といった顧客の要望を満たすソリューションを提供することができる。
(12)長期署名フォーマットを利用することにより、電子署名の有効性を延長したり、暗号アルゴリズムの危殆化に対応することが可能となる。
(13)署名対象文書に対して、署名鍵で署名を行い、署名タイムスタンプを付与してES−Tを作成し、ES−Tに対して必要な検証情報(認証パス、及び失効情報)を収集・付与し、アーカイブタイムスタンプを付与してES−Aを作成する処理を機密を確保してクラウドで行うシステムを提供することができる。
(14)クライアント端末3の接続を長期署名サーバ2とし、タイムスタンプサーバ5、リポジトリサーバ6、リポジトリサーバ7と接続しないため、クライアント端末3の接続先を可能な限り少なくすることができ、接続先が多いことによるセキュリティホールの増大を防ぐことができる。
【0082】
ところで、以上に説明したクライアント端末3と長期署名サーバ2の処理は、(1)負荷の高い処理は長期署名サーバ2で行い、なるべくクライアント端末3の負荷を低減する、(2)クライアント端末3の通信先を少なくするため、クライアント端末3の通信先を長期署名サーバ2にする、という2つの要請を満たす一例であって、変形例として長期署名サーバ2の処理の一部をクライアント端末3で行うように構成することもできる。
【0083】
例えば、ステップ100のES作成処理(図4)では、全ての処理をクライアント端末3で行うことができる。
また、ステップ200のES−T作成処理では、タイムスタンプを取得する処理(ステップ220、225)以外の処理は、クライアント端末3で行うことができる。
この場合、クライアント端末3は、タイムスタンプ処理に必要なデータのみ長期署名サーバ2に送信し、長期署名サーバ2は、タイムスタンプサーバ5でこれに対するタイムスタンプを取得してクライアント端末3に送信する。
ここで、クライアント端末3の通信先を長期署名サーバ2とするのは、クライアント端末3の通信先をなるべく少なくしたいためである。
【0084】
更に、ステップ300のES−XL作成処理では、失効情報をリポジトリサーバ6、リポジトリサーバ7から収集する処理(ステップ330〜365)以外の処理は、クライアント端末3で行うことができる(失効情報は外部から取得する必要があるため)。
この場合、クライアント端末3が証明書の管理を行う必要があり、また、ES−XL作成処理の開始にあたって、必要な失効情報が取得できるか否かの確認もクライアント端末3で行う必要があり、その際は、失効情報取得のチェックを長期署名サーバ2に依頼する必要がある。
そして、その場合、クライアント端末3は、必要となる失効情報の取得先のURL(Uniform Resource Locators)などを長期署名サーバ2に送信し、長期署名サーバ2は、これを用いて失効情報を収集してクライアント端末3に送信する。
【0085】
また、ステップ400のES−A(1st)作成処理では、タイムスタンプを取得する処理(ステップ440、445)以外の処理は、クライアント端末3で行うことができる。
この場合、クライアント端末3は、タイムスタンプ処理に必要なデータのみ長期署名サーバ2に送信し、長期署名サーバ2は、タイムスタンプサーバ5でこれに対するタイムスタンプを取得してクライアント端末3に送信する。
ここで、クライアント端末3の通信先を長期署名サーバ2とするのは、クライアント端末3の通信先をなるべく少なくしたいためである。
【0086】
更に、図9のES−A更新処理では、リポジトリサーバ6から失効情報を収集する処理(ステップ525〜540)と、図で省略されているタイムスタンプを取得する処理(ステップ440、445)以外の処理は、クライアント端末3で行うことができる。
この場合、クライアント端末3が証明書の管理を行う必要があり、また、ES−A更新処理の開始にあたって、必要な失効情報が取得できるか否かの確認もクライアント端末3で行う必要があり、その際は、失効情報取得のチェックを長期署名サーバ2に依頼する必要がある。
そして、その場合、クライアント端末3は、必要となる失効情報の取得先のURL(Uniform Resource Locators)などを長期署名サーバ2に送信し、長期署名サーバ2は、これを用いて失効情報を収集してクライアント端末3に送信する。
【0087】
以上説明した本実施の形態により、次の構成を得ることができる。
長期署名システム1において、長期署名サーバ2は、長期署名用サーバとして機能し、クライアント端末3は、長期署名用端末といて機能している。
クライアント端末3が秘密鍵でSignedInfoに署名することにより署名前XAdESデータに署名を付すため、署名前XAdESデータ、あるいはSignedInfoは、署名対象データとして機能している。
また、SignedInfoに対する署名に関しては、SignedInfoをクライアント端末3に送信し、クライアント端末3でSignedInfoのハッシュ値を計算して当該ハッシュ値に署名してもよいし、あるいは、長期署名サーバ2がSignedInfoのハッシュ値を計算してクライアント端末3に送信し、クライアント端末3が当該ハッシュ値に署名してもよい。
前者の場合は、SignedInfoが署名用データとして機能しており、後者の場合は、SignedInfoのハッシュ値が署名用データとして機能している。
長期署名サーバ2は、署名前XAdESデータを生成してSignedInfoに署名するための署名用データ(SignedInfo、又はSignedInfoのハッシュ値)をクライアント端末3に送信するため、署名対象データを取得する署名対象データ取得手段と、前記取得した署名対象データに電子署名するための署名用データを長期署名用端末に送信する署名用データ送信手段を備えている。
そして、長期署名サーバ2は、クライアント端末3から、SignedInfoの署名値を受信するため、前記長期署名用端末から、前記送信した署名用データを用いて生成された前記署名対象データの電子署名値を受信する署名値受信手段を備えており、署名前XAdESデータと署名値に対してタイムスタンプサーバ5にTSTを用いてSTSを発行してもらうため、前記受信した電子署名値に対してタイムスタンプを取得するタイムスタンプ取得手段を備えている。
ES−Tは、基本署名データとして機能しており、長期署名サーバ2は、署名前XAdESデータ、署名値、及びSTSからES−Tを生成するため、長期署名サーバ2は、少なくとも、前記取得した署名対象データ(署名前XAdESデータ)、前記受信した電子署名値(署名値)、及び前記取得したタイムスタンプ(STS)を用いて基本署名データ(ES−T)を生成する署名データ生成手段を備えている。
【0088】
また、長期署名サーバ2は、クライアント端末3から原本データハッシュ値と署名に用いる秘密鍵に対応する公開鍵の公開鍵証明書を受信し、これらを用いてXAdESデータを生成するため、前記長期署名用端末から、原本データを所定の関数(ハッシュ関数)で計算した関数値(原本ハッシュ値)、及び前記電子署名の生成に用いる秘密鍵に対応する公開鍵を含む公開鍵証明書を受信する関数値証明書受信手段を具備し、前記署名対象データ取得手段は、少なくとも、前記受信した関数値(原本ハッシュ値)、及び前記公開鍵証明書を用いて署名対象データ(XAdESデータ)を生成している。
【0089】
更に、長期署名サーバ2は、クライアント端末3から受信した公開鍵証明書やSTSの公開鍵証明書の検証情報として証明書群と失効情報群を収集してES−Tに加えてES−XLを生成するため、前記受信した公開鍵証明書、及び前記タイムスタンプを検証する検証情報を取得する検証情報取得手段を具備し、前記署名データ生成手段は、前記取得した検証情報を前記基本署名データ(ES−T)に加えている。
【0090】
長期署名サーバ2は、ES−XLにATS(1st)を追加してES−A(1st)を生成し、ATSは、有効期間の間、ES−XLを検証する情報であるため、前記基本署名データ(ES−XL)を所定期間検証するための長期検証情報(ATS(1st))を取得する長期検証情報取得手段を具備し、前記署名データ生成手段は、前記取得した長期検証情報を前記生成した基本署名データに加えて長期署名データ(ES−A(1st))を生成している。
【0091】
長期署名サーバ2は、ATS(1st)を作成するに際して、ハッシュ値対象データ作成データを作成してクライアント端末3に送信し、クライアント端末3がこれに原本データを加えてハッシュ値を計算し、長期署名サーバ2がこれにタイムスタンプを付与してATS(1st)を取得するため、長期検証情報を作成するための長期検証情報作成用情報(ハッシュ値対象データ作成データ)を前記長期署名用端末に送信する長期検証情報作成用情報送信手段と、前記長期署名用端末から、前記長期検証情報作成用情報に前記原本データを加えて所定関数で計算した長期検証情報作成用関数値(ハッシュ値)を受信する長期検証情報作成用関数値受信手段と、を具備し、前記長期検証情報取得手段は、前記受信した長期検証情報作成用関数値にタイムスタンプを付与して前記長期検証情報(ATS(1st))を取得している。
【0092】
また、長期署名サーバ2は、有効期間を延長するべき長期署名データをクライアント端末3から受信して、長期署名データの最新のATSを抽出して解析することから、長期署名用端末から長期署名データを受信する長期署名データ受信手段と、前記受信した長期署名データから(最新の)長期検証情報を抽出する長期検証情報抽出手段を備えている。
そして、長期署名サーバ2は、最新のATSを所定期間検証するための次世代のATSを取得して長期署名データに追加し、これによって長期署名データの有効期間を延長するため、前記抽出した長期検証情報(最新のATS)を所定期間検証するための再度の長期検証情報(次世代のATS)を取得する再度の長期検証情報取得手段を備え、前記署名データ生成手段は、前記受信した長期署名データ(最新のATSが付された長期署名データ)に前記取得した再度の長期検証情報(次世代のATS)を加えて当該長期署名データを更新している。
【0093】
より詳細には、長期署名サーバ2は、次世代のATSを作成するための情報を生成してクライアント端末3に送信し(ステップ510〜ステップ555)、クライアント端末3は、これに原本データを加えてハッシュ値を計算し、その関数値を長期署名サーバ2に送信するため、長期署名サーバ2は、再度の長期検証情報を作成するための再度の長期検証情報作成用情報を前記長期署名用端末に送信する再度の長期検証情報作成用情報送信手段と、前記送信した再度の長期検証情報作成用情報に前記原本データを加えて所定関数で計算した再度の長期検証情報作成用関数値を前記長期署名用端末から受信する再度の長期検証情報作成用関数値受信手段を備えている。
そして、長期署名サーバ2は、クライアント端末3から受信したハッシュ値(関数値)にタイムスタンプを付与して次世代のATSを取得するため、前記再度の長期検証情報取得手段は、前記受信した再度の長期検証情報作成用関数値にタイムスタンプを付与して前記再度の長期検証情報を取得している。
【0094】
また、署名前XAdESデータの署名対象プロパティには公開鍵証明書ハッシュ値が含まれているメタデータ、前記署名対象データは、前記受信した公開鍵証明書を所定の関数で計算した関数値(公開鍵証明書ハッシュ値)を含んでいる。
【0095】
また、クライアント端末3が長期署名データ作成の度に必要なプログラムを長期署名サーバ2からダウンロードする形態では、長期署名サーバ2は、前記長期署名用端末に、秘密鍵を用いて電子署名する電子署名機能と、前記秘密鍵に対応する公開鍵の公開鍵証明書を長期署名用サーバに送信する公開鍵証明書送信機能と、原本データを所定の関数で計算した関数値を長期署名用サーバに送信する関数値送信機能と、前記送信した公開鍵証明書と前記関数値を用いて生成された署名対象データに電子署名するための署名用データ(SignedInfo、又はSignedInfoのハッシュ値)を前記長期署名用サーバから受信する署名用データ受信機能と、前記受信した署名用データを用いて前記署名対象データに前記電子署名機能で電子署名し、当該電子署名による電子署名値を前記長期署名用サーバに送信する署名値送信機能と、をコンピュータで実現する長期署名用端末プログラムを送信するプログラム送信手段を備えている。
【0096】
一方、クライアント端末3は、秘密鍵を用いて電子データを暗号化することにより電子署名し、当該秘密鍵に対応する公開鍵の公開鍵証明書を長期署名サーバ2に送信し、また、原本ハッシュ値を計算して長期署名サーバ2に送信するため、秘密鍵を用いて電子署名する電子署名手段と、前記秘密鍵に対応する公開鍵の公開鍵証明書を長期署名用サーバに送信する公開鍵証明書送信手段と、原本データを所定の関数(ハッシュ関数)で計算した関数値(原本ハッシュ値)を長期署名用サーバに送信する関数値送信手段を備えている。
そして、クライアント端末3は、SignedInfo、又はSignedInfoのハッシュ値を長期署名サーバ2から受信してSignedInfoのハッシュ値に秘密鍵で電子署名し、当該電子署名による署名値を長期署名サーバ2に送信するため、前記送信した公開鍵証明書と前記関数値を用いて生成された署名対象データ(署名前XAdESデータ)に電子署名するための署名用データ(SignedInfo、又はSignedInfoのハッシュ値)を前記長期署名用サーバから受信する署名用データ受信手段と、前記受信した署名用データを用いて前記署名対象データに前記電子署名手段で電子署名し、当該電子署名による電子署名値を前記長期署名用サーバに送信する署名値送信手段を備えている。
【0097】
また、ハッシュ値対象データ作成用データは、長期検証情報(ATS)を作成するための長期検証情報作成用情報として機能しており、クライアント端末3は、長期署名サーバ2がATS(1st)を作成するに際して、長期署名サーバ2からハッシュ値対象データ作成用データを受信するため、前記長期署名用サーバから、前記送信した関数値、公開鍵証明書、電子署名値を含む基本署名データを所定期間検証する長期検証情報を作成するための長期検証情報作成用情報(ハッシュ値対象データ作成用データ)を受信する長期検証情報作成用情報受信手段を備えている。
そして、クライアント端末3は、ハッシュ値対象データ作成用データに原本データを追加してハッシュ値を計算し、そのハッシュ値を長期署名サーバ2に送信するため、前記受信した長期検証情報作成用情報に、前記原本データを加え、当該原本データを加えた長期検証情報作成用情報を所定関数(ハッシュ関数)によって計算して長期検証情報作成用関数値(ハッシュ値)を生成する長期検証情報作成用関数値生成手段と、前記生成した長期検証情報作成用関数値を前記長期署名用サーバに送信する長期検証情報作成用関数値送信手段を備えている。
【0098】
また、クライアント端末3は、有効期間を延長する長期署名データを長期署名サーバ2に送信し、最新の世代のATSを検証する次世代のATSを作成するための情報(ハッシュ値対象データ作成用データ)を長期署名サーバ2から受信する。
そのため、クライアント端末3は、前記送信した関数値、公開鍵証明書、電子署名値を含む基本署名データ、及びこれらを所定期間検証する長期検証情報を含む長期署名データ(有効期間延長対象の長期署名データ)を前記長期署名用サーバに送信する長期署名データ送信手段と、前記長期署名用サーバから、前記送信した長期署名データの長期検証情報を所定期間検証する再度の長期検証情報(次世代のATS)を作成するための再度の長期検証情報作成用情報(次世代のATS用のハッシュ値対象データ作成用データ)を受信する再度の長期検証情報作成用情報受信手段を備えている。
そして、クライアント端末3は、このハッシュ値対象データ作成用データに原本データを加えてハッシュ値を計算し、当該ハッシュ値を長期署名サーバ2に送信するため、前記受信した再度の長期検証情報作成用情報に、前記原本データを加え、当該原本データを加えた再度の長期検証情報作成用情報を所定関数(ハッシュ関数)によって計算して再度の長期検証情報作成用関数値(次世代ATS用のハッシュ値)を生成する再度の長期検証情報作成用関数値生成手段と、前記生成した再度の長期検証情報作成用関数値を前記長期署名用サーバに送信する再度の長期検証情報作成用関数値送信手段を備えている。
【0099】
次に、図10のフローチャートを用いて長期署名データの検証方法について説明する。
以下の検証者端末は、長期署名データと原本データを取得して、長期署名データを用いて原本データを検証するユーザの端末であって、ハードウェア的な構成はクライアント端末3と同じである。
例えば、甲が作成した長期署名データと原本データを乙が受け取り、乙が検証者端末でこれを検証する場合が想定される。
【0100】
検証者端末は、長期署名データと原本データを記憶している。
まず、検証者端末は、長期署名データを長期署名サーバ2に送信し(ステップ605)、長期署名サーバ2は、これを受信する(ステップ610)。
次に、検証者端末は、原本データのハッシュ値を計算して長期署名サーバ2に送信し(ステップ615)、長期署名サーバ2は、これを受信する(ステップ620)。
【0101】
次に、長期署名サーバ2は、原本ハッシュ値を検証する(ステップ625)。
この処理は、検証者端末から送信された原本ハッシュ値と、長期署名データのXAdES内の原本ハッシュ値を比較し、両者が一致することを確認することにより行われる。
次に、長期署名サーバ2は、公開鍵証明書(署名証明書)の検証を行う(ステップ630)。
この検証は、検証情報に含まれる証明書群、及び失効情報群を用いて、認証パスがつながること、及び認証パス上の証明書が失効していなかったことを確認することにより行われる。
【0102】
次に、長期署名サーバ2は、署名値を検証する(ステップ635)。
この検証は、SignatureValueの署名値を公開鍵証明書から取り出した公開鍵で復号化すると共に、SignedInfoのハッシュ値を計算し、当該復号化した値とハッシュ値が一致することを確認することにより行われる。
次に、長期署名サーバ2は、STSを検証する(ステップ640)。
この検証は、SignatureValueのハッシュ値を計算し、これと、STSに記載されているハッシュ値が一致することを確認することにより行われる。
【0103】
次に、長期署名サーバ2は、STS証明書(署名タイムスタンプ証明書)を検証する(ステップ645)。
この検証は、TSA証明書でTSA署名値を復号して確認するほか、検証情報に含まれる証明書群、及び失効情報群を用いて、STS証明書の認証パスがつながること、及び認証パス上の証明書が失効していなかったことを確認することにより行われる。
【0104】
次に、長期署名サーバ2は、ES−XLに含まれるデータからATSの対象データに原本データが結合される前のデータを作成してハッシュ値対象データ作成用データを作成し、これを検証者端末に送信する(ステップ650)。
【0105】
検証者端末は、ハッシュ値対象データ作成用データを受信すると、これに原本データを結合して追加し、ハッシュ値対象データを作成する(ステップ655)。
次に、検証者端末は、ハッシュ値対象データのハッシュ値を計算して長期署名サーバ2に送信する(ステップ660)。
【0106】
長期署名サーバ2は、検証者端末から当該ハッシュ値を受信すると、これとATS(1st)に記載されているハッシュ値が一致することを確認することによりATS(1st)のハッシュ値を検証する(ステップ665)。
次に、長期署名サーバ2は、ATS(1st)の証明書の認証パスを作成するための証明書(ルート証明書)を自サーバ内から取得する(ステップ670)。
【0107】
次に、長期署名サーバ2は、当該認証パス上の証明書の失効情報をリポジトリサーバ6から取得する(ステップ675、680)。
そして、長期署名サーバ2は、認証パスがつながること、認証パス上の証明書が失効していないことを確認することによりATS(1st)の証明書の検証を行う(ステップ685)。
【0108】
次に、長期署名サーバ2は、その他、XAdESの検証を行う(ステップ690)。
この検証は、各証明書、各失効情報、各タイムスタンプ間の時刻の整合性が取れることの確認、フォーマットの整合性の確認などにより行われる。
長期署名サーバ2は、以上の検証による検証結果を生成して検証者端末に送信する(ステップ695)。
そして、検証者端末は、長期署名サーバ2から検証結果を受信して検証者に提示する(ステップ700)。
なお、ATSがATS(2nd)、ATS(3rd)と更に下の世代が存在する場合も同様にして検証する。
【0109】
以上のように、上の検証方法によると、検証者は原本データを検証者端末に保持したまま長期署名サーバ2で長期署名データの検証を行うことができる。
そのため、例えば、甲が原本データと長期署名データを乙に提供し、原本データを甲乙以外の者に渡したくない場合に、乙は原本データを長期署名サーバ2に提供せずに長期署名データによる原本データの正当性を確認することができる。
【0110】
また、例え、ES−Tの生成で用いたアルゴリズムが危殆化したとしてもATS(1st)の生成に用いたアルゴリズムが危殆化するまではES−A(1st)の証拠性は失われない。
そして、ATS(1st)の生成に用いたアルゴリズムが危殆化する可能性がある場合は、更に最新のアルゴリズムでATS(2nd)を付与すれば証拠性は失われない。
以降、最新のアルゴリズムで世代を重ねていくことにより証拠性を未来に渡って維持することができる。
【0111】
以上に説明した検証方法により、次の構成を得ることができる。
署名対象データと前記署名対象データを検証する検証情報、及び前記署名対象データと検証情報を所定期間検証する長期検証情報を含む長期検証情報を用いて構成され、原本データの正当性を検証するための長期署名データを検証者端末から受信する長期署名データ受信手段と、前記署名対象データに含まれる所定の情報を抽出して長期検証情報作成用情報を作成し、当該作成した長期検証情報作成用情報を前記検証者端末に送信する長期検証情報作成用情報送信手段と、前記検証者端末から、前記送信した長期検証情報作成用情報に前記原本データを加えて所定の関数で計算した長期検証情報作成用関数値を受信する長期検証情報作成用関数値受信手段と、前記受信した長期検証情報作成用関数値を用いて前記長期検証情報を検証する長期検証情報検証手段と、を具備したことを特徴とする長期署名検証用サーバ(第1の構成)。
前記検証情報を用いて前記署名対象データを検証する署名対象データ検証手段を具備し、前記長期検証情報検証手段は、前記署名対象データ検証手段が検証した後に前記長期検証情報を検証することを特徴とする第1の構成の長期署名検証用サーバ(第2の構成)。
【0112】
このように、本実施の形態は、原本データをサーバ側に渡さずにサーバ側で原本データに対する署名を検証することができる。
この場合、端末は、原本データの所定関数による関数値と、当該原本データの署名データ(原本データの関数値を秘密鍵で暗号化した署名値、当該秘密鍵に対応する公開鍵の公開鍵証明書)を送信し、サーバは、署名値を公開鍵で復号化して関数値を取り出し、当該取り出した関数値と端末が送信してきた関数値を比べることにより原本データ(関数値が正当なら原本データも正当)の正当性を判断すると共に、認証パスに係る証明書を用いて公開鍵証明書の正当性を確認する。
更に、署名データが長期署名である場合には、サーバは、署名データを構成する情報を用いて長期署名を確認するための関数値を作成するための情報から原本データを除いた情報を作成して端末に送信する。
これに対し、端末は、当該情報に原本データを加えて所定関数による関数値を計算してサーバに送信し、サーバは当該関数値を用いて長期署名の正当性を検証する。
なお、本実施形態として次の要に構成することも可能である。
(構成1)
署名対象データを取得する署名対象データ取得手段と、
前記取得した署名対象データに電子署名するための署名用データを長期署名用端末に送信する署名用データ送信手段と、
前記長期署名用端末から、前記送信した署名用データを用いて生成された前記署名対象データの電子署名値を受信する署名値受信手段と、
前記受信した電子署名値に対してタイムスタンプを取得するタイムスタンプ取得手段と、
少なくとも、前記取得した署名対象データ、前記受信した電子署名値、及び前記取得したタイムスタンプを用いて基本署名データを生成する署名データ生成手段と、
を具備したことを特徴とする長期署名用サーバ。
(構成2)
前記長期署名用端末から、原本データを所定の関数で計算した関数値、及び前記電子署名値の生成に用いる秘密鍵に対応する公開鍵を含む公開鍵証明書を受信する関数値証明書受信手段を具備し、
前記署名対象データ取得手段は、少なくとも、前記受信した関数値、及び前記公開鍵証明書を用いて署名対象データを生成することにより前記署名対象データを取得することを特徴とする構成1に記載の長期署名用サーバ。
(構成3)
前記受信した公開鍵証明書、及び前記タイムスタンプを検証する検証情報を取得する検証情報取得手段を具備し、
前記署名データ生成手段は、前記取得した検証情報を前記基本署名データに加えることを特徴とする構成2に記載の長期署名用サーバ。
(構成4)
前記基本署名データを所定期間検証するための長期検証情報を取得する長期検証情報取得手段を具備し、
前記署名データ生成手段は、前記取得した長期検証情報を前記生成した基本署名データに加えて長期署名データを生成することを特徴とする構成3に記載の長期署名用サーバ。
(構成5)
長期検証情報を作成するための長期検証情報作成用情報を前記長期署名用端末に送信する長期検証情報作成用情報送信手段と、
前記送信した長期検証情報作成用情報に前記原本データを加えて所定関数で計算した長期検証情報作成用関数値を前記長期署名用端末から受信する長期検証情報作成用関数値受信手段と、
を具備し、
前記長期検証情報取得手段は、前記受信した長期検証情報作成用関数値にタイムスタンプを付与して前記長期検証情報を取得することを特徴とする構成4に記載の長期署名用サーバ。
(構成6)
長期署名用端末から長期署名データを受信する長期署名データ受信手段と、
前記受信した長期署名データから長期検証情報を抽出する長期検証情報抽出手段と、
前記抽出した長期検証情報を所定期間検証するための再度の長期検証情報を取得する再度の長期検証情報取得手段と、
を具備し、
前記署名データ生成手段は、前記受信した長期署名データに前記取得した再度の長期検証情報を加えて当該長期署名データを更新することを特徴とする構成4、又は構成5に記載の長期署名用サーバ。
(構成7)
再度の長期検証情報を作成するための再度の長期検証情報作成用情報を前記長期署名用端末に送信する再度の長期検証情報作成用情報送信手段と、
前記送信した再度の長期検証情報作成用情報に前記原本データを加えて所定関数で計算した再度の長期検証情報作成用関数値を前記長期署名用端末から受信する再度の長期検証情報作成用関数値受信手段と、
を具備し、
前記再度の長期検証情報取得手段は、前記受信した再度の長期検証情報作成用関数値にタイムスタンプを付与して前記再度の長期検証情報を取得することを特徴とする構成6に記載の長期署名用サーバ。
(構成8)
前記署名対象データは、前記受信した公開鍵証明書を所定の関数で計算した関数値を含んでいることを特徴とする構成1から構成7までのうちの何れか1の構成に記載の長期署名用サーバ。
(構成9)
前記長期署名用端末に、
秘密鍵を用いて電子署名する電子署名機能と、
前記秘密鍵に対応する公開鍵の公開鍵証明書を長期署名用サーバに送信する公開鍵証明書送信機能と、
原本データを所定の関数で計算した関数値を長期署名用サーバに送信する関数値送信機能と、
前記送信した公開鍵証明書と前記関数値を用いて生成された署名対象データに電子署名するための署名用データを前記長期署名用サーバから受信する署名用データ受信機能と、
前記受信した署名用データを用いて前記署名対象データに前記電子署名機能で電子署名し、当該電子署名による電子署名値を前記長期署名用サーバに送信する署名値送信機能と、
をコンピュータで実現する長期署名用端末プログラムを送信するプログラム送信手段を具備したことを特徴とする構成1から構成8に記載の長期署名用サーバ。
(構成10)
秘密鍵を用いて電子署名する電子署名手段と、
前記秘密鍵に対応する公開鍵の公開鍵証明書を長期署名用サーバに送信する公開鍵証明書送信手段と、
原本データを所定の関数で計算した関数値を長期署名用サーバに送信する関数値送信手段と、
前記送信した公開鍵証明書と前記関数値を用いて生成された署名対象データに電子署名するための署名用データを前記長期署名用サーバから受信する署名用データ受信手段と、
前記受信した署名用データを用いて前記署名対象データに前記電子署名手段で電子署名し、当該電子署名による電子署名値を前記長期署名用サーバに送信する署名値送信手段と、
を具備したことを特徴とする長期署名用端末。
(構成11)
前記長期署名用サーバから、前記送信した関数値、公開鍵証明書、電子署名値を含む基本署名データを所定期間検証する長期検証情報を作成するための長期検証情報作成用情報を受信する長期検証情報作成用情報受信手段と、
前記受信した長期検証情報作成用情報に、前記原本データを加え、当該原本データを加えた長期検証情報作成用情報を所定関数によって計算して長期検証情報作成用関数値を生成する長期検証情報作成用関数値生成手段と、
前記生成した長期検証情報作成用関数値を前記長期署名用サーバに送信する長期検証情報作成用関数値送信手段と、
を具備したことを特徴とする構成10に記載の長期署名用端末。
(構成12)
前記送信した関数値、公開鍵証明書、電子署名値を含む基本署名データ、及びこれらを所定期間検証する長期検証情報を含む長期署名データを前記長期署名用サーバに送信する長期署名データ送信手段と、
前記長期署名用サーバから、前記送信した長期署名データの長期検証情報を所定期間検証する再度の長期検証情報を作成するための再度の長期検証情報作成用情報を受信する再度の長期検証情報作成用情報受信手段と、
前記受信した再度の長期検証情報作成用情報に、前記原本データを加え、当該原本データを加えた再度の長期検証情報作成用情報を所定関数によって計算して再度の長期検証情報作成用関数値を生成する再度の長期検証情報作成用関数値生成手段と、
前記生成した再度の長期検証情報作成用関数値を前記長期署名用サーバに送信する再度の長期検証情報作成用関数値送信手段と、
を具備したことを特徴とする構成11に記載の長期署名用端末。
(構成13)
秘密鍵を用いて電子署名する電子署名機能と、
前記秘密鍵に対応する公開鍵の公開鍵証明書を長期署名用サーバに送信する公開鍵証明書送信機能と、
原本データを所定の関数で計算した関数値を長期署名用サーバに送信する関数値送信機能と、
前記送信した公開鍵証明書と前記関数値を用いて生成された署名対象データに電子署名するための署名用データを前記長期署名用サーバから受信する署名用データ受信機能と、
前記受信した署名用データを用いて前記署名対象データに前記電子署名機能で電子署名し、当該電子署名による電子署名値を前記長期署名用サーバに送信する署名値送信機能と、
をコンピュータで実現する長期署名用端末プログラム。
(構成14)
署名対象データと前記署名対象データを検証する検証情報、及び前記署名対象データと検証情報を所定期間検証する長期検証情報を含む長期検証情報を用いて構成され、原本データの正当性を検証するための長期署名データを検証者端末から受信する長期署名データ受信手段と、
前記長期署名データに含まれる所定の情報を抽出して長期検証情報作成用情報を作成し、当該作成した長期検証情報作成用情報を前記検証者端末に送信する長期検証情報作成用情報送信手段と、
前記検証者端末から、前記送信した長期検証情報作成用情報に前記原本データを加えて所定の関数で計算した長期検証情報作成用関数値を受信する長期検証情報作成用関数値受信手段と、
前記受信した長期検証情報作成用関数値を用いて前記長期検証情報を検証する長期検証情報検証手段と、を具備したことを特徴とする長期署名検証用サーバ。
(構成15)
前記検証情報を用いて前記署名対象データを検証する署名対象データ検証手段を具備し、
前記長期検証情報検証手段は、前記署名対象データ検証手段が検証した後に前記長期検証情報を検証することを特徴とする構成14に記載の長期署名検証用サーバ。
(構成16)
電子署名値と、当該署名値の生成に用いた秘密鍵に対応する公開鍵の公開鍵証明書を含む署名データを受信する署名データ受信手段と、
原本データの所定関数による関数値を受信する関数値受信手段と、
前記公開鍵証明書を用いて前記電子署名値を復号化し、当該復号化した値と前記受信した関数値を比べることにより前記受信した関数値の正当性を確認する関数値確認手段と、
前記公開鍵証明書の正当性を検証する認証パスに係る証明書を用いて前記公開鍵証明書の正当性を確認する証明書確認手段と、
を具備したことを特徴とする長期署名検証用サーバ。
(各構成による効果)
以上の各構成によれば、秘密鍵などを用いる処理をクライアント端末に分担させることにより、社外に持ち出すことが困難な秘密鍵や原本データをクライアント側に保持したままサーバ側で長期署名データを作成したり検証できる。
【符号の説明】
【0113】
1 長期署名システム
2 長期署名サーバ
3 クライアント端末
4 インターネット
5 タイムスタンプサーバ
6 リポジトリサーバ
7 リポジトリサーバ

【特許請求の範囲】
【請求項1】
署名対象データと前記署名対象データを検証する検証情報、及び前記署名対象データと検証情報を所定期間検証する長期検証情報を用いて構成され、原本データの正当性を検証するための長期署名データを検証者端末から受信する長期署名データ受信手段と、
前記長期署名データに含まれる所定の情報を抽出して長期検証情報作成用情報を作成し、当該作成した長期検証情報作成用情報を前記検証者端末に送信する長期検証情報作成用情報送信手段と、
前記検証者端末から、前記送信した長期検証情報作成用情報に前記原本データを加えて所定の関数で計算した長期検証情報作成用関数値を受信する長期検証情報作成用関数値受信手段と、
前記受信した長期検証情報作成用関数値を用いて前記長期検証情報を検証する長期検証情報検証手段と、を具備したことを特徴とする長期署名検証用サーバ。
【請求項2】
前記検証情報を用いて前記署名対象データを検証する署名対象データ検証手段を具備し、
前記長期検証情報検証手段は、前記署名対象データ検証手段が検証した後に前記長期検証情報を検証することを特徴とする請求項1に記載の長期署名検証用サーバ。
【請求項3】
電子署名値と、当該署名値の生成に用いた秘密鍵に対応する公開鍵の公開鍵証明書を含む署名データを受信する署名データ受信手段と、
原本データの所定関数による関数値を受信する関数値受信手段と、
前記公開鍵証明書を用いて前記電子署名値を復号化し、当該復号化した値と前記受信した関数値を比べることにより前記受信した関数値の正当性を確認する関数値確認手段と、
前記公開鍵証明書の正当性を検証する認証パスに係る証明書を用いて前記公開鍵証明書の正当性を確認する証明書確認手段と、を具備したことを特徴とする署名検証用サーバ。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate


【公開番号】特開2012−239233(P2012−239233A)
【公開日】平成24年12月6日(2012.12.6)
【国際特許分類】
【出願番号】特願2012−189387(P2012−189387)
【出願日】平成24年8月30日(2012.8.30)
【分割の表示】特願2009−259523(P2009−259523)の分割
【原出願日】平成21年11月13日(2009.11.13)
【出願人】(000002325)セイコーインスツル株式会社 (3,629)
【Fターム(参考)】