説明

補助情報をデジタル署名付きコンテンツに埋め込み認証する、コンピュータにより実施される方法およびシステム

デジタル署名付きコンテンツに補助情報を埋め込み認証する、コンピュータにより実施されるシステムおよび方法が開示される。この方法およびシステムは、デジタル署名付き実行可能ファイルを含むデジタルコンテンツを実行のためにメモリにロードし、その間、実行可能ファイルのデジタル署名および内容の完全性をチェックすること、およびデジタルコンテンツのいかなる非認証領域も、非認証領域に対応するメモリロケーションをゼロまたは値で埋めることによって消去することを含む。

【発明の詳細な説明】
【技術分野】
【0001】
背景
1.技術分野
本開示は、デジタルコンテンツの配信に関する。特に、本開示は、補助情報をデジタル署名付きコンテンツに埋め込み認証することに関する。
【背景技術】
【0002】
2.関連技術
デジタル配信の出現により、インターネットを介してソフトウェアを配信する新たなビジネスモデルが生み出された。「トライアンドバイ(try and buy)」デジタル配信モデルでは、消費者は、購入判断をする前に、ソフトウェアの「トライアンドバイ」バージョンを体験版として使用することができる。このような「トライアンドバイ」バージョンは、購入後にアンロックされるソフトウェア実行可能ファイル(software executable)のロックダウンバージョンからなる。一般的な場合、エンドユーザまたは見込み客が、発行元のウェブサイトまたは汎用ウェブポータル(例えば、www.download.com、www.yahoo.com等、以下、ポータル)から無料で提供されている「トライアンドバイ」ソフトウェアアプリケーション(以下、インストーラ)をダウンロードすることができる。通常、「トライアンドバイ」インストーラをダウンロードしインストールしたユーザのうちのある割合のユーザは、ソフトウェア(またはサービス、またはそれに関連する定期的なサービス(subscription))を購入して、ソフトウェア製品の完全バージョンを取得する。したがって、ソフトウェアメーカーは、エンドユーザによるダウンロードに「トライアンドバイ」ソフトウェアを提供する動機を有する。ソフトウェアメーカーは、エンドユーザがダウンロードするこのような「トライアンドバイ」バージョンを自社のウェブサイトに設置することによってそれを行う。さらに、ソフトウェアメーカーは、ソフトウェアメーカーによって必ずしも制御されるわけではないポータルを介してこれらインストーラを配信することができる。ソフトウェア発行元の「トライアンドバイ」ビジネスモデルの背後にある動機は、消費者が「トライアンドバイ」ソフトウェアに関連する購入を行った場合に埋め合わせられることにある。さらに、ポータルは、「トライアンドバイ」インストーラがポータルサイトからダウンロードされた場合に埋め合わせられて、収益が生じるように、ソフトウェアメーカー、発行元、またはアグリゲータとの商取引契約を締結する。通常、ポータルは、消費者が支払った価格の収益シェアを得る。
【0003】
「トライアンドバイ」インストーラは、エンドユーザがソフトウェアアプリケーションの完全バージョンを購入するための手段を含む。購入取引の一環として、エンドユーザは、オンライン購入取引の様々なステップを実行するように指示され得る。このような指示は、例えば、1)経済的取引、例えば、P.O.ボックス xyzへの小切手郵送を完了し、ソフトウェアアプリケーションの完全バージョンを得るための指示を受け取るためのテキストでの説明、2)オンライン電子商取引(例えば、クレジットカードでの支払い)を実行するための指示または手段を含むURL、3)アプリケーション自体に内蔵された購入メカニズム、4)ソフトウェアアプリケーションのラッパーに内蔵された購入メカニズム、または5)これら指示の任意の組み合わせを含み得る。同じソフトウェア製品は、通常、複数の配信ネットワーク(例えば、複数のポータル)を介して配信されるため、どの配信ネットワークが特定の購入を担当したかを追跡する方法が必要である。どの配信ネットワークが特定の購入を担当したかを判断する一方法は、ソフトウェア製品の追跡可能バージョンを作成することである。追跡可能バージョンを作成する一方法は、購入指示内に配信ネットワークを識別する情報を含む、異なるインストーラを作成することからなる。例えば、ソフトウェア製品には、特定の配信ネットワークを識別する値を含む購入URL、例えば、http://my.trymedia.com/buy?sku=0123&affiliate=abcが埋め込まれ得る。
【0004】
このようなURLを、変数「affiliate=abc」によって識別された配信ネットワークを介してのソフトウェア配信に使用することができる。同じソフトウェア製品が、別の配信ネットワーク(例えば、「affiliate=xyz」)を介して配信される場合、他の配信ネットワークを識別する購入URL、例えば、http://my.trymedia.com/buy?sku=0123&affiliate=xyzが埋め込まれた、同じソフトウェア製品の別のバージョンを作成しなければならない。
【0005】
ソフトウェア発行元は、当業者に既知の様々な手段によって作成されたソフトウェアの異なる追跡可能バージョンを作成することができる。例えば、1)配信チャネルを識別する、異なる補助情報を含むソフトウェア実行可能ファイルのリコンパイル、2)購入プロセスの命令によって参照される補助ファイル、資源、またはデータへのこのような情報の包含、または3)上記の任意の組み合わせ。大半の場合、可能な限り効率的にプロセスをスケーリングできるように、ソフトウェアメーカーによる関与なしで、同じソフトウェア製品の異なる追跡可能バージョンを作成することが好ましい。それを行う可能な一方法は、インストーラが最初に実行されるときに、配信関連情報をインストーラの予め定義されたロケーションまたはファイルシステムのレジストリ内の予め定義されたロケーションに埋め込むことである。配信関連情報をインストーラに埋め込むことの一利点は、この方法では、ソフトウェアメーカーが配信ネットワーク毎にソフトウェアの特定のバージョンを作成する必要がないことである。それにも関わらず、増大し続ける数の配信ネットワークのそれぞれに異なるインストーラを作成し管理することは、非常に困難なタスクになっている。
【0006】
デジタル署名を実行可能ファイルに導入することにより、ソフトウェアメーカーおよびエンドユーザにセキュリティの恩恵が提供される。エンドユーザに対して、実行可能ファイルのデジタル署名は、実行可能ファイルが、通常はソフトウェアメーカーによって署名されてから決して変更されていないことを保証するツールを提供する。ソフトウェアメーカーにとっては、恩恵は、ソフトウェアが(例えば、実行可能ファイルに感染するコンピュータウィルスによって)変更または改ざんされる機会が少なく、結果として、サポートへの電話が少なくなり、かつソフトウェアへのユーザの信頼度が増すことと言い換えられる。Microsoft(登録商標)のWindows(登録商標)オペレーティングシステム実行可能ファイルには、デジタル署名が証明書の形態で実装される。実行可能ファイルのヘッダには、デジタル証明書の様々な属性にアクセスするための情報を含む証明書テーブルが提供される。ソフトウェアメーカーが実行可能ファイルファイルに署名すると、実行可能ファイルの内容は、証明書を無効にするか、またはファイルのデジタル署名をファイルのデジタル証明書と不一致にしない限り容易に変更することができない。さらに、ウィルス、スパイウェア、および他のマルウェアの脅威が高まっているため、オペレーティングシステムおよびインターネットブラウザのベンダーは、実行可能ファイルがデジタル署名されていない場合には警告を発する可能性が高い。この結果として、確実に、実行可能ファイルと共にデジタル署名がさらに採り入れられ広く使用されることになるであろう。
【0007】
しかし、上述したように、異なる配信ネットワークにソフトウェア製品の異なるバージョンを作成することは非効率的である。さらに、実行可能ファイルのデジタル署名の完全性を破壊せずに実行可能ファイルの内容を変更することは非常に困難である。したがって、追跡可能なコピーの配信関連の補助情報を変更すると、デジタル署名が無効になるため、ソフトウェアメーカー以外の誰かがソフトウェア製品の追跡可能なコピーを作成することは非常に困難である。
【発明の概要】
【発明が解決しようとする課題】
【0008】
したがって、補助情報をデジタル署名付きコンテンツに埋め込み認証する、コンピュータによって実施されるシステムおよび方法が必要である。
【0009】
実施形態は、限定としてではなく例として添付図面の図に示される。
【図面の簡単な説明】
【0010】
図面の簡単な説明
【図1】補助情報が実行可能ファイルのヘッダ部に記憶された実施形態を示す。
【図2】各実行可能コードブロック内に異なる補助データを有する3つの異なるインストーラの例を示す。
【図3】各種実施形態において、様々な配信ネットワーク上での配信がどのようにして達成されるかの例を示す。
【図4】デジタル署名付き実行可能ファイルの典型的な構造を示す。
【図5】各種実施形態による変更されたデジタル署名付き実行可能ファイルを示す。
【図6】実施形態において実行される基本処理動作を示すフローチャートを示す。
【図7a】実施形態が動作でき、かつ実施形態が常駐できる計算システムのブロック図である。
【図7b】実施形態が動作でき、かつ実施形態が常駐できる計算システムのブロック図である。
【図8】実施形態例において実行される基本処理動作を示す流れ図である。
【図9】実施形態例において実行される基本処理動作を示す流れ図である。
【発明を実施するための形態】
【0011】
詳細な説明
補助情報をデジタル署名付きコンテンツに埋め込み認証する、コンピュータによって実施されるシステムおよび方法が開示される。以下の説明では、多くの具体的な詳細が記される。しかし、実施形態がこれら具体的な詳細なしで実施可能なことが理解される。場合によっては、周知のプロセス、構造、および技法については、この説明の明確さを曖昧にしないように、詳細に示されていない。
【0012】
図1は、補助情報(例えば、配信情報)がインストーラの実行可能ファイルのヘッダ部に記憶された実施形態を示す。示すように、インストーラ110は、実行可能コードブロック120及びインストーラデータ130を含む。実行可能コードブロック120は、ヘッダ部122と、ヘッダ部内にある補助データ部124と、実行可能コードセクション126とで構成される。補助データ124は、配信関連情報、URL、価格情報、タイムスタンプ、配信チャネル情報、ビジネスルール、デジタル権利管理(DRM)情報、配信者ブランド情報、他の情報へのポインタまたはリンク、およびソフトウェアメーカー、配信者、卸売り業者、小売り店、またはエンドユーザが使用する他の任意の情報を含むことができる。異なる種類の補助情報の集合または組み合わせを含む、異なる様々な種類の情報が補助データ124に含まれ得ることが当業者には明らかであろう。このような補助情報124は、関連するインストーラ内で作成し、記憶し、転送することができる。インストーラ110内に補助データブロック124が与えられているため、特定のインストーラを特定のソフトウェア製品に作成することができる。例えば、同じソフトウェア製品は、複数の異なる特定のインストーラを使用して複数の異なる方法で配信することができ、各インストーラは、その特定の配信ネットワークの配信方法を定義する特定の補助データ124を有する。図2を参照すると、それぞれの実行可能コードブロック121、122、および123内に異なる補助データを有するこのような3つの異なるインストーラの例を示す。図2に示す3つの各インストーラ例は、特定の配信ネットワークでソフトウェア製品を配信するために使用することができ、インストーラデータ131が3つの異なるインストーラで同じであり、実行可能コードブロック121、122、および123のみが、各インストーラの異なる配信ネットワークを反映して異なることに留意する。
【0013】
図3を参照すると、例により、各種実施形態において、様々な配信ネットワーク上での配信がどのように達成されるかを示す。図3の例では、サーバ350はインストーラテンプレート340を含む。インストーラテンプレート340は、実行可能コードブロック321およびインストーラデータ331を含む。特定の配信ネットワーク(例えば、ネットワーク1)上で特定のソフトウェア製品をダウンロードする要求を受信すると、サーバ350は、配信ネットワーク(例えば、ネットワーク1)に固有の情報を生成し、その情報をインストーラテンプレート340のコピーに記憶する。次に、配信ネットワークに固有のインストーラ351を要求発信者に送信して、ソフトウェア製品を特定の配信ネットワーク上で配信することができる。同様に、他の配信ネットワークに固有のインストーラ352および353をインストーラテンプレート340から生成し、それら特定のダウンロード要求の発信者に送信することができる。このようにして、複数の配信ネットワークでソフトウェア製品を配信する効率的でスケーラブルなソリューションが提供される。
【0014】
ダウンロードされた実行可能ファイルにデジタル署名を使用することが、ますます一般的になりつつある。しかし、ソフトウェアメーカーが実行可能ファイルに一旦署名してしまうと、証明書を無効にするか、またはファイルのデジタル署名をファイルのデジタル証明書と不一致にしない限り実行可能ファイルの内容を容易に変更することはできない。したがって、特定のソフトウェア製品をダウンロードするためのインストーラに補助情報を挿入することが困難になっている。それにも関わらず、本明細書において説明する各種実施形態は、より詳細に後述するように、この問題を解消する。
【0015】
図4を参照すると、デジタル署名付き実行可能ファイル401の典型的な構造を示す。ファイル401は、通常、周期的冗長検査(CRC)ブロック410、デジタル署名ポインタ412、デジタル署名サイズ414、変数データブロック416、デジタル署名ブロック420、および未使用部430を含む。当業者に周知のように、デジタル署名420は、ソフトウェア開発者の秘密鍵および信頼できる機関の秘密鍵と組み合わせて、変数データ416および実行可能ファイルのヘッダのハッシュから生成される。変数データ416は、実行可能ファイルのヘッダを含め、ファイル401内の略あらゆるコードまたはデータペイロードであることができる。通常、ダウンロード可能なソフトウェア製品および関連データは、変数データブロック416に記憶することができる。ソフトウェア製品が416の変数データブロックに記憶され、デジタル署名420が、変数データブロック416の内容から生成されると、変数データブロック416のいかなる部分も、デジタル署名420を無効にせずには変更することが非常に困難になる。生成されたデジタル署名420のサイズは、414のデジタル署名サイズブロックに記憶される。変数データブロック416のサイズは可変であることができるため、デジタル署名420へのポインタ413がデジタル署名ポインタブロック412に記憶される。デジタル署名付き実行可能ファイル401の典型的な実施では、CRCブロック410、デジタル署名ポインタ412、およびデジタル署名サイズ414は、デジタル署名420の計算に含まれない。したがって、ファイル401のこれらブロックは、デジタル署名420を無効にせずに変更することができる。
【0016】
図5を参照すると、各種実施形態による変更されたデジタル署名付き実行可能ファイル501を示す。ファイル501は、ブロック514内にあるデジタル署名サイズの値を変更することによって変更されている。デジタル署名サイズの値は、デジタル署名520のサイズをとり、これに未使用ブロック530のサイズを追加することによって変更されている。場合によっては、補助データブロック530をバイト、ワード、ページ、または他のメモリセグメント境界上で終わらせるために、所定のパッド値だけ、変更されたデジタル署名サイズ値を増大(または低減)することが必要であり得る。場合によっては、予め補助データブロック530をゼロで埋めるか、またはデフォルト値を補助データブロック530の各メモリロケーションに記憶することが必要であり得る。この新しいデジタル署名サイズ値は、図5において矢印515で示されるように、デジタル署名サイズブロック514に記憶される。ブロック514内のデジタル署名サイズ値は、デジタル署名520の計算に含まれないため、ブロック514内のデジタル署名サイズの変更は、デジタル署名520を無効にしない。さらに、デジタル署名520の従来の構造により、追加のメモリ空間530をデジタル署名520の末尾に追加することも、デジタル署名520を無効にしない。未使用メモリ空間530をファイル501に追加することにより、第三者が補助データをブロック530に記憶することが可能になる。ブロック530に記憶された補助データは、様々な目的で使用することができる。例えば、ブロック530に記憶された補助データは、配信関連情報、URL、価格情報、タイムスタンプ、配信チャネル情報、ビジネスルール、デジタル権利管理(DRM)情報、配信者ブランド情報、他の情報へのポインタまたはリンク、およびソフトウェアメーカー、配信者、卸売り業者、小売り店、またはエンドユーザが使用する他の任意の情報を含むことができる。異なる種類の補助情報の集合または組み合わせを含む、異なる様々な種類の情報をブロック530に含めることができることが当業者には明らかであろう。このような補助情報は、デジタル署名520を無効にすることなく、ファイル501のブロック530内で作成し、記憶し、転送することができる。
【0017】
代替の実施形態では、CRCブロック510内のデータは、補助データで上書きすることができる。ブロック510内のCRC値はデジタル署名520の計算に含まれないため、ブロック510内のCRCデータの変更は、デジタル署名520を無効にしない。しかし、CRCブロック510のサイズは非常に制限される。ファイル501の構造の典型的な実施では、非常に小量の情報しかブロック510に記憶することができない。より大きな補助データブロックへのポインタ、リンク、またはインデックスをブロック510に記憶することができ、このような補助データは、ローカルロケーションまたはリモートロケーション(例えば、サーバ)に記憶される。
【0018】
図6を参照すると、フローチャートに、実施形態において実行される基本処理動作を示す。612のブロックにおいて、デジタル署名付きファイル501が読み出され、デジタル署名付きファイルヘッダにおけるデジタル署名ブロックおよびデジタル署名サイズブロックが識別される。ブロック614において、デジタル署名サイズが、デジタル署名サイズブロックから検索され、デジタル署名サイズ値が変更される。デジタル署名サイズの値は、デジタル署名のサイズ(すなわち、デジタル署名サイズブロック内の古い値)をとり、それに、補助データを記憶することができる未使用データブロックのサイズを追加することによって変更される。場合によっては、補助データブロックをバイト、ワード、ページ、または他のメモリセグメント境界上で終わらせるために、所定のパッド値だけ、変更されたデジタル署名サイズ値を増大(または低減)することが必要であり得る。場合によっては、予め補助データブロック530をゼロで埋めるか、またはデフォルト値を補助データブロック530の各メモリロケーションに記憶することが必要であり得る。この新しいデジタル署名サイズ値は、処理ブロック616において、デジタル署名サイズブロックに記憶される。このデジタル署名付きファイル501に対応する補助データは、処理ブロック618において生成され、補助データブロック530に記憶される。処理ブロック620において、変更されたファイル501のCRC値をリコンパイルし、CRCブロック510に記憶することができる。各種実施形態により、補助データがデジタル署名付きファイル510内のブロック530に記憶されるため、第三者が、特定のソフトウェア製品に特定のインストーラを作成することができる。さらに、デジタル署名付きファイルは、デジタル権利管理ポリシー、アクセス制御、購入手順、または特定のデジタル署名付きファイル501に関連する様々な他のコンテンツ固有、当事者固有、または取引固有の情報を含むように変更することができる。
【0019】
図7aおよび図7bは、実施形態例の特徴を実施することができる、例示的なクライアントまたはサーバコンピュータシステムを示すコンピュータシステム200の例を示す。コンピュータシステム200は、情報を通信するためのバスまたは他の通信手段214および216と、情報を処理する、バス214に結合されたプロセッサ220等の処理手段とで構成される。コンピュータシステム200は、バス214に結合され、情報およびプロセッサ220によって実行される命令を記憶するランダムアクセスメモリ(RAM)または他の動的記憶装置222(一般にメインメモリと呼ばれる)をさらに備える。メインメモリ222は、プロセッサ220による命令の実行中に一時変数または他の中間情報を記憶するために使用することもできる。コンピュータシステム200は、バス214に結合され、静的情報およびプロセッサ220の命令を記憶する読み取り専用メモリ(ROM)および/または他の静的記憶装置224も備える。
【0020】
磁気ディスクまたは光ディスクおよび対応するドライブ等のオプションのデータ記憶装置228も、情報および命令を記憶するために、コンピュータシステム200に結合することができる。コンピュータシステム200は、情報をコンピュータユーザに表示する、陰極線管(CRT)または液晶ディスプレイ(LCD)等の表示装置204にバス216を介して結合することもできる。例えば、イメージ、テキスト、映像、または図による情報の説明を表示装置204上でユーザに提示することができる。通常、英数字および他のキーを含む英数字入力装置208が、情報および/またはコマンド選択をプロセッサ220に通信するために、バス216に結合される。別の種類のユーザ入力装置は、方向情報およびコマンド選択をプロセッサ220に通信し、ディスプレイ204上のカーソルの移動を制御する、従来のマウス、トラックボール、または他の種類のカーソル方向キー等のカーソル制御装置206である。
【0021】
通信装置226も、例えば、インターネットを介してリモートコンピュータまたはウェブサーバもしくは他のサーバ等のサーバにアクセスするために、バス216に結合することができる。通信装置226は、モデム、ネットワークインタフェースカード、またはイーサネット(登録商標)、トークンリング、ワイヤレスネットワーク、もしくは他の種類のネットワークとのインタフェースに使用されるような他の周知のインタフェース装置を含み得る。任意のイベントにおいて、このようにして、コンピュータシステム200は、従来のネットワークインフラを介していくつかのサーバに結合することができる。
【0022】
実施形態例のシステムは、上述したように、ソフトウェア、情報処理ハードウェア、および様々な処理ステップを含む。実施形態例の特徴および処理ステップは、機械実行可能命令またはコンピュータ実行可能命令で具現することができる。命令を使用して、命令がプログラムされた汎用プロセッサまたは専用プロセッサに、実施形態例のステップを実行させることができる。あるいは、特徴またはステップは、ステップを実行するハードワイヤードロジックを含む特定のハードウェア構成要素によって、またはプログラムされたコンピュータ構成要素とカスタムハードウェア構成要素の任意の組み合わせによって実行することができる。実施形態はインターネットを参照して説明されたが、本明細書において説明した方法および装置は、他のネットワークインフラまたは他のデータ通信システムに等しく適用可能である。
【0023】
本明細書において説明された方法を説明された順またはいかなる特定の順でも実行する必要がないことに留意されたい。さらに、本明細書において識別された方法に関して説明された様々な活動は、反復的、同時に、再帰的、逐次、または並列に実行することが可能である。変数、コマンド、演算子、および他のデータを含む情報は、1つまたは複数の搬送波の形態で通信装置226を通して送受信することができる。
【0024】
この開示の内容を読み、理解した上で、当業者は、ソフトウェアプログラムをコンピュータベースのシステム内のコンピュータ可読媒体から起動して、上述したソフトウェアプログラムで定義された機能を実行することができる様式を理解するであろう。当業者は、本明細書に開示された方法を実施し実行するように設計された1つまたは複数のソフトウェアプログラムの作成に利用できる様々なプログラミング言語をさらに理解するであろう。プログラムは、Java(登録商標)、スモールトーク、またはC++等のオブジェクト指向言語を使用してオブジェクト指向形式で構造化することができる。あるいは、プログラムは、アセンブリまたはC等のプロシージャ言語を使用してプロシージャ指向形式で構造化することもできる。ソフトウェア構成要素は、アプリケーションプログラムインタフェースまたはリモートプロシージャコール等のプロセス間通信技法等の当業者に周知のいくつかのメカニズムのうちの任意のものを使用して通信することができる。各種実施形態の技法は、HTMLおよびXMLを含め、いかなる特定のプログラミング言語または環境にも制限されない。
【0025】
したがって、他の実施形態を実現することも可能である。例えば、図7aおよび図7bは、コンピュータ200、メモリシステム222、224、および228、磁気または光ディスク212、他のいくつかの記憶装置228、および/または任意の種類の電子装置もしくはシステム等の、各種実施形態による製品のブロック図を示す。製品200は、コンピュータ202によって実行されると、コンピュータ202に本明細書において説明した方法を実行させる関連する情報(例えば、コンピュータプログラム命令および/またはデータ)を有する、コンピュータ可読媒体212および/または記憶装置228(例えば、電気的、光学的、または電磁的な導体を有する有形メモリを含む固定記憶媒体および/またはリムーバブル記憶媒体)または搬送波に通信装置226を通して、結合されたコンピュータ202(1つまたは複数のプロセッサを有する)を含み得る。
【0026】
様々な実施形態について説明する。特に、様々な種類および形式のユーザインタフェース提示を有する実施形態の使用を説明し得る。本明細書において説明する実施の代替の実施形態も利用でき、それでもなお後述する特許請求の範囲内にあることが当業者には明らかであろう。本明細書での詳細では、様々な実施形態を、本明細書では「ソフトウェア」と記されることもあるコンピュータにより実施される処理ロジックで実施されるものとして説明する。しかし、上述したように、特許請求される本発明は、純粋にソフトウェア実施に限定されない。
【0027】
上述したように、補助データは署名付き実行可能ファイル内に埋め込むことができ、すでに存在するデジタル署名を破ることなく変更される。上述した教示は、このような補助データを、検証されたメッセージの一部として計算されないデジタル署名ディレクトリに埋め込むことを含んだ。その結果、説明した技法は、補助情報(例えば、配信ソース等)を使用して、ダウンロード(または製造)時にデジタル配信されるインストーラを個別化する効率的な方法を提供する。説明した技法の一利点は、補助情報をダウンロード時に実行可能ファイルに動的に挿入できることである。これにより、複数の配信者からなるデジタル配信ビジネスモデルにおいて、配信チャネルを追跡することができる。このようなビジネスモデルでは、特定のファイルのソースを、特定のファイルに関連する金銭または広告の取引またはイベント時にこのようなソースに補償できるように、識別可能なことが非常に望ましい。デジタル配信提供者が、ダウンロード可能なアセットのただ1つのバージョンを記憶し、このようなアセットのタグ付きコピーを効率的に作成することも非常に望ましい。動的(アフィリエイト)追跡により、デジタルアセットの単一のコピーを、ダウンロード時または遂行時に動的に個別化して、クレジット処理、報告または追跡のためにソース配信を識別することができる配信ネットワークを効率的に作成することができる。
【0028】
米国特許第5,892,904号および同第6,367,012号には、コンピュータネットワークを介して受信したコンピュータプログラムまたはコードの認証および完全性を保証する方法が記載されている。しかし、参照した特許に記載された方法は、署名付きプログラムまたはコード、デジタル署名、および場合によっては他のいくらかのデータおよびパディングを含む、送信された実行可能ファイルの認証および完全性を保証しない。
【0029】
例えば、Microsoft Windows(登録商標)オペレーティングシステムは、オーセンティコード(Authenticode)署名を含む「属性証明書テーブル」および「証明書データ」セクションを追加することにより、署名付き実行可能ファイルを実施する。オーセンティコード署名の生成に使用されるイメージハッシュは、(Microsoftドキュメンテーションによれば)以下のセクションを除くファイル内のすべてのセクションから生成される。
i.オプションのヘッダのWindows(登録商標)固有フィールドのファイルチェックサムフィールド;
ii.属性証明書に関連する情報;および
iii.最後のセクションの末尾を過ぎたセクション内に配置された情報。
【0030】
オーセンティコード署名の生成に使用されるイメージハッシュは、上で言及したファイル内のセクション(本明細書では非認証セクションと記す)からは生成されないため、これら非認証セクションへの変更は、ハッシュを変更せず、すなわちハッシュに影響せず、これはオーセンティコード署名に影響しない。したがって、送信された実行可能ファイルの信憑性および完全性は、ファイルのオーセンティコード署名に影響せずにファイルまたは送信の非認証セクション内で影響を受け得る。実際には、米国特許出願公開第20060265591号に開示される発明は、このことを利用して、デジタル署名を破ることなく、有用な方法で実行可能ファイルまたは送信を効率的に変更する。
【0031】
詳細に後述する各種実施形態では、デジタル署名付き実行可能ファイルを含むファイルまたは送信の信憑性および完全性は、ファイルまたは送信のデジタル署名の生成に含まれないファイルまたは送信の領域(すなわち、非認証領域)をチェックすることにより検証される。後述するプロセスは、非認証領域が必要ではないデータを含まないこと、および非認証領域内の必要データが明確に指定された値を有することの検証のために使用される。
【0032】
非認証領域の内容の検証は、1)ファイルもしくは送信のデジタル署名が検証されたとき、2)ファイルもしくは送信がダウンロードされたとき、または3)実行可能ファイル自体を実行するときに、送信を受信するか、またはファイルを処理する機械内に存在するオペレーティングシステムによって実行することができる。検証プロセスが、実行ファイル自体を実行するときに実行される場合、万が一検証に失敗したときには、実行可能ファイルの実行は打ち切られる。実行可能ファイル自体を実行するときに検証プロセスを実行することは、すべての環境での理想的なソリューションではない可能性はあるが、実行可能コードは、存在するデジタル署名によって適切に保護されているため、このプロセスは多くの用途に対して十分に安全であり得る。
【0033】
以下に詳述する特定の実施形態では、デジタル署名付き実行可能ファイルを含むファイルまたは送信の信憑性および完全性は、Microsoft Windows(登録商標)のPE(ポータブル実行可能ファイル)ファイルの実装を使用して検証される。この特定の実施形態では、検証プロセスは以下の動作を含み得る。
i.オプションのヘッダのWindows(登録商標)固有フィールド内のチェックサムフィールドが、イメージファイルのチェックサムと整合することをチェックし検証する。
ii.ファイルまたは送信の最後のセクションの末尾を過ぎたところに情報がないことをチェックして検証し、確かめる。
iii.属性証明書テーブルが単一のエントリを含み、パディングまたは固定データを有するパディングを含まないことをチェックして検証し、確かめる。
iv.証明書が実際に、次のオクタワード境界までの存在し得る固定データパディングを除き、属性証明書テーブル内でその証明書に割り振られた全空間を埋めていることをチェックして検証し、確かめる。
【0034】
上述した検証プロセスでは、消費・バイナリ作成ツールまたは変更ツール(例えば、フォレンジック(forensic)ツール、リンカ、コンパイラ等)のために、何百万もの実行可能ファイルにすでに導入されているポータブル実行可能ファイル規格を変更する必要があり得る。ポータブル実行可能ファイル規格を変更するこのような潜在的な必要性の結果として、上述した検証プロセスは、用途によっては最適ではない可能性がある。
【0035】
以下に詳述する別の特定の実施形態では、デジタル署名付き実行可能ファイルを含むファイルまたは送信の信憑性および完全性は、Microsoft Windows(登録商標)のPE(ポータブル実行可能ファイル)ファイルの実装を使用して検証される。この特定の実施形態では、オペレーティングシステム(OS)のベンダーまたは提供者(例えば、Microsoft)が、検証プロセスを実装して、非認証領域を含むデジタル署名付きファイルまたは送信を実行することのセキュリティリスクを軽減するか、またはなくすことができる。この実施形態では、検証プロセスは、実行可能ファイルがメモリにロードされたとき、非認証領域へのアクセスを阻止するか、または監視する。特定の実施形態の検証プロセスは、以下の動作を含み得る。
i.デジタル署名付き実行可能ファイルを含むファイルまたは送信を実行のためにメモリにロードし、その間、実行可能ファイルのデジタル署名および内容の完全性をチェックする。
ii.非認証領域のメモリロケーションをゼロまたは値で埋めることにより、ファイルまたは送信のいかなる非認証領域も消去する。
iii.オプションとして、ディスク上のこのような実行可能ファイルの内容へのアクセスを仮想化し、上述したように、仮想化されたファイルまたは送信のいかなる非認証領域も消去する。このような実行可能ファイルへの内容へのアクセスの仮想化は、実行可能ファイルが、Win32クリエイトファイル等のファイル入出力呼び出しを使用してそれ自体をロードしようとする(例えばまたは、DLLまたはCOMオブジェクト等の関連する別の実行可能モジュールから)場合に実行することができる。
【0036】
以下に詳述する別の特定の実施形態では、デジタル署名付き実行可能ファイルを含むファイルまたは送信の信憑性および完全性は、Microsoft Windows(登録商標)のPE(ポータブル実行可能ファイル)ファイルの実装を使用して検証される。この特定の実施形態では、オペレーティングシステム(OS)のベンダーまたは提供者(例えば、Microsoft)が、検証プロセスを実装して、非認証領域を含むデジタル署名付きファイルまたは送信を実行することのセキュリティリスクを軽減するか、またはなくすことができる。この実施形態では、検証プロセスは、実行可能ファイルがメモリにロードされたとき、非認証領域へのアクセスを阻止するか、または監視する。特定の実施形態の検証プロセスは、以下の動作を含み得る。
i.ディスク上のデジタル署名付き実行可能ファイルの内容へのアクセスを仮想化する。
ii.メモリ内の仮想化ファイルに関して、
1.オプションのヘッダのWindows(登録商標)固有フィールドのチェックサムフィールド、
2.ファイルまたは送信の最後のセクションの末尾を過ぎたところにある情報、
3.属性証明書に関連する情報、および
4.証明書が、属性証明書テーブル内で割り振られた全空間を埋めていないロケーション
を含む非認証領域の内容に対応する仮想化ファイルのロケーションをゼロまたは値で埋めることにより、ファイルまたは送信のいかなる非認証領域も消去する。
【0037】
図8および図9を参照すると、流れ図に、実施形態例において実行される基本処理動作を示す。
【0038】
こうして、デジタル署名付きコンテンツ内に補助情報を埋め込み認証する、コンピュータにより実施されるシステムおよび方法が開示された。本発明をいくつかの実施形態例に関して説明したが、本発明が説明された実施形態に限定されず、添付の特許請求の範囲の趣旨および範囲内で変更および修正を加えて実施可能なことを当業者は認識するであろう。したがって、本明細書における説明は限定としてではなく例示としてみなされるべきである。

【特許請求の範囲】
【請求項1】
デジタル署名付き実行可能ファイルを含むデジタルコンテンツを実行のためにメモリにロードし、その間、前記実行可能ファイルの前記デジタル署名および内容の完全性をチェックすること、および
前記デジタルコンテンツのいかなる非認証領域も、前記非認証領域に対応するメモリロケーションをゼロまたは値で埋めることによって消去すること
を含む、方法。
【請求項2】
前記デジタルコンテンツの前記非認証領域は、前記デジタルコンテンツの最後のセクションの末尾を過ぎたところにある領域を含む、請求項1に記載の方法。
【請求項3】
前記デジタルコンテンツのヘッダ内のチェックサムフィールドが、イメージファイルのチェックサムと整合することを検証することを含む、請求項1に記載の方法。
【請求項4】
属性証明書テーブルが、単一のエントリを含み、パディングを含まないことを検証することを含む、請求項1に記載の方法。
【請求項5】
前記デジタル署名が、実際に、属性証明書テーブル内の前記デジタル署名に割り振られた全空間を埋めていることを検証することを含む、請求項1に記載の方法。
【請求項6】
前記デジタルコンテンツはファイルである、請求項1に記載の方法。
【請求項7】
前記デジタルコンテンツはデジタル送信である、請求項1に記載の方法。
【請求項8】
前記デジタルコンテンツへのアクセスを仮想化し、前記仮想化デジタルコンテンツのいかなる非認証領域も消去することを含む、請求項1に記載の方法。
【請求項9】
前記消去することはローダによって実行される、請求項1に記載の方法。
【請求項10】
前記消去することは前記実行可能ファイルによって実行される、請求項1に記載の方法。
【請求項11】
機械によってアクセスされると、前記機械に、
デジタル署名付き実行可能ファイルを含むデジタルコンテンツを実行のためにメモリにロードし、その間、前記実行可能ファイルの前記デジタル署名および内容の完全性をチェックすること、および
前記デジタルコンテンツのいかなる非認証領域も、前記非認証領域に対応するメモリロケーションをゼロまたは値で埋めることによって消去すること
を実行させるデータを含む機械記憶媒体に具現される製品。
【請求項12】
前記デジタルコンテンツの前記非認証領域は、前記デジタルコンテンツの最後のセクションの末尾を過ぎたところにある領域を含む、請求項11に記載の製品。
【請求項13】
前記デジタルコンテンツのヘッダ内のチェックサムフィールドが、イメージファイルのチェックサムと整合することを検証するようにさらに動作可能である、請求項11に記載の製品。
【請求項14】
属性証明書テーブルが、単一のエントリを含み、パディングを含まないことを検証するようにさらに動作可能である、請求項11に記載の製品。
【請求項15】
前記デジタル署名が、実際に、属性証明書テーブル内の前記デジタル署名に割り振られた全空間を埋めていることを検証するようにさらに動作可能である、請求項11に記載の製品。
【請求項16】
前記デジタルコンテンツはファイルである、請求項11に記載の製品。
【請求項17】
前記デジタルコンテンツはデジタル送信である、請求項11に記載の製品。
【請求項18】
前記デジタルコンテンツへのアクセスを仮想化し、前記仮想化デジタルコンテンツのいかなる非認証領域も消去するようにさらに動作可能である、請求項11に記載の製品。
【請求項19】
前記消去することはローダによって実行される、請求項11に記載の製品。
【請求項20】
前記消去することは前記実行可能ファイルによって実行される、請求項11に記載の製品。
【請求項21】
デジタル署名付き実行可能ファイルを含むデジタルコンテンツを実行のためにメモリにロードし、その間、前記実行可能ファイルの前記デジタル署名および内容の完全性をチェックすること、および
前記実行可能ファイルに対して検証動作を実行して、前記実行可能ファイルの完全性を検証すること
を含む、方法。
【請求項22】
前記検証動作はチェックサム検証を含む、請求項21に記載の方法。
【請求項23】
前記検証動作は、前記実行可能ファイルの最後のセクションの末尾を過ぎたところに情報がないことを検証することを含む、請求項21に記載の方法。
【請求項24】
前記検証動作は、属性証明書テーブルが、単一のエントリを含み、パディングまたは固定データを有するパディングを含まないことを検証することを含む、請求項21に記載の方法。
【請求項25】
前記検証動作は、証明書が、実際に、属性証明書テーブル内で割り振られた全空間を埋めていることを検証することを含む、請求項21に記載の方法。
【請求項26】
機械によってアクセスされると、前記機械に、
デジタル署名付き実行可能ファイルを含むデジタルコンテンツを実行のためにメモリにロードし、その間、前記実行可能ファイルの前記デジタル署名および内容の完全性をチェックすること、および
前記実行可能ファイルに対して検証動作を実行して、前記実行可能ファイルの完全性を検証すること
を実行させるデータを含む機械記憶媒体に具現される製品。
【請求項27】
前記検証動作はチェックサム検証を含む、請求項26に記載の製品。
【請求項28】
前記検証動作は、前記実行可能ファイルの最後のセクションの末尾を過ぎたところに情報がないことを検証することを含む、請求項26に記載の製品。
【請求項29】
前記検証動作は、属性証明書テーブルが、単一のエントリを含み、パディングまたは固定データを有するパディングを含まないことを検証することを含む、請求項26に記載の製品。
【請求項30】
前記検証動作は、証明書が、実際に、属性証明書テーブル内で割り振られた全空間を埋めていることを検証することを含む、請求項26に記載の製品。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7a】
image rotate

【図7b】
image rotate

【図8】
image rotate

【図9】
image rotate


【公表番号】特表2010−535372(P2010−535372A)
【公表日】平成22年11月18日(2010.11.18)
【国際特許分類】
【出願番号】特願2010−518756(P2010−518756)
【出願日】平成19年7月31日(2007.7.31)
【国際出願番号】PCT/IB2007/003032
【国際公開番号】WO2009/016426
【国際公開日】平成21年2月5日(2009.2.5)
【出願人】(597095197)ロヴィ・ソリューションズ・コーポレーション (53)
【Fターム(参考)】