(57)【要約】【課題】暗号化されたソフトウェアプログラムの復号鍵を安全に保護する。【解決手段】ソフトウェアを予め決められた利用条件の下で利用者に利用させるサービスに於いて、前記利用者以外の者が生成した鍵によって暗号化されたソフトウェアプログラム１０ａとともに、前記利用者の端末２に格納される復号鍵保護プログラムであって、利用状況を前記ソフトウェアの利用毎に更新することが出来る利用状況データベース１２ａを、端末２以外の端末による読みとり、更新が出来ないような状態で、端末２に生成する利用状況生成手段１２と、利用状況データベース１２ａに格納された利用状況と、前記利用条件との照合を行い、前記利用状況が前記利用条件を超えない場合に限り、利用状況データベース１２ａ内の利用状況を更新し、暗号化されたソフトウェアプログラム１０ａの復号鍵５を復号鍵格納ファイル１６の中から解読する復号鍵解読手段１３とを有する。【選択図】図３
2004309737.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウェアプログラム及び／又はコンテンツデータを、予め決められた利用回数・金額・期限等の利用条件の下で利用者に利用させるソフトウェア・コンテンツ提供サービスに於いて、前記利用者以外の者が生成した鍵によって暗号化されたソフトウェアプログラム及び／又はコンテンツデータとともに、前記利用者の端末に格納される復号鍵保護プログラムであって、
利用状況を前記ソフトウェア・コンテンツの利用毎に更新することが出来る利用状況データベースを、前記利用者の端末以外の端末による読みとり、更新が出来ないような状態で、前記利用者の端末に生成する利用状況生成手段と、
前記利用状況データベースに格納された利用状況と、前記利用条件との照合を行い、前記利用状況が前記利用条件を超えない場合に限り、前記利用状況データベース内の利用状況を更新し、前記暗号化されたソフトウェアプログラム及び／又はコンテンツデータの復号鍵を復号鍵格納ファイルの中から解読する復号鍵解読手段と、を有することを特徴とする復号鍵保護プログラム。
【請求項２】
前記復号鍵保護プログラムは、
前記復号鍵解読手段に於いて解読された復号鍵を用いて、前記暗号化されたソフトウェアプログラム及び／又はコンテンツデータを復号化する復号化手段と、
前記解読された復号鍵、及び、前記復号化されたソフトウェアプログラム及び／又はコンテンツデータを、前記利用者の端末のメインメモリ上に展開する展開手段と、を有することを特徴とする請求項１に記載の復号鍵保護プログラム。
【請求項３】
前記復号鍵は、共通鍵暗号方式により生成されることを特徴とする請求項１又は請求項２に記載の復号鍵保護プログラム。
【請求項４】
前記復号鍵は、前記利用者毎に、乱数により生成されることを特徴とする請求項１から請求項３のいずれかに記載の復号鍵保護プログラム。
【請求項５】
前記復号鍵格納ファイルは、前記復号鍵と、１以上の前記利用条件を内包し、前記復号鍵解読手段に於いてのみ前記復号鍵の解読が可能なように、前記利用者の端末に格納されることを特徴とする請求項１から請求項４のいずれかに記載の復号鍵保護プログラム。
【請求項６】
前記復号鍵格納ファイルは、乱数等の第１の鍵を置換表で置換した第２の鍵によって暗号化されることを特徴とする請求項１から請求項５のいずれかに記載の復号鍵保護プログラム。
【請求項７】
前記置換表は、前記ソフトウェア・コンテンツ提供者毎に生成されることを特徴とする請求項６に記載の復号鍵保護プログラム。
【請求項８】
前記置換表は、前記ソフトウェアプログラム及び／又はコンテンツデータのバイナリデータから得られるハッシュ値等の一方向性関数によって暗号化されることを特徴とする請求項６又は請求項７に記載の復号鍵保護プログラム。
【請求項９】
前記利用状況データベースは、前記利用者の端末に於いて、前記端末の識別情報（ＭＡＣアドレス、ＢＩＯＳのシリアル番号、ハードディスクのシリアル番号等）のハッシュ値等の一方向性関数によって暗号化されることを特徴とする請求項１から請求項８のいずれかに記載の復号鍵保護プログラム。
【請求項１０】
前記暗号化されたソフトウェアプログラムは、パッケージ化されていることを特徴とする請求項１から請求項９のいずれかに記載の復号鍵保護プログラム。
【請求項１１】
前記暗号化されたコンテンツデータは、前記復号鍵格納ファイルに含まれていることを特徴とする請求項１から請求項９のいずれかに記載の復号鍵保護プログラム。
【請求項１２】
ソフトウェアプログラム及び／又はコンテンツデータを、予め決められた利用回数・金額・期限等の利用条件の下で利用者に利用させるソフトウェア・コンテンツ提供サービスに於いて、前記利用者以外の者が生成した鍵によって暗号化されたソフトウェアプログラム及び／又はコンテンツデータの復号鍵を保護する復号鍵保護方法であって、
利用状況を前記ソフトウェア・コンテンツの利用毎に更新することが出来る利用状況データベースが、前記利用者の端末以外の端末による読みとり、更新が出来ないような状態で、前記利用者の端末に生成され、
前記利用状況データベースに格納された利用状況と、前記利用条件との照合が行われ、前記利用状況が前記利用条件を超えない場合に限り、前記利用状況データベース内の利用状況が更新され、前記暗号化されたソフトウェアプログラム及び／又はコンテンツデータの復号鍵が復号鍵格納ファイルの中から解読される、ことを特徴とする復号鍵保護方法。
【請求項１３】
前記復号鍵保護方法は、
前記解読された復号鍵を用いて、前記暗号化されたソフトウェアプログラム及び／又はコンテンツデータが復号化され、
前記解読された復号鍵、及び、前記復号化されたソフトウェアプログラム及び／又はコンテンツデータが、前記利用者の端末のメインメモリ上に展開される、ことを特徴とする請求項１２に記載の復号鍵保護方法。
【請求項１４】
前記復号鍵は、共通鍵暗号方式により生成されることを特徴とする請求項１２又は請求項１３に記載の復号鍵保護方法。
【請求項１５】
前記復号鍵は、前記利用者毎に、乱数により生成されることを特徴とする請求項１２から請求項１４のいずれかに記載の復号鍵保護方法。
【請求項１６】
前記復号鍵格納ファイルは、前記復号鍵と、１以上の前記利用条件を内包し、前記復号鍵解読手段に於いてのみ前記復号鍵の解読が可能なように、前記利用者の端末に格納されることを特徴とする請求項１２から請求項１５のいずれかに記載の復号鍵保護方法。
【請求項１７】
前記復号鍵格納ファイルは、乱数等の第１の鍵を置換表で置換した第２の鍵によって暗号化されることを特徴とする請求項１２から請求項１６のいずれかに記載の復号鍵保護方法。
【請求項１８】
前記置換表は、前記ソフトウェア・コンテンツ提供者毎に生成されることを特徴とする請求項１７に記載の復号鍵保護方法。
【請求項１９】
前記置換表は、前記ソフトウェアプログラム及び／又はコンテンツデータのバイナリデータから得られるハッシュ値等の一方向性関数によって暗号化されることを特徴とする請求項１７又は請求項１８に記載の復号鍵保護方法。
【請求項２０】
前記利用状況データベースは、前記利用者の端末に於いて、前記端末の識別情報（ＭＡＣアドレス、ＢＩＯＳのシリアル番号、ハードディスクのシリアル番号等）のハッシュ値等の一方向性関数によって暗号化されることを特徴とする請求項１２から請求項１９のいずれかに記載の復号鍵保護方法。
【請求項２１】
前記暗号化されたソフトウェアプログラムは、パッケージ化されていることを特徴とする請求項１２から請求項２０のいずれかに記載の復号鍵保護方法。
【請求項２２】
前記暗号化されたコンテンツデータは、前記復号鍵格納ファイルに含まれていることを特徴とする請求項１２から請求項２０のいずれかに記載の復号鍵保護方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、利用条件が予め決められたソフトウェアやコンテンツを暗号化して、利用者に送付するに際し、悪意者のみならず、正当な利用者からも、暗号化されたソフトウェアやコンテンツを復号化するための鍵を安全に保護する技術に関するものである。
【０００２】
【従来の技術】
近年、ソフトウェアや、画像・映像・音声等がデジタル化されたコンテンツを、有償・無償を問わずネットワークを介して利用者のパソコン等の受信端末にダウンロードさせるサービスが増えている。
【０００３】
このようなサービスの増加に伴い生じた問題として、悪意者によるネットワーク上の盗聴（傍受）や、利用者によるソフトウェアやコンテンツの不正コピー等の不正利用が挙げられる。
【０００４】
これらの問題を解決するため、特許文献１、特許文献２に開示されているように、公開鍵暗号方式を用いてコンテンツや、コンテンツ利用者の権利情報（コンテンツ利用可能回数・金額・期限等の利用条件。コンテンツ利用時に利用条件がチェックされる。）を暗号化するシステムや方法が知られる。
【０００５】
【特許文献１】
特開２０００−３２４０９６号公報
【特許文献２】
特開２００２−３００１５８号公報
【０００６】
特許文献１に開示された発明によれば、利用者が予め自己の端末に於いて、この端末の識別情報（マシンＩＤ）に基づく秘密鍵を生成しておき、コンテンツ配信側の端末は利用者から受信したこの識別情報に基づいて公開鍵を生成することによって、コンテンツの盗聴防止、改ざん防止を行うことが出来る。
【０００７】
特許文献２に開示された発明によれば、認証局が発行する電子証明書と、その電子証明書のハッシュ値を認証局の秘密鍵で暗号化した電子証明書とを、利用者のＩＣカード内に格納し、これらを認証局の公開鍵で復号化することによってＩＣカード及びこのＩＣカードの所有者の正当性を確認してから、ＩＣカードの所有者によるコンテンツの利用を可能とすることが出来る。
【０００８】
上記いずれの文献に於いても、公開鍵暗号方式が利用されており、公開鍵暗号方式の利用は確かにコンテンツの盗聴・改ざんの防止には効果的である。しかし、コンテンツの利用者にとっては、コンテンツのダウンロードの都度秘密鍵を生成する手間、ＩＣカードを所有する手間、電子証明書を発行させられる手間等が発生し、家庭に於けるネットワークの常時接続が普及した最近のコンテンツ利用事情に即していない。
【０００９】
ここで、暗号方式を問わず、コンテンツや権利情報の改ざんによるコンテンツの不正利用を防止することが出来る方法が特許文献３に開示されている。
【００１０】
【特許文献３】
特開２００１−６９１３３号公報
【００１１】
特許文献３に開示された発明は、利用者の端末内のハードディスクには常に暗号化された状態のコンテンツや権利情報が格納され、コンテンツを利用する際にはコンテンツや権利情報の復号化が、利用者がアクセス出来ない記憶領域内で行われ、コンテンツ利用終了後は再び暗号化されてハードディスクに格納されることを特徴としている。
【００１２】
しかし、特許文献３に開示された発明には、以下に掲げる課題があった。
【００１３】
【発明が解決しようとする課題】
すなわち、コンテンツや権利情報の復号化に用いられる鍵は安全に利用者に送付されなければ、特許文献３に開示された発明によっても、悪意者による盗聴を防止することは不可能である。
【００１４】
そこで、特許文献３に開示された発明に於いても、特許文献１や特許文献２に記載された公開鍵暗号方式を用いてコンテンツの暗号化を行えば、盗聴の危険性は減る。しかし、この場合、利用者による秘密鍵の生成が必須となり、利用者側の利便性が損なわれることは上述した通りである。
【００１５】
又、共通鍵暗号方式を用いてコンテンツが暗号化された場合には、暗号化及び復号化に用いられる共通鍵を安全に送付することは難しくなるという問題が生じるため、結局のところ公開鍵暗号方式と兼用するしかないのが現状である。
【００１６】
更に、利用者の良心が欠けているような場合には、暗号化されたコンテンツと権利情報に加え、コンテンツや権利情報の復号化に用いられる鍵を、丸ごと第三者に渡してしまえば、暗号方式の種類を問わず、利用者以外の者によるコンテンツの利用、すなわち不正利用が可能となってしまう。
【００１７】
本発明は、このような問題点に鑑みてなされたものであって、その目的とするところは、ソフトウェアやコンテンツの提供者が、暗号化されたソフトウェアやコンテンツを利用者に送付するに際し、利用者がソフトウェアやコンテンツを利用する際の利便性を損なうことなく、復号鍵が保護され、結果としてソフトウェアやコンテンツの盗聴、改ざん、不正利用がされにくくなるような復号鍵保護プログラム及び復号鍵保護方法を提供することにある。
【００１８】
【課題を解決するための手段】
上記目的を達成するために、本発明は、ソフトウェアプログラム及び／又はコンテンツデータを、予め決められた利用回数・金額・期限等の利用条件の下で利用者に利用させるソフトウェア・コンテンツ提供サービスに於いて、前記利用者以外の者が生成した鍵によって暗号化されたソフトウェアプログラム及び／又はコンテンツデータとともに、前記利用者の端末に格納される復号鍵保護プログラム及び、前記暗号化されたソフトウェアプログラム及び／又はコンテンツデータの復号鍵を保護する復号鍵保護方法であって、利用状況を前記ソフトウェア・コンテンツの利用毎に更新することが出来る利用状況データベースを、前記利用者の端末以外の端末による読みとり、更新が出来ないような状態で、前記利用者の端末に生成する利用状況生成手段と、前記利用状況データベースに格納された利用状況と、前記利用条件との照合を行い、前記利用状況が前記利用条件を超えない場合に限り、前記利用状況データベース内の利用状況を更新し、前記暗号化されたソフトウェアプログラム及び／又はコンテンツデータの復号鍵を復号鍵格納ファイルの中から解読する復号鍵解読手段とを有する構成を採用している。
【００１９】
この構成により、暗号化されたソフトウェアプログラム及び／又はコンテンツデータの復号鍵が悪意者のみならず利用者からも保護され、しかも利用者に一定条件下でソフトウェア・コンテンツを利用させることが出来、利用者及び悪意者による不正利用を防止することが出来る。本発明により、盗聴や不正利用について心配することなく、又、利用者に鍵を生成する手間をかけることなく、ソフトウェアやコンテンツのダウンロードサービスが行われるようになる。
【００２０】
請求項２及び請求項１３に記載の発明は、
前記復号鍵解読手段に於いて解読された復号鍵を用いて、前記暗号化されたソフトウェアプログラム及び／又はコンテンツデータを復号化する復号化手段と、前記解読された復号鍵、及び、前記復号化されたソフトウェアプログラム及び／又はコンテンツデータを、前記利用者の端末のメインメモリ上に展開する展開手段とを有する復号鍵保護プログラム及び復号鍵保護方法である。
【００２１】
請求項２及び請求項１３の発明により、ソフトウェアプログラムやコンテンツデータがハードディスク上に格納されないため、利用条件を無視した利用や、コピー等の不正利用を防止することが出来る。
【００２２】
請求項３及び請求項１４に記載の発明は、
前記復号鍵は、共通鍵暗号方式により生成される復号鍵保護プログラム及び復号鍵保護方法である。
【００２３】
請求項３及び請求項１４の発明により、利用者は、復号化処理に時間がかからないので、利用者側の利便性が損なわれない。ソフトウェア・コンテンツ提供者側は、鍵の生成が容易となり、暗号化処理に時間がかからない。
【００２４】
請求項４及び請求項１５に記載の発明は、
前記復号鍵は、前記利用者毎に、乱数により生成される復号鍵保護プログラム及び復号鍵保護方法である。
【００２５】
請求項４及び請求項１５の発明により、復号鍵は、利用者毎に生成されるので、リプレイアタックによるハッキングからも保護される。
【００２６】
請求項５及び請求項１６に記載の発明は、
前記復号鍵格納ファイルは、前記復号鍵と、１以上の前記利用条件を内包し、前記復号鍵解読手段に於いてのみ前記復号鍵の解読が可能なように、前記利用者の端末に格納される復号鍵保護プログラム及び復号鍵保護方法である。
【００２７】
請求項５及び請求項１６の発明により、ソフトウェアやコンテンツの利用都度、復号鍵や利用条件をソフトウェア・コンテンツ提供者から入手する必要がなく、利用の迅速化が図られるとともに、一度、復号鍵格納ファイルを入手すれば、その後は盗聴等される危険性がなくなる。
【００２８】
請求項６及び請求項１７に記載の発明は、
前記復号鍵格納ファイルは、乱数等の第１の鍵を置換表で置換した第２の鍵によって暗号化される復号鍵保護プログラム及び復号鍵保護方法である。
【００２９】
請求項６及び請求項１７の発明により、復号鍵を含む復号鍵格納ファイルが暗号化されるので、より一層復号鍵の保護が図られる。
【００３０】
請求項７及び請求項１８に記載の発明は、
前記置換表は、前記ソフトウェア・コンテンツ提供者毎に生成される復号鍵保護プログラム及び復号鍵保護方法である。
【００３１】
請求項７及び請求項１８の発明により、同一のソフトウェア・コンテンツであっても販売者毎に置換表を変えれば、不正利用された場合に販売ルートまでの特定が可能となり、販売者の権利も保護される。
【００３２】
請求項８及び請求項１９に記載の発明は、
前記置換表は、前記ソフトウェアプログラム及び／又はコンテンツデータのバイナリデータから得られるハッシュ値等の一方向性関数によって暗号化される復号鍵保護プログラム及び復号鍵保護方法である。
【００３３】
請求項８及び請求項１９の発明により、ソフトウェアプログラム及び／又はコンテンツデータの改ざんを検知することが可能となる。
【００３４】
請求項９及び請求項２０に記載の発明は、
前記利用状況データベースは、前記利用者の端末に於いて、前記端末の識別情報（ＭＡＣアドレス、ＢＩＯＳのシリアル番号、ハードディスクのシリアル番号等）のハッシュ値等の一方向性関数によって暗号化される復号鍵保護プログラム及び復号鍵保護方法である。
【００３５】
請求項９及び請求項２０の発明により、利用状況データベースを利用者の端末以外の端末にコピーして利用することが不可能となる。
【００３６】
請求項１０及び請求項２１に記載の発明は、
前記暗号化されたソフトウェアプログラムは、パッケージ化されている復号鍵保護プログラム及び復号鍵保護方法である。
【００３７】
請求項１１及び請求項２２に記載の発明は、
前記暗号化されたコンテンツデータは、前記復号鍵格納ファイルに含まれている復号鍵保護プログラム及び復号鍵保護方法である。
【００３８】
これら発明により、仮に復号鍵が知られたとしても、ソフトウェアプログラム及び／又はコンテンツデータを単独で実行することが出来なくなる。
【００３９】
尚、本明細書に於いて、「復号鍵の保護」とは、悪意者による盗聴、改ざん等の不正利用のみならず、正当な利用者による不正利用からも、復号鍵が保護されることを指す。
【００４０】
又、「ソフトウェアの利用」とは、ソフトウェアプログラムを（必要に応じて、インストールプログラムやその他のファイルやプログラムとともに）実行してそのソフトウェアプログラムが実現する機能を端末上で利用することを指し、「コンテンツの利用」とは、映像・画像・音声等がデジタル化されたコンテンツデータを、任意のプログラムを用いて、表示機器に表示させたり可聴状態とすることを指す。
【００４１】
又、本発明の復号鍵保護プログラムやソフトウェア・コンテンツ等の「送付」には、ネットワークを介した利用者のダウンロードによる配信形態の他、これらいずれか１以上をＣＤ−ＲＯＭ等の可搬型の記録媒体に格納し、郵送等により利用者に送付する形態も含まれる。
【００４２】
又、「ソフトウェア・コンテンツ提供者」には、ソフトウェア・コンテンツを作成したメーカーのみならず、ソフトウェア・コンテンツを直接利用者に提供又は販売する者も含まれるものとする。
【００４３】
又、「利用者」とは、ソフトウェア・コンテンツ提供者に、特定のソフトウェア・コンテンツを利用することを認められた者を指す。
【００４４】
又、「利用者の端末」は、本発明の復号鍵保護プログラムや、暗号化されたソフトウェアプログラム及び／又はコンテンツデータ等のプログラム、データファイルを格納し、実行・利用するために必要な構成（ＣＰＵ、メインメモリ、外部記憶装置、通信用デバイス、入出力デバイス等）を有するものであり、通常のコンピュータであればよい。
【００４５】
【発明の実施の形態】
以下、本発明の好適な実施の形態について、図１、図２、図３、図４を参照して詳細に説明する。図１は本発明にかかる復号鍵保護プログラム１の構成の一例を示している。尚、以下は、利用者が希望するソフトウェア（例えば、ワープロソフトや計算ソフト）を、予め決められた利用回数・金額・期限等の利用条件の下で利用者に利用させるために必要なプログラム（以下、復号鍵保護プログラム１という）やインストールプログラム４とともに、ソフトウェア提供者側の端末（以下、送信端末３という）から利用者端末２にネットワークを介して無償又は有償でダウンロードし、利用者端末２内のハードディスク等の外部記憶装置に格納させる形態を例に説明するが、ソフトウェアや復号鍵保護プログラム１の全部又は一部がＣＤ−ＲＯＭ等の可搬型記録媒体に格納され、利用者が各自、当該可搬型記録媒体から端末にコピーを行う形態であっても同様に適用可能である。
【００４６】
又、本明細書に於いて、「利用者端末にダウンロード、コピー、格納、生成を行う」とは、利用者の端末内の書き換え可能な外部（補助）記憶装置にダウンロード等することを指す。書き換え可能な外部記憶装置には、その端末の内蔵ハードディスクや、端末と接続された外付けディスク（ＭＯやＦＤ）等の記憶装置が含まれる。但し、これらの記憶装置はその端末と１対１で対応可能なものであって、他の端末との共有ディスクや端末とネットワークを介して接続された外部記憶装置は含まないものとする。
【００４７】
利用者端末２は、希望のソフトウェアを指定、選択等した上で、ソフトウェア提供者側の送信端末３やサーバからネットワークを介して、図１に示すパッケージ化されたソフトウェア１１、復号鍵保護プログラム１、インストールプログラム４をダウンロードする。利用者端末２は、これらダウンロードしたプログラム等を格納し、実行・利用するために必要な構成（ＣＰＵ、メインメモリ、外部記憶装置、通信用デバイス、入出力デバイス等）を有するものであり、通常のコンピュータであればよい。
【００４８】
パッケージ化されたソフトウェア１１には、暗号化されたソフトウェアプログラム１０ａ、復号化手段１８、パッケージ識別情報１９（図示せず）が含まれる。
【００４９】
復号鍵保護プログラム１には、復号鍵解読手段１３、復号鍵格納ファイル１６、利用状況生成手段１２、展開手段１４が含まれる。
【００５０】
尚、図１では、復号鍵格納ファイル１６の代わりに暗号化された復号鍵格納ファイル１６ａが復号鍵保護プログラム１に含まれ、更に、暗号化された置換表１５ａも含まれる。置換表１５は、暗号化された復号鍵格納ファイル１６ａの復号化に必要な鍵の解読に必要である。各手段等の詳細は順次説明する。
【００５１】
インストールプログラム４は、ダウンロードしたソフトウェアを実際に利用者端末２で利用出来るように各プログラムやデータの起動順序を制御する等のサポートを行うプログラムである。インストールプログラム４の中に、パッケージ化されたソフトウェア１１及び復号鍵保護プログラム１が含まれていてもよい。
【００５２】
まずは、パッケージ化されたソフトウェア１１について、図２を参照しながら説明する。ソフトウェアは利用者端末２にダウンロード、格納される時には当然バイナリ形式のプログラムであるが、実際にソフトウェアを端末上で実行、利用したり、ディスプレイに表示させるためには、実行プログラムのみならず、ソフトウェアを実行するのに必要なプログラムが必要である。
【００５３】
ソフトウェア提供者は、これら実行プログラムとソフトウェアを実行するのに必要なプログラム（以下、合わせてソフトウェアプログラム１０という）を任意の乱数等の暗号鍵で暗号化し、暗号化されたソフトウェアプログラム１０ａとする。暗号化する理由は主に２点あり、１点は、このソフトウェアをダウンロードした正当な利用者であっても、後述する利用条件を満足しない限りはソフトウェアを利用出来ないようにするためであり、もう１点は、悪意者に容易に盗聴されるのを防止するためである。
【００５４】
つまり、暗号化されたソフトウェアプログラム１０ａのみをダウンロードしたとしても、利用者であってもソフトウェアの利用は行えず、暗号化されたソフトウェアプログラム１０ａを復号化する過程を経て、初めてソフトウェアの利用が可能となる。
【００５５】
更に、暗号化されたソフトウェアプログラム１０ａの復号化に必要な復号鍵５は、本発明に於いては、利用者が生成するものではなく、又、復号鍵格納ファイル１６の中に利用者さえも容易に知ることが出来ない状態で保存されている。つまり、ソフトウェアの利用条件を満足した場合のみ、復号鍵５を得ることが出来、しかも、この解読過程に於いて得られた復号鍵５によってのみ、暗号化されたソフトウェアプログラム１０ａの復号化を可能としている。
【００５６】
ここでは、暗号化・復号化に共通鍵暗号方式を用いるものとし、暗号鍵と復号鍵５は共通である。共通鍵暗号方式により生成された鍵による暗号化、復号化の処理時間は、公開鍵暗号方式による暗号化、復号化処理時間と比較して短いので、利用者にとってもソフトウェア提供者にとっても、利便性が損なわれることがない。
【００５７】
この暗号鍵（復号鍵５）は利用者以外の者、つまり、本実施の形態に於いてはソフトウェア提供者によって生成された乱数である。復号鍵５は、本実施の形態に於いては、利用者毎かつソフトウェアの種類毎に生成される。従って、同一の利用者が複数の異なるソフトウェアをダウンロードする場合には、ソフトウェアの種類毎に異なる乱数が生成される。
【００５８】
尚、復号鍵５は、利用者さえも容易に知ることが出来ない状態で保存され、解読が困難であるため、利用者毎ではなく単にソフトウェアの種類毎に変えるようにしてもよい。又、ソフトウェアメーカーが複数の販売者に同一ソフトウェアを販売委託する場合、その販売者毎に変えるようにしてもよい。そうすれば、ソフトウェア毎又は販売者毎に同一の暗号鍵で暗号化されたソフトウェアプログラム１０ａを、複数の利用者に共通にダウンロードさせることが出来るので、提供者側の暗号化処理の手間が減る。
【００５９】
しかし、同一の暗号鍵を用いると、暗号化されたソフトウェアプログラム１０ａがパッケージ化されていない場合や、パッケージ化されていても暗号化されたソフトウェアプログラム１０ａが単独でハードディスク等に格納されてしまった場合には、リプレイアタックが可能となり、不正利用される可能性もある。従って、復号鍵５は本実施の形態に於けるように、ソフトウェアの種類毎、販売者毎のみならず、利用者毎に変えるのが望ましい。
【００６０】
又、共通鍵暗号方式の代わりに公開鍵暗号方式を用いてもよいが、その場合には、利用者による鍵の生成の手間をなくすため、暗号鍵と復号鍵５のいずれも、ソフトウェア提供者側で生成するものとする。
【００６１】
図２に示すように、暗号化されたソフトウェアプログラム１０ａと、暗号化されたソフトウェアプログラム１０ａを復号化するのに必要なプログラム類（復号化手段１８、パッケージ識別情報１９）とに、ヘッダ１７を付加したものが、パッケージ化されたソフトウェア１１となる。暗号化されたソフトウェアプログラム１０ａはパッケージ化されることにより、インストールプログラム４やその他のプログラムとの連動によってのみ、ソフトウェアが実行可能となるので、単独実行や利用者端末２のハードディスク等への格納が出来ないようになる。従って、利用者及び悪意者が復号鍵５を知り得たとしても、暗号化されたソフトウェアプログラム１０ａの復号化をすることが不可能であるし、又、実行プログラムのバイナリデータを改変してウィルスを作成したり不正利用の目的とすることが不可能となる。
【００６２】
尚、図１に示した利用状況生成手段１２、展開手段１４等の、利用者によらず共通のファイルやプログラムであれば、パッケージに含んでもよい。逆に、復号化手段１８をパッケージに含む必要は必ずしもない。又、複数種類のソフトウェアを利用者端末２内で利用する場合であって、ソフトウェアの種類によらず共通に使用可能な手段であれば、利用者端末２内に重複してダウンロードする必要は必ずしもないので、パッケージに含む必要はなく、別パッケージ又は別ファイルとして任意に利用者端末２にダウンロードさせればよい。
【００６３】
復号化手段１８は、暗号化された各種データを鍵等を用いて復号化するのに必要なプログラムである。尚、復号化手段１８には、単に復号化を行う他、ハッシュ値の生成等を行ってもよい。又、ハッシュ値の生成等に必要なプログラムが別途用意され、利用者端末２にダウンロードされてもよい。
【００６４】
パッケージ識別情報１９は、ソフトウェアの種類及び／又はソフトウェア販売者を識別することが出来る情報であり、本実施の形態に於いては、パッケージ化されたソフトウェア１１とともにダウンロードされた復号鍵解読手段１３を起動するための入力情報として用いられる。
【００６５】
次に、復号鍵保護プログラム１の詳細について図３を参照しながら説明する。復号鍵解読手段１３は、暗号化されたソフトウェアプログラム１０ａを復号化するための復号鍵５を内包する復号鍵格納ファイル１６と連携して、復号鍵５を解読する手段である。尚、上述したように、本実施の形態に於いては、復号鍵解読手段１３は、パッケージ識別情報１９の入力によって起動するようになっている。
【００６６】
復号鍵解読手段１３と、復号鍵格納ファイル１６の構成の一例を図３に示す。尚、図３は、これらのプログラムやファイルが送信端末３からダウンロードされ、利用者端末２のハードディスクに格納されている状態を示すが、復号鍵格納ファイル１６内の復号鍵５は、復号鍵解読手段１３によってしか解読、取り出し出来ないようになっている。
【００６７】
復号鍵解読手段１３は、本実施の形態に於いては、照合・更新手段１３１、１３２、１３３を有する。照合・更新手段１３１、１３２、１３３は、復号鍵格納ファイル１６内の利用条件と、後述する利用状況データベース１２ａ内の利用状況とを順次照合して、利用状況が利用条件を超えない場合に限り、利用状況データベース１２ａを更新する。最終的に問題なく全ての照合が完了した場合にのみ、復号鍵格納ファイル１６内の復号鍵５が解読され、展開手段１４に於いてメインメモリ１４ａ上に展開される。
【００６８】
その後、復号化手段１８は、解読された復号鍵５によってのみ、暗号化されたソフトウェアプログラム１０ａを復号化し、展開手段１４が、復号化されたソフトウェアプログラム１０をメインメモリ１４ａ上に展開する。
【００６９】
復号鍵格納ファイル１６内部は、１以上の鍵と、１以上の利用条件と、復号鍵５で構成されている。鍵が照合・更新手段１３１、１３２、１３３に渡されることにより、鍵に対応する利用条件及び利用状況が取り出され、各々照合されるようになっている。
【００７０】
復号鍵格納ファイル１６は、本実施の形態に於いては、図１に示したように復号鍵保護プログラム１の一部として、パッケージ化されたソフトウェア１１とともに初回ダウンロードされるので、以降は、ソフトウェアの利用都度、ネットワークを介して復号鍵５や利用条件を取得する必要がない。しかも、復号鍵５は、利用者毎、ソフトウェアの種類毎に異なるように生成されているので、一度復号鍵格納ファイル１６を利用者端末２に格納してしまえば、以降は盗聴の危険がなくなる。
【００７１】
図３の説明に戻ると、展開手段１４は、復号化された復号鍵５や、復号鍵５によって復号化されたソフトウェアプログラム１０や、その他の鍵をメインメモリ１４ａに一時的に格納する手段である。つまり、これらのデータや鍵は単独ではハードディスク等の外部記憶装置には保存することが出来ないようになっているため、予め決められた利用条件を超えてソフトウェアを利用したり、鍵を使用したり、復号化されたソフトウェアプログラム１０を利用者が他人に渡すことは不可能である。
【００７２】
従って、復号鍵解読手段１３による、復号鍵格納ファイル１６内の復号鍵５の解読過程を経なければ、復号鍵５は利用者であっても知り得ることが出来ないし、又、復号鍵５だけをハードディスク等に保存することは出来ない。
【００７３】
利用状況生成手段１２は、利用者自身による不正な更新が不可能な、及び利用者端末２以外の端末による読みとり、更新が出来ないような利用状況データベース１２ａを、利用者端末２の外部記憶装置にのみ生成する手段である。
【００７４】
この利用状況データベース１２ａ内には利用者端末２によるソフトウェアの利用状況が格納される。利用状況は、実際にソフトウェアを利用した回数、金額、日時等であり、利用者が利用者端末２でソフトウェアを利用する毎に、対応する利用条件（回数、金額、日時や期限等）を上回らないまで、つまり予め決められた利用限度に達するまで更新される。利用条件を超えてソフトウェアの利用がされそうになった場合には、その場でソフトウェアの利用や、ソフトウェア利用の前過程（復号鍵解読過程）を中止させる。
【００７５】
尚、当然のことながら、ソフトウェア提供者は、ソフトウェアに応じて、ソフトウェア利用額の計算方法（例えば、１時間使用したら２００円課金、１回利用毎に１００円課金等）や利用回数の計数方法等を予め決めておく必要がある。
【００７６】
又、送信端末３又は利用者端末２のいずれかには、利用者の利用状況を把握することが出来、かつ、利用状況データベース１２ａの更新に反映させることが出来るプログラム（例えば計数手段、計時手段、料金計算手段等）が必要となる。
【００７７】
更に、利用条件の１つとして「金額」が設定されているような場合には、送信端末３側に課金手段を設け、利用者が予めその金額を何らかの手段（現金、振込、クレジットカード等）で支払い、その支払った事実がソフトウェア提供者側で確認されていることは当然必要である。
【００７８】
利用状況データベース１２ａの読みとり、更新は、復号鍵解読手段１３に於ける復号鍵５の解読過程に於いてのみしか行われず、その過程以外に於いて、利用者や悪意者による更新、改ざんはされないこととする。
【００７９】
尚、利用状況データベース１２ａ内の利用状況の無断更新、改ざん、不正利用等の検知は、公知のハッシュ（一方向性）関数技術等を用いれば可能である。例えば、利用状況を常に、直前に更新又は読みとりがされた時点の利用状況のハッシュ値で暗号化する等して、次の更新又は読みとり時に、正しいハッシュ値で暗号化されていたかどうかの整合性をチェックする。不正な読みとりや更新が実行されていた場合には、次に正規の読みとりや更新をしようとしても、利用状況が本来のハッシュ値で暗号化されていないか、正しい復号鍵を手に入れることが出来ないため、復号化が出来ない。又、例えば、利用状況の更新は１ずつ増やすことしか出来ない仕組みにしておき、本来利用状況を２回から３回に更新すべきところを、０回に改ざんすることは不可能なようにすることも出来る。
【００８０】
このように、万一、不正な読みとりや改ざん等がされた場合には、その場でソフトウェアの利用や復号鍵５の解読を中止させるか、レジストリ等に暗号化してバックアップしておいた正しい利用状況を読み込んで、改ざんされた利用状況データベース１２ａを元の状態に復元させるようにする。
【００８１】
利用状況データベース１２ａを利用者端末２にのみ生成可能とするためには、パッケージ化されたソフトウェア１１等が最初にダウンロードされた端末に於いて１回のみ、データベースの生成が可能なプログラムを設けるか、ダウンロード前に送信端末３が予め利用者端末２の識別情報（ＭＡＣアドレス、ＢＩＯＳのシリアル番号、ハードディスクのシリアル番号等）を認識し、その識別情報のハッシュ値等で利用状況データベース１２ａを暗号化しておき、他の識別情報を有する端末内では、暗号化された利用状況データベース１２ａを復号化出来ないようにするプログラムを設ける等する。
【００８２】
次に、利用状況データベース１２ａを利用者端末２以外の端末に於いて読みとり不可とするためには、後述する復号鍵解読手段１３に於いて、利用条件と利用状況の照合を行う際に、送信端末３側に登録された識別情報を有する利用者端末２内の外部記憶装置に利用状況データベース１２ａが生成されているかどうかを確認し、利用状況データベース１２ａが見つからなかった場合には、利用者端末２以外の端末に於いてソフトウェアが利用されそうになったとみなし、ソフトウェアの利用を中止させる方法や、利用状況データベース１２ａを先の端末毎に固有の識別情報のハッシュ値等で暗号化しておき、他の端末の識別情報のハッシュ値等では利用状況データベース１２ａを復号化出来ないようにする方法等が挙げられる。
【００８３】
又、予め生成される利用条件の中に、利用者端末２の識別情報を１条件として加えておき、利用条件と利用状況の照合をする際に、利用状況として実際使用されている端末の識別情報を調べ、利用条件としての本来使用されるべき端末の識別情報と合致しない場合にはソフトウェアの利用を中止させる方法をとってもよい。
【００８４】
利用状況データベース１２ａの生成の仕組みをこのようにしていることにより、仮に利用条件が回数無制限や無償利用等であった場合でも、中身が空又は無意味なデータで構成された利用状況データベース１２ａを利用者端末２に生成し、利用条件と利用状況の照合の際に、この利用状況データベース１２ａの存在を確認する過程を経るようにすれば、利用者端末２以外の端末に於けるソフトウェアの利用、つまり利用者及び悪意者によるソフトウェアの不正利用を防止することが出来る。
【００８５】
ここで、以上説明した復号鍵解読手段１３、復号鍵格納ファイル１６、利用状況データベース１２ａを用いて、復号鍵格納ファイル１６内の復号鍵５を解読する方法を、図３を用いて説明する。
【００８６】
まず鍵０によって、最初の照合・更新手段１３１を起動させる。最初の鍵０の入手経路、生成方式等は問わないが、本実施の形態に於いては、鍵０がパッケージ識別情報１９である。この場合、直接的に復号鍵解読手段１３を起動することが出来る。
【００８７】
照合・更新手段１３１は、該当する利用条件を検索した上で、更に、その利用条件に対応する利用状況データベース１２ａ内の利用状況を検索し、利用状況データベース１２ａが正当な場所（利用者端末２内）に存在するかどうかを確認し、利用条件１と利用状況１の照合を行い、利用状況１が利用条件１を超えていなければ、利用状況１を更新し、鍵１を取得する。
【００８８】
鍵１は、次の照合・更新手段１３２を起動し、先の手続きと同様に利用条件２と利用状況２の照合と、利用状況２の更新が行われる。
【００８９】
最終的に全ての利用条件と利用状況の照合が問題なく完了すれば、復号鍵５が解読され、展開手段１４によって、メインメモリ１４ａ上に展開される。
【００９０】
利用条件の数が少ない場合や、復号鍵５の解読をより困難にするためには、復号鍵格納ファイル１６の内部を、同じ利用条件の照合を繰り返すような構造としたり、１つの利用条件（例えば、利用限度額５０００円）を細分化する（例えば、５０００円を各桁に分割する）等が考えられる。
【００９１】
又、復号鍵格納ファイル１６内の鍵や利用条件の全部又は一部は、利用者端末２にダウンロードさせず、送信端末３又はデータ書き換えが不可能な記録媒体に格納されていてもよい。尚、鍵の場合は、単に鍵だけが格納されているのではなく、鍵の入手に必要な入口（照合・更新手段によるチェック結果を受け取り確認する手段）と出口（次に進む照合・更新手段の場所を示した手段）も合わせて格納されているものとする。
【００９２】
例えば、図３に於いて、鍵１を利用者又は利用者端末２の識別情報とともに送信端末３に格納する場合、照合・更新手段１３１は送信端末３にアクセスして、利用条件１と利用状況１の照合結果が問題なかったことを送信端末３に通知した上で、送信端末３から鍵１を入手する。当然、送信端末３はアクセス元が正当な利用者端末２であることを確認する必要がある。
【００９３】
又、例えば、利用条件２をＣＤ−ＲＯＭに格納する場合、照合・更新手段１３２は、必ず利用者端末２からＣＤ−ＲＯＭにアクセスすることにして、ＣＤ−ＲＯＭ内の利用条件２を入手後、利用状況２との照合を行う。
【００９４】
送信端末３内のデータの改ざんや、ＣＤ−ＲＯＭ内のデータ書き換えは出来ないため、利用者及び悪意者によるソフトウェアの不正利用がより困難になり、復号鍵５の更なる保護が図られることになる。
【００９５】
尚、復号化手段１８に於いては、復号鍵解読手段１３に於ける全ての解読過程を順番に経て解読された復号鍵５によってのみ、暗号化されたソフトウェアプログラム１０ａの復号化が可能であるとする。つまり、何らかの方法で復号鍵５が知られてしまったとしても、暗号化されたソフトウェアプログラム１０ａの復号化は、復号鍵解読手段１３によって復号鍵格納ファイル１６の中の復号鍵５が解読された利用者端末２内に於いてしか行われない。
【００９６】
復号鍵５は、以上のようなロジックにより、復号鍵格納ファイル１６から取り出されるが、復号鍵格納ファイル１６は、実際には図８に示すような木構造により構成されている。図８に基づいて説明すると、復号鍵格納ファイル１６は、ルートディレクトリの下に、復号鍵５の取得経路、順序を示す経路ディレクトリと、利用状況データベース１２ａの生成場所や利用状況の更新方法を示す利用状況ディレクトリと、利用条件を格納する利用条件ディレクトリを構成している。経路ディレクトリ下には、照合・更新手段を起動するための鍵が順番に配列し、最終的に取得可能な復号鍵５自体も含まれている。照合・更新手段は、鍵に対応する利用状況データベース１２ａの場所を利用状況ディレクトリ下から探し出し、更に、対応する利用条件を利用条件ディレクトリ下から探し出して、利用条件と利用状況の照合を行う。つまり、照合・更新手段は、復号鍵格納ファイル１６内の分岐した各ディレクトリに格納されている鍵と利用条件と利用状況格納場所とを相互に結び付ける役割を担う。
【００９７】
ファイルをこのような木構造としていることにより、復号鍵５は正規の順序を経ないと取得出来ないこととなる。又、一方のディレクトリ内のデータが他方のディレクトリ内のデータと対応するようになっているため、一部のディレクトリのみをコピーしたり、いずれかのディレクトリの格納場所やパス名が変わってしまうと、復号鍵解読手段１３との連携が行われなくなるので不正利用を行いにくい、という効果がある。
【００９８】
次に、復号鍵５の更なる保護及び、ソフトウェアや復号鍵格納ファイル１６の改ざん防止のため、復号鍵格納ファイル１６を暗号化して利用者端末２にダウンロードさせる場合の一例について、図４を参照しながら説明する。
【００９９】
まず、乱数生成により第１の鍵を得る。尚、第１の鍵は、もともとの復号鍵格納ファイル１６のバイナリデータのハッシュ値でもよい。これにより、仮に暗号化された復号鍵格納ファイル１６ａが復号化された後に改ざんされたとしても、改ざんの結果、ハッシュ値が前のハッシュ値と異なるため再暗号化が出来ず、復号鍵格納ファイル１６の改ざん検知が可能となる。第１の鍵は、復号鍵格納ファイル１６等に添付され、利用者端末２にダウンロードされる。
【０１００】
次に、第１の鍵を置換表１５を用いて第２の鍵に変換し、第２の鍵で復号鍵格納ファイル１６を暗号化する。ここでは、第２の鍵は暗号化、復号化とも共通の鍵とする。
【０１０１】
置換表１５は、暗号解読表の一種であり、置換前と置換後の対応を表す表である。置換表１５を用いることにより、鍵が直接、利用者や悪意者の目に触れられることがなく、鍵の解読や不正利用がしづらくなる。
【０１０２】
置換表１５は、どの利用者、どのソフトウェアに対しても同じであってもよいが、同じ置換表を用いると置換表１５の推測がしやすくなり、結果的に不正利用されてしまうため、本実施の形態に於いては、ソフトウェア販売者毎に置換表１５を用意している。これにより、同一のソフトウェアであっても不正利用がされれば、販売ルートの特定も可能となり、販売者の権利保護もされる。
【０１０３】
尚、暗号化された復号鍵格納ファイル１６ａを利用者端末２にダウンロードする場合には、図１に示したように、置換表１５もダウンロードさせる必要があるが、置換表１５が利用者や悪意者に分かる状態であると、復号鍵格納ファイル１６を暗号化した意味がなくなるので、更に、置換表１５を暗号化する。
【０１０４】
置換表１５は、パッケージ化されたソフトウェア１１等、改ざんされると不正利用等の問題となるようなバイナリデータから生成されたハッシュ値等の一方向性関数の値を鍵として暗号化され、暗号化された置換表１５ａとして利用者端末２にダウンロードされる。これにより、暗号化された復号鍵格納ファイル１６ａの復号化時に、ソフトウェア等の改ざんがされていれば、置換表１５が復号化されないので、暗号化された復号鍵格納ファイル１６ａの復号化もされない。
【０１０５】
尚、パッケージ化されたソフトウェア１１のバイナリデータのハッシュ値によって置換表１５を暗号化する場合には、パッケージ化に含まれるソフトウェアプログラム１０は、実行後と実行前のハッシュ値が変わらないようなバイナリデータであることが必要である。つまり、ソフトウェアの利用前後に於いて内容が書き替わってしまうような設定ファイルや保存データはパッケージ化してはいけない。
【０１０６】
【実施例】
次に本発明の復号鍵保護プログラム１を用いて、利用者にソフトウェアを利用させるプロセスの流れの一例を図５、図６、図７のフローチャート図及び図１、図２、図３、図４の構成図とを用いて詳細に説明する。
【０１０７】
利用者端末２は、ネットワークを介して、送信端末３や、ソフトウェア提供者が管理するサーバ等にアクセスし、希望のソフトウェアを選択する。
【０１０８】
送信端末３では、利用者毎の利用条件及び乱数による暗号鍵を生成し、ソフトウェアプログラム１０を暗号鍵（共通鍵方式で生成された鍵であって、復号鍵５と同一）で暗号化する。この暗号化されたソフトウェアプログラム１０ａを、復号化手段１８とパッケージ識別情報１９とともにパッケージ化し、更に、復号鍵５及び利用条件を復号鍵格納ファイル１６に収容し、図１に示した復号鍵保護プログラム１（暗号化された復号鍵格納ファイル１６ａを含む）、インストールプログラム４とともに、利用者端末２にダウンロードさせる。
【０１０９】
尚、復号鍵格納ファイル１６を生成する前提として、送信端末３側に利用者端末２の登録手段、課金手段等は整備されており、ソフトウェア提供者は利用者からの登録、申込み、送金等を受けた後に、その利用者の利用者端末２に一定条件内に於いてソフトウェアの利用を許可したものとする。
【０１１０】
又、復号鍵格納ファイル１６は、先に説明した方法によって暗号化されているものとする。利用状況データベース１２ａは、利用者端末２のみに生成されるものとする。
【０１１１】
利用者端末２がこれらのパッケージ化されたソフトウェア１１等をダウンロードすると、利用者端末２内で、インストールプログラム４が自動的に起動されるようにするか、又は、利用者端末２からの要求に応じてインストールプログラム４が起動するようにする（Ｓ５１０）。
【０１１２】
尚、利用者端末２が２回目以降ソフトウェアを利用する場合には、インストールプログラム４を起動しなくても、パッケージ化されたソフトウェア１１を起動することによって、以下の流れで、ソフトウェアを利用出来るようにしてもよい。つまり、本実施例に於いては、ソフトウェアの利用手順を記述したプログラムがインストールプログラム４に含まれているが、初回インストールプログラム４の起動時に、利用手順を記述したプログラムが利用者端末２のハードディスク等に格納され、２回目以降は、パッケージ化されたソフトウェア１１の起動と連動するようになっていてもよい。
【０１１３】
利用者端末２に於いて、このソフトウェアが初めて利用されるものである場合（Ｓ５２０）、利用状況生成手段１２は、インストールプログラム４が起動されたこの利用者端末２のハードディスク等の外部記憶装置に、利用状況データベース１２ａを生成する（Ｓ５３０）。既に、このソフトウェアに対応する利用状況データベース１２ａが生成されている場合には、生成を行わない。
【０１１４】
利用状況データベース１２ａは、ダウンロードされた復号鍵格納ファイル１６内の利用条件に基づいて生成される。図３に於いては、利用条件の数が３個であるので、各利用条件に対応する利用状況が３個、利用状況データベース１２ａ内に生成される。又、利用状況は、利用毎に回数や金額を増やすことによって更新されてもよいし、最初に利用条件の限度が利用状況に反映され、以降は利用毎に回数や金額を減らすことによって更新されてもよい。
【０１１５】
尚、利用状況データベース１２ａは、利用者端末２の識別情報に基づいて暗号化されたり、予め送信端末３が認識した識別情報を有する利用者端末２にのみ利用状況データベース１２ａの生成を許可する等の方法により、他の端末に於ける生成、コピー、読みとり、更新が不可能なようにされる。
【０１１６】
インストールプログラム４は、ソフトウェアを最終的に利用出来るようにするための過程の進行役を担う。まずは、パッケージ化されたソフトウェア１１を実行する（Ｓ５４０）。但し、この時点では、まだソフトウェアプログラム１０は暗号化されており、単に実行してもソフトウェアを利用することは不可能であるため、パッケージに含まれていた復号化手段１８と、展開手段１４が起動することになる（Ｓ５５０）。
【０１１７】
復号化手段１８が起動すれば、暗号化されたデータを復号化するための鍵さえ揃えば、そのデータを復号化することが出来る。又、展開手段１４が起動すれば、各種の鍵やソフトウェアプログラム１０等の、利用者端末２のハードディスクにも保存されてばいけないデータをメインメモリ１４ａ上に展開させることが出来る。
【０１１８】
次に、パッケージ識別情報１９をキーボード等により入力して、復号鍵解読手段１３を起動させる（Ｓ５６０、Ｓ５７０）。尚、パッケージ識別情報１９の入力により復号鍵解読手段１３を起動させることは任意でよく、又、入力はキーボード等による入力ではなく、パッケージ化されたソフトウェア１１内からパッケージ識別情報１９が取り出され、自動的に入力されてもよい。又、復号鍵解読手段１３以外の手段を起動、展開させる時にもこのような識別情報の入力を促すようにしてもよい。この識別情報の暗号化の有無も任意である。
【０１１９】
尚、ここまでのプロセスの流れは、この順番による必要はない。
【０１２０】
本実施例に於いては、パッケージ識別情報１９が図３に於ける鍵０に相当する。つまり、復号鍵解読手段１３が起動し、更に、最初の照合・更新手段１３１が起動する。照合・更新手段１３１は、対応する利用条件１を取り出す。
【０１２１】
ここで、復号鍵格納ファイル１６が暗号化されている場合には（Ｓ５８０）、利用条件１の取り出しが出来ないため、暗号化された置換表１５ａを取り出す（Ｓ６１０）。
【０１２２】
暗号化された置換表１５ａを復号化するため、パッケージ化されたソフトウェア１１のバイナリデータのハッシュ値が生成される（Ｓ６１５）。
【０１２３】
生成されたハッシュ値を復号化のための鍵として、置換表１５を復号化する（Ｓ６２０）。ここで、置換表１５の復号化がされなかった場合には、何者かによりパッケージ化されたソフトウェア１１の内部の改ざんがされたことになり、その改ざんを検知するとともに、以降のステップには進めないようにする（Ｓ６２５）。
【０１２４】
復号化された置換表１５は、展開手段１４に於いて、一時メインメモリ１４ａ上に展開される（Ｓ６３０）。
【０１２５】
次に、復号鍵格納ファイル１６に添付されている第１の鍵を取り出す（Ｓ６３５）。尚、第１の鍵を復号鍵格納ファイル１６自身のハッシュ値とすれば、復号鍵格納ファイル１６の改ざん検知が可能である。
【０１２６】
先の復号化された置換表１５を用いて、第１の鍵を第２の鍵に置換する（Ｓ６４０）。ここで、第１の鍵から第２の鍵への置換がされなかった場合には、何者かにより復号鍵格納ファイル１６及び／又は置換表１５が改ざんされたことになり、その改ざんを検知するとともに、以降のステップには進めないようにする（Ｓ６４５）。
【０１２７】
置換された第２の鍵は、展開手段１４に於いて、一時メインメモリ１４ａ上に展開される（Ｓ６５０）。
【０１２８】
置換された第２の鍵を用いて、暗号化された復号鍵格納ファイル１６ａを復号化する（Ｓ６５５）。ここで、暗号化された復号鍵格納ファイル１６ａの復号化がされなかった場合には、何者かにより第２の鍵の改ざんがされたことになり、その改ざんを検知するとともに、以降のステップには進めないようにする（Ｓ６６０）。
【０１２９】
復号鍵格納ファイル１６が復号化されたので、照合・更新手段１３１は、利用条件１を取り出すことが出来る（Ｓ７１０）。
【０１３０】
尚、利用条件や鍵は、上述したように、全部又は一部が、送信端末３又はＣＤ−ＲＯＭ等のデータの書き換えが不可能な記録媒体に格納されている場合もある。特に、ソフトウェア提供者が有償でソフトウェアを提供するような場合には、鍵や利用条件の全部又は一部が送信端末３等に格納されている方がソフトウェアの不正利用等の防止により効果的である。但し、送信端末３側に鍵や利用条件が格納されている場合は、その分ネットワーク接続の負担が高くなるため、注意が必要である。
【０１３１】
照合・更新手段１３１は、取り出された利用条件１に対応する利用状況１が利用者端末２内の利用状況データベース１２ａに存在するかどうかを確認する（Ｓ７１５）。利用状況データベース１２ａそのもの、又は利用状況１が利用者端末２内に存在しない場合には、利用者端末２以外の端末に於いて、ソフトウェアが利用されそうになったこと表し、以降のステップには進めないようにする（Ｓ７２０）。又、照合・更新手段に於いて、復号鍵格納ファイル１６や利用条件や利用状況のハッシュ値をとることによって、これらに対する改ざんを検知することも可能である。
【０１３２】
照合・更新手段１３１は、利用状況１が利用者端末２内に存在した場合、その利用状況１が利用条件１を満足しているか、つまり、利用条件１の範囲内の利用かどうかを確認する（Ｓ７２５）。例えば、利用条件１は、「利用限度額が５０００円」であり、利用者端末２内に格納された利用状況１が、「累積利用額が３０００円」であれば、利用条件１を満足したものとする。一方、累積利用額が５０００円以上又は、５０００円未満であってもソフトウェアの１回の利用につきかかる金額が残されていない場合には、利用条件１を満足しなかったものとして、以降のステップに進めないようにする（Ｓ７３０）。
【０１３３】
利用条件１と利用状況１の照合が終わると、利用状況１の更新を行うとともに、次の照合・更新手段１３２に進むために必要な鍵１が取り出される（Ｓ７３５）。
【０１３４】
利用状況の更新は、例えば、対応する利用条件が「回数」に関するものである場合には、累積利用回数に１を加算するか、残り利用回数に１を減算する等した状態に自動的に更新される。利用条件が「金額」に関するものである場合には、ソフトウェアの１回利用毎に課金されるものであれば、１回の利用料金を減算する等して、利用状況データベース１２ａを更新するが、実際にソフトウェアを利用した時間に応じて課金されるような場合には、ソフトウェアの利用終了後に、利用状況データベース１２ａを更新するようにしてもよい。又、利用条件が、無期限、回数制限なしといった永久利用権のようなものであった場合でも、利用者が他人にソフトウェアを渡して不正利用させるといったことを防止するため、中身が空又は無意味なデータで構成された利用状況データベース１２ａを利用者端末２に生成し、利用条件と利用状況の照合時に必ず、利用状況データベース１２ａの存在を確認する過程を経るとよい。
【０１３５】
ここで、取り出された鍵が何番目の鍵かどうかを確認する（Ｓ７４０）。例えば、利用条件の合計数が３であれば、鍵３が取り出さた後に、ソフトウェアプログラム１０の復号鍵５が取り出され、展開手段１４に於いて、一時メインメモリ１４ａ上に展開される（Ｓ７５０）。尚、図３に於いて、鍵１や鍵２が取り出された時点では、まだ全ての利用条件と利用状況の照合がされていないため、次の利用条件と利用状況の照合に進む（Ｓ７４５）。
【０１３６】
復号鍵解読手段１３に於いて最終的に解読され、かつメインメモリ１４ａ上に展開された復号鍵５を用いて、復号化手段１８に於いて、暗号化されたソフトウェアプログラム１０ａを復号化する（Ｓ７５５）。
【０１３７】
復号化されたソフトウェアプログラム１０は、利用者端末２のハードディスクではなくメインメモリ１４ａ上に展開され、メインメモリ１４ａ上でソフトウェア利用が可能となる（Ｓ７６０）。尚、利用者端末２のハードディスクにもソフトウェアプログラム１０が格納されないのは、一旦、ハードディスクに格納されてしまうと、利用条件を無視したソフトウェアの利用が可能となってしまうのを防止するためである。但し、ソフトウェア利用の都度、保存されるべきデータ（実行プログラムなしに単独では利用不可能な設定データや、文書データ等）については、復号化されたソフトウェアプログラム１０がなければそもそも開くことが出来ないので、ハードディスク等の外部記憶装置に保存してもよい。
【０１３８】
メインメモリ１４ａ上でのソフトウェアの利用が終了すれば、ソフトウェアプログラム１０は、メインメモリ１４ａからも削除されるが、当然、ハードディスク上にはパッケージ化されたソフトウェア１１が残されており、２回目以降ソフトウェアを利用する場合も、これまでと同様の復号鍵解読過程を経ることによって、利用条件の範囲内でソフトウェアの利用が可能となる。
【０１３９】
以上は、ソフトウェアプログラム１０を暗号化して、一定利用条件下でソフトウェアを利用させる場合について説明したが、上記ソフトウェアのみならず、映像・画像・音声等をデジタル化したコンテンツデータについても同様に暗号化して、本発明の復号鍵保護プログラム１とともに利用者端末２にダウンロードさせ、一定利用条件下で利用させるようにすることは可能である。
【０１４０】
尚、コンテンツデータは実行プログラムではないため、ソフトウェアプログラム１０のようにパッケージ化することは出来ない。従って、暗号鍵によって暗号化されたコンテンツデータは、単独でダウンロード可能としてもよいが、コンテンツデータを閲覧、表示等するためのプログラム（ビューアー等）が汎用されているものであれば、復号鍵を知られてしまっただけで、利用条件を無視した利用が可能となってしまう。従って、暗号化されたコンテンツデータは、復号鍵格納ファイル１６に含まれているのがよい。
【０１４１】
暗号化されたコンテンツデータの復号鍵を保護する場合、図８の復号鍵格納ファイルのルートディレクトリ下に、新たにコンテンツ用ディレクトリが追加され、コンテンツ用ディレクトリ下には、コンテンツデータが圧縮及び暗号化された状態で格納される。復号鍵が解読されると、コンテンツデータ用ディレクトリ下にあるコンテンツデータが取り出され、メモリ上で復号化されることになる。木構造としていることによって、ソフトウェアプログラムの時と同様、コンテンツ用ディレクトリのみが別の記録媒体に不正にコピーされたり、いずれかのディレクトリの格納場所やパス名が変更になってしまえば、コンテンツを見ることは出来ないという効果がある。
【０１４２】
尚、コンテンツデータとしての画像・映像・音声等を表示させるのに必要なプログラムは、既に利用者端末に格納されているような汎用品であってもよいし、上述した実施例のように、ソフトウェアプログラムとして、復号鍵で暗号化して、任意にパッケージ化した後、暗号化されたコンテンツデータとともにダウンロードさせてもよい。
【０１４３】
本発明に於ける各手段、データベースは、その機能が論理的に区別されているのみであって、物理上或は事実上は同一の領域を為していてもよい。又データベースの代わりにデータファイルであってもよいことは言うまでもなく、データベースとの記載にはデータファイルをも含んでいる。
【０１４４】
尚、本発明を実施するにあたり本実施態様の機能を実現するソフトウェアのプログラムを記録した記憶媒体をシステムに供給し、そのシステムのコンピュータが記憶媒体に格納されたプログラムを読み出し実行することによっても実現される。
【０１４５】
この場合、記憶媒体から読み出されたプログラム自体が前記した実施態様の機能を実現することとなり、そのプログラムを記憶した記憶媒体は本発明を構成する。
【０１４６】
本発明のプログラムの供給は、主として、インターネット等のネットワークを介してコンピュータにダウンロードさせる方法による。その他、磁気ディスク、光ディスク、光磁気ディスク、磁気テープ、不揮発性のメモリカード等の可搬型の記録媒体からコンピュータへの供給も可能である。
【０１４７】
又、コンピュータが読み出したプログラムを実行することにより、上述した実施態様の機能が実現されるだけではなく、そのプログラムの指示に基づき、コンピュータ上で稼働しているオペレーティングシステムなどが実際の処理の一部又は全部を行い、その処理によって前記した実施態様の機能が実現される場合も本発明に含まれる。
【０１４８】
【発明の効果】
本発明により暗号化されたソフトウェアプログラムやコンテンツデータの復号鍵が保護されれば、復号鍵を利用者に生成させる手間を掛けることなく、利便性を損なうことなく、ソフトウェアやコンテンツを一定条件下で利用者に利用させることが可能となる。利用者は一度、暗号化されたソフトウェアプログラムや復号鍵格納ファイル等を端末にダウンロードしさえすれば、以降は特別な入力、ダウンロード作業、ネットワーク接続等を必要とせず、利用条件の範囲内でソフトウェアやコンテンツを利用することが出来る。
【０１４９】
悪意者によるソフトウェアやコンテンツの不正利用のみならず、正当な利用者により、同一ソフトウェア・コンテンツが２回以上利用される場合にも不正利用を防止することが出来、ソフトウェア・コンテンツ提供者側の著作権保護に貢献する。
【図面の簡単な説明】
【図１】本発明の復号鍵保護プログラムの一実施形態を示す構成図である。
【図２】ソフトウェアプログラムの暗号化、パッケージ化の一実施形態を示す図である。
【図３】復号鍵解読手段、復号鍵格納ファイル、利用状況データベースの構成の一例を示す図である。
【図４】復号鍵格納ファイルの暗号化の一例を示す図である。
【図５】本発明のプロセスの流れの一例を示すフローチャート図である。
【図６】本発明のプロセスの流れの一例を示すフローチャート図である。
【図７】本発明のプロセスの流れの一例を示すフローチャート図である。
【図８】復号鍵格納ファイルのファイル構造の一例を示す図である。
【符号の説明】
１：復号鍵保護プログラム
１０：ソフトウェアプログラム
１０ａ：暗号化されたソフトウェアプログラム
１１：パッケージ化されたソフトウェア
１２：利用状況生成手段
１２ａ：利用状況データベース
１３：復号鍵解読手段
１３１、１３２、１３３：照合・更新手段
１４：展開手段
１４ａ：メインメモリ
１５：置換表
１５ａ：暗号化された置換表
１６：復号鍵格納ファイル
１６ａ：暗号化された復号鍵格納ファイル
１７：ヘッダ
１８：復号化手段
１９：パッケージ識別情報
２：利用者端末
３：送信端末
４：インストールプログラム
５：復号鍵
【図１】
2004309737.tif 000003
【図２】
2004309737.tif 000004
【図３】
2004309737.tif 000005
【図４】
2004309737.tif 000006
【図５】
2004309737.tif 000007
【図６】
2004309737.tif 000008
【図７】
2004309737.tif 000009
【図８】
2004309737.tif 000010