説明

ライセンス管理システム及び方法

【課題】スタンドアローンなコンピュータにも適用でき,更に,ソフトウェアの移設に係わる処理も容易にできるライセンス管理システムを提供する。
【解決手段】ライセンス管理システム1において,PC2はソフトウェア5を起動するとき,PC2側で記憶している認証コードをICカード3に認証させる。ICカード3は,認証コードのシードと対になる参照シードを利用して認証コードを認証し,認証に成功すると,参照シードに含まれる参照カウンタをインクリメントする。PC2は,ICカード3が認証コードの認証に成功すると,ソフトウェア5の起動を許可すると共に,シードに含まれる認証カウンタをインクリメントした後,該シードを元にする認証コードをICカード3に生成させ,ICカード3が生成した認証コードを次回の起動管理に利用する認証コードとして記憶する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は,コンピュータにインストールされたソフトウェアのライセンスを管理する技術に関し,更に詳しくは,該ソフトウェアの実行を管理することで,該ソフトウェアのライセンスを管理する技術に関する。
【背景技術】
【0002】
ソフトウェアの販売は使用許諾権(ライセンス:license)の販売になるため,一つのソフトウェアを複数台のコンピュータへインストールすることは固く禁じられ,当然のことながら,ソフトウェアのライセンス数を超えてインストールして使用する行為は違法行為になってしまう。
【0003】
しかし,ソフトウェアはCD-ROMなどのメディアに記憶されて販売され,何らかの対策を施さなければ,簡単に不正なインストールができてしまうため, ソフトウェアのライセンスを管理することが必要とされている。
【0004】
ソフトウェアのライセンス管理する手法としては,ソフトウェアをコンピュータにインストールするためのコンピュータプログラムであるインストーラが,コンピュータに入力されたライセンスキーを認証することで,ソフトウェアのインストールを管理する手法が広く用いられている。
【0005】
また,特許文献1では,ICカードを用いてソフトウェアのライセンス数を管理する発明が開示されている。特許文献1においては、ユーザに与えられているライセンス数だけMACアドレスを格納する領域が設けられたICカードが用意され,コンピュータにソフトウェアをインストールしたとき,ICカードに該コンピュータのMACアドレスを書き込み,コンピュータからソフトウェアをアンインストールしたときに,該コンピュータのMACアドレスをICカードから消去することで,ソフトウェアのライセンスが管理される。
【0006】
上述したこれらの技術は,不正なソフトウェアのインストールを禁止するための技術であるが,一方,コンピュータにソフトウェアをインストールできるが,該ソフトウェアの実行を管理することで,ソフトウェアのライセンス管理する発明も開示されている。
【0007】
例えば,特許文献2で開示されている発明は,ライセンスを管理する装置をネットワーク上に設置し、該装置は,コンピュータで使用されているソフトウェアの数よりも,ライセンス数が大きい場合に、該ソフトウェアの使用を許諾するように構成されている。
【0008】
しかし,特許文献2のように,ネットワークに接続された装置を利用して,コンピュータにインストールされたソフトウェアの使用を管理するようにすると,外部接続が禁止されているネットワークに接続されたコンピュータにソフトウェアをインストールする場合や,ネットワークに接続されておらずスタンドアローンで使用されるコンピュータにソフトウェアをインストールする場合,コンピュータは該装置にアクセスできず,ソフトウェアの使用を管理することができない問題がある。
【0009】
この問題を解決する発明として,例えば,特許文献3において,スタンドアローンで使用されるコンピュータにおいても,ソフトウェアの起動を制御することでライセンス管理する発明が開示されている。
【0010】
特許文献3で開示されている発明では,コンピュータにインストールされるソフトウェアは,主機能モジュールと認証モジュールとを含み,ソフトウェアがインストールされるコンピュータのMACアドレスからライセンスキーが生成され,ライセンスキーがコンピュータにインストールされる。
【0011】
そして,ソフトウェアを起動するとき,まず,認証モジュールが起動し,認証モジュールは,ソフトウェアが起動されるコンピュータのMACアドレスからライセンス照合キーを生成し,コンピュータに記憶されたライセンスキーとライセンス照合キーを照合することで,ソフトウェアの起動を管理する。
【0012】
すなわち,特許文献3で開示されている発明では,ライセンスキーを発行したときに対象となったコンピュータと,ソフトウェアがインストールされたコンピュータが異なると,それぞれのコンピュータのMACアドレスが異なるため,ソフトウェアは起動しなくなる。
【0013】
しかしながら,特許文献3で開示されている発明では,スタンドアローンで使用されるコンピュータであっても,コンピュータにインストールされたソフトウェアの実行を管理できるようになるが,ソフトウェアを別のコンピュータに移設するとき,再度,ライセンスキーを生成しなければならず,移設に係わる処理が煩雑になってしまう問題がある。
【0014】
【特許文献1】特開2002−268764号公報
【特許文献2】特開2003−99142号公報
【特許文献3】特開2004―86404号公報
【発明の開示】
【発明が解決しようとする課題】
【0015】
そこで,本発明は,特許文献2や特許文献3で開示されている内容とは異なる手法を用いて,コンピュータにインストールされたソフトウェアの起動を制御し,該ソフトウェアをライセンス管理することで,スタンドアローンなコンピュータにも適用でき,更に,ソフトウェアの移設に係わる処理も容易にできるライセンス管理システムおよび方法を提供することを目的とする。
【課題を解決するための手段】
【0016】
上述した課題を解決する第1の発明は,トークンとコンピュータ装置とから少なくとも構成され,前記コンピュータ装置にインストールされたソフトウェアのライセンスを管理するライセンス管理システムであって,前記コンピュータ装置は,前記ソフトウェアを起動する操作があったとき,前記コンピュータ側で記憶している認証コードを前記トークンに認証させ,前記トークンが該認証コードの認証に成功すると,前記ソフトウェアの起動を許可すると共に,前記ソフトウェアから得られるシードに含まれる第1の可変要素を所定のルールに従い変更した後,前記シードを前記トークンに送信することで,前記トークンに前記認証コードを生成させ,前記トークンが生成した前記認証コードを次回の起動管理に利用する前記認証コードとして記憶する起動管理手段を備え,前記トークンは,前記コンピュータから送信される前記シードを元にした前記認証コードを生成するコード生成手段と,前記トークン側のメモリに記憶され,前記シードと対になり,前記第1の可変要素と同期する第2の可変要素を含む参照シードを用いて,前記コンピュータから送信される認証コードを認証し,前記認証コードの認証に成功すると,前記所定のルールに従い,前記第2の可変要素を変更させるコード認証手段とを備えていることを特徴とするライセンス管理システムである。
【0017】
なお,ここで,トークンとは,ICカードやUSBトークンのように,デジタル署名などに利用する暗号鍵などを耐タンパー性高く記憶し,外部装置からの要求に応じて,該暗号鍵を利用した演算を行う機能を備えた物理デバイスを意味する。
【0018】
更に,第2の発明は,第1の発明に記載のライセンス管理システムにおいて,前記第1の可変要素及び前記第2の可変要素はカウンタであって,前記コンピュータ装置の前記起動管理手段は,前記トークンが前記認証コードの認証に成功すると,前記第1の可変要素となるカウンタを所定の値だけインクリメントする手段で,前記トークンの前記コード認証手段は,前記コードの認証に成功すると,前記第2の可変要素となるカウンタを所定の値だけインクリメントする手段であることを特徴とするライセンス管理システムである。
【0019】
更に,第3の発明は,第2の発明に記載のライセンス管理システムにおいて,前記コンピュータ装置の前記起動管理手段は,前記第1の可変要素となるカウンタの値のハッシュ値を前記シードに含ませ,前記トークンの前記コード認証手段は,前記参照シードに含まれる前記第2の可変要素となるカウンタの値のハッシュ値を算出し,前記認証コードを認証することを特徴とするライセンス管理システムである。
【0020】
更に,第4の発明は,第3の発明に記載のライセンス管理システムにおいて,前記トークン側に記憶される前記参照シードに,前記ソフトウェアが前記コンピュータにインストールされたときの前記ソフトウェアのプログラムコードから算出されたハッシュ値を含ませ,前記コンピュータ装置の前記起動管理手段は,前記ソフトウェアのプログラムコードからハッシュ値を算出し,前記該ハッシュ値を前記シードに含ませる手段であることを特徴とするライセンス管理システムである。
【0021】
更に,第5の発明は,第3の発明または第4の発明に記載のライセンス管理システムにおいて,前記トークン側に記憶される前記参照シードに,前記ソフトウェアのインストール情報の全て或いは一部から算出されたハッシュ値を含ませ,前記コンピュータ装置の前記起動管理手段は,前記ソフトウェアが前記コンピュータにインストールされたときの前記インストール情報の全て或いは一部からハッシュ値を算出し,該ハッシュ値を前記シードに含ませる手段であることを特徴とするライセンス管理システムである。
【0022】
更に,第6の発明は,第1の発明から第5の発明のいずれか一つに記載のライセンス管理システムにおいて,前記コンピュータ装置は,前記トークンに記憶された前記参照シードが初期値である場合,前記コンピュータ装置に前記ソフトウェアをインストールした後,該ソフトウェアから得られる前記シードを前記参照シードとして前記トークンに書き込むインストール手段を備えていることを特徴とするライセンス管理システムである。
【0023】
更に,第7の発明は,第1の発明から第6の発明のいずれか一つに記載のライセンス管理システムにおいて,前記コンピュータ装置は,前記ソフトウェアを前記コンピュータ装置からアンインストールする共に,前記トークン側に記憶された前記参照シードの初期化を要求するアンインストール手段を備え,前記トークンは,前記コンピュータ装置からの要求に従い,前記参照シードを初期化する手段を備えていることを特徴とするライセンス管理システムである。
【0024】
更に,第8の発明は,トークンとコンピュータ装置とから少なくとも構成され,前記コンピュータにインストールされたソフトウェアのライセンスを管理するライセンス管理方法であって,前記ソフトウェアを起動する操作があったとき,前記コンピュータ装置が,前記コンピュータ側で記憶している認証コードの認証要求を前記トークンにするステップa,前記トークンが,前記ソフトウェアから得られ,第1の可変要素を含むシードと対になり,前記第1の可変要素と同期させる第2の可変要素を含む参照シードを用いて,前記コンピュータから送信される認証コードを認証し,該認証コードの認証に成功した場合は,前記第2の可変要素を所定のルールに従い変更した後に,認証結果を前記コンピュータに返信するステップb,前記トークンが前記認証コードの認証に成功した場合,前記コンピュータ装置が,前記ソフトウェアの起動を許可すると共に,前記ソフトウェアから得られる前記シードに含まれる前記第1の可変要素を所定のルールに従い変更した後,該シードを前記トークンに送信し,前記認証コードの生成を要求するステップc,前記トークンが,前記コンピュータから送信される前記シードを元にした前記認証コードを生成し,生成した前記認証コードを前記コンピュータに返信するステップd,前記コンピュータ装置が,前記トークンから受信した前記認証コードを,次回の起動管理に利用する前記認証コードとして記憶するステップe,が実行される起動管理工程を含むことを特徴とするライセンス管理方法である。
【0025】
更に,第9の発明は,第8の発明に記載のライセンス管理方法において,前記第1の可変要素及び前記第2の可変要素はカウンタであって,前記起動管理工程の前記ステップbにおいて,前記トークンは,前記コンピュータから送信される前記認証コードの認証に成功すると,前記参照シードに含まれる前記第2の可変要素となるカウンタを所定の値だけインクリメントし,前記起動管理工程の前記ステップcにおいて,前記コンピュータ装置は,前記トークンが前記認証コードの認証に成功した場合,前記第1の可変要素となるカウンタを所定の値だけインクリメントした後,前記第1の可変要素となるカウンタの値を前記シードに含ませることを特徴とするライセンス管理方法である。
【0026】
更に,第10の発明は,第9の発明に記載のライセンス管理方法において,前記起動管理工程の前記ステップbにおいて,前記トークンは,前記参照シードに含まれる前記第2の可変要素となるカウンタの値のハッシュ値を算出して,前記認証コードを認証し,前記起動管理工程の前記ステップcにおいて,前記コンピュータ装置は,前記第1の可変要素となるカウンタの値のハッシュ値を前記シードに含ませることを特徴とするライセンス管理方法である。
【0027】
更に,第11の発明は,第10の発明に記載のライセンス管理方法において,前記トークン側に記憶される前記参照シードに,前記ソフトウェアが前記コンピュータにインストールされたときの前記ソフトウェアのプログラムコードから算出されたハッシュ値を含ませ,前記起動管理工程の前記ステップcにおいて,前記コンピュータ装置は,前記ソフトウェアのプログラムコードからハッシュ値を算出し,該ハッシュ値を前記シードに含ませることを特徴とするライセンス管理方法である。
【0028】
更に,第12の発明は,第10の発明または第11の発明に記載のライセンス管理方法において,前記トークン側に記憶される前記参照シードに,前記ソフトウェアのインストール情報の全て或いは一部から算出されたハッシュ値を含ませ,前記起動管理工程の前記ステップcにおいて,前記コンピュータ装置は,前記ソフトウェアが前記コンピュータにインストールされたときの前記インストール情報の全て或いは一部からハッシュ値を算出し,該ハッシュ値を前記シードに含ませることを特徴とするライセンス管理方法である。
【0029】
更に,第13の発明は,第8の発明から第12の発明のいずれか一つに記載のライセンス管理方法において,前記コンピュータ装置が,前記コンピュータ装置に前記ソフトウェアをインストール前に,前記トークンに記憶された前記参照シードが初期値であるか確認し,前記参照シードが初期値である場合,前記コンピュータ装置に前記ソフトウェアをインストールした後,該ソフトウェアから得られる前記シードを前記参照シードとして前記トークンに書き込むインストール工程を含むことを特徴とするライセンス管理方法である。
【0030】
更に,第14の発明は,第8の発明から第13の発明のいずれか一つに記載のライセンス管理方法において,前記コンピュータ装置が,前記ソフトウェアを前記コンピュータ装置からアンインストールする共に,前記トークン側に記憶された前記参照シードの初期化を要求し,前記トークンが,前記コンピュータ装置からの要求に従い,前記参照シードを初期化するアンインストール工程を含むことを特徴とするライセンス管理方法である。
【発明の効果】
【0031】
上述した本発明によれば,ソフトウェアから得られ,認証コードの認証に成功したときに変更される第1の可変要素を含むシードを元にする認証コードを,トークンを利用して予め生成しソフトウェアに記憶しておき,次回に起動管理するとき,トークンが,該シードと対になり,第1の可変要素に同期させる第2の可変要素を含む参照シードを利用して,予め生成しておいた認証コードを認証し,該認証コードの認証に成功した場合,第2の可変要素を変更すると共に,コンピュータ装置がソフトウェアの起動を許可するようにすることで,別なコンピュータ装置にインストールされたソフトウェアを起動したときなど,ソフトウェアから得られるシードの第1の可変要素とトークンに記憶された参照シードの第2の可変要素が一致しない場合,ソフトウェアの起動を許可されず,ソフトウェアを起動できるコンピュータ装置を実質的に1台に限定することができる。
【0032】
このように,本発明においては,ネットワークに接続された装置は必要としないため,本発明は,スタンドアローンで利用されるコンピュータ装置にも適用することができる。また,ソフトウェアをコンピュータ装置からアンインストールするときに,トークンに記憶された参照シードを初期化すれば,他のコンピュータ装置にソフトウェアをインストールすることが可能になるため,ソフトウェアの移設に係わる処理も容易にすることができる。
【発明を実施するための最良の形態】
【0033】
ここから,本発明の好適な実施形態について,図を参照しながら詳細に説明する。図1は,本実施形態におけるライセンス管理システム1の概略構成図である。
【0034】
本実施形態に係わるライセンス管理システム1は,例えば,図1に図示したように,CD−ROM4に記憶されたソフトウェア5がインストールされるコンピュータ装置であるパーソナルコンピュータ2(以下,「PC」と略す。PC: Personal Computer)と,PC2にインストールされたソフトウェア5の起動を管理するために利用されるトークンであるICカード3とから少なくとも構成され,PC2には,ICカード3とデータ通信する装置であるICカードリーダ2aが接続されている。
【0035】
図1のライセンス管理システム1において,PC2にインストールされたソフトウェア5の起動は,予約型の認証コードを用いた認証によって管理される。ここで,予約型の認証コードを用いた認証とは,次回に利用する認証コードを予め生成しておき,次回は,予め生成しておいた認証コードを用いて認証することを意味する。
【0036】
予約型の認証コードを用いた認証によってソフトウェア5の起動を管理するために,ソフトウェア5が起動しているPC2は,ソフトウェア5を起動する際,該ソフトウェア5に記憶されている認証コードをICカード3に認証させ,ICカード3が該認証コードの認証に成功すると,ソフトウェア5から得られるシードを元にした認証コードをICカード3に生成させ,ICカード3から得られた認証コードを次回の起動管理に利用する認証コードとしてソフトウェア5に記憶する起動管理手段を備え,ICカード3は,該シードと対になる参照シードを利用して認証コードを認証するコード生成手段と,該シードを元にした認証コードを生成するコード認証手段を備えている。
【0037】
なお,このような,予約型の認証コードを用いた認証においては,認証コードが毎回変更される仕組みを設けないと,同じ認証コードを繰り返し使用することになりセキュリティ的に弱くなるため,本実施形態においては,PC2がソフトウェア5から得られるシードに第1の可変要素を含ませ,ICカード3に記憶される参照シードに第2の可変要素を含ませている。
【0038】
PC2がソフトウェア5から得られるシードとICカード3に記憶される参照シードに含ませる第1の可変要素及び第2の可変要素としては,ソフトウェア5が次に起動するまでに変動しない要素が望ましく,本実施形態では,ICカード3が認証コードの認証に成功する毎に所定の値だけインクリメントされるカウンタ(ここでは,4バイト)としている。
【0039】
ここから,図1で図示したライセンス管理システム1を構成する装置について説明する。図2は,本実施形態におけるPC2の構成例を示すブロック図で,図3は,本実施形態におけるICカード3の構成例を示すブロック図である。
【0040】
図2に図示したように,PC2は,CPU20a(Central Processing Unit),RAM20b(Random Access Memory)及びROM20c(Read-Only Memory)などから構成される制御ボード20と,大容量のデータ記憶装置としてハードディスク21と,文字や画像などを表示するディスプレイ22と,入力デバイスであるキーボード23と,ポインティングデバイスであるマウス24と,様々な外部装置(ここでは,ICカードリーダ2a)と接続するための外部インターフェース25(ここでは,USBインターフェース)を備え,CD―ROM4に記憶されたソフトウェア5は,PC2のハードディスク21に記憶される。
【0041】
また,図3に図示したように,ICカード3とはICチップ30が実装されたカード媒体で,ICチップは,CPU31,RAM32,ROM33,EEPROM34,暗号コプロセッサー35およびUART36を備える。
【0042】
次に,図1で図示したライセンス管理システム1で利用されるコンピュータプログラム及びデータについて説明する。図4は,ソフトウェア5を説明する図で,図4(a)は,CD−ROM4の内容を説明する図で,図4(b)は,ソフトウェア5をインストール後のPC2のハードディスク21の内容を説明する図である。
【0043】
図4(a)に図示したように,CD―ROM4には,PC2の制御ボード20を作動させるコンピュータプログラムとして,PC2にインストールされるソフトウェア5のアーカイブ40と,ソフトウェア5をPC2にインストールするためのインストーラ42と,ソフトウェア5をPC2からアンインストールするためのアンインストーラ6のアーカイブ41が記憶されている。
【0044】
ソフトウェア5のアーカイブ40とアンインストールのアーカイブ41は圧縮された状態でCD−ROM4に記録され,ソフトウェア5のアーカイブ40には,ソフトウェア5の主機能を実現するためのコンピュータプログラムであるメインモジュール50の圧縮ファイル40aと,ソフトウェア5の起動を管理するためのコンピュータプログラムである起動管理モジュール51の圧縮ファイル40bと,起動管理に利用するデータが記憶される設定ファイル52の圧縮ファイル40cが含まれている。
【0045】
また,インストーラが起動することで,PC2のハードディスク21には,CD―ROM4に圧縮された状態で記憶されているソフトウェア5のアーカイブ40とアンインストーラ6のアーカイブ41が展開され,PC2のハードディスクにソフトウェア5とアンインストール6がインストールされる。
【0046】
ソフトウェア5に含まれるメインモジュール50は、ユーザが利用したい機能を提供するコンピュータプログラムで、該機能は,例えば、ワードプロセッサ、表計算ソフト、図形描写ソフトなどである。
【0047】
ソフトウェア5に含まれる起動管理モジュール51は、PC2上で起動したときに,PC2を起動管理手段として機能させるためのコンピュータプログラムである。
【0048】
更に,ソフトウェア5に含まれる設定ファイル52には,認証コード54の元になるシードの可変要素として利用される認証カウンタ53と,次回の認証に利用する認証コード54が含まれている。
【0049】
ソフトウェア5に含まれる起動管理モジュール51は、ソフトウェア5が起動操作(例えば、アイコンのダブルクリック)されると起動し、ICカード3を利用して,ソフトウェア5に記憶されている認証コード54を認証し,ICカード3が該認証コード54の認証に成功すると,ソフトウェア5から得られるシードを元にした認証コード54をICカード3に生成させ,ICカード3から得られた認証コード54を次回の起動管理に利用する認証コード54として設定ファイル52に記憶する。
【0050】
本実施形態において,ICカード3に認証コード54を生成させるために,ソフトウェア5に含まれる起動管理モジュール51がソフトウェア5から得るシードには,少なくとも,PC2のハードディスク21に展開されたメインモジュール50のプログラムコードのハッシュ値,PC2のオペレーティングシステムで管理されるインストール情報の所定項目のハッシュ値,及び,設定ファイル52に含まれる認証カウンタ53の値のハッシュ値が含まれる。
【0051】
なお,ソフトウェア5から得るシードに認証カウンタ53の値のハッシュ値を含ませるのは,上述しているように,ICカード3に生成させる認証コード54を前回とは異なる値にするためである。
【0052】
ソフトウェア5から得るシードには,認証カウンタ53の値のハッシュ値ではなく,認証カウンタ53の値を含ませてもよいが,ICカードに送信するとき,認証カウンタ53の値を秘匿にするためである。
【0053】
また,ソフトウェア5から得るシードにソフトウェア5のハッシュ値を含ませるのは,PC2にインストールされたソフトウェア5を確認できるようにするためである。
【0054】
図5は,ICカード3に実装されるICチップ30のメモリの内容を説明する図である。図5に図示したように,ICチップ30のROM33には,ICチップ30を作動させるコマンドとして,PC2から送信されたシードを元にする認証コード54を生成するコード生成手段としてICカード3のICチップを機能させるためのコンピュータプログラムで実現されるコード生成コマンド300と,PC2から送信された認証コード54を認証するコード認証手段としてICカード3のICチップを機能させるためのコンピュータプログラムで実現されるコード認証コマンド301が実装され,図5では図示していないが,PC2から送信されたデータをEEPROM34に書き込むコマンドや,PC2から指示されたデータをEEPROM34から消去するコマンドなど,一般的なICカード3に備えられているコマンドが実装されている。
【0055】
また,ICカード3のEEPROM34には,ROM33に実装されたコマンドが利用されるデータとして,認証コード54の生成及び認証に利用される認証鍵302と,認証コード54を認証するときの参照シード303が記憶され,参照シード303には,ソフトウェア5の設定ファイル52に記憶された認証カウンタ53と同期する参照カウンタ304と,ソフトウェア5がインストールされたときに算出されたハッシュ値である参照ハッシュ値305が含まれている。
【0056】
コード生成コマンド300は,PC2から受信したシードから,定められたアルゴリズムに従い,認証鍵を利用して認証コード54を演算し,演算結果をPC2に返信するコマンドである。
【0057】
また,コード認証コマンド301は,EEPROM34に記憶された参照シード303に含まれる参照カウンタ304の値のハッシュ値を算出し,演算した参照カウンタ304の値のハッシュ値と参照ハッシュ値を元にして,コード生成コマンド300と同じアルゴリズムに従い、認証鍵を利用して参照コードを演算し、演算した参照コードとPC2から受信した認証コード54を照合することで、PC2から受信した認証コード54を認証し、認証コード54の認証に成功すると、参照シード303に含まれる参照カウンタ304を定められた値(例えば,「+1」)だけインクリメントした後,認証コード54の認証結果をPC2に返信するコマンドである。
【0058】
ICカード3に備えられるコード生成コマンド300,コード認証コマンド301及び認証鍵302の仕様は,認証コード54を生成するアルゴリズムの仕様に依存し,認証コード54を生成するアルゴリズムの仕様は任意であるが,例えば,ISO/IEC9797-1(1999)のMAC(Message Authentication code)Algorithmを用いることができる。
【0059】
なお,ICカード3が発行された時点では,参照ハッシュ値305は初期値で,ソフトウェア5がPC2にインストールされるとき,ICカード3に参照ハッシュ値305が書き込まれる。
【0060】
ここから、本発明に係わるライセンス管理方法の説明も兼ねて、図1で図示したライセンス管理システム1で実行される手順を説明する。
【0061】
まず、図6を参照しながら、ソフトウェア5をPC2にインストールするときの手順について説明する。図6は、ソフトウェア5をインストールするときの手順を示したフロー図である。
【0062】
ソフトウェア5をPC2にインストールするとき、まず、ソフトウェア5のユーザは、ソフトウェア5が記憶されたCD−ROM4をPC2に装着させ、PC2のディスプレイ22に表示されたインストーラ42のアイコンをクリックすると、CD−ROM4に記憶されたインストーラ42がPC2上で起動する(S1)。
【0063】
インストーラ42が起動すると,PC2は,該PC2に接続されたICカードリーダ2aに、ICカード3を検知しているか問い合わせ、問い合わせ結果によって処理を分岐させる(S2)。
【0064】
ICカードリーダ2aがICカード3を検知していない場合,PC2はソフトウェア5のインストールを中止してこの手順を終了し,ICカードリーダ2aがICカード3を検知している場合,該PC2はソフトウェア5のインストールを続行する。
【0065】
PC2は,ICカードリーダ2aがICカード3を検知している場合,参照シード303を読み取るコマンドのコマンドメッセージをICカード3に送信することで,ICカード3に参照シード303の読み取りを要求し(S3),ICカード3は,該コマンドのコマンドメッセージを受信すると,ICカード3が記憶している参照シード303をPC2に送信する(S4)。
【0066】
PC2は,ICカード3から受信した参照シード303に含まれる参照カウンタ304の内容によって,処理を分岐させる(S5)。参照カウンタ304が初期値でない場合,PC2はソフトウェア5のインストールを中止してこの手順を終了し,参照カウンタ304が初期値の場合,該PC2はソフトウェア5のインストールを続行する。
【0067】
ICカード3から得られた参照カウンタ304が初期値の場合,PC2は,CD−ROM4に圧縮された状態で記憶されているソフトウェア5のアーカイブ40及びアンインストーラ6のアーカイブ41を,PC2のハードディスク21上に展開すると共に,更に,ソフトウェア5のインストール情報をハードディスク21上に作成することで,ソフトウェア5をPC2にインストールする(S6)。
【0068】
PC2は,ハードディスク21にソフトウェア5をインストールすると,ソフトウェア5のメインモジュール50のプログラムコードのハッシュ値及びインストール情報の所定項目のハッシュを所定のアルゴリズムに従い演算した後(S7),ICカード3に対して,これらのハッシュ値を含む書き込みコマンドのコマンドメッセージを送信することで,これらのハッシュ値の書き込みをICカード3に要求する(S8)。
【0069】
ICカード3は,インストーラが起動したPC2から,上述したコマンドメッセージを受信すると,EEPROM34に記憶された参照シード303に含まれる参照ハッシュ値305を,該コマンドメッセージに含まれるハッシュ値に更新し,ハッシュ値の書き込み結果をPC2に通知する(S9)。
【0070】
PC2は,書き込みコマンドに対するレスポンスをICカード3から受信すると,ソフトウェア5のインストールが終了したことを示す画面をディスプレイ22に表示するなどして,ソフトウェア5のインストールを終了し,図6で図示した手順は終了する。
【0071】
次に,図7を参照しながら,PC2にインストールされたソフトウェア5の起動を管理する手順について説明する。図7は,ソフトウェア5の起動を管理する手順を示したフロー図である。
【0072】
ソフトウェア5のアイコンがダブルクリックされると,ソフトウェア5の起動管理モジュール51がPC2上で起動し(S10),起動管理モジュール51が起動すると,PC2は,PC2に接続されたICカードリーダ2aに、ICカード3を検知しているか問い合わせ、問い合わせ結果によって処理を分岐させる(S11)。
【0073】
ICカードリーダ2aがICカード3を検知していない場合,PC2は,ソフトウェア5のメインモジュール50の起動処理を中止してこの手順を終了し,ICカードリーダ2aがICカード3を検知している場合,起動管理モジュール51は,ソフトウェア5のメインモジュール50の起動処理を続行する。
【0074】
ICカードリーダ2aがICカード3を検知している場合,PC2は,ハードディスク21の設定ファイル52に含まれる認証コード54を取得し,該認証コード54を含むコード認証コマンド301のコマンドメッセージをICカード3に送信することで,ICカード3に対して認証コード54の認証要求を行う(S12)。
【0075】
ICカード3は,PC2から,認証コード54を含むコード認証コマンド301のコマンドメッセージを受信すると,コード認証コマンド301を起動させ,ICカード3に記憶されている参照シード303に含まれる参照カウンタ304のハッシュ値を算出し,認証鍵を用いて,定められたアルゴリズムに従い,参照シード303に含まれる参照ハッシュ値305と該参照カウンタ304のハッシュ値を元にする参照コードを演算し,PC2から受信した認証コード54と参照コードを照合することで,PC2から受信した認証コード54を認証する(S13)。
【0076】
ICカード3のコード認証コマンド301は,PC2から受信した認証コード54を認証結果に応じて処理を分岐させ(S14),該認証コード54の認証に成功した場合,ICカード3の参照カウンタ304の値を所定の値(例えば,「+1」)だけインクリメントした後(S15),S16に進み,該認証コード54の認証に失敗した場合は,参照カウンタ304の値をインクリメントすることなく,S16に進む。
【0077】
該認証コード54の認証に成功し,ICカード3の参照カウンタ304の値を所定の値だけインクリメントした後,或いは,該認証コード54の認証に失敗した後,ICカード3は,認証コード54の認証結果(成功或いは失敗)をPC2に送信する(S16)。
【0078】
PC2は,認証コード54の認証結果(成功或いは失敗)をICカード3から受信すると,認証コード54の認証結果に応じて処理を分岐させる(S17)。
【0079】
認証コマンドの認証結果が「成功」を示す場合,PC2は,ソフトウェア5のメインモジュール50の起動処理を続行し,認証コマンドの認証結果が「失敗」を示す場合,PC2は,ソフトウェア5のメインモジュール50の起動処理を中止し,図7で図示した手順は終了する。
【0080】
認証コマンドの認証結果が「成功」を示す場合,メインモジュール50が起動しているPC2は,PC2のハードディスク21に記憶された設定ファイル52の認証カウンタ53の値を所定の値(例えば,「+1」)だけインクリメントした後(S18),ソフトウェア5のメインモジュール50のプログラムコードとインストール情報のハッシュ値を演算し(S19),これらのハッシュ値とインクリメント後の認証カウンタ53の値のハッシュ値をシードとするコード生成コマンド300のコマンドメッセージをICカード3に送信することで,ICカード3に対して,認証コード54の生成要求をする(S20)。
【0081】
ICカード3は,コード生成コマンド300のコマンドメッセージを受信すると,コード生成コマンド300を起動させ,認証鍵302を用い,所定のアルゴリズムに従い,該コマンドメッセージに含まれるシードを元にする認証コード54を生成し,生成した認証コード54をPC2に送信する(S21)。
【0082】
PC2は,ICカード3から認証コード54を受信すると,該認証コード54を次回の認証に利用する認証コード54として,PC2のハードディスク21に設けられた設定ファイル52の認証コード54に上書き処理した後(S22),ソフトウェア5のメインモジュール50を起動させ(S23),図7で図示した手順は終了する。
【0083】
最後に,図8を参照しながら,PC2にインストールされたソフトウェア5をアンインストールする手順について説明する。図8は,ソフトウェア5をアンインストールする手順を示したフロー図である。
【0084】
ソフトウェア5をPC2にアンインストールするとき、まず、ソフトウェア5のユーザは、PC2にインストールされたアンインストーラ6のアイコンがダブルクリックされることで、アンインストーラ6がPC2上で起動する(S30)。
【0085】
アンインストーラ6は起動すると、PC2は,PC2に接続されたICカードリーダ2aに、ICカード3を検知しているか問い合わせ、問い合わせ結果によって処理を分岐させる(S31)。
【0086】
ICカードリーダ2aがICカード3を検知していない場合,PC2はソフトウェア5のアンインストールを中止してこの手順を終了し,ICカードリーダ2aがICカード3を検知している場合,PC2はソフトウェア5をアンインストールする処理を続行する。
【0087】
PC2は,ICカードリーダ2aがICカード3を検知している場合,参照シード303の参照カウンタを初期値に書き換えるコマンドと,参照シード303の参照ハッシュ値を初期値に書き換えるコマンドを送信することで,ICカード3に対して,参照シード303の初期化を要求する(S32)。
【0088】
ICカード3は,アンインストーラ6が起動しているPC2から,参照シード303を初期化するためのコマンドのコマンドメッセージを受信すると,参照シード303に含まれる参照カウンタと参照ハッシュ値をそれぞれ初期値(例えば,「All 0h」)に書き換えることで,参照シード303を初期化し,参照シード303の初期化の結果をPC2に返信する(S33)。
【0089】
PC2は,参照シード303の初期化の結果をICカード3から受信すると,PC2のハードディスク21上のソフトウェア5のプログラムコードやインストール情報を削除するなどして,PC2からソフトウェア5をアンインストールし(S34),図8で図示した手順は終了する。
【0090】
最後に,本発明の効果について説明する。図9は,本発明の効果を説明する図である。図9(a)は,2台のPC7a,bに同時にソフトウェアをインストールしたときの効果を説明する図である。
【0091】
2台のPC7a,bに同時にソフトウェアをインストールした直後では,PC7a,bに記憶された認証カウンタ70a,bの値は初期値(ここでは,「00000000h」。)で,ICカード8aに記憶された参照カウンタ80aの値も初期値(ここでは,「00000000h」。)であるため,2台のPC7a,bでソフトウェアの起動は可能な状態にある。
【0092】
しかし,2台のPC7a,bの内,1台(ここでは,PC7a)でソフトウェアが起動されると,PC7aに記憶された認証カウンタ70aはインクリメントされ,インクリメント後の認証カウンタ71aの値は「00000001h」になり,ICカード8aに記憶された参照カウンタ80aもインクリメントされ,インクリメント後の参照カウンタ81aも「00000001h」になる。
【0093】
よって,PC7aでソフトウェアが起動された後に,一方のPC7bでソフトウェアを起動させようとしても,PC7bに記憶された認証カウンタ70bの値(ここでは,「00000000h」)と,ICカード8aに記憶され,インクリメント後の参照カウンタ80aの値(ここでは,「00000001h」)は異なるため,図7で図示した手順に従えば,ICカード8aは認証コードの認証に失敗し,PC7bではソフトウェアは起動せず,実質的に,ソフトウェアが利用できる台数は1台に限定される。
【0094】
図9(b)は,PC7cにソフトウェアをインストールし,更に,PC7cからソフトウェアをアンインストールしたときの効果を説明する図である。
【0095】
PC7cにソフトウェアをインストールした後に,PC7c上でソフトウェアを1回起動すると,ICカード8bに記憶され,インクリメント後の参照カウンタ80bは初期値である「00000000h」から「00000001h」になり,図6で図示した手順に従えば,ICカード8bに記憶された参照カウンタは初期値ではなくなるため,該ICカード8bを利用してソフトウェアを他のPCにインストールすることはできない。
【0096】
しかし,PC7cからソフトウェアをアンインストールすることで,図8で図示した手順に従えば,ICカード8に記憶され,アンインストール後の参照カウンタ81bは初期値(ここでは,「00000000h」)に戻るため,ICカード8を利用して他のPCにソフトウェアをインストールすることが可能になる。
【0097】
なお,本発明は,これまで説明した実施形態に限定されることなく,当業者ならば,種々の変形や変更が可能である。
【0098】
例えば,上述した実施形態では,トークンをICカードにしているが,ICカード以外のデバイス,例えば,USBトークンも本発明のトークンとして利用可能である。
【0099】
図10は,トークンとして利用できるUSBトークン9を説明する図である。USBトークン9とは,コンピュータ装置のUSBインターフェースと接続するためのUSBコネクタ92と,コンピュータ装置とのUSB通信を制御するための制御チップ90と,ICカード用ICチップ91が組み込まれたデバイスで,ICカード用ICチップ91のメモリに,図5で図示したコマンドやデータが記憶され,コンピュータ装置のUSBインターフェースに接続されて利用される。
【0100】
また,1枚のICカードを用いることで,複数のソフトウェアの起動を管理することも可能である。1枚のICカードを用い,複数のソフトウェアの起動を管理するとき,一つのソフトウェアの起動を管理するためのデータすなわち参照シードを,インストール情報に含まれるソフトウェアの識別番号を基礎にして生成されるDF(DF: Dedicated File)に関連付けて記憶し,ソフトウェアの起動管理するときには,該ソフトウェアのインストール情報から識別番号を取得し,該識別番号に対応するDFに関連付けられた参照シードを利用して,ソフトウェアの起動を管理する。
【図面の簡単な説明】
【0101】
【図1】本実施形態におけるライセンス管理システムの概略構成図。
【図2】本実施形態におけるPCの構成例を示すブロック図。
【図3】本実施形態におけるICカードの構成例を示すブロック図。
【図4】ソフトウェアを説明する図。
【図5】ICカードに実装されるICチップのメモリの内容を説明する図。
【図6】ソフトウェアをインストールするときの手順を示したフロー図。
【図7】ソフトウェアの起動を管理する手順を示したフロー図。
【図8】ソフトウェアをアンインストールする手順を示したフロー図。
【図9】本発明の効果を説明する図。
【図10】トークンとして利用できるUSBトークンを説明する図。
【符号の説明】
【0102】
1 ライセンス管理システム
2 パーソナルコンピュータ(PC)
2a ICカードリーダ
3 ICカード
300 コード生成コマンド
301 コード認証コマンド
302 認証鍵
303 参照シード
304 参照カウンタ
305 参照ハッシュ値
4 CD―ROM
42 インストーラ
5 ソフトウェア
50 メインモジュール
51 起動管理モジュール
52 設定ファイル
53 認証カウンタ
54 認証コード
6 アンインストーラ


【特許請求の範囲】
【請求項1】
トークンとコンピュータ装置とから少なくとも構成され,前記コンピュータ装置にインストールされたソフトウェアのライセンスを管理するライセンス管理システムであって,前記コンピュータ装置は,前記ソフトウェアを起動する操作があったとき,前記コンピュータ側で記憶している認証コードを前記トークンに認証させ,前記トークンが該認証コードの認証に成功すると,前記ソフトウェアの起動を許可すると共に,前記ソフトウェアから得られるシードに含まれる第1の可変要素を所定のルールに従い変更した後,前記シードを前記トークンに送信することで,前記トークンに前記認証コードを生成させ,前記トークンが生成した前記認証コードを次回の起動管理に利用する前記認証コードとして記憶する起動管理手段を備え,前記トークンは,前記コンピュータから送信される前記シードを元にした前記認証コードを生成するコード生成手段と,前記トークン側のメモリに記憶され,前記シードと対になり,前記第1の可変要素と同期する第2の可変要素を含む参照シードを用いて,前記コンピュータから送信される認証コードを認証し,前記認証コードの認証に成功すると,前記所定のルールに従い,前記第2の可変要素を変更させるコード認証手段とを備えていることを特徴とするライセンス管理システム。
【請求項2】
請求項1に記載のライセンス管理システムにおいて,前記第1の可変要素及び前記第2の可変要素はカウンタであって,前記コンピュータ装置の前記起動管理手段は,前記トークンが前記認証コードの認証に成功すると,前記第1の可変要素となるカウンタを所定の値だけインクリメントする手段で,前記トークンの前記コード認証手段は,前記コードの認証に成功すると,前記第2の可変要素となるカウンタを所定の値だけインクリメントする手段であることを特徴とするライセンス管理システム。
【請求項3】
請求項2に記載のライセンス管理システムにおいて,前記コンピュータ装置の前記起動管理手段は,前記第1の可変要素となるカウンタの値のハッシュ値を前記シードに含ませ,前記トークンの前記コード認証手段は,前記参照シードに含まれる前記第2の可変要素となるカウンタの値のハッシュ値を算出し,前記認証コードを認証することを特徴とするライセンス管理システム。
【請求項4】
請求項3に記載のライセンス管理システムにおいて,前記トークン側に記憶される前記参照シードに,前記ソフトウェアが前記コンピュータにインストールされたときの前記ソフトウェアのプログラムコードから算出されたハッシュ値を含ませ,前記コンピュータ装置の前記起動管理手段は,前記ソフトウェアのプログラムコードからハッシュ値を算出し,前記該ハッシュ値を前記シードに含ませる手段であることを特徴とするライセンス管理システム。
【請求項5】
請求項3または請求項4に記載のライセンス管理システムにおいて,前記トークン側に記憶される前記参照シードに,前記ソフトウェアのインストール情報の全て或いは一部から算出されたハッシュ値を含ませ,前記コンピュータ装置の前記起動管理手段は,前記ソフトウェアが前記コンピュータにインストールされたときの前記インストール情報の全て或いは一部からハッシュ値を算出し,該ハッシュ値を前記シードに含ませる手段であることを特徴とするライセンス管理システム。
【請求項6】
請求項1から請求項5のいずれか一つに記載のライセンス管理システムにおいて,前記コンピュータ装置は,前記トークンに記憶された前記参照シードが初期値である場合,前記コンピュータ装置に前記ソフトウェアをインストールした後,該ソフトウェアから得られる前記シードを前記参照シードとして前記トークンに書き込むインストール手段を備えていることを特徴とするライセンス管理システム。
【請求項7】
請求項1から請求項6のいずれか一つに記載のライセンス管理システムにおいて,前記コンピュータ装置は,前記ソフトウェアを前記コンピュータ装置からアンインストールする共に,前記トークン側に記憶された前記参照シードの初期化を要求するアンインストール手段を備え,前記トークンは,前記コンピュータ装置からの要求に従い,前記参照シードを初期化する手段を備えていることを特徴とするライセンス管理システム。
【請求項8】
トークンとコンピュータ装置とから少なくとも構成され,前記コンピュータにインストールされたソフトウェアのライセンスを管理するライセンス管理方法であって,前記ソフトウェアを起動する操作があったとき,前記コンピュータ装置が,前記コンピュータ側で記憶している認証コードの認証要求を前記トークンにするステップa,前記トークンが,前記ソフトウェアから得られ,第1の可変要素を含むシードと対になり,前記第1の可変要素と同期させる第2の可変要素を含む参照シードを用いて,前記コンピュータから送信される認証コードを認証し,該認証コードの認証に成功した場合は,前記第2の可変要素を所定のルールに従い変更した後に,認証結果を前記コンピュータに返信するステップb,前記トークンが前記認証コードの認証に成功した場合,前記コンピュータ装置が,前記ソフトウェアの起動を許可すると共に,前記ソフトウェアから得られる前記シードに含まれる前記第1の可変要素を所定のルールに従い変更した後,該シードを前記トークンに送信し,前記認証コードの生成を要求するステップc,前記トークンが,前記コンピュータから送信される前記シードを元にした前記認証コードを生成し,生成した前記認証コードを前記コンピュータに返信するステップd,前記コンピュータ装置が,前記トークンから受信した前記認証コードを,次回の起動管理に利用する前記認証コードとして記憶するステップe,が実行される起動管理工程を含むことを特徴とするライセンス管理方法。
【請求項9】
請求項8に記載のライセンス管理方法において,前記第1の可変要素及び前記第2の可変要素はカウンタであって,前記起動管理工程の前記ステップbにおいて,前記トークンは,前記コンピュータから送信される前記認証コードの認証に成功すると,前記参照シードに含まれる前記第2の可変要素となるカウンタを所定の値だけインクリメントし,前記起動管理工程の前記ステップcにおいて,前記コンピュータ装置は,前記トークンが前記認証コードの認証に成功した場合,前記第1の可変要素となるカウンタを所定の値だけインクリメントした後,前記第1の可変要素となるカウンタの値を前記シードに含ませることを特徴とするライセンス管理方法。
【請求項10】
請求項9に記載のライセンス管理方法において,前記起動管理工程の前記ステップbにおいて,前記トークンは,前記参照シードに含まれる前記第2の可変要素となるカウンタの値のハッシュ値を算出して,前記認証コードを認証し,前記起動管理工程の前記ステップcにおいて,前記コンピュータ装置は,前記第1の可変要素となるカウンタの値のハッシュ値を前記シードに含ませることを特徴とするライセンス管理方法。
【請求項11】
請求項10に記載のライセンス管理方法において,前記トークン側に記憶される前記参照シードに,前記ソフトウェアが前記コンピュータにインストールされたときの前記ソフトウェアのプログラムコードから算出されたハッシュ値を含ませ,前記起動管理工程の前記ステップcにおいて,前記コンピュータ装置は,前記ソフトウェアのプログラムコードからハッシュ値を算出し,該ハッシュ値を前記シードに含ませることを特徴とするライセンス管理方法。
【請求項12】
請求項10または請求項11に記載のライセンス管理方法において,前記トークン側に記憶される前記参照シードに,前記ソフトウェアのインストール情報の全て或いは一部から算出されたハッシュ値を含ませ,前記起動管理工程の前記ステップcにおいて,前記コンピュータ装置は,前記ソフトウェアが前記コンピュータにインストールされたときの前記インストール情報の全て或いは一部からハッシュ値を算出し,該ハッシュ値を前記シードに含ませることを特徴とするライセンス管理方法。
【請求項13】
請求項8から請求項12のいずれか一つに記載のライセンス管理方法において,前記コンピュータ装置が,前記コンピュータ装置に前記ソフトウェアをインストール前に,前記トークンに記憶された前記参照シードが初期値であるか確認し,前記参照シードが初期値である場合,前記コンピュータ装置に前記ソフトウェアをインストールした後,該ソフトウェアから得られる前記シードを前記参照シードとして前記トークンに書き込むインストール工程を含むことを特徴とするライセンス管理方法。
【請求項14】
請求項8から請求項13のいずれか一つに記載のライセンス管理方法において,前記コンピュータ装置が,前記ソフトウェアを前記コンピュータ装置からアンインストールする共に,前記トークン側に記憶された前記参照シードの初期化を要求し,前記トークンが,前記コンピュータ装置からの要求に従い,前記参照シードを初期化するアンインストール工程を含むことを特徴とするライセンス管理方法。


【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate


【公開番号】特開2010−146125(P2010−146125A)
【公開日】平成22年7月1日(2010.7.1)
【国際特許分類】
【出願番号】特願2008−320290(P2008−320290)
【出願日】平成20年12月16日(2008.12.16)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.EEPROM
【出願人】(000002897)大日本印刷株式会社 (14,506)
【Fターム(参考)】