(57)【特許請求の範囲】
【請求項１】
自装置である情報処理装置を識別する第１の装置識別情報と、所定の処理を実行するアプリケーションプログラムと、を有する記憶部と、
前記アプリケーションプログラムの固有情報を有する認証管理部と、を備え、
前記認証管理部は、
通信路を介して接続する他の情報処理装置より当該他の情報処理装置を識別する第２の装置識別情報を取得し、
取得した前記第２の装置識別情報と前記第１の装置識別情報と前記固有情報とに基づいて第１の値を算出し、
算出した前記第１の値と前記第１の装置識別情報と前記第２の装置識別情報とに基づいて第１の認証鍵を生成し、
生成した前記第１の認証鍵を前記他の情報処理装置に送信し、
所定の期間毎に、前記他の情報処理装置より前記第２の装置識別情報を取得し、
取得した前記第２の装置識別情報と前記第１の装置識別情報と前記固有情報とに基づいて第２の値を算出し、
算出した前記第２の値と前記第１の認証鍵の前記第１の値とを比較し、
前記第２の値と前記第１の値とが一致しなかった場合は、前記アプリケーションプログラムの起動を停止する
ことを特徴とする情報処理装置。
【請求項２】
請求項１に記載の情報処理装置であって、
前記記憶部は、前記第１の認証鍵を識別する第１の認証識別情報をさらに有し、
前記認証管理部は、
予め設定されたマルチキャストアドレスを用いて、前記アプリケーションプログラムを持つ自装置および前記他の情報処理装置とは別の情報処理装置へ、前記別の情報処理装置の記憶部が有する第２の認証識別情報を送信するよう送信要求を送信し、
前記別の情報処理装置より前記第２の認証識別情報を受信すると、受信した前記第２の認証識別情報と前記第１の認証識別情報とを比較し、
前記第２の認証識別情報と前記第１の認証識別情報とが一致した場合は、前記別の情報処理装置へ前記別の情報処理装置の前記アプリケーションプログラムの起動を停止するよう停止指示を送信する
ことを特徴とした情報処理装置。
【請求項３】
請求項２に記載の情報処理装置であって、
前記記憶部は、自装置が冗長構成における運用系か待機系かを特定する系情報をさらに有し、
前記第１の認証鍵は、前記運用系が前記他の情報処理装置および前記別の情報処理装置へ遷移した回数である第１の遷移回数を有し、
前記系情報が、前記運用系であるとき、
前記認証管理部は、
前記送信要求に前記別の情報処理装置が保持する第２の認証鍵の送信の要求も含め、
前記別の情報処理装置より前記第２の認証識別情報および前記第２の認証鍵を受信すると、
前記第２の認証識別情報と前記第１の認証識別情報とが一致した場合は、さらに受信した前記第２の認証鍵に含まれる第２の遷移回数と前記第１の認証鍵に含まれる前記第１の遷移回数とを比較し、
前記第２の遷移回数よりも前記第１の遷移回数が大きいときは、前記停止指示を送信し、
前記第２の遷移回数よりも前記第１の遷移回数が小さいときは、自装置の前記アプリケーションプログラムの起動を停止する
ことを特徴とする情報処理装置。
【請求項４】
請求項２に記載の情報処理装置であって、
前記記憶部は、自装置が冗長構成における運用系か待機系かを特定する系情報をさらに有し、
前記第１の認証鍵は、前記運用系が前記他の情報処理装置および前記別の情報処理装置へ遷移した回数である第１の遷移回数を有し、
前記系情報が、前記運用系であるとき、
前記認証管理部は、
前記別の情報処理装置より前記第２の認証識別情報および第２の認証鍵を受信すると前記第２の認証識別情報と前記第１の認証識別情報とが一致した場合は、さらに受信した前記第２の認証鍵に含まれる第２の遷移回数と前記第１の認証鍵に含まれる前記第１の遷移回数とを比較し、
前記第２の遷移回数と前記第１の遷移回数が一致するときは、前記別の情報処理装置へ前記別の情報処理装置の前記アプリケーションプログラムの起動を停止するよう停止指示を送信する
ことを特徴とする情報処理装置。
【請求項５】
請求項２に記載の情報処理装置であって、
前記記憶部は、自装置が冗長構成における運用系か待機系かを特定する系情報をさらに有し、
前記系情報が、前記運用系であるとき、
前記待機系である前記他の情報処理装置に障害が発生すると、前記障害を検知し、
自装置および前記他の情報処理装置とは別の情報処理装置を前記待機系とする待機系組込指示を受け付けると、
前記認証管理部は、
前記別の情報処理装置より当該別の情報処理装置を識別する第３の装置識別情報を取得し、
前記固有情報と前記第１の装置識別情報と前記第３の装置識別情報とに基づいて前記第１の値を算出し、
算出した前記第１の値を含む前記第１の認証鍵を前記別の情報処理装置に送信する
ことを特徴とする情報処理装置。
【請求項６】
請求項２に記載の情報処理装置であって、
前記記憶部は、自装置が冗長構成における運用系か待機系かを特定する系情報をさらに有し、
前記系情報が、前記待機系であるとき、
前記運用系である前記他の情報処理装置に障害が発生すると、前記障害を検知し、
前記系情報を前記運用系に変更し、
前記認証管理部は、
前記固有情報と前記第１の装置識別情報および前記第２の装置識別情報とに基づいて第３の値を算出し、
算出した前記第３の値と前記第１の値とを比較し、
前記第３の値と前記第１の値とが一致する場合は、前記アプリケーションプログラムの起動を開始し、
自装置および前記他の情報処理装置とは別の情報処理装置を前記待機系とする待機系組込指示を受け付けると、
前記別の情報処理装置より当該別の情報処理装置を識別する第３の装置識別情報を取得し、
前記固有情報と前記第１の装置識別情報と前記第３の装置識別情報とに基づいて前記第１の値を算出し、
算出した前記第１の値を含む前記第１の認証鍵を前記別の情報処理装置に送信する
ことを特徴とする情報処理装置。
【請求項７】
第１の情報処理装置と、前記第１の情報処理装置と通信路を介して接続する第２の情報処理装置と、を有し
前記第１の情報処理装置は、
所定の処理を実行するアプリケーションプログラムと、自装置を識別する第１の装置識別情報と、を有する記憶部と、
前記アプリケーションプログラムの固有情報を有する認証管理部と、を備え、
前記第２の情報処理装置は、
前記アプリケーションプログラムと、自装置を識別する第２の装置識別情報と、を有する記憶部と、
前記固有情報を有する認証管理部と、を備え、
前記第１の情報処理装置の認証管理部は、
前記第２の情報処理装置より前記第２の装置識別情報を取得し、
取得した前記第２の装置識別情報と前記第１の装置識別情報と自装置の前記固有情報とに基づいて第１の値を算出し、
算出した前記第１の値と前記第１の装置識別情報と前記第２の装置識別情報とに基づいて第１の認証鍵を生成し、
生成した前記第１の認証鍵を前記第２の情報処理装置に送信し、
所定の周期毎に、前記第２の情報処理装置より前記第２の装置識別情報を取得し、
取得した前記第２の装置識別情報と前記第１の装置識別情報と自装置の前記固有情報とに基づいて第２の値を算出し、
算出した前記第２の値と前記第１の認証鍵の前記第１の値とを比較し、
前記第２の値と前記第１の値とが一致しなかった場合は、前記アプリケーションプログラムの起動を停止し、
前記第２の情報処理装置の認証管理部は、
前記第１の認証鍵を前記第１の情報処理装置より受信すると、
受信した前記第１の認証鍵を自装置の前記記憶部に格納し、
所定の周期毎に、前記第１の情報処理装置より前記第１の装置識別情報を取得し、
取得した前記第１の装置識別情報と自装置の前記第２の装置識別情報と自装置の前記固有情報とに基づいて第３の値を算出し、
算出した前記第３の値と格納した前記第１の認証鍵に含まれる前記第１の値と比較し、
前記第３の値と前記第１の値とが一致しなかった場合は、前記第１の情報処理装置の前記アプリケーションプログラムの起動を停止するよう停止指示を送信する
ことを特徴とする通信システム。
【請求項８】
請求項７に記載の通信システムであって、
前記第１の情報処理装置の前記記憶部は、前記第１の認証鍵を識別する第１の認証識別情報をさらに有し、
前記第１の情報処理装置の前記認証管理部は、
予め設定されたマルチキャストアドレスを用いて、前記アプリケーションプログラムを持つ他の情報処理装置へ、前記他の情報処理装置の記憶部が有する第２の認証識別情報を送信するよう送信要求を送信し、
前記他の情報処理装置より前記第２の認証識別情報を受信すると、受信した前記第２の認証識別情報と前記第１の認証識別情報とを比較し、
前記第２の認証識別情報と前記第１の認証識別情報とが一致した場合は、前記他の情報処理装置へ前記他の情報処理装置の前記アプリケーションプログラムの起動を停止するよう停止指示を送信する
ことを特徴とした情報処理装置。
【請求項９】
請求項８に記載の通信システムであって、
前記第１の情報処理装置の前記記憶部は、自装置が冗長構成における運用系か待機系かを特定する系情報をさらに有し、
前記第１の情報処理装置の前記第１の認証鍵は、前記運用系が前記第２の情報処理装置および前記他の情報処理装置へ遷移した回数である第１の遷移回数を有し、
前記第１の情報処理装置の前記認証管理部は、
前記送信要求に前記他の情報処理装置が保持する第２の認証鍵の送信の要求も含め、
前記他の情報処理装置より前記第２の認証識別情報および第２の認証鍵を受信すると、受信した前記第２の認証識別情報と前記第１の認証識別情報とを比較し、
前記第２の認証識別情報と前記第１の認証識別情報とが一致した場合は、受信した前記第２の認証鍵に含まれる第２の遷移回数と前記第１の認証鍵に含まれる前記第１の遷移回数とを比較し、
前記第２の遷移回数よりも前記第１の遷移回数が大きいときは、前記他の情報処理装置へ前記他の情報処理装置の前記アプリケーションプログラムの起動を停止するよう停止指示を送信し、
前記第２の遷移回数よりも前記第１の遷移回数が小さいときは、自装置の前記アプリケーションプログラムの起動を停止する
ことを特徴とする通信システム。
【請求項１０】
請求項９に記載の通信システムであって、
前記第１の情報処理装置は、
自装置の前記系情報が、前記運用系であるとき、
前記待機系である前記第２の情報処理装置に障害が発生すると、前記障害を検知し、
第３の情報処理装置を前記待機系とする待機系組込指示を受け付けると、
前記第１の情報処理装置の前記認証管理部は、
前記第３の情報処理装置より当該第３の情報処理装置を識別する第３の装置識別情報を取得し、
自装置の前記固有情報と前記第１の装置識別情報と前記第３の装置識別情報とに基づいて前記第１の値を算出し、
算出した前記第１の値を含む前記第１の認証鍵を前記第３の情報処理装置に送信する
ことを特徴とする通信システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェアライセンスの認証を行う情報処理装置および通信システム、ソフトウェアライセンス認証方法に関する。
【背景技術】
【０００２】
本技術分野の背景技術として、ある装置で動作していたソフトウェアのライセンスを、別の装置へ引き継ぐ技術として、特開平１０−１４３３６３号公報（特許文献１）がある。特許文献１には、ソフトウェアライセンスを初期にインストールした装置とは別の装置にインストールすることを目的としており、ソフトウェアの再販機能を備えたソフトウェアライセンス交付装置を設け、ソフトウェアインストール装置と前記ライセンス交付装置との間でライセンスに関する情報の授受を行うことが記載されている（要約、公報段落［０００６］および［００１３］参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平１０-１４３３６３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１には、ソフトウェアライセンスを初期にインストールした装置とは別の装置にインストールする際、外部の装置であるソフトウェアライセンス交付装置を介して行うことが記載されている。しかし、通信事業者やサービス提供事業者が独自に有し、外部のインターネットから物理的あるいは論理的に隔離されたネットワーク（以下、閉域網と呼称）の内部に、ゲートウェイ装置、サーバといった装置が設置されている場合、各装置が提供するサービス以外の通信は遮蔽されるため、閉域網外に閉域網内の装置と通信するソフトウェアライセンス交付装置を設けたとしても、閉域網内の装置間でライセンスの認証およびライセンスを引き継ぐことができない。
【０００５】
そこで本発明は、閉域網内の装置であっても、ライセンスを管理する装置を別に追加することなく、複数の装置間でライセンスを認証し、つまり、ライセンスの正当性を判定できる、ソフトウェアライセンスの認証を行う情報処理装置および通信システム、ソフトウェアライセンス認証方法を提供する。
【課題を解決するための手段】
【０００６】
上記課題を解決するために、例えば特許請求の範囲に記載の構成を採用する。本願は上記課題を解決する手段を複数含んでいるが、その一例を挙げるならば、自装置である情報処理装置を識別する第１の装置識別情報と、所定の処理を実行するアプリケーションプログラムと、を有する記憶部と、前記アプリケーションプログラムの固有情報を有する認証管理部と、を備え、前記認証管理部は、通信路を介して接続する他の情報処理装置より当該他の情報処理装置を識別する第２の装置識別情報を取得し、取得した前記第２の装置識別情報と前記第１の装置識別情報とに基づいて前記固有情報とに基づいて第１の値を算出し、算出した前記第１の値と前記第１の装置識別情報と前記第２の装置識別情報とに基づいて第１の認証鍵を生成し、生成した前記第１の認証鍵を前記他の情報処理装置に送信し、所定の期間毎に、前記他の情報処理装置より前記第２の装置識別情報を取得し、取得した前記第２の装置識別情報と前記第１の装置識別情報と前記固有情報とに基づいて第２の値を算出し、算出した前記第２の値と前記第１の認証鍵の前記第１の値とを比較し、前記第２の値と前記第１の値とが一致しなかった場合は、前記アプリケーションプログラムの起動を停止することを特徴とする情報処理装置である。
【発明の効果】
【０００７】
本発明によれば、閉域網内の装置であっても、ライセンスを管理する装置を別に追加することなく、複数の装置間でライセンスを認証する、ソフトウェアライセンスの認証を行う情報処理装置および通信システム、ソフトウェアライセンス認証方法を提供することができる。
【０００８】
上記した以外の課題、構成及び効果は、以下の実施形態の説明により明らかにされる。
【図面の簡単な説明】
【０００９】
【図１】ネットワーク構成図である。
【図２】サーバ構成図である。
【図３】サーバソフトウェア構成図である。
【図４】アプリケーションプログラム構成図である。
【図５】ライセンスファイル構成図である。
【図６】ライセンス鍵の構成図である。
【図７】ライセンスインストール時のシーケンスである。
【図８】ライセンスインストール時の正当性確認動作フローチャートである。
【図９】運用系サーバにおけるライセンス同期フローチャートである。
【図１０】待機系サーバにおけるライセンス同期フローチャートである。
【図１１】サーバ通常運転時のライセンス監視シーケンスである。
【図１２】運用系サーバのライセンス相互チェックフローチャートである。
【図１３】待機系サーバのライセンス相互チェックフローチャートである。
【図１４】ライセンス不正利用監視フローチャートである。
【図１５】運用系サーバ故障時の系切り替えシーケンスである。
【図１６】運用系サーバ故障時の系切り替えにおけるライセンス鍵更新フローチャートである。
【図１７】待機系サーバ故障時の系切り替えシーケンスである。
【図１８】故障を伴わない待機系サーバの交換シーケンスである。
【図１９】ユーザ指示による系切り替えシーケンスである。
【図２０】実施例２のネットワーク構成図である。
【発明を実施するための形態】
【００１０】
以下、本発明の実施例を図面を用いて説明する。
【実施例１】
【００１１】
複数の装置間でライセンスを認証し、さらに、ライセンスの引き継ぎを行う装置として冗長構成を構成する運用系装置と待機系装置を例に説明する。本実施例におけるネットワーク構成図を図１に示す。これはインターネット（１０６）経由でサーバが家庭／企業ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）（１０７）のクライアント（１０８）に対してサービスを提供する一般的な形態である。閉域網（１０１）の入り口にはルータ／ファイアウォール（１０５）が設置されるのが一般的であり、サーバが提供するサービス以外の通信はファイアウォールによって遮蔽される。サーバは運用系サーバ（１０３）と待機系サーバ（１０４）からなる冗長構成ペア（１０２）である。本実施例では運用系１台、待機系１台の構成としている。
【００１２】
なお、本実施例では、冗長構成をとるサーバについて説明するが、冗長構成をとる装置は、サーバに限らず、ゲートウェイ装置やパケット交換装置であってよい。
【００１３】
サーバのハードウェア構成図を図２に示す。ここで運用系サーバ（１０３）について示しているが、運用系サーバ（１０３）と待機系サーバ（１０４）とでは同様の構成であるため代表して運用系サーバ（１０３）のみ示している。後に示すように運用系と待機系とは系切り替えによって役割が変わるものであり、装置ごとに固定されている訳ではない。  運用系サーバ（１０３）はＣＰＵ（２０１）、主メモリ（２０２）、不揮発性メモリ（２０３）、ネットワークインタフェース部（２０４）、ならびにこれらを接続するバス（２０５）からなる。本実施例のサーバはディスクドライブやキーボード、ディスプレイ装置など、図２に記載されたデバイス以外のデバイスを有しても良い。サーバはネットワークインタフェース部（２０４）を介して閉域網（１０１）に接続する。運用系サーバ（１０３）と待機系サーバ（１０４）のサーバ同士は、閉域網（１０１）を介して系間で通信（以下、系間通信）を行う。
【００１４】
不揮発性メモリ（２０３）にはサーバソフトウェア（２０６）や自装置を一意に識別する情報である装置識別子（２０７）、運用系／待機系識別情報（２０８）が格納される。運用系／待機系識別情報（２０８）はこの不揮発性メモリ（２０３）を有する装置が運用系として動作しているのか、待機系として動作しているのかを表す。待機系ＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）アドレス（２０９）は自装置が運用系、すなわち運用系／待機系識別情報（２０８）の値が運用系になっている場合に格納され、待機系サーバ（１０４）との系間通信の際に用いる。また主メモリ（２０２）は、ＣＰＵ（２０１）によって不揮発性メモリから読み出されたサーバソフトウェア（２０６）が動作している。
【００１５】
以後の説明では「プログラム」を主語として説明を行う場合があるが、プログラムはＣＰＵ（２０１）によって実行されることで定められた処理を、主メモリ（２０２）および不揮発性メモリ（２０３）、ネットワークインタフェース部（２０４）などを用いながら行うため、ＣＰＵ（２０１）を主語とした説明としてもよい。また、プログラムを主語として開示された処理は運用系サーバ（１０３）又は待機系サーバ（１０４）が行う処理としてもよい。
【００１６】
図３は、サーバソフトウェア（２０６）の構成図を表しており、アプリケーションプログラム（３０２−１〜４）とライセンスファイル（３０１−１〜４）、冗長構成管理プログラム（３０３−１、２）、系間通信プログラム（３０５−１、２）、ユーザインタフェースプログラム（３０４−１、２）の関係を示している。２台のサーバのうちどちらが運用系になるのかは、ユーザインタフェースプログラム（３０４−１、２）を通してユーザからの指定を受け、冗長構成管理プログラム（３０３−１、２）に設定する。
【００１７】
ユーザの指定は必ずしも両方のサーバに対して行う必要はなく、例えば１台のサーバに対してどちらのサーバが運用系でどちらが待機系を指定すればよい。もう１台のサーバへは系間通信プログラム（３０５−１、２）を介して閉域網（１０１）内を通る系間通信によって設定が行われる。
【００１８】
なお、図３では系間通信プログラム（３０５−１、２）にて運用系と待機系の間の通信を行っているが、冗長構成管理プログラム（３０３−１、２）やアプリケーションプログラム自身（３０２−１〜４）の中に系間通信機能を有する形態であってもよい。本実施例では系間通信プログラム（３０５−１、２）はアプリケーションプログラム（３０２−１〜４）からは独立した形態について記載するが、合体した形態での実施例も以下と同じである。
【００１９】
冗長構成管理プログラム（３０３−１）は運用系／待機系識別情報（２０８）の値が運用系であるときのみアプリケーションプログラム（３０２−１、２）を起動する。一方待機系サーバ（１０４）の冗長構成管理プログラム（３０３−２）はアプリケーションプログラム（３０２−３、４）を待機系としての動作モード（運用系からサービス関連の情報を授受するなどの動作を行う）として起動する。アプリケーションプログラム＃１（３０２−１、３）、＃２（３０２−２、４）を実行するには、ライセンスファイル（３０１−１〜４）を必要としており、それぞれライセンスファイル＃１（３０１−１、３）や＃２（３０１−２、４）が正当なものであるかどうかを確認し、正当であればアプリケーションプログラム＃１（３０２−１、３）、＃２（３０２−２、４）の実行が可能である。
【００２０】
本実施例におけるライセンスの正当性の定義は後に述べる。運用系サーバ（１０３）のアプリケーションプログラム＃１（３０２−１）は待機系サーバ（１０４）のアプリケーションプログラム＃１（３０２−３）との間に、運用系サーバ（１０３）のアプリケーションプログラム＃２（３０２−２）は待機系サーバ（１０４）のアプリケーションプログラム＃２（３０２−４）との間にそれぞれコネクション＃１（３０６−１）、＃２（３０６−２）を確立して、通信を行う。
【００２１】
図４に、アプリケーションプログラム（３０２）の内部構成を示す。アプリケーションプログラム（３０２）はアプリケーション本体（４０１）とライセンス管理部（４０２）からなる。ライセンス管理部（４０２）は、装置へのライセンスインストール、ライセンスファイルの認証、ライセンス同期、ライセンス相互チェック、他装置によるライセンスの不正使用の監視といった作業を行う。なお、ライセンスファイル（３０１）はアプリケーションプログラム（３０２）ごとに割り当てられるものである。すなわち、異なるアプリケーションプログラム（３０２）は異なるライセンスファイル（３０１）を有する。
【００２２】
ライセンス管理部（４０２）は、シード（４０３）を持つ。シード（４０３）とは、ライセンス鍵を生成する際に用いられる文字列あるいは数値であり、アプリケーションプログラム（３０２）の固有情報である。そのため、同一のアプリケーションプログラム（３０２）においては、全ての装置で共通の値である。シード（４０３）は、アプリケーションプログラム作成時に同時に作成し、組み込んでおけばよい。シード（４０３）は、ライセンス管理部（４０２）にプログラムデータの一部として組み込まれているため、装置の外部からユーザが直接読み出したり書き換えたりすることは不可能である。
【００２３】
ライセンス管理部（４０２）によるライセンスインストールは、ユーザインタフェースプログラム（３０４）を介してユーザからの指示を受けて実施する。ここで、ユーザインタフェースプログラム（３０４）とは、ＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）などの手段を用いてユーザが装置を制御するためのインタフェースプログラムである。また、ライセンス管理部（４０２）は、ライセンスインストール時やライセンス同期時にライセンスファイル（３０１）の認証を行う。正当なライセンスファイル（３０１）であればアプリケーションプログラム本体（４０１）を起動するが、ライセンスファイル（３０１）が不正であればアプリケーションプログラム本体（４０１）を起動させない、あるいは起動中であれば停止させる。
【００２４】
また、ライセンス同期は運用系サーバ（１０３）と待機系サーバ（１０４）の間でお互いの系間通信プログラム（３０５−１、２）を介して系間通信を行いながら実施する。ライセンス同期の内容については後述する。
【００２５】
なお、アプリケーション本体（４０１）は、サーバがクライアントに提供するサービス、例えばＷｅｂサーバアプリケーションやファイル管理アプリケーション、あるいは通信事業者が提供する各種ゲートウェイ装置におけるユーザ管理プログラムや、通信プロトコル変換プログラムなどであるが、本実施例は特定用途のアプリケーションに限定するものではない。
【００２６】
図５にライセンスファイル（３０１）の内部構成を示す。ここでライセンスファイル（３０１）は運用系サーバ（１０３）と待機系サーバ（１０４）で同一の内容を有する。
【００２７】
ライセンスファイル（３０１）は、ライセンス識別子（５０１）、アプリケーション情報（５０２）、装置識別子（５０３）、署名（５０４）、公開鍵（５０５）ライセンス鍵（５０６）を含む。
【００２８】
ライセンス識別子（５０１）は、ライセンスファイル（３０１）を識別する識別情報であり、ライセンスファイル（３０１）毎に異なる。なお、ライセンス識別子（５０６）は、後述するライセンス鍵（５０６）を識別する識別情報としてもよい。アプリケーション情報（５０２）は当該ライセンスファイル（３０１）がどのアプリケーションプログラム（３０２）に対応したものかを表す。装置識別子（５０３）は最初にライセンスファイル（３０１）をインストールする対象の装置を識別する識別情報であり、例えば、装置のＭＡＣ（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ）アドレスなどが適切である。ユーザがライセンスを申請する際に、装置の識別情報をライセンス提供元に渡すことによって、ライセンス提供元が装置の識別情報をライセンスファイル（３０１）に装置識別子（５０３）として書き込む。
【００２９】
署名（５０４）はライセンス識別子（５０１）およびアプリケーション情報（５０２）、装置識別子（５０３）の情報のハッシュ値を計算し、さらにライセンス提供元が有する秘密鍵を用いてハッシュ値を公開鍵暗号方式によって暗号化したものである。すなわち、署名（５０４）をＳｉｇｎとし、ライセンス識別子（５０１）をＬ_ＩＤ、アプリケーション情報（５０２）をＡＰ_ＩＮＦ、装置識別子（５０３）をＩＤ_Ｓとおき、ハッシュ値を計算するための一方向関数をｆ、秘密鍵をＳｅｃ_ＫＥＹ、公開鍵暗号関数をＰとおいたとき、Ｓｉｇｎは
Ｓｉｇｎ = Ｐ(ｆ(Ｌ_ＩＤ | ＡＰ_ＩＮＦ | ＩＤ_Ｓ), Ｓｅｃ_ＫＥＹ)
という計算によって求められる。ここで | はデータを連続して並べることを表す。
【００３０】
なお、ライセンス鍵（５０６）を署名（５０４）の対象にしないのは、後に述べるようにライセンス同期の際にライセンス鍵（５０６）は内容が更新されるためである。
【００３１】
公開鍵（５０５）はライセンス提供元が有する秘密鍵と対応するもので、ライセンス管理部（４０２）がライセンスファイル（３０１）の正当性を確認する際に署名（５０４）の検証を行うために用いられる。
【００３２】
署名（５０４）の検証は、署名（５０４）を公開鍵（５０５）で復号化して得られたハッシュ値と、ライセンス識別子（５０１）およびアプリケーション情報（５０２）、装置識別子（５０３）の情報のハッシュ値を計算したものとを比較し、一致するかどうかで行う。
【００３３】
すなわち、署名（５０４）をＳｉｇｎ、公開鍵（５０５）をＰｕｂ_ＫＥＹ、復号化によって得られるハッシュ値をＨ_ｄｅｃとおいたとき
Ｈ_ｄｅｃ = Ｐ(Ｓｉｇｎ, Ｐｕｂ_ＫＥＹ)
となる。
【００３４】
ライセンス識別子（５０１）およびアプリケーション情報（５０２）、装置識別子（５０３）の情報のハッシュ値をＨとおいたとき、
Ｈ = ｆ(Ｌ_ＩＤ | ＡＰ_ＩＮＦ | ＩＤ_Ｓ)
であり、ＨとＨ_ｄｅｃとが一致するかどうかで署名（５０５）の検証を行う。
【００３５】
ライセンス鍵（５０６）は後に述べる定期ライセンスチェック時にライセンスの正当性を確認するのに用いられる。ライセンス鍵（５０６）は装置へのライセンスインストール時に生成され、またライセンス同期時などに内容が更新される。
【００３６】
図６に、ライセンス鍵（５０６）の構成を示す。ライセンス鍵（５０６）は現運用系装置識別子（６０１）、現待機系装置識別子（６０２）、運用系遷移回数（６０３）、ハッシュ値（６０４）からなる。現運用系装置識別子（６０２）は、運用系サーバ（１０３）となった装置の装置識別子が書きこまれる。なお、装置へのライセンスインストール時点ではライセンスファイル（３０１）における装置識別子（５０３）と同じである。現待機系装置識別子（６０２）は後に述べるライセンス同期にて待機系サーバ（１０４）となった装置から受信する待機系サーバ（１０４）の装置識別子である。運用系遷移回数（６０３）は故障等により装置交換を行った場合に、運用系が現待機系以外の別の装置に移った場合に加算される数であり、初期値は０である。なお、運用系遷移回数（６０３）は、運用上のポリシーによって、同一冗長構成ペア内部において運用系と待機系が切り替わった場合は加算しないものとすることができる。
【００３７】
ハッシュ値（６０４）は、シード（４０３）、現運用系装置識別子（６０１）、現待機系装置識別子（６０２）、運用系遷移回数（６０３）の情報から生成される。
【００３８】
つまり、ハッシュ値（６０４）をＨ_Ｌｉｃ、シード（４０３）をＳ、現運用系装置識別子（６０１）をＩＤ_Ａ、現待機系装置識別子（６０２）をＩＤ_Ｂ、運用系遷移回数（６０３）をＣＮＴとおくと、Ｈ_Ｌｉｃは十分な強度を持つ一方向関数ｇを用いて例えば次のように生成される。
Ｈ_Ｌｉｃ = ｇ(Ｓ | ＩＤ_Ａ | ＩＤ_Ｂ | ＣＮＴ)
ここで | は先述の通り、データを連続して並べることを表す。もちろんハッシュ値（６０４）は上記のみに制限される訳ではなく、少なくともシード（４０３）、現運用系装置識別子（６０１）、現待機系装置識別子（６０２）を含み、ハッシュ値（６０４）からこれらの値を推測できないものであれば任意のものでよい。
【００３９】
ハッシュ値（６０４）の計算にてシード（４０３）を用いているのはシード（４０３）が外部から読み出すことが困難であることを利用して、ライセンス鍵（５０６）を不正に生成することを不可能にするためである。ハッシュ値を不正に生成できないという性質を用いて後に述べるライセンス不正監視が実現できる。
【００４０】
図７に、ライセンスインストール時の運用系サーバ（１０３）、待機系サーバ（１０４）の動作シーケンスを示す。本実施例では運用系サーバ（１０３）に対してのみライセンスインストールを行っている。
【００４１】
ライセンスインストールではユーザは、ライセンスインストール指示（７０１）においてライセンスファイル（３０１）と、運用系サーバ（１０３）が待機系サーバ（１０４）と通信するための待機系サーバのＩＰアドレスとを運用系サーバ（１０３）へ与える。運用系サーバ（１０３）は、ライセンスファイル（３０１）の正当性を確認する（７０２）と、待機系サーバ（１０４）との間でライセンス同期（７０３）を行う。この時点で運用系サーバ（１０３）と待機系サーバ（１０４）とは同一内容のライセンスファイル（３０１）を保持（以下これを共有と呼ぶ）する。ライセンスファイル（３０１）における装置識別子（５０３）は運用系サーバ（１０３）のものだけであるが、後に述べるようにライセンス鍵（５０６）が運用系サーバ（１０３）と待機系サーバ（１０４）のそれぞれの装置識別子を用いて生成されるため、任意の装置を当該運用系サーバ（１０３）に対する待機系として使うことはできない。
【００４２】
運用系サーバ（１０３）はライセンスファイル（３０１）の正当性が確認され（７０２）、ライセンス同期（７０３）が行われたことをもって、アプリケーションプログラム（３０２）を通常モードで起動する。通常モードとは、アプリケーションプログラム（３０２）によって、サービスを提供するモードのことである。
【００４３】
待機系サーバ（１０４）は、ライセンス同期（７０３）にて運用系サーバ（１０３）からライセンスファイル（３０１）を取得することでアプリケーションプログラム（３０２）を起動する。また、待機系サーバ（１０４）は待機系専用モードにてアプリケーションプログラム（３０２）を起動する。待機系専用モードとは、アプリケーションプログラム（３０２）は起動しているが、サービスを提供していないモードのことである。
【００４４】
なお、ライセンスインストール（７０１）時に指定された待機系サーバのＩＰアドレスに対応する待機系サーバが存在しない場合、運用系サーバ（１０３）のみで運転（アプリケーションプログラム（３０２）の起動）を開始できるが、待機系サーバがないことを画面表示などにてユーザに通知し、運転を開始しなくてもよい。
【００４５】
図８に、運用系サーバ（１０３）によるライセンスファイル（３０１）インストール時の正当性確認動作（７０２）のフローチャートを示す。まず、運用系サーバ（１０３）は、自装置の装置識別子（２０７）とライセンスファイル（３０１）の装置識別子（５０３）を比較し（８０２）、一致すれば（８０３でＹＥＳの場合）、ライセンスファイル（３０１）の署名（５０４）をライセンスファイル（３０１）の公開鍵（５０５）を用いて復号化する（８０４）。復号化されて得られたデータをデータＡとする（８０５）。ここで、どの暗号化方式を用いるかは予めプログラムにて決定しておけばよい。続いてライセンスファイル（３０１）のライセンス識別子（５０１）およびアプリケーション情報（５０２）、装置識別子（５０３）の情報のハッシュ値を計算し（８０６）、その結果をデータＢとする（８０７）。データＡ（８０５）とデータＢ（８０７）とを比較し（８０８）、一致すれば（８０９でＹＥＳの場合）、ライセンスファイル（３０１）の正当性が確認されたとして、正当性確認動作を終了する（８１１）。
【００４６】
自装置の装置識別子（２０７）とライセンスファイル（３０１）の装置識別子（５０３）を比較した結果が一致しなかった場合（８０３でＮＯの場合）は、ライセンスファイル（３０１）を消去（８１０）して終了する（８１１）。あるいはデータＡ（８０５）とデータＢ（８０７）とを比較した（８０８）結果が一致しなかった場合（８０９でＮＯの場合）はライセンスファイルを（３０１）消去して（８１０）、終了（８１１）する。
【００４７】
図９に、運用系サーバ（１０３）のライセンス管理部（４０２）によるライセンス同期（７０３）のフローチャートを示す。まず、インストール時に指定された（７０１）待機系サーバ（１０４）のＩＰアドレスにもとづき待機系サーバ（１０４）が存在するかを確認する（９０２）。この確認は、例えばｐｉｎｇなどの方法で実行可能である。指定された待機系サーバ（１０４）が存在した場合（９０３でＹＥＳの場合）、待機系サーバ（１０４）のＩＰアドレスを不揮発性メモリ（２０３）の待機系ＩＰアドレス（２０９）へ保存（９０４）する。
【００４８】
次に、待機系ＩＰアドレス（２０９）を用いて待機系サーバ（１０４）のアプリケーションプログラム（３０２）のライセンス管理部（４０２）との間にコネクションを確立する（９０５）。これは運用系サーバ（１０３）と待機系サーバ（１０４）のアプリケーションプログラム（３０２）のライセンス管理部（４０２）どうしの間にＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）のコネクションを確立するなどすればよい。
【００４９】
次に、確立したコネクションを用いて待機系サーバ（１０４）の装置識別子を取得し（９０６）ライセンス鍵（５０６）の現待機系装置識別子に書きこむ。続いてシード（４０３）と、ライセンスファイル（３０１）のライセンス鍵（５０６）の運用系装置識別子（６０１）、取得した待機系サーバ（１０４）の装置識別子、ライセンスファイル（３０１）のライセンス鍵（５０６）の運用系遷移回数（６０３）からハッシュ値を計算（９０７）する。計算したハッシュ値をライセンスファイル（３０１）のライセンス鍵（５０６）のハッシュ値（６０４）に書き込む（９０９）。これによりライセンス鍵（５０６）が完成する（９０８）。
【００５０】
ライセンス鍵（５０６）が完成したライセンスファイル（３０１）を不揮発性メモリ（２０３）に格納し（９１０）、また、待機系サーバ（１０４）へ送信して（９１１）ライセンス同期処理を終了する（９１２）。
【００５１】
なお、指定された待機系サーバ（１０４）が存在しなかった場合（９０３でＮＯの場合）は何もせずにライセンス同期処理を終了する（９１２）。これは、例えば待機系サーバ（１０４）が故障していた場合などにありうる。
【００５２】
図１０に、待機系サーバ（１０４）のライセンス管理部（４０２）によるライセンス同期（７０３）のフローチャートを示す。まず、運用系サーバ（１０３）からの指示により運用系サーバ（１０４）との間にコネクションを確立する（１００２）。次に運用系サーバ（１０３）の指示により自装置の装置識別子を運用系サーバ（１０４）へ送信する（１００３）。次に運用系サーバ（１０３）よりライセンスファイル（３０１）を受信し、これを不揮発性メモリ（２０３）内のサーバソフトウェア（２０６）内のライセンスファイル（３０１）として格納する（９１０）。
【００５３】
この段階で運用系サーバ（１０３）と待機系サーバ（１０４）は同一内容のライセンスファイル（３０１）を共有する。生成されたライセンス鍵（５０６）を含むライセンスファイル（３０１）を別の装置へ不正にコピーした場合は、以下に示すようにアプリケーションプログラム（３０２）が停止される。
【００５４】
図１１に、インストール後の通常運転時のライセンス監視シーケンスを示す。冗長構成ペア（１０２）が＃１（１０２−１）と＃２（１０２−２）の２つあるとする。以下、冗長構成ペア＃１（１０２−１）が実施するライセンス監視シーケンスを説明するが、当然ラインセンス監視は冗長構成ペア＃１（１０２−１）だけではなく、冗長構成ペア＃２（１０２−２）も実施する。
【００５５】
冗長構成ペア＃１（１０２−１）の運用系サーバ（１０３−１）は、一定時間待機（１１０１）後、待機系サーバ（１０４−１）との間でライセンスファイル相互チェック（１１０２）を実施する。次にライセンスファイル（３０１）の不正利用がないかライセンスファイル不正監視（１１０３）を行う。ライセンスファイル不正監視（１１０３）にて、冗長構成ペア＃１（１０２−１）の運用系サーバ（１０３−１）は、閉域網（１０１）内の他の装置に対して、ライセンス識別子（５０１）と、ラインセンス鍵（５０６）などの送信を要求する（１１０４）。ライセンスファイル不正監視（１１０３）については後述する。
【００５６】
これらライセンスファイル相互チェック（１１０２）とライセンスファイル不正監視（１１０３）は一定時間ごとに実施される。冗長構成ペア＃２（１０２−２）も冗長構成ペア＃１（１０２−１）とは異なるタイミングでこれらライセンスファイル相互チェック（１１０２）とライセンスファイル不正監視（１１０３）を実施する。
【００５７】
図１２に、運用系サーバ（１０３）のライセンス管理部（４０２）によるライセンス相互チェック（１１０２）のフローチャートを示す。まず、待機系サーバ（１０４）との間のコネクションを利用して待機系サーバ（１０４）から待機系サーバ（１０４）の装置識別子を取得する（１２０２）。次に、運用系サーバ（１０３）のライセンスファイル（３０１）のライセンス鍵（５０６）の現運用系装置識別子（６０１）と、取得した待機系サーバ（１０４）の装置識別子、ライセンスファイル（３０１）のライセンス鍵（５０６）の運用系遷移回数（６０３）、シード（４０３）からハッシュ値を計算する（１２０３）。これをハッシュ値Ａ（１２０４）とする。ライセンスファイル（３０１）のライセンス鍵（５０６）のハッシュ値（６０４）とハッシュ値Ａ（１２０４）とを比較し（１２０５）、一致していれば（１２０６でＹＥＳの場合）処理を終了（１２０８）する。一致していれば（１２０６でＹＥＳの場合）処理を終了する（１２０８）。一致しなければ（１２０６でＮＯの場合）、運用系サーバ（１０３）のアプリケーションプログラム（３０２）を停止（１２０７）して処理を終了（１２０８）する。
【００５８】
図１３に、待機系サーバ（１０４）によるライセンス相互チェック（１１０２）のフローチャートを示す。まず運用系サーバ（１０３）との間のコネクションを利用して運用系サーバ（１０３）から運用系サーバ（１０３）の装置識別子を取得する（１３０２）。次に取得した運用系サーバ（１０３）の装置識別子と、待機系サーバ（１０４）のライセンスファイル（３０１）のライセンス鍵（５０６）の現待機系装置識別子（６０２）と、運用系遷移回数（６０３）、シード（４０３）からハッシュ値を計算する（１３０３）。これをハッシュ値Ｂ（１３０４）とする。待機系サーバ（１０４）のライセンスファイル（３０１）のライセンス鍵（５０６）のハッシュ値（６０４）とハッシュ値Ｂ（１３０４）とを比較し（１３０５）、一致していれば（１３０６でＹＥＳの場合）処理を終了する（１３０８）。一致しなければ（１３０６でＮＯの場合）運用系サーバ（１０３）に対してアプリケーションプログラム（３０２）の停止指示を発行（１３０７）する。
【００５９】
図１４に、運用系サーバ（１０３）のライセンス管理部（４０２）によるライセンス不正利用監視動作（１１０３）をフローチャートにて示す。まず、予め定められたマルチキャストＩＰアドレス宛てにライセンス識別子（５０１）、ライセンス鍵（５０６）、ＩＰアドレスの取得要求を発行する（１４０２）。なお、マルチキャストＩＰアドレス宛ての取得要求を受信した装置のライセンス管理部は、ライセンス識別子、ライセンス鍵、ＩＰアドレスを応答データとして送信するよう構成されている。
【００６０】
次に、以下に述べる処理を予め定められた回数、または、予め定められた時間が経過するまで繰り返す（１４０３から１４１２）。まず、マルチキャストＩＰアドレス宛てに発行した要求の応答を待つ（１４０４）。
【００６１】
ある装置からの応答データを受信（１４０５）すると、受信した応答データのライセンス識別子と自装置のライセンスファイル（３０１）のライセンス識別子（５０１）とを比較する（１４０６）。一致しなかった場合（１４０７でＮＯの場合）、再度応答待ち（１４０４）になるか、繰り返し回数の上限に達したら処理を終了する（１４１３）。一致した場合（１４０７でＹＥＳの場合）は、受信した応答データの送信元装置か自装置のどちらかがライセンスを不正利用していることになる。
【００６２】
この場合、まず運用系サーバ（１０３）は、受信した応答データのライセンス鍵（５０６）の中の運用系遷移回数（６０３）と自装置のライセンスファイル（３０１）のライセンス鍵（５０６）の中の運用系遷移回数（６０３）を比較し（１４０８）、自装置の運用系遷移回数（６０３）のほうが小さければ（１４０９でＹＥＳの場合）、自装置がライセンスを不正利用していたとみなし、アプリケーションプログラム（３０２）を停止（１４１１）させる。
【００６３】
一方、自装置の運用系遷移回数（６０３）のほうが大きければ（１４０９でＮＯの場合）、受信した応答データの送信元装置がライセンスファイル（３０１）を不正利用していたとみなし、送信元装置宛てにアプリケーションプログラム停止指示を発行する（１４１０）。
【００６４】
両者の運用系遷移回数（６０３）が等しい場合、送信元装置宛てにアプリケーションプログラム停止指示を発行する。なお、ライセンス不正利用監視動作（１１０３）は各冗長構成ペア（１０２）の運用系サーバ（１０３）が各々のタイミングで実行しているため、先に検出した冗長構成ペア（１０２）の運用系サーバ（１０３）が他の冗長構成ペア（１０２）の運用系サーバ（１０３）が実行するアプリケーションプログラム（３０２）を停止させることになる。アプリケーションプログラム停止指示を発行した冗長構成ペア（１０２）の運用系サーバ（１０３）は、アプリケーションプログラム停止指示を自装置に対して発行する運用系サーバがいなくなるため動作し続ける。このようにしてライセンス数分の運用系サーバのアプリケーションプログラムだけが動作可能になる。
【００６５】
なお、運用系遷移回数（６０３）が多いほうが正当なライセンスファイル（３０１）利用装置である根拠は、運用系遷移回数（６０３）は故障などによる装置交換にて運用系サーバが新しい装置に代わる度に加算されていくため、運用系遷移回数（６０３）の値が小さいほうの装置は、以前利用していた装置が交換により撤去された後、ライセンスを更新せずに再度使用しようとしたと考えられるからである。
【００６６】
また、運用系遷移回数（６０３）を意図的に書き換えるとライセンス鍵（５０６）におけるハッシュ値（６０４）があわなくなるためライセンスファイル相互チェック（１１０２）により不正を検出される。
【００６７】
なお、ある装置からの受信した応答データのライセンス識別子と自装置のライセンスファイル（３０１）のライセンス識別子（５０１）が一致した（１４０７でＹＥＳの場合）ことを検知すると、受信した応答データの送信元装置がライセンスファイル（３０１）を不正利用していたとみなし、送信元装置宛てにアプリケーションプログラム停止指示を発行（１４１０）してもよい。また、自装置がライセンスファイル（３０１）を不正利用していたとみなし、アプリケーションプログラム（３０２）を停止（１４１１）させてもよい。また、送信元装置と自装置の両方のアプリケーションプログラム（３０２）を停止させてもよい。  次に、装置が故障した場合などで運用系サーバ（１０３）と待機系サーバ（１０４）の切り替わりが発生するケースを考える。図１５は、運用系サーバ（１０３）が故障した場合の切り替えシーケンスである。まず、運用系サーバ（１０３）が故障する（１５０１）と待機系サーバ（１０４）は運用系サーバ（１０３）の故障を検出し（１５０２）、系切り替え（１５０３）を行って新たに新運用系サーバ（１０３’）となる。続いて、新運用系サーバ（１０３’）のライセンス管理部４０２はライセンスファイル（３０１）のライセンス鍵（５０６）の更新（１５０４）を行い、アプリケーションプログラム（３０２）を起動させる。
【００６８】
ユーザが新しい装置を用意して、これを新待機系サーバ（１０４’）として組み込む場合、ユーザは新運用系サーバ（１０３’）に対して新待機系サーバ（１０４’）の組み込み指示を行う。
新運用系サーバ（１０３’）は、指定された装置を新待機系サーバ（１０４’）としてライセンス同期（１５０７）を行う。ライセンス同期（１５０７）を行った新待機系サーバ（１０４’）は、アプリケーションプログラム（３０２）を待機系専用モードで動作開始させる（１５０８）。
【００６９】
ライセンス同期（１５０７）については図９、１０にて示した通りであり、新待機系サーバ（１０４’）は、ライセンスファイル（３０２）を更新して不揮発性メモリ（２０３）内のサーバソフトウェア（２０６）内のライセンスファイル（３０２）として上書きする。
【００７０】
このようにして、ライセンスファイルを運用系サーバから待機系サーバ（新運用系サーバ）へ引き継ぐことができ、新運用系サーバは新待機系サーバとの間で新たにライセンス同期を行うことが可能となる。
【００７１】
図１６に、新運用系サーバ（１０３’）のライセンス管理部４０２によるライセンス鍵の更新（１５０４）の動作フローチャートを示す。まずライセンス鍵（５０６）の現運用系装置識別子（６０１）と、現待機系装置識別子（６０２）、運用系遷移回数（６０３）、シード（４０３）からハッシュ値を計算し（１６０２）、これをハッシュ値Ｃ（１６０３）とする。次に、ライセンス鍵（５０６）の中のハッシュ値（６０４）とハッシュ値Ｃ（１６０３）とを比較し（１６０４）、一致していれば（１６０５でＹＥＳの場合）ライセンス鍵（５０６）の運用系遷移回数（６０３）を加算する（１６０７）。
【００７２】
そして、現運用系装置識別子（６０１）と現待機系装置識別子（６０２）と加算した運用系遷移回数（６０３）とシード（４０３）とを用いてハッシュ値を計算し（１６０８）、この値をライセンス鍵（５０６）のハッシュ値（６０４）とすることでライセンス鍵（５０６）を更新して（１６０９）終了する（１６１０）。
【００７３】
一方、ライセンス鍵（５０６）の中のハッシュ値（６０４）とハッシュ値Ｃ（１６０３）とが一致していなかった場合（１６０５にてＮＯの場合）、ライセンスファイル（３０１）を消去して終了（１６１０）する。
【００７４】
ライセンス鍵（５０６）の更新が完了した時点で故障が発生した旧運用系サーバ（１０３）のライセンス鍵（５０６）の運用系遷移回数（６０３）は、新運用系サーバ（１０３’）のライセンス鍵（５０６）の運用系遷移回数（６０３）より小さいため無効である。仮に、旧運用系サーバ（１０３）を修理してから再度閉域網（１０１）に組み込んだとしても新運用系サーバ（１０３’）によるライセンス不正利用監視動作（１１０３）において旧運用系サーバ（１０３）の運用系遷移回数（６０３）が新運用系サーバ（１０３’）の運用系遷移回数（６０３）より小さいために不正利用とされて旧運用系サーバ（１０３）のアプリケーションプログラム（３０２）は新運用系サーバ（１０３’）によって停止される。
【００７５】
次に、図１７に待機系サーバ（１０４）が故障した場合の切り替えシーケンスを示す。待機系サーバ（１０４）で故障が発生する（１７０１）と運用系サーバ（１０３）はこれを検出する。この時点では運用系サーバ（１０３）はライセンス鍵（５０６）の更新などを行わない。運用系サーバ（１０３）、ユーザから新しい待機系サーバを指定して待機系組み込み指示（１７０３）が発行されると運用系サーバ（１０３）と新待機系サーバ（１０４’）との間でライセンス同期（１７０４）を行う。ライセンス同期完了（１７０４）後、新待機系サーバ（１０４’）ではアプリケーションプログラム（３０２）を待機系専用モードで動作開始（１７０５）させる。
【００７６】
このようにして、運用系サーバは新待機系サーバとの間でライセンス同期を行うことができる。
【００７７】
また、故障を伴わない待機系サーバ（１０４）の交換シーケンスを図１８に示す。これは、例えばメンテナンスなどの目的で行われるものである。ユーザが運用系サーバ（１０３）に対して新しい待機系サーバ（１０４’）を指定して待機系組み込み指示（１８０１）を発行すると、運用系サーバ（１０３）と新待機系サーバ（１０４’）との間でライセンス同期（１８０２）を行う。ライセンス同期（１８０２）完了時点で新しい冗長構成ペアは新しいライセンスファイル（３０１）を共有するため、旧待機系サーバ（１０４）のライセンスファイル（３０１）は運用系サーバ（１０３）のライセンスファイル（３０１）と対応しないため無効になる。新待機系サーバ（１０４’）ではアプリケーションプログラムを待機系専用モードで動作開始（１８０３）させる。また、運用系サーバ（１０３）と旧待機系サーバ（１０４）との間ではライセンス同期の解消（１８０４）を行う。
【００７８】
旧待機系サーバ（１０４）によるライセンス同期の解消（１８０４）の動作は、運用系サーバ（１０３）からの指示に応じてライセンスファイル（３０１）を削除して処理を終了する。
【００７９】
ただし、このライセンス同期の解消（１８０４）は必須ではない。ライセンス同期の解消（１８０４）を実施しなかったとしても運用系サーバ（１０３）と新待機系サーバ（１０４’）との間でライセンス同期（１８０２）によるライセンスファイル（３０１）の更新が行われているため、旧待機系サーバ（１０４）のラインセンスファイル（３０１）は無効であるからである。
【００８０】
図１９に、ユーザの指示にもとづく系切り替えのシーケンスを示す。これは、例えばメンテナンスなどの目的で行われるものである。ユーザが、運用系サーバ（１０３）に対して系切り替え指示（２００１）を発行すると、運用系サーバ（１０３）は新待機系サーバ（１０４’）へ切り替わり（２００２）、待機系サーバ（１０４）に対して系切り替えを指示し（２００８）、待機系サーバ（１０４）はこれを受けて新運用系サーバ（１０３’）へと切り替わる。新運用系サーバ（１０３’）のライセンス管理部（４０２）は、アプリケーションプログラム（３０２）が待機系専用モードで動作していた場合、これを停止させ（２００５）、アプリケーションプログラム（３０２）を通常モードで動作開始させる（２００７）。一方、新待機系サーバ（１０４’）のライセンス管理部（４０２）は、アプリケーションプログラム（３０２）を動作停止させ（２００５）、アプリケーションプログラム（３０２）を待機系専用モードで動作開始させる（２００７）。このようにして運用系サーバと待機系サーバが入れ替わる。
【実施例２】
【００８１】
実施例２における別のネットワーク構成を図２０に示す。これは、冗長構成ペア（２１０１）において運用系サーバ（２１０１−１〜Ｎ）がＮ台（Ｎ≧２）あって、待機系サーバ（２１０３）が１台の構成である。この場合、ライセンスファイル、ライセンス鍵の構成はそれぞれ実施例１の図５のライセンスファイル（３０１）、図６のライセンス鍵（５０６）と同じだが、各運用系サーバ（２１０１−１〜Ｎ）は待機系サーバ（２１０３）との間でそれぞれライセンスファイル（３０２）を共有する。待機系サーバ（２１０３）は運用系サーバの数だけのライセンスファイル（３０１）を持つことになる。
【００８２】
各ライセンスファイル（３０１）におけるライセンス識別子（５０１）や署名（５０４）、ライセンス鍵（５０６）は、対応する運用系サーバ（２１０１−１〜Ｎ）ごとに異なる値をとる。ライセンス同期は図９、図１０と同様であるが、全ての運用系サーバ（２１０１−１〜Ｎ）は待機系サーバ（２１０３）との間にそれぞれコネクションを確立することになる。つまり、待機系サーバ（２１０３）はＮ本分のコネクションを有することになる。しかし、運用系サーバの台数が増えたことを除けばライセンス同期、ライセンスファイル相互チェック、ライセンスファイル不正利用監視は実施例１におけるそれぞれ図１０・図１１、図１２・図１３、図１４と動作は同様であり、各運用系サーバ（２１０１−１〜Ｎ）と待機系サーバ（２１０３）との間でこれらの動作フローを実施する。
【００８３】
運用系サーバ（２１０１−１〜Ｎ）のうちの１台が故障した場合、待機系サーバ（２１０３）との切り替えを行い、またユーザから新待機系サーバの指定を受けて新待機系サーバの組み込みを行うなどの動作も実施例１の図１５と同じである。待機系サーバ（２１０３）が故障した場合は、実施例１の図１７に示す待機系サーバ故障による切り替えシーケンスを運用系のサーバ台数分だけ実施する。故障を伴わない待機系サーバの切り替えシーケンスは実施例１の図１８と同じだが、各運用系サーバ（２１０１−１〜Ｎ）に対して待機系組み込み指示が必要である。またユーザ指定による系切り替えシーケンスについては、指定された運用系サーバ（２１０２−１〜Ｎのいずれか）と待機系サーバ（２１０３）の間で実施例１の図２０に示す系切り替えシーケンスを行った後で、残りの全ての運用系サーバに対して図１８に示す待機系交換シーケンスを実施する。
【００８４】
実施例では冗長構成の装置において説明したが、冗長構成に限らず２台や３台の装置であってもよい。
【００８５】
以上のように、閉域網内の装置であっても、ライセンスを管理する装置を別に追加することなく、複数の装置間でライセンスを認証し、認証できなければ、各装置で実行しているアプリケーションプログラムの起動を停止することができる。また、各装置に故障などが発生しても、ライセンスの引き継ぎを行うことができる。
【符号の説明】
【００８６】
１０１：閉域網
１０２：サーバ冗長構成ペア
１０３：運用系サーバ
１０３’：新運用系サーバ
１０４：待機系サーバ
１０４’：新待機系サーバ
２０６：サーバソフトウェア
２０８：運用系／待機系区分情報
２０９：待機系ＩＰアドレス
３０１：ライセンスファイル
３０２：アプリケーションプログラム
３０３：冗長構成管理プログラム
４０１：アプリケーション本体
４０２：ライセンス管理部
４０３：シード
５０１：ライセンス識別子
５０２：アプリケーション情報
５０４：署名
５０６：ライセンス鍵
６０１：現運用系装置識別子
６０２：現待機系装置識別子
６０３：運用系遷移回数
【図１】
0005719799.tif 000002
【図２】
0005719799.tif 000003
【図３】
0005719799.tif 000004
【図４】
0005719799.tif 000005
【図５】
0005719799.tif 000006
【図６】
0005719799.tif 000007
【図７】
0005719799.tif 000008
【図８】
0005719799.tif 000009
【図９】
0005719799.tif 000010
【図１０】
0005719799.tif 000011
【図１１】
0005719799.tif 000012
【図１２】
0005719799.tif 000013
【図１３】
0005719799.tif 000014
【図１４】
0005719799.tif 000015
【図１５】
0005719799.tif 000016
【図１６】
0005719799.tif 000017
【図１７】
0005719799.tif 000018
【図１８】
0005719799.tif 000019
【図１９】
0005719799.tif 000020
【図２０】
0005719799.tif 000021