(57)【要約】【課題】コンピュータプログラムについて、その使用数量に応じてライセンスを付与できるライセンス付与システム、およびライセンス付与方法を提供する。【解決手段】コンピュータ１とデータを授受できるプロテクトドングル３であって、コンピュータ１に固有の識別符号から所定の演算方法で生成した符号を記憶するライセンス情報記憶部３２と、所定のプログラム２をコンピュータ１で実行するときに、プログラム２の利用可能な使用数量を定めるデータを記憶する利用可能数量記憶部３３と、を備え、コンピュータ１からの要求に応答して、ライセンス情報および利用可能な使用数量を定めるデータをコンピュータ１に送信し、コンピュータ１がプログラム２を実行したのちの、利用可能な使用数量を定めるデータを、コンピュータ１から受信して利用可能数量記憶部３３に記憶する。【選択図】図１
2010033322.tif 000002
【特許請求の範囲】
【請求項１】
データをコンピュータと授受できるプロテクトドングルであって、
あるコンピュータに固有の識別符号から所定の演算方法で生成した符号であるライセンス情報と、
所定のプログラムを前記コンピュータで実行するときに、該プログラムの利用可能な使用数量を定めるデータと、
を記憶し、
前記コンピュータからの要求に応答して、前記ライセンス情報および前記利用可能な使用数量を定めるデータを該コンピュータに送信し、
前記コンピュータが前記プログラムを実行したのちの、利用可能な使用数量を定めるデータを、前記コンピュータから受信して記憶する、
ことを特徴とするプロテクトドングル。
【請求項２】
前記使用数量は、前記プログラムの入力データ、計算途中データもしくは出力データ、またはそれらの組み合わせについて、所定の単位で計数した値を含むことを特徴とする請求項１に記載のプロテクトドングル。
【請求項３】
前記プログラムを実行するために利用できるハードウェア資源の限度を規定するデータを記憶し、
前記コンピュータからの要求に応答して、前記ハードウェア資源の限度を規定する情報のデータを該コンピュータに送信する、
ことを特徴とする請求項１または２に記載のプロテクトドングル。
【請求項４】
前記ハードウェア資源の限度を規定するデータは、演算装置の個数および／または処理能力、メモリ容量もしくはグリッドコンピューティングのグリッド数、またはそれらの組み合わせの上限を含むことを特徴とする請求項３に記載のプロテクトドングル。
【請求項５】
請求項１ないし４のいずれか１項に記載のプロテクトドングルと、
前記プロテクトドングルとデータを授受できるコンピュータと、
前記コンピュータ上で実行可能な所定のプログラムと、
を備え、
前記所定のプログラムを前記コンピュータで実行するときに、前記プロテクトドングルに記憶されている前記ライセンス情報と、前記プログラムをコンピュータで実行するときに該プログラムの利用可能な使用数量を定めるデータとを、前記プロテクトドングルから入力し、
前記ライセンス情報から所定の演算方法で復号したデータが、前記コンピュータに固有の識別符号と整合して、かつ、前記利用可能な使用数量が残存する場合に、前記プログラムの処理を実行し、
前記プログラムを実行したのちの、利用可能な使用数量に応じた値を、新たな利用可能な使用数量として前記プロテクトドングルに記憶し、
前記ライセンス情報から前記所定の演算方法で復号したデータが、前記コンピュータに固有の識別符号と整合しない場合、または、前記利用可能な使用数量が残存しない場合に、前記プログラムの実行を制限する、
ことを特徴とするライセンス付与システム。
【請求項６】
前記使用数量は、前記プログラムの入力データ、計算途中データもしくは出力データ、またはそれらの組み合わせについて、所定の単位で計数した値を含み、
前記コンピュータは、前記利用可能な使用数量のうち、いずれかが残存しない場合に、前記プログラムの実行を制限する、
ことを特徴とする請求項５に記載のライセンス付与システム。
【請求項７】
請求項３または４に記載のプロテクトドングルを備え、
前記コンピュータで前記プログラムを実行するときに、前記プロテクトドングルに記憶されているハードウェア資源の限度を規定する情報のデータを、前記プロテクトドングルから入力し、
前記プログラムは、前記プロテクトドングルから入力した前記ハードウェア資源の限度の範囲で、前記コンピュータの資源を用いる、
ことを特徴とする請求項５または６に記載のライセンス付与システム。
【請求項８】
前記ハードウェア資源の限度を規定するデータは、演算装置の個数および／または処理能力、メモリ容量もしくはグリッドコンピューティングのグリッド数、またはそれらの組み合わせの上限を含み、
前記プログラムは、前記プロテクトドングルから入力した前記ハードウェア資源の限度のいずれについても、その限度の範囲で前記コンピュータの資源を用いる、
ことを特徴とする請求項７に記載のライセンス付与システム。
【請求項９】
所定のプログラムをコンピュータで実行するときに、前記コンピュータとデータを授受できるプロテクトドングルに記憶されている、ライセンス情報と、前記プログラムをコンピュータで実行するときに該プログラムの利用可能な使用数量を定めるデータとを、前記プロテクトドングルから入力する入力ステップと、
前記ライセンス情報から所定の演算方法でデータを復号する復号ステップと、
前記復号ステップで復号したデータが、前記コンピュータに固有の識別符号と整合して、かつ、前記利用可能な使用数量が残存する場合に、前記プログラムの処理を実行する実行ステップと、
前記実行ステップで前記プログラムを実行したのちの、利用可能な使用数量に応じた値を、新たな利用可能な使用数量として前記プロテクトドングルに記憶する利用限度改訂ステップと、
前記復号ステップで復号したデータが、前記コンピュータに固有の識別符号と整合しない場合、または、前記利用可能な使用数量が残存しない場合には、前記プログラムの実行を制限する実行制限ステップと、
を備えることを特徴とするライセンス付与方法。
【請求項１０】
前記使用数量は、前記プログラムの入力データ、計算途中データもしくは出力データ、またはそれらの組み合わせについて、所定の単位で計数した値を含み、
前記実行制限ステップは、前記利用可能な使用数量のうち、いずれかが残存しない場合に、前記プログラムの実行を制限する、
ことを特徴とする請求項９に記載のライセンス付与方法。
【請求項１１】
前記入力ステップは、前記コンピュータで前記プログラムを実行するときに、前記プロテクトドングルに記憶されているハードウェア資源の限度を規定する情報のデータを、前記プロテクトドングルから入力し、
前記実行ステップは、前記プロテクトドングルから入力した前記ハードウェア資源の限度の範囲で前記コンピュータの資源を用いて、前記プログラムを実行する、
ことを特徴とする請求項９または１０に記載のライセンス付与方法。
【請求項１２】
前記プロテクトドングルに記憶されている前記ハードウェア資源の限度を規定するデータは、演算装置の個数および／または処理能力、メモリ容量もしくはグリッドコンピューティングのグリッド数、またはそれらの組み合わせの上限を含み、
前記実行ステップは、前記プロテクトドングルから入力した前記ハードウェア資源の限度のいずれについても、その限度の範囲で前記コンピュータの資源を用いる、
ことを特徴とする請求項１１に記載のライセンス付与方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロテクトドングル、コンピュータプログラムのライセンス付与システムおよびライセンス付与方法に関する。
【背景技術】
【０００２】
コンピュータの普及に伴って、いわゆるパッケージソフトの形態でコンピュータプログラムが流通している。パッケージソフトはライセンス単位の契約で販売される。コンピュータプログラムをライセンスを超えて使用できないように、コピーまたは同時使用を制限する技術がある。例えば、プロテクトドングル（ハードウェアプロテクトキーともいう）がコンピュータに装着されている場合に限ってプログラムを実行することによって、同時使用の台数を規制する方法がある。また、プログラムをコンピュータにインストールまたは実行するときに、ライセンスコードの入力を求め、正規のユーザであることを確認することが行われている。
【０００３】
特許文献１は、情報処理装置の利用制限を行うためのカウンタの限界値をセキュリティ上安全な方法で動的に設定・変更する技術が記載されている。特許文献１の技術は、カウンタ機能を有し、カウンタ値が限界値に達した場合に機能の制限を行う複写機に対して、当該複写機の機器シリアル番号と新たな限界値を含むライセンス情報を入力する。そして、入力されたライセンス情報が有効であるか否かを判定し、有効であると判定されたことを条件として、保持されている限界値をライセンス情報に含まれる新たな限界値に更新する。
【０００４】
特許文献２は、ユニーク性を損なうことなく再発行が可能なハードウェアプロテクトキーの技術が記載されている。パーソナルコンピュータに装着され、特定ソフトウェアの使用の可否を制御するハードウェアプロテクトキーであって、特定ソフトウェアと同一種類の他のソフトウェアの使用の可否を規定する第１シリアルＮｏ．が初期状態において記憶され、特定ソフトウェアの使用の可否を規定する第２シリアルＮｏ．が必要に応じて追加的に記憶される記憶部を有する。パーソナルコンピュータからの要求に応答して、記憶部に第２シリアルＮｏ．が記憶されている場合は該第２シリアルＮｏ．を、記憶されていない場合は第１シリアルＮｏ．を記憶部から読み出してパーソナルコンピュータに送る。
【０００５】
特許文献３は、アプリケーションプログラムの能力の変更を短時間で行うための技術が記載されている。特許文献３の技術は、キャパシティーオンデマンド（以下、ＣＯＤという）の発動を契機として、ソフトウェアベンダに対してもＣＯＤの発動を通知する。ＣＯＤの発動通知を受けたソフトウェアベンダは顧客の計算機に対して自動的に新しい構成で動作するためのライセンスキーを送信する事により、短時間での業務処理能力の向上を実現する。また、アプリケーション使用料の支払いが滞った場合には、アプリケーションベンダから制限付きのライセンスキーを送り込み、不正使用を防ぐ事ができる。さらに顧客システムではライセンスキーをを受け取った契機で、アプリケーション自体に通知を行う事で、アプリケーション動作中に動的に処理能力を向上させる手段を提供する。
【０００６】
特許文献４は、ポータブルメモリデバイス上にあるアプリケーションプログラムの実行に際して、知的所有権保護を行う技術が記載されている。少なくとも１つのアプリケーションプログラムを有するポータブルメモリデバイスがユーザに提供される。これがホスト環境に接続され、そのアプリケーションが実行されると、ポータブルメモリデバイス上に少なくとも部分的にある有効なライセンスが、そのアプリケーションプログラムに対応するかどうかが判定される。有効なライセンスが存在すると判定された場合に、ホストプラットホームプロセッサを使用してアプリケーションプログラムが実行され、有効なライセンスが存在しないと判定された場合にはアプリケーションの実行は停止される。
【特許文献１】特開２００５−３５２９０２号公報
【特許文献２】特開２００５−５０１６２号公報
【特許文献３】特開２００４−８６３９２号公報
【特許文献４】特開２００６−７３００２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
コンピュータプログラムの機能が高度になるほど、また、用途が特殊になるほど、ライセンス当たりの価格は高くなる傾向にある。ライセンスは一般に、プログラムの導入に対して付与され、その価格は使用頻度には関係ない。ライセンスの数によって１本当たりの価格は変動するが、使用頻度（使用数量）に関わらず、ソフトウェア（コンピュータプログラム）の使用料金は一定である。すなわち、毎日使用する人も、たまにしか使用しない人も負担する金額は同じである。
【０００８】
そのプログラムの使用頻度が多くない場合、または、処理の目的にそのプログラムが適合しているか知りたいような場合に、ライセンスを購入したのでは負担が大きすぎることがある。関連する技術のライセンスの付与方法では、少頻度の需要に対応できなかった。特許文献１の技術は、情報処理装置の使用に対するライセンス付与方法であって、ハードウェアにバンドルされていないソフトウェアのコピー防止や不正使用の対策が充分ではない。
【０００９】
さらに、プログラムを実行するハードウェア環境についても、利用者ごとの違いがライセンス料には反映しない。同じプログラムの使用について、プログラムが対応できる最大限のハードウェア資源を用いて処理を行う場合に、その機能を充分利用しているといえる。豊富なまたは高度なハードウェア資源を利用できるプログラムについて、そのプログラムが対応できる最大限のハードウェア資源を用いて処理を行う場合に比べて、実用的な最小限のハードウェア資源を用いて処理を行う場合では、その能力を充分に活用していないことになる。逆に言えば、能力を充分に発揮できないハードウェア環境であっても、同じライセンス料を負担しなければならない。
【００１０】
関連する技術のライセンス付与方法では、ユーザのハードウェア環境の違いが考慮されず、一律なライセンス料の場合が多かった。ハードウェア環境の違いを考慮してライセンス料を設定したとしても、プログラムを導入したのちに、ハードウェア環境が変化することに対応できなかった。
【００１１】
また、コンピュータプログラムが使用される地域が拡大することに応じて、不正使用の防止と同時に、対価の回収についてもいろいろな方法、特に、プリペイド方式を採用できることが望ましい。従量制と同時に前払い制のライセンス付与を行うプログラムの提供方法がなかった。
【００１２】
本発明は上述の事情に鑑みてなされたもので、コンピュータプログラムについて、その使用数量に応じてライセンスを付与できるライセンス付与システム、およびライセンス付与方法を提供することを目的とする。
【課題を解決するための手段】
【００１３】
本発明の第１の観点に係るプロテクトドングルは、
コンピュータとデータを授受できるプロテクトドングルであって、
あるコンピュータに固有の識別符号から所定の演算方法で生成した符号であるライセンス情報と、
所定のプログラムを前記コンピュータで実行するときに、該プログラムの利用可能な使用数量を定めるデータと、
を記憶し、
前記コンピュータからの要求に応答して、前記ライセンス情報および前記利用可能な使用数量を定めるデータを該コンピュータに送信し、
前記コンピュータが前記プログラムを実行したのちの、利用可能な使用数量を定めるデータを、前記コンピュータから受信して記憶する、
ことを特徴とする。
【００１４】
本発明の第２の観点に係るコンピュータプログラムのライセンス付与システムは、
本発明の第１の観点に係るプロテクトドングルと、
前記プロテクトドングルとデータを授受できるコンピュータと、
前記コンピュータ上で実行可能な所定のプログラムと、
を備え、
前記所定のプログラムを前記コンピュータで実行するときに、前記プロテクトドングルに記憶されている前記ライセンス情報と、前記プログラムをコンピュータで実行するときに該プログラムの利用可能な使用数量を定めるデータとを、前記プロテクトドングルから入力し、
前記ライセンス情報から所定の演算方法で復号したデータが、前記コンピュータに固有の識別符号と整合して、かつ、前記利用可能な使用数量が残存する場合に、前記プログラムの処理を実行し、
前記プログラムを実行したのちの、利用可能な使用数量に応じた値を、新たな利用可能な使用数量として前記プロテクトドングルに記憶し、
前記ライセンス情報から前記所定の演算方法で復号したデータが、前記コンピュータに固有の識別符号と整合しない場合、または、前記利用可能な使用数量が残存しない場合に、前記プログラムの実行を制限する、
ことを特徴とする。
【００１５】
本発明の第３の観点に係るコンピュータプログラムのライセンス付与方法は、
所定のプログラムをコンピュータで実行するときに、前記コンピュータとデータを授受できるプロテクトドングルに記憶されている、ライセンス情報と、前記プログラムをコンピュータで実行するときに該プログラムの利用可能な使用数量を定めるデータとを、前記プロテクトドングルから入力する入力ステップと、
前記ライセンス情報から所定の演算方法でデータを復号する復号ステップと、
前記復号ステップで復号したデータが、前記コンピュータに固有の識別符号と整合して、かつ、前記利用可能な使用数量が残存する場合に、前記プログラムの処理を実行する実行ステップと、
前記実行ステップで前記プログラムを実行したのちの、利用可能な使用数量に応じた値を、新たな利用可能な使用数量として前記プロテクトドングルに記憶する利用限度改訂ステップと、
前記復号ステップで復号したデータが、前記コンピュータに固有の識別符号と整合しない場合、または、前記利用可能な使用数量が残存しない場合には、前記プログラムの実行を制限する実行制限ステップと、
を備えることを特徴とする。
【発明の効果】
【００１６】
本発明によれば、コンピュータプログラムについて、その使用数量に応じてライセンスを付与することができる。また、前払いで従量制の対価を回収するライセンス付与を可能とする。
【発明を実施するための最良の形態】
【００１７】
（実施の形態１）
図１は、本発明の実施の形態１に係るライセンス付与システムの構成例を示すブロック図である。ライセンス付与システムは、コンピュータ１と、プログラム２と、プロテクトドングル（以下、単にドングルという）３とから構成される。プログラム２は、ライセンス付与の目的であって、コンピュータ１で実行される。
【００１８】
プログラム２は、一般に、コンピュータ１のオペレーティングシステム（ＯＳ）４の上で動作し、ＯＳ４が提供する入出力部４１を介して、コンピュータ１の入出力ポート（図示せず）からデータを入出力する。
【００１９】
ドングル３は、コンピュータ１の、例えばＵＳＢ（Universal Serial Bus）またはプリンタ用のパラレルポートなどの、入出力ポートに接続される。ドングル３とコンピュータ１の接続は、その他の通信ポートでもよいし、ＰＣＭＣＩＡまたはＳＤメモリカードなどのスロットでも構わない。さらに、無線ＬＡＮ、Ｂｌｕｅｔｏｏｔｈまたは赤外線インタフェース（ＩｒＤＡ）などの方法を採用することも可能である。
【００２０】
ドングル３は、入出力部３１と、ライセンス情報記憶部３２と、利用可能数量記憶部３３を備える。入出力部３１は、コンピュータ１の入出力ポートを経由して、ＯＳ４の入出力部４１とデータを送受信する。ライセンス情報記憶部３２は、プログラム２をコンピュータ１で実行できる権限を許可するライセンス情報を記憶する。
【００２１】
図２は、ライセンス情報の例を示す。ライセンス情報は、コンピュータ１に固有の識別符号、例えば、ＭＡＣアドレス（マック・アドレス、Media Access Control address）から演算された符号である。例えば、ＭＡＣアドレスにプログラム２の識別コードやユーザのライセンス番号などを加えたデータを、暗号化したデータである。または、何らかの識別コードを、ＭＡＣアドレスなどを鍵として暗号化した符号でもよい。
【００２２】
ライセンス情報は、コンピュータ１の固有の識別符号と整合するかどうかを判断することができて、改竄となりすましを防止できることが必要である。図２の例では、ライセンス情報が正当であることを確認するための認証コードを付加している。例えば、ライセンス情報またはそれを復号したデータから、所定のパラメータを用いたハッシュ関数によって生成したデータなどを用いる。
【００２３】
図１の利用可能数量記憶部３３は、プログラム２の利用可能な使用数量を定めるデータを格納する。図３は、利用可能な使用数量のデータの例を示す。利用可能な使用数量には、例えば、プログラム２の入力データのバイト数、プログラム２が実行途中で生成する中間ファイルのデータ量、または、プログラム２の出力データのバイト数などを用いることができる。これらのデータ容量は、バイト数でなく、例えば、画像の枚数やページ数などでカウントしてもよい。
【００２４】
その他、プログラム２を実行したときのダイナミックステップ数、所定の関数を実行した回数、読み込みまたは書き出ししたデータ量などを使用数量として用いてもよい。また、それぞれの使用数量を独立に計測した値でなく、それぞれに所定の係数を乗じて加算した合計値などを使用数量として用いてもよい。
【００２５】
使用数量は改竄を防止する必要がある。例えば、利用可能数量記憶部３３に記憶されるデータは、暗号化されている。または、プログラム２に埋め込まれた秘密のコードを用いないと、ドングル３に書き込めないように規制する。
【００２６】
ライセンス情報は、前もってユーザから連絡されたコンピュータ１に固有の識別符号から生成して、ドングル３に格納する。また、ユーザが利用する予定の使用数量をドングル３に設定する。ドングル３と対価を交換することによって、使用数量に応じた対価を回収することができる。
【００２７】
図１のプログラム２は、プログラム機能部２１、実行制御部２２、実行権限判定部２３、利用可能数量判定部２４および利用可能残量算出部２５を備える。プログラム機能部２１は、本来そのプログラム２が提供する機能を実行する。
【００２８】
実行制御部２２は、実行権限判定部２３および利用可能数量判定部２４の結果に基づいて、プログラム機能部２１の動作を制御する。例えば、ライセンス情報がコンピュータ１のＭＡＣアドレスと整合しない場合は、プログラム機能部２１を実行させない。また、利用可能な使用数量の範囲で、プログラム機能部２１を実行させる。
【００２９】
実行権限判定部２３は、コンピュータ１に固有の識別符号を取得し、ドングル３からライセンス情報を読み出して解読し、それらが整合するかどうか判断する。例えば、暗号化されたライセンス情報を所定の復号化方法で解読して、ＭＡＣアドレスを取り出し、ＯＳ４から取得したＭＡＣアドレスと照合する。あるいは、ＭＡＣアドレス（と所定のコード）を暗号鍵としてライセンス情報を解読して、所定のデータが含まれているかどうかを判断する。
【００３０】
利用可能数量判定部２４は、ドングル３から利用可能な使用数量を取得して、実行制御部２２に伝える。使用数量のデータが暗号化されている場合は、利用可能数量判定部２４で復号化する。
【００３１】
前述のとおり、実行制御部２２は、ライセンス情報がコンピュータ１の固有の識別符号と整合し、利用可能な使用数量に残量がある場合に、その範囲でプログラム機能部２１を実行させる。そして、使用した数量を利用可能残量算出部２５に伝える。
【００３２】
利用可能残量算出部２５は、実行する前の使用数量から使用した数量を減じて、使用可能な残量を算出する。利用可能残量算出部２５は、使用数量の残量を改めて使用数量に置き換え、必要に応じて暗号化して、ドングル３の利用可能数量記憶部３３に格納する。
【００３３】
図４は、実施の形態１に係るプログラム実行処理の動作の一例を示すフローチャートである。プログラム２が起動されると、実行権限判定部２３は、ドングル３からライセンス情報を読み出し（ステップＳ１１）、ライセンス情報を解読する（ステップＳ１２）。同時に、ＯＳ４からコンピュータ１に固有の識別符号を取得して、ライセンス情報と整合するか調べる（ステップＳ１３）。
【００３４】
実行制御部２２は、ライセンス情報とコンピュータ１の固有符号とが整合しない場合（ステップＳ１３；ＮＯ）、プログラムの実行を終了する。ライセンス情報とコンピュータ１の固有符号とが整合する場合（ステップＳ１３；ＹＥＳ）、利用可能数量判定部２４は、ドングル３から利用可能な使用数量を読み出す（ステップＳ１４）。
【００３５】
利用可能な使用数量に残高がない場合は（ステップＳ１５；ＮＯ）、実行制御部２２は、プログラムの実行を終了する。使用数量の残高があれば（ステップＳ１５；ＹＥＳ）、実行制御部２２は、その範囲でプログラム機能部２１を実行させる（ステップＳ１６）。
【００３６】
利用可能残量算出部２５は、プログラム機能部２１を実行する前の利用可能数から、実行した数量を減じた値を、新たな利用可能数とする（ステップＳ１７）。そして、新たな利用可能数をドングル３に格納する（ステップＳ１８）。
【００３７】
プログラム２を終了する場合は（ステップＳ１９；ＹＥＳ）、処理を終了する。プログラム２を継続して実行する場合は（ステップＳ１９；ＮＯ）、ステップＳ１５に戻って、利用可能数の残量を判定する。プログラム２の利用可能な使用数量（のいずれか）の残高が０になった時点で、プログラム２（のプログラム機能部２１）は実行されない。
【００３８】
本実施の形態１のライセンス付与システムによれば、コンピュータプログラムについて、その使用数量に応じてライセンスを付与することができる。さらに、前払いで従量制の対価を回収することができる。
【００３９】
また、ライセンス情報および従量制の使用数量は、コンピュータ１とは独立のドングル３に格納されているので、改竄やなりすましに対する保護を強化しやすい。例えば、データを暗号化して、ＯＳ４の入出力をトンネルのように使用することによって、プログラム２でしか実質的にデータを読み書きできないようにすることができる。
【００４０】
ライセンス情報は、プログラム２を実行させるコンピュータ１に固有の識別符号から生成され、プログラム２を実行するときに整合するかどうか判断するので、ドングル３をコンピュータに装着しなければプログラム２を実行することができない。また、許可されたコンピュータ１以外のコンピュータではプログラム２を実行することができない。
【００４１】
（実施の形態１の変形例）
図５は、実施の形態１の変形例に係るライセンス付与システムの構成例を示す。図１の構成に比べて、ドングル３に制御プログラム記憶部３５が追加されている。また、プログラム２に、プログラムロード実行部２０を備える。
【００４２】
図５のライセンス付与システムでは、ライセンス情報を判断して実行を制御するプログラムが、ドングル３の制御プログラム記憶部３５に格納されている。プログラム２のプログラムロード実行部２０は、プログラム２が起動されたときに、ドングル３から制御プログラムを読み込んで実行する。制御プログラムは、実行制御部２２、実行権限判定部２３、利用可能数量判定部２４および利用可能残量算出部２５などの、各処理を行うプログラムである。
【００４３】
図６は、ドングル格納プログラムを実行する動作の一例を示す。プログラム２が起動されたときに、プログラムロード実行部２０は、ドングル３から制御プログラムをロードして、それを実行する（ステップＳ２０）。制御プログラムはプログラム実行処理を行う（ステップＳ２１）。制御プログラムの動作は、例えば、図４のプログラム実行処理である。
【００４４】
プログラム２は、ライセンス付与の処理内容に関わらず、起動されたときにドングル３から制御プログラムを読み込んで実行するという構成にしておけばよい。制御プログラムはドングル３で与えられるので、プログラム２をインストールしたのちに、ライセンス付与の処理を変更・改訂することができる。
【００４５】
（実施の形態２）
実施の形態２は、プログラム２を実行するコンピュータ１のハードウェア資源を制限する場合である。図７は、本発明の実施の形態２に係るライセンス付与システムの構成例を示すブロック図である。実施の形態２のプログラム２は、実施の形態１の構成に資源割当部２６が追加されている。また、ドングル３は、資源限度記憶部３４を備える。その他の構成は実施の形態１と同様である。
【００４６】
ドングル３の資源限度記憶部３４は、プログラム２を実行するときに利用できるハードウェア資源の限度を記憶する。図８は、ハードウェア資源の限度の例を示す。ハードウェア資源の限度には、例えば、同時に命令を実行するプロセッサ（演算処理装置）の個数、プロセッサの動作周波数、プログラム２が使用するメモリの容量がある。また、プログラム２の処理内容に応じたアクセラレータがある場合、例えば、画像処理のためのグラフィックアクセラレータなど、それを使用できる個数の制限を設けてもよい。さらに、プログラム２がグリッドコンピューティングで実行できる場合に、同時に動作するグリッドの台数をハードウェア資源の限度とすることもできる。
【００４７】
資源はハードウェアに限らず、プログラム２の機能を資源とみなして、それらの限度を設定してもよい。例えば、プログラム２のある関数を実行できる権限や、再帰的な処理のネストの深さなどを限度として設定することも可能である。
【００４８】
実行制御部２２の資源割当部２６は、プログラム機能部２１を実行するときに、その入力データまたはプログラム機能部２１が要求する資源を、資源限度記憶部３４の設定データに基づいて制限する。例えば、コンピュータ１が４個のプロセッサを備えていても、資源限度の同時実行プロセッサ数が２の場合は、４個のプロセッサのうち同時には２個でしか命令を実行させない。また、プログラム２のデータが増大しても、資源限度の範囲でしかメモリを割り当てない。それを超えるデータが生じた場合は、例えば、外部記憶上に仮想記憶領域をとるか、そのメモリ容量の範囲で実行するように処理を分割する。
【００４９】
プロセッサの動作周波数に制限を設ける場合は、例えば、クロック周波数を切り替えることができれば、制限以下の周波数にする。クロック周波数を切り替えられない場合でも、実質的に制限以下の動作周波数になるように、ウェイト（無効命令）を挿入することができる。グリッドコンピューティングのグリッドの台数に制限を設ける場合は、制限以上の台数のグリッドをアサインする命令を、実行中のあるグリッドの処理が終わって開放されるまで待たせる。
【００５０】
図９は、実施の形態２に係るプログラム実行処理の動作の一例を示すフローチャートである。ライセンス情報を読み出して（ステップＳ１１）から、利用可能数を読み出す（ステップＳ１４）までは、実施の形態１の動作と同じである。
【００５１】
実施の形態２では、ハードウェア資源限度がある場合に、そのデータをドングル３から読み出す（ステップＳ３０）。利用可能数の残高がある場合に（ステップＳ１５；ＹＥＳ）、利用可能数およびハードウェア資源の限度の範囲でプログラムの機能を実行する（ステップＳ３１）。すなわち、資源割当部２６はハードウェア資源限度の範囲で、コンピュータ１の資源を割り当てる。ステップＳ１７からステップＳ１９の処理は、実施の形態１の動作と同様である。
【００５２】
図１０は、ハードウェア資源割当処理の動作の一例を示す。資源割当部２６は、プログラム機能部２１から資源割当要求を受け付ける（ステップＳ４１）。資源割当要求がなければ（ステップＳ４２；ＮＯ）、資源割当要求受付を繰り返す。
【００５３】
資源割当要求があると（ステップＳ４２；ＹＥＳ）、その要求によって資源限度が超えるかどうか判断する（ステップＳ４３）。資源限度を超える場合は（ステップＳ４３：ＹＥＳ）、資源割当要求を資源限度範囲に制限する（ステップＳ４４）。資源限度を超えなければ（ステップＳ４３；ＮＯ）、資源要求をそのままとする。
【００５４】
資源割当部２６は、受け付けた資源要求または資源限度範囲に制限した資源要求に従って、ハードウェア資源を割り当てる。例えば、メモリ、アクセラレータまたは新たなグリッドなどのハードウェア資源の割当をＯＳ４に要求する。そして、新たな資源割当要求を受け付ける（ステップＳ４１）。
【００５５】
本実施の形態２のライセンス付与システムによれば、プログラム２を実行するコンピュータ１のハードウェア資源の限度をドングル３で与えるので、ドングル３を譲渡または貸し出すときに、資源の限度を設定することができる。そして、資源の限度を設定したのちに、コンピュータ１の構成が変わっても、設定した資源の限度の範囲でプログラム２が実行される。従って、ハードウェア資源の限度に応じた価格体系とすることができる。
【００５６】
例えば、豊富なハードウェア資源を使用するユーザは、大きな便益の対価として相当の負担とし、小規模のハードウェア資源を使用するユーザには、その処理能力に見合った負担とすることができる。その結果、少ない資源で利用したいユーザは少ない負担でプログラム２を利用できる。
【００５７】
なお、実施の形態２においても、実施の形態１の変形例のように、ドングル３に格納された制御プログラムを、プログラム２の起動時にロードして実行する構成とすることができる。
【００５８】
図１１は、図１、図５または図７に示すライセンス付与システムのハードウェア構成の一例を示すブロック図である。コンピュータ１は、図１１に示すように、制御部１１、主記憶部１２、外部記憶部１３、操作部１４、表示部１５および入出力部１６を備える。主記憶部１２、外部記憶部１３、操作部１４、表示部１５および入出力部１６はいずれも内部バス１０を介して制御部１１に接続されている。
【００５９】
制御部１１はＣＰＵ（Central Processing Unit）などから構成され、外部記憶部１３に記憶されているプログラム２を主記憶部１２にロードして実行する。
【００６０】
主記憶部１２はＲＡＭ（Random-Access Memory）などから構成され、外部記憶部１３に記憶されているプログラム２をロードし、制御部１１の作業領域として用いられる。
【００６１】
外部記憶部１３は、フラッシュメモリ、ハードディスク、ＤＶＤ−ＲＡＭ（Digital Versatile Disc Random-Access Memory）、ＤＶＤ−ＲＷ（Digital Versatile Disc ReWritable）などの不揮発性メモリから構成され、前記の処理を制御部１１に行わせるためのプログラム２を予め記憶し、また、制御部１１の指示に従って、このプログラム２が記憶するデータを制御部１１に供給し、制御部１１から供給されたデータを記憶する。
【００６２】
操作部１４はキーボードおよびマウスなどのポインティングデバイスなどと、キーボードおよびポインティングデバイスなどを内部バス１０に接続するインターフェース装置から構成されている。操作部１４を介して、プログラム２の起動・終了や、プログラム２で使用するデータなどが入力され、制御部１１に供給される。また、ライセンスを確認するためのパスワードなどの入力を受け付け、制御部１１に供給する。
【００６３】
表示部１５は、ＣＲＴ（Cathode Ray Tube）又はＬＣＤ（Liquid Crystal Display）などから構成され、プログラム２が出力するデータ、ライセンスが許可されていない場合や、使用数量がない場合の警告などを表示する。
【００６４】
入出力部１６は、ＵＳＢなどのシリアルインターフェース、または、プリンタポートなどのパラレルインタフェースを備える。入出力部１６、通信ポートでもよいし、ＰＣＭＣＩＡまたはＳＤメモリカードなどのスロットの場合がある。さらに、無線ＬＡＮ、Ｂｌｕｅｔｏｏｔｈまたは赤外線インタフェース（ＩｒＤＡ）を備える場合もある。
【００６５】
図１、図５または図７に示すライセンス付与システムの動作は、プログラム２が、制御部１１、主記憶部１２、外部記憶部１３および入出力部１６を資源として用いて、プロテクトドングル３と協働して行う。
【００６６】
その他、本発明の好適な変形として、以下の構成が含まれる。
【００６７】
本発明の第１の観点に係るプロテクトドングルにについて、
好ましくは、前記使用数量は、前記プログラムの入力データ、計算途中データもしくは出力データ、またはそれらの組み合わせについて、所定の単位で計数した値を含むことを特徴とする。
【００６８】
好ましくは、前記プログラムを実行するために利用できるハードウェア資源の限度を規定するデータを記憶し、
前記コンピュータからの要求に応答して、前記ハードウェア資源の限度を規定する情報のデータを該コンピュータに送信する、
ことを特徴とする。
【００６９】
好ましくは、前記ハードウェア資源の限度を規定するデータは、演算装置の個数および／または処理能力、メモリ容量もしくはグリッドコンピューティングのグリッド数、またはそれらの組み合わせの上限を含むことを特徴とする。
【００７０】
本発明の第２の観点に係るライセンス付与システムについて、
好ましくは、前記使用数量は、前記プログラムの入力データ、計算途中データもしくは出力データ、またはそれらの組み合わせについて、所定の単位で計数した値を含み、
前記コンピュータは、前記利用可能な使用数量のうち、いずれかが残存しない場合に、前記プログラムの実行を制限する、
ことを特徴とする。
【００７１】
好ましくは、前記コンピュータで前記プログラムを実行するときに、前記プロテクトドングルに記憶されているハードウェア資源の限度を規定する情報のデータを、前記プロテクトドングルから入力し、
前記プログラムは、前記プロテクトドングルから入力した前記ハードウェア資源の限度の範囲で、前記コンピュータの資源を用いる、
ことを特徴とする。
【００７２】
好ましくは、前記ハードウェア資源の限度を規定するデータは、演算装置の個数および／または処理能力、メモリ容量もしくはグリッドコンピューティングのグリッド数、またはそれらの組み合わせの上限を含み、
前記プログラムは、前記プロテクトドングルから入力した前記ハードウェア資源の限度のいずれについても、その限度の範囲で前記コンピュータの資源を用いる、
ことを特徴とする。
【００７３】
本発明の第３の観点に係るライセンス付与方法について、
好ましくは、前記使用数量は、前記プログラムの入力データ、計算途中データもしくは出力データ、またはそれらの組み合わせについて、所定の単位で計数した値を含み、
前記実行制限ステップは、前記利用可能な使用数量のうち、いずれかが残存しない場合に、前記プログラムの実行を制限する、
ことを特徴とする。
【００７４】
好ましくは、前記入力ステップは、前記コンピュータで前記プログラムを実行するときに、前記プロテクトドングルに記憶されているハードウェア資源の限度を規定する情報のデータを、前記プロテクトドングルから入力し、
前記実行ステップは、前記プロテクトドングルから入力した前記ハードウェア資源の限度の範囲で前記コンピュータの資源を用いて、前記プログラムを実行する、
ことを特徴とする。
【００７５】
好ましくは、前記プロテクトドングルに記憶されている前記ハードウェア資源の限度を規定するデータは、演算装置の個数および／または処理能力、メモリ容量もしくはグリッドコンピューティングのグリッド数、またはそれらの組み合わせの上限を含み、
前記実行ステップは、前記プロテクトドングルから入力した前記ハードウェア資源の限度のいずれについても、その限度の範囲で前記コンピュータの資源を用いる、
ことを特徴とする。
【００７６】
その他、前記のハードウエェア構成やフローチャートは一例であり、任意に変更および修正が可能である。
【図面の簡単な説明】
【００７７】
【図１】本発明の実施の形態１に係るライセンス付与システムの構成例を示すブロック図である。
【図２】ライセンス情報の例を示す図である。
【図３】利用可能な使用数量のデータの例を示す図である。
【図４】実施の形態１に係るプログラム実行処理の動作の一例を示すフローチャートである。
【図５】実施の形態１の変形例に係るライセンス付与システムの構成例を示す図である。
【図６】ドングル格納プログラムを実行する動作の一例を示すフローチャートである。
【図７】本発明の実施の形態２に係るライセンス付与システムの構成例を示すブロック図である。
【図８】ハードウェア資源の限度の例を示す図である。
【図９】実施の形態２に係るプログラム実行処理の動作の一例を示すフローチャートである。
【図１０】ハードウェア資源割当処理の動作の一例を示すフローチャートである。
【図１１】ライセンス付与システムのハードウェア構成の一例を示すブロック図である。
【符号の説明】
【００７８】
１  コンピュータ
２  プログラム
３  プロテクトドングル
４  オペレーティングシステム
１１  制御部
１２  主記憶部
１３  外部記憶部
１４  操作部
１５  表示部
１６  入出力部
２０  プログラムロード実行部
２１  プログラム機能部
２２  実行制御部
２３  実行権限判定部
２４  利用可能数量判定部
２５  利用可能残量算出部
２６  資源割当部
３１  入出力部
３２  ライセンス情報記憶部
３３  利用可能数量記憶部
３４  資源限度記憶部
３５  制御プログラム記憶部
４１  入出力部
【図１】
2010033322.tif 000003
【図２】
2010033322.tif 000004
【図３】
2010033322.tif 000005
【図４】
2010033322.tif 000006
【図５】
2010033322.tif 000007
【図６】
2010033322.tif 000008
【図７】
2010033322.tif 000009
【図８】
2010033322.tif 000010
【図９】
2010033322.tif 000011
【図１０】
2010033322.tif 000012
【図１１】
2010033322.tif 000013