(57)【要約】【課題】  既存の可変長データフォーマットにより記述された可変長データを低い演算コストで解析可能とする技術を提供する。【解決手段】  データ処理装置は、可変長データを入力する可変長データ入力手段と、前記可変長データのフォーマットを示すフォーマット情報に対応する識別情報を該可変長データに付与する付与手段と、前記識別情報が、前記可変長データにおいて占める箇所を示すオフセット情報を取得するオフセット情報取得手段と、前記識別情報が付与された可変長データと、前記オフセット情報とを関連づけて記憶手段に記憶する記憶制御手段と、を備え、前記可変長データは公開鍵証明書を構成する情報であることを特徴とする。【選択図】  図２
2007312357.tif 000002
【特許請求の範囲】
【請求項１】
可変長データを入力する可変長データ入力手段と、
前記可変長データのフォーマットを示すフォーマット情報に対応する識別情報を該可変長データに付与する付与手段と、
前記識別情報が、前記可変長データにおいて占める箇所を示すオフセット情報を取得するオフセット情報取得手段と、
前記識別情報が付与された可変長データと、前記オフセット情報とを関連づけて記憶手段に記憶する記憶制御手段と、
を備え、
前記可変長データは公開鍵証明書を構成する情報である
ことを特徴とするデータ処理装置。
【請求項２】
可変長データのフォーマットを示すフォーマット情報と、識別情報とを関連づけて記憶する第２記憶手段
を更に備えることを特徴とする請求項１に記載のデータ処理装置。
【請求項３】
前記公開鍵証明書を構成する情報は、証明対象のデータのハッシュ値、及び、署名データの少なくともいずれかを含む
ことを特徴とする請求項１又は２に記載のデータ処理装置。
【請求項４】
前記公開鍵証明書はＸ.５０９公開鍵証明書であり、
前記識別情報はＸ.５０９公開鍵証明書の拡張部に格納される
ことを特徴とする請求項１乃至３のいずれか１項に記載のデータ処理装置。
【請求項５】
前記可変長データ入力手段で入力対象となる複数のデータのうち少なくともいずれかを予め定められた長さで生成するデータ生成手段
を更に備えることを特徴とする請求項１乃至４のいずれか１項に記載のデータ処理装置。
【請求項６】
前記データ生成手段は、
署名対象データと、固定長データを生成するための補正データとに基づいて署名データを計算し、該署名データのビット長が予め定められた長さでない場合は、予め定められた長さの署名データが計算されるまで、前記補正データを更新して該計算を繰り返すことにより、署名データを生成する
ことを特徴とする請求項５に記載のデータ処理装置。
【請求項７】
前記データ生成手段は、公開鍵データを予め定められた長さで生成する
ことを特徴とする請求項５に記載のデータ処理装置。
【請求項８】
可変長データである解析対象データを入力する入力手段と、
データのフォーマットを示すフォーマット情報と、識別情報とを関連づけて記憶する記憶手段と、
前記解析対象データから前記識別情報を検出する検出手段と、
前記識別情報に対応するフォーマット情報に基づいて、前記解析対象データを解析する解析手段と、
を備えることを特徴とするデータ処理装置。
【請求項９】
前記入力手段は、更に、前記解析対象データにおいて前記識別情報が占める箇所を示すオフセット情報を入力し、
前記検出手段は前記オフセット情報に基づいて前記検出を行う
ことを特徴とする請求項８に記載のデータ処理装置。
【請求項１０】
前記オフセット情報は、前記解析対象データにおいて前記識別情報が占める箇所の、開始ビット位置及びデータ長の少なくともいずれかを含む
ことを特徴とする請求項９に記載のデータ処理装置。
【請求項１１】
前記解析対象データは公開鍵証明書である
ことを特徴とする請求項８乃至１０のいずれか１項に記載のデータ処理装置。
【請求項１２】
前記公開鍵証明書はＸ.５０９公開鍵証明書であり、
前記識別情報はＸ.５０９公開鍵証明書の拡張部に格納される
ことを特徴とする請求項１１に記載のデータ処理装置。
【請求項１３】
入力手段が、可変長データを入力する可変長データ入力工程と、
付与手段が、前記可変長データのフォーマットを示すフォーマット情報に対応する識別情報を該可変長データに付与する付与工程と、
オフセット情報取得手段が、前記識別情報が、前記可変長データにおいて占める箇所を示すオフセット情報を取得するオフセット情報取得工程と、
記憶制御手段が、前記識別情報が付与された可変長データと、前記オフセット情報とを関連づけて記憶手段に記憶する記憶制御工程と、
を備え、
前記可変長データは公開鍵証明書を構成する情報である
ことを特徴とするデータ処理装置の制御方法。
【請求項１４】
データのフォーマットを示すフォーマット情報と、識別情報とを関連づけて記憶する記憶手段を備えるデータ処理装置の制御方法であって、
入力手段が、可変長データである解析対象データを入力する入力工程と、
検出手段が、前記解析対象データから識別情報を検出する検出工程と、
解析手段が、前記識別情報に対応するフォーマット情報に基づいて、前記解析対象データを解析する解析工程と、
を備えることを特徴とするデータ処理装置の制御方法。
【請求項１５】
データ生成装置とデータ解析装置とを有するデータ処理システムであって、
前記データ生成装置は、
可変長データを入力する可変長データ入力手段と、
前記可変長データのフォーマットを示すフォーマット情報に対応する識別情報を該可変長データに付与する付与手段と、
前記識別情報が、前記可変長データにおいて占める箇所を示すオフセット情報を取得するオフセット情報取得手段と、
前記識別情報が付与された可変長データと、前記オフセット情報とを関連づけて記憶手段に記憶する記憶制御手段と、
を備え、
前記データ解析装置は、
前記識別情報が付与された解析対象データとしての可変長データと、前記オフセット情報とを取得する取得手段と、
データのフォーマットを示すフォーマット情報と、識別情報とを関連づけて記憶する第２記憶手段と、
前記オフセット情報に基づいて、前記解析対象データから前記識別情報を検出する検出手段と、
前記識別情報に対応するフォーマット情報に基づいて、前記解析対象データを解析する解析手段と、
を備え、
前記可変長データは公開鍵証明書を構成する情報である
ことを特徴とするデータ処理システム。
【請求項１６】
コンピュータを請求項１乃至１２のいずれか１項に記載のデータ処理装置として機能させるためのプログラム。
【請求項１７】
請求項１６に記載のプログラムを格納したコンピュータで読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、可変長データを効率的に解析する技術、特に公開鍵証明書を効率的に解析する技術に関する。
【背景技術】
【０００２】
文書データや画像データを含むデジタルデータがインターネットなどの広域ネットワーク網を介して流通する状況においては、デジタルデータは改変が容易であるため、第三者によってデジタルデータが改ざんされる危険性がある。このような危険性に鑑み、送信されてきたデータが改ざんされたかどうかを受信者が検出することを可能にする、改ざん防止用の付加データを検証する方式としての、デジタル署名という技術が知られている。デジタル署名技術は、データ改ざんだけではなく、インターネット上でのなりすましや否認などを防止する機能も有している。
【０００３】
＜＜デジタル署名＞＞
図１０は、署名作成処理および署名検証処理を表す模式図であり、この図を参照してデジタル署名技術の概要を説明する。デジタル署名データ生成にはハッシュ関数と公開鍵暗号が用いられる。以下、秘密鍵（Private key）をＫｓ２１０６、公開鍵（Public Key）をＫｐ２１１１とする。
【０００４】
デジタル署名の生成においては、まず、入力データ（Message）Ｍ２１０１にハッシュ処理２１０２を施して固定長データであるダイジェストＨ（Ｍ）（符号２１０３）を算出する。このハッシュ処理２１０２には後述のハッシュ関数が用いられる。次に、秘密鍵Ｋｓ２１０６でこの固定長データＨ（Ｍ）に変換処理２１０４を施してデジタル署名データＳ（符号２１０５）を作成する。データの送信者は、このような処理の後、デジタル署名データＳ（符号２１０５）と入力データＭ２１０１を受信者に送信する。
【０００５】
受信者は、検証処理２１１２において、まず、デジタル署名データＳ（符号２１１０）に対して公開鍵Ｋｐ２１１１で変換（復号）処理を施して得られるデータを取得する。次に、そのデータが、入力データＭ２１０７にハッシュ処理２１０８を施して得られるデータ２１０９と一致するかどうかを検証する。この検証の結果（２１１３）、両者が一致しない場合はデータＭの改ざんが行われたと判定し、両者が一致する場合は改ざんが行われなかったと判定する。受信者はこのようにして改ざんの有無を検出することができる。
【０００６】
なお、デジタル署名方式にはＲＳＡ、ＤＳＡ（詳細は後述）などの公開鍵暗号に基づく方式が知られている。これらのデジタル署名の安全性は、秘密鍵を所有者以外のエンティティが、署名を偽造、もしくは秘密鍵を解読することが計算量的に困難であることに基づいている。
【０００７】
（ハッシュ関数）
次に、ハッシュ関数について説明する。ハッシュ関数は、デジタル署名方式において、署名対象データを非可逆に圧縮して演算対象のデータ量を削減し、これにより署名付与処理時間を短縮するために、デジタル署名処理とともに利用される。ハッシュ関数は、入力された任意の長さのデータＭに対して処理を行い、一定の長さの出力データＨ（Ｍ）を生成する機能を持っている。ここで、出力Ｈ（Ｍ）を平文データＭのハッシュデータと呼ぶ。
【０００８】
特に、一方向性ハッシュ関数は、データＭを与えた時、Ｈ（Ｍ’）＝Ｈ（Ｍ）となる平文データＭ’の算出が計算量的に困難であるという性質を持っている。このような一方向性ハッシュ関数としては、ＭＤ２、ＭＤ５、ＳＨＡ−１などの標準的なアルゴリズムが知られている。
【０００９】
（公開鍵暗号）
次に、公開鍵暗号について説明する。公開鍵暗号は２つの対応する鍵を利用し、一方の鍵で暗号処理したデータは、もう一方の鍵でしか復号処理できないという性質を有する。このような２つの鍵のうち、一方の鍵は公開鍵と呼ばれ、外部に公開して利用される。もう一方の鍵は秘密鍵と呼ばれ、秘密に管理されて本人のみに利用される。
【００１０】
公開鍵暗号方式を用いたデジタル署名としては、ＲＳＡ署名、ＤＳＡ署名、Schnorr署名などが知られている。ここでは例として非特許文献１に開示されたＲＳＡ署名と、非特許文献２に開示されたＤＳＡ署名について説明する。
【００１１】
（ＲＳＡ署名）
素数ｐ、ｑを生成しｎ＝ｐｑとおく。λ（ｎ）をｐ−１とｑ−１の最小公倍数とする。λ（ｎ）と互いに素な適当な元ｅを選び、ｄ＝１／ｅ（mod λ（ｎ））とおく。公開鍵をｅおよびｎとし、秘密鍵をｄとする。またＨ（）をハッシュ関数とする。
[ＲＳＡ署名作成] 文書Ｍに対する署名の作成手順
ｓ：＝Ｈ（Ｍ）d（mod ｎ）を署名データとする。
[ＲＳＡ署名検証] 文書Ｍに係る署名（ｓ，Ｔ）の検証手順
Ｈ（Ｍ）＝ｓe（mod ｎ）か成立するか否かを検証する。成立する場合は改ざん無し、成立しない場合は改ざん有りと判定する。
【００１２】
（ＤＳＡ署名）
ｐ、ｑを素数とし、ｐ−１はｑを割り切るとする。ｇをＺp*（位数ｐの巡回群Ｚpから０を省いた乗法群）から任意に選択した、位数ｑの元（生成元）とする。Ｚp*から任意に選択したｘを秘密鍵とし、それに対する公開鍵ｙをｙ：＝ｇx（mod ｐ）とおく。またＨ（）をハッシュ関数とする。
[ＤＳＡ署名作成] 文書Ｍに対する署名の作成手順
１）αをＺqから任意に選択し、Ｔ：＝(ｇα mod ｐ) mod ｑとおく。
２）ｃ：＝Ｈ（Ｍ）とおく。
３）ｓ：＝α-1（ｃ＋ｘＴ） mod ｑとおき、（ｓ，Ｔ）を署名データとする。
[ＤＳＡ署名検証] 文書Ｍに係る署名（ｓ，Ｔ）の検証手順
Ｔ＝（ｇh(M)s^(-１)ｙTs^(-１) mod ｐ） mod ｑが成立するか否かを検証する。成立する場合は改ざん無し、成立しない場合は改ざん有りと判定する。
【００１３】
＜＜公開鍵認証基盤＞＞
クライアント・サーバ間の通信において、クライアントがサーバのリソースにアクセスする際に、利用者認証が必要となることが多い。利用者認証において用いられる技術の一つとしてＩＴＵ−Ｕ勧告のＸ.５０９等の公開鍵証明書が知られている（非特許文献３）。公開鍵証明書は公開鍵とその利用者との対応を保証するデータであり、認証機関と呼ばれる信用のおける第３者機関によるデジタル署名が施されている。例えば、ブラウザで実装されているＳＳＬ（Secure Sockets Layer）を用いた利用者認証は、ユーザにより提示された公開鍵証明書内に含まれる公開鍵に対応する秘密鍵をユーザが持っているかどうか確認することに基づいて行われる。
【００１４】
公開鍵証明書は認証機関による署名が施されていることで、公開鍵証明書内に含まれているユーザやサーバの公開鍵に関する情報を信頼することができる。つまり、公開鍵証明書に含まれる情報の信頼性は、認証機関によるデジタル署名の安全性に基づいている。このため、認証機関による署名作成において用いられる秘密鍵が漏洩された或いは脆弱になった場合、この認証機関から発行されたすべての公開鍵証明書は信頼性を失い、無効になってしまう。
【００１５】
公開鍵証明書の一例であるＩＴＵ−Ｔ勧告Ｘ.５０９ ｖ.３では、認証機関による被署名データとして証明対象となるエンティティ（Subject）のＩＤおよび公開鍵情報が含まれる。認証機関による署名データは、これらの被署名データにハッシュ関数を施したダイジェストに対して前述したＲＳＡアルゴリズムなどの署名演算を行うことにより生成される。なお、被署名データにはextensionsというオプショナルなフィールドが設けられており、アプリケーションやプロトコルに独自の新しい拡張データを含ませることが可能である。
【００１６】
（Ｘ.５０９ ｖ.３フォーマット）
図１１は、Ｘ.５０９ ｖ.３で規定される公開鍵証明書のフォーマットを模式的に示す図である。以下、それぞれのフィールドに格納される情報について説明する。
【００１７】
version２２０１にはＸ.５０９のバージョンが格納される。このフィールドはオプショナルであり、省略された場合はｖ１を表わす。serialNumber２２０２には認証局がこの公開鍵証明書に対してユニークに割り当てるシリアル番号が格納される。signature２２０３には公開鍵証明書の署名方式が格納される。issuer２２０４には公開鍵証明書の発行者である認証局のＸ.５００識別名が格納される。validity２２０５には公開鍵の有効期限（開始日時と終了日時）が格納される。subject２２０６には本証明書内に含まれる公開鍵に対応する秘密鍵の所有者のＸ.５００識別名が格納される。subjectPublicKeyInfo２２０７には証明対象の公開鍵が格納される。
【００１８】
issuerUniqueIdentifier２２０８及びsubjectUniqueIdentifier２２０９はｖ２から追加されたオプショナルなフィールドである。これらには、それぞれ認証局の固有識別子、所有者の固有識別子が格納される。
【００１９】
extensions２２１０はｖ３で追加されたオプショナルなフィールドである。これには、拡張型（extnId）２２１１、拡張値（extnValue）２２１２及びクリティカルビット（critical）２２１３の３つ組の集合が格納される。ｖ３拡張フィールド（extensions）２２１０には、Ｘ.５０９で定められた標準の拡張型だけでなく、独自の新しい拡張型も組み込むことが可能である。そのためｖ３拡張型をどう認識するかはアプリケーション側に依存することとなる。なお、その拡張型が必須であるかまたは無視可能かが、クリティカルビット２２１３により表わされる。
【００２０】
認証局（認証機関）は、上記の公開鍵証明書を構成するデータに、認証局の秘密鍵を用いて署名２２１４を生成し、公開鍵証明書に添付する。公開鍵証明書の利用者は、署名２２１４を用いて公開鍵証明書の正当性を検証することができる。
【００２１】
（公開鍵証明書の解析）
前述のようにデジタル署名技術の利用により、インターネット上でのなりすまし、データ改竄、否認などを防止する等の効果がもたらされる。また、このような効果をもたらす信頼基盤として公開鍵証明書が流通するインフラが整備されている。近年その信頼基盤を利用するデバイスは多様化しており、ＰＣやサーバだけでなく、情報家電や携帯電話、ＰＤＡなどでも利用されつつある。このため、公開鍵証明書の解析に要する演算コストは携帯端末等においても演算できる程度に小さいことが求められる。
【００２２】
しかし、公開鍵証明書のフォーマットのデファクトスタンダードとして利用されているＸ.５０９公開鍵証明書は可変長データの一般的記述方式であるＡＳＮ.１とそのエンコーディング方式ＤＥＲ（非特許文献４）で記述されている。このため、公開鍵証明書を解釈するデバイスは暗号演算に加えＡＳＮ.１のパース、つまり可変長データであるＤＥＲエンコーディング方式を解釈する処理を実行する必要があり、一定の演算コストを要していた。つまり、Ｘ.５０９公開鍵証明書による信頼基盤を利用するために、機器は演算コストを要する可変長データの解析を必要としていた。
【００２３】
このような状況に鑑み、ＡＳＮ.１データ等の可変長データのパースを実行しなくても公開鍵基盤を利用可能とすることを目的とした構成が従来より知られている。このような構成は次の２つの方式に大別できる。
（１）ひとつはＳＰＫＩ(非特許文献５)などの軽量公開鍵証明書を利用することで検証処理に係る演算コストの軽減を図る方式である。ＳＰＫＩを読み取る際にはＡＳＮ.１のパースは必要なく、Ｘ.５０９に比べ情報量も少ないためＣＰＵリソースの少ない情報家電、携帯電話などにおいても容易に利用することができる。
（２）もうひとつはＡＳＮ.１のパース処理を実行することが困難な機器は、オーソリティに処理委託をして、署名検証や署名付与などの処理を代理で行わせる方式である。その一例としてはＸＫＭＳ（非特許文献６）が知られている。
【非特許文献１】R.L. Rivest, A. Shamir and L. Adleman: "A Method for Obtaining Digital Signatures and Public-Key Cryptosystems", Communications of the ACM, v. 21, n. 2, pp. 120-126, Feb 1978.
【非特許文献２】Federal Information Processing Standards (FIPS) 186-2, Digital Signature Standard (DSS) , January 2000.
【非特許文献３】ITU-T Recommendation X.509/ISO/IEC 9594-8: "Information technology - Open Systems Interconnection - The Directory: Public-key and attribute certificate frameworks".
【非特許文献４】ISO/IEC 8825-1:1995 Specification of Basic Encoding Rules (BER), Canonical Encoding Rules (CER) and Distinguished Encoding Rules (DER)
【非特許文献５】C. Ellison, SPKI Certificate Theory, Request for Comments 2693, IETF, September 1999.
【非特許文献６】XML Key Management Specification (XKMS 2.0), http://www.w3.org/TR/xkms2/, W3C Candidate Recommendation 5 April 2004.
【発明の開示】
【発明が解決しようとする課題】
【００２４】
しかし、（１）の方式は、認証できるドメインが限られており、Ｘ.５０９との互換性がない。このため、インターネット上で既に普及している認証基盤と相互接続性を確保することが困難である。
【００２５】
また、（２）の方式は、オーソリティ（サーバ）と機器との通信は信頼された形で行う必要がある。このため、所定の認証方式等の、サーバと機器との間の通信を安全に行うための機構を別途設ける必要がある。また、ＸＫＭＳを用いるためには、別途ＸＭＬをパースする必要とする。
【００２６】
なお、上記の問題は公開鍵証明書の解析に限られない。即ち、従来の構成においては、公開鍵証明書を含む、既存の可変長データフォーマットにより記述された可変長データの全般について低い演算コストで解析することができなかった。
【００２７】
本発明は上記問題に鑑みなされたものであり、既存の可変長データフォーマットにより記述された可変長データを低い演算コストで解析可能とする技術を提供することを目的とする。
【課題を解決するための手段】
【００２８】
上記目的を達成するため、本発明によるデータ処理装置は以下の構成を備える。即ち、
可変長データを入力する可変長データ入力手段と、
前記可変長データのフォーマットを示すフォーマット情報に対応する識別情報を該可変長データに付与する付与手段と、
前記識別情報が、前記可変長データにおいて占める箇所を示すオフセット情報を取得するオフセット情報取得手段と、
前記識別情報が付与された可変長データと、前記オフセット情報とを関連づけて記憶手段に記憶する記憶制御手段と、
を備え、
前記可変長データは公開鍵証明書を構成する情報である
ことを特徴とする。
【００２９】
また、本発明によるデータ処理装置は以下の構成を備える。即ち、
可変長データである解析対象データを入力する入力手段と、
データのフォーマットを示すフォーマット情報と、識別情報とを関連づけて記憶する記憶手段と、
前記解析対象データから前記識別情報を検出する検出手段と、
前記識別情報に対応するフォーマット情報に基づいて、前記解析対象データを解析する解析手段と、
を備えることを特徴とする。
【００３０】
また、本発明によるデータ処理装置の制御方法は以下の構成を備える。即ち、
入力手段が、可変長データを入力する可変長データ入力工程と、
付与手段が、前記可変長データのフォーマットを示すフォーマット情報に対応する識別情報を該可変長データに付与する付与工程と、
オフセット情報取得手段が、前記識別情報が、前記可変長データにおいて占める箇所を示すオフセット情報を取得するオフセット情報取得工程と、
記憶制御手段が、前記識別情報が付与された可変長データと、前記オフセット情報とを関連づけて記憶手段に記憶する記憶制御工程と、
を備え、
前記可変長データは公開鍵証明書を構成する情報である
ことを特徴とする。
【００３１】
また、本発明によるデータ処理装置の制御方法は以下の構成を備える。即ち、
データのフォーマットを示すフォーマット情報と、識別情報とを関連づけて記憶する記憶手段を備えるデータ処理装置の制御方法であって、
入力手段が、可変長データである解析対象データを入力する入力工程と、
検出手段が、前記解析対象データから識別情報を検出する検出工程と、
解析手段が、前記識別情報に対応するフォーマット情報に基づいて、前記解析対象データを解析する解析工程と、
を備えることを特徴とする。
【００３２】
また、本発明によるデータ処理システムは以下の構成を備える。即ち、
データ生成装置とデータ解析装置とを有するデータ処理システムであって、
前記データ生成装置は、
可変長データを入力する可変長データ入力手段と、
前記可変長データのフォーマットを示すフォーマット情報に対応する識別情報を該可変長データに付与する付与手段と、
前記識別情報が、前記可変長データにおいて占める箇所を示すオフセット情報を取得するオフセット情報取得手段と、
前記識別情報が付与された可変長データと、前記オフセット情報とを関連づけて記憶手段に記憶する記憶制御手段と、
を備え、
前記データ解析装置は、
前記識別情報が付与された解析対象データとしての可変長データと、前記オフセット情報とを取得する取得手段と、
データのフォーマットを示すフォーマット情報と、識別情報とを関連づけて記憶する第２記憶手段と、
前記オフセット情報に基づいて、前記解析対象データから前記識別情報を検出する検出手段と、
前記識別情報に対応するフォーマット情報に基づいて、前記解析対象データを解析する解析手段と、
を備え、
前記可変長データは公開鍵証明書を構成する情報である
ことを特徴とする。
【発明の効果】
【００３３】
本発明によれば、既存の可変長データフォーマットにより記述された可変長データを低い演算コストで解析可能とする技術を提供することができる。
【発明を実施するための最良の形態】
【００３４】
以下、添付図面を参照して本発明に係る実施の形態を詳細に説明する。ただし、この実施の形態に記載されている構成要素はあくまでも例示であり、本発明の範囲をそれらのみに限定する趣旨のものではない。また、本実施の形態で説明されている特徴の組み合わせの全てが発明の解決手段に必須のものとは限らない。
【００３５】
＜第１の実施形態＞
本実施形態においては、可変長データを生成するデータ処理装置（以下、可変長データ生成装置と呼ぶ）と、生成された可変長データを解析するデータ処理装置（以下、可変長データ解析装置と呼ぶ）が存在する。可変長データ生成装置と可変長データ解析装置は、予め、取り扱う可変長データのフォーマットと識別子との対応関係について合意しておく。例えば、可変長データにおけるあるビット位置のデータはどのようなデータが格納されているかといった、可変長データのフォーマットを示す情報（フォーマット情報）とそれに対応する識別子（識別情報）を事前に共有しておく。
【００３６】
このような状況において、可変長データ生成装置は、可変長データを入力し、入力された可変長データのフォーマットに対応する識別子を可変長データに付加（付与）する。識別子は、対応するフォーマットの固定長データとして解析可能であることを示す情報として用いられる。
【００３７】
一方、可変長データ解析装置は、解析対象の可変長データを受けとると、受けとった可変長データに識別子が含まれるか否かを検証する。識別子が含まれる場合は、その識別子に対応するフォーマットに適合するようにデータが配列していると判断し、固定長データについて行う処理と同様の手順で、可変長データを解析し、所定の処理を行う。
【００３８】
このように、本実施形態に係る構成によれば、データ解析側は、識別子を検出することができた場合、可変長データのパースを行わなくても低コストの処理により可変長データを解析することができる。なお、用途や目的に応じて、可変長データ生成装置と可変長データ解析装置を同一のデータ処理装置により実現してもよいことは言うまでもない。
【００３９】
図１は本実施形態に係るデータ処理装置のハードウェア構成を示すブロック図である。本実施形態に係るデータ処理装置は、例えば、パーソナルコンピュータ（ＰＣ）やワークステーション（ＷＳ）、携帯情報端末（ＰＤＡ）等で実現される。なお、本発明に係る実施において、データ処理装置が図１に示される全ての機能を備えていることは、必ずしも必要ない。
【００４０】
（データ処理装置の構成）
図１のように、データ処理装置（ホストコンピュータ）１００は、モニタ１０２、ＣＰＵ１０３、ＲＯＭ１０４、ＲＡＭ１０５等が、バス１１６を介して互いに通信可能に接続されて構成されている。
【００４１】
図１において、マウス１１２及びキーボード１１３は、データ処理装置１００に対する各種指示等をユーザが入力するための操作部である。この操作部を介して入力された情報（操作情報）は、インターフェース１１１を介して、データ処理装置１００内に取り込まれる。
【００４２】
データ処理装置１００での各種情報（文字情報や画像情報等）は、プリンタ１１５により印刷出力できるようになされている。プリンタ１１５は、インターフェース（Ｉ／Ｆ）１１７によりデータ処理装置１００に接続されている。
【００４３】
表示部としてのモニタ１０２は、ユーザへの各種指示情報や、文字情報或いは画像情報等の各種情報の表示を行う。
【００４４】
ＣＰＵ１０３は、データ処理装置１００全体の動作制御を司るものであり、ＨＤ（ハードディスク）１０６等から処理プログラム（ソフトウェアプログラム）を読み出して実行することで、データ処理装置１００全体を制御する。特に、本実施の形態では、ＣＰＵ１０３は、ＨＤ１０６等から、データ生成および解析を実現する処理プログラムをＲＡＭ１０５に読み出して実行することで、後述する情報処理を実施する。なお、プログラム読み出しの形態はこれに限られるわけではなく、例えば、ＣＤ、ＦＤ、ＤＶＤ等のメディアから本実施形態に係るプログラム及び関連データを直接ＲＡＭ１０５にロードして実行させるように構成してもよい。或いは、本実施形態に係るプログラムをＲＯＭ１０４に記録しておき、これをメモリマップの一部をなすように構成し、直接ＣＰＵ１０３で実行することも可能である。
【００４５】
ＲＯＭ１０４は、署名処理プログラムや、プログラム内で用いられる鍵データなど各種データを記憶する読み出し専用メモリである。ＲＡＭ１０５は、ＣＰＵ１０３での各種処理のために、一時的に処理プログラムや処理対象の情報を格納するための作業用エリア等として使用される書き込み可能メモリである。
【００４６】
ＨＤ１０６は、大容量記憶装置の一例としての構成要素であり、各種データ、あるいは各種処理の実行時にＲＡＭ１０５等へ転送される情報変換処理等のための処理プログラム等を保存する。
【００４７】
ＣＤ（ＣＤドライブ）１０８は、外部記憶媒体（メディア）の一例としてのＣＤ（ＣＤ−Ｒ）に記憶されたデータを読み込み、また、当該ＣＤへデータを書き出す機能を有する。
【００４８】
ＦＤ（フレキシブルディスク・ドライブ）１０９は、ＣＤ１０８と同様に、外部記憶媒体の一例としてのＦＤ（フレキシブルディスク）に記憶されたデータを読み出す。また、種々のデータを上記ＦＤへ書き込む機能を有している。
【００４９】
ＤＶＤ（デジタル・ビデオ・ディスク、又は、Digital Versatile Disk）１１０は、ＣＤ１０８やＦＤ１０９と同様に、外部記憶媒体の一例である。ＤＶＤ１１０は、ＤＶＤに記憶されたデータを読み出し、また、上記ＤＶＤへデータを書き込む機能を有している。
【００５０】
なお、ＣＤ、ＦＤ、ＤＶＤ等の外部記憶媒体に対して、例えば、編集用のプログラム或いはプリンタドライバが記憶されている場合は、これらのプログラムをＨＤ１０６へインストールしておき、必要に応じてＲＡＭ１０５へ転送するように構成してもよい。
【００５１】
インターフェース（Ｉ／Ｆ）１１１は、マウス１１２或いはキーボード１１３によるユーザからの入力を受け付けるためのものである。モデム１１８は、通信モデムであり、インターフェース（Ｉ／Ｆ）１１９を介して、例えば、公衆回線等を通じて外部のネットワークに接続される。ネットワーク接続部１０７は、インターフェース（Ｉ／Ｆ）１１４を介して、外部のネットワークに接続される。
【００５２】
尚、以上の各装置と同等の機能を実現するソフトウェアにより、ハードウェア装置の代替として構成することもできる。
【００５３】
また、本実施形態では、説明の便宜のため、本実施形態に係るデータ処理装置を１つの装置で実現した構成について述べるが、複数の装置にリソースを分散した構成によって実現してもよい。例えば、記憶や演算のリソースを複数の装置に分散した形に構成してもよい。或いは、データ処理装置上で仮想的に実現される構成要素毎にリソースを分散し、並列処理を行うようにしてもよい。
【００５４】
（可変長データ生成処理）
次に、可変長データ生成装置（可変長データ生成処理を行うデータ処理装置１００）による可変長データ生成処理について、図２を参照して説明する。図２は可変長データの生成における機能構成を示すブロック図である。
【００５５】
図２に示される各機能ブロックは、図１を参照して上述したデータ処理装置のＣＰＵ１０３がＲＡＭ１０５にロードされたプログラムを実行し、図１に示される各ハードウェアと協働することによって実現される。もちろん機能ブロックの一部或いは全てが専用のハードウェアで実現されてもよい。
【００５６】
可変長データ生成装置２０１は、可変長データを構成するデータ群｛Ｄ＿ｉ｝２０２を入力し（可変長データ入力）、固定長データのように処理可能であることを示す情報（識別子）を含む可変長データＭ２１０を生成する。
【００５７】
図２において、２０３は、データ群｛Ｄ＿ｉ｝２０２を入力するデータ入力部２０３である。データ群｛Ｄ＿ｉ｝２０２は、可変長データ生成装置２０１の出力である可変長データＭ２１０を構成するデータの集合である。例えば、可変長データ生成装置２０１によって可変長データである公開鍵証明書を生成する場合は、公開鍵データ、公開鍵の有効期限、認証局の識別情報等の情報の集合がデータ群｛Ｄ＿ｉ｝２０２としてデータ入力部２０３に入力される。
【００５８】
可変長データ生成装置２０１は更に識別子格納部２０４と識別子付与部２０６とパッケージング処理部２０７とオフセット情報取得部２０８とデータ出力部２０９を備える。識別子格納部２０４は、識別子（識別情報）Ｉ２０５を、取り扱う可変長データのフォーマットに係る情報（フォーマット情報）と関連づけて、所定の記憶装置（第２記憶手段）に格納して保持する。ここで、識別子Ｉ２０５は、可変長データ生成装置２０１の出力Ｍ２１０が対応するフォーマットのフォーマット情報に基づいて、固定長データのように、処理可能であることを示す情報であり、所定のビット列として構成することができる。また、フォーマットに係る情報は、可変長データにおけるあるビット位置のデータはどのようなデータが格納されているかといった情報であり、例えば、データの種類毎に開始ビット位置を定義する情報として構成することができる。なお、第２記憶手段は、ＨＤ１０６、ＲＡＭ１０５等の記憶装置を用いて実現することができる。
【００５９】
識別子付与部２０６は、データ群｛Ｄ＿ｉ｝２０２に基づいて可変長データを生成し、生成された可変長データのフォーマットに対応する識別子（識別情報）Ｉ２０５を可変長データに付加する。パッケージング処理部２０７は、可変長データを構成するデータ群｛Ｄ＿ｉ｝２０２及び識別子Ｉに対して、パッケージング処理を行う。ここで、パッケージング処理とは複数のデータを１つのデータに統合する処理であり、一例としてＤＥＲエンコーディングがある。ＤＥＲ（Distinguished Encoding Rules）はデータの構造を定義する言語ＡＳＮ．１（Abstract Syntax Notation One）で定義された雛形をバイナリデータとして表現する方式のひとつである。ＡＳＮ．１はＩＳＯ８８２４で標準化されており、｛データ型，データそのもの｝の組を階層的に記載することができる。ＤＥＲエンコーディングを行うと、｛データ型，データ長，データそのもの｝の３つ組をひとまとまりのバイナリデータとして表現でき、それらが階層的に構成されて、一意にバイナリ表現可能となる。ＤＥＲエンコーディングはＤＥＲ規則に基づいてバイナリ変換する方式であり、インターネット上の通信プロトコルやデータフォーマットに利用される。オフセット情報取得部２０８は、出力データとしての可変長データＭにおける識別子Ｉ２０５の位置に関するオフセット情報を取得する。即ち、オフセット情報取得部２０８は、識別子Ｉが、可変長データにおいて占める箇所を示すオフセット情報を取得する。データ出力部２０９は、生成装置２０１の出力結果（可変長データ）２１０であるデータＭ（識別子Ｉ２０５が付与された可変長データ）と、オフセット情報２１１を出力する。ただし、ここでは、オフセット情報２１１をデータ出力部２０９より出力する例を示したが、可変長データ生成装置内の記憶手段に記憶する記憶制御処理を実行しても構わない。
【００６０】
次に、可変長データ生成装置２０１が実行する可変長データ生成処理について図３を参照して説明する。図３は可変長データ生成処理の流れを示すフローチャートである。
【００６１】
まず、ステップＳ３０１において、可変長データを構成するデータ群｛Ｄ＿ｉ｝２０２を入力する。
【００６２】
ステップＳ３０２において、ステップＳ３０１において入力された可変長データのフォーマットを判定し、このフォーマットに対応する識別子Ｉを識別子格納部２０４から抽出する。
【００６３】
次に、ステップＳ３０３において、ステップＳ３０２で可変長データを構成するデータ群｛Ｄ＿ｉ｝２０２及び識別子Ｉに対して、パッケージング処理を行う。
【００６４】
次にステップＳ３０４においては、出力データとしての可変長データＭにおける識別子Ｉ２０５の位置に関するオフセット情報を取得する。例えば、可変長データＭにおける識別子Ｉ２０５の、開始バイト位置ｎとバイト長ｍをオフセット情報として取得する。ステップＳ３０５にて可変長データＭ２１０と、オフセット情報を出力する。ここで、オフセット情報は、可変長データＭ２１０とは異なるデータとして出力する例を示したが、別途可変長データＭ２１０に追加する、もしくは可変長データ生成装置やそれを含むシステムにおいて固定の値を持つものとしても構わない。
【００６５】
後述するように、可変長データＭ２１０は、識別子Ｉ２０５が含まれる場合に、識別子Ｉ２０５に対応するフォーマットのフォーマット情報に基づいて、固定長データのように解析される。出力Ｍが固定長データのように処理可能か否かを検知する処理の詳細は、以下の可変長データ解析処理の説明において示される。
【００６６】
（可変長データ解析処理）
次に、上述の可変長データ生成処理により生成された可変長データを解析する可変長データ解析処理について、図４を参照して説明する。図４は可変長データ解析装置の機能構成を示すブロック図である。
【００６７】
図４に示される各機能ブロックは、図１を参照して上述したデータ処理装置のＣＰＵ１０３がＲＡＭ１０５にロードされたプログラムを実行し、図１に示される各ハードウェアと協働することによって実現される。もちろん機能ブロックの一部或いは全てが専用のハードウェアで実現されてもよい。
【００６８】
可変長データ解析装置４０１は、可変長データＭ４０２及びオフセット情報を入力し、解析処理を行って、可変長データＭ４０２を構成するデータ群｛Ｄ＿ｉ｝４０７を出力する。
【００６９】
図４において、４０３は、可変長データＭ４０２及びオフセット情報を入力するデータ入力部である。ただし、可変長データＭ４０２は、上述の可変長データ生成処理により生成されたデータである。
【００７０】
可変長データ解析装置４０１は、更に、識別子検出部４０４とデータ解析部４０６、識別子格納部４０８を備える。識別子検出部４０４は、データ入力部に入力された可変長データＭが識別子Ｉ４０５を含むか否かを検出し、識別子Ｉ４０５が含まれる場合は識別子Ｉ４０５を取得する。取得された識別子Ｉ４０５はデータ解析部４０６へ渡される。データ解析部４０６は、後述の処理を行い、可変長データＭに含まれるデータ群｛Ｄ＿ｉ｝４０７を出力する。識別子格納部４０８は、識別子格納部２０４と同様に、識別子Ｉを対応する可変長データのフォーマットに係る情報と関連づけて、所定の記憶装置に格納して保持する。
【００７１】
次に、可変長データ解析処理について、図５を参照して説明する。図５は可変長データ解析処理の流れを示すフローチャートである。
【００７２】
まず、ステップＳ５０１において、解析対象のデータＭ４０２を入力する。次に、ステップＳ５０２で、入力されたデータＭ４０２から識別子Ｉ４０５を検出・取得する処理を行う。この処理の詳細は後述する。次に、ステップＳ５０３においては、ステップＳ５０２において識別子Ｉが検出されたため、解析対象のデータＭ４０２は、検出された識別子Ｉに対応するフォーマットに適合するようにデータが配列していると判断する。即ち、検出された識別子Ｉをキーとして識別子格納部４０８を検索し、識別子Ｉに対応するフォーマット情報を抽出する。そして、抽出されたフォーマットを有する固定長データについて行う処理と同様の手順で、可変長データを解析する。そして、データＭ４０２に格納されていたデータ群｛Ｄ＿ｉ｝を取得し、出力結果として出力する。例えば、処理対象の可変長データＭ４０２が公開鍵証明書の場合は、公開鍵データ、公開鍵の有効期限、認証局の識別情報等の各情報を取得して出力する。そして、可変長データ解析処理を終了する。
【００７３】
（識別子検出処理）
識別子検出部４０４が識別子Ｉ４０５を検出する処理の一例について図６を参照して説明する。図６はオフセット情報６０２を利用して可変長データＭ６０３から識別子Ｉ６０６を検出する、識別子検出部４０４の機能構成を示すブロック図である。識別子検出部４０４は、解析用データ（解析対象データ）Ｍ６０３における識別子の位置により決定されるオフセット情報を入力するオフセット入力部６０４と解析用データＭ６０３を入力する識別子抽出部６０５を有している。識別子検出部４０４は、出力結果として識別子６０６を出力する。以下、説明の簡略化のため、オフセット情報６０２は上述のように開始バイト位置ｎとバイト長ｍを意味する整数データｎ、ｍであるとする。
【００７４】
識別子抽出部６０５は解析用データＭ６０３の先頭からｎバイト目からｍバイト分（整数データｎおよびデータｍはオフセット情報６０２で与えられている）を読み取って識別子Ｉを抽出する。言い換えると、識別子抽出部６０５は、解析対象データから識別子Ｉ（識別情報）を検出する。抽出された、識別子Ｉは、データ解析部４０６に渡され、識別子Ｉの検出に基づいて固定長データ解析処理がなされる。データ解析部４０６での解析処理は可変長データの解析ではなく固定長データとしての解析が可能である。
【００７５】
以上のように、本実施形態に係る構成では、固定長データとして扱う可変長データのフォーマットについて予め合意しておき、可変長データの解析時に、可変長データに識別子が含まれる場合はその識別子に対応するフォーマットに基づいて処理する。これにより可変長データを固定長データとして解析することが可能であり、可変長データの解析に要する演算コストを低減し、解析処理を効率的に行うことができる。
【００７６】
また、本実施形態では可変長データにおいて占める識別子に対応する箇所を示すオフセット情報を、可変長データにおいて占める識別子に対応する箇所の、開始ビット位置及びデータ長としたが、これに限られない。例えば、開始ビット位置とデータ長のいずれか一方のみを用いるようにしてもよいし、或いは、開始ビット位置と終了ビット位置を用いるようにしてもよい。あるいは、識別子を付与する位置を、可変長データの先頭や最後等に付与するように構成することで、オフセット情報を用いずに識別子Ｉの有無の検出を行うことができる。可変長データ生成装置２０１及び可変長データ解析装置４０１を備えるシステムは、データ処理システムと呼ぶことができよう。
【００７７】
＜第２の実施形態＞
第１の実施形態においては、可変長データ解析装置の識別子検出部の内部にデータオフセットによる識別子抽出部を設けることにより、抽出する識別子の位置を検出している。しかし解析用データに応じた正しいオフセット情報が与えられないと、正しい解析手順での解析ができない状況（処理不能）やデータ形式が異なるのにあたかも正しいデータであるかのように解析処理を行う状況（誤検出）が発生すること考えられる。これは、識別子格納部４０８にデータＭ４０２に含まれる識別子が格納されていない場合も同様である。ただし、オフセット情報には、上述のように、例えば、識別子Ｉの可変長データにおける開始位置ｎ、データ長ｍ等が含まれる。本実施形態では、正しく識別子Ｉを抽出することができなかった場合も誤動作しない構成について述べる。なお、本実施形態に係る構成のほとんどは第１の実施形態に係る構成と同様であり、本実施形態では相違する部分についてのみ説明する。
【００７８】
図４のデータ解析部４０６において実行する処理について図７を参照して説明する。図７はデータ解析部４０６において実行するデータ解析処理の流れを示したフローチャートである。
【００７９】
まず、ステップＳ７０１でデータ解析部４０６は識別子Ｉを入力し、ステップＳ７０２では許容できる識別子リストとのマッチング処理、即ち、入力された識別子Ｉが識別子格納部４０８に格納された識別子リストに存在するか否かの判定を行う。前述した識別子Ｉが識別子リストに存在する場合（ステップＳ７０２でＹＥＳ）にはステップＳ７０３へ、存在しない場合はステップＳ７０４（ステップＳ７０２でＮＯ）で進む。ステップＳ７０３では、図５のステップＳ５０３と同様に、入力された識別子Ｉに対応するフォーマットを有する固定長データとして解析処理を行う。一方、ステップＳ７０４では、固定長データとしての解析ができないため通常の可変長データとして解析を行う。
【００８０】
なお、識別子Ｉの誤検出を回避する手法について補足する。誤検出を回避する手法のひとつは誤検出の確率を十分小さくするために識別子の長さを十分大きくする手法が挙げられる。例えば識別子が４バイトで表現された場合の誤検出率は（１／２）32である。また、格納データ群｛Ｄ＿ｉ｝やデータ型、或いは、データ長格納部分の取り得るデータとして存在しえないバイト列を識別子とする手法がある。例えば格納データ群がアスキーコードで表現されている場合、０ｘＦＦＦＦＦＦＦＦを識別子とすることで誤検出を防ぐことが可能である。
【００８１】
以上のように、本実施形態に係る可変長データ解析装置は、入力されたデータＭ４０２から識別子Ｉを検出することができなかった場合は、そのデータを通常どおり可変長データとして処理するように構成されている。これにより、識別子Ｉを検出することができた場合は、固定長データとして高速な処理を行うことができるだけでなく、識別子Ｉを検出することができなかった場合にも、入力されたデータＭ４０２に基づく処理を行うことができる。
【００８２】
また、本実施形態に係る構成においては、データ解析時に処理不能や誤検出を起こすことを防ぐように識別子埋め込みを行うことにより、解析処理を中断や解析結果の不具合の発生を抑えることができる。また、抽出された識別子Ｉが正当なものでない場合はそれを検出して処理を行うことで、正しく識別子Ｉを抽出することができなかった場合も誤動作を防ぐことができる。
【００８３】
＜第３の実施形態＞
次に、解析対象データとして公開鍵証明書、特にＸ.５０９公開鍵証明書について、本発明に係る実施形態を適用した場合の構成例について説明する。Ｘ.５０９公開鍵証明書はＤＥＲエンコーディングされた可変長バイナリデータであるため、本発明に係る実施形態に容易に適用可能である。なお、本実施形態に係る構成のほとんどは第１の実施形態に係る構成と同様であり、本実施形態では相違する部分についてのみ説明する。
【００８４】
Ｘ.５０９公開鍵証明書にはＸ.５０９ｖ３拡張部と呼ばれるアプリケーションやシステムに依存したデータを格納できるエリアが設けられている（図１１のextensions２２１０）。このため、前述の識別子Ｉをｖ３拡張部に格納することが可能である。なお、可変長データ解析装置が固定長データとして解析するためにはｖ３拡張部を参照する必要があるが、図１１のextensions２２１０以外のエリアを固定長で表現することにより、可変長データ解析装置は識別子Ｉの参照を容易に行うことができる。
【００８５】
以下、図２および図３を参照して具体的なＸ.５０９公開鍵証明書の生成例を示す。可変長データ生成装置２０１の入力であるデータ群｛Ｄ＿ｉ｝２０２は、図１１に記載された以下に関する情報に相当する。
・version２２０１。
・serialNumber２２０２。
・signature２２０３。
・issuer２２０４。
・validity２２０５。
・subject２２０６。
・subjectPublicKeyInfo２２０７。
・issuerUniqueIdentifier２２０８。
・subjectUniqueIdentifier２２０９。
なお、Ｘ.５０９公開鍵証明書には、証明対象のデータのハッシュ値、及び、署名データの少なくともいずれかが含まれる。
【００８６】
ステップＳ３０１において、可変長データ生成装置は、これらの可変長データを入力する。次に、ステップＳ３０２で、入力された可変長データに対応する識別子Ｉをデータ群｛Ｄ＿ｉ｝を可変長データに付与する処理を行う。ステップＳ３０３でデータ群｛Ｄ＿ｉ｝と識別子ＩからＸ.５０９で定められるＤＥＲエンコーディングにより可変長データＭを生成する。、即ち、ステップＳ３０２で、予め可変長データ解析装置と合意されたフォーマットに対応する識別子Ｉ２０５を、図１１のextensions２２１０に相当する位置（拡張部）に付与し、ステップＳ３０３で、ＤＥＲエンコーディングを行う。そして、ステップＳ３０４で、オフセット情報を取得し、ステップＳ３０５で、出力結果として、全体としてＸ.５０９で定められるＤＥＲエンコーディングに沿うような形式としてＭを出力する。ここでは、具体的な事例として、Ｘ.５０９公開鍵証明書の生成例を示したが、生成側の処理及び構成は、第１の実施形態と同様である。
【００８７】
可変長データＭを受けとった可変長データ解析装置は、識別子Ｉ２０５を抽出し、抽出された識別子Ｉ２０５に対応するフォーマットに基づいて、可変長データＭを固定長データについて行う処理を、第１の実施形態と同様の手順で解析する。
【００８８】
以上のように、本実施形態の構成によれば、Ｘ.５０９公開鍵証明書等のデータについても、固定長データとして解析することができる。このため、可変長データのパースを行わなくてもＸ.５０９公開鍵証明書を解析することができる。このように、本実施形態に係る構成によれば、インターネット上で既に普及している認証基盤との相互接続が容易でかつ可変長データのパースを行わなくても公開鍵証明書の検証が可能な技術を提供することができる。
【００８９】
＜第４の実施形態＞
第３の実施形態では、Ｘ.５０９公開鍵証明書の生成を、extension以外のエリアを固定長で表現するように行う。しかし、Ｘ.５０９公開鍵証明書を構成するデータには、issuerやsubjectのように演算結果に関わらずビット長が一定に保たれる情報だけでない。例えば認証機関による公開鍵証明書への署名２２１４のように演算結果によってビット長が変動する情報が存在する。このように、データ群｛Ｄ＿ｉ｝を構成するデータのビット長が変動する場合、そのようなデータに基づいて生成される可変長データのフォーマットの種類は多数になる。このため、識別子格納部２０４、４０８は大量の情報を記憶する必要がある。
【００９０】
本実施形態に係る構成においては、所定のフォーマットに適合する可変長データを生成する構成、即ち、入力対象となる複数のデータのうち少なくともいずれかを予め定められた長さで生成する構成について説明する。これにより、識別子格納部２０４、４０８に格納する情報量を削減することが可能である。なお、本実施形態に係る構成のほとんどは第１の実施形態に係る構成と同様であり、本実施形態では相違する部分についてのみ説明する。
【００９１】
図８は可変長データ生成装置が実行する証明書生成処理の流れを示すフローチャートである。以下、演算結果によってビット長が変動する情報として電子署名データを例にとって説明するが、他のデータについても本実施形態に示された手法を適用することができる。
【００９２】
まず、ステップＳ８０１で被署名データを生成する。ただし、この被署名データには後述する補正データ用のエリアも含まれており、初期値（例えば０ｘ００００）が格納されている。後述するように、この補正データは固定長データを生成するためのデータである。被署名データの生成は、例えば、署名対象のデータを記憶装置から取得し、補正データ用のエリアを追加することにより行う。
【００９３】
次に、ステップＳ８０２で署名生成を行う。署名の生成処理は公知の手法を適用することができる。
【００９４】
次に、ステップＳ８０３において、ステップＳ８０２で生成された署名データのデータ長が意図した長さ、即ち、識別子格納部２０４に格納されたフォーマット情報のいずれかに適合する長さであるか否かを判定する。この判定処理は、例えば、フォーマット情報に適合する、署名データを格納するための固定長のデータ領域を用意しておき、最上位バイトが０であれば意図した長さでないと判断し、０以外であれば意図した長さであると判断することにより行うことができる。ステップＳ８０３の判定により、意図した長さである場合（ステップＳ８０３でＹＥＳ）は処理を終了して、署名データと被署名データを統合して公開鍵証明書を出力する。意図した長さでない場合（ステップＳ８０３でＮＯ）にはステップＳ８０４に進む。
【００９５】
ステップＳ８０４では前述した補正データを異なるデータに更新（例えば１を加算する）してステップＳ８０２で再度署名を行う。このようにして作成された署名データは通常の署名と同様に検証できるため、署名検証を行う解析装置に特殊な仕組みは必要ない。
【００９６】
Ｘ.５０９公開鍵証明書においては、補正データ用エリアとしてextensions２２１０を利用することができる。具体的には識別子Ｉと補正データを共にＸ.５０９ｖ３拡張部に格納する、例えば、extnIdに識別子をextnValueに補正用データを格納することができる。
【００９７】
以上のように、本実施形態に係る構成においては、署名長が意図した長さになるまで補正データの更新を継続する試行錯誤的な署名生成処理を行う。即ち、署名対象データと、固定長データを生成するための補正データとに基づいて署名データを計算する。この署名データのビット長が予め定められた長さでない場合は、予め定められた長さの署名データが計算されるまで、補正データを更新してこの計算を繰り返すことにより、署名データを生成する。これにより、所望のデータ長を持つ署名データを作成することができ、結果として識別子格納部２０４、４０８に格納する情報量を削減することができる。
【００９８】
なお、署名データを固定長にする構成について説明したが、同様の手法により他の種類の情報についても所定のビット長を有するデータを取得可能であることは言うまでもない。そのような一例として、更に、公開鍵証明書内に含まれる公開鍵データを固定長にする構成について、図９を参照して説明する。
【００９９】
図９は所定長の公開鍵を生成する処理の流れを示すフローチャートである。ステップＳ９０１で鍵生成を行い、その結果である公開鍵データのデータ長が意図した長さがどうかをＳ９０２でチェックする。意図した長さであれば（ステップＳ９０２でＹＥＳ）処理を終了して、鍵データを出力する。ステップＳ９０２でのチェックの結果、意図した長さでない場合（ステップＳ９０２でＮＯ）にはステップＳ９０１で再度鍵生成を行う。このように試行錯誤的な鍵生成処理を行うことで、所望のデータ長を持つ鍵データが作成することができる。そして、識別子格納部２０４、４０８に格納する情報量を削減することができる。
【０１００】
なお、上記では、公開鍵証明書を生成する場合について、所定長のデータを取得する例を説明したが、所定長のデータを取得する処理は他のデータを生成する場合においても実行することができる。この処理を行うことにより、識別子格納部２０４、４０８に格納する情報量を削減することができる。
【０１０１】
また、上記では、データ群｛Ｄ＿ｉ｝のいずれか１つについて所定長のデータを取得する例を説明したが、２以上のデータについて所定長のデータを取得するようにしてもよい。
【０１０２】
また、生成可能な可変長データのフォーマットが２以上存在する場合は、それらのフォーマットのいずれかに対応するデータを取得するように構成することができる。例えば、次のような処理を構成することができる。即ち、データ群｛Ｄ＿ｉ｝が、データｄ1、ｄ2、ｄ3からなる状況を考える。この場合、例えば、まず、データｄ1を生成し、生成されたデータｄ1に適合するフォーマットを抽出する。適合するフォーマットが存在しない場合は、適合するフォーマットが抽出されるまでデータｄ1の生成を繰り返す。次に、データｄ2を生成し、生成されたデータｄ2に適合するフォーマットを初めに抽出されたフォーマットから抽出する。適合するフォーマットが存在しない場合は、適合するフォーマットが抽出されるまでデータｄ2の生成を繰り返す。次に、データｄ3についても同様に生成処理を行う。そして、生成されたデータｄ1、ｄ2、ｄ3に適合するフォーマットのいずれかに対応する識別子を可変長データに付与するように可変長データ生成処理を実行する。このように構成することで生成可能な可変長データのフォーマットが２以上存在する場合、それらのフォーマットのいずれかに対応するデータを取得することができる。
【０１０３】
＜その他の実施形態＞
通常のＸ.５０９公開鍵証明書に係る検証処理においては、電子メールアドレスと同様に、同一アルファベットの大文字と小文字を同じテキストであるとみなして処理を行う。このため、文字列の同一性の判定を単純なビットの比較により行うことができず、検証に演算コストを要してしまう。これに対して、同一アルファベットの大文字と小文字を異なったテキストであるとみなし、バイト列の単純比較に基づいて検証を行うことで、検証に係る演算コストを更に低減することができる。
【０１０４】
なお、公開鍵証明書に係る署名方式は、ＲＳＡ署名を含む公開鍵暗号方式による暗号処理（秘匿化）方式の他、共通鍵暗号方式による暗号処理方式およびＭＡＣ（メッセージ認証子）生成方式を適用することができる。即ち、他の暗号アルゴリズムを用いても上記の実施形態に係る構成を適用することができる。
【０１０５】
以上、本発明の実施形態例について詳述したが、本発明は、例えば、システム、装置、方法、プログラムもしくは記憶媒体等としての実施態様を取ることが可能である。例えば、本発明は、複数の機器（例えばホストコンピュータ、インターフェース機器、リーダ、プリンタ等）から構成されるシステムの一部として適用しても、ひとつの機器（たとえば複写機、ファクシミリ装置）からなるものの一部に適用してもよい。
【０１０６】
また、本発明に係る実施形態は、上記の装置等及び装置等の組み合わせからなる構成に限定されるものではない。例えば、前述した実施形態の機能を実現するプログラムを、システムあるいは装置に直接あるいは遠隔から供給し、そのシステムあるいは装置のコンピュータが該供給されたプログラムコードを読み出して実行することによっても達成される場合を含む。従って、本発明の機能処理をコンピュータで実現するために、該コンピュータにインストールされるプログラムコード自体も本発明の技術的範囲に含まれる。つまり、本発明は、本発明の機能処理を実現するためのコンピュータプログラム自体も含む。
【０１０７】
この場合、前記ソフトウェアのプログラムコード自体が上記実施の形態の機能を実現することになる。このため、そのプログラムコード自体、及びそのプログラムコードをコンピュータに供給するための手段、具体的には上記プログラムコードを格納した記憶媒体も本発明の技術的範囲に含まれる。
【０１０８】
この様なプログラムコードを格納する記憶媒体としては、例えばフレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、磁気テープ、不揮発性のメモリカード、ＲＯＭ等を用いることができる。
【０１０９】
なお、本発明に係る技術思想の範疇に含まれるプログラムコードは、そのプログラムコードのみに従って各種デバイスを制御することにより、上記実施の形態の機能を実現するものに限られない。例えば、プログラムコードがコンピュータ上で稼働しているＯＳ(オペレーティングシステム)、あるいは他のアプリケーションソフト等と共同して上記実施の形態が実現される場合にもそのプログラムコードは本発明の技術的範囲に含まれる。
【０１１０】
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムの指示に基づいても前述した実施形態の機能が実現される。即ち、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によっても前述した実施形態の機能が実現される。
【図面の簡単な説明】
【０１１１】
【図１】データ処理装置のハードウェア構成を示すブロック図である。
【図２】可変長データの生成における機能構成を示すブロック図である。
【図３】可変長データ生成処理の流れを示すフローチャートである。
【図４】可変長データ解析装置の機能構成を示すブロック図である。
【図５】可変長データ解析処理の流れを示すフローチャートである。
【図６】識別子検出部の機能構成を示すブロック図である。
【図７】データ解析部において実行するデータ解析処理の流れを示したフローチャートである。
【図８】可変長データ生成装置が実行する証明書生成処理の流れを示すフローチャートである。
【図９】所定長の公開鍵を生成する処理の流れを示すフローチャートである。
【図１０】署名作成処理および署名検証処理を表す模式図である。
【図１１】Ｘ.５０９ ｖ.３で規定される公開鍵証明書のフォーマットを模式的に示す図である。
【図１】
2007312357.tif 000003
【図２】
2007312357.tif 000004
【図３】
2007312357.tif 000005
【図４】
2007312357.tif 000006
【図５】
2007312357.tif 000007
【図６】
2007312357.tif 000008
【図７】
2007312357.tif 000009
【図８】
2007312357.tif 000010
【図９】
2007312357.tif 000011
【図１０】
2007312357.tif 000012
【図１１】
2007312357.tif 000013