IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ カウル,ジェイソン トッドの特許一覧 ▶ ヒナーシッツ,スコット エドウィンの特許一覧 ▶ ロペス,ダビド ホセの特許一覧 ▶ マイ,ニャン フウの特許一覧 ▶ モンパー,エリック アレンの特許一覧

特表2023-553424オンダイ暗号化およびリモート認証によるデジタルコンテンツ管理
<>
  • 特表-オンダイ暗号化およびリモート認証によるデジタルコンテンツ管理 図1
  • 特表-オンダイ暗号化およびリモート認証によるデジタルコンテンツ管理 図2
  • 特表-オンダイ暗号化およびリモート認証によるデジタルコンテンツ管理 図3
  • 特表-オンダイ暗号化およびリモート認証によるデジタルコンテンツ管理 図4
  • 特表-オンダイ暗号化およびリモート認証によるデジタルコンテンツ管理 図5
  • 特表-オンダイ暗号化およびリモート認証によるデジタルコンテンツ管理 図6
  • 特表-オンダイ暗号化およびリモート認証によるデジタルコンテンツ管理 図7
  • 特表-オンダイ暗号化およびリモート認証によるデジタルコンテンツ管理 図8
  • 特表-オンダイ暗号化およびリモート認証によるデジタルコンテンツ管理 図9
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-12-21
(54)【発明の名称】オンダイ暗号化およびリモート認証によるデジタルコンテンツ管理
(51)【国際特許分類】
   G06F 21/12 20130101AFI20231214BHJP
   G06F 21/64 20130101ALI20231214BHJP
   G06F 21/57 20130101ALI20231214BHJP
   H04L 9/08 20060101ALN20231214BHJP
【FI】
G06F21/12 310
G06F21/64
G06F21/57 350
H04L9/08 B
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023534420
(86)(22)【出願日】2021-12-01
(85)【翻訳文提出日】2023-07-31
(86)【国際出願番号】 US2021061429
(87)【国際公開番号】W WO2022119935
(87)【国際公開日】2022-06-09
(31)【優先権主張番号】63/119,868
(32)【優先日】2020-12-01
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.VISUAL BASIC
2.JAVA
(71)【出願人】
【識別番号】523208316
【氏名又は名称】カウル,ジェイソン トッド
【氏名又は名称原語表記】KAUL, Jason Todd
(71)【出願人】
【識別番号】523208327
【氏名又は名称】ヒナーシッツ,スコット エドウィン
【氏名又は名称原語表記】HINNERSHITZ, Scott Edwin
(71)【出願人】
【識別番号】523208338
【氏名又は名称】ロペス,ダビド ホセ
【氏名又は名称原語表記】LOPEZ, David Jose
(71)【出願人】
【識別番号】523208349
【氏名又は名称】マイ,ニャン フウ
【氏名又は名称原語表記】MAI, Nhan Huu
(71)【出願人】
【識別番号】523208350
【氏名又は名称】モンパー,エリック アレン
【氏名又は名称原語表記】MOMPER, Eric Allen
(74)【代理人】
【識別番号】100145403
【弁理士】
【氏名又は名称】山尾 憲人
(74)【代理人】
【識別番号】100135703
【弁理士】
【氏名又は名称】岡部 英隆
(72)【発明者】
【氏名】カウル,ジェイソン トッド
(72)【発明者】
【氏名】ヒナーシッツ,スコット エドウィン
(72)【発明者】
【氏名】ロペス,ダビド ホセ
(72)【発明者】
【氏名】マイ,ニャン フウ
(72)【発明者】
【氏名】モンパー,エリック アレン
(57)【要約】
プラットフォーム内のプロセッサと、実行時にプロセッサが動作を実行するように構成する命令を含むメモリデバイスとを含む、デジタル著作権管理のためのシステム。動作は、オペレーティングシステムを開始する前に、デジタルメディアがプラットフォームにローカルにインストールされているかどうかを決定することと、デジタルメディアがインストールされていないと決定したことに応答して、認証データを生成し、暗号化されたメディアを介して認証ベースのデータをサーバに通信するように構成された第1のUEFIアプリケーションを起動することを含み得る。動作は、デジタルメディアのバイナリファイルおよび第1の復号鍵を受信すること、第1のUEFIアプリケーションのシーリングエンクレーブを使用してバイナリファイルのシーリングを実行することと、第1の鍵およびローカルエントロピに基づいてローカル復号の第2鍵を生成することも含み得る。動作は、シールされたバイナリファイルをローカルストレージにインストールすることも含み得る。
【特許請求の範囲】
【請求項1】
デジタル著作権管理のためのシステムであって、
プラットフォーム内の少なくとも1つのプロセッサと、
実行されると、前記少なくとも1つのプロセッサが動作を実行するように構成する命令を含む少なくとも1つのメモリデバイスと、を備え、前記動作は、
前記少なくとも1つのプロセッサのオペレーティングシステムを起動する前に、デジタルメディアがプラットフォームにローカルにインストールされているかどうかを決定することと、
前記デジタルメディアがローカルにインストールされていないと決定することに応答して、認証エンクレーブ内で認証データを生成し、暗号化されたメディアを介してサーバに認証ベースのデータを通信するように構成された第1の統合拡張ファームウェアインターフェース(UEFI)アプリケーションを起動することと、
前記サーバから、前記暗号化されたメディアを介して、前記デジタルメディアのバイナリファイルおよび第1の復号鍵を受信することと、
第1のUEFIアプリケーションのシーリングエンクレーブを使用して前記バイナリファイルのシーリングを実行し、第1の鍵およびローカルエントロピに基づいてローカル復号の第2の鍵を生成することであって、第2の鍵は、前記プラットフォームに一意である、ことと、
シールされたバイナリファイルを前記プラットフォームのローカルストレージにインストールすることと、
を含む、システム。
【請求項2】
前記動作は、
前記シールされたバイナリをインストールした後、前記オペレーティングシステムを起動する前に、第2のUEFIアプリケーションに前記シールされたバイナリをロードすることであって、前記第2のUEFIアプリケーションは、ブートエンクレーブを含む、ことと、
前記ブートエンクレーブ内の前記第2の鍵および暗号化エントロピを使用して、前記シールされたバイナリファイルを復号することと、
前記シールされたバイナリファイルの復号が成功した場合、前記デジタルメディアを開くか、または実行することと、
をさらに含む、請求項1に記載のシステム。
【請求項3】
前記暗号化されたメディアは、トランスポート層セキュリティ(TLS)暗号化チャネルを含み、
前記第1の鍵は、リベスト・シャミル・アドルマン(RSA)公開鍵を含み、
前記第2の鍵は、対称秘密鍵を含む、請求項2に記載のシステム。
【請求項4】
前記バイナリファイルを受信することは、前記認証エンクレーブ内で前記バイナリファイルの認証を検証することを含む、請求項1に記載のシステム。
【請求項5】
前記デジタルメディアは、前記少なくとも1つのプロセッサの隔離されたリソースを使用して仮想マシンを起動するように構成されたハイパーバイザを備え、
前記第1のUEFIアプリケーションは、
一意のオンダイ暗号化の一意のマテリアルを使用して複数の第3の鍵を生成し、
前記複数の第3の鍵を前記プラットフォームのモード固有レジスタに格納するようにさらに構成されている、請求項1に記載のシステム。
【請求項6】
前記動作は、前記複数の第3の鍵のうちの少なくとも1つを使用して、前記ハイパーバイザの仮想マシンを検証することをさらに含む、請求項5に記載のシステム。
【請求項7】
前記動作は、
前記デジタルメディアがローカルにインストールされているとの決定に応答して、第2のUEFIアプリケーションを起動することであって、前記第2のUEFIアプリケーションは、ブートエンクレーブを含む、ことと、
前記ブートエンクレーブ内の第2の鍵および暗号化エントロピを使用して、前記シールされたバイナリファイルを復号することと、
前記シールされたバイナリファイルの復号が成功した場合、前記デジタルメディアを実行することと、
をさらに含む、請求項1に記載のシステム。
【請求項8】
前記デジタルメディアは、更新回復スクリプトであり、
前記動作は、第2のUEFIアプリケーションを使用して、前記シールされたバイナリファイルを復号した後、回復命令を取得することをさらに含む、請求項1に記載のシステム。
【請求項9】
デジタル著作権管理のための方法であって、
プラットフォーム内のプロセッサのオペレーティングシステムを起動する前に、デジタルメディアがプラットフォームにローカルにインストールされているかどうかを決定することと、
前記デジタルメディアがローカルにインストールされていないとの決定に応答して、認証エンクレーブ内で認証データを生成し、暗号化されたメディアを介してサーバに認証ベースのデータを通信するように構成された第1のUEFIアプリケーションを起動することと、
前記サーバから、前記暗号化されたメディアを介して、前記デジタルメディアのバイナリファイルおよび第1の復号鍵を受信することと、
前記第1のUEFIアプリケーションのシーリングエンクレーブを使用して前記バイナリファイルのシーリングを実行し、第1の鍵およびローカルエントロピに基づいてローカル復号の第2の鍵を生成することであって、第2の鍵は、前記プラットフォームに一意である、ことと、
前記シールされたバイナリファイルを前記プラットフォームのローカルストレージにインストールすることと、
を含む方法。
【請求項10】
シールされたバイナリをインストールした後、前記オペレーティングシステムを起動する前に、第2のUEFIアプリケーションに前記シールされたバイナリをロードすることであって、前記第2のUEFIアプリケーションは、ブートエンクレーブを含む、ことと、
前記ブートエンクレーブ内の第2の鍵および暗号化エントロピを使用して、前記シールされたバイナリファイルを復号することと、
前記シールされたバイナリファイルの復号が成功した場合、前記デジタルメディアを開くか、または実行することと、
をさらに含む、請求項9に記載の方法。
【請求項11】
前記暗号化されたメディアは、トランスポート層セキュリティ(TLS)暗号化チャネルを含み、
前記第1の鍵は、リベスト・シャミル・アドルマン(RSA)公開鍵を含み、
前記第2の鍵は、対称秘密鍵を含み、
前記バイナリファイルを受信することは、前記認証エンクレーブ内でバイナリファイルの認証を検証することを含む、請求項10に記載の方法。
【請求項12】
前記デジタルメディアは、前記少なくとも1つのプロセッサの隔離されたリソースを使用して仮想マシンを起動するように構成されたハイパーバイザを含み、
前記第1のUEFIアプリケーションは、
一意のオンダイ暗号化の一意のマテリアルを使用して複数の第3の鍵を生成し、
前記複数の第3の鍵を前記プラットフォームのモード固有レジスタに格納するようにさらに構成されており、
前記方法は、前記複数の第3の鍵のうちの少なくとも1つを使用して前記ハイパーバイザの仮想マシンを検証すること、
をさらに含む、請求項9に記載の方法。
【請求項13】
前記デジタルメディアがローカルにインストールされているとの決定に応答して、第2のUEFIアプリケーションを起動することであって、前記第2のUEFIアプリケーションは、ブートエンクレーブを含む、ことと、
前記ブートエンクレーブ内の前記第2の鍵および暗号化エントロピを使用して、前記シールされたバイナリファイルを復号することと、
前記シールされたバイナリファイルの復号が成功した場合、前記デジタルメディアを実行することと、
をさらに含む、請求項9に記載の方法。
【請求項14】
前記デジタルメディアは、更新回復スクリプトであり、
前記方法は、前記第2のUEFIアプリケーションを使用して、前記シールされたバイナリファイルを復号した後、回復命令を取得することをさらに含む、請求項9に記載の方法。
【請求項15】
1つまたは複数のプロセッサと、
命令を含む1つまたは複数のメモリデバイスと、を備える装置であって、前記命令は、前記1つまたは複数のプロセッサを、
前記装置のオペレーティングシステムを起動する前に、デジタルメディアが前記装置にローカルにインストールされているかどうかを決定し、
前記デジタルメディアがローカルにインストールされていないとの決定に応答して、認証エンクレーブ内で認証データを生成し、暗号化されたメディアを介して認証ベースのデータをサーバに通信するように構成された第1のUEFIアプリケーションを起動し、
前記サーバから、前記暗号化されたメディアを介して、前記デジタルメディアのバイナリファイルおよび第1の復号鍵を受信し、
前記第1のUEFIアプリケーションのシーリングエンクレーブを使用してバイナリファイルのシーリングを実行し、前記第1の鍵およびローカルエントロピに基づいてローカル復号の第2の鍵を生成し、第2の鍵は、前記プラットフォームに一意であり、
前記シールされたバイナリファイルを前記プラットフォームのローカルストレージにインストールするように構成する、
装置。
【請求項16】
前記命令は、前記1つまたは複数のプロセッサを、
シールされたバイナリをインストールした後、前記オペレーティングシステムを起動する前に、前記シールされたバイナリを第2のUEFIアプリケーションにロードし、前記第2のUEFIアプリケーションは、ブートエンクレーブを含み、
前記ブートエンクレーブ内の前記第2の鍵および暗号化エントロピを使用して、前記シールされたバイナリファイルを復号し、
前記シールされたバイナリファイルの復号が成功した場合、前記デジタルメディアを開くか、または実行するように構成する、請求項15に記載の装置。
【請求項17】
前記暗号化されたメディアは、トランスポート層セキュリティ(TLS)暗号化チャネルを含み、
前記第1の鍵は、リベスト・シャミル・アドルマン(RSA)公開鍵を含み、
前記第2の鍵は、対称秘密鍵を含み、
前記バイナリファイルを受信することは、前記認証エンクレーブ内でバイナリファイルの認証を検証することを含む、請求項15に記載の装置。
【請求項18】
前記デジタルメディアは、前記少なくとも1つのプロセッサの隔離されたリソースを使用して仮想マシンを起動するように構成されたハイパーバイザを含み、
前記第1のUEFIアプリケーションは、
一意のオンダイ暗号化の一意のマテリアルを使用して複数の第3の鍵を生成し、
前記複数の第3の鍵を前記プラットフォームのモード固有レジスタに格納するようにさらに構成されており、
前記命令は、前記複数の第3の鍵のうちの少なくとも1つを使用して前記ハイパーバイザの仮想マシンを検証するように前記1つまたは複数のプロセッサをさらに構成する、請求項15に記載の装置。
【請求項19】
前記命令は、前記1つまたは複数のプロセッサを、
前記デジタルメディアがローカルにインストールされているとの決定に応答して、第2のUEFIアプリケーションを起動し、前記第2のUEFIアプリケーションは、ブートエンクレーブを含み、
前記ブートエンクレーブ内の前記第2の鍵および暗号化エントロピを使用して、前記シールされたバイナリファイルを復号し、
前記シールされたバイナリファイルの復号が成功した場合、前記デジタルメディアを実行するようにさらに構成する、請求項15に記載の装置。
【請求項20】
前記デジタルメディアは、更新回復スクリプトであり、
前記命令は、前記第2のUEFIアプリケーションを使用して、前記シールされたバイナリファイルを復号した後、回復命令を取得するように前記1つまたは複数のプロセッサをさらに構成する、請求項15に記載の装置。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、一般に、オンダイ暗号化およびリモート認証によるデジタルコンテンツ管理のためのコンピュータ化されたシステムおよび方法に関する。本開示の実施形態は、統一拡張ファームウェアインターフェース(UEFI)アプリケーションおよびプラットフォームのハードウェアに一意の暗号エントロピを使用する、ファームウェアベースのデジタル著作権管理のためのシステムおよび方法に関する。
【背景技術】
【0002】
デジタルメディアは簡単に複製して配布され得る。例えば、デジタルファイルは、劣化することなく無制限にコピーされ得、オンラインファイル共有ツールを通じてデジタルコピーを広範囲、簡単、迅速に配布し得る。所有者の許可なしに海賊版、不正使用、および/または操作が頻繁に行われるデジタル素材やコンテンツの配布と複製を保護することは困難である。デジタルメディアの本質的な再現性は、デジタルコンテンツ作成者にとって、消費者に提供する製品を慎重に保護することとバランスを取らなければならない困難な状況を作り出している。
【0003】
デジタルメディアの配布と複製を制御するために、いくつかの検証技術が開発されている。例えば、コンテンツ制作者は、プロダクト鍵を使用して作品の配布を保護しているが、これにはデジタルコンテンツのインストール時にシリアル番号またはコードの入力が必要である。他の検証技術は、同時に実行するコピーの数を制限したり(例えば、限定的なインストールアクティベーション)、および/またはユーザの定期的な認証を要求したりするために使用される認証サーバ(例えば、永続的なオンライン認証)に基づいている。さらに、他の検証技術は、デジタルコンテンツの暗号化を採用したり、例えば、改ざん防止方法、透かし、および/またはロックアウトリストを使用してデジタルコンテンツを制限したりすることがある。
【0004】
しかしながら、デジタルコンテンツを管理および保護するためのこれらの技術は、攻撃に対して脆弱であり、および/またはユーザとコンテンツ作成者の両方にとって不便になる。例えば、プロダクト鍵は、公開および/または漏洩されたときに侵害される。さらに、認証サーバは、制限を解除したり、および/または正当なユーザをロックアウトしたりする攻撃を受けている(例えば、DDOS攻撃による)。暗号化や地域ロックアウトなどの他の技術は、コンテンツプロバイダやユーザに大きな負担を与え、使いやすさやユーザフレンドリさを損なう。例えば、いくつかのデジタルメディア制限により、デジタルメディアが単一のデバイスにロックされ、可搬性やプラットフォームの独立性が妨げられる。さらに、いくつかのコンテンツプロバイダは、認証やトラステッドプラットフォームモジュール(TPM)に使用されるサーバの作成、保守、セキュリティ保護、保証が面倒すぎると考えている。さらに、オペレーティングシステムがハッキングまたは改ざんされると、認証サーバがだまされ得る。
【0005】
開示されたシステムおよび方法は、上記の問題および/またはこの分野で知られている他の問題のうちの1つまたは複数に対処する。
【発明の概要】
【0006】
本開示の一態様は、プラットフォーム内の少なくとも1つのプロセッサと、実行されると少なくとも1つのプロセッサが動作を実行するように構成する命令を含む少なくとも1つのメモリデバイスとを含む、デジタル著作権管理のためのシステムを対象とする。動作は、少なくとも1つのプロセッサのオペレーティングシステムを起動する前に、デジタルメディアがプラットフォームにローカルにインストールされているかどうかを決定すること、デジタルメディアがローカルにインストールされていないとの決定に応答して、認証エンクレーブ内で認証データを生成し、暗号化されたメディアを介してサーバに認証ベースのデータを通信するように構成された第1のUEFIアプリケーションを起動すること、サーバから、暗号化されたメディアを介して、デジタルメディアのバイナリファイルおよび第1の復号鍵を受信すること、を含み得る。この動作は、第1のUEFIアプリケーションのシーリングエンクレーブを使用してバイナリファイルのシーリングを実行し、第1の鍵およびローカルエントロピ(第2の鍵はプラットフォームに一意のもの)に基づいてローカル復号の第2の鍵を生成し、シールされたバイナリファイルをプラットフォームのローカルストレージにインストールすることも含み得る。
【0007】
本開示の他の態様は、デジタル著作権管理の方法を対象とする。この方法は、プラットフォーム内のプロセッサのオペレーティングシステムを起動する前に、デジタルメディアがプラットフォームにローカルにインストールされているかどうかを決定することと、(デジタルメディアがローカルにインストールされていないとの決定に応答して)認証エンクレーブ内で認証データを生成し、暗号化されたメディアを介して、認証ベースのデータをサーバに通信するように構成された第1のUEFIアプリケーションを起動することとを含み得る。この方法はまた、デジタルメディアのバイナリファイルおよび第1の復号鍵を(サーバから、暗号化されたメディアを介して)受信することを含み得る。この方法はまた、第1のUEFIアプリケーションのシーリングエンクレーブを使用してバイナリファイルのシーリングを実行し、第1の鍵およびローカルエントロピ(第2の鍵はプラットフォームに一意である)に基づいてローカル復号の第2の鍵を生成し、シールされたバイナリファイルをプラットフォームのローカルストレージにインストールすることを含み得る。
【0008】
本開示のさらに他の態様は、1つまたは複数のプロセッサと、1つまたは複数のプロセッサに、装置のオペレーティングシステムを起動する前に、デジタルメディアが装置にローカルにインストールされているかどうかを決定し、デジタルメディアがローカルにインストールされていないとの決定に応答して、認証エンクレーブに認証データを生成するように構成された第1のUEFIアプリケーションを起動し、認証ベースのデータを暗号化されたメディアを介してサーバに通信するように構成する命令を記憶する1つまたは複数のメモリデバイスを含む装置を対象とする。この命令はまた、デジタルメディアのバイナリファイルおよび第1の復号鍵を(サーバから、暗号化されたメディアを介して)受信するように装置を構成し得る。さらに、この命令は、第1のUEFIアプリケーションのシーリングエンクレーブを使用してバイナリファイルのシーリングを実行し、第1の鍵とローカルエントロピ(第2の鍵はプラットフォームに一意である)に基づいてローカル復号の第2の鍵を生成し、シールされたバイナリファイルをプラットフォームのローカルストレージにインストールするようにプロセッサを構成し得る。
【図面の簡単な説明】
【0009】
図1】開示された実施形態と一致する例示的なプラットフォームのブロック図である。
図2】開示された実施形態と一致する例示的なプロセッサのブロック図である。
図3】開示された実施形態と一致する保護されたデジタルメディアの例示的なUEFIベースの起動を示すブロック図である。
図4】開示された実施形態と一致する顧客のオフライン回復および更新インストールプロセスを示すブロック図である。
図5】開示された実施形態と一致する安全なハイパーバイザを介した仮想マシンにおけるデジタル著作権管理の例示的なプロセスのフローチャートである。
図6】開示された実施形態と一致するUEFIアプリケーション生成エンクレーブのブロック図である。
図7】開示された実施形態と一致するUEFIで保護されたデジタルコンテンツを起動するためのプロセスのフローチャートである。
図8】開示された実施形態と一致するリモート認証を介したデジタルコンテンツのUEFIベースのプロビジョニングのためのプロセスのフローチャートである。
図9】開示された実施形態と一致するプロセッサと認証サーバとの間の通信プロセスのタイミング図である。
【発明を実施するための形態】
【0010】
以下の詳細な説明は、添付の図面を参照する。可能な限り、図面および以下の説明では、同じまたは類似の部分を指すために同じ参照番号が使用される。いくつかの例示的な実施形態が本明細書に記載されているが、修正、適応、および他の実施が可能である。例えば、図面に示されるコンポーネントおよびステップに対して置換、追加、または修正を行い得、本明細書に記載される例示的な方法は、開示された方法のステップを置換、並べ替え、削除または追加することによって修正し得る。以下の詳細な説明は、開示された実施形態および実施例に限定されない。
【0011】
本開示のいくつかの実施形態は、UEFIアプリケーションがデジタルメディアのインストールおよび実行を制御するために使用され得る、統一拡張ファームウェアインターフェース(UEFI)強制デジタル著作権管理(DRM)システムを対象とされ得る。このような実施形態では、開示されるシステムおよび方法は、認証(例えば、リモート認証を使用)のためにプラットフォームの一意の暗号化エントロピを使用し、リモート認証プロセスを通じてプラットフォーム固有の暗号化鍵を生成し得る。開示されたシステムおよび方法は、強化されたDRMセキュリティおよび制御のためにハードウェア検証とソフトウェア検証の両方を組み込み得る。開示されたシステムおよび方法のそのような実施形態は、デジタルコンテンツの無許可の変更または実行を防止することによってコンピュータセキュリティを向上させ得る。
【0012】
さらに、開示されたシステムおよび方法は、例えば、オペレーティングシステムが起動される前など、早期にセキュリティポリシを実施することによって、DRMプロセスのセキュリティを向上させ得る。認証操作のセキュリティを強化し、プラットフォーム固有の署名を改ざんする潜在的な攻撃ベクトルを最小限に抑えるために、開示されたシステムおよび方法は、ブートファームウェア内(例えば、BIOSまたはUEFI内)で認証および暗号化/復号タスクを実行し得る。例えば、開示されたシステムおよび方法のいくつかの実施形態は、UEFIアプリケーションを使用して、プラットフォームのオペレーティングシステムを起動または開始することなく、リモート認証、認証、および復号タスクを実行し得る。このような実施形態では、開示されたシステムおよび方法は、プロビジョニングおよび/またはローダタスクを実行するために、一連のUEFIエンクレーブまたはアプリケーションを生成および使用し得る。UEFIエンクレーブにより、開示されたシステムおよび方法が認証においてオンダイ暗号化一意のマテリアルを組み込むことが可能になり得る。UEFIエンクレーブはまた、開示されたシステムおよび方法が、オンダイ暗号化マテリアルと併せてUEFI(またはBIOS)内からリモートウェブサーバへの安全な通信を使用してリモート認証タスクを実行することを容易にすることもし得る。このような実施形態では、UEFIアプリケーションを実行するプラットフォームは、UEFI動作に基づいてプロビジョニングおよび検証され得る。
【0013】
さらに、開示されたシステムおよび方法は、アプリケーションバイナリをUEFIパーティション内にシールして格納するプロセスについて説明する。この構成により、プラットフォームのブート中のペイロードバイナリの検証が容易になり得る。例えば、ブートエンクレーブは、エンクレーブ内から取得したプラットフォーム一意鍵を使用してペイロードバイナリを検証し得る。このようなプロセスは、プラットフォームとプラットフォームに送信されるバイナリの両方の検証を可能にすることで、コンピュータのセキュリティと安全性を向上させ得る。さらに、開示されたシステムおよび方法は、信頼できるプラットフォーム上でデジタルコンテンツを安全に実行し得る。例えば、いくつかの実施形態では、ペイロードが検証されると、ペイロードは、プラットフォーム上で安全なランタイム環境(SRE)に完全にブートされ得る。このプロセスは、オペレーティングシステムベースの攻撃に対して無敵になり得る早期のリモート認証メカニズムを展開することにより、コンピュータセキュリティとDRMの分野を改善し得る。
【0014】
開示されたシステムおよび方法は、仮想マシン(VM)にパススルーされ得る一意の暗号化鍵を備えたハイパーバイザカーネルを構築することによって、仮想マシン環境でDRMポリシを強制することもし得る。例えば、開示されたシステムおよび方法のいくつかの実施形態は、UEFIエンクレーブ内でオンダイ暗号化および/または一意の暗号化マテリアルを使用して、仮想モード固有レジスタ(MSR)に格納される一意の鍵を作成する動作を含み得る。これらの一意の鍵を使用して、DRMポリシをVMに拡張すると同時に、仮想MSR鍵ストアを使用して各VMに一意の鍵を作成し得る。
【0015】
さらに、開示されたシステムおよび方法は、プラットフォーム署名およびリモート認証に基づくアクセス制御を備えたハイパーバイザの安全な展開を容易にし得る。開示されたシステムおよび方法は、暗号化、復号、鍵導出関数(KDF)、エントロピ、およびソフトウェアガード拡張機能(SGX)などの暗号化技術の組み合わせを使用し得る。様々な暗号化技術を一意のハードウェア暗号化マテリアルと組み合わせることで、開示されたシステムおよび方法は、特定のハードウェアにバインドされたソフトウェアバイナリを構築し得る。さらに、開示されたシステムおよび方法は、特定のソフトウェアインストールを備えたプラットフォームを提供し得る。
【0016】
さらに、いくつかの実施形態では、開示されるシステムおよび方法は、リモート認証後に更新(または他の新しいソフトウェア)を検証されたプラットフォームにのみ送信することによって、更新または一般に新しいソフトウェアの展開を安全にし得る。例えば、開示されたシステムおよび方法は、UEFIBIOSおよびオンダイ暗号化マテリアルを介して更新または新しいソフトウェアを展開するときに、サーバおよびローカル暗号化を使用し得る。このような実施形態は、特定の検証済みプラットフォームにソフトウェアをプロビジョニングするための安全な方法を提供し得る。開示されたシステムおよび方法は、サイバーセキュリティと安全性の両方を向上させるために、展開されているプラットフォームとソフトウェアの両方を検証し得る。開示されたシステムおよび方法は、リモート認証およびオンダイ暗号化を使用して、検証済みコンテンツを検証済みプラットフォームにのみ展開することを容易にし得る。さらに、暗号化方式は、プロビジョニングウェブサーバとローカルプラットフォーム間の通信を保護し、システムの安全性とコンテンツが改ざんされていないことを保証するために特定の復号鍵を使用し得る。開示されたシステムおよび方法は、他のプロビジョニング方法の脆弱性を解決し、セキュリティを改善し、DRM管理の制御を改善し得る。
【0017】
次に、開示された実施形態を参照し、その例を添付の図面に示す。
【0018】
図1は、開示された実施形態と一致する例示的なプラットフォーム100のブロック図である。図1に示されるように、プラットフォーム100は、マザーボードおよび周辺機器を含み得る。
【0019】
マザーボードは、プロセッサ102を含み得る。いくつかの実施形態では、プロセッサ102は、任意の適切な処理デバイスおよび/または市販のプロセッサを含み得る。他の実施形態では、プロセッサ102は、互いに結合され、本開示と一致する機能を実行するように構成された複数のデバイスであり得る。例えば、プロセッサ102は、複数のコプロセッサまたはグラフィック処理ユニットを含み得、それぞれは、浮動小数点演算、グラフィックス、信号処理、文字列処理、暗号化、および/またはI/Oインターフェースなどの特定の演算を実行するように構成され得る。プロセッサ102は、図2に関連してさらに説明される。
【0020】
マザーボードは、コプロセッサ104も含み得る。コプロセッサ104は、プロセッサ102の機能を補い得る。いくつかの実施形態では、コプロセッサ104は、浮動小数点演算、グラフィックス、信号処理、文字列処理、暗号化、および/または周辺デバイスとのI/Oインターフェースの動作を実行し得る。コプロセッサ104は、プロセッサ集中型のタスクをプロセッサ102からオフロードし得、これによりプラットフォーム100のパフォーマンスを加速し得る。いくつかの実施形態では、コプロセッサ104は、カスタマイズされた動作を有し得る。例えば、コプロセッサ104は、カスタマイズされた動作を実行して、SREを初期化し、および/または分離されたドメイン間にファイアウォールを適用し得る。
【0021】
マザーボードは、クロック発生器106およびDRAM(ダイナミックランダムアクセスメモリ)108も含み得る。いくつかの実施形態では、クロック発生器106は、タイミング信号を生成するように構成された電子発振器を含み得る。クロック発生器106は、対称的な波形および/またはより複雑な構成を生成し得る。クロック発生器106は、共振回路および増幅器も含み得る。いくつかの実施形態では、クロック発生器106は、1つまたは複数の分周器、クロック逓倍器セクション、およびプログラマブルクロックを含み得る。クロック発生器106は、UEFIまたはBIOSブート中に、選択された値に設定され得る。
【0022】
DRAM108は、プロセッサ102の動作に使用されるソリッドステートメモリを含み得る。当業者は、DRAM108が複数のタイプのメモリを含み得、ランダムアクセスメモリに限定されないことを理解するであろう。いくつかの実施形態では、例えば、DRAM108は、読み取り専用メモリを含み得る。
【0023】
マザーボードは、UEFI/BIOS110も含み得る。UEFI/BIOS110は、ブートプロセス(パワーオンスタートアップ)中にハードウェア初期化を実行し、オペレーティングシステムおよびプログラムにランタイムサービスを提供するために使用される不揮発性ファームウェアを含み得る。いくつかの実施形態では、図7図9に関連してさらに説明されるように、UEFI/BIOS110は、1つまたは複数のエンクレーブを作成し、認証サービスと通信するための命令を含み得る。UEFI/BIOS110は、保護されたSREを起動する際のセキュリティハンドオフのための暗号化キーイングも含み得る。
【0024】
いくつかの実施形態では、UEFI/BIOS110ファームウェアは、OEM(相手先ブランド製造業者)によってコンピュータにプレインストールされ得、コンピュータの電源がオンになったときに最初に実行されるソフトウェアとなるように構成され得る。いくつかの実施形態では、UEFI/BIOS110は、システムハードウェアコンポーネントを初期化し、テストし得る。UEFI/BIOS110は、大容量メモリデバイスからブートローダをロードすることもし得、その後、隔離されたドメインを作成する仮想化層でハイパーバイザを初期化し得る。さらに、UEFI/BIOS110は、SRE内でホストされる仮想マシンをプロセッサ102内の隔離されたハードウェアリソースに接続するための暗号化鍵または命令を含み得る。
【0025】
マザーボードはまた、パワーリセット164を含み得、これは、マザーボードのコンポーネントを再初期化する、および/またはプラットフォーム100における現在の動作を終了するように構成され得る。いくつかの実施形態では、パワーリセット164は、コンポーネントを初期化し得、UEFI/BIOS110は、プラットフォーム100を再起動し、図3に関連して説明したDRMポリシを展開し得る。
【0026】
マザーボードは、周辺機器と通信するための1つまたは複数のブリッジコンポーネントも含み得る。いくつかの実施形態では、マザーボードは、USB(ユニバーサルシリアルバス)ブリッジ114、PCI(周辺コンポーネントの相互接続)バスブリッジ112、SCSI(小型コンピュータシステムインターフェース)バスブリッジ113、およびEISA(拡張された業界標準アーキテクチャ)バスブリッジ122を含み得る。
【0027】
マザーボードは、ビデオRAM126およびビデオプロセッサ124を含み得る。ビデオRAM126は、プロセッサ102とディスプレイとの間にバッファを含み得る。いくつかの実施形態では、ビデオRAM126は、フレームバッファを備えて実施され得るので、画像がディスプレイに送信されるとき、それらは最初にメイン(非ビデオ)RAMの形式からデータとしてプロセッサ102によって読み取られ、次に表示の準備のためにビデオRAM126に書き込まれ得る。ビデオプロセッサ124は、表示デバイスへの出力画像のフィードを生成し得る拡張カードを用いて実施され得る。いくつかの実施形態では、ビデオプロセッサ124は、専用のグラフィックスカードおよび/またはグラフィックス処理ユニット(GPU)を含み得る。
【0028】
さらに、マザーボードは、ネットワークバス120を含み得る。ネットワークバス120は、マザーボード、プラットフォーム100、およびマザーボードと通信または結合され得る他のコンポーネントの間の通信を提供するように構成された任意のタイプのネットワークへの接続を提供し得る。いくつかの実施形態では、ネットワークバス120は、インターネット、TLS通信、ローカルエリアネットワーク、近距離無線通信(NFC)、光学コードスキャナ、またはプラットフォーム100における情報の送受信を容易にする他の適切な接続など、通信を提供し、情報を交換し、および/または情報交換を容易にし得る任意のタイプのネットワークと接続するためのポートであり得る。
【0029】
図1に示されるように、周辺機器は、モニタ150、キーボード152、およびマウス153を含み得る。周辺機器は、ハードドライブ154、外部ストレージ160、モデム158、およびPCIスロット162も含み得る。本開示の実施形態は、プラットフォーム100が他の任意の適切な周辺デバイスを含み得ることも企図している。
【0030】
当業者であれば、プラットフォーム100の機能ビルディングブロックの構成および境界が、説明の便宜のためにここに図示されたことを理解するであろう。本開示の実施形態は、指定された機能およびその関係が適切に実行される限り、代替境界を実施し得ることを企図している。本明細書に含まれる教示に基づいて、代替案(本明細書に記載されたものの均等物、拡張、変形、変更などを含む)は、当業者には明らかであろう。このような代替案は、開示された実施形態の範囲および精神に含まれる。
【0031】
図2は、開示された実施形態と一致する例示的なプロセッサ102のブロック図を示す。プロセッサ102は、1つまたは複数のコア202、1つまたは複数のIキャッシュ204、1つまたは複数のDキャッシュ206、および1つまたは複数のL2キャッシュ208を含み得る。さらに、プロセッサ102は、1つまたは複数のメモリコントローラ210およびプラットフォームキャッシュ212を含み得る。
【0032】
コア202は、プロセッサ102の効率を高めるために並列タスクを実行するように構成され得る。いくつかの実施形態では、コア202は、物理的に別個のコアであり得る。他の実施形態では、コア202は、処理ユニットを仮想コアに分割し得るマルチスレッディングまたはハイパースレッディングを使用して仮想的に定義され得る。
【0033】
図2に示されるように、キャッシュメモリの第1レベルは、Iキャッシュ204およびDキャッシュ206を有するプロセッサ102内に分割され得る。Iキャッシュ204は、コア202に対する個々の命令を区切るためのプリコードを含み得る命令キャッシュを含み得る。いくつかの実施形態では、Iキャッシュ204は、デコード速度を改善するための命令を含み得る。Dキャッシュ206は、データキャッシュであり得る。Iキャッシュ204とDキャッシュ206との間のこの分割により、2つの小さなキャッシュが存在し得、1つは命令コードを排他的にキャッシュし、もう1つはデータを排他的にキャッシュする。ソフトウェアは、コードをデータ(グローバル変数、静的変数、定数など)から分離し得る。この構成により、実際の命令コード、ハードコードされたデータ、および動的に割り当てられたデータの間に空間的な分離が生じ、データ処理が容易になり得る。
【0034】
L2キャッシュ208は、Iキャッシュ204またはDキャッシュ206よりも容量が増加したレベル2キャッシュを含み得る。L2キャッシュ208は、プロセスとメモリの性能ギャップの橋渡しとして機能し、中断や待機状態を生じることなく、格納された情報をプロセッサ102に提供し得る。L2キャッシュ208は、データのアクセス時間を短縮するように構成することもし得る。例えば、L2キャッシュ208は、データが以前にすでにアクセスされている可能性があるイベントにおけるデータのアクセス時間を短縮し、その結果、データを再度ロードする必要がなくなり得る。いくつかの実施形態では、L2キャッシュ208は、バッファリング動作を実行し得、RAMと比較してより近い待機領域として機能するメモリからのデータを要求し得る。
【0035】
メモリコントローラ210は、プロセッサ102のメモリとの間でコア202などの処理ユニットに行き来するデータの流れを管理し得るデジタル回路を含み得る。いくつかの実施形態では、プロセッサ102は、各コア202に関連付けられた一意のキャッシュまたはキャッシュのグループを有するように構成され得る。さらに、および/またはその代わりに、ハードウェアコンポーネントを異なるコア間で共有し得る。リーク攻撃を防止するために、仮想化層は、コア202の1つだけ、または選択されたグループのメモリセクションを分離および隔離するようにメモリコントローラ210を構成し得る。メモリコントローラ210は、統合メモリコントローラ(IMC)および/またはメモリチップコントローラ(MCC)として実施され得る。
【0036】
いくつかの実施形態では、プロセッサ102は、異なるコア202間での情報の分散を容易にし得るより高いレベルのキャッシュを提供するために、プラットフォーム/L3キャッシュ212を含み得る。いくつかの実施形態では、プラットフォーム/L3キャッシュ212は、ネットワークパケット処理に必要な記述子、鍵、コンテキスト、およびその他のデータを格納し得る上位レベルのキャッシュを提供し得る。このような構成により、プロセッサ102は、データプレーンのトラフィックが外部メモリまたは周辺機器に流入しないようにし得る。UEFI/BIOS110から実施されるSREの仮想化層は、特定の攻撃に対する脆弱性を軽減するために、プラットフォーム/L3キャッシュ212のレジスタを特定の隔離されたドメインに分割し得る。
【0037】
プロセッサ102はまた、プロセッサ102における動作を管理または制御し得る1つまたは複数のモジュールを含み得る。いくつかの実施形態では、プロセッサ102は、検証済みUEFIブート214、分離マネージャ216、フラッシュコントローラ218、および電力管理220を含み得る。
【0038】
検証済みUEFIブート214は、OEMによって信頼されているソフトウェアのみを使用してブートを強制するモジュールであり得る。PCが起動すると、検証済みUEFIブート214ファームウェアは、例えば、BIOSファームウェアドライバ(オプションROMなど)、EFI(拡張ファームウェアインターフェース)アプリケーション、およびオペレーティングシステムを含むブートソフトウェアの各部分の署名をチェックし得る。署名が有効であれば、プロセッサ102が起動し、ファームウェアがオペレーティングシステムに制御を提供し得る。署名が無効である場合、プロセッサ102は、警告を生成し得る。分離マネージャ216は、ソフトウェアアプリケーション、テナント、および/またはエンクレーブを、互いに分離された特定のハードウェアコンポーネントとバインドするように構成され得る。いくつかの実施形態では、分離マネージャ216は、プロセッサ102のリソースを個々のソケットおよびブリッジチップにバインドし得る仮想トラステッドプラットフォームモジュール(TPM)を作成するマルチソケットシステムを構成し得る。分離マネージャ216は、特定のアプリケーションまたはテナントに対してハードウェアリソースをピン留めできるため、プロセッサ102を動作させるように構成された仮想化層は、スケジューラなしでハイパーバイザを実施し得る。
【0039】
フラッシュコントローラ218は、フラッシュカードとインターフェースし、フラッシュカードを操作するために使用され得る。いくつかの実施形態では、フラッシュコントローラ218は、例えば、SDカード、コンパクトフラッシュ(登録商標)カード、または他の同様のメディアなどの低デューティサイクル環境で動作し得る。電力管理220は、プロセッサ102の1つまたは複数のコンポーネントを制御して、電力管理ポリシを強制し、および/または特定の要素を無効にするように構成され得る。いくつかの実施形態では、電力管理220は、デマンドベーススイッチング(DBS)を実行して電力消費を最小限に抑え、ターボモードをアクティブにして性能を向上させ、および/または電力モード管理タスクを実行し得る。さらに、図6に関連してさらに説明するように、電力管理220は、潜在的なセキュリティ上の懸念のセキュリティレベルによって提供されるプロセッサ102の特定の要素を無効にし得る。
【0040】
いくつかの実施形態では、プロセッサ102は、外部容量モジュール222、UART(ユニバーサル非同期レシーバートランスミッター)モジュール224、SPI(シリアルペリフェラルインターフェース)モジュール226、およびUSBモジュール228などの追加のモジュールを含み得る。
【0041】
プロセッサ102はまた、1つまたは複数の入出力メモリ管理ユニット(IOMMU)を含むキャッシュコヒーレンシモジュール230を含み得る。キャッシュコヒーレンシモジュール230は、共有リソースを有するようにプロセッサ102内のキャッシュメモリを構成し得る。システム内のクライアントが共通のメモリリソースのキャッシュを維持する場合、特にマルチプロセッシングシステムでは、一貫性のないデータに関する問題が発生し得る。キャッシュコヒーレンシモジュール230は、複数のキャッシュ内のデータ値の一貫したビューを維持することによって、そのような競合を管理し得る。キャッシュコヒーレンシモジュール230内のIOMMUは、ダイレクトメモリアクセスI/Oバスをメインメモリに接続し得る。IOMMUは、CPUから見える仮想アドレスを物理アドレスに変換し、デバイスから見える仮想アドレス(この文脈ではデバイスアドレスまたはI/Oアドレスとも呼ばれる)を物理アドレスにマップし得る。さらに、IOMMUは、プロセッサ102内のキャッシュメモリを欠陥のあるデバイスまたは悪意のあるデバイスから保護し得る。いくつかの実施形態では、UEFI/BIOS110(図1)に格納されたファームウェアは、IOMMUを操作してリソースを隔離し、プロセッサ102からの専用ハードウェアコンポーネントを備えた分離ドメインを作成し得る。
【0042】
図2に示されるように、プロセッサ102は、モジュールPME(電力管理イベント)234を含む管理複合体も含み得る。いくつかの実施形態では、PME234は、UEFI/BIOSセットアップユーティリティを容易にする、および/またはシステムがシャットダウンされるときにネットワークカードへの電力を容易にするように構成され得る。UEFI/BIOS110は、図7図9に関連してさらに説明されるように、DRMプロセス用のアプリケーションを構成および実行するように構成され得る。さらに、UEFI/BIOS110は、分離されたドメインからリソースを固定するためにSREプロセスを実行し得る。さらに、管理複合体は、DCE(分散コーデックエンジン)232、セキュリティコントローラ238、バッファ管理240、およびI/Oプロセッサ242を含み得る。
【0043】
プロセッサ102はまた、キャッシュコヒーレンシモジュール230内のデータを制御するように構成されたバッファ248と、例えば、L2キャッシュ208とDキャッシュ206との間の交換を制御するように構成されたL2スイッチ250と、加速モジュール252とを含み得る。プロセッサ102は、シリアライザ/デシリアライザ256、1つまたは複数のPCIカード258、および1つまたは複数のSATA(シリアルアドバンストテクノロジアタッチメント)モジュール260を含み得る。さらに、プロセッサ102は、SR-IOV(シングルルートI/O仮想化)262用のモジュールを含み得る。
【0044】
図3は、開示された実施形態と一致する保護されたデジタルメディアの例示的なUEFIベースの起動を説明するブロック図300を示している。ブロック図300によって説明されるプロセスは、UEFIアプリケーションおよびリモート認証を通じてDRMを提供する。このような構成では、オペレーティングシステムを起動せずに、起動段階でリモート認証とオンダイ暗号化を組み合わせることにより、デジタルメディアを保護し、強制し得る。ブロック図300で説明されるプロセスは、デジタル著作権を特定のマシンに結び付け、改ざんの機会を最小限に抑えるため、コンピュータ動作のセキュリティを向上させる。
【0045】
ブロック図300は、プラットフォーム初期化302の初期段階を示している。例えば、いくつかの実施形態では、コンピュータ、サーバ、またはプラットフォーム100(図1)などのプラットフォームに電源が投入されるか、またはその他の方法で初期化される。プラットフォームのプロセッサ(例えば、プロセッサ102)は、ターゲットデジタルメディアがインストールされているかどうかをプロセッサが決定する発見動作304を実行し得る。例えば、UEFIベースのDRMを通じて強制されるデジタルメディアは、セキュアランタイム環境(SRE)を含み得る。このような実施形態では、発見動作304は、SREがインストールされているかどうかの決定を含み得る。発見動作304は、プラットフォーム内のメモリ位置を解析し、および/またはレジスタを分析するように構成されたUEFIアプリケーションによって実行され得る。あるいは、および/またはさらに、発見動作304は、プラットフォームにすでにインストールされているデジタルメディアを解析するBIOSベースのプログラムを含み得る。
【0046】
発見動作304により、デジタルメディアがインストールされていると決定された場合、プロセッサは、UEFIローダ306を実行、初期化、または起動し得る。図3に示されるように、UEFIローダ306は、ブートエンクレーブ310を含み得る。UEFIローダ306は、ブートエンクレーブ310を介してインストールされたメディアをロードするように構成され得る。いくつかの実施形態では、UEFIローダ306は、ディスクからブートするだけでなく、特定のディスク上の特定の場所にある特定のブートローダからブートすることによって、ディスクパーティションからエントリを読み取る機能を備えた拡張可能なファームウェアを含み得る。このような実施形態では、UEFIローダ306は、初期化時に初期化される実行可能フォーマットを定義し、その実行可能フォーマットを実行し得る。さらに、UEFIローダ306は、下位互換性を有し、例えば、BIOSファームウェアなどのシステムをブートし、マスターブートレコード(MBR)を検索し、そこからブートローダを実行できるようにし得る。
【0047】
図3に示されるように、いくつかの実施形態では、UEFIローダ306は、暗号化または復号動作を実行し得る。例えば、UEFIローダ306は、シールされた鍵312を使用してデジタルメディアを復号し得る。いくつかの実施形態では、シールされた鍵312はAES鍵を含み得る。AES鍵は、プラットフォームにローカルに格納され得る。しかしながら、いくつかの実施形態では、AES鍵は、他の場所から取得され得る。UEFIローダ306は、シールされた鍵312およびブートエンクレーブ310を使用して、ファイル(バイナリファイルなど)を復号するための復号動作314を実行し得る。復号動作314が成功すると、プロセッサは、ターゲットメディア(発見動作304で発見された)が開かれ、実行され、および/またはロードされるブートメディア動作316を実行し得る。
【0048】
発見動作304が否定的な結果(例えば、ターゲットデジタルメディアがプラットフォームにインストールされていない)を返す場合、プロセッサは、UEFIプロビジョニングアプリケーション320を初期化または開始し得る。図3に示されるように、UEFIプロビジョニングアプリケーション320は、シーリングエンクレーブ322および認証エンクレーブ324を含み得る。シーリングエンクレーブ322は、安全なデータ保存のための動作を実行するように構成され得る。例えば、シーリングエンクレーブ322は、メインメモリの一部であるエンクレーブ内にある場合にのみ保護データを提供し得る。したがって、シーリングエンクレーブ322は、一時的なもので破壊され得、エンクレーブ内で保護されているデータは、シーリング動作後に失われることになる。しかしながら、いくつかの実施形態では、シーリングエンクレーブ322は、データをエンクレーブの外側に格納するための特別な構成を通じてデータを再利用するように構成され得る。
【0049】
認証エンクレーブ324は、リモート認証サービスを実行するように構成され得る。例えば、図8に関連してさらに説明するように、認証エンクレーブ324は、リモートプロバイダ(信頼当事者またはチャレンジャ当事者としても知られる)がプラットフォームの身元を検証することを容易にするために、リモート認証タスクを実行し得る。認証エンクレーブ324は、認証されているソフトウェアを識別し、未測定状態の詳細(実行モードなど)を決定し、ソフトウェア改ざんの可能性を評価するための動作を実行し得る。いくつかの実施形態では、認証エンクレーブ324は、認証サーバへの暗号化された通信チャネルを作成して使用し得る。資格情報やその他の機密データなどの秘密は、認証エンクレーブ324に直接プロビジョニングされ得る。さらに、認証エンクレーブ324は、リモート認証または楕円曲線デジタル署名アルゴリズム(ECDSA)ベースのリモート認証のための拡張プライバシIDをサポートし得る。
【0050】
図3に示されるように、UEFIプロビジョニングアプリケーション320は、プロビジョニングサーバ326と通信し得る。いくつかの実施形態では、UEFIプロビジョニングアプリケーション320とプロビジョニングサーバ326との間の通信は暗号化され得る。例えば、図9に関連してさらに説明するように、UEFIプロビジョニングアプリケーションは、プロビジョニングサーバ326とのSSL/TLS暗号化通信を確立するように構成され得る。他のタイプの通信も考えられる。例えば、UEFIプロビジョニングアプリケーション320は、軽量暗号化、NSS、GnuTLS、PolarSSL、MatrixSSLを介してサーバに接続し得る。さらに、UEFIプロビジョニングアプリケーション320は、ブロックチェーン動作を通じてサーバに接続し得る。あるいは、UEFIプロビジョニングアプリケーション320は、暗号化せずにサーバに接続することもし得る。例えば、いくつかの実施形態では、UEFIプロビジョニングアプリケーション320およびサーバからの通信は、プラットフォームを検証するために認証ベースのデータとともに転送される物理デバイス(例えば、USBドライブまたはハードドライブ)を用いて実行され得る。
【0051】
プロビジョニングサーバ326は、プラットフォームの身元を検証するための動作を実行し得る。例えば、プロビジョニングサーバ326は、プラットフォームのホワイトリストまたはブラックリストを検証するためにイネーブルサーバ330と通信し得る。イネーブルサーバ330は、メディアバイナリ332および更新された鍵334を含み得る。メディアバイナリ332は、プラットフォームによってインストールまたは動作され、プラットフォーム初期化302中に初期化されるデジタルメディアであり得る。更新された鍵334は、メディアバイナリ332を暗号化および/または復号するように構成されたRSA鍵を含み得る。
【0052】
プロビジョニングサーバ326はまた、認証サービス328と通信し得る。認証サービス328は、リモート当事者を検証するための動作を実行し得る。認証サービス328は、アプリケーションの身元、アプリケーションが無傷であること(例えば、改ざんされていないこと)、およびアプリケーションがエンクレーブ内で安全に実行されていることの検証を提供し得る。場合によっては、エンクレーブのコンテンツは、同じプラットフォームからではなく、リモートからアクセスされ得る。認証サービス328は、認証エンクレーブ324がリモートアクセスを安全にすることを容易にし得る。これにより、機密メディアのリモート展開が可能になる。さらに、認証サービス328は、対称鍵システムと非対称鍵システムの両方を使用し得る。プロビジョニングサーバ326は、暗号化通信を介して鍵および認証データをUEFIプロビジョニングアプリケーション320に提供し得る。
【0053】
プロセッサは、メディアが認証に合格するかどうかをプロセッサが決定する検証動作340を実行し得る。サーバから受信した鍵と認証データに基づいて、プロセッサは、メディアが認証に合格したかどうかを決定し、ロックを解除し得るかどうかを決定し得る。検証動作340が失敗した場合、プロセッサは、動作を停止し、停止メッセージ342を生成し、および/または失敗した検証を記録し得る。検証動作340が成功した場合、プロセッサは、シールされた鍵346を使用して復号動作344を実行し得る。シールされた鍵346は、プロビジョニングサーバ326および/または認証サービス328から受信したAES鍵を含み得る。
【0054】
いくつかの実施形態では、暗号化された媒体は、トランスポート層セキュリティ(TLS)暗号化チャネルであり得、初期鍵(例えば、更新鍵334)は、リベスト・シャミル・アドルマン(RSA)公開鍵を含み得、シールされた鍵346は、対称秘密鍵を含み得、バイナリファイルを受信することには、認証エンクレーブ内のバイナリファイルの認証を検証することを含み得る。
【0055】
メディアバイナリ332が復号されると、UEFIブートパーティション348は、秘密鍵350を使用してシールされたバイナリを開封する復号動作314を実行し得る。秘密鍵350は、バイナリファイルを復号するように構成されたRSA秘密鍵を含み得る。復号が成功すると、その後、ブートメディア動作316が行われる。
【0056】
図4は、開示された実施形態と一致する、顧客のオフライン回復および更新インストールプロセスを説明するブロック図400を示している。いくつかの実施形態では、バックアップファイルおよび/または回復ファイルは、図3で説明されるUEFIベースのDRMプロセスを通じて配信され、保護され得る。ブロック図400は、プラットフォーム上のシステム統合および検証を完了するためのプロセスを説明する。ブロック図400は、顧客のオフライン回復およびターゲットプラットフォームへの更新インストールの使用例を説明する。
【0057】
バックアップUEFIブートパーティション402は、プラットフォームの初期化中に初期化(または起動)され得る。ブートパーティション402は、複数のシールされたUEFIバックアップ406および更新パッケージ408を格納し得る顧客/ディレクタストレージと通信し得る。プラットフォームの初期化中に、バックアップUEFIブートパーティション402は、プラットフォームの認証データに基づいて、シールされたUEFIバックアップ406のうちの1つまたは複数を識別し得る。次に、識別されたUEFIバックアップ406は、UEFIローダ306(図3)と同様に構成され得るバックアップUEFIローダ410にロードされ得、ブートエンクレーブ412は、メディアバックアップを初期化するためのブート動作を実行し得る。
【0058】
ブート動作は、プラットフォームノード420で実行され得る。バックアップまたは更新動作により、インストールされる更新パッケージまたはバックアップパッケージが特定されると、パッケージは、インストールのためにプラットフォームノードに送信され得る。プラットフォームノードはまた、顧客のオフライン更新/回復データ414を受信することもし得、顧客/ディレクタストレージ404にない可能性のある更新または回復を独立してインストールするオプションをユーザに与える。プラットフォームノードは、図3に関連して前述したコンポーネントを含み得る。プラットフォームノード420は、ブートエンクレーブ308を備えたUEFIローダ306と、回復シールされたバイナリを復号するように構成された秘密鍵350を備えたUEFIブートパーティション348とを含み得る。
【0059】
ブロック図400は、いくつかの実施形態において、プロセッサがクライアントプラットフォームにおける回復または更新のためにUEFI強制DRMポリシを使用し得ることを示している。図4に示されるように、回復/更新は、オンラインまたはオフラインで実行され得る。例えば、いくつかの実施形態では、UEFI-DRMで保護されたコンテンツは、更新回復スクリプトであり得、UEFIローダ306は、第2のUEFIアプリケーションを使用してシールされたバイナリファイルを復号した後に回復命令を取得するように構成され得る。
【0060】
図5は、開示された実施形態と一致する、安全なハイパーバイザを介した仮想マシンにおけるデジタル著作権管理のための例示的なプロセス500のフローチャートである。プロセス500は、プラットフォーム100(図1)またはプロセッサ102(図2)によって実行され得る。さらに、および/または代わりに、プロセッサ内のアプリケーションの異なる層が、プロセス500の特定のステップを実行し得る。例えば、UEFIアプリケーションは、プロセス500の一部のステップを実行する一方で、仮想マシンルートは、プロセス500の他のステップを実行し得る。さらに、SREテナントは、プロセス500の特定の動作を実行し得、仮想マシンOSは、プロセス500の特定のステップを実行し得る。
【0061】
ステップ502で、UEFIブートアプリケーションは、プラットフォームのブートアップまたは初期化の一部として初期化し得る。例えば、図3に関連してさらに説明するように、プロセッサは、発見動作304(図3)などの発見のためにUEFIアプリケーションを初期化し得る。ステップ504で、プラットフォーム100(またはプロセッサ102)は、エンクレーブを作成し得る。例えば、UEFIブートアプリケーションを通じて、プロセッサは、認証エンクレーブ324などのブートエンクレーブまたは認証エンクレーブを生成し得る。いくつかの実施形態では、ステップ504のエンクレーブは、ソフトウェア・ガード・エクステンション(SGX)エンクレーブを含み得、保護され、エンクレーブ自体の外部のプロセスによって読み取りも保存もできないコンテンツを含むメモリのプライベート領域を定義するように構成され得る。さらに、ステップ504のエンクレーブは、プラットフォーム自体内でのみオンザフライで復号され得る。さらに、いくつかの実施形態では、エンクレーブは、エンクレーブ自体内から実行されるコードおよびデータを動作することのみに制限され得る。このような構成は、エンクレーブ内のコードを他のコードによって「スパイされる」または検査されることから保護し得る。
【0062】
さらに、いくつかの実施形態では、ステップ504で作成されたエンクレーブ内のコードおよびデータは、エンクレーブは、信頼されるが、その外部のプロセスは、信頼できない(オペレーティングシステム自体および任意のハイパーバイザを含む)脅威モデルを利用し得、したがって、これらは、潜在的に敵対的なものとして扱われる。このような実施形態では、エンクレーブのコンテンツは、暗号化された形式以外では、エンクレーブの外部のいかなるコードによっても読み取ることができ得ない。
【0063】
ステップ506で、プラットフォーム100は、鍵を取得し得る。例えば、プロセッサ102(図2)は、サーバと通信して、AES鍵および/またはRSA鍵を取得し得る。ステップ507で、プラットフォームは、鍵を受信および/またはシールして、シールされた鍵を生成し得る。
【0064】
ステップ508で、プラットフォーム100は、ステップ506で取得された鍵を使用して鍵導出機能(KDF)を実行し得る。例えば、プラットフォームは、UEFIエンクレーブの1つを介して鍵導出ポリシを指定する動作を実行し得る。いくつかの実施形態では、プラットフォームエンクレーブは、信頼できる値および/またはエンクレーブの属性の使用を許可するポリシを強制し得る。さらに、KDFは、割り当てられていないフィールドを自動的にゼロに設定するなど、プラットフォーム固有のポリシを使用し得る。ステップ508は、プラットフォーム固有の値または変数も含み得る。例えば、ステップ508で、プラットフォーム100は、ユーザからのエントロピを追加し得る(例えば、所有者エポックが導出中にパラメータとして使用され得る)。この値は、ブート時にパスワードを導出することで構成され得、電源を入れ直すたびに不揮発性メモリに保存され得る。
【0065】
次いで、ステップ508からの導出鍵は、ステップ522でメディアを復号するために使用され得、プラットフォームは、メディアを開封または復号し得る。例えば、図3に関連して説明したように、プラットフォーム100は、プロビジョニングサーバ326から受信したデジタルメディアを復号するように構成され得る。次に、ステップ524で第2のKDFを介して、および/またはステップ520でハッシュ関数を使用して、メディアを再度保護し得る。データが取得された鍵で復号され、新しい機能のためにオンダイエントロピを使用して再度保護されると、プラットフォームは、ステップ526でUEFIアプリケーションを終了し得る。
【0066】
いくつかの実施形態では、ステップ502~526は、プロセッサ内で実行されるUEFIアプリケーションによって実行され得る。例えば、プロセッサ102(図2)内のUEFIアプリケーションは、ステップ502~526の動作を実行し得る。さらに、および/または代わりに、ステップ502~526は、仮想マシンを起動するための安全なエンクレーブを作成するSREUEFIアプリケーションによって実行され得る。
【0067】
ステップ528で、プラットフォーム100は、UEFIアプリケーションから仮想マシンをブートし得る。例えば、プラットフォーム100は、UEFIからの検証済みの強制ブートを実行して、保護された環境を起動し得、これにより、ユーザは、プロセッサ102のリソースをエンクレーブに対して隔離できるようになる。いくつかの実施形態では、ステップ528で開始される保護された環境は、プロセッサ102をクロスドメイン攻撃から保護し得る分離ドメインを作成し得る。したがって、ステップ528で、プラットフォーム100は、漏洩、変更、および権限昇格攻撃(privilege escalation attacks)を回避する保護された環境を作成し得る。保護された環境は、PCH(プラットフォームコントローラハブ)および各プロセッサの一意の識別子を使用してユーザアプリケーションを仮想化ゲストにバインドすることによって、特定のプロセッサ102リソースを備えた隔離ドメインを作成し得る。例えば、保護された環境は、プロセッサ102から対応するエンクレーブ、仮想マシン、カーネル、および/またはユーザアプリケーションにリソースを割り当てるマルチソケットシステムを確立し得る。いくつかの実施形態では、仮想マシンのブートは、プロセッサリソースを分離するためにブリッジングチップまたはPCIeカードのアドレスおよび/またはレジスタを操作し得る。
【0068】
さらに、分離されたドメインを保護および作成するために、ステップ528での仮想マシンのブートにより、オンチップファイアウォールポリシが作成され得る。いくつかの実施形態では、保護された環境は、PCIeデバイスを暗号的に特定の仮想マシンゲストまたはアプリケーションテナントに直接マッピングし得る。保護された環境は、ファイアウォールによって設定されたルールに基づいて特定のリソースへのアクセスを制限するルールまたはポリシを実施し得る。さらに、保護された環境は、プロセッサリソースへのアクセスを制限し、プロセッサ102の個々のリソース、コアリソース、およびメモリリソースを保護するための組み込みセキュリティポリシを有するタイプ0またはタイプ1のハイパーバイザを実施し得る。保護された環境は、特定のエンクレーブからの処理要求を関連付け、特定のリソースにアクセスできるかどうか、または特定のドメインに要求をルーティングするかどうかを決定する、階層化プロトコル、ラッパー、またはコンテンツアドレス指定可能なメモリフィルタを含み得る。さらに、ステップ528で展開される保護された環境は、正規表現マッチングを実行するか、ペイロードスキャナを実施して、処理要求のアクセスまたはルートを決定し得る。
【0069】
保護された環境およびステップ528で起動された仮想マシンは、保護され得る。例えば、ステップ512で、エンジンハッシュは、ユーザポリシ、署名、および/またはオンダイエントロピに基づくハッシュ関数を生成し得る。エンジンハッシュは、第3のKDF514に使用され得る。このようにして、UEFIエンクレーブ内の一意の暗号化マテリアルは、ハイパーバイザが、ステップ528中にこれらの鍵を起動したVMに利用可能にするように、仮想モード固有レジスタ(MSR)に格納され得る追加の一意の鍵を作成するためのエントロピのソースとして使用され得る。図5に示される構成は、仮想MSR鍵ストアを使用してVMごとに一意の鍵を作成すると同時に、オンダイDRMをVMに拡張し得る。いくつかの実施形態では、ステップ514およびステップ528は、仮想マシンルートによって実行され得る一方、ステップ512は、テナントポリシに実行または格納され得る。
【0070】
ステップ516で、プラットフォーム100は、インスタンス鍵ごとにマルチ鍵合計メモリ暗号化を実行し得る。例えば、プラットフォーム100は、複数の暗号化鍵を構築およびサポートするための動作を実行し得る。このような実施形態では、SREテナントは、暗号化鍵をサポートするためにセキュリティ動作を実行し得る。プラットフォーム100は、利用可能な鍵のサブセットを構成し得るソフトウェアを実行することもし得る。ステップ516はまた、不揮発性メモリを提供すること、または認証メカニズムと組み合わせられる場合、および/または鍵プロビジョニングサービスと併用される場合に、提供することを含み得る。
【0071】
ステップ530で、プラットフォーム100は、仮想CPUのインスタンスを生成し、モデル固有のレジスタ鍵ストレージを使用して検証鍵を割り当て得る。例えば、ステップ530で、プラットフォーム100は、ステップ516で指定されたアドレスに従ってハイパーバイザをロードするブートローダを実行し得る。このような実施形態では、プラットフォーム100は、マルチブート情報(MBI)構造を通じてメモリ情報を渡すためのフラグを設定するマルチブートヘッダを備えて構築されたハイパーバイザを動作させ得る。さらに、プラットフォーム100は、仮想MSR内の鍵を使用してVCPUを検証し得る。
【0072】
したがって、いくつかの実施形態では、UEF1強制DRMプロセスは、少なくとも1つのプロセッサの隔離されたリソースを用いて仮想マシンを起動するように構成されたハイパーバイザを確保し得る。このような実施形態では、UEFIアプリケーションは、一意のオンダイ暗号化の一意のマテリアルを使用して複数の第3の鍵を生成し、複数の第3の鍵をプラットフォームのモード固有レジスタに格納するように構成され得る。プロセス500は、複数の第3の鍵のうちの少なくとも1つを使用して、ハイパーバイザ上の仮想マシンの検証を容易にし得る。
【0073】
ステップ532で、暗号化されたディスクおよび/またはエンクレーブが、特定のオペレーティングシステムまたはユーザアプリケーション用にユーザに与えられ得る。例えば、ステップ532で、リナックス(登録商標)ユニファイドキーセットアップ(LUKS)をディスク暗号化仕様として使用し得る。他のディスク暗号化や、検証済みのVCPUからのターゲットアプリケーションも検討されている。例えば、ステップ532で、プラットフォーム100は、他のタイプの仮想マシンを実行するか、または異なるオペレーティングシステムを実行し得る。
【0074】
図6は、開示された実施形態と一致するエンクレーブを生成するUEFIアプリケーションのブロック図600である。ブロック図600の要素は、プラットフォーム100の一部であり得る。例えば、ブロック図600の要素は、プロセッサ102によって実施され得る。
【0075】
図6に示されるように、エンクレーブ602は、セキュリティ命令コードをエンクレーブバイナリイメージ604に通信し得る。エンクレーブ602は、ベアメタルオペレーティングシステムによってサポートされ得る、および/または特定のマッピングまたはイベントへのリンクを含み得る。さらに、ステップ504(図5)でエンクレーブ602を作成し得る。エンクレーブバイナリイメージ604はまた、UEFIプロビジョニングアプリケーション320またはUEFIローダ306(図3)を含み得るUEFIアプリケーション610と通信することもし得る。UEFIアプリケーション610は、図3および図5に関連して説明されたUEFIアプリケーションのいずれでもあり得る。代替的に、および/または追加的に、UEFIアプリケーション610は、UEFIローダ306またはUEFIブートパーティション348(図4)として実施され得る。
【0076】
UEFIアプリケーション610は、パーサ/ローダ612、エンクレーブ呼び出し元616、エンクレーブアプリケーションプログラミングインターフェース(API)614、およびエンクレーブページキャッシュ(EPC)API618を含み得る。パーサ/ローダ612は、エンクレーブAPI614およびEPCAPI618の両方と通信するように構成され得る。例えば、パーサ/ローダ612は、作成要求をエンクレーブAPI614に送信し得る。いくつかの実施形態では、作成要求は、エンクレーブ制御構造およびスレッド制御構造を指定し得る。さらに、パーサ/ローダ612は、初期化命令をエンクレーブAPIに送信して、例えば、図3に関連して説明したようにセキュリティ鍵を使用してエンクレーブを初期化することもし得る。パーサ/ローダ612はまた、メモリ空間またはエンクレーブアドレス指定を追加する要求をEPCAPI618に送信することもし得る。エンクレーブ呼び出し元616は、ページリクエストをエンクレーブAPI614に送信するように構成可能であり得る。
【0077】
エンクレーブAPI614とEPCAPI618は両方とも、CPU608と通信し得る。例えば、図6に示されるように、エンクレーブAPI614は、エンクレーブの作成、エンクレーブの初期化、または制御の転送のための命令を送信し得る。例えば、エンクレーブAPI614は、エンクレーブのアドレス空間および信頼のルートを定義する新しいエンクレーブをインスタンス化するためのECREATE命令を送信し得る。エンクレーブAPI614はまた、アプリケーションからエンクレーブ内の所定の場所に制御を移すためのEENTERなどの命令を送信することもし得る。さらに、エンクレーブAPI614は、エンクレーブ構造を検証するための命令を送信するように構成され得る。例えば、エンクレーブAPI614は、EINIT命令を送信して、トークン構造を検証し、エンクレーブの実行が許可されているかどうかを決定し得る。
【0078】
同様に、EPCAPI618も、CPU608と通信し、動作を送信するように構成され得る。例えば、図6に示されるように、EPCAPI618は、ページを削除または追加する動作を送信し得る。EPCAPI618は、EADD命令を送信して、新しいページをエンクレーブに追加し得る。このような実施形態では、CPU608のオペレーティングシステムが、ページおよびそのコンテンツの選択を単独で担当し得る。あるいは、および/またはさらに、EPCAPI618は、EREMOVEの動作を送信して、エンクレーブからページを永久に削除し得る。
【0079】
UEFIアプリケーション610内のAPIと通信することに加えて、CPU608は、図6で説明されるようなコンテンツブロックを含むメモリ構造であり得るエンクレーブページキャッシュ(EPC)606とも通信し得る。例えば、エンクレーブページキャッシュ606は、SGXエンクレーブ制御構造(SECS)などの制御構造を含み得る。各エンクレーブは、そのメタデータ(例えば、ハッシュやサイズ)を含む制御構造に関連付けられ得る。制御構造は、安全なコードを介して、プロセッサ自体によってのみアクセス可能であり得る。エンクレーブページキャッシュ606はまた、エンクレーブ制御アクセスを提供し得る少なくとも1つのスレッド制御構造に関連付けられ得る。さらに、スレッド制御構造は、エンクレーブへの実行ポイントを示し得る。エンクレーブページキャッシュ606は、例外および割り込み処理中にプロセッサの状態を保存するために使用される1つまたは複数の状態保存領域(SSA)をも含み得る。さらに、エンクレーブページキャッシュ606は、1つまたは複数のスタックセクションおよびアレイセクションを含み、エンクレーブエントリ、ページ、および出口を指定し得る。
【0080】
図6に示されるように、CPU608は、エンクレーブページキャッシュ606から命令を送受信し得る。例えば、CPU608は、ページを開始する命令を送信し、エンクレーブを終了する命令(EEXIT命令など)を受信し得る。さらに、CPU608は、署名およびベースアドレスに基づいて検証動作を実行し得る。
【0081】
ブロック図600は、図3に関連して説明したエンクレーブ(例えば、プロセッサのプロビジョニングおよび/またはインストールされたアプリケーションの決定のためのエンクレーブ)を生成するためのUEFIアプリケーションの例示的な実施を示している。しかしながら、異なるシーケンス、接続、および/または命令を使用した他の実施も可能であり得る。
【0082】
図7は、開示された実施形態による、UEFIで保護されたデジタルコンテンツを起動するためのプロセス700のフローチャートである。いくつかの実施形態では、以下に説明するように、プラットフォーム100(図1)は、プロセス700の動作を実行し得る。例えば、プロセッサ102および/またはUEFI/Bios110は、プロセス700において動作を実行し得る。さらに、および/または代わりに、プラットフォーム100の複数の要素は、プロセス700の動作を実行し得る。例えば、プロセッサ102がプロセス700の特定の動作を実行する一方で、コプロセッサ104またはUEFI/BIOS110は他の動作を実行し得る。しかしながら、他の実施形態では、スタンドアロンプロセッサまたはプロセッサのコンポーネントは、プロセス700のステップを実行し得る。このような実施形態では、プロセッサ102(図2)の特定の要素がプロセス700のステップを実行し得、またはコア202のいずれかがプロセス700の動作の1つまたは複数を実行し得る。
【0083】
ステップ702で、プラットフォーム100は、UEFI/BIOSファームウェアを開始し得る。例えば、プラットフォーム100の電源投入に応答して、プラットフォーム100は、UEFI/BIOS110(図1)内の開始ルーチンを実行し得る。開始ルーチンの一部として、オペレーティングシステムを開始する前に、プラットフォーム100は、ステップ704でターゲットメディアがインストールされているかどうかを決定し得る。例えば、プラットフォーム100は、メモリブロックを解析して、ターゲットアプリケーションがプラットフォーム100にインストールされているかどうかを決定し得る。あるいは、および/またはさらに、ステップ704で、プラットフォーム100は、データログまたはマニフェストを検討して特定のデジタルメディアが利用可能かどうかを決定するUEFIアプリケーションを開始し得る。いくつかの実施形態では、ターゲットデジタルメディアは、セキュアランタイム環境(SRE)またはハイパーバイザであり得る。
【0084】
プラットフォーム100が、ターゲットメディアがインストールされていないと決定した場合(ステップ704:いいえ)、プラットフォーム100は、ステップ706に進み得る。ステップ706で、プラットフォーム100は、第1のUEFIアプリケーションを起動し得る。例えば、プラットフォーム100は、UEFIプロビジョニングアプリケーション320を起動し得る。ステップ708で、プラットフォーム100は、暗号化されたメディアを介してサーバと通信し得る。例えば、ステップ706の第1のUEFIアプリケーションを使用して、プラットフォーム100は、デジタルメディアおよび/またはバイナリファイルを提供するサーバとTLSを介して通信し得る。いくつかの実施形態では、図3に関連して説明したように、UEFIプロビジョニングアプリケーション320は、プロビジョニングサーバ326と通信し得る。このような実施形態では、図9に関連してさらに説明するように、第1のUEFIアプリケーションは、暗号化セットアップおよび通信手順を処理し得る。
【0085】
ステップ710で、プラットフォーム100は、バイナリファイルおよび第1の復号鍵を受信し得る。例えば、プラットフォーム100は、ターゲットメディアのバイナリファイル(ステップ704で発見された)と、シールおよび/または復号プロセスのためのAESまたはRSA鍵を受信し得る。いくつかの実施形態では、ステップ710は、認証データを検証することも含み得る。例えば、図3に関連して説明したように、第1のUEFIアプリケーションの認証エンクレーブは、安全な認証エンクレーブ内のバイナリファイルの認証を検証し得る。ステップ712で、プラットフォーム100は、(ステップ706からの)UEFIアプリケーションで受信したバイナリをシールし、ローカル復号鍵を生成し得る。例えば、第1のUEFIアプリケーションのシーリングエンクレーブは、バイナリファイルをシールし得る。このような実施形態では、シーリングエンクレーブは、セキュアシーリングエンクレーブのシーリング内で受信鍵を使用してバイナリのシーリングを実行し得る。
【0086】
ステップ714で、プラットフォーム100は、ターゲットメディアをシールされたバイナリとしてインストールし得る。例えば、プラットフォーム100は、ステップ712でシールされたバイナリファイルをプラットフォーム100のストレージデバイスにインストールし得る。ステップ714は、ターゲットメディアのプラットフォームプロビジョニングをもたらし得る。
【0087】
ステップ704で、プラットフォーム100が、ターゲットメディアがインストールされていると決定した場合(ステップ704:はい)、プラットフォーム100は、ステップ706~714をスキップして、ステップ716に移動し得る。すなわち、いくつかのシナリオでは、プラットフォーム100は、ステップ714の後にステップ716に進み得るが、他のシナリオでは、プラットフォーム100は、ステップ704の後にステップ716に進み得る。
【0088】
ステップ716で、プラットフォーム100は、シールされたバイナリを第2のUEFIアプリケーションにロードし得る。例えば、プラットフォーム100は、ステップ712でシールされたバイナリをステップ716でUEFIローダ306にロードし得る。あるいは、および/またはさらに、プラットフォーム100は、以前にシールされたバイナリファイルをストレージデバイスから取得し、それをブートエンクレーブを備えたUEFIローダにロードし得る。いくつかの実施形態では、シールされたバイナリは、シールされたAES鍵を用いてセキュアブートエンクレーブにロードされ、エンクレーブ内の暗号化エントロピがシールされた鍵とともに使用されて、各ブートモジュールバイナリを検証する。ステップ718で、プラットフォーム100は、第2のUEFIローダまたは第2のUEFIアプリケーションを通じて、ローカル復号鍵を用いてシールされたバイナリファイルを復号し得る。例えば、プラットフォーム100は、ローカルに生成された鍵を使用して、シールされたバイナリを復号し得る。
【0089】
復号が成功すると、ステップ720で、プラットフォーム100は、ターゲットメディアをオープンまたは実行し得る。例えば、ステップ718での復号が成功した場合、シールされたソフトウェアまたはターゲットメディアが実行され得る。この時点で、プラットフォーム100は、実行されるメディアのセキュリティと安全性の両方を保証するために、オンダイ暗号化を使用してプロビジョニングおよび検証されているはずである。エンクレーブ内のCPUオンダイ暗号化一意のマテリアルを使用して、未承認のプラットフォームでのデジタルメディアの実行が防止される。したがって、プロセス700は、メディアプロビジョニング中および実行中の両方でプラットフォームの暗号化検証を強制する。さらに、ステップ702~718は、プロビジョニングサーバとの通信、暗号化、シール、および復号タスクのためのUEFIアプリケーションを使用してオペレーティングシステムが初期化される前に実行されるように構成され得る。このような機能は、最終ユーザの介入を必要としない自動プロセスを備えたプラットフォームのプロビジョニングを容易にしながら、攻撃ベクトルを最小限に抑えることができるため、コンピュータの機能を向上させ得る。
【0090】
ステップ720まで、プラットフォーム100は、オペレーティングシステムを初期化せずに、代わりにUEFIアプリケーションを使用してステップ702~718を実行し得る。ステップ720で、プラットフォーム100は、オペレーティングシステムを開始し得る。いくつかの実施形態では、ステップ720におけるオペレーティングシステムの開始は、ステップ718における復号の成功を条件とし得る。ステップ724で、プラットフォーム100は、UEFIエンクレーブの1つで生成された一意の鍵を使用して、ハイパーバイザ内の仮想マシンを検証し得る。例えば、図3に関連して説明したように、プラットフォーム100は、オンダイエントロピを使用して鍵を生成し、暗号化マテリアルを生成し、その鍵を仮想MSR鍵に格納し得る。このような動作により、DRMが仮想マシンに拡張される。例えば、プラットフォーム100は、ハイパーバイザ(ステップ722でオペレーティングシステムから開始できる)がVMに利用可能にできる一意の鍵を作成するためのエントロピのソースとしてUEFIエンクレーブ内の一意の暗号化マテリアルを使用し得る。ステップ724で、プラットフォーム100は、UEF1強制DRMサービスをVMに拡張し得る。このような実施は、DRMの実施にOEMごとに個別の物理プロビジョニングサーバや外部の信頼できるプラットフォームを使用する必要がないため、DRMの技術分野を改善し得る。
【0091】
図8は、開示された実施形態による、リモート認証を介したデジタルコンテンツのUEFIベースのプロビジョニングのためのプロセス800のフローチャートである。いくつかの実施形態では、プラットフォーム100(図1)がプロセス800の動作を実行し得る。例えば、プロセッサ102またはUEFI/Bios110は、プロセス800の動作を実行し得る。さらに、および/または代わりに、プラットフォーム100の複数の要素がプロセス800の動作を実行し得る。例えば、プロセッサ102がプロセス800の特定の動作を実行する一方で、コプロセッサ104またはUEFI/BIOS110は、他の動作を実行し得る。しかしながら、他の実施形態では、スタンドアロンプロセッサまたはプロセッサのコンポーネントがプロセス800のステップを実行し得る。このような実施形態では、プロセッサ102(図2)の特定の要素がプロセス800のステップを実行し得る。例えば、コア202のいずれかが、プロセス800の動作のうちの1つまたは複数を実行し得る。
【0092】
ステップ802で、プラットフォーム100は、プラットフォームを初期化し、ブートファームウェアを実行し得る。例えば、プラットフォーム100は、起動中にプラットフォームを初期化し、基本的な入出力システムを実行してプラットフォームを初期化し得る。ステップ804で、プラットフォーム100は、それがプロビジョニングされているかどうかを決定し得る。例えば、プラットフォーム100は、特定のデジタルメディアがプラットフォーム100のストレージデバイスにインストールされているかどうか、またはプラットフォームにデジタルコンテンツがすでに存在しているかどうかを決定し得る。
【0093】
プラットフォーム100が、プラットフォームがプロビジョニングされていないと決定した場合(ステップ804:いいえ)、プラットフォーム100は、ステップ806に進み得る。ステップ806で、プラットフォーム100は、UEFIファームウェア内で認証およびシーリングエンクレーブを起動または実行し得る。例えば、図3に関連して説明したように、プラットフォーム100は、UEFIプロビジョニングアプリケーション320(図3)のような、認証エンクレーブおよびシーリングエンクレーブを備えたUEFIアプリケーションを立ち上げ得る。ステップ808で、プラットフォーム100は、暗号化されたメディアを介してサーバと通信して、認証データを提供し、プロビジョニングファイルを要求し得る。プラットフォーム100は、認証データをプロビジョニングサーバに通信し得る。プロビジョニングサーバは、認証データに基づいてプラットフォーム100を検証し、暗号化されたメディア、バイナリファイル、および検証デバイスを介して通信し得る。例えば、図3および図5に関連して説明したように、プラットフォーム100は、UEFIプロビジョニングアプリケーション320を介してプロビジョニングサーバ326と通信し得、次いで、これは、認証サービス328およびイネーブルサーバ330とインターフェースし得る。
【0094】
ステップ810で、プラットフォーム100は、バイナリファイルおよび鍵を受信し得る。例えば、プラットフォーム100は、プロビジョニングサーバおよび/またはAESまたはRSA鍵からバイナリメディアファイルを受信し得る。ステップ812で、プラットフォーム100は、UEFIアプリケーション内の認証エンクレーブを使用して認証を検証し得る。例えば、いくつかの実施形態では、プラットフォーム100は、ステップ812でSGXリモート認証を実行し得る。このような実施形態では、UEFIアプリケーション内の認証エンクレーブは、リモート認証の段階を実行し得る。さらに、プラットフォーム100は、リモート認証要求を行い、ローカル認証を実行し、ローカル認証をリモート認証に変換し、リモート認証をチャレンジャに返し、リモート認証を検証し得る。プラットフォーム100は、SGXリモート認証のために次の段階を実行し得る。
【0095】
段階1:チャレンジャ(アプリケーションがUEFIエンクレーブ内で安全に実行されているかどうかを検証したいエンティティ)との通信を確立する。
【0096】
段階2:エンクレーブ身元(権限のない者によるエンクレーブのコンテンツへのアクセスを制限するエンクレーブのログの暗号化ハッシュ)を格納することにより、アプリケーションをクオートエンクレーブにリンクする。
【0097】
段階3:一時的な公開鍵(短期間しか存続しないもの)を生成し、チャレンジに応答する。この鍵は、エンクレーブにシークレットをプロビジョニングするためにチャレンジャによって使用され得る。
【0098】
段階4:鍵とその元のエンクレーブに関する情報を含むレポートを受信し、そのレポートを引用エンクレーブに転送する。
【0099】
段階5:ハードウェア命令を呼び出してレポート鍵を取得し、レポート鍵を使用してレポートを検証する。認証サービスによって検証可能な鍵を使用して、エンクレーブによって署名された構造を作成する。
【0100】
段階6:引用エンクレーブによって作成および署名された引用を受信および/または生成する。
【0101】
段階7:署名を検証する公開鍵証明書を使用して、生成された引用の署名を検証する。
【0102】
ステップ812のリモート認証プロセスは、プラットフォーム身元の検証を提供し、デジタルメディアが変更されていないこと、およびデジタルメディアが有効なプラットフォーム上のエンクレーブ内で安全に実行されることを証明し得る。認証によりリモートアクセスが安全になり、複数のプラットフォームでのDRM管理が可能になるが、プラットフォームベースの暗号化を使用して、有効なプラットフォーム内のコンテンツを管理または制限する。
【0103】
ステップ812で認証が検証されると、プラットフォーム100は、ステップ814に進み、シーリングエンクレーブを使用して鍵によるバイナリファイルのシーリングを実行し得る。例えば、プラットフォーム100は、EGETKEYSGX命令を使用して、バイナリファイルを特定のエンクレーブまたは特定の作成者にシールし得る。ステップ816で、プラットフォーム100は、デジタルコンテンツのセキュリティおよび安全性を強化するために、リモート認証検証を使用してプラットフォームのプロビジョニングを完了し、シールされたバイナリをインストールし得る。
【0104】
ステップ804で、プラットフォーム100が、プラットフォームがプロビジョニングされたと決定した場合(ステップ804:はい)、プラットフォーム100は、ステップ806~816をスキップして、ステップ818に進み得る。いくつかの実施形態では、プラットフォームにシールされたバイナリをインストールした後、プラットフォーム100は、ステップ818にも進み得る。
【0105】
ステップ818で、プラットフォーム100は、UEFIファームウェアを備えたセキュアブートエンクレーブにシールされたバイナリをロードし得る。例えば、図3に関連して説明したように、プラットフォーム100は、実行のためにシールバイナリをロードするためにUEFIローダ306を使用し得る。ステップ820で、プラットフォーム100は、ブートエンクレーブ内の暗号化エントロピおよびローカル復号鍵を使用して、シールされたバイナリを復号し得る。例えば、ステップ814のシールされたバイナリは、シールされたAES鍵を用いてセキュアブートエンクレーブにロードされ得る。さらに、エンクレーブ内の暗号化エントロピをシールされた鍵とともに使用して、各ブートモジュールを検証し得る。
【0106】
ステップ822で、プラットフォーム100は、復号が成功したかどうかを決定し得る。プラットフォーム100が復号が成功しなかったと決定した場合(ステップ822:いいえ)、プラットフォーム100は、ステップ824に進み、実行動作を停止し、プラットフォーム内でソフトウェアを実行したりデジタルメディアを開いたりしない。しかしながら、プラットフォーム100が復号が成功したと決定した場合(ステップ822:はい)、プラットフォーム100は、ステップ826に進み、プラットフォーム内でバイナリおよび/または関連デジタルメディアを実行し得る。例えば、シールされたバイナリをインストールした後、オペレーティングシステムを開始する前に、プラットフォーム100は、シールされたバイナリを第2のUEFIアプリケーションにロードし得、第2のUEFIアプリケーションは、ブートエンクレーブを備え得る。さらに、プラットフォーム100は、ブートエンクレーブ内の第2の鍵および暗号化エントロピを用いてシールされたバイナリファイルを復号し、シールされたバイナリファイルの復号が成功した場合にデジタルメディアを開くか実行し得る。
【0107】
ステップ828で、プラットフォーム100は、エンクレーブ内の暗号化マテリアルを使用して新しい鍵を作成し得る。例えば、プラットフォーム100は、エンクレーブ内の一意の暗号化マテリアルをエントロピのソースとして使用して、ハイパーバイザがVMに利用可能にできる仮想MSRに格納され得る追加の一意の鍵を作成し得る。ステップ830で、プラットフォーム100は、ハイパーバイザによってサポートされるVMに対してステップ828の一意の鍵を利用可能にし得る。
【0108】
あるいは、および/またはさらに、プラットフォーム100が、プラットフォームがプロビジョニングされていると決定した場合(ステップ804:はい)、プラットフォーム100は、第2のUEFIアプリケーション(ブートエンクレーブを含む第2のUEFIアプリケーション)を起動し、第2の鍵およびブートエンクレーブの暗号化エントロピを用いてシールされたバイナリファイルを復号し、シールされたバイナリファイルの復号が成功したときにデジタルメディアを実行することを含む合理化されたブート動作を実行し得る。
【0109】
プロセス800は、複数の暗号化技術と一意のハードウェア暗号化マテリアルとの組み合わせを容易にして、保存時および実行時に特定のハードウェアにバインドされたソフトウェアバイナリを構築し得る。さらに、プロセス800は、仮想MSR鍵ストアを実施する仮想化環境および特定のソフトウェアインストールを備えたプロビジョニングプラットフォームにおいてDRMを仮想マシンに拡張する一意の実施を容易にし得る。この技術の組み合わせおよび開示されたプロセス800のシーケンスは、ソフトウェアの複製を防止し、特定の承認されたプラットフォームでのソフトウェアのインストールおよび実行を制限し得る。さらに、プロセス800は、自己完結型の検証オプションを提供し得、各OEMまたは外部プラットフォームの追加のサーバまたはハードウェアを必要とせずに顧客プラットフォーム上でソフトウェアを安全にプロビジョニングし得るため、プロセス800は、承認サーバを使用する要件を回避し得る。
【0110】
図9は、開示された実施形態による、プロセッサと認証サーバとの間の通信のためのプロセス900のタイミング図である。図9に示されるように、ブロック図300の異なる要素がプロセス900を実行し得る。例えば、UEFIプロビジョニングアプリケーション320は、プロセス900のいくつかのステップを実行し得、一方、プロビジョニングサーバ326は、プロセス900の他のステップを実行し得る。しかしながら、他の実施形態では、プラットフォーム100は、プロセス900のステップを実行し得る。例えば、プロセッサ102(図2)は、プロセス900のステップを実行し得る。
【0111】
ステップ902で、UEFIプロビジョニングアプリケーション320は、クライアント開始通信をプロビジョニングサーバ326に送信し得る。例えば、UEFIプロビジョニングアプリケーション320は、TLS通信を開始するための要求を送信し得る。ステップ904で、プロビジョニングサーバ326は、要求を検証し得る。
【0112】
ステップ908で、UEFIプロビジョニングアプリケーション320およびプロビジョニングサーバ326は、プレマスター鍵およびマスター鍵を交換し得る。例えば、UEFIプロビジョニングアプリケーション320およびプロビジョニングサーバ326は、鍵交換を実行し(例えば、ディフィーヘルマンを使用して)、マスター鍵を導出し得る。
【0113】
ステップ910で、UEFIプロビジョニングアプリケーション320は、認証データを提供し得る。例えば、図8に関連して説明したように、UEFIプロビジョニングアプリケーション320内の認証エンクレーブは、プロビジョニングサーバ326に認証データを提供し得る。ステップ912で、プロビジョニングサーバ326は、プラットフォームを検証し得、検証が成功すると、プロビジョニングサーバ326は、ステップ914で、鍵およびバイナリファイルをUEFIプロビジョニングアプリケーション320に送信し得る。
【0114】
ステップ915で、UEFIプロビジョニングアプリケーション320は、プロビジョニングサーバ326との間で交換される情報の認証を検証し得る。ステップ916で、UEFIプロビジョニングアプリケーション320は、プラットフォームにバイナリをシールしてインストールし得る。例えば、UEFIプロビジョニングアプリケーション320は、CPUと通信して、図6に関連して説明した動作によりシールをインストールし、バイナリファイルをインストールし得る。ステップ918で、UEFIプロビジョニングアプリケーションは、復号およびインストールが成功したことをプロビジョニングサーバ326に通知し得る。ステップ920で、プロビジョニングサーバ326は、例えば、TLS通信を終了するサーバ終了通信を送信し得る。
【0115】
本開示の他の態様は、実行されると、1つまたは複数のプロセッサに上記の方法を実行させることができる命令を格納する非一時的なコンピュータ可読媒体を対象とする。コンピュータ可読媒体は、揮発性または不揮発性、磁気、半導体、テープ、光学式、リムーバブル、ノンリムーバブル、または他のタイプのコンピュータ可読媒体またはコンピュータ可読ストレージデバイスを含み得る。例えば、コンピュータ可読媒体は、開示されているように、コンピュータ命令が格納された記憶ユニットまたはメモリモジュールであり得る。いくつかの実施形態では、コンピュータ可読媒体は、コンピュータ命令が格納されているディスクまたはフラッシュドライブであり得る。
【0116】
開示されたシステムおよび関連する方法に対して様々な修正および変形を行うことができることは、当業者には明らかであろう。他の実施形態は、開示されたシステムおよび関連する方法の仕様および実践を考慮することにより当業者には明らかとなるであろう。明細書および実施例は例示としてのみ考慮され、真の範囲は、特許請求の範囲およびその均等物によって示されることが意図されている。
【0117】
本開示をその特定の実施形態を参照して図示し説明してきたが、本開示は修正することなく他の環境でも実施できることが理解されよう。前述の説明は、説明の目的で提示されたものである。これは網羅的ではなく、開示された正確な形式または実施形態に限定されない。開示された実施形態の仕様および実践を考慮すれば、修正および適応は当業者には明らかであろう。さらに、開示された実施形態の態様は、メモリに格納されるものとして説明されるが、当業者であれば、これらの態様は、二次ストレージデバイス、例えば、ハードディスクまたはCDROM、またはRAMまたはROMの他の形態、USBメディア、DVD、Blu-ray(登録商標)、またはその他の光学ドライブメディアなどの他のタイプのコンピュータ可読媒体にも格納され得ることを理解する。
【0118】
書面による説明と開示された方法に基づくコンピュータプログラムは、経験豊富な開発者のスキルの範囲内にある。様々なプログラムまたはプログラムモジュールは、当業者に知られている技術のいずれかを使用して作成され得、または既存のソフトウェアと関連して設計され得る。例えば、プログラムセクションまたはプログラムモジュールは、.Net Framework、.Net Compact Framework(およびVisual Basic、Cなどの関連言語)、Java、C++、Objective-C、HTML、HTML/AJAXの組み合わせ、XML、またはJavaアプレットを含むHTMLで設計され得、またはそれらによってもできる。
【0119】
さらに、例示的な実施形態が本明細書に記載されているが、本開示に基づいて当業者には理解されるように、均等の要素、修正、省略、組み合わせ(例えば、様々な実施形態にわたる態様の)、適応および/または変更を有する任意のおよびすべての実施形態の範囲に含まれる。特許請求の範囲における限定は、特許請求の範囲で使用される文言に基づいて広く解釈されるべきであり、本明細書または出願の審査中に記載される例に限定されない。これらの例は、非限定的なものとして解釈されるべきである。さらに、開示された方法のステップは、ステップの順序変更および/またはステップの挿入または削除を含む任意の方法で変更され得る。したがって、明細書および実施例は単なる例示として考慮され、真の範囲および精神は以下の特許請求の範囲およびその均等物の全範囲によって示されることが意図される。
【0120】
したがって、前述の説明は、例示のみを目的として提示されたものである。これは網羅的なものではなく、開示された正確な形式または実施形態に限定されるものではない。開示された実施形態の仕様および実践を考慮すれば、修正および適応は、当業者には明らかであろう。
【0121】
特許請求の範囲は、特許請求の範囲で使用される文言に基づいて広く解釈されるべきであり、本明細書に記載される例に限定されず、その例は、非排他的であると解釈されるべきである。さらに、開示された方法のステップは、ステップの順序変更および/またはステップの挿入または削除を含む任意の方法で変更され得る。
図1
図2
図3
図4
図5
図6
図7
図8
図9
【国際調査報告】