(58)【調査した分野】(Int.Cl.,DB名)
前記ファームウェア環境のコンフィギュレーションのリプレゼンテーションは、前記装置にロードされたファームウェアコンポーネントにデジタル署名することができる容認できるオーソリティのリストを変更することを許可されている1以上のオーソリティのアイデンティフィケーションを含む、請求項1記載の方法。
前記ファームウェア環境のコンフィギュレーションのリプレゼンテーションは、前記装置にロードされたファームウェアコンポーネントにデジタル署名した1以上のオーソリティのリストを含み、前記1以上のオーソリティのリストの識別された場所において、前記装置にロードされたオペレーティングシステムローダにデジタル署名したオーソリティの識別子を含む、請求項1記載の方法。
前記ファームウェア環境のコンフィギュレーションのリプレゼンテーションは、特定のファームウェアコンポーネントが前記装置にロードされたかどうかに関わらず、前記装置のポリシに基づいて、前記装置にロードされる1以上のオーソリティによってデジタル署名される前記特定のファームウェアコンポーネントを有することを許可されている前記1以上のオーソリティを識別するオーソリティのリストを含む、請求項1記載の方法。
前記ファームウェア環境のコンフィギュレーションのリプレゼンテーションは、ファームウェアコンポーネントを検証することを許可されているオーソリティの識別子を含む、
請求項1記載の方法。
前記ファームウェア環境のコンフィギュレーションのリプレゼンテーションは、ロードされることを許可されていない特定のファームウェアコンポーネントの識別子を含む、請求項1記載の方法。
前記生成ステップは、前記装置が位置する環境と他の環境を区別するエンタープライズ値に少なくとも部分的に基づいて、前記プラットフォームシークレットを生成するステップを含む、請求項1記載の方法。
【発明を実施するための形態】
【0007】
同様の特徴を指すために、同一の数字が図面全体を通じて使用される。
【0008】
本明細書において、デジタル署名するオーソリティ依存のプラットフォームシークレットが説明される。装置をブートするプロセスの間、1以上のファームウェアコンポーネントが装置にロードされ、装置におけるファームウェア環境のコンフィギュレーションのリプレゼンテーションが生成される。ファームウェア環境のコンフィギュレーションのリプレゼンテーションは、ロードされたファームウェアコンポーネントのうち少なくとも1つにデジタル署名した(又は、デジタル署名できたであろう)各オーソリティの識別子を含むオーソリティのリスト、コンポーネントにデジタル署名することができる容認できるオーソリティのリストを変更することを許可されたオーソリティのアイデンティフィケーション(identification)、コンポーネントを検証することを許可されていないオーソリティ及び/又はロードされることを許可されていない特定のコンポーネントの識別子を識別するリボケーションレコード、オペレーティングシステムローダにデジタル署名したオーソリティの識別子などのうちの1以上といった、様々な形態をとることができる。装置のシークレットも取得される。装置のシークレットは、通常、装置のプロセッサ又は他の部分に含まれるキーである。ファームウェア環境のコンフィギュレーションのリプレゼンテーションが装置のシークレットと結合されて、プラットフォームシークレットが生成される。その後、このプラットフォームシークレットは、装置によって使用されるキー又は他の値を生成するための基礎として使用することができる。したがって、そのようなキー又は他の値は、(装置のシークレットに基づく)特定の装置と、(オーソリティのリストによって識別される、)ロードされたファームウェアコンポーネントにデジタル署名したオーソリティとに関連付けられる。
【0009】
本明細書において、対称キー暗号化、公開キー暗号化、及び公開キー/秘密キーのペアに対する参照がなされる。そのようなキー暗号化は当業者によく知られているが、読者を助けるために、本明細書には、そのような暗号化の簡潔な概要が含まれる。公開キー暗号化では、エンティティ(ユーザ、ハードウェアコンポーネント又はソフトウェアコンポーネント、装置、ドメインなど)が、公開キー/秘密キーのペアに関連付けられている。公開キーは公的に利用可能となるが、エンティティは、秘密キーを秘密の状態に保つ。秘密キーがなければ、公開キーを用いて暗号化されているデータを復号化するのは、計算的に非常に難しい。そのため、データは、公開キーを用いて、いかなるエンティティによっても暗号化することができるが、対応する秘密キーを有するエンティティによってしか、復号化することができない。さらに、データに関するデジタル署名は、そのデータと秘密キーとを用いることによって生成することができる。秘密キーがなければ、公開キーを用いて検証することができる署名を生成するのは、計算的に非常に難しい。公開キーを有するいかなるエンティティも、公開キーを使用して、公開キー、デジタル署名、及び署名されたデータに対して適切なデジタル署名検証アルゴリズムを実行することにより、デジタル署名を検証することができる。
【0010】
一方、対称キー暗号化では、共有キー(対称キーとも呼ばれる)が、2つのエンティティによって、知られており、秘密の状態に保たれている。共有キーを有するいかなるエンティティも、通常、その共有キーを用いて暗号化されているデータを復号化することができる。共有キーがなければ、共有キーを用いて暗号化されているデータを復号化するのは、計算的に非常に難しい。そのため、2つのエンティティがともに共有キーを知っている場合、各エンティティは、他方のエンティティによって復号化することができるデータを暗号化することができるが、他のエンティティが共有キーを知らない場合、他のエンティティは、データを復号化することができない。同様に、共有キーを有するエンティティは、同一のエンティティによって復号化することができるデータを暗号化することができるが、他のエンティティが共有キーを知らない場合、他のエンティティは、データを復号化することができない。さらに、キー付きハッシュメッセージ認証コードメカニズムを用いるなど、対称キー暗号化に基づいて、デジタル署名を生成することができる。共有キーを有するいかなるエンティティも、デジタル署名を生成し検証することができる。例えば、信頼できるサードパーティは、特定のエンティティのアイデンティティ(identity)に基づいて、対称キーを生成することができ、その後、(例えば、その対称キーを用いてデータを暗号化又は復号化することによって、)その特定のエンティティに関するデジタル署名を生成することも検証することもできる。
【0011】
図1は、1以上の実施形態に従った、デジタル署名するオーソリティ依存のプラットフォームシークレットを実装する例示的な装置100を示している。装置100は、物理装置又は仮想装置など、多種多様な種類の装置とすることができる。例えば、装置100は、デスクトップコンピュータ、サーバコンピュータ、ラップトップコンピュータ又はネットブックコンピュータ、タブレットコンピュータ又はノートパッドコンピュータ、モバイルステーション、エンターテインメント機器、ディスプレイ装置に通信可能に接続されたセットトップボックス、テレビジョン装置又は他のディスプレイ装置、セルラ電話又は他の無線電話、ゲーム機、自動車用コンピュータなどの物理装置とすることができる。装置100は、物理装置で実行される仮想マシンなどの仮想装置とすることもできる。仮想マシンは、任意の多種多様な種類の物理装置(例えば、上記にて挙げた様々な種類のいずれか)で実行させることができる。したがって、装置100は、十分なメモリリソース及びプロセッサリソースを有するフルリソース装置(例えば、パーソナルコンピュータ、ゲーム機)から、制限されたメモリリソース及び/又は処理リソースしか有さない低リソース装置(例えば、従来のセットトップボックス、ハンドヘルドのゲーム機)まで及び得る。
【0012】
装置100の電源が入れられた場合、あるいは、装置100がリセットされた場合、装置100はブートする。装置100がブートするとは、装置100の開始動作、通常は、装置100のオペレーティングシステムをロードして実行することを指す。装置100がブートすることは、通常、少なくとも2つの段階を含む。第1段階では、プレオペレーティングシステム環境のコンポーネントが装置100にロードされ、装置100で実行される。プレオペレーティングシステム環境では、様々なコンポーネント又はモジュールが、オペレーティングシステムをブートすることを含め、様々な動作を実行する。第2段階では、オペレーティングシステム環境のコンポーネントが装置100にロードされ、装置100で実行される。オペレーティングシステム環境では、オペレーティングシステムが装置100で実行中である。
【0013】
コンポーネントをロードするとは、揮発性メモリ(あるいは不揮発性メモリ)にコンポーネントをコピーすることを指し、任意的に、他のコンポーネント又はデータストアに対する追加の設定を実行することを指す。コンポーネントを実行するとは、装置100のプロセッサ又はコントローラにより、コンポーネントの命令をランすること(実行すること)を指す。装置100がブートした後、装置100でオペレーティングシステムにより様々な他のプログラムを実行することができる。
【0014】
ブートプロセスの間、ファームウェア102が、装置100によりロードされ実行される。ファームウェア102は、装置100の不揮発性メモリ、装置100に接続された取り外し可能な媒体、(例えば、ネットワークを介して)装置100に接続された別の装置などの、様々なソースから取得することができる。ファームウェア102は、オペレーティングシステムシステムローダ104をロードして実行する。オペレーティングシステムローダ104は、オペレーティングシステムカーネル106をロードして実行する。次いで、オペレーティングシステムカーネル106は、様々な追加のオペレーティングシステムコンポーネント及び/又はユーザモードコンポーネントをロードして実行することに進むことができる。そうしたオペレーティングシステムコンポーネント及びユーザモードコンポーネントは、そのようなコンポーネントを実行させるためのユーザリクエストに応答して、又は、別のコンポーネント又はモジュールからのリクエストに応答して、実行することができる。
【0015】
セキュアなブートコンフィギュレーションにおいては、ファームウェア102は、ロードされる前に(且つ/又は実行される前に)検証される複数のコンポーネントを含む。コンポーネントは、そのコンポーネントが容認できるオーソリティによりデジタル署名されたことを検証すること、そのコンポーネントがロードされることを禁止されたものとして識別されていないことを検証すること、そのコンポーネントが様々な特性又はプロパティを有していることを検証することなどにより、様々な方法で検証することができる。本明細書で使用されるとき、オーソリティとは、デジタル署名を生成するエンティティを指す。そのようなエンティティとしては、コンポーネントのパブリッシャ又はディストリビュータ、信頼できるサードパーティ、コンポーネントのリセラなどが挙げられる。ポリシ112は、どのファームウェア102のコンポーネントがロードされ、且つ/又は実行され得るのかを示すクライテリアを含む。ポリシ112を使用して、ファームウェア102のコンポーネントがロードされ、且つ/又は実行される前に、ファームウェア102のコンポーネントを検証することができる。ポリシ112には、様々なクライテリアを含めることができる。そのようなクライテリアとしては、コンポーネントにデジタル署名することができる容認できるオーソリティを識別するリスト(又は、そのようなリストを取得することができる場所)、ロードされることを禁止されているコンポーネントを識別するリスト(又は、そのようなリストを取得することができる場所)などがある。
【0016】
装置100は、プラットフォームシークレット生成モジュール114も含む。モジュール114は、特定の装置100と、装置100におけるファームウェア環境のコンフィギュレーションのリプレゼンテーションとの両方に基づくプラットフォームシークレットを生成する。ファームウェア環境のコンフィギュレーションのリプレゼンテーションは、例えば、ファームウェア102のコンポーネントにデジタル署名した(又は、デジタル署名できたであろう)オーソリティのリスト、コンポーネントにデジタル署名することができるポリシ112における容認できるオーソリティのリストを変更することを許可されたオーソリティのアイデンティフィケーション、ファームウェア102のコンポーネントを検証することを許可されていないオーソリティ及び/又はファームウェア102としてロードされることを許可されていない特定のコンポーネントの識別子を識別するリボケーションレコード、オペレーティングシステムローダ104にデジタル署名したオーソリティの識別子などを含み得る。プラットフォームシークレットは、装置と、その装置におけるファームウェア環境のコンフィギュレーションのリプレゼンテーションとの特定の結合に関連付けられたシークレット値である。ファームウェア環境のコンフィギュレーションのリプレゼンテーション、及び、プラットフォームシークレットの生成については、以下で詳述する。
【0017】
1以上の実施形態において、ファームウェア102及びオペレーティングシステムローダ104は、実行前環境(プレブート環境又はプレオペレーティングシステム環境とも呼ばれる)の一部として実装される。実行前環境とは、オペレーティングシステムのブートが完了してオペレーティングシステムが実行中である前の、装置100で起動している環境を指す。そのような実施形態において、ファームウェア102及びオペレーティングシステムローダ104は、装置100のネットワークインタフェースカードなど、装置100(例えば、読み取り専用メモリ(ROM)又はフラッシュメモリ)に記憶することができる。あるいは、ファームウェア102及びオペレーティングシステムローダ104は、実行前環境の間に、別の装置又はサービスから取得してもよい。例えば、ファームウェア102及びオペレーティングシステムローダ104は、別の装置又はサービスから装置100に提供されるブートイメージの一部として含めてもよい。
【0018】
実行前環境は、多種多様な方法で実装することができ、多種多様な従来技術に基づくものとすることができる。例えば、実行前環境は、UEFI(Unified Extensible Firmware Interface)標準バージョン2.3又は他のバージョンに従って実装されてもよい。別の例として、実行前環境は、PXE(Preboot eXecution Environment)標準バージョン2.0又は他のバージョンに従って実装されてもよい。さらに別の例として、実行前環境は、多種多様なパーソナルコンピュータのBIOS(Basic Input/Output System)のバージョン群を用いて実装されてもよい。
【0019】
図2は、1以上の実施形態に従った、デジタル署名するオーソリティ依存のプラットフォームシークレットを実装する例示的なシステム200を示している。(任意的に利用可能なコンポーネントを除く)システム200は、
図1の装置100などの装置の一部として含まれる。ブートプロセスの間、利用可能なコンポーネント202のうち選択されたコンポーネントが、ファームウェアコンポーネント204としてロードされる。利用可能なコンポーネント202は、ファームウェアコンポーネント204として取得することができロードすることができるコンポーネントであるが、全ての利用可能なコンポーネント202が、実際にファームウェアコンポーネント204としてロードされる必要はない。どの利用可能なコンポーネント202がファームウェアコンポーネント204としてロードされるかは、様々な方法により識別される。そのような方法としては、例えば、システム200を実装する装置の一部として含まれるハードウェア又はその装置に接続されたハードウェアに基づくもの、ファームウェアコンポーネント204のうち特定のコンポーネントのコンフィギュレーションに基づくものなどがある。選択された利用可能なコンポーネント202は、上述したように、ローカルストレージ装置、他の装置及びサービスなどから取得することができる。
【0020】
利用可能なコンポーネント202は、ファームウェアコンポーネント204としてロードされる前に検証される。1以上の実施形態において、特定のコンポーネント(例えば、ロードされた最初のコンポーネント)が、他のロードされるファームウェアコンポーネント204の検証を実行する。この特定のコンポーネントは、例えば、書き込み不可能なストレージ装置に記憶されてもよい。あるいは、この特定のコンポーネントは、当該コンポーネントが改ざんされることから保護されるように記憶されてもよい。代替として、複数のファームウェアコンポーネント204が、他のロードされるファームウェアコンポーネント204の検証を実行してもよい。例えば、最初のコンポーネントは、書き込み不可能なストレージ装置に記憶されてもよいし、当該コンポーネントが改ざんされることから保護されるように記憶されてもよい。この最初のコンポーネントは、1以上の追加のファームウェアコンポーネント204を検証してロードすることができる。この1以上の追加のファームウェアコンポーネント204の各々が、同様に、他の1以上のファームウェアコンポーネント204を検証してロードすることなどができる。
【0021】
ポリシ206は、ファームウェアコンポーネント204を検証するための様々なクライテリアを含む。1以上の実施形態において、ポリシ206は、容認できるオーソリティのレコードと、リボケーションレコード(無効にされた、又は容認できないオーソリティ及び/又はコンポーネントのレコード)とを含む。これらのレコードは、1以上のリスト、1以上のデータベースなど、様々な形態をとることができる。容認できるオーソリティのレコードは、コンポーネントを検証することを許可されているオーソリティの識別子を含む。リボケーションレコードは、コンポーネントを検証することを許可されていないオーソリティの識別子、及び/又は、ロードされることを許可されていない特定のコンポーネントの識別子を含む。(容認できるものであろうと、無効にされたものであろうと、)オーソリティの識別子は、オーソリティの公開キー、オーソリティの公開キーに連鎖する公開キーなど、様々な形態をとることができる。特定のコンポーネントの識別子は、ハッシュ関数をコンポーネントに適用することによって生成されるハッシュ値など、様々な形態をとることができる。
【0022】
コンポーネントが容認できるオーソリティによってデジタル署名されていない場合、コンポーネントがリボケーションレコードにおいて識別されたオーソリティによって署名されている場合、及び/又は、コンポーネントの識別子がリボケーションレコードに含まれる場合、そのコンポーネントは検証されない。コンポーネントが容認できるオーソリティによってデジタル署名されている場合、そのコンポーネントは検証される(ただし、コンポーネントにデジタル署名したオーソリティが、リボケーションレコードにおいて識別されない場合、及び/又は、コンポーネントの識別子が、リボケーションレコードにおいて識別されない場合に限り)。
【0023】
システム200を実装する装置におけるファームウェア環境のコンフィギュレーションを示すファームウェア環境のコンフィギュレーションのリプレゼンテーション208が生成される。ファームウェア環境のコンフィギュレーションには、様々な情報を含めることができる。ファームウェア環境のコンフィギュレーションとは、一般に、ファームウェアコンポーネント204をロードする際の信頼できるオーソリティ、及び/又は、ファームウェアコンポーネント204としてロードされることを許可されていないファームウェアコンポーネント204を指す。ファームウェア環境のコンフィギュレーションのリプレゼンテーション208は、オーソリティのリスト220、リボケーションレコード222、オペレーティングシステムローダのオーソリティ224、及び/又は、オーソリティ変更リスト226を含む。オーソリティのリスト220は、ファームウェアコンポーネント204にデジタル署名した(又は、デジタル署名できたであろう)オーソリティのリストである。リボケーションレコード222は、ファームウェアコンポーネント204を検証することを許可されていないオーソリティ、及び/又は、ファームウェアコンポーネント204としてロードされることを許可されていない特定のコンポーネントの識別子のレコードである。オペレーティングシステムローダのオーソリティ224は、オペレーティングシステムローダ(例えば、
図1のオペレーティングシステムローダ104)にデジタル署名したオーソリティの識別子などである。オーソリティ変更リスト226は、コンポーネントにデジタル署名することができる容認できるオーソリティのリストを変更することを許可されたオーソリティのアイデンティフィケーションである。
【0024】
コンポーネントがファームウェアコンポーネント204としてロードされる場合において、そのコンポーネントにデジタル署名したオーソリティの識別子が、(例えば、そのコンポーネントを検証するコンポーネントによって、)オーソリティのリスト220に付加され得る。リストと呼ばれるが、オーソリティのリストは、代替として、データベースであってもよいし、他のレコードであってもよい。
【0025】
1以上の実施形態において、コンポーネントにデジタル署名するオーソリティの識別子が、ファームウェアコンポーネント204ごとに、オーソリティのリスト220に付加される。したがって、このような実施形態では、オーソリティのリスト220は、ファームウェアコンポーネント204としてロードされたコンポーネントにデジタル署名した、ファームウェアコンポーネント204がロードされた順番のオーソリティのリストとなる。
【0026】
図3は、1以上の実施形態に従った、例示的なオーソリティのリスト302を示している。オーソリティのリスト302は、例えば、
図2のオーソリティのリスト220とすることができる。複数のコンポーネント304が、ファームウェアコンポーネントとしてロードされる順番で示されており、複数のコンポーネント304は、各コンポーネントにデジタル署名したオーソリティも識別する。したがって、6つのファームウェアコンポーネントは、次の順番でロードされる:コンポーネントA、コンポーネントD、コンポーネントC、コンポーネントE、コンポーネントF、コンポーネントB。コンポーネントA、コンポーネントE、及びコンポーネントFは、オーソリティRによってデジタル署名され、コンポーネントB及びコンポーネントDは、オーソリティSによってデジタル署名され、コンポーネントCは、オーソリティTによってデジタル署名されたものである。オーソリティのリスト302は、ファームウェアコンポーネント204としてロードされたコンポーネントにデジタル署名した、ファームウェアコンポーネント204がロードされた順番のオーソリティのリストとなる。したがって、オーソリティのリスト302は、オーソリティR、オーソリティS、オーソリティT、オーソリティR、オーソリティR、オーソリティSのリストとなる。
【0027】
図2に戻ると、他の実施形態では、オーソリティの識別子がオーソリティのリスト220にまだ含まれていない場合にのみ、コンポーネントにデジタル署名するオーソリティの識別子が、オーソリティのリスト220に付加される。すなわち、オーソリティの識別子がオーソリティのリスト220にすでに含まれている場合、そのオーソリティの別の識別子が、オーソリティのリスト220に付加される必要はない。したがって、そのような実施形態では、オーソリティのリスト220は、1以上のオーソリティがどのコンポーネントにデジタル署名したかに関わらず、且つ、1以上のオーソリティがどれだけの数のコンポーネントにデジタル署名したかに関わらず、ファームウェアコンポーネント204のうち少なくとも1つに各々がデジタル署名したオーソリティのリストとなる。
【0028】
図4は、1以上の実施形態に従った、別の例示的なオーソリティのリスト402を示している。オーソリティのリスト402は、例えば、
図2のオーソリティのリスト220とすることができる。
図3に関する説明と同様、複数のコンポーネント304が、ファームウェアコンポーネントとしてロードされる順番で示されている。オーソリティのリスト402は、1以上のオーソリティがどのコンポーネントにデジタル署名したかに関わらず、且つ、1以上のオーソリティがどれだけの数のコンポーネントにデジタル署名したかに関わらず、ファームウェアコンポーネント204のうち少なくとも1つに各々がデジタル署名したオーソリティのリストとなる。したがって、オーソリティのリスト402は、オーソリティR、オーソリティS、オーソリティTのリストとなる。
【0029】
図2に戻ると、オーソリティのリスト220は、代替として、ポリシ206から提供される容認できるオーソリティのレコードとしてもよい。したがって、オーソリティのリスト220は、どのオーソリティがファームウェアコンポーネント204にデジタル署名したのかを識別するのではなく、オーソリティが実際に1以上のファームウェアコンポーネント204にデジタル署名したかどうかに関わらず、ファームウェアコンポーネント204にデジタル署名できたであろうオーソリティを識別する。
【0030】
ファームウェア環境のコンフィギュレーションのリプレゼンテーション208には、リボケーションレコード222として、ポリシ206から提供されるリボケーションレコードを含めることもできる。したがって、ファームウェア環境のコンフィギュレーションのリプレゼンテーション208には、コンポーネントを検証することを許可されていないオーソリティの識別子、及び/又は、ロードされることを許可されていない特定のコンポーネントの識別子を含めることができる。
【0031】
ファームウェア環境のコンフィギュレーションのリプレゼンテーション208には、オペレーティングシステムローダのオーソリティ224を含めることもできる。オペレーティングシステムローダのオーソリティ224は、システム200を実装する装置にロードされたオペレーティングシステムローダ(例えば、
図1のオペレーティングシステムローダ104)にデジタル署名したオーソリティの識別子である。
【0032】
ファームウェア環境のコンフィギュレーションのリプレゼンテーション208には、オーソリティ変更リスト226を含めることもできる。オーソリティ変更リスト226は、コンポーネントにデジタル署名することができる容認できるオーソリティのリストを変更することを許可された(例えば、ポリシ206を変更することを許可された)オーソリティのアイデンティフィケーション(例えば、リスト)である。
【0033】
さらに、システム200には、単一のファームウェア環境のコンフィギュレーションのリプレゼンテーション208が示されているが、システム200には、任意の数のファームウェア環境のコンフィギュレーションのリプレゼンテーション208を含めてもよいことに留意すべきである。例えば、1つのファームウェア環境のコンフィギュレーションのリプレゼンテーションには、ファームウェアコンポーネント204としてロードされたコンポーネントにデジタル署名した、ファームウェアコンポーネント204がロードされた順番のオーソリティのリストを含めてもよい。また、別のファームウェア環境のコンフィギュレーションのリプレゼンテーションには、1以上のオーソリティがどのコンポーネントにデジタル署名したかに関わらず、且つ、1以上のオーソリティがどれだけの数のコンポーネントにデジタル署名したかに関わらず、ファームウェアコンポーネント204のうち少なくとも1つに各々がデジタル署名したオーソリティのリストを含めてもよい。別の例として、1つのファームウェア環境のコンフィギュレーションのリプレゼンテーションには、オーソリティのリスト及びオペレーティングシステムローダのオーソリティを含めてもよいし、別のファームウェア環境のコンフィギュレーションのリプレゼンテーションには、オーソリティのリスト及びリボケーションリストを含めてもよいし、さらに別のファームウェア環境のコンフィギュレーションのリプレゼンテーションには、オーソリティのリスト及びリボケーションリストを含めてもよい。
【0034】
さらに、ファームウェア環境のコンフィギュレーションのリプレゼンテーション208に含めることができる特定の例の情報について本明細書で説明し、システム200に示したが、ファームウェア環境のコンフィギュレーションのリプレゼンテーション208には、他の情報を含めてもよいことに留意すべきである。
【0035】
ファームウェア環境のコンフィギュレーションのリプレゼンテーション208は、結合モジュール210に提供される、又は、結合モジュール210にとって利用可能となっている。結合モジュール210は、ファームウェアコンポーネント204の1つとして含めてもよいし、あるいは、異なる形で実装されてもよい。結合モジュール210は、プラットフォームシークレット212を生成する際に、ファームウェア環境のコンフィギュレーションのリプレゼンテーション208を使用する。結合モジュール210は、ファームウェア環境のコンフィギュレーションのリプレゼンテーション208をそのまま(すなわち、ファームウェア環境のコンフィギュレーションのリプレゼンテーション208が生成された形で)使用してもよい。あるいは、結合モジュール210は、ファームウェア環境のコンフィギュレーションのリプレゼンテーション208における情報を変更してもよいし、且つ/又は、結合モジュール210が望む情報だけを、ファームウェア環境のコンフィギュレーションのリプレゼンテーション208から抽出してもよい。例えば、オーソリティのリスト220が、ファームウェアコンポーネント204としてロードされたコンポーネントにデジタル署名した、ファームウェアコンポーネント204がロードされた順番のオーソリティのリストを含むが、結合モジュール210が、1以上のオーソリティがどのコンポーネントにデジタル署名したかに関わらず、且つ、1以上のオーソリティがどれだけの数のコンポーネントにデジタル署名したかに関わらず、ファームウェアコンポーネント204のうち少なくとも1つに各々がデジタル署名したオーソリティのリストを使用する場合、結合モジュール210は、オーソリティのリスト220に存在する順番のオーソリティを使用するのではなく、オーソリティのリスト220から、使用するオーソリティを抽出してもよい。別の例として、ファームウェア環境のコンフィギュレーションのリプレゼンテーション208がリボケーションレコード222を含むが、結合モジュール210がオーソリティのリスト及びオペレーティングシステムローダのオーソリティを使用する場合、結合モジュール210は、ファームウェア環境のコンフィギュレーションのリプレゼンテーション208から、オーソリティのリスト220及びオペレーティングシステムローダのオーソリティ224を抽出することができるが、リボケーションレコード222を抽出しない。
【0036】
1以上の実施形態において、結合モジュール210は、1以上のオーソリティがどのコンポーネントにデジタル署名したかに関わらず、且つ、1以上のオーソリティがどれだけの数のコンポーネントにデジタル署名したかに関わらず、ファームウェアコンポーネント204のうち少なくとも1つに各々がデジタル署名したオーソリティのリストを使用する。結合モジュール210は、(例えば、アルファベット順、数値順、何らかの他の順序に従ってなど、)オーソリティのリストをソートし、ソートしたリストを使用してプラットフォームシークレット212を生成する。結合モジュール210は、オーソリティのリスト内に重複が存在すれば、その重複を取り除くこともできる(例えば、特定のオーソリティが、オーソリティのリスト220に複数回含まれている場合、結合モジュール210は、その特定のオーソリティがオーソリティのリスト220に1回だけ含まれるように、重複を取り除くことができる)。したがって、そのような実施形態では、プラットフォームシークレット212は、ファームウェアコンポーネント204のうち少なくとも1つにデジタル署名したオーソリティのアイデンティティに基づいて生成される。このため、プラットフォームシークレット212は、各オーソリティがどのファームウェアコンポーネントにデジタル署名したか、各オーソリティがどれくらいの数のファームウェアコンポーネントにデジタル署名したか、及び、ファームウェアコンポーネント204がどのような順番でロードされたかに関係なく、生成される。
【0037】
1以上の実施形態において、結合モジュール210は、ファームウェアコンポーネント204としてロードされたコンポーネントにデジタル署名した、ファームウェアコンポーネント204がロードされた順番のオーソリティのリストを使用する。このような実施形態では、結合モジュール210は、オーソリティのリストをソートしない(ただし、ソートすることはできる)。というのは、ファームウェアコンポーネント204がロードされる順番が依存されるからである。したがって、このような実施形態では、プラットフォームシークレット212は、各オーソリティがどれくらいの数のファームウェアコンポーネントにデジタル署名したか、及び、ファームウェアコンポーネント204がどのような順番でロードされたかに依存する。
【0038】
他の実施形態において、結合モジュール210は、ポリシ206から提供される容認できるオーソリティのレコードであるオーソリティのリストを使用する。したがって、このような実施形態では、プラットフォームシークレット212は、オーソリティがファームウェアコンポーネントに関するデジタル署名を生成したかどうかに関わらず、コンポーネントを検証することを許可されているオーソリティに基づいて生成される。
【0039】
1以上の実施形態において、結合モジュール210は、オーソリティのリスト220及び/又はリボケーションレコード222に加えて、あるいは、それらに代えて、オペレーティングシステムローダのオーソリティ224を使用する。したがって、このような実施形態では、プラットフォームシークレット212は、オペレーティングシステムローダにデジタル署名したオーソリティに基づいて生成される。これにより、異なるオペレーティングシステムに対するファームウェアコンポーネント204及び/又はポリシ206がたとえ同一であっても、異なるオペレーティングシステムに対して、異なるプラットフォームシークレットを生成することが可能となる。オペレーティングシステムローダのオーソリティ224は、任意的に、オーソリティのリスト220の識別された場所(例えば、オーソリティのリスト220の最後)に付加されてもよいし、又は、オーソリティのリスト220においてオーソリティ(例えば、最後のオーソリティ)として含まれてもよい。
【0040】
結合モジュール210は、装置のシークレット214も使用する。装置のシークレット214は、システム200を実装する装置のシークレットであり、異なる装置では異なるものとなる(あるいは、異なる装置ごとに異なっているスレッショルドチャンス(threshold chance)よりも大きなチャンスを有する)。1以上の実施形態において、装置のシークレット214は、(例えば、200のオーダの)多数のヒューズを用いる装置のプロセッサに含まれ、特定のバイナリキー値が、それらヒューズのうちの様々なヒューズをブローすることにより、エンコードされる。あるいは、装置のシークレット214は、例えば、プロセッサ以外の別のハードウェアコンポーネントに含まれたり、ヒューズ以外のハードウェアコンポーネントを用いたりなど、他の形態で装置に含まれてもよい。装置のシークレット214は、通常、ファームウェアコンポーネント204にはアクセス可能であるが、他のコンポーネント(例えば、
図1のオペレーティングシステムカーネル106)にはアクセス不可能であるように保護されている。装置のシークレット214は、ファームウェアコンポーネントのみアクセス可能なインタフェースを介して取得されること、値が特定の位置に書き込まれるまでアクセス可能であるが、書き込まれた後はアクセス不可能にすること(例えば、結合モジュール210が装置のシークレット214を取得した後に特定の位置に書き込む)、間接的にアクセス可能とすること(例えば、システム200において別のキーをアンロックする、又はアンシールするために権限値(authorization value)として使用される)などの様々な方法により、保護されてもよい。
【0041】
結合モジュール210は、ファームウェア環境のコンフィギュレーションのリプレゼンテーション208と装置のシークレット214とを結合して、プラットフォームシークレット212を生成する。結合モジュール210は、様々な結合プロセス又は結合技術を用いて、ファームウェア環境のコンフィギュレーションのリプレゼンテーション208と装置のシークレット214とを結合することができる。1以上の実施形態において、ファームウェア環境のコンフィギュレーションのリプレゼンテーション208は、様々な識別子のリストであり、装置のシークレット214は、ファームウェア環境のコンフィギュレーションのリプレゼンテーション208に付加される(例えば、ファームウェア環境のコンフィギュレーションのリプレゼンテーション208の最初又は最後に付加される)。結果として得られる値が、メッセージ認証コード(MAC:Message Authentication Code)、ハッシュベースのメッセージ認証コード(HMAC:Hash-based Message Authentication Code)、又は、他のキー導出関数に入力される。例えば、結合プロセスが、DES3−CBC−MAC(Triple Data Encryption Standard Cipher Block Chaining Message Authentication Code)、HMAC with SHA−1(Secure Hash Algorithm 1)などを使用してもよい。HMACの出力が、プラットフォームシークレット212である。あるいは、結合プロセスが、ファームウェア環境のコンフィギュレーションのリプレゼンテーション208に装置のシークレット214を付加する(例えば、ファームウェア環境のコンフィギュレーションのリプレゼンテーション208の最初又は最後に付加する)などの他の形態をとって、プラットフォームシークレット212であるキーの取得をアンロックする、又は許可するために、結果として得られる値を権限値として別のコンポーネントに提供することができる。
【0042】
さらに、結合モジュール210は、別のエンティティから受信された値を、結合プロセスにおける値として使用する(例えば、オーソリティのリスト208に結合される装置のシークレット208と同様にして、その値をオーソリティのリスト208に結合する)。例えば、コーポレート環境(corporate environment)において、エンタープライズ値(enterprise value)が、結合モジュール210に提供されてもよい。このエンタープライズ値は、装置が存在する環境(例えば、特定のドメイン、特定のネットワークなど)と他の環境を区別する役割を果たす。このエンタープライズ値は、コーポレートネットワークのサーバ又はサービスによって提供される実行前環境の変数又は他の値や、コーポレートネットワークアドミニストレータによって提供されるものなどとして、様々な形で提供することができる。このエンタープライズ値により、プラットフォームシークレット212を、特定のコーポレート環境に基づくものとすることができる。したがって、装置のシークレット214が何らかの形で発見され、且つファームウェア環境のコンフィギュレーションのリプレゼンテーション208が既知であるとしても、プラットフォームシークレット212は、このエンタープライズ値なしには、生成できないであろう。
【0043】
プラットフォームシークレット212は、特定の装置のシークレットと、ファームウェア環境のコンフィギュレーションとの両方に関連付けられたシークレットである。プラットフォームシークレット212は、同一のファームウェア環境のコンフィギュレーションのリプレゼンテーションを含む後続のブートのために、容易に再生成することができる。例えば、ファームウェア環境のコンフィギュレーションのリプレゼンテーション208が、1以上のオーソリティがどのコンポーネントにデジタル署名したかに関わらず、且つ、1以上のオーソリティがどれだけの数のコンポーネントにデジタル署名したかに関わらず、ファームウェアコンポーネント204のうち少なくとも1つに各々がデジタル署名したオーソリティのリストを含むと仮定する。オーソリティのリストに含まれていない別のオーソリティによってデジタル署名された追加のファームウェアコンポーネントが、ファームウェアコンポーネントとしてロードされることになる場合、オーソリティのリストの変更に起因して、異なるプラットフォームシークレットが生成されるであろう。同様に、同一のファームウェアコンポーネントが異なる装置にロードされることになる場合、装置のシークレットの変更に起因して、異なるプラットフォームシークレットが生成されるであろう。しかしながら、コンポーネントのパブリッシャが、以前のバージョンのファームウェアコンポーネントにデジタル署名した同一のオーソリティによってデジタル署名されるファームウェアコンポーネントの新たなバージョンを発行しようとする場合、同一のプラットフォームシークレット212が生成されるであろう
プラットフォームシークレット212は、多種多様なコンポーネントに提供され、且つ/又は、様々な形で使用され得る。例えば、プラットフォームシークレット212は、暗号化及び/又は復号化のために使用される1以上の追加のキーを取得するためなど、暗号化及び/又は復号化のために使用される1以上の追加のキーを生成するための基礎として使用されてもよい。こうしたキーには、公開キー、秘密キー、及び/又は対称キーが含まれてもよい。1以上の実施形態において、プラットフォームシークレット212は、オペレーティングシステムローダ(例えば、
図1のオペレーティングシステムローダ104)に提供される。オペレーティングシステムローダは、プラットフォームシークレット212を使用して、データを暗号化及び復号化するための1以上のキーを生成する。オペレーティングシステムローダは、他のコンポーネントがプラットフォームシークレット212にアクセスできないように、プラットフォームシークレット212を保護された状態に保つことができる。あるいは、オペレーティングシステムローダは、1以上のキーを生成した後、プラットフォームシークレット212を削除することができる。
【0044】
1以上の実施形態において、オペレーティングシステムカーネルは、1以上のボリュームキー(volume key)を用いて、ストレージボリューム(storage volume)(例えば、システム200を含む装置によって使用されるストレージ装置)にあるデータを暗号化することをサポートする。オペレーティングシステムローダは、プラットフォームシークレットを使用して、公開キー/秘密キーのペアを生成し、次いで、オペレーティングシステムカーネルを実行する前に、プラットフォームシークレット及び秘密キーの両方を削除する。オペレーティングシステムカーネルは、プラットフォームシークレット又は秘密キーを知らないが、1以上のボリュームキーを暗号化するために、公開キーを使用することができる。次いで、暗号化された1以上のボリュームキーは、(例えば、ディスク、フラッシュメモリなどに)記憶することができる。後続のブート時に、オペレーティングシステムローダは、同一の公開キー/秘密キーのペアを再生成し、1以上のボリュームキーを復号化するために秘密キーを使用する。1以上のボリュームキーは、オペレーティングシステムカーネルに提供することができる。したがって、1以上のボリュームキーは、保護されているが、後続のブート時に、容易に再生成することができる。
【0045】
ファームウェア環境のコンフィギュレーションのリプレゼンテーション208(又は結合モジュール210によって使用されるファームウェア環境のコンフィギュレーションのリプレゼンテーション208の少なくとも一部)及び装置のシークレット214が変更されない限り、プラットフォームシークレット212は、後続のブートに対して再生成することができる。したがって、オペレーティングシステムローダなどの他のコンポーネントは、複数のブートにわたって生成するキーを有し続ける(persist)必要がない。そうではなく、こうした他のコンポーネントは、後続のブートの間に、プラットフォームシークレットに基づいてキーを単に再生成することができるので、そのようなキーをセキュアに有し続けることに注意する必要がない。
【0046】
ファームウェアコンポーネント204に関する追加の情報も、任意的に維持することができる。この追加の情報は、ファームウェア環境のコンフィギュレーションのリプレゼンテーション208において、及び/又は、他の1以上のレコード又はリストにおいて、維持することができる。各ファームウェアコンポーネントはポリシ206のどの部分に適合するのかなど、多種多様な追加の情報を維持することができる。例えば、コンポーネントを検証するよう適合された特定のクレイテリアのインジケーション(例えば、コンポーネントにデジタル署名した特定のコンポーネント)。この追加の情報は、(例えばセキュアに)維持することができ、例えば
図1のオペレーティングシステムローダ104及び/又はオペレーティングシステムカーネル106などの他のモジュール又はコンポーネントによってアクセスすることができる。この追加の情報を維持することにより、そのような他のモジュール又はコンポーネントは、コンポーネントを検証するよう適合された特定のクライテリアなどの他の情報とともに、どのファームウェアコンポーネントがロードされたかに関するログを後で参照することが可能となる。この追加の情報は、プラットフォームシークレット212を生成する際に結合モジュール210によって使用されてもよい(例えば、この追加の情報は、オーソリティのリスト220、リボケーションレコード222、オペレーティングシステムローダのオーソリティ224、及び/又は、オーソリティ変更リスト226に付加されてもよいし、あるいは、それらに結合されてもよい)。
【0047】
図5は、1以上の実施形態に従った、デジタル署名するオーソリティ依存のプラットフォームシークレットを生成する例示的なプロセス500を示すフローチャートである。プロセス500は、
図1の装置100などの装置によって実行される。プロセス500は、ソフトウェア、ファームウェア、ハードウェア、又はそれらの組合せにより実装することができる。プロセス500は、通常、1以上のファームウェアコンポーネント(例えば、
図1のファームウェア102又は
図2のファームウェア204)によって実行される。プロセス500は、一連の動作として示されているが、様々な動作のオペレーションを実行するために示された順番に限定されるものではない。プロセス500は、デジタル署名するオーソリティ依存のプラットフォームシークレットを生成する例示的なプロセスである。デジタル署名するオーソリティ依存のプラットフォームシークレットを生成するさらなる説明は、他の図を参照しながら、本明細書に含まれる。
【0048】
プロセス500において、プロセス500を実装する装置におけるファームウェア環境のコンフィギュレーションのリプレゼンテーションが生成される(動作502)。上述したように、このリプレゼンテーションには、様々な情報を含めることができる。
【0049】
装置のシークレットが取得される(動作504)。上述したように、このシークレットは、様々な形で装置に含めることができる。
【0050】
ファームウェア環境のコンフィギュレーションのリプレゼンテーションと、装置のシークレットとに基づいて、プラットフォームシークレットが生成される(動作506)。上述したように、このプラットフォームシークレットは、ファームウェア環境のコンフィギュレーションのリプレゼンテーションと装置のシークレットとを結合するなどにより、様々な方法で生成することができる。
【0051】
図6は、1以上の実施形態に従った、デジタル署名するオーソリティ依存のプラットフォームシークレットを使用する例示的なプロセス600を示すフローチャートである。プロセス600は、
図1の装置100などの装置によって実行される。プロセス600は、ソフトウェア、ファームウェア、ハードウェア、又はそれらの組合せにより実装することができる。プロセス600は、通常、オペレーティングシステムローダ(例えば、
図1のオペレーティングシステムローダ104)によって実行される。プロセス600は、一連の動作として示されているが、様々な動作のオペレーションを実行するために示された順番に限定されるものではない。プロセス600は、デジタル署名するオーソリティ依存のプラットフォームシークレットを使用する例示的なプロセスである。デジタル署名するオーソリティ依存のプラットフォームシークレットを使用するさらなる説明は、他の図を参照しながら、本明細書に含まれる。
【0052】
プロセス600において、プラットフォームシークレットが取得される(動作602)。プラットフォームシークレットは、上述したように、装置のシークレットと、装置におけるファームウェア環境のコンフィギュレーションのリプレゼンテーションとの両方の少なくとも一部分に基づいて生成される。
【0053】
プラットフォームシークレットに基づいて、1以上のキーが生成される(動作604)。上述したように、様々なキーを生成することができる。さらに、上述したように、1以上のキーを生成した後、プラットフォームシークレットを削除してもよい。
【0054】
本明細書において説明されたデジタル署名するオーソリティ依存のプラットフォームシークレットに関する技術は、様々な利用シナリオをサポートする。生成されるプラットフォームシークレットは、オーソリティのリストに基づいて生成することができるので、プラットフォームシークレットを変更することなく、ファームウェアコンポーネントに対して何らかの変更を加えることが可能となる。これにより、例えば、パブリッシャは、バグを修正するためにファームウェアコンポーネントを変更したり、新たな特徴を追加したりすることが可能となるが、このような変更は、プラットフォームシークレットの変更を生じさせない。さらに、使用されるオーソリティのリストに応じて、パブリッシャは、追加および再順序付けによるプラットフォームシークレットの変化をもたらすことなく、新たなファームウェアコンポーネントを追加する、且つ/又は、ファームウェアコンポーネントがロードされる順序を変更することができる。さらに、生成されるプラットフォームシークレットは、オペレーティングシステムローダにデジタル署名したオーソリティに少なくとも部分的に基づいて生成することができる。これにより、異なるオペレーティングシステムを、同一のファームウェアコンポーネントを使用するが異なるプラットフォームシークレットを有する装置において実行させることが可能となる。したがって、各オペレーティングシステムが他方のシークレットを読み取ることを防止することができる。
【0055】
図7は、1以上の実施形態に従った、デジタル署名するオーソリティ依存のプラットフォームシークレットを実装するために構成することができる例示的なコンピューティング装置700を示している。コンピューティング装置700は、例えば、
図1の装置100とすることができる。
【0056】
コンピューティング装置700は、1以上のプロセッサ又は処理装置702と、1以上のメモリ及び/又はストレージコンポーネント706を含み得る1以上のコンピュータ読み取り可能な媒体704と、1以上の入力/出力(I/O)装置708と、様々なコンポーネント及び装置が互いに通信できるようにするバス710とを含む。コンピュータ読み取り可能な媒体704及び/又は1以上のI/O装置708は、コンピューティング装置700の一部として含まれてもよいし、又は、コンピューティング装置700に接続されてもよい。プロセッサ702、コンピュータ読み取り可能な媒体704、1以上のI/O装置708、及び/又はバス710は、任意的に、単一のコンポーネント又は単一のチップ(例えば、オンチップシステム)として実装されてもよい。バス710は、1以上のいくつかの種類のバス構造を表している。そのようなバス構造としては、メモリバス又はメモリコントローラ、ペリフェラルバス、アクセラレーテッドグラフィックスポート、プロセッサバス又はローカルバスといった、多種多様なバスアーキテクチャを使用したものがある。バス710は、有線のバス及び/又は無線のバスを含み得る。
【0057】
メモリ/ストレージコンポーネント706は、1以上のコンピュータストレージ媒体を表している。コンポーネント706は、揮発性媒体(ランダムアクセスメモリ(RAM)など)、及び/又は、不揮発性媒体(読み取り専用メモリ(ROM)、フラッシュメモリ、光ディスク、磁気ディスクなど)を含み得る。コンポーネント706は、固定媒体(例えば、RAM、ROM、固定ハードドライブなど)とともに、取り外し可能な媒体(例えば、フラッシュメモリドライブ、取り外し可能なハードドライブ、光ディスクなど)を含み得る。
【0058】
本明細書において説明された技術は、1以上の処理装置702によって実行される命令を用いて、ソフトウェアにより実施されてもよい。異なる命令は、コンピューティング装置700の異なるコンポーネントに記憶されてもよいことを理解されたい。そのようなコンポーネントとしては、処理装置702、処理装置702の様々なキャッシュメモリ、装置700の他のキャッシュメモリ(不図示)、他のコンピュータ読み取り可能な媒体などがある。さらに、命令がコンピューティング装置700に記憶されている場所は、時間の経過とともに変化し得ることも理解されたい。
【0059】
1以上のI/O装置708によって、ユーザは、コンピューティング装置700に対してコマンド及び情報を入力することができる。また、1以上のI/O装置708によって、ユーザ及び/又は他のコンポーネント若しくは装置に対して、情報を提供することができる。入力装置の例としては、キーボード、カーソルコントロール装置(例えば、マウス)、マイクロフォン、スキャナなどがある。出力装置の例としては、ディスプレイ装置(例えば、モニタ又はプロジェクタ)、スピーカ、プリンタ、ネットワークカードなどがある。
【0060】
様々な技術が、ソフトウェア又はプログラムモジュールの一般的なコンテキストで、本明細書において説明された。一般的に、ソフトウェアは、ルーチン、プログラム、アプリケーション、オブジェクト、コンポーネント、データ構造などといった特定のタスクを実行するもの、又は特定の抽象データ型を実装するものを含む。これらのモジュール及び技術の実装は、コンピュータ読み取り可能な媒体のいくつかの形式で記憶されるか、又はそのような媒体のいくつかの形式を介して伝送される。コンピュータ読み取り可能な媒体は、コンピューティング装置によってアクセスすることができる、あらゆる利用可能な媒体であってよい。例えば、コンピュータ読み取り可能な媒体は、「コンピュータストレージ媒体」及び「通信媒体」を含み得るが、これらに限定されるものではない。
【0061】
「コンピュータストレージ媒体」は、コンピュータ読み取り可能な命令、データ構造、プログラムモジュール、又は他のデータなどの情報を記憶するためのあらゆる方法又は技術において実施される、揮発性媒体及び不揮発性媒体、取り外し可能な媒体及び取り外し不可能な媒体を含む。コンピュータストレージ媒体は、RAM、ROM、EEPROM、フラッシュメモリ又は他のメモリ技術、CD−ROM、デジタル多目的ディスク(DVD)若しくは他の光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ若しくは他の磁気ストレージ装置、又は、所望の情報を記憶するために使用でき、コンピュータによってアクセスされ得る他のあらゆる媒体を含む。コンピュータストレージ媒体とは、言ってみれば、単なる信号伝送、搬送波、又は信号とは異なり、情報を記憶するための媒体を指す。したがって、コンピュータストレージ媒体とは、非信号の保持媒体を指し、通信媒体ではない。
【0062】
「通信媒体」は、通常、コンピュータ読み取り可能な命令、データ構造、プログラムモジュール、又は他のデータを、搬送波又は他の伝送メカニズムなどの変調されたデータ信号で具現化する。通信媒体はまた、あらゆる情報伝達媒体を含む。用語「変調されたデータ信号」は、その特性のうちの1以上が、当該信号内に情報を符号化するように設定又は変更された信号を意味する。例えば、通信媒体は、有線ネットワーク又は直接有線接続などの有線媒体と、音波、RF、赤外線及び他の無線媒体などの無線媒体とを含むが、これらに限定されるものではない。上述の通信媒体の任意の組合せも、コンピュータ読み取り可能な媒体の範囲に含まれるものである。
【0063】
一般的に、本明細書において説明されたあらゆる機能又は技術は、ソフトウェア、ファームウェア、ハードウェア(例えば、固定のロジック回路)、マニュアル処理、又はこれらの実装の組合せを使用して、実施することができる。用語「モジュール」及び「コンポーネント」は、本明細書において使用されるとき、一般的に、ソフトウェア、ファームウェア、ハードウェア、又は、これらの組合せを表している。ソフトウェアの実装の場合には、モジュール又はコンポーネントは、プロセッサ(例えば、CPU)で実行されるときに特定のタスクを実行するプログラムコードを表している。プログラムコードは、1以上のコンピュータ読み取り可能なメモリ装置に記憶することができ、
図7を参照しながらさらなる説明がされている。ハードウェアの実装の場合には、モジュール又はコンポーネントは、特定のタスクを実行する機能ブロック又は他のハードウェアを表している。例えば、ハードウェアの実装においては、モジュール又はコンポーネントは、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、コンプレックスプログラマブルロジック装置(CPLD)などとすることができる。本明細書において説明されたデジタル署名するオーソリティ依存のプラットフォームシークレットの技術の特徴は、プラットフォームに依存することはない。すなわち、本技術は、様々なプロセッサを有する様々な市販のコンピューティングプラットフォームで実施することができることを意味する。
【0064】
主題が構造的特徴及び/又は方法論的動作に特有の言葉で説明されてきたが、添付の特許請求の範囲において定められる主題は、上述された特定の特徴又は動作に必ずしも限定されないことを理解されたい。むしろ、上述の特定の特徴及び動作は、請求項を実施する例示的形態として開示されたものである。