(57)【要約】【課題】管理者が提供するソフトウェア部品単独でその不正利用を防止することができるソフトウェア部品を提供する。【解決手段】本発明に係るソフトウェア部品は、所定の機能を実行するソフトウェア部品において、ソフトウェア部品が実行されるときに、ソフトウェア部品の利用が不正な利用であるか否かを検査し、不正な利用の場合にはソフトウェア部品の利用を制限する不正検査モジュールを備えたことを特徴とする。【選択図】  図４
2008146479.tif 000002
【特許請求の範囲】
【請求項１】
所定の機能を実行するソフトウェア部品において、
前記ソフトウェア部品が実行されるときに、前記ソフトウェア部品の利用が不正な利用であるか否かを検査し、不正な利用の場合には前記ソフトウェア部品の利用を制限する不正検査モジュールを備えたことを特徴とするソフトウェア部品。
【請求項２】
前記不正検査モジュールは、
前記ソフトウェア部品の利用条件が予め規定された不正判定データと、
前記ソフトウェア部品が実際に利用されている利用状況に関するデータを取得し、取得した利用状況が前記不正判定データにて規定された利用条件に適合するか否かを判断し、適合しない場合は、前記ソフトウェア部品の利用が不正な利用であると判定する判定モジュールと、
を備えたことを特徴とする請求項１に記載のソフトウェア部品。
【請求項３】
前記不正判定データに規定された利用条件は、前記ソフトウェア部品のインストールが許可された機器の機器識別情報を含み、
前記判定モジュールは、前記ソフトウェア部品が実際にインストールされた機器の機器識別情報を、オペレーティングシステムを介して取得する、
ことを特徴とする請求項２に記載のソフトウェア部品。
【請求項４】
前記不正判定データに規定された利用条件は、前記ソフトウェア部品の利用が許可された期間に関する情報を含み、
前記判定モジュールは、前記ソフトウェア部品が実際に利用される日時情報を、オペレーティングシステムを介して取得する、
ことを特徴とする請求項２に記載のソフトウェア部品。
【請求項５】
前記不正検査モジュールは、前記ソフトウェア部品の利用が不正な利用である場合には、前記ソフトウェア部品がインストールされた機器に、
前記ソフトウェア部品の利用が不正な利用である旨を表示させる手順、
前記ソフトウェア部品の不正な利用の内容を記録させる手順、
前記ソフトウェア部品の実行を停止させる手順、および
前記ソフトウェア部品が組み込まれているアプリケーションソフトウェアの動作を停止させる手順、
のうち少なくとも１つの手順を実行させることにより、前記ソフトウェア部品の利用を制限する、
ことを特徴とする請求項１に記載のソフトウェア部品。
【請求項６】
所定の機能を実行するソフトウェア部品の管理方法において、
前記ソフトウェア部品は、
前記ソフトウェア部品が実行されるときに、前記ソフトウェア部品の利用が不正な利用であるか否かを検査するステップと、
不正な利用の場合には前記ソフトウェア部品の利用を制限するステップと、
を実行することを特徴とするソフトウェア部品管理方法。
【請求項７】
前記ソフトウェア部品はその利用条件が予め規定された不正判定データを具備し、
前記検査するステップでは、
前記ソフトウェア部品が実際に利用されている利用状況に関するデータを取得するステップと、
取得した利用状況が前記不正判定データにて規定された利用条件に適合するか否かを判断するステップと、
適合しない場合は、前記ソフトウェア部品の利用が不正な利用であると判定するステップと、
を実行することを特徴とする請求項６に記載のソフトウェア部品管理方法。
【請求項８】
前記不正判定データに規定された利用条件は、前記ソフトウェア部品のインストールが許可された機器の機器識別情報を含み、
前記取得するステップでは、前記ソフトウェア部品が実際にインストールされた機器の機器識別情報を、前記機器のオペレーティングシステムを介して取得する、
ことを特徴とする請求項７に記載のソフトウェア部品管理方法。
【請求項９】
前記不正判定データに規定された利用条件は、前記ソフトウェア部品の利用が許可された期間に関する情報を含み、
前記取得するステップでは、前記ソフトウェア部品が実際に利用される日時情報を、前記機器のオペレーティングシステムを介して取得する、
ことを特徴とする請求項７に記載のソフトウェア部品管理方法。
【請求項１０】
前記制限するステップでは、前記ソフトウェア部品の利用が不正な利用である場合には、
前記ソフトウェア部品の利用が不正な利用である旨を表示させる手順、
前記ソフトウェア部品の不正な利用の内容を記録させる手順、
前記ソフトウェア部品の実行を停止させる手順、および
前記ソフトウェア部品が組み込まれているアプリケーションソフトウェアの動作を停止させる手順、
のうち少なくとも１つの手順を実行することにより、前記ソフトウェア部品の利用を制限する、
ことを特徴とする請求項６に記載のソフトウェア部品管理方法。
【請求項１１】
所定の機能を実行するソフトウェア部品と、
前記ソフトウェア部品がインストールされる部品利用端末と、
前記部品利用端末と電気通信回線を介して接続される部品管理サーバと、
を具備し、
前記ソフトウェア部品は、
前記ソフトウェア部品が実行されるときに、前記ソフトウェア部品の利用が不正な利用であるか否かを検査し、不正な利用の場合には前記ソフトウェア部品の利用を制限する不正検査モジュールを備えたことを特徴とするソフトウェア部品管理システム。
【請求項１２】
前記不正検査モジュールは、
前記ソフトウェア部品の利用条件が予め規定された不正判定データと、
前記ソフトウェア部品が実際に利用されている利用状況に関するデータを取得し、取得した利用状況が前記不正判定データにて規定された利用条件に適合するか否かを判断し、適合しない場合は、前記ソフトウェア部品の利用が不正な利用であると判定する判定モジュールと、
を備えたことを特徴とする請求項１１に記載のソフトウェア部品管理システム。
【請求項１３】
前記不正判定データに規定された利用条件は、前記ソフトウェア部品のインストールが許可された部品利用端末の機器識別情報を含み、
前記判定モジュールは、前記ソフトウェア部品が実際にインストールされた前記部品利用端末の機器識別情報を、オペレーティングシステムを介して取得する、
ことを特徴とする請求項１２に記載のソフトウェア部品管理システム。
【請求項１４】
前記不正判定データに規定された利用条件は、前記ソフトウェア部品の利用が許可された期間に関する情報を含み、
前記判定モジュールは、前記ソフトウェア部品が実際に利用される日時情報を、オペレーティングシステムを介して取得する、
ことを特徴とする請求項１２に記載のソフトウェア部品管理システム。
【請求項１５】
前記不正検査モジュールは、前記ソフトウェア部品の利用が不正な利用である場合には、前記ソフトウェア部品がインストールされた前記部品利用端末に、
前記ソフトウェア部品の利用が不正な利用である旨を表示させる手順、
前記ソフトウェア部品の不正な利用の内容を記録させる手順、
前記ソフトウェア部品の実行を停止させる手順、および
前記ソフトウェア部品が組み込まれているアプリケーションソフトウェアの動作を停止させる手順、
のうち少なくとも１つの手順を実行させることにより、前記ソフトウェア部品の利用を制限する、
ことを特徴とする請求項１１に記載のソフトウェア部品管理システム。
【請求項１６】
前記部品管理サーバは、
前記不正判定データを更新するための更新用不正判定データを、前記電気通信回線を介して前記部品利用端末に送信し、
前記部品利用端末の不正検査モジュールは、
前記不正判定データを、前記部品管理サーバから送信された前記更新用不正判定データ
によって更新する、
ことを特徴とする請求項１２に記載のソフトウェア部品管理システム。
【請求項１７】
前記部品管理サーバは、
前記更新用不正判定データのハッシュ値を算出し、算出されたハッシュ値を秘密鍵で暗号化した後、暗号化されたハッシュ値を前記更新用不正判定データと共に前記部品利用端末に送信し、
前記部品利用端末の不正検査モジュールは、
送信された前記更新用不正判定データからハッシュ値を求め、
求めた前記ハッシュ値と、前記部品管理サーバから送信された暗号化されたハッシュ値を前記秘密鍵に対応する公開鍵で復号化することで得られるハッシュ値と、が一致するか否かを判定し、
両ハッシュ値が一致した場合に、前記不正判定データを更新する、
ことを特徴とする請求項１６に記載のソフトウェア部品管理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェア部品、ソフトウェア部品管理方法、及びソフトウェア管理方システムに係り、特に、各種のアプリケーションソフトウェアに「部品」として利用されるソフトウェア部品、ソフトウェア部品管理方法、及びソフトウェア管理システムに関する。
【背景技術】
【０００２】
今日、ソフトウェアの開発形態として、適宜の単位で分割されたソフトウェアを部品として取り扱い（以下、この分割されたソフトウェアをソフトウェア部品という）、開発済みのソフトウェア部品を複数組み合わせることによって、新たなソフトウェアを効率良く開発する形態が多く用いられている。
【０００３】
一方、ソフトウェアの大規模化に伴い、ソフトウェアの開発形態が垂直統合型から水平分業型に移行し、一つのソフトウェアを分担して複数の企業が開発することが多くなってきている。また、開発効率の改善のため、ソフトウェア部品の再利用が一般的に行われるようになった。このような状況の下、自社が開発したソフトウェア部品を他社に利用させる場合も多く、このような場合、ソフトウェア部品の「管理者」は、ソフトウェア部品の「利用者」の不正利用を防ぐため、通常は利用に関して一定の制限をつける必要がある。
【０００４】
ここで、ソフトウェア部品の「管理者」とは、ソフトウェア部品の払い出し、利用状況の把握、バージョン管理、不具合や拡張についての情報収集とその通知、適用支援といった管理作業を行う作業者のことをいう。
【０００５】
他方、ソフトウェア部品の「利用者」とは、ソフトウェア部品を利用してアプリケーションソフトウェアを開発する作業者のことをいう。アプリケーションソフトウェアを利用する立場のエンドユーザも、アプリケーションソフトウェアを利用することで間接的にソフトウェア部品を利用することになるが、ここではエンドユーザはソフトウェア部品の「利用者」には含まれないものとする。
【０００６】
また、ソフトウェア部品の不正利用とは、例えば、想定外の顧客向けシステムへの転用、想定外の第３者への流出、契約期間すなわち予め定められた評価のための試用期間や運用期間を超えてのソフトウェア部品利用等を指す。
【０００７】
ソフトウェア部品の利用に当たっては、「管理者」と「利用者」との間で契約を取り交わすことが一般的に行われる。この契約の中には、ソフトウェア部品の不正利用を禁止す内容が通常盛り込まれている。
【０００８】
しかしながら、「利用者」が不注意で不正利用をしてしまう場合、例えば、契約期間をうっかり忘れて継続的にソフトウェア部品を利用し続けてしまう場合等、があり、このような人間系による誤りを完全に排除することは不可能である。また、悪意のある利用者が意図的にソフトウェア部品の不正利用を行った場合には、このような不正利用を直ちに停止させることは困難である。
【０００９】
ソフトウェアの不正利用を防止する技術としては、例えば、特許文献１や特許文献２等に開示がある。
【００１０】
特許文献１が開示する技術は、ネットワークに接続されたユーザ端末に対して、利用権承認サーバからネットワークを介して定期的にソフトウェアの利用権を付与または更新することでソフトウェアの不正利用を防止するというものである。ソフトウェアの利用を許可するための認証ファイルを付与又は定期的に更新することにより、利用権を付与または更新を行っている。
【００１１】
また、特許文献２が開示する技術は、公開鍵データ、及び公開鍵に対応する秘密鍵で暗号化された機器識別データを用いてソフトウェアの実行の禁止或いは許可を制御する技術である。ソフトウェアの提供者は、ソフトウェアの提供時にその利用を許可する機器の機器識別データを秘密鍵で暗号化したデータを公開鍵と共に適宜の記録媒体の形態で利用者に提供する。利用者がソフトウェアを実行する際には、提供された公開鍵を用いて提供された機器識別データを復号し、復号した機器識別データとソフトウェアを実行させようとする機器固有の識別データとが照合され、これらの機器識別データが不一致の場合にはそのソフトウェアの実行を禁止するというものである。
【特許文献１】特開２００４−２１３０５７号公報
【特許文献２】特開２０００−１０５６９６号公報
【発明の開示】
【発明が解決しようとする課題】
【００１２】
特許文献１が開示する技術では、利用権の付与・更新はネットワークを介して行われる。このため、ソフトウェアを利用する機器がネットワークに接続されていないとその機器での不正利用を防止できない。また、利用権の付与は、利用するソフトウェアとは別に認証ファイルの形態で提供されるため、ソフトウェアと認証ファイルとを対応付ける手段が別途必要となり非効率である。また、ソフトウェアと認証ファイルとが別々に提供されるため、整合のとれていないソフトウェアと認証ファイルとが誤って提供される可能性もあり、取り扱い上も不便である。
【００１３】
また、特許文献２が開示する技術においても、暗号化された機器識別データと公開鍵とが記録された記録媒体と、利用しようとするソフトウェアとは別媒体で提供されるため、対応付けに人間系の作業が介在し、両者の対応付けに誤りが混入する可能性がある。
【００１４】
また、特許文献１及び特許文献２が開示する技術は、不正利用を禁止するソフトウェアの単位はアプリケーションソフトウェアの単位である。このため、アプリケーションソフトウェアに組み込まれた下位レベルの単位、即ち、ソフトウェア部品のレベルまではその不正利用を排除できない。
【００１５】
本発明は、上記事情に鑑みてなされたものであり、管理者が提供するソフトウェア部品単独でその不正利用を防止することができるソフトウェア部品、ソフトウェア部品管理システム、及びソフトウェア管理方法を提供することを目的とする。
【課題を解決するための手段】
【００１６】
上記課題を解決するため、本発明に係るソフトウェア部品は、請求項１に記載したように、所定の機能を実行するソフトウェア部品において、前記ソフトウェア部品が実行されるときに、前記ソフトウェア部品の利用が不正な利用であるか否かを検査し、不正な利用の場合には前記ソフトウェア部品の利用を制限する不正検査モジュールを備えたことを特徴とする。
【００１７】
また、上記課題を解決するため、本発明に係るソフトウェア部品管理方法は、請求項６に記載したように、所定の機能を実行するソフトウェアの部品管理方法において、前記ソフトウェア部品は、前記ソフトウェア部品が実行されるときに、前記ソフトウェア部品の利用が不正な利用であるか否かを検査するステップと、不正な利用の場合には前記ソフトウェア部品の利用を制限するステップと、を実行することを特徴とする。
【００１８】
また、上記課題を解決するため、本発明に係るソフトウェア部品管理システムは、請求項１１に記載したように、所定の機能を実行するソフトウェア部品と、前記ソフトウェア部品がインストールされる部品利用端末と、前記部品利用端末と電気通信回線を介して接続される部品管理サーバと、を具備し、前記ソフトウェア部品は、前記ソフトウェア部品が実行されるときに、前記ソフトウェア部品の利用が不正な利用であるか否かを検査し、不正な利用の場合には前記ソフトウェア部品の利用を制限する不正検査モジュールを備えたことを特徴とする。
【発明の効果】
【００１９】
本発明に係るソフトウェア部品、ソフトウェア部品管理方法、及びソフトウェア管理システムによれば、管理者が提供するソフトウェア部品単独でその不正利用を防止することができる。
【発明を実施するための最良の形態】
【００２０】
本発明に係るソフトウェア部品、ソフトウェア部品管理方法、及びソフトウェア管理システムの実施形態について添付図面を参照して説明する。
【００２１】
図１は、本実施形態に係るソフトウェア部品３０の利用形態の一例を示す図である。
【００２２】
ソフトウェア部品３０は、管理者によって管理されており、ソフトウェア部品３０の利用者は、管理者からソフトウェア部品３０の提供を受け、これを利用する。
【００２３】
ソフトウェア部品３０の提供に際しては、一般に管理者と利用者との間でソフトウェア部品３０の利用に関する契約が行われる。契約内容としては、例えば、ソフトウェア部品３０をインストールして利用する機器（部品利用端末）を特定し、ソフトウェア部品３０の利用期間を定める。この契約の履行を確実に行い、契約違反（ソフトウェア部品３０の不正利用）を防止することが本実施形態の狙いである。
【００２４】
ソフトウェア部品３０の利用の形態としては、種々の形態が考えられるが、以下の説明では、パーソナルコンピュータ等の部品利用端末１が具備するアプリケーションソフトウェア１０に組み込まれて利用される形態を例として説明する。
【００２５】
部品利用端末１には、アプリケーションソフトウェア１０の他、ＯＳ（オペレーティングシステム）２０もインストールされている。
【００２６】
ソフトウェア部品３０は、所定の機能単位で分割されたプログラムであり、一般に汎用性を有するプログラムの機能単位のことをいう。装置における部品のように、ソフトウェア部品３０を組合せることによって、或いはソフトウェア部品３０の組合せにさらに新たなソフトウェアを付加することによって、特定の機能を有する大きなソフトウェア（アプリケーションソフトウェア１０）を構築することができる。
【００２７】
ソフトウェア部品３０は、汎用性を有し部品として利用できる限りにおいては、種類や規模、数を限定するものではない。例えば、所定のデータ構造を有するデータベースへのアクセスプログラムや、フーリエ解析プログラム等の汎用性を有するプログラムはソフトウェア部品３０となりうる。
【００２８】
アプリケーションソフトウェア１０は、ソフトウェア部品３０を呼び出すために記述されたプログラムとして部品利用コード１１を有しており、ソフトウェア部品３０はこの部品利用コード１１を介してアプリケーションソフトウェア１０から適宜呼び出され、実行される。
【００２９】
ソフトウェア部品３０は、内部に不正検査モジュール４０を具備しており、不正検出モジュール４０でソフトウェア部品３０の不正利用が検出された場合には、ソフトウェア部品３０、或いはアプリケーションソフトウェア１０の実行停止も含めた利用制限処理を行う。
【００３０】
不正検査モジュール４０の組み込みは管理者によって行われ、不正検査モジュール４０が予め組み込まれたソフトウェア部品３０が利用者に払いだされる。
【００３１】
利用者が不正検査モジュール４０を改竄しないように、ソフトウェア部品３０はブラックボックス部品として提供する形態が好ましい。ブラックボックス部品の実現方法としては、例えば、ソフトウェア部品３０をバイナリデータ形式とし、これを利用者に払いだす形態とすればよい。
【００３２】
（２）ソフトウェア部品の構成及び動作
図２は、ソフトウェア部品３０の構成例を示す図である。ソフトウェア部品３０は、外部（部品利用コード１１）からの呼び出しを受けるためのモジュール呼出しインタフェース３０１と、モジュール呼出しインタフェース３０１が呼ばれた際に起動されるソフトウェアモジュール３１と、ソフトウェアモジュール３１が起動する際に不正検査モジュール４０を起動させるフックポイント３０２とを１以上備えて構成される。
【００３３】
ソフトウェアモジュール３１は、ソフトウェア部品３０が本来実現すべき機能が記述されているソフトウェアモジュールである。サブルーチン、或いは関数と呼ばれることもあり、Ｊａｖａ（登録商標）やＣ＋＋等のオブジェクト指向言語ではメソッドと呼ばれることが多い。
【００３４】
ソフトウェア部品３０は一般的には複数のソフトウェアモジュール３１から構成されるが、１つのソフトウェアモジュール３１からなるソフトウェア部品３０を排除するものではない。
【００３５】
また、ソフトウェア部品３０が複数のソフトウェアモジュール３１を有する場合、いずれか１つのソフトウェアモジュール３１を選択し、このソフトウェアモジュール３１にモジュール呼出しインタフェース３０１、及びフックポイント３０２を具備させる形態としても良い。この場合、選択するソフトウェアモジュール３１としては、ソフトウェア部品３０の実行中に必ず呼び出されるモジュールが好ましい。必ず呼び出されるモジュールの例としては、ソフトウェア部品３０の初期化や終了時の後処理のためのモジュールがある。例えば、Ｊａｖａ、Ｃ＋＋、Ｃ＃等の言語では、コンストラクタ、デコンストラクタと呼ばれるモジュール（メソッド）がこれらに該当する。
【００３６】
モジュール呼出しインタフェース３０１は、外部の部品利用ソフトウェア２０から呼出しを受ける際に利用されるインタフェースである。Ｊａｖａ、Ｃ＋＋、Ｃ＃等といった言語の“インタフェース”の個々のメソッド定義によって実現されるものである。
【００３７】
フックポイント３０２は、ソフトウェアモジュール３１が起動する際に、一旦ソフトウェアモジュール３１の実行を一時中断し、不正検査モジュール４０を起動させるフック手段の仕組みである。一般にフックとは、入力やメッセージを横取りして独自処理を行うことをいう。本実施形態では、ソフトウェアモジュール３１の処理主導権を不正検査モジュール４０が一旦横取りして奪い、不正検査モジュール４０の処理が終了した時点でソフトウェアモジュール３１の実行を再開する処理形態のものである。
【００３８】
不正検査モジュール４０は、利用状況取得モジュール４０１、判定モジュール４０２、利用制限モジュール４０３、及び不正判定データ４０４を備えている。
【００３９】
上記のように構成されたソフトウェア部品３０の動作（ソフトウェア部品管理方法）について図３および図４を用いて説明する。
【００４０】
図３は、ソフトウェア部品３０の処理の流れを示すフローチャートである。また、図４はソフトウェア部品３０の構成図上に処理の流れを矢印で示した図である。なお、図４の矢印に付した丸で囲んだ数字は、図３のフローチャートにおけるステップ番号に対応している。
【００４１】
ソフトウェア部品３０が実行されるときには、アプリケーションソフトウェア１０が有する部品利用コード１１から呼び出しを受け、ソフトウェア部品３０内のソフトウェアモジュール３１が起動する。具体的には、モジュール呼出しインタフェース３０１を介してソフトウェアモジュール３１が起動される（図３のステップＳＴ１）。
【００４２】
次に、ソフトウェアモジュール３１のフック手段（フックポイント３０２）により、処理が不正検査モジュール４０に移行する。即ち、ソフトウェアモジュール３１の実行が中断され、不正検査モジュール４０が起動する（ステップＳＴ２）
不正検査モジュール４０が起動すると、まず利用状況取得モジュール４０１が、ソフトウェア部品３０の利用状況に関する情報を取得する（ステップＳＴ３）。ここで取得する利用状況とは、不正判定データ４０４として規定されている利用条件に対応するものである。
【００４３】
前述したように、不正判定データ４０４としては、ソフトウェア部品３０の利用が許可された機器（部品利用端末）の機器識別情報、利用が許可された期間等である。これらの情報は不正検査モジュール４０の内部に不正判定データ４０４として記述或いは設定されている。なお、不正判定データ４０４の記述或いは設定は、管理者によって行われるものである。
【００４４】
利用状況取得モジュール４０１は、これらの不正判定データ４０４に対応するデータとして、ソフトウェア部品３０が実際にインストールされている機器（部品利用端末１）の機器識別情報や現在時刻情報をＯＳ２０から取得する。機器識別情報は、例えば、部品利用端末１のＩＰアドレスやＭＡＣアドレス等である。
【００４５】
次に、判定モジュール４０２は、取得した機器識別情報や現在時刻情報が、不正判定データ４０４として規定されている利用条件に適合しているか否かを判定する（ステップＳＴ４）。
【００４６】
取得した機器識別情報が許可されている機器識別情報と一致し、また、取得した現在日時情報が許可されている利用期間内であれば、ソフトウェア部品３０の不正利用は無いと判定し、ソフトウェアモジュール３１の実行を再開する（ステップＳＴ５’）。
【００４７】
一方、取得した機器識別情報が許可されている機器識別情報と一致しない場合や、取得した現在日時情報が許可されている利用期間外の場合には、ソフトウェア部品３０が不正利用されていると判定し、ステップＳＴ５へ進む。
【００４８】
ステップＳＴ５では、利用制限モジュール４０３が、ａ）警告表示、ｂ）不正利用の記録（ログ）、ｃ）ソフトウェアモジュール３１の実行停止、及びｄ）アプリケーションソフトウェア１０の動作停止のうち少なくとも１つの処置を行い、ソフトウェア部品３０の不正利用に対して制限（不正利用の抑止或いは不正利用の排除）を行う。
【００４９】
ここで、警告表示とは、例えば、アプリケーションソフトウェア１０の表示機能を利用して不正利用に対する警告表示を行うことである。この警告表示によって、例えば単なる不注意に起因するような不正利用の停止を促すことができる。
【００５０】
また、不正利用の記録（ログ）とは、不正利用があった旨、その内容、その時刻等をログファイルとして適宜の記憶媒体に記録することである。不正利用の記録を自動的に行うことで、不正利用に対する抑止効果がある。また、警告表示とログとを併用することで、悪意の利用者に対する抑止効果はさらに高まる。
【００５１】
ソフトウェアモジュール３１の実行停止とは、ソフトウェアモジュール３１の実行を再開させず、スキップしてソフトウェアモジュール３１の呼び出し側に処理を戻すことである。アプリケーションソフトウェア１０の動作は継続させる一方、ソフトウェア部品３０が持つ本来の機能を利用させないようにすることができる。この処置によりソフトウェア部品３０の機能を阻害し、ソフトウェア部品３０の不正利用の停止を促すことができる。
【００５２】
アプリケーションソフトウェア１０の動作停止とは、ソフトウェア部品３０を利用しているアプリケーションソフトウェア１０の動作まで停止させることである。例えば、ＯＳのシステムコールやプログラム言語が提供するライブラリの機能を利用したプロセスやスレッドの停止、或いは無限ループといった方法によりアプリケーションソフトウェア１０の動作を停止させることができる。
【００５３】
上記のように、本実施形態に係るソフトウェア部品３０は、ソフトウェア部品３０の不正利用を判定するための情報（不正判定データ４０４）と、不正を検出する手段（利用状況取得モジュール４０４、判定モジュール４０２）と、不正が検出された場合にとる処理の実行手段（利用制限モジュール４０３）とを備えており、人間系の管理では徹底できなかったソフトウェア部品３０の不正利用を抑制し、ソフトウェア部品３０を提供する管理者の利益を守ることができる。
【００５４】
また、本実施形態に係るソフトウェア部品３０は、ソフトウェア部品３０自体に不正利用を判定するためのデータ（不正判定データ４０４）が埋め込まれている。このため、ソフトウェア部品３０のファイルと不正判定データ用のファイルとがそれぞれ別ファイルとして供給される形態に比べると、不正判定データの改竄は困難となる。
【００５５】
また、ソフトウェア部品３０のファイルと不正判定データ用のファイルとが別ファイルで供給される場合には、両者の対応付け手段が必要となるが、本実施形態では不正判定データ４０４がソフトウェア部品３０に組み込まれて利用者に供給されるため、対応付け手段が不要となる。また、人間系による対応付け作業も不要であるため、人的要因による誤りも発生しない。
【００５６】
さらに、本実施形態に係るソフトウェア部品３０では、ソフトウェア部品３０が本来の機能を実行しようとする際に不正検査モジュール４０が常に同時に起動されるため、ソフトウェア部品３０のインストール時にだけ不正検出を行う方法に比べると、確実性の高い不正検出を実現できる。
【００５７】
また、不正検査モジュール４０は、ソフトウェア部品３０が具備するソフトウェアモジュール３１にフックポイント３０２を介して結合されているため、ソフトウェアモジュール３１本来の動作に対して影響を与えることが無い。このため、不正検査モジュール４０が不要となった場合には、ソフトウェアモジュール３１に影響を与えることなく容易に削除できる。
【００５８】
（２）ソフトウェア部品管理システム
上述したように、ソフトウェア部品３０は、不正利用を検出するための不正判定データ４０４が予め組み込まれた状態で利用者に供給される。この不正判定データ４０４は、管理者と利用者との間の利用契約に基づくものであるが、利用契約は変更されうる。
【００５９】
そこで、以下に述べるソフトウェア部品管理システム１００の実施形態では、利用契約が変更された場合であっても、部品利用端末１の外部から電気通信回線を介してソフトウェア部品の内部の不正判定データ４０４を更新することができるように構成している。
【００６０】
図５は、本実施形態に係るソフトウェア部品管理システム１００のシステム構成例を示す図である。
【００６１】
ソフトウェア部品管理システム１００は、部品利用端末１と部品管理サーバ５０とを備えて構成され、部品利用端末１と部品管理サーバ５０とは相互に電気通信回線１０１を介して接続されている。
【００６２】
部品管理サーバ５０は管理者側に配置されるサーバであり、部品利用端末１は利用者側に配置される端末装置である。
【００６３】
部品管理サーバ５０は、ユーザインタフェース部５１、更新処理部５２、通信処理部５３、秘密鍵５４、及び部品情報管理部５５を備えて構成されている。
【００６４】
ユーザインタフェース部５１は、管理者からの指示を入力すると共に各種情報を表示する手段であり、例えば、キーボード、ポインティングデバイス、ディスプレイ装置（何れも図示せず）等から構成されている。
【００６５】
更新処理部５２では、ユーザインタフェース部５１から入力された指示に基づいて、ソフトウェア部品３０の不正判定データ４０４を更新するための更新用不正判定データを作成する。また、作成した更新用不正判定データからハッシュ値（メッセージダイジェストと呼ばれることもある）を作成し、このハッシュ値を暗号化する。
【００６６】
部品情報管理部５５は、ソフトウェア部品３０の管理情報が保存されているデータベースであり、更新用不正判定データを作成するときに利用される。
【００６７】
秘密鍵５４は、管理者側に保管される暗号鍵であり、更新処理部５２では秘密鍵５４を用いて更新用不正判定データのハッシュ値を暗号化する。
【００６８】
通信処理部５３は、更新用不正判定データと暗号化されたハッシュ値とを、電気通信回線１０１を介して、部品利用端末１に送信する。
【００６９】
ソフトウェア部品管理システム１００は、不正判定データ４０４を外部から更新可能とするものであり、このために管理者から利用者に提供されるソフトウェア部品３０の不正検査モジュール４０には、更新用の機能が付加されている。以下、更新機能付きのソフトウェア部品３０、及び不正検査モジュール４０を夫々ソフトウェア部品３０ａ、及び不正検査モジュール４０ａと呼ぶことにする。
【００７０】
図６は、本実施形態に係るソフトウェア部品管理システム１００の構成例を示す図であり、特に図５に対してソフトウェア部品３０ａの内部構成をより詳しく示している。
【００７１】
本実施形態に係るソフトウェア部品３０ａには、前述したソフトウェア部品３０に対してデータ更新インタフェース４０５が付加されている。また、不正検査モジュール４０ａには、前述した不正検査モジュール４０に対して、認証モジュール４０６、及び不正判定データ更新モジュール４０７が付加されている。
【００７２】
データ更新インタフェース４０５は、ソフトウェア部品３０ａの外部、例えば、アプリケーションソフトウェア１０に設けられるネットワークアダプタ２１から呼び出しを受けるときに利用されるインタフェースである。部品管理サーバ５０から送られてくるデータを不正検査モジュール４０ａ内の認証モジュール４０６、及び不正判定データ更新モジュール４０７に引き渡す。
【００７３】
認証モジュール４０６は、部品管理サーバ５０から送られてくるデータに対して、公開鍵４０８を用いた認証を行う機能モジュールである。公開鍵４０８は、部品管理サーバ５０が具備する秘密鍵５４と対になるものである。
【００７４】
不正判定データ更新モジュール４０７は、認証が成功した場合に、更新用不正判定データを用いて不正判定データ４０４を更新する機能モジュールである。
【００７５】
上記のように構成されたソフトウェア部品管理システム１００の動作、特に、不正判定データ４０４の更新方法について図７および図８を用いて説明する。
【００７６】
図７は、不正判定データ４０４の更新方法の一例を示すフローチャートである。また、図８は、ソフトウェア部品管理システム１００の構成図上に、丸で囲んだ数字を追記したものであり、数字は図７のフローチャートにおけるステップ番号に対応している。
【００７７】
まず、ステップＳＴ１にて、ユーザインタフェース部５１を介して、更新すべきソフトウェア部品３０ａが管理者から指定される。
【００７８】
次に、指定されたソフトウェア部品３０ａの不正判定データ４０４（更新前）がユーザインタフェース部５１に表示される（ステップＳＴ２）。表示される不正判定データ４０４は、前述したように利用を許可した機器の機器識別情報や利用を許可した期間等である。
【００７９】
管理者は、適宜不正判定データ４０４を修正して更新用不正判定データを作成した後、部品利用端末１に送信するように指示する（ステップＳＴ３）。
【００８０】
更新処理部５２は、更新用不正判定データのハッシュ値を求め、さらにハッシュ値を、秘密鍵５４を用いて暗号化する（ステップＳＴ４）。
【００８１】
また、更新処理部５２は、部品情報管理部５５からソフトウェア部品３０ａを特定するＩＤ（識別情報）、及びソフトウェア部品３０ａがインストールされている部品利用端末１の通信アドレスを取得した後、通信処理部５３に対して送信を指示する（ステップＳＴ５）。
【００８２】
その後、通信処理部５３は、更新用不正判定データ、ソフトウェア部品３０ａのＩＤ、及び暗号化されたハッシュ値を、通信アドレスを参照して部品利用端末１に送信する（ステップＳＴ６）。以上のステップＳＴ１からステップＳＴ６までの処理は、部品管理サーバ５０で行われる処理である。
【００８３】
送信されたデータは、部品利用端末１のＯＳ２０を介してアプリケーションソフトウェア１０に伝達される。アプリケーションソフトウェア１０に設けられているネットワークアダプタ２１は、ソフトウェア部品３０ａのＩＤを参照し、該当するソフトウェア部品３０ａを特定し、データ更新インタフェース４０５を介して、ソフトウェア部品３０ａの不正検査モジュール４０ａに更新用不正判定データ、及び暗号化されたハッシュ値を引き渡す（ステップＳＴ７）。
【００８４】
不正検査モジュール４０ａの認証モジュール４０６では、更新用不正判定データからハッシュ値を求める一方、暗号化されたハッシュ値を公開鍵４０８を用いて復号化する（ステップＳＴ８）。
【００８５】
その後、２つのハッシュ値が一致するか否かを判定する(ステップＳＴ９)。２つのハッシュ値が一致した場合が認証成功であり、不一致の場合は認証失敗である。
【００８６】
認証成功の場合は、不正判定データ更新モジュール４０７は、部品管理サーバ５０から送信されてきた更新用不正判定データを用いて、以前の不正判定データ４０４を更新し、新たな不正判定データ４０４とする（ステップＳＴ１０）。
【００８７】
一方、認証失敗の場合は、不正判定データ４０４の更新は行わない（ステップＳＴ１１）。
【００８８】
本実施形態に係るソフトウェア部品管理システム１００によれば、契約変更等によって不正判定データ４０４の内容を変更する必要性が発生した場合であっても、電気通信回線１０１を介して、容易に不正判定データ４０４の内容を更新することができる。
【００８９】
また、更新用不正判定データはそのハッシュ値と共に送信され、さらにそのハッシュ値は公開鍵暗号化方式で暗号化されているため、更新用不正判定データの改竄を防止できる。
【００９０】
なお、本実施形態に係るソフトウェア部品管理システム１００においても、ソフトウェア部品３０ａは単独でその不正利用を検出し、不正が検出された場合にはソフトウェア部品３０ａの実行停止やアプリケーションソフトウェア１０の動作停止を含めた利用制限処理が行われる。このため、通常は部品利用端末１をスタンドアローンで動作させ、不正判定データ４０４を更新するときにだけ電気通信回線１０１を介して部品管理サーバ５０に接続する形態でも良い。
【００９１】
以上説明してきたように、本実施形態に係るソフトウェア部品３０、及びソフトウェア部品管理方法によれば、管理者が提供するソフトウェア部品単独でその不正利用を防止することができる。
【００９２】
また、本実施形態に係るソフトウェア部品管理システム１００によれば、電気通信回線１０１を介して、ソフトウェア部品３０ａの内部に記録されている不正判定データ４０４を更新できるため、利用契約に変更が有った場合でもその変更を容易に、かつ迅速に反映することができる。
【００９３】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせても良い。
【図面の簡単な説明】
【００９４】
【図１】本実施形態に係るソフトウェア部品がインストールされる部品利用端末の構成例を示す図。
【図２】本実施形態に係るソフトウェア部品の構成例を示す図。
【図３】本実施形態に係るソフトウェア部品の動作例を示すフローチャート。
【図４】本実施形態に係るソフトウェア部品の処理の流れを構成図中に示す図。
【図５】本実施形態に係るソフトウェア部品管理システムの構成例を示す図。
【図６】本実施形態に係るソフトウェア部品管理システムの構成例を示す図であり、特に、そこで用いられるソフトウェア部品の構成例を詳細に示す図。
【図７】本実施形態に係るソフトウェア部品管理システムの動作例を示すフローチャート。
【図８】本実施形態に係るソフトウェア部品管理システムの処理の流れを構成図中に示す図。
【符号の説明】
【００９５】
１  部品利用端末
１０  アプリケーションソフトウェア
１１  部品利用コード
２０  オペレーションシステム（ＯＳ）
２１  ネットワークアダプタ
３０、３０ａ  ソフトウェア部品
３１  ソフトウェアモジュール
３０１  モジュール呼出しインタフェース
３０２  フックポイント
４０、４０ａ  不正検査モジュール
４０１  利用状況取得モジュール
４０２  判定モジュール
４０３  利用制限モジュール
４０４  不正判定データ
４０５  データ更新インタフェース
４０６  認証モジュール
４０７  不正判定データ更新モジュール
４０８  公開鍵
５０  部品管理サーバ
５１  ユーザインタフェース部
５２  更新処理部
５３  通信処理部
５４  秘密鍵
５５  部品情報管理部
１００  ソフトウェア部品管理システム
【図１】
2008146479.tif 000003
【図２】
2008146479.tif 000004
【図３】
2008146479.tif 000005
【図４】
2008146479.tif 000006
【図５】
2008146479.tif 000007
【図６】
2008146479.tif 000008
【図７】
2008146479.tif 000009
【図８】
2008146479.tif 000010