(57)【特許請求の範囲】
【請求項１】
実行可能なコンピュータプログラムを潜在的なユーザに配布するための方法から独立して、前記プログラムを未許可の使用から保護するための方法であって、前記プログラムは埋め込まれた保護コードを含み、前記保護コードは自己検査ルーチンを含み、
前記保護コードが、前記ユーザのコンピュータ上で前記プログラムの少なくとも幾つかの機能へ、請求書コンピュータのために請求書エージェンシーが請求書エージェンシーの秘密署名鍵を使用してデジタル方式で署名した許可メッセージを前記コンピュータが受信するまで、アクセスすることを禁止するステップであって、前記保護コードは、前記プログラム内に前記秘密署名鍵のための公開照合鍵を含む、前記禁止するステップと、
前記請求書エージェンシーが前記プログラムの使用料金の前記ユーザによる支払状況に応じてデジタル方式で署名した前記許可メッセージを前記請求書コンピュータが前記ユーザのコンピュータに送信するステップと、
前記保護コードが前記許可メッセージを認証するために前記公開照合鍵を当てはめるステップと、
前記自己検査ルーチンが前記プログラムが予期された状態であることを確認するステップと、
前記保護コードが、前記プログラムが前記予期された状態にあると確認され、且つ、前記許可メッセージが認証された場合、前記ユーザのコンピュータ上で前記機能へアクセスすることを可能にするステップと、
を含む、実行可能なコンピュータプログラムを未許可の使用から保護するための方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、コンピュータソフトウェアの「海賊行為／著作権（特許権）侵害」と戦うための対抗策に関し、より詳細には、実行可能なコンピュータプログラム（非公式に配布されたプログラムを含む）を未許可の使用から保護するための手法に関する。
【０００２】
【従来の技術】
コンピュータソフトウェアの配布には、基本的にソフトウェア著作者又は著作者の権利の承継者（即ち、「サプライヤ（提供者）」）と潜在的なエンドユーザの２つのパーティが関わる。標準商取引では、サプライヤは一般に、商取引で満足のいく収益を得ることに関心を持つが、エンドユーザは通常、指定したソフトウェアを特定のコンピューティング環境で使用する合法な権利を満足なスケジュールで得ることに興味を持つ。例えば小売店、直接販売、通信販売配布、その他を使用する様々な形式化された配布戦略は、これらのパーティの競い合う興味を解決するために発達したが、より一般的な配布技法の多くは、元のソフトウェアに対してはあるとしてもほんの少しの価値を加えたコストを、配布処理に負わせる傾向がある。例えば、ソフトウェアサプライヤはしばしば、ソフトウェアには大きな価値を加えないが、ソフトウェアをエンドユーザに引渡すためのコストに加わるパッケージング及び取扱コストを負う。
【０００３】
更に、従来の市販のソフトウェア配布戦略は、ソフトウェアの未許可使用に対する適切な保護を提供することにあまりに頻繁に失敗する。２、３のサプライヤは依然として彼らのプログラム提供に「コピープロテクト」をかけるが、このことは正当なユーザが彼らの個別のニーズ及び好みに応じて彼らのコンピューティングシステムを構成する能力及びバックアップを取る能力を制限するため、この方法は一般的に不人気に陥った。従って、幾つかのソフトウェアサプライヤは内蔵の海賊行為禁止メカニズムの使用を一切断念することを決定し、他のサプライヤはユーザコミュニティで幾分反対が少ない不便な対抗策を採用している。例えば、幾つかのプログラムはホストコンピュータが指定されたポート上でプログラム指定の「ドングル(dongle:ハードウェアキー) 」を有する場合のみ動作するように設計され、他のプログラムはユーザの合法性を検証するのに役立つ質問（プログラムドキュメンテーションの指定のページから情報を要求する質問等）にユーザが正確に返答する場合のみ動作するように設計され、更に他のプログラムはそれらが例えばユーザ名及び／又はアドレスにより「個人用に」された後にのみ動作するように設計される。
【０００４】
コンピュータ「シェアウェア」は、標準の市販ソフトウェアよりもより非公式に、またより少ない経費で配布される。シェアウェアが促進する傾向にあるユーザからユーザへの配布処理は、実行可能プログラムが本質的に「１」及び「０」の２進のパターンにより表される無形の情報であるので、現在市販のソフトウェアの配布を支配している直接販売／小売配布モデルよりも、少なくとも論理上では実行可能なコンピュータプログラムの基本的な特性とよりうまく調和する。他のサプライヤは、市販ソフトウェアを配布するための手段としてシェアウェアの可能性を認識したが、ソフトウェアサプライヤの補償期待を強化するための容易に実現される内蔵の保護メカニズムが存在しないため、商業市場でこの配布モデルの効率及び有効性を利用することは難しかった。
【０００５】
『ＩＥＩＣＥの研究論文／報告書（Transactions of the IEICE)』、Ｅ７３巻７号（１９９０年７月）、１１３３〜１１４６頁に記載のモリ氏他による「スーパーディストリビューション（超配布）：概念及び体系（Superdistribution: The Concept and Architecture)」はこの施行問題について言及するが、ソフトウェアを暗号化することを提案している。しかし、生憎、如何なるユーザによっても使用されるように無制限の配布に陥り易いソフトウェアを暗号化するために平凡な鍵暗号手法が使用されると、ソフトウェアを解読するための鍵も必然的に如何なるユーザにとっても利用可能でなければならない。モリ氏他は、ユーザに重要な内容を漏らす危険性を減らすための厳重な物理的なセキュリティー対策の使用を提案するが、暗号化されたシェアウェアが実行されるであろう全てのホストコンピュータに単一の共通鍵が利用可能でなければならないとすると、最善の状態でもシステムセキュリティは疑わしい。他方、もし複数の鍵が使用されるとすると、ソフトウェアの複数のバージョンが作成及び配布されねばならず、このことはしばしば深刻な不都合をもたらす。また、『日本情報処理協会の研究論文／報告書（Trans. of Information Proc. Soc. of Japan ）』、第３８巻７号（１９９７年７月）、１４６５〜１４７２頁に記載のモリ氏他による「スーパーディストリビューション（超配布）：未来経済のための電子インフラストラクチャ（Superdistribution: An Electronic Infrastructure for the Economy of the Future)」も参照のこと。
【０００６】
【発明が解決しようとする課題】
従って、これらのプログラムの無制限の配布及びインストールが容認される場合（即ち、シェアウェア配布モデルが使用される場合）、コンピュータソフトウェアサプライヤが提供する実行可能なコンピュータプログラムの未許可の使用に対して、彼らに適切な保護を与える努力へのコスト有効度が高い対応の必要性が依然として存在する。商用アプリケーションにとっては、プログラム使用権利としてサプライヤが求める価格を潜在的なユーザに伝達すること、ユーザの支払い又は支払約束を登録すること、及びもし支払いが期日までに受け取られない場合、ユーザの使用権利を拒絶又は無効にすることを含む、少なくとも商取引の基本要素を自動的に実行するためのシステムソリューションを有することが好ましい。更に、サプライヤの利益を強要するシステム資源が、ユーザがシェアウェアプログラムを実行することに決めたホストコンピュータへ断続的にのみアクセスする場合でさえも、このソリューションがこれらの機能を実行することは有利であろう。
【０００７】
【課題を解決するための手段】
本発明では、前述の目的を達成するために、「保護（プロテクトを掛けられる）シェアウェア」の機能性が、デジタル方式で署名（サイン）されたメッセージ伝送プロトコルにより制御される。シェアウェア内の保護コードは、直接又は間接的にシェアウェアサプライヤにより供給される許可メッセージに応じてシェアウェアの機能性を制御する。これらのメッセージは、全部又は一部をシェアウェアサプライヤにより又はシェアウェアサプライヤの代わりにサプライヤの秘密署名鍵を使用することによりデジタル方式で署名される。一方、シェアウェアはサプライヤのこのデジタル署名のための公開照合鍵を含み、それにより許可メッセージを信用して動作し始める前に、保護コードがそのような全ての許可メッセージを認証することを可能にしている。シェアウェアは、その保護コードを含むシェアウェアが予期された状態であることを適時保証するために実行される保全性自己検査ルーチンを含む。通常、これはコードが変更されていないことの確認と同義であるが、コードはある権限を与えられた（即ち、「予期された」）方法によっては、動的に変更されうるであろうと考えられる。
【０００８】
本発明の一態様では、互換性のあるプログラム内蔵コンピュータ上で前記プログラムの少なくとも幾つかの機能的特性を、秘密署名鍵を使用して認可されたパーティによりデジタル方式で署名されたメッセージを前記コンピュータが受信するまで実行することを禁止するステップと、前記プログラムに、前記プログラム内の前記秘密署名鍵のための公開照合鍵へのアクセスを提供するステップと、前記プログラムが予期された状態であることを確認するために前記プログラムの保全性自己検査を実行するステップと、前記コンピュータ上で前記プログラムの前記機能的特性の実行を試験的に認めるために、前記秘密署名鍵を用いてデジタル方式で署名されたメッセージを前記コンピュータに通信するステップと、それを認証するために前記デジタル方式で署名されたメッセージに前記公開照合鍵を当てはめるステップと、前記プログラムが前記予期された状態にあると確認された場合に、前記メッセージの認証に応じて、前記選択されたコンピュータ上で前記機能的特性が実行されることを可能にするステップとを含む実行可能なコンピュータプログラムを未許可の使用から保護するための方法が提供される。
【０００９】
【発明の実施の形態】
以下の詳細な説明が添付図面と共に読まれると、本発明の更なる目的及び長所が明らかになるであろう。本発明は特定の実施の形態及び幾つかの潜在的に興味深い拡張を参照しながら以下に詳細に記載されるが、本発明をそれに限定する意図はないことは理解されなければならない。それどころか、意図としては、付随する請求項により定義される本発明の精神及び範囲内の全ての変更、代案及び同等物を含む。
【００１０】
ここで図面、特に図１を参照すると、本発明のいくぶん精巧な実施の形態が、単純な商用アプリケーションのための適切な実施を例示するために示される。しかし、より基本的なレベルでは、本発明に従って全体又は一部を保護される実行可能なコンピュータプログラム１１が、予め定められた規則に従ってプログラム１１のための実行時環境の現在の状態と対話する埋込み保護コードを含むことに気づくであろう。次にこれらの規則は、保護コードが実行時環境の状態における予め定義され認識可能な変化の関数に従って、予め定められたようにプログラム１１の機能性の変更をもたらすように選択される。
【００１１】
例えば、本発明の比較的簡単な適用においては、許可メッセージがサプライヤにより制御されるコンピュータ等のプログラムサプライヤに信頼されている発信元１３から直接又は間接的に受け取られるまで、保護コードは保護プログラム１１の機能性を単純に制限するかもしれない。実際には、保護プログラム１１と信頼されている発信元１３との間の通信チャネルが安全でない可能性があるため、発信元１３はプログラムサプライヤに代わって発行する各許可メッセージをプログラムサプライヤの秘密署名鍵を用いてデジタル方式で署名することにより適切に認証する。次に、プログラム１１のための保護コードが、受信する全ての一見明らかな許可メッセージの認証を、そのメッセージを信用して動作し始める前に検証することを可能にするために、保護プログラム１１はサプライヤの秘密署名鍵のための公開照合鍵を含む。この公開照合鍵は、保全性自己検査により認証されうる。或いは、プログラム１１はこの公開照合鍵のためのハッシュ値を含むことができ、このハッシュ値から公開照合鍵を認証するための手段を有することができる。更に、他の既知の認証方法が、サプライヤの公開照合鍵を認証するために使用可能である。
【００１２】
理解されるように、保護プログラム１１のための保護コードと実行時環境との間の対話は単純な２進関数である必要はない。その代わりとして、保護コードは、実行時環境の予め特定された種々の状態に応じて、プログラム１１の漸増的に異なる機能面の実行能力（パフォーマンスケイパビリティ）へのアクセスをユーザに与えうる。更に、保護コードは、時間の関数に従って、及び／又は適切にモニターされる他の如何なる変数の関数に従って、プログラム１１のための実行時環境の１つ又は複数の認識可能な状態への応答を変更するようにプログラムされうる。例えば、保護コードは、保護プログラム１１が、実時間又は実行時間に関して固定期間有効であった前の許可に従って使用された後、又は所定日の到来時等の予め定められた条件下で、再許可処理で発信元１３と通信するようにプログラムされうる。
【００１３】
本発明の重要な特徴の一つに従うと、プログラム１１のための保護コードが回避又は無効にされる危険性を減らすための対策が講じられる。このために、保護プログラム１１は有利なことに、もしプログラム１１の保全性が危うくなったことが確認されると、予め定められた対抗策（例えば、保護プログラム１１を機能的に禁止する及び／又は信頼された発信元１３等のプログラムサプライヤ又はサプライヤのエージェントに警告メッセージを送る）を作動させる保全性自己検査メカニズムを含む。例えば、保護プログラム１１は、プログラムコードの現在のバージョンに関する合計を多かれ少なかれランダムに選択された時点で計算し、少しでも矛盾がある場合に適切な対抗策がとられることが可能であるように、算出された其々の合計を予め計算された保全性参照値と比較するためのチェックサムルーチンを含みうる。この保全性自己検査は保護コードのためのフェイルセーフ（危険防止）保護を提供しえないが、自己検査はコード変更攻撃に対して有意義な実利的な障壁を構築するために十分に精巧でありうる。例えば、一連の保全性検査は、最後の保全性検査を除き毎回、この一連の保全性検査の内の次の保全性検査によりモニターされるように実行されることが可能である。理解されるように、このような保全性検査を実行するためのコードは、保護プログラム１１内の事実上どこにでも配布型又は非配布型ルーチンとして埋め込まれることが可能である。
【００１４】
発信元１３による適切に認証された許可メッセージの発行には、少なくとも所定の前提条件への外見上の応諾があることが発信元１３に直接又は間接的に通知されることが予め条件づけられうる。従って、このようなプログラムのサプライヤが、予め定められモニター可能な条件に対する外見上の応諾に従ってプログラム使用権利を与える用意ができていればいつでも、本発明は実行可能なコンピュータプログラムを未許可の使用から保護するために使用されることが可能である。完全な応諾保証を提供することは現実的又は実行可能ではありえないであろうが、プログラムサプライヤの利益を適度に保護する充分な信頼性から成る応諾保証は、通常提供可能である。従って、本発明は、彼らのプログラムの使用に対して代価が支払われることに特に関心が高いプログラムサプライヤによるものを含む、シェアウェアソフトウェア配布モデルへのより強い信頼となる。
【００１５】
例示される実施の形態の商業面に従うと、デジタル方式で署名された許可メッセージの発信元１３は、恐らく他の同様の保護プログラム（図示せず）のサプライヤの利益と共に、保護プログラム１１のサプライヤの利益を表す中央請求書作成エージェンシーとして示される。保護プログラム１１の潜在的なユーザは、プログラム１１の保護された機能へのアクセスを与えられる前に、許可を得るためにこの請求書作成エージェンシー１３と交信することを要求されうる。しかし、このような認可前の処理は、あまりに制限が多いことが認められるであろうし、相当数の潜在的なユーザは請求書作成エージェンシー１３へ都合のよい多かれ少なかれリアルタイムなアクセスをしないであろうことから、逆効果であると証明されさえするであろう。従って、中央請求書作成エージェンシー１３との臨時的な対話のみを必要とする許可処理が好まれる。例えば、請求書作成エージェンシー１３との月１回の接触等の定期的に予定された接触を含む処理は、ユーザにとっての不都合の回避とプログラムサプライヤの利益の保護との間の合理的なバランスを確立しうる。
【００１６】
プログラム１１等の保護プログラムの許可使用を管理する契約条件を確立及び訂正することに関して、プログラムサプライヤにある程度の柔軟性を与えるために、各潜在的なユーザのローカルのコンピューティング環境（即ち、ユーザのホストコンピュータ１２又は以下により詳細に記載されるようにコンピュータ１２とインターフェース（相互接続）される図２に１５で示されるような周辺装置）に、選択されたセットの課金ルーチンを格納するための対策が講じられる。次に、保護プログラム１１は、コンピュータ１２の標準ディスプレイ装置のインターフェース等を介して、潜在的なユーザにプログラム１１の許可使用のためのサプライヤの契約条件を伝達するため、及び適切なメモリにこの申し出に対するユーザの受諾及び／又は拒絶を記録するためのこれらのルーチンの内の予め選択されたものの呼出しを含む。例えば、サプライヤは保護プログラムが３０日間無料で使用可能であると指定し、この最初の無料トライアル期間を越えた使用には全て年間５０ドル又は先払いの認可料を設定しうる。理解されるように、図２に１６で示されるようなクロックは、このような申し出により指定される期間を追跡するために、有すると役立つツールであるが、サプライヤの期待とこのような申し出に対するユーザの受諾は他の方法でも自己定義される。従って、保護プログラム１１のあらゆる使用に関するデータが図２の不揮発性ランダムアクセスメモリ（ＲＡＭ）１７等の改竄抵抗性の不揮発性メモリに記録されるように、課金ルーチンの追加的な呼出しが保護プログラム１１に含まれる。この使用データは次に、適切な通信リンクを介して、選択されたスケジュールで中央請求書作成エージェンシー１３に伝達される。例えば、公衆電話交換回線網を介して請求書作成エージェンシーに使用データを伝達するためには、モデム１８が使用されるであろう。
【００１７】
或いは、課金処理及び請求書作成機能は、ユーザのコンピュータ１２で内的に実行されてもよい。これは、普通のパーソナルコンピュータ又はワークステーションに、承認された課金ルーチンを介さずにはユーザがアクセス不可能な保護されたメモリと共に動作する安全なカーネルを補うことにより実行されることが可能である。このようなソフトウェアの基礎を成す概念に精通しているプログラマは一般に、ソフトウェア内の課金情報に関する限られたタスクを取り扱うための安全な処理を容易に実行できると信じられる。これは当然、本発明を実行することが要求される可能性のあるあらゆる特殊目的用ハードウェアのコスト及び複雑さを減ずる。
【００１８】
しかし、図示されるように、保護プログラム１１の各潜在的なユーザのコンピュータ１２（例えば、パーソナルコンピュータ、コンピュータワークステーション又は他のあらゆるタイプの内部プログラム制御型コンピュータ）は、特殊目的の請求書作成コンピュータ１５にインターフェースされる直列又は並列のデータポートを有する。図２に更に詳細に示されるように、この請求書作成コンピュータ１５は、不揮発性ＲＡＭ１７、読出し専用メモリ（ＲＯＭ）２２及びある追加的な揮発性又は不揮発性ＲＡＭ２３を含む全てのメモリトランザクションを管理するためにプロセッサ（ＣＰＵ）２１を有する。不揮発性ＲＡＭ１７は使用データを格納し、ＲＯＭ２２は課金ルーチンを格納する。従って、この情報及びＲＡＭ２３へ書かれるであろうあらゆる「スクラッチパッド」データの未許可の操作を防ぐために、請求書作成コンピュータ１５は、このような改竄抵抗性を備えるための既知の手法の何れかを使用して、「改竄抵抗」であるように有利に設計される。クロック１６はこの時、この改竄抵抗を利用するために請求書作成コンピュータ１５に含まれることが好ましい。他方、モデム１８は請求書作成コンピュータ１５に内蔵或いは外付けでありうる。内蔵モデムが使用される場合、それは標準の電話インターフェース（図示せず）に適切に接続され、それがアイドル状態であると、電話信号が他の装置（やはり図示せず）へ／からパスすることを可能にするように構成される。実際上は、請求書作成コンピュータ１５を「シングルチップ」コンピュータとして実現するために埋込み式プロセッサテクノロジを使用することが、最も経済的でありえる。
【００１９】
恐らく、請求書作成コンピュータ１５への攻撃は、その秘密署名鍵の漏洩に帰着しうる。しかし、その時でさえ、保護プログラム１１は、そのプログラムが請求書作成エージェンシー１３から請求書作成コンピュータ１５を介して受信する認証証明書上の期限日を、最も最近のデータファイル上の日付けを照合すること等により、その操作環境から推定される日付けと照合することにより、請求書作成コンピュータ１５が認識している日付けの不正な操作からそれ自体を保護できる。これらの認証証明書の使用については、以下に更に詳細に記載される。
【００２０】
図１に戻ると、請求書作成エージェンシー１３と請求書作成コンピュータ１５との間の通信は通常、安全でない通信リンクにより伝達される。従って、それらが交換する情報の保全性を保証するために、請求書作成エージェンシー１３及び請求書作成コンピュータ１５は通常、互いに対して伝送するメッセージに単に其々の秘密署名鍵を用いてデジタル方式で署名するのみでなく、受信時にそれらのメッセージを検証できるように、互いの公開照合鍵に関する事前の知識も有する。
【００２１】
もし望まれるならば、ユーザが負っている現時点の又は累算された使用料金、ユーザのアカウントの支払い状況、及びその他に関するデータについて、ユーザが請求書作成コンピュータ１５に問い合わせることを可能にするためのソフトウェアプログラム（図示せず）が提供されることが可能である。このプログラムは、独立型プログラム又は保護プログラム１１に含まれるユーティリティであってもよい。ユーザは、請求書作成データへの改竄抵抗性の読出し専用アクセス権のみを与えられているので、請求書作成質問プログラムは安全である必要はない。
【００２２】
請求書作成エージェンシー１３と請求書作成コンピュータ１５との間のメッセージの交信の信頼性は、上記のデジタル署名プロトコルにより保証される。しかし、プログラム１１のあらゆる保護されたコードを実行する権限をユーザのコンピュータ１２に与えることを意図する全てのメッセージを認証するための対策が講じられていない限り、保護プログラム１１に対する「送信欺瞞(spoofing)」攻撃が成功する危険性が、依然として存在する。例えば、最善を尽くしてもその動作が予測不可能である請求書作成コンピュータ１５の模倣者（図示せず）により、不正な許可メッセージがコンピュータ１２に伝達されるかもしれない。先に指摘されたように、請求書作成エージェンシー１３のデジタル署名のための公開照合鍵（即ち、サプライヤのデジタル署名）は保護プログラム１１の変更のない全てのコピーに容易に埋め込まれる。しかし、この実施の形態では、保護プログラム１１は、請求書作成コンピュータ１５を介して中央請求書作成エージェンシー１３と間接的に通信する。従って、保護プログラム１１が、ホストコンピュータ１２には請求書作成コンピュータ１５からであるように見える許可メッセージを検証するために請求書作成エージェンシーの公開照合鍵を使用することを可能にするために、請求書作成コンピュータ１５がホストコンピュータ１２へ通信するメッセージの１つ又は複数には、請求書作成エージェンシー１３によりデジタル方式で署名された証明書及び同等なものが含まれる。例えば、図示されるように、この証明書は請求書作成コンピュータの秘密署名鍵のための公開照合鍵を保護プログラム１１に渡すと同時に、限定された期間の公開照合鍵の有効性を証明する。従って、請求書作成コンピュータ１５の請求書作成エージェンシーの証明書が失効するまで、プログラム１１は、請求書作成コンピュータ１５から受信するデジタル方式で署名されたメッセージを認証するためにこの公開照合鍵を使用することが可能である。
【００２３】
一般に、請求書作成エージェンシー１３が、請求書作成コンピュータ１５によりホストコンピュータ１２に伝送される全ての許可メッセージをその都度準備することに積極的に参加することは不必要に能率が悪い。この理由のために、請求書作成エージェンシー１３又はプログラムサプライヤが、使用料金の未払い等の理由でプログラム１１の保護された機能を使用するためのユーザの許可を終了させることを決定しない限り、請求書作成エージェンシー１３は期限満了になっていない証明書は常に有効であることを保証するように、選択され予め定められたスケジュールに従って連続的に期間限定の認証証明書を請求書作成コンピュータ１５に発行しうる。この方法論を適応させるために、請求書作成エージェンシー１３は、最も最近受信した認証証明書を、必要に応じた使用に備えて格納する。その後、許可メッセージがホストコンピュータ１２により受信されると、一見明らかな許可メッセージを信用して、更なる行動を少しでも取る前に、証明書が期限満了になっていないことを確認するために、保護プログラム１１は先ず受信したメッセージの認証証明書の期限日をクロック１６による現在の日付と照合する。保護プログラム１１は有利であることに、プログラム１１が開始される度に、及び／又はプログラム１１の実行中に定期的に、ホストコンピュータ１２が許可メッセージのために請求書作成コンピュータ１５と交信することをもたらすためのコードを含み、このことによりユーザの使用権利が無効又は失効されている場合には、プログラム１１のための保護をある程度タイムリーに再表明することを保証している。
【００２４】
保護プログラム１１から請求書作成コンピュータ１５への通信は、通常安全でない。この理由のために、請求書作成コンピュータ１５は有利であることに、ホストコンピュータ１２からプログラム１１のために受信する全てのメッセージをエコーして、デジタル方式で署名する。エコーされたメッセージは認証されたチャネルを介して（即ち、請求書作成コンピュータ１５によりデジタル方式で署名されるメッセージ内で）ホスト１２へ戻されるので、このことは請求書作成コンピュータ１５がプログラム１１及びコンピュータ１２から受信したと信じるメッセージを、プログラム１１及びコンピュータ１２が自己認証することを可能にする。
【００２５】
ソフトウェア１１の保護に対する「繰返し」攻撃を妨害するために、保護されたソフトウェア１１の管理下で請求書作成コンピュータ１５へ送信される各メッセージに、所謂「その場限り情報(nonce) 」等のランダム情報が有益に含まれる。このその場限り情報は、乱数生成ルーチンの使用を介してソフトウェア１１により適切に供給される。次に、請求書作成コンピュータ１５は、上述のようにプログラム１１に戻すために、このランダム情報をエコーバックする。
【００２６】
例示される実施の形態においては、使用料金は、請求書作成コンピュータ１５により集計される使用データに基づいて、請求書作成エージェンシー１３により計算されるので、クレジット（信用貸し）はユーザに対して延長される。従って、不徳なユーザは、使用データが請求書作成エージェンシー１３に伝達される前に請求書作成コンピュータ１５を破壊することにより、使用料金の支払を避けられうる。この理由のために、請求書作成コンピュータ１５は、信用限度をユーザに強制するようにプログラムされてもよい。
【００２７】
実行に際しては、請求書作成エージェンシー１３は、ユーザのアカウントから支払が受け取られると、デジタル方式で署名されたメッセージで請求書作成コンピュータ１５に通知する。これは、請求書作成コンピュータ１５がユーザのアカウント上の流動するクレジットバランスを維持することを可能にする。その結果として、ユーザのアカウントから支払われるべき如何なる残高も、クロック１６の使用を介して請求書作成コンピュータ１５により経年処理（エージング）を行われることが可能である。従って、ホストコンピュータ１２上で保護プログラム１１を使用する許可のための将来の要求が認められるべきか拒絶されるべきかを決定するために、過失規則が請求書作成コンピュータ１５へプログラムされてもよい。思い出されるように、再許可要求を拒絶することはプログラム１１の保護された機能を実行するホストコンピュータの能力を効果的に終了させ、従ってプログラムサプライヤの権利を強化するために役立つメカニズムである。
【００２８】
望まれるならば、保護プログラム１１は、プログラム１１の保護された機能の使用のための契約条件について潜在的なユーザと交渉するためのコードを含むことができる。例えば、保護プログラム１１は潜在的なユーザにプログラム１１の使用のための機能及び価格により区別された複数のセットの契約条件を次々と提示するためのコードを含んでもよく、それにより潜在的なユーザにこれらの「申し出」の何れかを「受諾する」又は何れも受諾しない自由を与える。又は、潜在的なユーザとのこれらの事前の対話のためのコードは、ユーザが選択可能なプログラム１１の機能から成る個々に価格付けされたメニューを提供するかもしれない。これらの交渉処理を管理するために請求書作成コンピュータ１５により使用される課金ルーチン及び許可プロトコルは、ユーザが選択するであろう異なるオプションを区別するために必要な差別化を提供するように設計されるであろうが、その他の点では、これらの交渉処理は上述の単純な商用アプリケーションと同一の一般原則により管理される。
【００２９】
本発明の実施の一形態が、図３〜５に描写される単純化された論理的なフローチャート（これらの処理により交換されるメッセージは破線で描写される）により例示される。理解されるように、請求書作成エージェンシー１３はシェアウェアサプライヤのための信頼された代理人であり、従って請求書作成エージェンシー１３が複数のシェアウェアサプライヤにサービスしていない限り、シェアウェアサプライヤと同一であると見なされることが可能である。他方、請求書作成コンピュータ１５はシェアウェアサプライヤの改竄抵抗力のある代理人であるので、請求書作成エージェンシー１３の補助的な役割を果たす（即ち、請求書作成エージェンシーが高い権限を有する）。この概括的なフレームワークに一致する他の実施の形態は、容易にそれら自身を連想させるであろう。例えば、ユーザの行動に対する保護されたシェアウェア１１の反応を管理するための権限は、図３に示される実施の形態内でよりも、図１及び図２に示される実施の形態における請求書作成コンピュータ１５に、より著しく委任される。異なる設計者は、この管理制御の集中化、又は様々な方面へ委任することの望ましさに関する異なる意見を有するであろう。請求書作成エージェンシー１３及び請求書作成コンピュータ１５との間に責任の分担に関して大体における同意が存在するならば、同一の請求書作成コンピュータ１５及び同一の請求書作成エージェンシー１３が、同一の一般的なサポートフレームワークを単にそれらの個々の提供向けに拡張することにより、同一の又は異なるサプライヤによる複数のシェアウェア提供をサービスするために使用されることが可能である。
【００３０】
前述のことを考慮すると、本発明は、現存するシェアウェア配布モデルの最も好ましい特性を多く有するが、商用アプリケーションの使用料金を支払われる権利等のプログラムサプライヤの権利をより強力に強化するという利点も有する低コストのソフトウェア配布技法を効果的に提供することが理解されるであろう。
【図面の簡単な説明】
【図１】本発明を商用のシェアウェアに適用するための処理の概略図である。
【図２】図１に示される処理のハードウェアの具体化の概略図である。
【図３】本発明の態様を実行するために（破線により示されるように）請求書作成コンピュータと通信する、保護プログラムのための単純化された論理的なフローチャートである。
【図４】本発明の態様を実行するために（破線により示されるように）保護プログラム及び請求書作成エージェンシーと通信する、請求書作成コンピュータのための単純化された論理的なフローチャートである。
【図５】本発明の態様を実行するために（破線により示されるように）請求書作成コンピュータと通信する、請求書作成エージェンシーのための単純化された論理的なフローチャートである。
【符号の説明】
１１    保護プログラム
１２    ホストコンピュータ
１３    請求書作成エージェンシー
１５    請求書作成コンピュータ
【図１】
0004187844.tif 000002
【図２】
0004187844.tif 000003
【図３】
0004187844.tif 000004
【図４】
0004187844.tif 000005
【図５】
0004187844.tif 000006