(57)【要約】【課題】  コンピュータファイル（ｉノード番号を有するコンピュータファイル）がコピーされたか否かを検出する方法を提供する。【解決手段】    コンピュータファイルの前記ｉノード番号が取り出される。記憶されたｉノード番号が読み込まれ、前記記憶されたｉノード番号は、前記コンピュータファイルがコピーされてはならないファイルシステムの前記ｉノード番号である。取り出されたｉノード番号及び読み込まれたｉノード番号が比較される。取り出されたｉノード番号が読み込まれたｉノード番号に一致しない場合、コンピュータファイルがコピーされたものであると判断される。  コンピュータファイルがコピーされたことの検出を可能にする方法、及び前記方法に対応するソフトウェアプログラム製品、及びデバイスが提供される。【選択図】図３
2011138514.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータファイルがコピーされたか否かを検出する方法であって、前記コンピュータファイルはソフトウェアプログラムを含み、かつｉノード番号を有し、前記ソフトウェアプログラムを実行しているデバイスにおいて、当該方法は：
−  前記コンピュータファイルの前記ｉノード番号を取り出すステップと；
−  記憶されたｉノード番号を読み込むステップであって、前記記憶されたｉノード番号は、前記コンピュータファイルがコピーされてはならないファイルシステムの前記ｉノード番号である、前記読み込むステップと；
−  前記取り出されたｉノード番号及び前記読み込まれたｉノード番号を比較するステップと；
−  前記取り出されたｉノード番号が前記読み込まれたｉノード番号に一致しない場合、前記コンピュータファイルがコピーされたものであると判断するステップと；
を有する方法。
【請求項２】
前記記憶されたｉノード番号は、前記コンピュータファイルから読み込まれる、請求項１記載の方法。
【請求項３】
前記読み込まれたｉノード番号は、暗号化キーを使用して暗号化され、
当該方法は、前記比較を可能にするために、前記暗号化キーを用いて、前記取り出されたｉノード番号を暗号化するステップ、を更に含む請求項１記載の方法。
【請求項４】
前記読み込まれたｉノード番号は、暗号化キーを使用して暗号化され、
当該方法は、前記比較を可能にするために、対応する解読キーを用いて、前記取り出されたｉノード番号を解読するステップ、を更に含む請求項１記載の方法。
【請求項５】
前記コンピュータファイルはソフトウェアアプリケーションのためのライセンスファイルであり、当該方法の前記ステップは、前記デバイスによって前記ソフトウェアアプリケーションの実行中に実施され、かつ、当該方法は、前記ライセンスファイルがコピーされたという判断に応じて、前記ソフトウェアアプリケーションの前記実行を停止するステップ、を更に含む請求項１記載の方法。
【請求項６】
コンピュータファイルのコピーの検出を、前記コンピュータファイルに含まれるソフトウェアプログラムによって可能にする方法であって、デバイスにおいて：
−  前記コンピュータファイルを作成するステップであって、これにより前記コンピュータファイルをｉノード番号と関連づける、前記作成するステップと；
−  前記作成されたコンピュータファイルの前記ｉノード番号を取り出すステップと；
−  前記取り出されたｉノード番号を記憶するステップと；
を有する方法。
【請求項７】
前記取り出されたｉノード番号は、前記コンピュータファイルに記憶される、請求項６記載の方法。
【請求項８】
コンピュータファイルがコピーされたか否かを検出するためのデバイスであって、前記コンピュータファイルは、ソフトウェアプログラムを含み、かつｉノード番号を有し、前記デバイスはプロセッサを有し、前記ソフトウェアプログラムを実行するときに、プロセッサが、
−  前記コンピュータファイルの前記ｉノード番号を取り出し；
−  記憶されたｉノード番号を読み込み、前記記憶されたｉノード番号は、前記コンピュータファイルがコピーされてはならないファイルシステムの前記ｉノード番号であり；
−  前記取り出されたｉノード番号及び前記読み込まれたｉノード番号を比較し；
−  前記取り出されたｉノード番号が前記読み込まれたｉノード番号に一致しない場合、前記コンピュータファイルがコピーされたものであると判断する；
デバイス。
【請求項９】
前記プロセッサは、ソフトウェアアプリケーションを実行し、かつ、前記コンピュータファイルがコピーされたという判定に応じて前記ソフトウェアアプリケーションの前記実行を停止する、請求項８記載のデバイス。
【請求項１０】
コンピュータファイルに含まれるソフトウェアプログラムによって、前記コンピュータファイルのコピーの検出を可能にするためのデバイスであって、前記デバイスはプロセッサを有し、前記プロセッサは：
−  前記コンピュータファイルを作成し；
−  作成された前記コンピュータファイルのｉノード番号を取り出し；
−  前記取り出されたｉノード番号を記憶する；
デバイス。
【請求項１１】
ソフトウェアプログラム製品であって、その中に記憶された命令を有し、前記命令は、プロセッサによって実行されるときに、前記請求項１ないし５のうちいずれか１項記載の方法を実施する、ソフトウェアプログラム製品。
【請求項１２】
ソフトウェアプログラム製品であって、その中に記憶された命令を有し、前記命令は、プロセッサによって実行されるときに、前記請求項６又は７記載の方法を実施する、ソフトウェアプログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にコピープロテクト、及び特にソフトウェアのコピープロテクトに関する。
【背景技術】
【０００２】
［背景］
このセクションでは技術のさまざまな態様を説明することを目的とする。これらは、下記に記載され、及び／又はクレームされるさまざまな本発明の態様に関連し得る。この説明は、さまざまな本発明の態様のより良好な理解を容易にするために読者に背景情報を提供するのに有効であると考える。したがって、これらの記載は、この観点から理解されるべきであり、かつ従来技術の存在を認めているわけではないと理解されなければならない。
【０００３】
ソフトウェアディストリビュータが、一部の人々が代償を払うことなくソフトウェアアプリケーションの無ライセンスコピーを使用しているという著作権侵害に直面していることは珍しいことではない。このことは、特にコンピュータゲームの領域において見られることである。ゲーム提供者、及びディストリビュータは、したがって、保護メカニズムを使用し、この種の著作権侵害を防止することを試みる。この種の保護メカニズムとしては、以下のものが挙げられる。
・ＳｅｃｕＲＯＭ
・ＳａｆｅＭｅｄｉａ
・フロッピー（登録商標）ディスク上のアドレスマーク及び他のマーク又は同期フィールドの変更
・ＣＤ−Ｒに書くことができないＣＤ−ＲＯＭの場所に関するデータを使うこと
・ソフトウェアを適切に実行するために購入の証拠を要求する。レジストレーションキー及びシリアルナンバーはこの場合に利用できる。
・ドングル
・バスの暗号化
・ソフトウェア実行ファイルと同じディレクトリに記憶されなければならないキーファイル
・電話又はインターネットを介しての製品のアクティベーション
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ソフトウェアは、しばしばコンピュータのユニークなアイデンティファイアに結びつけられている（例えばハードウェアシリアルナンバ又はＭＡＣアドレス）。しかしながら、一般のＰＣにおいては、このようなアイデンティファイアを容易に利用することは難しい。更に、このアイデンティファイアがファイル（例えばキーファイル）にセットされている場合、このファイル自体が他のコンピュータにコピーされてしまう。そして、ＭＡＣアドレスは、新しいイーサーネットカードにおいては書き換えられてしまう。したがって、コピープロテクションが破られてしまう。
【０００５】
更に上述の課題に加えて、ハッカーは、少なくとも部分的にこのような保護メカニズムを破るツールを開発する。
【０００６】
Ｂａｎｉｋａｚｅｍｉらは、侵入検出システム（ＩＤＳ：ｓｙｓｔｅｍ  ｉｎｔｅｇｒｉｔｙ  ｃｈｅｃｋｅｒ）を「Ｓｔｏｒａｇｅ−ｂａｓｅ  Ｆｉｌｅ  Ｓｙｓｔｅｍ  Ｉｎｔｅｇｒｉｔｙ  Ｃｈｅｃｋｅｒ」に開示している。システムは、データの変更を検出することが可能で、更にデータの変更されていないバージョンへの、ロールバックを可能とする。ＩＤＳは、中央に集められたディスクにデータを記憶する多くのホストと、別個の記憶エリアネットワークボリュームコントローラ（ＳＶＣ：Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋｓ  Ｖｏｌｕｍｅ  Ｃｏｎｔｒｏｌｌｅｒ）を有する。とりわけ、ＳＶＣは、ファイルのための読出メタデータ（例えばスーパーブロック、及びｉノードテーブル（ｉｎｏｄｅ  ｔａｂｌｅ））によって、検証データ（ｖｅｒｉｆｉｃａｔｉｏｎ  ｄａｔａ）を生成する。検証データは、それから、ホストによってアクセスできない位置に記憶され、これらによって検証データが改竄されないことを担保する。ＳＶＣは、それから、侵入者がファイルを修正したかどうか検証するために、例えばｉノード番号を使用する。このシステムは、侵入検出のためにはうまく働くが、ファイルのコピーを防止することはできない。
【０００７】
したがって、特に、標準のＰＣで機能し得る更なるコピープロテクトの方式が必要である。本発明は、この種の解決案を提供する。
【課題を解決するための手段】
【０００８】
［発明の概要］
第１の態様において、本発明はコンピュータファイルがコピーされたかどうか検出する方法を実現することを目的とする。コンピュータファイルは、ソフトウェアプログラム及びｉノード番号を有している。コンピュータファイルのｉノード番号は、ソフトウェアプログラムを実行するプロセッサによって取り出される（retrieve）。記憶されたｉノード番号が読み込まれる（read）。そして、記憶されたｉノード番号は、コンピュータファイルがコピーできないファイルシステムのｉノード番号である。取り出されたｉノード番号、及び読み込まれたｉノード番号が、比較される。そして、取り出されたｉノード番号が読み込まれたｉノード番号に一致しない場合、コンピュータファイルがコピーされたと判断される。
【０００９】
好ましい第１の実施例において、記憶されたｉノード番号は、コンピュータファイルから読み込まれる。
【００１０】
第２の好ましい実施例において、読み込まれたｉノード番号は、暗号化キーを使用して暗号化され、かつ取り出されたｉノード番号との比較を可能にするために、この暗号化キーを用いて暗号化される。
【００１１】
第３の好ましい実施例において、読み込まれたｉノード番号は、暗号化キーを使用して暗号化される。そして、取り出されたｉノード番号は、比較を可能にするために、対応する解読キーを用いて解読される。
【００１２】
第４の好ましい実施例において、コンピュータファイルはソフトウェアアプリケーションのためのライセンスファイルである。そして、本方法はデバイスによってソフトウェアアプリケーションの実行中に実行される。ソフトウェアアプリケーションの実行は、ライセンスファイルがコピーされたという判定に応じて停止される。
【００１３】
第２の態様において、本発明は、コンピュータファイルの中に含まれるソフトウェアプログラムによってコンピュータファイルをコピーすることの検出を可能にする方法を実現する。コンピュータファイルと、取り出されかつ記憶されるｉノード番号とを関連づけることによって、コンピュータファイルが作成される。
【００１４】
好ましい第１の実施例において、ｉノード番号は、コンピュータファイルに記憶される。
【００１５】
第３の態様において、本発明は、ソフトウェアプログラムを含み、かつｉノード番号を有するコンピュータファイルがコピーされたか否かを検出するためのデバイスを実現する。デバイスは、プロセッサを有し、プロセッサは、ソフトウェアプログラムを実行する際、コンピュータファイルのｉノード番号を取り出し、記憶されたｉノード番号を読み込み、記憶されたｉノード番号は、コンピュータファイルがコピーされていないファイルシステムのｉノード番号となり、取り出されたｉノード番号、及び読み込まれたｉノード番号を比較し、取り出されたｉノード番号が読み込まれたｉノード番号に一致しない場合、コンピュータファイルがコピーされたと判断する。
【００１６】
好ましい第１の実施例において、プロセッサは、さらにソフトウェアアプリケーションを実行し、かつコンピュータファイルがコピーされたという判定に応じて、ソフトウェアアプリケーションを停止させる。
【００１７】
第４の態様において、本発明は、コンピュータファイルの中に含まれるソフトウェアプログラムによって、コンピュータファイルがコピーされたことの検出を可能にするためのデバイスを実現する。デバイスは、コンピュータファイルを作成する手順と、作成されたコンピュータファイルからｉノード番号を取り出す手順と、作成されたコンピュータファイルに取り出されたｉノード番号を記憶する手順とを実行するためのプロセッサを備えている。
【００１８】
第５の態様において、本発明は命令を記憶したソフトウェアプログラム製品を対象とする。そのソフトウェアが実行されるときに、プロセッサは第１の態様の方法を実行する。
【００１９】
第６の態様において、本発明は命令を記憶したソフトウェアプログラム製品を対象とする。そのソフトウェアが実行されるときに、プロセッサは第２の態様の方法を実行する。
【００２０】
添付の図面を参照して、本発明の好適な特徴を記載する。なお、開示は発明を限定することを目的とするものではない。
【図面の簡単な説明】
【００２１】
【図１】木構造を使用した従来技術ファイルシステムを例示した図である。
【図２】本発明の好ましい実施例に従ってソフトウェアインストールの方法を例示した図である。
【図３】本発明の好ましい実施例に従ってコピー制御の方法を例示した図である。
【図４】本発明によって方法のインプリメンテーションに適しているシステムを例示した図である。
【発明を実施するための形態】
【００２２】
［実施例の説明］
本発明についての主要な発明の概念は、コピー制御をインプリメントするために、ファイルシステムの一態様を使用することである。理解を容易にするために、ファイルシステムという短い用語を用いて説明する。ファイルシステムは、データの構成、及びアクセスを容易にするシステムであると捉えてもよい。例えばディスクのような、ディスクファイル・システムは、記憶装置の用途のためのファイルシステムである。ディスクファイル・システムには、ＦＡＴ、ＮＴＦＳ、ＨＦＳ、及びＵＦＳなど、多くのものが存在する。これらは、少数の例に過ぎない。これらの中で、ＦＡＴ、及びある程度ＮＴＦＳはＭｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）によって使用されているため、広範囲に普及している。
【００２３】
大部分のディスクファイル・システムに共通の特徴は木構造の使用である。その例を図１に示す。ファイルシステム１００は、多くのディレクトリ１１０、１２０、１３０、及び多くのファイル１４０、１４１を有する。ルートディレクトリ１１０は、木構造の最上位に存在する。ルートディレクトリ１１０は、３つのサブディレクトリ１２０を有する。サブディレクトリ１２０の中で、サブディレクトリ２、及びサブディレクトリ３は、多くのファイル１４０を有する。これに対して、サブディレクトリ１は、更なるサブディレクトリ１３０を有する。更なるサブディレクトリ１３０（サブディレクトリ４）は、ファイル１４１を有する。当業者は、これが例であり、たとえばディレクトリ階層に制限はないことを理解している。
【実施例】
【００２４】
ファイルシステム１００の各々のエンティティ（すなわち、ディレクトリ、サブディレクトリ、及びファイル）はノードと捉えてもよい（ｉノード１４２と呼ばれる）（１つのファイル１４１だけが例示されている）。各々のｉノードはメタデータに関連している。例えば所有に関する情報、アクセス権、及びタイプである。そして、これはｉノード番号によって特定される。これは、ファイルシステムにおいてユニークであり、エンティティのライフタイムにおいて不変である。換言すれば、ｉノード番号は、各々のエンティティに対して一定である。
【００２５】
本発明についての主たる発明の考え方は、したがって、コピー制御を実施するためにｉノード番号を使用することである。
【００２６】
図２は、本発明の好ましい実施例に従ってソフトウェアインストールの方法を例示する。ユーザにはソフトウェアをインストールするために権利があると仮定する。いかなる許可検査も、本発明の範囲に影響するものではない。ステップ２１０において、ユーザは、インストールアプリケーション（ソフトウェアのためのインストール・ウィザードと呼ばれている）を起動する。インストール・ウィザードは、ソフトウェア・ファイルをファイルシステムにコピーする２２０。これは、通常ハードディスクになされ、インストールに必要な従来技術のタスクを実行する。なお、このタスクは、本発明の範囲に影響を及ぼすものではない。
【００２７】
インストール・ウィザードはまた、ライセンスファイルと呼ぶファイルをファイルシステムに生成する。これは、好ましくはコピーされた（インストールされた）ソフトウェア・ファイルの少なくとも一部と同じディレクトリに生成されることが好ましい。なお、ソフトウェアアプリケーションにとって知ることができる場所であれば、これは、何処に生成されてもよい。インストール・ウィザードは、生成されたライセンスファイルのｉノード番号を取り出す２４０。そして、インストールされるソフトウェアプログラムによって既知のシークレットキーを使用してｉノード番号を暗号化する２５０。インストール・ウィザードは最後に、暗号化されたｉノード番号をライセンスファイルに記憶する２６０。そしてソフトウェアは、インストールされる。
【００２８】
ライセンスファイルは、必ずしもｉノード値を持つ（及びおそらく記憶する）ためだけのものではない。ライセンスファイルは、また、例えばコンピュータコード及び／又は他のデータを含んでもよい。
【００２９】
図３は、本発明の好ましい実施例に従ったコピー制御の方法を例示する。ステップ３１０において、ソフトウェアが開始される。ソフトウェアはそれからライセンスファイルを開く３２０。そのｉノード番号を取り出す３３０。そして、シークレットキーによってｉノード番号を暗号化する３４０。ソフトウェアは、それからライセンスファイルに記憶された暗号化された値を読み込み３５０、そして、暗号化されたｉノード番号と、読み込まれた暗号化された値とを比較する３６０。これらの値が異なる場合には、ソフトウェアの実行は中断される。逆に、値が同一の場合には、ソフトウェアの実行は継続される。同様に、ライセンスファイルがファイルシステムに存在しない場合、方法は３２０ですでに停止してもよい。当業者であれば、図２、及び図３に例示される方法のステップが方法の働きに影響を及ぼさずに、ある程度変更されてもよいことを理解する。例えば、ソフトウェア・ファイルがディレクトリＸ（ステップ２２０）へコピーされる前に、ライセンスファイルが生成されてもよい（ステップ２３０）。コピーするステップ（２２０）は、インストール・ウィザード（ステップ２１０）の実行開始の後であれば、実際にいかなる時期に実行されてもよい。さらに、図３で、読出ステップ（３５０）は、ソフトウェアの実行開始（３１０）、及び値の比較（ステップ３６０）の間のいかなる時点で実行されてもよい。
【００３０】
図３のコピー制御方式は、少なくとも一つの別の実施例を有することも理解される。この別の実施例は、暗号化の代わりに解読を使用する。しかし、一般的な考え方は同じである。別の実施例において、ステップ３１０−３３０は、本実施例のように実行される。その後、ステップ３５０（すなわちライセンスファイルからの暗号化された値の読み込み）が続く。しかしながら、暗号化された値は解読される。そして、元のｉノード番号が得られる。そして、それは取り出されたライセンスファイルのｉノード番号と比較される。当然、この別の実施例で、ソフトウェアは、インストール・ウィザードの暗号化キーに対応する解読キーにアクセスする。更なる変形例において、暗号化されたライセンスファイルのｉノード番号は、他の位置（例えばライセンスファイルではない更なるファイル）に記憶される。図４は、本発明による方法のインプリメンテーションに適しているシステムを例示する。システム４００は、コンピュータ４１０、及び記憶装置４２４を有する。これは、コンピュータ４１０の内部にあってもよい。コンピュータ４１０は、都合よくプロセッサ４２０、メモリ４２２、ネットワークインターフェース４２８、及び読み取り装置４２６を有する。この読み取り装置は、（インストールされていない）ソフトウェアアプリケーション及びインストール・ウィザードを記憶するＤＶＤ４３０のような、データ記憶からデータを読み込むためのものである。
【００３１】
ソフトウェアインストール（すなわち図３において例示される方法）の間、読み取り装置４２６は、インストール・ウィザードを、記憶媒体４３０から読み込み、プロセッサ４２０は、方法のステップを実行し、必要であれば他の装置（メモリ４２２、記憶４２４等）に、特定のタスクを実行するために命令する。
【００３２】
コピー制御（すなわち図４において例示される方法）の間、プロセッサ４２０は、方法のステップを実行し、必要に応じて他の装置（特に記憶装置４２４）に特定のタスクを遂行するよう命令する。ソフトウェアの暗号化キー（又は別の実施例においては、解読キー）は、いかなる適切な従来技術のソフトウェア保護技術（例えばコード・オブファスケイション（obfuscation））によって好適に保護されることは言うまでもない。これは、攻撃者が暗号化キーを回復することを難しくすることを目的とする。なお、この種の技術は、本発明の範囲に影響を及ぼすものではない。
【００３３】
特定のファイルが、２つの異なるファイルシステムで同じｉノード番号に関連づけられることは、現実的にあり得ない。このため、本発明は、無許可のコピーを確実に検出する高い確率のコピープロテクトを提供する。
【００３４】
本発明の方法は、標準のオペレーションを用いてインプリメントすることができる。すなわち、リードおよびライトである。このことは、アタッカーが妨害し得る特定のシステムコールを必要としないということを意味する。
【００３５】
したがって、本発明は、ソフトウェアアプリケーションのためのコピープロテクトの方法、及びデバイスを提供することができる。
【００３６】
明細書、及び必要に応じて請求項及び図面に開示された各々の特長は、独立に、又は組み合わせて提供され得る。ハードウエアによってインプリメントされるよう記載された特長は、ソフトウェアによってもインプリメントすることができる。この逆も同じである。請求項に記載された参照番号は、例示的にのみ利用されるものであり、請求項の技術的範囲を制限するためのものではない。
【図１】
2011138514.tif 000003
【図２】
2011138514.tif 000004
【図３】
2011138514.tif 000005
【図４】
2011138514.tif 000006
【外国語明細書】
2011138514000001.pdf