説明

ソフトウェア実行システム

【課題】簡便で確実にソフトウェアの実行権限を特定のソフトウェア実行装置に制限する。
【解決手段】ソフトウェア実行装置2の固有の情報、着脱可能な電子媒体の固有情報、これらの組み合わせの少なくともいずれかを含むキー情報のハッシュ値を算出する第1のハッシュ値算出手段13aと、ハッシュ値を暗号化して電子署名データを生成する暗号化手段13bを備え、ソフトウェア実行装置2にソフトウェアと電子署名データを供給するソフトウェア供給装置1を具備し、ソフトウェア実行装置2が、自機の固有の情報、着脱可能な電子媒体の固有情報、これらの組み合わせの少なくともいずれかを含むキー情報のハッシュ値を算出する第2のハッシュ値算出手段23bと、第2のハッシュ値算出手段が算出したハッシュ値に基づき電子署名データを検証してソフトウェアのインストールまたは実行の可否を判定する検証部23dとを備えた。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、キー情報に基づき外部から供給されるソフトウェアの実行可否を判定するソフトウェア実行装置を備えたソフトウェア実行システムに関し、特に、簡便で確実にソフトウェアの実行権限を特定のソフトウェア実行装置に制限することに関する。
【背景技術】
【0002】
近年、企業の利益を阻害するソフトウェアの不正利用が多く行なわれている。不正利用の一形態として、実行権限(ライセンス)を持たない者がソフトウェアをコピーして実行するということが挙げられる。
これを防止する目的で、従来から、パーソナルコンピュータ等で実行するソフトウェアの実行権限を、ソフトウェアの提供者が認めた特定のコンピュータのみに制限し、不正コピーされたソフトウェアの実行を防止するためのプロテクト技術が検討されている。
また、特開2005−050162に示唆されているように、キー情報に基づき外部から供給されるソフトウェアの実行可否を判定するソフトウェア実行装置(コンピュータ)を備えたソフトウェア実行システムなどが検討されている。
【0003】
たとえば、この不正利用を防止する方法として、ソフトウェアで実現されるキー(鍵、(例えばプロダクトキー))やハードウェアにより実現されるキーでプロテクトする方法が検討されている。
具体的には、従来のソフトウェア実行システムにおけるソフトウェア実行装置にOS(Operating System)またはソフトウェアをインストールする際には、当該OSまたはソフトウェアにおけるプロダクトキーを入力をしなければインストールができない仕組みが検討されている。
また、従来のソフトウェア実行システムでは、ソフトウェア実行装置のUSB(Universal Serial Bus)ポートやPCI(Peripheral Component Interconnect)バス等に接続するハードウェア(ドングル)またはボードをキーとして利用し、当該ドングル等が接続されていなければソフトウェアが実行できないようにする技術が検討されている(特開2005−050162)。ここで、ドングルとは、ソフトウェアの不正コピーを防止するために使われるハードウェアキーの一種であって、パラレルポートやシリアルポートに接続して利用するコネクタ形状の電子媒体等である。
【0004】
このようなソフトウェア実行システムに関連する先行技術文献として下記の特許文献1がある。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2005−050162号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、従来のソフトウェア実行システムでは、ソフトウェア的なキー(例えばプロダクトキー)に基づくインストールまたは実行の可否を行なう場合、同一のキーの番号で多数のソフトウェア実行装置(コンピュータ)に対してインストールすることが可能であるという問題点があった。
【0007】
このような不正行為の検出方法として、ソフトウェア実行装置(コンピュータ)がインターネット等のネットワークに接続した場合に、ネットワークを介してサーバが各ソフトウェア実行機器からソフトウェアのインストール情報を収集して管理する方法が考えられる。しかし、企業の工場や研究所等で利用するソフトウェアの場合、インターネットに接続せずスタンドアロンで利用する形態も多いので、このようなネットワークを介したサーバによる各ソフトウェア実行装置からの情報収集による管理手法では、確実にソフトウェアの実行権限を特定のソフトウェア実行装置に制限できないという問題点があった。
【0008】
一方、ドングルを利用する方法ではインターネットへの接続が不要であるが、特殊なハードウェア(ドングル)が必要でコスト高となってしまうという問題点があった。
また、サードパーティからドングルの”エミュレータソフト”なるものが開発されており、ドングルに書かれている内容を読み出し記憶してドングルのハードウェア無しに不正コピー・利用を可能とする技術が可能となる恐れがあるという問題点があった。
【0009】
本発明は上述の問題点を解決するものであり、その目的は、簡便で確実にソフトウェアの実行権限を特定のソフトウェア実行装置に制限することができるソフトウェア実行システムを実現することにある。
【課題を解決するための手段】
【0010】
このような課題を達成するために、本発明のうち請求項1記載の発明は、
外部から供給されるソフトウェアのインストールまたは実行の可否を判定するソフトウェア実行装置を備えたソフトウェア実行システムにおいて、
前記ソフトウェア実行装置の固有の情報、着脱可能な電子媒体の固有情報、これらの組み合わせの少なくともいずれかを含むキー情報のハッシュ値を算出する第1のハッシュ値算出手段と、前記ハッシュ値を暗号化して電子署名データを生成する暗号化手段を備え、前記ソフトウェア実行装置に前記ソフトウェアと前記電子署名データを供給するソフトウェア供給装置を具備し、
前記ソフトウェア実行装置が、
自機の固有の情報、着脱可能な電子媒体の固有情報、これらの組み合わせの少なくともいずれかを含むキー情報のハッシュ値を算出する第2のハッシュ値算出手段と、
前記第2のハッシュ値算出手段が算出したハッシュ値に基づき前記電子署名データを検証して前記ソフトウェアのインストールまたは実行の可否を判定する検証部とを備えたことを特徴とするソフトウェア実行システムである。
【0011】
請求項2記載の発明は、請求項1記載のソフトウェア実行システムにおいて、
前記検証部は、
前記ソフトウェア供給装置からの前記電子署名データを復号化する復号化手段と、
前記第2のハッシュ値算出手段が算出したハッシュ値と前記復号化手段が復号化して得られた前記ハッシュ値とが一致するか否かを判定することで前記ソフトウェアのインストールまたは実行の可否を判定する合否判定手段とを備えたことを特徴とする。
【0012】
請求項3記載の発明は、請求項1または2記載のソフトウェア実行システムにおいて、
前記ソフトウェア供給装置は、
前記キー情報を入力する電子媒体を着脱可能に格納する第1の外部入出力手段を備え、
前記ソフトウェア実行装置は、
前記キー情報を前記電子媒体に出力し、この電子媒体を着脱可能に格納する第2の外部入出力手段を備えることを特徴とする。
【0013】
請求項4記載の発明は、請求項3記載のソフトウェア実行システムにおいて、
前記第1の外部入出力手段は、
前記暗号化された前記ハッシュ値とソフトウェアデータを前記電子媒体に出力し、
前記第2の外部入入出力手段は、
前記電子媒体に前記暗号化された前記ハッシュ値とソフトウェアデータの入力を行うことを特徴とする。
【0014】
請求項5記載の発明は、請求項1〜4のいずれかに記載のソフトウェア実行システムにおいて、
前記ソフトウェア供給装置は、
ネットワークを介して前記キー情報を受信する第1の通信手段を備え、
前記ソフトウェア実行装置は、
前記キー情報を前記ネットワークを介して送信する第2の通信手段を備えることを特徴とする。
【0015】
請求項6記載の発明は、請求項5に記載のソフトウェア実行システムにおいて、
前記ソフトウェア供給装置の前記第1の通信手段は、
前記ネットワークを介して前記暗号化された前記ハッシュ値とソフトウェアデータとを送信し、
前記ソフトウェア実行装置の前記第2の通信手段は、
前記ネットワークを介して前記暗号化された前記ハッシュ値とソフトウェアデータを受信することを特徴とする。
【0016】
請求項7記載の発明は、請求項1〜6のいずれかに記載のソフトウェア実行システムにおいて、
前記ソフトウェア供給装置の第1のハッシュ値算出手段は、
既知の前記キー情報に基づきハッシュ値を算出することを特徴とする。
【0017】
請求項8記載の発明は、請求項1記載のソフトウェア実行システムにおいて、
前記ソフトウェア供給装置の暗号化手段は、
秘密鍵に基づき前記ハッシュ値とソフトウェアデータを暗号化し、
前記ソフトウェア供給装置は、
前記暗号化されたデータと共に前記秘密鍵に対応する公開鍵を前記ソフトウェア実行装置に提供する手段を有し、
前記ソフトウェア実行装置の復号化手段は、
前記電子署名されたデータを検証することを特徴とする。
【発明の効果】
【0018】
本発明であれば、ソフトウェア実行装置の固有の情報、着脱可能な電子媒体の固有情報、これらの組み合わせの少なくともいずれかを含むキー情報のハッシュ値を算出する第1のハッシュ値算出手段と、ハッシュ値とソフトウェアデータを暗号化する暗号化手段を備え、ソフトウェア実行装置にソフトウェアを供給するソフトウェア供給装置を具備し、ソフトウェア実行装置が、自機の固有の情報を含むキー情報のハッシュ値を算出する第2のハッシュ値算出手段と、ソ前記第2のハッシュ値算出手段が算出したハッシュ値に基づき前記電子署名データを検証して前記ソフトウェアのインストールまたは実行の可否を判定する検証部とを備えたことにより、特別なハードウェア(ドングル等)を用いずに簡便で確実にソフトウェアの実行権限を特定のソフトウェア実行装置に制限できる点で有効である。
【0019】
また本発明であれば、ソフトウェア供給装置が多数のソフトウェア実行装置へソフトウェアを配布する(インストールする)際に、配布するソフトウェアは同一のもので良く、配布先のソフトウェア実行装置ごとに(異なる鍵を含む)異なるソフトウェアをビルドする必要がないため、簡便で確実にソフトウェアの実行権限を特定のソフトウェア実行装置に制限できる点で有効である。
また本発明であれば、管理する秘密鍵と公開鍵は1組で良く、配布先ごとに異なる鍵を生成・管理する必要も無い点で有効である。
【0020】
また本発明であれば、ソフトウェア実行装置の固有の情報を含むキー情報のハッシュ値を算出する第1のハッシュ値算出手段と、ハッシュ値とソフトウェアデータを暗号化する暗号化手段と、ネットワークを介して暗号化されたハッシュ値とソフトウェアデータとを送信する第1の通信手段を備え、ソフトウェア実行装置にソフトウェアを供給するソフトウェア供給装置を具備し、ソフトウェア実行装置が、ネットワークを介して暗号化されたハッシュ値とソフトウェアデータを受信する第2の通信手段と、自機の固有の情報を含むキー情報のハッシュ値を算出する第2のハッシュ値算出手段と、前記第2のハッシュ値算出手段が算出したハッシュ値に基づき前記電子署名データを検証して前記ソフトウェアのインストールまたは実行の可否を判定する検証部とを備えたことにより、特別なハードウェア(ドングル等)を用いずに簡便で確実にソフトウェアの実行権限を特定のソフトウェア実行装置に制限できる点で有効である。
【0021】
また本発明であれば、ソフトウェア実行装置とソフトウェア供給装置とが公開鍵暗号方式(非対称鍵)を用いているため、ソフトウェア実行装置の固有の情報が漏洩することにより公知となっても、秘密鍵を入手しない限りライセンスファイルを生成することが不可能であることにより、確実にソフトウェアの実行権限を特定のソフトウェア実行装置に制限できる点で有効である。
また、仮に逆アセンブル等の手法でソフトウェアのアルゴリズムが破られても、利用者が秘密鍵を入手しない限りライセンスを生成することが不可能であるため、確実にソフトウェアの実行権限を特定のソフトウェア実行装置に制限できる点で有効である。
【図面の簡単な説明】
【0022】
【図1】本発明に係るソフトウェア実行システムの一実施例を示す構成図である。
【図2】図1のソフトウェア実行システムの動作フロー図である。
【図3】本発明に係るソフトウェア実行システムのその他の一実施例を示す構成図である。
【発明を実施するための形態】
【0023】
本発明に係るソフトウェア実行システムの特徴は、ソフトウェア供給装置が、ソフトウェア実行装置が標準的に備えている固有の情報(BIOS(Basic Input Output System)のシリアル番号、OSのシリアル番号、ネットワークカードのMACアドレス(Media Access Control address)等やこれらの組合せ)と電子媒体の固有情報(たとえばUSBメモリのシリアル番号)を含むキー情報(プロテクトキー(鍵))のハッシュ値を算出する第1のハッシュ値算出手段と、このハッシュ値を暗号化して電子署名データを生成する暗号化手段を備え、ソフトウェア実行装置が、固有の情報を含むキー情報のハッシュ値を算出する第2のハッシュ値算出手段と、第2のハッシュ値算出手段が算出したハッシュ値に基づき前記電子署名データを検証して前記ソフトウェアのインストールまたは実行の可否を判定する検証部とを備えることにより、簡便で確実にソフトウェアの実行権限を特定のソフトウェア実行装置に制限することができる点である。
【0024】
<第1の実施例>
(構成の説明)
図1は、本発明に係るソフトウェア実行システムの一実施例を示す構成図であり、図1において、本発明のソフトウェア実行システムは、主に、ソフトウェア実行装置2が標準的に備えている固有の情報と、着脱可能な電子媒体の固有情報の組み合わせの少なくともいずれかを含むキー情報(プロテクトキー(鍵))のハッシュ値を算出し、それを暗号化したものをライセンスファイル(電子署名データ)として発行し、このライセンスファイル(電子署名データ)とソフトウェアデータ(または暗号化したソフトウェアデータ)とを送信/出力する、たとえばコンピュータ等の電子機器であるソフトウェア供給装置1と、自機の固有の情報を含むキー情報のハッシュ値を算出し、このハッシュ値とソフトウェア供給装置1からの電子署名データを復号化して得られたハッシュ値とが一致するか否かによりソフトウェアのインストールまたは実行の可否を判定する、たとえばコンピュータ等の電子機器であるソフトウェア実行装置2と、から構成される。
本発明のソフトウェア実行システムのソフトウェア供給装置1とソフトウェア実行装置2とでは、電子署名と同様の公開鍵暗号方式(非対称鍵方式)を利用している。
ソフトウェア供給装置1は秘密鍵と公開鍵のペアを生成し、ソフトウェア実行装置2はソフトウェア供給装置1により生成された公開鍵を暗号化されたデータと共に取得し、記憶する。
ソフトウェア供給装置1とソフトウェア実行装置2とでは、インストールするハードウェアの固有情報(または固有情報を組合せたデータ)のハッシュ値を算出するが、このときのハッシュを求める手法はMD5(Message Digest 5)やSHA(Secure Hash Algorithm)等の一般的方法で良い。
【0025】
(主な構成要素の説明)
ソフトウェア供給装置1は、主に、第1の外部入出力手段の一例である入出力手段11と、記憶手段12と、演算制御部13と、第1のハッシュ値算出手段13aと、暗号化手段13bと、から構成される。
またソフトウェア供給装置1は、特に図示しないが、暗号化手段13bが第1のハッシュ値算出手段13aにより算出されたハッシュ値を(必要であればソフトウェアデータも)暗号化するための秘密鍵K−1およびこれに対応する公開鍵K−2とを生成する鍵生成手段を有するものでもよい。
【0026】
入出力手段11は、ソフトウェア供給装置1本体との電気的な接触によりソフトウェア実行装置2の固有の情報(BIOSのシリアル番号、OSのシリアル番号、ネットワークカードのMACアドレス等やこれらの組合せ)を含むキー情報の入力を行う(キー情報をソフトウェア供給装置1に入力する)電子媒体を着脱可能に格納するものである。
また、入出力手段11は、暗号化手段13bにより暗号化されたデータ(ハッシュ値(ライセンスファイル)とソフトウェアデータ)および秘密鍵K−1に対応する公開鍵K−2をソフトウェア供給装置1本体との電気的な接触により電子媒体に出力する。
【0027】
より詳細には、入出力手段11は、ソフトウェア供給装置1本体の筐体のいずれかの面に電子媒体(たとえば、USBメモリ、メモリーカード等)を着脱可能に格納するためのUSBポートまたはスロットとして形成される。
たとえば、入出力手段11がスロットである場合は、ソフトウェア供給装置1本体の筐体の幅方向に広がる開口部を有し、メモリーカードを筐体の上下面と平行な姿勢で挿入装着できるように形成されているものでもよい。
なお電子媒体(たとえばUSBメモリ、メモリーカード)は、内部に不揮発生のメモリを備えており、それ自体が書き換え可能で読み出し可能なシリアル番号を持つとともに、たとえばキー情報、暗号化されたハッシュ値とソフトウェアデータ等を記憶する。
【0028】
なお電子媒体は、CD(コンパクトディスク)やDVD(Digital Versatile Disc)などであってもよく、この場合、入出力手段11はCDドライブ、DVDドライブなどであってもよい。
【0029】
記憶手段12は、たとえばRAM(Random Access Memory)やROM(Read Only Memory)などであり、主にOSやソフトウェア供給装置1として動作させるためのプログラムやアプリケーション、これらプログラムなどの実行時に使用されるデータなどの各種情報を記憶するとともに、ソフトウェア実行装置2に供給するソフトウェアおよび暗号化のための秘密鍵K−1を記憶する。なお記憶手段12は、秘密鍵K−1に対応する公開鍵K−2も記憶するものでもよい
また、記憶手段12は、電子媒体を介して入力されるソフトウェア実行装置2の固有の情報を含むキー情報を記憶するものでもよい。
【0030】
演算制御部13は、各手段の動作を制御するCPU(Central Processing Unit)などからなり、主に、第1のハッシュ値算出手段13aと暗号化手段13bの機能を実行する。
演算制御部13は、電子媒体を介して入力されたソフトウェア実行装置2の固有の情報を含むキー情報を記憶手段12に記憶する。
ここで、演算制御部13は、記憶手段12に格納されているOSなどを起動して、このOS上で格納されたプログラムを読み出し実行することにより各手段または装置全体を制御し、ソフトウェア供給装置1固有の動作を行う。
このとき記憶手段12は、演算制御部13によって実行されるプログラムやアプリケーションをプログラム格納エリアに展開し、入力されたデータや、プログラムやアプリケーションの実行時に生じる処理結果などのデータをワークエリアに一時的に記憶するものであってもよい。
【0031】
第1のハッシュ値算出手段13aは、電子媒体を介して入力された(記憶手段11に記憶されていた)ソフトウェア実行装置2の固有の情報を含むキー情報のハッシュ値を算出する。
暗号化手段13bは、記憶手段11に記憶される秘密鍵K−1に基づき、第1のハッシュ値算出手段13aにより算出されたハッシュ値(必要であればソフトウェアデータ)を暗号化し、秘密鍵を用いた電子署名データを生成する。
なお暗号化手段13bにより暗号化されたハッシュ値はライセンスファイルとして取り扱われる。
これらの第1のハッシュ値算出手段13aと暗号化手段13bは、演算制御部13が記憶手段12に格納されているOSなどを起動して、このOS上で格納されたプログラムやアプリケーションを読み出し実行することにより制御されるものでもよい。
【0032】
ソフトウェア実行装置2は、主に、第2の外部入出力手段の一例である入出力手段21と、記憶手段22と、演算制御部23と、キー情報生成手段23aと、第2のハッシュ値算出手段23bと、復号化手段23cと、合否判定手段23dと、ソフトウェア実行手段23eと、から構成される。ここで復号化手段23cと合否判定手段23dは検証部23Xを構成する。
【0033】
入出力手段21は、ソフトウェア実行装置2本体との電気的な接触によりソフトウェア実行装置2の固有の情報(BIOSのシリアル番号、OSのシリアル番号、ネットワークカードのMACアドレス等やこれらの組合せ)を含むキー情報を電子媒体に出力し、この電子媒体を着脱可能に格納するものである。
また、入出力手段21は、電子媒体からソフトウェア供給装置1により暗号化されたデータ(ハッシュ値とソフトウェアデータ)および公開鍵K−2が入力される。
【0034】
より詳細には、入出力手段21は、ソフトウェア実行装置2本体の筐体のいずれかの面に電子媒体(たとえば、USBメモリ、メモリーカード等)を着脱可能に格納するためのUSBポートまたはスロットとして形成される。
たとえば、入出力手段21がスロットである場合は、ソフトウェア実行装置2本体の筐体の幅方向に広がる開口部を有し、メモリーカードを筐体の上下面と平行な姿勢で挿入装着できるように形成されているものでもよい。
なお電子媒体(たとえばUSBメモリ、メモリーカード)は、内部に不揮発生のメモリを備えており、たとえばキー情報、暗号化されたハッシュ値(ライセンスファイル(電子署名データ))とソフトウェアデータ等を記憶する。
【0035】
なお電子媒体は、CD(コンパクトディスク)やDVD(Digital Versatile Disc)などであってもよく、この場合、入出力手段21はCDドライブ、DVDドライブなどであってもよい。
【0036】
記憶手段22は、たとえばRAMやROMなどであり、主にOSやソフトウェア実行装置2として動作させるためのプログラムやアプリケーション、これらプログラムなどの実行時に使用されるデータなどの各種情報を記憶するとともに、ソフトウェア実行装置2の固有の情報(BIOSのシリアル番号、OSのシリアル番号、ネットワークカードのMACアドレス等やこれらの組合せ)、ソフトウェア供給装置1からの暗号化データ(ハッシュ値、ソフトウェアデータ)を復号化するための公開鍵K−2(秘密鍵K−1に対応する公開鍵)を記憶する。
なお公開鍵K−2は、予め取得しているものでもよいし、ソフトウェア供給装置1からの暗号化されたデータとともに取得するものでもよい。
また、記憶手段22は、ソフトウェア実行装置2の固有の情報を含むキー情報を記憶するものでもよい。
【0037】
演算制御部23は、各手段の動作を制御するCPUなどからなり、主にキー情報生成手段23a、第2のハッシュ値算出手段23b、復号化手段23c、合否判定手段23d、ソフトウェア実行手段23eの機能を実行する。
演算制御部23は、電子媒体を介して入力されたソフトウェア供給装置1からの暗号化されたデータ(キー情報のハッシュ値およびソフトウェアデータ)を記憶手段22に記憶する。
【0038】
ここで、演算制御部23は、記憶手段22に格納されているOSなどを起動して、このOS上で格納されたプログラムを読み出し実行することにより各手段または装置全体を制御し、ソフトウェア実行装置2固有の動作を行う。
このとき記憶手段22は、演算制御部23によって実行されるプログラムやアプリケーションをプログラム格納エリアに展開し、入力されたデータや、プログラムやアプリケーションの実行時に生じる処理結果などのデータをワークエリアに一時的に記憶するものであってもよい。
【0039】
キー情報生成手段23aは、記憶手段22に記憶されているソフトウェア実行装置2の固有の情報、たとえばBIOSのシリアル番号、OSのシリアル番号、ネットワークカードのMACアドレス等と、前記着脱可能な電子媒体の固有情報から、少なくともいずれかを抽出してキー情報を生成する、または、いずれかの情報を組み合わせてキー情報(プロテクトキー(鍵))を生成する。
たとえば、キー情報生成手段23aは、記憶手段22の固有の情報からOSのシリアル番号、ネットワークカードのMACアドレスを組み合わせたものをキー情報として生成する。
キー情報生成手段23aが生成したキー情報は、記憶手段22に記憶されるものでもよい。
【0040】
第2のハッシュ値算出手段23bは、キー情報生成手段23aにより生成されたキー情報のハッシュ値を算出する。
【0041】
復号化手段23cは、入力された暗号化データと共に取得した公開鍵K−2に基づき、電子媒体、入出力手段21を介して入力された(記憶手段21に記憶されていた)、ソフトウェア供給装置1により暗号化されたデータ(ライセンスファイル(電子署名データ))を復号化する(必要であれば暗号化されたソフトウェアも復号化する)。
復号化された各データは、記憶手段21に記憶されるものでもよい。
【0042】
合否判定手段23dは、第2のハッシュ値算出手段23bにより算出されたハッシュ値と復号化手段23cにより復号化されて得られたハッシュ値とが一致するか否かによりソフトウェアのインストールまたは実行(利用)の可否を判定する。いいかえれば、合否判定手段23dは、電子署名されたデータを検証する。
【0043】
すなわち、復号化手段23cと合否判定手段23dから構成される検証部23Xは、第2のハッシュ値算出手段が算出したハッシュ値に基づき電子署名データを検証してソフトウェアのインストールまたは実行の可否を判定することになる。
【0044】
ソフトウェア実行手段23eは、合否判定手段23dにより入力されたソフトウェアのインストールまたは実行(利用)が可能であると判定されると、ソフトウェア供給装置1からのソフトウェアデータ(または復号化手段23cにより復号化されたソフトウェアデータ)を実行する。
【0045】
なお、これらのキー情報生成手段23a、第2のハッシュ値算出手段23b、復号化手段23c、合否判定手段23d、ソフトウェア実行手段23eは、演算制御部23が記憶手段22に格納されているOSなどを起動して、このOS上で格納されたプログラムやアプリケーションを読み出し実行することにより制御されるものでもよい。
【0046】
また、ソフトウェア供給装置1のハッシュ値算出手段13aとソフトウェア実行装置2のハッシュ値算出手段23bとがキー情報のハッシュ値の算出に使用するハッシュ関数は、同一であるものとする。
これにより、合否判定手段23dが算出されたハッシュ値と復号化されて得られたハッシュ値とが一致するか否かによりソフトウェアのインストールまたは実行(利用)の可否を判定できる。
【0047】
(主な構成要素の配置・接続関係の説明)
ソフトウェア供給装置1の演算制御部13は、バスなどの接続線を介して入出力手段11、記憶手段12と接続される。ハッシュ値算出手段13aは、記憶手段12と暗号化手段13bと相互に接続され、暗号化手段13bは、入出力手段11と記憶手段12と相互に接続される。
【0048】
ハッシュ値算出手段13aは、記憶手段12からキー情報を読み出してハッシュ値を算出し、暗号化手段13bは算出されたハッシュ値および記憶手段12からソフトウェアデータを読み出して暗号化する。
入出力手段11は、暗号化手段13bにより暗号化されたデータ(ハッシュ値、ソフトウェア)を電子媒体に出力する。
【0049】
ソフトウェア実行装置2の演算制御部23は、バスなどの接続線を介して入出力手段21、記憶手段22と接続される。キー情報生成手段23aは、記憶手段22とハッシュ値算出手段23b、入出力手段21と相互に接続される。
ハッシュ値算出手段23bは、入出力手段21と合否判定手段23dとも相互に接続される。復号化手段23cは、記憶手段22と、合否判定手段23dと相互に接続され、ソフトウェア実行手段23eは、合否判定手段23dと記憶手段22と相互に接続される。
【0050】
キー情報生成手段23aは、記憶手段22からソフトウェア実行装置2の固有の情報を読み出してキー情報を生成し、ハッシュ値算出手段23bはキー情報生成手段23aからのキー情報のハッシュ値を算出する。
復号化手段23cは記憶手段22から暗号化されたデータを読み出して復号化し復号化されたソフトウェアデータを記憶手段22に記憶する。
合否判定手段23dは、ハッシュ値算出手段23bにより算出されたハッシュ値と復号化手段23cにより復号化されたハッシュ値とを比較し、ソフトウェアのインストールまたは実行可否を判定する。
ソフトウェア実行手段23eは、合否判定手段23dによりソフトウェアのインストールまた実行が可能である判定された場合は記憶手段22から復号化手段23cにより復号化されたソフトウェアを読み出してインストールまたは実行する。
【0051】
(動作説明)
このような構成で、本発明のソフトウェア実行システムは、次の動作を行なう。図2は、図1のソフトウェア実行システムの動作フロー図である。
【0052】
ステップS101の動作の前に、ソフトウェア実行装置2のキー情報生成手段23aが記憶手段22の固有の情報と、前記着脱可能な電子媒体の固有情報からたとえばOSのシリアル番号・ネットワークカードのMACアドレスを組み合わせたものをキー情報として生成し、入出力手段21が、生成されたキー情報を電子媒体に出力し記憶させる。
ソフトウェア供給装置1では、この電子媒体を介して入出力手段11がキー情報を取得する。
【0053】
本発明では、このように、ドングルのような特殊なハードウェアではなく、コンピュータが標準的に備えている固有の情報をキーとして利用する点が特徴的である。
なおドングルの代替として、市販のごく安価なUSBフラッシュメモリのUSBのシリアル番号を組合せて利用するのでも良い。
【0054】
ステップS101において、ソフトウェア供給装置1のハッシュ値算出手段13aは、電子媒体を介して取得したソフトウェア実行装置2の固有の情報を含むキー情報のハッシュ値を算出する。
すなわち、ソフトウェア供給装置1のハッシュ値算出手段13aは、既知のキー情報に基づきハッシュ値を算出することになる。
【0055】
ステップS102において、ソフトウェア供給装置1の暗号化手段13bは、暗号化手段13bは算出されたハッシュ値を読み出して暗号化し、ライセンスファイル(電子署名データ)を生成する。
【0056】
ステップS103において、ソフトウェア供給装置1の入出力手段11は、ライセンスファイル(電子署名データ)を電子媒体に出力し、電子媒体はこれを記憶する(必要であればソフトウェアデータもともに記憶する)。このとき入出力手段11は、ライセンスファイル(電子署名データ)とともに公開鍵K−2も電子媒体に出力するものでもよい。
【0057】
ステップS104において、ソフトウェア実行装置2の入出力手段21は、ソフトウェア供給装置1によりライセンスファイル(電子署名データ)を取得する(必要であればソフトウェアデータもともに取得する)。このとき入出力手段21は、ライセンスファイル(電子署名データ)とともに公開鍵K−2も電子媒体から取得するものでもよく、取得された公開鍵K−2は記憶手段に記憶されるものでもよい。
【0058】
ステップS105において、復号化手段23cは、外部より取得した(記憶手段21に記憶されていた)ソフトウェア供給装置1からのライセンスファイル(電子署名データ)を、記憶手段22の公開鍵K−2に基づいて復号化する。(必要であれば復号化手段23cは、ソフトウェア供給装置1からの暗号化されたソフトウェアを復号化するものでもよい。)
このとき復号化手段23cは復号化された各データを記憶手段21に記憶するものでもよい。
【0059】
ステップS106において、キー情報生成手段23aは、記憶手段22の固有の情報と前記着脱可能な電子媒体の固有情報の組み合わせから、たとえばOSのシリアル番号、ネットワークカードのMACアドレスを組み合わせたものをキー情報として生成する。このとき、キー情報生成手段23aは、生成したキー情報を記憶手段22に記憶するものでもよい。
【0060】
ステップS107において、ハッシュ値算出手段23bは、キー情報生成手段23aにより生成されたキー情報のハッシュ値を算出する。
【0061】
なおステップS105の動作と、ステップS106、107の動作の順序はこれに限定するものではなく、合否判定手段がステップS108にて算出されたハッシュ値と復号化されたハッシュ値とを比較することができればどのような順序であってもよい。
【0062】
ステップS108において、合否判定手段23dは、ハッシュ値算出手段23bにより算出されたハッシュ値と復号化手段23cにより復号化されたハッシュ値とを比較し、ハッシュ値とが一致するか否かによりソフトウェアのインストールまたは実行の可否を判定する。
【0063】
ステップS109において、合否判定手段23dは、算出されたハッシュ値と復号化されたハッシュ値とが一致する場合であれば、ソフトウェア実行装置2がソフトウェアの実行・インストールにあたり正当権限を有するソフトウェア実行装置(コンピュータ)であるとして、ソフトウェアのインストールまたは実行(利用)が可能であると判定しステップS110に移行する。
一方、合否判定手段23dは、算出されたハッシュ値と復号化されたハッシュ値とが一致しない場合であれば、ソフトウェア実行装置2が正当権限を有しないソフトウェア実行装置(コンピュータ)であるとして、ソフトウェアのインストールまたは実行(利用)を許可しない。
【0064】
このため、悪意の第三者がライセンスファイルとソフトウェアデータ(実行ファイル)を不正コピーして異なるソフトウェア実行装置(ハードウェア)でソフトウェアのインストールまたは実行(利用)を試みたとしても、ソフトウェア実行装置の固有の情報(ハードウェア固有情報)の不一致からハッシュ値は一致せず実行が不可能となるため、確実にソフトウェアの実行権限を特定のソフトウェア実行装置に制限できる点で有効である。
また、そのハードウェア固有情報に対応するライセンスを生成するには秘密鍵が必要であるところ、本発明のソフトウェア供給装置2は、暗号されたデータとともに配布されるのは公開鍵だけであることから、公開鍵から秘密鍵を生成することができないため、正しいライセンスファイルを生成できず、確実にソフトウェアの実行権限を特定のソフトウェア実行装置に制限できる点で有効である。
【0065】
ステップS110において、ソフトウェア実行手段23eは、合否判定手段23dにより入力されたソフトウェアのインストールまたは実行(利用)が可能であると判定されると、復号化手段23cにより復号化されたソフトウェアデータを実行する。
【0066】
この結果、本発明のソフトウェア実行システムは、ソフトウェア実行装置の固有の情報を含むキー情報のハッシュ値を算出する第1のハッシュ値算出手段と、ハッシュ値とソフトウェアデータを暗号化する暗号化手段を備え、ソフトウェア実行装置にソフトウェアを供給するソフトウェア供給装置を具備し、ソフトウェア実行装置が、自機の固有の情報を含むキー情報のハッシュ値を算出する第2のハッシュ値算出手段と、ソフトウェア供給装置により暗号化されたデータを復号化する復号化手段と、第2のハッシュ値算出手段により算出されたハッシュ値と復号化手段により復号化されて得られたハッシュ値とが一致するか否かによりソフトウェアのインストールまたは実行の可否を判定する合否判定手段とを備えたことにより、特別なハードウェア(ドングル等)を用いずに簡便で確実にソフトウェアの実行権限を特定のソフトウェア実行装置に制限できる点で有効である。
【0067】
また本発明では、ソフトウェア実行装置とソフトウェア供給装置とが公開鍵暗号方式(非対称鍵)を用いているため、ソフトウェア実行装置の固有の情報が漏洩することにより公知となっても、秘密鍵K−1を入手しない限りライセンスファイルを生成することが不可能であることにより、確実にソフトウェアの実行権限を特定のソフトウェア実行装置に制限できる点で有効である。
また、仮に逆アセンブル等の手法でソフトウェアのアルゴリズムが破られても、利用者が秘密鍵を入手しない限りライセンスを生成することが不可能であるため、確実にソフトウェアの実行権限を特定のソフトウェア実行装置に制限できる点で有効である。
【0068】
また本発明では、ソフトウェア供給装置が多数のソフトウェア実行装置へソフトウェアを配布する(インストールする)際に、配布するソフトウェアは同一のもので良く、配布先のソフトウェア実行装置ごとに(異なる鍵を含む)異なるソフトウェアをビルドする必要がないため、簡便で確実にソフトウェアの実行権限を特定のソフトウェア実行装置に制限できる点で有効である。
また本発明であれば、管理する秘密鍵と公開鍵は1組で良く、配布先ごとに異なる鍵を生成・管理する必要も無い点で有効である。
【0069】
すなわち、本発明であれば、公開鍵暗号方式を利用し、秘密鍵はソフトウェア供給装置側が保持することで、実行権限を与える方法(ソフトウェア実行装置におけるどの固有情報を利用しているか、また、どのようなアルゴリズムを利用しているか)が見破られても、ライセンスを偽造することが不可能となり、簡便で確実にソフトウェアの実行権限を特定のソフトウェア実行装置に制限できる点で有効である。
【0070】
また、本発明であれば、ソフトウェア供給装置1とソフトウェア実行装置2とがインターネット等のネットワークを介して相互接続していない環境でも、ソフトウェアのインストールのための初期作業を行えば継続的に実行権限に制限を行える点で有効である。
【0071】
また、本発明であれば、ソフトウェア実行装置1の複数の固有情報を組合せることで、キー情報に利用する固有情報の種類やその組合せ方に任意性があり、従来のように単一のドングルに依存する方法と比較して不正利用に対する強度を高められる点で有効である。
【0072】
<第2の実施例>
本発明のソフトウェア実行システムは、ソフトウェア供給装置1がソフトウェア実行装置1の固有の情報を含むキー情報をインターネット等のネットワークを介して取得し、キー情報のハッシュ値を生成、発行するものでもよい。
このとき、ソフトウェア供給装置1は、ソフトウェア実行装置2からキー情報のハッシュ値をネットワークを介して取得するものでもよい。
さらに、ソフトウェア供給装置1は、ソフトウェア実行装置2からキー情報およびキー情報のハッシュ値をネットワークを介して取得するものでもよい。
【0073】
図3は、本発明に係るソフトウェア実行システムのその他の一実施例を示す構成図であり、図1と共通する部分には同一の符号を付けて適宜説明を省略する。
図1との相違点は、主に、ソフトウェア供給装置1が入出力手段11の代わりにネットワークを介してデータの送受信を行なう通信手段15を備えた点と、ソフトウェア実行装置2が入出力手段21の代わりにネットワークを介してデータの送受信を行なう通信手段25を備えた点である。
また、ソフトウェア供給装置1では、ソフトウェア実行装置2からキー情報のハッシュ値をネットワークを介して取得する場合にあっては、ソフトウェア実行装置2のハッシュ値算出手段23bが、キー情報生成手段により生成されたキー情報のハッシュ値を算出する点についても相違する。
【0074】
図3において、本発明のソフトウェア実行システムのソフトウェア供給装置1は、主に、第1の通信手段の一例である通信手段15と、記憶手段12と、演算制御部13と、第1のハッシュ値算出手段13aと、暗号化手段13bと、から構成される。
【0075】
通信手段15は、インターネット等のネットワーク100と接続され、ネットワーク通信を行うことを可能とするものである。
通信手段15は、演算制御部13と接続され、通信手段15がネットワーク100を介してソフトウェア実行装置2から受信したキー情報またはハッシュ値は記憶手段12に記憶される。
また通信手段15は、暗号化手段13bと接続され、暗号化されたデータ(ハッシュ値およびソフトウェアデータ)と公開鍵K−2とをネットワーク100を介してソフトウェア実行装置2に送信する。
【0076】
ソフトウェア実行装置2は、主に、第2の通信手段の一例である通信手段25と、記憶手段22と、演算制御部23と、キー情報生成手段23aと、第2のハッシュ値算出手段23bと、復号化手段23cと、合否判定手段23dと、ソフトウェア実行手段23eと、から構成される。
【0077】
通信手段25は、インターネット等のネットワーク100と接続され、ネットワーク通信を行うことを可能とするものである。
通信手段25は演算制御部23と接続され、通信手段25がネットワーク100を介して受信したソフトウェア供給装置1からの暗号化データおよび公開鍵K−2は、記憶手段22に記憶される。
また通信手段25は、キー情報生成手段23aと接続され、生成されたキー情報をネットワーク100を介してソフトウェア供給装置1に送信する。
【0078】
さらに通信手段25は、ハッシュ値算出手段23bと接続され、算出されたキー情報のハッシュ値をネットワーク100を介してソフトウェア供給装置1に送信するものでもよい。
【0079】
このような構成で、本発明のソフトウェア実行システムは、上述したステップS101〜S110の動作を行なうが、既に説明した動作と共通する部分については適宜説明を省略する。
【0080】
ステップS101の動作の前に、ソフトウェア実行装置2のキー情報生成手段23aが記憶手段22の固有の情報からたとえばOSのシリアル番号・ネットワークカードのMACアドレスを組み合わせたものをキー情報として生成し、通信手段25が、生成されたキー情報をネットワーク100を介してソフトウェア供給装置1に送信する。
ソフトウェア供給装置1の通信手段15は、ネットワーク100を介してキー情報を受信し、このキー情報は記憶手段12に記憶される。
【0081】
ステップS103において、ソフトウェア供給装置1の通信手段15は、暗号化されたデータ(ハッシュ値(ライセンスファイル)、ソフトウェアデータ)をネットワーク100を介して出力する。このとき通信手段15は、暗号化されたデータとともに公開鍵K−2も出力するものでもよい。
【0082】
ステップS104において、ソフトウェア実行装置2の通信手段15は、ネットワーク100を介して、ソフトウェア供給装置1により暗号化されたデータ(ハッシュ値とソフトウェアデータ)を受信する。このとき通信手段25は、暗号化されたデータとともに公開鍵K−2も取得するものでもよく、取得された公開鍵K−2は、記憶手段に記憶されるものでもよい。
【0083】
なお本実施例2の構成であっても、実施例1に示した着脱可能な電子媒体を介して固有情報を共有する構成とするものであってもよい。
【0084】
この結果、本発明のソフトウェア実行システムは、ソフトウェア実行装置の固有の情報を含むキー情報のハッシュ値を算出する第1のハッシュ値算出手段と、ハッシュ値とソフトウェアデータを暗号化する暗号化手段と、ネットワークを介して暗号化されたハッシュ値とソフトウェアデータとを送信する第1の通信手段を備え、ソフトウェア実行装置にソフトウェアを供給するソフトウェア供給装置を具備し、ソフトウェア実行装置が、ネットワークを介して暗号化されたハッシュ値とソフトウェアデータを受信する第2の通信手段と、自機の固有の情報を含むキー情報のハッシュ値を算出する第2のハッシュ値算出手段と、ソフトウェア供給装置により暗号化されたデータを復号化する復号化手段と、第2のハッシュ値算出手段により算出されたハッシュ値と復号化手段により復号化されて得られたハッシュ値とが一致するか否かによりソフトウェアのインストールまたは実行の可否を判定する合否判定手段とを備えたことにより、特別なハードウェア(ドングル等)を用いずに簡便で確実にソフトウェアの実行権限を特定のソフトウェア実行装置に制限できる点で有効である。
【0085】
なお、上述の実施例1の構成では、ソフトウェア実行装置2の固有の情報をキー情報(プロテクトキー(鍵))として利用しているので、キー情報のハッシュ値を暗号化されたデータであるライセンスファイルを生成するためにはソフトウェアのインストール(利用)時にソフトウェア供給装置1にソフトウェア実行装置2で生成されたキー情報を事前に供給する必要があった。
このため、ソフトウェア実行装置2へソフトウェアをインストールして出荷するようなタイプの製品には有効である一方、上記の実施例1の構成のままではパッケージ販売やダウンロード販売を行うことができないという問題点があった。
これに対して上述の実施例2の構成であれば、ソフトウェア実行装置2の固有の情報を含むキー情報をインターネット等のネットワークを介して伝送(収集)し、ソフトウェア供給装置1がキー情報のハッシュ値を暗号化されたライセンスファイルを生成、発行することにより、上述の問題点を解決でき、パッケージ販売やダウンロード販売によるライセンシングが可能となる点で有効である。
また、本発明であれば、ソフトウェア供給装置1を利用する提供者(オペレータ)のソフトウェア実行装置2へのインストールのための出張等の作業が不要となり、以降は自動的、継続的に実行権限に制限を行うことができる点で有効である。
【0086】
また、本発明に係るソフトウェア実行システムは、ソフトウェア供給装置1とソフトウェア実行装置2とが導入時のみネットワークに接続するものであってもよい。
【0087】
また、本発明に係るソフトウェア実行システムは、ソフトウェア実行装置2がキー情報またはキー情報のハッシュ値をメール等で送信するのでなく、ソフトウェア実行装置2のキー情報生成手段23aが任意選択可能なタイミングでキー情報を生成し(またはハッシュ値算出手段23bが自動的にキー情報のハッシュ値を算出し)、通信手段15を介して任意選択可能なタイミングでキー情報、ハッシュ値をネットワーク100を介して送信するものでもよい。
このとき、ソフトウェア供給装置1は、ネットワーク100を介してキー情報またはハッシュ値等を受信すると、ハッシュ値算出手段13aがキー情報のハッシュ値を算出し暗号化手段13bが暗号化して自動的にラインセンスファイルを生成するものでもよい。
この場合であれば、秘密鍵はソフトウェア供給装置1側にのみに存在するため悪意の第三者はアルゴリズムが分かっても不正なライセンスファイルを生成することができないことにより、簡便で確実にソフトウェアの実行権限を特定のソフトウェア実行装置に制限できる点で有効である。
なお、ネットワークへ接続はライセンス発行時のみで良いので、その後のソフトウェア実行時にはネットワークへ接続する必要は無い。
【0088】
なお、本実施例2におけるソフトウェア実行システムでは、ソフトウェア供給装置1がソフトウェアのインストール(利用)に係る課金、入金等による利用権限の確認をした後にライセンスファイル発行を行うものでもよく、これにより簡便で確実にソフトウェアの実行権限を特定のソフトウェア実行装置に制限できる点で有効である。
【符号の説明】
【0089】
1 ソフトウェア供給装置
11 (第1の外部)入出力手段
12 記憶手段
13 演算制御手段
13a (第1の)ハッシュ値算出手段
13b 暗号化手段
15 (第1の)通信手段
2 ソフトウェア実行装置
21 (第2の外部)入出力手段
22 記憶手段
23 演算制御手段
23a キー情報生成手段
23b (第2の)ハッシュ値算出手段
23c 復号化手段
23d 合否判定手段
23e ソフトウェア実行手段
25 (第2の)通信手段

【特許請求の範囲】
【請求項1】
外部から供給されるソフトウェアのインストールまたは実行の可否を判定するソフトウェア実行装置を備えたソフトウェア実行システムにおいて、
前記ソフトウェア実行装置の固有の情報、着脱可能な電子媒体の固有情報、これらの組み合わせの少なくともいずれかを含むキー情報のハッシュ値を算出する第1のハッシュ値算出手段と、前記ハッシュ値を暗号化して電子署名データを生成する暗号化手段を備え、前記ソフトウェア実行装置に前記ソフトウェアと前記電子署名データを供給するソフトウェア供給装置を具備し、
前記ソフトウェア実行装置が、
自機の固有の情報、着脱可能な電子媒体の固有情報、これらの組み合わせの少なくともいずれかを含むキー情報のハッシュ値を算出する第2のハッシュ値算出手段と、
前記第2のハッシュ値算出手段が算出したハッシュ値に基づき前記電子署名データを検証して前記ソフトウェアのインストールまたは実行の可否を判定する検証部とを備えたことを特徴とするソフトウェア実行システム。
【請求項2】
前記検証部は、
前記ソフトウェア供給装置からの前記電子署名データを復号化する復号化手段と、
前記第2のハッシュ値算出手段が算出したハッシュ値と前記復号化手段が復号化して得られた前記ハッシュ値とが一致するか否かを判定することで前記ソフトウェアのインストールまたは実行の可否を判定する合否判定手段とを備えたことを特徴とする請求項1記載のソフトウェア実行システム。
【請求項3】
前記ソフトウェア供給装置は、
前記キー情報を入力する電子媒体を着脱可能に格納する第1の外部入出力手段を備え、
前記ソフトウェア実行装置は、
前記キー情報を前記電子媒体に出力し、この電子媒体を着脱可能に格納する第2の外部入出力手段を備えることを特徴とする請求項1または2に記載のソフトウェア実行システム。
【請求項4】
前記第1の外部入出力手段は、
前記暗号化された前記ハッシュ値とソフトウェアデータを前記電子媒体に出力し、
前記第2の外部入入出力手段は、
前記電子媒体に前記暗号化された前記ハッシュ値とソフトウェアデータの入力を行うことを特徴とする請求項3記載のソフトウェア実行システム。
【請求項5】
前記ソフトウェア供給装置は、
ネットワークを介して前記キー情報を受信する第1の通信手段を備え、
前記ソフトウェア実行装置は、
前記キー情報を前記ネットワークを介して送信する第2の通信手段を備えることを特徴とする請求項1〜4のいずれかに記載のソフトウェア実行システム。
【請求項6】
前記ソフトウェア供給装置の前記第1の通信手段は、
前記ネットワークを介して前記暗号化された前記ハッシュ値とソフトウェアデータとを送信し、
前記ソフトウェア実行装置の前記第2の通信手段は、
前記ネットワークを介して前記暗号化された前記ハッシュ値とソフトウェアデータを受信することを特徴とする請求項5記載のソフトウェア実行システム。
【請求項7】
前記ソフトウェア供給装置の第1のハッシュ値算出手段は、
既知の前記キー情報に基づきハッシュ値を算出することを特徴とする請求項1〜6のいずれかに記載のソフトウェア実行システム。
【請求項8】
前記ソフトウェア供給装置の暗号化手段は、
秘密鍵に基づき前記ハッシュ値とソフトウェアデータを暗号化し、
前記ソフトウェア供給装置は、
前記暗号化されたデータと共に前記秘密鍵に対応する公開鍵を前記ソフトウェア実行装置に提供する手段を有し、
前記ソフトウェア実行装置の復号化手段は、
前記電子署名されたデータを検証することを特徴とする請求項1記載のソフトウェア実行システム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate