(57)【要約】  デジタル署名された実行可能体のヘッダーへ補助的情報を埋め込むためのコンピュータで実行可能な方法とシステムが開示されている。この方法とシステムは、デジタル署名されたファイルのヘッダー内のデジタル署名ブロックとデジタル署名サイズ  ブロックとを特定し、デジタル署名サイズ  ブロック内のデジタル署名サイズ値を修正し、修正された値、がデジタル署名ブロックのサイズたす補助的データブロックの長さたす予め定められたパッドに対応するようにされ、デジタル署名サイズ  ブロック内の修正されたデジタル署名サイズを記憶し、補助的データブロックをデジタル署名ブロックの末尾に付加することを含んでいる。【選択図】図３
2008541637.tif 000002
【特許請求の範囲】
【請求項１】
デジタル署名されたファイルのヘッダー内のデジタル署名ブロックとデジタル署名サイズ  ブロックとを特定し、
前記デジタル署名サイズ  ブロック内のデジタル署名サイズ値を修正し、修正された値は、デジタル署名ブロックのサイズたす補助的データ  ブロックの長さたす更に予め定められたパッドをたしたものに対応しているものと、
前記補助データブロックをデジタル署名ブロックの末尾に付加すること、を備えた方法。
【請求項２】
請求項１の方法であって、更に、デジタル署名されたファイル用にＣＲＣ値を再計算すること、を備えた方法。
【請求項３】
請求項１の方法であって、更に、補助的データを補助的データ  ブロックへ記憶すること、を備えた方法。
【請求項４】
請求項３の方法であって、前記補助的データは、ＵＲＬを含んでいる、方法。
【請求項５】
請求項３の方法であって、前記補助的データは、販売価格情報を含んでいる、方法。
【請求項６】
請求項３の方法であって、前記補助的データは、デジタル著作権管理情報を含んでいる、方法。
【請求項７】
請求項３の方法であって、前記補助的データは、配信ネットワーク情報を含んでいる、方法。
【請求項８】
請求項３の方法であって、前記補助的データは、タイムスタンプを含んでいる、方法。
【請求項９】
請求項３の方法であって、前記補助的データは、製品を特定する情報を含んでいる、方法。
【請求項１０】
請求項３の方法であって、前記補助的データは、前記対応するデジタル署名されたファイルをユニークリィに特定するための情報を含んでいる、方法。
【請求項１１】
マシーンがアクセス可能な媒体として具体化された製品であって、前記媒体はアクセスされたときに、そのマシーンに、
デジタル署名されたファイルのヘッダー内のデジタル署名ブロックとデジタル署名サイズ  ブロックとを特定し、
前記デジタル署名サイズ  ブロック内のデジタル署名サイズを修正し−修正された値は、デジタル署名ブロックのサイズたす補助的データ  ブロックの長さたす予め定められたパッドを加えたサイズに対応しているものと、
前記補助的データ  ブロックをデジタル署名ブロックの末尾に付加する、動作をさせるデータを備えた、製品。
【請求項１２】
請求項１１の製品であって、更に、デジタル署名されたファイル用にＣＲＣ値を再計算すること、を有する製品。
【請求項１３】
請求項１１の製品であって、更に、補助的データを補助的データ  ブロックへ記憶すること、を有する製品。
【請求項１４】
請求項１３の製品であって、前記補助的データは、ＵＲＬを含んでいる、製品。
【請求項１５】
請求項１３の製品であって、前記補助的データは、販売価格情報を含んでいる、製品。
【請求項１６】
請求項１３の製品であって、前記補助的データは、デジタル著作権管理情報を含んでいる、製品。
【請求項１７】
請求項１３の製品であって、前記補助的データは、配信ネットワーク情報を含んでいる、製品。
【請求項１８】
請求項１３の製品であって、前記補助的データは、タイムスタンプを含んでいる、製品。
【請求項１９】
請求項１３の製品であって、前記補助的データは、製品を特定する情報を含んでいる、製品。
【請求項２０】
請求項１３の製品であって、前記補助的データは、前記対応するデジタル署名されたファイルをユニークリィに特定する情報を含んでいる、製品。
【請求項２１】
デジタル署名されたファイルのヘッダー内のＣＲＣブロックを特定し、
インデックスと関連した補助的データを記憶し、
前記デジタル署名されたファイルのヘッダー内の前記ＣＲＣブロックを、補助的データを取り出すために、インデックス値により修正する、方法。
【請求項２２】
請求項２１の方法であって、前記補助的データは、サーバーに記憶されている、方法。
【請求項２３】
請求項２１の方法であって、前記補助的データは、ローカル  メモリーに記憶されている、方法。
【請求項２４】
請求項２１の方法であって、前記補助的データは、データ記憶装置に記憶されている、方法。
【請求項２５】
請求項１の方法であって、更に、予め定められたパッド  ブロックを補助的データ  ブロックの末尾に付加する、方法。
【請求項２６】
請求項１１の製品であって、更に、予め定められたパッド  ブロックを補助的データ  ブロックの末尾に付加すること、を含む製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本PCT出願は、２００６年３月３１日に出願された米国特許出願第１１・９５，１９４号（発明の名称「デジタル的に署名された実行可能体のヘッダーに補助的情報を埋め込むためのコンピュータで実行される方法とシステム」）により得られる出願日の特典を請求する。そして、その優先権は、米国特許法３５  U．Ｓ．Ｃ．第１２０条もしくは第３６５（ｃ）条に基づき請求され、更に、２００５年５月２０日に出願された米国仮特許出願第６０／６８３，１９０号（発明の名称「デジタル配信用にデジタル的に署名されたファイルを追尾するための方法と装置」）の出願日の特典も請求する。上記した各出願の全内容は、ここで言及したことにより本出願に含まれる。
【０００２】
ここに開示されている技術は、デジタル署名およびデジタル証明書の方法とシステムに関するものである。より具体的には、本開示技術は、実行可能なソフトウェアによるデジタル署名およびデジタル証明書の使用に関するものである。
【背景技術】
【０００３】
デジタル配信というものが出現したことにより、インターネットを通してソフトウェアを配信するという新しいビジネス  モデルが作り出された。デジタル的に配信されるモデルを「トライ  アンド  バイ（ｔｒｙ  ａｎｄ  ｂｕｙ：試用して購入）」する場合、消費者は、ソフトウェアを購入するかどうかの決定をする前に同ソフトウェアの「トライ  アンド  バイ」バージョンを試用することができる。このような「トライ  アンド  バイ」バージョンは、購入後ロックが解除される実施可能なソフトウェアのロック  ダウンバージョン（ｌｏｃｋｅｄ  ｄｏｗｎ  ｖｅｒｓｉｏｎ）から構成されている。通常のシナリオでは、エンド  ユーザーまたは購入見込み者は、無料で手に入る「トライ  アンド  バイ」ソフトウェア  アプリケーション（以下「インストーラ（ｉｎｓｔａｌｌｅｒ）」という）を、発行元のホーム  ページ（ｗｅｂｓｉｔｅ）もしくは多目的ウェブ  ポータル（例えば、ｗｗｗ．ｄｏｗｎｌｏａｄ．ｃｏｍであるとか、ｗｗｗ．ｙａｈｏｏ．ｃｏｍなど。以下「ポータル」という）からダウンロードする。普通、このような「トライ  アンド  バイ」インストーラをダウンロードしてインストールするユーザーの何％かは、そのようなソフトウェア製品のフル  バージョン（ａ  ｆｕｌｌ  ｖｅｒｓｉｏｎ）を入手するためにかかるソフトウェア（もしくはサービス、付帯する継続購入）を購入する。従って、ソフトウェア製造者は、エンド  ユーザが「トライ  アンド  バイ」ソフトウェアをダウンロードできるようにする動機つけがある。このため、ソフトウェア製造者は、自分自身のホームページへ「トライ  アンド  バイ」バージョンを載せ、エンド  ユーザがこれをダウンロードできるようにしている。これに加え、ソフトウェア製造者は、ソフトウェア製造者が必ずしもコントロールし得ないポータルを通して、かかるインストーラを配信している。「トライ  アンド  バイ」ビジネス  モデルの裏にあるソフトウェア発行者にとっての動機は、消費者が、「トライ  アンド  バイ」ソフトウェアに関連する購入を行ったときにソフトウェア発行者は補償されるという事実にある。さらに、ポータルは、「トライ  アンド  バイ」インストーラがポータル  サイトからダウンロードされ収益を生み出したときにポータルが補償されるように、ソフトウェア製造者、発行者、または集団（ａｇｇｒｅｇａｔｏｒｓ）と商取引をすることができる。普通、ポータルは、消費者から支払われた対価の収益分与を得る。
【０００４】
「トライ  アンド  バイ」インストーラは、エンド  ユーザーが、ソフトウェア  アプリケーションのフル  バージョンを購入できるようにするための手段を備えている。購入取引の一部として、オン  ライン購入取引の場合、エンド  ユーザーは、種々のステップ（工程）を実施するように指示される。かかる指示には、次のようなものを含むことができる。即ち、例えば、１）経済取引を完了させるためのテキスト的記述、例えば、小切手を私書箱ｘｙｚへ送り、ソフトウェア  アプリケーションのフル  バージョンを入手するための指示を受けること、といった記述、２）オン  ラインによるイー  コマース（電子商取引）（例えば、クレジット  カード支払い）を行うための指示もしくは手段を含むURL、３）アプリケーション自身の中に組み込まれた購入メカニズム、４）ソフトウェア  アプリケーションのラッパー（包装物：ｗｒａｐｐｅｒ）に組み込まれた購入メカニズム、５）これら指示を組み合わせたもの、等である。同一のソフトウェア製品が、多数の配信ネットワーク（例えば、多数のポータル）を通して配信されるので、配信ネットワークは、個々の購入について、追尾（ｔｒａｃｋｉｎｇ）責任があるため、その追尾方法が要求される。ある特定の購入について、どの配信ネットワークに責任があるかということを決めるひとつの方法は、前記ソフトウェア製品についてその追跡可能バージョン（ｔｒａｃｅａｂｌｅ  ｖｅｒｓｉｏｎｓ）を作り出すことである。追跡可能バージョンを作る一つの方法は、購入指示の中に配信ネットワークを特定する情報を含んだ異なるインストーラを作るということである。例えば、ソフトウェア製品は、特定の配信ネットワークを特定する値（ｖａｌｕｅ）を含む購入ＵＲＬを、ソフトウェア製品に埋め込むようにして、持つことができる。例えば、
ｈｔｔｐ：／／ｍｙ．ｔｒｙｍｅｄｉａ．ｃｏｍ／ｂｕｙ？ｓｋｕ＝０１２３＆ａｆｆｉｌｉａｔｅ＝ａｂｃ
【０００５】
このようなＵＲＬは、パラメータ“ａｆｆｉｌｉａｔｅ＝ａｂｃ”によって特定される配信ネットワークを通してのソフトウェア配信に用いることができる。もし、同一のソフトウェア製品が、別の配信ネットワーク（例えば、“ａｆｆｉｌｉａｔｅ＝ｘｙｚ”）を通して配信されることになった場合、その別の配信ネットワークを特定する、例えば、ｈｔｔｐ／／ｍｙ．ｍｅｄｈｉａ．ｃｏｍ／ｂｕｙ？ｓｋｕ＝０１２３＆ａｆｆｉｌｉａｔｅ＝ｘｙｚというＵＲＬを埋め込んだ別のバージョンが作られなければならない。
【０００６】
ソフトウェア発行者は、当業者には周知の種々の手段によって、ソフトウェア製品の異なる追尾可能バージョンを作ることができる。例えば、１）配信チャンネルを特定するための異なる補助的な情報を含む実行可能なソフトウェア（ｓｏｆｔｗａｒｅ  ｅｘｅｃｕｔａｂｌｅ）の再コンパイルによって、２）購入プロセスの指示によって言及されている補助的なファイル、リソース、あるいはデータにそのような情報を含ませることによって、あるいは、３）前記１）および２）の組み合わせによって、などである。そのプロセスができるだけ効率よくスケール（ｓｃａｌｅ）されるように、ほとんどの場合、ソフトウェア製造者を巻き込むことなく同一ソフトウェア製品の異なる追跡可能バージョンを作ることが推奨される。そのようにするためのひとつの方法は、インストーラが最初に実行されたときに、インストーラのあらかじめ決められた場所へ、またはファイル  システムのレジストリー（ｒｅｇｉｓｔｒｙ）のあらかじめ決められた場所へ、配信関連情報を埋め込むようにすることである。インストーラに配信関連情報を埋め込むことの利点の一つは、ソフトウェア製造者が各配信ネットワーク用に特別のソフトウェア  バージョンを作らなくともよいという点にある。それでもなお、増大する配信ネットワークのそれぞれに異なるインストーラを作り、管理することが、非常に困難な仕事になってきている。
【０００７】
実行可能体（または実行可能ファイル：ｅｘｅｃｕｔａｂｌｅｓ）にデジタル的署名を導入することは、ソフトウェア製造者およびエンド  ユーザに対して安全性を提供できるという利点がある。エンド  ユーザーに対しては、実行可能体の署名は、実行可能体が署名された時点からはその実行物にはいかなる修正、変更もなされていないということを確実にするツール（道具）を提供することになる。実行可能体への署名は、通常は、ソフトウェア製造者によってなされる。また、ソフトウェア製造者にとっては、自分のソフトウェアが許可なく修正あるいは変更される（例えば、実行可能体を感染させるコンピュータ  ウィルスなどによって）可能性を少なくするということになり、ユーザーからの支援要請電話（サポート  コール）を少なくすることができるとともに、ソフトウェアに対するユーザーのより高い信頼を得ることができる。マイクロソフト社のウィンドウズ  オペレーティング  システムの実行可能体においては、デジタル署名は証明書の形で実施されている。実行可能体のヘッダーの中に、証明書表が設けられていて、この表には、デジタル証明書の種々の属性にアクセスするための情報が含まれている。ソフトウェア製造者が一旦実行可能ファイルに署名すると、実行可能体の内容は、証明書を無効とするか、あるいは、ファイルのデジタル署名とファイルのデジタル証明書とのミスマッチをさせない限り、簡単には変更できない。更に、ウィルス、スパイウェア、およびその他のマルウェアが増加している現状から、オペレーティング  システムおよびインターネット  ブラウザー販売者は、実行可能ファイルがデジタル的に署名されていない場合には警告を発行しがちになる。このようなことから、実行可能体に対するデジタル署名の使用が更に採用されることになり、広く行きわたったことになるだろう。
【０００８】
しかしながら、上述したように、ソフトウェア製品の異なるバージョンを異なる配信ネットワーク用に作る事は非効率的である。更に、実行可能体のデジタル署名の正当性（ｉｎｔｅｇｒｉｔｙ）を壊すことなく実行可能体の内容を変更することは極めて困難なことである。従って、ソフトウェア製造者以外の誰かが、ソフトウェア製品の追跡可能なコピー（複製品）を作ることは、極めて難しいことである。何故なら、  追跡可能なコピーのために補助的な配信関連情報を変更することは、デジタル署名を無効としてしまうからである。
【発明の開示】
【０００９】
それ故、デジタル的に署名された実行可能物のヘッダーに補助的な情報を埋め込むためのコンピュータで実行可能な方法とシステムとが必要とされている。
【発明を実施するための最良の形態】
【００１０】
補助的な情報を、デジタル署名された実行可能体のヘッダーに埋め込むためのコンピュータで実行可能な方法およびシステムがここに開示されている。以下の説明において、数多くの具体的な詳細が述べられている。しかしながら、本発明の実施態様は、かかる具体的な詳細なしでも具体化できることは理解される。その他の例、周知のプロセス、構造、および技術については、説明の明確さをあいまいにしないように、詳細には示されていない。
【００１１】
図１は、補助的な情報（例えば配信情報）が、インストーラーの実行可能部分のヘッダー部分に記憶されている一実施例を示している。図示されているように、インストーラ１１０は、実行可能なコード  ブロック１２０およびインストーラ  データ１３０を有している。実行可能なコード  ブロック１２０は、ヘッダー部分１２２と、ヘッダー部分内に存在する補助的データ部分１２４と、実行可能なコード部分１２６とから成っている。補助的データ１２４は、配信関連情報、ＵＲＬ、販売価格情報、タイムスタンプ、配信チャンネル情報、商取引上の規則、デジタル著作権管理（ｄｉｇｉｔａｌ  ｒｉｇｈｔｓ  ｍａｎａｇｅｍｅｎｔ：ＤＲＭ）情報、配信者のブランド情報、他の情報へのポインターあるいはリンク、その他ソフトウェア製造者、配信者、卸売り商、小売販売者、もしくはエンド  ユーザが使用するあらゆる情報を含むことできる。当業者にとっては、その他種々の異なるタイプの情報、異なるタイプの補助的情報の集合もしくは組み合わせを、補助的データ１２４へ含め得ることは明らかであろう。かかる補助的情報１２４は、それが関係するインストーラ内に作られ、記憶され、転送される。インストーラ１１０内の補助的データ  ブロック１２４があるとした場合、特別なインストーラが特定のソフトウェア製品用として作られる。例えば、同一のソフトウェア製品が、多数の異なる特定のインストーラ（その各々は、特定の配信ネットワーク用の配信方法を定義付けるための特別な補助的データを有している）を用いて多数の異なる方法で配信することができる。第２図を参照する。各実行可能なコード  ブロック１２１、１２２、および１２３内に異なる補助的データを持つ三つの異なるインストーラの例が示されている。第２図に図解されているこれら三つのインストーラの各々は、特定の配信ネットワーク内でソフトウェア製品を配信するために用いることができる。インストーラ  データ１３１は、三つの異なるインストーラにおいて同一のものである点に注意を要する。実行可能なコード  ブロック１２１、１２２、１２３だけが異なっていて、各インストーラの配信ネットワークが異なることを示している。
【００１２】
図３を参照する。ここに示されている例は、種々の実施例において、異なる配信ネットワークを通して配信がどのように行われるかを図解している。図３の例において、サーバー３５０は、インストーラ  テンプレート３４０を有している。このインストーラ  テンプレートは、実行可能なコード  ブロック３２１と、インストーラ  データ３３１とを有している。サーバー３５０は、特定の配信ネットワーク（例えば、ネットワーク１）を通して特定のソフトウェア製品のダウンロードの要求を受け取ると、配信ネットワーク特有の情報（例えば、ネットワーク１）を発生させ、その情報を、インストーラ  テンプレート３４０のコピーへ記憶する。その後、この配信ネットワーク特有のインストーラ３５１は、その特有の配信ネットワークを通してソフトウェア製品の配信を要求した者（ｏｒｉｇｉｎａｔｏｒ）に送られることができる。同様に、他の配信ネットワーク特有のインストーラ、３５２および３５３、が、インストーラ  テンプレート３４０から発生され、かかるダウンロードの要求をした者へ送り出される。このようにして、多数の配信ネットワークを通してのソフトウェア製品の配信についての効率的且つスケーラブル（ｓｃａｌａｂｌｅ）な解決が提供される。
【００１３】
ダウンロードされた実行可能体におけるデジタル署名の使用は、ますます、より一般的になってきている。しかしながら、一旦ソフトウェア製造者が実行可能ファイルに署名すると、実行可能体の内容は証明書を無効にするか、ファイルのデジタル署名をファイルのデジタル証明書にミスマッチさせるかしない限り簡単には変更できない。それ故、特定のソフトウェア製品のダウンロードのために補助的な情報をインストーラに埋め込むことは困難になっている。しかしながら、ここに説明されている種々の実施例は、以下に更に詳細に説明するように、この問題を解決している。
【００１４】
図４を参照する。デジタル的に署名された実行可能ファイル４０１の典型的な構造がここに示されている。ファイル４０１は、普通、サイクリック冗長チェック  ブロック４１０（ｃｙｃｌｉｃ  ｒｅｄｕｎｄａｎｃｙ  ｃｈｅｃｋ  ｂｌｏｃｋ：ＣＲＣ）、デジタル署名ポインター４１２、デジタル署名サイズ４１４、可変データブロック４１６、デジタル署名ブロック４２０、および不使用部分４３０を備えている。当業者には周知のように、デジタル署名４２０は、ソフトウェア開発者の秘密鍵および信頼できる機関（ａ  ｔｒｕｓｔｅｄ  ａｕｔｈｏｒｉｔｙ）の秘密鍵と組み合わされて、可変データ４１６のハッシュ値および実行可能なヘッダーから生成される。可変データ４１６は、実質的に、ファイル４０１内のいかなるコードもしくはデータ  ペイロードであってもよく、実行可能なヘッダーを有している。通常、ダウンロード可能なソフトウェア製品および関連するデータは、可変データブロック４１６内に記憶される。ソフトウェア製品が一旦可変データ  ブロック４１６に記憶され、デジタル署名４２０が可変データブロック４１６の内容（コンテント）から生成されると、デジタル署名４２０を無効としない限り可変データブロック４１６のいかなる部分も修正することは極めて困難なことになる。生成されたデジタル署名４２０のサイズは、デジタル署名サイズ  ブロック４１４内に記憶される。可変データ  ブロック４１６は、サイズの変更が可能であるので、デジタル署名に対するポインター４１３は、デジタル署名ポインター  ブロック４１２へ記憶される。デジタル的に署名された実行可能ファイル４０１の実行においては、通常、デジタル署名ポインター４１２およびデジタル署名サイズ４１４は、デジタル署名４２０の計算（ｃｏｍｐｕｔａｔｉｏｎ）に含められることはない。従って、ファイル４０１のこれらのブロックは、デジタル署名を無効とすることなく修正することができる。
【００１５】
図５を参照する。種々の実施例による改修された、デジタル的に署名された実行可能なファイル５０１が示されている。ファイル５０１は、ブロック５１４にあるデジタル署名サイズの値を変更することによって改修されている。デジタル署名サイズの値は、デジタル署名５２０のサイズを取り出しそこへ不使用ブロック５３０のサイズを付け加えることによって改修されている。場合によっては、バイト、ワード、ページ、その他の記憶セグメントの境界による補助データ  ブロック５３０を終了させるためにあらかじめ定められたパッド値（ｐａｄ  ｖａｌｕｅ）によって、改修されたデジタル署名サイズ値を大きくする（もしくは小さくする）必要があり得る。その他の場合では、予備的にゼロ設定（ｚｅｒｏ  ｏｕｔ）するか、あるいは補助的データ  ブロック５３０の各記憶域内へデフォルト値を記憶する必要があり得る。この新たなデジタル署名サイズ値は、第５図において矢印５１５で示したようにデジタル署名サイズ  ブロック５１４内に記憶される。ブロック５１４におけるデジタル署名サイズ値は、デジタル署名５２０の計算には含まれないので、ブロック５１４内のデジタル署名サイズの修正は、デジタル署名５２０を無効にすることはない。更に、デジタル署名５２０の従来の構造故に、デジタル署名５２０の終了部に付加された記憶スペース５３０もデジタル署名５２０を無効とすることがない。ファイル５０１へ不使用記憶スペース５３０を付加することにより、第三者が補助的データをブロック５３０へ記憶させることができる。ブロック５３０へ記憶された補助的データは種々の目的に使用することができる。例えば、ブロック５３０へ記憶された補助的データは、配信関連情報、ＵＲＬ、販売価格情報、タイムスタンプ、配信チャンネル情報、商取引上の規則、デジタル著作権管理（ｄｉｇｉｔａｌ  ｒｉｇｈｔ  ｍａｎａｇｅｍｅｎｔ：ＤＲＭ）情報、配信者のブランド情報、他の情報へのポインターあるいはリンク、その他ソフトウェア製造者、配信者、卸売り商、小売販売者、もしくはエンド  ユーザが使用するあらゆる情報を含むことできる。当業者にとっては、その他種々の異なるタイプの情報、異なるタイプの補助的情報の集合もしくは組み合わせを、ブロック５３０へ含め得ることは明らかであろう。かかる補助的情報は、デジタル署名５２０を無効とすることなくファイル５０１のブロック５３０内に作られ、記憶され、転送される。
【００１６】
別の実施例において、ＣＲＣブロック５１０内のデータは、補助的データにより上書きされることができる。ブロック５１０のＣＲＣ値は、デジタル署名の計算には含められないので、ブロック５１０のＣＲＣデータの修正がデジタル署名５２０を無効にすることはない。しかしながら、ＣＲＣブロック５１０のサイズは、非常に限定的である。ファイル５０１の構造の典型的な形は、極めて少量の情報がブロック５１０に記憶され得る。大きなブロックである補助的データに対するポインター、リンク、またはインデックスは、ブロック５１０に記憶することができる。かかる補助的データは、ローカルなまたは遠く離れた場所（例えば、サーバー）に記憶されている。
【００１７】
図６を参照する。フロー  チャートは、一実施例において行われる基本的な処理動作を図示している。６１２のブロックにおいて、デジタル署名されたファイル５０１は読み出され、デジタル署名されたヘッダーにおけるデジタル署名ブロックおよびデジタル署名サイズ  ブロックが特定される。ブロック６１４において、デジタル署名サイズがデジタル署名サイズ  ブロックから取り出され（ｒｅｔｒｉｅｖｅｄ）、デジタル署名サイズ値は修正される。デジタル署名サイズの値は、デジタル署名のサイズ（即ち、デジタル署名サイズ  ブロックにおける古い値）を取りだし、そこへ、不使用データブロックのサイズを付加することによって、修正される。この不使用データ  ブロックには補助的データが記憶されうる。場合によっては、バイト、ワード、ページ、その他の記憶セグメントの境界上で補助的データ  ブロックを終了させるために、予め定められたパッド値（ｐａｄ  ｖａｌｕｅ）によって、修正されたデジタル署名サイズ値を大きくする（或いは、小さくする）必要があり得る。その他の場合では、予備的にゼロ設定（ｚｅｒｏ  ｏｕｔ）するか、あるいは補助的データ  ブロック５３０の各記憶域内へデフォルト値を記憶する必要があり得る。この新たなデジタル署名サイズ値は、処理ブロック６１６のデジタル署名サイズ  ブロック内に記憶される。このデジタル署名されたファイル５０１に対応する補助的データは、処理ブロック６１８において生成され、補助的データ  ブロック５３０に記憶される。処理ブロック６２０において、修正されたファイル５０１用のＣＲＣ値は、再計算（ｒｅｃｏｍｐｕｔｅｄ）され、ＣＲＣブロック５１０に記憶される。種々の実施例によって、デジタル署名されたファイル５０１内のブロック５３０に補助的データが記憶されているとした場合、特定のソフトウェア製品について、第三者によって特有なインストーラを作ることができる。更に、デジタル署名されたファイルは、デジタル著作権管理ポリシー、アクセス  コントロール、購入手順、または特定のデジタル署名されたファイル５０１に関連したその他種々の内容（コンテンツ）特有の、関係者特有の、または取引特有の情報を含むように、改修されることができる。
【００１８】
図７ａおよび図７ｂは、コンピュータ  システム２００を示しており、本発明の実施例の特徴が実施されている模範的なクライアントあるいはサーバー  コンピュータ  システムが図解されている。コンピュータ  システム２００は、情報通信用のバスまたはその他の通信手段２１４および２１６、および情報を処理するためにバス２１４に接続されたプロセッサー２００などの処理装置を備えている。コンピュータ  システム２００は更に、ランダム  アクセス  メモリ（ＲＡＭ）またはその他のダイナミック記憶装置２２２（普通は、メイン  メモリーと言われている）を備えている。かかる記憶装置は、バス２１４へ接続されていて、情報と、プロセッサー２２０によって実行される命令とを記憶する。前記メイン  メモリーは、プロセッサー２２０によって前記命令が処理されている間に、変数（ｖａｒｉａｂｌｅｓ）またはその他の中間的情報も記憶するために用いられる。コンピュータ  システム２００は更に、バス２１４に接続されプロセッサー２２０に対する静的情報および静的命令を記憶するためのリード  オンリー  メモリ（ＲＯＭ）および／またはその他の静的記憶装置２２４を備えている。
【００１９】
情報と指示を記憶するために、磁気ディスクまたは光学的ディスクといった任意の（オプショナルな）データ記憶装置２２８をコンピュータ  システム２００へ接続することもできる。コンピュータ  システム２００は、コンピュータ  ユーザに情報を見せるために陰極線管（カソード  レイ  チューブ：ＣＲＴ）もしくは液晶ディスプレイ（ＬＣＤ）といった表示装置へ、バス２１６を介して接続され得る。例えば、画像、テキスト、ビデオ、または図表的な記述といった情報が表示装置２０４を通してユーザーに提示されることになる。通常、英数字キイおよびその他のキイを有する英数字入力装置２０８がバス２１６に接続され、プロセッサー２２０に対して情報および／または命令セレクションを送り出す。ユーザーによる別タイプの入力装置は、カーソル  コントロール装置２０６であり、指示情報および命令セレクションをプロセッサ２２０へ送り出し且つディスプレイ２０４条のカーソルの動きをコントロールするための、例えば従来からあるマウス、トラックボール（ｔｒａｃｋｂａｌｌ）、またはその他のタイプのカーソル指示キイである。
【００２０】
通信装置２２６も、例えばインターネットを介して遠隔のコンピュータまたはサーバー（例えば、ウェブ  サーバーあるいはその他のサーバー）にアクセスできるように、バス２１６に接続されている。通信装置２２６は、モデム、ネットワーク  インターフェース  カード、またはその他周知のインターフェース装置、例えばイーサネットとのインターフェース用に用いられるもの、トークン−リング、無線、またはその他のタイプのネットワークなどを備えることができる。いずれにせよ、このようにして、コンピュータ  システム２００は、従来からあるネットワーク基盤を介して多数のサーバーに接続される。
【００２１】
実施例の一例であるシステムは、上に説明したように、ソフトウェア、情報処理用ハードウェア、および種々の処理工程を有している。例示した実施例の特徴と処理工程は、マシーンによるまたはコンピュータによる実行可能な命令において具体化される。これらの命令は、同命令によってプログラムされている、汎用もしくは特定の目的を持ったプロセッサが、例示実施例の工程を実行するように用いられる。別の手法として、前記特徴または工程は、工程を実行するためのハード  ワイアード  ロジックを含む特殊なハードウェア  コンポーネントによって、または、プログラムされたコンピュータ  コンポーネントとカスタム  ハードウェア  コンポーネントとの任意の組み合わせによって、実行されることができる。本発明の実施例は、インターネットと関連させて説明されているが、ここに記述されている方法と装置は、その他のネットワーク基盤もしくはその他の通信システムにも同様に適用できる。
【００２２】
ここに記述されている方法は、説明されている順番で実行される必要はないし、また、特定の順番で実行される必要もない。更に、ここに特定されている方法に関して記述されている種々の動作は、繰り返し的（ｒｅｐｅｔｉｔｉｖｅ）に、同時的に、リカーシティブ（ｒｅｃｕｒｓｉｖｅ）的に、直列的に、または並列的な手法で実行されることができる。パラメータ、命令、オペランド、およびその他のデータを含む情報は、通信装置２２６を通して一つもしくはそれ以上の搬送波の形で送られ、受け取られることができる。
【００２３】
ここになされている記述を読み、且つ理解すれば、当業者であれば、コンピュータをベースとしたシステムにおいて、ソフトウェア  プログラムが、コンピュータによる読み取り可能媒体から開始された上述したソフトウェア  プログラムに定義された機能を実行する手法については理解されよう。当業者であれば更に、ここに説明された方法を実施しまた実行すべく設計された一つもしくは二つ以上のソフトウェア  プログラムを作るために、種々のプログラム言語を利用できることも理解されよう。前記プログラムは、例えばＪａｖａ、Ｓｍａｌｌｔａｌｋ、あるいはＣ＋＋といったオブジェクト指向言語を使用するオブジェクト指向フォーマットに構成することができる。あるいはまた、例えばアッセンブリーまたはシー言語（Ｃ）などの手続き型言語を用いて、手続き指向フォーマットに構成することもできる。ソフトウェア  コンポーネントは、例えば、アプリケーション  プログラム  インターフェースやインタープロセス通信技術といった当業者にとって周知の数多くのメカニズムの一つを用いて、通信することができる。種々の実施例による教示は、例えばＨＴＭＬおよびＸＭＬといった特定のプログラム言語あるいはプログラム環境になんら限定されるものではない。
【００２４】
それゆえ、その他の実施例に気づくことができる。例えば、図７ａおよび図７ｂは、例えばコンピュータ２００、メモリー  システム２２２、２２４、および２２８、磁気ディスクまたは光学ディスク２１２、その他いくつかの記憶装置２２８、および／またはその他任意タイプの電子装置およびシステムといった種々実施例による製品のブロック図を示している。前記製品２００は、コンピュータによる読み取り可能媒体２１２および／または記憶装置２２８（例えば、電子的、工学的、または電磁的導体を持った有形メモリー（ｔａｎｇｉｂｌｅ  ｍｅｍｏｒｙ）を含む、固定されたおよび／または着脱可能な記憶媒体を含む）へ、または、通信装置２２６を介して搬送波へ連結されたコンピュータ（一つもしくは二つ以上のプロセッサーを有する）を有している。前記媒体２１２、記憶装置２２８、および搬送波は、関連する情報（例えば、コンピュータ  プログラム指示および／またはデータ）を持っていて、それがコンピュータ２０２により実行されると、コンピュータ２０２は、ここに説明されている方法を実行する。
【００２５】
種々の実施例が説明されている。特に、種々のタイプとフォーマットのユーザー  インターフェース  プレゼンテーションと共に実施例を使用することが説明されている。しかしながら、当業者であれば、ここに説明されている実施形態の別の実施例も利用することができるし、それらは以下に述べる特許請求の範囲の範囲内にあるものであることは明らかであろう。ここに詳細に述べられた、種々の実施例は、ここでときとして「ソフトウェア」として示されているコンピュータに組み込まれた処理ロジック、に組み込まれているものとして説明されている。しかしながら、上述したように、請求されている発明は純粋にソフトウェアの実行に限定されるものではない。
【００２６】
このように、デジタル的に署名された実行可能体のヘッダーに補助的情報を埋め込むためのコンピュータで実行可能な方法とシステムについてが、ここに開示されている。本発明は、いくつかの例示的実施例に関連して説明されているが、当業者であれば、本発明は、説明された実施例に限定されるものではなく、ここに付されて特許請求の範囲の精神と範囲内において修正または変更を実施し得ることを認識できるであろう。従って、ここになされた説明は、何かを限定するものではなく、説明のためのものであると見るべきである。
【図面の簡単な説明】
【００２７】
実施例は、例として図解されたものであって、添付された図面の各図に限定されるものではない。添付された図面において、
【図１】図１は、補助的情報が、実行可能なファイルのヘッダー部分に記憶されている一実施例を図解した図。
【図２】図２は、異なる補助的データを各実行可能なコード  ブック（ｃｏｄｅ  ｂｏｏｋ）内に有する三つの異なるインストーラの例を図解した図。
【図３】種々の実施例において、いろいろな配信ネットワークを介して配信がどのように行われるかを図解した図。
【図４】デジタル署名された実行可能なファイルの代表的な構造を図解した図。
【図５】種々の実施例による、改修された、デジタル的に署名された実行可能なファイルを図解した図。
【図６】一実施例において行われる基本的な処理動作を示すフロー  チャートを図解した図。
【図７Ａ】図７Ａおよび図７Ｂは、コンピューティング  システムのブロック図であり、このコンピューティング・  システム上で実施例が動作し、またすべての実施例はこのコンピューティング上にある。
【図７Ｂ】図７Ａおよび図７Ｂは、コンピューティング  システムのブロック図であり、このコンピューティング・  システム上で実施例が動作し、またすべての実施例はこのコンピューティング上にある。
【図７ａ】
2008541637.tif 000003
【図１】
2008541637.tif 000004
【図２】
2008541637.tif 000005
【図３】
2008541637.tif 000006
【図４】
2008541637.tif 000007
【図５】
2008541637.tif 000008
【図６】
2008541637.tif 000009
【図７Ｂ】
2008541637.tif 000010
【国際調査報告】
2008541637.tif 000011
2008541637.tif 000012
2008541637.tif 000013
2008541637.tif 000014
2008541637.tif 000015