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