「インテル® トラステッド・エグゼキューション・テクノロジー」とは
システム起動時に,ハードウエアレベルでシステムソフトウエアの改ざんを検出・防止する技術です.
近年,仮想マシンの重要性がますます高まっていますが,物理マシン以上に仮想マシン/仮想OSのセキュリティを確保することは難しいのが現実です.
仮想OSがセキュアな状態であるかどうかは,仮想OSの実行権限を握っている仮想マシンモニタがセキュアであるかに依存します.しかし,仮想マシンモニタはソフトウエアで構成されているため,悪意のあるソフトウエアの攻撃対象となります.仮想マシンモニタの信頼性を保証するには,物理マシンと同様にハードウエア面のサポートが必要となります.
そこで,インテルが検証機能をハードウエアに組み込んだのが,インテル トラステッド エグゼキューション テクノロジー(TXT)となります.
TXTは,CPU,チップセット,TPM(Trusted Platform Moduke),Authenticated Code(AC) モジュールで構成されています.AC モジュールは,ソフトウエアモジュールで,CPU 内の ACEA と呼ばれる領域内でのみ実行され,プラットホームの検証を行います.AC モジュール自身は,既に電子署名されていて,その公開鍵のハッシュ値はチップセット内に格納されています.※ TPM は汎用チップで,詳細については,後述.
仮想マシンモニタの起動は,BIOS 読み込み⇒ブートローダーの起動⇒仮想マシンモニタの実行となります.このブートプロセス中に実行されるソフトウエアのハッシュ値を取得(メジャーメント)できれば,信用できるかどうか判断できることになります.この実行プロセスのメジャーメント繰り返すことで,最終的に仮想 OS がセキュアな状態であると判断することが出来ます.これを,トラスト チェーンと呼んでいます.
このトラストチェーンにおいて重要なのは,一番はじめに実行されるメジャーメント RTM (Root of Trust for Measurement) です.RTMは,比較検証するものが存在しないため,これ自体がセキュアでないと意味がありません.RTM には,SRTM(Static RTM:BIOS ROM からトラストチェーンを開始)とDRTM(Dynamic RTM:任意の特定のイベントからトラストチェーンを開始) がありますが,インテルTXT は,DRTM です.
TXT では,CPUの中に作り上げられた信頼のルート (Root of Trust) を使用することで、すでに検証された基準である既知の良好な (Known Good) シーケンスと照らし合わせることで、起動時の構成とシステムの動作状態に対する一貫性をチェックします.
まず,vPro 対応 CPU の新しい命令セットが,RTM を構成し,トラストチェーンを開始します.次に実行される AC モジュールのメジャーメントを行い,次に AC モジュールが起動し,プラットホームの検証を行い,さらにメジャーメントされたブートローダーが仮想マシンモニタのメジャーメントを行い,検証されるというトラストチェーンが組まれています.
このトラストチェーンは,仮想マシンモニタ起動後も,OS 起動やドライバーの読み込み,アプリケーションなどへ延長できますが,TXT では,ACモジュールと仮想マシンモニタの起動プロセスをメジャーメント対象としています.
※画像は,Intel HPより引用
インテル TXT は,信頼できるものだけを実行するという,ホワイトリスト型のセキュリティがベースとなっており,常に最新の脅威に備えてリストを更新する必要が無く,管理のメリットが大きく,安全性が維持されます.
仮想 OS 間の管理を仮想マシンモニタが厳格に行っても,メモリ空間へのアクセスは,仮想マシンモニタ以外にも周辺機器からの DMA によるアクセスが存在するため,この径路も監視する必要があります.
この監視は,VT-d により行われ,仮想 OS に割り当てられたメモリ空間以外 DMA 転送や,指定外のアクセスを検知し,遮断しています.
TXT で仮想マシンモニタを検証し,検証済みの仮想マシンモニタが管理する Intel VT(VT-x および VT-d)を用いて,仮想 OS のアドレス空間が分離/管理された接続機器だけにネットワーク接続を許可することも可能になります.
以上のように,トラストチェーンの中で鍵を握っているのが,TPM になります.
安全なシステム環境を信頼されるシステム起動で実現しています.
TPM は TXT の”鍵”です! 陰で一生懸命セキュアな環境造りにがんばっています.
検証の方法としては,Rootkit のマルウエアを 仮想マシンに導入し,感染していない仮想マシンとその振る舞いの差を確認することだと思います.しかし,この方法での検証は出来ませんでした.
そこで,物理マシンの Trusted Boot において,同じ原理で処理が行われているシステムドライブの BitLocker で代用検証したいと思います.
システムボリュームの BitLocker は,ドライブの暗号化と Trusted Boot を組み合わせたものになります.よって,正しい手順で起動した場合のみ,暗号化されたドライブが利用可能になり,システムを起動することが出来ます.
正しい手順とは,BitLocker 設定時と同じ TPM 上で,同じ BIOS ,同じブートローダを経由した場合になります.
データボリュームや USBメモリなどの BitLocker は,TPM を使用せず,パスワードや PIN コードでの暗号化になります.よって,システムが異なっても,パスワードがわかれば,BitLocker を解除することが可能です.
この BitLocker が利用している Trusted Boot の仕組みが,インテルTXTと同じですので,BitLocker の検証を行うことにします.
まず,Intel Trusted Execution Technology(TXT)が有効になっていることを,BIOS から確認します.
POST で”F2"を押して,BIOS 画面に入ります.
Security メニューの中に,Intel Trusted Execution Technology があります.
デフォルトでは,Disabled (無効)になっています.
これを,Enabled (有効)に変更します.
ここから,TPM を利用した BitLocker を使って,検証を進めていきます.
この Windows 8 Proの BitLocker ですが,システムボリュームのみが TPM を利用します.データドライブや USBメモリなどは,通常のパスワードによる保護となります.
その違いを,あわせて検証していきます.
①Windows 8 Proで,USBメモリを BitLocker To Go で保護する手順
まず,ハードウエア(TPM)を利用しない BitLocker であるUSBメモリの Bitlocker To Go をみてみます.
BitLocker を呼び出します.
チャーム→検索→BitLocker
設定の中に,”BitLocker ドライブ暗号化”がありますので,クリックして,起動.
BitLocker To Go で,USBメモリ(リムーバブルデータドライブ)で,BitLocker を有効にしていきます.
”BitLocker を有効にする”をクリック.
”このドライブのロック解除を方法を選択する”で,”パスワードを使用してドライブのロックを解除する”をチェックして,パスワードを入力します.
”回復キーのバックアップ方法を指定してください”で,どれでも好きなものを選びます.これは,パスワードを忘れた場合の解除方法の保険です.
”ドライブを暗号化する範囲の選択"で,どちらかを選択します.削除データなどの扱いが異なります.
"暗号化の開始"をクリックします.
今回,データがあまり入っていなかったのと,2GBメモリだったので,数秒で終了しました.
BitLocker が有効になりました.かつ,ロックが解除された状態です.
ロックが解除された状態では,エクスプローラで,普通にドライブの中身を見る事が出来ます.
一度,抜くと,ロックがかかります.
ドライブをクリックすると,BitLocker がロックを解除するためにパスワードを求めてきます.
パスワードが通ると,ドライブはロックが解除されます.
中身も見ることができます.
このUSBメモリを Windows7 マシン(他PC)に挿した場合を見てみます.
BitLocker ドライブ暗号化が表示され,パスワード入力が求められます.
パスワードを入力します.
無事,中身を見ることができました.
BitLocker ドライブの暗号化の設定画面でも,ロックの解除が出来ます.
"ドライブのロックを解除"をクリック.
ドライブをクリックすると,BitLocker がロックを解除するためにパスワードを求めてきます.
パスワードが通ると,ドライブはロックが解除されます.
今度は,Windows 8 で BitLocker To Go で暗号化したUSBメモリを,同じマシン内の Hyper-V 上の Windows 7 で確認してみます.
Hyper-V では,USBメモリをサポートしていませんので,リモートデスクトップで接続します.
Windows 8 上で解除されたUSBメモリは,仮想の Windows 7 でもそのまま読めます.ロックされた状態を,仮想の Windows 7 からは解除できませんでした.
最後に,BitLocker を無効に戻してみます.
”BitLocker を無効にする”をクリック.
”BitLocker を無効にする”をクリック.
”暗号化解除が完了しました”が表示されます.これも,数秒で終了しました.
最初の”BitLocker が無効です”の状態に戻ります.
以上の事から,USBメモリの BitLocker To Go は,パスワード暗号化の一つであり,ハードウエア(システム)には依存せず,パスワードのみで暗号化の解除が可能です.
②システムドライブを BitLocker で有効にする手順
次に,TPM を使用するシステムボリュームの BitLocker を設定してみます.
チャームから,BitLocker を検索します.
”BitLocker ドライブの暗号化”をクリック.
オペレーティングシステムドライブの項で,”BitLocker を有効にする”があります.
念のため,TPM が有効であることを確認するため,左ペインの”TPM の管理"をクリック.
コンピューターのトラステッドプラットホームモジュールの管理(ローカルコンピューター)が開きます.
中段の"状態"が,”TPMは 使用する準備が出来ています”を確認してください.もし,準備が出来ていなければ,右ペインの”TPM を準備する”を実行してください.
BitLocker ドライブの暗号化の画面に戻って,オペレーティングシステムドライブの"BitLocker を有効にする”をクリック.
”回復キーのバックアップ方法を指定してください”で,いずれかを選択します.
システムドライブの場合,”Microsoft アカウントに保存する”が一番確実だと思います.ただし,ログインを Microsoft アカウントで行っておく必要があります.
※重要:ファイルに保存するを選んだ場合,BitLocker で保護するドライブの中に保存すると役に立ちません.
今回,Microsoft アカウントに保存しました.保存後,回復キーが保存されましたと表示されます.
”ドライブを暗号化する範囲の選択"で,どちらかを選びます.
”システムドライブ全体を暗号化する”ほうが安全です.
”このドライブを暗号化する準備が出来ましたか?”で,”BitLocker システムチェックを実行する”をチェックして,続行をクリック.
”コンピューターを再起動する必要があります”と再起動を要求されます.
再起動させると,BitLocker による暗号化が始まります.
再起動後,”暗号化を実行中です”とタスクトレイからメッセージが現れます.
”BitLocker ドライブの暗号化”の画面を確認しても,暗号化中であることがわかります.
暗号化中のタスクマネージャーです.
ドライブへのアクセスのみが高負荷ですが,CPU負荷は非常に低いです.
暗号化は15分くらいで,終了しました.
”BitLocker ドライブ暗号化”画面で確認すると,ガキが解除されているマークが現れます.
ここで,再度暗号化の解除をしてみます.
”BitLocker を無効にする”をクリック.
”BitLocker が解除中です”と表示されます.
数分で解除が終了しました.
”BitLocker ドライブ暗号化”画面で確認すると,ガキマークが無くなっています.
システムドライブを Bitlocker で暗号化したことにより,パフォーマンスがどれくらい変わっているのか,CrystalDiskMark で調べてみます.
確かに,BitLocker による暗号化を有効にした方が,Read/Write 共に遅くなっていますが,Readで95%,Writeで92%ですから,その差は僅かであり,体験的には全く感じません.
Trusted Boot は,後ほど検証します.
③ TPM による暗号鍵
上記の通り,2つの BitLocker を検証してみましたが,違いは何処にあったかのでしょうか?
どちたも,BitLocker による暗号化でした.
唯一の違いは,TPM を利用した場合,パスワードの入力を行わなかったことにあります.TPM 自体がセキュリティチップであり,暗号鍵の作成と格納を自動的に行ってくれました.
人間が介在するといろいろな面で,セキュリティ上の問題を起こします.しかし,TPM によるBitLocker では,暗号鍵が自動生成され,Microsoft アカウントに保存しておくと,非常にセキュアな状態を維持できます.
ここまでは,BitLocker による暗号化,つまり,PC のセキュリティ面の検証でした.
しかし,TXT は,Trusted Boot を提供するための技術であり,その面をこれから検証していきます.
④他のPCで起動させるとどうなるか?
BitLocker で暗号化したシステムドライブを,他のPCで起動ドライブとして使ってみます.
いきなり,BitLocker の回復要求が出ました.
システムが異なる状態では,正規の起動ではないと判断されます.
つまり,ハードウエアが異なると,全く手が出せない状態になりました.
⑤ BitLocker で暗号化したドライブを他のPCに認識させるとどうなるのか?
BitLocker で暗号化したシステムドライブを,他のPCでデータドライブとして認識させるとどうなるのか,確認してみます.
Windows 7 マシンに接続します.BIOS で確認しておきます.
OS(Win7)は普通に起動出来ます.
エクスプローラーで見てみます.
鍵のかかったローカルディスクと認識されています.
開いてみます.
回復キーの入力が求められました.
回復キーを入力するを選んでみます.
自動生成された暗号キーを知らない限り,ロックが解除できません.
システムドライブだけ抜き取られても,セキュアな状態は確保されています.
⑥BIOS を初期化するとどうなるのか?
BitLocker で暗号化したシステムドライブがある状態で,BIOSの初期化を行った場合,どうなるのかを検証してみました.
TPMに格納された暗号キーが初期化されてしまうため,起動しなくなるはずです.
予想したとおり,起動せず,BitLocker の回復キーの入力が求められました.
別のPCで,Microsoft アカウントにログインして,回復キーを表示させ,入力することで,無事OS起動させることが出来ました.
このことから,OS起動時にトラストチェックがきちんと働き,セキュアな状態を維持していることがわかります.
しかし,BIOS の変更でシステムが起動しなくなりますので,BitLocker を有効にしたシステムでは,安易にBIOSのアップデートなどは行わないことが必要になります.
アップデートを行う場合には,無効にするなどの対応が必要です.
⑦ハードウエアの構成を変更するどうなるのか?
BitLocker 設定時とハードウエア構成をどれくらい変えるとダメなのかを検証してみました.
確認した中で,システムの起動が出来なかったのは,起動ドライブのSATAポートを変更(1→2)した場合と,システムドライブをデュプリケーターによりそっくりクローン化したドライブを接続した場合でした.
クローンドライブの場合,デュプリケーターはセクター情報を完全にコピーしますので、純粋にシステムドライブのハードウェアだけが違う環境になります.この場合でも,正規の起動(Trusted Boot)とは異なると判断された事になります.
SATAポートを変更した場合には,全く同一のドライブにも関わらず,正規の起動(Trusted Boot)とは異なると判断された事になります.
他のハードウエア構成は問題ありませんでしたので,普段はあまり気にする必要はないと思われます.
BitLocker を使用した Trusted Boot も,BitLocker を設定した状態とは異なるシステムでは,起動しないことが検証できました.
⑧まとめ
以上が,BitLocker を利用した インテル トラステッド エグゼキューション テクノロジー(TXT) の検証の代用です.
BitLocker 設定時と同じシステム状態であれば,起動するだけで自動的に暗号は解除され,使えるようになり,OSへのログインパスワードのみが求められます.ユーザは全く意識する必要はありません.
しかし,BitLocker 設定時と異なるシステム状態(PC変更,起動ドライブ変更,BIOS 初期化など)すると,Trusted Boot ではない状態(改ざんの可能性がある)と判断され,起動前に BitLocker の解除が求められました.
すなわち,普段はなにも意識することなくセキュアな状態を維持し,起動プロセスの改ざんやハードウエアの変更(どちらも意図的な変更を含む)があった場合には,システムを起動させません.
これが,Trusted Boot の本質であり, インテル トラステッド エグゼキューション テクノロジーも同様な処理を行っていると判断されます.
ただし,今回の検証においては,直接インテル トラステッド エグゼキューション テクノロジー 自体を検証することは出来ませんでした.
⑨ TPM の管理(おまけ)
TPM の管理画面で,管理メニューを見てみます.
右ペインの2番目,”TPM をオフする”をクリックすると,そのまま,TPM がオフになります.
オンに戻すには,一番上,”TPM を準備する”をクリックします.
再起動を要求されます.再起動させます.
再起動後に,”TPM の準備が出来ました”の表示が現れます.
この中に”TPM 所有者パスワードを保存する”がありますので,念のため安全な場所にバックアップをとっておくのが良いと思います.
ちなみに,所有者パスワードの意味は,こちらです.
TPM 管理画面に戻ります.
左ペインに”コマンド管理”があります.これをクリックしてみます.
ここに,TPM チップの動作がわかります.
最後に,TPM のない PC でシステムドライブの BitLocker 操作をみてみます.
HP製のノートPCで,Windows 8 Pro にアップグレードしています.
BitLocker ドライブの暗号化を起動します.
DQ77MKと同じ画面です.
システムドライブを,BitLocker を有効にしてみます.
プラットホームモジュールを使用できませんと言われてしまいました.
最初の画面に戻って,TPM の管理をみてみます.
互換性のある TPM が見つかりませんと言われました.
システムドライブのBitLocker 処理は,TPM チップが必要であることがわかりました.
ZIGSOWにログインするとコメントやこのアイテムを持っているユーザー全員に質問できます。