(57)【特許請求の範囲】
【請求項１】
ライセンス移動申請者が、ライセンス移動元のコンピュータのハードウェア固有情報を取得するステップと、
前記ライセンス移動元のコンピュータが、当該ライセンス移動元のコンピュータに与えられたライセンスコードを記憶するライセンスコードテーブルから移動対象のライセンスコードを削除するステップと、
前記ライセンス移動元のコンピュータが、前記削除したライセンスコードを論理演算および暗号化してライセンス移動用コードを生成するステップと、
前記ライセンス移動申請者が、ライセンス移動先のコンピュータのハードウェア固有情報を取得するステップと、
ライセンス発行者が、前記ライセンス移動申請者から、前記取得したライセンス移動元コンピュータのハードウェア固有情報および前記ライセンス移動先のコンピュータのハードウェア固有情報と前記ライセンス移動元のコンピュータで生成されたライセンス移動用コードとが提出されたのを受けて、前記ライセンス移動元のコンピュータのハードウェア固有情報および前記ライセンス移動用コードが正当なものであると判定した場合に、前記ライセンス発行者が、ライセンス生成ソフトウェアを利用して、前記取得したライセンス移動先のコンピュータのハードウェア固有情報およびライセンス移動するアプリケーション識別情報を論理演算および暗号化して新ライセンスコードを生成するステップと、
前記ライセンス移動申請者が、前記生成した新ライセンスコードを前記ライセンス移動先のコンピュータのライセンスコードテーブルへ登録するステップと、
を具備したことを特徴とするソフトウェアプロテクト方法。
【請求項２】
前記登録はメールを介して行うことを特徴とする請求項１記載のソフトウェアプロテクト方法。
【請求項３】
前記ライセンス移動元のコンピュータのライセンスコードテーブルに登録されているライセンスコードは、前記ライセンス移動元のコンピュータのハードウェア固有情報及び実行されるアプリケーションプログラムの固有情報であるアプリケーション識別情報を論理演算および暗号化して作成されたものであることを特徴とする請求項１記載のソフトウェアプロテクト方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータシステム等のソフトウェアの不正使用を未然に防止するソフトウェアプロテクト方法に関するものである。
【背景技術】
【０００２】
コンピュータシステムにおいて、ソフトウェアの不正コピーを防止するソフトウェアプロテクト方法には、ハードウェア方式とソフトウェア方式がある。
【０００３】
ハードウェア方式は、コンピュータ本体のＵＳＢコネクタやプリンタコネクタにプロテクト用装置を接続して実行プログラムから適時監視する方式である。このハードウェア方式では、対応するプロテクト用装置が接続されている場合は動作が続行され、接続されていない場合は動作が中断される。
【０００４】
一方、ソフトウェア方式は、あらかじめメモリの特定位置に登録されたプロテクト用コードを実行プログラムが適時監視する方式である。このソフトウェア方式では、この対応するプロテクト用コードが登録されている場合は動作が続行され、登録されていない場合には動作が中断される。
【０００５】
なお、プロテクト用コードは、実行プログラムを含むソフトウェアをインストールする際に登録するのが一般的である（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平７−３２５７１２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかし、ハードウェア方式の場合は、プロテクト用装置が必要になるためソフトウェアの販売価格が上がる欠点があった。
【０００８】
また、ソフトウェア方式の場合は、ライセンス契約を無視するなど悪意によれば不正コピーが可能であるので、複数台のコンピュータへのソフトウェアのインストールと実行可能となってしまうという欠点があった。
【０００９】
さらに、両方式ともコンパイラで生成した実行ファイルに対するもので、事務用コンピュータで使用されるインタプリタで実行するソースプログラムについてはプロテクトをかける方法がなかった。
【００１０】
本発明は、上記の点に鑑みてなされたもので、その目的は、従来のハードウェア方式及びソフトウェア方式の欠点を解消し、しかも事務用コンピュータで使用されるプログラムのプロテクトをかけることができるソフトウェアプロテクト方法を提供するものである。
【課題を解決するための手段】
【００１１】
請求項１記載の発明は、ライセンス移動申請者が、ライセンス移動元のコンピュータのハードウェア固有情報を取得するステップと、前記ライセンス移動元のコンピュータが、当該ライセンス移動元のコンピュータに与えられたライセンスコードを記憶するライセンスコードテーブルから移動対象のライセンスコードを削除するステップと、前記ライセンス移動元のコンピュータが、前記削除したライセンスコードを論理演算および暗号化してライセンス移動用コードを生成するステップと、前記ライセンス移動申請者が、ライセンス移動先のコンピュータのハードウェア固有情報を取得するステップと、ライセンス発行者が、前記ライセンス移動申請者から、前記取得したライセンス移動元コンピュータのハードウェア固有情報および前記ライセンス移動先のコンピュータのハードウェア固有情報と前記ライセンス移動元のコンピュータで生成されたライセンス移動用コードとが提出されたのを受けて、前記ライセンス移動元のコンピュータのハードウェア固有情報および前記ライセンス移動用コードが正当なものであると判定した場合に、前記ライセンス発行者が、ライセンス生成ソフトウェアを利用して、前記取得したライセンス移動先のコンピュータのハードウェア固有情報およびライセンス移動するアプリケーション識別情報を論理演算および暗号化して新ライセンスコードを生成するステップと、前記ライセンス移動申請者が、前記生成した新ライセンスコードを前記ライセンス移動先のコンピュータのライセンスコードテーブルへ登録するステップと、を具備したことを特徴とする。
【発明の効果】
【００１２】
以上説明したように本発明によれば、ハードウェア固有情報に基づいて作成されたライセンサコードによりライセンス判定が行われるので、ライセンス登録したコンピュータに限りソフトウェアを動作可能とすることができる。これにより、ライセンスをコンピュータ単位で管理することができる。
【００１３】
また、実行対象となるコンピュータを変更する場合にライセンス移動を行い、その際にライセンス削除と合わせてライセンス移動用コードを利用することで、移動元コンピュータでのライセンス登録の確実な削除と、他のコンピュータへの不正コピーを防止することができる。
【００１４】
さらに、特権者だけがアプリケーション識別情報をプログラムファイルのヘッダ部等に格納でき、特権者以外はソースプログラムの編集ソフト（ソースエディタ）を使用してもこの識別の参照と変更をできないようにしたので、インタプリタ型プログラム言語で記述するソフトウェアへのプロテクト適用が可能になる。
【図面の簡単な説明】
【００１５】
【図１】本発明の一実施の形態に係るソフトウェアプロテクト方法が採用された事務コンピュータのシステム構成図。
【図２】同実施の形態に係るアプリケーション識別情報書込みを示す図。
【図３】同実施の形態に係るライセンスコード生成を示す図。
【図４】同実施の形態の動作を説明するためのフローチャート。
【図５】同実施の形態に係るライセンスコードの発行と登録手順例を示す図。
【図６】同実施の形態に係るライセンスコードの移動と登録手順例を示す図
【発明を実施するための形態】
【００１６】
以下図面を参照して本発明の一実施の形態について説明する。
【００１７】
図１を参照して本ソフトウェアプロテクト方法が実施される例えば事務コンピュータのシステム構成について説明する。
【００１８】
図１において、１は事務コンピュータを統括して制御するための制御部である。この制御部１には、ライセンサを管理するライセンス管理部２、プロテクトを検査するプロテクト検査部３、プログラムを実行するプログラム実行部４、各種データを入力する入力部５、各種データを表示する表示部が接続される。
【００１９】
ライセンス管理部２には、ライセンスコードを記憶するライセンスコードテーブル７、例えばハードディスク装置のシリアル番号であるハードウェア固有情報を記憶する記憶部８が接続される。
【００２０】
また、プロテクト検査部３には、ライセンスコードテーブル７、記憶部８及びプログラムファイル１〜ｎが格納されるプログラムファイル９が接続される。
【００２１】
このプログラムファイル９に格納されるプログラムファイル１〜ｎは適宜プログラム実行部４に読み出されて実行される。
【００２２】
なお、１０は印字部、１１はインターネットに接続されるインターフェイスである。
【００２３】
次に、本発明に係るソフトウェアプロテクト方法の動作について図４のフローチャートを参照して説明する。
【００２４】
まず、初期化処理が行われる（ステップＳ１）。つまり、制御部１は各部２〜６の初期化を行う。
【００２５】
次に、表示部６に処理の選択メニュー画面が表示される（ステップＳ２）。この選択項目にはプログラム実行、ライセンス管理、終了などがある。
【００２６】
そして、入力部５から操作者より選択された選択項目を受け付けられる（ステップＳ３）。
【００２７】
ここで、プログラム実行が選択された場合にはステップＳ４へ、ライセンス管理が選択された場合にはステップＳ１１へ、終了が選択された場合には、ステップＳ１７へ処理が進む。
【００２８】
以下、プログラム実行が選択された場合の処理について説明する。まず、プロテクト検査部３は実行対象のプログラムファイル９に格納されたアプリケーション識別情報を読み出して取得する（ステップＳ４）。ここで、アプリケーション識別情報とは、図２に示すように、アプリケーションソフトウェア開発時に識別情報書込みソフト１０を利用して、プログラムファイルのたとえばヘッダ部に格納した情報であり、ここに格納した情報はソースコードの編集ソフト（エディタ）では参照と変更ができないようになっている。
【００２９】
次に、プロテクト検査部３はハードウェア固有情報８を読み出して取得する（ステップＳ５）。ここで、ハードウェア固有情報の例としては、ハードウェア装置のシリアル番号などがある。
【００３０】
さらに、プロテクト検査部３はアプリーション識別情報とハードウェア固有情報よりライセンスコードを算出する（ステップＳ６）。
【００３１】
さらに、プロテクト検査部３はライセンスコードテーブル７を参照し、算出したライセンスコードと一致するコードが存在するか調べる（ステップＳ７）。そして、プロテクト検査部３はライセンス登録の判定を行う（ステップＳ８）。
【００３２】
このステップＳ８の判定で、算出したライセンスコードと一致するコードがライセンスコードテーブル７にある場合は、ステップＳ９へ処理が進む。一方、一致するコードがなかった場合はステップＳ１０へ処理が進む。
【００３３】
ステップＳ９において、プログラム実行部４は操作者が選択画面で選択したプログラムについて対応するプログラムファイル群９よりプログラムを読み出して実行する。そして、そのプログラム実行後はステップＳ２の選択画面表示へ処理が進む。
【００３４】
一方、ステップＳ１０においては、表示部６にライセンスコードが未登録である旨の警告メッセージ画面が表示される。そして、ステップＳ２の選択画面表示へ処理が進む。
【００３５】
前述したステップＳ３の選択でライセンス管理が選択された場合には、表示部６にはソフトウェアライセンス管理に関する処理の選択画面が表示される（ステップＳ１１）。ここで、選択項目には、ハードウェア固有情報の取得、ライセンスコード登録、ライセンス移動などがある。
【００３６】
そして、入力部５において操作者より選択入力を受け付けられる（ステップＳ１２）。このステップＳ１２の選択で、ハードウェア固有情報の取得が選択された場合にはステップＳ１３へ、ライセンスコード登録が選択された場合にはステップＳ１４へ、ライセンス移動が選択された場合にはステップＳ１５へ処理が進む。
【００３７】
ここで、図５及び図６を参照してソフトウェアライセンスの発行と登録手順の流れを説明する。ライセンス発行と登録手順は、ライセンス新規登録時とライセンス移動時で異なる。
【００３８】
まず、第５図を参照してライセンス新規登録時の手順を説明する。ライセンス発行には、ライセンス購入申請者とライセンス発行者の二者が存在する。まず、ライセンス購入申請者は、ソフトウェアを実行するコンピュータのハードウェア固有情報を取得する（ステップＳ２１）。これは、図４のステップＳ１３でライセンス管理部２が取得することになる。
【００３９】
そして、ライセンス発行者に対してアプリケーションソフトウェアのライセンス購入申請を行う（ステップＳ２２）。このとき、ハードウェア固有情報も提出する。ライセンス発行者は、ライセンス購入申請を受け付けた後、ハードウェア固有情報と購入対象アプリケーション識別情報を論理演算、暗号化してライセンスコードを作成する（ステップＳ２３）。このとき、ライセンスコードの作成には、図３に示すライセンス生成ソフトウェア２０を利用する。そして、申請者へライセンスコードを送付する（ステップＳ２４）。そして、申請者は、発行者よりライセンスコードを受け取り（ステップＳ２５）、対象コンピュータへライセンスコードを登録する（ステップＳ２６）。その際、図４のステップＳ１４でライセンス管理部２がライセンステーブル７へ登録することになる。
【００４０】
次に、図６を参照してライセンス移動時の手順を説明する。まず、ライセンス移動申請者はライセンス移動元のコンピュータのハードウェア固有情報を取得する（ステップＳ３１）。その際、ハードウェア固有情報は図４のステップＳ１３でライセンス管理部２が取得することになる。そして、ライセンス移動元のコンピュータにおいてライセンスコードの登録を削除する（ステップＳ３２）。そして、ライセンス削除に伴い、ライセンス移動用コードが作成される。その際、ライセンスの削除は図４のステップＳ１５でライセンス管理部２がライセンステーブル７より対象ライセンスコードを削除することにより行われる。移動用コードの作成は図４のステップＳ１６でライセンス管理部２が削除したライセンスコードを論理演算、暗号化して作成する。そして、ライセンス移動先のコンピュータのハードウェア固有情報を取得する（ステップＳ３３）。そして、ライセンス発行者に対してアプリケーションソフトウェアのライセンス移動申請をする（ステップＳ３４）。このとき、新旧ハードウェア固有情報とライセンス移動用コードも提出する。ライセンス発行者は、ライセンス移動申請を受け付けた後、移動元ハードウェア固有情報とライセンス移動用コードよりライセンスの正当性を判定する（ステップＳ３５）。ここで、正当と判定した場合は、新ライセンスコードを発行する。この場合、提出された新しいハードウェア固有情報と移動対象アプリケーション識別情報を論理演算、暗号化して新ライセンスコードを生成する（ステップＳ３６）。このとき、ライセンスコードの作成には、図３に示すライセンス生成ソフトウェア２０を利用する。そして、申請者へライセンスコードを送付する（ステップＳ３７）。この送付はインターネットを介したメールや、ＦＡＸ等で行われる。
【００４１】
そして、申請者は、発行者よりライセンスコードを受け取り（ステップＳ３８）、移動先コンピュータへライセンスコードを登録する（ステップＳ３９）。その際、図４のステップＳ１４でライセンス管理部２がライセンステーブル７へ登録することになる。
【００４２】
最後に、図４のステップＳ３で終了が選択された場合、制御部１が各部２〜６の終了処理を行って処理は終了する（ステップＳ１７）。
【００４３】
以上のように、本発明によれば、ソフトウェアのライセンス登録、ライセンス移動、そしてプログラム起動時のライセンス判定は次のように行われる。
【００４４】
まず、ライセンス登録手順としては、ライセンス購入申請者がライセンス発行者に対しアプリケーションソフトウェアの購入を申請をする。このとき、ソフトウェアを実行するコンピュータのハードウェア固有情報を取得して提出する。ライセンス発行者は購入対象アプリケーションの識別情報とハードウェア固有情報を論理演算、暗号化してライセンスコードを作成して購入申請者へ送付する。購入申請者はそのライセンスコードをコンピュータへ登録する。
【００４５】
次に、ソフトウェアの実行権を他のコンピュータへ移す際、ライセンス移動手順としては、ライセンス移動申請者がライセンス発行者に対してアプリケーションソフトウェアのライセンス移動を申請する。このとき、移動元と移動先のコンピュータのハードウェアの固有情報と、ライセンス移動用コードを提出する。ここで、ライセンス移動用コードは移動元コンピュータでライセンス登録を削除したとき生成されるコードである。ライセンス発行者は移動元コンピュータのハードウェア固有情報とライセンス移動用コードよりライセンスの正当性を判定し、正当である場合は、移動対象アプリケーションの識別情報と移動先コンピュータのハードウェア固有情報を論理演算、暗号化して新ライセンスコードを作成して移動申請者へ送付する。移動申請者はその新ライセンスコードをコンピュータへ登録する。
【００４６】
次に、プログラム起動時のライセンス判定は、プログラム起動前にライセンス検査手段が、プログラムファイルに格納されているアプリケーション識別情報と、ハードウェア固有情報と、コンピュータに登録されたライセンスコードより、ライセンスの正当性を判定する。
【００４７】
ここで、アプリケーション識別情報は、アプリケーションプログラムごとに用意する情報で、プログラム開発時に特権者がプログラムファイルに格納する。また、特権者以外がソースプログラムを変更しても識別情報は変更されないこととする。
【００４８】
ライセンス判定の結果、正当な場合はプログラムを起動し、正当でない場合はプログラム起動を中止する。
【００４９】
なお、上記実施の形態では事務コンピュータにソフトウェアプロテクト方法が採用された例を示したが、インタプリタ型のプログラム言語をアプリケーションプログラムに使用しているコンピュータであれば事務コンピュータに限らず他のコンピュータでも良い。
【符号の説明】
【００５０】
１…制御部、２…ライセンス管理部、３…プロテクト検査部、４…プログラム実行部、７…ライセンスコードテーブル、８…記憶部、９…プログラムファイル。
【図１】
0005473146.tif 000002
【図２】
0005473146.tif 000003
【図３】
0005473146.tif 000004
【図４】
0005473146.tif 000005
【図５】
0005473146.tif 000006
【図６】
0005473146.tif 000007