(57)【要約】【課題】  所定のコンポーネントからソフトウェア・パッケージをユーザが再構成するにあたって、シングルパッケージを提供する提供者が保証したパッケージを顧客に提供することが可能なパッケージの構成方法、装置、プログラムを提供することである。【解決手段】  ソフトウェア・パッケージを再構成する方法であり、一次ソフトウェア・パッケージは複数のコンポーネントと、当該コンポーネントの許可された組み合わせに関する組合せ情報とを備え、前記複数のコンポーネントのうち、ある組合せの選択を受け、前記組合せ情報に基づいて、前記選択された組合せのコンポーネントによるソフトウェア・パッケージの再構成を許可するか否かを判断し、前記再構成を許可する判断に応じて、前記選択された組合せのコンポーネントを備える二次ソフトウェア・パッケージを再構成する方法。【選択図】      図３
2006350850.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウェア・パッケージを再構成する方法であり、
一次ソフトウェア・パッケージは複数のコンポーネントと、当該コンポーネントの許可された組み合わせに関する組合せ情報とを備え、
前記複数のコンポーネントのうち、ある組合せの選択を受けるステップと、
前記組合せ情報に基づいて、前記選択された組合せのコンポーネントによるソフトウェア・パッケージの再構成を許可するか否かを判断するステップと、
前記再構成を許可する判断に応じて、前記選択された組合せのコンポーネントを備える二次ソフトウェア・パッケージを再構成するステップと、
をコンピュータに実現させる方法。
【請求項２】
請求項１に記載の方法であって、 
前記再構成するステップにおいて、前記組合せ情報は、前記二次ソフトウェア・パッケージに引き継がれる方法。 
【請求項３】
請求項１に記載の方法であって、 
前記選択を受けるステップでは、前記許可された組合せは一次提供者が決定し、前記ある組合せの選択は二次提供者が選択する方法。 
【請求項４】
請求項１に記載の方法であって、
前記コンポーネントの各々がデジタル署名され、前記選択された組合せのコンポーネントの各々をデジタル署名により検証するステップを備えた方法。
【請求項５】
請求項１に記載の方法であって、
前記コンポーネント間の組合せ情報がデジタル署名され、前記組合せ情報をデジタル署名により正当性を検証するステップを備えた方法。
【請求項６】
請求項１に記載の方法であって、
構成した前記二次ソフトウェア・パッケージに対して、デジタル署名を行うステップを備えた方法。
【請求項７】
請求項１に記載の方法であって、
前記一次ソフトウェア・パッケージは、前記コンポーネントを格納している物理的な位置を示す位置情報を含む方法。
【請求項８】
請求項１に記載の方法であって、
前記二次ソフトウェア・パッケージを再構成するステップでは、前記選択された組合せのコンポーネントと前記組合せ情報とを含む二次ソフトウェア・パッケージを再構成する方法。
【請求項９】
ソフトウェア・パッケージを再構成するパッケージ構成装置であり、
一次ソフトウェア・パッケージは複数のコンポーネントと、当該コンポーネントの許可された組み合わせに関する組合せ情報とを備え、
前記複数のコンポーネントのうち、ある組合せの選択を受ける選択部と、
前記組合せ情報に基づいて、前記選択された組合せのコンポーネントによるソフトウェア・パッケージの再構成を許可するか否かを判断する判断部と、
前記再構成を許可する判断に応じて、前記選択された組合せのコンポーネントを備える二次ソフトウェア・パッケージを再構成する構成部と、
をパッケージ構成装置。
【請求項１０】
コンピュータにて読み取り可能な記録媒体のデータ構造であって、
ソフトウェア・パッケージの構成要素となる１以上のコンポーネントと、
前記１以上のコンポーネントを組合せた組合せデータ、及び前記組合せデータのデジタル署名から構成される組合せ定義を、前記ソフトウェア・パッケージを提供する提供者が許可する組合せの数だけ備えた組合せ情報と、
を含むデータ構造。
【請求項１１】
請求項１０に記載のデータ構造であって、
前記組合せ情報が、前記組合せデータのデジタル署名を他の組合せデータに含めた第２組合せ定義を含むデータ構造。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェア・パッケージを再構成する方法、装置、プログラムに関する。さらに具体的には、コンピュータにて使用されるソフトウェアコンポーネントを組み合わせてソフトウェア・パッケージを再構成するための方法、装置、プログラムに関する。
【背景技術】
【０００２】
近年のソフトウェアの多様化に伴い、ソフトウェアのパッケージは多数のコンポーネントから構成されるようになっている。しかし、ソフトウェアの使用者がその全てのコンポーネントを使用することは希であり、ソフトウェアを提供するベンダーは、顧客の必要の度合いが高いコンポーネントだけを含むソフトウェア・パッケージ（以下、適宜、「パッケージ」）を顧客に配布することが必要とされている。
【０００３】
通常、一次提供者となるベンダーは、顧客に最適なパッケージを構成する際には、この顧客のニーズにあったソフトウェア・プログラム（以下「コンポーネント」）を選択して、パッケージを構成する。
【０００４】
例えば、ベンダーがオペレーティング・システムをパッケージとして提供する際には、このオペレーティング・システムが提供する言語により、必要となるコンポーネントが異なる。したがって、英語、日本語、フランス語対応の各コンポーネントのうち、顧客に適した一言語のコンポーネントを選択し、全体を別々のパッケージとして提供する場合が多い。
【０００５】
しかし、パッケージの提供者がその都度個別のパッケージを作成するようでは、多数のパッケージの管理、検査、配布、メディアの作成のための人的・時間的コストが増大してしまう。このため、ベンダーは、選択される全てのコンポーネントを含んだ一次ソフトウェア・パッケージ（以下「シングルパッケージ」）を提供し、使用者がインストール時に導入するコンポーネントを選択するという方法が用いられる。このような構造は、オフィスアプリケーションの配布などの際に良く用いられている。
【０００６】
しかし現状では、ソフトウェア・プログラムの機能の充実に伴い、シングルパッケージを構成する各コンポーネントのファイルサイズが大きくなる傾向があり、これに伴ってシングルパッケージのサイズも巨大化している。近年ソフトウェア・パッケージがインターネットなどのネットワークを介して配布されることが多くなっているが、こうしたシングルパッケージをネットワークにて配布する際に、サーバの処理能力に対する負荷や、ネットワークに対する負荷、サーバや使用者の記憶装置に占める容量が高まる傾向があった。
【０００７】
そこで、シングルパッケージのサイズが大きくなったとしても、ネットワークを介してシングルパッケージを配信する際に、サーバやネットワークの負荷を低減して配信する方法が提案されている（例えば、特許文献１、２）。
【特許文献１】特開平８−８３２４５号公報
【特許文献２】特開２０００−２８５０４８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、特許文献１、２の方法では、巨大化したシングルパッケージの配布に対してサーバ及びネットワークの負荷を低減することは、ある程度可能であるが、大規模なソフトウェア・パッケージの場合には、企業のネットワークの管理者等がパッケージを一時的に企業内のサーバ等に記録する。そして、クライアントはこれをサーバからダウンロードして利用する場合が多いが、この手法では、クライアントが企業内サーバやネットワークに負荷をかけることを減らすことが不可能である。
【０００９】
このような課題を解決する方法として、シングルパッケージから必要なコンポーネントだけを取り出し、新たにパッケージを構成し再配布する方法が考えられる。しかし、一般的にソフトウェア・パッケージは、悪意のある改変やウイルスの混入等を防ぐため、デジタル署名によって、内容が保証されている。このため、シングルパッケージを取得した後に、所定のコンポーネントを仲介者が任意に選択してパッケージを再構成すると、パッケージが改変されたと判断されるため、シングルパッケージの提供者の保証がなくなる。したがって、仲介者が提供者の契約のもと正当にパッケージを構成したとしても、仲介者から提供されたパッケージを取得した顧客は、提供者の保証を受けられない。この結果、パッケージの利用そのものが不可能になり、ソフトウェアに問題があった場合にも提供者に対応を求めることができなくなる場合がある。
【００１０】
本発明の目的は、所定のコンポーネントからソフトウェア・パッケージを仲介者等のユーザが再構成するにあたって、シングルパッケージを提供する一次提供者が内容の正当性を保証した再構成済みパッケージを顧客に提供することが可能なパッケージの再構成方法、装置、プログラムを提供することである。
【課題を解決するための手段】
【００１１】
そこで、本発明は、以下のソフトウェア・パッケージを再構成する方法、装置、プログラムを提供する。
【００１２】
本発明のソフトウェア・パッケージを再構成する方法、装置、プログラムは、一次ソフトウェア・パッケージが複数のコンポーネントと当該コンポーネントの許可された組み合わせに関する組合せ情報とを備え、前記複数のコンポーネントのうちある組合せの選択を受け、前記組合せ情報に基づいて前記選択された組合せのコンポーネントによるソフトウェア・パッケージの再構成を許可するか否かを判断し、前記再構成を許可する判断に応じて前記選択された組合せのコンポーネントを備える二次ソフトウェア・パッケージを再構成する。
【００１３】
すなわち、本発明によれば、１以上のコンポーネントからソフトウェア・パッケージを再構成する際に、所定のコンポーネントの選択を受け、許可されたコンポーネントの組合せ情報に基づいて、所定のコンポーネントの組合せを判断し、この判断に基づいて、選択されたコンポーネントを含む二次ソフトウェア・パッケージを再構成する。
【００１４】
したがって、本発明によれば、ソフトウェア・パッケージを再構成するにあたって、再構成する場合のコンポーネントの組合せに関する情報である組合せ情報に基づいて、ソフトウェア・パッケージを構成するため、一次提供者が許可したコンポーネントの組合せに基づいて、二次ソフトウェア・パッケージを再構成することが可能である。
【００１５】
さらに具体的には、上述の構成に加えて、上述の組合せ情報がデジタル署名を付加されてパッケージ内に格納され、パッケージの正当性は、組合せ情報のデジタル署名により検証される。この構成の場合には、組合せ情報に関する一次提供者の確実な保証のもとに、二次ソフトウェア・パッケージを再構成することが可能である。
【００１６】
さらに具体的には、上述の構成に加えて、再構成するステップにおいて、組合せ情報が、二次ソフトウェア・パッケージに引き継がれる。したがって、一次提供者が許可したコンポーネントの組合せが変更されることなく二次提供者に引き継がれることで、一次提供者のコンポーネントの組合せの許可を、下位の提供者まで引き継ぐことが可能である。
【発明の効果】
【００１７】
したがって、本発明によれば、所定のコンポーネントを含むソフトウェア・パッケージを二次提供者等のユーザが再構成するにあたって、一次ソフトウェア・パッケージを提供する一次提供者が保証した組み合わせのコンポーネントからなるパッケージを、次の提供者となる二次提供者や、最終的な利用者となる顧客に提供することが可能なソフトウェア・パッケージの再構成方法、装置、プログラムを提供することが可能である。
【発明を実施するための最良の形態】
【００１８】
以下に、本発明の好適な実施形態を図面に基づいて説明する。
【００１９】
図１に示すように、パッケージ構成装置１００は、情報の制御を行う制御部１１０とユーザからの入力を受ける入力部１２０と、ソフトウェア・パッケージを記録するパッケージ記録部１３０とから構成される。
【００２０】
パッケージ構成装置１００は、コンポーネントの選択をユーザから受けて、１以上のコンポーネントからなるパッケージを構成する装置である。パッケージ構成装置１００は、ソフトウェア・パッケージを最初に提供した者（以下「一次提供者」）が保証した組み合わせのコンポーネントを用いてパッケージを構成する。本明細書において、パッケージ構成装置１００は、一次ソフトウェア・パッケージであるシングルパッケージ５０から、二次ソフトウェア・パッケージであるプライベートパッケージ６０を構成する処理を行う態様について主に説明する。しかし、パッケージ構成装置１００がシングルパッケージ５０を構成する処理を行ってもよいし、プライベートパッケージ６０を受けた者が使用する装置であってもよい。なお、パッケージ構成装置１００は、情報を処理する機能を備えた装置であり、コンピュータであってよい。
【００２１】
ここで、コンポーネントとは、ソフトウェア・プログラム、データ等であってよい。例えば、一のコンポーネントが文章作成ソフトウェアのようなアプリケーション・プログラムであってもよいし、ライブラリやデバイス・ドライバのようなデータやソフトウェア・プログラムであってもよい。さらに、コンピュータが異常時に、起動可能にするためのプログラムや修復するためのプログラムを含んだ、ソフトウェア・プログラムであってもよい。一方、パッケージは、上述のコンポーネントを１以上組み合わせて構成したソフトウェアの集合である。すなわち、パッケージは、提供されたシングルパッケージに対して、仲介者が所定のコンポーネントを選択して構成される。
【００２２】
制御部１１０は、パッケージ構成装置１００にて動作する情報の演算、制御を行う中央処理装置であり、ＣＰＵ（Central  Processing  Unit）であってよい。制御部１１０は、コンポーネントの組合せを判断する組合せ判断部１１１とパッケージの構成処理を行うパッケージ構成部１１２と、デジタル署名の検証を行う検証部１１３とから構成される。
【００２３】
組合せ判断部１１１は、ユーザにより選択されたコンポーネントの組合せを組合せ情報に基づいて判断する。ここで、組合せ情報とは、パッケージに含まれる各コンポーネントの組合せに関する情報である。すなわち、組合せ情報とは各コンポーネントの組合せのうち、一次提供者が許可する組合せに関する情報である。組合せ情報は、例えば、各コンポーネントの署名を結合したデータ（以下「組合せデータ」）であってよい。
【００２４】
パッケージ構成部１１２は、ユーザが選択したコンポーネントに対して組合せ判断部１１１がこれらの組合せを判断し、判断した結果に基づいて、後述するパッケージの構成処理を行う。
【００２５】
検証部１１３は、一次提供者がデジタル署名による暗号化を行った対象に対して、その正当性を検証する。一次提供者は、シングルパッケージそのものや、各々のコンポーネント、組合せ情報、位置情報等（以下「シングルパッケージ等」）に対して、これらの内容を保証するためにデジタル署名（以下、適宜、「署名」）を行う。このデジタル署名を付加されたシングルパッケージ等が、改変されていないことを保証するために、検証部１１３が署名の検証を行い、一次提供者が提供する正当なシングルパッケージであることを検証する。
【００２６】
ここで、デジタル署名とは、公開鍵暗号とハッシュを組み合わせることで、一次提供者が提供するデータの内容が改変された場合に、この改変を検出することができる方法である。すなわち、デジタル署名では、受け渡すデータをハッシュによりダイジェストに変換し、このダイジェストを秘密鍵で暗号化することで署名を作成する。この署名をデータと供にユーザに提供し、ユーザは、提供されたデータをハッシュによりダイジェストに変換し、このダイジェストと、受け取った署名から公開鍵により復号化したダイジェストとを比較して、ダイジェストが同じであった場合にのみ、このデータをユーザに利用させる方法である。一般的なソフトウェアのパッケージングおよびパッケージの解除方法では、デジタル署名の検証によって改変がなされていないと判断された場合にのみ、内部のデータの利用を許可する。
【００２７】
具体的な、暗号化技術としては、電子商取引など多くの暗号化製品で使われているＲＳＡ暗号技術、ＤＳＡを用いた暗号技術であってもよいし、電子鍵標準仕様の一つである、Ｘ．５０９に準拠した仕様の暗号化技術であってもよい。また、認証やデジタル署名に使用されるハッシュアルゴリズムとしては、ＳＨＡ−１(Secure  Hash  Algorithm  １)が用いられてもよい。
【００２８】
したがって、一次提供者がシングルパッケージ等をデジタル署名してユーザに提供することで、ユーザは第三者により改変されていないことが保証されたシングルパッケージ等を利用することが可能である。
【００２９】
入力部１２０は、パッケージ構成装置１００に対するユーザからの入力を受ける。入力部１２０は、例えば、キーボードやポインティング・デバイス等であってよい。入力部１２０は、コンポーネント選択部１２１を含む。コンポーネント選択部１２１は、コンポーネントの選択をユーザから受信する。
【００３０】
ここで、コンポーネントを選択するユーザとは、一次提供者から顧客の間でパッケージの取引を行う仲介者（二次的、三次的に仲介する提供者）であってよい。さらに、パッケージに含まれる情報の最終的なユーザは一次提供者から直接にシングルパッケージを取得する二次提供者ではなく、この二次提供者からパッケージを取得する三次的（さらに、高次）な提供者であってもよい。
【００３１】
パッケージ記録部１３０は、シングルパッケージや再構成したパッケージを記録する。パッケージ記録部１３０は、コンピュータのハードディスク等であってよい。
【００３２】
次に、一次提供者が提供するシングルパッケージ５０について、図２を用いて説明する。
【００３３】
シングルパッケージ５０は、パッケージの構成を行うユーザが構成を行う前に提供されるパッケージである。本発明の実施形態の説明においては、説明を明確にするために、シングルパッケージ５０を一次提供者が提供するパッケージとして説明する。しかし、これは本発明の範囲を限定するものではない。
【００３４】
シングルパッケージ５０は、ヘッダ５１と、組合せ情報５２と、位置情報５３とを備え、ユーザに選択させるための各コンポーネントＡ（５５）からコンポーネントＸ（５９）と、それぞれのメタ情報Ａ（５４）からメタ情報Ｘ（５８）とを含む。ここで、メタ情報とは、コンポーネントに含まれる最終的に利用したい情報ではなく、コンポーネント自身に関する情報のことであり、各コンポーネントの大きさやデジタル署名などを含んでよい。
【００３５】
ヘッダ５１は、シングルパッケージ内の各情報のデジタル署名を含む。すなわち、ヘッダ５１は、シングルパッケージ５０の署名と、組合せ情報５２、位置情報５３、メタ情報５４、５６、５８の署名を含む。さらに、ヘッダ５１は、各署名を復号化するための公開鍵を含んでいてよい。
【００３６】
また、ヘッダ５１がデジタル署名による暗号化がされて、ヘッダ５１を読み出すときに、検証部１１３がこの署名によりヘッダ５１を検証してもよい。この場合には、シングルパッケージ５０とは別にヘッダの署名と公開鍵が一次提供者からユーザに提供されて、ヘッダ５１の検証後に、シングルパッケージ５０が読み出される。この場合には、ヘッダ５１の検証を行うことで、シングルパッケージ５０全体の検証が行われる。
【００３７】
後述するように、ヘッダ５１に含まれた署名と公開鍵によりダイジェストが作成され、提供されたシングルパッケージ５０から作成されたダイジェストにより、デジタル署名の検証が行われる。例えば、ヘッダ５１に含まれた組合せ情報の署名と公開鍵により、この組合せ情報のダイジェストが作成され、このダイジェストとシングルパッケージ５０の中の組合せ情報から作成されたダイジェストとを比較することで、デジタル署名の検証が行われる。
【００３８】
組合せ情報５２は、各コンポーネントの組合せのうち、シングルパッケージの一次提供者が許可する組合せを記述した情報である。組合せ情報は、後述するように、各コンポーネントの署名を組み合わせたデータ（以下「組合せデータ」）や、この組合せデータに対して作成した署名（組合せ署名）を含む。
【００３９】
位置情報５３は、コンポーネントが格納されている物理的な位置（オフセット情報等）に関する情報を含む。位置情報は、パッケージが再構成された際に変更される可能性がある情報である。
【００４０】
メタ情報５４、５６、５８は、各コンポーネントについてのメタ情報である。例えば、メタ情報Ａ（５４）は、コンポーネントＡ（５５）のサイズ、名前に加えて、コンポーネントＡ（５５）の署名を含む。
【００４１】
なお、シングルパッケージ５０の「ヘッダ情報」や「メタ情報」に関しては、これらの情報が概念的にパッケージの中に格納されることを意味し、パッケージ内の物理的な配置を限定するものではない。
【００４２】
後述するように、例えば、メタ情報５４、５６、５８に含まれた組合せ情報の署名と、ヘッダ５１に含まれた公開鍵により、この組合せ情報のダイジェストが作成され、このダイジェストとシングルパッケージ５０の中の組合せ情報から作成されたダイジェストとを比較することで、デジタル署名の検証が行われてよい。
【００４３】
一次的にパッケージを提供する一次提供者は、パッケージ構成装置１００によりシングルパッケージ５０を構成する。本明細書においては、シングルパッケージ５０とプライベートパッケージ６０とが同一のハードウェアであるパッケージ構成装置１００によりパッケージの構成が行われるが、異なるハードウェアにより実現されてもよい。
【００４４】
パッケージ構成装置１００は、一次提供者の入力に応答して、シングルパッケージ５０を、上述のように、ヘッダ５１、組合せ情報５２、位置情報５３、メタ情報Ａ〜Ｘ５４、５６、５８と、このメタ情報Ａ〜Ｘ５４、５６、５８に対応したコンポーネントＡ〜Ｘ５４、５６、５８により構成する。
【００４５】
一次提供者は、パッケージ構成装置１００により組合せ情報５２を作成する。すなわち、一次提供者は、一次提供者が許可する各コンポーネントの組合せを組合せ情報５２として作成する。
【００４６】
そして、パッケージ構成装置１００は、主に、各コンポーネントのデジタル署名を算出する処理と、各コンポーネントの組合せ情報５２を作成して記録する処理と、パッケージ全体のデジタル署名を行う処理を行う。
【００４７】
すなわち、パッケージ構成装置１００は、各コンポーネントのデジタル署名を算出して記録するために、選択された各コンポーネントをハッシュ化アルゴリズムによりダイジェストに変換し、このダイジェストを秘密鍵により暗号化し、署名を作成し、この署名を各コンポーネントのメタ情報５４、５６、５８に含める。
【００４８】
さらに、パッケージ構成装置１００は、組合せ情報５２をハッシュによりダイジェストに変換し、このダイジェストを秘密鍵により暗号化し、署名を作成し、この署名をシングルパッケージ５０のヘッダ５１に含める。
【００４９】
加えて、パッケージ構成装置１００は、シングルパッケージ５０をハッシュによりダイジェストに変換し、このダイジェストを秘密鍵により署名を作成し、この署名をシングルパッケージ５０のヘッダ５１に含めることで、パッケージ全体のデジタル署名を行う。
【００５０】
上述のように構成されたシングルパッケージ５０に対して、パッケージ構成装置１００が、プライベートパッケージ６０を構成する具体的な動作を、図３のフローチャートを用いて説明する。以下では、パッケージ構成装置１００が、シングルパッケージ５０からプライベートパッケージ６０を構成することについて主に説明するが、シングルパッケージ５０からプライベートパッケージ６０を構成した後に、さらに、プライベートパッケージ６０を構成する態様であってもよい。
【００５１】
最初に、検証部１１３が、シングルパッケージ５０を検証する（ステップＳ０１）。すなわち、提供されたシングルパッケージ５０が、ユーザに提供されるまでに改変されていないことを保証するために、検証部１１３は、シングルパッケージ５０の検証を行う。
【００５２】
検証部１１３がシングルパッケージ５０を検証する場合には、シングルパッケージ５０全体の署名と公開鍵が一次提供者からユーザに提供される。この署名と公開鍵は、パッケージの内部に含まれてもよいし、パッケージと別に提供されてもよい。この署名と公開鍵を用いて、シングルパッケージ５０全体が、第三者により改変されていないかが検証される。
【００５３】
検証部１１３は、ヘッダ５１に含まれた署名を公開鍵により復号化してダイジェストに変換する。このダイジェストと、シングルパッケージ５０をハッシュにより変換して作成したダイジェストとを比較することで、シングルパッケージ５０の正当性を検証する。
【００５４】
検証部１１３は、一次提供者が保証したシングルパッケージ５０であると判断した場合には、検証部１１３が、組合せ情報５２を署名により検証する（ステップＳ０２、Ｓ０３）。検証部１１３は、このシングルパッケージが一次提供者の保証がなく、第三者により改変された可能性があると判断した場合には処理を終了する。
【００５５】
検証部１１３は、一次提供者が保証したシングルパッケージであると判断した場合には、シングルパッケージ５０に記録された組合せ情報５２をヘッダ５１に記録された組合せ情報の署名により検証する（ステップＳ０３）。
【００５６】
検証部１１３は、ヘッダ５１に含まれた署名を公開鍵により復号化してダイジェストに変換する。このダイジェストと、シングルパッケージ５０に含まれる組合せ情報５２をハッシュ化アルゴリズムにより作成したダイジェストとを比較することで、組合せ情報５２の正当性を検証する。
【００５７】
一次提供者が保証した組合せ情報５２であると判断した場合には、組合せ判断部１１１が、選択されたコンポーネントの一覧を受信する（ステップＳ０４、Ｓ０５）。検証部１１３は、検証に失敗し、この組合せ情報５２が一次提供者の保証がなく、第三者により改変された可能性があると判断した場合には処理を終了する。
【００５８】
ユーザがコンポーネントを選択したことを、コンポーネント選択部１２１が受信する（ステップＳ０５）。
【００５９】
次に、組合せ判断部１１１が、組合せ情報５２に基づいて、ユーザに選択されたコンポーネントの組合せを判断する（ステップＳ０６）。例えば、コンポーネント選択部１２１が、ユーザが選択したコンポーネントのリストを作成する。そして、組合せ判断部１１１が、このリストと組合せ情報５２とを比較することで、組合せを判断してもよい。組合せ情報５２は、後述するように、組合せにかかる各コンポーネントの署名を集めたデータ（「組合せデータ」）を含む。さらに、組合せ情報は、この組合せデータを保証するために、組合せデータから作成された署名（以下「組合せ署名」）を含む検証部１１３が組合せデータを検証して、組合せ判断部１１１が、組合せデータと上述のリストを比較して、組合せを判断する。ここで、組合せデータの正当性を保証するために、組合せ署名を用いる。つまり、検証部１１３が、組合せ署名を用いて、組合せデータの正当性を検証する。組合せ情報５２そのものの検証と、組合せ情報内の組合せデータの検証との両方が、検証部１１３により行われる。
【００６０】
組合せ判断部１１１が、一次提供者が許可したコンポーネントの組合せであると判断した場合には、検証部１１３が各コンポーネントのデジタル署名による検証を行う（ステップＳ０７、Ｓ０８）。
【００６１】
一方、組合せ判断部１１１が、一次提供者が許可した組合せでないと判断した場合には、このパッケージの構成は、一次提供者が許可しない構成であるため、処理を終了する。この場合に、組合せ判断部１１１は、一次提供者が許可しない組合せであることをユーザに通知してもよい。すなわち、パッケージ構成装置１００は、一次提供者が許可しない組合せが選択されたことをパッケージ構成装置１００の出力装置に表示してもよい。
【００６２】
次に、検証部１１３が、シングルパッケージに記録されたコンポーネントのうち、組合せとして選択された各コンポーネントの正当性を検証する（ステップＳ０８）。
【００６３】
検証部１１３は、メタ情報５４に含まれた署名を公開鍵により復号化してダイジェストに変換する。このダイジェストと、シングルパッケージに含まれる各コンポーネントをハッシュ化アルゴリズムにより変換して作成したダイジェストとを比較することで、各コンポーネントの正当性を検証する。
【００６４】
検証部１１３が、一次提供者の保証があるコンポーネントであると判断した場合には、パッケージ構成部１１２が、パッケージの構成処理を行う（ステップＳ０９、Ｓ１０）。選択されたコンポーネントのうち１以上のコンポーネントが、デジタル署名の検証に失敗し、第三者により改変された可能性があると判断された場合には、当該コンポーネントに問題があると判断して処理を終了する。
【００６５】
次に、パッケージの構成処理について、図４、図５を用いて説明する。
【００６６】
図４は、パッケージ構成部１１２が実効するパッケージ構成処理のフローチャート図である。図５は、図２のシングルパッケージ５０から構成されたパッケージ（以下「プライベートパッケージ」）である。パッケージ構成部１１２は、シングルパッケージ５０の組合せ情報５２を、プライベートパッケージ６０にコピーする（ステップＳ１１）。
【００６７】
すなわち、組合せ情報５２は、シングルパッケージ５０とプライベートパッケージ６０とでは変更される必要がない。なぜなら、シングルパッケージ５０を構成した一次提供者が保証する組合せ情報５２をユーザも引き継ぐ必要があり、このユーザが作成したプライベートパッケージ６０をさらに再構成する場合に、一次提供者の保証された組合せに基づいて、構成される必要があるからである。
【００６８】
したがって、プライベートパッケージ６０は、一次提供者が保証する組合せ情報を引き継ぐことで、このプライベートパッケージ６０に対するパッケージの再構成に対して、一次提供者の保証した範囲でのコンポーネントの組合せに限定することが可能である。ここで、もし悪意ある仲介者が、一次提供者に認められない独自の組み合わせ情報を作成しようとした場合、そのように作成された組み合わせ情報は、パッケージの利用者が組み合わせ情報のデジタル署名を検証することにより、正当なものでないことを検出できる。
【００６９】
次に、パッケージ構成部１１２は、ユーザにより選択された各コンポーネントとメタ情報とを、シングルパッケージ５０からプライベートパッケージ６０へコピーする（ステップＳ１２、Ｓ１３）。次に、プライベートパッケージ６０となることで、各コンポーネントの物理的な記録場所が変更されるため、位置情報の再計算を行う（ステップＳ１４）。再計算した位置情報を、位置情報６３としてプライベートパッケージ６０に記録する（ステップＳ１５）。
【００７０】
次に、パッケージ構成部１１２は、ヘッダ６１の情報を作成し（ステップＳ１６）、プライベートパッケージ６０に記録する(ステップＳ１７)。ヘッダ５１の情報は、シングルパッケージ５０の署名と、組合せ情報５２の署名、公開鍵と、位置情報５３の署名、公開鍵と、メタ情報５４、５６、・・・、５８の署名、公開鍵を含む。パッケージ構成部１１２は、このヘッダ５１と異なるヘッダ６１を作成する。組合せ情報５２と組合せ情報６２は、同様の情報であるので、ヘッダ６１の情報として組合せ情報６２の署名と公開鍵が含まれる。
【００７１】
そして、パッケージ構成部１１２は、ヘッダ６１の情報に、選択されたコンポーネントのメタ情報５４、５６、５８の署名と公開鍵を含ませる。さらに、パッケージ構成部１１２は、再計算した位置情報６３の署名と公開鍵を含ませる。パッケージ構成部１１２は、このように作成されたヘッダ６１を、プライベートパッケージ６０に記録する。
【００７２】
最後に、パッケージ構成部１１２は、構成したプライベートパッケージ６０に対するデジタル署名処理を行う（ステップＳ１８）。上述のように、パッケージ構成部１１２が、ヘッダ６１の署名を作成することで、パッケージ全体のデジタル署名処理を行ってもよい。
【００７３】
なお、図４のパッケージ構成処理は、一例を示したものであり、各処理の順番が異なっても、最終的にプライベートパッケージ６０が構成されることは、当業者からは、自明なことである。また、シングルパッケージの保証があると判断されることで、組合せ情報の保証もあると判断して、組合せ情報の検証（ステップＳ０３、Ｓ０４）の処理を行わない態様であってもよい。
【００７４】
図５では、一例として、コンポーネントＢ（５７）、コンポーネントＦ（６７）、コンポーネントＫ（６９）から、プライベートパッケージ６０を構成した図である。コンポーネント選択部１２１は、ユーザからこれらのコンポーネントの選択を受信する。そして、組合せ判断部１１１が、組合せ情報からこれらの組合せを判断する。コンポーネントＢ（５７）、コンポーネントＦ（６７）、コンポーネントＫ（６９）の組合せが、一次提供者が保証した組合せを記録した組合せ情報から、一次提供者が保証したものであると判断された場合には、各コンポーネントとこれに対応したメタ情報５６、６６、６８とをプライベートパッケージ６０に記録する。
【００７５】
そして、プライベートパッケージ６０に対して、デジタル署名を行うことで、このプライベートパッケージ全体の署名と、この署名の公開鍵とをヘッダ６１に含めてもよい。
【００７６】
なお、シングルパッケージ５０と同様に、プライベートパッケージ６０の「ヘッダ情報」や「メタ情報」に関しては、これらの情報が概念的にパッケージの中に格納されることを意味し、パッケージ内の物理的な配置にまで限定するものではない。
【００７７】
図６を用いて、組合せ情報について詳細に説明する。組合せ情報は、組合せにかかる各コンポーネントの署名を集めたデータである「組合せデータ」から構成されてよい。すなわち、組合せデータは、一次提供者が保障する組合せを有する複数のコンポーネントの各々のデジタル署名を集めたデータであってよい。図６に示すように、一次提供者が許可した組合せが、コンポーネントＢ、コンポーネントＦ、コンポーネントＫである場合に、各コンポーネントのデジタル署名２０１、２０２、２０３を集めて構成したデータを、組合せデータ２１０に示した。すなわち、図６では、コンポーネントＢのデジタル署名がＤＢ２０１に対応し、コンポーネントＦがＤＦ２０２に対応し、コンポーネントＫがＤＫ２０３に対応する。このような組合せデータ２１０が、一次提供者が保証する組合せの数だけ組合せ情報に含まれる。
【００７８】
さらに、この一の組合せデータに対応した組合せ署名２２０が、組合せデータ２１０を保証するために備えられていてもよい。この場合には、検証部１１３が組合せ署名２２０により、組合せデータ２１０を検証する。すなわち、組合せ情報５２そのものの検証と、組合せ情報内の組合せデータ２１０の検証との両方が、検証部１１３により行われる。
【００７９】
図７の例に示すように、組合せ定義２００、３００は、コンポーネントの一の組合せに関する情報から構成されるデータである。すなわち、組合せ定義２００は、組合せデータ２１０と組合せ署名２２０とから構成される。組合せ定義３００は、組合せデータ２１０と組合せ署名３２０とから構成される。組合せ情報８０は、複数の組合せ定義２００、３００、・・により構成される。
【００８０】
そして、組合せ判断部１１１が、組合せ情報に記録された各組合せデータと、選択されたコンポーネントの組合せ（以下「選択された組合せ」）を比較する。このとき、組合せデータは、組み合わされたコンポーネントの名称を記録したリストを備えていて、これと、選択された組合せを比較することで判断してもよい。
【００８１】
ここで、変形例として、図８に示すように、パッケージ構成部１１２が、一の組合せ署名を、さらに他の組合せデータに含めることで、第２の組合せ定義を構成してもよい。すなわち、パッケージ構成部１１２が、一の組合せデータ２１０の組合せ署名２２０を含む第２組合せ定義２５０を構成してもよい。この場合には、第２組合せ定義２５０のデジタル署名にて、デジタル署名２０１〜２０３を含まなくてよい。したがって、第２組合せ定義２５０のコンパクト化が図れることにより、組合せ情報２８０の情報量を少なくすることが可能である。
【００８２】
このように、入子状に組み合わせて組合せ情報を構成することは、パッケージ構成部１１２がユーザからの入力を受けて、プライベートパッケージ６０を構成する際に適用されてよいが、一次提供者が提供するシングルパッケージ５０が、このようなデータ構造を備えてもよい。
【００８３】
加えて、本明細書においては、シングルパッケージ５０とプライベートパッケージ６０とを区別するために、シングルパッケージ５０が最初に一次提供者から提供されるパッケージであり、プライベートパッケージ６０が二次提供者により構成されたパッケージであると説明した。しかしながら、二次的に構成されたプライベートパッケージ６０に基づいて、三次的なプライベートパッケージ６０が構成される場合には、本明細書のシングルパッケージ５０が二次的なプライベートパッケージ６０に該当することは、当業者からすれば、自明のことである。
【００８４】
このような実施形態を実現するパッケージ構成方法を、コンピュータやサーバにて実行するためのプログラムにより実現することができる。このプログラムのための記憶媒体としては、光学記憶媒体、テープ媒体、半導体メモリ等が挙げられる。また、専用通信ネットワークやインターネットに接続されたサーバ・システムに設けられたハードディスク又はＲＡＭ等の記憶装置を記憶媒体として使用し、ネットワークを介してプログラムを提供してもよい。
【００８５】
以上、本発明の実施形態を説明したが、具体例を例示したに過ぎず、特に本発明を限定しない。また、本発明の実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、本発明の実施形態に記載された効果に限定されない。
【図面の簡単な説明】
【００８６】
【図１】パッケージ構成装置１００の機能ブロック図である。
【図２】シングルパッケージ５０のデータ構造を示す図である。
【図３】パッケージ構成装置１００が実行するメイン動作を示すフローチャート図である。
【図４】パッケージ構成装置１００が実行するパッケージ構成処理を示すフローチャート図である。
【図５】プライベートパッケージ６０のデータ構造を示す図である。
【図６】組合せデータ２１０と組合せ署名２２０とを示す図である。
【図７】組合せ情報８０のデータ構造を示す図である。
【図８】組合せ情報２８０のデータ構造を示す図である。
【符号の説明】
【００８７】
５０  シングルパッケージ
５１、６１  ヘッダ
５２、６２  組合せ情報
５３、６３  位置情報
５４  メタ情報Ａ
５５  コンポーネントＡ
５６  メタ情報Ｂ
５７  コンポーネントＢ
５８  メタ情報Ｘ
５９  コンポーネントＸ
６０  プライベートパッケージ
６６  メタ情報Ｆ
６７  コンポーネントＦ
６８  メタ情報Ｋ
６９  コンポーネントＫ
８０、２８０  組合せ情報
１００  パッケージ構成装置
１１０  制御部
１１１  組合せ判断部
１１２  パッケージ構成部
１１３  検証部
１２０  入力部
１２１  コンポーネント選択部
１３０  パッケージ記録部
２００、３００  組合せ定義
２０１、２０２、２０３、２５１、２５２、２５３、３１１、３１２、３１３、３１４  デジタル署名
２２０、３２０、２７０、  組合せ署名
２１０、３１０  組合せデータ
２５０  第２組合せ定義
【図１】
2006350850.tif 000003
【図２】
2006350850.tif 000004
【図３】
2006350850.tif 000005
【図４】
2006350850.tif 000006
【図５】
2006350850.tif 000007
【図６】
2006350850.tif 000008
【図７】
2006350850.tif 000009
【図８】
2006350850.tif 000010