JP2004309737A - 復号鍵保護プログラム及び復号鍵保護方法 - Google Patents
復号鍵保護プログラム及び復号鍵保護方法 Download PDFInfo
- Publication number
- JP2004309737A JP2004309737A JP2003102440A JP2003102440A JP2004309737A JP 2004309737 A JP2004309737 A JP 2004309737A JP 2003102440 A JP2003102440 A JP 2003102440A JP 2003102440 A JP2003102440 A JP 2003102440A JP 2004309737 A JP2004309737 A JP 2004309737A
- Authority
- JP
- Japan
- Prior art keywords
- decryption key
- software
- program
- encrypted
- decryption
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Abstract
【課題】暗号化されたソフトウェアプログラムの復号鍵を安全に保護する。
【解決手段】ソフトウェアを予め決められた利用条件の下で利用者に利用させるサービスに於いて、前記利用者以外の者が生成した鍵によって暗号化されたソフトウェアプログラム10aとともに、前記利用者の端末2に格納される復号鍵保護プログラムであって、利用状況を前記ソフトウェアの利用毎に更新することが出来る利用状況データベース12aを、端末2以外の端末による読みとり、更新が出来ないような状態で、端末2に生成する利用状況生成手段12と、利用状況データベース12aに格納された利用状況と、前記利用条件との照合を行い、前記利用状況が前記利用条件を超えない場合に限り、利用状況データベース12a内の利用状況を更新し、暗号化されたソフトウェアプログラム10aの復号鍵5を復号鍵格納ファイル16の中から解読する復号鍵解読手段13とを有する。
【選択図】図3
【解決手段】ソフトウェアを予め決められた利用条件の下で利用者に利用させるサービスに於いて、前記利用者以外の者が生成した鍵によって暗号化されたソフトウェアプログラム10aとともに、前記利用者の端末2に格納される復号鍵保護プログラムであって、利用状況を前記ソフトウェアの利用毎に更新することが出来る利用状況データベース12aを、端末2以外の端末による読みとり、更新が出来ないような状態で、端末2に生成する利用状況生成手段12と、利用状況データベース12aに格納された利用状況と、前記利用条件との照合を行い、前記利用状況が前記利用条件を超えない場合に限り、利用状況データベース12a内の利用状況を更新し、暗号化されたソフトウェアプログラム10aの復号鍵5を復号鍵格納ファイル16の中から解読する復号鍵解読手段13とを有する。
【選択図】図3
Description
【0001】
【発明の属する技術分野】
本発明は、利用条件が予め決められたソフトウェアやコンテンツを暗号化して、利用者に送付するに際し、悪意者のみならず、正当な利用者からも、暗号化されたソフトウェアやコンテンツを復号化するための鍵を安全に保護する技術に関するものである。
【0002】
【従来の技術】
近年、ソフトウェアや、画像・映像・音声等がデジタル化されたコンテンツを、有償・無償を問わずネットワークを介して利用者のパソコン等の受信端末にダウンロードさせるサービスが増えている。
【0003】
このようなサービスの増加に伴い生じた問題として、悪意者によるネットワーク上の盗聴(傍受)や、利用者によるソフトウェアやコンテンツの不正コピー等の不正利用が挙げられる。
【0004】
これらの問題を解決するため、特許文献1、特許文献2に開示されているように、公開鍵暗号方式を用いてコンテンツや、コンテンツ利用者の権利情報(コンテンツ利用可能回数・金額・期限等の利用条件。コンテンツ利用時に利用条件がチェックされる。)を暗号化するシステムや方法が知られる。
【0005】
【特許文献1】
特開2000−324096号公報
【特許文献2】
特開2002−300158号公報
【0006】
特許文献1に開示された発明によれば、利用者が予め自己の端末に於いて、この端末の識別情報(マシンID)に基づく秘密鍵を生成しておき、コンテンツ配信側の端末は利用者から受信したこの識別情報に基づいて公開鍵を生成することによって、コンテンツの盗聴防止、改ざん防止を行うことが出来る。
【0007】
特許文献2に開示された発明によれば、認証局が発行する電子証明書と、その電子証明書のハッシュ値を認証局の秘密鍵で暗号化した電子証明書とを、利用者のICカード内に格納し、これらを認証局の公開鍵で復号化することによってICカード及びこのICカードの所有者の正当性を確認してから、ICカードの所有者によるコンテンツの利用を可能とすることが出来る。
【0008】
上記いずれの文献に於いても、公開鍵暗号方式が利用されており、公開鍵暗号方式の利用は確かにコンテンツの盗聴・改ざんの防止には効果的である。しかし、コンテンツの利用者にとっては、コンテンツのダウンロードの都度秘密鍵を生成する手間、ICカードを所有する手間、電子証明書を発行させられる手間等が発生し、家庭に於けるネットワークの常時接続が普及した最近のコンテンツ利用事情に即していない。
【0009】
ここで、暗号方式を問わず、コンテンツや権利情報の改ざんによるコンテンツの不正利用を防止することが出来る方法が特許文献3に開示されている。
【0010】
【特許文献3】
特開2001−69133号公報
【0011】
特許文献3に開示された発明は、利用者の端末内のハードディスクには常に暗号化された状態のコンテンツや権利情報が格納され、コンテンツを利用する際にはコンテンツや権利情報の復号化が、利用者がアクセス出来ない記憶領域内で行われ、コンテンツ利用終了後は再び暗号化されてハードディスクに格納されることを特徴としている。
【0012】
しかし、特許文献3に開示された発明には、以下に掲げる課題があった。
【0013】
【発明が解決しようとする課題】
すなわち、コンテンツや権利情報の復号化に用いられる鍵は安全に利用者に送付されなければ、特許文献3に開示された発明によっても、悪意者による盗聴を防止することは不可能である。
【0014】
そこで、特許文献3に開示された発明に於いても、特許文献1や特許文献2に記載された公開鍵暗号方式を用いてコンテンツの暗号化を行えば、盗聴の危険性は減る。しかし、この場合、利用者による秘密鍵の生成が必須となり、利用者側の利便性が損なわれることは上述した通りである。
【0015】
又、共通鍵暗号方式を用いてコンテンツが暗号化された場合には、暗号化及び復号化に用いられる共通鍵を安全に送付することは難しくなるという問題が生じるため、結局のところ公開鍵暗号方式と兼用するしかないのが現状である。
【0016】
更に、利用者の良心が欠けているような場合には、暗号化されたコンテンツと権利情報に加え、コンテンツや権利情報の復号化に用いられる鍵を、丸ごと第三者に渡してしまえば、暗号方式の種類を問わず、利用者以外の者によるコンテンツの利用、すなわち不正利用が可能となってしまう。
【0017】
本発明は、このような問題点に鑑みてなされたものであって、その目的とするところは、ソフトウェアやコンテンツの提供者が、暗号化されたソフトウェアやコンテンツを利用者に送付するに際し、利用者がソフトウェアやコンテンツを利用する際の利便性を損なうことなく、復号鍵が保護され、結果としてソフトウェアやコンテンツの盗聴、改ざん、不正利用がされにくくなるような復号鍵保護プログラム及び復号鍵保護方法を提供することにある。
【0018】
【課題を解決するための手段】
上記目的を達成するために、本発明は、ソフトウェアプログラム及び/又はコンテンツデータを、予め決められた利用回数・金額・期限等の利用条件の下で利用者に利用させるソフトウェア・コンテンツ提供サービスに於いて、前記利用者以外の者が生成した鍵によって暗号化されたソフトウェアプログラム及び/又はコンテンツデータとともに、前記利用者の端末に格納される復号鍵保護プログラム及び、前記暗号化されたソフトウェアプログラム及び/又はコンテンツデータの復号鍵を保護する復号鍵保護方法であって、利用状況を前記ソフトウェア・コンテンツの利用毎に更新することが出来る利用状況データベースを、前記利用者の端末以外の端末による読みとり、更新が出来ないような状態で、前記利用者の端末に生成する利用状況生成手段と、前記利用状況データベースに格納された利用状況と、前記利用条件との照合を行い、前記利用状況が前記利用条件を超えない場合に限り、前記利用状況データベース内の利用状況を更新し、前記暗号化されたソフトウェアプログラム及び/又はコンテンツデータの復号鍵を復号鍵格納ファイルの中から解読する復号鍵解読手段とを有する構成を採用している。
【0019】
この構成により、暗号化されたソフトウェアプログラム及び/又はコンテンツデータの復号鍵が悪意者のみならず利用者からも保護され、しかも利用者に一定条件下でソフトウェア・コンテンツを利用させることが出来、利用者及び悪意者による不正利用を防止することが出来る。本発明により、盗聴や不正利用について心配することなく、又、利用者に鍵を生成する手間をかけることなく、ソフトウェアやコンテンツのダウンロードサービスが行われるようになる。
【0020】
請求項2及び請求項13に記載の発明は、
前記復号鍵解読手段に於いて解読された復号鍵を用いて、前記暗号化されたソフトウェアプログラム及び/又はコンテンツデータを復号化する復号化手段と、前記解読された復号鍵、及び、前記復号化されたソフトウェアプログラム及び/又はコンテンツデータを、前記利用者の端末のメインメモリ上に展開する展開手段とを有する復号鍵保護プログラム及び復号鍵保護方法である。
【0021】
請求項2及び請求項13の発明により、ソフトウェアプログラムやコンテンツデータがハードディスク上に格納されないため、利用条件を無視した利用や、コピー等の不正利用を防止することが出来る。
【0022】
請求項3及び請求項14に記載の発明は、
前記復号鍵は、共通鍵暗号方式により生成される復号鍵保護プログラム及び復号鍵保護方法である。
【0023】
請求項3及び請求項14の発明により、利用者は、復号化処理に時間がかからないので、利用者側の利便性が損なわれない。ソフトウェア・コンテンツ提供者側は、鍵の生成が容易となり、暗号化処理に時間がかからない。
【0024】
請求項4及び請求項15に記載の発明は、
前記復号鍵は、前記利用者毎に、乱数により生成される復号鍵保護プログラム及び復号鍵保護方法である。
【0025】
請求項4及び請求項15の発明により、復号鍵は、利用者毎に生成されるので、リプレイアタックによるハッキングからも保護される。
【0026】
請求項5及び請求項16に記載の発明は、
前記復号鍵格納ファイルは、前記復号鍵と、1以上の前記利用条件を内包し、前記復号鍵解読手段に於いてのみ前記復号鍵の解読が可能なように、前記利用者の端末に格納される復号鍵保護プログラム及び復号鍵保護方法である。
【0027】
請求項5及び請求項16の発明により、ソフトウェアやコンテンツの利用都度、復号鍵や利用条件をソフトウェア・コンテンツ提供者から入手する必要がなく、利用の迅速化が図られるとともに、一度、復号鍵格納ファイルを入手すれば、その後は盗聴等される危険性がなくなる。
【0028】
請求項6及び請求項17に記載の発明は、
前記復号鍵格納ファイルは、乱数等の第1の鍵を置換表で置換した第2の鍵によって暗号化される復号鍵保護プログラム及び復号鍵保護方法である。
【0029】
請求項6及び請求項17の発明により、復号鍵を含む復号鍵格納ファイルが暗号化されるので、より一層復号鍵の保護が図られる。
【0030】
請求項7及び請求項18に記載の発明は、
前記置換表は、前記ソフトウェア・コンテンツ提供者毎に生成される復号鍵保護プログラム及び復号鍵保護方法である。
【0031】
請求項7及び請求項18の発明により、同一のソフトウェア・コンテンツであっても販売者毎に置換表を変えれば、不正利用された場合に販売ルートまでの特定が可能となり、販売者の権利も保護される。
【0032】
請求項8及び請求項19に記載の発明は、
前記置換表は、前記ソフトウェアプログラム及び/又はコンテンツデータのバイナリデータから得られるハッシュ値等の一方向性関数によって暗号化される復号鍵保護プログラム及び復号鍵保護方法である。
【0033】
請求項8及び請求項19の発明により、ソフトウェアプログラム及び/又はコンテンツデータの改ざんを検知することが可能となる。
【0034】
請求項9及び請求項20に記載の発明は、
前記利用状況データベースは、前記利用者の端末に於いて、前記端末の識別情報(MACアドレス、BIOSのシリアル番号、ハードディスクのシリアル番号等)のハッシュ値等の一方向性関数によって暗号化される復号鍵保護プログラム及び復号鍵保護方法である。
【0035】
請求項9及び請求項20の発明により、利用状況データベースを利用者の端末以外の端末にコピーして利用することが不可能となる。
【0036】
請求項10及び請求項21に記載の発明は、
前記暗号化されたソフトウェアプログラムは、パッケージ化されている復号鍵保護プログラム及び復号鍵保護方法である。
【0037】
請求項11及び請求項22に記載の発明は、
前記暗号化されたコンテンツデータは、前記復号鍵格納ファイルに含まれている復号鍵保護プログラム及び復号鍵保護方法である。
【0038】
これら発明により、仮に復号鍵が知られたとしても、ソフトウェアプログラム及び/又はコンテンツデータを単独で実行することが出来なくなる。
【0039】
尚、本明細書に於いて、「復号鍵の保護」とは、悪意者による盗聴、改ざん等の不正利用のみならず、正当な利用者による不正利用からも、復号鍵が保護されることを指す。
【0040】
又、「ソフトウェアの利用」とは、ソフトウェアプログラムを(必要に応じて、インストールプログラムやその他のファイルやプログラムとともに)実行してそのソフトウェアプログラムが実現する機能を端末上で利用することを指し、「コンテンツの利用」とは、映像・画像・音声等がデジタル化されたコンテンツデータを、任意のプログラムを用いて、表示機器に表示させたり可聴状態とすることを指す。
【0041】
又、本発明の復号鍵保護プログラムやソフトウェア・コンテンツ等の「送付」には、ネットワークを介した利用者のダウンロードによる配信形態の他、これらいずれか1以上をCD−ROM等の可搬型の記録媒体に格納し、郵送等により利用者に送付する形態も含まれる。
【0042】
又、「ソフトウェア・コンテンツ提供者」には、ソフトウェア・コンテンツを作成したメーカーのみならず、ソフトウェア・コンテンツを直接利用者に提供又は販売する者も含まれるものとする。
【0043】
又、「利用者」とは、ソフトウェア・コンテンツ提供者に、特定のソフトウェア・コンテンツを利用することを認められた者を指す。
【0044】
又、「利用者の端末」は、本発明の復号鍵保護プログラムや、暗号化されたソフトウェアプログラム及び/又はコンテンツデータ等のプログラム、データファイルを格納し、実行・利用するために必要な構成(CPU、メインメモリ、外部記憶装置、通信用デバイス、入出力デバイス等)を有するものであり、通常のコンピュータであればよい。
【0045】
【発明の実施の形態】
以下、本発明の好適な実施の形態について、図1、図2、図3、図4を参照して詳細に説明する。図1は本発明にかかる復号鍵保護プログラム1の構成の一例を示している。尚、以下は、利用者が希望するソフトウェア(例えば、ワープロソフトや計算ソフト)を、予め決められた利用回数・金額・期限等の利用条件の下で利用者に利用させるために必要なプログラム(以下、復号鍵保護プログラム1という)やインストールプログラム4とともに、ソフトウェア提供者側の端末(以下、送信端末3という)から利用者端末2にネットワークを介して無償又は有償でダウンロードし、利用者端末2内のハードディスク等の外部記憶装置に格納させる形態を例に説明するが、ソフトウェアや復号鍵保護プログラム1の全部又は一部がCD−ROM等の可搬型記録媒体に格納され、利用者が各自、当該可搬型記録媒体から端末にコピーを行う形態であっても同様に適用可能である。
【0046】
又、本明細書に於いて、「利用者端末にダウンロード、コピー、格納、生成を行う」とは、利用者の端末内の書き換え可能な外部(補助)記憶装置にダウンロード等することを指す。書き換え可能な外部記憶装置には、その端末の内蔵ハードディスクや、端末と接続された外付けディスク(MOやFD)等の記憶装置が含まれる。但し、これらの記憶装置はその端末と1対1で対応可能なものであって、他の端末との共有ディスクや端末とネットワークを介して接続された外部記憶装置は含まないものとする。
【0047】
利用者端末2は、希望のソフトウェアを指定、選択等した上で、ソフトウェア提供者側の送信端末3やサーバからネットワークを介して、図1に示すパッケージ化されたソフトウェア11、復号鍵保護プログラム1、インストールプログラム4をダウンロードする。利用者端末2は、これらダウンロードしたプログラム等を格納し、実行・利用するために必要な構成(CPU、メインメモリ、外部記憶装置、通信用デバイス、入出力デバイス等)を有するものであり、通常のコンピュータであればよい。
【0048】
パッケージ化されたソフトウェア11には、暗号化されたソフトウェアプログラム10a、復号化手段18、パッケージ識別情報19(図示せず)が含まれる。
【0049】
復号鍵保護プログラム1には、復号鍵解読手段13、復号鍵格納ファイル16、利用状況生成手段12、展開手段14が含まれる。
【0050】
尚、図1では、復号鍵格納ファイル16の代わりに暗号化された復号鍵格納ファイル16aが復号鍵保護プログラム1に含まれ、更に、暗号化された置換表15aも含まれる。置換表15は、暗号化された復号鍵格納ファイル16aの復号化に必要な鍵の解読に必要である。各手段等の詳細は順次説明する。
【0051】
インストールプログラム4は、ダウンロードしたソフトウェアを実際に利用者端末2で利用出来るように各プログラムやデータの起動順序を制御する等のサポートを行うプログラムである。インストールプログラム4の中に、パッケージ化されたソフトウェア11及び復号鍵保護プログラム1が含まれていてもよい。
【0052】
まずは、パッケージ化されたソフトウェア11について、図2を参照しながら説明する。ソフトウェアは利用者端末2にダウンロード、格納される時には当然バイナリ形式のプログラムであるが、実際にソフトウェアを端末上で実行、利用したり、ディスプレイに表示させるためには、実行プログラムのみならず、ソフトウェアを実行するのに必要なプログラムが必要である。
【0053】
ソフトウェア提供者は、これら実行プログラムとソフトウェアを実行するのに必要なプログラム(以下、合わせてソフトウェアプログラム10という)を任意の乱数等の暗号鍵で暗号化し、暗号化されたソフトウェアプログラム10aとする。暗号化する理由は主に2点あり、1点は、このソフトウェアをダウンロードした正当な利用者であっても、後述する利用条件を満足しない限りはソフトウェアを利用出来ないようにするためであり、もう1点は、悪意者に容易に盗聴されるのを防止するためである。
【0054】
つまり、暗号化されたソフトウェアプログラム10aのみをダウンロードしたとしても、利用者であってもソフトウェアの利用は行えず、暗号化されたソフトウェアプログラム10aを復号化する過程を経て、初めてソフトウェアの利用が可能となる。
【0055】
更に、暗号化されたソフトウェアプログラム10aの復号化に必要な復号鍵5は、本発明に於いては、利用者が生成するものではなく、又、復号鍵格納ファイル16の中に利用者さえも容易に知ることが出来ない状態で保存されている。つまり、ソフトウェアの利用条件を満足した場合のみ、復号鍵5を得ることが出来、しかも、この解読過程に於いて得られた復号鍵5によってのみ、暗号化されたソフトウェアプログラム10aの復号化を可能としている。
【0056】
ここでは、暗号化・復号化に共通鍵暗号方式を用いるものとし、暗号鍵と復号鍵5は共通である。共通鍵暗号方式により生成された鍵による暗号化、復号化の処理時間は、公開鍵暗号方式による暗号化、復号化処理時間と比較して短いので、利用者にとってもソフトウェア提供者にとっても、利便性が損なわれることがない。
【0057】
この暗号鍵(復号鍵5)は利用者以外の者、つまり、本実施の形態に於いてはソフトウェア提供者によって生成された乱数である。復号鍵5は、本実施の形態に於いては、利用者毎かつソフトウェアの種類毎に生成される。従って、同一の利用者が複数の異なるソフトウェアをダウンロードする場合には、ソフトウェアの種類毎に異なる乱数が生成される。
【0058】
尚、復号鍵5は、利用者さえも容易に知ることが出来ない状態で保存され、解読が困難であるため、利用者毎ではなく単にソフトウェアの種類毎に変えるようにしてもよい。又、ソフトウェアメーカーが複数の販売者に同一ソフトウェアを販売委託する場合、その販売者毎に変えるようにしてもよい。そうすれば、ソフトウェア毎又は販売者毎に同一の暗号鍵で暗号化されたソフトウェアプログラム10aを、複数の利用者に共通にダウンロードさせることが出来るので、提供者側の暗号化処理の手間が減る。
【0059】
しかし、同一の暗号鍵を用いると、暗号化されたソフトウェアプログラム10aがパッケージ化されていない場合や、パッケージ化されていても暗号化されたソフトウェアプログラム10aが単独でハードディスク等に格納されてしまった場合には、リプレイアタックが可能となり、不正利用される可能性もある。従って、復号鍵5は本実施の形態に於けるように、ソフトウェアの種類毎、販売者毎のみならず、利用者毎に変えるのが望ましい。
【0060】
又、共通鍵暗号方式の代わりに公開鍵暗号方式を用いてもよいが、その場合には、利用者による鍵の生成の手間をなくすため、暗号鍵と復号鍵5のいずれも、ソフトウェア提供者側で生成するものとする。
【0061】
図2に示すように、暗号化されたソフトウェアプログラム10aと、暗号化されたソフトウェアプログラム10aを復号化するのに必要なプログラム類(復号化手段18、パッケージ識別情報19)とに、ヘッダ17を付加したものが、パッケージ化されたソフトウェア11となる。暗号化されたソフトウェアプログラム10aはパッケージ化されることにより、インストールプログラム4やその他のプログラムとの連動によってのみ、ソフトウェアが実行可能となるので、単独実行や利用者端末2のハードディスク等への格納が出来ないようになる。従って、利用者及び悪意者が復号鍵5を知り得たとしても、暗号化されたソフトウェアプログラム10aの復号化をすることが不可能であるし、又、実行プログラムのバイナリデータを改変してウィルスを作成したり不正利用の目的とすることが不可能となる。
【0062】
尚、図1に示した利用状況生成手段12、展開手段14等の、利用者によらず共通のファイルやプログラムであれば、パッケージに含んでもよい。逆に、復号化手段18をパッケージに含む必要は必ずしもない。又、複数種類のソフトウェアを利用者端末2内で利用する場合であって、ソフトウェアの種類によらず共通に使用可能な手段であれば、利用者端末2内に重複してダウンロードする必要は必ずしもないので、パッケージに含む必要はなく、別パッケージ又は別ファイルとして任意に利用者端末2にダウンロードさせればよい。
【0063】
復号化手段18は、暗号化された各種データを鍵等を用いて復号化するのに必要なプログラムである。尚、復号化手段18には、単に復号化を行う他、ハッシュ値の生成等を行ってもよい。又、ハッシュ値の生成等に必要なプログラムが別途用意され、利用者端末2にダウンロードされてもよい。
【0064】
パッケージ識別情報19は、ソフトウェアの種類及び/又はソフトウェア販売者を識別することが出来る情報であり、本実施の形態に於いては、パッケージ化されたソフトウェア11とともにダウンロードされた復号鍵解読手段13を起動するための入力情報として用いられる。
【0065】
次に、復号鍵保護プログラム1の詳細について図3を参照しながら説明する。復号鍵解読手段13は、暗号化されたソフトウェアプログラム10aを復号化するための復号鍵5を内包する復号鍵格納ファイル16と連携して、復号鍵5を解読する手段である。尚、上述したように、本実施の形態に於いては、復号鍵解読手段13は、パッケージ識別情報19の入力によって起動するようになっている。
【0066】
復号鍵解読手段13と、復号鍵格納ファイル16の構成の一例を図3に示す。尚、図3は、これらのプログラムやファイルが送信端末3からダウンロードされ、利用者端末2のハードディスクに格納されている状態を示すが、復号鍵格納ファイル16内の復号鍵5は、復号鍵解読手段13によってしか解読、取り出し出来ないようになっている。
【0067】
復号鍵解読手段13は、本実施の形態に於いては、照合・更新手段131、132、133を有する。照合・更新手段131、132、133は、復号鍵格納ファイル16内の利用条件と、後述する利用状況データベース12a内の利用状況とを順次照合して、利用状況が利用条件を超えない場合に限り、利用状況データベース12aを更新する。最終的に問題なく全ての照合が完了した場合にのみ、復号鍵格納ファイル16内の復号鍵5が解読され、展開手段14に於いてメインメモリ14a上に展開される。
【0068】
その後、復号化手段18は、解読された復号鍵5によってのみ、暗号化されたソフトウェアプログラム10aを復号化し、展開手段14が、復号化されたソフトウェアプログラム10をメインメモリ14a上に展開する。
【0069】
復号鍵格納ファイル16内部は、1以上の鍵と、1以上の利用条件と、復号鍵5で構成されている。鍵が照合・更新手段131、132、133に渡されることにより、鍵に対応する利用条件及び利用状況が取り出され、各々照合されるようになっている。
【0070】
復号鍵格納ファイル16は、本実施の形態に於いては、図1に示したように復号鍵保護プログラム1の一部として、パッケージ化されたソフトウェア11とともに初回ダウンロードされるので、以降は、ソフトウェアの利用都度、ネットワークを介して復号鍵5や利用条件を取得する必要がない。しかも、復号鍵5は、利用者毎、ソフトウェアの種類毎に異なるように生成されているので、一度復号鍵格納ファイル16を利用者端末2に格納してしまえば、以降は盗聴の危険がなくなる。
【0071】
図3の説明に戻ると、展開手段14は、復号化された復号鍵5や、復号鍵5によって復号化されたソフトウェアプログラム10や、その他の鍵をメインメモリ14aに一時的に格納する手段である。つまり、これらのデータや鍵は単独ではハードディスク等の外部記憶装置には保存することが出来ないようになっているため、予め決められた利用条件を超えてソフトウェアを利用したり、鍵を使用したり、復号化されたソフトウェアプログラム10を利用者が他人に渡すことは不可能である。
【0072】
従って、復号鍵解読手段13による、復号鍵格納ファイル16内の復号鍵5の解読過程を経なければ、復号鍵5は利用者であっても知り得ることが出来ないし、又、復号鍵5だけをハードディスク等に保存することは出来ない。
【0073】
利用状況生成手段12は、利用者自身による不正な更新が不可能な、及び利用者端末2以外の端末による読みとり、更新が出来ないような利用状況データベース12aを、利用者端末2の外部記憶装置にのみ生成する手段である。
【0074】
この利用状況データベース12a内には利用者端末2によるソフトウェアの利用状況が格納される。利用状況は、実際にソフトウェアを利用した回数、金額、日時等であり、利用者が利用者端末2でソフトウェアを利用する毎に、対応する利用条件(回数、金額、日時や期限等)を上回らないまで、つまり予め決められた利用限度に達するまで更新される。利用条件を超えてソフトウェアの利用がされそうになった場合には、その場でソフトウェアの利用や、ソフトウェア利用の前過程(復号鍵解読過程)を中止させる。
【0075】
尚、当然のことながら、ソフトウェア提供者は、ソフトウェアに応じて、ソフトウェア利用額の計算方法(例えば、1時間使用したら200円課金、1回利用毎に100円課金等)や利用回数の計数方法等を予め決めておく必要がある。
【0076】
又、送信端末3又は利用者端末2のいずれかには、利用者の利用状況を把握することが出来、かつ、利用状況データベース12aの更新に反映させることが出来るプログラム(例えば計数手段、計時手段、料金計算手段等)が必要となる。
【0077】
更に、利用条件の1つとして「金額」が設定されているような場合には、送信端末3側に課金手段を設け、利用者が予めその金額を何らかの手段(現金、振込、クレジットカード等)で支払い、その支払った事実がソフトウェア提供者側で確認されていることは当然必要である。
【0078】
利用状況データベース12aの読みとり、更新は、復号鍵解読手段13に於ける復号鍵5の解読過程に於いてのみしか行われず、その過程以外に於いて、利用者や悪意者による更新、改ざんはされないこととする。
【0079】
尚、利用状況データベース12a内の利用状況の無断更新、改ざん、不正利用等の検知は、公知のハッシュ(一方向性)関数技術等を用いれば可能である。例えば、利用状況を常に、直前に更新又は読みとりがされた時点の利用状況のハッシュ値で暗号化する等して、次の更新又は読みとり時に、正しいハッシュ値で暗号化されていたかどうかの整合性をチェックする。不正な読みとりや更新が実行されていた場合には、次に正規の読みとりや更新をしようとしても、利用状況が本来のハッシュ値で暗号化されていないか、正しい復号鍵を手に入れることが出来ないため、復号化が出来ない。又、例えば、利用状況の更新は1ずつ増やすことしか出来ない仕組みにしておき、本来利用状況を2回から3回に更新すべきところを、0回に改ざんすることは不可能なようにすることも出来る。
【0080】
このように、万一、不正な読みとりや改ざん等がされた場合には、その場でソフトウェアの利用や復号鍵5の解読を中止させるか、レジストリ等に暗号化してバックアップしておいた正しい利用状況を読み込んで、改ざんされた利用状況データベース12aを元の状態に復元させるようにする。
【0081】
利用状況データベース12aを利用者端末2にのみ生成可能とするためには、パッケージ化されたソフトウェア11等が最初にダウンロードされた端末に於いて1回のみ、データベースの生成が可能なプログラムを設けるか、ダウンロード前に送信端末3が予め利用者端末2の識別情報(MACアドレス、BIOSのシリアル番号、ハードディスクのシリアル番号等)を認識し、その識別情報のハッシュ値等で利用状況データベース12aを暗号化しておき、他の識別情報を有する端末内では、暗号化された利用状況データベース12aを復号化出来ないようにするプログラムを設ける等する。
【0082】
次に、利用状況データベース12aを利用者端末2以外の端末に於いて読みとり不可とするためには、後述する復号鍵解読手段13に於いて、利用条件と利用状況の照合を行う際に、送信端末3側に登録された識別情報を有する利用者端末2内の外部記憶装置に利用状況データベース12aが生成されているかどうかを確認し、利用状況データベース12aが見つからなかった場合には、利用者端末2以外の端末に於いてソフトウェアが利用されそうになったとみなし、ソフトウェアの利用を中止させる方法や、利用状況データベース12aを先の端末毎に固有の識別情報のハッシュ値等で暗号化しておき、他の端末の識別情報のハッシュ値等では利用状況データベース12aを復号化出来ないようにする方法等が挙げられる。
【0083】
又、予め生成される利用条件の中に、利用者端末2の識別情報を1条件として加えておき、利用条件と利用状況の照合をする際に、利用状況として実際使用されている端末の識別情報を調べ、利用条件としての本来使用されるべき端末の識別情報と合致しない場合にはソフトウェアの利用を中止させる方法をとってもよい。
【0084】
利用状況データベース12aの生成の仕組みをこのようにしていることにより、仮に利用条件が回数無制限や無償利用等であった場合でも、中身が空又は無意味なデータで構成された利用状況データベース12aを利用者端末2に生成し、利用条件と利用状況の照合の際に、この利用状況データベース12aの存在を確認する過程を経るようにすれば、利用者端末2以外の端末に於けるソフトウェアの利用、つまり利用者及び悪意者によるソフトウェアの不正利用を防止することが出来る。
【0085】
ここで、以上説明した復号鍵解読手段13、復号鍵格納ファイル16、利用状況データベース12aを用いて、復号鍵格納ファイル16内の復号鍵5を解読する方法を、図3を用いて説明する。
【0086】
まず鍵0によって、最初の照合・更新手段131を起動させる。最初の鍵0の入手経路、生成方式等は問わないが、本実施の形態に於いては、鍵0がパッケージ識別情報19である。この場合、直接的に復号鍵解読手段13を起動することが出来る。
【0087】
照合・更新手段131は、該当する利用条件を検索した上で、更に、その利用条件に対応する利用状況データベース12a内の利用状況を検索し、利用状況データベース12aが正当な場所(利用者端末2内)に存在するかどうかを確認し、利用条件1と利用状況1の照合を行い、利用状況1が利用条件1を超えていなければ、利用状況1を更新し、鍵1を取得する。
【0088】
鍵1は、次の照合・更新手段132を起動し、先の手続きと同様に利用条件2と利用状況2の照合と、利用状況2の更新が行われる。
【0089】
最終的に全ての利用条件と利用状況の照合が問題なく完了すれば、復号鍵5が解読され、展開手段14によって、メインメモリ14a上に展開される。
【0090】
利用条件の数が少ない場合や、復号鍵5の解読をより困難にするためには、復号鍵格納ファイル16の内部を、同じ利用条件の照合を繰り返すような構造としたり、1つの利用条件(例えば、利用限度額5000円)を細分化する(例えば、5000円を各桁に分割する)等が考えられる。
【0091】
又、復号鍵格納ファイル16内の鍵や利用条件の全部又は一部は、利用者端末2にダウンロードさせず、送信端末3又はデータ書き換えが不可能な記録媒体に格納されていてもよい。尚、鍵の場合は、単に鍵だけが格納されているのではなく、鍵の入手に必要な入口(照合・更新手段によるチェック結果を受け取り確認する手段)と出口(次に進む照合・更新手段の場所を示した手段)も合わせて格納されているものとする。
【0092】
例えば、図3に於いて、鍵1を利用者又は利用者端末2の識別情報とともに送信端末3に格納する場合、照合・更新手段131は送信端末3にアクセスして、利用条件1と利用状況1の照合結果が問題なかったことを送信端末3に通知した上で、送信端末3から鍵1を入手する。当然、送信端末3はアクセス元が正当な利用者端末2であることを確認する必要がある。
【0093】
又、例えば、利用条件2をCD−ROMに格納する場合、照合・更新手段132は、必ず利用者端末2からCD−ROMにアクセスすることにして、CD−ROM内の利用条件2を入手後、利用状況2との照合を行う。
【0094】
送信端末3内のデータの改ざんや、CD−ROM内のデータ書き換えは出来ないため、利用者及び悪意者によるソフトウェアの不正利用がより困難になり、復号鍵5の更なる保護が図られることになる。
【0095】
尚、復号化手段18に於いては、復号鍵解読手段13に於ける全ての解読過程を順番に経て解読された復号鍵5によってのみ、暗号化されたソフトウェアプログラム10aの復号化が可能であるとする。つまり、何らかの方法で復号鍵5が知られてしまったとしても、暗号化されたソフトウェアプログラム10aの復号化は、復号鍵解読手段13によって復号鍵格納ファイル16の中の復号鍵5が解読された利用者端末2内に於いてしか行われない。
【0096】
復号鍵5は、以上のようなロジックにより、復号鍵格納ファイル16から取り出されるが、復号鍵格納ファイル16は、実際には図8に示すような木構造により構成されている。図8に基づいて説明すると、復号鍵格納ファイル16は、ルートディレクトリの下に、復号鍵5の取得経路、順序を示す経路ディレクトリと、利用状況データベース12aの生成場所や利用状況の更新方法を示す利用状況ディレクトリと、利用条件を格納する利用条件ディレクトリを構成している。経路ディレクトリ下には、照合・更新手段を起動するための鍵が順番に配列し、最終的に取得可能な復号鍵5自体も含まれている。照合・更新手段は、鍵に対応する利用状況データベース12aの場所を利用状況ディレクトリ下から探し出し、更に、対応する利用条件を利用条件ディレクトリ下から探し出して、利用条件と利用状況の照合を行う。つまり、照合・更新手段は、復号鍵格納ファイル16内の分岐した各ディレクトリに格納されている鍵と利用条件と利用状況格納場所とを相互に結び付ける役割を担う。
【0097】
ファイルをこのような木構造としていることにより、復号鍵5は正規の順序を経ないと取得出来ないこととなる。又、一方のディレクトリ内のデータが他方のディレクトリ内のデータと対応するようになっているため、一部のディレクトリのみをコピーしたり、いずれかのディレクトリの格納場所やパス名が変わってしまうと、復号鍵解読手段13との連携が行われなくなるので不正利用を行いにくい、という効果がある。
【0098】
次に、復号鍵5の更なる保護及び、ソフトウェアや復号鍵格納ファイル16の改ざん防止のため、復号鍵格納ファイル16を暗号化して利用者端末2にダウンロードさせる場合の一例について、図4を参照しながら説明する。
【0099】
まず、乱数生成により第1の鍵を得る。尚、第1の鍵は、もともとの復号鍵格納ファイル16のバイナリデータのハッシュ値でもよい。これにより、仮に暗号化された復号鍵格納ファイル16aが復号化された後に改ざんされたとしても、改ざんの結果、ハッシュ値が前のハッシュ値と異なるため再暗号化が出来ず、復号鍵格納ファイル16の改ざん検知が可能となる。第1の鍵は、復号鍵格納ファイル16等に添付され、利用者端末2にダウンロードされる。
【0100】
次に、第1の鍵を置換表15を用いて第2の鍵に変換し、第2の鍵で復号鍵格納ファイル16を暗号化する。ここでは、第2の鍵は暗号化、復号化とも共通の鍵とする。
【0101】
置換表15は、暗号解読表の一種であり、置換前と置換後の対応を表す表である。置換表15を用いることにより、鍵が直接、利用者や悪意者の目に触れられることがなく、鍵の解読や不正利用がしづらくなる。
【0102】
置換表15は、どの利用者、どのソフトウェアに対しても同じであってもよいが、同じ置換表を用いると置換表15の推測がしやすくなり、結果的に不正利用されてしまうため、本実施の形態に於いては、ソフトウェア販売者毎に置換表15を用意している。これにより、同一のソフトウェアであっても不正利用がされれば、販売ルートの特定も可能となり、販売者の権利保護もされる。
【0103】
尚、暗号化された復号鍵格納ファイル16aを利用者端末2にダウンロードする場合には、図1に示したように、置換表15もダウンロードさせる必要があるが、置換表15が利用者や悪意者に分かる状態であると、復号鍵格納ファイル16を暗号化した意味がなくなるので、更に、置換表15を暗号化する。
【0104】
置換表15は、パッケージ化されたソフトウェア11等、改ざんされると不正利用等の問題となるようなバイナリデータから生成されたハッシュ値等の一方向性関数の値を鍵として暗号化され、暗号化された置換表15aとして利用者端末2にダウンロードされる。これにより、暗号化された復号鍵格納ファイル16aの復号化時に、ソフトウェア等の改ざんがされていれば、置換表15が復号化されないので、暗号化された復号鍵格納ファイル16aの復号化もされない。
【0105】
尚、パッケージ化されたソフトウェア11のバイナリデータのハッシュ値によって置換表15を暗号化する場合には、パッケージ化に含まれるソフトウェアプログラム10は、実行後と実行前のハッシュ値が変わらないようなバイナリデータであることが必要である。つまり、ソフトウェアの利用前後に於いて内容が書き替わってしまうような設定ファイルや保存データはパッケージ化してはいけない。
【0106】
【実施例】
次に本発明の復号鍵保護プログラム1を用いて、利用者にソフトウェアを利用させるプロセスの流れの一例を図5、図6、図7のフローチャート図及び図1、図2、図3、図4の構成図とを用いて詳細に説明する。
【0107】
利用者端末2は、ネットワークを介して、送信端末3や、ソフトウェア提供者が管理するサーバ等にアクセスし、希望のソフトウェアを選択する。
【0108】
送信端末3では、利用者毎の利用条件及び乱数による暗号鍵を生成し、ソフトウェアプログラム10を暗号鍵(共通鍵方式で生成された鍵であって、復号鍵5と同一)で暗号化する。この暗号化されたソフトウェアプログラム10aを、復号化手段18とパッケージ識別情報19とともにパッケージ化し、更に、復号鍵5及び利用条件を復号鍵格納ファイル16に収容し、図1に示した復号鍵保護プログラム1(暗号化された復号鍵格納ファイル16aを含む)、インストールプログラム4とともに、利用者端末2にダウンロードさせる。
【0109】
尚、復号鍵格納ファイル16を生成する前提として、送信端末3側に利用者端末2の登録手段、課金手段等は整備されており、ソフトウェア提供者は利用者からの登録、申込み、送金等を受けた後に、その利用者の利用者端末2に一定条件内に於いてソフトウェアの利用を許可したものとする。
【0110】
又、復号鍵格納ファイル16は、先に説明した方法によって暗号化されているものとする。利用状況データベース12aは、利用者端末2のみに生成されるものとする。
【0111】
利用者端末2がこれらのパッケージ化されたソフトウェア11等をダウンロードすると、利用者端末2内で、インストールプログラム4が自動的に起動されるようにするか、又は、利用者端末2からの要求に応じてインストールプログラム4が起動するようにする(S510)。
【0112】
尚、利用者端末2が2回目以降ソフトウェアを利用する場合には、インストールプログラム4を起動しなくても、パッケージ化されたソフトウェア11を起動することによって、以下の流れで、ソフトウェアを利用出来るようにしてもよい。つまり、本実施例に於いては、ソフトウェアの利用手順を記述したプログラムがインストールプログラム4に含まれているが、初回インストールプログラム4の起動時に、利用手順を記述したプログラムが利用者端末2のハードディスク等に格納され、2回目以降は、パッケージ化されたソフトウェア11の起動と連動するようになっていてもよい。
【0113】
利用者端末2に於いて、このソフトウェアが初めて利用されるものである場合(S520)、利用状況生成手段12は、インストールプログラム4が起動されたこの利用者端末2のハードディスク等の外部記憶装置に、利用状況データベース12aを生成する(S530)。既に、このソフトウェアに対応する利用状況データベース12aが生成されている場合には、生成を行わない。
【0114】
利用状況データベース12aは、ダウンロードされた復号鍵格納ファイル16内の利用条件に基づいて生成される。図3に於いては、利用条件の数が3個であるので、各利用条件に対応する利用状況が3個、利用状況データベース12a内に生成される。又、利用状況は、利用毎に回数や金額を増やすことによって更新されてもよいし、最初に利用条件の限度が利用状況に反映され、以降は利用毎に回数や金額を減らすことによって更新されてもよい。
【0115】
尚、利用状況データベース12aは、利用者端末2の識別情報に基づいて暗号化されたり、予め送信端末3が認識した識別情報を有する利用者端末2にのみ利用状況データベース12aの生成を許可する等の方法により、他の端末に於ける生成、コピー、読みとり、更新が不可能なようにされる。
【0116】
インストールプログラム4は、ソフトウェアを最終的に利用出来るようにするための過程の進行役を担う。まずは、パッケージ化されたソフトウェア11を実行する(S540)。但し、この時点では、まだソフトウェアプログラム10は暗号化されており、単に実行してもソフトウェアを利用することは不可能であるため、パッケージに含まれていた復号化手段18と、展開手段14が起動することになる(S550)。
【0117】
復号化手段18が起動すれば、暗号化されたデータを復号化するための鍵さえ揃えば、そのデータを復号化することが出来る。又、展開手段14が起動すれば、各種の鍵やソフトウェアプログラム10等の、利用者端末2のハードディスクにも保存されてばいけないデータをメインメモリ14a上に展開させることが出来る。
【0118】
次に、パッケージ識別情報19をキーボード等により入力して、復号鍵解読手段13を起動させる(S560、S570)。尚、パッケージ識別情報19の入力により復号鍵解読手段13を起動させることは任意でよく、又、入力はキーボード等による入力ではなく、パッケージ化されたソフトウェア11内からパッケージ識別情報19が取り出され、自動的に入力されてもよい。又、復号鍵解読手段13以外の手段を起動、展開させる時にもこのような識別情報の入力を促すようにしてもよい。この識別情報の暗号化の有無も任意である。
【0119】
尚、ここまでのプロセスの流れは、この順番による必要はない。
【0120】
本実施例に於いては、パッケージ識別情報19が図3に於ける鍵0に相当する。つまり、復号鍵解読手段13が起動し、更に、最初の照合・更新手段131が起動する。照合・更新手段131は、対応する利用条件1を取り出す。
【0121】
ここで、復号鍵格納ファイル16が暗号化されている場合には(S580)、利用条件1の取り出しが出来ないため、暗号化された置換表15aを取り出す(S610)。
【0122】
暗号化された置換表15aを復号化するため、パッケージ化されたソフトウェア11のバイナリデータのハッシュ値が生成される(S615)。
【0123】
生成されたハッシュ値を復号化のための鍵として、置換表15を復号化する(S620)。ここで、置換表15の復号化がされなかった場合には、何者かによりパッケージ化されたソフトウェア11の内部の改ざんがされたことになり、その改ざんを検知するとともに、以降のステップには進めないようにする(S625)。
【0124】
復号化された置換表15は、展開手段14に於いて、一時メインメモリ14a上に展開される(S630)。
【0125】
次に、復号鍵格納ファイル16に添付されている第1の鍵を取り出す(S635)。尚、第1の鍵を復号鍵格納ファイル16自身のハッシュ値とすれば、復号鍵格納ファイル16の改ざん検知が可能である。
【0126】
先の復号化された置換表15を用いて、第1の鍵を第2の鍵に置換する(S640)。ここで、第1の鍵から第2の鍵への置換がされなかった場合には、何者かにより復号鍵格納ファイル16及び/又は置換表15が改ざんされたことになり、その改ざんを検知するとともに、以降のステップには進めないようにする(S645)。
【0127】
置換された第2の鍵は、展開手段14に於いて、一時メインメモリ14a上に展開される(S650)。
【0128】
置換された第2の鍵を用いて、暗号化された復号鍵格納ファイル16aを復号化する(S655)。ここで、暗号化された復号鍵格納ファイル16aの復号化がされなかった場合には、何者かにより第2の鍵の改ざんがされたことになり、その改ざんを検知するとともに、以降のステップには進めないようにする(S660)。
【0129】
復号鍵格納ファイル16が復号化されたので、照合・更新手段131は、利用条件1を取り出すことが出来る(S710)。
【0130】
尚、利用条件や鍵は、上述したように、全部又は一部が、送信端末3又はCD−ROM等のデータの書き換えが不可能な記録媒体に格納されている場合もある。特に、ソフトウェア提供者が有償でソフトウェアを提供するような場合には、鍵や利用条件の全部又は一部が送信端末3等に格納されている方がソフトウェアの不正利用等の防止により効果的である。但し、送信端末3側に鍵や利用条件が格納されている場合は、その分ネットワーク接続の負担が高くなるため、注意が必要である。
【0131】
照合・更新手段131は、取り出された利用条件1に対応する利用状況1が利用者端末2内の利用状況データベース12aに存在するかどうかを確認する(S715)。利用状況データベース12aそのもの、又は利用状況1が利用者端末2内に存在しない場合には、利用者端末2以外の端末に於いて、ソフトウェアが利用されそうになったこと表し、以降のステップには進めないようにする(S720)。又、照合・更新手段に於いて、復号鍵格納ファイル16や利用条件や利用状況のハッシュ値をとることによって、これらに対する改ざんを検知することも可能である。
【0132】
照合・更新手段131は、利用状況1が利用者端末2内に存在した場合、その利用状況1が利用条件1を満足しているか、つまり、利用条件1の範囲内の利用かどうかを確認する(S725)。例えば、利用条件1は、「利用限度額が5000円」であり、利用者端末2内に格納された利用状況1が、「累積利用額が3000円」であれば、利用条件1を満足したものとする。一方、累積利用額が5000円以上又は、5000円未満であってもソフトウェアの1回の利用につきかかる金額が残されていない場合には、利用条件1を満足しなかったものとして、以降のステップに進めないようにする(S730)。
【0133】
利用条件1と利用状況1の照合が終わると、利用状況1の更新を行うとともに、次の照合・更新手段132に進むために必要な鍵1が取り出される(S735)。
【0134】
利用状況の更新は、例えば、対応する利用条件が「回数」に関するものである場合には、累積利用回数に1を加算するか、残り利用回数に1を減算する等した状態に自動的に更新される。利用条件が「金額」に関するものである場合には、ソフトウェアの1回利用毎に課金されるものであれば、1回の利用料金を減算する等して、利用状況データベース12aを更新するが、実際にソフトウェアを利用した時間に応じて課金されるような場合には、ソフトウェアの利用終了後に、利用状況データベース12aを更新するようにしてもよい。又、利用条件が、無期限、回数制限なしといった永久利用権のようなものであった場合でも、利用者が他人にソフトウェアを渡して不正利用させるといったことを防止するため、中身が空又は無意味なデータで構成された利用状況データベース12aを利用者端末2に生成し、利用条件と利用状況の照合時に必ず、利用状況データベース12aの存在を確認する過程を経るとよい。
【0135】
ここで、取り出された鍵が何番目の鍵かどうかを確認する(S740)。例えば、利用条件の合計数が3であれば、鍵3が取り出さた後に、ソフトウェアプログラム10の復号鍵5が取り出され、展開手段14に於いて、一時メインメモリ14a上に展開される(S750)。尚、図3に於いて、鍵1や鍵2が取り出された時点では、まだ全ての利用条件と利用状況の照合がされていないため、次の利用条件と利用状況の照合に進む(S745)。
【0136】
復号鍵解読手段13に於いて最終的に解読され、かつメインメモリ14a上に展開された復号鍵5を用いて、復号化手段18に於いて、暗号化されたソフトウェアプログラム10aを復号化する(S755)。
【0137】
復号化されたソフトウェアプログラム10は、利用者端末2のハードディスクではなくメインメモリ14a上に展開され、メインメモリ14a上でソフトウェア利用が可能となる(S760)。尚、利用者端末2のハードディスクにもソフトウェアプログラム10が格納されないのは、一旦、ハードディスクに格納されてしまうと、利用条件を無視したソフトウェアの利用が可能となってしまうのを防止するためである。但し、ソフトウェア利用の都度、保存されるべきデータ(実行プログラムなしに単独では利用不可能な設定データや、文書データ等)については、復号化されたソフトウェアプログラム10がなければそもそも開くことが出来ないので、ハードディスク等の外部記憶装置に保存してもよい。
【0138】
メインメモリ14a上でのソフトウェアの利用が終了すれば、ソフトウェアプログラム10は、メインメモリ14aからも削除されるが、当然、ハードディスク上にはパッケージ化されたソフトウェア11が残されており、2回目以降ソフトウェアを利用する場合も、これまでと同様の復号鍵解読過程を経ることによって、利用条件の範囲内でソフトウェアの利用が可能となる。
【0139】
以上は、ソフトウェアプログラム10を暗号化して、一定利用条件下でソフトウェアを利用させる場合について説明したが、上記ソフトウェアのみならず、映像・画像・音声等をデジタル化したコンテンツデータについても同様に暗号化して、本発明の復号鍵保護プログラム1とともに利用者端末2にダウンロードさせ、一定利用条件下で利用させるようにすることは可能である。
【0140】
尚、コンテンツデータは実行プログラムではないため、ソフトウェアプログラム10のようにパッケージ化することは出来ない。従って、暗号鍵によって暗号化されたコンテンツデータは、単独でダウンロード可能としてもよいが、コンテンツデータを閲覧、表示等するためのプログラム(ビューアー等)が汎用されているものであれば、復号鍵を知られてしまっただけで、利用条件を無視した利用が可能となってしまう。従って、暗号化されたコンテンツデータは、復号鍵格納ファイル16に含まれているのがよい。
【0141】
暗号化されたコンテンツデータの復号鍵を保護する場合、図8の復号鍵格納ファイルのルートディレクトリ下に、新たにコンテンツ用ディレクトリが追加され、コンテンツ用ディレクトリ下には、コンテンツデータが圧縮及び暗号化された状態で格納される。復号鍵が解読されると、コンテンツデータ用ディレクトリ下にあるコンテンツデータが取り出され、メモリ上で復号化されることになる。木構造としていることによって、ソフトウェアプログラムの時と同様、コンテンツ用ディレクトリのみが別の記録媒体に不正にコピーされたり、いずれかのディレクトリの格納場所やパス名が変更になってしまえば、コンテンツを見ることは出来ないという効果がある。
【0142】
尚、コンテンツデータとしての画像・映像・音声等を表示させるのに必要なプログラムは、既に利用者端末に格納されているような汎用品であってもよいし、上述した実施例のように、ソフトウェアプログラムとして、復号鍵で暗号化して、任意にパッケージ化した後、暗号化されたコンテンツデータとともにダウンロードさせてもよい。
【0143】
本発明に於ける各手段、データベースは、その機能が論理的に区別されているのみであって、物理上或は事実上は同一の領域を為していてもよい。又データベースの代わりにデータファイルであってもよいことは言うまでもなく、データベースとの記載にはデータファイルをも含んでいる。
【0144】
尚、本発明を実施するにあたり本実施態様の機能を実現するソフトウェアのプログラムを記録した記憶媒体をシステムに供給し、そのシステムのコンピュータが記憶媒体に格納されたプログラムを読み出し実行することによっても実現される。
【0145】
この場合、記憶媒体から読み出されたプログラム自体が前記した実施態様の機能を実現することとなり、そのプログラムを記憶した記憶媒体は本発明を構成する。
【0146】
本発明のプログラムの供給は、主として、インターネット等のネットワークを介してコンピュータにダウンロードさせる方法による。その他、磁気ディスク、光ディスク、光磁気ディスク、磁気テープ、不揮発性のメモリカード等の可搬型の記録媒体からコンピュータへの供給も可能である。
【0147】
又、コンピュータが読み出したプログラムを実行することにより、上述した実施態様の機能が実現されるだけではなく、そのプログラムの指示に基づき、コンピュータ上で稼働しているオペレーティングシステムなどが実際の処理の一部又は全部を行い、その処理によって前記した実施態様の機能が実現される場合も本発明に含まれる。
【0148】
【発明の効果】
本発明により暗号化されたソフトウェアプログラムやコンテンツデータの復号鍵が保護されれば、復号鍵を利用者に生成させる手間を掛けることなく、利便性を損なうことなく、ソフトウェアやコンテンツを一定条件下で利用者に利用させることが可能となる。利用者は一度、暗号化されたソフトウェアプログラムや復号鍵格納ファイル等を端末にダウンロードしさえすれば、以降は特別な入力、ダウンロード作業、ネットワーク接続等を必要とせず、利用条件の範囲内でソフトウェアやコンテンツを利用することが出来る。
【0149】
悪意者によるソフトウェアやコンテンツの不正利用のみならず、正当な利用者により、同一ソフトウェア・コンテンツが2回以上利用される場合にも不正利用を防止することが出来、ソフトウェア・コンテンツ提供者側の著作権保護に貢献する。
【図面の簡単な説明】
【図1】本発明の復号鍵保護プログラムの一実施形態を示す構成図である。
【図2】ソフトウェアプログラムの暗号化、パッケージ化の一実施形態を示す図である。
【図3】復号鍵解読手段、復号鍵格納ファイル、利用状況データベースの構成の一例を示す図である。
【図4】復号鍵格納ファイルの暗号化の一例を示す図である。
【図5】本発明のプロセスの流れの一例を示すフローチャート図である。
【図6】本発明のプロセスの流れの一例を示すフローチャート図である。
【図7】本発明のプロセスの流れの一例を示すフローチャート図である。
【図8】復号鍵格納ファイルのファイル構造の一例を示す図である。
【符号の説明】
1:復号鍵保護プログラム
10:ソフトウェアプログラム
10a:暗号化されたソフトウェアプログラム
11:パッケージ化されたソフトウェア
12:利用状況生成手段
12a:利用状況データベース
13:復号鍵解読手段
131、132、133:照合・更新手段
14:展開手段
14a:メインメモリ
15:置換表
15a:暗号化された置換表
16:復号鍵格納ファイル
16a:暗号化された復号鍵格納ファイル
17:ヘッダ
18:復号化手段
19:パッケージ識別情報
2:利用者端末
3:送信端末
4:インストールプログラム
5:復号鍵
【発明の属する技術分野】
本発明は、利用条件が予め決められたソフトウェアやコンテンツを暗号化して、利用者に送付するに際し、悪意者のみならず、正当な利用者からも、暗号化されたソフトウェアやコンテンツを復号化するための鍵を安全に保護する技術に関するものである。
【0002】
【従来の技術】
近年、ソフトウェアや、画像・映像・音声等がデジタル化されたコンテンツを、有償・無償を問わずネットワークを介して利用者のパソコン等の受信端末にダウンロードさせるサービスが増えている。
【0003】
このようなサービスの増加に伴い生じた問題として、悪意者によるネットワーク上の盗聴(傍受)や、利用者によるソフトウェアやコンテンツの不正コピー等の不正利用が挙げられる。
【0004】
これらの問題を解決するため、特許文献1、特許文献2に開示されているように、公開鍵暗号方式を用いてコンテンツや、コンテンツ利用者の権利情報(コンテンツ利用可能回数・金額・期限等の利用条件。コンテンツ利用時に利用条件がチェックされる。)を暗号化するシステムや方法が知られる。
【0005】
【特許文献1】
特開2000−324096号公報
【特許文献2】
特開2002−300158号公報
【0006】
特許文献1に開示された発明によれば、利用者が予め自己の端末に於いて、この端末の識別情報(マシンID)に基づく秘密鍵を生成しておき、コンテンツ配信側の端末は利用者から受信したこの識別情報に基づいて公開鍵を生成することによって、コンテンツの盗聴防止、改ざん防止を行うことが出来る。
【0007】
特許文献2に開示された発明によれば、認証局が発行する電子証明書と、その電子証明書のハッシュ値を認証局の秘密鍵で暗号化した電子証明書とを、利用者のICカード内に格納し、これらを認証局の公開鍵で復号化することによってICカード及びこのICカードの所有者の正当性を確認してから、ICカードの所有者によるコンテンツの利用を可能とすることが出来る。
【0008】
上記いずれの文献に於いても、公開鍵暗号方式が利用されており、公開鍵暗号方式の利用は確かにコンテンツの盗聴・改ざんの防止には効果的である。しかし、コンテンツの利用者にとっては、コンテンツのダウンロードの都度秘密鍵を生成する手間、ICカードを所有する手間、電子証明書を発行させられる手間等が発生し、家庭に於けるネットワークの常時接続が普及した最近のコンテンツ利用事情に即していない。
【0009】
ここで、暗号方式を問わず、コンテンツや権利情報の改ざんによるコンテンツの不正利用を防止することが出来る方法が特許文献3に開示されている。
【0010】
【特許文献3】
特開2001−69133号公報
【0011】
特許文献3に開示された発明は、利用者の端末内のハードディスクには常に暗号化された状態のコンテンツや権利情報が格納され、コンテンツを利用する際にはコンテンツや権利情報の復号化が、利用者がアクセス出来ない記憶領域内で行われ、コンテンツ利用終了後は再び暗号化されてハードディスクに格納されることを特徴としている。
【0012】
しかし、特許文献3に開示された発明には、以下に掲げる課題があった。
【0013】
【発明が解決しようとする課題】
すなわち、コンテンツや権利情報の復号化に用いられる鍵は安全に利用者に送付されなければ、特許文献3に開示された発明によっても、悪意者による盗聴を防止することは不可能である。
【0014】
そこで、特許文献3に開示された発明に於いても、特許文献1や特許文献2に記載された公開鍵暗号方式を用いてコンテンツの暗号化を行えば、盗聴の危険性は減る。しかし、この場合、利用者による秘密鍵の生成が必須となり、利用者側の利便性が損なわれることは上述した通りである。
【0015】
又、共通鍵暗号方式を用いてコンテンツが暗号化された場合には、暗号化及び復号化に用いられる共通鍵を安全に送付することは難しくなるという問題が生じるため、結局のところ公開鍵暗号方式と兼用するしかないのが現状である。
【0016】
更に、利用者の良心が欠けているような場合には、暗号化されたコンテンツと権利情報に加え、コンテンツや権利情報の復号化に用いられる鍵を、丸ごと第三者に渡してしまえば、暗号方式の種類を問わず、利用者以外の者によるコンテンツの利用、すなわち不正利用が可能となってしまう。
【0017】
本発明は、このような問題点に鑑みてなされたものであって、その目的とするところは、ソフトウェアやコンテンツの提供者が、暗号化されたソフトウェアやコンテンツを利用者に送付するに際し、利用者がソフトウェアやコンテンツを利用する際の利便性を損なうことなく、復号鍵が保護され、結果としてソフトウェアやコンテンツの盗聴、改ざん、不正利用がされにくくなるような復号鍵保護プログラム及び復号鍵保護方法を提供することにある。
【0018】
【課題を解決するための手段】
上記目的を達成するために、本発明は、ソフトウェアプログラム及び/又はコンテンツデータを、予め決められた利用回数・金額・期限等の利用条件の下で利用者に利用させるソフトウェア・コンテンツ提供サービスに於いて、前記利用者以外の者が生成した鍵によって暗号化されたソフトウェアプログラム及び/又はコンテンツデータとともに、前記利用者の端末に格納される復号鍵保護プログラム及び、前記暗号化されたソフトウェアプログラム及び/又はコンテンツデータの復号鍵を保護する復号鍵保護方法であって、利用状況を前記ソフトウェア・コンテンツの利用毎に更新することが出来る利用状況データベースを、前記利用者の端末以外の端末による読みとり、更新が出来ないような状態で、前記利用者の端末に生成する利用状況生成手段と、前記利用状況データベースに格納された利用状況と、前記利用条件との照合を行い、前記利用状況が前記利用条件を超えない場合に限り、前記利用状況データベース内の利用状況を更新し、前記暗号化されたソフトウェアプログラム及び/又はコンテンツデータの復号鍵を復号鍵格納ファイルの中から解読する復号鍵解読手段とを有する構成を採用している。
【0019】
この構成により、暗号化されたソフトウェアプログラム及び/又はコンテンツデータの復号鍵が悪意者のみならず利用者からも保護され、しかも利用者に一定条件下でソフトウェア・コンテンツを利用させることが出来、利用者及び悪意者による不正利用を防止することが出来る。本発明により、盗聴や不正利用について心配することなく、又、利用者に鍵を生成する手間をかけることなく、ソフトウェアやコンテンツのダウンロードサービスが行われるようになる。
【0020】
請求項2及び請求項13に記載の発明は、
前記復号鍵解読手段に於いて解読された復号鍵を用いて、前記暗号化されたソフトウェアプログラム及び/又はコンテンツデータを復号化する復号化手段と、前記解読された復号鍵、及び、前記復号化されたソフトウェアプログラム及び/又はコンテンツデータを、前記利用者の端末のメインメモリ上に展開する展開手段とを有する復号鍵保護プログラム及び復号鍵保護方法である。
【0021】
請求項2及び請求項13の発明により、ソフトウェアプログラムやコンテンツデータがハードディスク上に格納されないため、利用条件を無視した利用や、コピー等の不正利用を防止することが出来る。
【0022】
請求項3及び請求項14に記載の発明は、
前記復号鍵は、共通鍵暗号方式により生成される復号鍵保護プログラム及び復号鍵保護方法である。
【0023】
請求項3及び請求項14の発明により、利用者は、復号化処理に時間がかからないので、利用者側の利便性が損なわれない。ソフトウェア・コンテンツ提供者側は、鍵の生成が容易となり、暗号化処理に時間がかからない。
【0024】
請求項4及び請求項15に記載の発明は、
前記復号鍵は、前記利用者毎に、乱数により生成される復号鍵保護プログラム及び復号鍵保護方法である。
【0025】
請求項4及び請求項15の発明により、復号鍵は、利用者毎に生成されるので、リプレイアタックによるハッキングからも保護される。
【0026】
請求項5及び請求項16に記載の発明は、
前記復号鍵格納ファイルは、前記復号鍵と、1以上の前記利用条件を内包し、前記復号鍵解読手段に於いてのみ前記復号鍵の解読が可能なように、前記利用者の端末に格納される復号鍵保護プログラム及び復号鍵保護方法である。
【0027】
請求項5及び請求項16の発明により、ソフトウェアやコンテンツの利用都度、復号鍵や利用条件をソフトウェア・コンテンツ提供者から入手する必要がなく、利用の迅速化が図られるとともに、一度、復号鍵格納ファイルを入手すれば、その後は盗聴等される危険性がなくなる。
【0028】
請求項6及び請求項17に記載の発明は、
前記復号鍵格納ファイルは、乱数等の第1の鍵を置換表で置換した第2の鍵によって暗号化される復号鍵保護プログラム及び復号鍵保護方法である。
【0029】
請求項6及び請求項17の発明により、復号鍵を含む復号鍵格納ファイルが暗号化されるので、より一層復号鍵の保護が図られる。
【0030】
請求項7及び請求項18に記載の発明は、
前記置換表は、前記ソフトウェア・コンテンツ提供者毎に生成される復号鍵保護プログラム及び復号鍵保護方法である。
【0031】
請求項7及び請求項18の発明により、同一のソフトウェア・コンテンツであっても販売者毎に置換表を変えれば、不正利用された場合に販売ルートまでの特定が可能となり、販売者の権利も保護される。
【0032】
請求項8及び請求項19に記載の発明は、
前記置換表は、前記ソフトウェアプログラム及び/又はコンテンツデータのバイナリデータから得られるハッシュ値等の一方向性関数によって暗号化される復号鍵保護プログラム及び復号鍵保護方法である。
【0033】
請求項8及び請求項19の発明により、ソフトウェアプログラム及び/又はコンテンツデータの改ざんを検知することが可能となる。
【0034】
請求項9及び請求項20に記載の発明は、
前記利用状況データベースは、前記利用者の端末に於いて、前記端末の識別情報(MACアドレス、BIOSのシリアル番号、ハードディスクのシリアル番号等)のハッシュ値等の一方向性関数によって暗号化される復号鍵保護プログラム及び復号鍵保護方法である。
【0035】
請求項9及び請求項20の発明により、利用状況データベースを利用者の端末以外の端末にコピーして利用することが不可能となる。
【0036】
請求項10及び請求項21に記載の発明は、
前記暗号化されたソフトウェアプログラムは、パッケージ化されている復号鍵保護プログラム及び復号鍵保護方法である。
【0037】
請求項11及び請求項22に記載の発明は、
前記暗号化されたコンテンツデータは、前記復号鍵格納ファイルに含まれている復号鍵保護プログラム及び復号鍵保護方法である。
【0038】
これら発明により、仮に復号鍵が知られたとしても、ソフトウェアプログラム及び/又はコンテンツデータを単独で実行することが出来なくなる。
【0039】
尚、本明細書に於いて、「復号鍵の保護」とは、悪意者による盗聴、改ざん等の不正利用のみならず、正当な利用者による不正利用からも、復号鍵が保護されることを指す。
【0040】
又、「ソフトウェアの利用」とは、ソフトウェアプログラムを(必要に応じて、インストールプログラムやその他のファイルやプログラムとともに)実行してそのソフトウェアプログラムが実現する機能を端末上で利用することを指し、「コンテンツの利用」とは、映像・画像・音声等がデジタル化されたコンテンツデータを、任意のプログラムを用いて、表示機器に表示させたり可聴状態とすることを指す。
【0041】
又、本発明の復号鍵保護プログラムやソフトウェア・コンテンツ等の「送付」には、ネットワークを介した利用者のダウンロードによる配信形態の他、これらいずれか1以上をCD−ROM等の可搬型の記録媒体に格納し、郵送等により利用者に送付する形態も含まれる。
【0042】
又、「ソフトウェア・コンテンツ提供者」には、ソフトウェア・コンテンツを作成したメーカーのみならず、ソフトウェア・コンテンツを直接利用者に提供又は販売する者も含まれるものとする。
【0043】
又、「利用者」とは、ソフトウェア・コンテンツ提供者に、特定のソフトウェア・コンテンツを利用することを認められた者を指す。
【0044】
又、「利用者の端末」は、本発明の復号鍵保護プログラムや、暗号化されたソフトウェアプログラム及び/又はコンテンツデータ等のプログラム、データファイルを格納し、実行・利用するために必要な構成(CPU、メインメモリ、外部記憶装置、通信用デバイス、入出力デバイス等)を有するものであり、通常のコンピュータであればよい。
【0045】
【発明の実施の形態】
以下、本発明の好適な実施の形態について、図1、図2、図3、図4を参照して詳細に説明する。図1は本発明にかかる復号鍵保護プログラム1の構成の一例を示している。尚、以下は、利用者が希望するソフトウェア(例えば、ワープロソフトや計算ソフト)を、予め決められた利用回数・金額・期限等の利用条件の下で利用者に利用させるために必要なプログラム(以下、復号鍵保護プログラム1という)やインストールプログラム4とともに、ソフトウェア提供者側の端末(以下、送信端末3という)から利用者端末2にネットワークを介して無償又は有償でダウンロードし、利用者端末2内のハードディスク等の外部記憶装置に格納させる形態を例に説明するが、ソフトウェアや復号鍵保護プログラム1の全部又は一部がCD−ROM等の可搬型記録媒体に格納され、利用者が各自、当該可搬型記録媒体から端末にコピーを行う形態であっても同様に適用可能である。
【0046】
又、本明細書に於いて、「利用者端末にダウンロード、コピー、格納、生成を行う」とは、利用者の端末内の書き換え可能な外部(補助)記憶装置にダウンロード等することを指す。書き換え可能な外部記憶装置には、その端末の内蔵ハードディスクや、端末と接続された外付けディスク(MOやFD)等の記憶装置が含まれる。但し、これらの記憶装置はその端末と1対1で対応可能なものであって、他の端末との共有ディスクや端末とネットワークを介して接続された外部記憶装置は含まないものとする。
【0047】
利用者端末2は、希望のソフトウェアを指定、選択等した上で、ソフトウェア提供者側の送信端末3やサーバからネットワークを介して、図1に示すパッケージ化されたソフトウェア11、復号鍵保護プログラム1、インストールプログラム4をダウンロードする。利用者端末2は、これらダウンロードしたプログラム等を格納し、実行・利用するために必要な構成(CPU、メインメモリ、外部記憶装置、通信用デバイス、入出力デバイス等)を有するものであり、通常のコンピュータであればよい。
【0048】
パッケージ化されたソフトウェア11には、暗号化されたソフトウェアプログラム10a、復号化手段18、パッケージ識別情報19(図示せず)が含まれる。
【0049】
復号鍵保護プログラム1には、復号鍵解読手段13、復号鍵格納ファイル16、利用状況生成手段12、展開手段14が含まれる。
【0050】
尚、図1では、復号鍵格納ファイル16の代わりに暗号化された復号鍵格納ファイル16aが復号鍵保護プログラム1に含まれ、更に、暗号化された置換表15aも含まれる。置換表15は、暗号化された復号鍵格納ファイル16aの復号化に必要な鍵の解読に必要である。各手段等の詳細は順次説明する。
【0051】
インストールプログラム4は、ダウンロードしたソフトウェアを実際に利用者端末2で利用出来るように各プログラムやデータの起動順序を制御する等のサポートを行うプログラムである。インストールプログラム4の中に、パッケージ化されたソフトウェア11及び復号鍵保護プログラム1が含まれていてもよい。
【0052】
まずは、パッケージ化されたソフトウェア11について、図2を参照しながら説明する。ソフトウェアは利用者端末2にダウンロード、格納される時には当然バイナリ形式のプログラムであるが、実際にソフトウェアを端末上で実行、利用したり、ディスプレイに表示させるためには、実行プログラムのみならず、ソフトウェアを実行するのに必要なプログラムが必要である。
【0053】
ソフトウェア提供者は、これら実行プログラムとソフトウェアを実行するのに必要なプログラム(以下、合わせてソフトウェアプログラム10という)を任意の乱数等の暗号鍵で暗号化し、暗号化されたソフトウェアプログラム10aとする。暗号化する理由は主に2点あり、1点は、このソフトウェアをダウンロードした正当な利用者であっても、後述する利用条件を満足しない限りはソフトウェアを利用出来ないようにするためであり、もう1点は、悪意者に容易に盗聴されるのを防止するためである。
【0054】
つまり、暗号化されたソフトウェアプログラム10aのみをダウンロードしたとしても、利用者であってもソフトウェアの利用は行えず、暗号化されたソフトウェアプログラム10aを復号化する過程を経て、初めてソフトウェアの利用が可能となる。
【0055】
更に、暗号化されたソフトウェアプログラム10aの復号化に必要な復号鍵5は、本発明に於いては、利用者が生成するものではなく、又、復号鍵格納ファイル16の中に利用者さえも容易に知ることが出来ない状態で保存されている。つまり、ソフトウェアの利用条件を満足した場合のみ、復号鍵5を得ることが出来、しかも、この解読過程に於いて得られた復号鍵5によってのみ、暗号化されたソフトウェアプログラム10aの復号化を可能としている。
【0056】
ここでは、暗号化・復号化に共通鍵暗号方式を用いるものとし、暗号鍵と復号鍵5は共通である。共通鍵暗号方式により生成された鍵による暗号化、復号化の処理時間は、公開鍵暗号方式による暗号化、復号化処理時間と比較して短いので、利用者にとってもソフトウェア提供者にとっても、利便性が損なわれることがない。
【0057】
この暗号鍵(復号鍵5)は利用者以外の者、つまり、本実施の形態に於いてはソフトウェア提供者によって生成された乱数である。復号鍵5は、本実施の形態に於いては、利用者毎かつソフトウェアの種類毎に生成される。従って、同一の利用者が複数の異なるソフトウェアをダウンロードする場合には、ソフトウェアの種類毎に異なる乱数が生成される。
【0058】
尚、復号鍵5は、利用者さえも容易に知ることが出来ない状態で保存され、解読が困難であるため、利用者毎ではなく単にソフトウェアの種類毎に変えるようにしてもよい。又、ソフトウェアメーカーが複数の販売者に同一ソフトウェアを販売委託する場合、その販売者毎に変えるようにしてもよい。そうすれば、ソフトウェア毎又は販売者毎に同一の暗号鍵で暗号化されたソフトウェアプログラム10aを、複数の利用者に共通にダウンロードさせることが出来るので、提供者側の暗号化処理の手間が減る。
【0059】
しかし、同一の暗号鍵を用いると、暗号化されたソフトウェアプログラム10aがパッケージ化されていない場合や、パッケージ化されていても暗号化されたソフトウェアプログラム10aが単独でハードディスク等に格納されてしまった場合には、リプレイアタックが可能となり、不正利用される可能性もある。従って、復号鍵5は本実施の形態に於けるように、ソフトウェアの種類毎、販売者毎のみならず、利用者毎に変えるのが望ましい。
【0060】
又、共通鍵暗号方式の代わりに公開鍵暗号方式を用いてもよいが、その場合には、利用者による鍵の生成の手間をなくすため、暗号鍵と復号鍵5のいずれも、ソフトウェア提供者側で生成するものとする。
【0061】
図2に示すように、暗号化されたソフトウェアプログラム10aと、暗号化されたソフトウェアプログラム10aを復号化するのに必要なプログラム類(復号化手段18、パッケージ識別情報19)とに、ヘッダ17を付加したものが、パッケージ化されたソフトウェア11となる。暗号化されたソフトウェアプログラム10aはパッケージ化されることにより、インストールプログラム4やその他のプログラムとの連動によってのみ、ソフトウェアが実行可能となるので、単独実行や利用者端末2のハードディスク等への格納が出来ないようになる。従って、利用者及び悪意者が復号鍵5を知り得たとしても、暗号化されたソフトウェアプログラム10aの復号化をすることが不可能であるし、又、実行プログラムのバイナリデータを改変してウィルスを作成したり不正利用の目的とすることが不可能となる。
【0062】
尚、図1に示した利用状況生成手段12、展開手段14等の、利用者によらず共通のファイルやプログラムであれば、パッケージに含んでもよい。逆に、復号化手段18をパッケージに含む必要は必ずしもない。又、複数種類のソフトウェアを利用者端末2内で利用する場合であって、ソフトウェアの種類によらず共通に使用可能な手段であれば、利用者端末2内に重複してダウンロードする必要は必ずしもないので、パッケージに含む必要はなく、別パッケージ又は別ファイルとして任意に利用者端末2にダウンロードさせればよい。
【0063】
復号化手段18は、暗号化された各種データを鍵等を用いて復号化するのに必要なプログラムである。尚、復号化手段18には、単に復号化を行う他、ハッシュ値の生成等を行ってもよい。又、ハッシュ値の生成等に必要なプログラムが別途用意され、利用者端末2にダウンロードされてもよい。
【0064】
パッケージ識別情報19は、ソフトウェアの種類及び/又はソフトウェア販売者を識別することが出来る情報であり、本実施の形態に於いては、パッケージ化されたソフトウェア11とともにダウンロードされた復号鍵解読手段13を起動するための入力情報として用いられる。
【0065】
次に、復号鍵保護プログラム1の詳細について図3を参照しながら説明する。復号鍵解読手段13は、暗号化されたソフトウェアプログラム10aを復号化するための復号鍵5を内包する復号鍵格納ファイル16と連携して、復号鍵5を解読する手段である。尚、上述したように、本実施の形態に於いては、復号鍵解読手段13は、パッケージ識別情報19の入力によって起動するようになっている。
【0066】
復号鍵解読手段13と、復号鍵格納ファイル16の構成の一例を図3に示す。尚、図3は、これらのプログラムやファイルが送信端末3からダウンロードされ、利用者端末2のハードディスクに格納されている状態を示すが、復号鍵格納ファイル16内の復号鍵5は、復号鍵解読手段13によってしか解読、取り出し出来ないようになっている。
【0067】
復号鍵解読手段13は、本実施の形態に於いては、照合・更新手段131、132、133を有する。照合・更新手段131、132、133は、復号鍵格納ファイル16内の利用条件と、後述する利用状況データベース12a内の利用状況とを順次照合して、利用状況が利用条件を超えない場合に限り、利用状況データベース12aを更新する。最終的に問題なく全ての照合が完了した場合にのみ、復号鍵格納ファイル16内の復号鍵5が解読され、展開手段14に於いてメインメモリ14a上に展開される。
【0068】
その後、復号化手段18は、解読された復号鍵5によってのみ、暗号化されたソフトウェアプログラム10aを復号化し、展開手段14が、復号化されたソフトウェアプログラム10をメインメモリ14a上に展開する。
【0069】
復号鍵格納ファイル16内部は、1以上の鍵と、1以上の利用条件と、復号鍵5で構成されている。鍵が照合・更新手段131、132、133に渡されることにより、鍵に対応する利用条件及び利用状況が取り出され、各々照合されるようになっている。
【0070】
復号鍵格納ファイル16は、本実施の形態に於いては、図1に示したように復号鍵保護プログラム1の一部として、パッケージ化されたソフトウェア11とともに初回ダウンロードされるので、以降は、ソフトウェアの利用都度、ネットワークを介して復号鍵5や利用条件を取得する必要がない。しかも、復号鍵5は、利用者毎、ソフトウェアの種類毎に異なるように生成されているので、一度復号鍵格納ファイル16を利用者端末2に格納してしまえば、以降は盗聴の危険がなくなる。
【0071】
図3の説明に戻ると、展開手段14は、復号化された復号鍵5や、復号鍵5によって復号化されたソフトウェアプログラム10や、その他の鍵をメインメモリ14aに一時的に格納する手段である。つまり、これらのデータや鍵は単独ではハードディスク等の外部記憶装置には保存することが出来ないようになっているため、予め決められた利用条件を超えてソフトウェアを利用したり、鍵を使用したり、復号化されたソフトウェアプログラム10を利用者が他人に渡すことは不可能である。
【0072】
従って、復号鍵解読手段13による、復号鍵格納ファイル16内の復号鍵5の解読過程を経なければ、復号鍵5は利用者であっても知り得ることが出来ないし、又、復号鍵5だけをハードディスク等に保存することは出来ない。
【0073】
利用状況生成手段12は、利用者自身による不正な更新が不可能な、及び利用者端末2以外の端末による読みとり、更新が出来ないような利用状況データベース12aを、利用者端末2の外部記憶装置にのみ生成する手段である。
【0074】
この利用状況データベース12a内には利用者端末2によるソフトウェアの利用状況が格納される。利用状況は、実際にソフトウェアを利用した回数、金額、日時等であり、利用者が利用者端末2でソフトウェアを利用する毎に、対応する利用条件(回数、金額、日時や期限等)を上回らないまで、つまり予め決められた利用限度に達するまで更新される。利用条件を超えてソフトウェアの利用がされそうになった場合には、その場でソフトウェアの利用や、ソフトウェア利用の前過程(復号鍵解読過程)を中止させる。
【0075】
尚、当然のことながら、ソフトウェア提供者は、ソフトウェアに応じて、ソフトウェア利用額の計算方法(例えば、1時間使用したら200円課金、1回利用毎に100円課金等)や利用回数の計数方法等を予め決めておく必要がある。
【0076】
又、送信端末3又は利用者端末2のいずれかには、利用者の利用状況を把握することが出来、かつ、利用状況データベース12aの更新に反映させることが出来るプログラム(例えば計数手段、計時手段、料金計算手段等)が必要となる。
【0077】
更に、利用条件の1つとして「金額」が設定されているような場合には、送信端末3側に課金手段を設け、利用者が予めその金額を何らかの手段(現金、振込、クレジットカード等)で支払い、その支払った事実がソフトウェア提供者側で確認されていることは当然必要である。
【0078】
利用状況データベース12aの読みとり、更新は、復号鍵解読手段13に於ける復号鍵5の解読過程に於いてのみしか行われず、その過程以外に於いて、利用者や悪意者による更新、改ざんはされないこととする。
【0079】
尚、利用状況データベース12a内の利用状況の無断更新、改ざん、不正利用等の検知は、公知のハッシュ(一方向性)関数技術等を用いれば可能である。例えば、利用状況を常に、直前に更新又は読みとりがされた時点の利用状況のハッシュ値で暗号化する等して、次の更新又は読みとり時に、正しいハッシュ値で暗号化されていたかどうかの整合性をチェックする。不正な読みとりや更新が実行されていた場合には、次に正規の読みとりや更新をしようとしても、利用状況が本来のハッシュ値で暗号化されていないか、正しい復号鍵を手に入れることが出来ないため、復号化が出来ない。又、例えば、利用状況の更新は1ずつ増やすことしか出来ない仕組みにしておき、本来利用状況を2回から3回に更新すべきところを、0回に改ざんすることは不可能なようにすることも出来る。
【0080】
このように、万一、不正な読みとりや改ざん等がされた場合には、その場でソフトウェアの利用や復号鍵5の解読を中止させるか、レジストリ等に暗号化してバックアップしておいた正しい利用状況を読み込んで、改ざんされた利用状況データベース12aを元の状態に復元させるようにする。
【0081】
利用状況データベース12aを利用者端末2にのみ生成可能とするためには、パッケージ化されたソフトウェア11等が最初にダウンロードされた端末に於いて1回のみ、データベースの生成が可能なプログラムを設けるか、ダウンロード前に送信端末3が予め利用者端末2の識別情報(MACアドレス、BIOSのシリアル番号、ハードディスクのシリアル番号等)を認識し、その識別情報のハッシュ値等で利用状況データベース12aを暗号化しておき、他の識別情報を有する端末内では、暗号化された利用状況データベース12aを復号化出来ないようにするプログラムを設ける等する。
【0082】
次に、利用状況データベース12aを利用者端末2以外の端末に於いて読みとり不可とするためには、後述する復号鍵解読手段13に於いて、利用条件と利用状況の照合を行う際に、送信端末3側に登録された識別情報を有する利用者端末2内の外部記憶装置に利用状況データベース12aが生成されているかどうかを確認し、利用状況データベース12aが見つからなかった場合には、利用者端末2以外の端末に於いてソフトウェアが利用されそうになったとみなし、ソフトウェアの利用を中止させる方法や、利用状況データベース12aを先の端末毎に固有の識別情報のハッシュ値等で暗号化しておき、他の端末の識別情報のハッシュ値等では利用状況データベース12aを復号化出来ないようにする方法等が挙げられる。
【0083】
又、予め生成される利用条件の中に、利用者端末2の識別情報を1条件として加えておき、利用条件と利用状況の照合をする際に、利用状況として実際使用されている端末の識別情報を調べ、利用条件としての本来使用されるべき端末の識別情報と合致しない場合にはソフトウェアの利用を中止させる方法をとってもよい。
【0084】
利用状況データベース12aの生成の仕組みをこのようにしていることにより、仮に利用条件が回数無制限や無償利用等であった場合でも、中身が空又は無意味なデータで構成された利用状況データベース12aを利用者端末2に生成し、利用条件と利用状況の照合の際に、この利用状況データベース12aの存在を確認する過程を経るようにすれば、利用者端末2以外の端末に於けるソフトウェアの利用、つまり利用者及び悪意者によるソフトウェアの不正利用を防止することが出来る。
【0085】
ここで、以上説明した復号鍵解読手段13、復号鍵格納ファイル16、利用状況データベース12aを用いて、復号鍵格納ファイル16内の復号鍵5を解読する方法を、図3を用いて説明する。
【0086】
まず鍵0によって、最初の照合・更新手段131を起動させる。最初の鍵0の入手経路、生成方式等は問わないが、本実施の形態に於いては、鍵0がパッケージ識別情報19である。この場合、直接的に復号鍵解読手段13を起動することが出来る。
【0087】
照合・更新手段131は、該当する利用条件を検索した上で、更に、その利用条件に対応する利用状況データベース12a内の利用状況を検索し、利用状況データベース12aが正当な場所(利用者端末2内)に存在するかどうかを確認し、利用条件1と利用状況1の照合を行い、利用状況1が利用条件1を超えていなければ、利用状況1を更新し、鍵1を取得する。
【0088】
鍵1は、次の照合・更新手段132を起動し、先の手続きと同様に利用条件2と利用状況2の照合と、利用状況2の更新が行われる。
【0089】
最終的に全ての利用条件と利用状況の照合が問題なく完了すれば、復号鍵5が解読され、展開手段14によって、メインメモリ14a上に展開される。
【0090】
利用条件の数が少ない場合や、復号鍵5の解読をより困難にするためには、復号鍵格納ファイル16の内部を、同じ利用条件の照合を繰り返すような構造としたり、1つの利用条件(例えば、利用限度額5000円)を細分化する(例えば、5000円を各桁に分割する)等が考えられる。
【0091】
又、復号鍵格納ファイル16内の鍵や利用条件の全部又は一部は、利用者端末2にダウンロードさせず、送信端末3又はデータ書き換えが不可能な記録媒体に格納されていてもよい。尚、鍵の場合は、単に鍵だけが格納されているのではなく、鍵の入手に必要な入口(照合・更新手段によるチェック結果を受け取り確認する手段)と出口(次に進む照合・更新手段の場所を示した手段)も合わせて格納されているものとする。
【0092】
例えば、図3に於いて、鍵1を利用者又は利用者端末2の識別情報とともに送信端末3に格納する場合、照合・更新手段131は送信端末3にアクセスして、利用条件1と利用状況1の照合結果が問題なかったことを送信端末3に通知した上で、送信端末3から鍵1を入手する。当然、送信端末3はアクセス元が正当な利用者端末2であることを確認する必要がある。
【0093】
又、例えば、利用条件2をCD−ROMに格納する場合、照合・更新手段132は、必ず利用者端末2からCD−ROMにアクセスすることにして、CD−ROM内の利用条件2を入手後、利用状況2との照合を行う。
【0094】
送信端末3内のデータの改ざんや、CD−ROM内のデータ書き換えは出来ないため、利用者及び悪意者によるソフトウェアの不正利用がより困難になり、復号鍵5の更なる保護が図られることになる。
【0095】
尚、復号化手段18に於いては、復号鍵解読手段13に於ける全ての解読過程を順番に経て解読された復号鍵5によってのみ、暗号化されたソフトウェアプログラム10aの復号化が可能であるとする。つまり、何らかの方法で復号鍵5が知られてしまったとしても、暗号化されたソフトウェアプログラム10aの復号化は、復号鍵解読手段13によって復号鍵格納ファイル16の中の復号鍵5が解読された利用者端末2内に於いてしか行われない。
【0096】
復号鍵5は、以上のようなロジックにより、復号鍵格納ファイル16から取り出されるが、復号鍵格納ファイル16は、実際には図8に示すような木構造により構成されている。図8に基づいて説明すると、復号鍵格納ファイル16は、ルートディレクトリの下に、復号鍵5の取得経路、順序を示す経路ディレクトリと、利用状況データベース12aの生成場所や利用状況の更新方法を示す利用状況ディレクトリと、利用条件を格納する利用条件ディレクトリを構成している。経路ディレクトリ下には、照合・更新手段を起動するための鍵が順番に配列し、最終的に取得可能な復号鍵5自体も含まれている。照合・更新手段は、鍵に対応する利用状況データベース12aの場所を利用状況ディレクトリ下から探し出し、更に、対応する利用条件を利用条件ディレクトリ下から探し出して、利用条件と利用状況の照合を行う。つまり、照合・更新手段は、復号鍵格納ファイル16内の分岐した各ディレクトリに格納されている鍵と利用条件と利用状況格納場所とを相互に結び付ける役割を担う。
【0097】
ファイルをこのような木構造としていることにより、復号鍵5は正規の順序を経ないと取得出来ないこととなる。又、一方のディレクトリ内のデータが他方のディレクトリ内のデータと対応するようになっているため、一部のディレクトリのみをコピーしたり、いずれかのディレクトリの格納場所やパス名が変わってしまうと、復号鍵解読手段13との連携が行われなくなるので不正利用を行いにくい、という効果がある。
【0098】
次に、復号鍵5の更なる保護及び、ソフトウェアや復号鍵格納ファイル16の改ざん防止のため、復号鍵格納ファイル16を暗号化して利用者端末2にダウンロードさせる場合の一例について、図4を参照しながら説明する。
【0099】
まず、乱数生成により第1の鍵を得る。尚、第1の鍵は、もともとの復号鍵格納ファイル16のバイナリデータのハッシュ値でもよい。これにより、仮に暗号化された復号鍵格納ファイル16aが復号化された後に改ざんされたとしても、改ざんの結果、ハッシュ値が前のハッシュ値と異なるため再暗号化が出来ず、復号鍵格納ファイル16の改ざん検知が可能となる。第1の鍵は、復号鍵格納ファイル16等に添付され、利用者端末2にダウンロードされる。
【0100】
次に、第1の鍵を置換表15を用いて第2の鍵に変換し、第2の鍵で復号鍵格納ファイル16を暗号化する。ここでは、第2の鍵は暗号化、復号化とも共通の鍵とする。
【0101】
置換表15は、暗号解読表の一種であり、置換前と置換後の対応を表す表である。置換表15を用いることにより、鍵が直接、利用者や悪意者の目に触れられることがなく、鍵の解読や不正利用がしづらくなる。
【0102】
置換表15は、どの利用者、どのソフトウェアに対しても同じであってもよいが、同じ置換表を用いると置換表15の推測がしやすくなり、結果的に不正利用されてしまうため、本実施の形態に於いては、ソフトウェア販売者毎に置換表15を用意している。これにより、同一のソフトウェアであっても不正利用がされれば、販売ルートの特定も可能となり、販売者の権利保護もされる。
【0103】
尚、暗号化された復号鍵格納ファイル16aを利用者端末2にダウンロードする場合には、図1に示したように、置換表15もダウンロードさせる必要があるが、置換表15が利用者や悪意者に分かる状態であると、復号鍵格納ファイル16を暗号化した意味がなくなるので、更に、置換表15を暗号化する。
【0104】
置換表15は、パッケージ化されたソフトウェア11等、改ざんされると不正利用等の問題となるようなバイナリデータから生成されたハッシュ値等の一方向性関数の値を鍵として暗号化され、暗号化された置換表15aとして利用者端末2にダウンロードされる。これにより、暗号化された復号鍵格納ファイル16aの復号化時に、ソフトウェア等の改ざんがされていれば、置換表15が復号化されないので、暗号化された復号鍵格納ファイル16aの復号化もされない。
【0105】
尚、パッケージ化されたソフトウェア11のバイナリデータのハッシュ値によって置換表15を暗号化する場合には、パッケージ化に含まれるソフトウェアプログラム10は、実行後と実行前のハッシュ値が変わらないようなバイナリデータであることが必要である。つまり、ソフトウェアの利用前後に於いて内容が書き替わってしまうような設定ファイルや保存データはパッケージ化してはいけない。
【0106】
【実施例】
次に本発明の復号鍵保護プログラム1を用いて、利用者にソフトウェアを利用させるプロセスの流れの一例を図5、図6、図7のフローチャート図及び図1、図2、図3、図4の構成図とを用いて詳細に説明する。
【0107】
利用者端末2は、ネットワークを介して、送信端末3や、ソフトウェア提供者が管理するサーバ等にアクセスし、希望のソフトウェアを選択する。
【0108】
送信端末3では、利用者毎の利用条件及び乱数による暗号鍵を生成し、ソフトウェアプログラム10を暗号鍵(共通鍵方式で生成された鍵であって、復号鍵5と同一)で暗号化する。この暗号化されたソフトウェアプログラム10aを、復号化手段18とパッケージ識別情報19とともにパッケージ化し、更に、復号鍵5及び利用条件を復号鍵格納ファイル16に収容し、図1に示した復号鍵保護プログラム1(暗号化された復号鍵格納ファイル16aを含む)、インストールプログラム4とともに、利用者端末2にダウンロードさせる。
【0109】
尚、復号鍵格納ファイル16を生成する前提として、送信端末3側に利用者端末2の登録手段、課金手段等は整備されており、ソフトウェア提供者は利用者からの登録、申込み、送金等を受けた後に、その利用者の利用者端末2に一定条件内に於いてソフトウェアの利用を許可したものとする。
【0110】
又、復号鍵格納ファイル16は、先に説明した方法によって暗号化されているものとする。利用状況データベース12aは、利用者端末2のみに生成されるものとする。
【0111】
利用者端末2がこれらのパッケージ化されたソフトウェア11等をダウンロードすると、利用者端末2内で、インストールプログラム4が自動的に起動されるようにするか、又は、利用者端末2からの要求に応じてインストールプログラム4が起動するようにする(S510)。
【0112】
尚、利用者端末2が2回目以降ソフトウェアを利用する場合には、インストールプログラム4を起動しなくても、パッケージ化されたソフトウェア11を起動することによって、以下の流れで、ソフトウェアを利用出来るようにしてもよい。つまり、本実施例に於いては、ソフトウェアの利用手順を記述したプログラムがインストールプログラム4に含まれているが、初回インストールプログラム4の起動時に、利用手順を記述したプログラムが利用者端末2のハードディスク等に格納され、2回目以降は、パッケージ化されたソフトウェア11の起動と連動するようになっていてもよい。
【0113】
利用者端末2に於いて、このソフトウェアが初めて利用されるものである場合(S520)、利用状況生成手段12は、インストールプログラム4が起動されたこの利用者端末2のハードディスク等の外部記憶装置に、利用状況データベース12aを生成する(S530)。既に、このソフトウェアに対応する利用状況データベース12aが生成されている場合には、生成を行わない。
【0114】
利用状況データベース12aは、ダウンロードされた復号鍵格納ファイル16内の利用条件に基づいて生成される。図3に於いては、利用条件の数が3個であるので、各利用条件に対応する利用状況が3個、利用状況データベース12a内に生成される。又、利用状況は、利用毎に回数や金額を増やすことによって更新されてもよいし、最初に利用条件の限度が利用状況に反映され、以降は利用毎に回数や金額を減らすことによって更新されてもよい。
【0115】
尚、利用状況データベース12aは、利用者端末2の識別情報に基づいて暗号化されたり、予め送信端末3が認識した識別情報を有する利用者端末2にのみ利用状況データベース12aの生成を許可する等の方法により、他の端末に於ける生成、コピー、読みとり、更新が不可能なようにされる。
【0116】
インストールプログラム4は、ソフトウェアを最終的に利用出来るようにするための過程の進行役を担う。まずは、パッケージ化されたソフトウェア11を実行する(S540)。但し、この時点では、まだソフトウェアプログラム10は暗号化されており、単に実行してもソフトウェアを利用することは不可能であるため、パッケージに含まれていた復号化手段18と、展開手段14が起動することになる(S550)。
【0117】
復号化手段18が起動すれば、暗号化されたデータを復号化するための鍵さえ揃えば、そのデータを復号化することが出来る。又、展開手段14が起動すれば、各種の鍵やソフトウェアプログラム10等の、利用者端末2のハードディスクにも保存されてばいけないデータをメインメモリ14a上に展開させることが出来る。
【0118】
次に、パッケージ識別情報19をキーボード等により入力して、復号鍵解読手段13を起動させる(S560、S570)。尚、パッケージ識別情報19の入力により復号鍵解読手段13を起動させることは任意でよく、又、入力はキーボード等による入力ではなく、パッケージ化されたソフトウェア11内からパッケージ識別情報19が取り出され、自動的に入力されてもよい。又、復号鍵解読手段13以外の手段を起動、展開させる時にもこのような識別情報の入力を促すようにしてもよい。この識別情報の暗号化の有無も任意である。
【0119】
尚、ここまでのプロセスの流れは、この順番による必要はない。
【0120】
本実施例に於いては、パッケージ識別情報19が図3に於ける鍵0に相当する。つまり、復号鍵解読手段13が起動し、更に、最初の照合・更新手段131が起動する。照合・更新手段131は、対応する利用条件1を取り出す。
【0121】
ここで、復号鍵格納ファイル16が暗号化されている場合には(S580)、利用条件1の取り出しが出来ないため、暗号化された置換表15aを取り出す(S610)。
【0122】
暗号化された置換表15aを復号化するため、パッケージ化されたソフトウェア11のバイナリデータのハッシュ値が生成される(S615)。
【0123】
生成されたハッシュ値を復号化のための鍵として、置換表15を復号化する(S620)。ここで、置換表15の復号化がされなかった場合には、何者かによりパッケージ化されたソフトウェア11の内部の改ざんがされたことになり、その改ざんを検知するとともに、以降のステップには進めないようにする(S625)。
【0124】
復号化された置換表15は、展開手段14に於いて、一時メインメモリ14a上に展開される(S630)。
【0125】
次に、復号鍵格納ファイル16に添付されている第1の鍵を取り出す(S635)。尚、第1の鍵を復号鍵格納ファイル16自身のハッシュ値とすれば、復号鍵格納ファイル16の改ざん検知が可能である。
【0126】
先の復号化された置換表15を用いて、第1の鍵を第2の鍵に置換する(S640)。ここで、第1の鍵から第2の鍵への置換がされなかった場合には、何者かにより復号鍵格納ファイル16及び/又は置換表15が改ざんされたことになり、その改ざんを検知するとともに、以降のステップには進めないようにする(S645)。
【0127】
置換された第2の鍵は、展開手段14に於いて、一時メインメモリ14a上に展開される(S650)。
【0128】
置換された第2の鍵を用いて、暗号化された復号鍵格納ファイル16aを復号化する(S655)。ここで、暗号化された復号鍵格納ファイル16aの復号化がされなかった場合には、何者かにより第2の鍵の改ざんがされたことになり、その改ざんを検知するとともに、以降のステップには進めないようにする(S660)。
【0129】
復号鍵格納ファイル16が復号化されたので、照合・更新手段131は、利用条件1を取り出すことが出来る(S710)。
【0130】
尚、利用条件や鍵は、上述したように、全部又は一部が、送信端末3又はCD−ROM等のデータの書き換えが不可能な記録媒体に格納されている場合もある。特に、ソフトウェア提供者が有償でソフトウェアを提供するような場合には、鍵や利用条件の全部又は一部が送信端末3等に格納されている方がソフトウェアの不正利用等の防止により効果的である。但し、送信端末3側に鍵や利用条件が格納されている場合は、その分ネットワーク接続の負担が高くなるため、注意が必要である。
【0131】
照合・更新手段131は、取り出された利用条件1に対応する利用状況1が利用者端末2内の利用状況データベース12aに存在するかどうかを確認する(S715)。利用状況データベース12aそのもの、又は利用状況1が利用者端末2内に存在しない場合には、利用者端末2以外の端末に於いて、ソフトウェアが利用されそうになったこと表し、以降のステップには進めないようにする(S720)。又、照合・更新手段に於いて、復号鍵格納ファイル16や利用条件や利用状況のハッシュ値をとることによって、これらに対する改ざんを検知することも可能である。
【0132】
照合・更新手段131は、利用状況1が利用者端末2内に存在した場合、その利用状況1が利用条件1を満足しているか、つまり、利用条件1の範囲内の利用かどうかを確認する(S725)。例えば、利用条件1は、「利用限度額が5000円」であり、利用者端末2内に格納された利用状況1が、「累積利用額が3000円」であれば、利用条件1を満足したものとする。一方、累積利用額が5000円以上又は、5000円未満であってもソフトウェアの1回の利用につきかかる金額が残されていない場合には、利用条件1を満足しなかったものとして、以降のステップに進めないようにする(S730)。
【0133】
利用条件1と利用状況1の照合が終わると、利用状況1の更新を行うとともに、次の照合・更新手段132に進むために必要な鍵1が取り出される(S735)。
【0134】
利用状況の更新は、例えば、対応する利用条件が「回数」に関するものである場合には、累積利用回数に1を加算するか、残り利用回数に1を減算する等した状態に自動的に更新される。利用条件が「金額」に関するものである場合には、ソフトウェアの1回利用毎に課金されるものであれば、1回の利用料金を減算する等して、利用状況データベース12aを更新するが、実際にソフトウェアを利用した時間に応じて課金されるような場合には、ソフトウェアの利用終了後に、利用状況データベース12aを更新するようにしてもよい。又、利用条件が、無期限、回数制限なしといった永久利用権のようなものであった場合でも、利用者が他人にソフトウェアを渡して不正利用させるといったことを防止するため、中身が空又は無意味なデータで構成された利用状況データベース12aを利用者端末2に生成し、利用条件と利用状況の照合時に必ず、利用状況データベース12aの存在を確認する過程を経るとよい。
【0135】
ここで、取り出された鍵が何番目の鍵かどうかを確認する(S740)。例えば、利用条件の合計数が3であれば、鍵3が取り出さた後に、ソフトウェアプログラム10の復号鍵5が取り出され、展開手段14に於いて、一時メインメモリ14a上に展開される(S750)。尚、図3に於いて、鍵1や鍵2が取り出された時点では、まだ全ての利用条件と利用状況の照合がされていないため、次の利用条件と利用状況の照合に進む(S745)。
【0136】
復号鍵解読手段13に於いて最終的に解読され、かつメインメモリ14a上に展開された復号鍵5を用いて、復号化手段18に於いて、暗号化されたソフトウェアプログラム10aを復号化する(S755)。
【0137】
復号化されたソフトウェアプログラム10は、利用者端末2のハードディスクではなくメインメモリ14a上に展開され、メインメモリ14a上でソフトウェア利用が可能となる(S760)。尚、利用者端末2のハードディスクにもソフトウェアプログラム10が格納されないのは、一旦、ハードディスクに格納されてしまうと、利用条件を無視したソフトウェアの利用が可能となってしまうのを防止するためである。但し、ソフトウェア利用の都度、保存されるべきデータ(実行プログラムなしに単独では利用不可能な設定データや、文書データ等)については、復号化されたソフトウェアプログラム10がなければそもそも開くことが出来ないので、ハードディスク等の外部記憶装置に保存してもよい。
【0138】
メインメモリ14a上でのソフトウェアの利用が終了すれば、ソフトウェアプログラム10は、メインメモリ14aからも削除されるが、当然、ハードディスク上にはパッケージ化されたソフトウェア11が残されており、2回目以降ソフトウェアを利用する場合も、これまでと同様の復号鍵解読過程を経ることによって、利用条件の範囲内でソフトウェアの利用が可能となる。
【0139】
以上は、ソフトウェアプログラム10を暗号化して、一定利用条件下でソフトウェアを利用させる場合について説明したが、上記ソフトウェアのみならず、映像・画像・音声等をデジタル化したコンテンツデータについても同様に暗号化して、本発明の復号鍵保護プログラム1とともに利用者端末2にダウンロードさせ、一定利用条件下で利用させるようにすることは可能である。
【0140】
尚、コンテンツデータは実行プログラムではないため、ソフトウェアプログラム10のようにパッケージ化することは出来ない。従って、暗号鍵によって暗号化されたコンテンツデータは、単独でダウンロード可能としてもよいが、コンテンツデータを閲覧、表示等するためのプログラム(ビューアー等)が汎用されているものであれば、復号鍵を知られてしまっただけで、利用条件を無視した利用が可能となってしまう。従って、暗号化されたコンテンツデータは、復号鍵格納ファイル16に含まれているのがよい。
【0141】
暗号化されたコンテンツデータの復号鍵を保護する場合、図8の復号鍵格納ファイルのルートディレクトリ下に、新たにコンテンツ用ディレクトリが追加され、コンテンツ用ディレクトリ下には、コンテンツデータが圧縮及び暗号化された状態で格納される。復号鍵が解読されると、コンテンツデータ用ディレクトリ下にあるコンテンツデータが取り出され、メモリ上で復号化されることになる。木構造としていることによって、ソフトウェアプログラムの時と同様、コンテンツ用ディレクトリのみが別の記録媒体に不正にコピーされたり、いずれかのディレクトリの格納場所やパス名が変更になってしまえば、コンテンツを見ることは出来ないという効果がある。
【0142】
尚、コンテンツデータとしての画像・映像・音声等を表示させるのに必要なプログラムは、既に利用者端末に格納されているような汎用品であってもよいし、上述した実施例のように、ソフトウェアプログラムとして、復号鍵で暗号化して、任意にパッケージ化した後、暗号化されたコンテンツデータとともにダウンロードさせてもよい。
【0143】
本発明に於ける各手段、データベースは、その機能が論理的に区別されているのみであって、物理上或は事実上は同一の領域を為していてもよい。又データベースの代わりにデータファイルであってもよいことは言うまでもなく、データベースとの記載にはデータファイルをも含んでいる。
【0144】
尚、本発明を実施するにあたり本実施態様の機能を実現するソフトウェアのプログラムを記録した記憶媒体をシステムに供給し、そのシステムのコンピュータが記憶媒体に格納されたプログラムを読み出し実行することによっても実現される。
【0145】
この場合、記憶媒体から読み出されたプログラム自体が前記した実施態様の機能を実現することとなり、そのプログラムを記憶した記憶媒体は本発明を構成する。
【0146】
本発明のプログラムの供給は、主として、インターネット等のネットワークを介してコンピュータにダウンロードさせる方法による。その他、磁気ディスク、光ディスク、光磁気ディスク、磁気テープ、不揮発性のメモリカード等の可搬型の記録媒体からコンピュータへの供給も可能である。
【0147】
又、コンピュータが読み出したプログラムを実行することにより、上述した実施態様の機能が実現されるだけではなく、そのプログラムの指示に基づき、コンピュータ上で稼働しているオペレーティングシステムなどが実際の処理の一部又は全部を行い、その処理によって前記した実施態様の機能が実現される場合も本発明に含まれる。
【0148】
【発明の効果】
本発明により暗号化されたソフトウェアプログラムやコンテンツデータの復号鍵が保護されれば、復号鍵を利用者に生成させる手間を掛けることなく、利便性を損なうことなく、ソフトウェアやコンテンツを一定条件下で利用者に利用させることが可能となる。利用者は一度、暗号化されたソフトウェアプログラムや復号鍵格納ファイル等を端末にダウンロードしさえすれば、以降は特別な入力、ダウンロード作業、ネットワーク接続等を必要とせず、利用条件の範囲内でソフトウェアやコンテンツを利用することが出来る。
【0149】
悪意者によるソフトウェアやコンテンツの不正利用のみならず、正当な利用者により、同一ソフトウェア・コンテンツが2回以上利用される場合にも不正利用を防止することが出来、ソフトウェア・コンテンツ提供者側の著作権保護に貢献する。
【図面の簡単な説明】
【図1】本発明の復号鍵保護プログラムの一実施形態を示す構成図である。
【図2】ソフトウェアプログラムの暗号化、パッケージ化の一実施形態を示す図である。
【図3】復号鍵解読手段、復号鍵格納ファイル、利用状況データベースの構成の一例を示す図である。
【図4】復号鍵格納ファイルの暗号化の一例を示す図である。
【図5】本発明のプロセスの流れの一例を示すフローチャート図である。
【図6】本発明のプロセスの流れの一例を示すフローチャート図である。
【図7】本発明のプロセスの流れの一例を示すフローチャート図である。
【図8】復号鍵格納ファイルのファイル構造の一例を示す図である。
【符号の説明】
1:復号鍵保護プログラム
10:ソフトウェアプログラム
10a:暗号化されたソフトウェアプログラム
11:パッケージ化されたソフトウェア
12:利用状況生成手段
12a:利用状況データベース
13:復号鍵解読手段
131、132、133:照合・更新手段
14:展開手段
14a:メインメモリ
15:置換表
15a:暗号化された置換表
16:復号鍵格納ファイル
16a:暗号化された復号鍵格納ファイル
17:ヘッダ
18:復号化手段
19:パッケージ識別情報
2:利用者端末
3:送信端末
4:インストールプログラム
5:復号鍵
Claims (22)
- ソフトウェアプログラム及び/又はコンテンツデータを、予め決められた利用回数・金額・期限等の利用条件の下で利用者に利用させるソフトウェア・コンテンツ提供サービスに於いて、前記利用者以外の者が生成した鍵によって暗号化されたソフトウェアプログラム及び/又はコンテンツデータとともに、前記利用者の端末に格納される復号鍵保護プログラムであって、
利用状況を前記ソフトウェア・コンテンツの利用毎に更新することが出来る利用状況データベースを、前記利用者の端末以外の端末による読みとり、更新が出来ないような状態で、前記利用者の端末に生成する利用状況生成手段と、
前記利用状況データベースに格納された利用状況と、前記利用条件との照合を行い、前記利用状況が前記利用条件を超えない場合に限り、前記利用状況データベース内の利用状況を更新し、前記暗号化されたソフトウェアプログラム及び/又はコンテンツデータの復号鍵を復号鍵格納ファイルの中から解読する復号鍵解読手段と、を有することを特徴とする復号鍵保護プログラム。 - 前記復号鍵保護プログラムは、
前記復号鍵解読手段に於いて解読された復号鍵を用いて、前記暗号化されたソフトウェアプログラム及び/又はコンテンツデータを復号化する復号化手段と、
前記解読された復号鍵、及び、前記復号化されたソフトウェアプログラム及び/又はコンテンツデータを、前記利用者の端末のメインメモリ上に展開する展開手段と、を有することを特徴とする請求項1に記載の復号鍵保護プログラム。 - 前記復号鍵は、共通鍵暗号方式により生成されることを特徴とする請求項1又は請求項2に記載の復号鍵保護プログラム。
- 前記復号鍵は、前記利用者毎に、乱数により生成されることを特徴とする請求項1から請求項3のいずれかに記載の復号鍵保護プログラム。
- 前記復号鍵格納ファイルは、前記復号鍵と、1以上の前記利用条件を内包し、前記復号鍵解読手段に於いてのみ前記復号鍵の解読が可能なように、前記利用者の端末に格納されることを特徴とする請求項1から請求項4のいずれかに記載の復号鍵保護プログラム。
- 前記復号鍵格納ファイルは、乱数等の第1の鍵を置換表で置換した第2の鍵によって暗号化されることを特徴とする請求項1から請求項5のいずれかに記載の復号鍵保護プログラム。
- 前記置換表は、前記ソフトウェア・コンテンツ提供者毎に生成されることを特徴とする請求項6に記載の復号鍵保護プログラム。
- 前記置換表は、前記ソフトウェアプログラム及び/又はコンテンツデータのバイナリデータから得られるハッシュ値等の一方向性関数によって暗号化されることを特徴とする請求項6又は請求項7に記載の復号鍵保護プログラム。
- 前記利用状況データベースは、前記利用者の端末に於いて、前記端末の識別情報(MACアドレス、BIOSのシリアル番号、ハードディスクのシリアル番号等)のハッシュ値等の一方向性関数によって暗号化されることを特徴とする請求項1から請求項8のいずれかに記載の復号鍵保護プログラム。
- 前記暗号化されたソフトウェアプログラムは、パッケージ化されていることを特徴とする請求項1から請求項9のいずれかに記載の復号鍵保護プログラム。
- 前記暗号化されたコンテンツデータは、前記復号鍵格納ファイルに含まれていることを特徴とする請求項1から請求項9のいずれかに記載の復号鍵保護プログラム。
- ソフトウェアプログラム及び/又はコンテンツデータを、予め決められた利用回数・金額・期限等の利用条件の下で利用者に利用させるソフトウェア・コンテンツ提供サービスに於いて、前記利用者以外の者が生成した鍵によって暗号化されたソフトウェアプログラム及び/又はコンテンツデータの復号鍵を保護する復号鍵保護方法であって、
利用状況を前記ソフトウェア・コンテンツの利用毎に更新することが出来る利用状況データベースが、前記利用者の端末以外の端末による読みとり、更新が出来ないような状態で、前記利用者の端末に生成され、
前記利用状況データベースに格納された利用状況と、前記利用条件との照合が行われ、前記利用状況が前記利用条件を超えない場合に限り、前記利用状況データベース内の利用状況が更新され、前記暗号化されたソフトウェアプログラム及び/又はコンテンツデータの復号鍵が復号鍵格納ファイルの中から解読される、ことを特徴とする復号鍵保護方法。 - 前記復号鍵保護方法は、
前記解読された復号鍵を用いて、前記暗号化されたソフトウェアプログラム及び/又はコンテンツデータが復号化され、
前記解読された復号鍵、及び、前記復号化されたソフトウェアプログラム及び/又はコンテンツデータが、前記利用者の端末のメインメモリ上に展開される、ことを特徴とする請求項12に記載の復号鍵保護方法。 - 前記復号鍵は、共通鍵暗号方式により生成されることを特徴とする請求項12又は請求項13に記載の復号鍵保護方法。
- 前記復号鍵は、前記利用者毎に、乱数により生成されることを特徴とする請求項12から請求項14のいずれかに記載の復号鍵保護方法。
- 前記復号鍵格納ファイルは、前記復号鍵と、1以上の前記利用条件を内包し、前記復号鍵解読手段に於いてのみ前記復号鍵の解読が可能なように、前記利用者の端末に格納されることを特徴とする請求項12から請求項15のいずれかに記載の復号鍵保護方法。
- 前記復号鍵格納ファイルは、乱数等の第1の鍵を置換表で置換した第2の鍵によって暗号化されることを特徴とする請求項12から請求項16のいずれかに記載の復号鍵保護方法。
- 前記置換表は、前記ソフトウェア・コンテンツ提供者毎に生成されることを特徴とする請求項17に記載の復号鍵保護方法。
- 前記置換表は、前記ソフトウェアプログラム及び/又はコンテンツデータのバイナリデータから得られるハッシュ値等の一方向性関数によって暗号化されることを特徴とする請求項17又は請求項18に記載の復号鍵保護方法。
- 前記利用状況データベースは、前記利用者の端末に於いて、前記端末の識別情報(MACアドレス、BIOSのシリアル番号、ハードディスクのシリアル番号等)のハッシュ値等の一方向性関数によって暗号化されることを特徴とする請求項12から請求項19のいずれかに記載の復号鍵保護方法。
- 前記暗号化されたソフトウェアプログラムは、パッケージ化されていることを特徴とする請求項12から請求項20のいずれかに記載の復号鍵保護方法。
- 前記暗号化されたコンテンツデータは、前記復号鍵格納ファイルに含まれていることを特徴とする請求項12から請求項20のいずれかに記載の復号鍵保護方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003102440A JP2004309737A (ja) | 2003-04-07 | 2003-04-07 | 復号鍵保護プログラム及び復号鍵保護方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003102440A JP2004309737A (ja) | 2003-04-07 | 2003-04-07 | 復号鍵保護プログラム及び復号鍵保護方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004309737A true JP2004309737A (ja) | 2004-11-04 |
Family
ID=33465865
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003102440A Pending JP2004309737A (ja) | 2003-04-07 | 2003-04-07 | 復号鍵保護プログラム及び復号鍵保護方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2004309737A (ja) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006238154A (ja) * | 2005-02-25 | 2006-09-07 | Sony Corp | データ処理方法 |
JP2006303622A (ja) * | 2005-04-15 | 2006-11-02 | Sony Corp | 情報処理装置、情報記録媒体、および情報処理方法、並びにコンピュータ・プログラム |
JP2007116503A (ja) * | 2005-10-21 | 2007-05-10 | Mitsubishi Electric Information Systems Corp | 転送元用パック、転送要求端末、転送元用パック生成装置、転送データ復元装置、プログラムセット、及び転送データ復元プログラム |
JP2007334821A (ja) * | 2006-06-19 | 2007-12-27 | Trinity Security Systems Inc | アプリケーション保護装置、アプリケーション保護方法およびアプリケーション保護プログラム |
JP2010191551A (ja) * | 2009-02-16 | 2010-09-02 | Intelligent Wave Inc | ファイル制御プログラム、ファイル送信プログラム、ファイル送信装置、ファイル制御方法及びファイル送信方法 |
JP2011259284A (ja) * | 2010-06-10 | 2011-12-22 | Ricoh Co Ltd | 情報保護装置及び情報保護プログラム |
JP2018502505A (ja) * | 2014-12-23 | 2018-01-25 | ヴァレオ、コンフォート、アンド、ドライビング、アシスタンスValeo Comfort And Driving Assistance | 仮想鍵を安全に送信する方法、およびモバイル端末を認証する方法 |
-
2003
- 2003-04-07 JP JP2003102440A patent/JP2004309737A/ja active Pending
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006238154A (ja) * | 2005-02-25 | 2006-09-07 | Sony Corp | データ処理方法 |
JP2006303622A (ja) * | 2005-04-15 | 2006-11-02 | Sony Corp | 情報処理装置、情報記録媒体、および情報処理方法、並びにコンピュータ・プログラム |
JP2007116503A (ja) * | 2005-10-21 | 2007-05-10 | Mitsubishi Electric Information Systems Corp | 転送元用パック、転送要求端末、転送元用パック生成装置、転送データ復元装置、プログラムセット、及び転送データ復元プログラム |
JP4668028B2 (ja) * | 2005-10-21 | 2011-04-13 | 三菱電機インフォメーションシステムズ株式会社 | 転送元用ソフトウェア、転送要求端末、転送元用パック生成装置、及びプログラムセット |
JP2007334821A (ja) * | 2006-06-19 | 2007-12-27 | Trinity Security Systems Inc | アプリケーション保護装置、アプリケーション保護方法およびアプリケーション保護プログラム |
JP2010191551A (ja) * | 2009-02-16 | 2010-09-02 | Intelligent Wave Inc | ファイル制御プログラム、ファイル送信プログラム、ファイル送信装置、ファイル制御方法及びファイル送信方法 |
JP2011259284A (ja) * | 2010-06-10 | 2011-12-22 | Ricoh Co Ltd | 情報保護装置及び情報保護プログラム |
US9059843B2 (en) | 2010-06-10 | 2015-06-16 | Ricoh Company, Ltd. | Information protection apparatus, information protection method, and storage medium |
JP2018502505A (ja) * | 2014-12-23 | 2018-01-25 | ヴァレオ、コンフォート、アンド、ドライビング、アシスタンスValeo Comfort And Driving Assistance | 仮想鍵を安全に送信する方法、およびモバイル端末を認証する方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6195432B1 (en) | Software distribution system and software utilization scheme for improving security and user convenience | |
JP3130267B2 (ja) | 暗号エンベロープの作成方法 | |
KR100912276B1 (ko) | 하드웨어 식별에 기초한 디지털권 관리 방법을 이용한 전자소프트웨어 배포 방법 및 시스템 | |
US7228419B2 (en) | Information recording medium, information processing apparatus and method, program recording medium, and information processing system | |
JPH10123950A (ja) | データ検証方法、被検証データ生成装置およびデータ検証装置 | |
JP2002503365A (ja) | 一意的にカスタマイズされ、認証かつ追跡可能なソフトウェア・アプリケーションのネットワーク化インストール方法およびシステム | |
JP2012524309A (ja) | 電子チケット処理の方法及び装置 | |
JP2004157864A (ja) | コンテンツ配信システム | |
US6954854B1 (en) | Electronic authentication method, electronic authentication apparatus and electronic authentication storage medium | |
JPH1131130A (ja) | サービス提供装置 | |
JP2002041347A (ja) | 情報提供システムおよび装置 | |
Chen et al. | A novel DRM scheme for accommodating expectations of personal use | |
KR100773963B1 (ko) | 핑거프린팅 관리 시스템 및 핑거프린트 코드 전달 방법 | |
JP3758316B2 (ja) | ソフトウェアライセンス管理装置および方法 | |
JP3659090B2 (ja) | 電子情報流通システム及び電子情報流通プログラムを格納した記憶媒体及び電子情報流通方法 | |
KR20100114321A (ko) | 디지털 콘텐츠 거래내역 인증확인 시스템 및 그 방법 | |
JPH11203128A (ja) | デジタルソフトウェア配布システム、端末装置および記録媒体 | |
JP2004309737A (ja) | 復号鍵保護プログラム及び復号鍵保護方法 | |
JP3641909B2 (ja) | 証明データ生成装置 | |
JP2002229447A (ja) | デジタルコンテンツ流通における著作権保護システム | |
JP2005148982A (ja) | ユーザ認証方法、ユーザ情報取得装置、認証サーバ装置、ユーザ情報取得装置用プログラムおよび認証サーバ装置用プログラム | |
JP2004297550A (ja) | コンテンツ管理システム及びコンテンツ配信システム | |
JP2005063207A (ja) | アップデートプログラム及びアップデート方法 | |
JP2005215945A (ja) | 情報処理装置、ソフトウェアの実行を許可する記憶装置、および、ソフトウェア実行方法 | |
JPH07131449A (ja) | ディジタル情報通信システム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20060403 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060403 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090908 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20100112 |