PKIにおいて、電子文書などの電子データを送付する際に、対象となる電子データに、送信者の保有する秘密鍵(Private Key)を用いて電子署名(以下「署名」という)を付与し、認証局が発行する送信者の公開鍵証明書を添付する。受信者は、受信データに添付された署名と公開鍵証明書の有効性を確認することにより、送付された電子データが改ざんされていないことと、確かに送信者本人から送られた電子データであることを確認する。公開鍵証明書の発行と有効性の確認は、PKIにおいて行われ、その標準仕様はRFC5280(Internet X.509 Public Key Infrastructure Certificate and CRL Profile)等にて規定されている。
公開鍵証明書は、その有効期間が終了する前に、その公開鍵証明書の記載内容に変更があった場合等には、その公開鍵証明書を発行した認証局(Certificate Authority)により失効される。そこで、受信者は、受信した公開鍵証明書の有効性確認において、その公開鍵証明書が失効しているか否かを確認する必要がある。
証明書が失効しているか否かの確認には、認証局が発行する公開鍵証明書失効リスト(Certificate Revocation List:以下「CRL」という)を用いる。CRLには、認証局が発行した有効期間内の公開鍵証明書のうち失効した公開鍵証明書のシリアルナンバーや、CRLの有効期間(今回更新日時(thisUpdate)、次回更新日時(nextUpdate))等が記載され、認証局の署名が付与されており、認証局によって定期的に発行される。公開鍵証明書のシリアルナンバーとは、公開鍵証明書を発行する認証局が、自身が発行した公開鍵証明書を一意に識別できるよう設定した情報である。受信者は、認証局からCRLを取得し、受信データに添付された有効性を確認する対象の公開鍵証明書のシリアルナンバーが、CRLに記載されているかどうかを確認する。シリアルナンバーがCRLに記載されている場合は、この公開鍵証明書は失効していると判断し、記載されていない場合には、この公開鍵証明書は有効であると判断する。
しかしながら、認証局が発行する公開鍵証明書の数は多数あり、かつ失効する公開鍵証明書が多い場合、CRLの容量は膨大になる。このため、受信データに添付された公開鍵証明書の有効性を確認したい受信者にとっては、CRLの取得に時間がかかり、公開鍵証明書の有効性確認処理に時間がかかるという課題がある。これに対応するために、公開鍵証明書が失効しているかどうかの確認要求をオンラインで受け付けて、これに応答するサービスである検証サーバがあり、その標準仕様は非特許文献1に規定されている。
検証サーバは、認証局が発行するCRLを定期的に取り込んでおき、公開鍵証明書の失効確認をする受信者が利用する端末(以下「端末装置」という)からの公開鍵証明書の失効確認要求(以下「検証要求」という)を受け付ける。検証要求には、検証対象の公開鍵証明書(以下「検証対象証明書」という)を特定するための情報(以下「CertID」という)が記述される。CertIDには、検証対象証明書を発行した認証局の名前情報と、認証局の公開鍵の情報と、検証対象証明書のシリアルナンバー等が含まれる。このうち認証局の名前情報と、認証局の公開鍵の情報とは、認証局の名前データと公開鍵データとを、端末装置が使用するハッシュアルゴリズムでそれぞれハッシュ計算して得られる情報である。
検証要求を受け付けた検証サーバは、検証対象証明書のシリアルナンバーが予め取り込んだCRLに記載されているかどうかを調べ、この検証対象証明書である公開鍵証明書が失効しているかどうかを端末装置に応答する。検証サーバが作成した、検証対象証明書に対する検証を行った結果情報(以下「検証結果」という)には、検証対象証明書の状態が有効(good)、失効(revoked)、不明(unknown)のいずれかで記載される。さらに、検証結果には検証した検証サーバの署名および証明書(以下「検証サーバ証明書」という)が付与されて端末装置に送信される。この署名および証明書を確認することにより、端末装置の利用者は、この検証サーバによって確かに送付された検証結果であることを確認できる。
なお、CRLは、認証局によって失効された公開鍵証明書の情報の一覧であり、認証局は、認証局のポリシに基づくタイミングで、自身の発行した公開鍵証明書の失効情報を反映した新しいCRLを発行する。そして、CRLには、認証局がCRLを作成したその時点で失効している公開鍵証明書のシリアルナンバーがすべて記載されている。そして、CRLの発行タイミングは、CRLに記載される次回更新日時(nextUpdate)までには、新しいCRLが発行されることとなっている。
そのため、検証者および検証サーバは、検証時に出来る限り最近に発行されたCRLを取得して、公開鍵証明書の有効性確認を行うことが望ましい。CRLが発行された後に失効された公開鍵証明書に関しては、次のCRLが発行され、その失効した公開鍵証明書のシリアルナンバーがCRLに記載されるまでの間は、その公開鍵証明書が失効していることを知らず、有効として検証してしまうことになる。また、検証サーバは、次のCRLの発行日時を正確に知ることができないため、検証サーバはCRLに記載されている次回更新日時を参考に、CRLを取得しにいくことになる。
以上のような理由から、失効されている公開鍵証明書が、実際に失効として検証されるまでには、時間的な遅れが発生してしまうという課題があった。公開鍵証明書が失効してから、その公開鍵証明書に対して失効の検証が行われるまでの時間的な遅れは、次の二つの期間に分けて考えることが出来る。
(a)認証局が公開鍵証明書の失効依頼を受け付け、公開鍵証明書を失効させてから、次回CRLを発行し、当該公開鍵証明書のシリアルナンバーがCRLに記載されるまでの期間
(b)CRLが発行されてから、検証サーバが発行されたCRLを取得するまでの期間
(b)を解決するための技術として、nextUpdateのタイミングでCRLを取得するだけでなく、検証者自身によって定義したタイミングでCRLの取得要求を認証局に出し、CRLが発行された後、短時間でCRLを取得する技術が、特許文献1に開示されている。
(a)および(b)を解決するための技術として、CRLを利用せず、端末装置から検証要求を受信した際に、その時点での失効情報を認証局に直接問い合わせて取得する技術が、特許文献2に開示されている。
以下、PKIにおける公開鍵証明書の有効性確認の検証処理に係る失効情報取得方法を実施例として説明する。本発明の実施例について、図面を参照して詳細に説明する。
なお、これらの実施例によって本発明が限定されるものではない。PKIの公開鍵証明書の有効性確認の検証だけでなく、オンラインでICカードの失効情報を確認するシステムなどにも適用できる。
最初に、本実施例の説明で用いる用語について解説する。PKI技術において、電子データの送信者の電子署名には、送信者の秘密鍵が用いられる。その送信者の秘密鍵と対をなす公開鍵を認証局が証明し、署名した証明書が公開鍵証明書である。公開鍵証明書への認証局による署名には、認証局の秘密鍵が用いられ、その認証局の秘密鍵と対をなす公開鍵に対して他の認証局が証明した公開鍵証明書を、認証局証明書と呼ぶ。本実施形態には、公開鍵証明書の失効情報を確認し、公開鍵証明書の有効性を検証する検証サーバがある。失効情報は、検証結果に検証サーバの秘密鍵を用いて署名した検証応答として利用者に提供される。検証サーバの秘密鍵と対をなす公開鍵を認証局が証明し、署名した証明書も公開鍵証明書である。この検証サーバの秘密鍵と対をなす公開鍵の公開鍵証明書を検証サーバ証明書と呼ぶ。以上のように、公開鍵証明書、認証局証明書、検証サーバ証明書は、公開鍵に係わる情報に署名が付されたものであるが、これらの証明書には、以下の説明から明らかになる認証局を特定する情報としての認証局名や、シリアルナンバーなどの公開鍵証明書を特定する情報や、各々が証明する端末装置、認証局、検証サーバに関する情報も含まれる。
図1は、本発明の第一の実施例における検証システムの全体構成例を示す図である。検証システムは、公開鍵証明書の有効性を検証する検証サーバ11と、電子的に手続き(電子データの送信など)を実行する複数の端末装置121〜12m(以下、特定しない場合は端末装置12とする)と、公開鍵証明書を発行および失効させ、発行した公開鍵証明書の失効情報(CRL16)を発行する認証局131〜13n(以下、特定しない場合は認証局13とする)と、それぞれを接続するインターネット等のネットワーク14を有する。そして、端末装置12は、公開鍵証明書の検証を依頼するために検証要求15を検証サーバ11へ送信し、証明書の検証結果を検証応答として受信する。また、検証サーバ11は、認証局13の発行するCRLと、認証局13の保持する失効データ17を取得する。
図2は、検証サーバ11の構成を示す図である。検証サーバ11は、処理部20aと、記憶部20bと、ネットワーク14を介して他の装置と通信するための通信部20cと、各種証明書等の入出力や、検証サーバ11の管理者からの指示を受け付ける入出力部20dとを有する。
処理部20aは、管理部21と、失効情報管理部22と、検証処理を行う検証処理部23と、検証サーバ11の各部を制御する制御部24とを有する。
記憶部20bは、検証サーバ11の各種設定を保持する設定情報保持部25と、失効情報保持部26と、検証サーバ証明書を保持する検証サーバ証明書保持部27と、検証サーバ11の秘密鍵を保持する鍵保持部28とを有する。
管理部21は、CRL更新タイミング等の各種設定情報を、設定情報保持部25へ登録する。検証サーバ11の管理者は、予めCRL16の更新タイミングの設定を行う。具体的には、検証サーバ11が対応する認証局ごとに、CRL16を更新するタイミングを、入出力部20dを介して入力し、検証サーバ11の管理部21がこのCRL更新タイミングを設定情報保持部25へ登録する。
失効情報管理部22は、通信部20cを介して認証局13へアクセスしCRL16を取得するCRL取得機能220と、検証サーバ11が対応する複数の認証局13への接続に対応するCA振分け機能221と、認証局13等の、検証サーバ11外部の装置が具備するデータベース(以下、「DB」という)へ直接アクセスし失効データ17を取得する外部DB参照機能222と、取得したCRL16から後述するCRL情報テーブル80を作成、更新するなど、失効情報等のデータの書き込みを処理するファイル書込み機能223とを有する。
CRL取得機能220は、設定情報保持部25に設定されたCRL更新タイミングに従ってCRL16を取得し、後述するCRL情報保持部261に保持されるCRL情報テーブル80を更新する。
CA振分け機能221は、後述する認証局情報保持部260に保持される認証局識別テーブル60に設定されたCRL取得先情報や、失効データ取得先情報を用いて接続先の認証局13を決定する。
外部DB参照機能222は、CA振分け機能221によって決定された認証局13のDBに対し接続を行い、失効データ17を取得する。失効データ17には、失効した公開鍵証明書を識別する情報と、公開鍵証明書を発行した認証局を識別する情報を含む。
ファイル書込み機能223は、認証局情報保持部260に保持される認証局識別テーブル60や、CRL情報保持部261に保持されるCRL情報テーブル80等、検証サーバ11の保持する各テーブルに対応するデータを書き込み、テーブルの作成、更新を行う。
検証処理部23は、端末装置12から通信部20cを介して検証要求15を受け付けると、CRL情報テーブル80を参照して検証要求された検証対象証明書が失効しているか否かを確認する。そして、CRL情報テーブル80に検証対象証明書のシリアルナンバーが存在しない場合には、CA振分け機能221により認証局識別テーブル60を参照し、外部DB参照機能222を用いて認証局13から直接失効データ17を取得して、検証対象証明書の有効性を確認する。そのようにして検証結果を作成し、検証処理部23は、検証要求15に対応する検証サーバ証明書を検証サーバ証明書保持部27から取得し、鍵保持部28に保持される、検証サーバ11の秘密鍵を用いて検証結果に署名を付与する。署名が付与された検証結果と、検証サーバ証明書は、通信部20cを介して端末装置12へ送信される。
失効情報保持部26は、認証局識別テーブル60を保持する認証局情報保持部260と、CRL情報テーブル80を保持するCRL情報保持部261とを有する。検証サーバ11が複数の認証局13に対応する(複数の認証局13が発行するCRL16を取り込む)場合、各テーブルは、認証局識別子を用いて認証局13を識別できるように保持される。認証局識別子には、例えば、認証局の名前データと公開鍵データを、端末装置12が使用するハッシュアルゴリズムでそれぞれハッシュ計算して得られる情報等が用いられる。
図3は、端末装置12の構成を示す。端末装置121は、処理部30aと、記憶部30bと、ネットワーク14を介して他の装置と通信するための通信部30cと、端末装置121のユーザが作成した電子文書や他の端末装置122から受け取った電子文書の入出力やユーザからの指示を受け付ける入出力部30dとを有する。
以下の端末装置121の説明では、説明を分かり易くするために、端末装置121のユーザが作成した電子文書を他の端末装置122へ送信するときに添付する公開鍵証明書を自公開鍵証明書、他の端末装置122から受信した電子文書に添付されている公開鍵証明書を他公開鍵証明書と呼ぶ。
処理部30aは、端末装置121の秘密鍵を用いて電子文書に署名を付与した署名付き電子文書を作成する署名付き文書作成部31と、他の端末装置122からの署名付き電子文書の署名および他公開鍵証明書の検証を行う署名・証明書検証部32と、端末装置121の各部を制御する制御部33を有する。
記憶部30bは、ユーザが作成した電子文書を保持する電子文書保持部34と、署名を生成するための秘密鍵と、この秘密鍵と対をなす公開鍵について、認証局13に証明されて発行された自公開鍵証明書と、この端末装置121が利用する認証局13の認証局証明書とを保持する鍵保持部35と、他の端末装置122から受け取った署名付き電子文書と他公開鍵証明書を保持する検証対象保持部36を有する。
制御部33は、入出力部30dを介して端末装置121を利用するユーザから、他ユーザの端末装置122へ、電子文書保持部34に保持している電子文書の送信指示を受け付ける。送信の指示に対応して、制御部33は、指定された電子文書を電子文書保持部34から読み出し、これを署名付き文書作成部31へ渡す。署名付き文書作成部31は、鍵保持部35に保持されている秘密鍵を用いて、渡された電子文書に対する署名を生成し、電子文書に生成した署名を付与した署名付き電子文書を作成する。制御部33は、通信部30cを介して、署名付き文書作成部31で生成された署名付き電子文書と、鍵保持部35に保持されている自公開鍵証明書とをユーザから指示された送信先の端末装置122へ送信する。
また、制御部33は、通信部30cを介して、他の端末装置122から署名付き電子文書と他公開鍵証明書を受け取ると、これらを関連付けて検証対象保持部36に保持させると共に、これらの検証を署名・証明書検証部32に要求する。
署名・証明書検証部32は、検証対象保持部36に保持されている署名付き電子文書の署名を、関連付けて保持されている他公開鍵証明書を用いて検証する。そして、署名・証明書検証部32は、署名付き電子文書の署名の検証に使用した他公開鍵証明書を検証対象証明書として、鍵保持部35に保持する認証局13の認証局証明書を用いて検証する。署名・証明書検証部32は、検証対象証明書の署名の検証および、検証対象証明書の有効期間が切れていないことの確認、検証対象証明書が失効しているかどうかの確認など検証処理を実行する。
署名・証明書検証部32は、検証対象証明書(検証対象の他公開鍵証明書)が失効しているかどうかを確認するために、検証サーバ11に検証要求15を送信する。署名・証明書検証部32は、検証サーバ11から検証対象証明書が失効していないとの検証結果の受信を含めて、検証処理に成功した場合に、この検証対象証明書は有効であり、この検証対象証明書が添付されていた署名付き電子文書が正当なものであるとして、必要に応じて入出力部30dを介して署名付き電子文書の署名および検証対象証明書の検証結果を出力する。
図4は、認証局13の構成を示す図である。認証局13は、処理部40aと、記憶部40bと、ネットワーク14を介して他の装置と通信するための通信部40cと、各種証明書等の入出力や、この認証局13の操作者からの指示の受け付けや、処理結果の出力を行う入出力部40dとを有する。
処理部40aは、公開鍵証明書を発行する発行部41と、発行部41が発行した公開鍵証明書を管理する管理部42と、認証局13の各部を制御する制御部43とを有する。
記憶部40bは、発行部41が発行した公開鍵証明書を保持する証明書保持部44と、証明書保持部44に保持されている各公開鍵証明書の発行先が記述されている発行先管理リストを保持する発行先管理リスト保持部45と、公開鍵証明書の失効情報が記述されているCRL16を保持するCRL保持部46と、前回CRL16発行後に公開鍵証明書の失効依頼を受け付け、発行済みCRL16にはシリアルナンバーが未記載の、失効済み公開鍵証明書の情報を保持する失効データ保持部47とを有する。
認証局13は、公開鍵証明書の発行依頼を受け付け、発行依頼に対応する公開鍵証明書を作成し、認証局13の秘密鍵を用いて作成した公開鍵証明書に署名をする。そして、作成した公開鍵証明書を入出力部40dまたは通信部40cを介して、郵送あるいは通信により発行依頼元へ渡す。
管理部42は、公開鍵証明書の失効依頼を受け付けると、失効対象の公開鍵証明書を証明書保持部44から削除すると共に、この公開鍵証明書の発行先の情報を発行先管理リスト保持部45に保持されている発行先管理リストから削除する。そして、管理部42は、証明書保持部44から削除した公開鍵証明書のシリアルナンバーを、次にCRL16を発行するまで失効データ保持部47に保持する。管理部42は、定期的にCRL16を作成し、認証局13の秘密鍵を用いてCRL16に署名を付与して、署名を付与したCRL16をCRL保持部46に保持する。制御部43は、通信部40cを介して、検証サーバ11等の他の装置よりCRL取得要求を受け付けると、CRL保持部46に保持されているCRL16を、通信部40cを介して、CRL取得要求を発行した他の装置に送信する。また、署名を付与したCRL16は、外部リポジトリなどのDBに格納されてもよく、検証サーバ11等は、CRL取得要求をリポジトリに対して行い、リポジトリからCRL16を取得してもよい。
図5は、検証サーバ11、端末装置12、認証局13の各々のハードウェア構成例を示す図である。検証サーバ11、端末装置12、および認証局13は、各種処理や演算、装置全体の制御等を行うCPU(Central Processing Unit)51と、メモリ52と、各種プログラムおよびデータを記憶するハードディスク等の外部記憶装置53と、通信ネットワーク14を介して他装置と通信を行うための通信装置54と、キーボードやボタン等の入力装置55と、モニタやプリンタ等の出力装置56と、CD−ROMやUSB等の可搬性を有する記憶媒体58から情報を読み取る読取装置57と、これらの各装置間のデータ送受を行う内部通信線(例えば、BUS)50とを備えた、一般的なコンピュータ(電子計算機)である。CPU51は、外部記憶装置53から各種プログラムをメモリ52にロードし、所定のプログラムを実行することにより上術の各処理部を実現する。すなはち、処理部20a、30a、40aは、CPU51の処理プロセスとして実現され、記憶部20b、30b、40bは、CPU51がメモリ52や外部記憶装置53を利用することにより実現される。また、通信部20c、30c、40cは、CPU51が通信装置54を利用することにより実現され、入出力部20d、30d、40dは、CPU51が入力装置55や出力装置56や読取装置57を利用することにより実現される。各処理部を実現する所定のプログラムは、予め外部記憶装置53に格納されていても良いし、電子計算機が利用可能な可搬性を有する記憶媒体58に格納されており読取装置57を介して必要に応じて読み出されても良いし、あるいは、電子計算機が利用可能な通信媒体であるネットワークまたはネットワーク上を伝搬する搬送波を利用する通信装置54と接続された他の装置から必要に応じてダウンロードされて外部記憶装置53に格納されるものであっても良い。
図6は、検証サーバ11の認証局情報保持部260に設ける認証局識別テーブル60の例を示す図である。認証局識別テーブル60は、認証局61に対応して、複数の認証局に対応する場合に認証局を識別するための認証局識別子62と、CRL16が保持されている場所や取得方法を示すCRL取得先情報63と、失効データ17が保持されている場所や取得方法を示す失効データ取得先情報64とが格納される。認証局識別子62は、例えば、認証局の名前データと公開鍵データを、ハッシュアルゴリズムでそれぞれハッシュ計算して得られる情報等を認証局識別子62として用い、CRL情報テーブル80や失効データテーブル90等、検証サーバ11内部の情報を検索する際の識別子とする。
認証局識別テーブル60は、管理者によって入出力部20dを介して入力されるか、もしくは、管理部21によって次のように作成される。管理者は、検証サーバ11が対応する認証局の名前を認証局識別テーブル60の認証局61の行に記述する。もしくは、管理部21が、設定情報保持部25に保持されている認証局証明書を取得し、取得した認証局証明書の名前を認証局識別テーブル60の認証局61の行に記述する。次に、認証局証明書に記述される、認証局の名前データならびに公開鍵データのハッシュ値を計算して得られる情報を認証局識別子として、対応する認証局61の認証局識別子62欄に記述する。さらに、CRL16を入手するための情報として、CRL16を配布するURI(Uniform Resource Identifier)等を該当の認証局61のCRL取得先情報63欄に記述する。同様に、失効データ17を入手するための情報を該当の認証局61の失効データ取得先情報64欄に記述する。
図7は、検証サーバ11のCRL取得機能220が実行するCRL更新処理のフローチャートを示す図である。
検証サーバ11のCRL取得機能220は、設定情報保持部25に予め設定されたCRL更新タイミング(例えば1日)を取得し、CRL16を以前に取得した日時から、CRL更新タイミングを経過している認証局が存在するかを確認する(ステップ701)。CRL更新タイミングを経過している認証局が存在する場合、CRL取得機能220は、CA振分け機能221により、認証局識別テーブル60から該当の認証局のCRL取得先情報63を取得する(ステップ702)。そしてCRL取得機能220は、取得したCRL取得先情報63に基づいて、通信部20cを介してCRL取得要求を当該認証局13へ送信する(ステップ703)。認証局13は、CRL取得要求を受信する(ステップ704)と、認証局13のCRL保持部46に保持されるCRL16を検証サーバ11へ送信する(ステップ705)。このCRL16には、CRL16を作成した時点の、認証局13の名前、認証局13の鍵情報、認証局13が発行した有効期間内の公開鍵証明書のうち失効した公開鍵証明書のシリアルナンバー、CRL16の有効期間(今回更新日時(thisUpdate)、次回更新日時(nextUpdate))等が記載されている。検証サーバ11の失効情報管理部22は、認証局13からのCRL16を受信する(ステップ706)と、認証局証明書を用いてCRL16に記載されている認証局の署名を確認し(ステップ707)、CRL情報テーブル80を参照して、受信したCRL16が既に取得しているCRL16より更新されているかどうかを確認する(ステップ708)。CRL16には、認証局13によるCRL16の作成日時が記載されているため、認証局13から受信したCRL16の作成日時(thisUpdate)が前回取得したCRL16の作成日時よりも新しくなっていた場合、認証局13のCRL16が更新されていると判断し、ステップ709へ進む。受信した認証局13のCRL16が更新されていなかった場合、ステップ701へ進む。なお、認証局13から初めてCRL16を受信する場合は、ステップ709へ進む。次に、検証サーバ11の失効情報管理部22のファイル書込み機能223は、受信したCRL16の認証局識別子をキーとして、CRL情報テーブル80の作成または更新を行い、取得したCRL16の情報をCRL情報保持部261へ格納する(ステップ709)。これらステップ701からステップ709の処理を、CRL更新タイミングの経過している認証局13全てに行う。また、設定情報保持部25に設定されるCRL更新タイミングは、認証局13ごとに設定してもよいし、検証サーバ11が対応する認証局13全てに対して一つを設定してもよい。
図8は、CRL情報テーブル80の例を示す図である。CRL情報テーブル80は、取得したCRL16に記載されている情報を元に、認証局識別子81に対応して、thisUpdateならびにnextUpdateからなるCRL有効期間82と、失効した証明書のシリアルナンバー83と、証明書の失効日時84と、証明書の失効理由85とが格納される。
CRL情報テーブル80は、次のように作成または更新する。検証サーバ11の失効情報管理部22のファイル書込み機能223は、取得したCRL16に記述される認証局の名前データならびに公開鍵データのハッシュ値を計算し得られる認証局識別子を、CRL情報テーブル80の認証局識別子81欄から検索する。なお、同じ認証局識別子が存在しない場合には、ファイル書込み機能223は、取得したCRL16が、新たに認証局識別テーブル60に登録した認証局13のCRL16であると判断し、CRL情報テーブル80の認証局識別子81欄へ、求めた認証局識別子を新たに追加する。次に、ファイル書込み機能223は、認証局識別子81に対応する、CRL有効期間82欄へ、有効期間(thisUpdate、nextUpdate)を記述または更新する。次に、ファイル書込み機能223は、認証局識別子81に対応する、失効した証明書のシリアルナンバー83欄へ、CRL16に記述されている失効した公開鍵証明書のシリアルナンバーを登録し、証明書の失効日時84欄へ、失効公開鍵証明書の失効日時を登録し、証明書の失効理由85欄へ、公開鍵証明書の該当する失効理由を登録する。なお、失効理由は、その番号に対応する意味がRFC5280で規定されている。
図9は、検証サーバ11が実行する公開鍵証明書の検証処理のフローチャートを示す図である。
端末装置121の署名・証明書検証部32は、他の端末装置122からの電子文書に添付されていた公開鍵証明書(図2の説明時の他公開鍵証明書)が失効しているかどうかを確認するために、検証要求15を作成し、通信部30cを介して、検証サーバ11へ送信する(ステップ1000)。検証サーバ11の検証処理部23は、検証要求15を受信すると(ステップ1100)、検証要求15に含まれるCertIDを取得する(ステップ1101)。CertIDには、検証対象証明書を発行した認証局の名前情報と、認証局の公開鍵の情報と、検証対象証明書のシリアルナンバー等が含まれる。このうち認証局の名前情報と、認証局の公開鍵の情報とは、認証局の名前データと公開鍵データを、端末装置121が使用するハッシュアルゴリズムでそれぞれハッシュ計算して得られる情報であり、検証サーバ11がCRL情報テーブル80に持つ、認証局識別子81に対応する。検証処理部23は、CertIDに指定された認証局識別子をキーとしてCRL情報テーブル80を照合し、CertIDに指定された認証局識別子がCRL情報テーブル80に存在するかどうかを確認する(ステップ1102)。存在しない場合、検証サーバ11が、この検証要求15に対応する認証局13の失効情報を保持していないことを意味するので、検証処理部23は、検証対象証明書の失効情報(CertStatus)を不明(unknown)とする検証結果データを作成し(ステップ1103)、ステップ1110へ進む。CertIDに指定された認証局識別子がCRL情報テーブル80に存在する場合、検証処理部23は、CRL情報テーブル80の当該認証局識別子の失効した証明書のシリアルナンバー83欄に、CertIDに記載された検証対象証明書のシリアルナンバーが存在するかどうかを確認する(ステップ1104)。CertIDに記載された検証対象証明書のシリアルナンバーがCRL情報テーブル80に存在する場合、検証処理部23は、検証対象証明書の失効情報(CertStatus)を失効(revoked)とする検証結果データを作成して(ステップ1105)、ステップ1110に進む。そして、CertIDに記載された検証対象証明書のシリアルナンバーがCRL情報テーブル80に存在しない場合、ステップ1106へ進む。ここで、検証サーバ11は、CRL16に記載前の失効している公開鍵証明書の中に検証対象証明書が存在しないか認証局に確認するため、失効データ要求を検証処理部23から失効情報管理部22へ送信する(ステップ1106)。失効情報管理部22は、失効データ要求を受信する(ステップ1200)と、失効情報管理部22のCA振分け機能221が、ステップ1102で取得した認証局識別子をキーとして、認証局識別データ60から当該認証局の失効データ取得先情報64を取得する(ステップ1201)。そして失効情報管理部22の外部DB参照機能222は、取得した失効データ取得先情報に基づいて、通信部20cを介して失効データ要求を該当認証局13へ送信する(ステップ1202)。そして、認証局13は失効データ要求を受信し(ステップ1300)、失効データ保持部47に保持している失効データ17を取得し(ステップ1301)、失効データ17を検証サーバ11へと送信する(ステップ1302)。ここで、外部DB参照機能222は、認証局13に対し、認証局13の失効データ保持部47が保持する失効データ全てを要求してもよいし、指定する日時以降に失効された失効データのみを要求するなど、失効データの要求を特定してもよい。検証サーバ11の外部DB参照機能222は、通信部20cを介して失効データ17を受信する(ステップ1203)と、検証処理部23へ取得した失効データ17を送信する(ステップ1204)。そして、検証処理部23は、失効データ17を取得し(ステップ1107)、取得した失効データ17のシリアルナンバーの中に、CertIDに記載された検証対象証明書のシリアルナンバーが存在するかどうかを確認する(ステップ1108)。CertIDに記載された検証対象証明書のシリアルナンバーが、ステップ1107で取得した失効データ17に存在する場合、検証処理部23は、検証対象証明書の失効情報(CertStatus)を失効(revoked)とする検証結果データを作成し(ステップ1105)、ステップ1110へ進む。CertIDに記載された検証対象証明書のシリアルナンバーが取得した失効データ17に存在しない場合、検証処理部23は、検証対象証明書の失効情報(CertStatus)を有効(good)とする検証結果データを作成して(ステップ1109)、ステップ1110へ進む。次に、検証処理部23は、鍵保持部28に保持されている検証サーバの秘密鍵を取得し(ステップ1110)、検証結果データに署名を付与して、署名付きの検証応答を作成する(ステップ1111)。そして、検証サーバ11の処理部20aは、通信部20cを介して、作成した検証応答を端末装置121へ送信し(ステップ1112)、端末装置121は、ステップ1000で送信した検証要求に対する検証応答を受信する(ステップ1001)。
ここで、検証サーバ11がステップ1107で取得した失効データ17は、一時的な検証にのみ利用するデータとしてメモリ上にのみ保持してもよいし、後述する失効データテーブル90のようにテーブルとして失効情報保持部26に保持し、ステップ1106のタイミングで認証局13へ失効データを取得に行く前に、失効データテーブル90内を確認してもよい。そして、失効データテーブル90を保持する場合は、後述するリフレッシュ機能225(図14)を検証サーバ11に持ち、重複データの管理を行う。
以上、本発明の第一の実施例を説明した。本実施例によれば、認証局が複数ある場合であっても、失効した公開鍵証明書がCRLに記載されるまでの期間において、公開鍵証明書の検証を正しく行うことを可能とし、公開鍵証明書が失効されてから、当該公開鍵証明書に対して失効の検証が行われるまでの時間的な遅れを低減することができる。
図10は、本発明の第二の実施例における検証サーバ11の構成を示す図である。検証サーバ11は、第一の実施例と同様に、処理部20aと、記憶部20bと、ネットワーク14を介して他の装置と通信するための通信部20cと、各種証明書等の入出力や、検証サーバ11の管理者からの指示を受け付ける入出力部20dとを有する。
処理部20aは、管理部21と、失効情報管理部22と、検証処理部23と、検証サーバ11の各部を制御する制御部24とを有する。
第一の実施例との相違点として、失効情報管理部22は、複数の認証局13各々と、ログイン状態を維持したセッションを確立し、そのセッションを保持するセッションプール機能224を有する。セッションプール機能224は、検証サーバ11の起動の際に認証局13とのセッションを確立し、検証サーバ11の起動中は確立したセッションを保持し続け、検証サーバ11の終了時にセッションを切断する。
図11は、セッションプール機能224によるセッションプールの際の、検証サーバ11の起動から停止までのシーケンスである。セッションプールを行うことにより、検証サーバ11が認証局13へアクセスする際に発生する処理負荷を軽減することが出来る。
最初に、検証サーバ11の管理者は、検証サーバ11に対して起動要求を行う(ステップ801)。起動要求を受け付けた検証サーバ11の制御部24は、起動処理を行い(ステップ802)、検証サーバ11を起動する。そして、制御部24は、セッション確立要求をセッションプール機能224に送信する(ステップ803)。次に、セッションプール機能224は、初期化処理を行い(ステップ804)、認証局13に対してログイン要求を行う(ステップ805)。認証局13は、検証サーバ11に対してユーザ認証を行い(ステップ806)、ログイン結果を検証サーバ11に送信する(ステップ807)。そして、セッションプール機能224は、認証局13の失効データ保持部47のデータを取得できるログイン状態を維持したセッションを確立し、検証サーバ11の起動中の間、保持し続ける。また、検証サーバ11の対応する認証局13が複数あった場合には、セッションプール機能224は、認証局13ごとにそれぞれログイン状態を維持したセッションを確立し、そのセッションを保持する。
ここで、図9で示した検証サーバ11における公開鍵証明書の検証処理のステップ1202のタイミングで、検証サーバ11の外部DB参照機能222は、CA振分け機能221により取得した、検証対象証明書の失効データ取得先情報64と失効データ要求をセッションプール機能224に送信する(ステップ808)。セッションプール機能224は、受信した失効データ取得先情報に該当する認証局13に、保持しているセッションの一つを利用して失効データ要求を送信する(ステップ809)。認証局13は、失効データ保持部47に保持している失効データを取得し(ステップ810)、検証サーバ11のセッションプール機能224へ失効データを送信する(ステップ811)。失効データを受信したセッションプール機能224は、取得した失効データを外部DB参照機能222に送信する(ステップ812)。失効データを取得した外部DB参照機能222は、検証処理のステップ1204へ戻る。図11の点線部分は、ステップ1202〜ステップ1204に対応し、検証処理が行われるたびに実行される。
最後に、検証サーバ11を停止する際に、管理者は停止要求を検証サーバ11へと送信する(ステップ813)。停止要求を受け付けた検証サーバ11の制御部24は、セッション切断要求をセッションプール機能224に送信する(ステップ814)。次に、セッションプール機能224は、認証局13に対してログアウト要求を行う(ステップ815)。認証局13は、ログアウトを行い、ログアウト結果を検証サーバ11に送信する(ステップ816)。次にセッションプール機能224は、終了処理を行い(ステップ817)、切断結果を制御部24に送信する(ステップ818)。制御部は、サーバの停止処理を行い、検証サーバ11を停止させる(ステップ819)。
以上、本発明の第二の実施例を説明した。本実施例によれば、認証局が複数ある場合であっても、失効の検証が行われるまでの時間的な遅れを低減し、かつ、セッションをプールすることにより検証サーバ11のアクセス処理の負荷を軽減して公開鍵証明書の有効性確認処理を効率的に行うことができる。
本発明の第三の実施例では、第一の実施例、第二の実施例で述べた機能の一部を失効情報更新エージェント(中継サーバ)18として、別の装置として認証局13と検証サーバ11の間に構築し、失効データ取得などの処理を検証サーバ11の代わりに実施する事により、検証サーバ11の処理負荷を少なくする例である。
図12は、本発明の第三の実施例における検証システムの全体構成例を示す図である。図1で示した全体構成例に加え、失効情報更新エージェント18を有する。失効情報更新エージェント18は、認証局13の保持する失効データ17を取得し、検証サーバ11へ送信済みのデータとの差分失効データ19を作成し、検証サーバ11へ送信する。
図13は、失効情報更新エージェント18の構成を示す図である。失効情報更新エージェント18は、処理部70aと、記憶部70bと、ネットワーク14を介して他の装置と通信するための通信部70cと、管理者が設定情報を入力し、確認するための入出力部70dとを有する。
処理部70aは、第二の実施例のセッションプール機能224と同様に、失効情報更新エージェント18と認証局13とのログイン状態を維持したセッションを複数確立し、そのセッションを保持するセッションプール機能71と、通信部70cを介して認証局13等の外部装置のDBへ直接アクセスし失効データ17を取得する外部DB参照機能72と、取得した失効データ17をその時点より前に送信したデータと比較して、未送信のデータのみを抽出した差分失効データ19を作成する差分作成機能73と、CA振分け機能76とを有する。
失効情報更新エージェント18は、認証局13ごとに構築してもよいし、複数の認証局13に対して1台の失効情報更新エージェント18を構築してもよい。複数の認証局13に対して1台の失効情報更新エージェント18を構築する場合には、複数の認証局13への接続に対応するためのCA振分け機能76を失効情報更新エージェント18が持つ。
記憶部70bは、前述した認証局識別テーブル60を保持する認証局情報保持部74と、以前に検証サーバ11へと送信済みの失効データ17の情報を保持する送信済み失効データ保持部75とを有する。
失効情報更新エージェント18は、図5で示すハードウェア構成例と同様である。
また、認証局13等の外部装置のDBへ直接アクセスし失効データ17を取得する外部DB参照機能72は、失効情報データを取得するタイミングを、予め記憶部70bに設定してもよいし、認証局13が新しい失効データ17を生成すると同時に失効情報更新エージェント18に対して更新イベントを送信するように構築し、更新イベントのタイミングに合せて失効データ17を取得してもよい。
図14は、本発明の第三の実施例における検証サーバ11の構成を示す図である。検証サーバ11は、第一の実施例と同様に、処理部20aと、記憶部20bと、ネットワーク14を介して他の装置と通信するための通信部20cと、各種証明書等の入出力や、検証サーバ11の管理者からの指示を受け付ける入出力部20dとを有する。
第一の実施例との相違点として、失効情報管理部22は、検証サーバ11がCRL16を取得したタイミングで、検証サーバ11が取得し失効データ保持部262に保持している失効データをと、取得したCRL16とを比較し、CRL16に記載された公開鍵証明書のシリアルナンバーを失効データ保持部262から消去するリフレッシュ機能225とを有する。
また、記憶部20bは、第一の実施例で示した構成に加えて、失効情報更新エージェント18から受信した差分失効データ19を保持する失効データ保持部262を有する。
図15、および図16は、予め設定した取得タイミングで失効データ17を取得する場合の、失効情報更新エージェント18の失効データ取得処理のフローチャートを示す図である。
失効情報更新エージェント18は、第二の実施例と同様に、セッションプール機能71を用いて、失効情報更新エージェント18の起動時から認証局13とのログイン状態を維持したセッションを確立し、そのセッションを保持する。失効情報更新エージェント18が複数の認証局13に対応している場合は、各認証局13とログイン状態を維持したセッションを確立し、そのセッションを保持する。
失効情報更新エージェント18の処理部70aは、記憶部70bに予め設定された失効データ取得タイミング(例えば1時間に1回)を取得し、以前に失効データ17を取得した日時から、失効データ取得タイミングを経過したかを確認する(ステップ2101)。失効データ取得タイミングを経過している場合、CA振分け機能76は、認証局情報保持部74に保持する、認証局情報テーブル60から一つ目の認証局識別子62に対して、接続先の該当の認証局13の失効データ取得先情報を取得し(ステップ2102)、図16のAに進む。
失効データ取得先情報を取得した失効情報更新エージェント18は、予め、セッションプール機能71によって、実施例2と同様にプールされたセッションを用いて、通信部20cを介して失効データ要求を該当認証局13へ送信する(ステップ2104)。認証局13は、失効データ要求を受信し(ステップ2200)、記憶部40bの失効データ保持部47に保持されている失効データ17を取得し(ステップ2201)、失効情報更新エージェント18へ失効データ17を送信する(ステップ2202)。ここで、失効情報更新エージェント18は、認証局13に対し、認証局13の失効データ保持部47が保持する失効データ全てを要求してもよいし、指定する日時以降に失効された失効データのみを要求するなど、失効データの要求を特定してもよい。失効情報更新エージェント18は、通信部70cを介して失効データ17を受信する(ステップ2105)。そして、失効情報更新エージェント18の差分作成機能73は、送信済み失効データ保持部75に保持している、以前に検証サーバ11へ送信した失効データの情報と、取得した失効データ17を比較する(ステップ2106)。そして、失効情報更新エージェント18は、取得した失効データ17が検証サーバ11へ未送信であるかを確認する(ステップ2107)。差分作成機能73は、取得した失効データ17のシリアルナンバーを一つずつ、送信済み失効データ保持部75に保持されているシリアルナンバーと比較していく。取得した失効データ17のシリアルナンバーのすべてが、送信済み失効データ保持部75に保持されているデータの中に存在する場合、失効データ17は検証サーバ11へ未送信のデータが無いと判断し、Bへ進む。取得した失効データ17のシリアルナンバーのうち、送信済み失効データ保持部75に保持されているデータの中に同じシリアルナンバーが一つでも存在しない場合、ステップ2109へ進む。差分作成機能73は、送信済み失効データ保持部75に保持されていなかったシリアルナンバーに関する失効データのみを抽出し、差分失効データ19を作成する(ステップ2108)。処理部70aは、作成した差分失効データ19を送信済み失効データ保持部75に新たに保存する(ステップ2109)。処理部70aは、通信部70cを介して、作成した差分失効データ19を検証サーバ11に送信する(ステップ2110)。検証サーバ11は、通信部20cを介して、差分失効データ19を受信し(ステップ2000)、処理部20aのファイル書込み機能222は、受信した差分失効データ19を、記憶部20bの失効データ保持部262へと書き込み、後述する失効データテーブル90を更新する(ステップ2001)。次に、検証サーバ11の処理部20aは、差分失効データ格納完了通知を失効情報更新エージェント18に送信する(ステップ2002)。失効情報更新エージェント18は、差分失効データ格納完了通知を受信し(ステップ2111)、Bへ進む。
失効情報更新エージェント18の処理部70aは、認証局情報保持部74に保持される、認証局識別テーブル60を参照し、記載されている認証局識別子62の全てに対して、失効データ17を取得したかを確認する(ステップ2103)。認証局識別テーブル60に未アクセスの認証局識別子62が存在する場合、処理部70aは、認証局識別テーブル60の次の認証局識別子62を取得し、ステップ2102へ進む。全ての認証局識別子62に対応した場合、失効情報更新エージェント18の失効データ取得処理は終了する。
また、記憶部70bに保持される失効データ取得タイミングは、認証局13ごとに個別の間隔を設定してもよく、個別に設定する場合は、ステップ2101とステップ2102の処理順序は逆となる。
図17は、認証局13が新しい失効データ17を生成すると同時に失効情報更新エージェント18に対して更新イベントを送信し、失効情報更新エージェント18が更新イベントのタイミングに合せて失効データ17を取得する場合の、失効データ取得処理のフローチャートを示す図である。
認証局13は、公開鍵証明書の失効要求を受付け、公開鍵証明書を失効すると、記憶部40bの失効データ保持部47に、CRL16記載前の失効データを保持する。そのタイミングで、認証局13は、失効データの更新イベントを、自身が対応する失効情報更新エージェント18に送信する(ステップ2203)。失効情報更新エージェント18は、その失効データの更新イベントを受信する(ステップ2112)。失効情報更新エージェント18のCA振分け機能76は、更新イベントを送信してきた認証局13の認証局識別子を取得して、認証局情報保持部74に保持する認証局識別テーブル60から該当の認証局13の失効データ取得先情報64を取得し(ステップ2113)、図16のAへ進む。そして、図16のステップ2104〜ステップ2111を行い、図17のBへ戻ると失効データ取得処理を終了する。
図18は、失効データテーブル90の例を示す図である。失効データテーブル90は、取得した差分失効データ19に記載されている情報を元に、認証局識別子91に対応して、失効した証明書のシリアルナンバー92と、証明書の失効日時93と、証明書の失効理由94とが格納される。
失効データテーブル90は、次のように作成または更新する。検証サーバ11の失効情報管理部22のファイル書込み機能223は、失効情報更新エージェント18から受信した、差分失効データ19に記述される、認証局の名前データならびに公開鍵データのハッシュ値を計算して、認証局識別テーブル60に登録されている認証局識別子62を求める。そして、求めた認証局識別子をキーにして、失効データテーブル90の認証局識別子91欄から同じ認証局識別子を検索する。次に、ファイル書込み機能223は、認証局識別子91に対応する、失効した証明書のシリアルナンバー92欄へ、差分失効データ19に記述されている失効した公開鍵証明書のシリアルナンバーを登録し、証明書の失効日時93欄へ、失効した公開鍵証明書の失効日時を登録し、証明書の失効理由94欄へ、公開鍵証明書の該当する失効理由を登録する。なお、失効理由は、その番号に対応する意味がRFC5280で規定されている。
ここで、失効データテーブル90を検証サーバ11で保持する場合、CRLが発行されるたびにCRL情報テーブル80と失効データテーブル90に重複するデータが存在するようになってしまう。CRL情報テーブル80と失効情報テーブル90に重複するデータが存在してしまうと、検証処理時に後述するステップ4104およびステップ4106で同じ情報をチェックしてしまうため、図20で示すリフレッシュ機能225が必要である。
図19は、第三の実施例における、検証サーバ11が実行する、公開鍵証明書の検証処理のフローチャートを示す図である。
端末装置12の署名・証明書検証部32は、他の端末装置12からの電子文書に添付されていた公開鍵証明書(図2の説明時の他公開鍵証明書)が失効しているかどうかを確認するために、検証要求15を作成し、通信部30cを介して、検証サーバ11へ送信する(ステップ4100)。検証サーバ11の検証処理部23は、検証要求15を受信すると(ステップ4100)、検証要求15に含まれるCertIDを取得する(ステップ4101)。CertIDには、検証対象証明書を発行した認証局の名前情報と、認証局の公開鍵の情報と、検証対象証明書のシリアルナンバー等が含まれる。このうち認証局の名前情報と、認証局の公開鍵の情報とは、認証局の名前データと公開鍵データを、端末装置が使用するハッシュアルゴリズムでそれぞれハッシュ計算して得られる情報であり、検証サーバ11がCRL情報テーブル80に持つ、認証局識別子81に対応する。検証処理部23は、CertIDに指定された認証局識別子をキーとしてCRL情報テーブル80を照合し、CertIDに指定された認証局識別子がCRL情報テーブル80に存在するかどうかを確認する(ステップ4102)。存在しない場合、検証サーバ11が、この検証要求15に対応する失効情報を保持していないことを意味するので、検証処理部23は、検証対象証明書の失効情報(CertStatus)を不明(unknown)とする検証結果データを作成し(ステップ4103)、ステップ4108へ進む。CertIDに指定された認証局識別子がCRL情報テーブル80に存在する場合、検証処理部23は、CRL情報テーブル80の当該認証局識別子の失効した証明書のシリアルナンバー83欄に、CertIDに記載された検証対象証明書のシリアルナンバーが存在するかどうかを確認する(ステップ4104)。CertIDに記載された検証対象証明書のシリアルナンバーがCRL情報テーブル80に存在する場合、検証処理部23は、検証対象証明書の失効情報(CertStatus)を失効(revoked)とする検証結果データを作成して(ステップ4105)、ステップ4108に進む。そして、CertIDに記載された検証対象証明書のシリアルナンバーがCRL情報テーブル80に存在しない場合、ステップ4106へ進む。次に、検証処理部23は、ステップ4102で取得した認証局識別子をキーとして、失効データ保持部262に保持される失効データテーブル90を照合し、認証局識別子に対応する失効した証明書のシリアルナンバー92に、CertIDに記載された検証対象証明書のシリアルナンバーが存在するかどうかを確認する(ステップ4106)。CertIDに記載された検証対象証明書のシリアルナンバーが失効データテーブル90に存在する場合、検証処理部23は、検証対象証明書の失効情報(CertStatus)を失効(revoked)とする検証結果データを作成し(ステップ4105)、ステップ4108へ進む。CertIDに記載された検証対象証明書のシリアルナンバーが失効データテーブル90に存在しない場合、検証処理部23は、検証対象証明書の失効情報(CertStatus)を有効(good)とする検証結果データを作成して(ステップ4107)、ステップ4108へ進む。次に、検証処理部23は、鍵保持部28に保持されている検証サーバの秘密鍵を取得し(ステップ4108)、検証結果データに署名を付与して、署名付きの検証応答を作成する(ステップ4109)。そして、検証サーバ11の処理部20aは、通信部20cを介して、作成した検証応答を端末装置12へ送信し(ステップ4110)、端末装置12は、ステップ1000で送信した検証要求に対する検証応答を受信する(ステップ4001)。
図20は、失効データテーブル90が存在する場合における、検証サーバ11のリフレッシュ処理のフローチャートを示す図である。
検証サーバ11のCRL取得機能220が実行するCRLの更新処理ステップ3000〜ステップ3006は図7で示したCRL更新処理とほぼ同じである。その後、検証サーバ11のリフレッシュ機能225により、ステップ3007〜ステップ3008を実行する。
具体的には、検証サーバ11のCRL取得機能220は、設定情報保持部25に予め設定されたCRL更新タイミング(例えば1日)を取得し、CRL16を以前に取得した日時から、CRL更新タイミングを経過したかを確認する(ステップ3000)。CRL更新タイミングを経過している場合、CRL取得機能220は、CA振分け機能221により、認証局識別テーブル60から該当の認証局のCRL取得先情報を取得する(ステップ3001)。そしてCRL取得機能220は、取得したCRL取得先情報に基づいて、通信部20cを介してCRL取得要求を当該認証局13へ送信する(ステップ3002)。認証局13は、CRL取得要求を受信する(ステップ3100)と、認証局13のCRL保持部46に保持されるCRL16を検証サーバ11へ送信する(ステップ3101)。そして、検証サーバ11の失効情報管理部22は、認証局13からのCRL16を受信する(ステップ3003)と、認証局証明書(認証局13の公開鍵証明書)を用いてCRL16に記載されている認証局の署名を確認し(ステップ3004)、CRL情報テーブル80を参照して、受信したCRL16が既に取得しているCRL16より更新されているかどうかを確認する(ステップ3005)。認証局13から受信したCRL16の作成日時が前回取得したCRL16の作成日時よりも新しくなっていた場合、認証局13のCRL16が更新されていると判断し、ステップ3006へ進む。受信した認証局13のCRL16が更新されていなかった場合、ステップ3000へ進む。なお、認証局13から初めてCRL16を受信する場合は、ステップ3006へ進む。次に、検証サーバ11の失効情報管理部22のファイル書込み機能223は、受信したCRL16の認証局識別子をキーとして、CRL情報テーブル80の作成または更新を行い、取得したCRL16の情報をCRL情報保持部261へ格納する(ステップ3006)。
次に、検証サーバ11のリフレッシュ機能225は、取得したCRL
16の認証局識別子をキーとして、失効データ保持部262に保持された失効データテーブル90の当該認証局識別子欄91の失効したシリアルナンバー92を取得し、CRL情報テーブル80の同じ認証局識別子81欄の失効した証明書のシリアルナンバー83の中に同じシリアルナンバーがないかを確認する(ステップ3007)。同一認証局識別子の失効データテーブル90とCRL情報テーブル80に同じシリアルナンバーが存在した場合、ステップ3008に進む。同じシリアルナンバーが存在しない場合、検証サーバ11は、処理を終了する。
失効データテーブル90とCRL情報テーブル80に同じシリアルナンバーが存在した場合、リフレッシュ機能225は、失効データテーブル90内の当該シリアルナンバーの行を消去する。リフレッシュ機能226は、同一認証局識別子の失効データテーブル90とCRL情報テーブル80に同じシリアルナンバーが存在しなくなるまで、失効データテーブル90の該当のシリアルナンバーの消去を行い(ステップ3008)、同じシリアルナンバーが存在しなくなった場合に、処理を終了する。
以上、本発明の第三の実施例を説明した。本実施例によれば、失効情報更新エージェントを用いて認証局が失効要求を受け付けて、公開鍵証明書が失効するとすぐに失効データを取得し、プッシュ型で検証サーバに失効データを送信するため、失効の検証が行われるまでの時間的な遅れをさらに低減し、かつセッションをプールすることにより検証サーバ11におけるアクセス処理の負荷を軽減し、かつ検証サーバ11内に重複するデータを保持しないように消去することで、公開鍵証明書の有効性確認処理を効率的に行うことができる。