(58)【調査した分野】(Int.Cl.,DB名)
前記暗号化されたデバイスをアンロックする前に、前記要求が前記信頼のおけるリモートコンソールで発行されたことを確認する段階をさらに備える請求項1または請求項2に記載の方法。
前記暗号化されたデバイスのアンロックは、前記コンピュータの前記ホストオペレーティングシステムが誤動作している場合に実行される請求項1から請求項4のいずれか1つに記載の方法。
【発明を実施するための形態】
【0012】
本発明の実施形態は、暗号化方式、ユーザ識別情報認証方式およびパスワード保護方式で保護されているデバイスを備えるシステムを管理するための方法、装置、システムおよびコンピュータプログラム製品を提供するとしてよい。
【0013】
本明細書で本発明の「一実施形態」または「ある実施形態」と言及する場合、当該実施形態に関連付けて説明している特定の特徴、構造または特性が本発明の少なくとも1つの実施形態に含まれることを意味している。このため、本明細書において繰り返し「一実施形態において」、「一実施形態によると」等の記載が見られるが、これらは全て必ずしも同じ実施形態を意味しているものではない。
【0014】
説明を目的として、具体的な構成および詳細な事項を記載して、本発明を深く理解していただきたい。しかし、本発明の実施形態は本明細書に記載している具体的且つ詳細な内容を利用しなくても実施し得ることは当業者には明らかである。さらに、公知の特徴は、本発明があいまいにならないように、省略または簡略化している場合がある。本明細書ではさまざまな例を挙げている。記載した例は、本発明の具体的な実施形態を説明するためのものに過ぎない。本発明の範囲は、記載した例に限定されるものではない。
【0015】
一実施形態によると、隔離および管理された環境を提供するためのセキュアパーティション内で、保護デバイス管理を実施する。セキュアパーティションは、信頼のおける管理アプリケーションから管理動作を実行するためのコマンドを受信するとしてよい。セキュアパーティションによれば、保護デバイスを管理するためのコマンドは、正当なソースからのものであることが証明される。信頼のおける管理アプリケーションは、システムからリモートであるとしてよく、セキュア通信チャネルを介してセキュアパーティションと通信を行うとしてよい。
【0016】
保護デバイスマネージャの隔離されたセキュアな環境は、さまざまな種類のパーティションを含むとしてよい。例えば、完全に別個のハードウェアパーティション(例えば、インテル(商標)・コーポレーション社のマネジビリティ・エンジン(「ME」)、アクティブ・マネジメント・テクノロジ(「AMT」)、プラットフォーム・リソース・レイヤ(「PRL」)、および/または、他の同等または同様の技術を用いる)、および/または、仮想化パーティション(例えば、インテル(商標)・コーポレーション社の仮想化技術(「VT」)方式での仮想マシン)がある。仮想化ホストを用いてME技術、AMT技術およびPRL技術を実施し得ることは当業者には明らかである(
図8を参照しつつ詳細に後述する)。
【0017】
一実施形態によると、保護デバイスマネージャは、システムのホストオペレーティングシステムから隔離されているセキュアパーティションにおいて実行される。セキュアパーティションは、システムに結合されている暗号化されたデバイスをアンロックするよう求める要求を受信するとしてよい。当該要求は、信頼のおけるリモートコンソールとセキュアパーティションとの間に構築されるセキュア通信チャネルを介してセキュアパーティションで受信される。セキュアパーティションは、ホストオペレーティングシステムの介入無しで、当該要求に応じて暗号化されたデバイスをアンロックする。
【0018】
セキュアパーティションは、信頼のおけるリモートコンソールからトークンを受信して、当該トークンを用いて暗号化されたデバイスのブロックを暗号化するために用いられている鍵をアンラップするとしてよい。セキュアパーティションは、暗号化されたデバイスのセキュアストレージ領域から当該キーを取得するとしてよい。セキュアストレージ領域は、ホストオペレーティングシステムから隠れている。セキュアパーティションは、暗号化されたデバイスをアンロックする前に、信頼のおけるリモートコンソールから当該要求が発行されていることを確認するとしてよい。要求はさらに、実施すべき管理動作を特定しているが、セキュアパーティションは、暗号化されたデバイスがアンロックされた後に当該管理動作を実行するとしてよく、管理動作が実行された後にホストオペレーティングシステムをブートするとしてよい。暗号化されたデバイスのアンロックは、システムのホストオペレーティングシステムが故障した際に実行されるとしてよく、システムのユーザが介在することなく実行されるとしてよい。
【0019】
図1は、本発明の一実施形態に係る、暗号化方式、ユーザ識別情報認証方式およびパスワード保護方式で保護されているデバイスを管理するシステムを示す図である。プラットフォーム100では、デスクトップ管理インターフェース(DMI)111aを介して、プロセッサ110がチップセット/セキュアパーティション120に接続されている。チップセット/セキュアパーティション120は、プラットフォーム100の設定および動作を管理する、マイクロプロセッサとして実現されているマネジビリティ・エンジン(ME)130を有する。一実施形態によると、マネジビリティ・エンジン(ME)130は、監査イベントを集めて、ユーザを認証して、周辺デバイスに対するアクセスを制御して、プラットフォーム100のストレージデバイスに格納されているデータを保護する暗号鍵を管理し、ネットワークコントローラ160を介して、管理コンソール166とやり取りを行う。マネジビリティ・エンジン(ME)130は、管理コンソール166を用いて、プラットフォーム100等のプラットフォームの設定および管理に関する企業規模のポリシーとの整合性を維持する。マネジビリティ・エンジン(ME)130は、ホスト・エンベデッド・コントローラ・インターフェース(HECI)111bを介してプロセッサ110に接続されている。
【0020】
仮想化エンジンコントローラインターフェース(VECI)111cは、プロセッサ110をチップセット/セキュアパーティション120のI/Oコマンドデコードモジュール140に接続している。一実施形態によると、I/Oコマンドデコードモジュール140は、特別なファームウェアを用いて、格納コマンドのデコードおよびその他の加速化処理を実行する汎用コントローラである。I/Oコマンドデコードモジュール140の機能はまた、特定用途向けハードウェアで全て実施されるとしてよい。I/Oコマンドデコードモジュール140は、プラットフォーム100に対応付けられているストレージデバイスに書き込まれているデータを保護する管理機能を供給する。例えば、I/Oコマンドデコードモジュール140は、暗号化エンジン150とやり取りを行って、ストレージデバイスを暗号化し、ストレージデバイスを保護するために用いられたメタデータを保護し、ストレージデバイスに関連するハードウェア割り込みをインターセプトして処理し、ストレージデバイスでの管理動作を円滑化するとしてよい。
【0021】
マネジビリティ・エンジン(ME)130は、I/Oコマンドデコードモジュール140および暗号化エンジン150の挙動を、ポリシーおよび暗号鍵を設定することによって、制御する。マネジビリティ・エンジン(ME)130、I/Oコマンドデコードモジュール140、および、暗号化エンジン150の動作は、さらに詳細に後述する。
【0022】
プラットフォーム100はさらに、ダイナミックランダムアクセスメモリ(DRAM)114、チップセット/セキュアパーティション120内のスタティックランダムアクセスメモリ(SRAM)122、および、フラッシュメモリ190等のメモリデバイスを備える。プラットフォーム100全体が電源供給を受けている場合、上部メモリ領域(UMA)と呼ばれるDRAM114の一部であるME−UMA116は、マネジビリティ・エンジン(ME)130が利用できるようになっている。プラットフォーム100用のホストオペレーティングシステム115は、ベーシック・インプット・アウトプット・システム(BIOS)によって設定されているメモリ隔離メカニズムのために、一般的にME−UMA116にアクセスできない。このメモリ隔離メカニズムは、ホストオペレーティングシステムが実行される前に、ME−UMAメモリ116へのアクセスをロックする。DRAM114のこの部分をマネジビリティ・エンジン130が利用できるようにホストオペレーティングシステムから隔離することによって、マネジビリティ・エンジン130のインテグリティは、ホストオペレーティングシステム115に感染し得るウイルスまたはその他のマルウェアから保護される。
【0023】
フラッシュメモリ190は、プラットフォーム100を初期化するために用いられるファームウェアを含む。この初期化ファームウェアは、BIOSファームウェア192、ネットワークコントローラ160を設定するネットワークコントローラファームウェア194、および、チップセット/セキュアパーティション120を設定するチップセットファームウェア196を含む。マネジビリティ・エンジン(ME)130およびI/Oコマンドデコードモジュール140のチップセットファームウェア196のインテグリティは、フラッシュメモリ190に格納される前にデジタル署名によって確認される。マネジビリティ・エンジン(ME)130が利用するデータ、例えば、ユーザ認証情報は、マネジビリティ・エンジン(ME)130内の暗号化ファームウェアによって暗号化されて、フラッシュメモリ190のデータ領域198に格納されるとしてよい。
【0024】
図1に示すプラットフォーム100の実施形態はさらに、USBデバイス177に接続されているユニバーサルシリアルバス(USB)コントローラ175を含む。USBデバイスは、ポインティングデバイス(マウス等)、キーボード、デジタルカメラ、プリンタ、パーソナルメディアプレーヤ、フラッシュドライブ、および、外部ハードドライブを含むとしてよい。USBの仕様によって、コンピュータ筐体を開くこと(ホストスワップ)なく、または、コンピュータを再起動することなく、デバイスをインストールおよび削除することが可能となり、さまざまな種類のドライブ等のモバイル型の周辺機器にとって便利になる。本来は光学格納デバイス(CD−RWドライブ、DVDドライブ等)用に考案され現在でも利用されているが、一部の製造業者は、内部ドライブと同様の性能を持つ外付けポータブルUSBハードドライブまたはディスクドライブ用の空の筐体を提供している。これらは、取着するUSBデバイスの現在の数および種類によって、および、USBインターフェースの上限によって制限されている(実際には、USB2.0では約40MiB/s、おそらくUSB3.0については400MiB/s以上であろう)。このような外付けドライブは通常、当該ドライブのインターフェース(IDE、ATA、SATA、PATA、ATAPIまたはSCSI)とUSBインターフェースポートとの間を橋渡しする「変換デバイス」を含む。機能的には、ドライブは、ユーザにとっては内部ドライブとほぼ同様に見える。外部ドライブ接続用の他の競合する規格としては、eSATA、ExpressCard(現在のバージョンは2.0)およびFireWire(IEEE1394)がある。
【0025】
図1に示すプラットフォーム100の実施形態はさらに、I/Oコントローラ170を介してアクセス可能なさまざまな種類のストレージデバイスを含む。例えば、ストレージインターフェース171を介してアクセス可能な不揮発性メモリストレージデバイス172、および、ストレージインターフェース181を介してアクセス可能なシリアルアドバンスドテクノロジアタッチメント(SATA)ストレージデバイス180を含む。ストレージインターフェース171は、不揮発性メモリの不揮発性メモリ(NVM)ホストコントローラインターフェース(HCI)として実現されるとしてよく、ストレージインターフェース181は、シリアルアドバンスドテクノロジアタッチメント(SATA)ストレージデバイス180のアドバンスドHCI(AHCI)インターフェースとして実現されるとしてよい。I/Oコントローラ170は、NVMコントローラおよびSATAコントローラ両方の機能を持つ。
【0026】
ストレージデバイス172および180に格納されているデータは、チップセット/セキュアパーティション120の暗号化エンジン150によって暗号化されているとしてよい。SATAストレージデバイス180は、チップセットで暗号化されたデバイスの一例として用いられており、さらに、メタデータ182を格納する保留領域を含む。メタデータ182は、ストレージデバイス180のための少なくとも1つのデバイス暗号鍵(DEK)184およびマネジビリティ・エンジン(ME)130が利用する他のメタデータを含む。メタデータ182は、I/Oコマンドデコードモジュール140およびI/Oコントローラ170によるI/Oコマンドの処理中に、プロセッサ110上で実行されるアプリケーションによって上書きされないように保護される。
【0027】
一実施形態によると、チップセット/セキュアパーティション120の暗号化エンジン150によるデータの暗号化または復号化が実行される前に、マネジビリティ・エンジン(ME)130は、入出力動作に関連するストレージデバイスに対応付けられているDEK184等のデバイス暗号鍵(DEK)を、暗号化エンジン150に対応付けられているメモリレジスタに挿入する。一の物理的ストレージデバイスが論理的に複数の異なる論理デバイスまたは論理パーティションに分割される場合、各論理デバイスまたは各論理パーティションは、それぞれ対応するデバイス暗号鍵(DEK)を持つとしてよく、各DEKは暗号化エンジン150の対応するメモリレジスタに挿入されるとしてよい。
【0028】
一実施形態によると、マネジビリティ・エンジン(ME)130は、プラットフォーム100に対応付けられている全てのデータの暗号化を管理する。例えば、チップセット/セキュアパーティション120内において暗号化エンジン150が実行する暗号化、および、チップセットは実行しないが、プロセッサ110で実行されているソフトウェアまたはストレージハードウェア自身が実行するデータの暗号化を管理する。マネジビリティ・エンジン(ME)130が提供するサービスのうち1つは、データの暗号化を実行するのがプラットフォーム100のどの構成要素であっても、共通のフレームワークおよびユーザインターフェースにおいて暗号鍵を管理するサービスである。データの暗号化を管理する場合のチップセット/セキュアパーティション120およびマネジビリティ・エンジン(ME)130の動作およびフレームワークに関する更なる詳細については、米国特許出願第12/319,210号(発明の名称:「暗号化されたストレージデバイスについてのチップセット鍵管理サービスの利用の実施方法」、発明者:ネッド・スミス(Ned Smith))に記載されている。当該出願の内容は全て、参照により本願に組み込まれる。
【0029】
図2は、本発明の一実施形態に係る、
図1に示すチップセット/セキュアパーティション120の構成要素であるマネジビリティ・エンジン(ME)130およびI/Oコマンドデコードモジュール140をさらに詳細に説明する図である。チップセット/セキュアパーティション120内において、マネジビリティ・エンジン(ME)130は、MEカーネル231、ME共通サービス233、保護デバイスマネージャ235、セキュリティ/鍵管理ファームウェア237、および、識別情報管理ファームウェア239を含む。これらの構成要素はそれぞれ、さらに詳細に後述する。
【0030】
MEカーネル231は、SRAM122およびDRAM112の一部分(ME−UMA114等)のメモリ利用、フラッシュメモリ190における永久的なデータの格納、および、アクセス制御等、基本的な機能を提供する。MEカーネル231は、I/Oコマンドデコードモジュール140および暗号化エンジン150の動作を制御する。
【0031】
ME共通サービス233は、複数のさまざまなファームウェアモジュールが共に必要とするサービスを含み、セキュリティサービス、ネットワーク化サービス、および、プロビジョニングサービスを含む。ME共通サービス233が提供するセキュリティサービスは一般的に、HTTPダイジェスト認証およびケルベロス認証の両方から構成されるユーザ認証、Microsoft社のアクティブディレクトリおよび/または他のサービスを利用するドメイン認証、クライアントクロックおよびサーバクロックを同期させるクロック同期サービス、ならびに、セキュリティ監査サービスを含む。
【0032】
ME共通サービス233が提供するネットワーク化サービスは、トランスミッション・トランスポート・プロトコル/インターネット・プロトコル(TCP/IP)スタック、トランスポート・レイヤ・セキュリティ(TLS)、ハイパーテクスト・トランスポート・プロトコル(HTTP)、シンプル・オブジェクト・アクセス・プロトコル(SOAP)、ウェブ・サービス・フォー・マネジビリティ(WS−MAN)、および、ローカル・マネジビリティ・サービス(LMS)と呼ばれるホストベースのTLSインターフェースを含む。
【0033】
ME共通サービス233が提供するプロビジョニングサービスは、
図1の管理コンソール166と共に用いられて、プラットフォーム100に対して企業ソフトウェアをプロビジョニングする。こういったプロビジョニングサービスは、ゼロタッチモードおよびワンタッチモードという2つの展開モードをサポートしている。ゼロタッチモードでは、展開証明アンカー鍵が
図1のフラッシュメモリ190のデータ領域198等のデータストレージ領域に格納されているので、プラットフォームの所有権を取得するために用いられるIT信用情報の有効性を証明するために公知の証明機関鍵を用いることが可能となる。ワンタッチモードでは、セットアップおよび展開のタスクをリモートに完了するために用いられる機関証明情報、対称鍵、および、信用の置けるホストを設定する。
【0034】
マネジビリティ・エンジン130はさらに、アウトオブバンド(OOB)通信モジュール230を含む。OOB通信モジュール230は、ネットワークコントローラ160を介したプラットフォーム100の構成要素と、管理コンソール166の対応する構成要素との間の通信を円滑化する。OOB通信モジュール230は、チップセット/セキュアパーティション120と管理コンソール166との間にセキュアなOOB通信チャネル168を構築する。
【0035】
マネジビリティ・エンジン(ME)130はさらに、識別情報管理ファームウェア239を含む。識別情報管理ファームウェア239は、ユーザの認証情報を、例えば、フラッシュメモリ190のデータ領域198に格納されているユーザアカウントメタデータと比較するとしてよい。識別情報管理ファームウェア239はさらに、マネジビリティ・エンジン(ME)130のセキュリティ/鍵管理ファームウェア237とやり取りを行って、ユーザ情報がさらにSATAストレージデバイス180等のストレージデバイス内のコンテナに格納されていることを確認するとしてよい。このようにSATAストレージデバイス180等の特定のストレージデバイスに対するユーザのアクセスを確認することによって、SATAストレージデバイス180に格納されているデータの保護について更なるレイヤが得られる。
【0036】
セキュリティ/鍵管理ファームウェア237は、暗号化エンジン150が生成する暗号鍵等の鍵を管理する。セキュリティ/鍵管理ファームウェア237はさらに、プラットフォーム100に対応付けられているストレージデバイスに格納されているデータに対するアクセスが許可される前に、ユーザを認証するとしてよい。セキュリティ/鍵管理ファームウェア237は、鍵管理情報を管理して、この鍵管理情報をプラットフォームに対応付けられているメモリまたはストレージデバイス、例えば、フラッシュメモリ190またはSATAストレージデバイス180に格納する。鍵管理情報が格納される位置は、利用可能な格納空間および格納すべきデータの量に応じて決まり、本発明は鍵管理情報を格納する構成について特定のものに限定されない。一実施形態によると、セキュリティ/鍵管理ファームウェア237は、プラットフォーム100に割り当てられているプラットフォームコンテナ鍵(PCK)を用いて鍵管理情報を暗号化する。
【0037】
セキュリティ/鍵管理ファームウェア237が管理している鍵管理情報は、チップセット(つまり、チップセット/セキュアパーティション120内の暗号化エンジン150)が生成する暗号鍵を含み、デバイス暗号鍵(DEK)184と呼ばれるメタデータ182に格納されている。
【0038】
マネジビリティ・エンジン(ME)130はさらに、保護デバイスマネージャ235を含むものとして図示されている。一実施形態によると、保護デバイスマネージャ235は、SATAストレージデバイス180等のデバイスをアンロックするために用いられるデバイスパスワードを供給するべくI/Oコマンドデコードモジュール140と通信する。保護デバイスマネージャ235の動作は、
図3および
図4を参照しつつより詳細に後述する。
【0039】
I/Oコマンドデコードモジュール140は、I/Oモジュールカーネル241およびSATA仮想化ファームウェア243を含むものとして図示されている。I/Oモジュールカーネル241は、I/Oコマンドデコードモジュール140に対して基本的な機能を提供し、MEカーネル231からコマンドを受信する。SATA仮想化ファームウェア243を本実施形態ではファームウェアとして説明するが、SATA仮想化ファームウェア243の機能は専用ハードウェアとして実現するとしてもよい。SATA仮想化ファームウェア243は、SATAストレージデバイス180等のSATAストレージデバイスにアクセスするために用いられ、マネジビリティ・エンジン(ME)130がデバイス管理機能を実行できるようにする。例えば、SATA仮想化ファームウェア243は、SATA制御パケットをI/Oデータストリームに挿入することによって、ホストオペレーティングシステム115またはプロセッサ110で実行されているその他のホストソフトウェアが介在しなくとも、管理コンソール166による保護デバイスへのリモートアクセスを可能とする。制御パケットは、例えば、管理コンソール166からのコマンドによって、SATAストレージデバイス180をアンロックするために用いられるとしてよい。
【0040】
SATA仮想化ファームウェア243はさらに、SATAストレージデバイス180上のある範囲のリニアブロックアドレスを、ホストオペレーティングシステム115から隠すために用いられる。このようにホストオペレーティングシステムによるアクセスから隠される所与の範囲のリニアブロックアドレスは、本明細書において、ドライブ上にデバイスメタデータ182を格納できるように保護されるセキュアストレージ領域と呼ぶ。デバイスメタデータ182は、SATAストレージデバイス180のブロックの暗号化および復号化を可能とするデバイス暗号鍵184を含むとしてよい。
【0041】
SATA仮想化ファームウェア243はさらに、I/Oコントローラ170によって検出されるイベント、例えば、新しいデバイスがプラットフォーム100に取り付けられる際に生成されるホットプラグ割り込み等をインターセプトするとしてよい。SATA仮想化ファームウェア243はさらに、ストレージデバイスとの間でやり取りされるI/Oストリームを監視して、監査対象のイベントを検出するとしてよい。
【0042】
一実施形態によると、SATAストレージデバイス180は、暗号化、および、デバイスにアクセスする前にユーザが入力しなければならないATAパスワード等のパスワードの両方を用いて保護される。パスワードは、SATAストレージデバイス180のネイティブロッキングメカニズムをアンロックするために用いられる。暗号化エンジン150は、SATAストレージデバイス180のブロックを暗号化するために用いられる。SATAデバイス暗号鍵(DEK)、例えば、DEK184は、SATAデバイス上の、ホストオペレーティングシステムに対して隠されている位置に格納されている。デバイスは最初に、暗号化されたブロックを復号化するべくDEKへのアクセスが可能になる前に、ネイティブロッキングメカニズムに対するパスワードを利用してアンロックされる。
【0043】
プラットフォーム100がリセットされると、I/Oコマンドデコードモジュール140およびマネジビリティ・エンジン(ME)130は、協働して、デバイスメタデータ、例えば、暗号鍵およびユーザ認証用信用情報を、デバイスから読み出して、デバイスメタデータをセキュアストレージ、例えば、フラッシュメモリ190のデータ領域198にデバイスメタデータ298として格納する。一実施形態によると、管理コンソール166に対して認証出来る各ユーザについて、
図2のトークン1−266A等のトークンがあり、当該トークンは、特定のデバイスに対するラッピング鍵を導出するために用いられる。デバイスラッピング鍵は、特定のデバイスの暗号鍵をラップするために用いられる。
【0044】
ユーザラッピング鍵およびデバイスラッピング鍵は、ユーザが特定のデバイスにアクセス可能か否かを判断するために共に用いられ、ユーザラッピング鍵/デバイスラッピング鍵の対は、フラッシュメモリ190のデータ領域198にデバイスメタデータ298として格納される。これとは対照的に、DEK184等のデバイス暗号鍵は、ストレージデバイス上に格納される。デバイスに対してアクセスが行われる場合、トークン1のコピーに基づき、デバイスメタデータ298のうち適切なユーザラッピング鍵/デバイスラッピング鍵の対を決定する。対のうちデバイスラッピング鍵は、デバイス上のメタデータ182を復号化するために用いられる。尚、デバイスは、デバイス暗号鍵184を公開している。トークン1は、ユーザがいない場合、または、ユーザが必要な認証用信用情報を提供できない場合、ストレージデバイス上で管理動作を実行するために用いられる。
【0045】
一実施形態によると、デバイスメタデータ182は、USBデバイス177等のUSBデバイスに格納されている別のトークン、本明細書ではトークン2と呼ぶトークンによって導出される別のデバイスラッピング鍵を用いて、暗号化エンジン150によって暗号化される。USBデバイス177は、盗難の犯人がアクセスし得る箇所から離れた物理的位置にセキュアに格納されるものとする。トークン2は、リモート管理コンソール166がストレージデバイスに接続するためのネットワーク接続が利用できない場合に、ストレージデバイス上で管理動作を実行するために用いられる。USBデバイス177は、トークン2の保有者が暗示的にストレージデバイス上での管理動作を実行する権限を持つように、暗号化されていないプレーンテキスト形式でトークン2を保有している。トークン2が供給されると、トークン2を用いて第2のユーザラッピング鍵のセットを導出して、第2のユーザラッピング鍵/デバイスラッピング鍵の対のセットもデバイスメタデータ298の一部として、フラッシュメモリ190に格納する。トークン1およびトークン2の値はいずれも、識別情報管理ファームウェア239等のユーザ認証システムによって保護され、正当なユーザのみがデバイス暗号鍵を公開できる。
【0046】
一実施形態によると、トークン1 266Aは、デバイス180のパスワード266Bと共に、管理コンソール166に対応付けられているリモートストレージ266に(またはディレクトリサービスに)セキュアに保存される。デバイス180のパスワード266Bおよびトークン1 266Aは、SATAデバイス180をリモートにアンロックするために管理コンソール166によって用いられる。デバイス180のパスワード266Bは、リモート管理コンソール166によって保護デバイスマネージャ235に供給される。保護デバイスマネージャ235は、デバイス180のパスワード266Bを用いてデバイスをアンロックする。保護デバイスマネージャ235は、トークン1 266Aをセキュリティ/鍵管理ファームウェア237に提供する。セキュリティ/鍵管理ファームウェア237は、ユーザラッピング鍵をアンラップするために識別情報管理ファームウェア239を利用するとしてよい。ユーザラッピング鍵は、メタデータ182を復号化するために用いられるデバイスラッピング鍵をアンラップするために用いられるので、SATAストレージデバイス180のブロックを復号化するために暗号化エンジン150が利用するデバイス暗号鍵184に対するアクセスを提供する。トークン1 266Aは、管理コンソール166とチップセット/セキュアパーティション120との間のOOB通信チャネル168等、セキュア通信チャネルを利用することによって、ネットワーク攻撃から保護される。OOB通信チャネル168は、例えば、ケルベロスセッション鍵を利用することによって、セキュアとなるとしてよい。
【0047】
SATAストレージデバイス180上のデータは暗号化されている場合があるので、デバイス暗号鍵(DEK)184は、マネジビリティ・エンジン(ME)130の保護デバイスマネージャ235がアクセス可能な位置に格納されている。保護デバイスマネージャ235がDEKを利用できるようにすることによって、HECIインターフェース/VECIインターフェース111bおよび111cを介したSATA読み書き要求について、SATAストレージデバイス180上のデータが暗号化されていても、サービスを提供することができる。保護デバイスマネージャ235がSATAストレージデバイス180をアンロックするためにパスワードにアクセスすると、保護デバイスマネージャ235は、デバイスメタデータ298に格納されているデバイスラッピング鍵のコピーを作成することができる。デバイスラッピング鍵は、プラットフォームに取り付けられている各SATAデバイスについてのデバイスメタデータに含まれているデバイス暗号鍵をアンラップするために用いることが出来る。
【0048】
図3は、本発明の一実施形態に係る、暗号化方式、ユーザ識別情報認証方式およびパスワード保護方式で保護されているデバイスを備えるシステムのリセット時に実行される方法を説明するフローチャートである。
図3に示す方法は、
図2に示すシステムの構成要素によって実行されるものとして説明するが、当該方法の実施例はこれに限定されない。システムリセットに応じて、MEの保護デバイスマネージャがMECIでI/Oコマンドデコードモジュールを介して間接的にSATAデバイスからデバイスメタデータを読み出すステップ310に進む。ステップ310において、マネジビリティ・エンジン130の保護デバイスマネージャ235は、SATAストレージデバイス180等のSATAデバイスからデバイスメタデータを読み出して、取り付けられたストレージデバイスについての情報を取得する。マネジビリティ・エンジン130は直接ストレージデバイスに接続されていないので、マネジビリティ・エンジン130の保護デバイスマネージャ235は、MECI131でI/Oコマンドデコードモジュール140を介して間接的にデバイスメタデータにアクセスする。マネジビリティ・エンジン130の保護デバイスマネージャ235は、SATAストレージデバイス180等のSATAデバイスに格納されているデバイスメタデータにアクセスするためにSATA仮想化ファームウェア243を利用する。SATA仮想化ファームウェア243は、ストレージインターフェースを保護デバイスマネージャ235に公開して、SATAストレージデバイス180が複数のリニアブロックアドレスを持つ一のブロックストレージデバイスに見えるようにする。SATA仮想化ファームウェア243は、一部のリニアブロックアドレスをホストオペレーティングシステムから隠して、保護デバイスマネージャ235に公開する。SATA仮想化ファームウェア243は、SATA I/Oプロトコルを用いて、SATAストレージデバイス180との間でやり取りを行う。
【0049】
システムリセットに応じて、MEの保護デバイスマネージャがMECIでI/Oコマンドデコードモジュールを介して間接的にSATAデバイスからデバイスメタデータを読み出すステップ310から、I/Oコマンドデコードモジュールがメタデータ記述情報を含む仮想ドライブ定義メタデータを読み出すステップ320に進む。ステップ320において、I/Oコマンドデコードモジュール140のSATA仮想化ファームウェア243は、SATAストレージデバイス180上に格納されているメタデータ182に格納されているメタデータ記述情報を含む仮想ドライブ定義メタデータを読み出す。一実施形態によると、SATA仮想化ファームウェア243は、ストレージデバイスを仮想化して、複数の仮想ドライブパーティションが認識できるようにする。各仮想ドライブパーティションは、仮想ドライブ定義データに記述されている。第1の仮想ハードディスクドライブ(HDD)定義に含まれているのは、従来のドライブ構造素子であってよい。例えば、リニアブロックアドレス(LBA)ゼロを先頭として、マスタブートレコード(MBR)が格納されているとしてよく、この後に続いてオペレーティングシステムファイルおよびユーザファイル等のドライブデータが格納されているとしてよい。一部のシステムでは、BIOSまたはその他のシステムユーティリティによって利用され得る隠れたパーティションがある。ホスト保護領域(HPA)は、緊急回復OS(ROS)、マルチメディアユーティリティ、診断ユーティリティ、または、その他のプログラムを格納するために用いられるとしてよい。リダンダント・アレイズ・オブ・インエクスペンシブ・ディスクス(RAID)を採用するシステムでは、RAIDメタデータを仮想ドライブの終端に置くとしてよい。RAIDメタデータを仮想ドライブの終端に置くことによって、RAIDの任意のROMは、システム初期化時にRAIDメタデータの位置を容易に特定することができる。
【0050】
一実施形態によると、DEK184等の1つのデバイス暗号鍵は、デバイス上の各仮想HDDを対象とし、全ての仮想HDDは同じ鍵で暗号化されていることになる。仮想ドライブ定義(VDD)データは、物理ドライブの終端、例えば、最後のリニアブロックアドレスLBA−nにある。VDDデータは、ドライブ構成を含み、各仮想HDDの先頭および終端を示す。VDDはさらに、マネジビリティ・エンジンのメタデータ領域の先頭箇所および終端箇所、例えば、メタデータ182の先頭位置および終端位置を特定している。VDDおよびMEメタデータは、暗号化エンジン150によって暗号化されていないとしてよいが、メタデータ182の内容はI/Oコマンドデコードモジュール140およびマネジビリティ・エンジン(ME)130によって保護される。
【0051】
一実施形態によると、メタデータ182は、AHCIファイルシステムブロック、ブート前認証(PBA)コード、および、PBAメタデータを含む。AHCIファイルシステムは、ファームウェアストレージドライバによって利用される。ファームウェアストレージドライバは、プロセッサ110によって実行されるとしてよい。メタデータ182はさらに、ラップされたDEK184、デバイス設定データ、ドライブ変換ステータス情報、および、SATAストレージデバイス180等のデバイスを別のプラットフォームにマイグレーションさせるために用いられるドライブマイグレーションパッケージを含むとしてよい。マイグレーションパッケージはさらに、プラットフォームに特に対応付けられているわけではない回復鍵でラップされているDEK184のコピーを含む。メタデータ182はさらに、PBA実行ファイル、および、ホストオペレーティングシステムがロードされる前にホストプロセッサ110でブート前処理中に実行すべきPBAコードを含むストレージ領域の識別子を含むとしてよい。例えば、PBAコードを含むこのストレージ領域は、フラッシュメモリ190の一部分であるとしてよい。PBA領域に対するアクセスは、VECI111cを用いてI/Oコマンドデコードモジュール140を介して、または、HECI111bを利用するホストコマンドインターフェースを介してマネジビリティ・エンジン(ME)130を介して、ホストプロセッサ110上で実行されるコードによって許可される。I/Oコマンドデコードモジュール140によって、PBAコードはホストプロセッサ110上で実行されるので、PBAストレージ領域にアクセスする要求は、ストレージのうちPBA実行ファイルが格納されている範囲に限定される。
【0052】
I/Oコマンドデコードモジュール140のSATA仮想化ファームウェア243が、I/Oコマンドデコードモジュールがメタデータ記述情報を含む仮想ドライブ定義メタデータを読み出すステップ320において、SATAストレージデバイス180に格納されているメタデータ182に格納されているメタデータ記述情報を含む仮想ドライブ定義メタデータを読み出すと、メタデータ記述情報は、デバイスメタデータ182内のDEK184等のラップされたデバイス暗号鍵の複数のインスタンスを含むとしてよい。例えば、DEK184は、プラットフォーム特有のデバイスラップ鍵およびプラットフォーム100に対応付けられていない回復鍵の両方によってラップされているとしてよい。デバイス暗号鍵のインスタンスは複数存在するので、システムリセットを実行する際に関連するユーザ認証用信用情報を用いてアンラップすることができる特定のデバイス暗号鍵の位置を決定する必要がある。
【0053】
上述したように、システムリセットを実行するユーザは、デバイスラップ鍵をラップするために用いられるユーザラップ鍵が対応付けられている。ユーザラップ鍵/デバイスラップ鍵は、フラッシュメモリ190のデバイスメタデータ289に格納される。I/Oコマンドデコードモジュールがユーザ認証メタデータオフセットの位置を特定してデバイスメタデータを読み出すステップ330に進む。ステップ330において、I/Oコマンドデコードモジュール140は、メタデータ記述情報を用いて、システムリセットを実行するために用いられるユーザ信用情報について、フラッシュメモリ190内のユーザ認証メタデータオフセットの位置を特定する。ユーザ認証メタデータおよび他のデバイスメタデータは、オフセットによって特定されるフラッシュメモリ190の位置から読み出される。
【0054】
I/Oコマンドデコードモジュールがユーザ認証メタデータオフセットの位置を特定してデバイスメタデータを読み出すステップ330においてフラッシュメモリ190からデバイスメタデータ298を読み出した後、MEの保護デバイスマネージャがデバイスメタデータをセキュアストレージに格納するステップ340に進む。例えば、MEの保護デバイスマネージャ235が、SATAストレージデバイス180のためのユーザ認証用信用情報を含むデバイスメタデータを、マネジビリティ・エンジン(ME)130が後にアクセスできるように、フラッシュメモリ190のデバイスメタデータ298に格納するとしてよい。この後、MEの保護デバイスマネージャがマネジビリティ動作コマンドが発行されるまで待機するステップ350に進む。例えば、MEの保護デバイスマネージャ235は、SATAストレージデバイス180にアクセスするべく、アンロックコマンド等のマネジビリティ動作コマンドが発行されるまで待機する。マネジビリティ動作コマンドを受信すると、MEの保護デバイスマネージャ235は、ユーザ認証用信用情報および/またはSATAストレージデバイス180にアクセスするために必要なその他の情報を取得するべく格納されているメタデータにアクセスすることができる。
【0055】
図4は、本発明の一実施形態に係る、暗号化方式、ユーザ識別情報認証方式およびパスワード保護方式で保護されているデバイスをアンロックするコマンドを受信した際に実行されるべき方法を説明するフローチャートである。
図4に示す方法は、
図2に示すシステムの構成要素によって実行されるものとして説明されるが、当該方法の実施例はこれに限定されない。
図4には、保護デバイスをアンロックするよう求める要求の発行元に応じて、方法フローの例を2つ挙げている。リモートアンロックブロック402の場合の当該方法のステップでは、OOB通信チャネル168等のセキュア通信チャネルを介して管理コンソール166から受信したアンロックコマンド等のリモートアンロックコマンドを処理する。USBアンロックブロック418の場合の当該方法のステップでは、ストレージデバイスをアンロックするためのトークンを格納しているUSBデバイスと共にアンロックコマンドを処理する。
【0056】
リモートアンロックブロック402の場合のリモートアンロックコマンドを処理するための当該方法のステップは、管理コンソールがSATAデバイスに対するリモートアンロック要求をトリガするステップ404で開始される。管理コンソール166は、企業管理ポリシーに応じて当該要求を発行するとしてもよいし、または、管理コンソール166は、SATAストレージデバイス180等のデバイスをアンロックすべきである旨のマネジビリティ・エンジン(ME)130からの通知に応じて動作するとしてもよい。管理コンソール166は、キーボードにユーザが存在しない場合、ユーザは存在するがプラットフォームに対する認証が成功しない場合、プラットフォームが低電力状態(アドバンスド・コンフィグレーション・アンド・パワー・インターフェース(ACPI)のSx電力状態S1からS5のうち1つ等)にある場合、システムが有線ネットワークまたは無線ネットワークを介して接続されているか、または、企業ファイヤーウォールの外部にあるがデバイスがアクセス不可能な場合、および、システムのホストオペレーティングシステムが故障している場合、といった状況において、マネジビリティ・エンジン(ME)130およびチップセット/セキュアパーティション120を介して暗号化されているSATAデバイスをアンロックするよう求める要求をトリガする。
【0057】
管理コンソールがSATAデバイスに対するリモートアンロック要求をトリガするステップ404から、管理コンソールがセキュアパーティションに接続して、トークン1およびデバイスパスワードを含むディスクアンロックコマンドを送るステップ406に進む。管理コンソール166は、チップセット/セキュアパーティション120が提供する埋め込みセキュリティサブシステムに対してアンロック処理を指示するセキュアコマンドを送るために、OOB通信チャネル168等の独立して保護および暗号化されているチャネルを利用することができる。OOB通信チャネル168等のセキュア通信チャネルが管理コンソール166とチップセット/セキュアパーティション120との間で構築されると、識別情報管理ファームウェア239によって管理コンソール166およびマネジビリティ・エンジン(ME)130を認証するべくケルベロス認証が用いられる。マネジビリティ・エンジン(ME)130によってリモートアンロック要求が開始されると、セキュア通信チャネルを構築した後、管理コンソール166は、プラットフォーム100に対応付けられているユーザのユーザ名およびパスワード等のユーザ信用情報を取得することができる。リモートアンロック要求が管理コンソール166によって開始されると、プラットフォーム100についての管理者用ユーザ信用情報が用いられるとしてもよい。これらのユーザ信用情報は、デバイスに対応付けられているパスワード、例えば、デバイス180のパスワード266B、および、デバイスを復号化するために用いられるトークン、例えば、トークン1 266Aを管理データストア266から取得するべく管理コンソール166によって用いられる。
【0058】
管理コンソールがセキュアパーティションに接続して、トークン1およびデバイスパスワードを含むディスクアンロックコマンドを送るステップ406では、デバイスパスワードはアンロックコマンドに含められて、デバイスパスワードを用いてデバイスをアンロックできるようになる。トークン1をコマンドに含めることによって、ユーザラップ鍵/デバイスラップ鍵を、例えば、デバイスメタデータ298等で特定することができるようになる。ユーザラップ鍵/デバイスラップ鍵は、暗号化されたストレージデバイスのブロックを復号化するために用いることができ、デバイス暗号鍵184を含むメタデータ182を含む。
【0059】
管理コンソールがセキュアパーティションに接続して、トークン1およびデバイスパスワードを含むディスクアンロックコマンドを送るステップ406から、MEの保護デバイスマネージャが信頼のおけるコンソールから発行されたコマンドであることを確認するステップ408に進む。管理コンソール166とチップセット/セキュアパーティション120との間でセキュア通信チャネルを構築するために必要なケルベロス認証用の信用情報は、コマンドが信頼のおける管理コンソール166で発行されたことを確認するために用いられるとしてよい。この後、MEの保護デバイスマネージャがトークン1を用いてデバイスメタデータに含まれるDEKのコピーをアンラップするステップ410に進む。上述したように、保護デバイスマネージャ235がSATAストレージデバイス180をアンロックするためのデバイス180のパスワード266Bへのアクセスを得ると、保護デバイスマネージャ235は、フラッシュメモリ190のデバイスメタデータ298に格納されているデバイスラップ鍵のコピーを作成することができる。デバイスラップ鍵は、プラットフォームに取り付けられた各SATAデバイスのためのデバイスメタデータに含まれるデバイス暗号鍵をアンラップするために用いることができる。
【0060】
MEの保護デバイスマネージャ235が暗号化されたストレージデバイス用のデバイス暗号鍵を取得すると、MEのセキュリティ/鍵管理ファームウェアがDEKを暗号化エンジンのSATAデバイスに対応するキースロットレジスタに書き込むステップ412に進む。米国特許出願第12/319,210号(発明の名称:「暗号化されたストレージデバイスについてチップセット鍵管理サービスの利用を実行する方法」、発明者:ネッド・スミス(Ned Smith))に記述しているように、デバイス暗号鍵は暗号化エンジン150内のキースロットレジスタに格納されるとしてよい。当該出願は上述したように参照により本願に組み込まれる。デバイスにアクセスすると、暗号化エンジン150は、対応するキースロットレジスタに格納されているデバイス暗号鍵を利用して、対応するデバイス上に格納されているデータを復号化する。
【0061】
MEのセキュリティ/鍵管理ファームウェアがDEKを暗号化エンジンのSATAデバイスに対応するキースロットレジスタに書き込むステップ412において暗号化エンジン150に対してデバイス暗号鍵がアクセス可能になった後、MEの保護デバイスマネージャはマネジビリティ動作(OSのブートを含むとしてよい)を実行するステップ414に進む。例えば、リモートアンロックコマンドに応じて、MEの保護デバイスマネージャ235は、デバイスをアンロックする。これは、デバイスをアンロックするためにデバイスパスワードを提供すること、および、暗号化されたデバイスのブロックを復号化するために暗号化エンジン150を利用することを含むとしてよい。デバイスがさらにホストソフトウェアによって暗号化されている場合、マネジビリティ動作は、さらにデバイスを復号化するように信頼のおけるホストソフトウェアと通信するように管理コンソール166に要求するとしてよい。USBアンロックコマンドに応じて、MEの保護デバイスマネージャ235は同様に、デバイスをアンロックする。これは、暗号化されたデバイスのブロックを復号化することを目的として、デバイスおよび暗号化エンジン150をアンロックするために、デバイスパスワードを利用することを含む。処理されている特定のマネジビリティ動作コマンドに応じて、プラットフォームはリブートされるとしてよい。これは、ホストオペレーティングシステムをブートすることを含むとしてよい。
【0062】
MEの保護デバイスマネージャはマネジビリティ動作(OSのブートを含むとしてよい)を実行するステップ414でマネジビリティ動作を実行した後、MEの保護デバイスマネージャがプラットフォームをリセットして、SATAデバイスが再度ロックされるステップ416に進む。MEの保護デバイスマネージャ235は、
図3を参照しつつ説明したステップを実行して、システムをリセットする。この結果、ストレージデバイスが再度ロックされる。
【0063】
上述したように、
図4はさらに、USBアンロックコマンドを用いて手動でデバイスをアンロックするステップを含む。USBアンロックコマンドを処理するUSBアンロックブロック418のステップは、BIOSアプリケーションがトークン2を含むUSBデバイスを挿入するようユーザを促すステップ420から開始される。システム起動時に、BIOSアプリケーションは、トークン2を含むUSBデバイスを挿入するようユーザを促して、ユーザがSATAストレージデバイス180等のデバイスにアクセスできるようにする。例えば、このようなBIOSプロンプトは、デバイスにアクセスするためのパスワードをユーザが提示できない場合に提供されるとしてよい。BIOSはトークン2を読み出してHECI/DHCIを介してMEの保護デバイスマネージャに送るステップ422に進む。BIOSアプリケーションは、ユーザが提供するトークン2を読み出して、HECI111bを介してトークン2をMEの保護デバイスマネージャ235に送る。この後、MEの保護デバイスマネージャがトークン2を利用してデバイスメタデータに含まれるDEKのコピーをアンラップするステップ424に進む。上述したように、保護デバイスマネージャ235がSATAストレージデバイス180をアンロックするためのアンロックトークンに対するアクセスを持つと、保護デバイスマネージャ235は、フラッシュメモリ190のデータ領域198等、デバイスメタデータに格納されているデバイスラップ鍵(DWK)のコピーを作成することができる。DWKは、プラットフォームに取り付けられている各SATAデバイスのデバイスメタデータに含まれているDEKを復号化するために用いることができる。MEのセキュリティ/鍵管理ファームウェアがDEKを暗号化エンジンのSATAデバイスに対応するキースロットレジスタに書き込むステップ412において暗号化エンジン150がデバイス暗号鍵にアクセス可能になった後は上述したように処理が進む。
【0064】
図2、
図3および
図4に示すシステムによれば、ホストオペレーティングシステムが介在しなくてもデバイスをアンロックすることが可能となる。システムに取り付けられているデバイスへのアクセスが許可される前にシステムのユーザの信用情報を認証することが望ましい場合には、特別に考慮することが必要である。この認証は通常、システムをブートする際に行われるので、システムをリブートすることなく動的に取り付けられるデバイスについては、ユーザの認証用信用情報の確認が省略されてしまう。ホットプラグされたデバイスへのユーザのアクセスを認めることが好ましいが、ユーザの信用情報を確認するためにシステムをリブートするのは、大変な負荷となる。ストレージデバイスを動的に取り付ける際に認証を可能とすることは、例えば、RAIDアレイの一部であるストレージデバイスを動的に交換する場合、正当なユーザによって実行されることを確認する上で有用である。
【0065】
同様の問題は、ATAコマンドを用いてロックまたは暗号化されているデバイスでも見られる。ATAでロックまたは暗号化されたデバイスは、システム起動時にBIOSによってアンロックされるので、システムにホットプラグすることはできない。当該デバイス上のデータにアクセスする前にデバイスをアンロックまたは復号化するためにはシステムをリブートすることが必要である。
【0066】
図5Aおよび
図5Bに示すシステムによれば、ホットプラグされたデバイスへのアクセスは、システムのユーザの信用情報の認証が成功することを条件とすることができる。デバイスがATAコマンドを用いてロックまたは暗号化されていたとしても、ホットプラグされたデバイスをアンロックおよび/または復号化することができ、システムをリブートすることなくユーザの信用情報を確認することができる。
【0067】
図5Aおよび
図5Bに示すシステムでは、システムに取り付けられている複数のデバイスのうち任意のデバイスに対するアクセスを許可する前にシステムのユーザの第1の信用情報について認証を行うことが必要である。システムに対して新しいデバイスが取り付けられた旨を示すイベントが、システムのホストオペレーティングシステムから隔離されているシステムのセキュアパーティションによってインターセプトされる。システムをブートすることなく、新しいデバイスにアクセスするための第2の信用情報が要求される。第2の信用情報の認証が行われ、第2の信用情報の認証が成功した後で新しいデバイスに対するアクセスが可能となる。新しいデバイスに対するホットプラグイベントは、セキュアパーティションからホストオペレーティングシステムに通知される。
【0068】
新しいデバイスにアクセスするための第2の信用情報を要求することは、表示デバイスに対する経路接続として信頼のおけるものを利用して、第2の信用情報に対する要求を表示して、ユーザ入力デバイスが第2の信用情報を受信することを含むとしてよい。第1の信用情報および第2の信用情報について認証を行うことは、信頼のおける第三者で第1の信用情報および第2の信用情報の認証を行うことを含むとしてよい。第2の信用情報は、新しいデバイスについてのパスワードを含むとしてよく、新しいデバイスにアクセスできるようにすることは、パスワードを利用して新しいデバイスをアンロックすることを含むとしてよい。第2の信用情報は、ユーザ識別子を含むとしてよく、新しいデバイスにアクセスできるようにすることは、ユーザ識別子を信頼のおける第三者に提供して、信頼のおける第三者が当該ユーザ識別子の認証に成功すると、新しいデバイスにアクセスできるようにすることを含むとしてよい。
【0069】
図5Aは、本発明の一実施形態に係る、
図1に示すシステムが、暗号化方式、ユーザ識別情報認証方式およびパスワード保護方式で保護されているデバイスを、リブートを実行することなく、動的に取着可能にして、ユーザ認証用の信用情報を動的に再確認可能とするようにするための方法を説明する詳細図である。マネジビリティ・エンジン・カーネル531、マネジビリティ・エンジン共通サービス533、セキュリティ/鍵管理ファームウェア537、I/Oモジュールカーネル541、および、SATA仮想化ファームウェア543は、上述した
図2のシステムの対応する構成要素と同様に動作する。
【0070】
マネジビリティ・エンジン(ME)130において、識別情報管理ファームウェアのケルベロスクライアント539Aは、識別情報管理ファームウェアのケルベロスサーバ539Bとやり取りを行って、ユーザの認証を行う。ケルベロスクライアント539Aは、
図1の鍵分配センター164等の鍵分配センターにケルベロスプロトコルを実装する。ケルベロスクライアント539Aは、表示デバイスに対して信頼のおける経路接続を利用するべく信頼のおけるI/Oファームウェア536(利用可能な場合に限る)を利用し、システムのユーザから信用情報を取得するためにユーザ入力デバイスを利用するとしてよい。ケルベロスクライアント539Aは、ユーザ信用情報を鍵分配センター164に供給するとしてよく、ケルベロスサーバ539B等のケルベロスサービスにアクセスするためのケルベロスチケットを取得するとしてよい。ケルベロスサーバ539Bは、デバイスにアクセスするためのユーザの信用情報の認証が成功した旨を示すケルベロスチケットを受信すると、SATAストレージデバイス180へのアクセスを可能とする。ケルベロスチケットは、
図2のトークン1 266A等のユーザトークンを含む拡張フィールドを含むとしてよい。拡張フィールドによって、
図2を参照しつつ上述したように、デバイスラップ鍵およびデバイス暗号鍵をアンラップするために用いられるユーザラップ鍵の生成が可能になる。ケルベロスチケットはさらに、
図2に示すデバイス180のパスワード266B等、デバイスをアンロックするために用いられるデバイスパスワードを含む拡張フィールドを含むとしてよい。
【0071】
I/Oコマンドデコードモジュール140において、ホットプラグ仮想化ファームウェア545は、I/Oコントローラ170が受信するホットプラグイベントをデコードして、ホストオペレーティングシステム115にホットプラグイベントを転送する前にこれらのイベントを処理する。ホットプラグ仮想化ファームウェア545の動作は、
図5Bを参照しつつより詳細に後述する。
【0072】
図5Bは、デバイスのホットプラグイベントを認識すると、
図5Aに示すシステムが実行すべき方法を説明するためのフローチャートである。動作5.1では、I/Oコントローラ170が、SATAストレージデバイス180がプラットフォーム100に動的に取り付けられたSATAホットプラグイベントを検出する。動作5.2では、ホットプラグ仮想化ファームウェア545が、ホットプラグイベントをインターセプトして、SATA仮想化ファームウェア543とやり取りを行ってデバイスの属性を特定する。ホットプラグ仮想化ファームウェア545は、識別情報管理ファームウェア539のケルベロスクライアント539Aからホットプラグされたデバイスへのアクセスを要求する。デバイスがATAパスワード方式、ATA暗号化および/またはチップセットベースの暗号化を用いてロックされている場合、ホットプラグ仮想化ファームウェア545はさらに、ケルベロスクライアント539Aに、SATAストレージデバイス180がロックされている旨を、デバイスへのアクセスを求める要求の一部として通知する。
【0073】
動作5.4において、ケルベロスクライアント539Aは、ユーザ認証用信用情報等のユーザ情報を取得する。ケルベロスクライアント539Aは、ユーザの信用情報が、マネジビリティ・エンジン(ME)130内にローカルにキャッシュされたか否か、例えば、SRAM122内にキャッシュされたか否かを判断するとしてよい。ユーザの信用情報がローカルにキャッシュされている場合、動作5.4および5.5は省略されるとしてよい。ユーザの信用情報がローカルにキャッシュされていない場合、ユーザ認証用の信用情報は、プラットフォーム100上で利用可能であれば、信頼のおけるI/Oファームウェア536を介して取得されるとしてよい。信頼のおけるI/Oファームウェア536は、信頼のおける経路接続、例えば、信用情報に対する要求を表示する表示デバイスに対する信頼のおける経路接続、および、信用情報を受信するキーボード等のユーザ入力デバイスに対する信頼のおける経路接続を利用する。信頼のおけるI/Oファームウェア536がプラットフォーム100上で利用できない実施形態では、新しいデバイスが取り付けられた旨を示す通知を、プロセッサ110上で実行されているホストエージェント(不図示)に送るとしてよい。ホストエージェントは、ユーザの信用情報を集めて、チップセット/セキュアパーティション120に接続して、デバイスをアンロックするとともにホストオペレーティングシステム115に対してデバイスを可視とする。
【0074】
動作5.5において、ケルベロスクライアント539Aは、鍵分配センター164からケルベロスチケットを取得する。一実施形態によると、ケルベロスチケットは、
図2に示すトークン1 266A等のユーザに対するアンロックトークンと共に、SATAストレージデバイス180、および、
図2に示すデバイス180のパスワード266B等のユーザが所有するATAパスワードについて提供される。このアンロックトークンおよびユーザのためのATAパスワードは、
図1および
図2に示す管理コンソール166等、ディレクトリサービスから取得するとしてよい。ケルベロスチケットは、ケルベロスサーバ539Bからサービスを受信するべく、ユーザの信用情報の正当性を確認するためのものである。一実施形態によると、ケルベロスサーバ539Bは、ケルベロスクライアント539Aがマネジビリティ・エンジン(ME)130内の他の全てのサービス、例えば、セキュリティ/鍵管理ファームウェア537および保護デバイスマネージャ539からのサービスにアクセスできるようにする。他の実施形態によると、別のケルベロスチケットは、セキュリティ/鍵管理ファームウェア537等、マネジビリティ・エンジン(ME)130の他の構成要素が提供するサービスにアクセスするために取得されるとしてよい。一実施形態によると、SATAストレージデバイス180のユーザのためのアンロックトークンおよびユーザが所有するATAパスワードが、ケルベロスセッション鍵の一部である拡張フィールドとして分配される。
【0075】
動作5.6において、ケルベロスクライアント539Aは、ケルベロスサーバ539Bとの間で、ユーザの信用情報を確認する。別の実施形態によると、ケルベロスクライアント539Aは、ケルベロスサーバ539B等のローカルケルベロスサーバを介すことなく、鍵分配センター164との間で直接、ユーザの信用情報を確認するとしてよい。例えば、ケルベロスクライアント539Aは、ケルベロスチケットを取得して、別のユーザ認証サービス、例えば、トークン1 266Aおよびデバイス180のパスワード266Bを次のやり取りで返送するアクティブディレクトリサービスにアクセスするとしてよい。一実施形態によると、
図1および
図2の管理コンソール166は、別のユーザ認証サービスへの接続をプロキシするとしてよく、および/または、ユーザ認証サービス自体をホストするとしてよい。
【0076】
動作5.7から5.10は、ホットプラグされたSATAストレージデバイス180がATAパスワードまたはATA暗号化等のネイティブロッキングメカニズムによって保護されている場合に実行する動作を説明している。デバイスがATAパスワードまたはATA暗号化等のネイティブロッキングメカニズムによって保護されていない場合には、ステップ5.7から5.10は省略する。
【0077】
動作5.7において、ホットプラグされたSATAストレージデバイス180がATAパスワードを用いてロックされている場合には、ケルベロスクライアント539Aは、ユーザのATAパスワードを保護デバイスマネージャ535に供給する。動作5.8においては、保護デバイスマネージャ535は、ユーザのATAパスワードをI/Oコマンドデコードモジュール140のSATA仮想化ファームウェア543に供給する。動作5.9において、SATA仮想化ファームウェア543は、SATAストレージデバイス180をアンロックするべくATAコマンドをI/Oコントローラ170に送る。動作5.10において、I/Oコントローラ170は、SATAストレージデバイス180をアンロックするべくATAコマンドを利用する。上述したように、SATAストレージデバイス180が暗号化エンジン150で暗号化されている場合、セキュリティ/鍵管理ファームウェア/ケルベロスサーバ537は、識別情報管理ファームウェア/ケルベロスクライアント539と共に協働して、ケルベロスチケットの拡張フィールドに含まれているユーザのアンロックトークンを用いてユーザラップ鍵を導出するとしてよい。ユーザラップ鍵は、SATAストレージデバイス180のデバイス暗号鍵およびデバイスラップ鍵にアクセスするために用いられるとしてよい。
【0078】
動作5.11および5.12では、ホットプラグされたSATAストレージデバイス180が暗号化エンジン150で暗号化されている場合に行われる動作を説明する。ホットプラグされたSATAストレージデバイスが暗号化エンジン150で暗号化されていない場合には、ステップ5.11および5.12は省略される。ホットプラグされたSATAストレージデバイス180がチップセット/セキュアパーティション120の暗号化エンジン150で暗号化されている場合には、動作5.11において、ケルベロスクライアント539Aは、ホットプラグされたSATAストレージデバイス180用のデバイス復号化を可能とするようにセキュリティ/鍵管理ファームウェア537に対して要求するとしてよい。ユーザ信用情報は、
図2を参照しつつ上述したように、デバイス暗号鍵を取得するために用いられるとしてよい。動作5.12において、デバイス暗号鍵184は、暗号化エンジン150に供給される。上述したように、デバイス暗号鍵は、暗号化エンジン150のキースロットレジスタに書き込まれるとしてよく、ホットプラグされたデバイス、例えば、SATAストレージデバイス180のブロックを復号化するべく暗号化エンジン150によって利用されるとしてよい。ホットプラグされたSATAストレージデバイス180がさらにATAパスワードによっても保護されている場合、デバイスに格納されているデバイス暗号鍵にアクセスする前に、動作5.7から5.10を参照しつつ上述したSATAストレージデバイス180をアンロックするためのステップを用いてデバイスをアンロックするとしてよい。
【0079】
動作5.13では、ケルベロスクライアント539Aは、SATAストレージデバイス180へのアクセスが認可された旨をホットプラグ仮想化ファームウェア545に通知する。動作5.7から5.10を参照しつつ説明したように、SATAストレージデバイス180は、ATAパスワードでロックされた場合、アンロックされている。動作5.11および5.12を参照しつつ説明したように、デバイスが暗号化エンジン150で暗号化された場合、復号化をイネーブルしている。動作5.14において、ホットプラグ仮想化ファームウェア545は、ホットプラグイベントをホストオペレーティングシステム115に供給する。ホストオペレーティングシステム115はこの後、SATAストレージデバイス180のアンロックおよび復号化で得られたデータにアクセスする。ホストオペレーティングシステム115は、ホストプラグイベントの受信に応じて、ファイルシステムを呼び出して、SATAストレージデバイス180の実装および/またはSATAストレージデバイス180のRAIDアレイへの組み込みを行うとしてよい。
【0080】
図1から
図5Bを参照しつつ上述したシステムでは、ストレージデバイスの暗号化は、チップセット/セキュアパーティション120内で暗号化エンジン150によって行われている。さらに、
図1から
図5Bを参照しつつ上述したシステムは、当該システム内のホストオペレーティングシステムから隔離されたセキュアパーティション内において、暗号化および保護デバイス管理を行う。例えば、暗号化エンジン150は、チップセット/セキュアパーティション120内に常駐し、
図2の保護デバイスマネージャ235はチップセット/セキュアパーティション120内のマネジビリティ・エンジン(ME)130内に常駐し、
図5BのSATA仮想化ファームウェア543およびホットプラグ仮想化ファームウェア545はチップセット/セキュアパーティション120のI/Oコマンドデコードモジュール140内に常駐している。
【0081】
監査可能イベントは通常、ホストオペレーティングシステムおよび/またはBIOSの制御下で実行されている監査ソフトウェアで捕捉される。本明細書で説明する管理機能および暗号化機能はホストオペレーティングシステムおよびBIOSから隔離されているので、セキュアパーティション内で実行されるイベントは通常の監査ソフトウェアでは捕捉されない。しかし、保護デバイスの管理および格納されているデータの暗号化に影響を及ぼすイベントについては、捕捉して監査することが望ましい。また、ホストオペレーティングシステムおよび/またはBIOSの破損の危険性に対して保護されている環境においては監査処理を実行することが望ましい。また、監査可能イベントが発生したタイミングおよび発生したセキュア環境内で監査情報を捕捉することが好ましい。
【0082】
図6は、本発明の一実施形態に係る、
図1のシステムが保護デバイスを管理する方法を説明する詳細図である。マネジビリティ・エンジン・カーネル631、マネジビリティ・エンジン共通サービス633、保護デバイスマネージャ635、セキュリティ/鍵管理ファームウェア637、および、識別情報管理ファームウェア639は、
図2および
図5Aに示す対応する構成要素と同様に動作する。
【0083】
図6に示す実施形態では、マネジビリティ・エンジン(ME)130がマネジビリティ・エンジン監査サブシステム638を含み、I/Oコマンドデコードモジュール140がI/Oモジュール監査サブシステム648を含む。マネジビリティ・エンジン監査サブシステム638およびI/Oモジュール監査サブシステム648は、チップセット/セキュアパーティション120のうち対応する構成要素において発生する監査可能動作を特定して処理する。I/Oコマンドデコードモジュール140は、ストレージデバイスへの入出力用データを準備して暗号化エンジン150と直接協働してストレージデバイスに書き込むべくデータを暗号化するので、I/Oモジュール監査サブシステム648は、I/O時に発生する監査可能イベントを捕捉する。これとは対照的に、マネジビリティ・エンジン(ME)130は、ストレージデバイスへの入出力に直接関連しているわけではないので、マネジビリティ・エンジン監査サブシステム638は、保護デバイスの管理に関する監査可能イベントを捕捉する。例えば、マネジビリティ・エンジン監査サブシステム638は、暗号化、ユーザ認証、デバイスの初期化および故障、暗号鍵、盗難検出、および、その他の企業プラットフォーム管理ポリシーを管理するためのシステムの設定およびセットアップに関するイベントを捕捉する。
【0084】
マネジビリティ・エンジン監査サブシステム638およびI/Oモジュール監査サブシステム648は、マネジビリティ・エンジン(ME)コントローラインターフェース131を介して通信を行う。マネジビリティ・エンジン監査サブシステム638は、OOB通信チャネル168、ネットワークコントローラ160、および、アウトオブバンド通信モジュール630を介して、管理コンソール166内のリモート監査管理サービス640と通信するとしてよい。
【0085】
一実施形態によると、監査可能イベントは監査ポリシーで定義されている。監査ポリシーは、監査イベント記録が生成される監査可能イベント、および、無視する他の監査不可能イベントについても定義しているとしてよい。システム内で発生する全てのイベントを監査するとシステムの性能が大幅に低下するので、監査ポリシーに基づき、対象組織の優先順位およびポリシーに応じて特定のイベントを選択的に捕捉する。一実施形態によると、監査ビットマスクをセレクタとして利用して、監査可能イベントを検出可能なハードウェア素子および/またはファームウェア素子をアクティブ化および非アクティブ化する。
【0086】
監査ポリシーでは、イベントの種類として、暗号化システムプロビジョニング/デプロビジョニングイベント、ユーザ管理イベント、デバイス管理イベント、鍵管理イベント、デバイス初期化イベント、盗難検出イベントおよびデバイス故障イベントを含むとしてよい。具体的な監査可能イベントには、システムのセキュアパーティションの外部の動作によってトリガされるイベント、例えば、セキュアパーティション内の動作を発生させるホストオペレーティングシステムによってトリガされるイベント、および/または、セキュアパーティション内で内部的に発生する動作、例えば、割り込みが含まれるとしてよい。
【0087】
外部トリガされるイベントとしては、盗難防止サービスのイネーブルまたはディセーブル、ユーザアカウントの作成、削除または修正、ユーザのログオン/ログオフの成功または失敗、デバイス暗号鍵、デバイスラップ鍵および回復鍵等さまざまな種類の暗号鍵について暗号鍵の生成または削除、暗号化または復号化を行うためのデバイスの設定、デバイスのセキュリティ管理デバイスへの変換または変換取り消し、デバイスのPASS_THROUGH設定、デバイス移行またはデバイス移行の準備、デバイス暗号鍵(DEK)の暗号化エンジンのレジスタに対する挿入または削除、監査イベントポリシーの登録または登録取り消し、プラットフォームまたはデバイスのメタデータの回復、ローカルプラットフォームトークンのユーザ、鍵強度、鍵リフレッシュの変更を始めとする暗号化ポリシーの変更または暗号化ポリシーのリモート設定、認証済み暗号化と未認証暗号化との間での移行、デバイスアンロック処理、デバイス故障が挙げられるとしてよい。内部トリガされる監査可能イベントとしては、マネジビリティ・エンジン、I/Oコマンドデコードモジュール、暗号化エンジン、および/または、セキュアパーティションに対するインターフェースの自己試験の失敗、連邦情報処理基準(FIPS)の自己試験の成功または失敗、監査初期化の失敗、および/または、メモリ故障が挙げられるとしてよい。
【0088】
マネジビリティ・エンジン監査サブシステム638またはI/Oモジュール監査サブシステム648がイベントを検出すると、検出したイベントが監査ポリシーにおいて監査可能イベントと定義されているものの1つであるか否かを判断するとしてよい。検出したイベントが監査ポリシーにおいて監査可能イベントと定義されているものの1つである場合には、当該イベントを監査可能イベントと特定する。
【0089】
監査ポリシーは、各監査可能イベントについて監査イベント記録を提供する命令を含むとしてよい。監査ポリシーはさらに、監査可能イベントを記録できない場合に実行すべき動作を特定するとしてよい。例えば、マネジビリティ・エンジン監査サブシステム638またはI/Oモジュール監査サブシステム648は、監査イベント記録が監査ログに書き込まれない動作を停止または取り消す(効果を戻す)ように設定されているとしてよい。さらに、監査ポリシーは、監査格納ログリソースを使い果たした場合の処理を特定しているとしてよい。このため、マネジビリティ・エンジン監査サブシステム638またはI/Oモジュール監査サブシステム648は、監査ログを上書きするように、または、監査イベント記録の監査ログへの書き込みを中止するように構成されているとしてよい。
【0090】
一実施形態によると、マネジビリティ・エンジン監査サブシステム638およびI/Oモジュール監査サブシステム648はそれぞれ、特定された監査可能イベントについて監査イベント記録を生成する。監査イベント記録は、ホストオペレーティングシステムから隔離された監査ログに書き込まれる。
図6に示す実施形態では、マネジビリティ・エンジン監査サブシステム638は、監査可能イベントを監査ログ610に書き込み、I/Oモジュール監査サブシステムは監査可能イベントを監査ログ620に書き込む。一実施形態によると、監査ログ610はフラッシュメモリの隔離領域、例えば、
図1のフラッシュメモリ190のデータ領域198の隔離領域に格納され、監査ログ620は、不揮発性メモリの隔離領域、例えば、
図1の不揮発性メモリ格納デバイス172の隔離領域等に格納される。不揮発性メモリはフラッシュメモリより高速であるので、一実施形態によると、不揮発性メモリが利用可能であれば、監査イベント記録が最初に、不揮発性メモリに格納されている監査ログ(本例では監査ログ620)に書き込まれる。I/Oコマンドデコードモジュール140がストレージデバイスへの入出力用データを用意して暗号化エンジン150と直接協働してストレージデバイスに書き込む際にデータを暗号化するので、I/Oモジュール監査サブシステム648は、I/Oイベントを処理する際にレイテンシを小さくするべく、不揮発性メモリに格納されているより高速な監査ログ620に結合されている。マネジビリティ・エンジン監査サブシステム638はI/Oに直接関与しないので、マネジビリティ・エンジン監査サブシステム638は、フラッシュメモリ190等のフラッシュメモリに格納されているより低速な監査ログ610に監査イベント記録を書き込む。
【0091】
監査ログ610および/または監査ログ620がしきい値に到達すると、マネジビリティ・エンジン監査サブシステム638は、監査ログを提供する旨をリモート監査管理サービス640に通知するとしてよい。一実施形態によると、監査管理サービス640は、監査ログ610および620の内容をリモートストレージに複製して、しきい値をリセットする。監査管理サービス640は、マネジビリティ・エンジン監査サブシステム638またはI/Oモジュール監査サブシステム648の動作を中断しない。マネジビリティ・エンジン監査サブシステム638およびI/Oモジュール監査サブシステム648は、監査可能イベントを特定するのと同時進行で、監査イベント記録の対応する監査ログ610および620への書き込みを続ける。監査ログ620がしきい値に近づくと、I/Oモジュール監査サブシステム648は、MECI131を介してマネジビリティ・エンジン監査サブシステム638に通知して、マネジビリティ・エンジン監査サブシステム638が監査管理サービス640にサービス要求を送るようにする。
【0092】
一実施形態によると、マネジビリティ・エンジン監査サブシステム638は、監査管理サービス640と共に動作して、セキュアパーティション内でアクティブな全ての監査サブシステムを管理する。マネジビリティ・エンジン監査サブシステム638は、I/Oモジュール監査サブシステム648等の他の監査サブシステムがオーバーロードとなり監査可能イベントを処理できなくなると、I/Oモジュール監査サブシステム648等の他の監査サブシステムの機能を実行するとしてよい。マネジビリティ・エンジン監査サブシステム638はさらに、他の監査サブシステムの監査ログに対してサービスを提供するとしてよい。一実施形態によると、マネジビリティ・エンジン監査サブシステム638は、他の監査サブシステムに登録するよう求める。登録を利用して、他の監査サブシステムが維持している監査ログ620等のローカル監査ログがある旨をマネジビリティ・エンジン監査サブシステム638に通知する。さらに、登録を利用して、それぞれの監査可能イベントが処理のためにルーティングし直されるか否か、および/または、監査ログへのサービス提供が要求されているか否かを、マネジビリティ・エンジン監査サブシステム638に通知するとしてよい。
【0093】
一実施形態によると、マネジビリティ・エンジン監査サブシステム638およびI/Oモジュール監査サブシステム648の動作は、ケルベロスチケットを用いて、企業ドメイン特権によって制御される。一実施形態によると、システムのセキュアパーティション内で実行されている監査可能イベントが特定される。尚、当該セキュアパーティションはシステムのホストオペレーティングシステムから隔離されている。監査イベント記録は、監査可能イベントについて生成されており、監査イベント記録がホストオペレーティングシステムから隔離されている監査ログに書き込まれる。一実施形態によると、複数の監査可能イベントが監査ポリシー内で定義されており、監査ポリシーは、複数の監査可能イベントのうちそれぞれについてサービスを提供する命令を含む。そして、監査可能イベントを特定することは、検出したイベントが監査ポリシーで定義されている複数の監査可能イベントのうち1つであるか否か判断することを含む。
【0094】
監査ログは、セキュアパーティション内からのみアクセス可能な複数の監査ログのうち第1の監査ログであってよい。複数の監査ログはそれぞれ、ホストオペレーティングシステムから隔離されている。一実施形態によると、第1の監査ログが利用可能であるか否かを判断する。第1の監査ログが利用可能である場合には、第1の監査ログに対応付けられている第1の監査サブシステムに監査イベント記録が送信され、第1の監査サブシステムは監査イベント記録を第1の監査ログに書き込む。第1の監査ログが利用できない場合、監査イベント記録は、複数の監査ログのうち第2の監査ログに対応付けられている第2の監査サブシステムに送信され、第2の監査サブシステムは監査イベント記録を第2の監査ログに書き込む。
【0095】
一実施形態によると、第1の監査ログへの書き込み動作のレイテンシを監視する。レイテンシが所定のしきい値に到達すると、後続の書き込み動作は、第2の監査サブシステムに移動させて、後続の書き込み動作の対象である後続の監査イベント記録を第2の監査ログに書き込めるようにする。別の実施形態では、レイテンシが所定のしきい値に到達すると、第1の監査ログにサービスを提供するよう求める要求を、第2の監査サブシステムに送る。第2の監査サブシステムは、監査イベント記録を第1の監査ログから別の位置、例えば、第3の監査ログに移動させることによって、第1の監査ログに対してサービスを提供する。一実施形態によると、第2の監査サブシステムは、第3の監査ログにサービスを提供するようにリモート管理アプリケーションをスケジューリングし、リモート管理アプリケーションは、セキュアパーティションとの間でセキュア通信チャネルを構築し、リモート管理アプリケーションはセキュア通信チャネルを介して第3の監査ログにサービスを提供する。
【0096】
一実施形態によると、監査ログにサービスを提供するよう求める要求は、要求元システムのセキュアパーティションから受信する。セキュアパーティションは、要求元システムのホストオペレーティングシステムから隔離されている。監査ログは、セキュアパーティション内で実行される監査可能イベントの監査イベント記録を含み、監査ログは、要求元システムのホストオペレーティングシステムから隔離されている。セキュアパーティションとの間でセキュア通信チャネルが構築され、セキュア通信チャネルを介して監査ログにサービスが提供される。監査ログにサービスを提供することは、監査ポリシーに応じて監査可能イベントを処理することを含むとしてよい。
【0097】
図7は、本発明の一実施形態に係る、システムのセキュアパーティション内で発生する監査可能イベントを検出すると実行すべき方法を示すフローチャートである。「イベント検出」ステップ702においてチップセット/セキュアパーティション120等のセキュアパーティション内で発生するイベントを検出すると、「監査可能イベント?」の判断ポイント704に進む。「監査可能イベント?」の判断ポイント704においては、ハードウェアおよび/または対応する監査サブシステム(マネジビリティ・エンジン監査サブシステム638またはI/Oモジュール監査サブシステム648の一方)に符号化されているロジックが、監査ポリシーを確認して、検出したイベントが監査可能イベントであるか否かを判断するとしてよい。一実施形態によると、監査ビットマスクを用いて、監査可能イベントを検出可能な別のハードウェア素子および/またはファームウェア素子をアクティブ化する。「監査可能イベント?」の判断ポイント704において監査ビットマスクを評価することによって、検出したイベントが監査可能であるか否かを判断する。
【0098】
「監査可能イベント?」の判断ポイント704において、イベントが監査可能イベントである場合、「監査イベント記録を生成」ステップ706に進む。監査イベント記録は、ハードウェアおよび/または対応する監査サブシステム(マネジビリティ・エンジン監査サブシステム638またはI/Oモジュール監査サブシステム648の一方)に符号化されているロジックによって生成される。監査イベント記録が生成された後、「NVMのログが利用可能?」の判断ポイント708に進む。前述したように、不揮発性メモリのログが利用可能である場合、イベントの処理にかかるレイテンシを低減するべく、監査イベント記録を不揮発性メモリに書き込むことが好ましい。「NVMのログが利用可能?」の判断ポイント708では、NVMのログが利用可能である場合、「イベント記録をI/Oモジュール監査サブシステムに送る」ステップ710に進む。「イベント記録をI/Oモジュール監査サブシステムに送る」ステップ710において、イベント記録がI/Oモジュール監査サブシステム648に送信される。
【0099】
「イベント記録をI/Oモジュール監査サブシステムに送る」ステップ710から、「しきい値到達?」の判断ポイント712に進む。しきい値到達の例として、I/Oモジュール利用率が通常レベル未満となった場合および/または監査ログが満杯になった場合が挙げられる。しきい値に到達すると、「しきい値ステータスをマネジビリティ・エンジン監査サブシステムに送る」ステップ718に進む。例えば、I/Oモジュール利用率がしきい値レベル未満になると、監査動作をマネジビリティ・エンジン監査サブシステム638に任せて、および/または、監査ログ620にサービスを提供する必要があるとしてよい。「しきい値ステータスをマネジビリティ・エンジン監査サブシステムに送る」ステップ718が実行されると、マネジビリティ・エンジン監査サブシステム638は、監査ポリシーに従ってしきい値に到達したことに対して適切な処理を行う。例えば、マネジビリティ・エンジン監査サブシステム638は、監査管理サービス640をスケジューリングして、ログにサービスを提供するとしてよいし、および/または、しきい値に到達したログを他のアーカイブストレージに複製するとしてよい。「しきい値ステータスをマネジビリティ・エンジン監査サブシステムに送る」ステップ718から、「イベント記録を監査ログに書き込む」ステップ715に進む。ステップ715では、しきい値に到達した原因となった監査イベント記録をマネジビリティ・エンジン監査サブシステム638がログに書き込む。
【0100】
「しきい値到達?」の判断ポイント712から、しきい値に到達していなければ、「イベント記録を監査ログに書き込む」ステップ715に進む。ステップ715では、対応する監査サブシステムが監査イベント記録を対応するログに書き込む。この後、「イベントを実行する」ステップ714に進む。ステップ714では、イベントを実行して、監査可能イベントの処理が完了する。
【0101】
「NVMのログが利用可能?」の判断ポイント708において、NVMのログが利用可能でない場合、「イベント記録をマネジビリティ・エンジン監査サブシステムに送る」ステップ716に進む。監査イベント記録は、マネジビリティ・エンジン監査サブシステム638に送られる。マネジビリティ・エンジン監査サブシステム638はこの後、「イベント記録を監査ログに書き込む」ステップ715において監査ログ610にイベント記録を書き込む。「イベントを実行する」ステップ714に進み、イベントを実行して、監査可能イベントの処理が完了する。
【0102】
「監査可能イベント?」の判断ポイント704において、イベントが監査可能イベントでない場合、「イベントを実行する」ステップ714に進む。イベントを実行して、イベントの処理が完了する。
【0103】
監査可能イベントの処理は、ハードウェアおよび/またはファームウェアに符号化されているロジックによって実行することができる。チップセット/セキュアパーティション120の構成要素、例えば、マネジビリティ・エンジン(ME)130、I/Oコマンドデコードモジュール140、および、暗号化エンジン150の初期化が、上記の構成要素のハードウェアに符号化されるか、および/または、上記の構成要素のファームウェアに含められる監査可能イベントである。同様に、HECI111b、VECI111c、ネットワークコントローラ160、USBコントローラ175、I/Oコントローラ170といったコントローラおよびインターフェースのハードウェアおよび/またはファームウェアは、監査可能イベントを処理するロジックを含むとしてよい。
【0104】
監査イベント処理は、最初の設定時、および、マネジビリティ・エンジン(ME)130の構成要素の動作中、例えば、
図2のセキュリティ/鍵管理ファームウェア237の動作中に、マネジビリティ・エンジン(ME)130内で実行することができる。例えば、監査イベントは、セキュリティ/鍵管理ファームウェア237が、ストレージデバイスが暗号化される場合にデバイス暗号鍵(DEK)を暗号化エンジン150の対応するレジスタに書き込むと、または、暗号化がディセーブルされる場合に暗号化エンジン150の対応するレジスタからDEKを削除すると、トリガされるとしてよい。
【0105】
監査イベント処理はさらに、データが平文形式でI/Oコントローラ170から暗号化エンジン150に(書き込み動作のために)転送されると、そして、データが暗号形式で暗号化エンジン150から返送されると、実行されるとしてもよい。I/Oコントローラ170と暗号化エンジン150との間のチャネルを介して発生する監査イベントによって、データが暗号化されているという証明が得られるが、監査ポリシーはこのようなイベントの監査を、定期的なコンプライアンス試験に制限するとしてよい。
【0106】
監査イベント処理は、監査サブシステム間の調整がマネジビリティ・エンジン・コントローラ・インターフェース(MECI)131を介してやり取りされるので、MECI131で実行されるとしてよい。I/Oコマンドデコードモジュール140の最初の設定も、MECI131によって実行され、監査可能イベントを生成する。
【0107】
監査イベント処理は、インターフェースHECI111bおよびVECI111cを介してプロセッサ110からの通信で生成されるとしてよい。例えば、デバイスのロッキング状態に関するATAセキュリティコマンド、および、これらのインターフェースを介してI/Oコントローラ170またはUSBコントローラ175にまで伝搬するコマンドが監査可能イベントを生成する。さらに、ユーザ認証、暗号化、セキュリティ、鍵管理およびステータスに関するHECIコマンドが監査可能イベントである。I/Oコントローラ170、USBコントローラ175およびネットワークコントローラ160等のコントローラを初期化するために利用されるコマンドも監査可能イベントである。監査ログの格納および設定コマンドもまた監査可能イベントであり、監査サブシステムが
図6のリモート監査管理サービス640と通信することも同様である。USBコントローラ175および/またはI/Oコントローラ170を介してプラットフォーム100にデバイスを取り付けることも、監査可能イベントである。
【0108】
監査ポリシーにおいて特定のイベントを監査可能イベントであると設定したり、監査可能イベントでないと設定したりすることによって、監査システムは、性能、格納容量およびセキュリティのバランスを取るべく細かい調整が可能となる。セキュア通信チャネルを介して監査管理サービスおよびリモート管理コンソールで監査サブシステムを管理することによって、監査情報のインテグリティを守ることができる。
【0109】
図8は、本発明の一実施形態に係る、暗号化方式、ユーザ識別情報認証方式およびパスワード保護方式を用いてデバイスを保護する等の動作を管理するためのセキュアパーティションを実施する仮想マシン環境を示す図である。プラットフォーム800が仮想化される場合、備えるプロセッサは1つのみとしてよいが、ホスト上の仮想マシンモニタ(VMM830)はホストの抽象化および/またはビューを複数提供するとしてよい。このため、ホストの下層のハードウェアは1以上の独立して動作する仮想マシン(VM)に見える。VMM830は、ソフトウェア(例えば、スタンドアロンプログラムおよび/またはホストオペレーティングシステムの構成要素)、ハードウェア、ファームウェアおよび/またはこれらの任意の組み合わせで実施されるとしてよい。VMM830は、ホスト上のリソースの割り当てを管理し、ラウンドロビン方式またはその他の所定の方式に応じて、さまざまなVMをオン/オフするために必要であればコンテクストスイッチを実行する。図示しているプロセッサは1つのみであるが(プロセッサ805)、本発明の実施形態はこれに限定されず、仮想化環境では複数のプロセッサを利用し得ることは当業者には明らかであろう。
【0110】
図示しているVMパーティションは2つのみ(「VM810」および「VM820」、以下では「VM」と総称する)であるが、VMは、一例に過ぎず、ホストにさらに仮想マシンを追加するとしてもよい。VM810およびVM820は、それぞれ自己完結型プラットフォームとして機能するとしてよく、独自の「ゲストオペレーティングシステム」(つまり、VMM830がホストするオペレーティングシステムで、「ゲストOS811」および「ゲストOS821」と図示している。以下では「ゲストOS」と総称する)およびその他のソフトウェア(「ゲストソフトウェア812」および「ゲストソフトウェア822」と図示している。以下では「ゲストソフトウェア」と総称する)を実行している。
【0111】
各ゲストOSおよび/または各ゲストソフトウェアは、仮想マシンではなく専用コンピュータで実行されているかのように動作する。つまり、各ゲストOSおよび/または各ゲストソフトウェアは、さまざまなイベントを制御するものとしてよく、プラットフォーム800上のハードウェアリソースにアクセスするとしてよい。各VMにおいて、ゲストOSおよび/またはゲストソフトウェアは、実際に、プラットフォーム800の物理ハードウェア(「ホストハードウェア840」、ネットワークコントローラ860を含むとしてよい)上で実行されているかのように挙動するとしてよい。
【0112】
専用プロセッサを持つ物理ハードウェアパーティション、例えば、
図1のマネジビリティ・エンジン(ME)130は、仮想化パーティション(
図8に図示するもの)より高いセキュリティを提供し得ることは当業者であれば容易に想到するであろう。しかし、本発明の実施形態は、いずれの環境で実施するとしてもよく、および/または、両環境を組み合わせてさまざまなレベルのセキュリティを提供するとしてもよい。また、MEプラットフォーム、AMTプラットフォームまたはPRLプラットフォームは仮想化環境内で実施し得ることも当業者であれば容易に想到するであろう。例えば、VM820は、ホスト上のMEパーティションとして専用化されるとしてよく、VM810は、ホスト上で通常のアプリケーションを実行する。この場合、ホストは、複数のプロセッサを含むとしてもよいし、含まないとしてもよい。ホストが2つのプロセッサを含む場合、例えば、VM810(およびホスト上のその他のVM)がプロセッサ805のリソースを共有する一方、VM820は他のプロセッサに割り当てられるとしてよい。他方、ホストが備えるプロセッサが1つのみである場合、プロセッサは両方のVMに対してサービスを提供するが、VMM830の協力の下、VM820はホスト上の他のVMから隔離されるとしてよい。簡略化のため、本発明の実施形態は、マネジビリティ・エンジン(ME)環境に関連付けて説明しているが、本発明の実施形態はこれに限定されない。これに代えて、マネジビリティ・エンジン、MEに言及する場合、「パーティション」、「セキュアパーティション」、「セキュリティパーティション」および/または「管理パーティション」は任意の物理パーティションおよび/または仮想的パーティション(上述の説明のように)を含むものとする。
【0113】
スタートアップ時、または、新しいデバイスがプラットフォームにホットプラグされると、VMM830は、当該デバイスをVM810または820に割り当てる。
図8に図示したような仮想化環境においてチップセット/セキュアパーティション120内で監査を実施する場合、VMM830は、VM810および820のそれぞれの監査マスクプロフィールを管理する。あるデバイスがVM810または820に割り当てられると、当該VMの対応する監査マスクプロフィールは、チップセット/セキュアパーティション120に対応付けられる。チップセット/セキュアパーティション120に対応付けられているVMの監査マスクプロフィールが変更される度に、VMM830は監査イベント記録を生成する。このように、監査可能イベントを開始するVM810または820は、監査イベント記録で表現される。例えば、デバイスに対して格納I/Oコマンドを発行するVM810または820は、監査イベント記録で特定される。
【0114】
デバイスがプラットフォームにホットプラグされると、デバイス管理を受信したVM810または820は、監査イベント記録で特定される。ホットプラグイベントが検出されると、I/Oコマンドデコードモジュール140が、チップセット/セキュアパーティション120に現在対応付けられているVM810または820がデバイス管理を受信する権限を持つか否かを判断する必要があるとしてよい。デバイスが割り当てられて、チップセット/セキュアパーティション120に割り当てられるべき正しい監査マスクプロフィールが決定されるまで、内部監査マスクプロフィールを用いて、ホットプラグイベント以降デバイス管理が発生するまでのイベントを監査するとしてよい。
【0115】
VMM830は、現在アクティブな監査マスクプロフィールをフラッシュメモリ190に書き込むことによって、現在アクティブなVM監査マスクプロフィールをチップセット/セキュアパーティションに特定するとしてよい。フラッシュメモリ190はさらに、各VMに対応付けられているユーザアカウントメタデータを維持するために用いられる。ストレージデバイスがデバイスパスワードまたはデバイス暗号鍵を用いてアンロックされる場合、フラッシュメモリ190内のユーザアカウントメタデータが、デバイスが割り当てられたVMに対応することを確認するべくさらに追加で確認を行うとしてよい。
【0116】
VMM830によって、過渡的なVM環境のためにドライブが不当に割り当てられることにならないようにする。一実施形態によると、VMM830は、VM810および820のそれぞれについて、GUID(グローバルに一意的なID)を生成する。GUIDは、フラッシュメモリ190内のメタデータをパーティション化するために用いられる。
【0117】
本明細書で開示するメカニズムの実施形態は、ハードウェア、ソフトウェア、ファームウェアまたはこれらの実施方法の組み合わせで実現されるとしてよい。本発明の実施形態は、少なくとも1つのプロセッサと、データストレージシステム(揮発性メモリおよび不揮発性メモリおよび/または格納素子を含む)と、少なくとも1つの入力デバイスと、少なくとも1つの出力デバイスとを備えるプログラム可能システムで実行されるコンピュータプログラムとして実現されるとしてよい。
【0118】
本明細書で説明した機能を実行して出力情報を生成するべく、入力データにプログラムコードを適用するとしてよい。本発明の実施形態はさらに、本明細書に係る処理を実行するための命令を含むか、または、本明細書で説明した構造、回路、装置、プロセッサおよび/またはシステム機能を定義するHDL等の構成データを含む機械アクセス可能媒体を含む。このような実施形態は、プログラム製品とも呼ばれるとしてよい。
【0119】
このような機械アクセス可能格納媒体は、これらに限定されないが、機械またはデバイスが製造または形成する粒子による有形の構造物、例えば、ハードディスク、フロッピー(登録商標)ディスク、光ディスク、コンパクトディスクリードオンリーメモリ(CD−ROM)、コンパクトディスクリライタブル(CD−RW)、および、光磁気ディスク等の任意のその他の種類のディスク、リードオンリーメモリ(ROM)、ダイナミックランダムアクセスメモリ(DRAM)等のランダムアクセスメモリ(RAM)、スタティックランダムアクセスメモリ(SRAM)、消去可能プログラム可能リードオンリーメモリ(EPROM)、フラッシュプログラム可能メモリ(FLASH)、電気的消去可能プログラム可能リードオンリーメモリ(EEPROM)等の半導体デバイス、磁気カードまたは光カード、または、電子命令を格納するのに適している任意のその他の種類の媒体等の格納媒体を含むとしてよい。
【0120】
出力情報は、公知の方法で、1以上の出力デバイスに適用されるとしてよい。本願では、プロセッシングシステムは、プロセッサ、例えば、デジタルシグナルプロセッサ(DSP)、マイクロコントローラ、特定用途向け集積回路(ASIC)、または、マイクロプロセッサ等を含む任意のシステムを含む。
【0121】
プログラムは、プロセッシングシステムとの間でやり取りを行うべく高級プロシージャプログラミング言語または高級オブジェクト指向型プログラミング言語で実装されるとしてよい。プログラムはまた、所望される場合には、アセンブリ言語または機械言語で実装するとしてもよい。実際のところ、本明細書で説明したメカニズムの範囲は、任意の特定のプログラミング言語に限定されるものではない。いずれの場合でも、プログラミング言語は、コンパイラ型またはインタプリタ型のいずれであってもよい。
【0122】
本明細書では、暗号化方式、ユーザ認証方式およびパスワード保護方式によって保護されるデバイスの管理を行うための方法およびシステムの実施形態を説明する。本発明の具体的な実施形態を図示および説明してきたが、請求項の範囲から逸脱することなく多くの点で変更、変化、および変形が可能であることは当業者には明らかであろう。したがって、当業者であれば、本発明を広義に解釈した場合に本発明の範囲から逸脱することなく変更および変形が可能であるものと理解されたい。請求項の範囲には、本発明の真の意図および範囲に含まれるこのような変更、変化、変形もすべて包含するものとする。