(57)【特許請求の範囲】
【請求項１】
プロセッサを有するホスト、ホストへ接続されるセキュアプロセッサ及びリモートサーバを有するシステムにおいてソフトウェアアプリケーションを実行する方法であって、前記方法は：
前記ホストにより、前記ソフトウェアアプリケーションのホストソフトウェアコード及びセキュアプロセッサソフトウェアコードを読み込む段階と；
前記セキュアプロセッサソフトウェアコードを前記セキュアプロセッサへ渡す段階と；
前記セキュアプロセッサにより、前記ソフトウェアアプリケーションのためのアクティベーション列を前記リモートサーバへ要求する段階と；
前記セキュアプロセッサにより、前記ソフトウェアアプリケーションのための前記アクティベーション列を前記リモートサーバから受信する段階と；
前記セキュアプロセッサにより、前記セキュアプロセッサソフトウェアコードを実行可能にするために、前記アクティベーション列を使用する段階と；
前記ホストにより、前記ホストソフトウェアコードを実行する段階と；
前記ホストで実行される前記ホストソフトウェアコードにより、前記セキュアプロセッサ内の前記の実行可能なセキュアプロセッサソフトウェアコードの手続を呼び出す段階と；
前記セキュアプロセッサにより、前記呼び出しへの応答を取得するために、前記の実行可能なセキュアプロセッサソフトウェアコードの手続を実行する段階と；
前記セキュアプロセッサにより、前記呼び出しへの前記応答を返す段階と；
を有する、方法。
【請求項２】
請求項１に記載の方法であって、
前記セキュアプロセッサソフトウェアコードは保護され、かつ、
前記方法は、前記セキュアプロセッサにより、前記の保護されたセキュアプロセッサソフトウェアコードの保護を解除する段階
をさらに有する、方法。
【請求項３】
請求項２に記載の方法であって、
前記セキュアプロセッサソフトウェアコードは暗号化によって保護され、
前記アクティベーション列は復号鍵であり、かつ、
前記セキュアプロセッサは、前記復号鍵を用いた復号により前記の保護されたセキュアプロセッサソフトウェアコードの保護を解除する
ことを特徴とする、方法。
【請求項４】
請求項１に記載の方法であって、
前記セキュアプロセッサにより、前記セキュアプロセッサソフトウェアコードの整合性を検証する段階
をさらに有する、方法。
【請求項５】
請求項１に記載の方法であって、
前記アクティベーション列は、パスワード、前記セキュアプロセッサソフトウェアコードを補完するコードの一部、および前記セキュアプロセッサソフトウェアコードの準備をさせるための前記セキュアプロセッサによって実行されるよう意図されるバイナリコードのグループから選択される
ことを特徴とする、方法。
【請求項６】
請求項１に記載の方法であって、
前記セキュアプロセッサにより、前記アクティベーション列をメモリに保存する段階
をさらに有する、方法。
【請求項７】
請求項１に記載の方法であって、
前記セキュアプロセッサは、複数のソフトウェアアプリケーションを保護するよう構成される
ことを特徴とする、方法。
【請求項８】
請求項１に記載の方法であって：
前記ホストにより、前記ソフトウェアアプリケーションのタイトル識別子を読み込む段階；及び
前記ホストにより、前記セキュアプロセッサへ前記タイトル識別子を渡す段階；
をさらに有し、
前記セキュアプロセッサは、前記要求に前記タイトル識別子を含める
ことを特徴とする、方法。
【請求項９】
ソフトウェアアプリケーションを実行するためのシステムであって、前記システムは、プロセッサを有するホスト及び前記ホストへ接続されるセキュアプロセッサを有し：
前記ホストは：
前記ソフトウェアアプリケーションのホストソフトウェアコード及びセキュアプロセッサソフトウェアコードを読み込み；
前記セキュアプロセッサソフトウェアコードを前記セキュアプロセッサへ渡し；
前記ホストソフトウェアコードを実行し；かつ
前記ホストソフトウェアコードを実行するとき、前記セキュアプロセッサ内の実行可能な前記セキュアプロセッサソフトウェアコードの手続を呼び出す；
よう構成され、  
前記セキュアプロセッサは：
前記セキュアプロセッサソフトウェアコードを受信し；
前記ソフトウェアアプリケーションのアクティベーション列をリモートサーバへ要求し；
前記ソフトウェアアプリケーションの前記アクティベーション列を前記リモートサーバから受信し；
前記セキュアプロセッサソフトウェアコードを実行可能にするために前記アクティベーション列を使用し；
前記呼び出しへの応答を取得するために前記の実行可能なセキュアプロセッサの前記手続を実行し；かつ
前記呼び出しへの前記応答を返す；
よう構成されることを特徴とする、システム。
【請求項１０】
ソフトウェアアプリケーションを実行するためのシステムにおけるセキュアプロセッサであって、前記システムは、プロセッサを有し、かつ、前記セキュアプロセッサへ接続されるホストをさらに有し、前記セキュアプロセッサは：
前記ホストからセキュアプロセッサソフトウェアコードを受信し；
前記ソフトウェアアプリケーションのためのアクティベーション列をリモートサーバへ要求し；
前記ソフトウェアアプリケーションのための前記アクティベーション列をリモートサーバから受信し；
前記セキュアプロセッサソフトウェアコードを実行可能にするために前記アクティベーション列を使用し；
前記ホストから、前記セキュアプロセッサソフトウェアコードの手続のための呼び出しを受信し；
前記呼び出しへの応答を取得するために前記の実行可能なセキュアプロセッサソフトウェアコードの前記手続を実行し；かつ
前記呼び出しへの前記応答を前記ホストへ返す
よう構成される、セキュアプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にコンピュータソフトウェアに関し、特にコンピュータソフトウェアのコピー防止に関する。
【背景技術】
【０００２】
本節は、以下に説明されかつ／又はクレームされる本発明の様々な態様に関係し得る様々な技術の態様を読者に紹介するよう意図されている。この議論は、本発明の様々な態様の理解をより容易にするために、読者に背景の情報を提供することによって、有益であると考えられる。したがって、これらの文章はこの点では読まれるべきであり、先行技術の自認としてではないことが理解されるべきである。
【０００３】
物理的な媒体において流通されるソフトウェアは、しばしば不正コピーにさらされるため、そのようなコピーを妨害し、阻止するため、数多くの技術が必然的に開発されている。これらの技術は：
−登録手続中に電話を通してダイヤルされる、物理的な媒体上に印字されたランダムの数字、又は、サーバによって対象のホストのために作成されているライセンスファイルのような、一意のシリアル番号をそれぞれの顧客に提供すること。この技術の主な特徴は、保護されたソフトウェアは、この値を、番号の中の参照値と比較することである。この比較処理は、当然ながら攻撃者の標的である。
−ソフトウェアからの問合せに応答するドングルと呼ばれる外部デバイスの使用。不正な応答は、ソフトウェアの実行を停止させる。再度、攻撃者はこれらの問合せの発生を迂回しようと試みるであろう。
−ソフトウェアによって測定される所定のセクタへのディスクの回転速度及びアクセス時間のような、いくらかの定義された特徴を有する実際の物理的な媒体の存在を検証すること。二種類の攻撃が、この技術に対して用いられる。第一の種類は、検証に用いられる位置を特定し、前のケースと同様にそれらを迂回する。第二の攻撃は、正確に物理的な媒体をエミュレートするＡｌｃｏｈｏｌ  １２０％及びＶｉｒｔｕａｌ  Ｄａｅｍｏｎのような高機能の仮想ドライブソフトウェアを用いる。
【０００４】
出願人は、ＷＯ  ２００９／０７４６８６において別の解決策を提供している。ソフトウェアの各インスタンス固有の補助的なセキュアプロセッサが用いられ、コードのいくつかの要素はホストのプロセッサよりむしろこのプロセッサ内に保存され、実行される。このセキュアプロセッサなしでは、ソフトウェアは実行できない。セキュアプロセッサは複製することが難しいため、この解決策はカジュアルなハッキングに対して堅牢である。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
この解決策はよく機能したが、固有のソフトウェアプログラムを保護するための用途に当初制限された；すなわち、各タイトルは専用のセキュアプロセッサを必要とする。いくつかの場合において、例えば電子的に提供されるタイトルの場合、複数のタイトルを保護するセキュアプロセッサを有することは有益である。セキュアプロセッサによって実行されるソフトウェアはそのタイトルに依存するため、以下の二つの選択肢がある：
−前もって複数のタイトルのソフトウェアコードをセキュアプロセッサに読み込む。この選択肢は単純であるが、保護するタイトルが前もって知られていなければならず、これらのタイトルが利用可能になっている必要があるという欠点を有する。
−タイトルを実行するとき、セキュアプロセッサの中のソフトウェアコードをリアルタイムに読み込む。セキュアプロセッサでソフトウェアコードを安全に読み出す、Ｊａｖａ（登録商標）  Ｃａｒｄ及びＳｉｍツールキットのような既存の解決策が存在する。コードは、しばしばデジタルダウンロードにより提供される。さらなる詳細については、２００８年にＳｐｒｉｎｇｅｒ−Ｖｅｒｌａｇ  Ｎｅｗ  Ｙｏｒｋ  Ｉｎｃ．から出版されている、Ｋ．ＭａｒｋａｎｔｏｎａｋｉｓとＫ．Ｍａｙｅｓによる、Ｓｍａｒｔ  Ｃａｒｄｓ，  Ｔｏｋｅｎ，  Ｓｅｃｕｒｉｔｙ  ａｎｄ  Ａｐｐｌｉｃａｔｉｏｎｓを参照されたい。しかしながら、これらの解決策はさらに改善の余地がある。
【０００６】
したがって、ユーザが権利を取得したタイトルのみアクセスを許可すると同時に、異なる複数のソフトウェアのタイトルの保護を有効にするシステムへの必要性があることが認められるだろう。また、システムは、タイトルが前もって知られていないときでも動作すべきである。本発明は、そのようなシステムを提供する。
【課題を解決するための手段】
【０００７】
第一の態様において、本発明は、プロセッサを有するホスト、ホストへ接続されるセキュアプロセッサ及びリモートサーバを有するシステムにおいてソフトウェアアプリケーションを実行する方法を対象とする。ホストは、ソフトウェアアプリケーションのホストソフトウェアコード及びセキュアプロセッサソフトウェアコードを読み込み、後者を、リモートサーバへソフトウェアアプリケーションのためのアクティベーション列を要求するセキュアプロセッサへ渡す。セキュアプロセッサは、ソフトウェアアプリケーションのためのアクティベーション列を受信し、セキュアプロセッサソフトウェアコードを実行可能にするために、それを使用する。ホストは、ホストソフトウェアコードを実行し、セキュアプロセッサで実行可能なセキュアプロセッサソフトウェアコードの手続を呼び出す。セキュアプロセッサは、返されるべき呼び出しへの応答を取得するため、実行可能なセキュアプロセッサソフトウェアコードの手続を実行する。
【０００８】
第一の望ましい実施形態においては、セキュアプロセッサソフトウェアコードは保護され、セキュアプロセッサが前記保護されたセキュアプロセッサソフトウェアコードの保護を解除する。保護されたセキュアプロセッサソフトウェアコードは暗号化によって保護されており、アクティベーション列は復号鍵であり、かつ、セキュアプロセッサは前記復号鍵を用いて復号化することによって前記保護されたセキュアプロセッサソフトウェアコードの保護を解除する点で有利である。
【０００９】
第二の望ましい実施形態においては、セキュアプロセッサは、セキュアプロセッサソフトウェアコードの整合性を検証する。
【００１０】
第三の望ましい実施形態においては、アクティベーション列は、パスワード、セキュアプロセッサソフトウェアコードを補完するコードの一部、およびセキュアプロセッサソフトウェアコードの準備をさせるための、セキュアプロセッサによって実行されるよう意図されるバイナリコードのグループから選択される。
【００１１】
第四の望ましい実施形態においては、セキュアプロセッサはメモリ内にアクティベーション列を保存する。
【００１２】
第五の望ましい実施形態においては、セキュアプロセッサは、複数のソフトウェアアプリケーションを保護するように構成される。
【００１３】
第六の望ましい実施形態においては、ホストは、ソフトウェアアプリケーションのためのタイトル識別子を読み込み、要求の中にタイトルＩＤを含んでセキュアプロセッサへタイトル識別子を渡す。
【００１４】
第二の態様において、本発明はソフトウェアアプリケーションを実行するためのシステムを対象とする。システムは、プロセッサを有するホスト及びホストへ接続されるセキュアプロセッサを有する。ホストは、ソフトウェアアプリケーションのホストソフトウェアコード及びセキュアプロセッサソフトウェアコードを読み込み；セキュアプロセッサソフトウェアコードをセキュアプロセッサに渡し；ホストソフトウェアコードを実行し；およびソフトウェアコードを実行するとき、セキュアプロセッサで実行可能なセキュアプロセッサソフトウェアコードの手続を呼び出す；よう構成される。セキュアプロセッサは、セキュアプロセッサソフトウェアコードを受信し；リモートサーバにソフトウェアアプリケーションのためのアクティベーション列を要求し；リモートサーバからソフトウェアアプリケーションのためのアクティベーション列を受信し；セキュアプロセッサソフトウェアコードを実行可能にするためのアクティベーション列を使用し；呼び出しへの応答を取得するために実行可能なセキュアプロセッサソフトウェアコードの手続を実行し；及び呼び出しへの応答を返すよう構成される。
【００１５】
第三の態様において、本発明は、ソフトウェアアプリケーションを実行するためのシステムにおけるセキュアプロセッサを対象とする。システムは、プロセッサを有し、かつ、セキュアプロセッサへ接続されるホストをさらに有する。
【００１６】
セキュアプロセッサは、ホストからセキュアプロセッサソフトウェアコードを受信し；リモートサーバへソフトウェアアプリケーションのためのアクティベーション列を要求し；リモートサーバからソフトウェアアプリケーションのためのアクティベーション列を受信し；セキュアプロセッサソフトウェアコードを実行可能にするためにアクティベーション列をセキュアプロセッサソフトウェアコードに適用し；ホストからセキュアプロセッサソフトウェアコードの手続のために呼び出しを受信し；呼び出しへの応答を取得するために実行可能なセキュアプロセッサソフトウェアコードの手続を実行し；及びホストへ呼び出しへの応答を返すよう構成される。
【００１７】
本発明の望ましい機能は、例を限定しない目的で、添付の図面への参照とともに以下の図面において説明される。
【発明の効果】
【００１８】
本発明は、各ソフトウェアタイトルのために動的に適応する単一のセキュアプロセッサを用いて、複数のソフトウェアタイトルの保護を可能にする。
【図面の簡単な説明】
【００１９】
【図１】本発明のシステムを一般的に表す。
【図２】本発明のシステムの望ましい実施形態を表す。
【図３】本発明の望ましい実施形態によるアプリケーションの物理コピーの生成を表す
【発明を実施するための形態】
【００２０】
ＷＯ  ２００９／０７４６８６において記載されている解決策と同様に、本発明のシステム１００は、ホスト１１０及びセキュアプロセッサ１２０の二つの要素を有する図１において示されている。
【００２１】
セキュアプロセッサ１２０は、例えばアプリケーションのファミリのような、ソフトウェアのタイトルに対応する複数のアプリケーションを保護する能力を有する。それぞれのアプリケーション１３０は、３つの主要部分：ホスト１１０のためのソフトウェアコード１３１（“ホストソフトウェアコード”）、セキュアプロセッサ１２０のためのソフトウェアコード１３２（“セキュアプロセッサソフトウェアコード”）およびアクティベーション列１３３を有し、少なくともアクティベーション列１３３は、ホストソフトウェアコード１３１から分離してホスト１１０へと配送されることができる。セキュアプロセッサソフトウェアコード１３２は、権限を与えられたセキュアプロセッサ１２０のみが実行できるよう、望ましくは機密性および整合性ともに保護される。ホスト１１０はアプリケーション１３０を読み込むとき、ホストソフトウェアコード１３１を保持し、セキュアプロセッサソフトウェアコード１３２をセキュアプロセッサ１２０へ渡す。ホスト１１０は、通常、次にホストソフトウェアコード１３１を実行する。
【００２２】
セキュアプロセッサ１２０は、権限を与えられていない人又はデバイスによってアクセスすることが困難、望ましくは不可能に近いように、目的を持ってその計算が保護されているのと同様、保存するコードの少なくとも一部分はセキュアである。セキュアプロセッサの共通の例は、スマートカードおよび耐タンパプロセッサを含む。
【００２３】
セキュアプロセッサ１２０が存在するとき、受信されたセキュアプロセッサソフトウェアコード１３２を実行するために、セキュアプロセッサ１２０は望ましくは：
−例えば、復号によって、ソフトウェアコードのブロックの順列によって、又は他の所定の命令のためにある命令を置換することによって、ソフトウェアコードの保護を解除する。
−保護が解除されたソフトウェアコードの整合性を確認する。保護されたソフトウェアコードの整合性をチェックすることも必然的に可能であることは注意しなければならない。
−現在のアクティベーション列１３３を待つ。アクティベーション列１３３は、このタイトル（又はタイトルのグループ）について包括的であることができ、又は、既知のアプリケーション１３０と既知のセキュアプロセッサ１２０を組にするよう特別に作成されることができる。アクティベーション列は、リモートサーバからセキュアに配送されることができる。
【００２４】
セキュアプロセッサ１２０は、保護の解除、整合性確認およびホスト１１０との通信のための他のものの中で用いられる常駐ソフトウェアコード（図示されない）を有することに注意しなければならない。
【００２５】
アクティベーション列１３３は、セキュアプロセッサソフトウェアコードを使用可能（すなわち、実行可能）にするために、セキュアプロセッサ１２０によってセキュアプロセッサソフトウェアコード１３２へ適用される。正しいアクティベーション列１３３がないと、セキュアプロセッサソフトウェアコード１３２は、望ましくは実行不可能である。アクティベーション列１３３は、多数の異なる形をなすことができる。例えば、セキュアプロセッサソフトウェアコード１３２（この場合、アクティベーション列はコードの保護を解除するために必要とされる）を復号するための鍵、セキュアプロセッサソフトウェアコード１３２によって動作するために必要とされる‘パスワード’、セキュアプロセッサソフトウェアコード１３２（一つの命令から全てのプログラムの部分に及ぶ）から欠落している望ましくは必要不可欠なソフトウェア、又はセキュアプロセッサソフトウェアコード１３２を準備するためにセキュアプロセッサ１２０によって実行されるべきバイナリコードである。
【００２６】
理想的には、セキュアプロセッサ１２０は、複数のアクティベーション列１３３を保存する能力を有する。この場合、セキュアプロセッサ１２０は、既に有するアクティベーション列１３３を要求する必要がない点で有利である。
【００２７】
図２において示される望ましい実施形態において、ホスト２１０は、インターネット２４０へアクセス可能な一般的なコンピュータである。ホスト２１０は、少なくとも一つのプロセッサ、メモリ、インターネットインターフェース等を有する。セキュアプロセッサ２２０は、アクティベーション列等を保存するメモリ２２１を有するスマートカード又はスマートカード型デバイスであり、望ましくはＵＳＢバス２５０を経てホスト２１０へと接続されている。セキュアプロセッサ２２０は、ホスト２１０を通じてリモートサーバ２６０へ仮想の直接接続２８０を開くことができる。好ましい実施形態の目的は、セキュアプロセッサ２２０が、ソフトウェアプロバイダによって提供されたアプリケーションのファミリを保護することである。
【００２８】
望ましい実施形態において、アプリケーション２３０は、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ又はブルーレイディスクのような物理的な光学記憶媒体２７０に、ホストコード２７１、暗号化されたコード２７２およびタイトルＩＤ２７３として保存されている。アプリケーション２３０は、ホストコード２７１およびセキュアプロセッサコード２７５を有し、セキュアプロセッサコード２７５は順に以下の３つの部分：
−タイトルＩＤ２７３、タイトルに一意（保護されていない）である識別子
−一般コード２７７、すなわち一つ以上のタイトルによって使用可能なコード、および
−タイトル固有コード２７８、すなわちタイトルに固有のコード
を有する。
【００２９】
一般コード２７７およびタイトル固有コード２７８は、暗号化されたコード２７２から生成される。一般コード２７７およびタイトル固有コード２７８は、アプリケーション２３０が実行されるとき、セキュアプロセッサ２２０によって実行されるソフトウェアコードである。
【００３０】
図３は、本発明の望ましい実施形態によるアプリケーションの物理コピーの生成を表す。
−ランダムな１２８ビットの鍵であるタイトル鍵３０５が選択される（３１０）。タイトル鍵３０５およびタイトルＩＤ２７３は、アクティベーション列を形成する。
−タイトル固有コード２７８は、タイトル鍵３０５を用いてＡＥＳで暗号化され（３２０）、保護されたタイトルコード３０８を生成する。
−２０４８ビットのプロバイダ秘密鍵３１５を用いて、一般コード２７７および保護されたタイトルコード３０８に関してＲＳＡの署名が計算され（３３０）、タイトル署名３１８を生成する。全てのセキュアプロセッサ２２０（プロバイダと接続された）は、対応する２０４８ビットのプロバイダ公開鍵を保存する。
−一般コード２７７、保護されたコード３０８およびタイトル署名３１８は、１２８ビットのプロバイダ対称鍵３３５を用いてＡＥＳで暗号化され（３４０）、暗号化されたコード２７２を生成する。全てのセキュアプロセッサ２２０（プロバイダに接続された）は、プロバイダ対称鍵３３５も保存する。
−ホストコード２７１、保護されたコード２７２およびタイトルＩＤ２７３は、次に、たとえば光学記憶媒体２７０のような物理コピーに保存される（３５０）。物理光学記憶媒体２７０を読み込むとき、ホスト２１０は、セキュアプロセッサ２２０に、暗号化されたコード２７２およびタイトルＩＤ２７３を供給する。
【００３１】
セキュアプロセッサ２２０は、次に、以下の処理を行う：
−プロバイダ対称鍵３３５を用いて暗号化されたコード２７２を復号する
−プロバイダ公開鍵を用いてタイトル署名３１８が正しいか検証する
−署名の検証が正しい場合、アクティベーション列メモリ２２１がタイトルＩＤ２７３に対応するアクティベーション列２３３を保存しているかどうか検証する。
−−アクティベーション列メモリ２２１がそのようなアクティベーション列２３３を保存していないとき、セキュアプロセッサ２２０はサーバ２６０へアクティベーション列２３３を要求する。これは、セキュアプロセッサの個別の一意の鍵ペアを用いて、ＳＡＣ（Ｓｅｃｕｒｅ  Ａｕｔｈｅｎｔｉｃａｔｅｄ  Ｃｈａｎｎｅｌ）のようないかなる適切な先行技術を用いて、望ましくは実行される。
−−要求されたアクティベーション列２３３を受信すると、セキュアプロセッサ２２０は、アクティベーション列メモリ２２１にセキュアに保存する。
−アクティベーション列２３３によって提供されたタイトル鍵３０５を用いて、タイトル固有コード２７８を復号化する。
−一般コード２７７及びタイトル固有コード２７８によって形成されるコードを実行する。
【００３２】
ホスト２１０がホストコード２７１を実行するとき、ホスト２１０はセキュアプロセッサ２２０内の一般コード２７７及びタイトル固有コード２７８内の手続を呼び出す。セキュアプロセッサは、要求された手続を実行し、対応する応答を返す。
【００３３】
セキュアプロセッサ２２０がないとき、不正なコード（例えば、別のタイトルに対応するコードのみ）を含むとき、又は正しいアクティベーション列２３３を欠くとき、全く返答が返されないか又は不正であるとの返答が返され、かつ、タイトルの実行は適切に働かないであろう。
【００３４】
当然のことながら、望ましい実施形態は、一つのソフトウェアプロバイダのみをサポートする。当業者は、複数のプロバイダに拡張するアイデアを容易に理解するだろう。
それぞれのプロバイダは、自分のプロバイダ対称鍵並びに自分のプロバイダ公開鍵及び自分のプロバイダ秘密鍵の鍵ペアを有するだろう。アプリケーションは、発行するプロバイダを識別する追加の情報を有するであろう。
【００３５】
当業者は、本発明が、ソフトウェアのファミリ又は複数のソフトウェアプログラムを保護することができることを理解するだろう。例えば、本発明の、それぞれのタイトルを動的に保護するよう構成されているセキュアプロセッサは、既知の編集者又は販売業者によって提供される、いかなるソフトウェアをも保護することができる。このことは、ソフトウェアにつき一つのトークンを用いるよりもユーザフレンドリである。
【００３６】
詳細な説明、（適切な）クレーム及び図面に開示されるそれぞれの機能は、独立して提供されてもよく、いかなる適切な組み合わせにおいて提供されてもよい。ハードウェアで実装されるよう記載されている機能は、ソフトウェアでも実装されてもよく、その逆も同様である。クレーム内に現れる参照番号は、説明の手段として記載されたものであり、クレームの範囲に何ら制限を及ぼすべきではない。  
上記の実施形態に加えて、以下の付記を開示する。
（付記１）
プロセッサを有するホスト、ホストへ接続されるセキュアプロセッサ及びリモートサーバを有するシステムにおいてソフトウェアアプリケーションを実行する方法であって、前記方法は：
前記ホストにより、前記ソフトウェアアプリケーションのホストソフトウェアコード及びセキュアプロセッサソフトウェアコードを読み込む段階と；
前記セキュアプロセッサソフトウェアコードを前記セキュアプロセッサへ渡す段階と；
前記セキュアプロセッサにより、前記ソフトウェアアプリケーションのためのアクティベーション列を前記リモートサーバへ要求する段階と；
前記セキュアプロセッサにより、前記ソフトウェアアプリケーションのための前記アクティベーション列を前記リモートサーバから受信する段階と；
前記セキュアプロセッサにより、前記セキュアプロセッサソフトウェアコードを実行可能にするために、前記アクティベーション列を使用する段階と；
前記ホストにより、前記ホストソフトウェアコードを実行する段階と；
前記ホストで実行される前記ホストソフトウェアコードにより、前記セキュアプロセッサ内の前記の実行可能なセキュアプロセッサソフトウェアコードの手続を呼び出す段階と；
前記セキュアプロセッサにより、前記呼び出しへの応答を取得するために、前記の実行可能なセキュアプロセッサソフトウェアコードの手続を実行する段階と；
前記セキュアプロセッサにより、前記呼び出しへの前記応答を返す段階と；
を有する、方法。
（付記２）
付記１に記載の方法であって、
前記セキュアプロセッサソフトウェアコードは保護され、かつ、
前記方法は、前記セキュアプロセッサにより、前記の保護されたセキュアプロセッサソフトウェアコードの保護を解除する段階
をさらに有する、方法。
（付記３）
付記２に記載の方法であって、
前記セキュアプロセッサソフトウェアコードは暗号化によって保護され、
前記アクティベーション列は復号鍵であり、かつ、
前記セキュアプロセッサは、前記復号鍵を用いた復号により前記の保護されたセキュアプロセッサソフトウェアコードの保護を解除する
ことを特徴とする、方法。
（付記４）
付記１に記載の方法であって、
前記セキュアプロセッサにより、前記セキュアプロセッサソフトウェアコードの整合性を検証する段階
をさらに有する、方法。
（付記５）
付記１に記載の方法であって、
前記アクティベーション列は、パスワード、前記セキュアプロセッサソフトウェアコードを補完するコードの一部、および前記セキュアプロセッサソフトウェアコードの準備をさせるための前記セキュアプロセッサによって実行されるよう意図されるバイナリコードのグループから選択される
ことを特徴とする、方法。
（付記６）
付記１に記載の方法であって、
前記セキュアプロセッサにより、前記アクティベーション列をメモリに保存する段階
をさらに有する、方法。
（付記７）
付記１に記載の方法であって、
前記セキュアプロセッサは、複数のソフトウェアアプリケーションを保護するよう構成される
ことを特徴とする、方法。
（付記８）
付記１に記載の方法であって：
前記ホストにより、前記ソフトウェアアプリケーションのタイトル識別子を読み込む段階；及び
前記ホストにより、前記セキュアプロセッサへ前記タイトル識別子を渡す段階；
をさらに有し、
前記セキュアプロセッサは、前記要求に前記タイトル識別子を含める
ことを特徴とする、方法。
（付記９）
ソフトウェアアプリケーションを実行するためのシステムであって、前記システムは、プロセッサを有するホスト及び前記ホストへ接続されるセキュアプロセッサを有し：
前記ホストは：
前記ソフトウェアアプリケーションのホストソフトウェアコード及びセキュアプロセッサソフトウェアコードを読み込み；
前記セキュアプロセッサソフトウェアコードを前記セキュアプロセッサへ渡し；
前記ホストソフトウェアコードを実行し；かつ
前記ホストソフトウェアコードを実行するとき、前記セキュアプロセッサ内の実行可能な前記セキュアプロセッサソフトウェアコードの手続を呼び出す；
よう構成され、
前記セキュアプロセッサは：
前記セキュアプロセッサソフトウェアコードを受信し；
前記ソフトウェアアプリケーションのアクティベーション列をリモートサーバへ要求し；
前記ソフトウェアアプリケーションの前記アクティベーション列を前記リモートサーバから受信し；
前記セキュアプロセッサソフトウェアコードを実行可能にするために前記アクティベーション列を使用し；
前記呼び出しへの応答を取得するために前記の実行可能なセキュアプロセッサの前記手続を実行し；かつ
前記呼び出しへの前記応答を返す；
よう構成されることを特徴とする、システム。
（付記１０）
ソフトウェアアプリケーションを実行するためのシステムにおけるセキュアプロセッサであって、前記システムは、プロセッサを有し、かつ、前記セキュアプロセッサへ接続されるホストをさらに有し、前記セキュアプロセッサは：
前記ホストからセキュアプロセッサソフトウェアコードを受信し；
前記ソフトウェアアプリケーションのためのアクティベーション列をリモートサーバへ要求し；
前記ソフトウェアアプリケーションのための前記アクティベーション列をリモートサーバから受信し；
前記セキュアプロセッサソフトウェアコードを実行可能にするために前記アクティベーション列を使用し；
前記ホストから、前記セキュアプロセッサソフトウェアコードの手続のための呼び出しを受信し；
前記呼び出しへの応答を取得するために前記の実行可能なセキュアプロセッサソフトウェアコードの前記手続を実行し；かつ
前記呼び出しへの前記応答を前記ホストへ返す
よう構成される、セキュアプロセッサ。
【符号の説明】
【００３７】
１１０  ホスト
１２０  セキュアプロセッサ
１３０  ソフトウェアアプリケーション
１３１  ホストソフトウェアコード
１３２  セキュアプロセッサソフトウェアコード
１３３  アクティベーション列
【図１】
0005847455.tif 000002
【図２】
0005847455.tif 000003
【図３】
0005847455.tif 000004