(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-06-09
(45)【発行日】2023-06-19
(54)【発明の名称】フラッシュエミュレーション機能を有するコントローラ及びコントロール方法
(51)【国際特許分類】
G06F 13/10 20060101AFI20230612BHJP
G06F 13/14 20060101ALI20230612BHJP
【FI】
G06F13/10 320Z
G06F13/14 310Z
(21)【出願番号】P 2020073271
(22)【出願日】2020-04-16
【審査請求日】2020-04-16
【審判番号】
【審判請求日】2022-04-14
(32)【優先日】2019-07-04
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】508197206
【氏名又は名称】新唐科技股▲ふん▼有限公司
(74)【代理人】
【識別番号】100102923
【氏名又は名称】加藤 雄二
(72)【発明者】
【氏名】ジヴ ハーシュマン
(72)【発明者】
【氏名】ダン モラヴ
(72)【発明者】
【氏名】モシェ アロン
【合議体】
【審判長】林 毅
【審判官】児玉 崇晶
【審判官】篠原 功一
(56)【参考文献】
【文献】特開2017-033537号公報
【文献】GADGET RENESASプロジェクト,“「W74M」セキュア認証フラッシュメモリ”,「GR-LYCHEE」ではじめる「電子工作」,株式会社工学社,2017年12月25日,初版,pp.102-122
(58)【調査した分野】(Int.Cl.,DB名)
G06F 13/10
G06F 13/14
(57)【特許請求の範囲】
【請求項1】
非セキュアな不揮発性メモリと連携して動作し、セキュアな不揮発性メモリを
エミュレートするコントローラであって、
ホストと通信するためのホストインターフェースと、
プロセッサと、を備え、
前記プロセッサは、前記ホストインタ
ーフェースを介して、前記不揮発性メモリで実行するための複数の命令を前記ホストから受信し、
前記複数の命令から、セキュアな単調カウンタに関係し、且つセキュアな単調カウンタが埋め込まれた不揮発性メモリで実行しようとする命令を識別し、
前記識別された命令を実行し、前記セキュアな単調カウンタが埋め込まれた不揮発性メモリの代わりに、前記識別された命令に応じて前記ホストに応答
し、
前記プロセッサは、
前記識別された命令を実行すると、前記セキュアな単調カウンタが組み込まれていない不揮発性メモリを選択するために前記ホストによって
アサートされたチップセレクト信号を
上書きするように設定される
ことを特徴とするコントローラ。
【請求項2】
メモリインターフェースと、をさらに備え、
前記プロセッサは、
前記メモリインターフェースを介して、前記セキュアな単調カウンタが組み込まれていない不揮発性メモリと通信し、
前記識別された命令以外の命令を前記セキュアな単調カウンタが組み込まれていない不揮発性メモリに転送して前記セキュアな単調カウンタが組み込まれていない不揮発性メモリが前記識別された命令以外の命令を実行するように設定される請求項1に記載のコントローラ。
【請求項3】
前記プロセッサは、
前記セキュアな単調カウンタが組み込まれていない不揮発性メモリを選択するために前記ホストによってアサートされた前記チップセレクト信号を傍受することにより、前記不セキュアな単調カウンタが組み込まれていない
不揮発性メモリにアクセスしようとする命令を受信するように設定される請求項1に記載のコントローラ。
【請求項4】
前記プロセッサは、TPMとともに、前記識別された命令を実行するように設定される請求項1に記載のコントローラ。
【請求項5】
前記TPMは、前記コントローラに統合される請求項4に記載のコントローラ。
【請求項6】
前記TPMは、前記コントローラの外部に位置し、
前記コントローラは、前記TPMと通信するためのTPMインターフェースをさらに含む請求項4に記載のコントローラ。
【請求項7】
前記TPMは、前記コントローラの外部に位置し、且つ前記ホストに接続され、
前記プロセッサは、前記ホストインターフェースを介して前記TPMと通信するように設定される請求項4に記載のコントローラ。
【請求項8】
前記識別された命令は、RPMC仕様に準拠し、
前記プロセッサは、前記RPMC仕様に従って前記識別された命令を実行するように設定される請求項1に記載のコントローラ。
【請求項9】
非セキュアな不揮発性メモリと連携して動作し、セキュアな不揮発性メモリを
エミュレートするコントロー
ラにおいて、
コントローラにおいて、前記不揮発性メモリで実行するための複数の命令をホストから受信し、
前記複数の命令から、セキュアな単調カウンタに関係し、且つ、セキュアな単調カウンタが埋め込まれた不揮発性メモリで実行しようとする命令を識別し、
前記セキュアな単調カウンタが組み込まれていない不揮発性メモリの代わりに、前記コン
トローラによって前記識別された命令を実行し、
前記識別された命令を実行することは、前記不揮発性メモリを選択するために前記ホストによって
アサートされたチップセレクト信号を
上書きするように設定することを含むコントロール方法。
【請求項10】
セキュアな単調カウンタが組み込まれていない不揮発性メモリと通信し、
前記識別された命令以外の命令を前記セキュアな単調カウンタが組み込まれていない不揮発性メモリに転送して、前記セキュアな単調カウンタが組み込まれていない不揮発性メモリが前記識別された命令以外の命令を実行する請求項9に記載のコントロール方法。
【請求項11】
前記セキュアな単調カウンタが組み込まれていない不揮発性メモリを選択するために前記ホストによってアサートされる前記チップセレクト信号を傍受することにより、前記セキュアな単調カウンタが組み込まれていない不揮発性メモリにアクセスしようとする命令を受信する請求項9に記載のコントロール方法。
【請求項12】
TPMとともに、前記識別された命令を実行する請求項9に記載のコントロール方法。
【請求項13】
前記TPMは、前記コントローラに統合される請求項12に記載のコントロール方法。
【請求項14】
前記TPMは、前記コントローラの外部に位置し、
前記コントローラは、前記TPMと通信するためのTPMインターフェースをさらに含む請求項12に記載のコントロール方法。
【請求項15】
前記TPMは、前記コントローラの外部に位置し、且つ前記ホストに接続され、
前記
コントローラのプロセッサは、前記
コントローラのホストインターフェースを介して前記TPMと通信する請求項12に記載のコントロール方法。
【請求項16】
前記識別された命令は、RPMC仕様に準拠し、
前記
コントローラのプロセッサは、前記RPMC仕様に従って前記識別された命令を実行する請求項9に記載のコントロール方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、セキュアコンピューティング環境において、フラッシュエミュレーション機能を有するコントローラ及びコントロール方法に関わりに、特に、埋め込みセキュアモノトニックカウンター(embedded secure monotonic counters(ESMC))を備えるフラッシュメモリのミュレーション機能を有するコントローラ及びコントロール方法に関する。
【背景技術】
【0002】
パーソナルコンピューター(PC)プラットフォームは通常、シリアルフラッシュメモリを使用して、不揮発性データ、たとえば基本入出力システム(BIOS)コードを格納する。場合によっては、シリアルフラッシュメモリは、セキュリティや電源管理などの重要な機能を永続的なストレージサポートとして提供する。
【0003】
セキュリティ要件を満たすために、フラッシュデバイスには1つ以上のリプレイ保護単調カウンター(RPMC)を含めることができる。RPMCは、秘密キーと適切なソフトウェアとに結合して、リプレイ攻撃などの不正操作からフラッシュを保護する。
【0004】
単調カウンターを使用したセキュリティのためのさまざまな技術が当技術分野で知られている。例えば、米国特許第9,405,707号(特許文献1)には、単調カウンタを有するフラッシュメモリデバイスと、フラッシュメモリデバイスに通信可能に結合されたホストデバイスとを含むシステムが記載されている。ホストデバイスは、認証資格情報を生成し、当該認証資格情報と、デバイスキーによって生成された第一の署名と、を使用して、フラッシュメモリデバイスに含まれる単調カウンタからカウンタ値をリクエストし、単調カウンタから当該カウンタ値を受け取り、フラッシュメモリデバイスから当該認証資格情報を受け取り、デバイスキーによって生成された第二の署名と、単調カウンタを増加(increment)するためのコマンドと、をフラッシュメモリに送信する。ここでは、フラッシュメモリデバイスは、独自のキーを使用して上記リクエストとコマンドを認証することで、単調カウンタ値を増加することができる。
【先行技術文献】
【特許文献】
【0005】
【発明の概要】
【発明が解決しようとする課題】
【0006】
本発明の目的は、すべてのフラッシュ命令を実装するフラッシュを備えたコンピューティングシステムよりも安価なコンピューティングシステムでセキュアフラッシュ機能を実現できるコントローラ及びコントロール方法を提供することにある。
【課題を解決するための手段】
【0007】
本発明の実施形態に係るコントローラは、ホストと通信するためのホストインターフェースと、プロセッサと、を備え、前記プロセッサは、前記ホストインターフェイスを介して、不揮発性メモリ(NVM)で実行するための複数の命令を前記ホストから受信し、前記複数の命令から、セキュアな単調カウンタに関係し、且つ、セキュアな単調カウンタが埋め込まれた不揮発性メモリでの実行しょうとする命令を識別し、前記識別された命令を実行し、前記不揮発性メモリの代わりに、前記識別された命令に応じて前記ホストに応答する。
【0008】
1つの実施形態では、前記コントローラは、メモリインターフェースをさらに備え、前記プロセッサは、前記メモリインターフェースを介して、セキュアな単調カウンタが組み込まれていない不揮発性メモリと通信し、前記識別された命令以外の命令を前記セキュアな単調カウンタが組み込まれていない不揮発性メモリに転送して実行するように設定される。1つの実施形態では、前記プロセッサは、前記識別された命令を実行すると、前記不揮発性メモリを選択するために前記ホストによってアサートされたチップセレクト(CS)信号を上書きするように設定される。さらに別の実施形態では、前記プロセッサは、前記不揮発性メモリを選択するために前記ホストによってアサートされるた前記チップセレクト信号を傍受することにより、前記不揮発性メモリにアクセスしょうとする命令を受信するように設定される。
【0009】
いくつかの実施形態では、前記プロセッサは、TPM(トラステッドプラットフォームモジュール)とともに、前記識別された命令を実行するように設定される。1つの実施形態では、前記TPMは、前記コントローラに統合される。別の実施形態では、前記TPMは、前記コントローラの外部に位置し、前記コントローラは、前記TPMと通信するためのTPMインターフェースをさらに含む。別の実施形態では、前記TPMは、前記コントローラの外部に位置し、且つ前記ホストに接続され、前記プロセッサは、前記ホストインターフェースを介して前記TPMと通信するように設定される。
【0010】
1つの実施形態では、前記識別された命令は、RPMC(リプレイ保護された単調性カウンタ)仕様に準拠し、前記プロセッサは、前記RPMC仕様に従って前記識別された命令を実行するように設定される。
【0011】
本発明の実施形態に係るコントロール方法は、コントローラにおいて、不揮発性メモリで実行するための複数の命令をホストから受信し、前記複数の命令から、セキュアな単調カウンタに関係し、且つ、セキュアな単調カウンタが埋め込まれた不揮発性メモリで実行しょうとする命令を識別し、前記不揮発性メモリの代わりに、前記コンローラーによって前記識別された命令を実行する。
【図面の簡単な説明】
【0012】
【
図1】
図1は、本発明の1つの実施形態にかかる、RPMCフラッシュエミュレーションを実行する、スレーブ接続フラッシュ(Slave-Attached-Flash)構成を有するコンピューティングシステムを概略的に示すブロック図である。
【
図2】
図2は、本発明のもう1つの実施形態にかかる、RPMCフラッシュエミュレーションを実行する、ホスト接続フラッシュ(host-attached Flash)構成を有するコンピューティングシステムを概略的に示すブロック図である。
【
図3】
図3は、本発明のもう1つの実施形態にかかる、RPMCフラッシュエミュレーションを実行する、スレーブ接続フラッシュ構成を有するコンピューティングシステムを概略的に示すブロック図である。
【
図4】
図4は、本発明のもう1つの実施形態にかかる、RPMCフラッシュエミュレーションを実行する、ホスト接続フラッシュ構成を有するコンピューティングシステムを概略的に示すブロック図である。
【
図5】
図5は、本発明の第5実施形態にかかる、RPMCフラッシュエミュレーションを実行する、スレーブ接続フラッシュ構成を有するコンピューティングシステムを概略的に示すブロック図である。
【発明を実施するための形態】
【0013】
以下、本発明について、図に示す実施形態に基づいて説明する。
【0014】
フラッシュメモリなどの不揮発性メモリデバイス(NVM)は、コンピューターシステムで使用されるブートコードまたはその他の機密情報を格納するために使用されるため、コンピューターハッキングからの影響を受ける場合がある。従来のNVMでは、最低限の保護しか提供できない。たとえば、NVMのセクターには、書き込み保護機能を有するが、その一部のコピーや、NVM内のすべてのデータの書き換えが依然として可能である。NVMに対する保護を強化するために、単調に変更する(増加する)セキュアな単調カウンタの使用が考えられる。
【0015】
セキュアな単調カウンターの例として、Replay-Protected-Monotonic-Counters(RPMC)を挙げられる。2013年のIntel仕様「Serial Flash Hardening Product External Architecture Specification(EAS)」リビジョン0.7(ドキュメント番号:328802-001EN)には、アーキテクチャおよび命令セットを含むRPMC仕様について記載されており、参考用の文献として本明細書で引用されている。
【0016】
RPMC仕様には、256ビットの「ルートキー」を書き込むコマンドが含まれている。このルートキーは、外部からの読み取りができないようにフラッシュ内に保存されており、システムの製造中に1回きりプログラムされている。32ビットの単調カウンタはルートキーに関連付けられている。有効な256ビットのルートキー書き込み操作がルートキーの値に関係なく実行されると、32ビットの単調カウンタはゼロに初期化される。
【0017】
認証されたコマンドと応答とは、ハッシュメッセージ認証コードキー(「HMACキー」)を使用して署名されたコマンドと応答のことである。署名はHMACを使用して検証される。 HMACキーはフラッシュ内に保存され、テストモードでさえ読み取ることができない。認証済みの「HMACキー更新コマンド」を使用して、256ビットHMACキーを導き出す。 HMACキーは、HMAC-SHA-256を使用してコマンド中に提供されたルートキーおよびキーデータから取得される。 そのため、このコマンドは2つのHMAC-SHA-256操作を実行する。1つはHMACキーを取得し、もう1つは署名を検証する。
【0018】
他の認証済みコマンドは、RPMCのカウント値の増加及びRPMCを読み取るのにサポートするように使用される。RPMC仕様では、ルートキーレジスタやHMACキーレジスタなどの関連リソースを有する少なくとも4つのカウンタのサポートが必要であるとされている。RPMCコマンドのリストは、上記で引用したIntelRPMC仕様のセクション2.1に記載されている。
【0019】
本明細書で開示される本発明の実施形態は、非セキュアフラッシュ(non-secure-Flash)およびコントローラを使用して、埋め込み単調カウンタを有するセキュアNVMをエミュレートする(例えば、RPMCをサポートするフラッシュ)方法およびシステムを提供する。コントローラは非セキュアフラッシュの外部に位置し、たとえば、組み込みコントローラ(EC)、ベースボード管理コントローラ(BMC)、「スーパーI / O」コントローラ、または他の適切なコントローラであってもよい。非セキュアフラッシュデバイスは通常、セキュアフラッシュデバイスよりもシンプルであるため(したがって、安価)、本発明の実施形態によるコンピューティングシステムは、セキュアフラッシュデバイス(例えば、RPMC-Flashデバイス)を含むコンピュータシステムよりも安価であり得る。
【0020】
以下の説明は主にRPMCに関するが、本発明の開示された技術は、NVMに組み込まれ得る他の適切なタイプのセキュアな単調カウンタにも適用できる。また、以下の説明は主にシリアルフラッシュに関するが、本発明の開示された技術は他の適切なタイプのNVMにも適用できる。なお、以下のシリアルフラッシュおよびRPMCに関する説明は、あくまでも一例であり、本発明を限定するためのものではないことに留意する必要がある。
【0021】
記載を簡単にするため、セキュリティ機能をサポートするフラッシュをセキュアフラッシュと呼び、そのような機能をサポートしないフラッシュを非セキュアフラッシュと呼ぶ。さらに、RPMCをサポートするセキュアフラッシュをRPMCフラッシュと呼び、RPMCをサポートしないフラッシュを非RPMCフラッシュと呼ぶ。
【0022】
1つの実施形態では、コンピューティングシステムは、ホストと、非セキュアフラッシュ(たとえば従来のシリアルフラッシュデバイス)と、に通信するコントローラを備える。ホストは、フラッシュに保存されているデータにアクセスする命令やセキュリティ関連の命令(RPMC命令など)を含むフラッシュ命令を実行する。コントローラは、非セキュアフラッシュと連動して動作し、ホストに対してセキュアフラッシュをエミュレートする。たとえば、非セキュアフラッシュとコントローラを備えたシステムでは、ホストは、RPMCフラッシュによって実行する単調増加カウンター命令を発行できる。コントローラは、ホストに対して透過的に(transparently)、フラッシュの代わりに命令を傍受(intercept)又は実行できる。
【0023】
いくつかの実施形態では、コントローラは、ホストと通信するためのホストインターフェースを含む。プロセッサは、ホストインターフェースを介してホストからセキュアフラッシュで実行するための命令を受信する。プロセッサは、セキュリティ関連のフラッシュ命令(例えばRPMC命令)を識別し、セキュリティ関連の命令の少なくとも一部を実行し、ホストに応答する。ホストが発行するセキュリティ関連以外の命令は、非セキュアフラッシュによって実行されることができる。
【0024】
本発明の他の実施形態によれば、コンピューティングシステムは、非セキュアフラッシュデバイスを備え、コントローラは、非セキュアフラッシュに結合されたフラッシュインターフェースユニットを備える。ここでは、フラッシュがコントローラを介してホストに接続されている構成は、スレーブ接続フラッシュ(SAF)と呼ばれる。プロセッサは、ホストから(ホストインターフェイスユニットを介して)フラッシュ命令を受け取る。プロセッサは、セキュリティ関連の命令を実行し、セキュリティ関連以外の命令を送信して、非セキュアフラッシュで実行する(フラッシュインターフェイス経由)。 プロセッサは、ホストインターフェイスユニットを介してホストに応答する。
【0025】
いくつかの実施形態では、ホストは、シリアルペリフェラルインターフェース(SPI)や拡張シリアルペリフェラルインターフェース(eSPI)などのシリアルバスを介してコントローラと通信する、シリアルバスは、例えば、双方向データライン、クロックライン、および複数のチップセレクト(CS)ライン(シリアルバスに接続されているデバイスごとに1本のCSラインを含まれる。ホストによってセキュアフラッシュと通信するためにアサートするCS信号は、コントローラに結合され、コントローラによって非セキュアフラッシュにリレーされる。コントローラは、セキュリティ関連以外の命令のために、CS信号をフラッシュにリレーする。一方、セキュリティ関連の命令(RPMC命令など)の場合、コントローラはCS信号を非セキュアフラッシュに上書きする。
【0026】
本発明による他の実施形態では、非セキュアフラッシュは、SPIまたはeSPIバスを介してホストに結合される。ホストがセキュアフラッシュと通信するために生成するCS信号は、非セキュアフラッシュのCS入力に結合される。ただし、非セキュアフラッシュは、セキュリティ関連の命令(非セキュアフラッシュが実行できない命令)に応答しないように設定されている。コントローラは、ホストがフラッシュに送信するCS信号を傍受し、命令のタイプを確認する。 コントローラは、フラッシュが実行できない命令を実行する。
【0027】
いくつかの実施形態において、セキュリティ関連の命令の実行は、セキュリティ機能の処理(例えば、セキュリティ署名、またはセキュリティ署名の検証)を含む。1つの実施形態では、ホストはトラステッドプラットフォームモジュール(TPM)を含む。TPMは、安全な暗号プロセッサの国際標準(ISO/IEC11889)において、統合された暗号キーを介してハードウェアを保護するために設計された専用のマイクロコントローラである。コントローラとTPMは機密データを共有することができ、これによりコントローラとTPM間の安全な通信が可能になる。コントローラは、ホストがTPMをセキュアリンクを有するセキュアなNVストレージユニットとして使用して発行したセキュリティ関連の命令を処理できる。
【0028】
本発明のいくつかの実施形態では、コントローラはTPMを備え、コントローラとTPM間の通信は、元々で安全な方法(または、少なくとも、集積回路間通信よりも安全な方法)でオンチップで行われる。
【0029】
さらに他の実施形態では、コントローラはTPMへのインターフェースを備えておらず、ホストを介してTPMと通信する。TPMにアクセスするために、コントローラはリクエストをホストに送信し、ホストはリクエストをTPMにリレーする。TPMが応答すると、ホストは応答を受信し、コントローラに送信する。
【0030】
本発明によるいくつかの実施形態では、セキュアフラッシュの代わりにコントローラが実行するセキュリティ関連命令は、上記RPMC仕様またはその一部で定義されるRPMC命令を含む。
【0031】
上記で参照したRPMC仕様に準拠したフラッシュデバイス(「RPMCフラッシュ」)は、ユニーク制御(unique control)、ステータス、および構成レジスタとメカニズムを備えており、複数の専用のRPMC命令に応答する。コントローラはそのようなRPMC命令をエミュレートし、RPMC命令が検出されると、非RPMCフラッシュのCS信号を上書きすることができる。さらに、コントローラは、非セキュアフラッシュのフラッシュビジーを上書きするフラッシュビジーレジスタ、フラッシュ拡張ステータスレジスタ(RPMCの拡張ステータスレジスタをエミュレートする)、およびシリアルフラッシュ検出可能パラメーター(SFDP)構造を含むことができる。
【0032】
コントローラは、RPMCフラッシュに必要な一部のフラッシュレジスタと一部の拡張機能のキャッシュ(例えば、ミラー)も備え、フラッシュに代わって応答する。
【0033】
いくつかの実施形態では、フラッシュは、RPMC仕様で定義されたRPMC機能の一部を含む場合(たとえば、フラッシュは仕様で定義された4つのRPMCカウンターのうち2つを実装する場合)、コントローラは欠落した機能(missing functionality)をエミュレートすることができる。
【0034】
したがって、本明細書で説明される本発明の実施形態は、コントローラおよびTPMを含み、セキュアフラッシュを含まないシステムでセキュアフラッシュのエミュレーションを提供する。いくつかの実施形態では、TPMは単独のモジュールであるが、他の実施形態では、TPMはコントローラに組み込まれていてもよい。いくつかの実施形態では、ホストは非セキュアフラッシュに直接結合され、他の実施形態では、非セキュアフラッシュは、例えばスレーブ接続フラッシュ構成によってコントローラを介してホストに結合される。
【0035】
なお、上記のRPMC仕様の例はシリアルフラッシュのRPMCの特定の仕様に関する例であり、本発明は、それに限定されることはない。本発明は、シリアルフラッシュ、パラレルフラッシュ、または他の任意のタイプのNVMにおいて、任意の適切なRPMC仕様に適用することができる。
【0036】
また、いくつかの実施形態では、CPUが発行するいくつかの命令の実行は、非セキュアフラッシュとコントローラによって一緒に行われてもよい(例えば、フラッシュが必要なRPMCアーキテクチャのサブセットをサポートする場合)。
【0037】
システムの説明
【0038】
図1は、本発明の第1の実施形態による、スレーブ接続フラッシュ(SAF)構成を備えたコンピューティングシステム100を概略的に示すブロック図である。コンピューティングシステムは、セキュアフラッシュデバイス(例えば、RPCMを備えたフラッシュデバイス)の安全なアクセスに関する命令を含むソフトウェア命令を実行するホスト102と、セキュリティ機能を実現するTPM104と、ホストがフラッシュデバイスに発行する命令の一部またはすべてをサポートしない非セキュアフラッシュメモリ106と、ホストが発行するフラッシュセキュリティ機能をエミュレートするコントローラ108と、を備える。
【0039】
図1の例示的な実施形態では、ホストは、シリアルプロトコルインターフェース(SPI)バスを介してTPMと通信し、拡張シリアルプロトコルインターフェース(eSPI)バスを介してコントローラと通信する。コントローラは、集積回路間(I2C)バスを介してTPMと通信し、SPIバスを介してフラッシュと通信する。代替の実施形態では、シリアルまたはパラレルの他の適切なバスを使用することができる。
【0040】
図1の例示的な実施形態では、フラッシュはコントローラに接続され、フラッシュとのすべての通信はコントローラによって行われる。この構成は、ここではスレーブ接続フラッシュ(SAF)と呼ぶ。
【0041】
ホストが実行する命令の一部は、フラッシュの読み取り/書き込みやフラッシュセキュリティ機能などのフラッシュメモリへのアクセスに関連している(例えば、RPMC命令など)。フラッシュメモリへのアクセスに関連するすべての命令は、以下「フラッシュ命令」と呼ぶ。
【0042】
コントローラの拡大図を
図1の下部に示している。コントローラはプロセッサ110と、ホスト102とプロセッサとの間で通信するように構成され、拡張シリアル周辺インターフェース(eSPI)ポートを含むホストインターフェース112と、TPM104とプロセッサ間で通信するように構成されたI2C(Inter-Integrated Circuit-Bus)ポート114と、フラッシュ106とプロセッサとの間で通信するように構成されたシリアル周辺インターフェース(SPI)ポート116とを備える。
【0043】
ホストはフラッシュおよび非フラッシュ命令を実行します。 フラッシュ命令を実行するには、ホストはeSPIバスを介してフラッシュデバイスと通信するように構成される。
図1のSAF構成の例では、コントローラはホストが発行するフラッシュ命令を受信して応答する。
【0044】
コントローラ108では、プロセッサ110はホストインターフェース112を介してフラッシュ命令を受信する。プロセッサ110は、一部の命令を非セキュアフラッシュ106によって直接実行のために非セキュアフラッシュ106に送信することができる。プロセッサは(たとえば、非セキュアフラッシュが実行できない)他の命令を実行する。他の命令の実行には、I2Cポート104を介してTPM104及び非セキュアフラッシュにアクセスする必要がある。
【0045】
プロセッサは、リクエストされたデータをホストに返すか、または命令の実行が完了したことを示す指示を返すことによって、一部のフラッシュ命令を完了することができる。
【0046】
以上のように、
図1に示される例示的な実施形態によれば、コンピューティングシステムは、一部のセキュリティ機能をサポートしないスレーブ接続フラッシュを備えてもよい。 このフラッシュはコントローラを介してホストに接続される。コントローラは、フラッシュおよびTPMと通信し、すべてのフラッシュ命令を直接、または非セキュアFlashやTPMと組み合わせて、ホストに対して透過的(ホストに気付かれず)に実行することができる。したがって、本発明のセキュアなフラッシュ機能は、すべてのフラッシュ命令を実装するフラッシュを備えたコンピューティングシステムよりも安価なコンピューティングシステムで実現できる。
【0047】
図2は、本発明の第2の実施形態による、ホスト接続フラッシュ構成を備えたコンピューティングシステム200を概略的に示すブロック図である。第2の実施形態のコンピューティングシステムは、フラッシュ命令を含むソフトウェア命令を実行するように構成されたホスト202と、セキュリティ機能を実装するように構成されたトラステッドプラットフォームモジュール(TPM)204と、ホストがフラッシュデバイスに発行する命令の一部またはすべてをサポートしないフラッシュ206(以下、非セキュアフラッシュ206とも呼ぶ )と、ホストが発行するフラッシュセキュリティ機能をエミュレートするように構成されたコントローラ208と、を備える。
【0048】
図2の例示的な実施形態では、ホスト202は、SPIバスを介してTPM204、コントローラ208、および非セキュアフラッシュ206と通信する。 また、代替の実施形態では、シリアルバスまたはパラレルバスなどの他の適切なバスを使用することができる。
【0049】
図2の例示的な実施形態では、非セキュアフラッシュ206はすべてのフラッシュ通信データを受信するが、サポートできる命令にのみ応答するように構成されている。たとえば、ホスト202が非セキュアフラッシュ206がサポートしないRPMC命令を発行した場合、非セキュアフラッシュ206はその命令を無視する。
【0050】
コントローラ208の拡大図を
図2の下部に示めす。コントローラ208は、プロセッサ210と、ホスト202とプロセッサ210との間で通信するように構成されたホストインターフェース212と、TPM204とコントローラ210との間で通信するように構成されたI2Cポート214。と、を備える。
【0051】
フラッシュ命令を実行するために、ホストはSPIバスを介してセキュアフラッシュデバイスと通信するように構成されている。ホスト202は、セキュアフラッシュと通信するときに、非セキュアフラッシュとコントローラに結合されるチップセレクト(CS)ラインをアサート(assert)する。ホスト202が非セキュアフラッシュでサポートされていないセキュリティ関連の命令を発行すると、コントローラ208がその命令を読み取って実行する。
【0052】
コントローラ208では、ホストインターフェイス212はSPIバス(上記CSラインを含む)に接続されている。プロセッサ210は、ホストインターフェイス212を介してホスト202からすべてのフラッシュ命令を受け取る。プロセッサ210が、受信した命令を非セキュアフラッシュ206で実行できないと判断した場合(RPMC命令などの場合)、プロセッサ210は命令を実行する。非セキュアフラッシュ206が実行できない命令を実行するには、I2Cポート104を介してTPM204へアクセスすることがある。たとえば、いくつかのRPMCカウンターがTPMに204設置されており、ホスト202がRPCM読み取り命令(a read-RPCM instruction)を発行した場合、プロセッサ210はI2Cポート214を介してTPM204にアクセスし、RPCMに保存されている値を返すようにTPM204にリクエストする。プロセッサ210は、ホストインターフェイス212を介して、リクエストされたデータをホスト202に返す。
【0053】
プロセッサ210は、リクエストされたデータをホスト202に返すか、または命令の実行が完了したことを示す指示をホスト202に返すことによって、一部のフラッシュ命令のを完了する。
【0054】
以上のように、
図2に示す例示的な実施形態によれば、コンピューティングシステムは、コントローラに並列にシリアルバスを介してホストに接続される非セキュアフラッシュを備えてもよい。非セキュアフラッシュはフラッシュ命令のサブセットを実行し、コントローラは非セキュアフラッシュがサポートしないフラッシュ命令を実行する。したがって、本発明のセキュアなフラッシュ機能は、すべてのフラッシュ命令を実装するフラッシュを備えたコンピューティングシステムよりも安価なコンピューティングシステムで実現できる。
【0055】
図3は、本発明の第3の実施形態による、SAF構成を備えたコンピューティングシステム300を概略的に示すブロック図である。
図3に示すように、第3実施形態は、コントローラがTPMに直接結合されていないこと以外では、
図1の実施形態と同様である。
【0056】
コンピューティングシステム300は、(セキュアおよび非セキュア)フラッシュ命令を含むソフトウェア命令を実行するように構成されたホスト302と、セキュリティ機能を実現するように構成されたTPM304と、ホスト302がフラッシュデバイスに発行する命令の一部またはすべてをサポートしない非セキュアフラッシュメモリ306と、ホスト302が発行するフラッシュセキュリティ機能をエミュレートするように構成されたコントローラ308と、を備える。
【0057】
図3の実施形態では、ホスト302は、SPIバスを介してTPM304と通信し、eSPIバスを介してコントローラ308と通信する。コントローラ308はSPIバスを介してフラッシュ306と通信する。 また、代替の実施形態では、シリアルバスまたはパラレルバスなどの他の適切なバスを使用することができる。
図3の実施形態のSAF構成では、フラッシュは、コントローラに取り付けられている。
【0058】
ホストは、非セキュアフラッシュ306が実行できる命令と、コントローラ308によって実行される非セキュアフラッシュ306がサポートしていない命令と、を含むフラッシュ命令を実行する。
【0059】
コントローラ308の拡大図を
図3の下部に示めしている。コントローラ308は、プロセッサ310と、ホスト302とプロセッサ310との間で通信するように構成され、eSPIポートを含むホストインターフェース312と、フラッシュ306とプロセッサ310との間で通信するように構成されたSPIポート316と、を備える。
【0060】
ホスト308は、eSPIバスを介してフラッシュデバイスと通信するように構成されている。
図3のSAF構成の例では、ホスト308が発行するフラッシュ命令をコントローラ308によって受信して応答する。
【0061】
コントローラ308において、プロセッサ310はホストインターフェース312を介してフラッシュ命令を受信する。プロセッサ310は、一部の命令を非セキュアフラッシュ306によって直接実行のために非セキュアフラッシュ306に送信することができる。プロセッサ310は、(例えば、非セキュアフラッシュ306が実行できない)他の命令を実行する。他の命令を実行するには、I2Cポート104を介してTPM304及び非セキュアフラッシ306ュにアクセスする必要がある。
【0062】
プロセッサ310は、リクエストされたデータをホストに返すか、または命令の実行が完了したことを示す指示を返すことによって、一部のフラッシュ命令を完了する。
【0063】
ここで、
図3を参照して、本発明の実施形態による例示的なソフトウェアドライバを簡単に説明する。
図3に示される例示的な実施形態によれば、少なくとも2つのドライバ、すなわち、フラッシュアプリケーションドライバ318とセキュリティサービスドライバ320がホスト302とが、同時にアクティブ状態にある。
【0064】
フラッシュアプリケーションドライバ318は、フラッシュデバイスへのソフトウェアインターフェイスを提供します。
図3の例示的な実施形態では、フラッシュアプリケーションドライバ318はコントローラ308と通信する。ただし、ドライバーは、セキュアフラッシュを含むコンピューティングシステムでホストが使用できるドライバーと同様(または同一)にすることができる。フラッシュドライバー318は、
図1および2の実施例でも使用できる)。
【0065】
セキュリティサービスドライバ320は、セキュリティサービスクライアントとTPM間のインターフェイスを提供する。
図3に示される例示的な実施形態では、プロセッサ310は、ホストインターフェース312を介してセキュリティサービスドライバ320からTPMサービスをリクエストできる。デバイスドライバーは、サービスの実行のためにTPM 304にアクセスし、(コントローラ内の)ホストインターフェース312を介して、プロセッサ310に応答する。
【0066】
いくつかの実施形態では、初期のプリブート段階(PCのMEブートなど)では、TPMドライバーがまた作動されていないため、TPMは一部のセキュリティ機能(単調性カウンター機能など)のために使用できない。このとき、コントローラは、非セキュアフラッシュに保存されている単調な値を報告することにより、電源投入時の「レトロアクティブ」RPMCをサポートし、TPMからの認証された単調カウンタの読み取り値を待つ(単調カウンタの読み取り値をバッファに保持する)。もし単調カウンター読み取り値が事前定義された期間内に認証されなかった場合、コントローラ308はホストをリセット又は中断して、セキュリティ障害の警告を発令する。
【0067】
以上のように、
図3に示される例示的な実施形態によれば、コンピューティングシステムは、一部のセキュリティ機能をサポートしないスレーブ接続フラッシュを備えてもよい。フラッシュはコントローラを介してホストに接続される。コントローラには、TPMへのインターフェースが含まれていない。代わりに、コントローラはホストで実行されるサービスドライバーを介してTPMにアクセスする。したがって、上記セキュアフラッシュ機能は、すべてのフラッシュ命令を実装するフラッシュを備えたコンピューティングシステムよりも安価なコンピューティングシステムで実現できる。
【0068】
図4は、本発明の第4実施形態によるホスト接続フラッシュ構成を備えたコンピューティング400システムを概略的に示すブロック図である。 この実施形態では、コントローラは、TPMを有する。
【0069】
コンピューティングシステム400は、フラッシュ命令を含むソフトウェア命令を実行するように構成されたホスト402と、非セキュアFlash 406と、ホストが発行するフラッシュセキュリティ機能をエミュレートするように構成されたコントローラ408と、を備える。
【0070】
図4の例示的な実施形態では、ホスト402は、SPIバスを介してコントローラ408および非セキュアフラッシュ406と通信する。また、代替の実施形態では、シリアルバスまたはパラレルバスなどの他の適切なバスを使用することができる。
【0071】
図4の例示的な実施形態では、非セキュアフラッシュ406はすべてのフラッシュ通信を受信するが、サポートする命令にのみ応答するように構成されている。たとえば、ホスト402が非セキュアフラッシュ406がサポートしないRPMC命令を発行した場合、非セキュアフラッシュ406はその命令を無視する。
【0072】
コントローラ408の拡大図を
図4の下部に示めす。コントローラ408は、プロセッサ410と、ホスト202とプロセッサ410との間で通信するように構成されたホストインターフェース412と、セキュリティ機能を実現するように構成される埋め込みTPM(embeddedTPM)414と、を備える。
【0073】
フラッシュ命令を実行するために、ホスト402はSPIバスを介してセキュアフラッシュデバイスと通信する。セキュアフラッシュとの通信時にホスト402によってアサートするチップセレクト(CS)ラインは、非セキュアフラッシュ406とコントローラ408に結合される。ホスト402が非セキュアフラッシュ406がサポートしないセキュリティ関連の命令を発行すると、コントローラ408がその命令を読み取って実行する。
【0074】
コントローラ408では、ホストインターフェイス412はSPIバス(上記のCSラインを含む)に接続されている。プロセッサ410は、ホストインターフェイス412を介してホスト402からすべてのフラッシュ命令を受信する。受信した命令(RPMC命令など)を非セキュリティフラッシュメモリ406で実行できないことをプロセッサ410が認識すると、プロセッサ410はその命令を実行する。非セキュアフラッシュメモリ406で実行できない命令は、実行中に埋め込みTPM414にアクセスすることがある。たとえば、一部のRPMCカウンターが埋め込みTPM414に設置されており、ホスト402がRPCM読み取り命令を発行した場合、プロセッサ410は組み込みTPM414にアクセスし、組み込みTPM414にRPCMに保存されているデータを返すようにリクエストする。プロセッサ410は、ホストインターフェイス412を介して、リクエストされたデータをホストに返す。
【0075】
プロセッサ410は、リクエストされたデータをホスト402に返すか、または命令の実行が完了したことを示す指示を返すことによって、一部のフラッシュ命令を完了する。
【0076】
以上のように、
図4に示される例示的な実施形態によれば、コンピューティングシステムは、コントローラと並列に、シリアルバスを介してホストに接続される非セキュアフラッシュを備えてもよい。非セキュアフラッシュはフラッシュ命令のサブセットを実行する、コントローラは非セキュアフラッシュがサポートしないフラッシュ命令を実行する。したがって、上記セキュアフラッシュ機能は、すべてのフラッシュ命令を実装するフラッシュを備えたコンピューティングシステムよりも安価なコンピューティングシステムで実現できる。
【0077】
図5は、本発明の第5の実施形態による、SAF構成を備えたコンピューティングシステム500を概略的に示すブロック図である。この実施形態では、コントローラ508はTPM514を備え、非セキュアフラッシュ構成はスレーブアタッチドフラッシュ(SAF)構成である。
【0078】
コンピューティングシステム500は、フラッシュ命令を含むソフトウェア命令を実行するように構成されたホスト502と、非セキュアフラッシュ506と、ホスト502が発行するフラッシュセキュリティ機能をエミュレートするように構成されたコントローラ508と、を備える。
【0079】
図5の例示的な実施形態では、ホスト502は、セキュリティ命令を含むフラッシュ命令をコントローラ508に送信する。非セキュアフラッシュ506はコントローラ508に結合されています。コントローラ508は、プロセッサ510、ホストインターフェース512、埋め込みTPM514、およびSPIポート516を備える。
【0080】
コントローラ508では、プロセッサ510はホストインターフェース512を介してフラッシュ命令を受信する。プロセッサ510は、一部の命令を非セキュアフラッシュ506によって直接実行のために非セキュアフラッシュ506に送信することができる。プロセッサは(たとえば、非セキュアフラッシュ506が実行できない)他の命令を実行する。他の命令の実行には、TPM504及び非セキュアフラッシュ506にアクセスする必要がある。
【0081】
プロセッサ510は、リクエストされたデータをホスト502に返すか、命令の実行が完了したことを示す指示を返すことによって、一部のフラッシュ命令を完了する。
【0082】
以上のように、
図5に示す例示的な実施形態によれば、コンピューティングシステムは、SAF構成のコントローラを介してホストに接続される非セキュアフラッシュを備えてもよい。コントローラは、セキュアおよび非セキュアのすべてのフラッシュ命令を実行し、追加の非セキュアフラッシュおよび内部の組み込みTPMにアクセスする。したがって、上記セキュアフラッシュ機能は、すべてのフラッシュ命令を実装するフラッシュを備えたコンピューティングシステムよりも安価なコンピューティングシステムで実現できる。
【0083】
図1から
図5に示されるコンピューティングシステムの実施形態は、あくまでも一例であるため、本発明は、それらの実施形態に限定されることはない。代替実施形態では、例えば、他のタイプの不揮発性メモリを使用でき、システムのさまざまなコンポーネントを接続するバスも、上記のバスとは異なってもよい。また、いくつかの実施形態では、複数のホスト、複数のセキュアフラッシュデバイス、および/または複数のコントローラが存在してもよい。別の実施形態では、単一のコントローラを複数のフラッシュデバイスおよび/または複数のTPMに結合してもよい。
【0084】
一部の実施形態では、ホストは、フラッシュをアトミック(atomically)に読み取り、RPMCを増加する命令を発行してもよい。プロセッサは、データの非セキュアフラッシュ及びTPMにアクセスして、対応するRPMCを増加することにより、上記命令をエミュレートしてもよい。
【0085】
いくつかの実施形態では、単一のTPMを、ホストにサービスを提供するTPMとしての役割以外にも、ボード上の他のコンポーネントの汎用セキュアNVストレージデバイスとして使用してもよい。別の実施形態では、上述のコントローラの機能はTPMで実施されてもよく、その場合、コントローラは無くてもよい。
【0086】
一部の非SAFの実施形態では、ホストがフラッシュに発行するCSラインはフラッシュではなくコントローラに結合され、フラッシュが受信するCSラインはホストではなくコントローラに結合されてもよく、コントローラは、ホストから受信するCS、およびセキュアフラッシュ機能を実行するために開始する他のフラッシュアクセスサイクルに応じてCS信号を生成してもよい。
【0087】
本発明によるいくつかの実施形態では、コントローラは、頻繁にアクセスされるセキュリティデータ(例えば、キー)用のキャッシュメモリを備えてもよい。
【0088】
コントローラ108、208、308、408、および508、またはそれらの要素は、特定用途向け集積回路(ASIC)またはフィールドプログラマブルゲートアレイ(FPGA)などの任意の適切なハードウェアを使用して実現してもよい。いくつかの実施形態では、コントローラの一部またはすべての要素は、ソフトウェア、ハードウェア、またはハードウェアとソフトウェアの組み合わせを使用して実現してもよい。
【0089】
通常、ホスト102、202、302、402、および502は、本明細書で説明する機能を実行するためにソフトウェアでプログラムされる汎用プロセッサを含んでもよい。ソフトウェアは、例えばネットワークを介して電子形式でプロセッサにダウンロードされてもよく、あるいは、代替的または追加的に、磁気、光学、または電子メモリなどの非一時的な有形媒体に提供および/または格納されてもよい。
【0090】
上述の実施例は、一例として引用されたものであり、本発明は、特に上で示され説明されたものに限定されないことである。むしろ、本発明の範囲は、上述した様々な特徴の組み合わせ及び部分的な組み合わせ、ならびに前述の説明を読むことによって当業者に想到し得る変形および修正の両方を含む。
【符号の説明】
【0091】
100、200、300、400、500…コンピューティングシステム
102、202、302、402、502…ホスト
104、204、304、414、514…TPM
106、206、306、406、506…フラッシュ
108、208、308、408、508…コントローラ
110、210、310、410、510…プロセッサ
112、212、312、412、512…ホストインターフェース
114、214、414、514…I2Cポート
116、316、516…SPIポート
318…フラッシュアプリケーションドライバ
320…セキュリティサービスドライバ