(57)【要約】      （修正有）【課題】複数のソフトウェアに関する使用許諾の認証において、所定の順番に従わずに許諾対象のソフトウェアがインストールされたことを判別できるようにする。【解決手段】認証方法は、複数のソフトウェアのインストール順を示す情報を受け付け、複数のソフトウェアのサーバへのインストール実績情報を記憶する記憶部を参照して、インストール実績情報から複数のソフトウェアのサーバへのインストール順を示す情報を取得し、受け付けたインストール順を示す情報と、取得したインストール順を示す情報との一致性に基づき、複数のソフトウェアの使用許諾に関する認証を行う処理を含む。【選択図】図２８
2018181107.tif 000002
【特許請求の範囲】
【請求項１】
複数のソフトウェアのインストール順を示す情報を受け付け、
前記複数のソフトウェアのサーバへのインストール実績情報を記憶する記憶部を参照して、前記インストール実績情報から前記複数のソフトウェアの前記サーバへのインストール順を示す情報を取得し、
受け付けた前記インストール順を示す情報と、取得した前記インストール順を示す情報との一致性に基づき、前記複数のソフトウェアの使用許諾に関する認証を行う、
処理をコンピュータに実行させることを特徴とする認証プログラム。
【請求項２】
受け付けられる前記インストール順を示す情報と、取得される前記インストール順を示す情報とは、いずれもインストール対象のハードウェア条件によって前記複数のソフトウェアを区別する
ことを特徴とする請求項１記載の認証プログラム。
【請求項３】
更に、
受け付けた前記インストール順を示す情報から抽出された許諾期間に該当しない場合に、前記使用許諾が無効であると判定する
処理をコンピュータに実行させることを特徴とする請求項１又は２記載の認証プログラム。
【請求項４】
複数のソフトウェアのインストール順を示す情報を受け付け、
前記複数のソフトウェアのサーバへのインストール実績情報を記憶する記憶部を参照して、前記インストール実績情報から前記複数のソフトウェアの前記サーバへのインストール順を示す情報を取得し、
受け付けた前記インストール順を示す情報と、取得した前記インストール順を示す情報との一致性に基づき、前記複数のソフトウェアの使用許諾に関する認証を行う、
処理を含み、コンピュータにより実行される認証方法。
【請求項５】
複数のソフトウェアのインストール順を示す情報を受け付ける受付部と、
前記複数のソフトウェアのサーバへのインストール実績情報を記憶する記憶部を参照して、前記インストール実績情報から前記複数のソフトウェアの前記サーバへのインストール順を示す情報を取得する取得部と、
受け付けた前記インストール順を示す情報と、取得した前記インストール順を示す情報との一致性に基づき、前記複数のソフトウェアの使用許諾に関する認証を行う認証部と
を有する認証装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェアのライセンス認証に関する。
【背景技術】
【０００２】
ソフトウェア製品の使用許諾において、適用可能なハードウェア装置数に制限が設けられることが多い。例えば、１つのライセンスは、１台のサーバ装置に限った使用を認める。
【０００３】
このようなハードウェア装置数の制限を超えた不当な使用を防止するために、ネットワークを介して稼動しているハードウェア装置を監視する技術がある。この技術の場合には、維持コストが高くなるという問題がある。
【０００４】
別の方法として、ソフトウェア製品が適用されるハードウェア装置を予め特定し、所定のハードウェア装置以外ではソフトウェア製品が使用できないようにする技術もある。この技術には、運用上の手間が多くなるという問題がある。
【０００５】
例えばシステム構築時に複数のソフトウェア製品が導入されるような場合には、後にそれらのソフトウェア製品の一部又は全部が無断流用されるリスクがある。ソフトウェア製品毎に設定されたライセンスキーによる一般的な認証手段では、このようなリスクを排除しきれない。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００８−３３５６１号公報
【特許文献２】特開２００２−３５９６１６号公報
【特許文献３】特開２００２−２１５２５３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明の目的は、一側面では、複数のソフトウェアに関する使用許諾の認証において、所定の順番に従わずに許諾対象のソフトウェアがインストールされたことを判別できるようにすることである。
【課題を解決するための手段】
【０００８】
一態様に係る認証方法は、（Ａ）複数のソフトウェアのインストール順を示す情報を受け付け、（Ｂ）複数のソフトウェアのサーバへのインストール実績情報を記憶する記憶部を参照して、インストール実績情報から複数のソフトウェアのサーバへのインストール順を示す情報を取得し、（Ｃ）受け付けたインストール順を示す情報と、取得したインストール順を示す情報との一致性に基づき、複数のソフトウェアの使用許諾に関する認証を行う処理を含む。
【発明の効果】
【０００９】
一側面としては、複数のソフトウェアに関する使用許諾の認証において、所定の順番に従わずに許諾対象のソフトウェアがインストールされたことを判別できるようになる。
【図面の簡単な説明】
【００１０】
【図１】図１は、販売システムの例を示す図である。
【図２】図２は、顧客システムの例を示す図である。
【図３】図３は、注文データの例を示す図である。
【図４】図４は、シーケンスの例を示す図である。
【図５】図５は、製品リストの例を示す図である。
【図６】図６は、ライセンスキー生成の概要を示す図である。
【図７】図７は、納品準備の概要を示す図である。
【図８】図８は、顧客システムに関するフェーズを示す図である。
【図９】図９は、グループ認証の失敗例を示す図である。
【図１０】図１０は、グループ認証の失敗例を示す図である。
【図１１】図１１は、販売管理サーバのモジュール構成例を示す図である。
【図１２】図１２は、受注処理フローを示す図である。
【図１３】図１３は、ライセンス発行サーバのモジュール構成例を示す図である。
【図１４】図１４は、固有コードテーブルの例を示す図である。
【図１５】図１５は、制約条件テーブルの例を示す図である。
【図１６】図１６は、ライセンス発行処理フローを示す図である。
【図１７】図１７は、インストール順番データの例を示す図である。
【図１８】図１８は、実施の形態１におけるライセンスキー生成の手順を示す図である。
【図１９】図１９は、ライセンスキー生成処理（Ａ）フローを示す図である。
【図２０】図２０は、納品準備処理フローを示す図である。
【図２１】図２１は、ライセンスキーテーブルの例を示す図である。
【図２２】図２２は、製品メディアの構成例を示す図である。
【図２３】図２３は、ツールインストーラの処理フローを示す図である。
【図２４】図２４は、サーバ装置のモジュール構成例を示す図である。
【図２５】図２５は、インストールテーブルの例を示す図である。
【図２６】図２６は、ライセンステーブルの例を示す図である。
【図２７】図２７は、製品管理ツールの導入処理フローを示す図である。
【図２８】図２８は、製品管理ツールの導入処理フローを示す図である。
【図２９】図２９は、グループ認証処理（Ａ）フローを示す図である。
【図３０】図３０は、第１ハッシュ値抽出の手順を示す図である。
【図３１】図３１は、第１ハッシュ値抽出処理フローを示す図である。
【図３２】図３２は、第２ハッシュ値算出処理フローを示す図である。
【図３３】図３３は、製品管理ツールの運用処理フローを示す図である。
【図３４】図３４は、製品管理ツールの運用処理フローを示す図である。
【図３５】図３５は、実施の形態２におけるライセンス発行サーバのモジュール構成例を示す図である。
【図３６】図３６は、実施の形態２におけるライセンスキー生成の手順を示す図である。
【図３７】図３７は、ライセンスキー生成処理（Ｂ）フローを示す図である。
【図３８】図３８は、実施の形態２におけるサーバ装置のモジュール構成例を示す図である。
【図３９】図３９は、グループ認証処理（Ｂ）フローを示す図である。
【図４０】図４０は、シードコード抽出の手順を示す図である。
【図４１】図４１は、シードコード抽出処理フローを示す図である。
【図４２】図４２は、コンピュータの機能ブロック図である。
【発明を実施するための形態】
【００１１】
［実施の形態１］
図１に、販売システムの例を示す。販売員端末１０１は、ソフトウェア製品を販売する販売員が使用する端末である。販売員端末１０１は、ネットワークを介して販売管理サーバ１０３と接続している。
【００１２】
販売管理サーバ１０３は、ソフトウェア製品の販売業務を支援する。この例で、販売管理サーバ１０３は、ソフトウェア製品の注文を受けてから納品の準備を行うまでの業務を支援する。販売管理サーバ１０３は、ネットワークを介してライセンス発行サーバ１０５と接続している。
【００１３】
ライセンス発行サーバ１０５は、販売管理サーバ１０３からの要求に応じて、販売されるソフトウェア製品の使用に関するライセンスキーを発行する。尚、本実施の形態で、ライセンス発行サーバ１０５は、ソフトウェア製品のグループ単位でライセンスキーを発行する。
【００１４】
また、販売管理サーバ１０３は、ネットワークを介してプリンタ１０７と接続している。プリンタ１０７は、例えばラベルを印刷するために用いられる。
【００１５】
図２に、顧客システムの例を示す。顧客システムにおいて、サーバ装置２０１ａ乃至２０１ｃがＬＡＮを介して相互に接続している。サーバ装置２０１ａ及びサーバ装置２０１ｃにおけるコア数は１であり、サーバ装置２０１ｂにおけるコア数は２である。
【００１６】
この例で、販売員と顧客とが、２個のソフトウェア製品ＰｒｏＡ、１個のソフトウェア製品ＰｒｏＢ、２個のソフトウェア製品ＰｒｏＣ、１個のソフトウェア製品ＰｒｏＨ及び１個のソフトウェア製品ＰｒｏＫに関する売買契約を結んだものと想定する。
【００１７】
また、サーバ装置２０１ａにソフトウェア製品ＰｒｏＡ、ソフトウェア製品ＰｒｏＢ及びソフトウェア製品ＰｒｏＫをインストールし、サーバ装置２０１ｂにソフトウェア製品ＰｒｏＣ及びソフトウェア製品ＰｒｏＨをインストールし、更にサーバ装置２０１ｃにソフトウェア製品ＰｒｏＡ及びソフトウェア製品ＰｒｏＣをインストールすることについて、販売員と顧客とが合意したものとする。
【００１８】
販売員は、販売員端末１０１を操作して図３に示した注文データを生成する。この例における注文データは、テーブル形式である。但し、注文データは、テーブル形式以外の形式であってもよい。この例における注文データは、ヘッダに購入者名が格納されるフィールドと、設置場所が格納されるフィールドとを有している。購入者名は、購入者を識別する。設置場所は、顧客システムが設定されている場所である。
【００１９】
この例における注文データは、更に、注文に含まれるソフトウェア製品に対応するレコードを有している。注文データのレコードは、製品名が格納されるフィールドと、ライセンスタイプが格納されるフィールドと、コア数が格納されるフィールドと、個数が格納されるフィールドと、期間が格納されるフィールドとを有している。
【００２０】
製品名は、注文されたソフトウェア製品を特定する。ライセンスタイプは、注文されたソフトウェア製品に関するライセンスのタイプを特定する。コア数は、注文されたソフトウェア製品がインストールされるサーバ装置２０１のコア数を特定する。個数は、注文されたソフトウェア製品の数を特定する。期間は、注文されたソフトウェア製品に関するライセンスが有効である期間を特定する。
【００２１】
続いて、この例におけるシーケンスについて説明する。図４に、シーケンスの例を示す。販売管理サーバ１０３は、受注処理を実行する（Ｓ４０１）。受注処理において、販売管理サーバ１０３は、販売員端末１０１から送られた注文データを受け付ける。受注処理の詳細については、図１２を用いて後述する。
【００２２】
受注処理を終えると、販売管理サーバ１０３は、ライセンス要求をライセンス発行サーバ１０５宛に送信する（Ｓ４０３）。ライセンス要求には、製品リストが含まれる。
【００２３】
本実施の形態では、複数のソフトウェア製品を１つのグループとして、当該グループにライセンスキーを付与する。製品リストは、ライセンス付与の対象となるグループに含まれる複数のソフトウェア製品を特定する。
【００２４】
図５は、製品リストの例を示す図である。この例における製品リストは、グループのメンバーであるソフトウェア製品に対応する行を有している。製品リストの行は、製品名が格納されるフィールドと、ライセンスタイプが格納されるフィールドと、コア数が格納されるフィールドと、期間が格納されるフィールドとを有している。
【００２５】
製品名は、グループのメンバーであるソフトウェア製品を特定する。ライセンスタイプは、グループのメンバーであるソフトウェア製品に関するライセンスのタイプを特定する。コア数は、グループのメンバーであるソフトウェア製品が適用されるサーバ装置２０１のコア数を特定する。コア数は、プロセッサ単位のライセンス数である。期間は、グループのメンバーであるソフトウェア製品に関するライセンスの有効期間を特定する。
【００２６】
この例では、ライセンスタイプがプロセッサ単位であり、ライセンスの期間が同じものを纏めてグループとする。尚、インストールされるプログラムの単位でレコードを設ける。この例で、１コアのサーバ装置２０１にインストールされるソフトウェア製品ＰｒｏＡが２個注文されているので、１コア対応のソフトウェア製品ＰｒｏＡに関するレコードが２つ設けられている。
【００２７】
図４の説明に戻る。ライセンス発行サーバ１０５がライセンス要求を受信すると（Ｓ４０５）。ライセンス発行サーバ１０５は、ライセンス発行処理を実行する（Ｓ４０７）。ライセンス発行サーバ１０５は、ライセンス発行処理において、グループ単位のライセンスキーを発行する。ライセンス発行処理の詳細については、図１６を用いて後述する。
【００２８】
ライセンス発行処理を終えると、ライセンス発行サーバ１０５は、ライセンスキーに関するデータを送信する（Ｓ４０９）。ライセンスキーに関するデータには、グループＩＤ、ライセンスキー及びインストール順番データが含まれる。インストール順番データは、ソフトウェア製品がインストールされる順番を特定する。
【００２９】
販売管理サーバ１０３がライセンスキーに関するデータを受信すると（Ｓ４１１）。販売管理サーバ１０３は、納品準備処理を実行する（Ｓ４１３）。販売管理サーバ１０３は、納品準備処理において、ソフトウェア製品の納品準備に関する処理を行う。納品準備処理については、図２０を用いて後述する。
【００３０】
ここで、図６を用いて、本実施の形態におけるライセンスキーの概要について説明する。本実施の形態におけるライセンスキーは、グループのメンバーであるソフトウェア製品の構成に依存する。つまり、異なるソフトウェア製品構成に係るグループに対して発行されるライセンスキーは同一でない。
【００３１】
更に、本実施の形態におけるライセンスキーは、グループのメンバーであるソフトウェア製品がインストールされる順番にも依存する。同じソフトウェア製品構成に係るグループであっても、ソフトウェア製品のインストール順番が異なる場合には、発行されるライセンスキーは別のものになる。
【００３２】
尚、プロセッサ単位のライセンスにおいてコア数が異なる場合には、同じソフトウェア製品であっても区別する。この例で、２コアに係るソフトウェア製品ＰｒｏＣと１コアに係るソフトウェア製品ＰｒｏＣは、区別される。
【００３３】
図６の左側に示したインストール順番は、ライセンス発行サーバ１０５によって決定される。この例によれば、最初に２コアに係るソフトウェア製品ＰｒｏＣがインストールされる。２番目に１コアに係るソフトウェア製品ＰｒｏＡがインストールされる。３番目に１コアに係るソフトウェア製品ＰｒｏＣがインストールされる。４番目に１コアに係るソフトウェア製品ＰｒｏＢがインストールされる。５番目に１コアに係るソフトウェア製品ＰｒｏＡがインストールされる。図６の左側に示したソフトウェア製品とインストール順番とに基づいて、ライセンスキーが生成される。
【００３４】
続いて、納品準備の概要について説明する。図７は、納品準備の概要を示す図である。注文ＩＤ、購入者名、グループＩＤ、ライセンスキー及びインストール順番データが、ラベルに印刷される。ラベルは、例えば製品メディアが入れられる封筒に貼り付けられる。販売員は、注文ＩＤと購入者名とによって契約を確認する。そして、販売員は、インストール順番に従って、ソフトウェア製品のインストールを行う。グループＩＤ及びライセンスキーは、ソフトウェア製品のグループ認証において正当性を示すために用いられる。
【００３５】
続いて、図８を用いて、顧客システムに関するフェーズについて説明する。図示した導入フェーズ（Ｓ８０１）では、販売員が、ソフトウェア製品をサーバ装置２０１にインストールし、インストールされたソフトウェア製品のグループ認証を受けるための作業を行う。
【００３６】
図示した運用フェーズ（Ｓ８０３）では、インストールされたソフトウェア製品が使用される。導入フェーズ（Ｓ８０１）において正しくグループ認証が行われていれば、グループに属するソフトウェア製品はいずれも正常に起動される。一方、導入フェーズ（Ｓ８０１）において正しくグループ認証が行われていなければ、グループに属するソフトウェア製品はいずれも起動されない。
【００３７】
つまり、図６の左側に示した順番の通りにソフトウェア製品のインストールを行えば、ソフトウェア製品は正常に動作する。
【００３８】
一方、図９に示すように、インストールされたソフトウェア製品の構成が製品リストと一致しなければ、グループ認証は失敗する。また、図１０に示すように、インストールした順番がインストール順番データと合致しなければ、グループ認証は失敗する。以上で、本実施の形態に概要についての説明を終える。
【００３９】
以下、各装置における動作について説明する。まず、図４のＳ４０１に示した受注処理について説明する。
【００４０】
図１１を用いて、受注処理を行う販売管理サーバ１０３のモジュール構成について説明する。販売管理サーバ１０３は、送信部１１０１、受信部１１０３、受付部１１０５、生成部１１０７、格納処理部１１０９、印刷部１１１１、注文データ記憶部１１２１、ライセンスキー記憶部１１２３及びインストール順番記憶部１１２５を有する。
【００４１】
送信部１１０１は、各種データ（例えば、図４のＳ４０３に示したライセンス要求）を送信する。受信部１１０３は、各種データ（例えば、注文データ及び図４のＳ４１１に示したライセンスキーに関するデータ）を受信する。受付部１１０５は、注文データを受け付ける。生成部１１０７は、製品リストを生成する。格納処理部１１０９は、各テーブルへデータを格納する。印刷部１１１１は、プリンタ１０７にデータを印刷させる。
【００４２】
注文データ記憶部１１２１は、注文データを記憶する。ライセンスキー記憶部１１２３は、ライセンスキーを記憶する。インストール順番記憶部１１２５は、インストール順番データを記憶する。
【００４３】
上述した送信部１１０１、受信部１１０３、受付部１１０５、生成部１１０７、格納処理部１１０９及び印刷部１１１１は、ハードウェア資源（例えば、図４２）と、以下で述べる処理をプロセッサに実行させるプログラムとを用いて実現される。
【００４４】
上述した注文データ記憶部１１２１、ライセンスキー記憶部１１２３及びインストール順番記憶部１１２５は、ハードウェア資源（例えば、図４２）を用いて実現される。
【００４５】
図１２に、受注処理フローを示す。販売管理サーバ１０３の受付部１１０５は、注文データを受け付ける（Ｓ１２０１）。具体的には、販売員端末１０１から送信された注文データを販売管理サーバ１０３の受信部１１０３において受信する。
【００４６】
販売管理サーバ１０３の受付部１１０５は、受け付けた注文データに対して注文ＩＤを割り振る（Ｓ１２０３）。販売管理サーバ１０３の受付部１１０５は、注文データ記憶部１１２１に、注文ＩＤと対応付けて注文データを記憶する（Ｓ１２０５）。
【００４７】
販売管理サーバ１０３の受付部１１０５は、ライセンスタイプがプロセッサ単位であるレコードを特定する（Ｓ１２０７）。この例では、プロセッサ単位でライセンスが付与されるソフトウェア製品が纏められるが、サーバ単位でライセンスが付与されるソフトウェア製品が纏められるようにしてもよい。また、販売管理サーバ１０３の受付部１１０５は、ライセンスの期間が一致することを条件としてレコードを特定するようにしてもよい。
【００４８】
販売管理サーバ１０３の生成部１１０７は、特定したレコードに基づいて、製品リストを生成する（Ｓ１２０９）。そして、受注処理を終える。
【００４９】
続いて、図４のＳ４０７に示したライセンス発行処理について説明する。図１３を用いて、ライセンス発行処理を行うライセンス発行サーバ１０５のモジュール構成について説明する。ライセンス発行サーバ１０５は、受信部１３０１、送信部１３０３、決定部１３０５、生成部１３０７、割当部１３０９、固有コード記憶部１３２１、制約条件記憶部１３２３、暗号鍵記憶部１３２５、製品リスト記憶部１３２７及びインストール順番記憶部１３２９を有する。
【００５０】
受信部１３０１は、各種データ（例えば、図４のＳ４０５に示したライセンス要求）を受信する。送信部１３０３は、各種データ（例えば、図４のＳ４０９に示したライセンスキーに関するデータ）を送信する。決定部１３０５は、ソフトウェア製品のインストール順を決定する。生成部１３０７は、ライセンスキーを生成する。割当部１３０９は、グループＩＤを割り当てる。
【００５１】
固有コード記憶部１３２１は、固有コードテーブルを記憶する。固有コードテーブルは、予め設定されている。固有コードテーブルについては、図１４を用いて後述する。制約条件記憶部１３２３は、制約条件テーブルを記憶する。制約条件テーブルは、予め設定されている。制約条件テーブルについては、図１５を用いて後述する。暗号鍵記憶部１３２５は、暗号鍵を記憶する。暗号鍵は、ライセンスキーの生成において用いられる。製品リスト記憶部１３２７は、製品リストを記憶する。インストール順番記憶部１３２９は、インストール順番データを記憶する。
【００５２】
上述した受信部１３０１、送信部１３０３、決定部１３０５、生成部１３０７及び割当部１３０９は、ハードウェア資源（例えば、図４２）と、以下で述べる処理をプロセッサに実行させるプログラムとを用いて実現される。
【００５３】
上述した固有コード記憶部１３２１、制約条件記憶部１３２３、暗号鍵記憶部１３２５、製品リスト記憶部１３２７及びインストール順番記憶部１３２９は、ハードウェア資源（例えば、図４２）を用いて実現される。
【００５４】
図１４は、固有コードテーブルの例を示す図である。この例における固有コードテーブルは、ソフトウェア製品に対応するレコードを有している。固有コードテーブルのレコードは、製品名が格納されるフィールドと、固有コードが格納されるフィールドとを有している。固有コードは、製品名で特定されるソフトウェア製品について固有のコードである。図１４でＣｏｄｅＡ乃至ＣｏｄｅＣと示した固有コードの実体は、例えば製品名から推測し難いテキストコードである。
【００５５】
図１５は、制約条件テーブルの例を示す図である。この例における制約条件テーブルは、ソフトウェア製品に対応するレコードを有している。制約条件テーブルのレコードは、製品名が格納されるフィールドと、制約条件が格納されるフィールドとを有している。制約条件は、製品名で特定されるソフトウェア製品をインストールする場合の制約となる条件を特定する。
【００５６】
図１６は、ライセンス発行処理フローを示す図である。ライセンス発行サーバ１０５の決定部１３０５は、インストールする順番を無作為に決定する（Ｓ１６０１）。具体的には、１からレコード数Ｎまでの自然数を各レコードに割り当てる。
【００５７】
ここで、インストール順番データについて説明する。図１７は、インストール順番データの例を示す図である。この例におけるインストール順番データは、テーブル形式である。但し、インストール順番データは、テーブル形式以外の形式であってもよい。この例におけるインストール順番データは、インストールされるソフトウェア製品に対応するレコードを有している。インストール順番データのレコードは、製品名が格納されるフィールドと、コア数が格納されるフィールドと、インストール順番が格納されるフィールドとを有している。
【００５８】
製品名は、インストール対象のソフトウェア製品を特定する。コア数は、インストール対象のソフトウェア製品が適用されるサーバ装置２０１におけるコア数である。つまり、コア数は、プロセッサ単位で付与されるライセンスの数に相当する。インストール順番は、当該ソフトウェア製品をインストールする順番を特定する。
【００５９】
図１６の説明に戻る。ライセンス発行サーバ１０５の決定部１３０５は、各ソフトウェア製品のインストールについて制約条件を満たしているか否かを判定する（Ｓ１６０３）。いずれかのソフトウェア製品のインストールについて制約条件を満たしていないと判定した場合には、Ｓ１６０１に示した処理に戻って、上述した処理を繰り返す。
【００６０】
一方、各ソフトウェア製品のインストールについて制約条件を満たしていると判定した場合には、ライセンス発行サーバ１０５の生成部１３０７は、ライセンスキー生成処理を実行する（Ｓ１６０５）。ライセンス発行サーバ１０５の生成部１３０７は、ライセンスキー生成処理において、グループに対するライセンスキーを生成する。
【００６１】
図１８に、実施の形態１におけるライセンスキー生成の手順を示す。インストールされる順番に従って、ソフトウェア製品に対応する固有コードとコア数とを連結することによって連結コードが生成される（Ｓ１８０１）。
【００６２】
そして、この連結コードに基づくハッシュ値が算出される（Ｓ１８０３）。ライセンス発行サーバ１０５で生成される正規のハッシュ値を、以下では第１ハッシュ値と呼ぶ。
【００６３】
第１ハッシュ値にライセンスの期間を結合することによって暗号化の基礎となる平文が生成される（Ｓ１８０５）。
【００６４】
この平文を暗号化することによって暗号文が得られる（Ｓ１８０７）。そして、バイナリコードである暗号文を文字列コードに変換することによってライセンスキーが得られる（Ｓ１８０９）。
【００６５】
図１９に示したライセンスキー生成処理（Ａ）フローは、上述した手順に従っている。ライセンス発行サーバ１０５の生成部１３０７は、製品リストにおけるインストールの順番に従ってインストール対象のソフトウェア製品を１つ特定する（Ｓ１９０１）。ライセンス発行サーバ１０５の生成部１３０７は、当該ソフトウェア製品の固有コードを連結コードに加える（Ｓ１９０３）。固有コードは、固有コードテーブルから取得される。ライセンス発行サーバ１０５の生成部１３０７は、当該ソフトウェア製品に対応するコア数を連結コードに加える（Ｓ１９０５）。コア数は、製品リストから取得される。
【００６６】
ライセンス発行サーバ１０５の生成部１３０７は、最後にインストールされるソフトウェア製品について処理したか否かを判定する（Ｓ１９０７）。まだ、最後にインストールされるソフトウェア製品について処理していないと判定した場合には、Ｓ１９０１に示した処理に戻って、上述した処理を繰り返す。
【００６７】
一方、最後にインストールされるソフトウェア製品について処理したと判定した場合には、ライセンス発行サーバ１０５の生成部１３０７は、上述した処理において生成した連結コードのハッシュ値を算出する（Ｓ１９０９）。このとき、所定のハッシュ関数が用いられる。
【００６８】
ライセンス発行サーバ１０５の生成部１３０７は、Ｓ１９０９で生成した第１ハッシュ値に期間を加えて平文を生成する（Ｓ１９１１）。ライセンス発行サーバ１０５の生成部１３０７は、暗号鍵記憶部１３２５に記憶されている暗号鍵を用いて、平文を暗号化する（Ｓ１９１３）。ライセンス発行サーバ１０５の生成部１３０７は、得られた暗号文をライセンスキーに変換する（Ｓ１９１５）。この変換では、バイナリコードをテキストコードに変換する所定の関数を用いる。ライセンスキー生成処理（Ａ）を終えると、呼び出し元の図１６のライセンス発行処理に復帰する。
【００６９】
図１６の説明に戻る。ライセンス発行サーバ１０５の割当部１３０９は、当該グループに対してグループＩＤを割り当てる（Ｓ１６０７）。ライセンス発行処理を終えると、図４のＳ４０９に示した処理に復帰する。
【００７０】
続いて、図２０を用いて、納品準備処理について説明する。販売管理サーバ１０３の格納処理部１１０９は、受注処理で割り当てられた注文ＩＤ、図４のＳ４１１で受信したグループＩＤ及びライセンスキーを対応付けて、ライセンスキーテーブルに格納する（Ｓ２００１）。
【００７１】
図２１は、ライセンスキーテーブルの例を示す図である。この例におけるライセンスキーテーブルは、グループに対応するレコードを有している。ライセンスキーテーブルのレコードは、注文ＩＤが格納されるフィールドと、グループＩＤが格納されるフィールドと、ライセンスキーが格納されるフィールドとを有している。
【００７２】
注文ＩＤは、ライセンスキーが付与されたグループの元である注文を特定する。グループＩＤは、ライセンスキーが付与されたグループを特定する。図２１でＫＥＹ１及びＫＥＹ２と示したライセンスキーの実体は、例えば英字コード又は数字コードの列である。
【００７３】
図２０の説明に戻る。販売管理サーバ１０３の格納処理部１１０９は、受注処理で割り当てられた注文ＩＤ、図４のＳ４１１で受信したグループＩＤ及びインストール順番データを対応付けて、インストール順番記憶部１１２５に格納する（Ｓ２００３）。
【００７４】
販売管理サーバ１０３は、注文ＩＤ、購入者名、グループＩＤ、ライセンスキー及びインストール順番データを出力する（Ｓ２００５）。この例では、販売管理サーバ１０３の印刷部１１１１が、注文ＩＤ、購入者名、グループＩＤ、ライセンスキー及びインストール順番データを、プリンタ１０７に印刷させる。あるいは、販売管理サーバ１０３の送信部１１０１が、注文ＩＤ、購入者名、グループＩＤ、ライセンスキー及びインストール順番データを販売員端末１０１へ送信するようにしてもよい。そして、納品準備処理を終える。尚、購入者が、グループＩＤを任意のグループ名に置き換えて運用するようにしてもよい。
【００７５】
顧客システムにおける導入フェーズ（図８のＳ８０１）の説明に移る。図２２に製品メディア７０１の構成を示す。製品メディア７０１は、製品プログラム２２０１、製品管理ツール２２０３及びツールインストーラ２２０５を格納している。製品プログラム２２０１は、サーバ装置２０１へインストールされるソフトウェア製品のプログラムである。製品管理ツール２２０３は、顧客システムに含まれる各サーバ装置２０１にインストールされる。各サーバ装置２０１における製品管理ツール２２０３は、連携して顧客システムにおけるソフトウェア製品を管理する。製品管理ツール２２０３の構成については、図２４を用いて後述する。ツールインストーラ２２０５は、製品管理ツール２２０３をインストールするためのプログラムである。
【００７６】
図２３に、ツールインストーラ２２０５の処理フローを示す。製品メディア７０１がサーバ装置２０１における読み取り装置にセットされると、ツールインストーラ２２０５が起動する。ツールインストーラ２２０５は、製品管理ツール２２０３が当該サーバ装置２０１に既にインストールされているか否かを判定する（Ｓ２３０１）。製品管理ツール２２０３が当該サーバ装置２０１に未だインストールされていないと判定した場合には、ツールインストーラ２２０５は、製品管理ツール２２０３を当該サーバ装置２０１にインストールする（Ｓ２３０３）。一方、製品管理ツール２２０３が当該サーバ装置２０１に既にインストールされていると判定した場合には、製品管理ツール２２０３のインストールは行われない。
【００７７】
そして、ツールインストーラ２２０５は、製品管理ツール２２０３の導入処理を起動して（Ｓ２３０５）、ツールインストーラ２２０５の処理を終了する。製品管理ツール２２０３の導入処理については、図２７を用いて後述する。
【００７８】
図２４を用いて、製品管理ツール２２０３がインストールされた状態におけるサーバ装置２０１のモジュール構成について説明する。
【００７９】
製品管理ツール２２０３は、連携部２４０１、同期部２４０３、受付部２４０５、製品インストーラ２４０７、特定部２４０９、格納処理部２４１１、取得部２４１３、認証部２４１５、出力部２４１７、判定部２４１９、起動部２４２１、復号鍵記憶部２４３１、インストールテーブル記憶部２４３３及びライセンステーブル記憶部２４３５を有する。
【００８０】
連携部２４０１は、他の製品管理ツール２２０３との連携処理を実行する。連携処理によって、異なるサーバ装置２０１で動作している製品管理ツール２２０３の間における通信環境が整う。同期部２４０３は、インストールテーブルの同期処理及びライセンステーブルの同期処理を行う。受付部２４０５は、ユーザ操作による各種指示を受け付ける。製品インストーラ２４０７は、製品メディア７０１に格納されている製品プログラム２２０１のインストールを行う。特定部２４０９は、当該サーバ装置２０１におけるコア数、当日日付及び現在時刻を特定する。格納処理部２４１１は、各テーブルへ各種データを格納する。取得部２４１３は、インストールテーブルから特定のグループに係るレコードを取得する。認証部２４１５は、グループ認証処理を実行する。出力部２４１７は、各種メッセージを出力する。例えば、出力部２４１７は、表示装置に各メッセージを含むウインドウを表示させる。判定部２４１９は、ライセンスに関する判定を行う。起動部２４２１は、インストールされた製品プログラム２２０１を起動する。
【００８１】
復号鍵記憶部２４３１は、復号鍵を記憶する。復号鍵は、ライセンス発行サーバ１０５の暗号鍵記憶部１３２５に記憶されている暗号鍵に対応する。インストールテーブル記憶部２４３３は、インストールテーブルを記憶する。インストールテーブルについては、図２５を用いて後述する。ライセンステーブル記憶部２４３５は、ライセンステーブルを記憶する。ライセンステーブルについては、図２６を用いて後述する。
【００８２】
サーバ装置２０１は、更に送信部２４４１、受信部２４４３及びオペレーティングシステム２４４５を有する。送信部２４４１は、各種データを送信する。受信部２４４３は、各種データを受信する。
【００８３】
上述した連携部２４０１、同期部２４０３、受付部２４０５、製品インストーラ２４０７、特定部２４０９、格納処理部２４１１、取得部２４１３、認証部２４１５、出力部２４１７、判定部２４１９、起動部２４２１、送信部２４４１及び受信部２４４３は、ハードウェア資源（例えば、図４２）と、以下で述べる処理をプロセッサに実行させるプログラムとを用いて実現される。
【００８４】
上述した復号鍵記憶部２４３１、インストールテーブル記憶部２４３３及びライセンステーブル記憶部２４３５は、ハードウェア資源（例えば、図４２）を用いて実現される。
【００８５】
図２５は、インストールテーブルの例を示す図である。この例におけるインストールテーブルは、インストールされたソフトウェア製品に対応するレコードを有している。インストールテーブルのレコードは、製品名が格納されるフィールドと、コア数が格納されるフィールドと、グループＩＤが格納されるフィールドと、インストール日付及び時刻が格納されるフィールドとを有している。
【００８６】
製品名は、インストールされたソフトウェア製品を特定する。コア数は、当該ソフトウェア製品がインストールされたサーバ装置２０１におけるコア数である。コア数は、当該ソフトウェア製品に関するプロセッサ単位のライセンス数に相当する。グループＩＤは、当該ソフトウェア製品が属するグループを特定する。インストール日付及び時刻は、当該ソフトウェア製品がインストールされた時点を特定する。
【００８７】
この例で、製品プログラム２２０１がインストールされた時点で新しいレコードが追加されるので、インストール日付及び時刻の昇順にレコードが並ぶ。つまり、レコードの並び順によってインストールの順番が特定される。尚、インストールの順番が格納されるフィールドを設けて、当該フィールドに設定されている値によってインストールの順番が特定されるようにしてもよい。或いは、インストール日付及び時刻によってインストールの順番が特定されるようにしてもよい。
【００８８】
図２６は、ライセンステーブルの例を示す図である。この例におけるライセンステーブルは、ライセンスキーの発行に対応するレコードを有している。ライセンステーブルのレコードは、グループＩＤが格納されるフィールドと、期間が格納されるフィールドとを有している。グループＩＤは、ライセンスキーの発行対象となったグループを特定する。期間は、ライセンスが有効である期間を特定する。
【００８９】
図２７を用いて、図２３のＳ２３０５に示した製品管理ツール２２０３の導入処理について説明する。製品管理ツール２２０３の連携部２４０１は、他の製品管理ツール２２０３との連携処理を実行する（Ｓ２７０１）。具体的には、連携部２４０１は、他のサーバ装置２０１において動作している製品管理ツール２２０３を探索して、他のサーバ装置２０１における製品管理ツール２２０３と接続する。
【００９０】
製品管理ツール２２０３の同期部２４０３は、インストールテーブルの同期処理を実行する（Ｓ２７０３）。インストールテーブルの同期処理では、各製品管理ツール２２０３におけるインストールテーブル記憶部２４３３に記憶されているインストールテーブルを最新の状態に更新する。製品管理ツール２２０３の同期部２４０３は、送信部２４４１及び受信部２４４３を用いて、インストールテーブルの同期を行う。
【００９１】
製品管理ツール２２０３の同期部２４０３は、ライセンステーブルの同期処理を実行する（Ｓ２７０５）。ライセンステーブルの同期処理では、各製品管理ツール２２０３におけるライセンステーブル記憶部２４３５に記憶されているライセンステーブルを最新の状態に更新する。製品管理ツール２２０３の同期部２４０３は、送信部２４４１及び受信部２４４３を用いて、ライセンステーブルの同期を行う。
【００９２】
製品管理ツール２２０３の受付部２４０５は、製品プログラム２２０１のインストール指示を受け付けたか否かを判定する（Ｓ２７０７）。製品プログラム２２０１のインストール指示を受け付けていないと判定した場合には、導入処理を終える。
【００９３】
製品プログラム２２０１のインストール指示を受け付けたと判定した場合には、製品管理ツール２２０３の製品インストーラ２４０７は、指示された製品プログラム２２０１のインストールを行う（Ｓ２７０９）。インストールを完了すると、製品管理ツール２２０３の受付部２４０５は、ユーザ（例えば、販売員）にグループＩＤの入力を促すウインドウを表示する。そして、製品管理ツール２２０３の受付部２４０５は、グループＩＤを受け付ける（Ｓ２７１１）。
【００９４】
製品管理ツール２２０３の特定部２４０９は、オペレーティングシステム２４４５に問い合わせてサーバ装置２０１自身におけるコア数を特定する（Ｓ２７１３）。更に、製品管理ツール２２０３の特定部２４０９は、オペレーティングシステム２４４５に問い合わせて当日日付及び現在時刻を特定する（Ｓ２７１５）。当日日付及び現在時刻は、インストール日付及び時刻に相当する。
【００９５】
製品管理ツール２２０３の格納処理部２４１１は、インストールした製品プログラム２２０１を特定する製品名、コア数、グループＩＤ、インストール日付及び時刻を、インストールテーブルに格納する（Ｓ２７１７）。このとき、製品管理ツール２２０３の格納処理部２４１１は、インストール日付及び時刻をキーとして、インストールテーブルのレコードをソートするようにしてもよい。端子Ａを介して、図２８に示したＳ２８０１の処理に移る。
【００９６】
製品管理ツール２２０３の同期部２４０３は、インストールテーブルの同期処理を実行する（Ｓ２８０１）。
【００９７】
この段階で、製品管理ツール２２０３の受付部２４０５は、ユーザにグループ登録或いは処理終了の指示を促すウインドウを表示する。そして、製品管理ツール２２０３の受付部２４０５は、グループ登録の指示を受け付けたか否かを判定する（Ｓ２８０３）。グループ登録の指示を受け付けていないと判定した場合、つまり処理終了が指示された場合には、導入処理を終える。一方、グループ登録の指示を受け付けたと判定した場合には、グループ認証を行うための処理に移る。
【００９８】
製品管理ツール２２０３の受付部２４０５は、グループＩＤ及びライセンスキーの入力を促すウインドウを表示し、グループＩＤ及びライセンスキーを受け付ける（Ｓ２８０５）。
【００９９】
製品管理ツール２２０３の取得部２４１３は、インストールテーブルにおいて、受け付けたグループＩＤを含むレコードを取得する（Ｓ２８０７）。製品管理ツール２２０３の認証部２４１５は、取得したレコードに基づいて、グループ認証処理を実行する（Ｓ２８０９）。
【０１００】
本実施の形態では、グループ認証処理（Ａ）を実行する。図２９に、グループ認証処理（Ａ）フローを示す。
【０１０１】
製品管理ツール２２０３の認証部２４１５は、第１ハッシュ値抽出処理を実行する（Ｓ２９０１）。製品管理ツール２２０３の認証部２４１５は、第１ハッシュ値抽出処理において、ライセンスキーから第１ハッシュ値を抽出する。
【０１０２】
図３０に、第１ハッシュ値を抽出する手順を示す。まず、ライセンスキーが暗号文に変換される（Ｓ３００１）。次に、暗号文が復号され、第１ハッシュ値と期間とが連結された平文が得られる（Ｓ３００３）。そして、平文から第１ハッシュ値が取り出される（Ｓ３００５）。
【０１０３】
図３１は、第１ハッシュ値抽出処理フローを示す図である。製品管理ツール２２０３の認証部２４１５は、ライセンスキーを暗号文に変換する（Ｓ３１０１）。この変換は、Ｓ１９１５においてバイナリコードをテキストコードに変換した所定の関数に対応する関数であって、テキストコードをバイナリコードに変換する。
【０１０４】
製品管理ツール２２０３の認証部２４１５は、復号鍵記憶部２４３１に記憶されている復号鍵を用いて暗号文を復号する（Ｓ３１０３）。製品管理ツール２２０３の認証部２４１５は、得られた平文から第１ハッシュ値を取り出す（Ｓ３１０５）。第１ハッシュ値抽出処理を終えると、呼び出し元のグループ認証処理（Ａ）に復帰する。
【０１０５】
図２９の説明に戻る。製品管理ツール２２０３の認証部２４１５は、第２ハッシュ値算出処理を実行する（Ｓ２９０３）。製品管理ツール２２０３の認証部２４１５は、第２ハッシュ値算出処理において、インストールテーブルに基づいて、ハッシュ値を算出する。このとき算出されるハッシュ値を第２ハッシュ値と呼ぶ。尚、第２ハッシュ値算出処理は、ライセンスキー生成処理の一部と同様である。
【０１０６】
図３２に、第２ハッシュ値算出処理フローを示す。製品管理ツール２２０３の認証部２４１５は、図２８のＳ２８０７で取得したレコードに関して、インストールの順番に従ってインストール対象のソフトウェア製品を１つ特定する（Ｓ３２０１）。
【０１０７】
製品管理ツール２２０３の認証部２４１５は、当該ソフトウェア製品の固有コードを連結コードに加える（Ｓ３２０３）。製品管理ツール２２０３の認証部２４１５は、当該ソフトウェア製品が適用されるコア数を連結コードに加える（Ｓ３２０５）。
【０１０８】
製品管理ツール２２０３の認証部２４１５は、最後にインストールされたソフトウェア製品について処理したか否かを判定する（Ｓ３２０７）。最後にインストールされたソフトウェア製品について未だ処理していないと判定した場合には、Ｓ３２０１に示した処理に戻って、上述した処理を繰り返す。
【０１０９】
一方、最後にインストールされたソフトウェア製品について処理したと判定した場合には、製品管理ツール２２０３の認証部２４１５は、連結コードのハッシュ値を算出する（Ｓ３２０９）。第２ハッシュ値算出処理を終えると、呼び出し元のグループ認証処理（Ａ）に復帰する。
【０１１０】
図２９の説明に戻る。製品管理ツール２２０３の認証部２４１５は、第１ハッシュ値が第２ハッシュ値と一致するか否かを判定する（Ｓ２９０５）。第１ハッシュ値が第２ハッシュ値と一致する場合には、製品管理ツール２２０３の認証部２４１５は、グループ認証が成功したと判定する（Ｓ２９０７）。
【０１１１】
一方、第１ハッシュ値が第２ハッシュ値と一致しない場合には、製品管理ツール２２０３の認証部２４１５は、グループ認証が失敗したと判定する（Ｓ２９０９）。グループ認証処理（Ａ）を終えると、呼び出し元の導入処理に復帰する。
【０１１２】
図２８の説明に戻る。サーバ装置２０１は、グループ認証が成功したか否かを判定する（Ｓ２８１１）。グループ認証が成功していない場合には、製品管理ツール２２０３の出力部２４１７は、グループ認証が失敗した旨のメッセージを出力する（Ｓ２８１３）。そして、製品管理ツール２２０３の受付部２４０５は、再認証の指示を受け付けたか否かを判定する（Ｓ２８１５）。再認証の指示を受け付けたと判定した場合には、Ｓ２８０５に示した処理に戻って、上述した処理を繰り返す。一方、再認証の指示を受け付けていないと判定した場合には、導入処理を終える。
【０１１３】
Ｓ２８１１において、グループ認証が成功したと判定した場合には、製品管理ツール２２０３の格納処理部２４１１は、図２７のＳ２７１１で受け付けたグループＩＤ及び平文から得られる期間をライセンステーブルに格納する（Ｓ２８１７）。製品管理ツール２２０３の同期部２４０３は、ライセンステーブルの同期処理を実行する（Ｓ２８１９）。
【０１１４】
製品管理ツール２２０３の出力部２４１７は、グループ認証が成功した旨のメッセージを出力する（Ｓ２８２１）。そして、製品管理ツール２２０３は、導入処理を終える。
【０１１５】
続いて、図３３を用いて、製品管理ツール２２０３の運用処理について説明する。製品管理ツール２２０３の受付部２４０５が製品プログラム２２０１の起動指示を受け付けると（Ｓ３３０１）、製品管理ツール２２０３の判定部２４１９は、インストールテーブルを参照して、当該製品プログラム２２０１が属するグループのＩＤを特定する（Ｓ３３０３）。
【０１１６】
製品管理ツール２２０３の判定部２４１９は、当該グループＩＤがライセンステーブルに格納されているか否かを判定する（Ｓ３３０５）。当該グループＩＤがライセンステーブルに格納されていない場合には、製品管理ツール２２０３の判定部２４１９は、ライセンスを受けていないと判定する（Ｓ３３０７）。そして、製品管理ツール２２０３の出力部２４１７は、ライセンスを受けていない旨のメッセージを出力する（Ｓ３３０９）。その後、Ｓ３３０１に示した処理に戻って、上述した処理を繰り返す。一方、当該グループＩＤがライセンステーブルに格納されている場合には、端子Ｂを介して、図３４に示したＳ３４０１の処理に移る。
【０１１７】
製品管理ツール２２０３の判定部２４１９は、ライセンステーブルから、当該グループＩＤに対応する期間を取り出す（Ｓ３４０１）。製品管理ツール２２０３の判定部２４１９は、オペレーティングシステム２４４５に問い合わせて当日日付を特定する（Ｓ３４０３）。製品管理ツール２２０３の判定部２４１９は、当日日付が当該期間に含まれるか否かを判定する（Ｓ３４０５）。
【０１１８】
当日日付が当該期間に含まれる場合には、製品管理ツール２２０３の判定部２４１９は、ライセンスが有効であると判定する（Ｓ３４０７）。そして、製品管理ツール２２０３の起動部２４２１は、インストールされている当該製品プログラム２２０１を起動する（Ｓ３４０９）。その後、端子Ｃを介して図３３のＳ３３０１に示した処理に戻って、上述した処理を繰り返す。
【０１１９】
一方、当日日付が当該期間に含まれない場合には、製品管理ツール２２０３の判定部２４１９は、ライセンスが無効であると判定する（Ｓ３４１１）。そして、製品管理ツール２２０３の出力部２４１７は、ライセンスが無効である旨のメッセージを出力する（Ｓ３４１３）。その後、端子Ｃを介して、図３３に示したＳ３３０１の処理に戻って、上述した処理を繰り返す。
【０１２０】
本実施の形態によれば、複数のソフトウェア製品に関する使用許諾の認証において、所定の順番に従わずに許諾対象のソフトウェア製品がインストールされたことを判別できる。
【０１２１】
また、対応コア数の異なる同一ソフトウェア製品に関するインストール順番を区別できる。
【０１２２】
また、使用許諾の有効期間以外でのソフトウェア製品の使用を防止できる。
【０１２３】
［実施の形態２］
上述した実施の形態では、ライセンスキー生成処理において、固有コード及びコア数を暗号の基礎とする例を示した。本実施の形態では、固有コード及びコア数を暗号鍵として用いる例について説明する。
【０１２４】
図３５に、実施の形態２におけるライセンス発行サーバ１０５のモジュール構成例を示す。実施の形態２におけるライセンス発行サーバ１０５は、暗号鍵記憶部１３２５に代えてシードコード記憶部３５０１を有する。シードコード記憶部３５０１は、共通シードコードを記憶する。共通シードコードは、暗号の基礎として用いられる。尚、共通シードコードは、予め設定されている。
【０１２５】
上述したシードコード記憶部３５０１は、ハードウェア資源（例えば、図４２）を用いて実現される。
【０１２６】
図３６に、実施の形態２におけるライセンスキー生成の手順を示す。まず、１番目にインストールするソフトウェア製品に対応する固有コードとコア数とを連結した第１暗号鍵が生成される。そして、共通シードコードと期間とを連結した平文を、第１暗号鍵を用いて暗号化する（Ｓ３６０１）。
【０１２７】
次に、２番目にインストールするソフトウェア製品に対応する固有コードとコア数とを連結した第２暗号鍵が生成される。そして、Ｓ３６０１における暗号化で得られた第１暗号文を、第２暗号鍵を用いて暗号化する（Ｓ３６０３）。
【０１２８】
次に、３番目にインストールするソフトウェア製品に対応する固有コードとコア数とを連結した第３暗号鍵が生成される。そして、Ｓ３６０３における暗号化で得られた第２暗号文を、第３暗号鍵を用いて暗号化する（Ｓ３６０５）。
【０１２９】
次に、４番目にインストールするソフトウェア製品に対応する固有コードとコア数とを連結した第４暗号鍵が生成される。そして、Ｓ３６０５における暗号化で得られた第３暗号文を、第４暗号鍵を用いて暗号化する（Ｓ３６０７）。
【０１３０】
次に、５番目にインストールするソフトウェア製品に対応する固有コードとコア数とを連結した第５暗号鍵が生成される。そして、Ｓ３６０７における暗号化で得られた第４暗号文を、第５暗号鍵を用いて暗号化する（Ｓ３６０９）。
【０１３１】
このとき得られる第５暗号文が、この例における最終暗号文に相当する。最後に、最終暗号文がライセンスキーに変換される（Ｓ３６１１）。
【０１３２】
本実施の形態では、ライセンスキー生成処理（Ａ）に代えて、上述した手順に従うライセンスキー生成処理（Ｂ）を実行する。
【０１３３】
図３７を用いて、ライセンスキー生成処理（Ｂ）について説明する。ライセンス発行サーバ１０５の生成部１３０７は、共通シードコードと期間とを連結して平文を生成する（Ｓ３７０１）。
【０１３４】
ライセンス発行サーバ１０５の生成部１３０７は、インストール順番の昇順にインストール対象のソフトウェア製品を１つ特定する（Ｓ３７０３）。ライセンス発行サーバ１０５の生成部１３０７は、当該製品の固有コードと当該製品が適用されるコア数とを連結して暗号鍵を生成する（Ｓ３７０５）。ライセンス発行サーバ１０５の生成部１３０７は、生成した暗号鍵を用いて暗号化を行う（Ｓ３７０７）。１回目には、Ｓ３７０１で生成された平文を対象とする。
【０１３５】
ライセンス発行サーバ１０５の生成部１３０７は、最後にインストールされるソフトウェア製品について処理したか否かを判定する（Ｓ３７０９）。最後にインストールされるソフトウェア製品について未だ処理していないと判定した場合には、Ｓ３７０３に示した処理に戻って、上述した処理を繰り返す。尚、２回目以降のＳ３７０７において、前回の暗号化で得られた暗号文を対象として暗号化を行う。
【０１３６】
最後にインストールされるソフトウェア製品について処理したと判定した場合には、ライセンス発行サーバ１０５の生成部１３０７は、最終暗号文をライセンスキーに変換する（Ｓ３７１１）。ライセンスキー生成処理（Ｂ）を終えると、呼び出し元の処理に復帰する。
【０１３７】
続いて、サーバ装置２０１の動作について説明する。図３８に、実施の形態２におけるサーバ装置２０１のモジュール構成例を示す。実施の形態２におけるサーバ装置２０１は、復号鍵記憶部２４３１に代えてシードコード記憶部３８０１を有する。シードコード記憶部３８０１は、上述した共通シードコードを記憶する。
【０１３８】
上述したシードコード記憶部３８０１は、ハードウェア資源（例えば、図４２）を用いて実現される。
【０１３９】
本実施の形態では、グループ認証処理（Ａ）に代えて、グループ認証処理（Ｂ）を実行する。図３９に、グループ認証処理（Ｂ）フローを示す。製品管理ツール２２０３の認証部２４１５は、シードコード抽出処理を実行する（Ｓ３９０１）。製品管理ツール２２０３の認証部２４１５は、図２８のＳ２８０５において受け付けたライセンスキーからシードコードを抽出する。
【０１４０】
図４０に、シードコード抽出の手順を示す。まず、文字列コードであるライセンスキーがバイナリコードに変換される。この例で、ライセンスキーが正当であれば、上述した第５暗号文が得られる（Ｓ４００１）。
【０１４１】
最後にインストールされたソフトウェア製品、この例では５番目にインストールされたソフトウェア製品に対応する固有コードとコア数とを連結した第５復号鍵が生成される。第５復号鍵を用いて第５暗号文が復号される。そして、第４暗号文が得られる（Ｓ４００３）。
【０１４２】
次に、４番目にインストールされたソフトウェア製品に対応する固有コードとコア数とを連結した第４復号鍵が生成される。第４復号鍵を用いて第４暗号文が復号される。そして、第３暗号文が得られる（Ｓ４００５）。
【０１４３】
次に、３番目にインストールされたソフトウェア製品に対応する固有コードとコア数とを連結した第３復号鍵が生成される。第３復号鍵を用いて第３暗号文が復号される。そして、第２暗号文が得られる（Ｓ４００７）。
【０１４４】
次に、２番目にインストールされたソフトウェア製品に対応する固有コードとコア数とを連結した第２復号鍵が生成される。第２復号鍵を用いて第２暗号文が復号される。そして、第１暗号文が得られる（Ｓ４００９）。
【０１４５】
最後に、最初にインストールされたソフトウェア製品に対応する固有コードとコア数とを連結した第１復号鍵が生成される。第１復号鍵を用いて第１暗号文が復号される。そして、シードコードと期間とが連結された平文が得られる（Ｓ４０１１）。この平文からシードコードが特定される（Ｓ４０１３）。
【０１４６】
図４１に、上述した手順に従うシードコード抽出処理フローを示す。製品管理ツール２２０３の認証部２４１５は、ライセンスキーを最終暗号文に変換する（Ｓ４１０１）。
【０１４７】
製品管理ツール２２０３の認証部２４１５は、インストールテーブルに基づいて、インストール順番の降順にインストール対象のソフトウェア製品を１つ特定する（Ｓ４１０３）。製品管理ツール２２０３の認証部２４１５は、当該製品の固有コードと当該製品が適用されるコア数とを連結して復号鍵を生成する（Ｓ４１０５）。製品管理ツール２２０３の認証部２４１５は、生成した復号鍵を用いて暗号文を復号する（Ｓ４１０７）。１回目では、Ｓ４１０１で得られた最終暗号文を対象として復号が行われる。
【０１４８】
製品管理ツール２２０３の認証部２４１５は、最初にインストールされた製品について処理したか否かを判定する（Ｓ４１０９）。最初にインストールされた製品について未だ処理していないと判定した場合には、Ｓ４１０３に示した処理に戻って、上述した処理を繰り返す。尚、２回目以降のＳ４１０５の処理では、前回の復号において得られたデータを対象として復号を行う。
【０１４９】
一方、最初にインストールされた製品について処理したと判定した場合には、製品管理ツール２２０３の認証部２４１５は、平文からシードコードを取り出す（Ｓ４１１１）。シードコード抽出処理を終えると、呼び出し元のグループ認証処理（Ｂ）に復帰する。
【０１５０】
図３９の説明に戻る。製品管理ツール２２０３の認証部２４１５は、シードコード記憶部３８０１から共通シードコードを取得する（Ｓ３９０３）。製品管理ツール２２０３の認証部２４１５は、Ｓ３９０１で抽出したシードコードが共通シードコードと一致するか否かを判定する（Ｓ３９０５）。
【０１５１】
抽出したシードコードが共通シードコードと一致すると判定した場合には、製品管理ツール２２０３の認証部２４１５は、グループ認証が成功したと判定する（Ｓ３９０７）。一方、抽出したシードコードが共通シードコードと一致しないと判定した場合には、製品管理ツール２２０３の認証部２４１５は、グループ認証が失敗したと判定する（Ｓ３９０９）。グループ認証処理（Ｂ）を終えると、呼び出し元の処理に復帰する。
【０１５２】
本実施の形態においても、実施の形態１と同等の効果を奏する。
【０１５３】
尚、上述した実施の形態においてコア数を省くようにしてもよい。その場合には、各テーブルにおけるコア数のフィールドを除くようにしてもよい。同じく図１９のＳ１９０５に示した処理を省くようにしてもよい。同じく図２７のＳ２７１３に示した処理を省くようにしてもよい。同じく図３２のＳ３２０５に示した処理を省くようにしてもよい。同じく図３７のＳ３７０５に示した処理において、固有コードを暗号鍵として用いるようにしてもよい。同じく図４１のＳ４１０５に示した処理において、固有コードを復号鍵として用いるようにしてもよい。
【０１５４】
以上本発明の実施の形態を説明したが、本発明はこれに限定されるものではない。例えば、上述の機能ブロック構成はプログラムモジュール構成に一致しない場合もある。
【０１５５】
また、上で説明した各記憶領域の構成は一例であって、上記のような構成でなければならないわけではない。さらに、処理フローにおいても、処理結果が変わらなければ、処理の順番を入れ替えることや複数の処理を並列に実行させるようにしても良い。
【０１５６】
なお、上で述べた販売管理サーバ１０３、ライセンス発行サーバ１０５及びサーバ装置２０１は、コンピュータ装置であって、図４２に示すように、メモリ２５０１とＣＰＵ（Central Processing Unit）２５０３とハードディスク・ドライブ（ＨＤＤ：Hard Disk Drive）２５０５と表示装置２５０９に接続される表示制御部２５０７とリムーバブル・ディスク２５１１用のドライブ装置２５１３と入力装置２５１５とネットワークに接続するための通信制御部２５１７とがバス２５１９で接続されている。オペレーティングシステム（ＯＳ：Operating System）及び本実施例における処理を実施するためのアプリケーション・プログラムは、ＨＤＤ２５０５に格納されており、ＣＰＵ２５０３により実行される際にはＨＤＤ２５０５からメモリ２５０１に読み出される。ＣＰＵ２５０３は、アプリケーション・プログラムの処理内容に応じて表示制御部２５０７、通信制御部２５１７、ドライブ装置２５１３を制御して、所定の動作を行わせる。また、処理途中のデータについては、主としてメモリ２５０１に格納されるが、ＨＤＤ２５０５に格納されるようにしてもよい。本発明の実施例では、上で述べた処理を実施するためのアプリケーション・プログラムはコンピュータ読み取り可能なリムーバブル・ディスク２５１１に格納されて頒布され、ドライブ装置２５１３からＨＤＤ２５０５にインストールされる。インターネットなどのネットワーク及び通信制御部２５１７を経由して、ＨＤＤ２５０５にインストールされる場合もある。このようなコンピュータ装置は、上で述べたＣＰＵ２５０３、メモリ２５０１などのハードウェアとＯＳ及びアプリケーション・プログラムなどのプログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
【０１５７】
以上述べた本発明の実施の形態をまとめると、以下のようになる。
【０１５８】
本実施の形態に係る認証方法は、（Ａ）複数のソフトウェアのインストール順を示す情報を受け付け、（Ｂ）複数のソフトウェアのサーバへのインストール実績情報を記憶する記憶部を参照して、インストール実績情報から複数のソフトウェアのサーバへのインストール順を示す情報を取得し、（Ｃ）受け付けたインストール順を示す情報と、取得したインストール順を示す情報との一致性に基づき、複数のソフトウェアの使用許諾に関する認証を行う処理を含む。
【０１５９】
このようにすれば、複数のソフトウェアに関する使用許諾の認証において、所定の順番に従わずに許諾対象のソフトウェアがインストールされたことを判別できる。例えば、無断流用のようなソフトウェアの不正使用を防ぐことに役立つ面がある。
【０１６０】
更に、受け付けられるインストール順を示す情報と、取得されるインストール順を示す情報とは、いずれもインストール対象のハードウェア条件によって複数のソフトウェアを区別するようにしてもよい。
【０１６１】
このようにすれば、ハードウェア条件の異なる同一ソフトウェアに関するインストール順番を区別できる。
【０１６２】
更に、受け付けたインストール順を示す情報から抽出された許諾期間に該当しない場合に、使用許諾が無効であると判定するようにしてもよい。
【０１６３】
このようにすれば、使用許諾の有効期間以外でのソフトウェア使用を防止できる。
【０１６４】
なお、上記方法による処理をコンピュータに行わせるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブルディスク、ＣＤ−ＲＯＭ、光磁気ディスク、半導体メモリ、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納されるようにしてもよい。尚、中間的な処理結果は、一般的にメインメモリ等の記憶装置に一時保管される。
【０１６５】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
【０１６６】
（付記１）
複数のソフトウェアのインストール順を示す情報を受け付け、
前記複数のソフトウェアのサーバへのインストール実績情報を記憶する記憶部を参照して、前記インストール実績情報から前記複数のソフトウェアの前記サーバへのインストール順を示す情報を取得し、
受け付けた前記インストール順を示す情報と、取得した前記インストール順を示す情報との一致性に基づき、前記複数のソフトウェアの使用許諾に関する認証を行う、
処理をコンピュータに実行させることを特徴とする認証プログラム。
【０１６７】
（付記２）
受け付けられる前記インストール順を示す情報と、取得される前記インストール順を示す情報とは、いずれもインストール対象のハードウェア条件によって前記複数のソフトウェアを区別する
ことを特徴とする付記１記載の認証プログラム。
【０１６８】
（付記３）
更に、
受け付けた前記インストール順を示す情報から抽出された許諾期間に該当しない場合に、前記使用許諾が無効であると判定する
処理をコンピュータに実行させることを特徴とする付記１又は２記載の認証プログラム。
【０１６９】
（付記４）
複数のソフトウェアのインストール順を示す情報を受け付け、
前記複数のソフトウェアのサーバへのインストール実績情報を記憶する記憶部を参照して、前記インストール実績情報から前記複数のソフトウェアの前記サーバへのインストール順を示す情報を取得し、
受け付けた前記インストール順を示す情報と、取得した前記インストール順を示す情報との一致性に基づき、前記複数のソフトウェアの使用許諾に関する認証を行う、
処理を含み、コンピュータにより実行される認証方法。
【０１７０】
（付記５）
複数のソフトウェアのインストール順を示す情報を受け付ける受付部と、
前記複数のソフトウェアのサーバへのインストール実績情報を記憶する記憶部を参照して、前記インストール実績情報から前記複数のソフトウェアの前記サーバへのインストール順を示す情報を取得する取得部と、
受け付けた前記インストール順を示す情報と、取得した前記インストール順を示す情報との一致性に基づき、前記複数のソフトウェアの使用許諾に関する認証を行う認証部と
を有する認証装置。
【符号の説明】
【０１７１】
１０１  販売員端末    １０３  販売管理サーバ
１０５  ライセンス発行サーバ    １０７  プリンタ
２０１  サーバ装置    ７０１  製品メディア
１１０１  送信部    １１０３  受信部
１１０５  受付部    １１０７  生成部
１１０９  格納処理部    １１１１  印刷部
１１２１  注文データ記憶部    １１２３  ライセンスキー記憶部
１１２５  インストール順番記憶部    １３０１  受信部
１３０３  送信部    １３０５  決定部
１３０７  生成部    １３０９  割当部
１３２１  固有コード記憶部    １３２３  制約条件記憶部
１３２５  暗号鍵記憶部    １３２７  製品リスト記憶部
１３２９  インストール順番記憶部    ２２０１  製品プログラム
２２０３  製品管理ツール    ２２０５  ツールインストーラ
２４０１  連携部    ２４０３  同期部
２４０５  受付部    ２４０７  製品インストーラ
２４０９  特定部    ２４１１  格納処理部
２４１３  取得部    ２４１５  認証部
２４１７  出力部    ２４１９  判定部
２４２１  起動部    ２４３１  復号鍵記憶部
２４３３  インストールテーブル記憶部    ２４３５  ライセンステーブル記憶部
２４４１  送信部    ２４４３  受信部
２４４５  オペレーティングシステム    ３５０１  シードコード記憶部
３８０１  シードコード記憶部
【図１】
2018181107.tif 000003
【図２】
2018181107.tif 000004
【図３】
2018181107.tif 000005
【図４】
2018181107.tif 000006
【図５】
2018181107.tif 000007
【図６】
2018181107.tif 000008
【図７】
2018181107.tif 000009
【図８】
2018181107.tif 000010
【図９】
2018181107.tif 000011
【図１０】
2018181107.tif 000012
【図１１】
2018181107.tif 000013
【図１２】
2018181107.tif 000014
【図１３】
2018181107.tif 000015
【図１４】
2018181107.tif 000016
【図１５】
2018181107.tif 000017
【図１６】
2018181107.tif 000018
【図１７】
2018181107.tif 000019
【図１８】
2018181107.tif 000020
【図１９】
2018181107.tif 000021
【図２０】
2018181107.tif 000022
【図２１】
2018181107.tif 000023
【図２２】
2018181107.tif 000024
【図２３】
2018181107.tif 000025
【図２４】
2018181107.tif 000026
【図２５】
2018181107.tif 000027
【図２６】
2018181107.tif 000028
【図２７】
2018181107.tif 000029
【図２８】
2018181107.tif 000030
【図２９】
2018181107.tif 000031
【図３０】
2018181107.tif 000032
【図３１】
2018181107.tif 000033
【図３２】
2018181107.tif 000034
【図３３】
2018181107.tif 000035
【図３４】
2018181107.tif 000036
【図３５】
2018181107.tif 000037
【図３６】
2018181107.tif 000038
【図３７】
2018181107.tif 000039
【図３８】
2018181107.tif 000040
【図３９】
2018181107.tif 000041
【図４０】
2018181107.tif 000042
【図４１】
2018181107.tif 000043
【図４２】
2018181107.tif 000044