(57)【特許請求の範囲】
【請求項１】
ソフトウェアの使用認証を行う方法であって、前記ソフトウェアの使用認証の対象であるコンピュータが、
ユーザ認証を行うためのアクセスコードと、該アクセスコードの有効期間を示すアクセスコード寿命情報とを含む複数の情報からなるライセンス情報を所定の規則で暗号化してなるライセンスコードが記録されたライセンスファイルを参照し、当該記録されたライセンスコードから前記ライセンス情報を復号する手順と、
前記復号したライセンス情報が所定の無効値である情報を含むか否かを判定し、前記所定の無効値である情報を含まない場合に前記ソフトウェアが登録済みであると判定し、前記所定の無効値である情報を含む場合に前記ソフトウェアが未登録であると判定する手順と、を実行し、
前記ソフトウェアが未登録であれば、
前記復号したライセンス情報に含まれる前記アクセスコード寿命で示される有効期間で特定される有効期限を現在日時が過ぎていない場合に前記復号したライセンス情報に含まれる前記アクセスコードが有効であると判定し、前記有効期限を現在日時が過ぎている場合に前記アクセスコードが有効でないと判定し、前記アクセスコードが有効と判定され、かつ、前記アクセスコードに基づくユーザ認証が正当に行われたことを条件として、
乱数を発生して、その値をチェックコードとして設定すると共に、前記所定の無効値である情報を、前記所定の無効値ではない情報に設定する手順と、
前記復号したライセンス情報のうち前記所定の無効値でない情報を、前記チェックコードと共に前記所定の規則で暗号化し、この暗号化コードをライセンスコードとして前記ライセンスファイルに記録する手順と、
適宜なファイル名のチェック用ファイルを複数作成して、該複数のチェック用ファイルに、前記チェックコードと、チェック用ファイル間で互いに異なる所定のデータとを暗号化して記録する手順と、を含む登録手順を実行し、
前記ソフトウェアが登録済みであれば、
前記ライセンスファイルに記録されたライセンスコードを復号して得られたチェックコードと、前記複数のチェック用ファイルから復号したチェックコードとが所定の対応関係を有することを条件として、前記ソフトウェアの実行を許可すべきと判定し、許可すべきと判定されれば前記ソフトウェアの実行を許可する使用許可手順を実行することを特徴とするソフトウェア使用認証方法。
【請求項２】
請求項１記載のソフトウェア使用認証方法において、前記コンピュータが、
前記チェック用ファイルを、前記コンピュータの記憶装置内のランダムに指定された場所に格納することを特徴とする方法。
【請求項３】
請求項１又は２記載のソフトウェア使用認証方法において、
前記ライセンス情報は前記ソフトウェアの使用許可期限を表すライセンス期限情報を含み、
前記使用許可判定手順では、前記ライセンス期限情報に基づいて前記ソフトウェアの使用許可期限内であるか否かを判定し、使用許可期限内であることを条件として前記ソフトウェアの実行を許可すべきと判定することを特徴とする方法。
【請求項４】
請求項１乃至３のうち何れか１項記載のソフトウェア使用認証方法において、
前記登録手順では、さらに、前記コンピュータに固有のマシンコードを取得し、該取得したマシンコードを記録する手順を実行し、
前記使用許可判定手順では、前記記録されたマシンコードと、前記ソフトウェアの使用認証の対象であるコンピュータから取得したマシンコードとが一致することを条件として、前記ソフトウェアの実行を許可すべきと判定することを特徴とする方法。
【請求項５】
請求項１乃至４のうち何れか１項記載のソフトウェア使用認証方法において、前記ライセンス情報は、さらに、前記アクセスコードまたは前記ライセンスコードの生成時を示すライセンス生成時情報を含み、
前記登録手順では、前記コンピュータのシステム時計から現在時情報を取得して、前記復号したライセンス情報に含まれるライセンス生成時情報で示される生成時が前記取得した現在時情報で示される現在時よりも将来の日時であり、かつ、その差が所定のスレッシヨルド値を超えている場合に、前記システム時計が正しくないと判定し、そうでない場合に前記システム時計が正しいと判定し、正しいと判定した場合に、前記取得した現在時情報と前記アクセスコード寿命とに基づいて、前記アクセスコードが有効であるか否かを判定することを特徴とする方法。
【請求項６】
請求項３記載のソフトウェア使用認証方法において、前記ライセンス情報は、さらに、前記アクセスコードまたは前記ライセンスコードの生成時に関するライセンス生成時情報を含み、
前記使用許可判定手順では、前記コンピュータのシステム時計から現在時情報を取得して、該取得した現在時情報を記録する手順と、該現在時情報を記録する手順よりも前に、前記記録された現在時情報と、その時点で前記システム時計から取得した現在時情報との比較に基づいて、前記システム時計が正しいか否かを判定する手順とを実行し、前記システム時計が正しいと判定した場合に、前記システム時計から取得した現在時情報と前記ライセンス期限情報とに基づいて、前記ソフトウェアの使用許可期限内であるか否かを判定することを特徴とする方法。
【請求項７】
ソフトウェアの使用認証を行う方法であって、前記ソフトウェアの使用認証の対象であるコンピュータが、
ユーザ認証を行うためのアクセスコードを含む複数の情報からなるライセンス情報を所定の規則で暗号化してなるライセンスコードが記録されたライセンスファイルを参照し、当該記録されたライセンスコードから前記ライセンス情報を復号する手順と、
前記復号したライセンス情報が所定の無効値である情報を含むか否かを判定し、前記所定の無効値である情報を含まない場合に前記ソフトウェアが登録済みであると判定し、前記所定の無効値である情報を含む場合に前記ソフトウェアが未登録であると判定する手順と、を実行し、
前記ソフトウェアが未登録であれば、
前記復号したライセンス情報に含まれる前記アクセスコードに基づくユーザ認証が正当に行われたことを条件として、
乱数を発生して、その値をチェックコードとして設定すると共に、前記所定の無効値である情報を、前記所定の無効値ではない情報に設定する手順と、
前記復号したライセンス情報のうち前記所定の無効値でない情報を、前記チェックコードと共に前記所定の規則で暗号化し、この暗号化コードをライセンスコードとして前記ライセンスファイルに記録する手順と、
適宜なファイル名のチェック用ファイルを複数作成して、該複数のチェック用ファイルに、前記チェックコードと、チェック用ファイル間で互いに異なる所定のデータとを暗号化して記録する手順と、を含む登録手順を実行し、
前記ソフトウェアが登録済みであれば、
前記ライセンスファイルに記録されたライセンスコードを復号して得られたチェックコードと、前記複数のチェック用ファイルから復号したチェックコードとが所定の対応関係を有することを条件として、前記ソフトウェアの実行を許可すべきと判定し、許可すべきと判定されれば前記ソフトウェアの実行を許可する使用許可手順を実行することを特徴とするソフトウェア使用認証方法。
【請求項８】
請求項１乃至７のうち何れか１項記載のソフトウェア使用認証方法をコンピュータに実行させるプログラム。
【請求項９】
請求項８記載のプログラムを記録した記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ソフトウェアの使用認証を行う方法、プログラム、およびこのプログラムを記録した記録媒体に関する。本発明は、また、この方法で参照されるライセンスコードとして使用可能なデータおよびこのデータを記録した記録媒体にも関する。
【０００２】
【従来の技術】
従来より、ソフトウェア製品を正当な使用権限者（例えば購入者）以外の者が使用する等の不正使用を防止するため、シリアルナンバーを用いた手法によりユーザ認証を行うことが一般的となっている。この手法では、ソフトウェア供給者は、適宜な暗号化アルゴリズムによりシリアルナンバーを生成する。ユーザはソフトウェアのインストールの際にシリアルナンバーの入力を求められる。インストール用プログラムは入力されたシリアル番号を復号して、それが所定のメッセージと一致するかどうかを判定し、一致する場合に限りインストールを実行する。このような手法により、ソフトウェア供給者から正しいシリアルナンバーを通知されていないユーザがソフトウェアのインストールを行うことを防止できる。
【０００３】
【発明が解決しようとする課題】
しかし、いったんシリアルナンバーが生成されてユーザに渡されると、そのシリアルナンバーは無期限に有効である。このため、ソフトウェアのインストール台数が１台であるという条件で使用許諾を行った場合にも、ユーザは受取ったシリアル番号を用いて何台でもインストールできることになる。さらに、例えば、ユーザがシリアル番号を他人に教えると、その他人もソフトウェアをインストールして利用することが可能となってしまう。このように、従来のシリアルナンバーを用いた手法では、ユーザが使用許諾を受けた範囲を超えてソフトウェアを使用することを防止することは困難であった。
【０００４】
本発明は上記の点に鑑みてなされたものであり、ユーザが使用許諾を受けた範囲を超えてソフトウェアを不正に使用するのを禁止することが可能なソフトウェア使用認証方法、ソフトウェア使用認証プログラム、および、このプログラムを記録した記録媒体を提供することを目的とする。また、本発明は、ソフトウェア使用認証方法で参照されるライセンスコードとして使用可能なデータおよびこのデータを記録した記録媒体を提供することをも目的とする。
【０００５】
【課題を解決するための手段】
請求項１に記載された発明は、ソフトウェアの使用認証を行う方法であって、前記ソフトウェアの使用認証の対象であるコンピュータが、
ユーザ認証を行うためのアクセスコードと、該アクセスコードの有効期間を示すアクセスコード寿命情報とを含む複数の情報からなるライセンス情報を所定の規則で暗号化してなるライセンスコードが記録されたライセンスファイルを参照し、当該記録されたライセンスコードから前記ライセンス情報を復号する手順と、
前記復号したライセンス情報が所定の無効値である情報を含むか否かを判定し、前記所定の無効値である情報を含まない場合に前記ソフトウェアが登録済みであると判定し、前記所定の無効値である情報を含む場合に前記ソフトウェアが未登録であると判定する手順と、を実行し、
前記ソフトウェアが未登録であれば、
前記復号したライセンス情報に含まれる前記アクセスコード寿命で示される有効期間で特定される有効期限を現在日時が過ぎていない場合に前記復号したライセンス情報に含まれる前記アクセスコードが有効であると判定し、前記有効期限を現在日時が過ぎている場合に前記アクセスコードが有効でないと判定し、前記アクセスコードが有効と判定され、かつ、前記アクセスコードに基づくユーザ認証が正当に行われたことを条件として、
乱数を発生して、その値をチェックコードとして設定すると共に、前記所定の無効値である情報を、前記所定の無効値ではない情報に設定する手順と、
前記復号したライセンス情報のうち前記所定の無効値でない情報を、前記チェックコードと共に前記所定の規則で暗号化し、この暗号化コードをライセンスコードとして前記ライセンスファイルに記録する手順と、
適宜なファイル名のチェック用ファイルを複数作成して、該複数のチェック用ファイルに、前記チェックコードと、チェック用ファイル間で互いに異なる所定のデータとを暗号化して記録する手順と、を含む登録手順を実行し、
前記ソフトウェアが登録済みであれば、
前記ライセンスファイルに記録されたライセンスコードを復号して得られたチェックコードと、前記複数のチェック用ファイルから復号したチェックコードとが所定の対応関係を有することを条件として、前記ソフトウェアの実行を許可すべきと判定し、許可すべきと判定されれば前記ソフトウェアの実行を許可する使用許可手順を実行することを特徴とする。
【０００６】
請求項１記載の発明によれば、アクセスコードの有効期間を示すアクセスコード寿命に基づいてアクセスコードが有効と判定され、かつ、このアクセスコードに基づくユーザ認証が正当に行われたことを条件としてソフトウェアの登録処理が行われる。すなわち、アクセスコードの有効期間の経過後はソフトウェアの登録処理を行えないので、ユーザへ提供されたライセンスコードを用いて無期限にソフトウェアの登録が行われるのを防止できる。
また、ソフトウェアの登録手順では、発生した乱数の値に設定されたチェックコードがライセンス情報と共に暗号化されてライセンスファイルに記録されると共に、このチェックコードと互いに異なるデータとが暗号化されて複数のチェック用ファイルに記録される。そして、ソフトウェアの使用許可判定手順では、ライセンスファイルに記録されたチェックコードと、複数のチェック用ファイルに記録されたチェックコードが所定の対応関係を有することを条件にソフトウェアの実行を許可すべきと判定される。したがって、ライセンスファイルを用いてソフトウェア登録が行われると、その登録が行われたコンピュータでのみソフトウェアの実行が許可されることとなる。すなわち、ライセンスファイルを用いてソフトウェア登録を行った後、このライセンスファイルをソフトウェアと共に他のコンピュータへコピーしても、コピー先のコンピュータにはチェックコードが記録されたチェック用ファイルは存在せず、また、チェック用ファイルを偽造しようとしても、チェックコードは暗号化されているためユーザはその内容を知り得ないので、当該コピー先コンピュータでのソフトウェアの実行を禁止することができる。
【００１０】
また、請求項２に記載された発明は、請求項１記載のソフトウェア使用認証方法において、
前記チェック用ファイルを、前記コンピュータの記憶装置内のランダムに指定された場所に格納することを特徴とする。
【００１１】
請求項２記載の発明によれば、チェック用ファイルを見つけ難くして、ユーザがチェック用ファイルをコピーするのを困難なものとすることができる。
【００１３】
また、請求項３に記載された発明は、請求項１又は２記載のソフトウェア使用認証方法において、
前記ライセンス情報は前記ソフトウェアの使用許可期限を表すライセンス期限情報を含み、
前記使用許可判定手順では、前記ライセンス期限情報に基づいて前記ソフトウェアの使用許可期限内であるか否かを判定し、使用許可期限内であることを条件として前記ソフトウェアの実行を許可すべきと判定することを特徴とする。
【００１４】
請求項３記載の発明によれば、ライセンス期限情報に基づいてソフトウェアの使用可能期限を設定できる。
【００１５】
また、請求項４に記載された発明は、請求項１乃至３のうち何れか１項記載のソフトウェア使用認証方法において、
前記登録手順では、さらに、前記ソフトウェアの使用認証の対象であるコンピュータに固有のマシンコードを取得し、該取得したマシンコードを記録する手順を実行し、
前記使用許可判定手順では、前記記録されたマシンコードと、前記ソフトウェアの使用認証の対象であるコンピュータから取得したマシンコードとが一致することを条件として、前記ソフトウェアの実行を許可すべきと判定することを特徴とする。
【００１６】
また、請求項５に記載された発明は、請求項１乃至４のうち何れか１項記載のソフトウェア使用認証方法において、前記ライセンス情報は、さらに、前記アクセスコードまたは前記ライセンスコードの生成時を示すライセンス生成時情報を含み、
前記登録手順では、前記コンピュータのシステム時計から現在時情報を取得して、前記復号したライセンス情報に含まれるライセンス生成時情報で示される生成時が前記取得した現在時情報で示される現在時よりも将来の日時であり、かつ、その差が所定のスレッシヨルド値を超えている場合に、前記システム時計が正しくないと判定し、そうでない場合に前記システム時計が正しいと判定し、正しいと判定した場合に、前記取得した現在時情報と前記アクセスコード寿命とに基づいて、前記アクセスコードが有効であるか否かを判定することを特徴とする。
【００１７】
また、請求項６に記載された発明は、請求項３記載のソフトウェア使用認証方法において、前記ライセンス情報は、さらに、前記アクセスコードまたは前記ライセンスコードの生成時に関するライセンス生成時情報を含み、
前記使用許可判定手順では、前記コンピュータのシステム時計から現在時情報を取得して、該取得した現在時情報を記録する手順と、該現在時情報を記録する手順よりも前に、前記記録された現在時情報と、その時点で前記システム時計から取得した現在時情報との比較に基づいて、前記システム時計が正しいか否かを判定する手順とを実行し、前記システム時計が正しいと判定した場合に、前記システム時計から取得した現在時情報と前記ライセンス期限情報とに基づいて、前記ソフトウェアの使用許可期限内であるか否かを判定することを特徴とする。
【００１８】
また、請求項７に記載された発明は、ソフトウェアの使用認証を行う方法であって、前記ソフトウェアの使用認証の対象であるコンピュータが、
ユーザ認証を行うためのアクセスコードを含む複数の情報からなるライセンス情報を所定の規則で暗号化してなるライセンスコードが記録されたライセンスファイルを参照し、当該記録されたライセンスコードから前記ライセンス情報を復号する手順と、
前記復号したライセンス情報が所定の無効値である情報を含むか否かを判定し、前記所定の無効値である情報を含まない場合に前記ソフトウェアが登録済みであると判定し、前記所定の無効値である情報を含む場合に前記ソフトウェアが未登録であると判定する手順と、を実行し、
前記ソフトウェアが未登録であれば、
前記復号したライセンス情報に含まれる前記アクセスコードに基づくユーザ認証が正当に行われたことを条件として、
乱数を発生して、その値をチェックコードとして設定すると共に、前記所定の無効値である情報を、前記所定の無効値ではない情報に設定する手順と、
前記復号したライセンス情報のうち前記所定の無効値でない情報を、前記チェックコードと共に前記所定の規則で暗号化し、この暗号化コードをライセンスコードとして前記ライセンスファイルに記録する手順と、
適宜なファイル名のチェック用ファイルを複数作成して、該複数のチェック用ファイルに、前記チェックコードと、チェック用ファイル間で互いに異なる所定のデータとを暗号化して記録する手順と、を含む登録手順を実行し、
前記ソフトウェアが登録済みであれば、
前記ライセンスファイルに記録されたライセンスコードを復号して得られたチェックコードと、前記複数のチェック用ファイルから復号したチェックコードとが所定の対応関係を有することを条件として、前記ソフトウェアの実行を許可すべきと判定し、許可すべきと判定されれば前記ソフトウェアの実行を許可する使用許可手順を実行することを特徴とする。
【００１９】
また、請求項８に記載された発明は、請求項１乃至７のうち何れか１項記載のソフトウェア使用認証方法をコンピュータに実行させるプログラムに係るものであり、請求項９に記載された発明は、請求項８記載のプログラムを記録した記録媒体に係るものである。
【００２２】
【発明の実施の形態】
図１は、本発明の一実施形態における処理の概要を示す。図１に示すように、ソフトウェア供給者は、以下に示す情報を含むライセンス情報を所定の暗号キーＫ１を用いて暗号化することによりライセンスコードを生成する。
(1)アクセスコードＡＣ：ソフトウェアの使用を許諾しようとする各ユーザに対して発行されるコード（例えばユーザネームやシリアル番号等）である。
(2)コード生成日時ＡＣＴ：アクセスコードの生成日時である。ただし、ライセンスコードの生成日時としてもよい。
(3)アクセスコード寿命ＡＣＬ：アクセスコードＡＣの有効期間である。すなわち、上記したコード生成日時ＡＣＴからアクセスコード寿命ＡＣＬが経過するまではアクセスコードＡＣは有効であり、それ以後は無効である。アクセスコード寿命ＡＣＬは日時単位で指定してもよいし、日数単位で指定してもよい。また、アクセスコード寿命ＡＣＬをアクセスコードＡＣの有効期限日時（または日付）で指定してもよい。以下の説明では、アクセスコード寿命ＡＣＬはコード生成日時ＡＣＴからの有効期間長を日時単位で指定するものとする。
(4)ライセンス期限ＬＴ：アプリケーションソフトの使用可能期限である。アクセスコード寿命の場合と同様に、ライセンス期限ＬＴは、使用期限日時（または日付）で指定してもよいし、あるいは、例えばコード生成日時ＡＣＴからの期間長で指定してもよい。
(5)スレッシヨルド値ＴＨ：後述するように、ユーザコンピュータのシステム時計が変更されていないことを判定する際に用いられる基準値である。
(6)レジスターファイル名ＲｅｇＮａｍｅ１，ＲｅｇＮａｍｅ２、チェックコードＣＫ、マシンコードＭＩＤ：後述するようにアプリケーションソフトウェアの登録処理時に設定される項目であり、ライセンスコードの生成時点では、夫々、所定の無効値に設定される。
【００２３】
生成されたライセンスコードはファイルに記録され、このファイル（以下、ライセンスファイルという）がユーザへ適宜な手段（例えば、ネットワーク経由で、あるいは、ＣＤ−ＲＯＭ等の記録媒体を介して）提供される。ユーザは、受取ったライセンスファイルを所定のディレクトリ（例えばアプリケーションソフトウェアがインストールされたディレクトリ）に記録し、アプリケーションソフトウェアを起動する。アプリケーションソフトウェアはライセンス認証プログラムとアプリケーション本体プログラムとから構成されており、起動されると、先ずライセンス認証プログラムが実行される。
【００２４】
ライセンス認証プログラムの概要を説明すると、先ず、ライセンスコードからライセンス情報が復号されたうえで、ソフトウェアが登録済みであるか否かが判別される。そして、未登録であれば、アクセスコード寿命ＡＣＬと現在日時とに基づいてアクセスコードＡＣが有効か否かが判別され、有効であれば、ソフトウェアの登録が行われる。この登録処理では、ランダムに発生されたチェックコードＣＫがライセンスファイル、第１レジスターファイル、および第２レジスターファイルの３つのファイルに暗号化されて記録され、さらに、ユーザコンピュータに固有のマシンコードＭＩＤがライセンスファイルおよび第２レジスターファイルに暗号化されて記録される。
【００２５】
ソフトウェアが登録済みである場合、上記３つのファイルから復号されたチェックコードＣＫが全て一致し、かつ、第２レジスターファイルから復号されたマシンコードＭＩＤと、プログラム実行中のコンピュータシステムのマシンコードＭＩＤとが一致することを条件に、ソフトウェアの実行が許可される。
【００２６】
以下、図２乃至図４を参照して、ライセンス認証プログラムの処理の内容をより詳細に説明する。図２乃至４は、ライセンス認証プログラムの処理の内容を示すフローチャートである。
【００２７】
図２に示すように、先ず、ステップ１００において上記所定のディレクトリにライセンスファイルが存在するか否かが判別される。その結果、存在しなければ、その旨の表示が行われた後、処理は中止される。一方、ライセンスファイルが存在すれば、次にステップ１０２の処理が実行される。
【００２８】
ステップ１０２では、ライセンスファイルが読み込まれ、その内容であるライセンスコードから、上記暗号キーＫ１に対応する復号キーＫ２（暗号キーＫ１と同じ値であってもよい）を用いて、アクセスコードＡＣ、コード生成日時ＡＣＴ、アクセスコード寿命ＡＣＬ、スレッシヨルド値ＴＨ、レジスターファイル名ＲｅｇＮａｍｅ１，ＲｅｇＮａｍｅ２、チェックコードＣＫ、およびマシンコードＭＩＤが復号される。
【００２９】
ステップ１０４では、コード生成日時ＡＣＴと、ユーザコンピュータのシステム時計から取得されたシステム日時ＳＴとが比較され、コード生成日時ＡＣＴがシステム日時ＳＴよりも将来の日時であり、かつ、その差がスレッシヨルド値ＴＨを超えている（ＡＣＴ−ＳＴ＞ＴＨ）か否かが判別される。その結果、ＡＣＴ−ＳＴ＞ＴＨが成立する場合、アクセスコードＡＣがシステム日時ＳＴよりも将来に生成されたこととなって不合理である。この場合、システム時計から取得されたシステム日時ＳＴは正しくないと判断され、その旨の表示が行われた後、処理は中止される。一方、ステップ１０４でＡＣＴ−ＳＴ＞ＴＨが不成立であれば、次にステップ１０６の処理が実行される。
【００３０】
ステップ１０６では、レジスターファイル名ＲｅｇＮａｍｅ１，ＲｅｇＮａｍｅ２、チェックコードＣＫ、マシンコードＭＩＤの値が夫々無効値であるか否かが判別される。その結果、何れか１つでも無効値であれば、アプリケーションソフトウェアは未登録であると判断され、図３に示すソフトウェア登録処理が実行される。一方、何れも無効値でなければ、アプリケーションソフトウェアは登録済みであると判断され、図４に示すソフトウェア使用許可判定処理が実行される。
【００３１】
図３に示す如く、ソフトウェア登録処理では、先ずステップ１０８において、アクセスコード寿命ＡＣＬが、システム日時ＳＴとアクセスコード生成日時ＡＣＴとの差よりも大きいか否かが判別される。その結果、ＡＣＬ＜ＳＴ−ＡＣＴが成立する場合には、アクセスコードＡＣの有効期間を経過していることになるから、アクセスコードは無効であると判断されて、その旨の表示が行われた後、処理は中止される。一方、ＡＣＬ＜ＳＴ−ＡＣＴが不成立であれば、次にステップ１１０の処理が実行される。
【００３２】
ステップ１１０では、ユーザに対してユーザコードの入力が促され、それに応じて入力されたユーザコードが取得される。そして、ステップ１１２では、入力されたユーザコードがアクセスコードＡＣと一致するか否かが判別される。その結果、両者が一致しない場合は、入力されたユーザコードは正当なものではないと判断されて、その旨の表示が行われた後、処理は中止される。一方、入力されたユーザコードとアクセスコードＡＣとが一致する場合は、次にステップ１１４の処理が実行される。
【００３３】
ステップ１１４では、乱数が発生され、その値がチェックコードＣＫの値として設定される。
【００３４】
ステップ１１６では、ユーザコンピュータに固有のＩＤ（例えば、ウインドウズ等のＯＳのレジストリ情報から取得されるＩＤ値、ＣＰＵ内やＢＩＯＳ内に記録されているＩＤ値、ＩＰアドレス、ネットワークカードのＭＡＣアドレス等）が取得され、その値がマシンコードＭＩＤの値として設定される。
【００３５】
ステップ１１８では、システムファイルの名称と見分けが困難なファイル名（例えば、"sys155.dll"、"mem165.acm"等）がランダムに生成され、続くステップ１２０では、生成したファイル名が実存するシステムファイル名と一致しないかどうか判別される。その結果、実存するシステムファイル名と一致するならば、再びステップ１１８で再びファイル名が生成される。一方、ステップ１２０で生成したファイル名が実存するシステムファイル名に一致しなければ、次にステップ１２２の処理が実行される。
【００３６】
ステップ１２２では、レジスターファイル名ＲｅｇＮａｍｅ１が、上記ステップ１１８で生成されたファイル名に設定され、このファイル名ＲｅｇＮａｍｅ１の第１レジスターファイルが新規に作成される。
【００３７】
ステップ１２４では、上記ステップ１１４で値が設定されたチェックコードＣＫ、および、システム日時ＳＴが暗号キーＫ１で暗号化されて第１レジスターファイルに記録される。記録されたシステム日時ＳＴは、次回の実行時に、アプリケーションソフトウェアの前回使用日時ＬＴとして使用される。
【００３８】
ステップ１２８〜１３２では、上記ステップ１１８〜１２２と同様にして、システムファイルと見分けが困難で、かつ、実際には存在しないファイル名が生成されてレジスターファイル名ＲｅｇＮａｍｅ２の値として設定されると共に、このファイル名ＲｅｇＮａｍｅ２の第２レジスターファイルが新規に作成される。そして、ステップ１３４では、作成された第２レジスターファイルに、チェックコードＣＫおよびマシンコードＭＩＤが暗号キーＫ１で暗号化されて記録される。
【００３９】
ステップ１３６では、ライセンスコードを復号して得られたアクセスコード、ＡＣＬ、コード生成日、スレッシヨルド値と、上記のように値が設定されたレジスターファイル名ＲｅｇＮａｍｅ１，ＲｅｇＮａｍｅ２、チェックコードＣＫ、およびマシンコードＭＩＤとが、上記暗号化キーＫ１を用いて暗号化され、ライセンスコードとしてライセンスファイルに記録される。
以上でアプリケーションソフトウェアの登録処理は完了する。
【００４０】
なお、上記ステップ１２２，１３２で第１，第２レジスターファイルを作成する際、ランダムに指定した場所（すなわち、ディレクトリやフォルダ等）にこれらレジストリファイルを格納するようにしてもよい。この場合、ステップ１１８，１２０およびステップ１２８，１３０においてレジスターファイル名ＲｅｇＮａｍｅ１，ＲｅｇＮａｍｅ２をシステムファイルと見分けが困難であるように生成する必要はなく、同じ場所にある既存のファイル名と重複しないように適宜生成すればよい。
【００４１】
次に、図４を参照して、ソフトウェア使用判定処理について説明する。図４に示す如く、先ず、ステップ１４０において、ライセンスコードを復号して得られたファイル名ＲｅｇＮａｍｅ１，ＲｅｇＮａｍｅ２の第１レジスターファイルおよび第２レジスターファイルが共に存在するか否かが判別される。その結果、少なくとも一方のレジスターファイルが存在しない場合には、ソフトウェア登録処理は正常に完了していないと判断され、上記図３に示すソフトウェア登録処理が実行される。一方、両レジスターファイルが存在する場合は、次にステップ１４２の処理が実行される。
【００４２】
ステップ１４２では、第１レジスターファイルが読み込まれ、復号キーＫ２を用いて、チェックコードＣＫおよび前回使用日時ＬＵが復号される。
【００４３】
ステップ１４４では、システム日時ＳＴが前回使用日時ＬＵよりも過去であり、かつその差がスレッシヨルド値ＴＨより大きい（ＬＵ−ＳＴ＞ＴＨ）であるか否か判別される。その結果、ＬＵ−ＳＴ＞ＴＨが成立する場合は、前回ソフトウェアを使用したのが現在日時よりも将来であることとなって不合理である。この場合、システム時計が操作されることによりシステム日時ＳＴが変更されたと判断されて、その旨の表示が行われた後、処理は中止される。一方、ＬＵ−ＳＴ＞ＴＨが不成立であれば、次にステップ１４６の処理が実行される。
【００４４】
ステップ１４６では、第２レジスターファイルが読み込まれ、その内容から復号キーＫ２を用いてチェックコードＡＣおよびマシンコードＭＩＤが復号される。
【００４５】
ステップ１４８では、ライセンスファイルから復号されたチェックコードＣＫと、第１レジスターファイルから復号されたチェックコードＣＫと、第２レジスターファイルから復号されたチェックコードＣＫとが全て一致するか否かが判別される。その結果、３つのチェックコードＣＫのうち１つでも一致しないものがある場合は、当該ユーザコンピュータはソフトウェアの登録処理が正規に行われたシステムではないと判断されて、その旨の表示が行われた後、処理は中止される。一方、上記３つのチェックコードＣＫが全て一致する場合は、次にステップ１５０の処理が実行される。
【００４６】
ステップ１５０では、ライセンスファイルから復号されたマシンコードＭＩＤと、第２レジスターファイルから復号されたマシンコードＭＩＤと、当該ユーザコンピュータから取得されたマシンコードＭＩＤとが一致するか否かが判別される。その結果、これらのマシンコードＭＩＤのうち１つでも一致しないものがある場合は、当該ユーザコンピュータは登録処理が正規に行われたシステムではないと判断されて、その旨の表示が行われた後、処理は中止される。一方、全てのマシンコードＭＩＤが一致する場合は、次にステップ１５２の処理が実行される。
【００４７】
ステップ１５２では、システム日時ＳＴが、ライセンスコードから復号されたライセンス期間ＬＴ内であるか否かが判別される。その結果、ライセンス期間内でなければ、その旨の表示がなされて処理は中止される。一方、ライセンス期間内であれば、当該ユーザコンピュータのユーザにアプリケーションソフトの使用を許可してもよいと判断され、次にステップ１５４において、システム日時ＳＴがチェックコードＣＫと共に暗号キーＫ１で暗号化されて第１レジスターファイルに記録される。登録処理における上記ステップ１２６の場合と同様に、記録されたシステム日時は、次回の実行時に上記ステップ１４２においてソフトウェアの前回使用日時ＬＴとして使用される。そして、続くステップ１５６において、アプリケーションソフトのアプリケーション本体プログラムが起動される。
【００４８】
以上説明したように、本実施形態によれば、アクセスコード寿命ＡＣＬに基づいてアクセスコードＡＣが有効か否かが判定され（ステップ１０８）、アクセスコードＡＣが有効である場合に、ユーザにより入力されたユーザコードとアクセスコードＡＣとが一致するか否かが判定されて（ステップ１１２）、両者が一致する場合に限り、以後のソフトウェア登録処理が実行される。すなわち、アクセスコードの有効期間の経過後はソフトウェアの登録処理は禁止される。したがって、本実施形態によれば、ユーザへ提供されたライセンスファイルを用いて無期限にソフトウェアの登録が行われるのを防止でき、例えば、ライセンスファイルが第三者に渡されてソフトウェア登録が無制限に行われるといったことも効果的に防止することができる。
【００４９】
また、ライセンスコードにはライセンス期限ＬＴが含まれており、ライセンス期限ＬＴが経過している場合には、ソフトウェアの実行が禁止される（ステップ１５２）ので、ライセンス期限ＬＴによりソフトウェアの使用可能期限を設定することもできる。
【００５０】
また、ソフトウェア登録処理において、ランダムに発生したチェックコードＣＫがライセンスファイルに記録される（ステップ１３６）と共に、このチェックコードが第１レジスターファイルおよび第２レジスターファイルにも記録される（ステップ１２４，１３４）。そして、使用許可判定処理では、これら３つのファイルに記録されたチェックコードＣＫが全て一致する場合に限りソフトウェアの実行が許可される（ステップ１４８）。したがって、ライセンスファイルを用いてソフトウェア登録を行った後、このライセンスファイルをソフトウェアと共に他のコンピュータへコピーしても、コピー先のコンピュータにはチェックコードが記録された第１レジスターファイルおよび第２レジスターファイルは存在せず、また、これらのレジスターファイルを偽造しようとしても、チェックコードＣＫは暗号化されているためユーザはその値を知り得ないので、当該コピー先コンピュータでのソフトウェアの実行を禁止することができる。
【００５１】
また、上記の説明からわかるように、第１レジスターファイルと第２レジスターファイルとでは、その中に記録されるデータが異なっているので、万一、何れか一方のレジスターファイルが第三者の手に渡ったとしても、そのレジスターファイルをコピーして他方のレジスターファイルを作成することは不可能となっている。
【００５２】
また、レジスターファイル名ＲｅｇＮａｍｅ１，ＲｅｇＮａｍｅ２は、システムファイルと区別が困難に設定される（あるいは、レジスターファイルがランダムに指定された場所に格納される）ので、ユーザが各レジスターファイルを探し出して各レジスターファイルを他のコンピュータへコピーすること自体も難しくなっている。
【００５３】
さらに、ソフトウェア登録処理では、コンピュータに固有のマシンコードＭＩＤをライセンスファイルおよび第２レジスターファイルに記録し（ステップ１３４，１３６）、使用許可判定処理において、これらファイルに記録されたマシンコードＭＩＤと、コンピュータから取得されたマシンコードとが一致しない場合には、ソフトウェアの使用が禁止される（ステップ１５０）ので、ライセンスファイルおよびソフトウェア自体を他のコンピュータにコピーして当該ソフトウェアが不当に使用されるのをさらに確実に防止することができる。
【００５４】
このように、本実施形態では、ファイルコピーによるソフトウェアの使用を不可能とする多重の仕組みを用いているので、ライセンス期間内であっても、使用許諾の範囲を超えたソフトウェアの不正使用を効果的に防止することが可能となっている。
【００５５】
なお、上記実施形態では、２つのレジスターファイルを用いて、第１レジスターファイルにはチェックコードＣＫおよび前記利用日時ＬＵを記録し、第２レジスターファイルにはチェックコードＣＫおよびマシンコードＭＩＤを記録することとしたが、各レジスターファイルに記録するデータはこれらに限らず、他のデータを記録するようにしてもよい。また、レジスターファイルの個数は２つに限らず、１つであってもよいし、３つ以上であってもよい。ただし、ソフトウェアの不正使用を効果的に防止するうえでは、レジスターファイルの個数は多い方が好ましく、また、それらレジスターファイルに記録するデータの内容を互いに異ならせることが好ましい。なお、このレジスターファイルが特許請求の範囲に記載したチェック用ファイルに相当する。
【００５６】
また、上記実施形態では、ランダムに発生したコードをそのままチェックコードＣＫとして用い、ライセンスファイルおよび各レジスターファイルには同じ値のチェックコードを記録するものとした。しかしながら、これに限らず、ランダムに発生したコードに所定の演算を施して得られたコードをチェックコードＣＫとして用い、その際、各ファイルに記録するチェックコードＣＫを互いに異なる演算で求めるようにしてよい。この場合には、３つのファイルには異なる値のチェックコードＣＫが記録されることとなるが、ステップ１４８における判定処理では、これら３つのチェックコードＣＫが、夫々の演算規則に応じた所定の対応関係を有するかどうかを判定すればよい。
【００５７】
また、上記実施形態では、第１レジスターファイルおよび第２レジスターファイルに記録するデータをライセンスファイルと同じ暗号キーＫ１で暗号化することとしたが、ファイル毎に異なる暗号キーで暗号化してもよい。
【００５８】
【発明の効果】
以上説明したように、本発明によれば、アクセスコードの有効期間を設定することで、ユーザへ提供されたライセンスコードを用いて無期限にソフトウェアの登録が行われるのを防止することができる。
【００５９】
また、ソフトウェア登録手順で記録したチェックコードを、使用許可手順において検証することにより、ライセンスファイルを用いてソフトウェア登録を行った後、このライセンスファイルをソフトウェアと共に他のコンピュータへコピーした場合にも、当該コピー先のコンピュータでのソフトウェアの実行を禁止することができる。
【００６０】
また、ライセンスファイルにライセンス期限情報を含めて記録することで、ソフトウェアの使用可能期限を設定することができる。
【００６１】
また、登録手順でコンピュータに固有のマシンコードを記録し、使用許可判定手順では、記録されたマシンコードと、コンピュータから取得したマシンコードとを照合することで、ライセンスファイルおよびソフトウェア自体を他のコンピュータにコピーして当該ソフトウェアが不当に使用されるのをさらに確実に防止することができる。
【図面の簡単な説明】
【図１】本発明の一実施形態における処理の概要を示す図である。
【図２】本実施形態においてアプリケーションソフトウェアの起動時に実行される処理の流れを示すフローチャートである。
【図３】本実施形態において、ソフトウェアの登録処理を行うルーチンのフローチャートである。
【図４】本実施形態において、ソフトウェアの使用許可判定処理を行うルーチンのフローチャートである。
【符号の説明】
ＡＣ    アクセスコード
ＡＣＴ  コード生成日時
ＡＣＬ  アクセスコード寿命
ＬＴ    ライセンス期限
ＲｅｇＮａｍｅ１，ＲｅｇＮａｍｅ２  レジスターファイル名
ＣＫ    チェックコード
ＭＩＤ  マシンコード
【図１】
0004194772.tif 000002
【図２】
0004194772.tif 000003
【図３】
0004194772.tif 000004
【図４】
0004194772.tif 000005