(57)【特許請求の範囲】
【請求項１】
ソフトウェアの利用を許可するための認証コードを生成する利用許可部と、この利用許可部からの認証コードを受けてソフトウェアの利用の可否を決定する利用制御部とからなるソフトウェア利用制御装置において、
前記利用制御部が、ソフトウェア本体とそのソフトウェアごとに付与されているコンテンツＩＤとを格納したコンテンツ部と、認証部とを備え、
前記認証部が、乱数を生成する乱数生成部と、前記コンテンツＩＤと前記乱数を変換して認証コードを生成するコード生成部と、前記利用許可部にコンテンツＩＤと乱数とを転送するコード要求部と、利用許可部が生成した認証コードと前記コード生成部が生成した認証コードとを比較しその比較結果をコンテンツ部に送る比較部とからなり、認証部はライブラリとして構成され、ソフトウェア本体とコンテンツ部と組み合わされて格納された供給媒体がソフトウェア利用制御装置に組み込まれて実行されることを特徴とするソフトウェア利用制御装置。
【請求項２】
ソフトウェアの利用を許可するための識別ＩＤコードを入力する識別ＩＤ入力部と、予め与えられた認証コードを記憶する認証コード記憶部と、ソフトウェアの利用の可否を決定する利用制御部とからなるソフトウェア利用制御装置において、
前記利用制御部が、ソフトウェア本体とそのソフトウェアごとに付与されているコンテンツＩＤとを格納したコンテンツ部と、認証部とを備え、
前記認証部が、前記コンテンツ部から送られるコンテンツＩＤと前記識別ＩＤ入力部から送られる識別ＩＤとを変換して認証コードを生成するコード生成部と、前記認証コード記憶部に記憶された認証コードと前記コード生成部が生成した認証コードとを比較しその比較結果をコンテンツ部に送る比較部とからなり、認証部はライブラリとして構成され、ソフトウェア本体とコンテンツ部と組み合わされて格納された供給媒体がソフトウェア利用制御装置に組み込まれて実行されることを特徴とするソフトウェア利用制御装置。
【請求項３】
前記コード生成部が、前記コンテンツ部から送られるコンテンツＩＤを、予め設定された鍵コードを用いて変換し認証鍵を生成する鍵生成部と、
前記乱数生成部が生成した乱数を前記認証鍵を用いて暗号化し認証コードを生成する暗号化部とから構成されることを特徴とする請求項１記載のソフトウェア利用制御装置。
【請求項４】
前記コード生成部が、前記コンテンツ部から送られるコンテンツＩＤを、予め設定された鍵コードを用いて変換し認証鍵を生成する鍵生成部と、
前記識別ＩＤ入力部から入力される識別ＩＤを前記認証鍵を用いて暗号化し認証コードを生成する暗号化部とから構成されることを特徴とする請求項２記載のソウトウェア利用制御装置。
【請求項５】
前記コード生成部が、前記識別ＩＤ入力部から入力される識別ＩＤを、予め設定された鍵コードを用いて変換し認証鍵を生成する鍵生成部と、
前記コンテンツ部から送られるコンテンツＩＤを前記認証鍵を用いて暗号化し認証コードを生成する暗号化部とから構成されることを特徴とする請求項２記載のソフトウェア利用制御装置。
【請求項６】
コンテンツ部に格納されたソフトウェア本体の利用量に関する情報を記憶・管理する利用量管理部をさらに備え、
前記利用制御部が、前記比較部から比較結果を受けて利用量情報の記録を前記利用量管理部に要求する利用記録要求部を備えることを特徴とする請求項１または３に記載したソフトウェア利用制御装置。
【請求項７】
前記コンテンツ部が、ソフトウェア本体の動作状況を監視するソフト動作監視部を備え、
前記利用記録要求部が、前記比較部から認証コードの一致を示す比較結果を受け、ソフト動作監視部で監視されるソフトウェアの動作状況が、課金が必要と設定されている機能の動作となったことを検知した場合のみ、前記利用記録要求部が前記利用量管理部に利用量に関する情報を記憶させることを特徴とする請求項６記載のソフトウェア利用制御装置。
【請求項８】
前記利用記録要求部が記憶が正常に終了したことを示す情報を前記利用量管理部から受けとったときにのみ、前記利用制御部がコンテンツ部に格納されたソフトウェア本体の実行を継続させることを特徴とする請求項７記載のソフトウェア利用制御装置。
【請求項９】
前記コンテンツ部が、予め試用回数上限値を格納し、
前記利用許可部が、試用認証部と、試用回数記録部と、試用回数管理部とをさらに備え、
前記試用認証部が、乱数を生成する乱数生成部と、前記コンテンツＩＤと前記乱数を変換して試用認証コードを生成する試用コード生成部とを備え、
試用回数記録部は、前記コード要求部から送られる試用回数上限値をもとに試用回数を記憶し、
前記コード要求部からソフトウェア利用の認証を求めるための利用許可要求が利用許可部に転送されるごとに試用回数管理部が前記試用回数記録部に記憶された試用回数を更新し、前記試用回数が前記試用回数上限値を越えていない場合に、試用認証部が試用認証コードを生成し、試用回数管理部が前記試用認証コードを前記比較部に転送することを特徴とする請求項１または３に記載したソフトウェア利用制御装置。
【請求項１０】
前記コンテンツ部が、コンテンツＩＤと１対１に対応しかつ利用者には秘密にされたコンテンツ認証ＩＤを予め格納し、このコンテンツ認証ＩＤを用いて前記認証部及び前記利用許可部が認証コードを生成することを特徴とする前記請求項１，３，６，７または８に記載したソフトウェア利用制御装置。
【請求項１１】
前記コンテンツ部が、コンテンツＩＤと１対１に対応しかつ利用者には秘密にされたコンテンツ認証ＩＤを予め格納し、前記認証コード記憶部が、このコンテンツ認証ＩＤを用いて生成された認証コードを予め格納し、このコンテンツ認証ＩＤを用いて前記認証部が認証コードを生成することを特徴とする前記請求項２，４または５に記載したソフトウェア利用制御装置。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
この発明は、コンピュータの各種ソフトウェアの不正利用を防止するソフトウェア利用制御装置に関するものであり、特に、ソフトウェアの正規のユーザのみがそのソフトウェアを利用できると共に、適切な課金等の管理ができるようにしたソフトウェア利用制御装置に関する。
【０００２】
【従来の技術】
コンピュータプログラムはデジタルデータとして記録されているため、製品版と真正に同一のものを、簡単な作業によって複写することができる。このことは、プログラム作成および流通を行なう者に確実な利潤を保証しない原因であり、プログラムの健全な流通をさまたげている。
プログラムを記録したフロッピーディスクなどに複写防止などの保護を施し、プログラム購入者以外がプログラムを入手することを防ぐという考えもある。しかし完全には複写を防止することはできない。
【０００３】
これに対し、プログラムが複写されることは認め、プログラム購入者以外の不正利用やプログラムの改ざんを防ぐことによって知的財産権保護を行ない、ひいては確実で公正な料金徴収を可能にする方法が提案されている。
【０００４】
たとえば特開平３−８３１３２号公報には、プログラム本体すべてを暗号化してユーザに配付し、ユーザがそのプログラムを利用したい場合には暗号化されたプログラムを復号するためのユーザ個別の鍵を購入することによって、プログラムの不正利用を防止するソフトウェア保護制御方式が記載されている。
【０００５】
また、特公平６−１９７０７号公報には、あらかじめ購入しておいた利用度数を安全な場所に記録し、ソフトウェア起動時に利用度数を減じることによってソフトウェアの起動を制御する機構を設け、その機構による利用度数が残っていることを確認した後にソフトウェアを起動し、ソフトウェア権利者がソフトウェアの利用状況を把握できるようにしたソフトウェア管理方式が記載されている。
【０００６】
【発明が解決しようとする課題】
しかし、特開平３−８３１３２号公報において、プログラム本体を実行するためには、プログラム本体をすべて復号しなければならず、プログラムが大きい場合には復号に時間がかかるという問題点がある。
【０００７】
また、上記した従来の方法は、プログラム本体の起動時にのみ利用制御を行うものであり、たとえばプログラムによって作成したファイルを保存する時にのみ課金するといったきめ細かな制御をすることができない。
また、従来は、プログラム本体の起動時に課金が開始されるため、ユーザは気軽に試行することができず、さらに誤ってプログラムを起動した場合にも課金されてしまうという問題点がある。
【０００８】
この発明は、以上のような事情を考慮してなされたものであり、ソフトウェア本体自体は暗号化せず、ソフトウェアの正規利用であることを２つの認証コードを用いて確認することによって暗号化されたソフトウェア本体をすべて復号する必要はなく、ソフトウェアを起動させて利用することができるまでの時間を短縮化できるソフトウェア利用制御装置を提供することを目的とする。
【０００９】
また、ユーザ固有のＩＤや認証に利用される鍵コードに依存しない認証部のソフトウェアを、供給するソフトウェア本体と共に１つの媒体に組み込むようにすることで、供給するソフトウェアの管理が容易となるソフトウェア利用制御装置を提供することを目的とする。
【００１０】
さらに供給されたソフトウェア本体が複写されても認証に利用される鍵コードを所有していないユーザは利用することができないような不正利用の防止が可能なソフトウェア利用制御装置を提供することを目的とする。
【００１１】
また、ソフトウェア起動時だけでなく、ソフトウェアの所定の機能が実行されたときに利用量の管理ができるようなソフトウェア利用制御装置を提供することを目的とする。
また、設定された試行回数だけソフトウェアの試行が可能なソフトウェア利用制御装置を提供することを目的とする。
【００１２】
【課題を解決するための手段】
図１に、この発明の第１の基本構成ブロック図を示す。
この発明は、ソフトウェアの利用を許可するための認証コードを生成する利用許可部２と、この利用許可部２からの認証コードを受けてソフトウェアの利用の可否を決定する利用制御部１とからなるソフトウェア利用制御装置において、前記利用制御部１が、ソフトウェア本体とそのソフトウェアごとに付与されているコンテンツＩＤとを格納したコンテンツ部８と、認証部３とを備え、前記認証部３が、乱数を生成する乱数生成部４と、前記コンテンツＩＤと前記乱数を変換して認証コードを生成するコード生成部５と、前記利用許可部２にコンテンツＩＤと乱数を転送するコード要求部６と、利用許可部２が生成した認証コードと前記コード生成部５が生成した認証コードとを比較しその比較結果をコンテンツ部８に送る比較部７とからなり、認証部はライブラリとして構成され、ソフトウェア本体とコンテンツ部と組み合わされて格納された供給媒体がソフトウェア利用制御装置に組み込まれて実行されることを特徴とするソフトウェア利用制御装置を提供するものである。
【００１３】
図２に、この発明の第２の基本構成ブロック図を示す。
この発明は、ソフトウェアの利用を許可するための識別ＩＤコードを入力する識別ＩＤ入力部９と、予め与えられた認証コードを記憶する認証コード記憶部１０と、ソフトウェアの利用の可否を決定する利用制御部１とからなるソフトウェア利用制御装置において、前記利用制御部１が、ソフトウェア本体とそのソフトウェアごとに付与されているコンテンツＩＤとを格納したコンテンツ部８と、認証部３とを備え、前記認証部３が、前記コンテンツ部８から送られるコンテンツＩＤと前記識別ＩＤ入力部９から送られる識別ＩＤとを変換して認証コードを生成するコード生成部５と、前記認証コード記憶部１０に記憶された認証コードと前記コード生成部５が生成した認証コードとを比較しその比較結果をコンテンツ部に送る比較部７とからなり、認証部はライブラリとして構成され、ソフトウェア本体とコンテンツ部と組み合わされて格納された供給媒体がソフトウェア利用制御装置に組み込まれて実行されることを特徴とするソフトウェア利用制御装置を提供するものである。
【００１４】
図３に、この発明の第３の基本構成ブロック図を示す。
ここで、前記コード生成部５が、前記コンテンツ部８から送られるコンテンツＩＤを、予め設定された鍵コードを用いて変換し認証鍵を生成する鍵生成部１１と、前記乱数生成部４が生成した乱数を前記認証鍵を用いて暗号化し認証コードを生成する暗号化部１２とから構成されることが好ましい。
【００１５】
図４に、この発明の第４の基本構成ブロック図を示す。
ここで、前記コード生成部５が、前記コンテンツ部８から送られるコンテンツＩＤを、予め設定された鍵コードを用いて変換し認証鍵を生成する鍵生成部１１と、前記識別ＩＤ入力部９から入力される識別ＩＤを前記認証鍵を用いて暗号化し認証コードを生成する暗号化部１２とから構成されることが好ましい。
【００１６】
図５に、この発明の第５の基本構成ブロック図を示す。
ここで、前記コード生成部５が、前記識別ＩＤ入力部９から入力される識別ＩＤを、予め設定された鍵コードを用いて変換し認証鍵を生成する鍵生成部１１と、前記コンテンツ部８から送られるコンテンツＩＤを前記認証鍵を用いて暗号化し認証コードを生成する暗号化部１２とから構成されることが好ましい。
【００１７】
図６に、この発明の第６の基本構成ブロック図を示す。
ここで、コンテンツ部８に格納されたソフトウェア本体の利用量に関する情報を記憶・管理する利用量管理部１４をさらに備え、前記利用制御部１が、前記比較部７から比較結果を受けて利用量情報の記録を前記利用量管理部１４に要求する利用記録要求部１３を備えることを特徴とするものである。
【００１８】
図７に、この発明の第７の基本構成ブロック図を示す。
ここで、前記コンテンツ部８が、ソフトウェア本体の動作状況を監視するソフト動作監視部１５を備え、前記利用記録要求部１３が、前記比較部７から認証コードの一致を示す比較結果を受け、ソフト動作監視部１５で監視されるソフトウェアの動作状況が、課金が必要と設定されている機能の動作となったことを検知した場合のみ、前記利用記録要求部１３が前記利用量管理部１４に利用量に関する情報を記憶させることを特徴とするものである。
また、前記利用記録要求部１３が前記利用量管理部１４から記憶が正常に終了したことを示す情報を受けとったときにのみ、前記利用制御部１がコンテンツ部８に格納されたソフトウェア本体の実行を継続させるようにしてもよい。
【００１９】
図８に、この発明の第８の基本構成ブロック図を示す。
この発明は、前記コンテンツ部８が予め試用回数上限値を格納し、前記利用許可部２が試用認証部１６と、試用回数記録部と、試用回数管理部１８とをさらに備え、前記試用認証部１６が、乱数を生成する乱数生成部４と、前記コンテンツＩＤと前記乱数を変換して試用認証コードを生成する試用コード生成部１７とを備え、試用回数記録部１９は、前記コード要求部６から送られる試用回数上限値をもとに試用回数を記憶し、前記コード要求部６からソフトウェア利用の認証を求めるための利用許可要求が利用許可部２に転送されるごとに試用回数管理部１８が前記試用回数記録部１９に記憶された試用回数を更新し、前記試用回数が前記試用回数上限値を越えていない場合に、試用認証部１６が試用認証コードを生成し、試用回数管理部１８が前記試用認証コードを前記比較部７に転送することを特徴とするものである。
【００２０】
また、前記コンテンツ部８がコンテンツＩＤと１対１に対応しかつ利用者には秘密にされたコンテンツ認証ＩＤを予め格納し、このコンテンツ認証ＩＤを用いて前記認証部３及び前記利用許可部２が認証コードを生成するようにしてもよい。
【００２１】
この発明の第１，３及び６の基本構成ブロック図において、ソフトウェア利用制御装置は、利用制御部１と利用許可部２とで構成される。
ここで利用制御部１は、たとえばユーザが所有しているパーソナルコンピュータであり、ＣＰＵ，ＲＯＭ，ＲＡＭ，ＣＲＴ、キーボード等の入力装置、通信制御装置、及び外部記憶装置などで構成されることが好ましい。
【００２２】
利用許可部２は、前記パーソナルコンピュータに内蔵することも考えられるが、利用制御部１とは別筺体の装置であることが好ましく、ＣＰＵ，ＲＯＭ，ＲＡＭ，及びＩ／Ｏコントローラ等のマイクロコンピュータとしての構成を備え、さらに利用許可のためのソフトウェアをＲＯＭに内蔵していることが好ましい。
【００２３】
ここで、利用許可部２が別筺体の装置として供給される場合は、ソフトウェア管理センタや情報提供者（以下、ソフトウェア供給者と呼ぶ）がそのソフトウェアを利用するユーザに、予め提供しておくようにすることが好ましい。  利用制御部１と利用許可部２とは、通常ＳＣＳＩやＰＣＭＣＩＡ等の標準インターフェース仕様で接続される。
【００２４】
また、利用制御部１の中のコンテンツ部８は、ユーザが利用しようとするソフトウェア本体とそのソフトウェア本体に付与された個別の番号であるコンテンツＩＤ、さらに制御に必要なデータが記憶されるものであり、フロッピーディスク、光磁気ディスク、ＲＯＭ又は不揮発性ＲＡＭ等が用いられる。
【００２５】
認証部３は、認証コード生成及び比較等の機能を実現するためのソフトウェア及びハードウェアから構成され、ハードウェアとしてはＣＰＵ，ＲＯＭ，ＲＡＭ，タイマー、及びＩ／Ｏコントローラなどで構成されるいわゆるマイクロコンピュータを通常用いることが好ましい。
【００２６】
また、上記機能を実現するソフトウェア、すなわち乱数生成部４、コード生成部５、コード要求部６、比較部７の機能を実現するソフトウェアは、コンテンツ部８と同様の媒体で供給されることが好ましい。
また、認証部３の機能を実現するソフトウェア（以下認証プログラムと呼ぶ）とコンテンツ部８はソフトウェア供給者から同一の媒体で供給されることが好ましく、たとえば、フロッピーディスク、光磁気ディスク等で供給され、またデータ通信によって供給してもよい。
【００２７】
識別ＩＤ入力部９は、識別ＩＤコードを入力するものであり、キーボード等のユーザがＩＤを実際に入力する装置であってもよいが、予めＲＯＭ、ハードディスクまたはフロッピーディスク等に設定された固有のデータをＣＰＵが読み取るようにしてもよい。
ここで識別ＩＤコードは、コンテンツ部８に格納されたソフトウェアを動作させるハードウェア固有の機器ＩＤや、通常ハードウェアのＲＯＭの中に格納されているＣＰＵ−ＩＤや、接続されるハードディスクなどの外部機器のＩＤやソフトウェアを利用するユーザこどに個別に与えられるユーザＩＤやパスワードを用いることが好ましい。
【００２８】
また、認証コード記憶部１０は、フロッピーディスク、ＩＣカード、ハードディスク等の外部記憶装置を用いることが好ましく、ここに記憶される認証コードはソフトウェア供給者から、事前に郵送又は通信等の手段によって、ユーザに与えられるものである。
【００２９】
コード要求部６は、コンテンツ部８に格納されたコンテンツＩＤ、乱数生成部４で生成された乱数あるいは利用許可要求信号を利用許可部２へ転送するものである。
コード生成部５は、認証コードを生成するものであるが、鍵生成部１１と暗号化部１２とからなり、コンテンツＩＤ、識別ＩＤ、乱数等を用いて認証鍵を生成した後、暗号化によって認証コードを生成するものである。
【００３０】
鍵生成部１１は、認証部３のソフトウェアによって実現される一機能ブロックであるが、ソフトウェア供給者からユーザに送付されたソフトウェア本体に付与された個別の番号であるコンテンツＩＤや、識別ＩＤ入力部９から与えられる識別ＩＤコードを基にして、そのソフトウェア本体に付随する鍵コードを生成するものである。
【００３１】
暗号化部１２も、認証部３のソフトウェアによって実現される一機能ブロックであり、通常用いられる暗号化処理により、ソフトウェア本体の認証コードを生成するものである。
ここで、暗号化処理とは、たとえば鍵生成部１１で生成された鍵コードを用いて乱数生成部４で発生された乱数を変換し、所望の認証コードとして暗号化する処理である。
【００３２】
比較部７も、認証部３のソフトウェアによって実現される一機能ブロックであり、たとえば、コード生成部５で生成された認証コードの値と、利用許可部２で生成された認証コード、あるいは認証コード記憶部１０に記憶された認証コードの値を比較し、その比較結果をコンテンツ部８へ転送するものである。
【００３３】
利用記録要求部１３は、前記認証部３のソフトウェアによって実現される一機能ブロックであり、利用量管理部１４に利用量に関する情報を記録することを要求すること、コンテンツ部８にソフトウェアの起動の可否を指示すること等の処理をするものである。
利用量管理部１４は、利用許可部２と同じ別筐体の装置に備えられることが好ましい。
【００３４】
ソフト動作監視部１５は、コンテンツ部８に属する一機能ブロックであるが、利用記録要求部１３にソフトウェアが所定の動作をしたことを通知するものである。
試用認証部１６は、利用許可部２において、ソフトウェアの試用をする場合に実行される一機能ブロックであり、認証部３と同様の動作を行うものである。
【００３５】
また、試用コード生成部１７は、コード生成部５と同様の動作を行うものであり、ソフトウェアの試用をする場合の試用認証コードを生成するものである。
試用回数記録部１９は、利用許可部２の中にあって、たとえば、不揮発性ＲＡＭが用いられる。
試用回数管理部１８は、利用許可部２における一機能ブロックであり、試用回数記録部１９に記録される試用回数の更新や、試用回数の残りに応じて試用認証コードを比較部７へ転送すること等を行うものである。
【００３６】
【作用】
図１において、利用制御部１におけるコンテンツ部８に格納されているコンテンツＩＤが認証部３に与えられ、認証部３におけるコード生成部５は、乱数生成部４が生成した乱数と前記コンテンツＩＤとを変換して認証コードＡを生成する。  また前記コンテンツＩＤと乱数は、コード要求部６によって利用許可部２へ転送され、利用許可部２がこのコンテンツＩＤと乱数を用いて認証コードＢを生成する。
その後、認証部３の比較部７が、前記認証コードＡとＢとを比較してその比較結果をコンテンツ部へ送る。
【００３７】
この発明によれば、利用制御部１と利用許可部２を備え、２つの認証コードを生成して比較することによってソフトウェア利用制御をしているので、ソフトウェア本体をすべて暗号化したときに比べて、ソフトウェアの実際の利用開始をするまでの時間を短縮化することができる。
【００３８】
また、コンテンツ部８及び認証部３のソフトウェア自体はユーザ固有のＩＤには依存することがないため、共通化することができ、供給するソフトウェアの管理が容易である。
さらに、ソフトウェアの供給媒体にはユーザ固有のＩＤは直接含まれておらず、利用制御部１と利用許可部２において生成される２つの認証コードを比較してソフトウェア利用制御を行うので、ソフトウェアの供給媒体が不正に複写されても利用許可が与えられず不正利用が防止できる。
【００３９】
また、図３において、前記コード生成部５において、鍵生成部１１が前記コンテンツＩＤを予め設定された鍵コードを用いて変換し、認証鍵を生成する。
次に、暗号化部１２が、この認証鍵を用いて前記乱数を暗号化して認証コードを生成する。
このように、暗号化された認証コードを用いることによって、さらにソフトウェア利用制御の安全性を高めることができる。
【００４０】
また、図２に示すように、利用許可部を持たないソフトウェア利用制御装置の場合、コード生成部５は、識別ＩＤ入力部から送られる識別ＩＤを変換して認証コードを生成する。
また予め認証コード記憶部１０に認証コードを記憶しておく。
比較部７は、生成された認証コードと記憶された認証コードとを比較して、その比較結果をコンテンツ部８へ送る。
【００４１】
このように、この発明によれば、利用許可部２を備えていないソフトウェア利用制御装置においても、ソフトウェアの実際の利用開始までの時間の短縮化、供給するソフトウェアの管理の容易化及びより効果的な不正利用の防止ができる。
【００４２】
さらに、図４、５に示すように、利用許可部２を備えていないソフトウェア利用制御装置のコード生成部５において、前記したような認証鍵を生成する鍵生成部１１と暗号化された認証コードを生成する暗号化部１２を備えることによって、よりソフトウェア利用制御の安全性を高めることができる。
【００４３】
また、図６において、利用制御部１における利用記録要求部１３が前記比較部７からの比較結果を受けて利用量情報を記録することを利用量管理部１４に要求し、この要求に従って利用量管理部１４が利用量に関する情報を記録する。
さらに、図７において、コンテンツ部８のソフト動作監視部１５がソフトウェア本体の動作状況を監視し、利用記録要求部１３が所定の条件を満足した動作状況が生じたことを検知した場合に、利用量管理部１４が利用量に関する情報を記憶するようにする。
【００４４】
このように、この発明によれば、利用量に関する情報を記録するようにしているので、前記したような不正利用の防止と共に、正規利用者の利用可又は不可の柔軟な制御が可能である。
【００４５】
また、図８において、前記コンテンツ部８に予め試用回数上限値を格納しておく。
そして、コード要求部６が試用回数上限値を利用許可部２の試用回数記録部１９に送り、試用回数を試用回数記録部１９に記録させる。
次に、コード要求部６から利用許可要求が利用許可部２に転送されるごとに、試用回数管理部１８が試用回数を更新する。
この後、この試用回数が試用回数上限値を越えていない場合に、試用認証部１６がコンテンツＩＤと乱数を変換して試用認証コードを生成し、試用回数管理部１９が前記試用認証コードを比較部７に転送する。
比較部７においては、認証部３において生成された認証コードと前記試用認証コードを比較して、一致するかどうか判断する。
【００４６】
以上のように、この発明によれば、試用回数記憶部１９に試用回数を記憶し、この試用回数がコンテンツ部８に格納された試用回数上限を越えない場合にのみ利用を許可するように制御するので、正規の利用者はコンテンツ部８に格納されたソフトウェアを、すぐに試用回数上限の範囲内で利用することができる。
【００４７】
また、コンテンツ部８が、コンテンツＩＤと、コンテンツＩＤと１対１に対応し、かつ利用者には秘密にされたコンテンツ認証ＩＤを予め格納しておくことによって、より安全性の高いソフトウェア利用制御が可能である。
【００４８】
【実施例】
以下、図に示す実施例に基づいてこの発明を詳述する。なお、この発明はこれによって限定されるものではない。
図９にこの発明におけるソフトウェアの利用制御を行うシステム（以下、超流通システムと呼ぶ）全体の構成図を示す。この超流通システムは、ソフトウェアの生産・販売をするソフトウェア供給者とソフトウェアを利用するユーザとから構成され、さらにソフトウェア供給者は、情報提供者と管理センタとから構成される。
【００４９】
この超流通システムの特徴は、ライセンス情報を持たなければ利用できない仕組みを供給するソフトウェアの中に組み込んで広く配付し、利用を希望するユーザはライセンスを購入することによってはじめてソフトウェアの利用が可能になる点にある。
【００５０】
すなわち、情報提供者はソフトウェアを管理センタに登録し、ユーザのソフトウェア利用に応じた利用料を管理センタから得る。
【００５１】
管理センタは、登録されたソフトウェアに保護機構を組み込み、保護されたソフトウェア、すなわちコンテンツを広く配付する。また登録したユーザに対して、ユーザからのライセンス要求に応じたライセンスを発行し、ソフトウェア利用に対する料金の徴収分配を行う。
コンテンツには、ソフトウェア本体と、保護化のための認証プログラムが組み込まれる。
【００５２】
ライセンスの発行を受けたユーザは、必要に応じて利用許可装置を管理センタから有償又は無償で貸与してもらい、ユーザ所有のハードウェアでコンテンツを利用する。
コンテンツの利用に際して、認証プログラムと利用許可装置との間でソフトウェアの利用許可をしてよいかどうかの認証処理が行われ、認証が成功した場合にのみ、ソフトウェアの利用が許可されることになる。
以上が超流通システムの全体構成であるが、この発明は、ユーザに配付されたコンテンツと利用許可装置、及びこれらを用いたソフトウェアの利用許可制御に関するものである。
【００５３】
図１０に、この発明を実現する一実施例としてのハードウェアの構成図を示す。
同図において、ソフトウェア利用制御装置は、ユーザ所有のハードウェア５０、利用許可装置６０及びコンテンツ７１から構成される。
コンテンツ７１には、ユーザが動作させようとするプログラム本体７２に認証プログラム７３が組み込まれて格納されている。
【００５４】
ここでプログラム本体７２とは、たとえばワードプロセッサ用ソウトウェア、図面作成用ソフトウェア、データベース用ソフトウェア、あるいはゲームソフトウェアなどを言う。
【００５５】
認証プログラム７３とは、プログラム本体７２を動作させようとするユーザが正規のユーザであるかどうかを確認するためのソフトウェアであり、乱数発生、正規ユーザのみに与えられるソフトウェア認証鍵の生成、ソフトウェア認証鍵を用いて暗号化により利用許可を与えるための認証コードの生成等の処理を行うものである。
【００５６】
また、認証プログラム７３自体は、プログラム本体７２ごとに与えられるコンテンツＩＤ、ユーザ所有のハードウェア等の機器ＩＤ（ＣＰＵ−ＩＤ）、ユーザに与えられるユーザＩＤや、ソフトウェア認証鍵に依存しないソフトウェアである。
したがって、ユーザに配付されるコンテンツ７１は、ユーザごとに異なる情報は書込まずに、共通化でき、量産が可能である。
【００５７】
ユーザ所有のハードウェア５０としては、パーソナルコンピュータ、ワークステーション、ゲーム専用機などが利用されるが、コンテンツ７１に格納されたプログラム本体７２を動作させることのできるコンピュータであればよい。
ユーザ所有のハードウェア５０は、同図に示すように一般に、ＣＰＵ５１、ＲＯＭ５２、ＲＡＭ５３、ハードディスク５４、ＣＲＴ５５、キーボード５６、Ｉ／Ｏコントローラ５７、ＦＤＤ５８及び通信回線コントローラ５９から構成され、必要に応じて、外部機器が増設されたり、不要な機器が取りはずされる。
【００５８】
同図において、コンテンツ７１は、フロッピーディスクで供給され、このフロッピーディスクがＦＤＤ（フロッピーディスクドライブ）５８に挿入される例を示しているが、コンテンツ７１は他の媒体で供給してもよく、媒体の種類に応じて、適切な外部機器又はボードをユーザ所有のハードウェアに組込めばよい。
たとえば、コンテンツ７１がＣＤ−ＲＯＭで供給される場合はＣＤ−ＲＯＭドライブ装置、ＩＣカードで供給される場合はＩＣカードリーダ、あるいは公衆回線を通して送信される場合は、モデム等の通信回線コントローラ５９を備えればよい。
【００５９】
利用許可装置６０も、ユーザ所有のハードウェア５０と同様にＣＰＵ６１、ＲＯＭ６２、ＲＡＭ６３、Ｉ／Ｏコントローラ６６及び通信回線コントローラ６４等で構成される。
利用許可装置６０は、ユーザ所有のハードウェアでコンテンツ７１に格納されたプログラム本体７２の起動を許可するための処理や、プログラム本体７２の利用回数に応じた課金や利用の制限等の処理を行う装置（課金モジュール）であり、通常ソフトウェア供給者から、ユーザに有償又は無償で貸与されるものである。
【００６０】
利用許可装置６０のＲＡＭ６３には、厳密な管理のもとで、ソフトウェア供給者から、ユーザごとに与えられるソフトウェア認証鍵６５が書込まれる。このソフトウェア認証鍵６５のハードウェアへの書込みは、プログラム本体７２の起動よりも前に行うことが必要である。
【００６１】
また、このソフトウェア認証鍵６５は、コンテンツ７１とは別のフロッピーディスクや光磁気ディスク等の媒体で提供されることが望ましく、通信回線を通して、直接ソフトウェア提供者から利用許可装置６０のＲＡＭ６３に書込んでもよい。
また、ソフトウェア認証鍵６５は安全性のために直接ユーザに与えるのではなく、利用許可装置に固有の装置鍵コードによってソフトウェア認証鍵６５に変換できる形式のデータをユーザに与えてもよい。
【００６２】
利用許可装置６０とユーザ所有のハードウェア５０は、互いにＩ／Ｏコントローラ５７、６６によって接続され、利用許可制御に必要なデータや信号の転送が行われる。
【００６３】
以上のようなハードウェア構成を持つソフトウェア利用制御装置におけるソフトウェア利用許可の動作の概要を次に示す。
１）ソフトウェア認証鍵６５をＲＡＭ６３に書込む。
２）ユーザ所有のハードウェア５０のＦＤＤ５８にコンテンツ７１を挿入する。
３）ユーザがコンテンツ７１の起動処理を実行させると、ユーザ所有のハードウェア５０において認証プログラムが呼び出される。
４）ユーザ所有のハードウェア５０において、プログラム本体７２に付与されているコンテンツＩＤ等に基づき、プログラム本体を利用するための認証コードを生成する。
【００６４】
５）利用許可装置６０において、予めＲＡＭ６３に記憶されたソフトウェア認証鍵６５を用いてプログラム本体を利用するための認証コードを生成する。
６）ユーザ所有のハードウェア５０において、４）で生成された認証コードと５）で生成された認証コードを比較する。
７）６）の比較の結果、両認証コードが一致した場合は、ユーザ所有のハードウェア５０においてプログラム本体７２が起動される。
以上のように利用制御を行えば、ソフトウェア認証鍵６５を持っている正規のユーザのみがコンテンツ７１を利用することができ、したがって不正利用の防止ができる。
【００６５】
図１１に、ソフトウェア利用許可制御の第１実施例の説明図を示す。
この第１実施例は、図１０に示した利用許可装置６０をユーザ宅内に設置し、ソフトウェア供給者から送られてくるコンテンツ７１に格納されたコンテンツＩＤを用いて、正規のユーザかどうかの認証を行った後に、コンテンツ７１に格納されたソフトウェアの許可を与える例である。
【００６６】
ここで、認証は、利用許可装置６０で生成した認証コードと、ユーザ所有のハードウェア５０で生成した認証コードとを比較することにより行う。
また、ユーザ所有のハードウェア５０で認証コードを生成するために、認証プログラム自体が持つ乱数発生機能と、認証プログラム自体が持つ固有のライブラリ鍵を用いたソフトウェア認証鍵コードの生成機能と、暗号化機能等を利用する。
【００６７】
以下、第１実施例の利用許可の制御について詳説する。
図１１は、制御に用いられるデータの流れを説明する模式図であり、これらのデータは、図１０に示す装置のＲＡＭ、ハードディスク及びＩ／Ｏコントローラを介して転送される。
図１１において、図１０と同様に、７１はコンテンツ、７２はプログラム本体（以下、プログラムと呼ぶ）、７３は認証プログラム（以下、ライブラリと呼ぶ）、６０は課金モジュール（以下モジュールと呼ぶ）である。
【００６８】
プログラム７２には、そのプログラム固有のコンテンツＩＤが付与されており、このコンテンツＩＤはコンテンツ７１の中の所定の領域に格納されている。
なお、このコンテンツＩＤは、コンテンツ７１に含まれるプログラム７２ごとに付与される固有のＩＤであり、複数のユーザに配付されるすべてのコンテンツ７１において同じプログラム７２には同じＩＤが付与されている。
【００６９】
ライブラリ鍵ｋｌｉｂは、ライブラリに付与された固定の鍵コードであり、これを用いて、コンテンツＩＤがソフトウェア認証鍵ｋａｕに変換される。
このライブラリ鍵ｋｌｉｂは、利用されるユーザの目にふれることのないデータであり、ライブラリごとに別の鍵コードを与えることもできる。
したがって、ライブラリ鍵ｋｌｉｂと後述する変換処理手順を公開しないようにすることで、利用制御の安全性を確保することができる。
【００７０】
ここで変換７３ａとは、たとえば、コンテンツＩＤとライブラリ鍵ｋｌｉｂをパラメータとして、所定の数式に代入して得られた結果を、ソフトウェア認証鍵とする処理である。
したがって変換処理手順を記述したルーチンは、ライブラリの外部から与えられるコンテンツＩＤには依存しない手順で記述でき、種々のプログラムに対して共通化される。
【００７１】
また、暗号７３ｂとは、ライブラリ内部で発生する乱数Ｒをもとに、ソフトウェア認証鍵ｋａｕを所定の手順で変換し、暗号化された認証コードＡ  Ｅｋａｕ（Ｒ）を生成する処理である。
ここで用いられる所定の手順とは、通常暗号化技術で用いられるＤＥＳやＦＥＡＬという処理手順を用いることができる。
したがって、暗号の処理手順を記述したルーチンも、ソフトウェア固有のＩＤ等に依存しない手順で記述でき、共通化される。
【００７２】
また、比較７３ｃとは、ライブラリで生成された認証コードＡ  Ｅｋａｕ（Ｒ）とモジュールで生成された認証コードＢ  Ｅｋａｕ（Ｒ）との値が一致するかどうかを判断する処理であり、これもソフトウェア固有のＩＤ等に依存する手順ではないので、共通化できる。
また、比較７３ｃでは、判断の結果、両認証コードが一致したか又は相違したかについての情報が、プログラム７２に返される。
【００７３】
モジュール６０における暗号６０ａでの処理は、ライブラリの暗号７３ｂと同一の処理手順が実行される。
モジュール６０では、暗号６０ａの処理に先立ち、プログラム７２からＩ／Ｏコントローラ（５７、６６）を通してモジュールに与えられるコンテンツＩＤから、ソフトウェア認証鍵ｋａｕを生成する処理が行われる。
【００７４】
この処理は、ユーザがソフトウェア供給者に、あるソフトウェアの利用を請求したときに、ソフトウェアの利用に先立って郵送又は通信等の手段によってユーザに送られてくる情報を利用する。
たとえばこの送られてくる情報の中に、コンテンツＩＤと、このコンテンツＩＤと１対１に対応するソフトウェア認証鍵ｋａｕを格納しておき、前記したモジュール６０に与えられたコンテンツＩＤにより、この情報の中の対応するソフトウェア認証鍵ｋａｕを検索して求める。
【００７５】
また、安全性のために、送られてくる情報の中にソフトウェア認証鍵ｋａｕを格納するのではなく、モジュール６０に固有の装置鍵ｋｄで復号することによってソフトウェア認証鍵ｋａｕが生成できるような鍵データをコンテンツＩＤと対応させて格納しておくことが望ましい。
このとき、コンテンツＩＤにより対応する鍵データを検索し、この鍵データを装置鍵で復号することによって対応するソフトウェア認証鍵ｋａｕを生成する。
【００７６】
このように、コンテンツＩＤは供給するソフトウェア本体に固有のＩＤであり、ユーザに開放される可能性のあるものであるので、不正に複写されることがありうるが、モジュール６０に固有の装置鍵ｋｄは正規に利用するユーザにも開放されないものであるので、利用許可をする際の安全性をより向上させることができる。
【００７７】
上記したように、モジュール６０では、コンテンツＩＤによる検索によってソフトウェア認証鍵ｋａｕを生成し、このｋａｕを乱数Ｒを用いた暗号化処理６０ａによって変換し、認証コードＢ  Ｅｋａｕ（Ｒ）を求める。
【００７８】
以上がプログラム７２、ライブラリ７３及びモジュール６０内部での各部分の処理であるが、プログラム７２とライブラリ７３における処理は、図１０のユーザ所有のハードウェア５０のＣＰＵ５１によって実行され、モジュール６０における処理はモジュール６０内のＲＯＭに記憶された手順にしたがって、モジュール６０のＣＰＵ６１によって実行されるものである。
【００７９】
図１２、１３及び１４に、第１実施例における各ソフトウェアの処理手順を示し、以下これについて説明する。
図１２に、プログラム７２におけるフローチャートを示す。
まず、ステップＳ１においてコンテンツＩＤをライブラリ７３に送る。
具体的には、たとえばＣＰＵ５１がプログラム７２を起動し、コンテンツＩＤを読み出して、コンテンツＩＤを引数としてライブラリ７３に与え、ライブラリ７３を起動させてもよく、また、マルチタスクとしてプログラム７２及びライブラリ７３を起動させておき、コンテンツＩＤをライブラリに引き渡してもよい。
【００８０】
次に、ステップＳ２において、ライブラリから認証結果が受理されるのを待つ。
ステップＳ３において、認証結果を判断し、認証結果がＹＥＳ、すなわち正規の利用であり利用許可を与えてよい場合には、ステップＳ４へ進み、プログラム本体を実行させる。
認証結果がＮＯ、すなわち不正利用であり利用許可を与えない場合には、処理を終了する。
【００８１】
図１３に、ライブラリ７３におけるフローチャートを示す。
ステップＳ１１において、コンテンツＩＤをプログラム７２から受理する。
次にステップＳ１２において、コンテンツＩＤ及び内部で発生した乱数Ｒをモジュール６０へＩ／Ｏコントローラ（５７、６６）を介して転送する。
ステップＳ１３において、認証コードＢ  Ｅｋａｕ（Ｒ）モジュール６０から受理されるのを待つ。
【００８２】
ステップＳ１４において、コンテンツＩＤをライブラリ鍵ｋｌｉｂで変換し、ソフトウェア認証鍵ｋａｕを生成する。
ステップＳ１５において、乱数Ｒをｋａｕで暗号化し、認証コードＡ  Ｅｋａｕ（Ｒ）を生成する。
ステップＳ１６において、上記２つの認証コードＡ、Ｂを比較し、その結果を認証結果としてプログラム７２に送る。
この比較処理によって２つの認証コードが一致した場合に、プログラム本体の利用許可がされることになる。
【００８３】
図１４に、モジュール６０におけるフローチャートを示す。
ステップＳ２１において、コンテンツＩＤと乱数Ｒをライブラリ７３から受理する。
ステップＳ２２において、コンテンツＩＤにより対応するソフトウェア認証鍵ｋａｕを検索する。
ステップＳ２３において、検索によって求められたソフトウェア認証鍵ｋａｕを用いて乱数Ｒを暗号化し、認証コードＢ  Ｅｋａｕ（Ｒ）を生成する。
【００８４】
ステップＳ２４において、生成された認証コードＢ  Ｅｋａｕ（Ｒ）をライブラリ７３にＩ／Ｏコントローラを通して転送する。
以上がプログラム７２、ライブラリ７３及びモジュール６０の個々の処理を示すフローチャートであるが、各部とも互いに同期をとって処理が進められることは言うまでもない。
【００８５】
このように、第１実施例において、コンテンツＩＤを用いて、ライブラリ７３すなわち供給媒体に格納された認証プログラムによって生成された認証コードと、モジュール６０、すなわち利用許可装置によって生成された認証コードを比較して利用許可制御をしているので、プログラム本体をすべて暗号化した不正利用防止策をとったときよりも、利用許可を出しプログラムの実際の利用開始をするまでの時間を短縮化できる。
【００８６】
また、認証プログラム７３は、コンテンツＩＤやその他のユーザ固有のＩＤやソフトウェア認証鍵などに依存することなく、配付される媒体に共通のソフトウェアとして格納しておくことが可能であり、ソフトウェア本体とこの認証プログラムを格納した媒体をユーザごとに作成する必要はなく、一種類のみを製造すればよいので、供給するソフトウェアの管理が容易である。
【００８７】
さらに、供給するソフトウェアには、ユーザごとに付与されるＩＤやソフトウェア認証鍵が直接含まれていないこと、及び利用許可装置で生成される認証コードと供給ソフトウェアで生成する認証コードとの比較を行うので、供給媒体が正規のユーザ以外の者に流通したり、不正に複写されたとしても利用許可は与えられず不正利用が防止できる。
【００８８】
また、特定ユーザグループなどについて特に安全性を確保するために、ライブラリ鍵ｋｌｉｂをその特定ユーザグループ向けのコードに書き替えて配付することも可能である。
【００８９】
図１５に、ソフトウェア利用許可制御の第２実施例の説明図を示す。
この第２実施例は、図１０に示した利用許可装置６０をユーザが持たない場合のソフトウェア利用制御を示している。
そして、ユーザは、コンテンツ７１を動作させるユーザ所有のハードウェア５０のみを所有している。
【００９０】
ここでは、第１実施例と同様にしてソフトウェア供給者から送られてくるコンテンツ７１に格納されたソフトウェアから生成した認証コードと、このコンテンツ７１とは別ルートで送られてくる認証コードとを比較して正規のユーザかどうかの認証を行う例である。
【００９１】
また、ユーザ所有のハードウェア５０で認証コードを生成するために、コンテンツＩＤと認証プログラム自体が持つ固有のライブラリ鍵と、ユーザあるいはユーザ所有のハードウェア５０を特定するための識別コード、たとえばユーザ所有のハードウェア５０のＣＰＵ固有のＩＤ（ＣＰＵ−ＩＤ）、予め正規ユーザに付与されるユーザＩＤ、又は、ユーザ所有のハードウェア５０に接続される外部機器の機器ＩＤ等が用いられる。
【００９２】
図１５において、図１１と同様に、７１はコンテンツ、７２はプログラム、７３はライブラリ、５４はユーザ所有のハードウェア５０におけるハードディスクである。
ハードディスク５４には、ソフトウェア供給者から送られてくる認証コードＡ
Ｅｋａｕ（コンテンツＩＤ）が格納されている。
【００９３】
これは、第１実施例と同様に、コンテンツＩＤと、このコンテンツＩＤと１対１に対応する認証コードＡ  Ｅｋａｕ（コンテンツＩＤ）が格納された情報としてユーザに送られてくるものである。
このハードディスク５４に格納されたＥｋａｕ（コンテンツＩＤ）は、プログラム７２によって、このプログラム本体に固有のコンテンツＩＤを基に検索されて読み出される。
この検索処理は、たとえばフロッピーディスクで供給されたコンテンツ７１が、ユーザ所有のハードウェア５０のＦＤＤ５８に挿入されて、コンテンツが起動されたときに、ＣＰＵ５１が行う。
【００９４】
図１５では、ユーザ所有のハードウェア５０のＣＰＵ５１に固有のＣＰＵ−ＩＤを識別コードとして用いる例を示している。ＣＰＵ−ＩＤはＣＰＵ５１内部のＲＯＭ又は、ＲＯＭ５２に書き込まれている。
このＣＰＵ−ＩＤ等の識別コードは、ユーザがソフトウェアの利用をソフトウェア供給者に請求するときに、同時に申告する必要がある。
【００９５】
なお、上記した認証コードＡ  Ｅｋａｕ（コンテンツＩＤ）は、ソフトウェア供給者側で、上記申告された識別コードをもとに暗号化されて生成されたコードである。
【００９６】
したがって認証コードが何らかの手段によって正規ユーザ以外の者に知られたとしても、識別コードがわからない限り不正利用ができないようにすることができ、さらに識別コードとしてこの実施例で示したＣＰＵ固有のＣＰＵ−ＩＤを用いれば、そのＣＰＵ−ＩＤを持つＣＰＵを搭載したハードウェアでなければ使用ができないようにすることが可能である。
【００９７】
ライブラリ７３において、変換７３ａ、暗号７３ｂ及び比較７３ｃの処理は、第１実施例と同様である。
ただし、ここでは変換されるコードはＣＰＵ−ＩＤであり、暗号７３ｂによって生成される認証コードＢはＥｋａｕ（コンテンツＩＤ）である。
【００９８】
図１６、１７に第２実施例における各ソフトウェアの処理手順を示し、以下これについて説明する。
図１６に、プログラム７２におけるフローチャートを示す。
ステップＳ３１において、コンテンツ７１に格納されているコンテンツＩＤ及びハードディスク５４に格納されている認証コードＡ  Ｅｋａｕ（コンテンツＩＤ）を読み出してライブラリ７３に送る。この送る方法は、第１実施例と同様である。
【００９９】
次に、ステップＳ３２において、認証結果がライブラリ７３から受理されるのを待つ。
ステップＳ３３において、認証結果を判断し、認証結果がＹＥＳ、すなわち正規の利用であり、利用許可を与えてよい場合にはステップＳ３４へ進み、プログラム本体を実行させる。
認証結果がＮＯ、すなわち不正利用であり、利用許可を与えない場合には処理を終了する。
【０１００】
図１７に、ライブラリ７３におけるフローチャートを示す。
ステップＳ４１において、コンテンツＩＤと認証コードＡ  Ｅｋａｕ（コンテンツＩＤ）を、プログラム７２から受理する。
次に、ステップＳ４２において、ＣＰＵ−ＩＤを読み込む。
ステップＳ４３において、ＣＰＵ−ＩＤをライブラリ鍵ｋｌｉｂで変換し、ソフトウェア認証鍵ｋａｕを生成する。
【０１０１】
ステップＳ４４において、受理したコンテンツＩＤをソフトウェア認証鍵ｋａｕで暗号化し、認証コードＢ  Ｅｋａｕ（コンテンツＩＤ）を生成する。
ステップＳ４５において、上記２つの認証コードＡ、Ｂを比較し、その結果を認証結果としてプログラム７２に送る。
この比較処理によって２つの認証コードが一致した場合にプログラム本体の利用許可がされることになる。
【０１０２】
このように、第２実施例において、利用許可装置を備えていないユーザの場合にも、第１実施例と同様な不正利用の防止が可能である。
すなわち、プログラム本体をすべて暗号化することがないので、プログラムの実際の利用開始までの時間が短縮化されること、認証プログラム７３は配付される媒体に共通化して格納できるので、供給するソフトウェアの管理が容易であること、さらに、供給するソフトウェアにはＣＰＵ−ＩＤなどユーザ固有の識別コードは含まれていないので、ソフトウェア自体が不正に複写されても利用許可は与えられないこと、という効果がある。
【０１０３】
なお、図１５の第２実施例においては、識別ＩＤとして与えられるＣＰＵ−ＩＤをライブラリ鍵で変換し、さらにこれによって生成されたソフトウェア認証鍵を用いてコンテンツＩＤを暗号化したが、これとは逆に、コンテンツＩＤをライブラリ鍵で変換し、さらにこれによって生成されたソフトウェア認証鍵を用いてＣＰＵ−ＩＤを暗号化するようにしてもよい。
【０１０４】
図１８に、ソフトウェア利用許可制御の第３実施例の説明図を示す。
この第３実施例は、第１実施例と同様の構成及びソフトウェア利用許可の制御を行い、さらに、ユーザの利用残高などの課金情報を課金モジュールに記憶させ、利用残高が残っている時などソフトウェアが利用可能な状態のときに、ソフトウェアの利用許可を行うものである。
【０１０５】
ここで、第１実施例とは異なり、ライブラリ７３にはモジュール６０に対して認証の結果を転送する処理（利用記憶要求処理）等を追加し、モジュール６０には、課金情報ここではユーザの利用残高を記憶し、その利用残高に応じて課金結果、すなわち利用可能であるか利用不可とすべきかの情報をライブラリ７３に対して転送する処理（利用量管理処理）を追加する。
【０１０６】
また、プログラム７２においては、認証結果と課金結果を受理してこれらの結果を判断して、プログラムが利用可能なときにプログラムを実行させるように処理を変更する。
【０１０７】
また、比較によって得られた認証結果は、得られたデータをそのままモジュール６０へ転送してもよいが、安全性のため、図１５に示すようにソフトウェア認証鍵ｋａｕで暗号化したコードＥｋａｕ（Ｒ｜｜Ｙ）またはＥｋａｕ（Ｒ｜｜Ｎ）を転送するのが好ましい。
また、モジュール６０からライブラリ７３へ送られる課金結果についても、ソフトウェア認証鍵ｋａｕで暗号化したコードＥｋａｕ（Ｒ｜｜Ｏｋ）又はＥｋａｕ（Ｒ｜｜Ｎｏ）を転送することが好ましい。
【０１０８】
図１９、２０、２１に、第３実施例における各ソフトウェアの処理手順を示し、以下これについて説明する。
図１９に、プログラム７２におけるフローチャートを示す。
ステップＳ５１において、コンテンツＩＤをライブラリ７３に送る。
ステップＳ５２において、ライブラリ７３から認証結果及び課金結果が受理されるのを待つ。
【０１０９】
ステップＳ５３において、認証結果を判断し、認証結果がＹＥＳ、すなわち正規の利用である場合には、ステップＳ５４へ進む。
ステップＳ５４において、課金結果を判断し、課金結果が成功、すなわちまだ利用残高が残っている場合には、ステップＳ５５へ進み、プログラム本体を実行させる。
ステップＳ５３又はＳ５４において、認証結果がＮＯ、又は課金結果が失敗の場合には、不正利用又は利用残高残っていないので、利用許可を与えずに、処理を終了する。
【０１１０】
図２０に、ライブラリ７３におけるフローチャートを示す。
ステップＳ６１において、コンテンツＩＤをプログラム７２から受理する。
次にステップＳ６２において、コンテンツＩＤ及び内部で発生した乱数Ｒをモジュール６０へＩ／Ｏコントローラ（５７、６６）を介して転送する。
ステップＳ６３において、認証コードＢ  Ｅｋａｕ（Ｒ）がモジュール６０から受理されるのを待つ。
【０１１１】
ステップＳ６４において、コンテンツＩＤをライブラリ鍵ｋｌｉｂで変換しソフトウェア認証鍵ｋａｕを生成する。
ステップＳ６５において、乱数Ｒをｋａｕで暗号化し、認証コードＡ  Ｅｋａｕ（Ｒ）を生成する。
ステップＳ６６において、上記２つの認証コードＡ、Ｂを比較し、その結果を得る。
【０１１２】
ステップＳ６７において、認証結果がＹＥＳ、すなわち、正規利用であると判断された場合には、乱数Ｒと値“Ｙ”との連接（Ｒ｜｜“Ｙ”）を計算し、これをソフトウェア認証鍵ｋａｕで暗号化する（ステップＳ６８）。
すなわちＥｋａｕ（Ｒ｜｜Ｙ）を生成する。
認証結果がＮＯ、すなわち正規利用でないと判断された場合には、乱数Ｒと値“Ｎ”との連接（Ｒ｜｜“Ｎ”）を計算し、これをソフトウェア認証鍵ｋａｕで暗号化する（ステップＳ６９）。
すなわちＥｋａｕ（Ｒ｜｜Ｎ）を生成する。
【０１１３】
次に、ステップＳ７０において、上記で生成した認証結果Ｅｋａｕ（Ｒ｜｜Ｙ）またはＥｋａｕ（Ｒ｜｜Ｎ）をモジュール６０へ送る。
ステップＳ７１において、モジュール６０から終了通知、すなわち暗号化された課金結果を受理されるのを待つ。
ここで終了通知は、Ｒ｜｜“Ｏｋ”をｋａｕで暗号化したＥｋａｕ（Ｒ｜｜ＯＫ）、あるいはＲ｜｜“Ｎｏ”をｋａｕで暗号化したＥｋａｕ（Ｒ｜｜Ｎｏ）である。
【０１１４】
ステップＳ７２において、暗号化された課金結果をｋａｕで復号する。
復号によって得られるコードは、Ｒ｜｜“Ｏｋ”又はＲ｜｜“Ｎｏ”であり、Ｒ｜｜“Ｏｋ”は課金状態が正常、すなわち利用可能な状態であることを示し、Ｒ｜｜“Ｎｏ”は課金状態が異常、すなわち利用可能な状態でないことを示す。
【０１１５】
ステップＳ７３において、復号された課金結果がＲ｜｜“Ｏｋ”のときは、課金結果情報を“成功”、たとえば１という値に設定する。
また復号された課金結果がＲ｜｜“Ｎｏ”のときは、課金結果情報を“失敗”、たとえば０という値に設定する。
ステップＳ７４において、ステップＳ６６で得られた認証結果と、ステップＳ７３で得られた課金結果情報を、プログラム７２へ送る。
【０１１６】
図２１に、モジュール６０におけるフローチャートを示す。
ステップＳ８１において、コンテンツＩＤと乱数Ｒをライブラリ７３から受理する。
ステップＳ８２において、コンテンツＩＤにより対応するソフトウェア認証鍵ｋａｕを検索する。
ステップＳ８３において、検索によって求められたソフトウェア認証鍵ｋａｕを用いて乱数Ｒを暗号化し認証コードＢ  Ｅｋａｕ（Ｒ）を生成する。
【０１１７】
ステップＳ８４において、生成された認証コードＢ  Ｅｋａｕ（Ｒ）をライブラリにＩ／Ｏコントローラを通して転送する。
ステップＳ８５において、モジュール６０から暗号化された認証結果Ｅｋａｕ（Ｒ｜｜Ｙ）又はＥｋａｕ（Ｒ｜｜Ｎ）が受理されるのを待つ。
ステップＳ８６において、受理した暗号化された認証結果をｋａｕで復号する。
【０１１８】
ステップＳ８７において、復号された認証結果がＲ｜｜“Ｙ”の場合、認証が正常であるとして、ステップＳ８８へ進み、モジュール６０のハードディスク６４に記憶された利用残高を確認する。
ステップＳ８８において、利用残高が残っている場合（≧１）、ステップＳ８９へ進み、利用残高を更新する。
ここで利用残高として利用回数を用いている場合、ステップＳ８９におけるように利用残高から１を減ずる。
【０１１９】
ステップＳ９０において、課金結果として利用可能であることを示す、Ｒ｜｜“Ｏｋ”を設定する。
ステップＳ８７において、復号された認証結果がＲ｜｜“Ｎ”の場合、認証が異常、すなわち不正利用であるとして、ステップＳ９１へ進み、課金結果として利用不可であることを示すＲ｜｜“Ｎｏ”を設定する。
ステップＳ９２において、上記課金結果をｋａｕで暗号化し、Ｅｋａｕ（Ｒ｜｜Ｏｋ）またはＥｋａｕ（Ｒ｜｜Ｎｏ）を生成する。
ステップＳ９３において、上記暗号化された課金結果Ｅｋａｕ（Ｒ｜｜Ｏｋ）またはＥｋａｕ（Ｒ｜｜Ｎｏ）をライブラリ７３へ送る。
【０１２０】
このように、第３実施例において、利用許可装置で生成した認証コードと認証プログラムで生成した認証コードとを比較し、さらに利用残高を記憶しておくようにしているので、不正利用の防止と共に、正規ユーザの利用に対して利用ごとに課金するという柔軟な制御が可能である。
【０１２１】
また、プログラム７２において、利用残高の記憶が正常に完了しプログラム本体が起動可能な状態であることを確認後に、プログラム本体を起動しているので、不当にプログラム本体を起動させたり、プログラム本体の実行が不当に継続され続けることがないようにできる。
【０１２２】
なお、第３実施例では、プログラム本体を実行させる前に認証を行い、利用残高を確認して利用許可の制御を行っているが、これに限られたものではなく、たとえば、プログラム本体が起動後に、所定の機能が実行されたときに、その機能が実行されたことをプログラム７２からライブラリ７３及びモジュール６０に転送し、モジュール６０において、その機能が実行されたことを確認した後に課金制御をするようにしてもよい。
【０１２３】
ここで、所定の機能とは、たとえば作成したデータあるいはファイルの保存や出力などであり、これらの機能が実行されたときに、課金制御を行う。
また、課金制御とは、たとえば、課金を開始する、利用残高を一定量減らす、利用回数を計算する、あるいは利用を一部機能に制限する等が上げられる。
【０１２４】
以上のような課金制御を行うためには、たとえば、プログラム７２において現在の動作状況を監視する機能を追加し、ライブラリがこの動作状況を見て、所定の機能が実行されたと判断した場合にモジュール６０に課金制御を要求する処理をライブラリに追加すればよい。
このように所定の機能に課金制御を行う際、必ずライブラリによる認証処理を行った後利用記録要求を行うようにしておいてもよいが、一度認証処理を行った後は利用記録要求だけを行うようにしてもよい。すなわち、一度認証処理を行ったあとは認証の必要はないので、次に課金が必要な処理が実行された時には、利用記録要求だけを行なえば十分である。図２２に、このような利用制御を行う場合の説明図を示す。２度目以降に利用記録要求だけを行う際は、安全性を高めるため、図２２に示すように毎回新しい乱数Ｒ’をモジュールに送ることが望ましい。
【０１２５】
また、モジュール６０においてタイマーを備え、プログラム本体の利用許可を与えた後の経過時間を記憶しておき、所定の時間が経過した後にプログラムの利用を不可とする情報をライブラリ７３及びプログラム７２に転送してプログラムの利用制御をするようにしてもよい。あるいは、所定の時間経過後に、前記した課金制御を起動させてもよい。
【０１２６】
このようにすれば、ユーザが所定の時間だけ課金されずにプログラムを利用することが可能となるので、その間に所望のプログラムかどうかを確認することができ、さらに所望するプログラムでなかった時、または誤操作によってプログラムを起動させてしまったときなど、課金されずに動作を終了させることができ、ユーザに不利益を与えることがないようにできる。
【０１２７】
また、ライブラリ７３にタイマーを備え、一定時間ごとに、定期的にモジュール６０と何らかの交信を行わせることにより、プログラム動作中にモジュール６０が不当に取り去られても、ずっと不当に利用され続けることがないようにできる。
【０１２８】
すなわち、ライブラリ７３からモジュール６０に所定のコードを送っても一定時間経過後にモジュール６０からの応答がない場合には、モジュールの異常と考えて、プログラム７２の実行を停止させるような処理をライブラリ７３及びモジュール６０に追加すれば、不正利用を防止することができる。
【０１２９】
この他、ユーザのクラスあるいはレベルに応じて、利用許可できる機能範囲、時間あるいは回数等についての各種条件を設定してきめ細かい利用制御をしたい場合には、プログラム７２、ライブラリ７３、及びモジュール６０においてそれぞれの条件に対応する処理プログラムを追加すればよい。
このように、利用許可を与える時期、機能等についての処理プログラムを、さらにコンテンツ７１又は利用許可装置に追加することによって、より柔軟な利用制御が可能となる。
【０１３０】
以上に示した３つの実施例では、コンテンツＩＤはコンテンツに格納されたソフトウェアごとに付与されるＩＤであり、ユーザ等に公開されるものであるので、ユーザは容易に知ることができる。
そこで、よりソフトウェア利用制御の安全性をより高めるために、コンテンツＩＤと１対１に対応し、かつソフト供給者以外のだれにも知られることのないコンテンツ認証ＩＤをコンテンツ内に格納し、このコンテンツ認証ＩＤを用いて実施例で示したソフトウェア利用制御をすることが考えられる。
【０１３１】
すなわち、コンテンツ７１に、コンテンツＩＤと、このコンテンツＩＤに対応するコンテンツ認証ＩＤを格納し、ライブラリ及び利用許可装置にコンテンツ認証ＩＤを送り、このコンテンツ認証ＩＤを用いたソフトウェア利用制御を行わせる。
【０１３２】
利用許可装置のない場合には、コンテンツ認証ＩＤを基に生成することのできる認証コードを、予めユーザ所有のハードウェア内のハードディスクに記憶しておく。
以上のように、ユーザに知られることのないコンテンツ認証ＩＤを用いることで、より安全性の高いソフトウェア利用制御が可能となる。
【０１３３】
図２３に、ソフトウェア利用許可制御の第４実施例の説明図を示す。
この第４実施例は、ユーザがソフトウェアの正規購入に先立って、そのソフトウェアの試用を何回かできるように利用制御する場合の実施例である。
ここで、第１実施例とは異なり、ライブラリ７３においてライブラリ鍵ｋｌｉｂのかわりに試用鍵ｋｌｉｂ−ｔｒｙを用い、試用認証鍵ｋｔｒｙを生成する。
【０１３４】
また、比較７３ｃにおいて、この試用認証鍵ｋｔｒｙを用いて生成した試用認証コードの比較を行う。
また、モジュール６０において、ライブラリ７３で行う変換７３ａ及び暗号７３ｂと同様の機能を備え、コンテンツＩＤ及び乱数Ｒを用いて試用認証コードを生成する処理を行う。
【０１３５】
さらに、プログラム７２には予め試用回数上限を記憶しておき、これをライブラリ７３及びモジュール６０に送り、モジュール６０では、試用回数上限を試用残高に設定して、試用残高の管理を行う。
モジュール６０において、この試用残高がなくなれば、試用認証コードとは異なるコードをライブラリに送り、試用を停止させるようにする。
ここでモジュール６０において管理される試用残高は、モジュール内のＲＡＭ６３に格納することが望ましい。
【０１３６】
また、コンテンツ７２の中に格納されているソフトウェアごとに試用残高を管理するために、コンテンツ７２から送られてくるコンテンツＩＤとその試用残高を対応させてＲＡＭ６３に記憶しておくことが望ましい。
なお、ライブラリからモジュール６０にコンテンツＩＤ及び乱数が送られてくるたびに、ソフトウェアの試用が新たに行われたものとする。
【０１３７】
ただし、このコンテンツＩＤ等を送る代わりに、新たなソフトウェアの試用が行われたときに、ライブラリ７３からモジュール６０に認証処理を要求するための利用許可要求データを転送してもよく、後述する試用回数の更新においては、この利用許可要求がモジュール６０に転送されてきたときに行うようにしてもよい。
【０１３８】
この第４実施例において、ソフトウェア供給者は、ユーザに試用してもらうために、コンテンツをユーザに有償又は無償で配布する。
この媒体の中には、ユーザが正規購入した際に配布される媒体と同様に認証プログラム７３を組み込んだプログラム本体７２が格納されているが、さらに試用回数上限と試用鍵ｋｌｉｂ−ｔｒｙが格納され、認証プログラム７３の変換処理ルーチンで試用鍵ｋｌｉｂ−ｔｒｙを用いるようにプログラミングされている。
なお、ユーザに事前に配布された利用許可装置には、コンテンツに格納された試用鍵ｋｌｉｂ−ｔｒｙと試用鍵ｋｌｉｂ−ｔｒｙを用いた変換処理がすでに備えられているものとする。
【０１３９】
以上のような構成を有する各部分の動作について以下に説明する。
図２４、２５及び２６に、第４実施例における各ソフトウェアの処理手順を示す。
図２４に、プログラム７２におけるフローチャートを示す。
ステップＳ１０１において、コンテンツＩＤと試用回数上限を、ライブラリ７３に送る。
【０１４０】
次に、ステップＳ１０２において、ライブラリから認証結果が受理されるのを待つ。
ステップＳ１０３において、認証結果を判断し、認証結果がＹＥＳ、すなわち正規の利用であり利用許可を与えてよい場合にはステップＳ１０４へ進み、試用のためにプログラム本体を実行させる。
認証結果がＮＯ、すなわち不正利用であり利用許可を与えない場合には処理を終了する。
【０１４１】
図２５に、ライブラリ７３におけるフローチャートを示す。
ステップＳ１１１において、コンテンツＩＤと試用回数上限をプログラム７２から受理する。
次にステップＳ１１２において、コンテンツＩＤ、試用回数上限及び内部で発生した乱数Ｒをモジュール６０へＩ／Ｏコントローラ（５７，６６）を介して転送する。
ステップＳ１１３において、認証コードＢ  Ｅｋａｕ（Ｒ）がモジュール６０から受理されるのを待つ。
【０１４２】
ステップＳ１１４において、コンテンツＩＤを試用鍵ｋｌｉｂで変換し、ソフトウェア認証鍵ｋｔｒｙを生成する。
ステップＳ１１５において、乱数Ｒをｋｔｒｙで暗号化し、試用認証コードＡＥｋｔｒｙ（Ｒ）を生成する。
ステップＳ１１６において、上記２つの試用認証コードＡ，Ｂを比較し、その結果を認証結果としてプログラム７２に送る。
【０１４３】
図２６にモジュール６０におけるフローチャートを示す。
ステップＳ１２１において、コンテンツＩＤと試用回数上限と乱数Ｒをライブラリ７３から受理する。
ステップＳ１２２において、コンテンツＩＤを試用鍵ｋｌｉｂ−ｔｒｙで変換し、試用鍵ｋｌｉｂ−ｔｒｙを生成する。
ステップＳ１２３において、コンテンツＩＤを用いて、ＲＡＭ６３に記憶されているコンテンツＩＤに対応した試用残高を検索する。
【０１４４】
ステップＳ１２４において、検索の結果そのコンテンツＩＤに対する試用残高がＲＡＭ６３にエントリーされていない場合には、ステップＳ１２５において試用回数上限値をそのコンテンツＩＤに対する試用残高としてエントリーする。
すでに試用残高がエントリーされている場合には、ステップＳ１２６へ進み、試用残高を更新（−１）する。
【０１４５】
ステップＳ１２７において、試用残高が０以上、すなわち試用を許可できる場合には、ステップＳ１２８へ進み、乱数Ｒを試用認証鍵ｋｌｉｂ−ｔｒｙで暗号化し、試用認証コードＢ  Ｅｋｔｒｙ（Ｒ）を生成する。
試用残高が負の数、すなわち試用を許可できない場合には、試用認証コードＢＥｋｔｒｙ（Ｒ）と異なるコードを生成するために、乱数ＲとコンテンツＩＤとの排他的論理和をとり、これをｋｔｒｙで暗号化して認証コードＥｋｔｒｙ（Ｒ＿コンテンツＩＤ）を生成する。（ステップＳ１２９）。
【０１４６】
ステップＳ１３０において、上記ステップＳ１２８またはＳ１２９で生成された認証コードをライブラリに送る。
以上の処理により、ライブラリ７３の比較処理において２つの試用認証コードが一致した場合には、プログラムの試用が許可される。
また、２つの認証コードが一致しない場合、すなわち、モジュールからＥｋｔｒｙ（Ｒ コンテンツＩＤ）が送られてきた場合には、プログラムの試用が禁止される。
【０１４７】
このように第４実施例において、配布あるいは購入されるコンテンツに、試用鍵ｋｌｉｂ−ｔｒｙと試用回数上限とコンテンツＩＤとを格納し、コンテンツ内の認証プログラム及び利用許可装置に試用認証コードを生成する処理を備え、さらに利用許可装置に試用残高を記憶するようにしているので、利用許可装置を所有している正規のユーザが、配布されたコンテンツあるいは購入したコンテンツの中に含まれるソフトウェアを、ライセンスの発行をうけることなくすぐに試用回数の限度内で利用することが可能である。
【０１４８】
【発明の効果】
この発明によれば、利用制御部と利用許可部を備え、２つの認証コードを生成して比較することによってソフトウェア利用制御をしているので、ソフトウェア本体をすべて暗号化したときに比べて、ソフトウェアの実際の利用開始をするまでの時間を短縮化することができる。
【０１４９】
また、コンテンツ部及び認証部のソフトウェア自体はユーザ固有のＩＤには依存することがないため、共通化することができ、供給するソフトウェアの管理が容易である。
さらに、ソフトウェアの供給媒体にはユーザ固有のＩＤは直接含まれておらず、利用制御部と利用許可部において生成される２つの認証コードを比較してソフトウェア利用制御を行うので、ソフトウェアの供給媒体が複写されても利用許可が与えられず不正利用が防止できる。
【０１５０】
また、暗号化された認証コードを用いることによって、さらにソフトウェア利用制御の安全性を高めることができる。
また、利用許可部を備えていないソフトウェア利用制御装置においても、ソフトウェアの実際の利用開始までの時間の短縮化、供給するソフトウェアの管理の容易化及びより効果的な不正利用の防止ができる。
【０１５１】
また、利用量に関する情報を記録するようにしているので、前記したような不正利用の防止と共に、正規利用者の利用可又は不可の柔軟な制御が可能である。
【０１５２】
また、試用回数記憶部に試用回数を記憶し、この試用回数がコンテンツ部８に格納された試用回数上限を越えない場合にのみ利用を許可するように制御するので、正規の利用者はコンテンツ部に格納されたソフトウェアを、すぐに試用回数上限の範囲内で利用することができる。
【０１５３】
また、コンテンツ部が、コンテンツＩＤと、コンテンツＩＤと１対１に対応し、かつ利用者には秘密にされたコンテンツ認証ＩＤを予め格納しておくことによって、より安全性の高いソフトウェア利用制御が可能である。
【図面の簡単な説明】
【図１】この発明のソフトウェア利用制御装置の第１構成ブロック図である。
【図２】この発明のソフトウェア利用制御装置の第２構成ブロック図である。
【図３】この発明のソフトウェア利用制御装置の第３構成ブロック図である。
【図４】この発明のソフトウェア利用制御装置の第４構成ブロック図である。
【図５】この発明のソフトウェア利用制御装置の第５構成ブロック図である。
【図６】この発明のソフトウェア利用制御装置の第６構成ブロック図である。
【図７】この発明のソフトウェア利用制御装置の第７構成ブロック図である。
【図８】この発明のソフトウェア利用制御装置の第８構成ブロック図である。
【図９】超流通システムの全体構成図である。
【図１０】この発明の一実施例におけるハードウェア構成ブロック図である。
【図１１】この発明の第１実施例における利用制御の説明図である。
【図１２】この発明の第１実施例におけるプログラムのフローチャートである。
【図１３】この発明の第１実施例におけるライブラリのフローチャートである。
【図１４】この発明の第１実施例におけるモジュールのフローチャートである。
【図１５】この発明の第２実施例における利用制御の説明図である。
【図１６】この発明の第２実施例におけるプログラムのフローチャートである。
【図１７】この発明の第２実施例におけるライブラリのフローチャートである。
【図１８】この発明の第３実施例における利用制御の説明図である。
【図１９】この発明の第３実施例におけるプログラムのフローチャートである。
【図２０】この発明の第３実施例におけるライブラリのフローチャートである。
【図２１】この発明の第３実施例におけるモジュールのフローチャートである。
【図２２】この発明の第３実施例における利用制御の説明図である。
【図２３】この発明の第４実施例における利用制御の説明図である。
【図２４】この発明の第４実施例におけるプログラムのフローチャートである。
【図２５】この発明の第４実施例におけるライブラリのフローチャートである。
【図２６】この発明の第４実施例におけるモジュールのフローチャートである。
【符号の説明】
５０    ユーザ所有のハードウェア
５１    ＣＰＵ
５２    ＲＯＭ
５３    ＲＡＭ
５４    ハードディスク
５５    ＣＲＴ
５６    キーボード
５７    Ｉ／Ｏコントローラ
５８    ＦＤＤ
５９    通信回線コントローラ
６０    利用許可装置（課金モジュール）
６１    ＣＰＵ
６２    ＲＯＭ
６３    ＲＡＭ
６４    通信回線コントローラ
６５    ソフトウェア認証鍵
６６    Ｉ／Ｏコントローラ
７１    コンテンツ
７２    プログラム本体
７３    認証プログラム
【図１】
0003630451.tif 000002
【図２】
0003630451.tif 000003
【図３】
0003630451.tif 000004
【図４】
0003630451.tif 000005
【図５】
0003630451.tif 000006
【図６】
0003630451.tif 000007
【図７】
0003630451.tif 000008
【図８】
0003630451.tif 000009
【図９】
0003630451.tif 000010
【図１０】
0003630451.tif 000011
【図１１】
0003630451.tif 000012
【図１２】
0003630451.tif 000013
【図１３】
0003630451.tif 000014
【図１４】
0003630451.tif 000015
【図１５】
0003630451.tif 000016
【図１６】
0003630451.tif 000017
【図１７】
0003630451.tif 000018
【図１８】
0003630451.tif 000019
【図１９】
0003630451.tif 000020
【図２０】
0003630451.tif 000021
【図２１】
0003630451.tif 000022
【図２２】
0003630451.tif 000023
【図２３】
0003630451.tif 000024
【図２４】
0003630451.tif 000025
【図２５】
0003630451.tif 000026
【図２６】
0003630451.tif 000027