(57)【要約】【課題】  所定のコンポーネントからソフトウェア・パッケージを再構成するにあたって、ネットワークの負荷を軽減し、クライアント側に一時的に大きな記録領域を必要としないパッケージを構成することが可能な方法を提供する。【解決手段】  第二コンピュータは、第一コンピュータから、１以上のコンポーネントの組合せに関する組合せ情報、及び、第一コンピュータに記録されたコンポーネントの格納位置を示す位置情報を受信し、所定のコンポーネントの選択をユーザから受けて、組合せ情報に基づいて選択を受けたコンポーネントの組合せを判断し、組合せの判断及び選択を受けたコンポーネントに対応する位置情報に基づいて、選択を受けたコンポーネントを受信し、受信したコンポーネントにより二次ソフトウェア・パッケージを構成する。【選択図】      図１
2007026244.tif 000002
【特許請求の範囲】
【請求項１】
第一コンピュータに記録された一次ソフトウェア・パッケージの１以上のコンポーネントを受信することで二次ソフトウェア・パッケージを第二コンピュータにて構成するパッケージ構成方法であって、
前記第二コンピュータが、
前記第一コンピュータから、前記１以上のコンポーネントの組合せに関する組合せ情報、及び、前記第一コンピュータに記録されたコンポーネントの格納位置を示す位置情報を受信するステップと、
前記１以上のコンポーネントのうち一部または全部の選択をユーザから受けるステップと、
前記組合せ情報に基づいて選択を受けたコンポーネントの組合せを判断するステップと、
前記組合せの判断及び前記選択を受けたコンポーネントに対応する位置情報に基づいて、前記選択を受けたコンポーネントを前記第一コンピュータに要求するステップと、
前記選択を受けたコンポーネントを受信するステップと、
受信したコンポーネントにより二次ソフトウェア・パッケージを構成するステップと、
を含むパッケージ構成方法。
【請求項２】
前記二次ソフトウェア・パッケージを構成するステップは、前記受信したコンポーネントと、前記受信したコンポーネントの組合せに関する組合せ情報と、前記受信したコンポーネントの格納位置を示す位置情報とにより、前記二次ソフトウェア・パッケージを構成する請求項１に記載のパッケージ構成方法。
【請求項３】
第一コンピュータに記録された一次ソフトウェア・パッケージの１以上のコンポーネントを受信することで二次ソフトウェア・パッケージを第二コンピュータにて構成し、第二コンピュータに記録された二次ソフトウェア・パッケージの１以上のコンポートネントを受信することで三次ソフトウェア・パッケージを第三コンピュータにて構成するパッケージ構成方法であって、
前記第三コンピュータが、
前記第二コンピュータから、前記１以上のコンポーネントの組合せに関する組合せ情報、及び、前記第二コンピュータに記録されたコンポーネントの格納位置を示す位置情報を受信するステップと、
前記１以上のコンポーネントのうち一部または全部の選択をユーザから受けるステップと、
前記組合せ情報に基づいて選択を受けたコンポーネントの組合せを判断するステップと、
前記組合せの判断及び前記選択を受けたコンポーネントに対応する位置情報に基づいて、前記選択を受けたコンポーネントを前記第二コンピュータに要求するステップと、
前記選択を受けたコンポーネントを受信するステップと、
受信したコンポーネントにより三次ソフトウェア・パッケージを構成するステップと、
を含む請求項１に記載のパッケージ構成方法。
【請求項４】
請求項１に記載のパッケージ構成方法であって、
１以上の前記コンポーネントの各々がデジタル署名され、前記受信するステップにて受信したコンポーネントに対して、デジタル署名による検証を行うステップと、
を含むパッケージ構成方法。
【請求項５】
請求項１に記載のパッケージ構成方法であって、
前記組合せ情報がデジタル署名され、受信した前記組合せ情報に対してデジタル署名による検証を行うステップを含むパッケージ構成方法。
【請求項６】
請求項１に記載のパッケージ構成方法であって、
構成した前記パッケージ全体に対してデジタル署名を行うステップを含むパッケージ構成方法。
【請求項７】
請求項１に記載の方法であって、
前記コンポーネントを受信した後に、
前記位置情報を更新するステップを含み、
前記構成するステップでは、前記組合せ情報、更新した前記位置情報及び受信した前記コンポーネントによりパッケージを構成するパッケージ構成方法。
【請求項８】
コンピュータにて読み取り可能な記録媒体のデータ構造であって、
ソフトウェア・パッケージの構成要素となる１以上のコンポーネントと、
１以上の前記コンポーネントの各々の組合せに関する組合せ情報と、
１以上の前記コンポーネントの各々の物理的な格納位置を示す位置情報と、
１以上の前記コンポーネントの各々のメタ情報を集約して記録した論理データと、
を含むデータ構造。
【請求項９】
請求項８に記載のデータ構造であって、
前記論理データのデジタル署名を記録したヘッダ領域を備えるデータ構造。
【請求項１０】
請求項８に記載のデータ構造であって、
前記組合せ情報のデジタル署名を記録したヘッダ領域を備えるデータ構造。
【請求項１１】
請求項８に記載のデータ構造であって、
前記位置情報のデジタル署名を記録したヘッダ領域を備えるデータ構造。
【請求項１２】
請求項８に記載のデータ構造であって、
前記論理データが、前記１以上のコンポーネントの各々のデジタル署名を集約して記録したデータであるデータ構造。
【請求項１３】
一次ソフトウェア・パッケージを記憶する第一コンピュータにて動作し、前記一次ソフトウェア・パッケージ中の少なくとも１以上のコンポーネントを送信することで第二コンピュータに対して二次ソフトウェア・パッケージを構成させる方法であって、
前記第一コンピュータが、
前記１以上のコンポーネントの組合せに関する組合せ情報、及び、前記第二コンピュータに記録されたコンポーネントの格納位置を示す位置情報を前記第二コンピュータに送信するステップと、
前記組合せ情報に基づいて前記第二コンピュータにおいて判断されたコンポーネントを前記第二コンピュータへ送信するステップと、
を含むパッケージ構成方法。
【請求項１４】
前記第二コンピュータにおいて判断されたコンポーネントを前記第二コンピュータへ送信するステップは、
前記第二コンピュータにおいて判断されたコンポーネント及び前記判断されたコンポーネントの組合せに関する組合せ情報を前記第二コンピュータへ送信する請求項１３に記載のパッケージ構成方法。
【請求項１５】
請求項１３に記載の方法であって、
前記コンポーネントの各々に対して、デジタル署名を行うステップを含む、パッケージ構成方法。
【請求項１６】
請求項１４に記載の方法であって、
前記組合せ情報及び／又は前記位置情報に対して、デジタル署名を行うステップを含む、パッケージ構成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェア・パッケージを再構成する方法、及びこのソフトウェア・パッケージのデータ構造に関する。さらに具体的には、コンピュータにて動作するプログラムによりソフトウェア・パッケージを再構成するための方法、及びソフトウェア・パッケージのデータ構造に関する。
【背景技術】
【０００２】
近年のソフトウェアの多様化に伴い、ソフトウェアのパッケージは多数のコンポーネントから構成されるようになっている。しかし、ソフトウェアの使用者がその全てのコンポーネントを使用することは希であり、ソフトウェアを提供するベンダーは、顧客の必要の度合いが高いコンポーネントだけを含むソフトウェア・パッケージ（以下、適宜、「パッケージ」）を顧客に配布することが必要とされている。
【０００３】
通常、一次提供者となるベンダーは、顧客に最適なパッケージを構成する際には、この顧客のニーズにあったソフトウェア・プログラム（以下「コンポーネント」）を選択して、パッケージを構成する。
【０００４】
例えば、ベンダーがオペレーティング・システムをパッケージとして提供する際には、このオペレーティング・システムが提供する言語により、必要となるコンポーネントが異なる。したがって、英語、日本語、フランス語対応の各コンポーネントのうち、顧客に適した一言語のコンポーネントを選択し、全体を別々のパッケージとして提供する場合が多い。
【０００５】
しかし、パッケージの提供者がその都度個別のパッケージを作成するようでは、多数のパッケージの管理、検査、配布、メディアの作成のための人的・時間的コストが増大してしまう。このため、ベンダーは、選択され得る全てのコンポーネントを含んだ一次ソフトウェア・パッケージ（以下「シングルパッケージ」）を提供し、使用者がインストール時に導入するコンポーネントを選択するという方法が用いられる。このような構造は、オフィスアプリケーションの配布などの際に良く用いられている。
【０００６】
しかし現状では、ソフトウェア・プログラムの機能の充実に伴い、シングルパッケージを構成する各コンポーネントのファイルサイズが大きくなる傾向があり、これに伴ってシングルパッケージのサイズも巨大化している。近年ソフトウェア・パッケージがインターネットなどのネットワークを介して配布されることが多くなっているが、こうしたシングルパッケージをネットワークにて配布する際に、サーバの処理能力に対する負荷や、ネットワークに対する負荷、サーバや使用者の記憶装置に占める容量が高まる傾向があった。
【０００７】
そこで、シングルパッケージのサイズが大きくなったとしても、ネットワークを介してシングルパッケージを配信する際に、サーバやネットワークの負荷を低減して配信する方法が提案されている（例えば、特許文献１、２）。
【特許文献１】特開平８−８３２４５号公報
【特許文献２】特開２０００−２８５０４８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、特許文献１、２の方法では、巨大化したパッケージの配布に対してサーバ及びネットワークの負荷を低減することは可能であるが、結果的には、パッケージの全体をクライアントにダウンロードする必要がある。すなわち、ダウンロードされるクライアントに必要なコンポーネントであるか否かに拘らず、パッケージ全体をダウンロードする。
【０００９】
したがって、パッケージのサイズが大きい場合には、このパッケージをダウンロードする際にネットワークを占有する時間が長くなり、結果的にネットワークの負荷が緩和されない。さらに、ダウンロードされるクライアントの記録装置には、全体のパッケージを一時的に記録するために、十分な記録領域を設ける必要がある。昨今の携帯電話や携帯情報端末はインターネットに接続されているが、パーソナルコンピュータ等に比べ一般に小型で機能が低いため、十分な一時記憶領域を確保することができない。今日の多様化したソフトウェアは多数のコンポーネントから構成されるが、ソフトウェアの配布やパッケージングにおいては、ファイルの管理上の容易さ、ファイル置かれた位置の管理のしやすさなどから、複数のコンポーネントを一つにまとめたシングルパッケージを用いたいという要求が強い。しかしながら、これまでのパッケージ方法では、上述のような課題から、携帯電話や携帯情報端末といった機器に対してシングルパッケージでソフトウェアを提供することができなかった。
【００１０】
そこで、本発明の目的は、所定のコンポーネントからソフトウェア・パッケージを再構成するにあたって、ネットワークの負荷を軽減し、クライアント側に一時的に大きな記録領域を必要としないパッケージを構成することが可能な方法、及びパッケージを提供するデータのデータ構造を提供することである。
【課題を解決するための手段】
【００１１】
そこで、本発明は、以下のソフトウェア・パッケージを構成する方法を提供する。
【００１２】
本発明は、第一コンピュータに記録された一次ソフトウェア・パッケージの１以上のコンポーネントを受信することで二次ソフトウェア・パッケージを第二コンピュータにて構成するパッケージ構成方法であって、前記第二コンピュータが、前記第一コンピュータから、前記１以上のコンポーネントの組合せに関する組合せ情報、及び、前記第一コンピュータに記録されたコンポーネントの格納位置を示す位置情報を受信するステップと、前記１以上のコンポーネントのうち一部または全部の選択をユーザから受けるステップと、前記組合せ情報に基づいて選択を受けたコンポーネントの組合せを判断するステップと、前記組合せの判断及び前記選択を受けたコンポーネントに対応する位置情報に基づいて、前記選択を受けたコンポーネントを前記第一コンピュータに要求するステップと、前記選択を受けたコンポーネントを受信するステップと、受信したコンポーネントにより二次ソフトウェア・パッケージを構成するステップと、を含むパッケージ構成方法を提供する。
【００１３】
したがって、本発明に係る方法によれば、クライアントが、サーバに記録された組合せ情報に基づいて、各コンポーネントの組合せを判断し、この判断した結果からパッケージを構成する。このため、クライアントは、必要なコンポーネントのみをダウンロードすればよく、サーバに記録されたコンポーネントの全てをダウンロードし、記録する必要がない。
【００１４】
すなわち、本発明によれば、パッケージを構成する際に、個別のコンポーネントを送信するため、サーバ、クライアント間でのネットワークの負荷を軽減することが可能である。加えて、シングルパッケージの構造がいわばブロックに分割されており、クライアントがダウンロードを行う際に、必要なブロックを連結することで新しいパッケージが完成するため、クライアント側に作業用の記録領域を必要としないようなパッケージを構成することが可能である。
【００１５】
さらに具体的には、上述の構成に加えて、パッケージ内の上述の組合せ情報がデジタル署名され、クライアントがパッケージ内の組合せ情報の正当性を、デジタル署名を用いて検証する。この構成では、組合せ情報を読み出す際にデジタル署名による検証が行われるため、組合せ情報に関する提供者の確実な保証のもとに、パッケージを構成することが可能である。
【発明の効果】
【００１６】
本発明によれば、クライアントがパッケージを構成する際に、コンポーネントの組合せを判断して、この判断の結果から、選別されたコンポーネントのみを受信するため、サーバ、クライアント間でのネットワークの負荷を軽減することが可能である。加えて、シングルパッケージ全体を記録しないため、クライアント側に作業用の一時記録領域を必要とせずにパッケージを構成することが可能である。
【発明を実施するための最良の形態】
【００１７】
以下に、本発明の好適な実施形態を図面に基づいて説明する。
【００１８】
図１に示すように、パッケージ構成システム１は、パッケージサーバ１００とクライアント２００と、これらのコンピュータを互いに接続する通信回線ネットワーク３０とから構成される。パッケージ構成システム１には、複数のクライアント２００が接続され、パッケージサーバ１００からそれぞれのクライアント２００がパッケージの構成を行ってもよい。
【００１９】
パッケージサーバ１００（第一コンピュータ）は、一次提供者が提供するソフトウェア・パッケージ（以下「シングルパッケージ」）を格納し、クライアント２００にて構成するパッケージの構成要素となるコンポーネント、情報、データを記録する。ここで、パッケージサーバ１００は、パッケージ内の任意の先頭からの位置とサイズの情報をクライアント２００に送信可能である。また、パッケージサーバ１００は、デジタル署名を行うことが可能な、通常のファイルサーバであってよい。
【００２０】
パッケージサーバ１００は、パッケージサーバ１００の情報を制御する制御部１１０と、ヘッダ、データ、情報、コンポーネント、シングルパッケージを記録する記録部１２０と、通信回線ネットワーク３０に接続されて通信を行う通信部１３０とから構成されてよい。
【００２１】
ここで、パッケージとは、上述のコンポーネントを１以上組み合わせて構成したソフトウェアの集合である。すなわち、パッケージは、提供されたシングルパッケージに対して、クライアント２００を使用する仲介者が所定のコンポーネントを選択して構成される。なお、本明細書においては、シングルパッケージをユーザが再構成して構成したパッケージをプライベートパッケージとする。
【００２２】
コンポーネントとは、ソフトウェア・プログラム、データ等であってよい。例えば、１のコンポーネントが文章作成ソフトウェアのようなアプリケーション・プログラムであってもよいし、ライブラリやデバイス・ドライバのようなデータやソフトウェア・プログラムであってもよい。さらに、コンピュータが異常時に、起動可能にするためのプログラムや修復するためのプログラムを含んだ、ソフトウェア・プログラムであってもよい。各コンポーネントは、記録媒体内に連続的に記録（ブロック状に記録）されていてよいし、物理的には離散的であるが、読出し、書き込み時に連続的に読出し、書き込みが行われる態様であってよい。
【００２３】
制御部１１０は、パッケージサーバ１００にて動作する演算、制御を行う中央処理装置であり、ＣＰＵ（Central  Processing  Unit）であってよい。パッケージを構成する情報、データ、コンポーネントに対するデジタル署名の暗号化を行う署名実行部１１１を含んでよい。シングルパッケージを提供する提供者は、クライアント２００からパッケージの構成に関する要求に対して、提供者の保証をするために、署名実行部１１１により所定の情報、データ、コンポーネント、パッケージに対してデジタル署名を行う。
【００２４】
ここで、デジタル署名とは、公開鍵とハッシュを組み合わせることで、提供者が提供するデータの内容を改変されることなく、特定のユーザに対してのみデータを受け取ることを可能とする方法である。すなわち、デジタル署名では、受け渡すデータをハッシュによりダイジェストに変換し、このダイジェストを暗号化することで署名を作成する。この署名をデータと供にユーザに提供し、ユーザは、提供されたデータをハッシュによりダイジェストに変換し、このダイジェストと、受け取った署名から公開鍵により復号化したダイジェストとを比較して、ダイジェストが同じであった場合にのみ、このデータがオリジナルと同じであるとみなして、、ユーザから利用可能にするための方法である。
【００２５】
具体的な、暗号化技術としては、電子商取引など多くの暗号化製品で使われているＲＳＡ暗号技術、ＤＳＡを用いた暗号技術であってもよいし、電子鍵標準仕様の一つである、Ｘ．５０９に準拠した仕様の暗号化技術であってもよい。また、認証やデジタル署名に使用されるハッシュ化アルゴリズムとしては、ＳＨＡ−１(Secure  Hash  Algorithm１)が用いられてもよい。
【００２６】
したがって、一次提供者がシングルパッケージ等をデジタル署名してユーザに提供することで、ユーザは第三者により改変されていないことが検証可能なシングルパッケージを提供することが可能である。
【００２７】
通信部１３０は、クライアント２００からのパッケージ構成のための要求（ヘッダ要求、データ要求、情報要求、コンポーネント要求）を受信する要求受信部１３１と、この要求に対するヘッダ、データ、情報、コンポーネントを送信する送信部１３２とを備えていてよい。パッケージサーバ１００の記録部１２０は、シングルパッケージを記録するパッケージ記録部１２１を備える。
【００２８】
クライアント２００（第二コンピュータ）は、ユーザからの入力を受けて、シングルパッケージからパッケージを構成する。クライアント２００は、クライアント２００の情報を制御する制御部２１０と、ヘッダ、データ、情報、コンポーネント、パッケージを記録する記録部２２０と、通信回線ネットワーク３０に接続されて通信を行う通信部２３０と、ユーザからの入力を受ける入力部２５０とから構成されてよい。クライアント２００は、情報処理装置であって、コンピュータ、携帯情報端末、携帯電話等であってもよい。
【００２９】
制御部１１０は、クライアント２００にてパッケージを構成するパッケージ構成部２１５と、デジタル署名の検証を行う検証部２１６と、クライアント２００にて選択されたコンポーネントの組合せを判断する組合せ判断部２１７を含む。
【００３０】
パッケージ構成部２１５は、パッケージサーバ１００から受信したヘッダ、データ、情報、コンポーネントからプライベートパッケージを構成する。検証部２１６は、パッケージサーバ１００から受信したヘッダ、コンポーネント、データ、情報のデジタル署名を検証する。組合せ判断部２１７は、パッケージサーバ１００から受信した組合せ情報に基づいて、コンポーネントの組合せを判断する。
【００３１】
要求送信部２３１は、ユーザからの入力を受けて、パッケージサーバ１００に対してパッケージ構成のための要求（ヘッダ要求、データ要求、情報要求、コンポーネント要求）を送信する。入力部２５０は、ユーザからの入力を受けるユーザインタフェースである。例えば、キーボードやポインティング・デバイス等であってよい。
【００３２】
ここで、クライアント２００は、パッケージサーバ１００から送信されたコンポーネント、情報、データに基づいて２次ソフトウェア・パッケージ（以下、「プライベートパッケージ」）を構成する。すなわち、クライアント２００は、ファイル転送の機能を持つパッケージサーバ１００から受信したファイルの位置の情報に基づいて、この指令された位置の情報から先頭部分だけをダウンロードする。そして、クライアント２００は、ダウンロードした先頭部分のコンポーネントからパッケージを構成するために必要な情報をパッケージサーバ１００より取得する。すなわち、クライアント２００は、パッケージ内のコンポーネントの一覧およびコンポーネントに付随する名前などの情報、またコンポーネントの組合せに関する組合せ情報といった情報の、パッケージ内における配置情報を取得する。さらに、クライアント２００は、取得した配置情報を元に、パッケージを構成する。
【００３３】
さらに、クライアント２００は、パッケージサーバ１００より取得したパッケージの構成情報を元に、ユーザによるコンポーネントの選択を促す表示画面等を表示してもよい。ここで、コンポーネントの選択において、クライアント２００に予め設定されたプログラムにより選択が行われてもよい。
【００３４】
ここで、クライアント２００を操作して、１以上のコンポーネントによりパッケージを構成するユーザとは、シングルパッケージを提供する提供者から顧客の間でパッケージの取引を行う中間的な提供者（仲介者）であってよい。すなわち、本発明の好適な実施例では、シングルパッケージからプライベートパッケージを構成した二次提供者が、さらに、子クライアント（第三コンピュータ）に三次的にパッケージ（三次パッケージ）を構成させるといったように、提供者の間で、連鎖的にパッケージが構成される態様であってよい。
【００３５】
次に、一次提供者が提供するシングルパッケージについて、図２を用いて説明する。シングルパッケージは、パッケージサーバ１００に記録される。ここで、子クライアントにてパッケージを構成する場合には、クライアント２００にて構成されたプライベートパッケージが、ここで説明するシングルパッケージに該当する。
【００３６】
シングルパッケージ５０は、パッケージの構成を行うユーザが構成を行う前に提供されるパッケージである。したがって、シングルパッケージ５０を提供する者が一次提供者であってもよいし、二次提供者であってもよい。本発明の実施形態の説明においては、説明を明確にするために、シングルパッケージ５０を一次提供者が提供するパッケージとして、プライベートパッケージ６０を二次提供者が構成したパッケージとして説明する。しかし、上述のように、本発明の好適な実施例では、パッケージサーバ１００から受信したコンポーネントからパッケージを構成したクライアント２００が、パッケージ構成サーバ１００として機能し、子クライアントに対して、パッケージを構成させることが可能である。したがって、本発明の好適な実施例では、パッケージの構成を提供者間で連鎖的に行うことが可能である。
【００３７】
シングルパッケージ５０は、ヘッダ５１とコンポーネントに関する情報である論理データ５２と、組合せ情報５３と、位置情報５４と、コンポーネントから構成される。すなわち、シングルパッケージ５０は、シングルパッケージ５０のヘッダ情報を含むヘッダ５１と、各コンポーネントのメタ情報を含む論理データ５２と、コンポーネントの組合せに関する情報を含む組合せ情報５３と、各パッケージの格納位置に関する情報を含む位置情報５４とを備え、ユーザに選択させるための各コンポーネントＡ（５５）からコンポーネントＸ（５７）を含む。
【００３８】
ヘッダ５１は、ヘッダの署名８０とヘッダ情報８１とから構成される。すなわち、クライアント２００の検証部２１６が、ヘッダの署名８０により検証をした後に、クライアント２００は、ヘッダ情報８１を扱うことが可能である。この態様では、クライアント２００は、シングルパッケージ５０を受信した後に、ヘッダ５１とヘッダの署名８０とを読出すことが可能であり、ヘッダの署名８０によるデジタル署名の認証が行われた後に、ヘッダ情報８１の内容を読出すことが可能になる。
【００３９】
ヘッダ情報８１は、論理データ５２、組合せ情報５３及び位置情報５４の位置・サイズ８３に関する情報と、各デジタル署名に対する公開鍵８２と、論理データの署名８４と、組合せ情報の署名８７と、位置情報の署名９０とを含む（図３参照）。すなわち、ヘッダ５１は、論理データ５２、組合せ情報５３、位置情報５４の各署名を含むことにより、これらのデータ及び情報を受信した際に、デジタル署名による検証を可能にする。
【００４０】
例えば、ヘッダ５１に含まれた組合せ情報の署名８７と公開鍵８２により、組合せ情報５３のダイジェストが作成され、このダイジェストとシングルパッケージ５０の中の組合せ情報５３から作成されたダイジェストとを比較することで、組合せ情報５３がデジタル署名により検証される。
【００４１】
論理データ５２は、コンポーネントのメタ情報（コンポーネント自身に関する情報、即ち、コンポーネントの署名、サイズ、名前など）が、コンポーネント数だけ備えられたデータである。例えば、図２では、論理データ５２は、コンポーネントＡ（５５）のメタ情報とコンポーネントＢ（５６）のメタ情報と、・・・、コンポーネントＸ（５７）のメタ情報とが、コンポーネントごとに、シングルパッケージ５０内にて離散的に記録されずに、集約されて記録されたデータである。
【００４２】
組合せ情報５３は、各コンポーネントの組合せのうち、一次提供者が保証する組合せに関する情報である。組合せ情報は、一つの組合せを定義した組合せ定義が、組合せの数だけ含まれる。組合せ情報５３は、一つの組合せに関する情報を含んだ組合せ定義が、一次提供者が保証する組合せの数だけ含まれる。この組合せ定義は、組合せにかかる各コンポーネントの署名を集めたデータ（以下、「組合せデータ」）を含んでもよい。さらに、組合せ情報は、この組合せデータを保証するために、組合せデータから作成された署名（以下「組合せ署名」）を含んでいてよい。この場合には、検証部２１６が組合せデータを検証して、組合せ判断部１１１が、組合せデータと上述のリストを比較して、組合せを判断する。ここで、組合せデータの正当性を保証するために、組合せ署名を用いてもよい。つまり、検証部１１３が、組合せ署名を用いて、組合せデータの正当性を検証してもよい。この場合には、組合せ情報５３そのものの検証と、組合せ情報内の組合せデータの検証との両方が、検証部２１６により行われる。
【００４３】
位置情報５４は、コンポーネントが格納されている物理的な位置（オフセット番号等）に関する情報を含む。位置情報５４は、パッケージにより異なるため、パッケージの構成後に内容が変更されて、記録される。
【００４４】
次に、パッケージ構成システム１が実行する具体的な動作を、図５、図６のフローチャートを用いて説明する。
【００４５】
最初に、クライアント２００の要求送信部２３１が、パッケージサーバ１００に対して、ヘッダ５１を要求する（ステップＳ０１）。パッケージサーバ１００の要求受信部１３１は、この要求を受信して、シングルパッケージ５０のヘッダ５１をクライアント２００に送信する（ステップＳ０２）。クライアント２００の受信部２３２が、ヘッダ５１を受信する（ステップＳ０３）。そして、検証部２１６が、受信したヘッダ５１を検証する（ステップＳ０４）。
【００４６】
ヘッダ５１は、ヘッダそのものと、ヘッダの署名と、公開鍵とを含むため、検証部２１６は、受信したヘッダそのものをハッシュによりダイジェストに変換し、このダイジェストと、ヘッダの署名を公開鍵により復号化したダイジェストとを比較して、これらのダイジェストが同じであった場合にのみ、このヘッダをユーザに利用させる。
【００４７】
次に、クライアント２００の要求送信部２３１が論理データ５２を要求する（ステップＳ０５）。パッケージサーバ１００の要求受信部１３１は、この要求を受けて、シングルパッケージ５０の論理データ５２をクライアント２００に送信する（ステップＳ０６）。クライアント２００の受信部２３２が、論理データ５２を受信する（ステップＳ０７）。そして、クライアント２００の検証部２１６が、受信した論理データ５２を検証する。パッケージ構成部２１５は、検証した論理データ５２を記録する（ステップＳ０８）。
【００４８】
検証部２１６は、先に受信したヘッダ５１に含まれる論理データ５２の署名と公開鍵を用いて、受信した論理データ５２の検証をする。すなわち、検証部２１６は、受信した論理データ５２をハッシュ化アルゴリズムによりダイジェストに変換し、このダイジェストと、ヘッダ５１に記録された論理データ５２の署名を公開鍵により復号化したダイジェストとを比較して、これらのダイジェストが同じであった場合にのみ、この論理データ５２を利用させる。
【００４９】
次に、クライアント２００の要求送信部２３１が組合せ情報５３を要求する（ステップＳ０９）。パッケージサーバ１００の要求受信部１３１は、この要求を受けて、シングルパッケージ５０の組合せ情報５３をクライアント２００に送信する（ステップＳ１０）。クライアント２００の受信部２３２が、組合せ情報５３を受信する（ステップＳ１１）。そして、クライアント２００の検証部２１６が、受信した組合せ情報５３を検証する。パッケージ構成部２１５は、検証した組合せ情報５３を記録する（ステップＳ１２）。
【００５０】
検証部２１６は、先の論理データ５２と同様に、先に受信したヘッダ５１に含まれる組合せ情報５３の署名と公開鍵を用いて、受信した組合せ情報５３の検証をする。すなわち、検証部２１６は、受信した組合せ情報５３をハッシュによりダイジェストに変換し、このダイジェストと、ヘッダ５１に記録された組合せ情報５３の署名を公開鍵により復号化したダイジェストとを比較して、これらのダイジェストが同じであった場合にのみ、この組合せ情報５３を利用させる。
【００５１】
次に、クライアント２００の要求送信部２３１が位置情報５４を要求する（ステップＳ１３）。パッケージサーバ１００の要求受信部１３１は、この要求を受けて、シングルパッケージ５０の位置情報５４をクライアント２００に送信する（ステップＳ１４）。クライアント２００の受信部２３２が、位置情報５４を受信する（ステップＳ１５）。そして、クライアント２００の検証部２１６が、受信した位置情報５４を検証する（ステップＳ１６）。
【００５２】
検証部２１６は、先の論理データ５２と同様に、先に受信したヘッダ５１に含まれる位置情報５４の署名と公開鍵を用いて、受信した位置情報５４の検証をする。すなわち、検証部２１６は、受信した位置情報５４をハッシュによりダイジェストに変換し、このダイジェストと、ヘッダ５１に記録された位置情報５４の署名を公開鍵により復号化したダイジェストとを比較して、これらのダイジェストが同じであった場合にのみ、この位置情報５４を利用させる。
【００５３】
次に、クライアント２００は、ユーザからのコンポーネントの選択を受信する（ステップＳ１７）。すなわち、クライアント２００が、ヘッダ５１または論理データ５２からダウンロードするコンポーネントの種類を列挙してユーザに提示する。ユーザは、クライアント２００の入力部２５０を介して、コンポーネントの選択を行う。ここで、ユーザがコンポーネントの選択を行わずに、予めクライアント２００に設定されたプログラムにより自動的に選択が行われる態様であってもよい。
【００５４】
ユーザあるいはクライアント２００にて動作するプログラムが選択したコンポーネントの組合せを、クライアント２００の組合せ判断部２１７は、記録された組合せ情報に基づいて判断する（ステップＳ１８）。例えば、組合せ判断部２１７が、ユーザが選択したコンポーネントのリストを、組合せ情報５３に記録されたコンポーネントの組合せリストとを比較することで、組合せを判断する。
【００５５】
組合せ判断部２１７が判断した結果が、一次提供者が許可した組合せである場合（ステップＳ１９）には、要求送信部２３１がコンポーネントのダウンロードの要求をする（ステップＳ２０）。一方、組合せ判断部２１７が、一次提供者が許可したものでないと判断した場合（ステップＳ１９）には、この組合せによるパッケージの構成を許可しないため、再度、コンポーネントの選択を受ける（ステップＳ１７）。
【００５６】
次に、保証された組合せを構成する各コンポーネントを順次、ダウンロードする（ステップＳ２０〜２３）。
【００５７】
すなわち、クライアント２００の要求送信部２３１が一のコンポーネントのダウンロードを要求する（ステップＳ２０）。パッケージサーバ１００の要求受信部１３１は、この要求を受けて、シングルパッケージ５０の一のコンポーネントをクライアント２００に送信する（ステップＳ２１）。クライアント２００の受信部２３２が、このコンポーネントを受信する（ステップＳ２２）。
【００５８】
ここで、パッケージサーバ１００とクライアント２００間で通信を行う際に、送受信するデータのオフセットを指定可能なプロトコル（ＨＴＴＰ（HyperText  Transfer  Protocol）や、ＦＴＰ（File  Transfer  Protocol））を用いて通信が行われてもよい。すなわち、パッケージサーバ１００から送信された位置情報５４から、ダウンロードするコンポーネントのオフセット番号を読み取ることで、ダウンロードの要求の際に、オフセット番号に基づいてコンポーネントの受信が行われる。この場合には、クライアント２００はダウンロードするコンポーネントの記録された場所を指定して、ダウンロードすることができるため、効率的にダウンロードすることが可能である。
【００５９】
ＨＴＴＰでは、クライアント２００の要求送信部２３１が、ＧＥＴコマンドにてオフセットを指定することで、指定するコンポーネントをダウンロードする要求をしてもよい。また、ＦＴＰでは、クライアント２００の要求送信部２３１が、ＲＥＳＴコマンドにてオフセットを指定することで、指定するコンポーネントをダウンロードする要求をしてもよい。ここで、パッケージサーバ１００とクライアント２００との間で行われる通信の方式は、ＮＦＳ(Network   File   System)やＣＩＦＳ(Common   Internet   File   System)などの遠隔ファイルシステムであってもよい。
【００６０】
次に、クライアント２００の検証部２１６が、受信したコンポーネントを検証する。パッケージ構成部２１５は、検証したコンポーネントを記録する（ステップＳ２３）。
【００６１】
検証部２１６は、先に受信した論理データ５２に含まれるこのコンポーネントの署名と公開鍵を用いて、受信したコンポーネントの検証をする（ステップＳ２３）。すなわち、検証部２１６は、受信したコンポーネントをハッシュによりダイジェストに変換し、このダイジェストと、このコンポーネントの署名を公開鍵により復号化したダイジェストとを比較して、これらのダイジェストが同じであった場合にのみ、このコンポーネントを利用させる。
【００６２】
プライベートパッケージ６０に対するコンポーネントの記録は、ダウンロードしたコンポーネントから連続的に記録してよい。すなわち、ダウンロードした順番が、プライベートパッケージ６０に記録される順番と同一であってよい。
【００６３】
ユーザに選択された組合せに係る全てのコンポーネントに対して、ダウンロードが行われた場合には、最後に、位置情報６４の更新、記録が行われる（ステップＳ２４）（図４参照）。位置情報６４は、シングルパッケージ５０の際の格納位置である位置情報５４とは相違する。したがって、ステップＳ１５にて受信した位置情報は一時的に記録され、パッケージ構成部２１５が、構成したパッケージのコンポーネントが記録された物理的な格納位置に関する情報から、位置情報６４を算出して、プライベートパッケージ６０に記録する。
【００６４】
次に、ヘッダ６１を作成して、記録する（ステップＳ２５）。ヘッダ６１は、ヘッダ５１と同様に、ヘッダの署名と、論理データの署名と、組合せ情報の署名と、位置情報の署名とを含む。ここで、論理データの署名と、組合せ情報の署名は、シングルパッケージ５０の論理データの署名８４と、組合せ情報の署名８７と同一である。しかし、位置情報の署名は、シングルパッケージ５０の位置情報の署名９０とは異なる。したがって、位置情報６４に基づいて、パッケージ構成部２１５が位置情報の署名を作成し、ヘッダ情報に含める。
【００６５】
そして、パッケージ構成部２１５は、ヘッダ情報からヘッダの署名を作成して、ヘッダ情報とヘッダの署名からヘッダ６１を作成し、このヘッダ６１をプライベートパッケージ６０に記録する（ステップＳ２５）。ここで、ヘッダの署名８０は、ヘッダ５１をクライアント２００が検証するための署名である。ヘッダ５１は、パッケージを構成する最初の情報であるため、ヘッダ５１が署名により検証されることとは、パッケージ全体が検証されることと同様である。
【００６６】
このようにして、パッケージを構成することにより、クライアント２００にて、連鎖的に引き継がれる普遍的なデータ（論理データ、組合せ情報）を先にダウンロードして必要な情報、データを記録する。そして、構成するパッケージに必要なコンポーネントを判断した後に、コンポーネントをダウンロードするファイルの位置情報を指定して（いわば、ピンポイントで）ダウンロードすることが可能である。さらに、ダウンロードしたコンポーネントの記録は、ダウンロードした順番で連続的に記録するだけでよい。結果として、効率的にパッケージを構成するための情報、データ、コンポーネントのダウンロードを行うことが可能である。
【００６７】
図４の例では、コンポーネントとしてコンポーネントＡ、Ｂ、Ｋ、Ｐがユーザにより選択され、このコンポーネントの組合せは一次提供者が保証した組合せであるとされた場合のプライベートパッケージ６０を示した。
【００６８】
なお、図５、図６のフローチャートでは、論理データ、組合せ情報、位置情報の順番で、パッケージサーバ１００からクライアント２００にダウンロードされる態様について説明したが、これらのデータ及び情報の順番は任意であってよい。
【００６９】
上述の説明では、検証部２１６が各情報、データ、コンポーネントを受信する度に、デジタル署名の検証を行ったが、受信後に検証を即座に行わずに、クライアント２００に記録した後に、適宜、検証を行ってもよい。
【００７０】
以上により、本発明では、シングルパッケージに記録された全てのコンポーネントを受信しなくても、プライベートパッケージを構成することが可能である。さらに、組合せ情報により一次提供者が保証したコンポーネントの組合せのみをプライベートパッケージの構成時に許可するため、一次提供者の保証の下に、パッケージを構成することが可能である。加えて、構成したプライベートパッケージに対して、デジタル署名による内容の保証を行うことが可能であるため、構成したプライベートパッケージに対して、第三者の不正な改変を受けることなく、第２の仲介者に提供することが可能である。
【００７１】
加えて、本明細書においては、シングルパッケージ５０とプライベートパッケージ６０とを区別するために、シングルパッケージ５０が最初に一次提供者から提供されるパッケージであり、プライベートパッケージ６０が仲介者により構成されたパッケージであると説明した。しかしながら、一次的に構成されたプライベートパッケージ６０に基づいて、二次的なプライベートパッケージ（三次ソフトウェア・パッケージ）が構成される場合には、本明細書のシングルパッケージ５０が一次的なプライベートパッケージ６０に該当することは、当業者からすれば、自明のことである。
【００７２】
すなわち、三次ソフトウェア・パッケージの構成については、子クライアントは、パッケージサーバ１００に記録された一次ソフトウェア・パッケージの１以上のコンポーネントを受信することで二次ソフトウェア・パッケージをクライアント２００にて構成し、第二コンピュータに記録された二次ソフトウェア・パッケージの１以上のコンポートネントを受信することで三次ソフトウェア・パッケージを構成する。この場合には、子クライアントが、クライアント２００から、１以上のコンポーネントの組合せに関する組合せ情報、及び、クライアント２００に記録されたコンポーネントの格納位置を示す位置情報を受信し、１以上のコンポーネントのうち一部または全部の選択をユーザから受けて、組合せ情報に基づいて選択を受けたコンポーネントの組合せを判断し、組合せの判断及び選択を受けたコンポーネントに対応する位置情報に基づいて、選択を受けたコンポーネントをクライアント２００に要求し、選択を受けたコンポーネントを受信し、受信したコンポーネントにより三次ソフトウェア・パッケージを構成する。したがって、一次、二次ソフトウェアに加えて、三次ソフトウェアに対しても、ソフトウェア・パッケージを構成することが可能である。加えて、四次、五次ソフトウェア・パッケージといった高次のソフトウェア・パッケージに対しても、連鎖的に構成可能であることは、当業者からすれば、自明のことである。
【００７３】
本発明は、一つの実施形態として、パッケージ構成システム１(図１)にてい動作する各コンピュータのコンピュータ・プログラムによって実現可能である。上記プログラムを格納する記憶媒体は、電子的、磁気的、光学的、電磁的、赤外線または半導体システム（または、装置または機器）あるいは伝搬媒体であることができる。コンピュータ可読の媒体の例には、半導体またはソリッド・ステート記憶装置、磁気デープ、取り外し可能なコンピュータ可読の媒体の例には、半導体またはソリッド・ステート記憶装置、磁気テープ、取り外し可能なコンピュータ・ディスケット、ランダム・アクセス・メモリ（RAM）、リードオンリー・メモリ(ROM)、リジッド磁気ディスクおよび光ディスクが含まれる。現時点における光ディスクの例には、コンパクト・ディスク−リードオンリー・メモリ(CD-ROM)、コンパクト・ディスク−リード／ライト(CD-R/W)およびDVDが含まれる。
【００７４】
以上、本発明の実施形態を説明したが、具体例を例示したに過ぎず、特に本発明を限定しない。また、本発明の実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、本発明の実施形態に記載された効果に限定されない。
【図面の簡単な説明】
【００７５】
【図１】パッケージ構成システム１の機能ブロック図である。
【図２】シングルパッケージ５０のデータ構造を示す図である。
【図３】ヘッダ５１のデータ構造を示す図である。
【図４】プライベートパッケージ６０のデータ構造を示す図である。
【図５】パッケージ構成システム１が実行するメイン動作を示すフローチャート図である。
【図６】パッケージ構成システム１が実行するメイン動作を示すフローチャート図である。
【符号の説明】
【００７６】
１    パッケージ構成システム
３０    通信回線ネットワーク
５０    シングルパッケージ
５１    ヘッダ
５２    論理データ
５３    組合せ情報
５４    位置情報
６０    プライベートパッケージ
６１    ヘッダ
６２    論理データ
６３    組合せ情報
６４    位置情報
６５    コンポーネントＡ
６６    コンポーネントＢ
６７    コンポーネントＫ
６８    コンポーネントＰ
８０    ヘッダの署名
８１    ヘッダ情報
８２    公開鍵
８３    位置・サイズ
８４    論理データの署名
８５    コンポーネントＡのメタ情報
８６    コンポーネントＢのメタ情報
８７    組合せ情報の署名
８８    組合せ定義１
８９    組合せ定義２
９０    位置情報の署名
９１    コンポーネントＡのオフセット番号
９２    コンポーネントＢのオフセット番号
１００    パッケージサーバ
１１０    制御部
１１１    署名実行部
１１３    検証部
１２０    記録部
１２１    パッケージ記録部
１３０    通信部
１３１    要求受信部
１３２    送信部
２００    クライアント
２１０    制御部
２１５    パッケージ構成部
２１６    検証部
２１７    組合せ判断部
２２０    記録部
２２１    パッケージ記録部
２３０    通信部
２３１    要求送信部
２３２    受信部
２５０    入力部
【図１】
2007026244.tif 000003
【図２】
2007026244.tif 000004
【図３】
2007026244.tif 000005
【図４】
2007026244.tif 000006
【図５】
2007026244.tif 000007
【図６】
2007026244.tif 000008
【手続補正書】
【提出日】平成18年12月4日(2006.12.4)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
第一コンピュータに記録された一次ソフトウェア・パッケージの１以上のコンポーネントを受信することで二次ソフトウェア・パッケージを第二コンピュータにて構成するパッケージ構成方法であって、
前記第二コンピュータが、
前記第一コンピュータから、前記１以上のコンポーネントの組合せに関する組合せ情報、及び、前記第一コンピュータに記録されたコンポーネントの格納位置を示す位置情報を受信するステップと、
前記１以上のコンポーネントのうち一部または全部の選択をユーザから受けるステップと、
前記組合せ情報に基づいて選択を受けたコンポーネントの組合せを判断するステップと、
前記組合せの判断及び前記選択を受けたコンポーネントに対応する位置情報に基づいて、前記選択を受けたコンポーネントを前記第一コンピュータに要求するステップと、
前記選択を受けたコンポーネントを受信するステップと、
受信したコンポーネントにより二次ソフトウェア・パッケージを構成するステップと、
を含むパッケージ構成方法。
【請求項２】
前記二次ソフトウェア・パッケージを構成するステップは、前記受信したコンポーネントと、前記受信したコンポーネントの組合せに関する組合せ情報と、前記受信したコンポーネントの格納位置を示す位置情報とにより、前記二次ソフトウェア・パッケージを構成する請求項１に記載のパッケージ構成方法。
【請求項３】
第一コンピュータに記録された一次ソフトウェア・パッケージの１以上のコンポーネントを受信することで二次ソフトウェア・パッケージを第二コンピュータにて構成し、第二コンピュータに記録された二次ソフトウェア・パッケージの１以上のコンポートネントを受信することで三次ソフトウェア・パッケージを第三コンピュータにて構成するパッケージ構成方法であって、
前記第三コンピュータが、
前記第二コンピュータから、前記１以上のコンポーネントの組合せに関する組合せ情報、及び、前記第二コンピュータに記録されたコンポーネントの格納位置を示す位置情報を受信するステップと、
前記１以上のコンポーネントのうち一部または全部の選択をユーザから受けるステップと、
前記組合せ情報に基づいて選択を受けたコンポーネントの組合せを判断するステップと、
前記組合せの判断及び前記選択を受けたコンポーネントに対応する位置情報に基づいて、前記選択を受けたコンポーネントを前記第二コンピュータに要求するステップと、
前記選択を受けたコンポーネントを受信するステップと、
受信したコンポーネントにより三次ソフトウェア・パッケージを構成するステップと、
を含む請求項１に記載のパッケージ構成方法。
【請求項４】
請求項１に記載のパッケージ構成方法であって、
１以上の前記コンポーネントの各々がデジタル署名され、前記受信するステップにて受信したコンポーネントに対して、デジタル署名による検証を行うステップと、を含むパッケージ構成方法。
【請求項５】
請求項１に記載のパッケージ構成方法であって、
前記組合せ情報がデジタル署名され、受信した前記組合せ情報に対してデジタル署名による検証を行うステップを含むパッケージ構成方法。
【請求項６】
請求項１に記載のパッケージ構成方法であって、
構成した前記パッケージ全体に対してデジタル署名を行うステップを含むパッケージ構成方法。
【請求項７】
請求項１に記載の方法であって、
前記コンポーネントを受信した後に、
前記位置情報を更新するステップを含み、
前記構成するステップでは、前記組合せ情報、更新した前記位置情報及び受信した前記コンポーネントによりパッケージを構成するパッケージ構成方法。