(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5847455
(24)【登録日】2015年12月4日
(45)【発行日】2016年1月20日
(54)【発明の名称】ソフトウェアアプリケーションを実行するための方法、システム及びセキュアプロセッサ
(51)【国際特許分類】
G06F 21/12 20130101AFI20151224BHJP
【FI】
G06F21/12 330
【請求項の数】10
【外国語出願】
【全頁数】13
(21)【出願番号】特願2011-141759(P2011-141759)
(22)【出願日】2011年6月27日
(65)【公開番号】特開2012-9030(P2012-9030A)
(43)【公開日】2012年1月12日
【審査請求日】2014年6月13日
(31)【優先権主張番号】10305696.6
(32)【優先日】2010年6月28日
(33)【優先権主張国】EP
(73)【特許権者】
【識別番号】501263810
【氏名又は名称】トムソン ライセンシング
【氏名又は名称原語表記】Thomson Licensing
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100091214
【弁理士】
【氏名又は名称】大貫 進介
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(72)【発明者】
【氏名】エリク ディエール
【審査官】
平井 誠
(56)【参考文献】
【文献】
特開2008−263577(JP,A)
【文献】
特表2003−507784(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21
(57)【特許請求の範囲】
【請求項1】
プロセッサを有するホスト、ホストへ接続されるセキュアプロセッサ及びリモートサーバを有するシステムにおいてソフトウェアアプリケーションを実行する方法であって、前記方法は:
前記ホストにより、前記ソフトウェアアプリケーションのホストソフトウェアコード及びセキュアプロセッサソフトウェアコードを読み込む段階と;
前記セキュアプロセッサソフトウェアコードを前記セキュアプロセッサへ渡す段階と;
前記セキュアプロセッサにより、前記ソフトウェアアプリケーションのためのアクティベーション列を前記リモートサーバへ要求する段階と;
前記セキュアプロセッサにより、前記ソフトウェアアプリケーションのための前記アクティベーション列を前記リモートサーバから受信する段階と;
前記セキュアプロセッサにより、前記セキュアプロセッサソフトウェアコードを実行可能にするために、前記アクティベーション列を使用する段階と;
前記ホストにより、前記ホストソフトウェアコードを実行する段階と;
前記ホストで実行される前記ホストソフトウェアコードにより、前記セキュアプロセッサ内の前記の実行可能なセキュアプロセッサソフトウェアコードの手続を呼び出す段階と;
前記セキュアプロセッサにより、前記呼び出しへの応答を取得するために、前記の実行可能なセキュアプロセッサソフトウェアコードの手続を実行する段階と;
前記セキュアプロセッサにより、前記呼び出しへの前記応答を返す段階と;
を有する、方法。
【請求項2】
請求項1に記載の方法であって、
前記セキュアプロセッサソフトウェアコードは保護され、かつ、
前記方法は、前記セキュアプロセッサにより、前記の保護されたセキュアプロセッサソフトウェアコードの保護を解除する段階
をさらに有する、方法。
【請求項3】
請求項2に記載の方法であって、
前記セキュアプロセッサソフトウェアコードは暗号化によって保護され、
前記アクティベーション列は復号鍵であり、かつ、
前記セキュアプロセッサは、前記復号鍵を用いた復号により前記の保護されたセキュアプロセッサソフトウェアコードの保護を解除する
ことを特徴とする、方法。
【請求項4】
請求項1に記載の方法であって、
前記セキュアプロセッサにより、前記セキュアプロセッサソフトウェアコードの整合性を検証する段階
をさらに有する、方法。
【請求項5】
請求項1に記載の方法であって、
前記アクティベーション列は、パスワード、前記セキュアプロセッサソフトウェアコードを補完するコードの一部、および前記セキュアプロセッサソフトウェアコードの準備をさせるための前記セキュアプロセッサによって実行されるよう意図されるバイナリコードのグループから選択される
ことを特徴とする、方法。
【請求項6】
請求項1に記載の方法であって、
前記セキュアプロセッサにより、前記アクティベーション列をメモリに保存する段階
をさらに有する、方法。
【請求項7】
請求項1に記載の方法であって、
前記セキュアプロセッサは、複数のソフトウェアアプリケーションを保護するよう構成される
ことを特徴とする、方法。
【請求項8】
請求項1に記載の方法であって:
前記ホストにより、前記ソフトウェアアプリケーションのタイトル識別子を読み込む段階;及び
前記ホストにより、前記セキュアプロセッサへ前記タイトル識別子を渡す段階;
をさらに有し、
前記セキュアプロセッサは、前記要求に前記タイトル識別子を含める
ことを特徴とする、方法。
【請求項9】
ソフトウェアアプリケーションを実行するためのシステムであって、前記システムは、プロセッサを有するホスト及び前記ホストへ接続されるセキュアプロセッサを有し:
前記ホストは:
前記ソフトウェアアプリケーションのホストソフトウェアコード及びセキュアプロセッサソフトウェアコードを読み込み;
前記セキュアプロセッサソフトウェアコードを前記セキュアプロセッサへ渡し;
前記ホストソフトウェアコードを実行し;かつ
前記ホストソフトウェアコードを実行するとき、前記セキュアプロセッサ内の実行可能な前記セキュアプロセッサソフトウェアコードの手続を呼び出す;
よう構成され、
前記セキュアプロセッサは:
前記セキュアプロセッサソフトウェアコードを受信し;
前記ソフトウェアアプリケーションのアクティベーション列をリモートサーバへ要求し;
前記ソフトウェアアプリケーションの前記アクティベーション列を前記リモートサーバから受信し;
前記セキュアプロセッサソフトウェアコードを実行可能にするために前記アクティベーション列を使用し;
前記呼び出しへの応答を取得するために前記の実行可能なセキュアプロセッサの前記手続を実行し;かつ
前記呼び出しへの前記応答を返す;
よう構成されることを特徴とする、システム。
【請求項10】
ソフトウェアアプリケーションを実行するためのシステムにおけるセキュアプロセッサであって、前記システムは、プロセッサを有し、かつ、前記セキュアプロセッサへ接続されるホストをさらに有し、前記セキュアプロセッサは:
前記ホストからセキュアプロセッサソフトウェアコードを受信し;
前記ソフトウェアアプリケーションのためのアクティベーション列をリモートサーバへ要求し;
前記ソフトウェアアプリケーションのための前記アクティベーション列をリモートサーバから受信し;
前記セキュアプロセッサソフトウェアコードを実行可能にするために前記アクティベーション列を使用し;
前記ホストから、前記セキュアプロセッサソフトウェアコードの手続のための呼び出しを受信し;
前記呼び出しへの応答を取得するために前記の実行可能なセキュアプロセッサソフトウェアコードの前記手続を実行し;かつ
前記呼び出しへの前記応答を前記ホストへ返す
よう構成される、セキュアプロセッサ。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般にコンピュータソフトウェアに関し、特にコンピュータソフトウェアのコピー防止に関する。
【背景技術】
【0002】
本節は、以下に説明されかつ/又はクレームされる本発明の様々な態様に関係し得る様々な技術の態様を読者に紹介するよう意図されている。この議論は、本発明の様々な態様の理解をより容易にするために、読者に背景の情報を提供することによって、有益であると考えられる。したがって、これらの文章はこの点では読まれるべきであり、先行技術の自認としてではないことが理解されるべきである。
【0003】
物理的な媒体において流通されるソフトウェアは、しばしば不正コピーにさらされるため、そのようなコピーを妨害し、阻止するため、数多くの技術が必然的に開発されている。これらの技術は:
−登録手続中に電話を通してダイヤルされる、物理的な媒体上に印字されたランダムの数字、又は、サーバによって対象のホストのために作成されているライセンスファイルのような、一意のシリアル番号をそれぞれの顧客に提供すること。この技術の主な特徴は、保護されたソフトウェアは、この値を、番号の中の参照値と比較することである。この比較処理は、当然ながら攻撃者の標的である。
−ソフトウェアからの問合せに応答するドングルと呼ばれる外部デバイスの使用。不正な応答は、ソフトウェアの実行を停止させる。再度、攻撃者はこれらの問合せの発生を迂回しようと試みるであろう。
−ソフトウェアによって測定される所定のセクタへのディスクの回転速度及びアクセス時間のような、いくらかの定義された特徴を有する実際の物理的な媒体の存在を検証すること。二種類の攻撃が、この技術に対して用いられる。第一の種類は、検証に用いられる位置を特定し、前のケースと同様にそれらを迂回する。第二の攻撃は、正確に物理的な媒体をエミュレートするAlcohol 120%及びVirtual Daemonのような高機能の仮想ドライブソフトウェアを用いる。
【0004】
出願人は、WO 2009/074686において別の解決策を提供している。ソフトウェアの各インスタンス固有の補助的なセキュアプロセッサが用いられ、コードのいくつかの要素はホストのプロセッサよりむしろこのプロセッサ内に保存され、実行される。このセキュアプロセッサなしでは、ソフトウェアは実行できない。セキュアプロセッサは複製することが難しいため、この解決策はカジュアルなハッキングに対して堅牢である。
【発明の概要】
【発明が解決しようとする課題】
【0005】
この解決策はよく機能したが、固有のソフトウェアプログラムを保護するための用途に当初制限された;すなわち、各タイトルは専用のセキュアプロセッサを必要とする。いくつかの場合において、例えば電子的に提供されるタイトルの場合、複数のタイトルを保護するセキュアプロセッサを有することは有益である。セキュアプロセッサによって実行されるソフトウェアはそのタイトルに依存するため、以下の二つの選択肢がある:
−前もって複数のタイトルのソフトウェアコードをセキュアプロセッサに読み込む。この選択肢は単純であるが、保護するタイトルが前もって知られていなければならず、これらのタイトルが利用可能になっている必要があるという欠点を有する。
−タイトルを実行するとき、セキュアプロセッサの中のソフトウェアコードをリアルタイムに読み込む。セキュアプロセッサでソフトウェアコードを安全に読み出す、Java(登録商標) Card及びSimツールキットのような既存の解決策が存在する。コードは、しばしばデジタルダウンロードにより提供される。さらなる詳細については、2008年にSpringer−Verlag New York Inc.から出版されている、K.MarkantonakisとK.Mayesによる、Smart Cards, Token, Security and Applicationsを参照されたい。しかしながら、これらの解決策はさらに改善の余地がある。
【0006】
したがって、ユーザが権利を取得したタイトルのみアクセスを許可すると同時に、異なる複数のソフトウェアのタイトルの保護を有効にするシステムへの必要性があることが認められるだろう。また、システムは、タイトルが前もって知られていないときでも動作すべきである。本発明は、そのようなシステムを提供する。
【課題を解決するための手段】
【0007】
第一の態様において、本発明は、プロセッサを有するホスト、ホストへ接続されるセキュアプロセッサ及びリモートサーバを有するシステムにおいてソフトウェアアプリケーションを実行する方法を対象とする。ホストは、ソフトウェアアプリケーションのホストソフトウェアコード及びセキュアプロセッサソフトウェアコードを読み込み、後者を、リモートサーバへソフトウェアアプリケーションのためのアクティベーション列を要求するセキュアプロセッサへ渡す。セキュアプロセッサは、ソフトウェアアプリケーションのためのアクティベーション列を受信し、セキュアプロセッサソフトウェアコードを実行可能にするために、それを使用する。ホストは、ホストソフトウェアコードを実行し、セキュアプロセッサで実行可能なセキュアプロセッサソフトウェアコードの手続を呼び出す。セキュアプロセッサは、返されるべき呼び出しへの応答を取得するため、実行可能なセキュアプロセッサソフトウェアコードの手続を実行する。
【0008】
第一の望ましい実施形態においては、セキュアプロセッサソフトウェアコードは保護され、セキュアプロセッサが前記保護されたセキュアプロセッサソフトウェアコードの保護を解除する。保護されたセキュアプロセッサソフトウェアコードは暗号化によって保護されており、アクティベーション列は復号鍵であり、かつ、セキュアプロセッサは前記復号鍵を用いて復号化することによって前記保護されたセキュアプロセッサソフトウェアコードの保護を解除する点で有利である。
【0009】
第二の望ましい実施形態においては、セキュアプロセッサは、セキュアプロセッサソフトウェアコードの整合性を検証する。
【0010】
第三の望ましい実施形態においては、アクティベーション列は、パスワード、セキュアプロセッサソフトウェアコードを補完するコードの一部、およびセキュアプロセッサソフトウェアコードの準備をさせるための、セキュアプロセッサによって実行されるよう意図されるバイナリコードのグループから選択される。
【0011】
第四の望ましい実施形態においては、セキュアプロセッサはメモリ内にアクティベーション列を保存する。
【0012】
第五の望ましい実施形態においては、セキュアプロセッサは、複数のソフトウェアアプリケーションを保護するように構成される。
【0013】
第六の望ましい実施形態においては、ホストは、ソフトウェアアプリケーションのためのタイトル識別子を読み込み、要求の中にタイトルIDを含んでセキュアプロセッサへタイトル識別子を渡す。
【0014】
第二の態様において、本発明はソフトウェアアプリケーションを実行するためのシステムを対象とする。システムは、プロセッサを有するホスト及びホストへ接続されるセキュアプロセッサを有する。ホストは、ソフトウェアアプリケーションのホストソフトウェアコード及びセキュアプロセッサソフトウェアコードを読み込み;セキュアプロセッサソフトウェアコードをセキュアプロセッサに渡し;ホストソフトウェアコードを実行し;およびソフトウェアコードを実行するとき、セキュアプロセッサで実行可能なセキュアプロセッサソフトウェアコードの手続を呼び出す;よう構成される。セキュアプロセッサは、セキュアプロセッサソフトウェアコードを受信し;リモートサーバにソフトウェアアプリケーションのためのアクティベーション列を要求し;リモートサーバからソフトウェアアプリケーションのためのアクティベーション列を受信し;セキュアプロセッサソフトウェアコードを実行可能にするためのアクティベーション列を使用し;呼び出しへの応答を取得するために実行可能なセキュアプロセッサソフトウェアコードの手続を実行し;及び呼び出しへの応答を返すよう構成される。
【0015】
第三の態様において、本発明は、ソフトウェアアプリケーションを実行するためのシステムにおけるセキュアプロセッサを対象とする。システムは、プロセッサを有し、かつ、セキュアプロセッサへ接続されるホストをさらに有する。
【0016】
セキュアプロセッサは、ホストからセキュアプロセッサソフトウェアコードを受信し;リモートサーバへソフトウェアアプリケーションのためのアクティベーション列を要求し;リモートサーバからソフトウェアアプリケーションのためのアクティベーション列を受信し;セキュアプロセッサソフトウェアコードを実行可能にするためにアクティベーション列をセキュアプロセッサソフトウェアコードに適用し;ホストからセキュアプロセッサソフトウェアコードの手続のために呼び出しを受信し;呼び出しへの応答を取得するために実行可能なセキュアプロセッサソフトウェアコードの手続を実行し;及びホストへ呼び出しへの応答を返すよう構成される。
【0017】
本発明の望ましい機能は、例を限定しない目的で、添付の図面への参照とともに以下の図面において説明される。
【発明の効果】
【0018】
本発明は、各ソフトウェアタイトルのために動的に適応する単一のセキュアプロセッサを用いて、複数のソフトウェアタイトルの保護を可能にする。
【図面の簡単な説明】
【0019】
【
図2】本発明のシステムの望ましい実施形態を表す。
【
図3】本発明の望ましい実施形態によるアプリケーションの物理コピーの生成を表す
【発明を実施するための形態】
【0020】
WO 2009/074686において記載されている解決策と同様に、本発明のシステム100は、ホスト110及びセキュアプロセッサ120の二つの要素を有する
図1において示されている。
【0021】
セキュアプロセッサ120は、例えばアプリケーションのファミリのような、ソフトウェアのタイトルに対応する複数のアプリケーションを保護する能力を有する。それぞれのアプリケーション130は、3つの主要部分:ホスト110のためのソフトウェアコード131(“ホストソフトウェアコード”)、セキュアプロセッサ120のためのソフトウェアコード132(“セキュアプロセッサソフトウェアコード”)およびアクティベーション列133を有し、少なくともアクティベーション列133は、ホストソフトウェアコード131から分離してホスト110へと配送されることができる。セキュアプロセッサソフトウェアコード132は、権限を与えられたセキュアプロセッサ120のみが実行できるよう、望ましくは機密性および整合性ともに保護される。ホスト110はアプリケーション130を読み込むとき、ホストソフトウェアコード131を保持し、セキュアプロセッサソフトウェアコード132をセキュアプロセッサ120へ渡す。ホスト110は、通常、次にホストソフトウェアコード131を実行する。
【0022】
セキュアプロセッサ120は、権限を与えられていない人又はデバイスによってアクセスすることが困難、望ましくは不可能に近いように、目的を持ってその計算が保護されているのと同様、保存するコードの少なくとも一部分はセキュアである。セキュアプロセッサの共通の例は、スマートカードおよび耐タンパプロセッサを含む。
【0023】
セキュアプロセッサ120が存在するとき、受信されたセキュアプロセッサソフトウェアコード132を実行するために、セキュアプロセッサ120は望ましくは:
−例えば、復号によって、ソフトウェアコードのブロックの順列によって、又は他の所定の命令のためにある命令を置換することによって、ソフトウェアコードの保護を解除する。
−保護が解除されたソフトウェアコードの整合性を確認する。保護されたソフトウェアコードの整合性をチェックすることも必然的に可能であることは注意しなければならない。
−現在のアクティベーション列133を待つ。アクティベーション列133は、このタイトル(又はタイトルのグループ)について包括的であることができ、又は、既知のアプリケーション130と既知のセキュアプロセッサ120を組にするよう特別に作成されることができる。アクティベーション列は、リモートサーバからセキュアに配送されることができる。
【0024】
セキュアプロセッサ120は、保護の解除、整合性確認およびホスト110との通信のための他のものの中で用いられる常駐ソフトウェアコード(図示されない)を有することに注意しなければならない。
【0025】
アクティベーション列133は、セキュアプロセッサソフトウェアコードを使用可能(すなわち、実行可能)にするために、セキュアプロセッサ120によってセキュアプロセッサソフトウェアコード132へ適用される。正しいアクティベーション列133がないと、セキュアプロセッサソフトウェアコード132は、望ましくは実行不可能である。アクティベーション列133は、多数の異なる形をなすことができる。例えば、セキュアプロセッサソフトウェアコード132(この場合、アクティベーション列はコードの保護を解除するために必要とされる)を復号するための鍵、セキュアプロセッサソフトウェアコード132によって動作するために必要とされる‘パスワード’、セキュアプロセッサソフトウェアコード132(一つの命令から全てのプログラムの部分に及ぶ)から欠落している望ましくは必要不可欠なソフトウェア、又はセキュアプロセッサソフトウェアコード132を準備するためにセキュアプロセッサ120によって実行されるべきバイナリコードである。
【0026】
理想的には、セキュアプロセッサ120は、複数のアクティベーション列133を保存する能力を有する。この場合、セキュアプロセッサ120は、既に有するアクティベーション列133を要求する必要がない点で有利である。
【0027】
図2において示される望ましい実施形態において、ホスト210は、インターネット240へアクセス可能な一般的なコンピュータである。ホスト210は、少なくとも一つのプロセッサ、メモリ、インターネットインターフェース等を有する。セキュアプロセッサ220は、アクティベーション列等を保存するメモリ221を有するスマートカード又はスマートカード型デバイスであり、望ましくはUSBバス250を経てホスト210へと接続されている。セキュアプロセッサ220は、ホスト210を通じてリモートサーバ260へ仮想の直接接続280を開くことができる。好ましい実施形態の目的は、セキュアプロセッサ220が、ソフトウェアプロバイダによって提供されたアプリケーションのファミリを保護することである。
【0028】
望ましい実施形態において、アプリケーション230は、CD−ROM、DVD−ROM又はブルーレイディスクのような物理的な光学記憶媒体270に、ホストコード271、暗号化されたコード272およびタイトルID273として保存されている。アプリケーション230は、ホストコード271およびセキュアプロセッサコード275を有し、セキュアプロセッサコード275は順に以下の3つの部分:
−タイトルID273、タイトルに一意(保護されていない)である識別子
−一般コード277、すなわち一つ以上のタイトルによって使用可能なコード、および
−タイトル固有コード278、すなわちタイトルに固有のコード
を有する。
【0029】
一般コード277およびタイトル固有コード278は、暗号化されたコード272から生成される。一般コード277およびタイトル固有コード278は、アプリケーション230が実行されるとき、セキュアプロセッサ220によって実行されるソフトウェアコードである。
【0030】
図3は、本発明の望ましい実施形態によるアプリケーションの物理コピーの生成を表す。
−ランダムな128ビットの鍵であるタイトル鍵305が選択される(310)。タイトル鍵305およびタイトルID273は、アクティベーション列を形成する。
−タイトル固有コード278は、タイトル鍵305を用いてAESで暗号化され(320)、保護されたタイトルコード308を生成する。
−2048ビットのプロバイダ秘密鍵315を用いて、一般コード277および保護されたタイトルコード308に関してRSAの署名が計算され(330)、タイトル署名318を生成する。全てのセキュアプロセッサ220(プロバイダと接続された)は、対応する2048ビットのプロバイダ公開鍵を保存する。
−一般コード277、保護されたコード308およびタイトル署名318は、128ビットのプロバイダ対称鍵335を用いてAESで暗号化され(340)、暗号化されたコード272を生成する。全てのセキュアプロセッサ220(プロバイダに接続された)は、プロバイダ対称鍵335も保存する。
−ホストコード271、保護されたコード272およびタイトルID273は、次に、たとえば光学記憶媒体270のような物理コピーに保存される(350)。物理光学記憶媒体270を読み込むとき、ホスト210は、セキュアプロセッサ220に、暗号化されたコード272およびタイトルID273を供給する。
【0031】
セキュアプロセッサ220は、次に、以下の処理を行う:
−プロバイダ対称鍵335を用いて暗号化されたコード272を復号する
−プロバイダ公開鍵を用いてタイトル署名318が正しいか検証する
−署名の検証が正しい場合、アクティベーション列メモリ221がタイトルID273に対応するアクティベーション列233を保存しているかどうか検証する。
−−アクティベーション列メモリ221がそのようなアクティベーション列233を保存していないとき、セキュアプロセッサ220はサーバ260へアクティベーション列233を要求する。これは、セキュアプロセッサの個別の一意の鍵ペアを用いて、SAC(Secure Authenticated Channel)のようないかなる適切な先行技術を用いて、望ましくは実行される。
−−要求されたアクティベーション列233を受信すると、セキュアプロセッサ220は、アクティベーション列メモリ221にセキュアに保存する。
−アクティベーション列233によって提供されたタイトル鍵305を用いて、タイトル固有コード278を復号化する。
−一般コード277及びタイトル固有コード278によって形成されるコードを実行する。
【0032】
ホスト210がホストコード271を実行するとき、ホスト210はセキュアプロセッサ220内の一般コード277及びタイトル固有コード278内の手続を呼び出す。セキュアプロセッサは、要求された手続を実行し、対応する応答を返す。
【0033】
セキュアプロセッサ220がないとき、不正なコード(例えば、別のタイトルに対応するコードのみ)を含むとき、又は正しいアクティベーション列233を欠くとき、全く返答が返されないか又は不正であるとの返答が返され、かつ、タイトルの実行は適切に働かないであろう。
【0034】
当然のことながら、望ましい実施形態は、一つのソフトウェアプロバイダのみをサポートする。当業者は、複数のプロバイダに拡張するアイデアを容易に理解するだろう。
それぞれのプロバイダは、自分のプロバイダ対称鍵並びに自分のプロバイダ公開鍵及び自分のプロバイダ秘密鍵の鍵ペアを有するだろう。アプリケーションは、発行するプロバイダを識別する追加の情報を有するであろう。
【0035】
当業者は、本発明が、ソフトウェアのファミリ又は複数のソフトウェアプログラムを保護することができることを理解するだろう。例えば、本発明の、それぞれのタイトルを動的に保護するよう構成されているセキュアプロセッサは、既知の編集者又は販売業者によって提供される、いかなるソフトウェアをも保護することができる。このことは、ソフトウェアにつき一つのトークンを用いるよりもユーザフレンドリである。
【0036】
詳細な説明、(適切な)クレーム及び図面に開示されるそれぞれの機能は、独立して提供されてもよく、いかなる適切な組み合わせにおいて提供されてもよい。ハードウェアで実装されるよう記載されている機能は、ソフトウェアでも実装されてもよく、その逆も同様である。クレーム内に現れる参照番号は、説明の手段として記載されたものであり、クレームの範囲に何ら制限を及ぼすべきではない。
上記の実施形態に加えて、以下の付記を開示する。
(付記1)
プロセッサを有するホスト、ホストへ接続されるセキュアプロセッサ及びリモートサーバを有するシステムにおいてソフトウェアアプリケーションを実行する方法であって、前記方法は:
前記ホストにより、前記ソフトウェアアプリケーションのホストソフトウェアコード及びセキュアプロセッサソフトウェアコードを読み込む段階と;
前記セキュアプロセッサソフトウェアコードを前記セキュアプロセッサへ渡す段階と;
前記セキュアプロセッサにより、前記ソフトウェアアプリケーションのためのアクティベーション列を前記リモートサーバへ要求する段階と;
前記セキュアプロセッサにより、前記ソフトウェアアプリケーションのための前記アクティベーション列を前記リモートサーバから受信する段階と;
前記セキュアプロセッサにより、前記セキュアプロセッサソフトウェアコードを実行可能にするために、前記アクティベーション列を使用する段階と;
前記ホストにより、前記ホストソフトウェアコードを実行する段階と;
前記ホストで実行される前記ホストソフトウェアコードにより、前記セキュアプロセッサ内の前記の実行可能なセキュアプロセッサソフトウェアコードの手続を呼び出す段階と;
前記セキュアプロセッサにより、前記呼び出しへの応答を取得するために、前記の実行可能なセキュアプロセッサソフトウェアコードの手続を実行する段階と;
前記セキュアプロセッサにより、前記呼び出しへの前記応答を返す段階と;
を有する、方法。
(付記2)
付記1に記載の方法であって、
前記セキュアプロセッサソフトウェアコードは保護され、かつ、
前記方法は、前記セキュアプロセッサにより、前記の保護されたセキュアプロセッサソフトウェアコードの保護を解除する段階
をさらに有する、方法。
(付記3)
付記2に記載の方法であって、
前記セキュアプロセッサソフトウェアコードは暗号化によって保護され、
前記アクティベーション列は復号鍵であり、かつ、
前記セキュアプロセッサは、前記復号鍵を用いた復号により前記の保護されたセキュアプロセッサソフトウェアコードの保護を解除する
ことを特徴とする、方法。
(付記4)
付記1に記載の方法であって、
前記セキュアプロセッサにより、前記セキュアプロセッサソフトウェアコードの整合性を検証する段階
をさらに有する、方法。
(付記5)
付記1に記載の方法であって、
前記アクティベーション列は、パスワード、前記セキュアプロセッサソフトウェアコードを補完するコードの一部、および前記セキュアプロセッサソフトウェアコードの準備をさせるための前記セキュアプロセッサによって実行されるよう意図されるバイナリコードのグループから選択される
ことを特徴とする、方法。
(付記6)
付記1に記載の方法であって、
前記セキュアプロセッサにより、前記アクティベーション列をメモリに保存する段階
をさらに有する、方法。
(付記7)
付記1に記載の方法であって、
前記セキュアプロセッサは、複数のソフトウェアアプリケーションを保護するよう構成される
ことを特徴とする、方法。
(付記8)
付記1に記載の方法であって:
前記ホストにより、前記ソフトウェアアプリケーションのタイトル識別子を読み込む段階;及び
前記ホストにより、前記セキュアプロセッサへ前記タイトル識別子を渡す段階;
をさらに有し、
前記セキュアプロセッサは、前記要求に前記タイトル識別子を含める
ことを特徴とする、方法。
(付記9)
ソフトウェアアプリケーションを実行するためのシステムであって、前記システムは、プロセッサを有するホスト及び前記ホストへ接続されるセキュアプロセッサを有し:
前記ホストは:
前記ソフトウェアアプリケーションのホストソフトウェアコード及びセキュアプロセッサソフトウェアコードを読み込み;
前記セキュアプロセッサソフトウェアコードを前記セキュアプロセッサへ渡し;
前記ホストソフトウェアコードを実行し;かつ
前記ホストソフトウェアコードを実行するとき、前記セキュアプロセッサ内の実行可能な前記セキュアプロセッサソフトウェアコードの手続を呼び出す;
よう構成され、
前記セキュアプロセッサは:
前記セキュアプロセッサソフトウェアコードを受信し;
前記ソフトウェアアプリケーションのアクティベーション列をリモートサーバへ要求し;
前記ソフトウェアアプリケーションの前記アクティベーション列を前記リモートサーバから受信し;
前記セキュアプロセッサソフトウェアコードを実行可能にするために前記アクティベーション列を使用し;
前記呼び出しへの応答を取得するために前記の実行可能なセキュアプロセッサの前記手続を実行し;かつ
前記呼び出しへの前記応答を返す;
よう構成されることを特徴とする、システム。
(付記10)
ソフトウェアアプリケーションを実行するためのシステムにおけるセキュアプロセッサであって、前記システムは、プロセッサを有し、かつ、前記セキュアプロセッサへ接続されるホストをさらに有し、前記セキュアプロセッサは:
前記ホストからセキュアプロセッサソフトウェアコードを受信し;
前記ソフトウェアアプリケーションのためのアクティベーション列をリモートサーバへ要求し;
前記ソフトウェアアプリケーションのための前記アクティベーション列をリモートサーバから受信し;
前記セキュアプロセッサソフトウェアコードを実行可能にするために前記アクティベーション列を使用し;
前記ホストから、前記セキュアプロセッサソフトウェアコードの手続のための呼び出しを受信し;
前記呼び出しへの応答を取得するために前記の実行可能なセキュアプロセッサソフトウェアコードの前記手続を実行し;かつ
前記呼び出しへの前記応答を前記ホストへ返す
よう構成される、セキュアプロセッサ。
【符号の説明】
【0037】
110 ホスト
120 セキュアプロセッサ
130 ソフトウェアアプリケーション
131 ホストソフトウェアコード
132 セキュアプロセッサソフトウェアコード
133 アクティベーション列