(57)【要約】      （修正有）【課題】簡便で確実にソフトウェアの実行権限を特定のソフトウェア実行装置に制限する。【解決手段】ソフトウェア実行装置２の固有の情報、着脱可能な電子媒体の固有情報、これらの組み合わせの少なくともいずれかを含むキー情報のハッシュ値を算出する第１のハッシュ値算出手段１３ａと、ハッシュ値を暗号化して電子署名データを生成する暗号化手段１３ｂを備え、ソフトウェア実行装置２にソフトウェアと電子署名データを供給するソフトウェア供給装置１を具備し、ソフトウェア実行装置２が、自機の固有の情報、着脱可能な電子媒体の固有情報、これらの組み合わせの少なくともいずれかを含むキー情報のハッシュ値を算出する第２のハッシュ値算出手段２３ｂと、第２のハッシュ値算出手段が算出したハッシュ値に基づき電子署名データを検証してソフトウェアのインストールまたは実行の可否を判定する検証部２３ｄとを備えた。【選択図】図１
2011150524.tif 000002
【特許請求の範囲】
【請求項１】
外部から供給されるソフトウェアのインストールまたは実行の可否を判定するソフトウェア実行装置を備えたソフトウェア実行システムにおいて、
前記ソフトウェア実行装置の固有の情報、着脱可能な電子媒体の固有情報、これらの組み合わせの少なくともいずれかを含むキー情報のハッシュ値を算出する第１のハッシュ値算出手段と、前記ハッシュ値を暗号化して電子署名データを生成する暗号化手段を備え、前記ソフトウェア実行装置に前記ソフトウェアと前記電子署名データを供給するソフトウェア供給装置を具備し、
前記ソフトウェア実行装置が、
自機の固有の情報、着脱可能な電子媒体の固有情報、これらの組み合わせの少なくともいずれかを含むキー情報のハッシュ値を算出する第２のハッシュ値算出手段と、
前記第２のハッシュ値算出手段が算出したハッシュ値に基づき前記電子署名データを検証して前記ソフトウェアのインストールまたは実行の可否を判定する検証部とを備えたことを特徴とするソフトウェア実行システム。
【請求項２】
前記検証部は、
前記ソフトウェア供給装置からの前記電子署名データを復号化する復号化手段と、
前記第２のハッシュ値算出手段が算出したハッシュ値と前記復号化手段が復号化して得られた前記ハッシュ値とが一致するか否かを判定することで前記ソフトウェアのインストールまたは実行の可否を判定する合否判定手段とを備えたことを特徴とする請求項１記載のソフトウェア実行システム。
【請求項３】
前記ソフトウェア供給装置は、
前記キー情報を入力する電子媒体を着脱可能に格納する第１の外部入出力手段を備え、
前記ソフトウェア実行装置は、
前記キー情報を前記電子媒体に出力し、この電子媒体を着脱可能に格納する第２の外部入出力手段を備えることを特徴とする請求項１または２に記載のソフトウェア実行システム。
【請求項４】
前記第１の外部入出力手段は、
前記暗号化された前記ハッシュ値とソフトウェアデータを前記電子媒体に出力し、
前記第２の外部入入出力手段は、
前記電子媒体に前記暗号化された前記ハッシュ値とソフトウェアデータの入力を行うことを特徴とする請求項３記載のソフトウェア実行システム。
【請求項５】
前記ソフトウェア供給装置は、
ネットワークを介して前記キー情報を受信する第１の通信手段を備え、
前記ソフトウェア実行装置は、
前記キー情報を前記ネットワークを介して送信する第２の通信手段を備えることを特徴とする請求項１〜４のいずれかに記載のソフトウェア実行システム。
【請求項６】
前記ソフトウェア供給装置の前記第１の通信手段は、
前記ネットワークを介して前記暗号化された前記ハッシュ値とソフトウェアデータとを送信し、
前記ソフトウェア実行装置の前記第２の通信手段は、
前記ネットワークを介して前記暗号化された前記ハッシュ値とソフトウェアデータを受信することを特徴とする請求項５記載のソフトウェア実行システム。
【請求項７】
前記ソフトウェア供給装置の第１のハッシュ値算出手段は、
既知の前記キー情報に基づきハッシュ値を算出することを特徴とする請求項１〜６のいずれかに記載のソフトウェア実行システム。
【請求項８】
前記ソフトウェア供給装置の暗号化手段は、
秘密鍵に基づき前記ハッシュ値とソフトウェアデータを暗号化し、
前記ソフトウェア供給装置は、
前記暗号化されたデータと共に前記秘密鍵に対応する公開鍵を前記ソフトウェア実行装置に提供する手段を有し、
前記ソフトウェア実行装置の復号化手段は、
前記電子署名されたデータを検証することを特徴とする請求項１記載のソフトウェア実行システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キー情報に基づき外部から供給されるソフトウェアの実行可否を判定するソフトウェア実行装置を備えたソフトウェア実行システムに関し、特に、簡便で確実にソフトウェアの実行権限を特定のソフトウェア実行装置に制限することに関する。
【背景技術】
【０００２】
近年、企業の利益を阻害するソフトウェアの不正利用が多く行なわれている。不正利用の一形態として、実行権限（ライセンス）を持たない者がソフトウェアをコピーして実行するということが挙げられる。
これを防止する目的で、従来から、パーソナルコンピュータ等で実行するソフトウェアの実行権限を、ソフトウェアの提供者が認めた特定のコンピュータのみに制限し、不正コピーされたソフトウェアの実行を防止するためのプロテクト技術が検討されている。
また、特開２００５−０５０１６２に示唆されているように、キー情報に基づき外部から供給されるソフトウェアの実行可否を判定するソフトウェア実行装置（コンピュータ）を備えたソフトウェア実行システムなどが検討されている。
【０００３】
たとえば、この不正利用を防止する方法として、ソフトウェアで実現されるキー（鍵、（例えばプロダクトキー））やハードウェアにより実現されるキーでプロテクトする方法が検討されている。
具体的には、従来のソフトウェア実行システムにおけるソフトウェア実行装置にＯＳ（Operating System）またはソフトウェアをインストールする際には、当該ＯＳまたはソフトウェアにおけるプロダクトキーを入力をしなければインストールができない仕組みが検討されている。
また、従来のソフトウェア実行システムでは、ソフトウェア実行装置のＵＳＢ（Universal Serial Bus）ポートやＰＣＩ（Peripheral Component Interconnect）バス等に接続するハードウェア（ドングル）またはボードをキーとして利用し、当該ドングル等が接続されていなければソフトウェアが実行できないようにする技術が検討されている（特開２００５−０５０１６２）。ここで、ドングルとは、ソフトウェアの不正コピーを防止するために使われるハードウェアキーの一種であって、パラレルポートやシリアルポートに接続して利用するコネクタ形状の電子媒体等である。
【０００４】
このようなソフトウェア実行システムに関連する先行技術文献として下記の特許文献１がある。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００５−０５０１６２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、従来のソフトウェア実行システムでは、ソフトウェア的なキー（例えばプロダクトキー）に基づくインストールまたは実行の可否を行なう場合、同一のキーの番号で多数のソフトウェア実行装置（コンピュータ）に対してインストールすることが可能であるという問題点があった。
【０００７】
このような不正行為の検出方法として、ソフトウェア実行装置（コンピュータ）がインターネット等のネットワークに接続した場合に、ネットワークを介してサーバが各ソフトウェア実行機器からソフトウェアのインストール情報を収集して管理する方法が考えられる。しかし、企業の工場や研究所等で利用するソフトウェアの場合、インターネットに接続せずスタンドアロンで利用する形態も多いので、このようなネットワークを介したサーバによる各ソフトウェア実行装置からの情報収集による管理手法では、確実にソフトウェアの実行権限を特定のソフトウェア実行装置に制限できないという問題点があった。
【０００８】
一方、ドングルを利用する方法ではインターネットへの接続が不要であるが、特殊なハードウェア（ドングル）が必要でコスト高となってしまうという問題点があった。
また、サードパーティからドングルの”エミュレータソフト”なるものが開発されており、ドングルに書かれている内容を読み出し記憶してドングルのハードウェア無しに不正コピー・利用を可能とする技術が可能となる恐れがあるという問題点があった。
【０００９】
本発明は上述の問題点を解決するものであり、その目的は、簡便で確実にソフトウェアの実行権限を特定のソフトウェア実行装置に制限することができるソフトウェア実行システムを実現することにある。
【課題を解決するための手段】
【００１０】
このような課題を達成するために、本発明のうち請求項１記載の発明は、
外部から供給されるソフトウェアのインストールまたは実行の可否を判定するソフトウェア実行装置を備えたソフトウェア実行システムにおいて、
前記ソフトウェア実行装置の固有の情報、着脱可能な電子媒体の固有情報、これらの組み合わせの少なくともいずれかを含むキー情報のハッシュ値を算出する第１のハッシュ値算出手段と、前記ハッシュ値を暗号化して電子署名データを生成する暗号化手段を備え、前記ソフトウェア実行装置に前記ソフトウェアと前記電子署名データを供給するソフトウェア供給装置を具備し、
前記ソフトウェア実行装置が、
自機の固有の情報、着脱可能な電子媒体の固有情報、これらの組み合わせの少なくともいずれかを含むキー情報のハッシュ値を算出する第２のハッシュ値算出手段と、
前記第２のハッシュ値算出手段が算出したハッシュ値に基づき前記電子署名データを検証して前記ソフトウェアのインストールまたは実行の可否を判定する検証部とを備えたことを特徴とするソフトウェア実行システムである。
【００１１】
請求項２記載の発明は、請求項１記載のソフトウェア実行システムにおいて、
前記検証部は、
前記ソフトウェア供給装置からの前記電子署名データを復号化する復号化手段と、
前記第２のハッシュ値算出手段が算出したハッシュ値と前記復号化手段が復号化して得られた前記ハッシュ値とが一致するか否かを判定することで前記ソフトウェアのインストールまたは実行の可否を判定する合否判定手段とを備えたことを特徴とする。
【００１２】
請求項３記載の発明は、請求項１または２記載のソフトウェア実行システムにおいて、
前記ソフトウェア供給装置は、
前記キー情報を入力する電子媒体を着脱可能に格納する第１の外部入出力手段を備え、
前記ソフトウェア実行装置は、
前記キー情報を前記電子媒体に出力し、この電子媒体を着脱可能に格納する第２の外部入出力手段を備えることを特徴とする。
【００１３】
請求項４記載の発明は、請求項３記載のソフトウェア実行システムにおいて、
前記第１の外部入出力手段は、
前記暗号化された前記ハッシュ値とソフトウェアデータを前記電子媒体に出力し、
前記第２の外部入入出力手段は、
前記電子媒体に前記暗号化された前記ハッシュ値とソフトウェアデータの入力を行うことを特徴とする。
【００１４】
請求項５記載の発明は、請求項１〜４のいずれかに記載のソフトウェア実行システムにおいて、
前記ソフトウェア供給装置は、
ネットワークを介して前記キー情報を受信する第１の通信手段を備え、
前記ソフトウェア実行装置は、
前記キー情報を前記ネットワークを介して送信する第２の通信手段を備えることを特徴とする。
【００１５】
請求項６記載の発明は、請求項５に記載のソフトウェア実行システムにおいて、
前記ソフトウェア供給装置の前記第１の通信手段は、
前記ネットワークを介して前記暗号化された前記ハッシュ値とソフトウェアデータとを送信し、
前記ソフトウェア実行装置の前記第２の通信手段は、
前記ネットワークを介して前記暗号化された前記ハッシュ値とソフトウェアデータを受信することを特徴とする。
【００１６】
請求項７記載の発明は、請求項１〜６のいずれかに記載のソフトウェア実行システムにおいて、
前記ソフトウェア供給装置の第１のハッシュ値算出手段は、
既知の前記キー情報に基づきハッシュ値を算出することを特徴とする。
【００１７】
請求項８記載の発明は、請求項１記載のソフトウェア実行システムにおいて、
前記ソフトウェア供給装置の暗号化手段は、
秘密鍵に基づき前記ハッシュ値とソフトウェアデータを暗号化し、
前記ソフトウェア供給装置は、
前記暗号化されたデータと共に前記秘密鍵に対応する公開鍵を前記ソフトウェア実行装置に提供する手段を有し、
前記ソフトウェア実行装置の復号化手段は、
前記電子署名されたデータを検証することを特徴とする。
【発明の効果】
【００１８】
本発明であれば、ソフトウェア実行装置の固有の情報、着脱可能な電子媒体の固有情報、これらの組み合わせの少なくともいずれかを含むキー情報のハッシュ値を算出する第１のハッシュ値算出手段と、ハッシュ値とソフトウェアデータを暗号化する暗号化手段を備え、ソフトウェア実行装置にソフトウェアを供給するソフトウェア供給装置を具備し、ソフトウェア実行装置が、自機の固有の情報を含むキー情報のハッシュ値を算出する第２のハッシュ値算出手段と、ソ前記第２のハッシュ値算出手段が算出したハッシュ値に基づき前記電子署名データを検証して前記ソフトウェアのインストールまたは実行の可否を判定する検証部とを備えたことにより、特別なハードウェア（ドングル等）を用いずに簡便で確実にソフトウェアの実行権限を特定のソフトウェア実行装置に制限できる点で有効である。
【００１９】
また本発明であれば、ソフトウェア供給装置が多数のソフトウェア実行装置へソフトウェアを配布する（インストールする）際に、配布するソフトウェアは同一のもので良く、配布先のソフトウェア実行装置ごとに（異なる鍵を含む）異なるソフトウェアをビルドする必要がないため、簡便で確実にソフトウェアの実行権限を特定のソフトウェア実行装置に制限できる点で有効である。
また本発明であれば、管理する秘密鍵と公開鍵は１組で良く、配布先ごとに異なる鍵を生成・管理する必要も無い点で有効である。
【００２０】
また本発明であれば、ソフトウェア実行装置の固有の情報を含むキー情報のハッシュ値を算出する第１のハッシュ値算出手段と、ハッシュ値とソフトウェアデータを暗号化する暗号化手段と、ネットワークを介して暗号化されたハッシュ値とソフトウェアデータとを送信する第１の通信手段を備え、ソフトウェア実行装置にソフトウェアを供給するソフトウェア供給装置を具備し、ソフトウェア実行装置が、ネットワークを介して暗号化されたハッシュ値とソフトウェアデータを受信する第２の通信手段と、自機の固有の情報を含むキー情報のハッシュ値を算出する第２のハッシュ値算出手段と、前記第２のハッシュ値算出手段が算出したハッシュ値に基づき前記電子署名データを検証して前記ソフトウェアのインストールまたは実行の可否を判定する検証部とを備えたことにより、特別なハードウェア（ドングル等）を用いずに簡便で確実にソフトウェアの実行権限を特定のソフトウェア実行装置に制限できる点で有効である。
【００２１】
また本発明であれば、ソフトウェア実行装置とソフトウェア供給装置とが公開鍵暗号方式（非対称鍵）を用いているため、ソフトウェア実行装置の固有の情報が漏洩することにより公知となっても、秘密鍵を入手しない限りライセンスファイルを生成することが不可能であることにより、確実にソフトウェアの実行権限を特定のソフトウェア実行装置に制限できる点で有効である。
また、仮に逆アセンブル等の手法でソフトウェアのアルゴリズムが破られても、利用者が秘密鍵を入手しない限りライセンスを生成することが不可能であるため、確実にソフトウェアの実行権限を特定のソフトウェア実行装置に制限できる点で有効である。
【図面の簡単な説明】
【００２２】
【図１】本発明に係るソフトウェア実行システムの一実施例を示す構成図である。
【図２】図１のソフトウェア実行システムの動作フロー図である。
【図３】本発明に係るソフトウェア実行システムのその他の一実施例を示す構成図である。
【発明を実施するための形態】
【００２３】
本発明に係るソフトウェア実行システムの特徴は、ソフトウェア供給装置が、ソフトウェア実行装置が標準的に備えている固有の情報（ＢＩＯＳ（Basic Input Output System）のシリアル番号、ＯＳのシリアル番号、ネットワークカードのＭＡＣアドレス（Media Access Control address）等やこれらの組合せ）と電子媒体の固有情報（たとえばＵＳＢメモリのシリアル番号）を含むキー情報（プロテクトキー（鍵））のハッシュ値を算出する第１のハッシュ値算出手段と、このハッシュ値を暗号化して電子署名データを生成する暗号化手段を備え、ソフトウェア実行装置が、固有の情報を含むキー情報のハッシュ値を算出する第２のハッシュ値算出手段と、第２のハッシュ値算出手段が算出したハッシュ値に基づき前記電子署名データを検証して前記ソフトウェアのインストールまたは実行の可否を判定する検証部とを備えることにより、簡便で確実にソフトウェアの実行権限を特定のソフトウェア実行装置に制限することができる点である。
【００２４】
＜第１の実施例＞
（構成の説明）
図１は、本発明に係るソフトウェア実行システムの一実施例を示す構成図であり、図１において、本発明のソフトウェア実行システムは、主に、ソフトウェア実行装置２が標準的に備えている固有の情報と、着脱可能な電子媒体の固有情報の組み合わせの少なくともいずれかを含むキー情報（プロテクトキー（鍵））のハッシュ値を算出し、それを暗号化したものをライセンスファイル（電子署名データ）として発行し、このライセンスファイル（電子署名データ）とソフトウェアデータ（または暗号化したソフトウェアデータ）とを送信／出力する、たとえばコンピュータ等の電子機器であるソフトウェア供給装置１と、自機の固有の情報を含むキー情報のハッシュ値を算出し、このハッシュ値とソフトウェア供給装置１からの電子署名データを復号化して得られたハッシュ値とが一致するか否かによりソフトウェアのインストールまたは実行の可否を判定する、たとえばコンピュータ等の電子機器であるソフトウェア実行装置２と、から構成される。
本発明のソフトウェア実行システムのソフトウェア供給装置１とソフトウェア実行装置２とでは、電子署名と同様の公開鍵暗号方式（非対称鍵方式）を利用している。
ソフトウェア供給装置１は秘密鍵と公開鍵のペアを生成し、ソフトウェア実行装置２はソフトウェア供給装置１により生成された公開鍵を暗号化されたデータと共に取得し、記憶する。
ソフトウェア供給装置１とソフトウェア実行装置２とでは、インストールするハードウェアの固有情報（または固有情報を組合せたデータ）のハッシュ値を算出するが、このときのハッシュを求める手法はＭＤ５（Message Digest 5）やＳＨＡ（Secure Hash Algorithm）等の一般的方法で良い。
【００２５】
（主な構成要素の説明）
ソフトウェア供給装置１は、主に、第１の外部入出力手段の一例である入出力手段１１と、記憶手段１２と、演算制御部１３と、第１のハッシュ値算出手段１３ａと、暗号化手段１３ｂと、から構成される。
またソフトウェア供給装置１は、特に図示しないが、暗号化手段１３ｂが第１のハッシュ値算出手段１３ａにより算出されたハッシュ値を（必要であればソフトウェアデータも）暗号化するための秘密鍵Ｋ−１およびこれに対応する公開鍵Ｋ−２とを生成する鍵生成手段を有するものでもよい。
【００２６】
入出力手段１１は、ソフトウェア供給装置１本体との電気的な接触によりソフトウェア実行装置２の固有の情報（ＢＩＯＳのシリアル番号、ＯＳのシリアル番号、ネットワークカードのＭＡＣアドレス等やこれらの組合せ）を含むキー情報の入力を行う（キー情報をソフトウェア供給装置１に入力する）電子媒体を着脱可能に格納するものである。
また、入出力手段１１は、暗号化手段１３ｂにより暗号化されたデータ（ハッシュ値（ライセンスファイル）とソフトウェアデータ）および秘密鍵Ｋ−１に対応する公開鍵Ｋ−２をソフトウェア供給装置１本体との電気的な接触により電子媒体に出力する。
【００２７】
より詳細には、入出力手段１１は、ソフトウェア供給装置１本体の筐体のいずれかの面に電子媒体（たとえば、ＵＳＢメモリ、メモリーカード等）を着脱可能に格納するためのＵＳＢポートまたはスロットとして形成される。
たとえば、入出力手段１１がスロットである場合は、ソフトウェア供給装置１本体の筐体の幅方向に広がる開口部を有し、メモリーカードを筐体の上下面と平行な姿勢で挿入装着できるように形成されているものでもよい。
なお電子媒体（たとえばＵＳＢメモリ、メモリーカード）は、内部に不揮発生のメモリを備えており、それ自体が書き換え可能で読み出し可能なシリアル番号を持つとともに、たとえばキー情報、暗号化されたハッシュ値とソフトウェアデータ等を記憶する。
【００２８】
なお電子媒体は、ＣＤ（コンパクトディスク）やＤＶＤ（Digital Versatile Disc）などであってもよく、この場合、入出力手段１１はＣＤドライブ、ＤＶＤドライブなどであってもよい。
【００２９】
記憶手段１２は、たとえばＲＡＭ（Random Access Memory）やＲＯＭ（Read Only Memory）などであり、主にＯＳやソフトウェア供給装置１として動作させるためのプログラムやアプリケーション、これらプログラムなどの実行時に使用されるデータなどの各種情報を記憶するとともに、ソフトウェア実行装置２に供給するソフトウェアおよび暗号化のための秘密鍵Ｋ−１を記憶する。なお記憶手段１２は、秘密鍵Ｋ−１に対応する公開鍵Ｋ−２も記憶するものでもよい
また、記憶手段１２は、電子媒体を介して入力されるソフトウェア実行装置２の固有の情報を含むキー情報を記憶するものでもよい。
【００３０】
演算制御部１３は、各手段の動作を制御するＣＰＵ（Central Processing Unit）などからなり、主に、第１のハッシュ値算出手段１３ａと暗号化手段１３ｂの機能を実行する。
演算制御部１３は、電子媒体を介して入力されたソフトウェア実行装置２の固有の情報を含むキー情報を記憶手段１２に記憶する。
ここで、演算制御部１３は、記憶手段１２に格納されているＯＳなどを起動して、このＯＳ上で格納されたプログラムを読み出し実行することにより各手段または装置全体を制御し、ソフトウェア供給装置１固有の動作を行う。
このとき記憶手段１２は、演算制御部１３によって実行されるプログラムやアプリケーションをプログラム格納エリアに展開し、入力されたデータや、プログラムやアプリケーションの実行時に生じる処理結果などのデータをワークエリアに一時的に記憶するものであってもよい。
【００３１】
第１のハッシュ値算出手段１３ａは、電子媒体を介して入力された（記憶手段１１に記憶されていた）ソフトウェア実行装置２の固有の情報を含むキー情報のハッシュ値を算出する。
暗号化手段１３ｂは、記憶手段１１に記憶される秘密鍵Ｋ−１に基づき、第１のハッシュ値算出手段１３ａにより算出されたハッシュ値（必要であればソフトウェアデータ）を暗号化し、秘密鍵を用いた電子署名データを生成する。
なお暗号化手段１３ｂにより暗号化されたハッシュ値はライセンスファイルとして取り扱われる。
これらの第１のハッシュ値算出手段１３ａと暗号化手段１３ｂは、演算制御部１３が記憶手段１２に格納されているＯＳなどを起動して、このＯＳ上で格納されたプログラムやアプリケーションを読み出し実行することにより制御されるものでもよい。
【００３２】
ソフトウェア実行装置２は、主に、第２の外部入出力手段の一例である入出力手段２１と、記憶手段２２と、演算制御部２３と、キー情報生成手段２３ａと、第２のハッシュ値算出手段２３ｂと、復号化手段２３ｃと、合否判定手段２３ｄと、ソフトウェア実行手段２３ｅと、から構成される。ここで復号化手段２３ｃと合否判定手段２３ｄは検証部２３Ｘを構成する。
【００３３】
入出力手段２１は、ソフトウェア実行装置２本体との電気的な接触によりソフトウェア実行装置２の固有の情報（ＢＩＯＳのシリアル番号、ＯＳのシリアル番号、ネットワークカードのＭＡＣアドレス等やこれらの組合せ）を含むキー情報を電子媒体に出力し、この電子媒体を着脱可能に格納するものである。
また、入出力手段２１は、電子媒体からソフトウェア供給装置１により暗号化されたデータ（ハッシュ値とソフトウェアデータ）および公開鍵Ｋ−２が入力される。
【００３４】
より詳細には、入出力手段２１は、ソフトウェア実行装置２本体の筐体のいずれかの面に電子媒体（たとえば、ＵＳＢメモリ、メモリーカード等）を着脱可能に格納するためのＵＳＢポートまたはスロットとして形成される。
たとえば、入出力手段２１がスロットである場合は、ソフトウェア実行装置２本体の筐体の幅方向に広がる開口部を有し、メモリーカードを筐体の上下面と平行な姿勢で挿入装着できるように形成されているものでもよい。
なお電子媒体（たとえばＵＳＢメモリ、メモリーカード）は、内部に不揮発生のメモリを備えており、たとえばキー情報、暗号化されたハッシュ値（ライセンスファイル（電子署名データ））とソフトウェアデータ等を記憶する。
【００３５】
なお電子媒体は、ＣＤ（コンパクトディスク）やＤＶＤ（Digital Versatile Disc）などであってもよく、この場合、入出力手段２１はＣＤドライブ、ＤＶＤドライブなどであってもよい。
【００３６】
記憶手段２２は、たとえばＲＡＭやＲＯＭなどであり、主にＯＳやソフトウェア実行装置２として動作させるためのプログラムやアプリケーション、これらプログラムなどの実行時に使用されるデータなどの各種情報を記憶するとともに、ソフトウェア実行装置２の固有の情報（ＢＩＯＳのシリアル番号、ＯＳのシリアル番号、ネットワークカードのＭＡＣアドレス等やこれらの組合せ）、ソフトウェア供給装置１からの暗号化データ（ハッシュ値、ソフトウェアデータ）を復号化するための公開鍵Ｋ−２（秘密鍵Ｋ−１に対応する公開鍵）を記憶する。
なお公開鍵Ｋ−２は、予め取得しているものでもよいし、ソフトウェア供給装置１からの暗号化されたデータとともに取得するものでもよい。
また、記憶手段２２は、ソフトウェア実行装置２の固有の情報を含むキー情報を記憶するものでもよい。
【００３７】
演算制御部２３は、各手段の動作を制御するＣＰＵなどからなり、主にキー情報生成手段２３ａ、第２のハッシュ値算出手段２３ｂ、復号化手段２３ｃ、合否判定手段２３ｄ、ソフトウェア実行手段２３ｅの機能を実行する。
演算制御部２３は、電子媒体を介して入力されたソフトウェア供給装置１からの暗号化されたデータ（キー情報のハッシュ値およびソフトウェアデータ）を記憶手段２２に記憶する。
【００３８】
ここで、演算制御部２３は、記憶手段２２に格納されているＯＳなどを起動して、このＯＳ上で格納されたプログラムを読み出し実行することにより各手段または装置全体を制御し、ソフトウェア実行装置２固有の動作を行う。
このとき記憶手段２２は、演算制御部２３によって実行されるプログラムやアプリケーションをプログラム格納エリアに展開し、入力されたデータや、プログラムやアプリケーションの実行時に生じる処理結果などのデータをワークエリアに一時的に記憶するものであってもよい。
【００３９】
キー情報生成手段２３ａは、記憶手段２２に記憶されているソフトウェア実行装置２の固有の情報、たとえばＢＩＯＳのシリアル番号、ＯＳのシリアル番号、ネットワークカードのＭＡＣアドレス等と、前記着脱可能な電子媒体の固有情報から、少なくともいずれかを抽出してキー情報を生成する、または、いずれかの情報を組み合わせてキー情報（プロテクトキー（鍵））を生成する。
たとえば、キー情報生成手段２３ａは、記憶手段２２の固有の情報からＯＳのシリアル番号、ネットワークカードのＭＡＣアドレスを組み合わせたものをキー情報として生成する。
キー情報生成手段２３ａが生成したキー情報は、記憶手段２２に記憶されるものでもよい。
【００４０】
第２のハッシュ値算出手段２３ｂは、キー情報生成手段２３ａにより生成されたキー情報のハッシュ値を算出する。
【００４１】
復号化手段２３ｃは、入力された暗号化データと共に取得した公開鍵Ｋ−２に基づき、電子媒体、入出力手段２１を介して入力された（記憶手段２１に記憶されていた）、ソフトウェア供給装置１により暗号化されたデータ（ライセンスファイル（電子署名データ））を復号化する（必要であれば暗号化されたソフトウェアも復号化する）。
復号化された各データは、記憶手段２１に記憶されるものでもよい。
【００４２】
合否判定手段２３ｄは、第２のハッシュ値算出手段２３ｂにより算出されたハッシュ値と復号化手段２３ｃにより復号化されて得られたハッシュ値とが一致するか否かによりソフトウェアのインストールまたは実行（利用）の可否を判定する。いいかえれば、合否判定手段２３ｄは、電子署名されたデータを検証する。
【００４３】
すなわち、復号化手段２３ｃと合否判定手段２３ｄから構成される検証部２３Ｘは、第２のハッシュ値算出手段が算出したハッシュ値に基づき電子署名データを検証してソフトウェアのインストールまたは実行の可否を判定することになる。
【００４４】
ソフトウェア実行手段２３ｅは、合否判定手段２３ｄにより入力されたソフトウェアのインストールまたは実行（利用）が可能であると判定されると、ソフトウェア供給装置１からのソフトウェアデータ（または復号化手段２３ｃにより復号化されたソフトウェアデータ）を実行する。
【００４５】
なお、これらのキー情報生成手段２３ａ、第２のハッシュ値算出手段２３ｂ、復号化手段２３ｃ、合否判定手段２３ｄ、ソフトウェア実行手段２３ｅは、演算制御部２３が記憶手段２２に格納されているＯＳなどを起動して、このＯＳ上で格納されたプログラムやアプリケーションを読み出し実行することにより制御されるものでもよい。
【００４６】
また、ソフトウェア供給装置１のハッシュ値算出手段１３ａとソフトウェア実行装置２のハッシュ値算出手段２３ｂとがキー情報のハッシュ値の算出に使用するハッシュ関数は、同一であるものとする。
これにより、合否判定手段２３ｄが算出されたハッシュ値と復号化されて得られたハッシュ値とが一致するか否かによりソフトウェアのインストールまたは実行（利用）の可否を判定できる。
【００４７】
（主な構成要素の配置・接続関係の説明）
ソフトウェア供給装置１の演算制御部１３は、バスなどの接続線を介して入出力手段１１、記憶手段１２と接続される。ハッシュ値算出手段１３ａは、記憶手段１２と暗号化手段１３ｂと相互に接続され、暗号化手段１３ｂは、入出力手段１１と記憶手段１２と相互に接続される。
【００４８】
ハッシュ値算出手段１３ａは、記憶手段１２からキー情報を読み出してハッシュ値を算出し、暗号化手段１３ｂは算出されたハッシュ値および記憶手段１２からソフトウェアデータを読み出して暗号化する。
入出力手段１１は、暗号化手段１３ｂにより暗号化されたデータ（ハッシュ値、ソフトウェア）を電子媒体に出力する。
【００４９】
ソフトウェア実行装置２の演算制御部２３は、バスなどの接続線を介して入出力手段２１、記憶手段２２と接続される。キー情報生成手段２３ａは、記憶手段２２とハッシュ値算出手段２３ｂ、入出力手段２１と相互に接続される。
ハッシュ値算出手段２３ｂは、入出力手段２１と合否判定手段２３ｄとも相互に接続される。復号化手段２３ｃは、記憶手段２２と、合否判定手段２３ｄと相互に接続され、ソフトウェア実行手段２３ｅは、合否判定手段２３ｄと記憶手段２２と相互に接続される。
【００５０】
キー情報生成手段２３ａは、記憶手段２２からソフトウェア実行装置２の固有の情報を読み出してキー情報を生成し、ハッシュ値算出手段２３ｂはキー情報生成手段２３ａからのキー情報のハッシュ値を算出する。
復号化手段２３ｃは記憶手段２２から暗号化されたデータを読み出して復号化し復号化されたソフトウェアデータを記憶手段２２に記憶する。
合否判定手段２３ｄは、ハッシュ値算出手段２３ｂにより算出されたハッシュ値と復号化手段２３ｃにより復号化されたハッシュ値とを比較し、ソフトウェアのインストールまたは実行可否を判定する。
ソフトウェア実行手段２３ｅは、合否判定手段２３ｄによりソフトウェアのインストールまた実行が可能である判定された場合は記憶手段２２から復号化手段２３ｃにより復号化されたソフトウェアを読み出してインストールまたは実行する。
【００５１】
（動作説明）
このような構成で、本発明のソフトウェア実行システムは、次の動作を行なう。図２は、図１のソフトウェア実行システムの動作フロー図である。
【００５２】
ステップＳ１０１の動作の前に、ソフトウェア実行装置２のキー情報生成手段２３ａが記憶手段２２の固有の情報と、前記着脱可能な電子媒体の固有情報からたとえばＯＳのシリアル番号・ネットワークカードのＭＡＣアドレスを組み合わせたものをキー情報として生成し、入出力手段２１が、生成されたキー情報を電子媒体に出力し記憶させる。
ソフトウェア供給装置１では、この電子媒体を介して入出力手段１１がキー情報を取得する。
【００５３】
本発明では、このように、ドングルのような特殊なハードウェアではなく、コンピュータが標準的に備えている固有の情報をキーとして利用する点が特徴的である。
なおドングルの代替として、市販のごく安価なＵＳＢフラッシュメモリのＵＳＢのシリアル番号を組合せて利用するのでも良い。
【００５４】
ステップＳ１０１において、ソフトウェア供給装置１のハッシュ値算出手段１３ａは、電子媒体を介して取得したソフトウェア実行装置２の固有の情報を含むキー情報のハッシュ値を算出する。
すなわち、ソフトウェア供給装置１のハッシュ値算出手段１３ａは、既知のキー情報に基づきハッシュ値を算出することになる。
【００５５】
ステップＳ１０２において、ソフトウェア供給装置１の暗号化手段１３ｂは、暗号化手段１３ｂは算出されたハッシュ値を読み出して暗号化し、ライセンスファイル（電子署名データ）を生成する。
【００５６】
ステップＳ１０３において、ソフトウェア供給装置１の入出力手段１１は、ライセンスファイル（電子署名データ）を電子媒体に出力し、電子媒体はこれを記憶する（必要であればソフトウェアデータもともに記憶する）。このとき入出力手段１１は、ライセンスファイル（電子署名データ）とともに公開鍵Ｋ−２も電子媒体に出力するものでもよい。
【００５７】
ステップＳ１０４において、ソフトウェア実行装置２の入出力手段２１は、ソフトウェア供給装置１によりライセンスファイル（電子署名データ）を取得する（必要であればソフトウェアデータもともに取得する）。このとき入出力手段２１は、ライセンスファイル（電子署名データ）とともに公開鍵Ｋ−２も電子媒体から取得するものでもよく、取得された公開鍵Ｋ−２は記憶手段に記憶されるものでもよい。
【００５８】
ステップＳ１０５において、復号化手段２３ｃは、外部より取得した（記憶手段２１に記憶されていた）ソフトウェア供給装置１からのライセンスファイル（電子署名データ）を、記憶手段２２の公開鍵Ｋ−２に基づいて復号化する。（必要であれば復号化手段２３ｃは、ソフトウェア供給装置１からの暗号化されたソフトウェアを復号化するものでもよい。）
このとき復号化手段２３ｃは復号化された各データを記憶手段２１に記憶するものでもよい。
【００５９】
ステップＳ１０６において、キー情報生成手段２３ａは、記憶手段２２の固有の情報と前記着脱可能な電子媒体の固有情報の組み合わせから、たとえばＯＳのシリアル番号、ネットワークカードのＭＡＣアドレスを組み合わせたものをキー情報として生成する。このとき、キー情報生成手段２３ａは、生成したキー情報を記憶手段２２に記憶するものでもよい。
【００６０】
ステップＳ１０７において、ハッシュ値算出手段２３ｂは、キー情報生成手段２３ａにより生成されたキー情報のハッシュ値を算出する。
【００６１】
なおステップＳ１０５の動作と、ステップＳ１０６、１０７の動作の順序はこれに限定するものではなく、合否判定手段がステップＳ１０８にて算出されたハッシュ値と復号化されたハッシュ値とを比較することができればどのような順序であってもよい。
【００６２】
ステップＳ１０８において、合否判定手段２３ｄは、ハッシュ値算出手段２３ｂにより算出されたハッシュ値と復号化手段２３ｃにより復号化されたハッシュ値とを比較し、ハッシュ値とが一致するか否かによりソフトウェアのインストールまたは実行の可否を判定する。
【００６３】
ステップＳ１０９において、合否判定手段２３ｄは、算出されたハッシュ値と復号化されたハッシュ値とが一致する場合であれば、ソフトウェア実行装置２がソフトウェアの実行・インストールにあたり正当権限を有するソフトウェア実行装置（コンピュータ）であるとして、ソフトウェアのインストールまたは実行（利用）が可能であると判定しステップＳ１１０に移行する。
一方、合否判定手段２３ｄは、算出されたハッシュ値と復号化されたハッシュ値とが一致しない場合であれば、ソフトウェア実行装置２が正当権限を有しないソフトウェア実行装置（コンピュータ）であるとして、ソフトウェアのインストールまたは実行（利用）を許可しない。
【００６４】
このため、悪意の第三者がライセンスファイルとソフトウェアデータ（実行ファイル）を不正コピーして異なるソフトウェア実行装置（ハードウェア）でソフトウェアのインストールまたは実行（利用）を試みたとしても、ソフトウェア実行装置の固有の情報（ハードウェア固有情報）の不一致からハッシュ値は一致せず実行が不可能となるため、確実にソフトウェアの実行権限を特定のソフトウェア実行装置に制限できる点で有効である。
また、そのハードウェア固有情報に対応するライセンスを生成するには秘密鍵が必要であるところ、本発明のソフトウェア供給装置２は、暗号されたデータとともに配布されるのは公開鍵だけであることから、公開鍵から秘密鍵を生成することができないため、正しいライセンスファイルを生成できず、確実にソフトウェアの実行権限を特定のソフトウェア実行装置に制限できる点で有効である。
【００６５】
ステップＳ１１０において、ソフトウェア実行手段２３ｅは、合否判定手段２３ｄにより入力されたソフトウェアのインストールまたは実行（利用）が可能であると判定されると、復号化手段２３ｃにより復号化されたソフトウェアデータを実行する。
【００６６】
この結果、本発明のソフトウェア実行システムは、ソフトウェア実行装置の固有の情報を含むキー情報のハッシュ値を算出する第１のハッシュ値算出手段と、ハッシュ値とソフトウェアデータを暗号化する暗号化手段を備え、ソフトウェア実行装置にソフトウェアを供給するソフトウェア供給装置を具備し、ソフトウェア実行装置が、自機の固有の情報を含むキー情報のハッシュ値を算出する第２のハッシュ値算出手段と、ソフトウェア供給装置により暗号化されたデータを復号化する復号化手段と、第２のハッシュ値算出手段により算出されたハッシュ値と復号化手段により復号化されて得られたハッシュ値とが一致するか否かによりソフトウェアのインストールまたは実行の可否を判定する合否判定手段とを備えたことにより、特別なハードウェア（ドングル等）を用いずに簡便で確実にソフトウェアの実行権限を特定のソフトウェア実行装置に制限できる点で有効である。
【００６７】
また本発明では、ソフトウェア実行装置とソフトウェア供給装置とが公開鍵暗号方式（非対称鍵）を用いているため、ソフトウェア実行装置の固有の情報が漏洩することにより公知となっても、秘密鍵Ｋ−１を入手しない限りライセンスファイルを生成することが不可能であることにより、確実にソフトウェアの実行権限を特定のソフトウェア実行装置に制限できる点で有効である。
また、仮に逆アセンブル等の手法でソフトウェアのアルゴリズムが破られても、利用者が秘密鍵を入手しない限りライセンスを生成することが不可能であるため、確実にソフトウェアの実行権限を特定のソフトウェア実行装置に制限できる点で有効である。
【００６８】
また本発明では、ソフトウェア供給装置が多数のソフトウェア実行装置へソフトウェアを配布する（インストールする）際に、配布するソフトウェアは同一のもので良く、配布先のソフトウェア実行装置ごとに（異なる鍵を含む）異なるソフトウェアをビルドする必要がないため、簡便で確実にソフトウェアの実行権限を特定のソフトウェア実行装置に制限できる点で有効である。
また本発明であれば、管理する秘密鍵と公開鍵は１組で良く、配布先ごとに異なる鍵を生成・管理する必要も無い点で有効である。
【００６９】
すなわち、本発明であれば、公開鍵暗号方式を利用し、秘密鍵はソフトウェア供給装置側が保持することで、実行権限を与える方法（ソフトウェア実行装置におけるどの固有情報を利用しているか、また、どのようなアルゴリズムを利用しているか）が見破られても、ライセンスを偽造することが不可能となり、簡便で確実にソフトウェアの実行権限を特定のソフトウェア実行装置に制限できる点で有効である。
【００７０】
また、本発明であれば、ソフトウェア供給装置１とソフトウェア実行装置２とがインターネット等のネットワークを介して相互接続していない環境でも、ソフトウェアのインストールのための初期作業を行えば継続的に実行権限に制限を行える点で有効である。
【００７１】
また、本発明であれば、ソフトウェア実行装置１の複数の固有情報を組合せることで、キー情報に利用する固有情報の種類やその組合せ方に任意性があり、従来のように単一のドングルに依存する方法と比較して不正利用に対する強度を高められる点で有効である。
【００７２】
＜第２の実施例＞
本発明のソフトウェア実行システムは、ソフトウェア供給装置１がソフトウェア実行装置１の固有の情報を含むキー情報をインターネット等のネットワークを介して取得し、キー情報のハッシュ値を生成、発行するものでもよい。
このとき、ソフトウェア供給装置１は、ソフトウェア実行装置２からキー情報のハッシュ値をネットワークを介して取得するものでもよい。
さらに、ソフトウェア供給装置１は、ソフトウェア実行装置２からキー情報およびキー情報のハッシュ値をネットワークを介して取得するものでもよい。
【００７３】
図３は、本発明に係るソフトウェア実行システムのその他の一実施例を示す構成図であり、図１と共通する部分には同一の符号を付けて適宜説明を省略する。
図１との相違点は、主に、ソフトウェア供給装置１が入出力手段１１の代わりにネットワークを介してデータの送受信を行なう通信手段１５を備えた点と、ソフトウェア実行装置２が入出力手段２１の代わりにネットワークを介してデータの送受信を行なう通信手段２５を備えた点である。
また、ソフトウェア供給装置１では、ソフトウェア実行装置２からキー情報のハッシュ値をネットワークを介して取得する場合にあっては、ソフトウェア実行装置２のハッシュ値算出手段２３ｂが、キー情報生成手段により生成されたキー情報のハッシュ値を算出する点についても相違する。
【００７４】
図３において、本発明のソフトウェア実行システムのソフトウェア供給装置１は、主に、第１の通信手段の一例である通信手段１５と、記憶手段１２と、演算制御部１３と、第１のハッシュ値算出手段１３ａと、暗号化手段１３ｂと、から構成される。
【００７５】
通信手段１５は、インターネット等のネットワーク１００と接続され、ネットワーク通信を行うことを可能とするものである。
通信手段１５は、演算制御部１３と接続され、通信手段１５がネットワーク１００を介してソフトウェア実行装置２から受信したキー情報またはハッシュ値は記憶手段１２に記憶される。
また通信手段１５は、暗号化手段１３ｂと接続され、暗号化されたデータ（ハッシュ値およびソフトウェアデータ）と公開鍵Ｋ−２とをネットワーク１００を介してソフトウェア実行装置２に送信する。
【００７６】
ソフトウェア実行装置２は、主に、第２の通信手段の一例である通信手段２５と、記憶手段２２と、演算制御部２３と、キー情報生成手段２３ａと、第２のハッシュ値算出手段２３ｂと、復号化手段２３ｃと、合否判定手段２３ｄと、ソフトウェア実行手段２３ｅと、から構成される。
【００７７】
通信手段２５は、インターネット等のネットワーク１００と接続され、ネットワーク通信を行うことを可能とするものである。
通信手段２５は演算制御部２３と接続され、通信手段２５がネットワーク１００を介して受信したソフトウェア供給装置１からの暗号化データおよび公開鍵Ｋ−２は、記憶手段２２に記憶される。
また通信手段２５は、キー情報生成手段２３ａと接続され、生成されたキー情報をネットワーク１００を介してソフトウェア供給装置１に送信する。
【００７８】
さらに通信手段２５は、ハッシュ値算出手段２３ｂと接続され、算出されたキー情報のハッシュ値をネットワーク１００を介してソフトウェア供給装置１に送信するものでもよい。
【００７９】
このような構成で、本発明のソフトウェア実行システムは、上述したステップＳ１０１〜Ｓ１１０の動作を行なうが、既に説明した動作と共通する部分については適宜説明を省略する。
【００８０】
ステップＳ１０１の動作の前に、ソフトウェア実行装置２のキー情報生成手段２３ａが記憶手段２２の固有の情報からたとえばＯＳのシリアル番号・ネットワークカードのＭＡＣアドレスを組み合わせたものをキー情報として生成し、通信手段２５が、生成されたキー情報をネットワーク１００を介してソフトウェア供給装置１に送信する。
ソフトウェア供給装置１の通信手段１５は、ネットワーク１００を介してキー情報を受信し、このキー情報は記憶手段１２に記憶される。
【００８１】
ステップＳ１０３において、ソフトウェア供給装置１の通信手段１５は、暗号化されたデータ（ハッシュ値（ライセンスファイル）、ソフトウェアデータ）をネットワーク１００を介して出力する。このとき通信手段１５は、暗号化されたデータとともに公開鍵Ｋ−２も出力するものでもよい。
【００８２】
ステップＳ１０４において、ソフトウェア実行装置２の通信手段１５は、ネットワーク１００を介して、ソフトウェア供給装置１により暗号化されたデータ（ハッシュ値とソフトウェアデータ）を受信する。このとき通信手段２５は、暗号化されたデータとともに公開鍵Ｋ−２も取得するものでもよく、取得された公開鍵Ｋ−２は、記憶手段に記憶されるものでもよい。
【００８３】
なお本実施例２の構成であっても、実施例１に示した着脱可能な電子媒体を介して固有情報を共有する構成とするものであってもよい。
【００８４】
この結果、本発明のソフトウェア実行システムは、ソフトウェア実行装置の固有の情報を含むキー情報のハッシュ値を算出する第１のハッシュ値算出手段と、ハッシュ値とソフトウェアデータを暗号化する暗号化手段と、ネットワークを介して暗号化されたハッシュ値とソフトウェアデータとを送信する第１の通信手段を備え、ソフトウェア実行装置にソフトウェアを供給するソフトウェア供給装置を具備し、ソフトウェア実行装置が、ネットワークを介して暗号化されたハッシュ値とソフトウェアデータを受信する第２の通信手段と、自機の固有の情報を含むキー情報のハッシュ値を算出する第２のハッシュ値算出手段と、ソフトウェア供給装置により暗号化されたデータを復号化する復号化手段と、第２のハッシュ値算出手段により算出されたハッシュ値と復号化手段により復号化されて得られたハッシュ値とが一致するか否かによりソフトウェアのインストールまたは実行の可否を判定する合否判定手段とを備えたことにより、特別なハードウェア（ドングル等）を用いずに簡便で確実にソフトウェアの実行権限を特定のソフトウェア実行装置に制限できる点で有効である。
【００８５】
なお、上述の実施例１の構成では、ソフトウェア実行装置２の固有の情報をキー情報（プロテクトキー（鍵））として利用しているので、キー情報のハッシュ値を暗号化されたデータであるライセンスファイルを生成するためにはソフトウェアのインストール（利用）時にソフトウェア供給装置１にソフトウェア実行装置２で生成されたキー情報を事前に供給する必要があった。
このため、ソフトウェア実行装置２へソフトウェアをインストールして出荷するようなタイプの製品には有効である一方、上記の実施例１の構成のままではパッケージ販売やダウンロード販売を行うことができないという問題点があった。
これに対して上述の実施例２の構成であれば、ソフトウェア実行装置２の固有の情報を含むキー情報をインターネット等のネットワークを介して伝送（収集）し、ソフトウェア供給装置１がキー情報のハッシュ値を暗号化されたライセンスファイルを生成、発行することにより、上述の問題点を解決でき、パッケージ販売やダウンロード販売によるライセンシングが可能となる点で有効である。
また、本発明であれば、ソフトウェア供給装置１を利用する提供者（オペレータ）のソフトウェア実行装置２へのインストールのための出張等の作業が不要となり、以降は自動的、継続的に実行権限に制限を行うことができる点で有効である。
【００８６】
また、本発明に係るソフトウェア実行システムは、ソフトウェア供給装置１とソフトウェア実行装置２とが導入時のみネットワークに接続するものであってもよい。
【００８７】
また、本発明に係るソフトウェア実行システムは、ソフトウェア実行装置２がキー情報またはキー情報のハッシュ値をメール等で送信するのでなく、ソフトウェア実行装置２のキー情報生成手段２３ａが任意選択可能なタイミングでキー情報を生成し（またはハッシュ値算出手段２３ｂが自動的にキー情報のハッシュ値を算出し）、通信手段１５を介して任意選択可能なタイミングでキー情報、ハッシュ値をネットワーク１００を介して送信するものでもよい。
このとき、ソフトウェア供給装置１は、ネットワーク１００を介してキー情報またはハッシュ値等を受信すると、ハッシュ値算出手段１３ａがキー情報のハッシュ値を算出し暗号化手段１３ｂが暗号化して自動的にラインセンスファイルを生成するものでもよい。
この場合であれば、秘密鍵はソフトウェア供給装置１側にのみに存在するため悪意の第三者はアルゴリズムが分かっても不正なライセンスファイルを生成することができないことにより、簡便で確実にソフトウェアの実行権限を特定のソフトウェア実行装置に制限できる点で有効である。
なお、ネットワークへ接続はライセンス発行時のみで良いので、その後のソフトウェア実行時にはネットワークへ接続する必要は無い。
【００８８】
なお、本実施例２におけるソフトウェア実行システムでは、ソフトウェア供給装置１がソフトウェアのインストール（利用）に係る課金、入金等による利用権限の確認をした後にライセンスファイル発行を行うものでもよく、これにより簡便で確実にソフトウェアの実行権限を特定のソフトウェア実行装置に制限できる点で有効である。
【符号の説明】
【００８９】
１  ソフトウェア供給装置
１１  （第１の外部）入出力手段
１２  記憶手段
１３  演算制御手段
１３ａ  （第１の）ハッシュ値算出手段
１３ｂ  暗号化手段
１５  （第１の）通信手段
２  ソフトウェア実行装置
２１  （第２の外部）入出力手段
２２  記憶手段
２３  演算制御手段
２３ａ  キー情報生成手段
２３ｂ  （第２の）ハッシュ値算出手段
２３ｃ  復号化手段
２３ｄ  合否判定手段
２３ｅ  ソフトウェア実行手段
２５  （第２の）通信手段
【図１】
2011150524.tif 000003
【図２】
2011150524.tif 000004
【図３】
2011150524.tif 000005