(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-04-18
(54)【発明の名称】ソフトウェアのライセンス情報の監視方法、装置、サーバ及び記憶媒体
(51)【国際特許分類】
G06F 21/10 20130101AFI20230411BHJP
G06F 21/64 20130101ALI20230411BHJP
【FI】
G06F21/10 350
G06F21/64
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2022551324
(86)(22)【出願日】2020-05-20
(85)【翻訳文提出日】2022-08-25
(86)【国際出願番号】 CN2020091326
(87)【国際公開番号】W WO2021232295
(87)【国際公開日】2021-11-25
(81)【指定国・地域】
(71)【出願人】
【識別番号】518056748
【氏名又は名称】新華三技術有限公司
【氏名又は名称原語表記】NEW H3C TECHNOLOGIES CO., LTD.
(74)【代理人】
【識別番号】110003339
【氏名又は名称】弁理士法人南青山国際特許事務所
(72)【発明者】
【氏名】張広奎
(57)【要約】
本願の実施形態は、ソフトウェアのライセンス情報の監視方法、装置、サーバ及び記憶媒体を提供し、ソフトウェア管理の技術分野に関する。本願の実施形態の技術案は以下の処理を含む。所定時間ごとに取引情報ブロックを生成し、生成された取引情報ブロックに基づいてルート暗号化値を算出し、取引情報ブロックはライセンス情報を含み、前記ライセンス情報は、取引情報ブロックを生成する時における保護対象ソフトウェアの残りの利用可能時間を含んでいる。その後、ルート暗号化値と、順に生成された取引情報ブロックが含まれている取引リストと、を含む情報ブロックを生成する。情報ブロックを情報チェーンに加え、情報チェーンは順に生成された情報ブロックを含む。該方法を採用すると、ソフトウェアのライセンス情報が改ざんされ有効になること防止するとともに、セキュリティを向上させることができる。
【選択図】
図7
【特許請求の範囲】
【請求項1】
サーバに適用されるソフトウェアのライセンス情報の監視方法であって、
所定時間ごとに取引情報ブロックを生成し、前記取引情報ブロックはライセンス情報を含み、前記ライセンス情報は、前記取引情報ブロックを生成する時における保護対象ソフトウェアの残りの利用可能時間を含んでいることと、
生成された取引情報ブロックに基づいてルート暗号化値を算出することと、
情報ブロックを生成し、前記情報ブロックは、前記ルート暗号化値と、順に生成された取引情報ブロックが含まれている取引リストとを含むことと、
前記情報ブロックを情報チェーンに加え、前記情報チェーンは順に生成された情報ブロックを含むことと、を含む、
ことを特徴とするソフトウェアのライセンス情報の監視方法。
【請求項2】
現在のシステム時刻と前記保護対象ソフトウェアの発効時刻とを取得するステップと、
前記現在のシステム時刻と前記保護対象ソフトウェアの発効時刻との差に基づいて、前記保護対象ソフトウェアの使用された時間を確定するステップと、
前記保護対象ソフトウェアの利用可能な総時間と前記使用された時間との差に基づいて、前記保護対象ソフトウェアの残りの利用可能時間を確定するステップと、によって、前記保護対象ソフトウェアの残りの利用可能時間は確定される
ことを特徴とする請求項1に記載の方法。
【請求項3】
前記情報ブロックを生成した後、前記方法は、
前記サーバのバックアップノード及び/又は外部キャッシュに前記情報ブロックをブロードキャストして、前記サーバの前記バックアップノード及び/又は前記外部キャッシュ内に情報チェーンのバックアップ情報チェーンを生成することを更に含む
ことを特徴とする請求項1又は2に記載の方法。
【請求項4】
前記情報ブロックにはヘッダ情報が含まれており、前記ヘッダ情報には前記ルート暗号化値と親暗号化値とが含まれており、
前記方法は、
前記情報ブロックの直前に生成された前の情報ブロックのヘッダ情報を取得することと、
取得された前記前の情報ブロックのヘッダ情報に基づいて前記親暗号化値を算出することと、を更に含む
ことを特徴とする請求項1に記載の方法。
【請求項5】
前記情報ブロックを生成することは、
前記情報ブロックにおけるデータ部分を生成し、前記データ部分は前記保護対象ソフトウェアの現在の残りの利用可能時間を含んでいることと、
前記情報ブロックのデータ部分に基づいて前記情報ブロックの暗号化値を算出することと、
前記情報ブロックの暗号化値を前記情報ブロックのヘッダ情報に加えることと、を含む
ことを特徴とする請求項4に記載の方法。
【請求項6】
前記生成された取引情報ブロックに基づいてルート暗号化値を算出することは、
生成された1つ又は複数の取引情報ブロックに基づいて、所定の暗号化アルゴリズムを用いて各取引情報ブロックのライセンス情報を算出し、各取引情報ブロックの暗号化値をそれぞれ取得することと、
前記所定の暗号化アルゴリズムと前記1つ又は複数の取引情報ブロックの暗号化値とに基づいてコンポーネント暗号化値を算出して取得することと、
前記所定の暗号化アルゴリズムを用いて前記コンポーネント暗号化値を算出して、前記ルート暗号化値を取得することと、を含む
ことを特徴とする請求項1に記載の方法。
【請求項7】
サーバに適用されるソフトウェアのライセンス情報の監視方法であって、保護対象ソフトウェアのライセンス情報は情報チェーンの形式で格納されており、
前記情報チェーンは、順に構築された情報ブロックを含み、前記情報ブロックには、取引リストとルート暗号化値が含まれており、前記取引リストは、順に生成された取引情報ブロックを含み、前記取引情報ブロックは、ライセンス情報を含み、前記ライセンス情報は、前記取引情報ブロックを生成する時における保護対象ソフトウェアの残りの利用可能時間を含み、前記ルート暗号化値は、前記ライセンス情報に基づいて暗号化して得られたものであり、
前記方法は、
検証対象情報ブロックの取引リストに含まれている各取引情報ブロックに基づいてルート暗号化値を算出することと、
算出して得られたルート暗号化値と、前記検証対象情報ブロックに格納されているルート暗号化値とを比較することと、
比較結果に基づいて前記保護対象ソフトウェアのライセンス情報が改ざんされたかどうかを判定することと、を含む
ことを特徴とするソフトウェアライセンス情報の監視方法。
【請求項8】
前記情報ブロックは、ルート暗号化値と親暗号化値とが含まれているヘッダ情報を含み、前記親暗号化値は、現在の情報ブロックの直前に生成された前の情報ブロックのヘッダ情報に基づいて生成した暗号化値であり、
前記方法は、さらに、
前記検証対象情報ブロックの前の情報ブロックのヘッダ情報を取得することと、
取得された前の情報ブロックのヘッダ情報に基づいて暗号化値を算出することと、
前の情報ブロックのヘッダ情報に基づいて算出して得られた暗号化値と、前記検証対象情報ブロックに格納された親暗号化値とを比較することと、
比較結果に基づいて前記保護対象ソフトウェアのライセンス情報が改ざんされたかどうかを判定することと、を含む
ことを特徴とする請求項7に記載の方法。
【請求項9】
前記情報ブロックのヘッダ情報は、前記情報ブロックの暗号化値を含み、前記情報ブロックの暗号化値は、前記情報ブロックのデータ部分に基づいて算出して得られた暗号化値であり、前記情報ブロックのデータ部分は、前記情報ブロックを生成する時における前記保護対象ソフトウェアのライセンス情報を含み、
前記方法は、さらに、
前記検証対象情報ブロックのデータ部分に基づいて前記検証対象情報ブロックの暗号化値を算出することと、
算出して得られた前記検証対象情報ブロックの暗号化値と、前記検証対象情報ブロックに格納された前記検証対象情報ブロックの暗号化値とを比較することと、
比較結果に基づいて前記保護対象ソフトウェアのライセンス情報が改ざんされたかどうかを判定することと、を含む
ことを特徴とする請求項8に記載の方法。
【請求項10】
前記検証対象情報ブロックの取引リストに含まれている各取引情報ブロックのライセンス情報に基づいてルート暗号化値を算出することは、
前記検証対象情報ブロックの取引リストに含まれている1つ又は複数の取引情報ブロックに対し、所定の暗号化アルゴリズムを用いて各取引情報ブロックのライセンス情報を算出して、各取引情報ブロックの暗号化値をそれぞれ取得することと、
前記所定の暗号化アルゴリズムと前記1つ又は複数の取引情報ブロックの暗号化値とに基づいてコンポーネント暗号化値を算出して取得することと、
前記所定の暗号化アルゴリズムを用いて前記コンポーネント暗号値を算出して、ルート暗号化値を取得することと、を含む
ことを特徴とする請求項7に記載の方法。
【請求項11】
前記所定の暗号化アルゴリズムと前記1つ又は複数の取引情報ブロックの暗号化値とに基づいてコンポーネント暗号化値を算出することは、
検証対象情報ブロックの取引リストにおける所定数量の連続する取引情報ブロックごとに、前記所定の暗号化アルゴリズムを用いて、前記所定数量の連続する取引情報ブロックの暗号化値を算出して、段落暗号化値を取得することと、
前記所定の暗号化アルゴリズムを用いて、算出して得られた少なくとも1つの段落暗号化値を算出して、前記コンポーネント暗号化値を取得することと、を含む
ことを特徴とする請求項10に記載の方法。
【請求項12】
前記検証対象情報ブロックに含まれている取引リストにおける各取引情報ブロックに含まれている残りの利用可能時間が、プリアンブル取引情報ブロックに含まれている残りの利用可能時間よりも小さいかどうかを比較することと、
比較結果に基づいて前記保護対象ソフトウェアの残りの利用可能時間が改ざんされたかどうかを判定することと、をさらに含む
ことを特徴とする請求項7に記載の方法。
【請求項13】
バックアップノード及び/又は外部キャッシュから、バックアップ情報チェーン中で最新に生成された情報ブロックを取得することと、
バックアップノード及び/又は外部キャッシュから取得された情報ブロックと、前記検証対象情報ブロックとを比較することと、
比較結果に基づいて前記保護対象ソフトウェアのライセンス情報が改ざんされたかどうかを判定することと、をさらに含む
ことを特徴とする請求項7に記載の方法。
【請求項14】
プロセッサーと、通信インターフェースと、メモリと、通信バスとを備えるサーバであって、プロセッサー、通信インターフェース及びメモリは、通信バスを介して互に通信し、
メモリは、コンピュータープログラムを格納し、
プロセッサーは、メモリに格納されているプログラムを実行すると、請求項1~13のいずれか一項に記載の方法のステップを実現する
ことを特徴とするサーバ。
【請求項15】
コンピューター読取可能な記憶媒体であって、前記コンピューター読取可能な記憶媒体にはコンピュータープログラムが格納されており、前記コンピュータープログラムがプロセッサーにより実行されると、請求項1~13のいずれか一項に記載の方法のステップを実現する
ことを特徴とするコンピューター読取可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本願は、ソフトウェア管理の技術分野に関し、特に、ソフトウェアのライセンス情報の監視方法、装置、サーバ及び記憶媒体に関する。
【背景技術】
【0002】
商用ソフトウェアは、通常にライセンス(License)制御を必要とし、それによって商用ソフトウェアを使用するユーザの権限を制限する。ライセンス制御とは、ライセンス情報によってユーザが自身の権限内でソフトウェアを使用するように制御することであり、ソフトウェアのライセンス情報には、ソフトウェアの発効時刻、合法的な利用期間、及びライセンスノードの数量が含まれている。
【0003】
合法的な利用期間とは、ユーザがソフトウェアを合法的に使用できる期間であり、例えば、60日、365日などである。ユーザがソフトウェアを合法的な利用期間を超えて使用した場合、ソフトウェアの機能が制限されるか、利用できなくなる。ライセンスノードの数量は、該ソフトウェアを使用できるノードの最大の数量である。例えば、ユーザが1年分のソフトウェアゲートウェイの使用権限を購入し、該ソフトウェアゲートウェイに最大100個のルータがアクセスできるようにした場合、該ソフトウェアゲートウェイの合法的な利用期間は365日であり、ライセンスノードの数量は100個である。ソフトウェアゲートウェイに100個のルータがアクセスされた場合、さらに新しいルータが該ソフトウェアゲートウェイへのアクセスを要求すると、該ルータからのアクセス要求は拒否される。
【0004】
ライセンス制御は、主にライセンス情報の改ざんを防止するためのものであり、現在のライセンス制御方法は以下の通りである。ソフトウェアデプロイメントの際に、ソフトウェアが配置されているホストのハードウェア情報を取得し、該ハードウェア情報は、ホストのMAC(Media Access Control)アドレス、ハードディスクのシリアル番号を含むが、これらに限定されない。そして、ハードウェア情報からキーを生成し、該キーでライセンス情報を暗号化して暗号文を形成する。ソフトウェアの実行中、該暗号文を復号してライセンス情報を取得し、取得されたライセンス情報に基づいてライセンス制御を行う。
【0005】
しかしながら、ライセンス情報の暗号化はホストのハードウェア情報に依存するため、ホストが仮想マシンであり、又はホストがコンテナ化シナリオにある場合、ホストのハードウェア情報を取得しにくくなり、ライセンス情報を効果的に保護することが困難である。また、ホストのハードウェア情報を取得して該ハードウェア情報を用いて暗号化しても、改ざん者もホストのハードウェア情報を取得すれば、暗号文を復号することができ、ライセンス情報が改ざんされたリスクがあり、セキュリティが悪くなる。
【発明の概要】
【0006】
本願の実施形態は、ライセンス情報が改ざんされ有効になることを防止するとともに、セキュリティを向上させるために、ソフトウェアのライセンス情報の監視方法、装置、サーバ及び記憶媒体を提供することを目的とする。具体的な技術手段は、以下の通りである。
【0007】
第1の態様として、本願の実施形態は、サーバに適用されるソフトウェアのライセンス情報の監視方法を提供し、前記方法は、
所定時間ごとに取引情報ブロックを生成し、前記取引情報ブロックはライセンス情報を含み、前記ライセンス情報は、前記取引情報ブロックを生成する時における保護対象ソフトウェアの残りの利用可能時間を含んでいることと、
生成された取引情報ブロックに基づいてルート暗号化値を算出することと、
情報ブロックを生成し、前記情報ブロックは、前記ルート暗号化値と、順に生成された取引情報ブロックが含まれている取引リストとを含むことと、
前記情報ブロックを情報チェーンに加え、前記情報チェーンは、順に生成された情報ブロックを含むことと、を含む。
【0008】
一つの実現可能な態様において、
現在のシステム時刻と前記保護対象ソフトウェアの発効時刻を取得するステップと、
前記現在のシステム時刻と前記保護対象ソフトウェアの発効時刻との差に基づいて、前記保護対象ソフトウェアの使用された時間を確定するステップと、
前記保護対象ソフトウェアの利用可能な総時間と前記使用された時間との差に基づいて、前記保護対象ソフトウェアの残りの利用可能時間を確定するステップと、によって、前記保護対象ソフトウェアの残りの利用可能時間は、確定される。
【0009】
一つの実現可能な態様において、前記情報ブロックを生成した後、前記方法は、
前記サーバのバックアップノード及び/又は外部キャッシュに前記情報ブロックをブロードキャストして、前記サーバの前記バックアップノード及び/又は前記外部キャッシュ内に情報チェーンのバックアップ情報チェーンを生成することを更に含む。
【0010】
一つの実現可能な態様において、前記情報ブロックにはヘッダ情報が含まれており、前記ヘッダ情報には前記ルート暗号化値と親暗号化値とが含まれており、
前記方法は、
前記情報ブロックの直前に生成された前の情報ブロックのヘッダ情報を取得することと、
取得された前記前の情報ブロックのヘッダ情報に基づいて前記親暗号化値を算出することと、を更に含む。
【0011】
一つの実現可能な態様において、前記情報ブロックを生成することは、
前記情報ブロックにおけるデータ部分を生成し、前記データ部分は前記保護対象ソフトウェアの現在の残りの利用可能時間を含んでいることと、
前記情報ブロックのデータ部分に基づいて前記情報ブロックの暗号化値を算出することと、
前記情報ブロックの暗号化値を前記情報ブロックのヘッダ情報に加えることと、を含む。
【0012】
一つの実現可能な態様において、前記生成された取引情報ブロックに基づいてルート暗号化値を算出することは、
生成された1つ又は複数の取引情報ブロックに基づいて、所定の暗号化アルゴリズムを用いて各取引情報ブロックのライセンス情報を算出し、各取引情報ブロックの暗号化値をそれぞれ取得することと、
前記所定の暗号化アルゴリズムと前記1つ又は複数の取引情報ブロックの暗号化値とに基づいてコンポーネント暗号化値を算出して取得することと、
前記所定の暗号化アルゴリズムを用いて前記コンポーネント暗号化値を算出して、前記ルート暗号化値を取得することと、を含む。
【0013】
第2の態様として、本願の実施形態は、サーバに適用されるソフトウェアのライセンス情報の監視方法を提供し、保護対象ソフトウェアのライセンス情報は情報チェーンの形式で格納されており、
前記情報チェーンは、順に生成された取引情報ブロックを含み、前記取引情報ブロックは、取引リストとルート暗号化値とを含み、ここで、前記取引リストは、順に生成された取引情報ブロックを含み、前記取引情報ブロックは、ライセンス情報を含み、前記ライセンス情報は、前記取引情報ブロックを生成する時における保護対象ソフトウェアの残りの利用可能時間を含み、前記ルート暗号化値は、前記ライセンス情報に基づいて暗号化して得られたものであり、
前記方法は、
検証対象情報ブロックの取引リストに含まれている各取引情報ブロックに基づいてルート暗号化値を算出することと、
算出して得られたルート暗号化値と、前記検証対象情報ブロックに格納されているルート暗号化値とを比較することと、
比較結果に基づいて前記保護対象ソフトウェアのライセンス情報が改ざんされたかどうかを判定することと、を含む。
【0014】
一つの実現可能な態様において、前記情報ブロックは、ルート暗号化値と親暗号化値とが含まれているヘッダ情報を含み、ここで、前記親暗号化値が現在の情報ブロックの直前に生成された前の情報ブロックのヘッダ情報に基づいて生成した暗号化値であり、前記方法は、さらに、
前記検証対象情報ブロックの前の情報ブロックのヘッダ情報を取得することと、
取得された前の情報ブロックのヘッダ情報に基づいて暗号化値を算出することと、
前の情報ブロックのヘッダ情報に基づいて算出して得られた暗号化値と、前記検証対象情報ブロックに格納された親暗号化値とを比較することと、
比較結果に基づいて前記保護対象ソフトウェアのライセンス情報が改ざんされたかどうかを判定することと、を含む。
【0015】
一つの実現可能な態様において、前記情報ブロックのヘッダ情報は、前記情報ブロックの暗号化値を含み、前記情報ブロックの暗号化値は、前記情報ブロックのデータ部分に基づいて算出して得られた暗号化値であり、前記情報ブロックのデータ部分は、前記情報ブロックを生成する時における前記保護対象ソフトウェアのライセンス情報を含み、
前記方法は、さらに、
前記検証対象情報ブロックのデータ部分に基づいて前記検証対象情報ブロックの暗号化値を算出することと、
算出して得られた前記検証対象情報ブロックの暗号化値と、前記検証対象情報ブロックに格納された前記検証対象情報ブロックの暗号化値とを比較することと、
比較結果に基づいて前記保護対象ソフトウェアのライセンス情報が改ざんされたかどうかを判定することと、を含む。
【0016】
一つの実現可能な態様において、前記検証対象情報ブロックの取引リストに含まれている各取引情報ブロックのライセンス情報に基づいてルート暗号化値を算出することは、
前記検証対象情報ブロックの取引リストに含まれている1つ又は複数の取引情報ブロックに対し、所定の暗号化アルゴリズムを用いて各取引情報ブロックのライセンス情報を算出して、各取引情報ブロックの暗号化値をそれぞれ取得することと、
前記所定の暗号化アルゴリズムと前記1つ又は複数の取引情報ブロックの暗号化値とに基づいてコンポーネント暗号化値を算出して取得することと、
前記所定の暗号化アルゴリズムを用いて前記コンポーネント暗号値を算出し、ルート暗号化値を取得することと、を含む。
【0017】
一つの実現可能な態様において、前記所定の暗号化アルゴリズムと前記一つ又は複数の取引情報ブロックの暗号化値とに基づいてコンポーネント暗号化値を算出することは、
検証対象情報ブロックの取引リストにおける所定数量の連続する取引情報ブロックごと、前記所定の暗号化アルゴリズムを用いて、前記所定数量の連続する取引情報ブロックの暗号化値を算出して、段落暗号化値を取得することと、
前記所定の暗号化アルゴリズムを用いて、算出して得られた少なくとも1つの段落暗号化値を算出し、前記コンポーネント暗号化値を取得することと、を含む。
【0018】
一つの実現可能な態様において、前記方法は、
前記検証対象情報ブロックに含まれている取引リストにおける各取引情報ブロックに含まれている残りの利用可能時間が、プリアンブル取引情報ブロックに含まれている残りの利用可能時間よりも小さいかどうかを比較することと、
比較結果に基づいて前記保護対象ソフトウェアの残りの利用可能時間が改ざんされたかどうかを判定することと、をさらに含む。
【0019】
一つの実現可能な態様において、前記方法は、
バックアップノード及び/又は外部キャッシュからバックアップ情報チェーン中で最新に生成された情報ブロックを取得することと、
バックアップノード及び/又は外部キャッシュから取得された情報ブロックと、前記検証対象情報ブロックとを比較することと、
比較結果に基づいて前記保護対象ソフトウェアのライセンス情報が改ざんされたかどうかを判定することと、をさらに含む。
【0020】
第3の態様として、本願の実施形態は、サーバに適用されるソフトウェアのライセンス情報の監視装置を提供し、前記装置は、
所定時間ごとに取引情報ブロックを生成し、前記取引情報ブロックはライセンス情報を含み、前記ライセンス情報は、前記取引情報ブロックを生成する時における保護対象ソフトウェアの残りの利用可能時間を含んでいる、生成モジュールと、
生成された取引情報ブロックに基づいてルート暗号化値を算出する、算出モジュールと、
記憶モジュールと、を備え、
前記生成モジュールは、さらに、前記ルート暗号化値と、順に生成された取引情報ブロックが含まれている取引リストとを含む情報ブロックを生成し、
前記記憶モジュールは、前記情報ブロックを情報チェーンに加え、前記情報チェーンは順に生成された情報ブロックを含む。
【0021】
一つの実現可能な態様において、前記生成モジュールは、具体的に、
現在のシステム時刻と前記保護対象ソフトウェアの発効時刻を取得するステップと、
前記現在のシステム時刻と前記保護対象ソフトウェアの発効時刻との差に基づいて、前記保護対象ソフトウェアの使用された時間を確定するステップと、
前記保護対象ソフトウェアの利用可能な総時間と前記使用された時間との差に基づいて、前記保護対象ソフトウェアの残りの利用可能時間を確定するステップと、により前記保護対象ソフトウェアの残りの利用可能時間を確定する。
【0022】
一つの実現可能な態様において、前記装置は、
ブロードキャストモジュールをさらに備え、該ブロードキャストモジュールは、前記サーバのバックアップノード及び/又は外部キャッシュに前記情報ブロックをブロードキャストして、前記サーバの前記バックアップノード及び/又は前記外部キャッシュ内に情報チェーンのバックアップ情報チェーンを生成する。
【0023】
一つの実現可能な態様において、前記情報ブロックにはヘッダ情報が含まれており、前記ヘッダ情報には前記ルート暗号化値と親暗号化値とが含まれており、
前記算出モジュールは、さらに、
前記情報ブロックの直前に生成された前の情報ブロックのヘッダ情報を取得し、
取得された前記前の情報ブロックのヘッダ情報に基づいて前記親暗号化値を算出する。
【0024】
一つの実現可能な態様において、前記生成モジュールは、具体的に、
前記情報ブロックにおけるデータ部分を生成し、前記データ部分は前記保護対象ソフトウェアの現在の残りの利用可能時間を含んでおり、
前記情報ブロックのデータ部分に基づいて前記情報ブロックの暗号化値を算出し、
前記情報ブロックの暗号化値を前記情報ブロックのヘッダ情報に加える。
【0025】
一つの実現可能な態様において、前記算出モジュールは、具体的に、
生成された1つ又は複数の取引情報ブロックに基づいて、所定の暗号化アルゴリズムを用いて各取引情報ブロックのライセンス情報を算出し、各取引情報ブロックの暗号化値をそれぞれ取得し、
前記所定の暗号化アルゴリズムと前記1つ又は複数の取引情報ブロックの暗号化値とに基づいてコンポーネント暗号化値を算出して取得し、
前記所定の暗号化アルゴリズムを用いて前記コンポーネント暗号化値を算出し、前記ルート暗号化値を取得する。
【0026】
第4の態様として、本願の実施形態は、サーバに適用されるソフトウェアのライセンス情報の監視装置を提供し、保護対象ソフトウェアのライセンス情報は情報チェーンの形式で格納されており、
前記情報チェーンは、取引リストとルート暗号化値が含まれている順に構築された情報ブロックとを含み、ここで、前記取引リストは、順に生成された取引情報ブロックを含み、前記ライセンス情報は、ライセンス情報を含み、前記ライセンス情報は、前記取引情報ブロックを生成する時における保護対象ソフトウェアの残りの利用可能時間を含み、前記ルート暗号化値は、前記ライセンス情報に基づいて暗号化して得られたものであり、
前記装置は、
検証対象情報ブロックの取引リストに含まれている各取引情報ブロックに基づいてルート暗号化値を算出する、算出モジュールと、
算出して得られたルート暗号化値と、前記検証対象情報ブロックに格納されているルート暗号化値とを比較し、比較結果に基づいて前記保護対象ソフトウェアのライセンス情報が改ざんされたかどうかを判定する、検証モジュールとを備える。
【0027】
一つの実現可能な態様において、前記情報ブロックは、ルート暗号化値と親暗号化値とが含まれているヘッダ情報を含み、ここで、前記親暗号化値は、現在の情報ブロックの直前に生成された前の情報ブロックのヘッダ情報に基づいて生成した暗号化値であり、前記装置は、さらに、
前記検証対象情報ブロックの前の情報ブロックのヘッダ情報を取得する、取得モジュールと備え、
前記算出モジュールは、さらに、取得された前の情報ブロックのヘッダ情報に基づいて暗号化値を算出し、
前記検証モジュールは、さらに、前の情報ブロックのヘッダ情報に基づいて算出して得られた暗号化値と、前記検証対象情報ブロックに格納された親暗号化値とを比較し、比較結果に基づいて前記保護対象ソフトウェアのライセンス情報が改ざんされたかどうかを判定する。
【0028】
一つの実現可能な態様において、前記情報ブロックのヘッダ情報は、前記情報ブロックのデータ部分に基づいて算出して得られた暗号化値である前記情報ブロックの暗号化値を含み、前記情報ブロックのデータ部分は、前記情報ブロックを生成する時における前記保護対象ソフトウェアのライセンス情報を含み、
前記算出モジュールは、さらに、前記検証対象情報ブロックのデータ部分に基づいて前記検証対象情報ブロックの暗号化値を算出し、
前記検証モジュールは、さらに、算出して得られた前記検証対象情報ブロックの暗号化値と、前記検証対象情報ブロックに格納された前記検証対象情報ブロックの暗号化値とを比較し、比較結果に基づいて前記保護対象ソフトウェアのライセンス情報が改ざんされたかどうかを判定する。
【0029】
一つの実現可能な態様において、前記算出モジュールは、具体的に、
前記検証対象情報ブロックの取引リストに含まれている1つ又は複数の取引情報ブロックに対し、所定の暗号化アルゴリズムを用いて各取引情報ブロックのライセンス情報を算出し、各取引情報ブロックの暗号化値をそれぞれ取得し、
前記所定の暗号化アルゴリズムと前記1つ又は複数の取引情報ブロックの暗号化値とに基づいてコンポーネント暗号化値を算出して取得し、
前記所定の暗号化アルゴリズムを用いて前記コンポーネント暗号値を算出して、ルート暗号化値を取得する。
【0030】
一つの実現可能な態様において、前記算出モジュールは、具体的に、
検証対象情報ブロックの取引リストにおける所定数量の連続する取引情報ブロックごと、前記所定の暗号化アルゴリズムを用いて、前記所定数量の連続する取引情報ブロックの暗号化値を算出して、段落暗号化値を取得し、
前記所定の暗号化アルゴリズムを用いて、算出して得られた少なくとも1つの段落暗号化値を算出し、前記コンポーネント暗号化値を取得する。
【0031】
一つの実現可能な態様において、前記検証モジュールは、さらに、
前記検証対象情報ブロックに含まれている取引リストにおける各取引情報ブロックに含まれている残りの利用可能時間が、プリアンブル取引情報ブロックに含まれている残りの利用可能時間よりも小さいかどうかを比較し、
比較結果に基づいて前記保護対象ソフトウェアの残りの利用可能時間が改ざんされたかどうかを判定する。
【0032】
一つの実現可能な態様において、前記取得モジュールは、さらに、バックアップノード及び/又は外部キャッシュからバックアップ情報チェーン中で最新に生成された情報ブロックを取得し、
前記検証モジュールは、さらに、バックアップノード及び/又は外部キャッシュから取得された情報ブロックと、前記検証対象情報ブロックとを比較し、比較結果に基づいて前記保護対象ソフトウェアのライセンス情報が改ざんされたかどうかを判定する。
【0033】
第5の態様として、本願の実施形態は、プロセッサーと、通信インターフェースと、メモリと、通信バスとを備えるサーバを提供し、ここで、プロセッサー、通信インターフェース及びメモリは、通信バスを介して互に通信し、
メモリは、コンピュータープログラムを格納し、
プロセッサーは、メモリに格納されているプログラムを実行すると、上記第1の態様に記載の方法のステップを実現する。
【0034】
第6の態様として、本願の実施形態は、プロセッサーと、通信インターフェースと、メモリと、通信バスとを備えるサーバを提供し、ここで、プロセッサー、通信インターフェース及びメモリは、通信バスを介して互に通信し、
メモリは、コンピュータープログラムを格納し、
プロセッサーは、メモリに格納されているプログラムを実行すると、上記第2の態様に記載の方法のステップを実現する。
【0035】
第7の態様として、本願の実施形態は、コンピューター読取可能な記憶媒体を提供し、前記コンピューター読取可能な記憶媒体にはコンピュータープログラムが格納されており、前記コンピュータープログラムがプロセッサーにより実行されると、第1の態様に記載の方法を実現する。
【0036】
第8の態様として、本願の実施形態は、コンピューター読取可能な記憶媒体を提供し、前記コンピューター読取可能な記憶媒体にはコンピュータープログラムが格納されており、前記コンピュータープログラムがプロセッサーにより実行されると、第2の態様に記載の方法を実現する。
【0037】
第9の態様として、本願の実施形態は、命令を含むコンピュータプログラム製品をさらに提供し、このコンピュータプログラム製品がコンピュータで実行されると、コンピュータが上記第1の態様に記載の方法を実行させる。
【0038】
第10の態様として、本願の実施形態は、命令を含むコンピュータプログラム製品をさらに提供し、このコンピュータプログラム製品がコンピュータで実行されると、コンピュータが上記第2の態様に記載の方法を実行させる。
【0039】
上記の技術案によれば、ルート暗号化値は、生成された各取引情報ブロックに含まれているライセンス情報に基づいて算出して得られたものであり、いずれかの取引情報ブロックに含まれているライセンス情報が改ざんされると、ルート暗号化値が変化する。本願の実施形態において、検証対象情報ブロックの取引リストに含まれている各取引情報ブロックに基づいてルート暗号化値を算出し、算出して得られたルート暗号化値と格納されているルート暗号化値とを比較することで、ライセンス情報が改ざんされたかどうかを判定することができる。ルート暗号化値を生成するときにハードウェア情報が使用されないため、改ざん者が本願の実施形態で使用される暗号化アルゴリズムを知らない限り、ルート暗号化値を改ざんすることは困難である。改ざん者がすべての取引情報ブロックの情報を改ざんした場合でも、ルート暗号化値が改ざんされていない限り、上記のプロセスによりライセンス情報の改ざんが発見され、改ざんされたライセンス情報を利用することを回避できる。したがって、上記のソフトウェアのライセンス情報の監視方法は、ホストのハードウェア情報を使用せずに、ソフトウェアのライセンス情報のセキュリティを向上させることができる。
【0040】
もちろん、本願の任意の製品又は方法を実施することは、必ずしも上記の利点のすべてを同時に実現することを必要としない。
【図面の簡単な説明】
【0041】
以下、本願の実施形態の技術案及び従来技術の技術案をより明瞭に説明するために、実施形態及び従来技術に必要な図面を簡単に説明する。なお、下記に記載の図面は本願の一部の実施形態であり、当業者であれば、創造的な労力を必要とせずに、これらの図面に基づいて他の図面を得ることができる。
【0042】
【
図1】
図1は、本願の実施形態により提供される取引情報ブロックのデータ構造の例示的な模式図である。
【
図2】
図2は、本願の実施形態により提供されるハッシュツリーのデータ構造の例示的な模式図である。
【
図3】
図3は、本願の実施形態により提供される情報ブロックのデータ構造の例示的な模式図である。
【
図4】
図4は、本願の実施形態により提供される情報チェーンのデータ構造の例示的な模式図である。
【
図5】
図5は、本願の実施形態により提供される分散型クラスターシステムにおける各装置との関係の模式図である。
【
図6】
図6は、本願の実施形態により提供されるリード/ライト機能を実現するライセンス装置の例示的な模式図である。
【
図7】
図7は、本願の実施形態により提供されるソフトウェアのライセンス情報の監視方法のフローチャートである。
【
図8】
図8は、本願の実施形態により提供される別のソフトウェアのライセンス情報の監視方法のフローチャートである。
【
図9】
図9は、本願の実施形態により提供されるソフトウェアのライセンス情報の監視方法の例示的なフローチャートである。
【
図10】
図10は、本願の実施形態により提供されるソフトウェアのライセンス情報の監視装置の構造の模式図である。
【
図11】
図11は、本願の実施形態により提供される別のソフトウェアのライセンス情報の監視装置の構造の模式図である。
【
図12】
図12は、本願の実施形態により提供されるサーバの構造の模式図である。
【発明を実施するための形態】
【0043】
本願の目的、技術案及びメリットをより明確にするために、以下、図面を参照し実施形態と合わせて、本願についてより詳細に説明する。説明された実施形態は、すべての実施形態ではなく、本願の実施形態の一部にすぎないことが明らかである。当業者によって本願の実施形態に基づいて創造的な労力を必要とせずに得られる他のすべての実施形態は、本願の保護範囲に含まれている。
【0044】
関連技術では、ソフトウェアのライセンス情報は一般にハードウェア情報によって暗号化され、ソフトウェアが配置されているホストが物理マシンである場合、オペレーティングシステムの対応する機能によって物理マシンのハードウェア情報を収集することができる。ソフトウェアが配置されているホストが仮想マシンである場合、仮想マシンのハードウェアの情報が仮想的、可変的なものであるため、仮想マシンが配置されている物理マシンのハードウェア情報を収集するために、仮想マシンの製造元の仮想ソフトウェアが必要とする。仮想化ソフトウェアは、物理マシンのハードウェア情報を取得する機能がサポートされていない場合、物理マシンのハードウェア情報を取得することはできない。
【0045】
また、コンテナにソフトウェアを配置すると、コンテナが可搬性と動的特性を有するため、ソフトウェアが配置されている物理マシンが変化しやすい。そのため、コンテナ化シナリオでは、ソフトウェアが配置されている物理マシンのハードウェア情報を取得することが困難である。したがって、物理マシンのハードウェア情報を用いてソフトウェアのライセンス情報を暗号化することは困難である。
【0046】
現在、一般に、大型ソフトウェアが分散型クラスターのアーキテクチャを採用しており、ライセンス情報も分散的に格納されているため、1つのホストのハードウェア情報を用いてライセンス情報を暗号化する方式は分散型クラスターに適用できない。したがって、ライセンス情報をハードウェア情報で保護する方式は利用シーンが限られ、セキュリティが悪くなる。
【0047】
上記の課題を解決するために、本願の実施形態は、ソフトウェアのライセンス情報の監視方法を提供する。
【0048】
ソフトウェアのライセンス情報が極秘データであるため、インストール可能なソフトウェアのライセンス情報が改ざんされないように確保するために、サーバは、ソフトウェアのライセンス情報を監視する必要がある。
【0049】
本願の実施形態において、ハッシュアルゴリズムを暗号化アルゴリズムとして、本願にかかる取引情報ブロック、情報ブロック及び情報チェーンのデータ構造について説明する。暗号化アルゴリズムは、ハッシュアルゴリズムに限定されないと理解されるべきである。例えば、本願は、シフト暗号化アルゴリズムなどの他の暗号化アルゴリズムを用いて暗号化値を算出することができる。
【0050】
本願の実施形態により提供されるソフトウェアのライセンス情報の監視方法において、保護対象ソフトウェアに対して、サーバは、ソフトウェアのライセンス情報に基づいて1つの取引情報ブロックを毎日生成することができる。もちろん、取引情報ブロックの生成頻度は、二日ごとに1つの取引情報ブロックを生成してもよく、又は一日ごとに2つの取引情報ブロックを生成してもよく、取引情報ブロックの生成頻度に対して限定しない。
【0051】
(1)
図1に示すように、
図1は、本願の実施形態にかかる取引情報ブロックのデータ構造の模式図である。取引情報ブロックは、ヘッダ情報とデータ部分を含む。
【0052】
取引情報ブロックのヘッダ情報は、取引情報ブロックのシリアルナンバーと該取引情報ブロックのハッシュ値を含む。取引情報ブロックのハッシュ値は、該取引情報ブロックのデータ部分を用いてハッシュ演算を行って得られたハッシュ値である。
【0053】
取引情報ブロックのデータ部分は、残りの利用可能時間を含む。残りの利用可能時間は、保護対象ソフトウェアの使用が許可されている残りの利用可能時間である。
【0054】
好ましくは、取引情報ブロックのデータ部分は、コンポーネント識別子、タイムスタンプ、ライセンスノードの数量、乱数、及び予約フィールドのうちの少なくとも1つをさらに含む。ここで、ソフトウェアコンポーネントは開発者又は消費者向けの独立したソフトウェア製品として使用できるため、コンポーネント識別子を用いて、生成された取引情報ブロックに対応するコンポーネントを示すことができる。タイムスタンプは、取引情報ブロックを生成するときのシステム時刻である。乱数を加えることにより、取引情報ブロックの暗号化又は復号の算出方法をより複雑にすることができ、取引情報ブロックのハッシュ値の改ざんがさらに困難になり、ここで、乱数が16ビットであってよい。予約フィールドは、後で取引情報ブロックのデータ部分の内容を拡張するために用いられる。
【0055】
(2)取引情報ブロックを生成した後、生成された取引情報ブロックに基づいて暗号化を行い、暗号化値で構成されたデータ構造を取得することができる。
【0056】
本実施形態では、暗号化アルゴリズムであるハッシュアルゴリズムを例として、本願の方法にかかる概念について説明する。暗号化アルゴリズムがハッシュアルゴリズムである場合、生成された取引情報ブロックに基づいてハッシュツリーを生成することができる。
図2に示すように、
図2は、本願の実施形態におけるハッシュツリーのデータ構造の模式図である。仮に、保護対象ソフトウェアは、コンポーネント1とコンポーネント2とを備える。
図2では、各TXが1つの取引情報ブロックのデータ部分を表し、又は、各TXが1つの取引情報ブロックを表す。仮に、現在のコンポーネント1とコンポーネント2が60日間使用されたとすると、現在、コンポーネント1は、具体的には
図2の上半部のTX1からTX60に対応する60個の取引情報ブロックが生成されているとともに、コンポーネント2は、具体的には
図2の下半部のTX1からTX60に対応する60個の取引情報ブロックが生成されている。
【0057】
TXのハッシュ値を5つごとにそれぞれ結合した後、結合結果に対してハッシュ演算を行って段落ハッシュ値を取得する。
【0058】
そして、同一のコンポーネントに対応する各段落ハッシュ値を結合してハッシュ演算を行い、コンポーネントハッシュ値を取得する。
【0059】
コンポーネント1を例として、TX1~TX5のハッシュ値を結合してハッシュ演算を行い、TX1~TX5の段落ハッシュ値を取得する。詳細については
図2のHash(1~5)を参照する。TX6~TX10に対応する段落ハッシュ値、TX10~TX15に対応する段落ハッシュ値から、TX56~TX60に対応する段落ハッシュ値までに算出し、コンポーネント1の12個の段落ハッシュ値を取得することができる。
【0060】
コンポーネント1の12個の段落ハッシュ値を結合してハッシュ演算を行い、コンポーネント1のコンポーネントハッシュ値を取得する。詳細については
図2のコンポーネントHash(1~60)を参照する。本実施形態では、コンポーネントハッシュ情報にはコンポーネントハッシュ値と現在の該コンポーネントの最後に生成された取引情報ブロックのデータ部分とが含まれることを例として説明する。コンポーネント1のコンポーネントハッシュ情報は、コンポーネント1のコンポーネントハッシュ値とコンポーネント1のTX60の情報を含む。
【0061】
同じ算出方法に基づいて、コンポーネント2のコンポーネントハッシュ情報を取得することができ、コンポーネント2のコンポーネントハッシュ情報は、コンポーネント2のコンポーネントハッシュ値とコンポーネント2のTX60の情報とを含む。
【0062】
コンポーネント1のコンポーネントハッシュ値とコンポーネント2のコンポーネントハッシュ値とを結合してハッシュ演算を行い、ルートハッシュ値を取得する。
【0063】
保護対象ソフトウェアには、1つのコンポーネントのみ、例えばコンポーネント1のみが含まれている場合、コンポーネント1の段落ハッシュ値を取得した後、コンポーネント1の段落ハッシュ値を結合してハッシュ演算を行い、ルートハッシュ値を取得する。
【0064】
上記の計算プロセスでは、取引情報ブロックを5つごとに段落として段落ハッシュ値を算出する。現在の生成された取引情報ブロックが5つ未満であり、例えば、4つしかない場合、これら4つの取引情報ブロックのハッシュ値に基づいて段落ハッシュ値を算出する。或いは、現在、53個の取引情報ブロックが生成された場合、算出された最後の段落ハッシュ値はTX50からTX53までの段落ハッシュ値である。
【0065】
上記において、例として、取引情報ブロックの5つごとのハッシュ値に基づいて段落ハッシュ値を算出するが、実際には、5つに限定されず、たとえば2つ又は3つであってもよい。
【0066】
(3)
図2に示すハッシュツリーを取得した後、該ハッシュツリー及び取引リストに基づいて情報ブロックを生成することができる。
図3に示すように、
図3は、本願の実施形態における情報ブロックのデータ構造の模式図である。情報ブロックは、データ構造の観点から、ヘッダ情報とデータ部分を含み、取引部分をさらに含む。情報ブロックのヘッダ情報は、情報ブロックに基づいて生成されたハッシュ値を格納するために用いられる。ここで、情報ブロックのヘッダ情報は、親ハッシュ値、現在の情報ブロックのハッシュ値、ルートハッシュ値のうちのいずれか1つ又は複数を含むことができる。好ましくは、ヘッダ情報は、タイムスタンプ、乱数、シリアルナンバーのうちのいずれか1つ又は複数を含んでもよい。親ハッシュ値は、現在の情報ブロックの直前に生成された前の情報ブロックのヘッダ情報に対してハッシュ演算を行って得られたハッシュ値である。例えば、情報ブロック1、情報ブロック2、情報ブロック3、情報ブロック4が時系列的に生成され、現在生成されている情報ブロックが情報ブロック5であると、情報ブロック5のヘッダ情報に含まれている親ハッシュ値は、情報ブロック4のヘッダ情報に対してハッシュ演算を行って得られたハッシュ値である。
【0067】
現在の取引情報ブロックのハッシュ値は、現在の取引情報ブロックのデータ部分に対してハッシュ演算を行って得られたハッシュ値である。
【0068】
ルートハッシュ値は、
図2におけるルートハッシュ値であり、
タイムスタンプは、現在の情報ブロックを生成するときのシステム時刻であり、
ヘッダ情報に含まれているシリアルナンバーは、現在の情報ブロックのシリアルナンバーであり、例えば、現在の情報ブロックが保護対象ソフトウェアにより生成された5番目の情報ブロックであると、ヘッダ情報に含まれているシリアルナンバーは5である。
【0069】
情報ブロックのデータ部分はコンポーネントハッシュ情報を格納するために用いられる。例えば、情報ブロックのデータ部分は、
図2におけるコンポーネントハッシュ情報、即ちコンポーネント1のコンポーネントハッシュ情報とコンポーネント2のコンポーネントハッシュ情報とを含む。
【0070】
情報ブロックの取引部分は、各コンポーネントのすでに生成された取引情報ブロックのデータ部分を格納するために用いられる。例えば、情報ブロックの取引部分は、コンポーネント1に対して現在すでに生成されたTX1~TX60を含むコンポーネント1の取引リストと、コンポーネント2に対して現在すでに生成されたTX1~TX60を含むコンポーネント2の取引リストと、を含むことができる。
【0071】
(4)本願では、生成された情報ブロックに基づいて特定の順序で形成されたデータ構造は、情報チェーンとも呼ばれる。
図4に示すように、
図4は、本願の実施形態における情報チェーンのデータ構造の模式図である。
【0072】
ここで、情報チェーンは、順に構築される情報ブロックを含み、その中で、情報チェーン内で最初に生成された情報ブロックが本願ではジェネシスブロックと呼ばれ、ジェネシスブロックのデータ構造は、他の情報ブロックのデータ構造と同じである。内容に関しては、ジェネシスブロックには、コンポーネントの許可される使用時間、つまりコンポーネントの利用可能な総時間が含まれている。
【0073】
図4は、ジェネシスブロックの後に生成された2つの情報ブロックを例示的に示したが、実際に実行する場合、情報ブロックの数量が限定されない。
【0074】
一例として、取引ブロックを毎日1つ生成し、全ての生成された取引情報ブロックに基づいて上記ハッシュツリーを算出し、さらに情報ブロックを毎日1つ作成し、即ち
図4に示した情報チェーンに情報ブロックを毎日1つ加える。
【0075】
本願の実施形態により提供されるソフトウェアのライセンス情報の監視方法は、複数のサーバを備える分散型クラスターシステムに適用され、分散型クラスターシステムに含まれているサーバにより本願の実施形態に提供される方法とプロセスを実行することができる。
【0076】
1つの実施形態において、保護対象ソフトウェアが存在する分散型クラスターシステムにライセンス装置を配置することができ、該ライセンス装置は、1つのプロセス又は1つのプロセスの一部である。具体的に、該ライセンス装置は、分散型クラスターシステムの何れか1つのサーバに配置されることができ、本願の実施形態により提供される方法のプロセスを実現するために用いられる。
【0077】
好ましくは、分散型クラスターシステムに複数のライセンス装置を配置し、そのうちの1つのライセンス装置をマスタノードとして使用し、他のライセンス装置をバックアップノードとして使用することができる。マスタノードは、保護対象ソフトウェアのライセンス情報を格納及び/又は検証するために用いられる。バックアップノードは保護対象ソフトウェアのライセンス情報を検証するために用いられる。
【0078】
図5は、本願の実施形態により提供される分散型クラスターシステムにおける各装置との関係の模式図である。
図5に示すように、一例として、ライセンス装置1、ライセンス装置2、及びライセンス装置3のような3つのライセンス装置が分散クラスターシステムに配備されている。各ライセンス装置は、いずれも、データをリード/ライトする機能を有する。
【0079】
ビジネスサービス装置は、アプリケーションプログラミングインターフェース(Application Programming Interface,API)ゲートウェイを介してライセンス装置1、ライセンス装置2及びライセンス装置3とそれぞれ通信している。
【0080】
ビジネスサービス装置は、保護対象ソフトウェアに対してソフトウェアのライセンスを制御するために用いられ、具体的にユーザの保護対象ソフトウェアに対する使用を管理するために使用される。ビジネスサービス装置は、たとえば、保護対象ソフトウェアのライセンス情報に基づいて、ユーザに保護対象ソフトウェアを使用する権限があるか否かを確定することができる。
【0081】
即ち、APIゲートウェイは、ルーティング及び負荷分散機能を実現することができる。
【0082】
ビジネスサービス装置は、APIゲートウェイに読取要求を送信することができる。APIゲートウェイがビジネスサービス装置から送信された読取要求を受信した場合、APIゲートウェイは、負荷分散ポリシーに従って、又はランダムに、該読取要求を
図5のライセンス装置のうちの1つに転送することができる。これにより、該ライセンス装置は、保護対象ソフトウェアのライセンス情報を読み取り、APIゲートウェイを介してビジネスサービス装置に送信し、そして、ビジネスサービス装置は、読み取ったライセンス情報に基づいてソフトウェアのライセンス制御を行う。
【0083】
ライセンス装置の書込機能により、保護ソフトウェアに対するライセンス情報の書込を実現することができ、ライセンス情報に対する改ざん防止機能を実現することもできる。
【0084】
図5のライセンス装置、APIゲートウェイ及びビジネスサービス装置は、分散型クラスターシステムに配置されたソフトウェアである。ライセンス装置、APIゲートウェイ、及びビジネスサービス装置は、具体的に、分散型クラスターシステム内の1つのサーバに配置されてもよいし、分散型クラスターシステム内の複数のサーバに配置されてもよい。
【0085】
図6に示すように、
図6は本願の実施形態により提供されるリード/ライト機能を実現するライセンス装置の例示的な模式図である。ビジネスサービス装置は、APIゲートウェイを介して、ライセンス装置に格納されたライセンス情報を読み取るように要求することができる。ライセンス装置は、所定時間ごとに最新のライセンス情報を書き込む。
図6における3つのライセンス装置は、リーダー選挙メカニズムで1つのライセンス装置をマスタノードとして選択し、残りの2つのライセンス装置をバックアップノードとして用いることができる。
【0086】
図6では、ライセンス装置1をマスタノードとし、ライセンス装置2及びライセンス装置3をバックアップノードとすることを例とすると、ライセンス装置1は、所定時間ごとに情報を書き込み、即ち、保護対象ソフトウェアの最新のライセンス情報を生成し、該ライセンス情報を格納する。
【0087】
ライセンス装置1は、ライセンス情報を生成した後、生成されたライセンス情報をライセンス装置2及びライセンス装置3に同期し、ライセンス装置2及びライセンス装置3は、所定の時間ごとに格納されたライセンス情報を検証することにより、ライセンス情報の改ざんを防止する。好ましくは、ライセンス装置1は、さらに、所定の時間ごとに、格納されたライセンス情報を検証することができる。
【0088】
ここで、マスタノードがライセンス情報を書き込む期間は、バックアップノードがライセンス情報を検証する期間と同じであってよく、例えばマスタノードが毎日1回ライセンス情報を書き込む。それなりに、バックアップノードは、ライセンス情報を毎日1回検証する。あるいは、セキュリティをさらに向上するために、バックアップノードは、1時間に1回のように検証周期を短縮することも可能である。
【0089】
図6では、APIゲートウェイが読取要求を受信した後、負荷分散ポリシーに従って読取要求をライセンス装置3に転送することを例とすると、その後に、ライセンス装置3は該読取要求を処理することができる。
【0090】
なお、
図5に示すようなシステムには、ライセンス装置が1つのみ存在する場合、該ライセンス装置によりライセンス情報の書込及び検証を行うことができる。
【0091】
理解を容易にするために、まず、本願の実施形態に係る内容について説明する。
【0092】
本願の実施形態では、ソフトウェアを粒度として、またはソフトウェアに含まれているコンポーネントを粒度として、ライセンス情報を格納及び検証することができる。
【0093】
ソフトウェアを粒度とすると、保護対象ソフトウェアのライセンス情報に対して格納及び検証を行う。保護対象ソフトウェアのライセンス情報は、保護対象ソフトウェアの残りの利用可能時間を含んでよく、好ましくは、保護対象ソフトウェアのライセンスノードの数量を含んでもよい。
【0094】
コンポーネントを粒度とすると、保護ソフトウェアに含まれている各コンポーネントのライセンス情報に対して格納及び検証を行う。コンポーネントのライセンス情報は、該コンポーネントの残りの利用可能時間を含んでよく、好ましくは、該コンポーネントのライセンスノードの数量を含んでもよい。
【0095】
本願の実施形態では、ライセンス情報に対して格納及び検証を行うプロセスにおいて使用される所定の暗号化アルゴリズムは、ハッシュアルゴリズム、シフトアルゴリズムなどであってもよい。
【0096】
以下、例として、コンポーネントを保護粒度とし、ハッシュアルゴリズムを所定の暗号化アルゴリズムとする。
【0097】
本願は、使用される暗号化アルゴリズムのタイプを限定するものではないので、上記実施形態にかかる段落ハッシュ値、コンポーネントハッシュ値、コンポーネントハッシュ情報、ルートハッシュ値の説明に基づいて、本願に係る以下の概念の意味を分かることを、理解すべきである。
【0098】
段落暗号化値:所定数量の連続の取引ブロックの暗号化値に基づいて暗号化の計算を行って得られた暗号化値が段落暗号化値と呼ばれる。
【0099】
コンポーネント暗号化値:同じコンポーネントによって生成された少なくとも1つ又は複数の段落暗号化値に基づいて暗号化の計算を行って得られた暗号化値がコンポーネント暗号化値と呼ばれる。
【0100】
コンポーネント暗号化情報:コンポーネント暗号化情報は、コンポーネント暗号化値及び現在の該コンポーネントの最後に生成された取引ブロックに基づいて確定することができる。コンポーネント暗号化情報は、最終的に生成された取引情報ブロックの全ての内容、又は最終的に生成された取引情報ブロックのデータ部分を含んでもよいし、又は最終的に生成された取引情報ブロックの残りの利用可能時間及びライセンスノードの数量のみを含んでもよい。具体的には、コンポーネント暗号化情報は、実際の必要に応じて選択することができる。
【0101】
ルート暗号化値:異なるコンポーネントのコンポーネント暗号化値、又は同じコンポーネントのコンポーネント暗号化値に基づいて暗号化の計算を行って得られた暗号化値がルート暗号化値と呼ばれる。
【0102】
親暗号化値:現在の情報ブロックの直前に生成された前の情報ブロックのヘッダ情報に対して暗号化の計算を行って得られた暗号化値である。
【0103】
以下、
図1乃至
図6を参照し、本願の実施形態により提供されるソフトウェアのライセンス情報の監視方法について詳しく説明する。
【0104】
図7に示すように、本願の実施形態は、サーバに適用されるソフトウェアのライセンス情報の監視方法を提供し、該方法は、以下のステップを含む。
S701:サーバが、所定時間ごとに取引情報ブロックを生成する。
【0105】
一実施形態において、所定時間ごとに取引情報ブロックを生成し、該取引情報ブロックはライセンス情報を含み、前記ライセンス情報は、取引情報ブロックを生成する時における保護対象ソフトウェアの残りの利用可能時間を含んでいる。
【0106】
ここで、サーバは、ソフトウェアの使用が許可された時間や使用が許可されたノードなどの情報を監視する必要がある。本願において、サーバによって監視されるソフトウェアが保護対象ソフトウェアと呼ばれ、保護対象ソフトウェアは、ソフトウェアに含まれている複数のコンポーネントであってもよいし、独立して使用されるソフトウェアであってもよい。
【0107】
コンポーネント1とコンポーネント2を含む保護対象ソフトウェアを例として、所定時間が1日である場合、コンポーネント1について1日1つの取引ブロックが生成され、コンポーネント2について1日1つの取引ブロックが生成される。
【0108】
理解されるように、毎日生成される取引ブロックに含まれている残りの利用可能時間は、順次に減少される。
【0109】
好ましくは、ライセンス情報は、ライセンスノードの数量をさらに含む。取引情報ブロックには他の情報も含まれることができ、詳細には
図1を参照することができる。
【0110】
S702:サーバが、生成された取引情報ブロックに基づいてルート暗号化値を算出する。
【0111】
このステップは、以下のように実現されることができる。すなわち、サーバは、生成された1つ又は複数の取引情報ブロックに基づいて、所定の暗号化アルゴリズムを用いて各取引情報ブロックのライセンス情報を算出し、各取引情報ブロックの暗号化値をそれぞれ取得する。そして、所定の暗号化アルゴリズムと上記1つ又は複数の取引情報ブロックの暗号化値とに基づいて、コンポーネント暗号化値を算出してコンポーネント暗号化値を取得し、所定の暗号化アルゴリズムを用いてコンポーネント暗号値を算出し、ルート暗号化値を取得する。
【0112】
ここで、現在は、ユーザが保護対象ソフトウェアの使用を許可された最初の日である場合、すなわち、現在、1つの取引ブロックしか生成されていない場合、サーバは該1つの取引ブロックによりルート暗号化値を算出する。現在、ユーザが保護対象ソフトウェアの使用を許可された最初の日ではない場合、サーバは生成された複数の取引情報ブロックによりルート暗号化値を算出する。
【0113】
所定の暗号化アルゴリズムがハッシュアルゴリズムであることを例として、本願の実施形態に係る暗号化値のいずれもハッシュ値であってよい。
【0114】
図1に示すような取引情報ブロックのデータ構造を参照すると、生成された各取引情報ブロックについて、取引情報ブロックのライセンス情報は残りの利用可能時間を含む。セキュリティを向上させるために、
図3のデータ部分の他の情報も含んでもよい。各取引情報ブロックのデータ部分のそれぞれに対してハッシュ演算を行い、各取引情報ブロックのハッシュ値を取得することができる。
【0115】
そして、生成された各取引情報ブロックのハッシュ値に基づいてハッシュ演算を行ってコンポーネントハッシュ値を取得し、ハッシュアルゴリズムとコンポーネントハッシュ値とに基づいてルートハッシュ値を取得することができる。例えば、5つの取引情報ブロックのハッシュ値がそれぞれ101、102、103、104、105である場合、該5つのハッシュ値を結合して101102103104105を取得し、この値に対してハッシュ演算を行ってコンポーネントハッシュ値を得ることができる。
【0116】
さらに、5つのハッシュ値に他の値をそれぞれ加えた後にハッシュを行うことができ、例えば、上記5つのハッシュ値にそれぞれ5を加算すると、5つの取引情報ブロックのハッシュ値は、106、107、108、109、200に更新され、その後、ハッシュ演算を行ってコンポーネントハッシュ値を取得することができる。
【0117】
保護対象ソフトウェアが複数のコンポーネントを含む場合、各コンポーネントの取引情報ブロックのハッシュ値に基づいて、各コンポーネントのコンポーネントハッシュ値を算出することができる。そして、各コンポーネントのコンポーネントハッシュ値を結合し、またハッシュ演算を行ってルートハッシュ値を取得する。計算プロセスは、上記の
図2についての説明を参照すればよく、ルートハッシュ値を算出することで
図3に示すようなハッシュツリーを取得することができる。
【0118】
S703:サーバが、現在生成する必要がある情報ブロックの直前に生成された前の情報ブロックのヘッダ情報を取得する。
【0119】
例えば、現在は、保護対象ソフトウェアを使用する60日目であり、すなわち、現在60番目の情報ブロックを生成する必要があり、前の情報ブロックは、59日目に生成された情報ブロックである。
【0120】
前の情報ブロックのヘッダ情報は、前の情報ブロックのルート暗号化値及び親暗号化値を含むことができる。好ましくは、ヘッダ情報は、他のデータをさらに含むこともでき、詳細は
図5を参照することができる。
【0121】
S704:サーバが、取得された前の情報ブロックのヘッダ情報に基づいて親暗号化値を算出する。
【0122】
仮に、前の情報ブロックが59番目の情報ブロックであり、59番目の情報ブロックのヘッダ情報に含まれている内容に対してハッシュ演算を行うと、59番目の情報ブロックのヘッダ情報のハッシュ値が得られ、59番目の情報ブロックのヘッダ情報のハッシュ値が60番目の情報ブロックの親ハッシュ値となる。この親ハッシュ値は、60番目の情報ブロックのヘッダ情報に格納されている。
【0123】
本願の実施形態では、S702とS703~S704との間の実行順序は限定されない。すなわちルート暗号化値が先に算出されてもよいし、親暗号化値が先に算出されてもよいし、あるいはその両方が同時に算出されてもよい。
【0124】
S705:サーバが、情報ブロックを生成する。
【0125】
ここで、情報ブロックは、ルート暗号化値と、順に生成された取引情報ブロックが含まれる取引リストと、を含むことができる。
【0126】
図3を参照し、サーバは、情報ブロックのヘッダ情報、データ部分、及び取引リストをそれぞれ生成する必要がある。
【0127】
ヘッダ情報は、上記の親暗号化値及びルート暗号化値に加えて、情報チェーンの暗号化値をさらに含むことができる。これに基づいて、情報ブロックを生成するプロセスは、以下の処理を含む。
【0128】
情報ブロックのデータ部分を生成する。ここで、情報ブロックのデータ部分は上記保護対象ソフトウェアの残りの利用可能時間を含む。情報ブロックのデータ部分から情報ブロックの暗号化値を算出し、該情報ブロックのヘッダ情報に情報ブロックの暗号化値を加える。例えば、情報ブロックのデータ部分に含まれている保護対象ソフトウェアの残りの利用可能時間が10日であれば、10を暗号化して、該情報ブロックの暗号化値を得ることができる。
【0129】
情報ブロックのデータ部分は、具体的に
図2のハッシュツリーにおけるコンポーネントハッシュ情報であってよく、この情報ブロックのデータ部分に対してハッシュ演算を行うことによって、該情報ブロックのハッシュ値を得ることができる。
【0130】
上記のルートハッシュ値、親ハッシュ値、及び情報ブロックのハッシュ値を算出して得た後、
図3に示すような情報ブロックを生成することができる。
【0131】
S706:サーバは情報ブロックを情報チェーンに加え、情報チェーンが順に生成された情報ブロックを含む。
【0132】
本願の実施形態において、サーバは、毎日情報ブロックを生成した後、該情報ブロックを情報チェーンの最後に加えることができる。一実施形態において、情報チェーンはシリアル化され暗号化されて格納されている。
【0133】
本願の実施形態により提供される上記の方法は、分散型クラスターシステムにおいて使用されることができ、サーバにバックアップノードが存在する場合、サーバは、情報ブロックを生成するたびに、該情報ブロックをサーバのバックアップノードに送信することができる。
【0134】
本願の実施形態により提供される方法では、さらに、別途キャッシュスペースを設けることによって上記生成された情報ブロックをキャッシュすることができるので、サーバは、さらに、情報ブロックを生成するたびに該情報ブロックを外部キャッシュに送信することができる。
【0135】
上記の方法によれば、バックアップノード及び/又は外部キャッシュ内に、情報チェーンのバックアップ情報チェーンを形成することができる。サーバは、自身に格納された情報チェーンを、バックアップノード及び/又は外部キャッシュにおけるバックアップ情報チェーンと比較することにより、情報チェーンが改ざんされたかどうかを判定し、それにより情報チェーンのセキュリティを向上させることができる。
【0136】
図6を参照し、
図6のライセンス装置1、ライセンス装置2、及びライセンス装置3が、それぞれサーバ1、サーバ2、及びサーバ3に配置されている場合を例として、サーバ2とサーバ3は、サーバ1のバックアップノードである。サーバ1は、情報ブロックを生成した後に、該情報ブロックをサーバ2及びサーバ3に送信することができる。
【0137】
上記実施形態において、サーバは、取引ブロックを生成する際に、保護対象ソフトウェアの残りの利用可能時間を確定する必要がある。保護対象ソフトウェアの残りの利用可能時間は、以下のステップで確定することができる。
【0138】
ステップ1:サーバは、現在のシステム時刻と保護対象ソフトウェアの発効時刻とを取得する。
ステップ2:サーバは、現在のシステム時刻と保護対象ソフトウェアの発効時刻との差に基づいて、保護対象ソフトウェアの使用された時間を確定する。
ステップ3:サーバは、保護対象ソフトウェアの利用可能な総時間と上記使用された時間との差に基づいて、保護対象ソフトウェアの残りの利用可能時間を確定する。
【0139】
例えば、保護対象ソフトウェアの発効時刻が2020年4月1日であり、ここで、発効時刻は保護対象ソフトウェアの最初に登録された時間であってもよいし、また、現在のサーバのシステム時間が2020年4月20日であり、保護対象ソフトウェアの利用可能な総時間が30日である場合、保護対象ソフトウェアがずでに20日間使用されたとして確定することができ、残りの利用可能時間は10日となる。
【0140】
保護対象ソフトウェアが複数のコンポーネントを含み、各コンポーネントの発効時刻及び利用可能な総時間が異なる場合、各コンポーネントの残りの利用可能時間をそれぞれ確定する。1つのコンポーネントに対して、サーバがこのコンポーネントの残りの利用可能時間を確定する方法は、現在のシステム時刻とコンポーネントの発効時刻とを取得し、現在のシステム時刻とコンポーネントの発効時刻との差に基づいて、コンポーネントの使用された時間を確定することである。そして、コンポーネントの利用可能時間のバランスと使用された時間との差に基づいて、コンポーネントの残りの利用可能時間を確定する。
【0141】
本願の実施形態は、サーバに適用されるソフトウェアのライセンス情報の監視方法をさらに提供する。
図8に示すように、該方法は、以下のステップを含む。
【0142】
S801:サーバが、検証対象情報ブロックの取引リストに含まれている各取引情報ブロックに基づいてルート暗号化値を算出する。
【0143】
ここで、検証対象情報ブロックは、情報チェーンに格納された情報ブロックである。一実施形態において、検証対象情報ブロックは、現在すでに生成された最後の情報ブロックである。
【0144】
本願の実施形態において、1時間ごとに情報ブロック内の検証対象情報ブロックを検証し、又は、5つの情報ブロックが生成されるごとに1回検証することができる。もちろん、検証の頻度は、上記の実施形態に限定されるものではなく、実際の状況に応じて設定されてもよく、本願の実施形態はこれに限定されない。
【0145】
サーバは、検証対象情報ブロックの取引リストに含まれている1つ又は複数の取引情報ブロックに対し、所定の暗号化アルゴリズムを用いて各取引情報ブロックのライセンス情報を算出し、各取引情報ブロックの暗号化値をそれぞれ取得する。そして、サーバは、所定の暗号化アルゴリズムと上記1つ又は複数の取引情報ブロックの暗号化値とに基づいてコンポーネント暗号化値を算出して取得する。その後、所定の暗号化アルゴリズムを用いてコンポーネント暗号値を算出し、ルート暗号化値を取得する。
【0146】
サーバは、所定の暗号化アルゴリズムと上記1つ又は複数の取引情報ブロックの暗号化値とに基づいてコンポーネント暗号化値を算出して取得することは、具体的に、サーバが、検証対象情報ブロックの取引リストにおける所定数量の連続する取引情報ブロックごと、所定の暗号化アルゴリズムを用いて、所定数量の連続の取引情報ブロックの暗号化値を算出し、段落暗号化値を取得する。そして、所定の暗号化アルゴリズムを用いて、算出して得られた少なくとも1つの段落暗号化値に対して計算を行い、コンポーネント暗号化値を取得する。
【0147】
該ステップにおけるルート暗号化値の算出方法は、情報ブロックを生成する際にルート暗号化値を算出する方法と同じであり、具体的には上記実施形態の関連説明を参照すればよい。
【0148】
S802:サーバが、算出して得られたルート暗号化値と、検証対象情報ブロックに格納されたルート暗号化値とを比較する。
【0149】
本願の実施形態において、情報ブロックに含まれている情報が改ざんされていない場合、算出して得られたルート暗号化値は、検証対象情報ブロックに格納されているルート暗号化値と同じであるはずだ。検証対象情報ブロックに含まれているライセンス情報が改ざんされた場合、算出した得られたルート暗号化値は、検証対象情報ブロックに格納されているルート暗号化値とは異なるようになる。
【0150】
本願の実施形態は、ルート暗号化値に基づいて検証対象情報ブロックに対する検証を完了することができる。ライセンス情報のセキュリティをさらに向上させるために、S803~S805を実行し、検証対象情報ブロックを親暗号化値で検証すること、及び/又は、S806~S807を実行し、検証対象情報ブロックを検証対象情報ブロックの暗号化値で検証することができる。上記3つの検証プロセスで使用されるパラメータが異なるため、本願の実施形態は、S801~S802と、S803~S805と、S806~S807との間の実行順序を限定するものではない。
図8では、S801~S807を順に実行する例を示す。
【0151】
S803:サーバが、検証対象情報ブロックの前の情報ブロックのヘッダ情報を取得する。
【0152】
ここで、検証対象情報ブロックの前の情報ブロックは、検証対象情報ブロックが生成される前に生成された前の情報ブロックである。
【0153】
前の情報ブロックのヘッダ情報は、ルート暗号化値及び/又は親暗号化値を含んでもよく、好ましくは、
図3に示す情報ブロックのヘッダ情報における他の情報をさらに含んでもよい。
【0154】
S804:サーバが、取得された前の情報ブロックのヘッダ情報に基づいて暗号化値を算出する。
【0155】
該ステップにおける暗号化値の算出方法は、検証対象情報ブロックを生成する際に親暗号化値を算出する方法と同じであり、具体的には上記実施形態の関連説明を参照すればよく、ここでは説明を省略する。
【0156】
S805:サーバが、前の情報ブロックのヘッダ情報に基づいて算出して得られた暗号化値と、検証対象情報ブロックに格納された親暗号化値とを比較する。
【0157】
該ステップにおける暗号化値の算出方法は、検証対象情報ブロックを生成する際に親暗号化値を算出する方法と同じであるため、既に格納されている検証対象情報ブロックの前の情報ブロックのヘッダ情報に含まれているいずれかの情報が改ざんされると、算出された暗号値が検証対象情報ブロックに格納された親暗号化値と異なることになる。
【0158】
S803~S805については、例えば、検証対象情報ブロックが情報ブロック50である場合、検証対象情報ブロックの前の情報ブロックは、情報ブロック49である。検証対象情報ブロック50のヘッダ情報には、情報ブロック50を生成する際に情報ブロック49のヘッダ情報に基づいて算出して得られた暗号値である親暗号化値が含まれている。
【0159】
検証プロセスにおいて、サーバは、情報ブロック49のヘッダ情報を取得し、この際に取得した情報ブロック49のヘッダ情報を暗号化して、1つの暗号化値を算出することができる。
【0160】
そして、この際に算出された暗号値と、情報ブロック50のヘッダ情報に格納されている親暗号化値とを比較し、両者が異なる場合、情報ブロック49に含まれているヘッダ情報が改ざんされていること、又は、情報ブロック50に格納されている親暗号化値が改ざんされていることを示す。
【0161】
S806:サーバが、検証対象情報ブロックのデータ部分に基づいて検証対象情報ブロックの暗号化値を算出する。
【0162】
本願の実施形態において、検証対象情報ブロックのデータ部分は、該検証対象情報ブロックを生成する際の保護対象ソフトウェアのライセンス情報を含むことができる。保護対象ソフトウェアが複数のコンポーネントを含む場合、検証対象情報ブロックのデータ部分は、各コンポーネントのライセンス情報を含む。
【0163】
該ステップにおける検証対象情報ブロックの暗号化値の算出方法は、検証対象情報ブロックを生成する際に該検証対象情報ブロックの暗号化値を算出する方法と同じであり、上記実施形態の関連説明を参照すればよく、ここでは説明を省略する。
【0164】
S807:サーバが、算出して得られた検証対象情報ブロックの暗号化値と、検証対象情報ブロックに格納された検証対象情報ブロックの暗号化値とを比較する。
【0165】
ここで、
図5を参照し、検証対象情報ブロックのデータ部分のいずれかの情報が改ざんされると、算出して得られた検証対象情報ブロックの暗号化値が、検証対象情報ブロックに格納された検証対象情報ブロックの暗号化値と異なることになる。
【0166】
S808:サーバが、比較結果に基づいて保護対象ソフトウェアのライセンス情報が改ざんされたかどうかを確定する。
【0167】
ここで、上記S802、S805及びS807において、任意の1つの比較結果が異なる場合、保護対象ソフトウェアのライセンス情報が改ざんされたことを示す。
【0168】
上記ライセンス情報の監視方法を用いて、保護ソフトウェアの任意の取引ブロックに含まれているライセンス情報が改ざんされると、取引ブロックの暗号化値が変化し、さらに、ルート暗号化値が変化する。本願の実施形態では、検証対象情報ブロックに含まれている取引リストに基づいてルート暗号化値を新たに算出し、算出して得られたルート暗号化値が検証対象情報ブロックに格納されているルート暗号化値と異なる場合、保護対象ソフトウェアのライセンス情報が改ざんされていると判定することができる。上記により、改ざん者によるライセンス情報の改ざんが容易に発覚され、且つ改ざんが困難であるため、ホストのハードウェア情報を使用せずに、保護対象ソフトウェアのライセンス情報のセキュリティを向上させることができる。
【0169】
また、検証対象情報ブロックの前の情報ブロックに含まれているライセンス情報が改ざんされると、前の情報ブロックのヘッダ情報が変化し、さらに、前の情報ブロックのヘッダ情報に基づいて算出され暗号化値が、検証対象情報ブロックに格納されている親暗号化値と異なることになる。したがって、算出された暗号化値と、検証対象情報ブロックに格納された親暗号化値とを比較することにより、前の情報ブロックが改ざんされたか否かを判定することができる。情報チェーンの各情報ブロックには、いずれも前の情報ブロックのヘッダ情報に基づいて算出された暗号化値が含まれており、すなわち、各情報ブロックでは親暗号化値を有しているため、改ざん者は、この改ざんが発見されないようにしたい場合は、各情報ブロックに含まれている親暗号化値を修正しなければならないので、改ざんが困難である。よって、この方法を用いることで、保護対象ソフトウェアのライセンス情報のセキュリティを向上させることができる。
【0170】
同様に、保護対象ソフトウェアのライセンス情報が改ざんされると、検証対象情報ブロックのデータ部分が変化し、さらに、算出して得られた検証対象情報ブロックの暗号化値が、検証対象情報ブロックに格納された検証対象情報ブロックの暗号化値と異なるようになる。改ざん者が、本願の実施形態に用いられる暗号化アルゴリズムを知らない場合、検証対象情報ブロックの暗号化値を改ざんすることは困難である。したがって、算出して得られた検証対象情報ブロックの暗号化値と、格納されている検証対象情報ブロックの暗号化値とを比較することで、ライセンス情報が改ざんされたかどうかを判定することができ、ライセンス情報のセキュリティを向上させる。
【0171】
本願の別の実施形態において、別のライセンス情報の監視方法をさらに提供し、該方法は、以下のステップを含む。
サーバは、検証対象情報ブロックに含まれている取引リストにおいて、各取引情報ブロックに含まれている残りの利用可能時間が、プリアンブル取引情報ブロックに含まれている残りの利用可能時間よりも小さいかどうかを比較する。比較結果に基づいて前記保護対象ソフトウェアの残りの利用可能時間が改ざんされたかどうかを判定する。
【0172】
ここで、1つの取引ブロックのプリアンブル情報ブロックとは、該取引ブロックの直前に生成された前の取引ブロックである。例として、毎日1つの取引情報ブロックが生成されると、取引リストに含まれている各取引情報ブロックにおける残りの利用可能時間が順次減少する。仮に、取引リストに取引情報ブロック1乃至取引情報ブロック3が含まれていると、取引情報ブロック2に含まれている残りの利用可能時間が、取引情報ブロック1に含まれている残りの利用可能時間より1日少ないかどうか、および、取引情報ブロック3に含まれている残りの利用可能時間が、取引情報ブロック2に含まれている残りの利用可能時間より1日少ないかどうかを、比較することができる。
【0173】
取引情報ブロック3に含まれている残りの利用可能時間が27であり、取引情報ブロック2に含まれている残りの利用可能時間が20である場合、取引情報ブロック3がに含まれている残りの利用可能時間が改ざんされていると判定することができる。
【0174】
本願の別の実施形態において、別のライセンス情報の監視方法をさらに提供し、該方法は、以下のステップを含む。
サーバは、バックアップノード及び/又は外部キャッシュからバックアップ情報チェーンで生成した最新の情報ブロックを取得し、バックアップノード及び/又は外部キャッシュから取得された情報ブロックと、検証対象情報ブロックとを比較し、比較結果に基づいて保護対象ソフトウェアのライセンス情報が改ざんされたかどうかを判定する。
【0175】
図6を参照し、
図6のライセンス装置1、ライセンス装置2、及びライセンス装置3が、それぞれサーバ1、サーバ2、及びサーバ3に配置されている場合を例として、サーバ2とサーバ3は、サーバ1のバックアップノードである。サーバ2は、サーバ3がバックアップしている情報チェーンにおいて新しく生成された、情報ブロック60等の情報ブロックを取得することができる。そして、サーバ2は、自身が格納しているブロック60と取得したブロック60とを比較し、両者が一致しない場合、サーバ2及び/又はサーバ3におけるライセンス情報が改ざんされていると判定する。
【0176】
さらに、サーバ2は、外部キャッシュから情報ブロック60を取得し、自身が格納している情報ブロック60と外部キャッシュから取得した情報ブロック60とを比較し、両者が一致する場合、サーバ2に格納されている情報ブロック60が改ざんされていないことを意味する。両者が一致しない場合、サーバ2に格納されている情報ブロック60が改ざんされたことを意味し、サーバ2は、自身に格納している情報ブロック60を外部キャッシュから取得した情報ブロック60に置き換えることができる。あるいは、サーバ2は、外部キャッシュから情報チェーン全体を取得し、自身が格納している情報チェーンを外部キャッシュから取得した情報チェーンに置き換えることで、改ざんされたライセンス情報の修正を完了することができる。
【0177】
以下、
図9を参照し、本願の実施形態の全体的な流れについて説明する。
図9に示すように、ライセンス装置の起動時に、分散型クラスターシステムに複数のライセンス装置が含まれている場合、各ライセンス装置は、マスタノードとバックアップノードとをリーダー選挙メカニズムで確定することができる。
【0178】
そして、マスタノードは、ローカルにシリアル化され暗号化されて格納されている情報チェーンをロードする。情報チェーンが存在する場合は最初の起動ではないことを意味し、正常にローカルから情報チェーンをロードすればよい。情報チェーンが存在しない場合、保護対象ソフトウェアが新たに配置されたソフトウェアであるかどうかを判定する。
【0179】
保護対象ソフトウェアが新たに配置されたソフトウェアである場合、マスタノードは、メッセージキューからジェネシスブロック情報を取得し、分散型クラスターシステムのライセンスサーバから、保護対象ソフトウェアに含まれている各コンポーネントの利用可能な総時間及びライセンスノードの数量を取得する。ここで、保護対象ソフトウェアを配置する際に、ジェネシスブロック情報をメッセージキューに予め設定することができる。マスタノードがメッセージキューからジェネシスブロック情報を読み取った後、ジェネシスブロック情報はメッセージキューから削除される。ユーザが該保護対象ソフトウェアの使用権限を購入した後に、該保護対象ソフトウェアに含まれている各コンポーネントの利用可能な総時間及びライセンスノードの数量はライセンスサーバに格納されている。ユーザが利用期間の延長及び/又はライセンスノードの数量の増加のために料金を続けて支払う場合、ライセンスサーバに格納された保護対象ソフトウェアの利用可能な総時間及び/又はライセンスノードの数量もそれに応じて更新される。
【0180】
保護対象ソフトウェアが新たに配置されたソフトウェアではない場合、マスタノードは、外部キャッシュから既存の情報チェーンを取得する。
【0181】
そして、マスタノードがタイマータスクの実行を開始する。例として、該タイマータスクは、マスタノードが5分毎にハートビートメッセージを介してライセンスサーバと情報を交互するようにトリガして、保護対象ソフトウェアの最新の利用可能な総時間及びライセンスノードの数量を取得することによって、自身が使用する各コンポーネントの利用可能な総時間及びライセンスノードの数量の正確性を確保することができる。
【0182】
このタイマータスクは、さらに、マスタノードが各コンポーネントに1日に1つの取引情報ブロックを生成するようにトリガすることもできる。生成された取引情報ブロックに基づいて情報ブロックを生成し、該ブロックをバックアップノードに送信する。別の実施形態において、マスタノードは、該情報ブロックをマスタノードの外部キャッシュに直接送信することもできる。該外部キャッシュとは、マスタノード内の情報ブロックをバックアップするために用いられる他のキャッシュスペースを指す。
【0183】
ここで、マスタノードは、ユニキャスト又はブロードキャスト方式で、バックアップノード及び外部キャッシュに情報ブロックを送信することができる。
【0184】
マスタノードがブロードキャスト方式で該情報ブロックをブロードキャストする場合、バックアップノード及び外部キャッシュは、メッセージキューから該情報ブロックを取得し、該情報ブロックをバックアップ情報チェーンに加えることができる。バックアップノード及び外部キャッシュが該情報ブロックを取得するプロセスは、
図9では省略されている。
【0185】
マスタノードは、情報ブロックを生成した後、さらに、情報ブロックをローカルに格納された情報チェーンに加えて、情報ブロックに対してシリアル化され暗号化されて格納されることを完了する。
図9では、ローカルに格納された情報チェーンに情報ブロックを加えるプロセスを省略する。
【0186】
各バックアップノードについて、タイマータスクによって情報ブロックを検証する。例として、バックアップノードは、1時間ごとに情報ブロックを検証することができる。
【0187】
まず、バックアップノードは、システム時間に対して改ざんのチェックを行う。バックアップノードは、検証対象情報ブロックの取引リストを取得し、取引リストにおける各取引情報ブロックに含まれている残りの利用可能時間が、プリアンブル取引情報ブロックに含まれている残りの利用可能時間よりも小さいかどうかを比較することができる。小さいでなければ、検証結果が異常であると判定され、システム時間が改ざんされて取引情報ブロック内の残りの利用可能時間が正しくない可能性があることを表す。検証結果が異常であると判定された場合、該異常状況をブロードキャストすることによって、アクセスノード及び他のバックアップノードが受信したブロードキャストメッセージに基づいてこの異常状況を取得できるようにする。
【0188】
検証結果が正常であれば、完全性チェックを行う。完全性チェックとは、検証対象情報ブロックに含まれている取引リストに基づいて、該情報ブロックに含まれているルートハッシュ値、親ハッシュ値、及び該情報ブロックのハッシュ値を改めて算出し、それぞれと該情報ブロックに格納されているルートハッシュ値、親ハッシュ値、及び該情報ブロックのハッシュ値とを比較し、任意の1つが異なる場合、ライセンス情報が改ざんされていると判定され、即ち、検証結果が異常であることを指す。そして、該異常の状況をブロードキャストする。
【0189】
検証結果が正常であれば、一致性チェックを行う。一致性チェックとは、マスタノード及び各バックアップノードに格納された該検証対象情報ブロックが一致するかどうか、および、マスタノード及び各バックアップノードに格納された該検証対象情報ブロックが外部キャッシュの検証対象情報ブロックと一致するかどうかを、チェックすることを指す。一致ではない場合、検証が異常になり、即ちマスタノード又はバックアップノードにおける検証対象情報ブロックが改ざんされた。そして、該異常の状況をブロードキャストする。
【0190】
上記の検証が順序は一例に過ぎず、本願の実施形態では上記の検証順序に従って実行することが限定されず、上記実施形態に記載の検証方法は独立して実行されてもよく、他の順序で実行されてもよい。
【0191】
マスタノード及びバックアップノードは何れもメモリメンテナンスを行うことができる。すなわち、マスタノード及びバックアップノードは、メッセージキューから検証対象情報ブロックの異常状況を取得し、一致性フォールトトレラントアルゴリズムによって外部キャッシュから正しい情報チェーンを取得し、ローカルに格納された情報チェーンの更新を完了することができる。
【0192】
マスタノード及び/又はバックアップノードは、APIゲートウェイを介してビジネスサービス装置に各コンポーネントのライセンス情報を提供することができ、ビジネスサービス装置に提供したライセンス情報が改ざんされたライセンス情報であると確定した場合、APIゲートウェイを介してビジネスサービス装置に通知し、APIゲートウェイを介してビジネスサービス装置に正しいライセンス情報を送信することによって、ビジネスサービス装置が正しいライセンス情報に基づいて保護対象ソフトウェアの各コンポーネントに対するライセンスを制御するようにする。
【0193】
上記の実施形態を参照し、上記のソフトウェアのライセンス情報の監視方法を用いることにより、以下の態様によって保護対象情報が改ざんされないように確保できる。
【0194】
第1の態様として、システムの時間が前方に調整されると、新しく生成された取引情報ブロックの残りの利用可能時間が長くなる。本願の実施形態では、該取引情報ブロック内の残りの利用可能時間と、取引リストのプリアンブル取引情報ブロック内の残りの利用可能時間と、を比較することができる。現在の取引情報ブロックにおける残りの利用可能時間がプリアンブル情報ブロックにおける残りの利用可能時間よりも大きい場合、システム時間を適時に修正して正しい取引情報ブロックを格納することができる。また、システム時間が前方に調整されると、新しく生成された取引情報ブロック内のタイムスタンプも前の取引情報ブロック内のタイムスタンプよりも小さくなるため、システム時間を前方に調整するような改ざんが容易に防止される。
【0195】
第2の態様として、保護対象ソフトウェアのあるコンポーネントの取引情報ブロック内の残りの利用可能時間が改ざんされると、該取引情報ブロックのハッシュ値が変化され、さらに情報ブロックのハッシュ値やルートハッシュ値が変化されるため、情報ブロックのハッシュ値とルートハッシュ値を改めて算出することによって該改ざんを発見して、改ざんされた残りの利用可能時間を有効にすることができないようにする。
【0196】
第3の態様として、情報ブロックに含まれているコンポーネントハッシュ情報が改ざんされると、ルートハッシュ値が変化させる。そして、情報ブロックのヘッダ情報に含まれている該情報ブロックのハッシュ値は、各コンポーネントのコンポーネントハッシュ情報に基づいて生成されたものであり、コンポーネントハッシュ情報が改ざんされると、情報ブロックのヘッダ情報にも変化されることになる。
【0197】
次の情報ブロックのヘッダ情報には現在の情報ブロックのヘッダ情報のハッシュ値である親ハッシュ値が含まれるので、現在の情報ブロックのコンポーネントハッシュ情報が改ざんされ、現在の情報ブロックのヘッダ情報を変化させると、次の情報ブロックに含まれている親ハッシュ値が正しくないことになる。該改ざんを有効にすれば、後続の各情報ブロックに含まれている親ハッシュ値をさらに改ざんする必要があり、実現しにくくなる。後続の各情報ブロックを修正することができない場合、該コンポーネントハッシュ情報の改ざんは有効になることができない。
【0198】
第4の態様として、情報チェーン内のジェネシスブロックは、予め設定されたジェネシスブロック情報に基づいて一回しか生成できないため、該ジェネシスブロックが修正されることができない。それに加えて、情報チェーンがシリアル化され暗号化されて格納されおり、復号されていない場合は直接修正されることができないので、ライセンス情報のセキュリティをさらに確保する。
【0199】
第5の態様として、1つのサーバに格納された情報チェーンが改ざんされた場合、さらに、バックアップノード及び外部キャッシュに格納された情報チェーンによって検証することができ、即ち、外部キャッシュ内の情報チェーンが改ざんされていない限り、任意の1つのサーバの情報チェーンに対する改ざんを発見し修正することができる。
【0200】
第6の態様として、本願の実施形態をコンテナ化シナリオに適用する場合、ライセンス装置のコンテナ鏡像が改ざんされた場合、さらに、改ざんされていない情報チェーンを他のライセンス装置のコンテナ鏡像や外部キャッシュから取得することができ、コンテナ化シナリオにおけるソフトウェアのライセンス情報のセキュリティを確保した。
【0201】
本願の実施形態は、同様の技術的構想に基づいてソフトウェアのライセンス情報の監視装置を提供し、該ソフトウェアのライセンス情報の監視装置が上記実施形態に記載のライセンス装置であり、サーバに配置されることができ、詳細が
図10に示すように、該装置は、
所定時間ごとにライセンス情報が含まれている取引情報ブロックを生成し、ライセンス情報は取引情報ブロックを生成する時における保護対象ソフトウェアの残りの利用可能時間が含まれている、生成モジュール1001と、
生成された取引情報ブロックに基づいてルート暗号化値を算出する、算出モジュール1002と、
記憶モジュール1003と、を含み、
生成モジュール1001は、さらに、情報ブロックを生成し、情報ブロックは、ルート暗号化値と、順に生成された取引情報ブロックが含まれている取引リストとを含む、
記憶モジュール1003は、順に生成された情報ブロックが含まれている情報ブロックを情報チェーンに加える。
【0202】
一実施態様において、生成モジュール1001は、具体的に、以下のステップ、即ち、
現在のシステム時刻と保護対象ソフトウェアの発効時刻を取得するステップと、
現在のシステム時刻と保護対象ソフトウェアの発効時刻との差に基づいて、保護対象ソフトウェアの使用された時間を確定するステップと、
保護対象ソフトウェアの利用可能な総時間と使用された時間との差に基づいて、保護対象ソフトウェアの残りの利用可能時間を確定するステップとによって、保護対象ソフトウェアの残りの利用可能時間を確定する。
【0203】
一実施態様において、該装置は、さらに、
ブロードキャストモジュールを備え、ブロードキャストモジュールは、バックアップノード及び/又は外部キャッシュに情報ブロックをブロードキャストして、サーバのバックアップノード及び/又は外部キャッシュ内に情報チェーンのバックアップ情報チェーンを生成する。
【0204】
一実施態様において、前記情報ブロックにはヘッダ情報が含まれており、前記ヘッダ情報には前記ルート暗号化値と親暗号化値とが含まれており、
算出モジュール1002は、さらに、
情報ブロックの直前に生成された前の情報ブロックのヘッダ情報を取得し、
取得された前の情報ブロックのヘッダ情報に基づいて親暗号化値を算出する。
【0205】
一実施態様において、生成モジュール1001は、具他的に、
情報ブロックにおけるデータ部分を生成し、前記データ部分は保護対象ソフトウェアの現在の残りの利用可能時間を含んでおり、
情報ブロックのデータ部分に基づいて情報ブロックの暗号化値を算出し、
情報ブロックの暗号化値を情報ブロックのヘッダ情報に加える。
【0206】
一実施態様において、算出モジュール1002は、具他的に、
生成された1つ又は複数の取引情報ブロックに基づいて、所定の暗号化アルゴリズムを用いて各取引情報ブロックのライセンス情報を算出し、各取引情報ブロックの暗号化値をそれぞれ取得し、
所定の暗号化アルゴリズムと1つ又は複数の取引情報ブロックの暗号化値とに基づいてコンポーネント暗号化値を算出して取得し、
所定の暗号化アルゴリズムを用いてコンポーネント暗号化値を算出し、ルート暗号化値を取得する。
【0207】
本願の実施形態は、同様の技術的構想に基づいてソフトウェアのライセンス情報の監視装置を提供し、該ソフトウェアのライセンス情報の監視装置が上記実施形態に記載のライセンス装置であり、サーバ内に配置されることができる。具体的に、保護対象ソフトウェアのライセンス情報が情報チェーンとして格納されており、
該情報チェーンは、取引リストとルート暗号化値が含まれている順に構築された情報ブロックを含み、ここで、取引リストがライセンス情報が含まれている順に生成された取引情報ブロックを含み、ライセンス情報が取引情報ブロックを生成する時における保護対象ソフトウェアの残りの利用可能時間を含み、ルート暗号化値が前記ライセンス情報に基づいて暗号化して得られたものである。
【0208】
図11に示すように、該装置は、
検証対象情報ブロックの取引リストに含まれている各取引情報ブロックに基づいてルート暗号化値を算出する算出モジュール1101と、
算出して得られたルート暗号化値と、検証対象情報ブロックに格納されているルート暗号化値とを比較し、比較結果に基づいて保護対象ソフトウェアのライセンス情報が改ざんされたかどうかを判定する検証モジュール1102と、を備える。
【0209】
一実施態様において、情報ブロックは、ルート暗号化値と親暗号化値とが含まれているヘッダ情報を含み、ここで、親暗号化値が現在の情報ブロックの直前に生成された前の情報ブロックのヘッダ情報に基づいて生成した暗号化値であり、該装置は、
検証対象情報ブロックの前の情報ブロックのヘッダ情報を取得する取得モジュールをさらに備え、
算出モジュール1101は、さらに、取得された前の情報ブロックのヘッダ情報に基づいて暗号化値を算出し、
検証モジュール1102は、さらに、前の情報ブロックのヘッダ情報に基づいて算出して得られた暗号化値と、検証対象情報ブロックに格納された親暗号化値とを比較し、比較結果に基づいて保護対象ソフトウェアのライセンス情報が改ざんされたかどうかを判定する。
【0210】
一実施態様において、情報ブロックのヘッダ情報は、さらに、情報ブロックのデータ部分に基づいて算出して得られた暗号化値である情報ブロックの暗号化値を含み、情報ブロックのデータ部分は情報ブロックを生成する時における保護対象ソフトウェアのライセンス情報を含み、
算出モジュール1101は、さらに、検証対象情報ブロックのデータ部分に基づいて検証対象情報ブロックの暗号化値を算出し、
検証モジュール1102は、さらに、算出して得られた検証対象情報ブロックの暗号化値と、検証対象情報ブロックに格納された検証対象情報ブロックの暗号化値とを比較し、比較結果に基づいて保護対象ソフトウェアのライセンス情報が改ざんされたかどうかを判定する。
【0211】
一実施態様において、算出モジュール1101は、具体的に、
検証対象情報ブロックの取引リストに含まれている1つ又は複数の取引情報ブロックに対し、所定の暗号化アルゴリズムを用いて各取引情報ブロックのライセンス情報を算出し、各取引情報ブロックの暗号化値をそれぞれ取得し、
所定の暗号化アルゴリズムと1つ又は複数の取引情報ブロックの暗号化値とに基づいてコンポーネント暗号化値を算出して取得し、
所定の暗号化アルゴリズムを用いてコンポーネント暗号値を算出し、ルート暗号化値を取得する。
【0212】
一実施態様において、算出モジュール1101は、具体的に、
検証対象情報ブロックの取引リストにおける所定数量の連続する取引情報ブロックごと、所定の暗号化アルゴリズムを用いて、所定数量の連続する取引情報ブロックの暗号化値を算出して、段落暗号化値を取得し、
所定の暗号化アルゴリズムを用いて、算出して得られた少なくとも1つの段落暗号化値を算出して、コンポーネント暗号化値を取得する。
【0213】
一実施態様において、検証モジュール1102は、さらに、
検証対象情報ブロックに含まれている取引リストにおける各取引情報ブロックに含まれている残りの利用可能時間が、プリアンブル取引情報ブロックに含まれている残りの利用可能時間よりも小さいかどうかを比較し、
比較結果に基づいて保護対象ソフトウェアの残りの利用可能時間が改ざんされたかどうかを判定する。
【0214】
一実施態様において、取得モジュールは、さらに、バックアップノード及び/又は外部キャッシュから、バックアップ情報チェーン中で最新に生成された情報ブロックを取得し、
検証モジュール1102は、さらに、バックアップノード及び/又は外部キャッシュから取得された情報ブロックと、検証対象情報ブロックとを比較し、比較結果に基づいて保護対象ソフトウェアのライセンス情報が改ざんされたかどうかを判定する。
【0215】
本願の実施形態は、さらに、サーバを提供する。該サーバは、
図12に示すように、プロセッサー1201と、通信インターフェース1202と、メモリ1203と、通信バス1204と、を備え、ここで、プロセッサー1201、通信インターフェース1202及びメモリ1203は、通信バス1204を介して互に通信し、
メモリ1203は、コンピュータープログラムを格納し、
プロセッサー1201は、メモリ1203に格納されているプログラムを実行すると、上記のいずれかのソフトウェアのライセンス情報の監視方法のステップを実現する。
【0216】
上記のサーバにおける通信バスは、ペリフェラル コンポーネント インターコネクト(Peripheral Component Interconnect,PCI)バス又は拡張業界標準アーキテクチャ(Extended Industry Standard Architecture,EISA)バスなどであってよい。この通信バスは、アドレスバス、データバス、制御バスなどに分けることができる。表示の便宜上、図では1本だけの太い線でバスを示したが、バスが1本又は1種類しかないという意味ではない。
【0217】
通信インタフェースは、上記のサーバが他の装置と通信するために用いられる。
【0218】
メモリは、ランダムアクセスメモリ(Random Access Memory,RAM)を含んでよく、不揮発性メモリ(Non-Volatile Memory,NVM)を含んでもよく、例えば、少なくとも1つの磁気ディスク装置である。好ましくは、メモリは、上記のプロセッサーから離れた少なくとも1つの記憶装置であってよい。
【0219】
上記のプロセッサーは、中央処理装置(Central Processing Unit,CPU)、ネットワークププロセッサー(Network Processor,NP)などを含む汎用プロセッサーであってもよく、デジタル信号処理装置(Digital Signal Processing,DSP)、ASIC(Application Specific Integrated Circuit)、FPGA(Field-Programmable Gate Array)又は他のプログラマブルロジックデバイス、ディスクリートゲートあるいはトランジスタロジックデバイス、ディスクリートハードウェアコンポーネントであってもよい。
【0220】
本願の別の実施形態では、コンピューター読取可能な記憶媒体をさらに提供し、このコンピューター読取可能な記憶媒体にはコンピュータープログラムが格納されており、前記コンピュータープログラムがプロセッサーにより実行されると、上記任意の1つのソフトウェアのライセンス情報の監視方法を実現される。
【0221】
本願の別の実施形態では、コンピューター読取可能な記憶媒体をさらに提供し、このコンピューター読取可能な記憶媒体にはコンピュータープログラムが格納されており、前記コンピュータープログラムがプロセッサーにより実行されると、上記任意の1つのソフトウェアのライセンス情報の監視方法を実現される。
【0222】
上記実施形態では、ソフトウェア、ハードウェア、ファームウェア、又はこれらの任意の組み合わせによって、全て又は一部を実現することができる。ソフトウェアで実現する場合、コンピュータプログラム製品の形で、その全部又は一部を実現することができる。上記コンピュータプログラム製品は、1つ又は複数のコンピュータ命令を含む。コンピュータ上で上記コンピュータプログラム命令がロードされて実行されると、本願の実施形態に記載されたプロセス又は機能の全部又は一部は生成される。上記のコンピュータは、汎用コンピュータ、専用コンピュータ、コンピュータネットワーク、又は他のプログラム可能なデバイスとすることができる。上記のコンピュータ命令は、コンピュータ読取可能な記憶媒体に格納されてもよく、又は、コンピュータ読取可能な記憶媒体から別のコンピュータ読取可能な記憶媒体に送信されてもよい。例えば、該コンピュータ命令は、ウェブサイト、コンピュータ、サーバ、又はデータセンターから、有線(例えば、同軸ケーブル、光ファイバ、デジタル加入者線(DSL))又は無線(例えば、赤外線、ワイヤーレス、マイクロウェーブなど)を介して、別のウェブサイト、コンピュータ、サーバ、又はデータセンターに送信することができる。上記のコンピュータ読取可能な記憶媒体は、コンピュータがアクセス可能な任意の利用可能な媒体、或いは、1つ又は複数の利用可能な媒体を一体化したサーバ、データセンターなどのデータ記憶装置とすることができる。上記利用可能な媒体は、磁気媒体(例えば、フロッピーディスク、ハードディスク、磁気テープ)、光媒体(例えば、DVD)、又は半導体媒体(例えば、ソリッドステートドライブ(Solid State Disk,SSD))等であってもよい。
【0223】
なお、本明細書において、第1や第2のような関係用語は、1つのエンティティ又は操作を他のエンティティ又は操作と区別するために用いられるもの過ぎず、これらのエンティティ又は操作の間にこのような実際的な関係又は順序が存在することをリクエスト又は示唆しない。また、用語「備える」、「含む」、又はその他の変形は、非排他的な包含を意図し、一連の要素を含むプロセス、方法、物品、又はデバイスがそれらの要素だけでなく、明示的に列挙されていない他の要素を含み、或いは、このようなプロセス、方法、物品又はデバイスにおける固有の要素を含む。特に制限がない限り、「1つの…を含む」により限定される要素は、上記要素を含むプロセス、方法、物品又はデバイスがさらに他の同一な要素を有することを排除するものではない。
【0224】
なお、本明細書における各実施形態は、相互に関連したように記載されているが、各実施形態間の同一又は類似の部分は、互いに参照すればよく、各実施形態と他の実施形態との相違点が中心に説明される。特に、装置、サーバの実施形態に対し、方法の実施形態にほぼ類似するので、説明が簡単であり、関連する部分は方法の実施形態に参照すればよい。
【0225】
以上の説明は、本願の好ましい実施形態にすぎず、本願の保護範囲を限定するものではない。本願の精神及び原則の範囲内で行われた任意の補正、同等の置換、変更等は、いずれも本願の保護範囲内に含まれているものとする。
【国際調査報告】