(57)【特許請求の範囲】
【請求項１】
パッケージソフトウェアを生成するソフトウェアメーカーＰＣと、このソフトウェアメーカーＰＣで生成されたパッケージソフトウェアをインストールして利用するユーザーＰＣとを備えたソフトウェア管理システムにおいて、
前記ソフトウェアメーカーＰＣでライセンスキー番号が書き込まれ、前記ユーザーＰＣに装着されたときにこのライセンスキー番号が照合されるライセンスキーと、
前記ライセンスキーを前記ソフトウェアメーカーＰＣに装着して、前記ライセンスキーにライセンスキー番号を書き込むライセンス書き込み手段と、
前記ソフトウェアメーカーＰＣにて、秘密鍵を利用して、前記パッケージソフトウェアのバージョン、オプション、データ量、使用制限のうち少なくとも一つの情報に基づくライセンス情報による電子署名を作成して生成されたライセンスファイルと、
前記パッケージソフトウェアに埋め込んだ公開鍵に対応する秘密鍵と、
を備え、
前記ユーザーＰＣに前記パッケージソフトウェアをインストールして、前記パッケージソフトウェアの特定箇所に組み込まれた前記ライセンスファイルを読み込み、該読み込んだライセンスファイルからライセンス情報の電子署名を読み出し、該読み出した電子署名をインストールされている前記パッケージソフトウェアに埋め込まれた公開鍵で検証するようにしたこと
を特徴とするソフトウェア管理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パッケージソフトウェアのソフトウェア管理システムに関し、特に、多種類のライセンス条件に対して詳細な設定が可能で、かつライセンス情報の改竄を発見できるソフトウェア管理システムに関する。
【背景技術】
【０００２】
一般に、パッケージソフトウェアはソフトウェアメーカーで製造され、ユーザーに販売される。このとき、権限が無い者がパッケージソフトウェアを不正に入手しても当該ソフトウェアの利用をできなくするために、パッケージソフトウェアと共にライセンスキーが添付される場合がある。
【０００３】
また、ソフトウェアのバージョンアップやオプションの追加購入をした場合には、このライセンスキーの情報を追加・更新する必要がある。このようなソフトウェアの不正利用等を防止し得る先行技術が記載された文献としては次のようなものがある。
【０００４】
【特許文献１】特開２００４―１３７４３号公報
【０００５】
以下、図５を参照して従来のソフトウェア管理システムを説明する。ソフトウェアメーカーＰＣ１０には、図示しないＣＰＵ、記憶部等が設けられており、この記憶部にはライセンス書き込みソフトウェア１３がインストールされている。ここで、ライセンス書き込みソフトウェア１３は、ライセンスキー１２にライセンス情報１１を書き込むソフトウェアであり、ソフトウェアメーカーのみが所持する。また、ライセンスキー１２は可搬型の記憶媒体であり、例えばパスワード等で保護され，ユーザーが自由に読み書きできない構造となっている。パッケージソフトウェア１４は、例えばＣＤロムなどの媒体に記憶され、ユーザーに販売される。
【０００６】
つづいて、ユーザーがパッケージソフトウェア１４を利用するまでに必要とされる手続について説明する。ソフトウェアメーカーは、ソフトウェアメーカーＰＣ１０を利用して、ユーザーが購入したソフトウェアとそのオプション構成に対応したライセンス情報を作成する。例えば、メインの「日−英翻訳ソフト」に電気・機械関連の「技術用語辞書」をオプションとして組み合わせて販売する様な場合である。
【０００７】
次に、ソフトウェアメーカーは、ソフトウェアメーカーＰＣ１０を利用して、ユーザーに販売するパッケージソフトウェア１４がこの様な組み合わせであることを意味するライセンス情報１１を、ライセンス書き込みソフトウェア１３でライセンスキー１２に書き込む。そして、このパッケージソフトウェア１４とライセンスキー１２をユーザーに出荷する。
【０００８】
これらを入手したユーザーは、パッケージソフトウェア１４をユーザーＰＣ２０にインストールする。また、ユーザーは、ユーザーＰＣ２０に例えばＵＳＢ（Universal Serial Bus）ポートを利用してライセンスキーを装着する。ユーザーは、ユーザーＰＣ２０にインストールされたパッケージソフトウェア１４を起動する。起動されたパッケージソフトウェア１４は、ライセンスキー１２に記憶されたライセンス情報を読み込み、これに対応した動作をする。
【０００９】
このように、従来のソフトウェア管理システムは、使用権限がない者による不正な利用を防止するため、ライセンス情報１１を記憶したライセンスキー１２をパッケージソフトウェア２２と共にユーザーに出荷していた。
【発明の開示】
【発明が解決しようとする課題】
【００１０】
しかし、図５で説明した従来の技術には次の問題がある。第１に、ライセンスキー１２の記憶容量の問題がある。ライセンスキー１２は、記憶内容を保護するため特殊なハードウェアに記憶されている。そのため、一般的なＵＳＢメモリ等と異なり、記憶容量が少なく高価である。また、複雑なオプション構成になると容量の問題で記録しきれなくなる。
【００１１】
第２に、ライセンスキー１２の更新の問題がある。ユーザーが、ソフトウェアのバージョンアップやオプションの追加購入をした場合、これと同時にライセンス情報１１も追加又は更新する必要がある。しかし、従来は次のいずれかの方法でライセンス情報１１を更新していたが、いずれも何らかの問題があった。
【００１２】
まず、新たなライセンスキー１２にライセンス情報１１を記憶して出荷する方法がある。しかし、上述のようにライセンスキー１２は高価なので、コスト上の問題がある。また、新たなライセンスキー１２を出荷すると従来から使用していたライセンスキーと併せて計２つのライセンス情報１１が存在することになるため、パッケージソフトウェア１４を別のユーザーＰＣ２０にインストールすれば、バージョンこそ新旧で異なるものの、同時に２台のユーザーＰＣ２０でパッケージソフトウェア１４を利用できてしまう。
【００１３】
他の方法として、ユーザーに出荷したライセンスキー１２を一度メーカーに返送し、メーカーで新たなオプションに対応したライセンスキー１２を書き込んで再送する方法がある。しかし、ライセンスキー１２の輸送コストが必要となる上に、少なくとも数日間はユーザーがパッケージソフトウェア１４を使用できなくなる。
【００１４】
また、更に別の方法として、新しいライセンス情報１１を書き込んだパッケージソフトウェア１４をＣＤロム等で出荷する方法がある。この場合、高価なライセンスキー１２を必要としないのでコスト上の問題は生じない。しかし、記憶内容を保護し得る特殊なハードウェアを利用しないで、パッケージソフトウェア１４にライセンスキー１２を記憶して出荷するということは、同時に、ライセンス情報１１が改竄され、不正利用の危険性が生ずることを意味する。
【００１５】
本発明は、これらの問題点に鑑みてなされたものであり、多種類のライセンス条件に対して詳細な設定が可能で、かつライセンス情報の改竄を発見できるソフトウェア管理システムを提供することを目的とする。
【課題を解決するための手段】
【００１６】
この様な課題を達成するために請求項１記載の発明は、
パッケージソフトウェアを生成するソフトウェアメーカーＰＣと、このソフトウェアメーカーＰＣで生成されたパッケージソフトウェアをインストールして利用するユーザーＰＣとを備えたソフトウェア管理システムにおいて、
前記ソフトウェアメーカーＰＣでライセンスキー番号が書き込まれ、前記ユーザーＰＣに装着されたときにこのライセンスキー番号が照合されるライセンスキーと、
前記ライセンスキーを前記ソフトウェアメーカーＰＣに装着して、前記ライセンスキーにライセンスキー番号を書き込むライセンス書き込み手段と、
前記ソフトウェアメーカーＰＣにて、秘密鍵を利用して、前記パッケージソフトウェアのバージョン、オプション、データ量、使用制限のうち少なくとも一つの情報に基づくライセンス情報による電子署名を作成して生成されたライセンスファイルと、
前記パッケージソフトウェアに埋め込んだ公開鍵に対応する秘密鍵と、
を備え、
前記ユーザーＰＣに前記パッケージソフトウェアをインストールして、前記パッケージソフトウェアの特定箇所に組み込まれた前記ライセンスファイルを読み込み、該読み込んだライセンスファイルからライセンス情報の電子署名を読み出し、該読み出した電子署名をインストールされている前記パッケージソフトウェアに埋め込まれた公開鍵で検証するようにしたことである。
【００１７】
本発明では、次のような効果がある。公開鍵暗号方式を利用した電子署名を用いたので、ライセンス情報の改竄を防止できる。
【発明を実施するための最良の形態】
【００１８】
以下、本発明のソフトウェア管理システムを説明する。まず、本発明によるライセンス情報の改竄防止の仕組みについて概要を説明する。本発明は、公開鍵暗号方式を利用したディジタル署名を利用する。そのため、最初に使用する署名方式（例えばRSA（Rivest, Shamir, Adeleman）署名、DSA（Digital Signature Algorithm）署名等）を決定し、公開鍵と秘密鍵の組を生成する。そして、生成された秘密鍵は外部に漏洩しないように厳重にソフトウェアメーカーＰＣ１００で管理し、公開鍵２２２は頒布するパッケージソフトウェア２２１のソースコード中に埋め込む。
【００１９】
次に、図１の構成を説明する。ソフトウェアメーカーＰＣ１００には、ＣＰＵ１１０と記憶部１２０が含まれる。ＣＰＵ１１０は、後述するライセンス書き込みソフトウェア（ライセンス書き込み手段）１２１、ライセンスファイル生成ソフトウェア（ライセンスファイル生成手段）１２２を動作させる。
【００２０】
記憶部１２０にはライセンス書き込みソフトウェア１２１、ライセンスファイル生成ソフトウェア１２２がインストールされている他、秘密鍵１２４がインストールされている。ここで、ライセンス書き込みソフトウェア１２１は、ライセンスキー１３０にライセンスキー番号を書き込むものである。
【００２１】
また、ライセンス情報XML１２３は、後にライセンスファイル１２６の一部を構成するものとしてユーザーに出荷されるものであり、対応するライセンスキーの番号、ユーザーに使用を許諾するソフトウェアオプションの情報等のライセンス情報が記憶され、表現能力に優れ、多種類のライセンスに対して細かな制限をかけることができるものである。
【００２２】
次に、ライセンスファイルの生成方法について図２を参照して説明する。図２はライセンスファイルの作成方法のフローチャートである。まず、ソフトウェアメーカーは、ソフトウェアメーカーＰＣ１００を利用して、ユーザーが購入したパッケージソフトウェア２２１とそのオプション構成に対応したライセンス情報をXML形式で作成する。すなわち、ライセンス情報XML１２３を作成する。
【００２３】
ライセンスファイル生成ソフトウェア１２２は、ＣＰＵ１１０の命令に基づいて、ライセンス情報XML１２３を読み込んで、次の様に電子署名１２５を生成し、この電子署名１２５を付けたライセンスファイル１２６を生成する。
【００２４】
具体的な手順としては、ＣＰＵ１１０が、例えばＣＤロムなどの媒体に記憶されたパッケージソフトウェア２２１に埋め込んだ公開鍵２２２に対応する秘密鍵１２４を読み込む（図２のＳＡ１）。つづいて、ＣＰＵ１１０は、ライセンス情報XML１２３を読み込む（ＳＡ２）。そして、ＣＰＵ１１０は、ライセンス情報XML１２３の電子署名１２５を、秘密鍵１２４を使用して生成する（ＳＡ３）。
【００２５】
この電子書名１２５は、ＣＰＵ１１０の命令により、ライセンスファイル１２６に出力される（ＳＡ４）。また、ＣＰＵ１１０は、ライセンス情報XML１２３についてもライセンスファイル１２６に出力する（ＳＡ５）。つまり、ライセンスファイル１２６は、主としてライセンス情報XML１２３の内容が記憶されたものであるが、出荷される際は、改竄防止のために、これに電子署名１２５が付けられる。
【００２６】
つづいて、ライセンスの検証方法について説明する。図３は、ライセンスの検証方法のフローチャートである。ユーザーに出荷されたパッケージソフトウェア２２１は、ユーザーＰＣ２００にインストールされ、起動時や特定の機能実行時に以下の処理を呼び出し、XMLファイルで作成されたライセンス情報を取得する。そして、取得された情報に基づいて起動・機能実行の可否を判断し、適切なライセンスが確認できれば実行する。
【００２７】
まず、ユーザーＰＣ２００のＣＰＵ２１０は、パッケージソフトウェア２１１の特定箇所に組み込まれたライセンスファイル２２３を読み込む（ＳＢ１）。ＣＰＵ２１０は、ライセンスファイル２２３から、電子署名１２５と共に、ライセンス情報XML１２３を読み込む（ＳＢ２、ＳＢ３）。
【００２８】
ＣＰＵ２１０は、ライセンス情報XML１２３の電子署名１２５を、パッケージソフトウェア２２１に埋め込まれた公開鍵２２２で検証する（ＳＢ４）。ＣＰＵ２１０は、検証に成功したら、ライセンス情報を呼び出し元のパッケージソフトウェア２２１に返す（ＳＢ５）。ただし、上述の何れかの処理でライセンスファイル２２３を読めない等のエラーが発生したら、適切なライセンスが無いものと判断する（ＳＢ６）。
【００２９】
このように、公開鍵暗号方式を利用した電子署名を用いているので、ライセンスファイル２２３の改竄を発見でき、利用権限の無い者によるソフトウェアの不正利用を防止できる。つまり、電子署名の検証が成功するためには、ソフトウェアに埋め込まれた公開鍵２２３に対応した秘密鍵１２４で署名する必要がある。また、公開鍵暗号方式の特性上、公開鍵から秘密鍵を推測することは極めて困難である。従って、秘密鍵１２４が漏洩するかパッケージソフトウェア２２１に埋め込まれた公開鍵２２２を改変できない限り、ライセンスファイル２２３の改竄による不正利用は極めて困難である。
【００３０】
また、ライセンス情報の記述にXMLを使用するため、製品体系の変化に容易に対応することができる。すなわち、従来の方式では、ライセンスキーの容量に制限があったため、情報に冗長性を持たせることができず、このためオプションの種類が増えたり製品体系が変わったりしたときに、ライセンスキー内のフォーマットを大きく変更する必要があった。これに対し、本発明ではXMLを使用するため、既存（つまり製品体系の変化が生ずる前）の記述方法を大きく変えることなく、新しいオプションを追加できる。
【００３１】
さらに、ライセンス情報の記述にXMLを使用するため、表現能力が格段に向上し、多種類のライセンスに対して細かな制限をかけることができる。従って、例えばオプション毎のバージョン制限、使用期限の制限、データ量等の数量の制限ができる。
【００３２】
また、従来と同様に、記憶内容を保護し得る特殊なハードウェアからなるライセンスキー２３０を使用しているので、不正コピーを防止できる。すなわち、ライセンスファイル２２３とパッケージソフトウェア２２１をコピーしても、対応するライセンスキー２３０が無ければソフトウェアは動作しない。また、ライセンスキー２３０は専用ハードウェアのため、偽造は困難である。従って、ライセンスキー２３０の偽造、またはソフトウェアの不正改変が行われなければ、ライセンスファイル２２３のコピーによる不正利用ができない。
【００３３】
また、従来と同様に、ライセンスの更新が容易である。ライセンスの追加購入・バージョンアップの際は、ライセンスファイル２２３を任意の方法（電子メール、CD-Rの郵送等）でユーザーに送付し、ユーザーＰＣ２００の所定の場所にコピーするだけで良い。
【００３４】
次に、本発明の応用例を説明する。Microsoft Windows（登録商標）等のOSに搭載されているプログラムの署名機能を使用し、ソフトウェアにも電子署名を用いることにより、プログラム中の公開鍵を改変されることによる不正利用のリスクは軽減できる。また、バージョンアップの都度、秘密鍵・公開鍵の組を変更することにより、秘密鍵の推測による不正利用のリスクは軽減できる。
【００３５】
つづいて、図４を参照して本発明の応用例を説明する。ソフトウェアメーカーは、ライセンス管理用サーバー３００を公開し、更新ライセンスの配布を自動化する。すなわち、ユーザーＰＣ４００のライセンス登録ツール４１０は、図示しないＣＰＵの命令に基づいて、ライセンスキー４３０から番号を読み込み、ライセンス管理サーバー３００に送信する。
【００３６】
ライセンス管理サーバー３００は、図示しないＣＰＵの命令に基づいて、対応するライセンス情報３１０からライセンスファイル３４０を作成し、ネットワークを介してユーザーＰＣ４１０のライセンス登録ツールに返信する。ライセンス登録ツール４１０は、所定の場所にライセンスファイル３４０を保存する。
【００３７】
このように、ネットワークを介してライセンスファイル３４０を送信することにより、CD-Rの郵送等が不要となる。
【図面の簡単な説明】
【００３８】
【図１】本発明のソフトウェア管理システムの構成図である。
【図２】ライセンスファイルの作成方法のフローチャートである。
【図３】ライセンスの検証方法のフローチャートである。
【図４】本発明の応用例の構成図である。
【図５】従来のソフトウェア管理システムの構成図である。
【符号の説明】
【００３９】
１００    ソフトウェアメーカーＰＣ
１１０    ＣＰＵ
１２０    記憶部
１２１    ライセンス書き込みソフトウェア
１２２    ライセンスファイル生成ソフトウェア
１２３    ライセンス情報ＸＭＬ
１２４    秘密鍵
１２５    電子署名
１２６    ライセンスファイル
１３０    ライセンスキー
２００    ユーザーＰＣ
２１０    ＣＰＵ
２２０    記憶部
２２１    パッケージソフトウェア
２２２    公開鍵
２２３    ライセンスファイル
２３０    ライセンスキー
３００    ライセンス管理サーバー
３１０    ライセンス情報
３２０    ライセンス管理サーバーソフトウェア
３３０    ライセンスファイル生成ソフトウェア
３４０    ライセンスファイル
４００    ユーザーＰＣ
４１０    ライセンス登録ツール
４２０    ライセンスファイル
４３０    ライセンスキー
【図１】
0005152640.tif 000002
【図２】
0005152640.tif 000003
【図３】
0005152640.tif 000004
【図４】
0005152640.tif 000005
【図５】
0005152640.tif 000006