第9回 UEFIサポートとセキュアブート:Windows 8.1クロスロード(2/2 ページ)
Windows 8.1をUEFIモードでインストールすることにより、高速な起動やブートコードなどを保護するセキュアブート機能が利用できる。
ブートコードを保護するセキュアブート
「セキュアブート(Secure Boot)」とは、UEFIと同時に用いられる、システムのブートコード領域を保護するための機能だ。ブートコードを改ざんしてシステムを乗っ取るようなタイプのウイルスなどの活動を防ぐためのものである。セキュアブート機能を持つシステムでWindows 8/8.1(およびWindows Server 2012/R2)を利用すればこの機能が自動的に有効になる。ただし必須ハードウェア要件ではないので、利用できないシステムもあるが、可能なら有効にしておきたい。
セキュアブートが有効なシステムでは、ファームウェアやブートコード、OSカーネル、デバイスドライバーなどが改ざんされていないかどうかをブートの各シーケンスに沿って順に検証され、検証をパスしたものだけが実行される。各コードにはその出自を表す証明書が付けられており、正しい証明書を持ったコードだけが実行できるようになっている。
Windows OSとセキュアブート
セキュアブートが有効な場合、システムが起動してから実行されるファームウェアやファームウェア拡張機能、ブートコード、OSカーネル、デバイスドライバーなどは全て正しい署名を持っているかどうかなどが、その起動順に沿って検証される。「SEC(Security)」「PEI(Pre EFI Initialization)」「DXE(Driver Exectuion Environment)」などはUEFIシステムにおけるブートの各段階を表す用語。署名に使われる証明書ツリーのデータベースはUEFIのファームウェア中の安全な場所に格納されている。
64bit版のWindows 8.1をUEFIモードでインストールした場合、UEFIのセキュアブートの機能が利用できるなら、自動的にそれを利用するようになっている。セキュアブートが有効になっていれば、前掲のmsinfo32コマンドの結果に「セキュア ブートの状態 有効」と表示される。
セキュアブートを利用するためにユーザーが行うべき作業は特にない。ファームウェア設定画面でUEFIとセキュアブートの機能を有効にしておけば、Windows 8.1が自動的にそれを検出して利用するからだ。セキュリティのための機能を提供するTPMチップがないシステムでもセキュアブートは利用できる。ただしUEFIの機能拡張として実装されているため、その利用にはUEFIモードでインストールされているWindows 8/8.1やWindows Server 2012/Windows Server 2012 R2などのOSが必要となる。
セキュアブートの設定項目
これはASUSのマザーボードにおけるセキュアブートの設定項目画面の例。
(1)「起動」グループの「セキュアブートメニュー」を選択する。
(2)ここでタイプを選ぶ。
(3)これをクリックする。
(4)どちらかを選択する。
(4)これを選ぶと、セキュアブートで利用するキー(証明書)データベースの管理画面が表示される。セキュアブート用のキーデータの保存や復元ができる
セキュアブートが有効になっているシステムに対して、違反となるような操作を行ったり、セキュアブートに対応していないOS(Windows 7など)をインストール(起動)しようとすると、その実行が阻止される。その場合にどのような状態になるかはシステムや状態に依存する。例えばブートセクターの内容を変更するような操作を行うと、次のようなメッセージを表示され、操作がブロックされる。
セキュアブートによって阻止された例(その1)
セキュアブートが有効だと、ブートデータ領域などに変更を加えようとするとブロックされる。これはセキュアブートが有効なWindows 8システム上で、ブートセクターの内容を変更するような操作を行おうとしたところだが、操作がブロックされている。これらの操作を行いたければ、一時的にセキュアブートを無効にする必要がある。
(1)bcdeditコマンドでデバッグ設定を変更しようとしたところ。
(2)セキュアブートによってブロックされているというメッセージ。
(3)上と同じような操作を「msconfig」コマンドで行ったところ。「システム構成ツール」を起動して、「ブート」タブにある「詳細オプション」で設定を変更しようとしたところ、やはりセキュアブートによってブロックされている。
またセキュアブート非対応の起動メディアでシステムを起動しようとすると、次のようなメッセージが表示され、実行できない。これは、64bit版のWindows 7をセキュアブートが有効なシステムへ追加でインストールさせようとした場合の画面例である。
セキュアブートによって阻止された例(その2)
これはセキュアブートが有効なWindows 8システムに対して、64bit版のWindows 7を追加インストールしようとしたところである(注:これはテストのためのインストールである。本当に2つのWindowsを使いたければ、先にWindows 7を入れておかないと、いろいろと面倒である)。セットアッププログラムの展開が完了してシステムが再起動したが、セキュアブートによってそれ以上のインストール作業はブロックされている
(1)署名されていないファイルが利用されているというメッセージ。Windows 7はセキュアブートに対応していないので、このようなメッセージが表示される。
(2)エラーの原因。
(3)ここで[Esc]キーを押すとファームウェア設定画面を起動できる。
このような場合は、ファームウェア設定画面を呼び出して一時的にセキュアブートを無効にする。セキュアブート対応OSと非対応のOSを時々切り替えて使う、というようなシステムなら、ずっと無効にしておく(Windows 8を使うときだけオンに切り替える、というような使い方は想定されていない)。設定画面の呼び出し方法については先の説明を参照していただきたい。
なお、手動で無効にすればセキュアブート非対応のOSでもインストールできることから分かるように、これはあくまでも不正なプログラムがブートセクターを書き換えたりするのを防ぐ機能である。セキュアブート非対応のOS(Windows 8よりも前のWindows OSやLinuxなど)を利用できないようにする機能ではないし、ブートシーケンスが終わった後のシステムを保護するものでもない。BIOSの設定画面にアクセスできるユーザーならば、容易に設定を変更してシステム内部にアクセスしたり、新しいOSをインストールしたりできる。これらを防ぎたいなら、例えばファームウェア設定画面でパスワードをセットしておいたり、BitLockerのような暗号化システムと組み合わせるなどの、従来通りの手法が必要となる。
今回はWindows 8.1におけるUEFIとセキュアブートのサポートについて見てきた。最近ではUEFIを採用したシステムが広く普及している。Windows 8の高速な起動やシャットダウンなどの能力を生かすためには、ぜひUEFIを有効にして活用したい。特にSSDなどの高速なデバイスと組み合わせると、以前のWindows XPやWindow 7などとは比較にならないくらい高速に起動し、快適に利用できるだろう。
Copyright© Digital Advantage Corp. All Rights Reserved.