Windows 11便利テク

Windows 11のセキュリティ機能は性能を下げるのか?仮想化ベースのVBSを検証

 Windows 11では、VBS(仮想化ベースのセキュリティ)と呼ばれるセキュリティ機能が搭載されている。一部でパフォーマンスに影響を与えるといった情報もあるが、どのような条件で有効化されるのかを含めて検証してみた。

VBSをざっくり理解する

 Windows 11に搭載されている仮想化ベースのセキュリティ(VBS : Virtualization Based Security)は、Hyper-Vなどで知られる仮想化機能を利用して、隔離された安全な環境でセキュリティ機能などを実行できる機能だ。

 仕組みなどの詳細は、以下の関連記事を参照していただくとして、ここではざっくり説明しておく。

 VBS(機能名は「コア分離」)は、簡単に言うと、OSより特権レベルの高いVSM(Virtual Secure Module)と呼ばれる隔離された仮想マシンを用意し、そこにセキュリティチェック機能や重要なセキュリティ資産(資格情報)などを配置する機能となる。

 Windows 11で話題になっているのは、VBSの機能のひとつであるHVCI(Hypervisor-Enforced Code Integrity)だ。機能名としては「メモリ整合性」となる。これは、ドライバやコードの署名をチェックして、正当なコードのみが実行されるようにチェックする機能だ。

Windows 11のコア分離(VBS)にあるメモリ整合性(HVCI)

 万が一、Windowsがマルウェアに感染しても、独立したチェック機能であるVSMにアクセスすることはできないため、このチェック機能そのものが無効化されるような心配がないうえ、VSM上の重要なシステムリソースにアクセスすることもできない。

 言わば、門で不審者の出入りをチェックする番人のような存在だが、この番人は所属する組織から干渉されない完全に独立した存在で、しかも地位も高い。このため、番人そのものが買収などによって無力化されてしまう心配がないことになる。

 この機能のややこしいのは、略称が色々登場することだ。まとめておくと以下のようになる。

  • VBS(Virtualization Based Security)
    仮想化機能を活用したセキュリティ機能全般を指す。機能名は「コア分離」
  • VSM(Virtual Secure Module)
    仮想化によって隔離されたシステムセキュリティ資産の格納とメモリの領域
  • HVCI(Hypervisor-Enforced Code Integrity)
    機能名は「メモリ整合性」。VBSの機能のひとつ。コードの整合性をチェックする機能

どういう場合に有効化されるか

 Windows 11では、VBSが動作要件を決定するための間接的な要素のひとつとなっているが、「メモリの整合性」こと、VBSのHVCI機能が標準で必ず有効になるわけではない。

 Microsoftが公表しているドキュメント「ハイパーバイザーで保護されたコード整合性の有効化」には、以下のような記述があり、新規インストールでのみ標準で有効化されるとなっている。

  • 規定の有効化
    Windows 11 以降では、互換性のあるシステムに新しいインストールを行なうと、既定でメモリの整合性が有効になります。
  • 注意
    自動有効化は、既存のデバイスのアップグレードではなく、クリーンインストールにのみ関連します。
MicrosoftのドキュメントのHVCI関連の記述

 ちなみに、この互換性のあるシステムというのは、以下の条件を備えている場合となる。

  • プロセッサ
    Intel 11 世代のコアプロセッサ以降、AMD Zen 2 アーキテクチャ以降、Qualcomm Snapdragon 8180 以降
  • メモリ
    最小 8 GB
  • ストレージ
    64 GB 以上の SSD
  • ドライバ
    HVCI 互換ドライバーがインストールされている必要があります
  • BIOS
    仮想化を有効にする必要があります

 また、ドキュメントには「Intel 11 世代のコアデスクトッププロセッサは、現在の既定の有効化ロジックには含まれていません」という注記もある。

 現状、アップグレードユーザーが多い状況やIntel CPUユーザーが少なくないことを考えると、標準で「メモリ整合性」が有効にならないユーザーが多いのも納得できるところだ。

手動でVBSとHVCIを有効化する

 では、手動で有効化するには、どうすればいいのかというと、まず上記の要件を満たしているかを確認する。ひとつずつチェックしてもいいが、「システム情報」アプリを使ってチェックするのが簡単だ。

 なお、チェックする場合は、VBSとHVCIの動作を個別に確認することもできるので、「仮想化ベースのセキュリティ」の項目だけでなく、「仮想化ベースのセキュリティのxx」の項目の確認も重要だ。

 「仮想化ベースのセキュリティの利用可能なセキュリティプロパティ」に利用できる機能の一覧が表示され、「~構成済みサービス」でセットアップされた項目が表示され、「~実行中サービス」に現在実行されているサービスが表示される。

要件を満たしていない場合(UEFIの仮想化機能がオフ)

 以下のように「仮想化ベースのセキュリティ」が「無効」で、しかも「Hyper-Vファームウェアで仮想化が有効」も「いいえ」になっている場合は、UEFIで仮想化機能(Intel VTなど)が無効になっている。UEFIで仮想化を有効化しておこう。

 なお、一部のPCではUEFIで仮想化の機能が非表示になっている場合がある(Surface Go 2など)。この場合、ファームウェアをアップデートすることで、自動的に仮想化が有効化される場合がある。

 このほか、要件を満たしていない場合としては、後述するHVCI非対応のドライバーがインストールされている場合もある。

UEFIで仮想化が無効になっているケース

要件を満たしているがVBSが無効

 以下のように「仮想化ベースのセキュリティ」が「無効」で、「Hyper-V ファームウェアで仮想化が有効」が「はい」になっている場合、ハードウェアとしての要件は満たしているが、VBSそのものはオフになっている。

 この場合、Windowsも仮想化されず、ハイパーバイザーなしで動作している状態となる。HVCIだけでなく、VBSそのものや、ハイパーバイザーがパフォーマンスに与える影響を検証する場合は、この状態を基準にする必要がありそうだ。

 なお、ハイパーバイザーが存在するかどうかは、PowerShellで「(gcim Win32_ComputerSystem).HypervisorPresent」を実行することで確認できる。

 また、「メモリ整合性」を「オン」にした場合は当然だが、「オフ」の場合であっても、Windows Subsystem for LinuxやWindowsサンドボックス、将来提供予定のAndroidアプリの動作など、仮想化が必須の機能をインストールすると、自動的にハイパーバイザーが有効化され、VBSも有効になる。

ハードウェア要件は満たしているが仮想化機能が有効になっていない
「(gcim Win32_ComputerSystem).HypervisorPresent」でハイパーバイザーの有無を確認。この状態の場合、ハイパーバイザーは介在しない

VBSは有効だがHVCIは無効

 以下のように「仮想化ベースのセキュリティ」が「実行中」となっているものの、「仮想化ベースのセキュリティの実行」が表示されない場合は、VBSそのものは有効(当然ハイパーバイザーも有効)だが、HVCIは無効になっている。

 これは、ハードウェア要件を満たしており、かつWindows 11で、WindowsサンドボックスやHyper-V、WSLなどがインストールされている場合の例となる。

VBSのみ有効になっている
このケースではハイパーバイザーが有効化されている

VBSもHVCIも有効

 VBSもHVCIも有効になっている場合は、以下のように「仮想化ベースのセキュリティ」が「実行中」で、「仮想化ベースのセキュリティの実行」に「ハイパーバイザーによるコードの整合性の強制」と表示される。

VBSとHVCIが有効になっている

 条件を満たしていることを確認できたら、WindowsセキュリティからHVCIを有効化することができる。「Windowsセキュリティ」の「デバイスセキュリティ」から、「コア分離」にある「メモリ整合性」をオンして再起動すればいい。

 なお、ここでドライバのチェックが実施される。HVCI非対応のドライバーがインストールされている場合は、ドライバを更新してからでないとHVCIを有効化できない。

 また、プラットフォームによっては、下記画面のように「メモリアクセス保護」や「ファームウェア保護」の項目も表示される。

コア分離のメモリ整合性をオンにするとHVCIが有効化される

 「メモリアクセス保護」はシステム情報上では「カーネルDMA保護」と表示される項目となる。Thunderboltなどを外部端子からPCIアクセス可能なデバイスでメモリへのダイレクトアクセスを保護するために利用する機能となる。

 一方、「ファームウェア保護」だが、こちらはPCのスタートアッププロセスを保護する機能だ(System Guard Secure Launch)。筆者のテスト環境(富士通 LIFEBOOK U939/B)では、これをオンにするとOSが起動しなくなり、システムの復元を使って復元することになった。オンにする場合は慎重に。

パフォーマンスの違いはわずかだが……

 パフォーマンスに関しては、当初はVBSがゲームなどに大きな影響を与えることが話題になったが、検証によっては差が出ない場合もあり、はっきりとした影響が判断できない。

 本稿でも、「VBS無効」「VBS有効」「VBS+HVCI有効」の3パターンで計測してみたが、値としてはVBS無効が最も良好なものの、実質的には大差ないものと言ってよさそうだ。今回は、ブラウザベースの「WebXPRT 3(PT - WebXPRT (principledtechnologies.com))」と3DMarkのTime Spyを実行したが、このあたりはアプリによるだろう。

VBS無効(ハイパーバイザー無効)、HVCI無効

VBS無効。仮想化機能も何もインストールされていない状態
WebXPRT 3のスコアは「286」。値としてはほんの少しだけ高い
3DMarkのスコアは「13,095」。ほかよりもほんの少しだけ高い

VBS有効(ハイパーバイザー有効)、HVCI無効

VBS有効。HVCIは無効のまま
WebXPRT 3のスコアは「284」。若干スコアが落ちる
3DMarkのスコアは「13,007」。こちらも若干低い

VBS有効(ハイパーバイザー有効)、HVCI有効

VBS有効。コア分離のメモリ整合性をオン
WebXPRT 3のスコアは「284」。HVCI無効時と変化なし
3DMarkのスコアは「12,997」。少し低くなった

 前述したMicrosoftの公式文書によると、以下のような記述があり、HVCIはパフォーマンスと消費電力の影響があることが明記されている。

 HVCIは Windows ハイパーバイザーに依存しているため、メモリの整合性によってもたらされるセキュリティ上の利点には、デバイスのパフォーマンスと電力のトレードオフがあります。

 特にパフォーマンスに影響を受けやすいデバイス (ゲーム用PCなど)には、HVCIを無効にした場合があります。全体的なデバイスのセキュリティに与える影響を考慮して、これらのシナリオを十分にテストすることをおすすめします。

 海外のレビューなどでは、世代の古いプロセッサほどこの影響が出やすい結果が報告されているので、ゲーミング環境などでほんのわずかなパフォーマンス低下もさせたくないのであれば、オフにすることもありだろう。