(57)【特許請求の範囲】
【請求項１】
電子証明書の入力を受け付ける証明書入力手段と、
入力された電子証明書を、フィールドの種別を示す情報が含まれるタグ情報領域、電子証明書の実データが含まれる実データ領域、実データのデータ形式を示すデータが含まれる種別領域及び実データ長を示すデータが含まれるデータ長領域を含むフィールドであって、示される内容に応じて実データ領域に実データが設定されるフィールド単位に分割する分割手段と、
フィールド単位に分割して得られた電子証明書の各分割データを、当該各分割データの種別領域に設定されたデータ形式に応じて圧縮を行うデータ圧縮手段と、
入力された電子証明書として、前記データ圧縮手段で圧縮されて得られた圧縮分割データ群を証明書記憶装置に登録する証明書登録手段と、
を備え、
前記データ圧縮手段は、
当該分割データに含まれるタグ情報領域、種別領域又はデータ長領域に含まれているデータが固定値から成るデータ形式の場合、その固定値のデータを省略することによって当該分割データを圧縮し、
当該分割データの実データ領域に設定される実データが１つの文字列から成るデータ形式の場合、所定の圧縮方式によりデータ圧縮をすることによって当該分割データを圧縮し、
当該分割データの実データ領域に設定される実データが複数の文字列の集合から成るデータ形式の場合、補助テーブルを設けて当該複数の文字列を格納すると共に、当該補助テーブルの参照先を示すポインタを当該分割データの圧縮データとして取り扱い、
当該分割データの実データ領域に設定される実データが予め定められたアルゴリズムで表されるデータ形式の場合、そのアルゴリズムに固有の識別情報を割り当て、その割り当てた固有の識別情報を当該分割データの圧縮データとして取り扱う、
ことを特徴とする証明書圧縮装置。
【請求項２】
請求項１に記載の証明書圧縮装置により前記証明書記憶装置に登録された前記圧縮分割データ群を取得する分割データ群取得手段と、
取得した圧縮分割データ群を圧縮分割データごとにデータ伸張するデータ伸張手段と、
伸張されて得られた分割データ群を合成して電子証明書を生成する証明書生成手段と、
を備える証明書伸張装置。
【請求項３】
コンピュータに電子証明書の圧縮処理を実行させるプログラムであって、
電子証明書の入力を受け付ける証明書入力ステップと、
入力された電子証明書を、フィールドの種別を示す情報が含まれるタグ情報領域、電子証明書の実データが含まれる実データ領域、実データのデータ形式を示すデータが含まれる種別領域及び実データ長を示すデータが含まれるデータ長領域を含むフィールドであって、示される内容に応じて実データ領域に実データが設定されるフィールド単位に分割する分割ステップと、
フィールド単位に分割して得られた電子証明書の各分割データを、当該各分割データの種別領域に設定されたデータ形式に応じて圧縮を行うデータ圧縮ステップと、
入力された電子証明書として、前記データ圧縮ステップで圧縮されて得られた圧縮分割データ群を証明書記憶装置に登録する証明書登録ステップと、
をコンピュータに実行させ、
前記データ圧縮ステップは、
当該分割データに含まれるタグ情報領域、種別領域又はデータ長領域に含まれているデータが固定値から成るデータ形式の場合、その固定値のデータを省略することによって当該分割データを圧縮し、
当該分割データの実データ領域に設定される実データが１つの文字列から成るデータ形式の場合、所定の圧縮方式によりデータ圧縮をすることによって当該分割データを圧縮し、
当該分割データの実データ領域に設定される実データが複数の文字列の集合から成るデータ形式の場合、補助テーブルを設けて当該複数の文字列を格納すると共に、当該補助テーブルの参照先を示すポインタを当該分割データの圧縮データとして取り扱い、
当該分割データの実データ領域に設定される実データが予め定められたアルゴリズムで表されるデータ形式の場合、そのアルゴリズムに固有の識別情報を割り当て、その割り当てた固有の識別情報を当該分割データの圧縮データとして取り扱う、
プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子証明書をデータ圧縮する証明書圧縮装置に関する。
【背景技術】
【０００２】
古くから、ネットワークを用いた情報システムにおいて、セキュリティを確保するための認証技術が開発されてきている。近年では、特に、インターネットのような不特定多数のユーザに開放されたオープンネットワークを用いた通信システムに適した認証技術が数多く開発されている。そして、この種の認証技術として、例えば、平文を暗号化するときに使用した鍵と異なる鍵を使用して暗号文を復号する公開鍵暗号化方式が広く利用されている。
【０００３】
通信端末間において、上記公開鍵暗号化方式を利用して、ＳＳＬなどのセキュア通信を行う場合、通信端末内部に自身の秘密鍵とその秘密鍵に対応する公開鍵の証明書とを記憶しておく必要がある。
【０００４】
また、通信端末は、相手端末から送信された証明書を利用する前に、その証明書を発行した認証局群の証明書を用いて、相手端末の証明書が信頼できるかどうかの有効性検証を行う。通信端末は、他の通信端末とセキュア通信を行う場合、その都度、相手端末の証明書や認証局群の証明書をネットワークを介して取得してもよいが、頻繁に通信を行う相手端末の証明書や有効性検証を行う際に用いる認証局群の証明書は、自身に記憶しておくことが望ましい。
【０００５】
しかしながら、上記通信端末のなかには証明書や秘密鍵等を保持する記憶媒体の容量が制限され、必要な証明書や記憶しておくことが望ましい証明書等をすべてその記憶媒体に格納できない場合がある。
【０００６】
そこで、そのような証明書群を容量の制限された記憶媒体に記憶するために、データを圧縮することが考えられる。例えば、特許文献１には、ＸＭＬやＡＳＮ．１等の木構造を持つデータを構造と内容（コンテンツ）とに分けて、それぞれを個別に圧縮するデータ圧縮方法が開示されている。
【０００７】
上記証明書、すなわち電子証明書もＡＳＮ．１で記述されているので、特許文献１の技術を利用することで多少の圧縮は可能である。しかし、特許文献１に開示されたデータ圧縮方法は、証明書固有の形式に特化した圧縮方法ではなく、証明書の圧縮に関しては必ずしも効率的な圧縮方法とは言えない。
【０００８】
【特許文献１】特開２００１−２１７７２０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
本発明は、電子証明書を効率的にデータ圧縮することを目的とする。
【課題を解決するための手段】
【００１０】
本発明に係る証明書圧縮装置は、電子証明書の入力を受け付ける証明書入力手段と、入力された電子証明書を、フィールドの種別を示す情報が含まれるタグ情報領域、電子証明書の実データが含まれる実データ領域、実データのデータ形式を示すデータが含まれる種別領域及び実データ長を示すデータが含まれるデータ長領域を含むフィールドであって、示される内容に応じて実データ領域に実データが設定されるフィールド単位に分割する分割手段と、フィールド単位に分割して得られた電子証明書の各分割データを、当該各分割データの種別領域に設定されたデータ形式に応じて圧縮を行うデータ圧縮手段と、入力された電子証明書として、前記データ圧縮手段で圧縮されて得られた圧縮分割データ群を証明書記憶装置に登録する証明書登録手段と、を備え、前記データ圧縮手段は、当該分割データに含まれるタグ情報領域、種別領域又はデータ長領域に含まれているデータが固定値から成るデータ形式の場合、その固定値のデータを省略することによって当該分割データを圧縮し、当該分割データの実データ領域に設定される実データが１つの文字列から成るデータ形式の場合、所定の圧縮方式によりデータ圧縮をすることによって当該分割データを圧縮し、当該分割データの実データ領域に設定される実データが複数の文字列の集合から成るデータ形式の場合、補助テーブルを設けて当該複数の文字列を格納すると共に、当該補助テーブルの参照先を示すポインタを当該分割データの圧縮データとして取り扱い、当該分割データの実データ領域に設定される実データが予め定められたアルゴリズムで表されるデータ形式の場合、そのアルゴリズムに固有の識別情報を割り当て、その割り当てた固有の識別情報を当該分割データの圧縮データとして取り扱う、ことを特徴とする。
【００１１】
本発明によれば、分割手段により電子証明書をフィールド単位に分割して、分割して得られた分割データごとにデータ圧縮手段がデータ圧縮を行う。これにより、電子証明書をそのまま証明書記憶部に登録したり、その電子証明書を全体をホフマンやＬＺＷ（Lempel-Ziv-Weich）等の圧縮方法によりデータ圧縮するよりも、効率的にデータ圧縮することができ、たとえ記憶容量が制限されたメモリであったとしても、多くの電子証明書を登録することができる。
【００１２】
本発明に係る証明書圧縮装置の一つの態様として、データ圧縮手段は、分割データに含まれる前記内容を示すデータのデータ形式に応じてデータ圧縮を行うことを特徴とする。
【００１３】
本発明によれば、分割データに含まれる各フィールドの内容を示すデータのデータ形式に応じてデータ圧縮を行う。これにより、電子証明書を全体をホフマンやＬＺＷ（Lempel-Ziv-Weich）等の圧縮方法によりデータ圧縮するよりも、効率的にデータ圧縮することができる。
【発明を実施するための最良の形態】
【００１４】
本発明の実施の形態（以下、実施形態とする）について、以下図面を用いて説明する。図１は、本実施形態における証明書圧縮機能を備えた通信システムの機能ブロックを示す図である。図１において、証明書圧縮部１０は、電子証明書を圧縮して証明書記憶部２０に登録するモジュールである。証明書記憶部２０は、通信部４０が他の通信装置とＳＳＬなどのセキュア通信を行う際に利用する電子証明書を記憶するモジュールである。証明書伸張部３０は、証明書記憶部２０に登録された圧縮済み電子証明書を伸張して、通信部４０に提供するモジュールである。通信部４０は、証明書記憶部２０に登録する新たな電子証明書を受信したり、証明書記憶部２０に登録された電子証明書を利用してセキュア通信を行うモジュールである。
【００１５】
本実施形態における通信システムは、一つの装置等に組み込んでもよいし、それぞれ別々の装置等に組み込んでもよい。また、本実施形態における通信システムの証明書記憶部２０は、電子証明書を記憶するメモリの記憶容量が比較的少ない装置等、例えば、ＲＦＩＤカードや画像形成装置などに組み込まれることが好適である。そして、本実施形態では、電子証明書を記憶するメモリの記憶容量がたとえ小さい場合でも、できるだけ多くの電子証明書を記憶するために証明書圧縮部１０において電子証明書を圧縮する。
【００１６】
図２は、証明書圧縮部１０が圧縮するＡＳＮ．１で定義された電子証明書の構造の例を示す図である。図２のように電子証明書は、示される内容に応じて複数のフィールド、例えばフィールドＦ１０１〜Ｆ１０９に分かれて構成される。
【００１７】
そして、各フィールドは、図３に示すようなデータ構造よりなるデータ群で構成される。すなわち、各フィールドは、どのフィールドであるかを示すデータが含まれるタグ情報領域２０１と、後述の実データ領域２０４に示される実データのデータ形式（文字列、バイト列、整数、ビット列など）を示すデータが含まれる種別領域２０２と、実データのデータ長（バイト数）を示すデータが含まれるデータ長領域２０３と、具体的な内容が示された実データを示すデータが含まれる実データ領域２０４とで構成されるデータ群よりなる。本実施形態ではこのフィールドのデータ構造に着目して電子証明書の圧縮を効率的に行う。
【００１８】
以下、証明書圧縮部１０における電子証明書の圧縮方法についてさらに詳細を述べる。図４は、本実施形態における証明書圧縮部１０の詳細の機能ブロックを示す図である。図４において、証明書データ入力部１１は、通信部４０を介して受信した証明書記憶部２０への登録対象の電子証明書の入力を受け付けるモジュールである。フィールド識別部１２は、入力された電子証明書をフィールド単位で分割して、各フィールドの種別を順次識別するモジュールである。格納パターン記憶部１３は、ＩＤとフィールドとの対応付け情報とフィールドごとに定められた証明書データ格納テーブルのデータ格納領域へのデータ格納方法とを記憶するモジュールである。
【００１９】
ここで、証明書データ格納テーブルとは、図５に示すような電子証明書を構成する各フィールドに関するデータを格納するテーブルのことをいう。このテーブルは、予め各フィールドに固有に割り振られたＩＤを格納するＩＤ領域３０１と、フィールドに含まれるデータを格納するデータ格納領域３０２とから構成される。そして、本実施形態では証明書データ格納テーブルのデータ格納領域３０２へのデータ格納方法をフィールドを構成する実データ領域に含まれる実データのデータ形式に応じて変更することで、効率的に証明書の圧縮を行う。
【００２０】
データ格納部１４は、識別されたフィールドごとに定めた格納方法を格納パターン記憶部１３から選択して、その選択した格納方法に基づき順次そのフィールドのＩＤに対応するデータ格納領域３０２にそのフィールドに関するデータを格納するモジュールである。
【００２１】
ここで、フィールドに関するデータとは、そのフィールドに示されたデータ群のうち、電子証明書を特徴づけるデータのことをいう。本実施形態では、フィールドに示されるデータ群のうち、実データを示すデータをその電子証明書を特徴付けるデータとして抽出し、電子証明書間で共通するデータを極力省略することで、証明書データ格納テーブルに格納する電子証明書のデータ量を削減し圧縮を行う。なお、電子証明書を特徴づけるデータがさらにホフマンやＬＺＷ等の圧縮方法によりデータ圧縮が可能であれば、データ格納部１４はそのデータに対して圧縮を行った上でそのデータをデータ格納領域３０２に格納する。
【００２２】
証明書登録部１５は、入力された電子証明書の代わりに、その電子証明書に対応する証明書データ格納テーブルを証明書記憶部２０に登録するモジュールである。
【００２３】
本実施形態によれば、データ格納部１４が、受信した電子証明書を構成する各フィールドに示されるデータ群の中から、その電子証明書を特徴づけるデータを抽出して、その抽出したデータを必要に応じてさらに圧縮処理を行い証明書データ格納テーブルに格納する。そして、電子証明書を構成するすべてのフィールドに関するデータが格納された証明書データ格納テーブルを、証明書登録部１５が証明書記憶部２０に登録する。これにより、受信した電子証明書をそのまま証明書記憶部２０に登録したり、その電子証明書を全体をホフマンやＬＺＷ（Lempel-Ziv-Weich）等の圧縮方法によりデータ圧縮するよりも、効率的にデータ圧縮することができ、記憶容量が制限されたメモリにもより多くの電子証明書を登録することができる。
【００２４】
図６は、電子証明書のフィールド群の一例を示す図であり、以下、図６に示すフィールド群について本実施形態におけるデータ格納領域３０２へのデータ格納方法についてさらに具体的に説明する。
【００２５】
［Version番号］
Version番号フィールドは、そのフィールドが示す内容として証明書のバージョンが示されるフィールドである。そして、Version番号フィールドのタグ情報領域２０１と種別領域２０２とデータ長領域２０３とに示されるデータは固定値である。一方、実データ領域２０４に示されるデータはＡＳＮ．１において現在「０」、「１」、「２」の三種類が定義されているため、「０」、「１」、「２」のいずれかが示される。そこで、Version番号フィールドに関しては、固定値部分を省略し、Version番号フィールドのＩＤ＝１に対応する証明書データ格納テーブルのデータ格納領域に実データ領域に示される値、「０」、「１」、「２」のいずれかを格納する。これにより、固定値部分が省略され、その分だけデータ圧縮されたこととなる。
【００２６】
［シリアル番号］
シリアル番号フィールドは、そのフィールドが示す内容として証明書に割り当てられた番号が整数値（多バイト長）で示されるフィールドである。ここで、シリアル番号は、証明書ごとに固有な番号であるため、データの圧縮は期待できない。しかし、Version番号フィールドと同様に、タグ情報領域２０１と種別領域２０２とデータ長領域２０３とに示されるデータは固定値である。よって、シリアル番号フィールドに関しては、固定値部分を省略し、シリアル番号フィールドのＩＤ＝２に対応する証明書データ格納テーブルのデータ格納領域に実データ領域に示されるシリアル番号の値を格納する。
【００２７】
［Issuer（発行者）］
Issuerフィールドは、そのフィールドが示す内容として証明書を発行し署名を施したエンティティ（証明書発行者、ＣＡ）を識別する名前が示されるフィールドである。そして、Issuerフィールドの実データ領域のデータは、DirectoryName形式で表現され、複数の文字列の集合よりなる。そこで、Issuerフィールドに関しては、上記の証明書データ格納テーブルのデータ格納領域にそのまま複数の文字列を登録するのではなく、証明書データ格納テーブルとは別に図７に示すような補助テーブルを用意する。そして、各階層における文字列をそれぞれ対応する補助テーブルのデータ格納領域に登録する。なお、文字列は、PrintableStringもしくはUTF8Stringよりなるため、登録する前にその形式に併せてＬＺＷやホフマン圧縮などにより圧縮を行うことでさらにデータ圧縮が期待できる。一方、証明書データ格納テーブルのIssuerフィールドのＩＤ＝３に対応するデータ格納領域には、補助テーブルの参照先を示すポインタのみ登録する。これにより、タグ情報領域２０１と種別領域２０２とデータ長領域２０３とに示される固定値に関して省略できるだけでなく、各階層における文字列をそれぞれデータ形式に適した圧縮方式により圧縮することができる。
【００２８】
［validity］
validityフィールドは、そのフィールドが示す内容として証明書の有効期限が示されるフィールドであり、開始日と満了日が示される。開始日及び満了日は、ＹＹＹＹＭＭＤＤＨＨＭＭＳＳＺ形式で年月日時分秒が示され、「Ｚ」は固定値であり、その他は０−９で示される。すなわち、実データ領域に示されるデータは、０−９とＺの１１種類の文字列で示される。そこで、validityフィールドに関しては、実データ領域のデータを、１１種類の文字列のデータ圧縮に適した方式、例えばホフマン圧縮などにより圧縮して、validityフィールドのＩＤ＝４に対応する証明書データ格納テーブルのデータ格納領域に登録する。
【００２９】
［Subject（主体者）］
Subjectフィールドは、そのフィールドが示す内容として、証明書を所有し、証明書に格納されている公開鍵に対応する秘密鍵を所有しているエンティティを識別する名前が示されるフィールドである。Subjectフィールドの実データ領域のデータは、Issuerフィールドと同様にDirectoryName形式で表現され、複数の文字列の集合よりなる。よって、Issuerフィールドと同様にSubjectフィールド用の補助テーブルを用意し、各階層における文字列をそれぞれ対応する補助テーブルのデータ格納領域に登録する。一方、証明書データ格納テーブルのSubjectフィールドのＩＤ＝５に対応するデータ格納領域には、その補助テーブルの参照先を示すポインタのみ登録する。
【００３０】
［subjectPublicKeyInfo］
subjectPublicKeyInfoフィールドは、そのフィールドが示す内容として証明書所有者が所有する秘密鍵に対応している公開鍵の情報が示されるフィールドである。公開鍵の情報は、アルゴリズムを識別するための識別子（algorithm）と鍵そのものの値（subjectPublicKey）とから構成される。algorithmは、予め定められた１０数種類の特定パターンで表される。そこで、予め各パターンに固有のアルゴリズム用ＩＤを割り当て、そのアルゴリズム用ＩＤのみを、subjectPublicKeyInfoフィールドのalgorithm部分のＩＤ＝６に対応するデータ格納領域に登録することで圧縮を行う。一方、subjectPublicKeyは、512bit-2048bitほどのバイナリデータであり、圧縮は期待できないため、subjectPublicKeyInfoフィールドのsubjectPublicKey部分のＩＤ＝７に対応するデータ格納領域にそのバイナリデータをそのまま登録する。
【００３１】
［issuerUniqueID］および［subjectUniqueID］
issuerUniqueIDフィールドは、そのフィールドが示す内容として発行者の固有の発行者用ＩＤが示されるフィールドであり、subjectUniqueIDフィールドは、そのフィールドが示す内容として、主体者の固有の主体者ＩＤが示されるフィールドである。ただ、これらのＩＤはバイナリデータのため、データ自体の圧縮は期待できない。そこで、issuerUniqueIDフィールドのＩＤ＝８に対応するデータ格納領域に発行者の固有の発行者ＩＤを示すバイナリデータを登録し、subjectUniqueIDフィールドのＩＤ＝９に対応するデータ格納領域に主体者の固有の主体者ＩＤを示すバイナリデータを登録する。
【００３２】
［extensions］
extensionsフィールドは、鍵の使用目的、所有者や発行者の別名、失効リストの配付点といった追加情報が示されるフィールドである。追加情報は複数含めることができ、追加情報はそれぞれ、拡張子の内容を識別するためのＩＤが示されるextnＩＤ領域と、拡張子の情報が重要であるか否かを示すcritical領域と、拡張子が示す実データを示すextnValue領域とで構成される。だた、追加情報は様々なデータが示されるため、extensionsフィールドに示される追加情報をすべて同一パターンで証明書データ格納テーブルに格納するとデータ圧縮の効率が高くない。したがって、追加情報ごとにそれぞれのパターンで圧縮することが望ましい。そこで、以下いくつかの追加情報について個別に証明書データ格納テーブルへの格納方法について説明する。
【００３３】
［AuthrityKeyIdentifier］
AuthrityKeyIdentifierフィールドは、証明書の利用者が、証明書や失効リストの署名を検証する場合に使用する公開鍵証明書を厳密に識別するために使用するフィールドである。そして、critical領域には、TrueかFalse、つまり「１」か「０」が示され、extnValue領域には、認証局の公開鍵に応じて変わるバイナリデータが示される。そこで、issuerUniqueIDフィールドのＩＤ＝１０に対応する証明書データ格納テーブルのデータ格納領域に、critical領域とextnValue領域とに示されたデータをまとめてＬＺＷなどで圧縮して格納する。なお、証明書データ格納テーブルに第２のデータ格納領域を定めて、critical領域とextnValue領域とをそれぞれ別々に格納してもよい。
【００３４】
［SubjectKeyIdentifier］
SubjectKeyIdentifierフィールドは、所有者公開鍵を厳密に識別するために使用するフィールドである。ただ、データ形式は、AuthrityKeyIdentifierフィールドと同一であり、extnValue領域には、認証局の公開鍵に応じて変わるバイナリデータが示される。そこで、issuerUniqueIDフィールドと同様に、AuthrityKeyIdentifierフィールドのＩＤ＝１１に対応する証明書データ格納テーブルのデータ格納領域に、critical領域とextnValue領域とに示されたデータをまとめてＬＺＷなどで圧縮して格納するか、もしくは証明書データ格納テーブルに第２のデータ格納領域を定めて、critical領域とextnValue領域とをそれぞれ別々に格納する。
【００３５】
［keyUsage］
keyUsageフィールドは、証明書利用者の要求または認証局運用者によりポリシーに従って設定されるフィールドであり、証明書の利用目的が示されるフィールドである。そして、critical領域には、上記と同様にTrueかFalse、つまり「１」か「０」が示され、extnValue領域には、９bitのBitStringのデータが示され、２９通り（５１２通り）の値をとる。そこで、AuthrityKeyIdentifierフィールドのＩＤ＝１２に対応する証明書データ格納テーブルのデータ格納領域に、critical領域とextnValue領域とに示されたデータをまとめてＬＺＷなどで圧縮して格納するか、もしくは証明書データ格納テーブルに第２のデータ格納領域を定めて、critical領域とextnValue領域とをそれぞれ別々に格納する。
【００３６】
［subjectAltName］
subjectAltNameフィールドは、主体者に別名を付与する際に使用するフィールドである。critical領域には、上記と同様にTrueかFalse、つまり「１」か「０」が示され、extnValue領域には、S/MIMEでは電子メールアドレス（RFC822Name）、SSL/TLSではホスト名（DNSName）もしくはＩＰアドレス（ビットデータ）が示される。そこで、subjectAltNameフィールドのＩＤ＝１３に対応する証明書データ格納テーブルのデータ格納領域に、critical領域とextnValue領域とに示されたデータをまとめてＬＺＷなどで圧縮して格納する。
【００３７】
以上がextensionsフィールドに示される追加情報に関する証明書データ格納テーブルへの登録方法である。
【００３８】
さらにＣＡによる署名が示されるフィールドに関する証明書データ格納テーブルへの登録方法について説明する。
【００３９】
［signtureAlgorithm］
signtureAlgorithmフィールドの実データ領域には、１０数種類のパターンの値のみが示される。したがって、subjectPublicKeyInfoフィールドのalgorithm部分と同様に、各パターンにsigntureAlgorithm用ＩＤを割り当て、そのsigntureAlgorithm用ＩＤのみを、signtureAlgorithmフィールドのＩＤ＝１４に対応するデータ格納領域に格納することで圧縮を行う。
【００４０】
［signatureValue］
signtureAlgorithmフィールドの実データ領域には、上部のすべてのデータの電子署名が示され、それらは200byte程度のバイナリデータである。そこで、signtureAlgorithmフィールドのＩＤ＝１５に対応する証明書データ格納テーブルのデータ格納領域に、バイナリデータをホフマン圧縮などで圧縮して格納する。
【００４１】
以上、電子証明書を構成するフィールド群のうちいくつかのフィールドを例にして、本実施形態におけるデータ格納領域へのデータ格納方法について説明した。その他のフィールドに関しても上記と同様にフィールドに示される実データのデータ形式に応じて証明書データ格納テーブルのデータ格納領域へのデータ格納方法を定めて、順次データを格納すれば、効率的に電子証明書の圧縮を行うことができる。
【００４２】
なお、上記の各フィールドに予め定義するＩＤは、すべて固有のＩＤを割り振る例について説明した。しかし、実データのデータ形式が同一でデータ格納領域への格納方法が同一のフィールド群については一つのＩＤで表現してもよい。この場合、図８に示すように証明書データ格納テーブルには、同一のＩＤが複数存在するが、行番号の小さい順にそれぞれフィールドの種別を定めておき、その順番によりフィールド種別を特定する。例えば、IssuerフィールドとSubjectフィールドとは、上述のようにDirectoryName形式で表現され、複数の文字列の集合よりなる点で共通し格納方法が同一である。よって、IssuerフィールドとSubjectフィールドのＩＤをともにＩＤ＝３と定義する。そして、証明書データ格納テーブルにおける行番号が小さい順に、１番目をIssuerフィールド、２番目をSubjectフィールドと定める。これにより、証明書データ格納テーブルに格納されたデータがどのフィールドに関するデータであるかを識別する。このように、フィールドに割り振るＩＤを共通化することで、ＩＤを表現するのに必要なデータ量を削減することができるため、さらに電子証明書の圧縮が期待できる。
【００４３】
実施形態によれば、データ格納部１４が、受信した電子証明書を構成する各フィールドに示されるデータ群の中から、その電子証明書を特徴づけるデータ、つまり実データを抽出して、その抽出したデータを必要応じてさらに圧縮処理を行い証明書データ格納テーブルに格納する。そして、電子証明書を構成するすべてのフィールドに関するデータが格納された証明書データ格納テーブルを、証明書登録部１５が証明書記憶部２０に登録する。これにより、受信した電子証明書をそのまま証明書記憶部２０に登録したり、その電子証明書を全体をホフマンやＬＺＷ等の圧縮方法によりデータ圧縮するよりも、効率的にデータ圧縮することができ、記憶容量が制限されたメモリにもより多くの電子証明書を登録することができる。
【００４４】
続いて、証明書伸張部３０における電子証明書の伸張方法について説明する。図９は、証明書伸張部３０の詳細の機能ブロックを示す図である。図９において、証明書要求入力部３１は、通信部４０が通信端末等とセキュア通信などを行う際に使用する電子証明書の要求を受け付けるモジュールである。テーブル取得部３２は、要求された電子証明書に対応する証明書データ格納テーブルを、証明書記憶部２０から取得するモジュールである。格納パターン記憶部３３は、証明書データ格納テーブルのＩＤ領域に示されるＩＤとフィールド種別の対応付け情報と、証明書データ格納テーブルのデータ格納領域へのデータ格納方法とを記憶するモジュールである。なお、格納パターン記憶部３３に記憶されるデータは証明書圧縮部１０における格納パターン記憶部１３に記憶されるデータと同一のためこれらを共通化して、一つのモジュールで構成してもよい。
【００４５】
証明書生成部３４は、テーブル取得部３２が取得した証明書データ格納テーブルのデータ格納領域から順次データを取り出し、格納パターン記憶部３３に記憶された情報に基づいて、順次各フィールドの元のデータすなわち図６に示すデータ構造をもつデータを生成し、生成されたそれぞれのフィールドを合成して、取得した証明書データ格納テーブルに対応する電子証明書を生成するモジュールである。証明書出力部３５は、証明書生成部３４が生成した電子証明書を通信部４０に出力するモジュールである。
【００４６】
このように構成された証明書伸張部３０によれば、証明書圧縮部１０において格納パターン記憶部１３に記憶された情報に基づいて、証明書記憶部２０に登録された証明書データ格納テーブルをもとの電子証明書に戻すことができる。
【図面の簡単な説明】
【００４７】
【図１】本実施形態における通信システムの機能ブロックを示す図である。
【図２】電子証明書のデータ構造の一例を示す図である。
【図３】電子証明書を構成するフィールドのデータ構造を示す図である。
【図４】本実施形態における証明書圧縮部の機能ブロックを示す図である。
【図５】本実施形態において証明書記憶部に登録する証明書データ格納テーブルを示す図である。
【図６】電子証明書を構成するフィールド群の一例を示す図である。
【図７】本実施形態において、DirectoryName形式で表現されたデータを格納する補助テーブルを示す図である。
【図８】本実施形態において証明書記憶部に登録する証明書データ格納テーブルの別の態様を示す図である。
【図９】本実施形態における証明書伸張部の機能ブロックを示す図である。
【符号の説明】
【００４８】
１０  証明書圧縮部、１１  証明書データ入力部、１２  フィールド識別部、１３  格納パターン記憶部、１４  データ格納部、１５  証明書登録部、２０  証明書記憶部、３０  証明書伸張部、３１  証明書要求入力部、３２  テーブル取得部、３３  格納パターン記憶部、３４  証明書生成部、３５  証明書出力部、４０  通信部。
【図１】
0004682530.tif 000002
【図２】
0004682530.tif 000003
【図３】
0004682530.tif 000004
【図４】
0004682530.tif 000005
【図５】
0004682530.tif 000006
【図６】
0004682530.tif 000007
【図７】
0004682530.tif 000008
【図８】
0004682530.tif 000009
【図９】
0004682530.tif 000010