(58)【調査した分野】(Int.Cl.,DB名)
前記ブートカプセルは、ユニファイド・エクステンシブル・ファームウェア・インタフェース(Unified Extensible Firmware Interface:UEFI)カプセルを含む、
請求項1に記載のコンピューティングデバイス。
前記認証モジュールは、前記ハードウェアサブスクリプション認可を前記セキュアなメモリに保存し、前記ハードウェアコンポーネントの各使用について、保存された前記ハードウェアサブスクリプション認可を認証する、
請求項1に記載のコンピューティングデバイス。
前記ハードウェア構成データは、コンピューティングデバイス・プラットフォーム情報、ハードウェアコンポーネント機能及びサブスクリプション情報のうち少なくとも1つを含む、
請求項1に記載のコンピューティングデバイス。
前記ハードウェアコンポーネントは、(i)動作中に用いられる複数のプロセッサコアを含むプロセッサと、(ii)変更可能なプロセッサ動作周波数を有するプロセッサと、(iii)変更可能なキャッシュサイズメモリと、(iv)変更可能なレーンを有するPCI Expressグラフィックス(PEG)ポートと、(v)ジェスチャ感知装置と、(vi)指紋感知装置と、(vii)外部周辺機器への接続を可能にするハードウェアインタフェースとのうち1つを含む、
請求項1乃至3、5及び6のいずれか一項に記載のコンピューティングデバイス。
前記ハードウェアサブスクリプション認可は、前記ハードウェアサブスクリプション認可によって定義された前記ハードウェアコンポーネントの認可された使用が許可される時間を制限するための時間データを含む、
請求項1に記載のコンピューティングデバイス。
前記サブスクリプションモジュールは、前記時間データが失効すると、前記ハードウェアサブスクリプション認可によって定義された前記ハードウェアコンポーネントの認可された使用を無効にする、
請求項8に記載のコンピューティングデバイス。
前記ハードウェア構成データは、コンピューティングデバイス・プラットフォーム情報、ハードウェアコンポーネント機能及びサブスクリプション情報のうち少なくとも1つを含む、
請求項10に記載のサブスクリプションサーバ。
前記システムサブスクリプションモジュールは、前記ハードウェア構成データに基づいて、前記ハードウェアサブスクリプション認可について1以上のハードウェアコンポーネントオプションを決定する、
請求項11に記載のサブスクリプションサーバ。
前記システムサブスクリプションモジュールは、前記1以上のハードウェアコンポーネントオプションを前記コンピューティングデバイスに通信し、前記コンピューティングデバイスから前記1以上のハードウェアコンポーネントオプションの選択を受信する、
請求項12に記載のサブスクリプションサーバ。
前記システムサブスクリプションモジュールは、選択された前記ハードウェアコンポーネントオプションに基づいて、前記ハードウェアサブスクリプション認可を送信する、
請求項13に記載のサブスクリプションサーバ。
前記ハードウェアサブスクリプション認可は、前記ハードウェアサブスクリプション認可によって定義された前記ハードウェアコンポーネントの認可された使用が許可される時間を制限するための時間データを含む、
請求項10に記載のサブスクリプションサーバ。
前記ハードウェアサブスクリプション認可を受信するステップは、ユニファイド・エクステンシブル・ファームウェア・インタフェース(UEFI)カプセルを含む前記ブートカプセルを受信するステップを含む、
請求項20に記載の方法。
前記ハードウェアサブスクリプション認可を送信するステップは、ユニファイド・エクステンシブル・ファームウェア・インタフェース(UEFI)カプセルを含むブートカプセルを送信するステップを含む、
請求項22に記載の方法。
コンピューティングデバイスのネットワーキングデバイスのファームウェアを更新するためのコンピューティングデバイスであって、請求項20乃至23のいずれか一項に記載の方法を実行するための手段を備えるコンピューティングデバイス。
【発明を実施するための形態】
【0004】
本開示の概念は様々な変更及び代替形態が可能であるが、その具体的な実施形態が図面において例として示されており、本明細書において詳細に説明される。しかしながら、本開示の概念を開示された特定の形態に限定することは意図されず、反対に、本開示及び添付の特許請求の範囲に合致する全ての変更、均等物及び代替物を包含することが意図されることを理解されたい。
【0005】
本明細書において「一実施形態」、「実施形態」、「例示の実施形態」等と言及する場合、記載された実施形態が特定の特徴、構造又は特性を含むが、全ての実施形態が必ずしもその特定の特徴、構造又は特性を含まなくてよいことを示す。更に、そのような表現は必ずしも同じ実施形態を指しているわけではない。更に、特定の特徴、構造又は特性が実施形態に関連して記載される場合、明示的に記載されているか否かを問わず、他の実施形態と関連してそのような特徴、構造又は特性を達成することは、当業者の知識の範囲内である。加えて、「A、B及びCの少なくとも1つ」の形で列挙された項目は、(A)、(B)、(C)、(A及びB)、(A及びC)、(B及びC)又は(A、B及びC)を意味することができることを理解されたい。同様に、「A、B又はCの少なくとも1つ」の形で列挙された項目は、(A)、(B)、(C)、(A及びB)、(A及びC)、(B及びC)又は(A、B及びC)を意味することができる。
【0006】
開示される実施形態は、場合によっては、ハードウェア、ファームウェア、ソフトウェア又はそれらの任意の具体的に実現された組合わせで実施されてよい。開示される実施形態は、1つ以上のプロセッサによって読み取られ実行され得る1つ以上の非一時的な機械可読の(例えばコンピュータ可読の)記憶媒体によって搬送されるか又は記憶される命令として実施されてもよい。機械可読記憶媒体は、機械によって読取可能な形式で情報を記憶又は送信するための任意の記憶装置、機構その他の物理的構造(例えば揮発性又は不揮発性メモリ、メディアディスクその他の媒体装置)として実現されてよい。
【0007】
図面において、一部の構造又は方法の特徴が具体的な配置及び/又は順序で示されることがある。しかしながら、そのような具体的な配置及び/又は順序は必要でないことがあることを理解されたい。むしろ、一部の実施形態では、そのような特徴は、例示的な図に示されたものとは異なる方式及び/又は順序で配置されてよい。加えて、特定の図に構造又は方法の特徴を含めることは、そのような特徴が全ての実施形態で必要であることを意味するものではなく、一部の実施形態では含まれなくてもよく、或いは他の特徴と組み合わされてよい。
【0008】
ここで
図1を参照する。例示の実施形態において、ハードウェアサブスクリプション機能を確立及び提供するためのシステム100が示される。例示のシステム100は、コンピューティングデバイス104、サブスクリプションサーバ114及びネットワークスイッチ170を含み、これらの各々は、パケット交換その他の適切な通信を用いて動作することができる。使用時には、システム100は、コンピューティングデバイス104〜110の各々からサブスクリプションサーバ114にハードウェアプラットフォーム情報を提供するように動作する。サブスクリプションサーバ114がハードウェアプラットフォーム情報を受信すると、サブスクリプションサーバ114は、有効化されたハードウェア機能を決定し、更に、コンピューティングデバイス104〜110の各々についてどのハードウェアサブスクリプションオプションが利用可能であるかを決定する。ハードウェアサブスクリプションオプションがコンピューティングデバイス(例えば104)によって選択/購入されると、サブスクリプションサーバ114は、ユニファイド・エクステンシブル・ファームウェア・インタフェース(Unified Extensible Firmware Interface;UEFI)カプセル等のブートカプセルを用いてプリブート更新メカニズムを提供して、コンピューティングデバイス104〜110上で選択/購入されたハードウェア機能を有効化するブートレベルプログラムとして機能を果たす。ブートカプセルは、コンピューティングデバイス104〜110に関するハードウェアサブスクリプション認可として機能を果たす。
【0009】
コンピューティングデバイス104〜110の選択可能/購入可能なハードウェア機能は、コンピューティングデバイスのブートレベルから変更、有効化又は無効化されることが可能なハードウェア及び/又はハードウェアコンポーネントの任意の態様として、実現されてよい。ハードウェアサブスクリプション認可に適した変更可能なハードウェア機能の例としては、動作中に使用される多数のプロセッサコア(例えばシングルコア、クアッドコア等)の変更や、プロセッサ動作周波数の変更(例えば2.4Ghz/3.6Ghz)が挙げられる。他の変更可能なハードウェア機能は、キャッシュサイズ(4MB/8MB)又はPCI Expressグラフィックス(PEG)ポート/レーン(例えばx8/x16)を含んでよい。完全に有効化又は無効化され得るハードウェア機能の例としては、ジェスチャ感知装置のジェスチャ感知、指紋感知装置の指紋感知、外部周辺機器(例えばThunderbolt(商標))への接続を可能にするハードウェアインタフェースが挙げられる。当業者であれば、本明細書に開示されているようなハードウェア機能の有効化、無効化及び変更が広範囲のデバイス及びコンポーネントに適用可能であり、単に前述の特徴、或いはパーソナルコンピューティングデバイス及びコンポーネントに限定されるものではないことを理解できるであろう。
【0010】
図1に示される実施形態に戻ると、コンピューティングデバイス104(並びにコンピューティングデバイス106〜110)は、本明細書に記載の機能を実行することのできる任意のタイプのコンピューティングデバイスとして実現されてよい。例えば、コンピューティングデバイスは、限定ではないが、コンピュータ、デスクトップコンピュータ、パーソナルコンピュータ(PC)、タブレットコンピュータ、ラップトップコンピュータ、ノートブックコンピュータ、サーバコンピュータ、モバイルコンピューティングデバイス、スマートフォン、携帯電話、ハンドセット、メッセージングデバイス、ワークステーション、ネットワーク機器、ウェブ機器、分散コンピューティングシステム、マルチプロセッサシステム、プロセッサベースシステム、家庭用電子機器、デジタルテレビ機器、セットトップボックス、及び/又は、データを記憶及びアクセスするように構成され、更に電子クラウドソフトウェアと関連アプリケーションを実行するように構成される任意の他のコンピューティングデバイスとして実現されてよい。コンピューティングデバイス2〜n(106〜110)は、コンピューティングデバイス104に示された構成と同様に構成される。
【0011】
図1の例示の実施形態では、コンピューティングデバイス104は、プロセッサ120、I/Oサブシステム122、メモリ124、データストレージ126及び通信回路130を備える。通信回路130は、コンピューティングデバイス104と1つ以上の他の外部電子機器及び/又はシステムとの間の通信を可能にする任意の数のデバイス及び回路と共に、ネットワークインタフェースコントローラ(NIC)を含んでよい。プロセッサ120は、現在既知であるか将来開発される、本明細書に記載の機能を実行することのできる任意のタイプのプロセッサとして実現されてよい。例えば、プロセッサ120は、シングルコア又はマルチコアプロセッサ、デジタル信号プロセッサ、マイクロコントローラその他のプロセッサ又は処理/制御回路として実現されてよい。同様に、メモリ124は、現在既知であるか将来開発される、本明細書に記載の機能を実行することのできる任意のタイプ又は数の揮発性若しくは不揮発性メモリ又はデータストレージとして実現されてよい。動作中、メモリ124は、オペレーティングシステム、アプリケーション、プログラム、ライブラリ、ドライバ等の、コンピューティングデバイス104の動作中に用いられる様々なデータ及びソフトウェアを記憶してよい。一部の実施形態では、メモリ124及び/又はデータストレージ126は、1つ以上のアプリケーションプログラムを記憶しており、プロセッサ120は、1つ以上のアプリケーションプログラムを実行し、対応するグラフィック情報を表示するために表示画面を制御するように動作可能である。当然ながら、他の実施形態では、コンピューティングデバイス104は、デジタル装置及び/又はコンピュータ(例えば様々な入出力デバイス)に一般にみられるような他の或いは追加のコンポーネントを備えてよい。
【0012】
例示の実施形態では、メモリ124は、1つ以上の通信リンク(すなわち、ポイントツーポイントリンク、バスリンク、ワイヤ、ケーブル、光ガイド、プリント回路基板トレース等)を介してプロセッサ120に通信可能に結合される。また、メモリ124は、I/Oサブシステム122を介してプロセッサ120に通信可能に結合されてもよく、I/Oサブシステム122は、プロセッサ120、メモリ124その他のコンピューティングデバイス104のコンポーネントとの入出力動作を容易にする回路及び/又はコンポーネントとして実現されてよい。例えば、I/Oサブシステム122は、メモリコントローラハブ、入出力制御ハブ、ファームウェアデバイス、通信リンク(すなわち、ポイントツーポイントリンク、バスリンク、ワイヤ、ケーブル、光ガイド、プリント回路基板トレース等)及び/又は入出力動作を容易にする他のコンポーネント及びサブシステムとして実現されてよく、そうでなければ含んでよい。一部の実施形態では、I/Oサブシステム120は、システムオンチップ(SoC)の一部を形成することができ、プロセッサ120、メモリ124及びコンピューティングデバイス104の他のコンポーネントと共に、単一の集積回路チップ上に組み込まれてよい。
【0013】
コンピューティングデバイス104の通信回路130は、1つ以上の通信ネットワーク(例えばローカルエリアネットワーク、パーソナルエリアネットワーク、広域ネットワーク、セルラネットワーク、インターネット等グローバルネットワーク)を介して、コンピューティングデバイス104と他のコンピューティングデバイスとの間の通信を可能にすることのできる、任意のタイプの通信回路、デバイス又はそれらの集合として実現されてよい。通信回路130は、そのような通信を行うために、任意の1つ以上の通信技術(例えば無線又は有線通信)と関連プロトコル(例えばイーサネット(登録商標)、Wi-Fi(登録商標)、WiMAX等)を用いるように構成されてよい。通信回路130は、ポート又は通信インタフェースを含んでよく、そうでなければ通信可能に結合されてよい。ポートは、サブスクリプションサーバ114を任意の数の他のコンピューティングデバイス及び/又はネットワーク(例えば物理ネットワークや論理ネットワーク)に通信可能に結合するように構成されてよい。
【0014】
周辺機器128は、関連グラフィックス回路と共にディスプレイを含んでよい。加えて、一部の実施形態では、周辺機器128は、追加又は代替として、キーボード、マウス、オーディオ処理回路(例えば、増幅回路及び1つ以上のスピーカを含む)並びに/又は他の入出力機器、インタフェース機器及び/若しくは周辺機器を含んでよい。
【0015】
一部の実施形態では、システム100は、1つ以上のアプリケーションプログラムを記憶及び/又は実行するように構成されるサブスクリプションサーバ114を含んでよい。このような実施形態では、コンピューティングデバイス104〜110は、シンクライアントデバイスとして動作してよい。
図1の例示の実施形態において、サブスクリプションサーバ114は、プロセッサ150、I/Oサブシステム152、メモリ154、データストレージ156、通信回路162及び1つ以上の周辺機器158を備える。サブスクリプションサーバ114のコンポーネントは、コンピューティングデバイス104の対応するコンポーネントに類似してよく、その説明はサブスクリプションサーバ114の対応するコンポーネントに適用可能であるので、ここでは説明を明確にするために繰り返さない。
【0016】
サブスクリプションサーバ114の通信回路162は、サブスクリプションサーバ114とコンピューティングデバイス104との間の通信を可能にする任意の数の機器及び回路を含んでよい。一部の実施形態では、サブスクリプションサーバ114は、1つ以上の周辺機器158を含んでもよい。そのような周辺機器158は、任意の数の追加の入出力機器、インタフェース機器、及び/又は、サーバ又はコンピューティングデバイスに共通して関連付けられる他の周辺機器を含んでよい。
【0017】
図示された実施形態では、コンピューティングデバイス104〜110とサブスクリプションサーバ114との間の通信は、ネットワーク112を介して行われ、ネットワーク112は、1つ以上のネットワークスイッチ170に動作可能に結合されてよい。一実施形態では、ネットワーク112は有線及び/又は無線ネットワークを表してよく、また、例えばローカルエリアネットワーク(LAN)、パーソナルエリアネットワーク(PAN)、ストレージエリアネットワーク(SAN)、バックボーンネットワーク、グローバルエリアネットワーク(GAN)、ワイドエリアネットワーク(WAN)、或いはイントラネット、エクストラネット又はインターネット等の任意のそのようなコンピュータネットワークの集合(すなわち、World Wide Webを含む様々なアプリケーション又はサービスが実行される相互接続されたネットワークのグローバルシステム)であってよく、或いはそれらを含んでよい。一般に、コンピューティングデバイス104の通信回路130とサブスクリプションサーバ114の通信回路162は、通信プロトコルのいずれか1つ以上又は組合わせ、例えば有線ネットワーク通信プロトコル(例えばTCP/IP)、無線ネットワーク通信プロトコル(例えばWi Wi-Fi(登録商標)、WiMAX)、セルラ通信プロトコル(例えば広帯域符号分割多元接続(W-CDMA))その他の通信プロトコルを用いて、互いに通信するように構成されてよい。このように、ネットワーク112は、コンピューティングデバイス104とサブスクリプションサーバ114との間の通信を容易にするために、追加のコンピュータ、ルータ、スイッチ等の任意の数の追加の機器を含んでよい。
【0018】
ここで
図2を参照する。使用時、コンピューティングデバイス104は、動作中に環境200を確立する。例示の環境200は、通信回路130を介してサブスクリプションサーバ114に送信するためのデバイスキーを含むデバイスキーモジュール202を含む。例示の実施形態では、モジュール202のデバイスキーは、コンピューティングデバイス104の保護されたメモリ領域(例えばメモリ124)に埋め込まれた固有のデバイスキーであってよく、コンピューティングデバイスを一意に識別し、とりわけ、コンピューティングデバイス104のプラットフォーム、ハードウェア機能及びハードウェアサブスクリプション情報に関する情報を提供する。例示の実施形態では、モジュール202のデバイスキーは、製造プロセス中に埋め込まれてよい。コンピューティングデバイス104がサブスクリプションサーバ114に通信可能に結合するとき、デバイスキーモジュール202は、コンピューティングデバイスハードウェア構成を通信するためにデバイスキーを送信し、サブスクリプションサーバがハードウェアサブスクリプションオプションを決定することができる。
【0019】
例示の実施形態では、環境200はサブスクリプションモジュール204を含んでもよく、サブスクリプションモジュール204は、ヒューズモジュール206及びタイマモジュール208を含む。一部の実施形態では、サブスクリプションモジュール204は、ヒューズモジュール206のハードウェアサブスクリプションヒューズによって定義されるハードウェアサブスクリプション機能を含むSoCとして実現されてよい。ヒューズモジュール206の例示のSoC構成は、プログラマブルリードオンリーメモリ(PROM)又はフィールドプログラマブルリードオンリメモリ(FPROM)又はワンタイムプログラマブル不揮発性メモリ(OTP NVM)を含み、これは、各ビットの設定がヒューズ又はアンチヒューズによってロックされるデジタルメモリの一形態である。このようなデバイスは一種のROM(読出専用メモリ)であり、その中のデータが永続的であり変更できないことを意味する。ヒューズモジュール206のハードウェアサブスクリプション機能は、関連するシリコン及び/又はプラットフォームサブスクリプション機能の有効化を制御するために用いられる。一部の実施形態では、ヒューズモジュール206は、シリコンヒューズ、シリコンレジスタプログラム、プラットフォームハードウェアヒューズ、プラットフォームハードウェアレジスタプログラム等として実現されてよい。ハードウェアサブスクリプション機能をセキュアに有効化するために、ハードウェアサブスクリプションヒューズは、UEFIモジュール等の認証済みモジュールを用いてプリブート環境にプログラムされる。
【0020】
サブスクリプションモジュール204はまた、シリコン内のタイマモジュール208を利用して、定期的なハードウェアサブスクリプションモデルを有効化してもよい。使用時には、タイマモジュール208は、プリブートにカウントをロードすることによってサブスクリプション時間を追跡してよく、カウントは認証されたモジュールによってのみ変更されてよい。カウントは永続的であってよく、つまり、電源がオフになってもカウントが続行されてよい。カウントがロードされると、タイマモジュール208は、システムが動作している間にサブスクリプション時間をデクリメントし、カウントが終了するまで定期的なハードウェアサブスクリプションが利用可能となる。他の例示の実施形態では、サブスクリプションモジュール204は、ヒューズモジュール206及びタイマモジュール208の機能及び特徴をエミュレートするソフトウェアとして実現される。
【0021】
図2の例示の環境200は更に、サブスクリプションサーバ114から受信されるブート(例えばUEFI)カプセルを認証する認証モジュール210を備える。認証モジュール210は、例えば、暗号サービス交換(CSE)認証モジュールとして実現されてよい。例示のブートカプセルは、カプセルヘッダ及びカプセルボリュームを含む。カプセルヘッダは、OSに存在するアプリケーションによって用いられるカプセルの一部であり、OSに存在するアプリケーションがカプセルの内容をエンドユーザに説明することを可能にする情報を含む情報テキスト等の情報を含んでよい。テキストはUniコードでもよく、複数の異なる言語をサポートすることができる。ブートカプセルは更に、OEM(Original Equipment Manufacturer)特有の情報も含んでよい。カプセルボリュームは、標準的なファームウェアボリュームと同じ基本構造を有してよい。しかしながら、カプセルボリュームは、より高度に拡張可能なファームウェアボリュームフォーマットよりも予測可能に定義されたフォーマットを有し、ファームウェアボリュームイメージセクションを含むファームウェアボリュームファイルと構成結果ファイルとを含んでよい。構成結果ファイルは、OSに存在するアプリケーションによって書き込まれてよく、セットアッププログラムからの結果を提供する。カプセルヘッダ内のフラグは、カプセルによるこのファイルのサポートを示す。
【0022】
認証モジュール210は、例示の実施形態では、ブート中(例えば
図5のリブート416、以下に説明する)にサブスクリプションサーバ114から受信されるブートカプセル(例えばUEFIカプセル)のペイロードを認証するように構成される。認証モジュール210は、サブスクリプションサーバ114の暗号サービスエンジンモジュール305と双方向に結合されてよく、暗号サービスエンジンモジュール305は、ブートカプセルを認証するために要求される暗号サービスを提供するように構成される。暗号サービスには、限定ではないが、暗号化と復号化(例えば対称ブロック暗号、汎用暗号モード、ストリーム暗号モード、公開鍵暗号、公開鍵システムのパディングスキーム、鍵合意スキーム、楕円曲線暗号、一方向ハッシュ関数、メッセージ認証コード、ハッシュ関数に基づく暗号構造、擬似乱数ジェネレータ、パスワードベースのキー導出関数等)、ハッシング操作(例えばSHA−1、HMAC等)、RSAやDSA等の署名・検証操作を含んでよい。ブートカプセルがサブスクリプションサーバ114からセキュアペイロードと共に受信されると、認証モジュール210はセキュアペイロードを処理して、コンピューティングデバイス104のブートカプセルを認可する。認可されると、ブートカプセルがブートのたびに使用できるように、CSEセキュアストレージでペイロードの展開が実行される。
【0023】
ブートカプセルは、ブートカプセル更新メカニズム(例えばUEFI更新メカニズム)を用いてコンピューティングデバイス104上のサブスクリプションモジュール204によってインストールされてよい。例示の実施形態では特別なブートパスが作成され、カプセルは、OS起動時にシステムメモリにロードされ、次にプロセッサの初期化又はウォームリセットに続いて実行される。ファームウェアをプログラミングする代わりに、カプセル内のブートドライバ(例えば、カプセルを操作することを担うドライバ実行環境(DXE)ドライバ)は、プリブート環境における認証のために、ハードウェア機能サブスクリプションを含むブートカプセルを認証モジュール210に提供する。認証モジュール210は、デバイスキーと共にブートカプセルを認証し、認証モジュール210のみにアクセス可能なセキュアストレージ内のリセット時に必要とされるサブスクリプション時間、ヒューズサンプリング及び/又はセキュア・エージェント・インフラストラクチャ(SAI)通信に関する情報を保存する。その結果は、ブート機構(例えばUEFIブート機構)を用いてサブスクリプションサーバ114に返信されて、更新状況を報告する。例示の実施形態では、コンピューティングデバイス104のユーザを、「App Store」のような経験を提供するトランザクションの適切な状態でプロンプトすることができる。各電源投入時に、ホストプロセッサリセットを実行する前に、認証モジュール210は、セキュアストレージ内の有効なハードウェアサブスクリプション機能をチェックし、リセット時のヒューズ又はターゲットシリコンへのSAI通信をエミュレートし、ターゲットシリコンは、プラットフォームのリセットから有効なハードウェアサブスクリプション機能で開始することができる。この機構は、試用期間、定期購読及び返品ポリシー又は再開ポリシーを実現するために、ハードウェアサブスクリプションモジュール204によって示されるハードウェアサブスクリプション機能の有効化及び無効化を可能にする。
【0024】
なお、一部の実施形態では、デバイスキーモジュール202は、ハードウェアサブスクリプションサービスがコンピューティングデバイス104に提供されることを可能にするために、固有のデバイスキーのみからサブスクリプションサーバ114に十分な情報を提供することができる。そのような場合、ヒューズモジュール206及びタイマモジュール208の使用は任意であってよい。一部の例示の実施形態では、デバイスキーモジュール202は、サブスクリプションモジュール204と一体化されてよい。更に、環境200の様々なモジュールは、ハードウェア、ファームウェア、ソフトウェア又はそれらの組合わせとして実現されてよい。例えば、環境200の様々なモジュール、ロジックその他のコンポーネントは、コンピューティングデバイス104のプロセッサ120その他のハードウェアコンポーネントの一部を形成するか、そうでなければそれらによって確立されてよい。例えば、一部の実施形態では、環境200の1つ以上のモジュールは、回路(例えば認証モジュール等)として実現されてよい。
【0025】
ここで
図3を参照する。使用時には、サブスクリプションサーバ114は動作中に環境300を確立する。例示の環境300はシステムサブスクリプションモジュール302を含み、システムサブスクリプションモジュール302は、コンピューティングデバイス104〜110のいずれかに対するハードウェアサブスクリプションの管理、配布及び認可を担う。サブスクリプションサーバ114は、(例えばデバイスキーを介して)コンピューティングデバイスハードウェア構成データを受信すると、ハードウェア情報データベース303内のハードウェア構成データをルックアップして、正確なコンピューティングデバイスプラットフォーム情報、ハードウェア機能及びサブスクリプション情報を決定する。決定されると、サブスクリプションモジュール302は、ハードウェア機能データベース304からハードウェアサブスクリプションオプションを取得する。ハードウェアサブスクリプションオプションが組み立てられると、それらは、「App Store」等のものと同様のインタフェースを介してユーザに提示されるか、或いはコンピューティングデバイス104に直接通信されてよい。
【0026】
コンピューティングデバイス104のユーザが1つ以上のハードウェアサブスクリプションオプションを選択及び/又は購入すると、システムサブスクリプションモジュール302は、選択/購入された各機能に対するハードウェアサブスクリプション認可として機能するブート(例えばUEFI)ハードウェアサブスクリプションカプセルを生成し、暗号サービスエンジンモジュール305から提供されるビルドペイロードと共に各カプセルを送信し、コンピューティングデバイス104にインストールするためにカプセルを保護して、ハードウェア機能を有効化及び/又は変更する。なお、環境300の様々なモジュールは、ハードウェア、ファームウェア、ソフトウェア又はそれらの組合わせとして実現されてよい。例えば、環境300の様々なモジュール、ロジックその他のコンポーネントは、サブスクリプションサーバ114のプロセッサ150その他のハードウェアコンポーネントの一部を形成してよく、そうでなければそれらによって確立されてよい。例えば、一部の実施形態では、環境300の1つ以上のモジュールは、回路(例えばシステムサブスクリプションモジュール等)として実現されてよい。
【0027】
ここで
図4を参照する。コンピューティングデバイス104は、動作中にハードウェアサブスクリプション機能を認証及び有効化するための方法400を実行してよい。方法400はブロック402から始まり、コンピューティングデバイス104が、ネットワーク112を介してサブスクリプションサーバ402に接続する。接続されると、コンピュータノード104は、ブロック404において、コンピューティングデバイス104のハードウェア構成を送信する。上述のように、コンピューティングデバイス104のハードウェア構成は、デバイスキーによって提供されてよく、又はサブスクリプションモジュール204のヒューズモジュール206によって提供されるデータから提供されてよい。ハードウェア構成がサブスクリプションサーバ114によって処理され、ハードウェアサブスクリプションオプションがユーザに提示されると、ブロック406において、ユーザは、ハードウェアサブスクリプション機能オプションを選択/購入することができる。次に、ブロック408において、コンピューティングデバイス104がブートサブスクリプションカプセルを受信する。ブートサブスクリプションカプセルは、ブロック410でコンピューティングデバイス104内のシリコンをプログラムするために、ハードウェアサブスクリプション認可として用いられる。プログラムされると、ブロック412においてコンピューティングデバイス104がリブートし、その時点で、ブロック414において、認証モジュール210は、プリブートにおいてハードウェアサブスクリプションを認証する。
【0028】
ここで
図5を参照する。コンピューティングデバイス104は、方法400の実行を続ける。認証後、ブロック416において、コンピューティングデバイス102内でハードウェア機能サブスクリプションが有効化され、ブロック418において、コンピューティングデバイス104が再びリブートされ、その時点で、ブロック420において、コンピューティングデバイス104が、サブスクライブされたハードウェア機能を用いて動作可能となる。一部の実施形態では、認証モジュール210は、各リブート時に、有効化され且つ/又は動作可能なハードウェアサブスクリプション機能を送信してよい。一部の実施形態では、ハードウェアサブスクリプション機能は、時間限定サブスクリプションに基づいてよい。決定ブロック422において、サブスクリプションが時間制限されているか否かの決定が行われる。そうでない場合(「NO」)、ブロック420において、ハードウェアサブスクリプション機能がコンピューティングデバイス104上で動作を続ける。ハードウェアサブスクリプション機能が時間ベースである場合(「YES」)、決定ブロック424は、ハードウェアサブスクリプション機能に関連付けられたタイマが満了したか否かを決定する。タイマが満了していない場合(「NO」)、ブロック420において、ハードウェアサブスクリプション機能がコンピューティングデバイス104上で動作を続ける。タイマが満了している場合(「YES」)、ブロック426においてハードウェアサブスクリプション機能が無効化される。無効化されると、コンピューティングデバイス104は、ブロック406において、無効化された機能の再選択/再購入を要求され、新しいブートカプセルの認証及び有効化に進んで、ハードウェアサブスクリプション機能を元に戻すことができる。
【0029】
ここで
図6を参照する。サブスクリプションサーバ114は、コンピュータノード104のハードウェアサブスクリプション機能を提供及び認証するための方法600を実行してよい。方法600はブロック602から始まり、ブロック602において、サブスクリプションサーバ602は、利用可能なハードウェアサブスクリプション機能をハードウェア機能データベース304にロードする。ブロック604において、サブスクリプションサーバ114は、コンピューティングデバイス104のハードウェア構成を(例えばデバイスキーを介して)受信する。ブロック606において、受信されたハードウェア構成に基づいて、サブスクリプションサーバ114は、ハードウェアサブスクリプションオプションを選択し、コンピューティングデバイス104に送信する。コンピューティングデバイス104が1つ以上のハードウェアサブスクリプションオプションを選択/購入した後、ブロック608において、サブスクリプションサーバ114は、選択されたハードウェアサブスクリプションオプションをコンピューティングデバイス104から受信する。ブロック610において、選択に基づいて、サブスクリプションサーバは、(例えば暗号サービスエンジンモジュール305を用いて)ペイロードを構築し、ハードウェアサブスクリプション認可として機能するブートハードウェアサブスクリプションカプセルをコンピューティングデバイス104に送信する。ブロック612において、サブスクリプションサーバ114は、使用される認証のタイプに応じて、コンピューティングデバイス104のハードウェアサブスクリプション機能(例えば、
図4のブロック414)を認証してよい。
【0030】
ここで
図7を参照する。サブスクリプションサーバ114とコンピューティングデバイス104との間のハードウェアサブスクリプション選択プロセスの少なくとも1つの実施形態の簡略図が提供される。コンピュータデバイス104からハードウェア構成データを受信した後、サブスクリプションサーバ114はハードウェアサブスクリプション機能オプション702を決定し、ハードウェアサブスクリプション機能オプションS1〜S6(704〜714)に至る。図から分かるように、ハードウェアサブスクリプション機能オプションS1(704)、S2(706)及びS5(712)は、コンピューティングデバイス104上で既に有効化されており(図中、網掛けで示されている)、一方、ハードウェアサブスクリプション機能オプションS4(710)及びS6(714)は有効化されていないが、選択/購入に利用可能である。ハードウェアサブスクリプション機能オプションS3(708)は、実施形態では、選択/購入に利用できないものとして示されている。ハードウェアサブスクリプション機能オプションは、714でコンピューティングデバイス104に提示され、ユーザは、ハードウェアサブスクリプション機能オプションS4(710)及びS6(714)を選択する。選択されると、するために、
図4〜6に関連して上述された方法ステップが実行されて、ハードウェアサブスクリプション機能718が提供される。選択されたハードウェア機能オプションS4(710)及びS6(714)は、ここで、以前に有効化された機能S1(704)、S2(706)、S5(712)と共に有効であり動作している。
【0031】
例
本明細書に開示される技術の例示の例を以下に示す。技術の実施形態は、以下に記載する例の任意の1つ以上及び任意の組合わせを含んでよい。
【0032】
例1は、コンピューティングデバイス上のハードウェアコンポーネントのサブスクリプション方式の使用のためのコンピューティングデバイスを含む。該コンピューティングデバイスは、デバイスキーをネットワークに送信するサブスクリプションモジュールであって、デバイスキーは、コンピューティングデバイスに関するハードウェア構成データを含み、サブスクリプションモジュールは、送信されたデバイスキーに応答してハードウェアサブスクリプション認可を受信し、ハードウェアサブスクリプション認可は、コンピューティングデバイスのハードウェアコンポーネントの動作を有効化又は変更するためにコンピューティングデバイスによって使用可能なブートカプセルを含む、サブスクリプションモジュールと、サブスクリプションモジュールに通信可能に結合されて、ブートカプセルを認証する認証モジュールであって、サブスクリプションモジュールは、認証されたブートカプセルをコンピューティングデバイスのセキュアなメモリにインストールして、ハードウェアサブスクリプション認可データによって定義されたハードウェアコンポーネントの使用を認可する、認証モジュールと、を備える。
【0033】
例2は、例1の主題を含む。ブートカプセルは、ユニファイド・エクステンシブル・ファームウェア・インタフェース(Unified Extensible Firmware Interface;UEFI)カプセルを含む。
【0034】
例3は、例1と例2のいずれかの主題を含む。サブスクリプションモジュールは、UEFIカプセルによって指定されるブートパスを用いて、コンピューティングデバイスをリブートする。
【0035】
例4は、例1〜3のいずれかの主題を含む。UEFIカプセルのUEFIドライバは、UEFIカプセルを認証モジュールに提供して、プリブート環境においてUEFIカプセルを認証する。
【0036】
例5は、例1〜4のいずれかの主題を含む。認証モジュールは、ハードウェアサブスクリプション認可をセキュアなメモリに保存し、ハードウェアコンポーネントの各使用について、保存されたハードウェアサブスクリプション認可を認証する。
【0037】
例6は、例1〜5のいずれかの主題を含む。ハードウェア構成認可は、コンピューティングデバイス・プラットフォーム情報、ハードウェアコンポーネント機能及びサブスクリプション情報のうち少なくとも1つを含む。
【0038】
例7は、例1〜6のいずれかの主題を含む。ハードウェアコンポーネントは、シリコンベースのコンポーネントを含む。
【0039】
例8は、例1〜7のいずれかの主題を含む。ハードウェアコンポーネントは、(i)動作中に用いられる複数のプロセッサコアを含むプロセッサと、(ii)変更可能なプロセッサ動作周波数を有するプロセッサと、(ii)変更可能なキャッシュサイズメモリと、(iii)変更可能なレーンを有するPCI Expressグラフィックス(PEG)ポートと、(iv)ジェスチャ感知装置と、(v)指紋感知装置と、(vi)外部周辺機器への接続を可能にするハードウェアインタフェースとのうち1つを含む。
【0040】
例9は、例1〜8のいずれかの主題を含む。ハードウェアサブスクリプション認可は、ハードウェアサブスクリプション信号認可によって定義されたハードウェアコンポーネントの認可された使用が許可される時間を制限するための時間データを含む。
【0041】
例10は、例1〜9のいずれかの主題を含む。サブスクリプションモジュールは、時間データが失効すると、ハードウェアサブスクリプション認可によって定義されたハードウェアコンポーネントの認可された使用を無効にする。
【0042】
例11は、例1〜10のいずれかの主題を含む。コンピューティングデバイスは、ハードウェアコンポーネントについてのハードウェアサブスクリプション認可の受信の前に、ハードウェアコンポーネントを選択する。
【0043】
例12は、コンピューティングデバイス上のハードウェアコンポーネントのサブスクリプション方式の使用のためのサブスクリプションサーバを含む。サブスクリプションサーバは、ネットワークからデバイスキーを受信するシステムサブスクリプションモジュールであって、デバイスキーは、コンピューティングデバイスに関するハードウェア構成データを含み、システムサブスクリプションモジュールは、受信されたデバイスキーに基づいてハードウェアサブスクリプション認可を送信し、ハードウェアサブスクリプション認可は、コンピューティングデバイスのハードウェアコンポーネントの動作を有効化又は変更するためのブートカプセルを含む、システムサブスクリプションモジュールと、ハードウェアサブスクリプション認可と共に送信するセキュアなペイロードを提供する暗号サービスエンジンモジュールであって、暗号サービスエンジンは、コンピューティングデバイスによるブートカプセルのインストールを認可する、暗号サービスエンジンモジュールと、を含む。
【0044】
例13は、例12の主題を含む。ハードウェア構成データは、コンピューティングデバイス・プラットフォーム情報、ハードウェアコンポーネント機能及びサブスクリプション情報のうち少なくとも1つを含む。
【0045】
例14は、例12と例13のいずれかの主題を含む。システムサブスクリプションモジュールは、ハードウェア構成データに基づいて、ハードウェアサブスクリプション認可について1以上のハードウェアコンポーネントオプションを決定する。
【0046】
例15は、例12〜14のいずれかの主題を含む。システムサブスクリプションモジュールは、1以上のハードウェアコンポーネントオプションをコンピューティングデバイスに通信し、1以上のハードウェアコンポーネントオプションの選択をコンピューティングデバイスから受信する。
【0047】
例16は、例12〜15のいずれかの主題を含む。システムサブスクリプションモジュールは、選択されたハードウェアコンポーネントオプションに基づいて、ハードウェアサブスクリプション認可を送信する。
【0048】
例17は、例12〜16のいずれかの主題を含む。ブートカプセルは、ユニファイド・エクステンシブル・ファームウェア・インタフェース(Unified Extensible Firmware Interface;UEFI)カプセルを含む。
【0049】
例18は、例12〜17のいずれかの主題を含む。UEFIカプセルは、コンピューティングデバイスについてブートパスを指定する。
【0050】
例19は、例12〜18のいずれかの主題を含む。UEFIカプセルは、プリブート環境においてUEFIカプセルを認証するUEFIドライバを含む。
【0051】
例20は、例12〜19のいずれかの主題を含む。ハードウェアコンポーネントは、シリコンベースのコンポーネントを含む。
【0052】
例21は、例12〜20のいずれかの主題を含む。ハードウェアコンポーネントは、(i)動作中に用いられる複数のプロセッサコアを含むプロセッサと、(ii)変更可能なプロセッサ動作周波数を有するプロセッサと、(ii)変更可能なキャッシュサイズメモリと、(iii)変更可能なレーンを有するPCI Expressグラフィックス(PEG)ポートと、(iv)ジェスチャ感知装置と、(v)指紋感知装置と、(vi)外部周辺機器への接続を可能にするハードウェアインタフェースとのうち1つを含む。
【0053】
例22は、例12〜21のいずれかの主題を含む。ハードウェアサブスクリプション認可は、ハードウェアサブスクリプション認可データによって定義されたハードウェアコンポーネントの認可された使用が許可される時間を制限するための時間データを含む。
【0054】
例23は、例12〜22のいずれかの主題を含む。ハードウェアサブスクリプション認可によって定義されたハードウェアコンポーネントの認可された使用は、時間データが失効すると無効化される。
【0055】
例24は、コンピューティングデバイス上のハードウェアコンポーネントのサブスクリプション方式の使用の方法を含む。本方法は、サブスクリプションモジュールが、デバイスキーをネットワークに送信するステップであって、デバイスキーは、コンピューティングデバイスに関するハードウェア構成データを含む、ステップと、サブスクリプションモジュールが、送信されたデバイスキーに応答してハードウェアサブスクリプション認可を受信するステップであって、ハードウェアサブスクリプション認可は、コンピューティングデバイスのハードウェアコンポーネントの動作を有効化又は変更するためにコンピューティングデバイスによって使用可能なブートカプセルを含む、ステップと、認証モジュールが、ブートカプセルを認証するステップと、サブスクリプションモジュールが、認証されたブートカプセルをコンピューティングデバイスのセキュアなメモリにインストールして、ハードウェアサブスクリプション認可データによって定義されたハードウェアコンポーネントの使用を認可するステップと、を含む。
【0056】
例25は、例24の主題を含む。ハードウェアサブスクリプション認可を受信するステップは、ユニファイド・エクステンシブル・ファームウェア・インタフェース(UEFI)カプセルを含むブートカプセルを受信するステップを含む。
【0057】
例26は、例24と例25のいずれかの主題を含む。更に、サブスクリプションモジュールが、UEFIカプセルによって指定されるブートパスを用いて、コンピューティングデバイスをリブートするステップを含む。
【0058】
例27は、例24〜26のいずれかの主題を含む。更に、UEFIカプセルのUEFIドライバが、UEFIカプセルを認証モジュールに提供して、プリブート環境においてUEFIカプセルを認証するステップを含む。
【0059】
例28は、例24〜27のいずれかの主題を含む。更に、認証モジュールが、ハードウェアサブスクリプション認可をセキュアなメモリに保存し、ハードウェアコンポーネントの各使用について、保存されたハードウェアサブスクリプション認可を認証するステップを含む。
【0060】
例29は、例24〜28のいずれかの主題を含む。デバイスキーを送信するステップは、コンピューティングデバイス・プラットフォーム情報、ハードウェアコンポーネント機能及びサブスクリプション情報のうち少なくとも1つを含むハードウェア構成データを送信するステップを含む。
【0061】
例30は、例24〜29のいずれかの主題を含む。ハードウェアサブスクリプション認可を受信してハードウェアコンポーネントの動作を有効化又は変更するステップは、シリコンベースのコンポーネントの動作を有効化又は変更するためのデータを含む。
【0062】
例31は、例24〜30のいずれかの主題を含む。ハードウェアサブスクリプション認可を受信してハードウェアコンポーネントの動作を有効化又は変更するステップは、(i)動作中に用いられる複数のプロセッサコアを含むプロセッサと、(ii)変更可能なプロセッサ動作周波数を有するプロセッサと、(ii)変更可能なキャッシュサイズメモリと、(iii)変更可能なレーンを有するPCI Expressグラフィックス(PEG)ポートと、(iv)ジェスチャ感知装置と、(v)指紋感知装置と、(vi)外部周辺機器への接続を可能にするハードウェアインタフェースとのうち少なくとも1つの動作を有効化又は変更するためのデータを含む。
【0063】
例32は、例24〜31のいずれかの主題を含む。ハードウェアコンポーネントの動作を有効化又は変更するためのデータを含むハードウェアサブスクリプション認可を受信するステップは、ハードウェアサブスクリプション信号認可によって定義されたハードウェアコンポーネントの認可された使用が許可される時間を制限するための時間データを受信するステップを含む。
【0064】
例33は、例24〜32のいずれかの主題を含む。更に、時間データが失効すると、サブスクリプションモジュールが、ハードウェアサブスクリプション認可によって定義されたハードウェアコンポーネントの認可された使用を無効化するステップを含む。
【0065】
例34は、例24〜33のいずれかの主題を含む。更に、受信前にハードウェアサブスクリプション認可を選択するコンピューティングデバイスから選択信号を受信するステップを含む。
【0066】
例35は、コンピューティングデバイス上のハードウェアコンポーネントのサブスクリプションサーバによるサブスクリプション方式の使用を提供する方法を含む。本方法は、システムサブスクリプションモジュールが、ネットワークからデバイスキーを受信するステップであって、デバイスキーは、コンピューティングデバイスに関するハードウェア構成データを含む、ステップと、システムサブスクリプションモジュールが、受信されたデバイスキーに基づいてハードウェアサブスクリプション認可を送信するステップであって、ハードウェアサブスクリプション認可は、コンピューティングデバイスのハードウェアコンポーネントの動作を有効化又は変更するためのブートカプセルを含む、ステップと、暗号サービスエンジンモジュールが、ハードウェアサブスクリプション認可と共に送信するセキュアなペイロードを提供するステップであって、暗号サービスエンジンは、コンピューティングデバイスによるブートカプセルのインストールを認可する、ステップと、を含む。
【0067】
例36は、例35の主題を含む。更に、ネットワークからデバイスキーを受信するステップは、コンピューティングデバイス・プラットフォーム情報、ハードウェアコンポーネント機能及びサブスクリプション情報のうち少なくとも1つを含むハードウェア構成データを受信するステップを含む。
【0068】
例37は、例35と例36のいずれかの主題を含む。更に、システムサブスクリプションモジュールが、ハードウェア構成データに基づいて、ハードウェアサブスクリプション認可について1以上のハードウェアコンポーネントオプションを決定するステップを含む。
【0069】
例38は、例34〜37のいずれかの主題を含む。更に、システムサブスクリプションモジュールが、1以上のハードウェアコンポーネントオプションをコンピューティングデバイスに通信し、コンピューティングデバイスから1以上のハードウェアコンポーネントオプションの選択を受信するステップを含む。
【0070】
例39は、例34〜38のいずれかの主題を含む。更に、システムサブスクリプションモジュールが、選択されたハードウェアコンポーネントオプションに基づいて、ハードウェアサブスクリプション認可を送信するステップを含む。
【0071】
例40は、例34〜39のいずれかの主題を含む。ハードウェアサブスクリプション認可を送信するステップは、ユニファイド・エクステンシブル・ファームウェア・インタフェース(UEFI)カプセルを含むブートカプセルを送信するステップを含む。
【0072】
例41は、例34〜40のいずれかの主題を含む。UEFIカプセルを含むブートカプセルを送信するステップは、コンピューティングデバイスについてブートパスを指定するUEFIカプセルを送信するステップを含む。
【0073】
例42は、例34〜41のいずれかの主題を含む。UEFIカプセルを送信するステップは、UEFIドライバを含むUEFIカプセルを送信して、プリブート環境においてUEFIカプセルを認証するステップを含む。
【0074】
例42は、例34〜42のいずれかの主題を含む。ハードウェアコンポーネントの動作を有効化又は変更するためにハードウェアサブスクリプション認可を送信するステップは、ハードウェアコンポーネントの動作を有効化又は変更するためのデータを含み、シリコンベースのコンポーネントを含むハードウェアコンポーネントの動作を有効化又は変更するためのデータを含む。
【0075】
例43は、例34〜43のいずれかの主題を含む。ハードウェアコンポーネントの動作を有効化又は変更するためにハードウェアサブスクリプション認可を送信するステップは、(i)動作中に用いられる複数のプロセッサコアを含むプロセッサと、(ii)変更可能なプロセッサ動作周波数を有するプロセッサと、(ii)変更可能なキャッシュサイズメモリと、(iii)変更可能なレーンを有するPCI Expressグラフィックス(PEG)ポートと、(iv)ジェスチャ感知装置と、(v)指紋感知装置と、(vi)外部周辺機器への接続を可能にするハードウェアインタフェースとのうち少なくとも1つの動作を有効化又は変更するデータを含む。
【0076】
例45は、例34〜43のいずれかの主題を含む。ハードウェアサブスクリプション認可を送信するステップは、ハードウェアサブスクリプション認可データによって定義されたハードウェアコンポーネントの認可された使用が許可される時間を制限するための時間データを送信するステップを含む。
【0077】
例46は、例34〜45のいずれかの主題を含む。更に、時間データが失効すると、システムサブスクリプションモジュールが、ハードウェアサブスクリプション認可によって定義されたハードウェアコンポーネントの認可された使用を無効化するステップを含む。
【0078】
例47は、コンピューティングデバイスによる実行に応答して、コンピューティングデバイスに、例24〜46のいずれか1つに記載の方法を実行させる複数の命令を含む、1つ以上の機械可読記憶媒体を含む。
【0079】
例48は、コンピューティングデバイスのネットワーキングデバイスのファームウェアを更新するためのコンピューティングデバイスを含み、コンピューティングデバイスは、例24〜46のいずれか1つに記載の方法を実行する手段を備える。