(57)【特許請求の範囲】
【請求項１】
ＩＣカードに搭載するアプリケーションプログラムであって、固有のシリアル番号およびシリアル番号に対応した原照合キーを内部に保持しており、当初は、そのシリアル番号を読み出すコマンド、および、そのプログラムの全ての機能を有効にする活性化コマンドのみが有効であり、他の機能は利用不可能な状態とされているものであって、前記シリアル番号を読み出すコマンドによりシリアル番号が読み出された後で、前記シリアル番号に関連した照合キーを付加した前記活性化コマンドの命令を受けた際に、前記照合キーが前記原照合キーと一致することを検証できた時にのみ、当該プログラムの全ての機能を有効にするよう該ＩＣカードを機能させることを特徴とするアプリケーションプログラム。
【請求項２】
前記照合キーおよび原照合キーは、アプリケーションプログラム固有の前記シリアル番号を前記アプリケーションプログラム発行者所有の暗号鍵により暗号化して作成したものである請求項１に記載のアプリケーションプログラム。
【請求項３】
自らの機能を全て無効化するソフトウエア無効化コマンドを備えた請求項１または請求項２に記載のアプリケーションプログラムであって、外部からこのコマンドを受けると、このコマンドに対する応答を返すこと以外の自らの全ての機能を提供不能とするとともに、前記アプリケーションプログラムのシリアル番号と前記原照合キーを含んだ応答を返すよう該ＩＣカードを機能させることを特徴とするアプリケーションプログラム。
【請求項４】
ＩＣカードに搭載するアプリケーションプログラムであって、固有のシリアル番号およびシリアル番号に対応した秘密鍵を内部に保持しており、当初は、そのシリアル番号を読み出すコマンド、および、そのプログラムの全ての機能を有効にする活性化コマンドのみが有効であり、他の機能は利用不可能な状態とされているものであって、前記シリアル番号を読み出すコマンドによりシリアル番号が読み出された後で、前記シリアル番号に対応した公開鍵により前記シリアル番号を暗号化して生成した照合データを付加した前記活性化コマンドの命令を受けた際に、前記秘密鍵を用いて前記照合データを復号した結果が前記シリアル番号と一致することを検証できた時にのみ、当該プログラムの全ての機能を有効にするよう該ＩＣカードを機能させることを特徴とするアプリケーションプログラム。
【請求項５】
自らの機能を全て無効化するソフトウエア無効化コマンドを備えた請求項４に記載のアプリケーションプログラムであって、外部からこのコマンドを受けると、このコマンドに対する応答を返すこと以外の自らの全ての機能を提供不能とするとともに、前記アプリケーションプログラムのシリアル番号を記述した部分とそのシリアル番号を自身の秘密鍵により暗号化した部分を含んで構成した前記ソフトウエア無効化コマンドに対する応答を返すよう該ＩＣカードを機能させることを特徴とするアプリケーションプログラム。
【請求項６】
ＩＣカードに搭載するアプリケーションプログラムであって、固有のシリアル番号、シリアル番号に対応した秘密鍵および制御変数を内部に保持しており、当初は、そのシリアル番号および制御変数の値を読み出すコマンド、および、そのプログラムの全ての機能を有効にする活性化コマンドのみが有効であり、他の機能は利用不可能な状態とされているものであって、前記シリアル番号および制御変数の値を読み出すコマンドによりシリアル番号および制御変数の値が読み出された後で、前記シリアル番号に対応した公開鍵により前記シリアル番号と前記制御変数を暗号化して生成した照合データを付加した前記活性化コマンドの命令を受けた際に、前記秘密鍵を用いて前記照合データを復号した結果が前記シリアル番号と前記制御変数に各々一致することを検証できた時にのみ、当該プログラムの全ての機能を有効にするよう該ＩＣカードを機能させることを特徴とするアプリケーションプログラム。
【請求項７】
一度全ての機能を有効化した後で、そのシリアル番号および制御変数の値を読み出すコマンド、および、そのプログラムの全ての機能を有効にする活性化コマンド以外は動作しない初期状態に戻るソフトウエア無効化コマンドを備えた請求項６に記載のアプリケーションプログラムであって、外部からこのコマンドを受けると、このコマンドに対する応答を返すことと、そのシリアル番号および制御変数の値を読み出すコマンド、および、前記活性化コマンド以外の機能を提供不能とするとともに、前記アプリケーションプログラムのシリアル番号を記述した部分とそのシリアル番号を自身の秘密鍵により暗号化した部分を含んで構成した無効化コマンドに対する応答を返し、前記制御変数の値を定められた手順により更新するよう該ＩＣカードを機能させることを特徴とするアプリケーションプログラム。
【請求項８】
乱数発生アルゴリズムにより発生させた値を制御変数の新しい値とする請求項７に記載のＩＣカード搭載用のアプリケーションプログラム。
【請求項９】
請求項１から請求項８のいずれかに記載のアプリケーションプログラムを搭載したＩＣカード。
【請求項１０】
ライセンス管理クライアント手段を搭載したカードリーダーライター装置を備えたクライアントコンピュータと、カード発行者が設置するライセンス管理サーバー手段を搭載しライセンス管理データベースを備えたサーバーコンピュータとが、ネットワークを通じて接続されることにより構成される請求項７または請求項８に記載のアプリケーションプログラムのライセンス管理システムであって、前記ライセンス管理クライアント手段は、カード使用者の指示に従って対象とするＩＣカードから前記カードリーダーライター装置を通じて前記アプリケーションプログラム内部に記録された前記シリアル番号および前記制御変数の値を読み出し、これをネットワークを通じて前記ライセンス管理サーバー手段に伝え、また、前記ライセンス管理サーバー手段からの応答を受取り、これを前記アプリケーションプログラムに与えることでその全ての機能を有効化するものであって、前記ライセンス管理サーバー手段は、配布したアプリケーションプログラムのシリアル番号に応じた公開鍵データを保持しているものであって、前記ライセンス管理クライアント手段から、前記シリアル番号および前記制御変数の値を受取った時は、シリアル番号に対応して用意された公開鍵により暗号化して照合データを作成し、このシリアル番号に関して照合データを作成したことを前記ライセンス管理データベースに記録した上で、前記ライセンス管理クライアント手段へ、生成した照合データを返送し、また、前記ライセンス管理クライアント手段から無効化応答を受取った時は、対応する公開鍵により前記暗号化部分を復号して前記シリアル番号記述部分と照合して正当なシリアル番号であることを検証して、正当と認められたシリアル番号を前記ライセンス管理データベースに登録するとともに、無効化登録が終了した旨を前記ライセンス管理クライアント手段に返すことによりアプリケーションプログラムの無効化および再活性化を漏れなく管理することができることを特徴としたライセンス管理システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ソフトウエアのライセンス管理を容易に行えるように特別な機能を設けたＩＣカードに搭載されるアプリケーションプログラムに関する。
【０００２】
【従来技術】
ＩＣカード上に記録されて利用されるアプリケーションプログラムは、通常カード発行者の側で当該プログラムをＩＣカードに搭載して利用可能な状態として利用者に配布する。そのようにソフトウエアプログラムを搭載されたカードは、通常、一部の特定のカードでしかアプリケーションが動作しないように設定することはできない。
【０００３】
【発明が解決しようとする課題】
例えば、アプリケーションＡがロードされたカードＸを10000枚製造し、利用者（顧客）へ配布すると仮定する。この時、利用者より「カードは社員全員に配布するが、アプリケーションＡは、当面100人しか使用しないので、アプリケーションＡの許諾使用料は最初の年は100人分としたい」といった要求があった場合、現状では、カードＸ１種類で、その提供する機能を最終利用者の属性等に応じて制限させるということはできなかった。
【０００４】
本発明はこのような問題点を考慮してなされたものであり、一旦配布したカードを回収することなく、ＩＣカードに搭載したアプリケーションプログラムの使用許可あるいは使用制限の管理を容易に行うことが可能なＩＣカード搭載プログラムを提供することを課題とする。
【０００５】
【課題を解決するための手段】
課題を解決するための第１の発明は、ＩＣカードに搭載するために設計された次のような特徴を有するアプリケーションプログラムである。すなわち、固有のシリアル番号およびシリアル番号に対応した原照合キーを内部に保持しており、当初は、そのシリアル番号を読み出すコマンド、および、そのプログラムの全ての機能を有効にする活性化コマンドのみが有効であり、他の機能は利用不可能な状態とされているものであって、前記シリアル番号を読み出すコマンドによりシリアル番号が読み出された後で、前記シリアル番号に関連した照合キーを付加した前記活性化コマンドの命令を受けた際に、前記照合キーが前記原照合キーと一致することを検証できた時にのみ、当該プログラムの全ての機能を有効にするよう該ＩＣカードを機能させることを特徴とするものである。シリアル番号に対応した原照合キーはカード発行者のみが知っている。したがって、原照合キーと等しい照合キーを受けた時は、当該プログラムを利用可能としてよいわけである。
【０００６】
第１の発明に係るアプリケーションプログラムのより好ましい第２の態様は、第１の態様に係るアプリケーションプログラムにおいて、前記照合キーまたは原照合キーは、前記シリアル番号をカード発行者所有の暗号鍵により暗号化して作成したものとするものである。暗号方法と暗号鍵を決めておけば、シリアル番号が決まれば原照合キーが得られるため、カード発行者側で原照合キーをシリアル番号ごとに全て記録しておく必要はなくなる。
【０００７】
第１の発明に係るアプリケーションプログラムのより好ましい第３の態様は、自らの機能を全て無効化するソフトウエア無効化コマンドを備えた第１の態様または第２の態様に係るアプリケーションプログラムであって、外部からこのコマンドを受けると、このコマンドに対する応答を返すこと以外の自らの全ての機能を提供不能とするとともに、前記アプリケーションプログラムのシリアル番号と前記原照合キーを含んだ応答を返すよう該ＩＣカードを機能させることを特徴とするものである。
【０００８】
第１の発明に係るアプリケーションプログラムのより好ましい第４の態様は、第２の態様に係るアプリケーションプログラムを公開鍵暗号方式を利用して改良したものである。すなわち、固有のシリアル番号およびシリアル番号に対応した秘密鍵を内部に保持しており、当初は、そのシリアル番号を読み出すコマンド、および、そのプログラムの全ての機能を有効にする活性化コマンドのみが有効であり、他の機能は利用不可能な状態とされているものであって、前記シリアル番号を読み出すコマンドによりシリアル番号が読み出された後で、前記シリアル番号に対応した公開鍵により前記シリアル番号を暗号化して生成した照合データを付加した前記活性化コマンドの命令を受けた際に、前記秘密鍵を用いて前記照合データを復号した結果が前記シリアル番号と一致することを検証できた時にのみ、当該プログラムの全ての機能を有効にするよう該ＩＣカードを機能させることを特徴とするＩＣカード搭載用のアプリケーションプログラムである。
【０００９】
前記アプリケーションプログラムは、カード発行者のみが知っている当該シリアル番号に対応した公開鍵により暗号化したものと等しいデータを照合データとして受取った時のみ、全ての機能を利用可能とするわけである。
【００１０】
第１の発明に係るアプリケーションプログラムのより好ましい第５の態様は、自らの機能を全て無効化するソフトウエア無効化コマンドをも備えた第４の態様に係るアプリケーションプログラムであって、外部からこのコマンドを受けると、このコマンドに対する応答を返すこと以外の自らの全ての機能を提供不能とするとともに、前記アプリケーションプログラムのシリアル番号を記述した部分とそのシリアル番号を自身の秘密鍵により暗号化した部分を含んで構成した前記ソフトウエア無効化コマンドに対する応答を返すよう該ＩＣカードを機能させることを特徴とするものである。
【００１１】
第１の発明に係るアプリケーションプログラムのより好ましい第６の態様は、固有のシリアル番号、シリアル番号に対応した秘密鍵および制御変数を内部に保持しており、当初は、そのシリアル番号および制御変数の値を読み出すコマンド、および、そのプログラムの全ての機能を有効にする活性化コマンドのみが有効であり、他の機能は利用不可能な状態とされているものであって、前記シリアル番号および制御変数の値を読み出すコマンドによりシリアル番号および制御変数の値が読み出された後で、前記シリアル番号に対応した公開鍵により前記シリアル番号と前記制御変数を暗号化して生成した照合データを付加した前記活性化コマンドの命令を受けた際に、前記秘密鍵を用いて前記照合データを復号した結果が前記シリアル番号と前記制御変数に各々一致することを検証できた時にのみ、当該プログラムの全ての機能を有効にするよう該ＩＣカードを機能させることを特徴とするＩＣカード搭載用のアプリケーションプログラムである。
【００１２】
第１の発明に係るアプリケーションプログラムのより好ましい第７の態様は、一度全ての機能を有効化した後で、そのシリアル番号および制御変数の値を読み出すコマンド、および、そのプログラムの全ての機能を有効にする活性化コマンド以外は動作しない初期状態に戻るソフトウエア無効化コマンドを備えた第６の態様に係るアプリケーションプログラムであって、外部からこのコマンドを受けると、このコマンドに対する応答を返すことと、そのシリアル番号および制御変数の値を読み出すコマンド、および、前記活性化コマンド以外の機能を提供不能とするとともに、前記アプリケーションプログラムのシリアル番号を記述した部分とそのシリアル番号を自身の秘密鍵により暗号化した部分を含んで構成した無効化コマンドに対する応答を返し、前記制御変数の値を定められた手順により更新するよう該ＩＣカードを機能させることを特徴とするものである。
【００１３】
第１の発明の第８の態様は、前記制御変数の値を更新する際に、乱数発生アルゴリズムにより発生させた値を制御変数の新しい値とする第７の態様に係るＩＣカード搭載用のアプリケーションプログラムである。乱数発生には、既存の擬似乱数発生アルゴリズムあるいはそれを用いた乱数発生関数を利用すればよい。
【００１４】
課題を解決する第２の発明は、第１の発明に係るアプリケーションプログラムを搭載したＩＣカードである。
【００１６】
課題を解決する第３の発明は、ライセンス管理クライアント手段を搭載したカードリーダーライター装置を備えたクライアントコンピュータと、カード発行者が設置するライセンス管理サーバー手段を搭載しライセンス管理データベースを備えたサーバーコンピュータとが、ネットワークを通じて接続されることにより構成される第１の発明の第７の態様または第８の態様に係るアプリケーションプログラムのライセンス管理システムであって、前記ライセンス管理クライアント手段は、カード使用者の指示に従って対象とするＩＣカードから前記カードリーダーライター装置を通じて前記アプリケーションプログラム内部に記録された前記シリアル番号および前記制御変数の値を読み出し、これをネットワークを通じて前記ライセンス管理サーバー手段に伝え、また、前記ライセンス管理サーバー手段からの応答を受取り、これを前記アプリケーションプログラムに与えることでその全ての機能を有効化するものであって、前記ライセンス管理サーバー手段は、配布したアプリケーションプログラムのシリアル番号に応じた公開鍵データを保持しているものであって、前記ライセンス管理クライアント手段から、前記シリアル番号および前記制御変数の値を受取った時は、シリアル番号に対応して用意された公開鍵により暗号化して照合データを作成し、このシリアル番号に関して照合データを作成したことを前記ライセンス管理データベースに記録した上で、前記ライセンス管理クライアント手段へ、生成した照合データを返送し、また、前記ライセンス管理クライアント手段から無効化応答を受取った時は、対応する公開鍵により前記暗号化部分を復号して前記シリアル番号記述部分と照合して正当なシリアル番号であることを検証して、正当と認められたシリアル番号を前記ライセンス管理データベースに登録するとともに、無効化登録が終了した旨を前記ライセンス管理クライアント手段に返すことによりアプリケーションプログラムの無効化および再活性化を漏れなく管理することができることを特徴としたライセンス管理システムである。
【００１７】
【発明の実施の形態】
以下図面を用いて、まず、本発明によるアプリケーションプログラムと、それを用いたアプリケーションプログラム管理方法（以下「基本管理方法」と記す）、および、その方法を用いて構成したアプリケーションプログラムのライセンス管理システム１を説明する。最初に、基本管理方法の概要を説明する。
【００１８】
まず、基本管理方法が対象とするアプリケーションプログラムは、以下のような特徴を持つのものとする。
１）アプリケーションには、シリアル番号と照合キー（シリアル番号を発行者の鍵で暗    号化したもの）が記録されている。
２）シリアル番号を読み出すコマンド（READコマンド）が実装されている。
３）アプリケーションに格納されている照合キーと、受付けた照合キーを比較して、一    致したらアプリケーションの全てのコマンドを使用可能にするコマンド（ENABLEコ    マンド）が実装されている。
４）アプリケーションを使用不能にし、チェック用のコードを出力するコマンド（DISA    BLEコマンド）が実装されている。
５）初期状態では、上記３コマンド以外の全てのコマンドは使用不可能な状態となって    いる。
【００１９】
次に、図１により、基本管理方法の対象プログラムであるプログラムＡを使用可能にする手順を説明する。まず、利用者は、プログラムＡを搭載しているＩＣカードへREADコマンドを送信し、シリアル番号を読み出す（▲１▼）。つぎに、読み出したシリアル番号のリストをカードの枚数分だけ作成し、発行者へ送付する（▲２▼）。発行者側でシリアル番号を発行者の管理する鍵にて暗号化し、アプリケーションを利用可能にするための照合キーを生成する（▲３▼）。発行者側で生成した照合キーのリストを利用者へ送付する（▲４▼）。利用者は、プログラムＡを搭載したＩＣカードに対してENABLEコマンドを発行するとともに照合キーを送信し、プログラムＡを利用可能にする（▲５▼）。ＩＣカード内のプログラムＡは、送り付けられた照合キーと内部に持つ照合キーを比較して、一致する時は、全ての機能を提供可能な状態にする。
【００２０】
上記▲３▼の手順において、暗号化の方法は特に限定しない。ＤＥＳ暗号方式等の有名な暗号方式を用いてもよいが、他のどのような暗号方式を用いてもよい。また、ＩＣカードに搭載された基本管理方法対象プログラムにおいて、そのプログラムに備えられている機能を利用（提供）可能とするしないの制御方法についても特に限定しない。ソフトウエアで実現できる方法であれば何を使ってもよい。例えば、用意されているコマンド毎に有効／無効を定めるフラグが用意されており、これらをＩＣカードの不揮発メモリ領域に記憶させ、各コマンドの処理関数の最初に、このフラグを検査するという方法などが考えられる。
【００２１】
次に、プログラムＡを使用不可能にする手順を、図２により説明する。まず、カード使用者は、プログラムＡを無効化したいＩＣカードに対してDISABLEコマンドを発行し、レスポンスデータを得る（▲１▼）。このレスポンスデータにはそのアプリケーションプログラム固有のシリアル番号と、照合キーを含んでいる。次に、複数のカードに対してこうして作られたレスポンスデータを集め、レスポンスデータのリストを作成し、発行者へ送付する（▲２▼）。発行者側では、レスポンスデータからシリアル番号と照合キーを取り出す。レスポンスデータは、シリアル番号と照合キーとを含んで構成されたものである。そして照合キーはシリアル番号をカード発行者の鍵で暗合化したものであるという関係がある。そこでカード発行者は、レスポンスデータから照合キー部分を分離する（▲３▼）。そして、照合キーを発行者の管理する鍵にて復号する（▲４▼）。復号結果と、レスポンスデータから抽出したシリアル番号部分を比較する（▲５▼）。両者が一致していれば正しく無効化されていることが発行者側で確認できたことになる。カード発行者は、正しく無効化されたこのシリアル番号をライセンス管理記録データベースに記録するとともに、無効化処理が正常に終了したことを利用者へ通知する（▲６▼）。両者が一致しなかった場合は、その旨をカード利用者に通知する（▲６▼）。
【００２２】
図３は、図１および図２で説明した基本管理方法を、人手を要せずに実現するライセンス管理システム１の構成を示したものである。以下、図１に従って、ライセンス管理システム１を説明する。
【００２３】
１０は、カード使用者が使用するクライアントコンピュータである。クライアントコンピュータ１０は、カードリーダライタ装置１２、および、ライセンス管理クライアント手段１１を備えている。１３はライセンス管理対象であるアプリケーションプログラム１５を搭載したＩＣカードである。ライセンス管理クライアント手段１１は、カード利用者からの指示を受付けるユーザーインターフェース機能と、ネットワークを通じて後述のライセンス管理サーバー手段２１と必要なデータをやり取りする通信機能を備えている。
【００２４】
２０は、カード発行者が設置したライセンス管理サーバー装置である。カードに搭載したアプリケーションプログラムのライセンス管理を行うための管理データベース２２と、ライセンス管理サーバー手段２１を備えている。
【００２５】
ライセンス管理クライアント手段１１は、起動されるとディスプレイ１８にユーザーインターフェース画面を表示し、カード使用者からの入力を待つ。カード利用者が、入力キーボード等１９から、搭載されているアプリケーションの有効化を指示する。すると、この指示を受けたライセンス管理クライアント手段１１は、カード１３に対して、カードリーダーライタ１２を通じて、READコマンドを送信し、シリアル番号を読み出す（図１▲１▼に相当）。そしてこのシリアル番号を、照合キー要求メッセージとしてライセンス管理サーバー手段に送信する（図１▲２▼に相当）。
【００２６】
ライセンス管理クライアント手段１１とライセンス管理サーバー手段２１は、あらかじめ定められたメッセージ交換プロトコルに従って、アプリケーションプログラムのライセンス管理を行うための処理を実行する。すなわち、ライセンス管理サーバー手段２１は、ライセンス管理クライアント手段１１から送り付けられた所定の書式で作成された照合キー要求メッセージを受付け、その中からシリアル番号を取出し図１▲３▼のステップと同じ手順で暗号化して照合キーを作成する。これを、照合キー要求メッセージに対する応答メッセージに含めて要求元へ返送する（図１▲４▼に相当）。
【００２７】
クライアント手段１１は、応答メッセージから目的の照合キーを取出し、これを、カードリーダーライタ１２を通じて、ENABLEコマンドとともにＩＣカード１３に与える（図１▲５▼に相当）。この結果、ＩＣカード１３に搭載されたアプリケーションプログラムは全ての機能が有効となる。
【００２８】
次に、アプリケーションプログラムを無効化する場合について説明する。ライセンス管理クライアント手段１１が起動され、ディスプレイ１８にユーザーインターフェース画面を表示してカード使用者からの入力を待っている状態で、カード利用者が、搭載されているアプリケーションの無効化を指示すると、ライセンス管理クライアント手段１１は、カードリーダーライタ１２を通じて、DISABLEコマンドをＩＣカード１３に与える。すると、アプリケーションプログラムは内部に記録されたシリアル番号と照合キーを含むレスポンスをライセンス管理クライアント手段１１に返す（図１▲５▼に相当）。
【００２９】
ライセンス管理クライアント手段１１は、このレスポンスを含んだ所定の書式の無効化要求メッセージをライセンス管理サーバー手段２１に送付する（図２▲２▼に相当）。ライセンス管理サーバー手段２１は、受付けた無効化要求メッセージからシリアル番号部分と照合キー部分を取出し（図２▲３▼に相当）、照合キーを復号し（図２▲４▼に相当）、この結果と、先に分離したシリアル番号部分を比較する（図２▲５▼に相当）。両者が一致すれば、このシリアル番号のアプリケーションプログラム所有者からの正規の無効化要求メッセージであることが確認されたことになるので、ライセンス管理データベースに当該シリアル番号のソフトウエアプログラムは無効化されたことを登録する。そして正常に無効化処理が完了したことを無効化要求メッセージに対する返答メッセージとして返信する（図２▲６▼に相当）。両者が一致しなかった場合は、その旨を無効化要求メッセージに対する返答メッセージとして返信する（図２▲６▼に相当）。
【００３０】
ライセンス管理システム１によれば、ライセンス管理クライアント手段１１とライセンス管理サーバー手段２１のメッセージ交換により、自動的にアプリケーションプログラムの有効化、無効化の状態がサーバー装置２０により無人管理でき、したがって、ソフトウエアの使用料の徴収処理、実際に使用している利用者へのサービス情報の供給などを誤りなく行うことが可能となる。
【００３１】
次に、本発明に係る実施形態の変形例として、今説明した基本管理方法を改良した管理方法（以下「改良管理方法」と記す）とこの改良管理方法を用いて構成したアプリケーションプログラムのライセンス管理システム２を説明する。
【００３２】
改良管理方法では、アプリケーションプログラムを有効化する時に用いる照合データの作成・検証、無効化する時のレスポンスデータの作成・検証に公開鍵暗号方式を用いて、安全性を高めているところに特徴がある。尚、改良管理方法では「照合キー」の代わりに「照合データ」の語を用いる。したがって、改良管理方法が管理対象とするアプリケーションプログラム（以下「改良方法対応プログラム」と記す）は、内部にシリアル番号を記録しているだけでなく、そのシリアル番号に対応した秘密鍵データをも保持している。また、改良方法対象プログラムは、入力されたデータを自己の秘密鍵で復号したり、自己のシリアル番号を自己の秘密鍵で暗号化して出力する機能を持っている。また、発行者側では、配布したアプリケーションプログラムの個々のシリアル番号に対応した複数の公開鍵データを保持しているものとする。図５に改良管理方法によるアプリケーションプログラムを有効化する際の手順を、図６に改良管理方法によるアプリケーションプログラムを無効化する際の手順を示す。
【００３３】
図５と図１を対比させながら、改良管理方法により改良方法対応プログラムの一つであるプログラムＢを有効化する際の手順を説明する。まず、利用者は、プログラムＢを使用可能にしたいＩＣカードへREADコマンドを送信し、シリアル番号を読み出す（図５▲１▼）。つぎに、読み出したシリアル番号のリストをカードの枚数分だけ作成し、発行者へ送付する（図５▲２▼）。ここまでは、図１の▲１▼▲２▼と変わらない。発行者側では、図４に示すように、シリアル番号に応じて用意された公開鍵によって各シリアル番号を暗号化し、プログラムＢを利用可能にするための照合データを生成する（図５▲３▼）。発行者側で生成した照合データのリストを利用者へ送付する（図５▲４▼）。照合データを受けた利用者は、プログラムＢに対してENABLEコマンドを発行するとともに照合データを送信し、プログラムＢを利用可能にする（図５▲５▼）。プログラムＢは、送り付けられた照合データを自己の秘密鍵データで復号して、一致する時は、全ての機能を提供可能な状態にする。この手順において、▲３▼と▲５▼のステップが公開鍵暗号方式を用いた手順となっており図１に示した方法と相違している。
【００３４】
次に、図６と図２を対比させながらプログラムＢを無効化する際の手順について、説明する。まず、カード使用者は、アプリケーションを無効化したいカードに対してDISABLEコマンドを発行し、レスポンスデータを得る（図６▲１▼）。この時、プログラムＢは、自身の全ての機能を無効化している。図２におけるレスポンスデータにはそのアプリケーションプログラム固有のシリアル番号と、照合キーを含んでいるが、改良管理方法においては、シリアル番号とシリアル番号を自己の秘密鍵で暗号化したものをレスポンスデータとする。次に、複数のカードに対してこうして作られたレスポンスデータを集め、レスポンスデータのリストを作成し、発行者へ送付する（図６▲２▼）。発行者側では、レスポンスデータからシリアル番号部分と暗号化部分を分離し（図６▲３▼）、暗号化部分については、対応する公開鍵データにより復号する（図６▲４▼）。この復号結果と、先のシリアル番号部分を比較する（図６▲５▼）。両者が一致していれば正しく無効化されていることが発行者側で確認できたことになる。カード発行者は、正しく無効化されたこのシリアル番号をライセンス管理記録データベースに記録するとともに、無効化処理が正常に終了したことを利用者へ通知する（図６▲６▼）。両者が一致しなかった場合は、その旨をカード利用者に通知する（図６▲６▼）。このように、改良管理方法では▲２▼▲６▼以外の手順は、公開鍵暗号方式を採用することにより、基本管理方法と相違がある。
【００３５】
ライセンス管理システム１に関して、ライセンス管理サーバー手段２１を、先に説明した図６のステップ▲３▼、▲４▼および▲５▼を実行するように改良すれば、改良方法対応プログラムに対して、改良管理方法を無人で行うライセンス管理システム２を実現できる。公開鍵暗号方式としてはＲＳＡ暗号方式などのいずれかの既存技術を利用すればよい。ライセンス管理クライアント手段１１は、照合キーの代わりに照合データを扱うのであるが、これらは名目上異なるだけなので実質的な改良は不要である。
【００３６】
ライセンス管理システム２はライセンス管理システム１の特長を全て備えているだけでなく、公開鍵暗号方式を採用することにより不正使用に対する安全性が強化されている。ライセンス管理システム２では、アプリケーション無効化時（図６▲１▼）に生成されるレスポンスデータを偽造することはほとんど不可能だからである。レスポンスデータは、改良方法対応プログラムの内部でそれぞれの改良方法対応プログラムのシリアル番号に応じて付与された秘密鍵を用いて生成される。したがって、実際にはアプリケーションプログラムを無効化していないにもかかわらず、レスポンスデータを偽造して、ライセンス管理サーバー手段２１に送り付けることにより、以後のライセンス料を支払わずにアプリケーションプログラムの使用を続けるという不正を行うことは実質的に不可能である。
【００３７】
尚、ライセンス管理システム１、ライセンス管理システム２ともに、管理対象とするアプリケーションプログラムにDISABLEコマンドを実装しないことにより、プログラムを有効化する時の管理のみ行うシステムとして利用することも可能である。その場合でも、有効化したプログラムのシリアル番号を自動的に管理するシステムとして有効に稼動する。
【００３８】
これまで説明したライセンス管理システム１およびライセンス管理システム２では、無効化コマンドを受付けたアプリケーションプログラムは、「自らの全ての機能を提供不能とする」こととなっているため、無効化後、外部から再び活性化コマンドを送っても二度と使用可能状態に戻ることがない。ライセンス管理システム１およびライセンス管理システム２は、そのような「一度きりしか使えない」アプリケーションプログラムを対象にした管理方法を提供するシステムであった。アプリケーションプログラムとしては、これとは異なり、無効化コマンドを受けた場合は、「初期状態に戻る」という仕様の物も考えることができる。このような仕様のアプリケーションプログラムを、以下「再使用可能型」プログラムと呼ぶことにする。一度無効化しても、それは初期状態に戻るだけであるので、再び活性化コマンドを投げかければ何度でも再使用することができるからである。
【００３９】
ライセンス管理システム１およびライセンス管理システム２では、カード発行者は、「再使用可能型」プログラムに関して、当該プログラムを有効化するたびにもれなくライセンス管理を行うことができない可能性がある。不正な利用者が、前回活性化した時の照合データを保存しておいて。それを用いれば、カード発行者に通知することなく当該プログラムを有効化できるからである。
【００４０】
図７および図８は、「再使用可能型」プログラムに関して、当該プログラムを有効化するたびにもれなくライセンス管理を行うライセンス管理システム３の概要説明図である。ライセンス管理システム３のポイントは、前回カード発行者から受けた照合データが次回の有効化の際には有効に働かないようにすることである。そこで、図７に示すように、有効化する際、カード発行者に送るデータにはシリアル番号の他にシリアル番号と独立した制御変数を連結して送る（図７▲２▼）。制御変数は、適当な桁数の整数でよく、ＩＣカードの不揮発メモリ領域に記録され初期値は零とする。カード発行者は、シリアル番号にこの制御変数を連結したデータに対して、公開鍵により暗号化して照合データを作成し（図７▲３▼）、アプリケーションプログラムは、この照合データを秘密鍵で復号して、復号した値が、内部で記憶されているシリアル番号と制御変数の値とそれぞれ一致しているかどうかを確認する（図７▲５▼）。確認できた場合に限りプログラムの全ての機能を有効にする。
【００４１】
一方、無効化時には、図８に示すように、レスポンスデータを出力する際に、アプリケーション内部で、ＩＣカードの不揮発メモリ領域に記録されている制御変数を適当な方法で変更する（図８▲１▼）。この変更は、例えばアプリケーション内部でまたはＩＣカード内部の他のプログラムを用いて乱数を発生させその結果を新しい制御変数の値としてもよい。その際乱数発生アルゴリズムとしては、既存の擬似乱数発生アルゴリズムを用いればよい。あるいは単純に制御変数に１を加えて更新してもよい。このように無効化が行われるたびに、ＩＣカード内部の状態を変化させておくことにより、次回のアプリケーション有効化の際は、カード発行者のもとで新しく作成された照合データでなければ有効化ができなくなるので、カード発行者は「再使用可能型」プログラムについても、有効化されるたびにきちんとライセンス管理を行うことが可能となる。
【００４２】
【発明の効果】
以上詳しく説明したように、本発明のソフトウエアプログラムを用いることにより上記ライセンス管理方法を利用すること、およびこの方法をシステム化した上記ライセンス管理システムを実現することが可能となり、一旦配布したＩＣカードを回収することもなく、ＩＣカードに搭載されたアプリケーションプログラムのライセンス管理を誤りなく正確に行うことができ、またそのことを通じて対象ソフトウエア使用者にはライセンスを遵守させることが可能となるという顕著な効果を奏する。
【図面の簡単な説明】
【図１】  本発明の実施形態に係るアプリケーションプログラムを用いたライセンス管理方法の概要説明図である。
【図２】  本発明の実施形態に係るアプリケーションプログラムを用いたライセンス管理方法の概要説明図である。
【図３】  本発明の実施形態に係るアプリケーションプログラムを用いたライセンス管理システムの全体構成図である。
【図４】本発明の実施形態に係るアプリケーションプログラムを用いたライセンス管理方法の改良管理方法の概要説明図である。
【図５】  本発明の実施形態に係るアプリケーションプログラムを用いたライセンス管理方法の改良管理方法の概要説明図である。
【図６】  本発明の実施形態に係るアプリケーションプログラムを用いたライセンス管理方法の改良管理方法の概要説明図である。
【図７】  本発明の実施形態に係る再使用可能型プログラムに対応したライセンス管理方法の概要説明図である。
【図８】  本発明の実施形態に係る再使用可能型プログラムに対応したライセンス管理方法の概要説明図である。
【符号の説明】
９      ネットワーク
１０    クライアントコンピュータ
１１    ライセンス管理クライアント手段
１２    カードリーダライタ装置
１３    ＩＣカード
１５    管理対象アプリケーションプログラム
１８    ディスプレイ
１９    キーボード等
２０    サーバーコンピュータ
２１    ライセンス管理サーバー手段
２２    ライセンス管理データベース
【図１】
0004319804.tif 000002
【図２】
0004319804.tif 000003
【図３】
0004319804.tif 000004
【図４】
0004319804.tif 000005
【図５】
0004319804.tif 000006
【図６】
0004319804.tif 000007
【図７】
0004319804.tif 000008
【図８】
0004319804.tif 000009