(57)【要約】  セキュアーな分離されたテクノロジーを使用して電子デバイス上での著作権侵害および不正行為を防止するためのシステムおよび方法。いくつかの例においては、電子デバイスが、ハードウェアーベースのセキュアーな分離されたテクノロジーを使用して、アプリケーションの第１の部分をコンピューターメモリーに格納し、アプリケーションの第２の部分をコンピューターメモリーのハードウェアーベースのセキュアーな分離された領域に格納することができ、アプリケーションの第２の部分は、暗号化された部分およびプレーンテキスト部分を含む。電子デバイスは、ハードウェアーベースのセキュアーな分離されたテクノロジーをさらに使用して、サーバーとの間でセキュアーな暗号化された通信チャネルを確立し、セキュアーな暗号化された通信チャネルを介してサーバーへデーターを送信し、セキュアーな暗号化された通信チャネルを介して復号キーをサーバーから受信し、復号キーを使用して、暗号化された部分を復号することができる。次いで電子デバイスは、アプリケーションの第１の部分およびアプリケーションの第２の部分を使用してアプリケーションを実行することができる。
2019517080.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションの第１の部分を電子デバイスのコンピューターメモリーに格納するステップと、
前記アプリケーションの第２の部分を前記電子デバイスの前記コンピューターメモリーのセキュアーな分離された領域に格納するステップであって、前記アプリケーションの前記第２の部分が、暗号化された部分およびプレーンテキスト部分を含む、ステップと、
前記プレーンテキスト部分を使用して、サーバーとの間でセキュアーな暗号化された通信チャネルを確立するステップと、
前記セキュアーな暗号化された通信チャネルを使用して、データーを前記サーバーへ送信するステップと、
前記データーを送信するステップに少なくとも部分的に基づいて、前記セキュアーな暗号化された通信チャネルを使用して、復号キーを前記サーバーから受信するステップと、
前記復号キーを使用して、前記暗号化された部分を復号するステップと
を含む方法。
【請求項２】
前記電子デバイスが、信頼されている中央処理装置（ＣＰＵ）チップおよび前記セキュアーな分離された領域を含むということを前記サーバーが確認することを可能にするアテステーション情報を前記データーが含む、請求項１に記載の方法。
【請求項３】
前記アテステーション情報が、前記ＣＰＵチップに関する識別子、前記電子デバイス上のコードが実際に、ハードウェアーベースのセキュアーな分離テクノロジーをサポートするデバイス上で稼働しているという証明、または前記セキュアーな分離された領域のダイジェストのうちの少なくとも１つを含む、請求項２に記載の方法。
【請求項４】
前記アプリケーションの前記第１の部分、前記第２の部分の前記プレーンテキスト部分、および前記第２の部分の前記復号された部分を使用して前記アプリケーションを実行するステップをさらに含む、請求項１から３のいずれかに記載の方法。
【請求項５】
前記セキュアーな分離された領域を使用して、シーリングキーを生成するステップと、
前記シーリングキーを使用して、前記復号キーを暗号化するステップと
をさらに含む、請求項１から４のいずれかに記載の方法。
【請求項６】
前記暗号化された復号キーを不揮発性メモリーに格納するステップをさらに含む、請求項５に記載の方法。
【請求項７】
前記プレーンテキスト部分が、前記復号キーを前記サーバーから取り出すためのライセンシングコードを含む、請求項１から６のいずれかに記載の方法。
【請求項８】
少なくとも１つのプロセッサーと、
メモリーと
を含む電子デバイスであって、前記メモリーが、
アプリケーションの第１の部分と、
前記メモリーのセキュアーな分離された領域内の前記アプリケーションの第２の部分とを格納し、前記第２の部分が、前記アプリケーションを抽出から保護するための暗号化された部分、およびサーバーとの間で通信チャネルを開くためのプレーンテキスト部分を含み、
前記プレーンテキスト部分が、コンピューター可読命令を含み、前記コンピューター可読命令が、前記少なくとも１つのプロセッサーによって実行されたときに、
前記サーバーとの間で前記通信チャネルを確立することと、
前記アプリケーションに関連付けられた復号キーを前記サーバーから前記通信チャネルを介して受信することと、
前記復号キーを使用して、前記暗号化された部分を復号することとを前記少なくとも１つのプロセッサーに行わせる、電子デバイス。
【請求項９】
前記セキュアーな分離された領域が、コンピューター可読命令を含み、前記コンピューター可読命令が、前記少なくとも１つのプロセッサーによって実行されたときに、前記通信チャネルを介して前記サーバーへデーターを送信することを前記少なくとも１つのプロセッサーに行わせ、前記データーが、前記電子デバイスがセキュアーな分離されたテクノロジーを含むということを前記サーバーが確認することを可能にするアテステーション情報を含む、請求項８に記載のデバイス。
【請求項１０】
前記アテステーション情報が、前記プロセッサーに関する識別子、前記電子デバイス上のコードが実際に、ハードウェアーベースのセキュアーな分離テクノロジーをサポートするデバイス上で稼働しているという証明、および前記セキュアーな分離された領域のダイジェストのうちの少なくとも１つを含む、請求項９に記載のデバイス。
【請求項１１】
前記コンピューター可読命令がさらに、前記少なくとも１つのプロセッサーによって実行されたときに、前記セキュアーな分離された領域によって生成されたシーリングキーを使用して前記復号キーを暗号化することを前記少なくとも１つのプロセッサーに行わせる、請求項８から１０のいずれかに記載のデバイス。
【請求項１２】
前記コンピューター可読命令がさらに、前記少なくとも１つのプロセッサーによって実行されたときに、前記暗号化された復号キーを不揮発性メモリーに格納することを前記少なくとも１つのプロセスに行わせる、請求項１１に記載のデバイス。
【請求項１３】
１つまたは複数のプロセッサーと、
コンピューター実行可能命令を格納するメモリーと
を含むシステムであって、前記コンピューター実行可能命令が、前記１つまたは複数のプロセッサーによって実行されたときに、
電子デバイスからデーターを受信することであって、前記データーが、少なくとも、前記電子デバイスの中央処理装置（ＣＰＵ）チップの識別子、前記電子デバイス上のコードが実際に、ハードウェアーベースのセキュアーな分離テクノロジーをサポートするデバイス上で稼働しているという証明、およびセキュアーな分離された領域のダイジェストを含む、受信することと、
前記電子デバイス上の前記コードが実際に、ハードウェアーベースのセキュアーな分離テクノロジーをサポートするデバイス上で稼働しているという前記証明を使用して、前記電子デバイスがセキュアーな分離されたテクノロジーを稼働させるように構成されているということを決定することと、
前記セキュアーな分離された領域の前記ダイジェストを使用して、前記電子デバイスの前記セキュアーな分離された領域がアプリケーションの少なくとも一部分を含むということを決定することと、
復号キーを前記電子デバイスへ送信することとを前記１つまたは複数のプロセッサーに行わせる、システム。
【請求項１４】
前記コンピューター可読命令がさらに、前記１つまたは複数のプロセッサーによって実行されたときに、前記アプリケーションを実行するためのライセンスを前記電子デバイスが有するということを決定することを前記１つまたは複数のプロセッサーに行わせる、請求項１３に記載のシステム。
【請求項１５】
前記セキュアーな分離された領域の前記ダイジェストが、前記アプリケーションのプレーンテキスト部分および前記アプリケーションの暗号化された部分を含む、請求項１３または請求項１４に記載のシステム。
【発明の詳細な説明】
【背景技術】
【０００１】
[0001]電子デバイスを設計する際に、開発者たちは、悪意あるユーザーからアプリケーションを保護する電子デバイス用の著作権侵害対策（たとえば、ソフトウェアー技術）を作成しようと試みる。しかしながら、たとえ現在の著作権侵害対策が設けられても、悪意あるユーザーは依然として、アプリケーションの著作権を侵害するために電子デバイスを操作することができる場合が多い。従来では、電子デバイスの悪意あるユーザーは、その電子デバイスのオペレーティングシステム、ハイパーバイザー、および／またはファームウェアーを修正するであろう。そして悪意あるユーザーは、修正された電子デバイスを使用して、そのユーザーがその電子デバイス上のアプリケーションを悪意を持って実行するために必要とするそのアプリケーション用のコードを抽出することができる。
【発明の概要】
【課題を解決するための手段】
【０００２】
[0002]本開示は、セキュアーな分離されたテクノロジーを使用して電子デバイス上での著作権侵害および不正行為を防止するための技術について記述する。いくつかの例においては、電子デバイスは、セキュアーな分離されたテクノロジーを含み、このセキュアーな分離されたテクノロジーは、電子デバイスのプロセッサーがセキュアーモードで動作すること、ならびにデーターおよび／またはコードをコンピューターメモリーのハードウェアーベースのセキュアーな分離された領域に格納することを可能にする。たとえば、電子デバイスは、アプリケーションの第１の部分をコンピューターメモリーに格納し、アプリケーションの第２の部分をコンピューターメモリーのハードウェアーベースのセキュアーな分離された領域に格納することができる。アプリケーションの第２の部分は、プレーンテキスト部分および暗号化された部分を含むことができる。いくつかの例においては、暗号化された部分は、アプリケーションの使用にとって重要であるアプリケーション用のコードを含む。暗号化された部分が正確に復号されて実行されなければ、アプリケーションは、正しく機能することを制限され、ひいては、著作権を侵害することを制限される。
【０００３】
[0003]アプリケーションを実行するために、電子デバイスは、アプリケーションのプレーンテキスト部分を利用して、ネットワークを介してサーバーとの間でセキュアーな暗号化された通信チャネルを確立することができる。電子デバイスは、アプリケーションのプレーンテキスト部分をさらに利用して、セキュアーな暗号化された通信チャネルを介してサーバーへデーターを送信し、復号キーをサーバーから受信することができる。いくつかの例においては、データーは、電子デバイス上の中央処理装置（ＣＰＵ）チップに関する識別子、電子デバイス上のコードが実際に、ハードウェアーベースのセキュアーな分離テクノロジーをサポートするデバイス上で稼働しているという証明、および／またはセキュアーな分離された領域のダイジェストなどのアテステーション情報を含む。そして電子デバイスは、復号キーを使用して、ハードウェアーベースのセキュアーな分離された領域内のアプリケーションの暗号化された部分を復号することができる。復号した後に、電子デバイスは、アプリケーションの第１の部分およびアプリケーションの第２の部分を使用してアプリケーションを実行することができる。
【０００４】
[0004]プロセッサーがセキュアーモードで稼働すること、およびコンピューターメモリーのハードウェアーベースのセキュアーな分離された領域におけるコードを実行することを可能にするセキュアーな分離されたテクノロジーを使用することによって、電子デバイスのオペレーティングシステム、ハイパーバイザー、および／またはファームウェアーが、コンピューターメモリーのハードウェアーベースのセキュアーな分離された領域内のデーターにアクセスすることを制限される。したがって、たとえユーザーが電子デバイスを操作しても、ハードウェアーベースのセキュアーな分離された領域内のアプリケーションの部分（たとえば、アプリケーションの重要なコード）は、依然として抽出からセキュアーである。加えて、ユーザーは、操作された電子デバイスを使用して、ハードウェアーベースのセキュアーな分離された領域内にあるアプリケーションの部分を修正するのを制限される。したがって、電子デバイスのユーザーは、電子デバイスがアプリケーションを実行している間にアプリケーションの著作権を侵害することおよび／または不正行為を制限される。
この「発明の概要」は、コンセプトのうちの選択されたものを、簡略化された形式で紹介するために提供されており、それらのコンセプトは、以降で「発明を実施するための形態」においてさらに記述される。この「発明の概要」は、特許請求される主題の鍵となる特徴または必要不可欠な特徴を識別することを意図されているものではなく、特許請求される主題の範囲を決定する際の補助として使用されることを意図されているものでもない。「技術」という用語は、たとえば、上述のコンテキストによって、および本明細書の全体を通じて認められるシステム、方法、コンピューター可読命令、モジュール、アルゴリズム、ハードウェアーロジック、および／またはオペレーションを指すことが可能である。
【０００５】
[0005]添付の図を参照しながら、詳細な説明が記述される。図においては、参照番号の最も左の数字は、その参照番号が最初に現れる図を識別する。別々の図における同じ参照番号は、同様のまたは同じアイテムを示す。
【図面の簡単な説明】
【０００６】
【図１】[0006]ハードウェアーベースのセキュアーな分離されたテクノロジーを使用して電子デバイス上での著作権侵害および不正行為を防止するための技術が動作することができる例示的な環境を示すブロック図である。
【図２】[0007]ハードウェアーベースのセキュアーな分離されたテクノロジーを利用して著作権侵害および不正行為を防止するように構成された例示的なクライアントコンピューティングデバイスを示すブロック図である。
【図３】[0008]ハードウェアーベースのセキュアーな分離されたテクノロジーを利用する電子デバイス上での著作権侵害および不正行為を防止することに関連付けられた技術を実行するように構成された例示的なコンピューティングデバイスを示すブロック図である。
【図４】[0009]電子デバイスがハードウェアーベースのセキュアーな分離されたテクノロジーを利用してアプリケーションの著作権侵害を防止する例示的な方法の流れ図である。
【図５】[0010]電子デバイスがコンピューターメモリーのハードウェアーベースのセキュアーな分離された領域内のアプリケーションの一部分を実行する例示的な方法の流れ図である。
【図６】[0011]ハードウェアーベースのセキュアーな分離されたテクノロジーを利用して復号キーを保護する例示的な方法の流れ図である。
【図７】[0012]電子デバイスがアプリケーションに関連付けられた浮動権利（floating right）を利用する例示的な方法の流れ図である。
【図８】[0013]サーバーが電子デバイス上でのハードウェアーベースのセキュアーな分離されたテクノロジーを確認する第１の例示的な方法の流れ図である。
【図９】[0014]サーバーが電子デバイス上でのハードウェアーベースのセキュアーな分離されたテクノロジーを確認する第２の例示的な方法の流れ図である。
【図１０】[0015]ハードウェアーベースのセキュアーな分離されたテクノロジーを利用して不正行為を防止する第１の例示的な方法の流れ図である。
【図１１】[0016]ハードウェアーベースのセキュアーな分離されたテクノロジーを利用して不正行為を防止する第２の例示的な方法の流れ図である。
【発明を実施するための形態】
【０００７】
概観
[0017]本明細書において記述される例は、セキュアーな分離されたテクノロジーを使用して電子デバイス上での著作権侵害および不正行為を防止するための技術を提供する。いくつかの例においては、電子デバイスが、その電子デバイス上のデーターおよび／またはコードを保護するハードウェアーベースのセキュアーな分離されたテクノロジーを含む。セキュアーな分離されたテクノロジーは、電子デバイスのプロセッサーがセキュアーモードで動作することを可能にすることによって、ならびにデーターおよび／またはコードをコンピューターメモリーのハードウェアーベースのセキュアーな分離された領域に格納することによってデーターおよび／またはコードを保護する。いくつかの例においては、電子デバイスのオペレーティングシステム、ハイパーバイザー、および／またはファームウェアーが、コンピューターメモリーのセキュアーな分離された領域内のデーターおよび／またはコードにアクセスすることを制限される。したがって、たとえユーザーが電子デバイス（たとえば、電子デバイスのオペレーティングシステム、ハイパーバイザー、および／またはファームウェアー）を操作しても、ハードウェアーベースのセキュアーな分離された領域内のデーターおよび／またはコードは、依然として抽出および操作からセキュアーである。ハードウェアーベースのセキュアーな分離テクノロジーの一例が、ＩｎｔｅｌのＳＧＸ（Ｓｏｆｔｗａｒｅ  Ｇｕａｒｄ  Ｅｘｔｅｎｓｉｏｎｓ）であるが、このようなテクノロジーは、その他のハードウェアー製造業者から生じることも可能である。セキュアーな分離テクノロジーの機能性は、下記を含む。
【０００８】
・  ハードウェアーベースのセキュアーな分離された領域内のコードおよびデーターを、ＯＳスーパーバイザーおよびハイパーバイザーを含むコンピューターシステムの残りの部分から秘密にしておく能力。
【０００９】
・  ハードウェアーベースのセキュアーな分離された領域内からサーバーに対して、その領域が実際に、ハードウェアーベースのセキュアーな分離領域を伴うマシン上で稼働しているということを証明する能力。
【００１０】
・  ハードウェアーベースのセキュアーな分離された領域内からサーバーに対して、現在実行しているハードウェアーベースのセキュアーな分離領域の暗号ダイジェスト／測定を証明する能力。
【００１１】
・  ハードウェアーベースのセキュアーな分離された領域内からサーバーに対して、ハードウェアーベースのセキュアーな分離テクノロジーを伴うその他の電子デバイスからこの電子デバイスを一意に識別する一意のＩＤを証明する能力。
【００１２】
・  まったく同じハードウェアーベースのセキュアーな分離された領域が、まったく同じハードウェアー上で再び実行している場合にのみ再生成されることが可能であるシーリングキーとして使用されることが可能であるキーをハードウェアーベースのセキュアーな分離された領域内で生成する能力。
【００１３】
[0018]いくつかの例においては、電子デバイスは、アプリケーションの第１の部分（たとえば、コードの第１の部分）をコンピューターメモリーに、およびアプリケーションの第２の部分（たとえば、コードの第２の部分）をコンピューターメモリーのハードウェアーベースのセキュアーな分離された領域に格納する。アプリケーションの第２の部分は、プレーンテキスト部分および暗号化された部分を含むことができる。いくつかの例においては、プレーンテキスト部分は、電子デバイスが復号キーをサーバーから取り出すために使用するコードを含むことができる。たとえば、プレーンテキスト部分は、アプリケーション用のライセンシングコードを含むことができる。いくつかの例においては、暗号化された部分は、アプリケーションが適切に実行する上で重要であるコードを含むことができる。たとえば、ゲームの暗号化された部分は、アプリケーション用のＡＩヒューリスティック、３Ｄ物理計算、カスタムグラフィックスプロセッシングユニットコマンド生成などのためのコードを含むことができる。
【００１４】
[0019]いくつかの例においては、アプリケーションを実行するために、電子デバイスは、プレーンテキスト部分を使用して、サーバー（たとえば、ライセンシングサーバー）との間でセキュアーな暗号化された通信チャネルを確立する。電子デバイスは、プレーンテキスト部分をさらに使用して、セキュアーな暗号化された通信チャネルを介してサーバーへデーターを送信することができる。たとえば、電子デバイスは、特定のデーター（たとえば、アテステーション情報）をサーバーへ送信することによって、サーバーに対して証明を行うことができる。いくつかの例においては、データーは、電子デバイスの中央処理装置（ＣＰＵ）チップの識別子（たとえば、ＣＰＵチップ番号）、電子デバイス上のコードが実際に、ハードウェアーベースのセキュアーな分離テクノロジーをサポートするデバイス上で稼働しているという証明、および／またはハードウェアーベースのセキュアーな分離された領域内のコードおよびデーターのダイジェストを含むことができる。そのような例においては、セキュアーな分離された領域のダイジェストは、プレーンテキスト部分および暗号化された部分の両方を含むことができる。データーを使用して、サーバーは、ハードウェアーベースのセキュアーな分離された領域が、ハードウェアーベースのセキュアーな分離されたテクノロジーをサポートする電子デバイス上で稼働しているということを確認することができる。加えて、いくつかの例においては、サーバーはさらに、支払記録データーベースを調べることによって、電子デバイスおよび／または電子デバイスのユーザーがアプリケーション用のライセンスを有するかどうかを確認することができる。アプリケーションが適切にライセンス供与されている場合には、サーバーは、セキュアーな暗号化された通信チャネルを介して復号キーを電子デバイスへ送信することができる。
【００１５】
[0020]いくつかの例においては、電子デバイスは、復号キーを使用して、ハードウェアーベースのセキュアーな分離された領域内の暗号化された部分を復号する。復号の後に、電子デバイスは、第１の部分、プレーンテキスト部分、および復号された部分を使用して、アプリケーションを実行することができる。たとえば、電子デバイスは、ＣＰＵを使用して、コンピューターメモリーに格納されているアプリケーションの第１の部分を実行することができる。電子デバイスは、ＣＰＵをさらに使用して、コンピューターメモリーのハードウェアーベースのセキュアーな分離された領域内に格納されているプレーンテキスト部分および復号された部分を実行することができる。
【００１６】
[0021]いくつかの例においては、電子デバイスがアプリケーションを実行することを終えた場合には、ハードウェアーベースのセキュアーな分離された領域は、プレーンテキスト部分が復号キーを暗号化するために使用することができるシーリングキーを生成することができる。電子デバイスは、暗号化された復号キーを不揮発性のコンピューター可読ストレージメディアに格納することができる。これは、リブートの後に復号キーが復元されることを可能にし、ひいては、復号キーがはじめに取得された後にアプリケーションがオフラインで（ライセンシングサーバーへのアクセスを伴わずに）使用されることを可能にする。いくつかの例においては、まったく同じシーリングキーは、まったく同じ電子デバイス上で稼働しているまったく同じハードウェアーベースのセキュアーな分離された領域によってのみ再び復元されることが可能であり、ひいてはその他の電子デバイス上での著作権侵害を防止する。
【００１７】
[0022]追加として、または代替として、開発者は、ユーザーが不正行為を行うのを防止するハードウェアーベースのセキュアーな分離された領域にコードを格納することを電子デバイスに行わせることができる。たとえば、いくつかの例においては、アプリケーションの暗号化された部分は、アプリケーションのその他の部分（たとえば、アプリケーションの第１の部分）が適切に稼働していて、悪意を持って修正されていないということを確かめるコードを含むことができる。たとえば、暗号化された部分は、アプリケーションの第１の部分が改ざんされていないということを定期的にチェックして確かめるコードを含むことができる。追加として、または代替として、いくつかの例においては、暗号化された部分は、ユーザーが不正を行うために操作するであろうデーターを含むことができる。たとえば、それぞれのプレーヤーが健康ステータスを含むビデオゲームをアプリケーションが含む場合には、暗号化された部分は、プレーヤーの健康ステータスを追跡把握する可変データーを含むことができる。この健康ステータスデーターは、ハードウェアーベースのセキュアーな分離された領域に格納されているので、ゲームにおいて不正を行うことを意図しているユーザーによって修正されることを制限される。
【００１８】
[0023]さまざまな例、シナリオ、および態様が、図１〜図１０を参照しながらさらに記述される。
例示的な環境
[0024]図１は、ハードウェアーベースのセキュアーな分離されたテクノロジーを使用して電子デバイス上での著作権侵害および不正行為を防止するための技術が動作することができる例示的な環境１００を示す。いくつかの例においては、環境１００のさまざまなデバイスおよび／またはコンポーネントは、分散コンピューティングリソース１０２を含み、これらの分散コンピューティングリソース１０２は、１つまたは複数のネットワーク１０４を介して互いと、および外部デバイスと通信することができる。
【００１９】
[0025]ネットワーク１０４は、たとえば、インターネットなどのパブリックネットワーク、組織のイントラネットおよび／もしくは個人のイントラネットなどのプライベートネットワーク、またはプライベートネットワークおよびパブリックネットワークの何らかの組合せを含むことができる。ネットワーク１０４は、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、衛星ネットワーク、ケーブルネットワーク、Ｗｉ−Ｆｉネットワーク、ＷｉＭＡＸネットワーク、モバイル通信ネットワーク（たとえば、３Ｇ、４Ｇなど）、またはそれらの任意の組合せを含むがそれらには限定されない任意のタイプの有線ネットワークおよび／またはワイヤレスネットワークを含むこともできる。ネットワーク１０４は、パケットベースのプロトコルおよび／またはデーターグラムベースのプロトコル、たとえば、インターネットプロトコル（ＩＰ）、トランスミッション制御プロトコル（ＴＣＰ）、ユーザーデーターグラムプロトコル（ＵＤＰ）、またはその他のタイプのプロトコルを含む通信プロトコルを利用することができる。その上、ネットワーク１０４は、ネットワーク通信を容易にする、および／またはネットワーク用のハードウェアー基盤を形成する複数のデバイス、たとえば、スイッチ、ルーター、ゲートウェイ、アクセスポイント、ファイアーウォール、基地局、リピーター、バックボーンデバイスなどを含むこともできる。
【００２０】
[0026]いくつかの例においては、ネットワーク１０４はさらに、ワイヤレスアクセスポイント（ＷＡＰ）など、ワイヤレスネットワークへの接続を可能にするデバイスを含むことができる。例は、米国電気電子技術者協会（ＩＥＥＥ）８０２．１１標準（たとえば、８０２．１１ｇ、８０２．１１ｎなど）、およびその他の標準をサポートするＷＡＰを含む、さまざまな電磁周波数（たとえば、無線周波数）を介してデーターを送信および受信するＷＡＰを通じた接続性をサポートする。
【００２１】
[0027]さまざまな例において、分散コンピューティングリソース１０２は、デバイス１０６（１）〜１０６（Ｍ）を含む。例は、リソースを共有するために、負荷のバランスを取るために、パフォーマンスを高めるために、フェイルオーバーサポートもしくは冗長性を提供するために、またはその他の目的のためにクラスタまたはその他のグループ化された構成において動作する１つまたは複数のコンピューティングデバイスをデバイス１０６が含むことができるシナリオをサポートする。デバイス１０６は、さまざまなカテゴリーまたはクラスのデバイス、たとえば、従来のサーバータイプのデバイス、デスクトップコンピュータータイプのデバイス、モバイルタイプのデバイス、専用タイプのデバイス、組み込まれたタイプのデバイス、および／またはウェアラブルタイプのデバイスに属することが可能である。したがってデバイス１０６は、単一のタイプのデバイスとして示されているが、多様なデバイスタイプを含むことができ、特定のタイプのデバイスには限定されない。デバイス１０６は、デスクトップコンピューター、サーバーコンピューター、ウェブサーバーコンピューター、パーソナルコンピューター、モバイルコンピューター、ラップトップコンピューター、タブレットコンピューター、ウェアラブルコンピューター、埋め込まれたコンピューティングデバイス、電気通信デバイス、自動車コンピューター、ネットワーク対応テレビジョン、シンクライアント、端末、携帯情報端末（ＰＤＡ）、ゲームコンソール、ゲーミングデバイス、インターネットオブシングス（ＩｏＴ）デバイス、ワークステーション、メディアプレーヤー、パーソナルビデオレコーダー（ＰＶＲ）、セットトップボックス、カメラ、コンピューティングデバイスに含めるための統合されたコンポーネント（すなわち、周辺デバイス）、アプライアンス、またはその他の任意の種類のコンピューティングデバイスに相当することが可能であるが、それらには限定されない。
【００２２】
[0028]デバイス１０６は、バス１１２を介してなどでコンピューター可読メディア１１０に動作可能に接続された１つまたは複数の処理ユニット１０８を有する任意のコンピューティングデバイスを含むことができ、バス１１２は、いくつかの場合においては、システムバス、データーバス、アドレスバス、ＰＣＩバス、ミニＰＣＩバス、ならびに任意のさまざまなローカルバス、ペリフェラルバス、および／または独立したバスのうちの１つまたは複数を含むことができる。コンピューター可読メディア１１０上に格納される実行可能な命令は、たとえば、オペレーティングシステム１１４、セキュアーな分離テクノロジー（ＳＩＴ）確認ユーティリティー１１６、ならびに、処理ユニット１０８によってロード可能および実行可能であるその他のモジュール、プログラム、またはアプリケーションを含むことができる。代替として、または追加として、本明細書において記述された機能性は、少なくとも部分的に、アクセラレーターなどの１つまたは複数のハードウェアーロジックコンポーネントによって実行されることが可能である。たとえば、使用されることが可能であるハードウェアーロジックコンポーネントの例示的なタイプは、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、特定用途向け集積回路（ＡＳＩＣ）、アプリケーション固有標準製品（ＡＳＳＰ）、システムオンアチップシステム（ＳＯＣ）、コンプレックスプログラマブルロジックデバイス（ＣＰＬＤ）などを含むが、それらには限定されない。たとえば、アクセラレーターは、ＦＰＧＡファブリックに組み込まれたＣＰＵを含むＺＹＬＥＸまたはＡＬＴＥＲＡからのものなどのハイブリッドデバイスに相当することが可能である。
【００２３】
[0029]デバイス１０６は、コンピューティングデバイス１０６と、クライアントコンピューティングデバイス１２０などのその他のネットワーク接続されたデバイスとの間における通信を可能にするための１つまたは複数のネットワークインターフェース１１８を含むこともできる。そのようなネットワークインターフェース１１８は、ネットワークを介して通信を送信および受信するための１つまたは複数のネットワークインターフェースコントローラー（ＮＩＣ）またはその他のタイプのトランシーバーデバイスを含むことができる。簡単にするために、その他のコンポーネントは、示されたデバイス１０６から省略されている。
【００２４】
[0030]セキュアーな分離されたテクノロジーを使用して電子デバイス上での著作権侵害および不正行為を防止するための技術を実施するように構成されたその他のデバイスは、クライアントコンピューティングデバイス、たとえば、クライアントコンピューティングデバイス１２０（１）〜１２０（Ｎ）のうちの１つまたは複数を含むことができる。クライアントコンピューティングデバイス１２０は、デバイス１０６と同じであること、または異なることが可能であるさまざまなカテゴリーまたはクラスのデバイス、たとえば、従来のクライアントタイプのデバイス、デスクトップコンピュータータイプのデバイス、モバイルタイプのデバイス、専用タイプのデバイス、組み込まれたタイプのデバイス、および／またはウェアラブルタイプのデバイスに属することが可能である。クライアントコンピューティングデバイス１２０は、ラップトップコンピューター１２０（１）、タブレットコンピューター１２０（２）、モバイル電話１２０（３）などの電気通信デバイス、グローバルポジショニングシステム（ＧＰＳ）デバイスを含む衛星ベースのナビゲーションシステムおよびその他の衛星ベースのナビゲーションシステムデバイスなどのコンピューターナビゲーションタイプのクライアントコンピューティングデバイス、モバイル電話／タブレットのハイブリッド、携帯情報端末（ＰＤＡ）、パーソナルコンピューター、その他のモバイルコンピューター、ウェアラブルコンピューター、埋め込まれたコンピューティングデバイス、デスクトップコンピューター、自動車コンピューター、ネットワーク対応テレビジョン、シンクライアント、端末、ゲームコンソール、ゲーミングデバイス１２０（４）、ネットワーク接続された車両１２０（５）、インターネットオブシングス（ＩｏＴ）デバイス１２０（Ｎ）、ワークステーション、メディアプレーヤー、パーソナルビデオレコーダー（ＰＶＲ）、セットトップボックス、カメラ、コンピューティングデバイスに含めるための統合されたコンポーネント（たとえば、周辺デバイス）、アプライアンス、またはその他の任意の種類のコンピューティングデバイスを含むことができるが、それらには限定されない。
【００２５】
[0031]ラップトップコンピューター１２０（１）など、さまざまなカテゴリーまたはクラスおよびデバイスタイプのクライアントコンピューティングデバイス１２０は、バス１２６などを介してコンピューターメモリー１２４に動作可能に接続された１つまたは複数の処理ユニット１２２を有する任意のタイプのコンピューティングデバイスに相当することが可能であり、バス１２６は、いくつかの場合においては、システムバス、データーバス、アドレスバス、ＰＣＩバス、ミニＰＣＩバス、ならびに任意のさまざまなローカルバス、ペリフェラルバス、および／または独立したバスのうちの１つまたは複数を含むことができる。
【００２６】
[0032]コンピューターメモリー１２４上に格納される実行可能な命令は、たとえば、オペレーティングシステム１２８、アプリケーションの第１の部分１３０、ならびに、処理ユニット１２２によってロード可能および実行可能であるその他のモジュール、プログラム、またはアプリケーションを含むことができる。
【００２７】
[0033]クライアントコンピューティングデバイス１２０は、ネットワーク１０４を介した、クライアントコンピューティングデバイス１２０と、その他のクライアントコンピューティングデバイス１２０またはデバイス１０６などのその他のネットワーク接続されたデバイスとの間における通信を可能にするための１つまたは複数のネットワークインターフェース１３２を含むこともできる。そのようなネットワークインターフェース１３２は、ネットワークを介して通信を送信および受信するための１つまたは複数のネットワークインターフェースコントローラー（ＮＩＣ）またはその他のタイプのトランシーバーデバイスを含むことができる。
【００２８】
[0034]図１の例においては、クライアントコンピューティングデバイス１２０は、クライアントコンピューティングデバイス１２０上のデーターおよび／またはコードを保護するハードウェアーベースのセキュアーな分離されたテクノロジーを含むことができる。ハードウェアーベースのセキュアーな分離されたテクノロジーは、クライアントコンピューティングデバイス１２０の処理ユニット１２２がセキュアーモードで動作することを可能にすることによって、ならびにデーターおよび／またはコードをコンピューターメモリー１２４のハードウェアーベースのセキュアーな分離された領域（ＨＢＳＩＲ）１３２に格納することによってデーターおよび／またはコードを保護する。いくつかの例においては、クライアントコンピューティングデバイス１２０のオペレーティングシステム１２８、ハイパーバイザー、および／またはファームウェアーは、コンピューターメモリー１２４のハードウェアーベースのセキュアーな分離された領域１３４内のデーターおよび／またはコードにアクセスすることを制限される。したがって、たとえユーザーがクライアントコンピューティングデバイス１２０（たとえば、コンピューティングデバイス１２０のオペレーティングシステム１２８、ハイパーバイザー、および／またはファームウェアー）を操作しても、ハードウェアーベースのセキュアーな分離された領域１３４内のデーターおよび／またはコードは、依然として抽出および操作からセキュアーである。
【００２９】
[0035]たとえば、いくつかの例においては、クライアントコンピューティングデバイス１２０の処理ユニット１２２は、ＳＧＸ（ＳＥＣＵＲＥ  ＧＵＡＲＤ  ＥＸＴＥＮＳＩＯＮＳ）を含むＩＮＴＥＬからのＳＫＹＬＡＫＥ  ＣＨＩＰＳを含むことができる。そのような例においては、ＳＧＸは、処理ユニット１２２が「エンクレーブ」モードで実行することを可能にすることができ、「エンクレーブ」モードでは、ハードウェアーベースのセキュアーな分離された領域１３４を含むことができるエンクレーブ内のデーターおよび／またはコードが、悪意あるオペレーティングシステム１２８、ハイパーバイザー、および／またはファームウェアーにかかわらずに秘密にされておくことが可能である。
【００３０】
[0036]図１の例においては、ハードウェアーベースのセキュアーな分離された領域１３４は、アプリケーションの第２の部分１３６を格納する。たとえば、図１の例においては、アプリケーションの第１の部分１３０およびアプリケーションの第２の部分１３６は、単一のアプリケーション用のコードを含むことができる。いくつかの例においては、アプリケーションの第１の部分１３０は、プレーンテキストを含み、アプリケーションの第２の部分１３６は、プレーンテキスト部分および暗号化された部分を含む。したがって、クライアントコンピューティングデバイス１２０は、コンピューターメモリー１２３に格納されているアプリケーションの第１の部分１３０、およびハードウェアーベースのセキュアーな分離された領域１３４に格納されているアプリケーションの第２の部分１３６を使用してアプリケーションを実行することができる。
【００３１】
[0037]たとえば、いくつかの例においては、クライアントコンピューティングデバイス１２０は、アプリケーションの第２の部分（たとえば、プレーンテキスト）を使用して、デバイス１０６との間でセキュアーな暗号化された通信チャネルを確立することができる。たとえば、処理ユニット１２２は、セキュアーな暗号化された通信チャネルを確立することを処理ユニット１２２に行わせる、プレーンテキスト部分に含まれているコンピューター可読命令を実行することができる。セキュアーな暗号化された通信チャネルを使用して、ハードウェアーベースのセキュアーな分離された領域１３４は、クライアントコンピューティングデバイス１２０を介してデバイス１０６と間接的に通信することができる。
【００３２】
[0038]たとえば、クライアントコンピューティングデバイス１２０は、セキュアーな暗号化された通信チャネルを介してデバイス１０６へデーターを送信することによって、デバイス１０６に対して証明を行うことができる。いくつかの例においては、データーは、処理ユニット１２２の識別（たとえば、ＣＰＵチップ番号）、コンピューティングデバイス１２０上のコードが実際に、ハードウェアーベースのセキュアーな分離テクノロジーをサポートするデバイス上で稼働しているという証明、および／またはハードウェアーベースのセキュアーな分離された領域１３４のダイジェストを含むことができる。そのような例においては、ハードウェアーベースのセキュアーな分離された領域１３４のダイジェストは、プレーンテキスト部分および暗号化された部分を含む。データーを使用して、デバイス１０６は、ハードウェアーベースのセキュアーな分離された領域１３４が、ハードウェアーベースのセキュアーな分離されたテクノロジーをサポートするクライアントコンピューティングデバイス１２０上で稼働しているということを確認することができる。加えて、いくつかの例においては、デバイス１０６は、クライアントコンピューティングデバイス１２０および／またはクライアントコンピューティングデバイス１２０のユーザーがアプリケーション用のライセンスを含むということを確認することができる。次いでデバイス１０６は、セキュアーな暗号化された通信チャネルを介して復号キー１３８をクライアントコンピューティングデバイス１２０へ送信することができる。
【００３３】
[0039]復号キー１３８を受信した後に、クライアントコンピューティングデバイス１２０は、復号キー１３８を使用して、アプリケーションの暗号化された部分を復号することができる。たとえば、処理ユニット１２２は、復号キー１３８を使用して、暗号化された部分を復号することを処理ユニット１２２に行わせる、プレーンテキスト部分に含まれているコンピューター可読命令を実行することができる。次いでクライアントコンピューティングデバイス１２０は、ハードウェアーベースのセキュアーな分離された領域１３４内のアプリケーションの暗号化された第２の部分を実行することができる。
【００３４】
[0040]図２は、ハードウェアーベースのセキュアーな分離されたテクノロジーを利用して著作権侵害および不正行為を防止するように構成された例示的なクライアントコンピューティングデバイス２００を示すブロック図である。コンピューティングデバイス２００は、クライアントコンピューティングデバイス１２０に相当することが可能である。例示的なコンピューティングデバイス２００は、１つまたは複数の処理ユニット２０２、コンピューターメモリー２０４、入力／出力インターフェース２０６、およびネットワークインターフェース２０８を含む。コンピューティングデバイス２００のコンポーネントどうしは、たとえば、バス１２６に相当することが可能であるバス２１０を介して、動作可能に接続される。
【００３５】
[0041]例示的なコンピューティングデバイス２００においては、処理ユニット２０２は、処理ユニット１２２に対応することが可能であり、たとえば、ＣＰＵタイプの処理ユニット、ＧＰＵタイプの処理ユニット、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、別のクラスのデジタルシグナルプロセッサー（ＤＳＰ）、またはいくつかの場合においては、ＣＰＵによって駆動されることが可能であるその他のハードウェアーロジックコンポーネントに相当することが可能である。たとえば、使用されることが可能であるハードウェアーロジックコンポーネントの例示的なタイプは、特定用途向け集積回路（ＡＳＩＣ）、アプリケーション固有標準製品（ＡＳＳＰ）、システムオンアチップシステム（ＳＯＣ）、コンプレックスプログラマブルロジックデバイス（ＣＰＬＤ）などを含むが、それらには限定されない。
【００３６】
[0042]コンピューターメモリー２０４は、コンピューターメモリー１２４に対応することが可能であり、処理ユニット２０２によって実行可能な命令を格納することができる。コンピューターメモリー２０４は、外部ＣＰＵ、外部ＧＰＵによってなど、外部処理ユニットによって実行可能な、および／またはＦＰＧＡタイプのアクセラレーター、ＤＳＰタイプのアクセラレーター、もしくはその他の任意の内部アクセラレーターもしくは外部アクセラレーターなど、外部アクセラレーターによって実行可能な命令を格納することもできる。さまざまな例においては、少なくとも１つのＣＰＵ、ＧＰＵ、および／またはアクセラレーターが、コンピューティングデバイス２００に組み込まれ、その一方でいくつかの例においては、ＣＰＵ、ＧＰＵ、および／またはアクセラレーターのうちの１つまたは複数が、コンピューティングデバイス２００の外部にある。
【００３７】
[0043]コンピューターメモリー２０４は、コンピューターストレージメディアを含むことができる。コンピューターストレージメディアは、コンピューター可読命令、データー構造、プログラムモジュール、またはその他のデーターなどの情報の格納のための任意の方法またはテクノロジーにおいて実装される揮発性メモリー、不揮発性メモリー、ならびに／またはその他の永続的なおよび／もしくは補助的なコンピューターストレージメディア、取り外し可能なおよび取り外し不能なコンピューターメモリーのうちの１つまたは複数を含むことができる。したがって、コンピューターストレージメディアは、ランダムアクセスメモリー（ＲＡＭ）、スタティックランダムアクセスメモリー（ＳＲＡＭ）、ダイナミックランダムアクセスメモリー（ＤＲＡＭ）、相変化メモリー（ＰＲＡＭ）、読み取り専用メモリー（ＲＯＭ）、消去可能プログラム可能読み取り専用メモリー（ＥＰＲＯＭ）、電気的消去可能プログラム可能読み取り専用メモリー（ＥＥＰＲＯＭ）、フラッシュメモリー、または、コンピューティングデバイスによるアクセスのための情報を格納および保持するために使用されることが可能であるその他の任意のストレージメモリー、ストレージデバイス、および／もしくはストレージメディアを含むがそれらには限定されない、デバイス、および／またはデバイスの一部である、もしくはデバイスの外部にあるハードウェアーコンポーネントに含まれている有形のおよび／または物理的な形態のメディアを含む。
【００３８】
[0044]入力／出力（Ｉ／Ｏ）インターフェース２０６は、コンピューティングデバイス２００が、周辺入力デバイス（たとえば、キーボード、マウス、ペン、ゲームコントローラー、音声入力デバイス、タッチ入力デバイス、ジェスチャー入力デバイスなど）を含むユーザー入力デバイス、および／または周辺出力デバイス（たとえば、ディスプレイ、プリンター、オーディオスピーカー、触覚出力など）を含む出力デバイスなどの入力／出力デバイスと通信することを可能にする。
【００３９】
[0045]ネットワークインターフェース１３２に対応することが可能であるネットワークインターフェース２０８は、たとえば、ネットワークを介して通信を送信および受信するためのネットワークインターフェースコントローラー（ＮＩＣ）またはその他のタイプのトランシーバーデバイスに相当することが可能である。
【００４０】
[0046]示された例においては、コンピューターメモリー２０４は、不揮発性ストレージメディア２１２を含む。不揮発性ストレージメディア２１２は、コンピューターメモリー２０４に格納された、ならびに／または処理ユニット２０２および／もしくはアクセラレーターによって実行されるプロセス、アプリケーション、コンポーネント、および／またはモジュールのオペレーションのためのデーターを格納することができる。加えて、いくつかの例においては、上で言及されたデーターのうちのいくつかまたはすべては、１つまたは複数の処理ユニット２０２上に搭載された別個のメモリー２１４、たとえば、ＣＰＵタイプのプロセッサー、ＧＰＵタイプのプロセッサー、ＦＰＧＡタイプのアクセラレーター、ＤＳＰタイプのアクセラレーター、および／または別のアクセラレーター上に搭載されたメモリー上に格納されることが可能である。
【００４１】
[0047]図２の示された例においては、コンピューターメモリー２０４はまた、オペレーティングシステム２１６を含み、オペレーティングシステム２１６は、オペレーティングシステム１２８に相当することが可能である。加えて、コンピューターメモリー２０４は、ハードウェアーベースのセキュアーな分離された領域２１８およびアプリケーションの第１の部分２２０を含み、これらはそれぞれ、ハードウェアーベースのセキュアーな分離された領域１３４およびアプリケーションの第１の部分１３０に相当することが可能である。さらに、コンピューターメモリー２０４は、暗号化された復号キー２２２を含む。
【００４２】
[0048]図２の例においては、ハードウェアーベースのセキュアーな分離された領域２１８は、アプリケーションの第２の部分２２４（これは、アプリケーションの第２の部分１３６に相当することが可能である）、復号キー２２６、およびシーリングキー２２２を格納する。いくつかの例においては、コンピューターメモリー２０４に格納されるアプリケーションの第１の部分２２０、およびハードウェアーベースのセキュアーな分離された領域２１８に格納されるアプリケーションの第２の部分２２４は、ソフトウェアーアプリケーション用のデーターおよびコードを含む。たとえば、アプリケーションの第１の部分２２０は、アプリケーション用のプレーンテキストを含むことができる。アプリケーションの第２の部分２２４は、アプリケーションのプレーンテキスト部分２３０およびアプリケーションの暗号化された部分２３２を含むことができる。いくつかの例においては、プレーンテキスト部分２３０は、暗号化された部分２３０を復号するための復号キー２２６をダウンロードする標準のライセンシングコードを含む。いくつかの例においては、暗号化された部分２３２は、アプリケーションを適切に実行する上で重要であるコードを含む。たとえば、ゲーム用の暗号化された部分２３２は、ＡＩヒューリスティック、物理計算、カスタムグラフィックスプロセッシングユニットコマンド生成などのためのコードを含むことができる。
【００４３】
[0049]ハードウェアーベースのセキュアーな分離された領域２１８はさらに、１つまたは複数のモジュールを含むことができ、これらは、ブロック２３４、２３６、２３８、２４０、２４２として示されているが、これは一例にすぎず、数は、より高くまたはより低く変わることが可能である。ブロック２３４、２３６、２３８、２４０、２４２に関連付けられた記述される機能性は、組み合わされて、より少ない数のモジュールによって実行されることが可能であり、または分割されて、より多くの数のモジュールによって実行されることが可能である。加えて、いくつかの例においては、ブロック２３４、２３６、２３８、２４０、２４２に関連付けられた機能性のうちのいくつかは、ハードウェアーベースのセキュアーな分離された領域２１８に含まれないモジュールによって実行されることが可能である。
【００４４】
[0050]ブロック２３４は、本明細書において記述されたアテステーションプロセスをコンピューティングデバイス２００のために実行するようにコンピューティングデバイス２００の処理ユニット２０２をプログラムするためのロジックを含む。たとえば、処理ユニット２０２は、アテステーションモジュール２３４を実行して、図１からのデバイス１０６などのサーバーに対して証明を行うことができる。いくつかの例においては、サーバーに対して証明を行うために、コンピューティングデバイス２００は、ハードウェアーベースのセキュアーな分離された領域２１８内のプレーンテキスト部分２３０を使用して、サーバーとの間でセキュアーな暗号化された通信チャネルを確立する。たとえば、このセキュアーな暗号化された通信チャネルをセットアップするために、ディフィーヘルマンキー交換アルゴリズムが使用されることが可能である。たとえば、処理ユニット２０２は、ネットワークインターフェース２０８を介してサーバーとの間でセキュアーな暗号化された通信チャネルを確立することを処理ユニット２０２に行わせる、プレーンテキスト部分２３０に含まれているコードを実行することができる。
【００４５】
[0051]いくつかの例においては、コンピューティングデバイス２００は、ユーザーがコンピューティングデバイス２００を使用してアプリケーションを実行したことに応答して、セキュアーな暗号化された通信チャネルを確立する。セキュアーな暗号化された通信チャネルを確立した後に、ハードウェアーベースのセキュアーな分離された領域２１８は、コンピューティングデバイス２００を介してサーバーと間接的に通信することができる。たとえば、セキュアーな暗号化された通信チャネルを通じて、コンピューティングデバイス２００は、アテステーションモジュール２３４を使用して、アテステーションを実行するためにサーバーへデーターを送信することができる。いくつかの例においては、データーは、電子デバイスの処理ユニット２０２の識別子（たとえば、ＣＰＵチップ番号）、電子デバイス上のコードが実際に、ハードウェアーベースのセキュアーな分離テクノロジーをサポートするデバイス上で稼働しているという証明、および／またはハードウェアーベースのセキュアーな分離された領域２１８のダイジェストを含む。そのような例においては、ハードウェアーベースのセキュアーな分離された領域２１８のダイジェストは、プレーンテキスト部分２３０および暗号化された部分２３２を含む。データーを使用して、サーバーは、ハードウェアーベースのセキュアーな分離された領域２１８が、ハードウェアーベースのセキュアーな分離されたテクノロジーをサポートするコンピューティングデバイス２００上で稼働しているということを確認することができる。加えて、いくつかの例においては、サーバーは、コンピューティングデバイス２００および／またはコンピューティングデバイス２００のユーザーがアプリケーション用のライセンスを含むということを確認することができる。次いでサーバーは、セキュアーな暗号化された通信チャネルを介して復号キー２２６（これは、復号キー１３８に相当することが可能である）をコンピューティングデバイス２００へ送信することができる。
【００４６】
[0052]ブロック２３６は、サーバーとの間でセキュアーなチャネルを確立するようにコンピューターデバイス２００の処理ユニット２０２をプログラムするためのロジックを含む。たとえば、処理ユニット２０２は、ネットワークインターフェース２０８を利用することができるセキュアー通信モジュール２３６を実行して、図１からのデバイス１０６などのサーバーとの間でセキュアーな暗号化された通信チャネルを確立することができる。いくつかの例においては、セキュアー通信モジュール２３６は、サーバーとの間でセキュアーな暗号化された通信チャネルをセットアップするためにディフィーヘルマンキー交換アルゴリズムを利用することができる。いくつかの例においては、処理ユニット２０２は、ユーザーがコンピューティングデバイス２００を使用してアプリケーションを実行したことに応答して、セキュアー通信モジュール２３６を実行してセキュアーな暗号化された通信チャネルを確立する。
【００４７】
[0053]ブロック２３８は、ハードウェアーベースのセキュアーな分離された領域２１８内にあるデーターおよび／またはコードを復号するようにコンピューティングデバイス２００の処理ユニット２０２をプログラムするためのロジックを含む。たとえば、コンピューティングデバイス２００は、セキュアーな分離された領域（ＳＩＲ）復号モジュール２３８を利用して、ハードウェアーベースのセキュアーな分離された領域２１８内のアプリケーションの暗号化された部分２３２を復号することができる。暗号化された部分２３２を復号することによって、アプリケーションの復号された部分を生成することができる。いくつかの例においては、復号された部分は、アプリケーションの実行中にハードウェアーベースのセキュアーな分離された領域２１８内で処理ユニット２０２が実行するコードを含むことができる。いくつかの例においては、コンピューティングデバイス２００は、コンピューティングデバイス２００がアプリケーションを実行することを試みるたびに、ＳＩＲ復号モジュール２３８を利用して、復号キー２２６を使用して、暗号化された部分２３２を復号する。
【００４８】
[0054]コンピューティングデバイス２００は、ＳＩＲ復号モジュール２３８をさらに利用して、ハードウェアーベースのセキュアーな分離された領域２１８内の暗号化された復号キー２２２を復号することができる。たとえば、いくつかの例においては、コンピューティングデバイス２００は、シーリングキー２２８を使用して復号キー２２６を暗号化し、暗号化された復号キー２２２をコンピューターメモリー２０４に格納する。そのような例においては、コンピューティングデバイス２００は、ＳＩＲ復号モジュール２３８を利用して、復号キー２２６を取り出すためにシーリングキー２２８を使用してハードウェアーベースのセキュアーな分離された領域２１８内の暗号化された復号キー２２２を復号することができる。
【００４９】
[0055]ブロック２４０は、シーリングキー２２８を生成するようにコンピューティングデバイス２００の処理ユニット２０２をプログラムするためのロジックを含む。たとえば、コンピューティングデバイス２００は、シーリングキー生成モジュール２４０を利用して、シーリングキー２２８を生成することができる。いくつかの例においては、シーリングキー２２８は、処理ユニット２０２および／またはハードウェアーベースのセキュアーな分離された領域２１８に固有でなければならない。たとえば、そのような例においては、処理ユニット２０２およびハードウェアーベースのセキュアーな分離された領域２１８を含むコンピューティングデバイス２００のみが、シーリングキー２２８を生成することができる。いくつかの例においては、コンピューティングデバイス２００は、シーリングキー生成モジュール２４０を利用して、コンピューティングデバイス２００が復号キー２２６を暗号化する必要があるたびに、および／またはコンピューティングデバイス２００が、暗号化された復号キー２２２を復号する必要があるたびに、シーリングキー２２８を生成する。
【００５０】
[0056]ブロック２４２は、シーリングキー２２８を使用して復号キー２２６を暗号化するようにコンピューティングデバイス２００の処理ユニット２０２をプログラムするためのロジックを含む。たとえば、コンピューティングデバイス２００は、セキュアーな分離された領域暗号化モジュール２４２を利用して、暗号化された復号キー２２２を生成するためにシーリングキー２２８を使用して復号キー２２６を暗号化することができる。いくつかの例においては、コンピューティングデバイス２００は次いで、暗号化された復号キー２２２をコンピューターメモリー２０４に保存することができる。たとえば、いくつかの例においては、コンピューティングデバイス２００は、暗号化された復号キー２２２を不揮発性ストレージメディア２１２に格納する。
【００５１】
[0057]いくつかの例においては、コンピューティングデバイス２００は、サーバーから浮動ライセンスを受信することができるということに留意されたい。そのような例においては、コンピューティングデバイス２００は、シーリングキー２２８を使用して復号キー２２６を暗号化せず、復号キーを（暗号化されているか否かを問わず）ハードウェアーベースのセキュアーな分離された領域２１８の外部に格納することはない。代わりに、システムは、アプリケーションを使用するためのこのライセンスが一度に１つの電子デバイスによってのみ使用されることを確実にする必要があるだろう。これを行うために、コンピューティングデバイス２００が浮動ライセンスを受信した場合に、コンピューティングデバイス２００および／またはハードウェアーベースのセキュアーな分離された領域２１８は、サーバーからの命令を受信して、定期的に（たとえば、１分ごと、１０分ごと等などのタイムインターバルで）サーバーと通信することができる。次いで、ハードウェアーベースのセキュアーな分離された領域２１８は、（１）コンピューティングデバイス２００および／またはハードウェアーベースのセキュアーな分離された領域２１８がサーバーと通信することができないか、または（２）コンピューティングデバイス２００のユーザーが、異なるコンピューティングデバイスを使用して、そのユーザーがコンピューティングデバイス２００上で使用したのと同じライセンスをアプリケーションに供与する場合には、実行を終了することをアプリケーションのプレーンテキスト部分２３０および／または復号された部分に行わせることができる。
【００５２】
[0058]図３は、ハードウェアーベースのセキュアーな分離されたテクノロジーを確認する電子デバイス上での著作権侵害および不正行為を防止することに関連付けられた技術を実行するように構成された例示的なサーバーコンピューティングデバイスを示すブロック図である。コンピューティングデバイス３００は、デバイス１０６に相当することが可能である。例示的なコンピューティングデバイス３００は、１つまたは複数の処理ユニット３０２、コンピューター可読メディア３０４、入力／出力インターフェース３０６、およびネットワークインターフェース３０８を含む。コンピューティングデバイス３００のコンポーネントどうしは、たとえば、バス１１２に相当することが可能であるバス３１０を介して、動作可能に接続される。
【００５３】
[0059]例示的なコンピューティングデバイス３００においては、処理ユニット３０２は、処理ユニット１０８に対応することが可能であり、たとえば、ＣＰＵタイプの処理ユニット、ＧＰＵタイプの処理ユニット、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、別のクラスのデジタルシグナルプロセッサー（ＤＳＰ）、またはいくつかの場合においては、ＣＰＵによって駆動されることが可能であるその他のハードウェアーロジックコンポーネントに相当することが可能である。たとえば、使用されることが可能であるハードウェアーロジックコンポーネントの例示的なタイプは、特定用途向け集積回路（ＡＳＩＣ）、アプリケーション固有標準製品（ＡＳＳＰ）、システムオンアチップシステム（ＳＯＣ）、コンプレックスプログラマブルロジックデバイス（ＣＰＬＤ）などを含むが、それらには限定されない。
【００５４】
[0060]コンピューター可読メディア３０４は、コンピューター可読メディア１１０に対応することが可能であり、処理ユニット３０２によって実行可能な命令を格納することができる。コンピューター可読メディア３０４は、外部ＣＰＵ、外部ＧＰＵによってなど、外部処理ユニットによって実行可能な、および／またはＦＰＧＡタイプのアクセラレーター、ＤＳＰタイプのアクセラレーター、もしくはその他の任意の内部アクセラレーターもしくは外部アクセラレーターなど、外部アクセラレーターによって実行可能な命令を格納することもできる。さまざまな例においては、少なくとも１つのＣＰＵ、ＧＰＵ、および／またはアクセラレーターが、コンピューティングデバイス３００に組み込まれ、その一方でいくつかの例においては、ＣＰＵ、ＧＰＵ、および／またはアクセラレーターのうちの１つまたは複数が、コンピューティングデバイス３００の外部にある。
【００５５】
[0061]コンピューター可読メディア３０４は、コンピューターストレージメディアおよび／または通信メディアを含むことができる。コンピューターストレージメディアは、コンピューター可読命令、データー構造、プログラムモジュール、またはその他のデーターなどの情報の格納のための任意の方法またはテクノロジーにおいて実装される揮発性メモリー、不揮発性メモリー、ならびに／またはその他の永続的なおよび／もしくは補助的なコンピューターストレージメディア、取り外し可能なおよび取り外し不能なコンピューターストレージメディアのうちの１つまたは複数を含むことができる。したがって、コンピューターストレージメディアは、ランダムアクセスメモリー（ＲＡＭ）、スタティックランダムアクセスメモリー（ＳＲＡＭ）、ダイナミックランダムアクセスメモリー（ＤＲＡＭ）、相変化メモリー（ＰＲＡＭ）、読み取り専用メモリー（ＲＯＭ）、消去可能プログラム可能読み取り専用メモリー（ＥＰＲＯＭ）、電気的消去可能プログラム可能読み取り専用メモリー（ＥＥＰＲＯＭ）、フラッシュメモリー、光カードもしくはその他の光ストレージメディア、磁気カセット、磁気テープ、磁気ディスクストレージ、磁気カードもしくはその他の磁気ストレージデバイスもしくはメディア、ソリッドステートメモリーデバイス、ストレージアレイ、ネットワークアタッチトストレージ、ストレージエリアネットワーク、ホストされたコンピューターストレージ、または、コンピューティングデバイスによるアクセスのための情報を格納および保持するために使用されることが可能であるその他の任意のストレージメモリー、ストレージデバイス、および／もしくはストレージメディアを含むがそれらには限定されない、デバイス、および／またはデバイスの一部である、もしくはデバイスの外部にあるハードウェアーコンポーネントに含まれている有形のおよび／または物理的な形態のメディアを含む。
【００５６】
[0062]コンピューターストレージメディアとは対照的に、通信メディアは、コンピューター可読命令、データー構造、プログラムモジュール、またはその他のデーターを、変調されたデーター信号、たとえば搬送波、またはその他の伝送メカニズムにおいて具体化することができる。本明細書において定義されるように、コンピューターストレージメディアは、通信メディアを含まない。すなわち、コンピューターストレージメディアは、それ自体が、変調されたデーター信号、搬送波、または伝搬される信号のみから構成される通信メディアを含まない。
【００５７】
[0063]入力／出力（Ｉ／Ｏ）インターフェース３０６は、コンピューティングデバイス３００が、周辺入力デバイス（たとえば、キーボード、マウス、ペン、ゲームコントローラー、音声入力デバイス、タッチ入力デバイス、ジェスチャー入力デバイスなど）を含むユーザー入力デバイス、および／または周辺出力デバイス（たとえば、ディスプレイ、プリンター、オーディオスピーカー、触覚出力など）を含む出力デバイスなどの入力／出力デバイスと通信することを可能にする。
【００５８】
[0064]ネットワークインターフェース１１８に対応することが可能であるネットワークインターフェース３０８は、たとえば、ネットワークを介して通信を送信および受信するためのネットワークインターフェースコントローラー（ＮＩＣ）またはその他のタイプのトランシーバーデバイスに相当することが可能である。
【００５９】
[0065]示された例においては、処理ユニット３１２は、別個のメモリー３１２を含む。いくつかの例においては、上で言及されたデーターのうちのいくつかまたはすべては、１つまたは複数の処理ユニット３０２上に搭載された別個のメモリー３１２、たとえば、ＣＰＵタイプのプロセッサー、ＧＰＵタイプのプロセッサー、ＦＰＧＡタイプのアクセラレーター、ＤＳＰタイプのアクセラレーター、および／または別のアクセラレーター上に搭載されたメモリー上に格納されることが可能である。
【００６０】
[0066]図３の示された例においては、コンピューター可読メディア３０４は、オペレーティングシステム３１４を含み、オペレーティングシステム３１４は、オペレーティングシステム１１４に相当することが可能である。加えて、コンピューター可読メディア３０４は、セキュアーな分離テクノロジー確認ユーティリティー３１６を含む。セキュアーな分離されたテクノロジー確認ユーティリティー３１６は、１つまたは複数のモジュールを含むことができ、これらは、ブロック３１８、３２０、３２２、および３２４として示されているが、これは一例にすぎず、数は、より高くまたはより低く変わることが可能である。ブロック３１８、３２０、３２２、および３２４に関連付けられた記述される機能性は、組み合わされて、より少ない数のモジュールによって実行されることが可能であり、または分割されて、より多くの数のモジュールによって実行されることが可能である。加えて、いくつかの例においては、ブロック３１８、３２０、３２２、および３２４に関連付けられた機能性のうちのいくつかは、セキュアーな分離テクノロジー確認ユーティリティー１１６に含まれないモジュールによって実行されることが可能である。
【００６１】
[0067]ブロック３１８は、本明細書において記述されたアテステーションプロセスをコンピューティングデバイス３００のために実行するようにコンピューティングデバイス３００の処理ユニット３０２をプログラムするためのロジックを含む。たとえば、コンピューティングデバイス３００は、セキュアーな暗号化された通信チャネルを介して、図１からのクライアントコンピューティングデバイス１２０などの電子デバイスからデーター（たとえば、アテステーション情報）を受信することができる。コンピューティングデバイス３００は、アテステーション確認モジュール３１８を利用して、データーを使用して、電子デバイスがハードウェアーベースのセキュアーな分離されたテクノロジーを稼働させているということを確認するためにアテステーション確認を実行することができる。いくつかの例においては、データーは、電子デバイスの中央処理装置（ＣＰＵ）チップの識別子（たとえば、ＣＰＵチップ番号）、電子デバイス上のコードが実際に、ハードウェアーベースのセキュアーな分離テクノロジーをサポートするデバイス上で稼働しているという証明、および／またはハードウェアーベースのセキュアーな分離された領域のダイジェスト値を含むことができる。
【００６２】
[0068]たとえば、コンピューティングデバイス３００は、電子デバイスが、信頼されているＣＰＵチップを含み、かつハードウェアーベースのセキュアーな分離されたテクノロジーを含むことを確認することによって、アテステーションを実行することができる。たとえば、サーバーは、セキュアーな分離テクノロジー（ＳＩＴ）データーベース３２６を使用して、ＣＰＵチップのアイデンティティー、およびハードウェアーベースのセキュアーな分離された領域のアイデンティティーを確認することができる。ＳＩＴデーターベース３２６は、電子デバイスをハードウェアーベースのセキュアーな分離されたテクノロジーに関連付けるデーターを含むことができる。したがって、コンピューティングデバイス３００は、ＳＩＴデーターベース３２６を使用して、電子デバイスのＣＰＵチップが電子デバイス上のハードウェアーベースのセキュアーな分離されたテクノロジーにマッチするということを確認することができる。いくつかの例においては、ＣＰＵチップが電子デバイス上のハードウェアーベースのセキュアーな分離されたテクノロジーにマッチするということをコンピューティングデバイス３００が決定した場合には、コンピューティングデバイス３００は、電子デバイス上のハードウェアーベースのセキュアーな分離されたテクノロジーを確認することができる。しかしながら、ＣＰＵチップが電子デバイス上のハードウェアーベースのセキュアーな分離されたテクノロジーにマッチしないということをコンピューティングデバイスが決定した場合には、コンピューティングデバイス３００は、電子デバイス上のハードウェアーベースのセキュアーな分離されたテクノロジーを確認しない。
【００６３】
[0069]ブロック３２０は、電子デバイスに関するアプリケーションに関連付けられた権利を決定するようにコンピューティングデバイス３００の処理ユニット３０２をプログラムするためのロジックを含む。たとえば、いくつかの例においては、電子デバイスを確認した後に、コンピューティングデバイス３００は、権利モジュール３２０を実行して、アプリケーションを実行する権利を電子デバイスが含むかどうかを決定することができる。
【００６４】
[0070]たとえば、いくつかの例においては、コンピューティングデバイス３００は、権利データーベース３２８を利用して、アプリケーションを実行する権利を電子デバイスが含むかどうかを決定することができる。権利データーベース３２８は、さまざまなアプリケーションに関連付けられた権利を含むユーザーおよび／または電子デバイスを示すデーターを含むことができる。したがってコンピューティングデバイス３００は、権利データーベース３２８を使用して、アプリケーションに関連付けられた権利を電子デバイスおよび／または電子デバイスのユーザーが含むかどうかを決定することができる。いくつかの例においては、コンピューティングデバイス３００は、ＣＰＵチップのアイデンティティーを使用して、アプリケーションに関連付けられたライセンシング権利を電子デバイスが有するかどうかを決定することができる。いくつかの例においては、コンピューティングデバイス３００が、ユーザーに関するクレデンシャル（たとえば、ユーザーアカウント情報）をデーターとともに受信した場合には、コンピューティングデバイス３００は、アプリケーションに関連付けられたライセンシング権利をユーザーが有するかどうかを決定することができる。
【００６５】
[0071]いくつかの例においては、アプリケーションに関連付けられた権利は、アプリケーション用の永久ライセンスまたは浮動ライセンスを含むことができる。ユーザーおよび／または電子デバイスがアプリケーション用の永久ライセンスを含むことに基づいて、コンピューティングデバイス３００は、アプリケーション用の復号キー３３０（これは、復号キー１３８に相当することが可能である）を電子デバイスに送信することができる。ユーザーおよび／または電子デバイスがアプリケーション用の浮動ライセンスを含むことに基づいて、コンピューティングデバイス３００は、アプリケーション用の復号キー３３０と、浮動ライセンスに関連付けられた浮動ライセンス命令３３２との両方を電子デバイスに送信することができる。
【００６６】
[0072]いくつかの例においては、浮動ライセンス命令３３２は、浮動ライセンスをコンピューティングデバイス３００に定期的に確認することを電子デバイス上のハードウェアーベースのセキュアーな分離されたテクノロジーに行わせることができる。たとえば、浮動ライセンス命令３３２は、所与のタイムインターバル（たとえば、３０秒ごと、１分ごと、１時間ごとなど）でコンピューティングデバイス３００と通信して、電子デバイス上のアプリケーションに関する浮動ライセンスが依然として有効であるということを確認することをハードウェアーベースのセキュアーな分離されたテクノロジーに行わせることができる。いくつかの例においては、コンピューティングデバイス３００が、さらなる電子デバイス上のユーザーから同様のクレデンシャル（たとえば、ユーザーアカウント情報）を受信したことに基づいて、コンピューティングデバイス３００は、浮動ライセンスがもはや有効ではないということを決定することができる。そのような例においては、コンピューティングデバイス３００は、浮動ライセンスがもはや電子デバイス上で有効ではないということを示すメッセージを電子デバイスに送信することができる。
【００６７】
[0073]ブロック３２２は、コンピューティングデバイス３００と電子デバイスとの間における通信を暗号化するようにコンピューティングデバイス３００の処理ユニット３０２をプログラムするためのロジックを含む。加えて、ブロック３２４は、コンピューティングデバイス３００と電子デバイスとの間における通信を復号するようにコンピューティングデバイス３００の処理ユニット３０２をプログラムするためのロジックを含む。たとえば、いくつかの例においては、コンピューティングデバイス３００は、セキュアーな暗号化された通信チャネルを使用して電子デバイスと通信する。したがって、コンピューティングデバイス３００は、暗号化モジュール３２２を利用して、セキュアーな暗号化された通信チャネルを介して電子デバイスへ通信を送信する前にそれらの通信を暗号化することができる。加えて、コンピューティングデバイス３００は、復号モジュール３２４を利用して、セキュアーな暗号化された通信チャネルを介して電子デバイスから受信される通信を復号することができる。
【００６８】
[0074]いくつかの例においては、セキュアーな分離されたテクノロジー確認ユーティリティー３１６は、暗号化モジュール３２２または復号ツール３２４のうちの１つまたは複数を含まないことが可能であるということに留意されたい。たとえば、いくつかの例においては、コンピューティングデバイス３００は、暗号化モジュールおよび／または復号モジュールをコンピューティングデバイス３００のコンピューター可読メディア３０４に格納することができる。そのような例においては、コンピューティングデバイス３００は、コンピューター可読メディア３０４内の暗号化モジュールおよび復号モジュールを使用して、通信を暗号化および／または復号することができる。
【００６９】
[0075]図４〜図１０は、ハードウェアーベースのセキュアーな分離されたテクノロジーを使用して電子デバイス上での著作権侵害および不正行為を防止するための例示的なプロセスを示す。これらの例示的なプロセスは、ハードウェアー、ソフトウェアー、またはそれらの組合せにおいて実施されることが可能であるオペレーションのシーケンスを表す、ロジカルフローグラフにおけるブロックの集まりとして示される。これらのブロックは、番号によって言及される。ソフトウェアーのコンテキストにおいては、ブロックは、１つまたは複数のコンピューターメモリー上に格納されたコンピューター実行可能命令を表し、これらのコンピューター実行可能命令は、１つまたは複数の処理ユニット（ハードウェアーマイクロプロセッサーなど）によって実行されたときに、示されたオペレーションを実行する。一般に、コンピューター実行可能命令は、特定の機能を実行する、または特定の抽象データー型を実施するルーチン、プログラム、オブジェクト、コンポーネント、データー構造などを含む。各オペレーションが記述されている順序は、限定と解釈されることを意図されているものではなく、プロセスを実施するために、任意の数の記述されているブロックが任意の順序でおよび／または並列に組み合わされることが可能である。
【００７０】
[0076]図４は、電子デバイスがハードウェアーベースのセキュアーな分離されたテクノロジーを利用してアプリケーションの著作権侵害を防止する例示的な方法の流れ図４００である。ブロック４０２において、電子デバイスが、アプリケーションの第１の部分をコンピューターメモリーに格納することができる。たとえば、アプリケーションの開発者は、アプリケーションのどの部分を電子デバイスが電子デバイスのコンピューターメモリーから実行することになるか、およびアプリケーションのどの部分を電子デバイスが電子デバイスのコンピューターメモリーのハードウェアーベースのセキュアーな分離された領域から実行することになるかを指定することができる。したがって電子デバイスは、アプリケーションを実行する用意をしているときに、アプリケーションの第１の部分（たとえば、電子デバイスがコンピューターメモリーから実行するアプリケーションの部分）をコンピューターメモリーに格納することができる。いくつかの例においては、アプリケーションの第１の部分は、プレーンテキストを含む。
【００７１】
[0077]ブロック４０４において、電子デバイスは、アプリケーションの第２の部分をコンピューターメモリーのハードウェアーベースのセキュアーな分離された領域に格納することができる。たとえば、電子デバイスは、アプリケーションの第２の部分をハードウェアーベースのセキュアーな分離された領域に格納することができ、その第２の部分は、プレーンテキスト部分および暗号化された部分を含む。いくつかの例においては、プレーンテキスト部分は、電子デバイスが復号キーをサーバーから取り出すために使用するコードを含む。たとえば、プレーンテキスト部分は、復号キーをダウンロードする標準のライセンシングコードを含むことができる。いくつかの例においては、暗号化された部分は、アプリケーションが適切に実行する上で重要であるコードを含む。たとえば、暗号化された部分は、ＡＩヒューリスティック、物理計算、カスタムグラフィックスプロセッシングユニットコマンド生成などのためのコードを含むことができる。
【００７２】
[0078]ブロック４０６において、電子デバイスは、プレーンテキスト部分を使用して、サーバーとの間でセキュアーな暗号化された通信チャネルを確立することができる。たとえば、電子デバイス（たとえば、プロセッサー）は、サーバーとの間でセキュアーな暗号化された通信チャネルを確立することを電子デバイスに行わせる、プレーンテキスト部分に含まれているコンピューター可読命令を実行することができる。いくつかの例においては、ハードウェアーベースのセキュアーな分離された領域は、セキュアーな暗号化された通信チャネルを間接的に使用して、電子デバイスを介してサーバーとの間でデーターを送信および受信することができる。
【００７３】
[0079]ブロック４０８において、電子デバイスは、セキュアーな暗号化された通信チャネルを介してサーバーへデーターを送信することができる。たとえば、電子デバイス（たとえば、プロセッサー）は、セキュアーな暗号化された通信チャネルを介してサーバーへアテステーション情報を送信することを電子デバイスに行わせる、ハードウェアーベースのセキュアーな分離された領域に含まれているコンピューター可読命令（たとえば、コード）を実行することができる。いくつかの例においては、アテステーション情報は、電子デバイスのプロセッサーの識別子（たとえば、ＣＰＵチップ番号）、電子デバイス上のコードが実際に、ハードウェアーベースのセキュアーな分離テクノロジーをサポートするデバイス上で稼働しているという証明、および／またはハードウェアーベースのセキュアーな分離された領域のダイジェスト値を含むことができる。いくつかの例においては、サーバーは、アテステーション情報を使用してアテステーションを実行して、電子デバイス、プロセッサー、および／またはハードウェアーベースのセキュアーな分離された領域のうちの１つまたは複数を確認することができる。加えて、いくつかの例においては、サーバーは、アプリケーションに関して電子デバイスおよび／または電子デバイスのユーザーが有する１つまたは複数の権利を決定することができる。たとえば、サーバーは、電子デバイスおよび／または電子デバイスのユーザーが永久ライセンスを含むか、または浮動ライセンスを含むかを決定することができる。
【００７４】
[0080]ブロック４１０において、電子デバイスは、セキュアーな暗号化された通信チャネルを介して復号キーをサーバーから受信することができ、ブロック４１２において、電子デバイスは、復号キーを使用して、第２の部分の暗号化された部分を復号することができる。たとえば、サーバーによる権利の確認および決定に基づいて、電子デバイスは、セキュアーな暗号化された通信チャネルを介して復号キーをサーバーから受信することができる。次いで電子デバイスは、復号キーを使用して、ハードウェアーベースのセキュアーな分離された領域内の暗号化された部分を復号することができる。たとえば、電子デバイス（たとえば、プロセッサー）は、復号キーを使用して、暗号化された部分を復号することを電子デバイスに行わせる、プレーンテキスト部分に含まれているコンピューター可読命令を実行することができる。
【００７５】
[0081]いくつかの例においては、電子デバイスは次いで、アプリケーションを実行することができるということに留意されたい。たとえば、電子デバイス（たとえば、プロセッサー）は、コンピューターメモリーからのアプリケーションの第１の部分を実行し、コンピューターメモリーのハードウェアーベースのセキュアーな分離された領域内のプレーンテキスト部分および復号された部分の両方を実行することができる。いくつかの例においては、アプリケーションの第１の部分は、実行中にハードウェアーベースのセキュアーな分離された領域内のアプリケーションの第２の部分に対して呼び出しを行うことができる。
【００７６】
[0082]いくつかの例においては、アプリケーションの第２の部分は、アプリケーションの実行中に不正行為を防止することができるということにさらに留意されたい。たとえば、アプリケーションの第２の部分（たとえば、暗号化された部分）は、アプリケーションの第１の部分のコードが正しく実行しているかどうかを定期的に決定するコードを含むことができる。第１の部分のコードが正しく実行しているかどうかを決定することは、そのコードが電子デバイスのユーザーによって修正されているかどうかを決定することを含むことができる。追加として、または代替として、いくつかの例においては、アプリケーションの第２の部分（たとえば、暗号化された部分）は、アプリケーションの悪意あるユーザーが不正を行う際に通常修正するコードを含むことができる。そのコードをハードウェアーベースのセキュアーな分離された領域に置くことによって、悪意あるユーザーは、不正を行うためにそのコードを修正することを制限される。
【００７７】
[0083]図５は、電子デバイスがコンピューターメモリーのハードウェアーベースのセキュアーな分離された領域内のアプリケーションの一部分を実行する例示的な方法の流れ図５００である。ブロック５０２において、電子デバイスが、サーバーとの間で通信チャネルを確立することができる。
【００７８】
[0084]ブロック５０４において、電子デバイスは、通信チャネルを介して復号キーをサーバーから受信することができる。たとえば、電子デバイスは、アプリケーションの一部分を使用して、サーバーとの間で通信チャネルを確立することができる。アプリケーションのその部分は、コンピューターメモリーのハードウェアーベースのセキュアーな分離された領域に格納されているプレーンテキスト部分を含むことができる。いくつかの例においては、プレーンテキスト部分は、電子デバイスが復号キーをサーバーからダウンロードするために使用する標準のライセンスコードを含む。
【００７９】
[0085]ブロック５０６において、電子デバイスは、コンピューターメモリーのハードウェアーベースのセキュアーな分離された領域内で、復号キーを使用してアプリケーションの暗号化された部分を復号することができる。たとえば、電子デバイスは、アプリケーションの暗号化された部分をハードウェアーベースのセキュアーな分離された領域に格納することができる。次いで電子デバイスは、復号キーを使用して、ハードウェアーベースのセキュアーな分離された領域内の暗号化された部分を復号することができる。いくつかの例においては、電子デバイスのオペレーティングシステム、ハイパーバイザー、および／またはファームウェアーが、コンピューターメモリーのハードウェアーベースのセキュアーな分離された領域内のアプリケーションの復号された部分にアクセスすることを制限される。
【００８０】
[0086]いくつかの例においては、電子デバイスは次いで、アプリケーションを実行することができるということに留意されたい。たとえば、暗号化された部分を復号した後に、電子デバイスは、ハードウェアーベースのセキュアーな分離された領域内のアプリケーションの部分を実行することができる。加えて、電子デバイスは、ハードウェアーベースのセキュアーな分離された領域の外部に格納されているアプリケーションのいずれの部分も実行することができる。
【００８１】
[0087]図６は、ハードウェアーベースのセキュアーな分離されたテクノロジーを利用して復号キーを保護する例示的な方法の流れ図６００である。電子デバイスは、電子デバイスが永久ライセンスをサーバーから受信した場合に図６の方法を実行することができる。復号キーをセキュアーに格納することによって、電子デバイスは、アプリケーションをオフラインモードで実行することができる。
【００８２】
[0088]ブロック６０２において、ハードウェアーベースのセキュアーな分離されたテクノロジーは、コンピューターメモリーのハードウェアーベースのセキュアーな分離された領域内でシーリングキーを生成することを電子デバイスに行わせることができる。たとえば、電子デバイスのプロセッサーは、ハードウェアーベースのセキュアーな分離された領域内でシーリングキーを生成することをプロセッサーに行わせる、ハードウェアーベースのセキュアーな分離された領域に含まれているコンピューター可読命令（たとえば、コード）を実行することができる。いくつかの例においては、電子デバイスは、電子デバイスのプロセッサーおよび／またはハードウェアーベースのセキュアーな分離された領域に基づいてシーリングキーを生成する。そのような例においては、プロセッサーおよびハードウェアーベースのセキュアーな分離された領域を含む電子デバイスのみが、同じシーリングキーを生成することができる。
【００８３】
[0089]ブロック６０４において、電子デバイスのハードウェアーベースのセキュアーな分離されたテクノロジーは、シーリングキーを使用して、復号キーを暗号化することができ、ブロック６０６において、ハードウェアーベースのセキュアーな分離されたテクノロジーは、暗号化された復号キーをコンピューターメモリーに格納することを電子デバイスに行わせることができる。たとえば、電子デバイスは、ハードウェアーベースのセキュアーな分離された領域内に格納されているアプリケーションのプレーンテキスト部分内に含まれているコンピューター可読命令を実行することができ、コンピューター可読命令は、ハードウェアーベースのセキュアーな分離された領域内の復号キーを暗号化することを電子デバイスに行わせる。次いで電子デバイスは、暗号化された復号キーをコンピューターメモリーに格納することができる。いくつかの例においては、電子デバイスは、暗号化された復号キーを不揮発性メモリーに格納する。
【００８４】
[0090]アプリケーションをオフラインモードで実行するために、ハードウェアーベースのセキュアーな分離されたテクノロジーは、格納されている暗号化された復号キーをコンピューターメモリーから取り出すことができるということに留意されたい。次いで電子デバイスは、シーリングキーを使用して、ハードウェアーベースのセキュアーな分離された領域内の暗号化された復号キーを復号すること、およびその復号キーを使用して、アプリケーションの暗号化された部分を復号することが可能である。
【００８５】
[0091]図７は、電子デバイスが、アプリケーションに関連付けられた浮動権利を利用する例示的な方法の流れ図７００である。いくつかの例においては、浮動権利は、電子デバイスのユーザーに従う浮動ライセンスを含むことができる。たとえば、ユーザーが電子デバイスを使用してクレデンシャル（たとえば、ユーザー名およびパスワード）をサーバーに提供するたびに、サーバーは、アプリケーションを稼働させるための浮動ライセンスをその電子デバイスに送信することができる。
【００８６】
[0092]ブロック７０２において、電子デバイスが、アプリケーションに関する浮動権利に関連付けられた命令をサーバーから受信することができる。たとえば、電子デバイスは、その命令を、アプリケーションに関する復号キーとともにサーバーから受信することができる。いくつかの例においては、浮動権利は、アプリケーション用の浮動ライセンスを含む。そのような例においては、命令は、浮動ライセンスが依然として有効であるかどうかを決定するためにサーバーと継続的におよび／または定期的に通信することを電子デバイスのハードウェアーベースのセキュアーな分離された領域に行わせることができる。
【００８７】
[0093]ブロック７０４において、電子デバイスは、コンピューターメモリーに格納されているアプリケーションの第１の部分、およびコンピューターメモリーのハードウェアーベースのセキュアーな分離された領域に格納されているアプリケーションの第２の部分を使用して、アプリケーションを実行することができる。いくつかの例においては、アプリケーションの第１の部分は、プレーンテキストを含み、アプリケーションの第２の部分は、プレーンテキスト部分および暗号化された部分を含む。そのような例においては、プレーンテキスト部分は、復号キーを使用して、暗号化された部分を復号し、それによって電子デバイスは、アプリケーションを実行することができる。
【００８８】
[0094]ブロック７０６において、ハードウェアーベースのセキュアーな分離された領域は、サーバーと通信して、浮動権利が依然として有効であるかどうかを決定することができる。たとえば、いくつかの例においては、浮動権利は、電子デバイスのユーザーが一度に単一の電子デバイス上でのみアプリケーションを実行することができると指定することができる。そのような例においては、ハードウェアーベースのセキュアーな分離された領域は、定期的に（たとえば、１分ごとに、１時間ごとになど）サーバーと通信して、ユーザーが別の電子デバイスを使用してアプリケーションを実行しているかどうかを決定することができる。ユーザーが別の電子デバイスを使用してアプリケーションを実行しているということをサーバーが決定した場合には、サーバーは、その電子デバイスに関する浮動権利がもはや有効ではないということを決定することができる。しかしながら、ユーザーが別の電子デバイスを使用してアプリケーションを実行しているのではない場合には、サーバーは、その電子デバイスに関する浮動権利が依然として有効であるということを決定することができる。
【００８９】
[0095]ブロック７０８において、ハードウェアーベースのセキュアーな分離された領域は、浮動権利が有効ではないことに基づいて第２の部分の実行を終了することを電子デバイスに行わせることができ、またはブロック７１０において、ハードウェアーベースのセキュアーな分離された領域は、電子デバイスが、浮動権利が依然として有効であることに基づいてアプリケーションの第２の部分を引き続き実行することを可能にすることができる。
【００９０】
[0096]加えて、浮動ライセンスが依然として有効である場合には、ブロック７１２において、ハードウェアーベースのセキュアーな分離された領域は、遅延の後にサーバーと引き続き通信して、浮動権利が依然として有効であるかどうかを決定することができる。いくつかの例においては、その遅延は、定期的な遅延、たとえば、１分ごと、１時間ごとなどを含むことができる。サーバーと通信しているときに、ハードウェアーベースのセキュアーな分離された領域は、浮動権利がもはや有効ではないことに基づいてアプリケーションを実行するのを終了すること（ブロック７０８）、または浮動権利が有効であることに基づいてアプリケーションを引き続き実行すること（ブロック７１０）が可能である。
【００９１】
[0097]図８は、本明細書において記述されている、サーバーが電子デバイス上でのハードウェアーベースのセキュアーな分離されたテクノロジーを確認する第１の例示的な方法の流れ図８００である。ブロック８０２において、サーバーは、電子デバイスからデーターを受信することができる。たとえば、いくつかの例においては、サーバーは、電子デバイスの中央処理装置（ＣＰＵ）チップに関する識別子、電子デバイス上のコードが実際に、ハードウェアーベースのセキュアーな分離テクノロジーをサポートするデバイス上で稼働しているという証明、および／またはハードウェアーベースのセキュアーな分離された領域のダイジェストなど、電子デバイスからのアテステーション情報を受信することができる。
【００９２】
[0098]ブロック８０４において、サーバーは、電子デバイスがハードウェアーベースのセキュアーな分離されたテクノロジーを稼働させるように構成されているということを電子デバイスが決定しているということを、データーを使用して決定することができる。たとえば、サーバーは、電子デバイスが、信頼されているＣＰＵをセキュアーな分離されたテクノロジーとともに含むということを、そのＣＰＵに関する識別子を使用して決定することができる。いくつかの例においては、サーバーは、ＣＰＵチップをハードウェアーベースのセキュアーな分離されたテクノロジーに関連付ける情報を格納するデーターベースを使用して、電子デバイスがハードウェアーベースのセキュアーな分離されたテクノロジーを含むということを決定することができる。
【００９３】
[0099]ブロック８０６において、サーバーは、電子デバイスのハードウェアーベースのセキュアーな分離された領域がアプリケーションの少なくとも一部分を含むということを、データーを使用して決定することができる。たとえば、サーバーは、ハードウェアーベースのセキュアーな分離された領域のダイジェストが、ライセンス供与されているアプリケーションにマッチするということを決定することができる。いくつかの例においては、サーバーは、（データーからの）ハードウェアーベースのセキュアーな分離されたテクノロジーのダイジェストを使用して、アプリケーション（および／またはアプリケーションの一部分）が実際にハードウェアーベースのセキュアーな分離されたテクノロジー（たとえば、ハードウェアーベースのセキュアーな分離された領域）において稼働しているということを決定することができる。
【００９４】
[0100]ブロック８０８において、サーバーは、アプリケーションに関連付けられた復号キーを電子デバイスへ送信する。いくつかの例においては、サーバーはさらに、ライセンスが浮動ライセンスを含む場合には、アプリケーションに対応する命令を電子デバイスに送信することができる。
【００９５】
[0101]図９は、サーバーが電子デバイス上でのハードウェアーベースのセキュアーな分離されたテクノロジーを確認する例示的な方法の流れ図９００である。ブロック９０２において、サーバーは、電子デバイスからデーターを受信することができる。たとえば、いくつかの例においては、サーバーは、電子デバイスの中央処理装置（ＣＰＵ）チップに関する識別子、電子デバイス上のコードが実際に、ハードウェアーベースのセキュアーな分離テクノロジーをサポートするデバイス上で稼働しているという証明、および／またはハードウェアーベースのセキュアーな分離された領域のダイジェストなど、電子デバイスからのアテステーション情報を受信することができる。
【００９６】
[0102]ブロック９０４において、サーバーは、電子デバイスが、信頼されているＣＰＵをハードウェアーベースのセキュアーな分離されたテクノロジーとともに含むかどうかを決定する。いくつかの例においては、サーバーは、電子デバイスが、信頼されているＣＰＵをハードウェアーベースのセキュアーな分離されたテクノロジーとともに含むかどうかを、データーベースを使用して決定する。データーベースは、ＣＰＵチップを電子デバイス上のハードウェアーベースのセキュアーな分離されたテクノロジーに関連付ける情報を格納することができる。ブロック９０４においてサーバーが「いいえ」と決定した場合には、この方法はブロック９０６へ進み、ブロック９０６では、サーバーは、アプリケーションに関連付けられた復号キーを電子デバイスへ送信しない。しかしながら、ブロック９０４においてサーバーが「はい」と決定した場合には、この方法はブロック９０８へ進む。
【００９７】
[0103]ブロック９０８において、サーバーは、電子デバイス上のハードウェアーベースのセキュアーな分離されたテクノロジーのダイジェストが、ライセンス供与されているアプリケーションにマッチするかどうかを決定する。たとえば、サーバーは、（データーからの）ハードウェアーベースのセキュアーな分離されたテクノロジーのダイジェストを使用して、アプリケーション（および／またはアプリケーションの一部分）が実際にハードウェアーベースのセキュアーな分離されたテクノロジー（たとえば、ハードウェアーベースのセキュアーな分離された領域）において稼働しているかどうかを決定することができる。ブロック９０８においてサーバーが「いいえ」と決定した場合には、この方法はブロック９０６へ進み、ブロック９０６では、サーバーは、アプリケーションに関連付けられた復号キーを電子デバイスへ送信しない。しかしながら、ブロック９０８においてサーバーが「はい」と決定した場合には、この方法はブロック９１０へ進む。
【００９８】
[0104]ブロック９１０において、サーバーは、電子デバイスのユーザーおよび／または電子デバイスが、アプリケーションを使用するためのライセンスを有するということを決定する。たとえば、いくつかの例においては、サーバーは、電子デバイスのユーザーおよび／または電子デバイスがアプリケーション用のライセンスを含むかどうかを決定する。いくつかの例においては、サーバーは、電子デバイスのユーザーおよび／または電子デバイスが永久ライセンスを含むということを決定することができ、その一方でその他の例においては、サーバーは、電子デバイスのユーザーおよび／または電子デバイスが浮動ライセンスを含むということを決定することができる。ブロック９１０においてサーバーが「いいえ」と決定した場合には、この方法はブロック９０６へ進み、ブロック９０６では、サーバーは、アプリケーションに関連付けられた復号キーを電子デバイスへ送信しない。しかしながら、ブロック９１０においてサーバーが「はい」と決定した場合には、この方法はブロック９１２へ進む。
【００９９】
[0105]ブロック９１２において、サーバーは、アプリケーションに関連付けられた復号キーを電子デバイスへ送信する。いくつかの例においては、サーバーはさらに、ライセンスが浮動ライセンスを含む場合には、アプリケーションに対応する命令を電子デバイスに送信することができる。
【０１００】
[0106]図１０は、ハードウェアーベースのセキュアーな分離されたテクノロジーを利用して不正行為を防止するための第１の例示的な方法の流れ図１０００である。ブロック１００２において、電子デバイスが、セキュアーなコードを電子デバイスのハードウェアーベースのセキュアーな分離された領域の内部に格納することができる。たとえば、電子デバイスは、電子デバイス上で実行しているアプリケーションのコードをモニタするために電子デバイスが使用するセキュアーなコードを格納することができる。いくつかの例においては、セキュアーなコードは、電子デバイスがモニタしているアプリケーションの一部分を含むことができる。
【０１０１】
[0107]ブロック１００４において、電子デバイスは、アプリケーションを実行することができ、ブロック１００６において、電子デバイスは、セキュアーなコードを使用してアプリケーションのコードをモニタすることができる。たとえば、電子デバイスは、セキュアーなコードを使用して、（１）アプリケーションが適切に実行していないかどうかを決定すること、（２）コード変数をチェックして、それらの変数が正しいかどうかを決定すること、および／または（３）アプリケーションのコードのさまざまな部分をチェックすることが可能である。いくつかの例においては、電子デバイスは、定期的に実行中のアプリケーションをモニタすることができる。たとえば、電子デバイスは、１秒ごとに、１分ごとになど、アプリケーションが適切に実行しているかどうかを決定することができる。
【０１０２】
[0108]図１１は、ハードウェアーベースのセキュアーな分離されたテクノロジーを利用して不正行為を防止する第２の例示的な方法の流れ図である。ブロック１１０２において、電子デバイスおよび／または開発者が、電子デバイスのハードウェアーベースのセキュアーな分離された領域に格納するためのアプリケーションのデーター部分を決定することができ、ブロック１１０４において、電子デバイスは、アプリケーションのデーター部分をハードウェアーベースのセキュアーな分離された領域に格納することができる。たとえば、アプリケーションのデーター部分は、悪意あるユーザーが不正を行うために操作する可能性が高いデーターを含むことができる。いくつかの例においては、アプリケーションのデーター部分は、アプリケーションの可変データーを含むことができる。たとえば、アプリケーションがゲームを含み、そのゲームの状態がユーザーの健康レベルを含む場合には、電子デバイスは、健康レベルに関連付けられた可変データーをハードウェアーベースのセキュアーな分離された領域に格納することができる。
例示的な箇条
[0109]Ａ：  アプリケーションの第１の部分を電子デバイスのコンピューターメモリーに格納するステップと、アプリケーションの第２の部分を電子デバイスのコンピューターメモリーのセキュアーな分離された領域に格納するステップであって、アプリケーションの第２の部分が、暗号化された部分およびプレーンテキスト部分を含む、ステップと、プレーンテキスト部分を使用して、サーバーとの間でセキュアーな暗号化された通信チャネルを確立するステップと、セキュアーな暗号化された通信チャネルを使用して、データーをサーバーへ送信するステップと、データーを送信するステップに少なくとも部分的に基づいて、セキュアーな暗号化された通信チャネルを使用して、復号キーをサーバーから受信するステップと、復号キーを使用して、暗号化された部分を復号するステップとを含む方法。
【０１０３】
[0110]Ｂ：  電子デバイスが、信頼されている中央処理装置（ＣＰＵ）チップおよびセキュアーな分離された領域を含むということをサーバーが確認することを可能にするアテステーション情報をデーターが含む、パラグラフＡに記載の方法。
【０１０４】
[0111]Ｃ：  アテステーション情報が、ＣＰＵチップに関する識別子、電子デバイス上のコードが実際に、ハードウェアーベースのセキュアーな分離テクノロジーをサポートするデバイス上で稼働しているという証明、またはセキュアーな分離された領域のダイジェストのうちの少なくとも１つを含む、パラグラフＢに記載の方法。
【０１０５】
[0112]Ｄ：  アプリケーションの第１の部分、第２の部分のプレーンテキスト部分、および第２の部分の復号された部分を使用してアプリケーションを実行するステップをさらに含む、パラグラフＡからＣのいずれかに記載の方法。
【０１０６】
[0113]Ｅ：  セキュアーな分離された領域を使用して、シーリングキーを生成するステップと、シーリングキーを使用して、復号キーを暗号化するステップとをさらに含む、パラグラフＡからＤのいずれかに記載の方法。
【０１０７】
[0114]Ｆ：  暗号化された復号キーを不揮発性メモリーに格納するステップをさらに含む、パラグラフＥに記載の方法。
[0115]Ｇ：  プレーンテキスト部分が、復号キーをサーバーから取り出すためのライセンシングコードを含む、パラグラフＡからＦのいずれかに記載の方法。
【０１０８】
[0116]Ｈ：  暗号化された部分が、アプリケーションの使用にとって重要であるコードを含む、パラグラフＡからＧのいずれかに記載の方法。
[0117]Ｉ：  サーバーから命令を受信するステップをさらに含み、命令が、セキュアーな分離された領域が終了すべきかどうかを決定するためにサーバーと定期的に通信することをセキュアーな分離された領域に行わせる、パラグラフＡからＨのいずれかに記載の方法。
【０１０９】
[0118]Ｊ：  パラグラフＡからＩのいずれかに記載の方法を実行するように電子デバイスを構成するためのコンピューター実行可能命令が格納されているメモリー。
[0119]Ｋ：  少なくとも１つの処理ユニットと、コンピューター実行可能命令が格納されているコンピューターメモリーとを含むデバイスであって、コンピューター実行可能命令が、少なくとも１つの処理ユニットによって実行されたときに、パラグラフＡからＪのいずれかに記載の方法を実行するようにデバイスを構成する、デバイス。
【０１１０】
[0120]Ｌ：  少なくとも１つのプロセッサーと、メモリーとを含む電子デバイスであって、メモリーが、アプリケーションの第１の部分と、メモリーのセキュアーな分離された領域内のアプリケーションの第２の部分とを格納し、第２の部分が、アプリケーションを抽出から保護するための暗号化された部分、およびサーバーとの間で通信チャネルを開くためのプレーンテキスト部分を含み、プレーンテキスト部分が、コンピューター可読命令を含み、コンピューター可読命令が、少なくとも１つのプロセッサーによって実行されたときに、サーバーとの間で通信チャネルを確立することと、アプリケーションに関連付けられた復号キーをサーバーから通信チャネルを介して受信することと、復号キーを使用して、暗号化された部分を復号することとを少なくとも１つのプロセッサーに行わせる、電子デバイス。
【０１１１】
[0121]Ｍ：  セキュアーな分離された領域が、コンピューター可読命令を含み、コンピューター可読命令が、少なくとも１つのプロセッサーによって実行されたときに、通信チャネルを介してサーバーへデーターを送信することを少なくとも１つのプロセッサーに行わせ、データーが、電子デバイスがセキュアーな分離されたテクノロジーを含むということをサーバーが確認することを可能にするアテステーション情報を含む、パラグラフＬに記載のデバイス。
【０１１２】
[0122]Ｎ：  アテステーション情報が、プロセッサーに関する識別子、電子デバイス上のコードが実際に、ハードウェアーベースのセキュアーな分離テクノロジーをサポートするデバイス上で稼働しているという証明、およびセキュアーな分離された領域のダイジェストのうちの少なくとも１つを含む、パラグラフＭに記載のデバイス。
【０１１３】
[0123]Ｏ：  コンピューター可読命令がさらに、少なくとも１つのプロセッサーによって実行されたときに、セキュアーな分離された領域によって生成されたシーリングキーを使用して復号キーを暗号化することを少なくとも１つのプロセッサーに行わせる、パラグラフＬからＮのいずれかに記載のデバイス。
【０１１４】
[0124]Ｐ：  コンピューター可読命令がさらに、少なくとも１つのプロセッサーによって実行されたときに、暗号化された復号キーを不揮発性メモリーに格納することを少なくとも１つのプロセッサーに行わせる、パラグラフＯに記載のデバイス。
【０１１５】
[0125]Ｑ：  コンピューター可読命令がさらに、少なくとも１つのプロセッサーによって実行されたときに、通信チャネルを介してサーバーから命令を受信することであって、命令が、サーバーと通信するためのタイムインターバルを含む、受信することと、タイムインターバルに少なくとも部分的に基づいてサーバーと通信して、アプリケーション用のライセンスが依然として有効であるということを決定することとを少なくとも１つのプロセッサーに行わせる、パラグラフＬからＰのいずれかに記載のデバイス。
【０１１６】
[0126]Ｒ：  １つまたは複数のプロセッサーと、コンピューター実行可能命令を格納するメモリーとを含むシステムであって、コンピューター実行可能命令が、１つまたは複数のプロセッサーによって実行されたときに、電子デバイスからデーターを受信することであって、データーが、少なくとも、電子デバイスの中央処理装置（ＣＰＵ）チップの識別子、電子デバイス上のコードが実際に、ハードウェアーベースのセキュアーな分離テクノロジーをサポートするデバイス上で稼働しているという証明、およびセキュアーな分離された領域のダイジェストを含む、受信することと、電子デバイス上のコードが実際に、ハードウェアーベースのセキュアーな分離テクノロジーをサポートするデバイス上で稼働しているという証明を使用して、電子デバイスがセキュアーな分離されたテクノロジーを稼働させるように構成されているということを決定することと、セキュアーな分離された領域のダイジェストを使用して、電子デバイスのセキュアーな分離された領域がアプリケーションの少なくとも一部分を含むということを決定することと、復号キーを電子デバイスへ送信することとを１つまたは複数のプロセッサーに行わせる、システム。
【０１１７】
[0127]Ｓ：  コンピューター可読命令がさらに、１つまたは複数のプロセッサーによって実行されたときに、アプリケーションを実行するためのライセンスを電子デバイスが有するということを決定することを１つまたは複数のプロセッサーに行わせる、パラグラフＲに記載のシステム。
【０１１８】
[0128]Ｔ：  オペレーションがさらに、命令を電子デバイスへ送信することを含み、命令が、電子デバイス上でライセンスが依然として有効であるということを定期的にチェックすることをセキュアーな分離された領域に行わせる、パラグラフＳに記載のシステム。
【０１１９】
[0129]Ｕ：  データーを受信することが、セキュアーな分離された領域とサーバーとの間におけるセキュアーな暗号化された通信チャネルを介してデーターを受信することを含み、復号キーを送信することが、セキュアーな暗号化された通信チャネルを介して復号キーを送信することを含む、パラグラフＲからＴのいずれかに記載のシステム。
【０１２０】
[0130]Ｖ：  セキュアーな分離された領域のダイジェストが、アプリケーションのプレーンテキスト部分およびアプリケーションの暗号化された部分を含む、パラグラフＲからＵのいずれかに記載のシステム。
【０１２１】
[0131]Ｗ：  コンピューターメモリーのハードウェアーベースのセキュアーな分離された領域内でシーリングキーを生成するステップと、ハードウェアーベースのセキュアーな分離された領域内のシーリングキーを使用して、復号キーを暗号化するステップと、暗号化された復号キーをコンピューターメモリーに格納するステップとを含む方法。
【０１２２】
[0132]Ｘ：  パラグラフＷに記載の方法を実行するように電子デバイスを構成するためのコンピューター実行可能命令が格納されているメモリー。
[0133]Ｙ：  少なくとも１つの処理ユニットと、コンピューター実行可能命令が格納されているメモリーとを含むデバイスであって、コンピューター実行可能命令が、少なくとも１つの処理ユニットによって実行されたときに、パラグラフＷに記載の方法を実行するようにデバイスを構成する、デバイス。
【０１２３】
[0134]Ｚ：  アプリケーションに関する浮動権利に関連付けられた命令をサーバーから受信するステップと、コンピューターメモリーに格納されているアプリケーションの第１の部分、およびコンピューターメモリーのハードウェアーベースのセキュアーな分離された領域に格納されているアプリケーションの第２の部分を使用して、アプリケーションを実行するステップと、サーバーと通信して、浮動権利が依然として有効であるかどうかを決定するステップと、浮動権利が有効ではないことに少なくとも部分的に基づいてアプリケーションの第２の部分の実行を終了すること、または浮動権利が有効であることに少なくとも部分的に基づいてアプリケーションを引き続き実行することのうちの少なくとも１つを実行するステップとを含む方法。
【０１２４】
[0135]ＡＡ：  パラグラフＺに記載の方法を実行するように電子デバイスを構成するためのコンピューター実行可能命令が格納されているメモリー。
[0136]ＡＢ：  少なくとも１つの処理ユニットと、コンピューター実行可能命令が格納されているメモリーとを含むデバイスであって、コンピューター実行可能命令が、少なくとも１つの処理ユニットによって実行されたときに、パラグラフＺに記載の方法を実行するようにデバイスを構成する、デバイス。
【０１２５】
[0137]ＡＣ：  セキュアーなコードを電子デバイスのハードウェアーベースのセキュアーな分離された領域の内部に格納するステップと、アプリケーションを実行するステップと、セキュアーなコードを使用してアプリケーションのコードをモニタするステップとを含む方法。
【０１２６】
[0138]ＡＤ：  パラグラフＡＣに記載の方法を実行するように電子デバイスを構成するためのコンピューター実行可能命令が格納されているメモリー。
[0139]ＡＥ：  少なくとも１つの処理ユニットと、コンピューター実行可能命令が格納されているメモリーとを含むデバイスであって、コンピューター実行可能命令が、少なくとも１つの処理ユニットによって実行されたときに、パラグラフＡＣに記載の方法を実行するようにデバイスを構成する、デバイス。
結び
[0140]本技術は、構造的な特徴および／または方法論的な行為に特有の言葉で記述されてきたが、添付の特許請求の範囲は、記述された特徴または行為に必ずしも限定されるものではないということを理解されたい。むしろ、それらの特徴および行為は、そのような技術の例示的な実施態様として記述されている。
【０１２７】
[0141]例示的なプロセスのオペレーションは、個々のブロックで示されており、それらのブロックを参照しながら要約されている。プロセスは、ブロックの論理フローとして示されており、そのそれぞれのブロックは、ハードウェアー、ソフトウェアー、またはそれらの組合せで実施されることが可能である１つまたは複数のオペレーションに相当することが可能である。ソフトウェアーのコンテキストにおいては、オペレーションは、１つまたは複数のコンピューターメモリーに格納されたコンピューター実行可能命令に相当し、これらのコンピューター実行可能命令は、１つまたは複数のプロセッサーによって実行されたときに、示されたオペレーションを１つまたは複数のプロセッサーが実行することを可能にする。一般に、コンピューター実行可能命令は、特定の機能を実行する、または特定の抽象データー型を実施するルーチン、プログラム、オブジェクト、モジュール、コンポーネント、データー構造などを含む。各オペレーションが記述されている順序は、限定と解釈されることを意図されているものではなく、記述されているプロセスを実施するために、任意の数の記述されているオペレーションが任意の順序で実行されること、任意の順序で組み合わされること、複数のサブオペレーションへと細分されること、および／または並列に実行されることが可能である。記述されているプロセスは、１つもしくは複数の内部もしくは外部のＣＰＵもしくはＧＰＵなどの１つもしくは複数のデバイス１０６、１２０、２００、および／もしくは３００に関連付けられたリソース、ならびに／またはＦＰＧＡ、ＤＳＰ、もしくはその他のタイプのアクセラレーターなどの１片もしくは複数片のハードウェアーロジックによって実行されることが可能である。
【０１２８】
[0142]上述の方法およびプロセスのすべては、１つまたは複数の汎用コンピューターまたはプロセッサーによって実行されるソフトウェアーコードモジュールで具体化されること、およびそれらのソフトウェアーコードモジュールを介して完全に自動化されることが可能である。それらのコードモジュールは、任意のタイプのコンピューター可読ストレージメディアまたはその他のコンピューターストレージデバイスに格納されることが可能である。あるいは、これらの方法のいくつかまたはすべては、専用のコンピューターハードウェアーで具体化されることが可能である。
【０１２９】
[0143]数ある中でも、「ｃａｎ（できる、可能である）」、「ｃｏｕｌｄ（できる、可能である）」、「ｍｉｇｈｔ（できる、可能である）」、または「ｍａｙ（できる、可能である）」などの条件付きの言葉は、具体的に別段の記載がない限り、特定の特徴、要素、および／またはステップを特定の例は含み、その一方でその他の例は含まないということを提示するものと文脈内で理解される。したがって、そのような条件付きの言葉は一般に、特定の特徴、要素、および／もしくはステップが１つもしくは複数の例にとって何らかの形で必要とされているということ、または、特定の特徴、要素、および／もしくはステップがいずれかの特定の例に含まれるかどうか、もしくはいずれかの特定の例において実行されることになるかどうかを、ユーザー入力もしくはプロンプティングの有無を問わずに決定するためのロジックを１つもしくは複数の例が必ず含むということを意味することを意図されているものではない。「Ｘ、Ｙ、またはＺのうちの少なくとも１つ」というフレーズなどの接続的な言葉は、具体的に別段の記載がない限り、項目、用語などがＸ、Ｙ、もしくはＺのいずれか、またはそれらの組合せであることが可能であるということを提示するものと理解されたい。
【０１３０】
[0144]本明細書において記述されている、および／または添付の図において示されている流れ図におけるルーチンの記述、要素、またはブロックはいずれも、そのルーチンにおける特定の論理的機能または要素を実施するための１つまたは複数の実行可能な命令を含むコードのモジュール、セグメント、または部分を潜在的に表すものとして理解されたい。本明細書において記述されている例の範囲内には、代替実施態様が含まれ、これらの代替実施態様においては、当業者によってなら理解されるであろうが、含まれる機能性に応じて、要素もしくは機能が削除されること、または示されているもしくは論じられている順序から外れて（実質的に同時に、もしくは逆の順序でなど）実行されることが可能である。上述の例に対して多くの変形形態および修正形態が作成されることが可能であるということが強調されるべきであり、それらの要素は、その他の許容可能な例の中にあるものとして理解されたい。すべてのそのような修正形態および変形形態は、本明細書において本開示の範囲内に含まれること、および添付の特許請求の範囲によって保護されることを意図されている。
【図１】
2019517080.tif 000003
【図２】
2019517080.tif 000004
【図３】
2019517080.tif 000005
【図４】
2019517080.tif 000006
【図５】
2019517080.tif 000007
【図６】
2019517080.tif 000008
【図７】
2019517080.tif 000009
【図８】
2019517080.tif 000010
【図９】
2019517080.tif 000011
【図１０】
2019517080.tif 000012
【図１１】
2019517080.tif 000013
【国際調査報告】
2019517080.tif 000014
2019517080.tif 000015
2019517080.tif 000016