Windows Vistaには数多くのセキュリティ機能と安全性機能が新たに追加されており、そのほとんどは以前のMicrosoft Windowsオペレーティング システムリリースでは利用できません。
2002年初頭、マイクロソフトが「信頼できるコンピューティング」イニシアチブを発表して以来、Windows Vistaを以前のバージョンよりも安全なオペレーティングシステムにするために、多大な努力が払われてきました。マイクロソフトは社内で「設計段階からセキュア、デフォルトでセキュア、導入段階からセキュア」という理念を掲げ、「セキュリティ開発ライフサイクル」 [ 1 ]を採用しました。Windows Vistaの新しいコードはSDL手法を用いて開発され、既存のコードはすべてレビューとリファクタリングによってセキュリティが強化されました。
Windows Vista で新しいセキュリティと安全性のメカニズムが導入されている具体的な領域としては、ユーザー アカウント制御、ペアレンタル コントロール、ネットワーク アクセス保護、組み込みのマルウェア対策ツール、新しいデジタル コンテンツ保護メカニズムなどがあります。
ユーザー アカウント制御は、管理者権限を必要とする操作を許可する前にユーザーの同意を求める新しいインフラストラクチャです。この機能により、ほとんどのアプリケーションで高い権限が必要ないため、管理者権限を持つユーザーを含むすべてのユーザーが既定で標準ユーザー モードで実行されます。新しいソフトウェアのインストール、システムまたはセキュリティ設定の変更など、管理者権限が必要な操作を実行しようとすると、Windows はユーザーに操作を許可するかどうかを確認します。ユーザーが許可を選択した場合、操作を開始するプロセスは、続行するために高い権限のコンテキストに昇格されます。標準ユーザーはプロセスを昇格させるために管理者アカウントのユーザー名とパスワードを入力する必要がありますが (肩越しに認証情報を入力する)、管理者は同意のみを求めるプロンプトを表示するか、資格情報を求めるかを選択できます。ユーザーが [はい] をクリックしない場合、30 秒後にプロンプトは拒否されます。
UAC は、セキュア デスクトップモードで資格情報を要求します。このモードでは、画面全体がフェードアウトし、一時的に無効になり、昇格 UI のみが表示されます。これは、昇格を要求するアプリケーションによる UI やマウスのなりすましを防ぐためです。セキュア デスクトップへの切り替え前に昇格を要求するアプリケーションにフォーカスがない場合、タスクバーのアイコンが点滅し、フォーカスされると昇格 UI が表示されます(ただし、悪意のあるアプリケーションが気づかずにフォーカスを取得することを防ぐことはできません)。
セキュアデスクトップでは最高権限のシステムアプリケーションのみ実行が許可されるため、ユーザーモードアプリケーションはデスクトップ上にダイアログボックスを表示できません。そのため、昇格同意を求めるプロンプトは正当なものと安全に想定できます。さらに、これは、許可されていないプロセスが高権限プロセスにメッセージを送信するのを防ぐことで、Windowsのプロセス間メッセージを傍受して悪意のあるコードを実行したりユーザーインターフェイスを偽装したりするシャッター攻撃からも保護します。高権限プロセスにメッセージを送信するプロセスは、UACを介してより高い権限コンテキストに昇格する必要があります。
ユーザーが管理者権限で実行することを前提に作成されたアプリケーションは、以前のバージョンのWindowsでは、制限付きユーザーアカウントから実行すると問題が発生していました。これは多くの場合、マシン全体またはシステムディレクトリ(Program Filesなど)やレジストリキー(特にHKLM)への書き込みを試みることが原因でした。[ 2 ] UACは、ファイルとレジストリの仮想化を使用してこの問題を軽減しようとします。これは、書き込み(およびそれに続く読み取り)をユーザープロファイル内のユーザーごとの場所にリダイレクトします。たとえば、アプリケーションが「C:\program files\appname\settings.ini」に書き込もうとし、ユーザーがそのディレクトリへの書き込み権限を持っていない場合、書き込みは「C:\Users\username\AppData\Local\VirtualStore\Program Files\appname\」にリダイレクトされます。
BitLocker(旧称「セキュアスタートアップ」)は、システムボリュームのディスク全体を暗号化する機能です。コマンドラインユーティリティを使用することで、追加のボリュームを暗号化することも可能です。BitLocker は、USB キーまたはTCG 仕様のTrusted Platform Module (TPM) バージョン 1.2 を使用して暗号化キーを保存します。これにより、Windows Vista を実行しているコンピューターが正常な状態で起動することが保証され、不正アクセスからデータが保護されます。[ 3 ]ボリューム上のデータは、フルボリューム暗号化キー (FVEK) で暗号化され、さらにボリュームマスターキー (VMK) で暗号化されてディスク自体に保存されます。
Windows Vistaは、TPMの使用と管理のためのAPI、コマンド、クラス、およびサービスのセットを提供することで、TPM 1.2のネイティブサポートを提供する最初のMicrosoft Windowsオペレーティングシステムです。[ 4 ] [ 5 ] TPMベースサービスと呼ばれる新しいシステムサービスは、デバイスをサポートするアプリケーションを構築したい開発者がTPMリソースにアクセスして共有することを可能にします。[ 6 ]
Windows Vista の暗号化ファイル システム (EFS) は、システムのページ ファイルとユーザーごとのオフライン ファイルキャッシュを暗号化するために使用できます。EFS はエンタープライズ公開キー インフラストラクチャ(PKI)との統合が強化され、PKI ベースのキー回復、 EFS 回復証明書によるデータ回復、またはこれら 2 つの組み合わせの使用がサポートされています。また、EFS にスマート カードを要求する、ページ ファイルの暗号化を強制する、EFS の最小キー長を規定する、ユーザーのドキュメント フォルダの暗号化を強制する、自己署名証明書を禁止する、といった新しいグループ ポリシーも用意されています。EFS 暗号化キー キャッシュは、ユーザーがワークステーションをロックしたとき、または一定時間経過後にクリアできます。
EFS キー再生成ウィザードを使用すると、ユーザーは EFS 用の証明書を選択し、新しく選択した証明書を使用する既存のファイルを選択して移行できます。証明書マネージャーでは、EFS 回復証明書と秘密鍵をエクスポートすることもできます。初回使用時に、バルーン通知によって EFS キーをバックアップするようユーザーに通知されます。キー再生成ウィザードは、既存のインストール環境のユーザーをソフトウェア証明書からスマートカードに移行するためにも使用できます。また、回復時に管理者またはユーザー自身がこのウィザードを使用することもできます。この方法は、ファイルを復号化して再暗号化するよりも効率的です。
Windows Vistaでは、企業環境における Windowsファイアウォールの柔軟性に関する多くの懸念に対処するために、ファイアウォールが大幅に改善されました[ 7 ] 。
Windows Vistaには、Microsoftのスパイウェア対策ユーティリティであるWindows Defenderが搭載されています。Microsoftによると、このユーティリティは「Microsoft AntiSpyware」から名称が変更されたとのことです。これは、市場に出回っている他の無料製品と同様に、システム内のスパイウェアをスキャンする機能だけでなく、スパイウェアによって引き起こされる可能性のあるWindowsの一般的な領域の変更を監視するリアルタイムセキュリティエージェントも搭載しているためです。これらの領域には、Internet Explorerの設定とダウンロード、自動起動アプリケーション、システム構成設定、Windows Shell拡張機能などのWindowsアドオンが含まれます。
Windows Defenderには、インストールされているActiveXアプリケーションを削除し、スタートアッププログラムをブロックする機能も含まれています。また、 SpyNetネットワークも組み込まれており、ユーザーはMicrosoftと通信してスパイウェアと見なすものを送信し、許容されるアプリケーションを確認することができます。
Windows Vistaでは、管理者はグループポリシーを介してハードウェア制限を適用し、ユーザーがデバイスをインストールできないようにしたり、デバイスのインストールを定義済みのホワイトリストに制限したり、リムーバブルメディアやデバイスのクラスへのアクセスを制限したりできます。[ 8 ] [ 9 ]
Windows Vista には、管理者がドメインに属していない標準ユーザー アカウントのコンピュータ アクティビティを監視および制限するためのさまざまなペアレンタル コントロールが含まれています。ユーザー アカウント制御は、管理上の制限を適用します。機能には、次のものがあります。Windows Vista Web フィルタ(すべての Web ブラウザで機能するようにWinsock LSPフィルタとして実装されており、コンテンツのカテゴリまたは特定のアドレスに基づいて Web サイトへのアクセスを禁止します (すべてのファイルのダウンロードをブロックするオプション付き))、時間制限(管理者が指定した日時に標準ユーザーがログインできないようにします (また、その時間帯に既にログインしている制限付きアカウントはロックされます)) 、ゲーム制限(管理者は、名前、コンテンツ、またはEntertainment Software Rating Board (ESRB)などのビデオ ゲーム コンテンツ評価システムで定義された評価に基づいてゲームをブロックできます。コンテンツの制限は評価制限よりも優先されます (たとえば、Everyone 10+ (E10+ )ゲームは一般に実行が許可されますが、アクティビティ レポートでは、制限された標準ユーザー アカウントのアクティビティを監視および記録します。
Windows ペアレンタル コントロールには、開発者がバンドルされた機能を独自の機能に置き換えるための アプリケーション プログラミング インターフェイス(API)を備えた拡張可能なオプション セットが含まれています。
Windows Vista は、アドレス空間レイアウトのランダム化(ASLR) を使用して、システム ファイルをメモリ内のランダムなアドレスに読み込みます。[ 10 ]既定では、すべてのシステム ファイルは 256 個の可能な場所のいずれかにランダムに読み込まれます。他の実行可能ファイルでASLR を使用するには、Windows 実行可能ファイルのファイル形式であるPortable Executable (PE)ファイルのヘッダーのビットを明示的に設定する必要があります。このような実行可能ファイルでは、割り当てられるスタックとヒープはランダムに決定されます。システム ファイルをランダムなアドレスに読み込むことで、悪意のあるコードが特権システム関数の場所を知ることが困難になり、それらの関数を予測どおりに使用する可能性が低くなります。これにより、RETURN-TO-LIBCバッファー オーバーフロー攻撃を防ぐことで、ほとんどのリモート実行攻撃を防ぐことができます。
ポータブル実行形式が更新され、例外ハンドラのアドレスをヘッダーに埋め込むことができるようになりました。例外がスローされるたびに、ハンドラのアドレスが実行ファイルヘッダーに格納されているアドレスと照合されます。一致した場合は例外が処理され、一致しない場合はランタイムスタックが侵害されたことを示し、プロセスが終了します。
関数ポインタは乱数とのXOR演算によって難読化されているため、実際に指し示されているアドレスを取得することは困難です。ポインタに使用される難読化キーの取得は非常に困難であるため、ポインタを手動で変更することも困難です。したがって、関数ポインタを不正に使用しようとするユーザーが実際に使用することは困難です。また、ヒープブロックのメタデータも乱数とのXOR演算によって取得されます。さらに、ヒープブロックのチェックサムが保持されており、これは不正な変更やヒープの破損を検出するために使用されます。ヒープの破損が検出されると、エクスプロイトの成功を防ぐためにアプリケーションが強制終了されます。
Windows Vistaバイナリには、スタックオーバーフロー検出のための組み込みサポートが含まれています。Windows Vistaバイナリでスタックオーバーフローが検出されると、プロセスは強制終了され、エクスプロイトの実行に利用できなくなります。また、Windows Vistaバイナリはバッファをメモリの上位に配置し、ポインタや指定されたパラメータなどの非バッファ領域を下位メモリに配置します。そのため、実際にエクスプロイトを実行するには、バッファアンダーランを発生させてこれらの領域にアクセスする必要があります。ただし、バッファアンダーランはバッファオーバーランよりもはるかに少ない頻度で発生します。
Windows Vista では、プロセスの整合性レベルを設定するための必須整合性制御が導入されています。整合性の低いプロセスは、整合性の高いプロセスのリソースにアクセスできません。この機能はアプリケーションの分離を強制するために使用されています。これにより、整合性レベルが中程度のアプリケーション (標準ユーザー コンテキストで実行されているすべてのアプリケーション) は、整合性レベルが高いシステム レベル プロセス (管理者モード アプリケーションなど) にはフックできませんが、整合性の低いプロセス (Windows Internet Explorer 7または8)にはフックできます。特権の低いプロセスは、高いプロセス特権のウィンドウ ハンドル検証を実行できず、特権の高いアプリケーション ウィンドウに SendMessage または PostMessage を送信できず、特権の高いプロセスにアタッチするためにスレッド フックを使用できず、特権の高いプロセスを監視するために Journal フックを使用できず、特権の高いプロセスに DLL インジェクションを実行できません。
Windows Vistaは、最新のプロセッサのNX (No-Execute)機能を完全にサポートしています。[ 11 ] DEPは、Windows XP Service Pack 2およびWindows Server 2003 Service Pack 1で導入されました。AMDのAMD64プロセッサではNX(EVP)、 IntelのプロセッサではXD(EDB)として存在するこの機能は、メモリの特定の部分に実行可能コードではなくデータが含まれているというフラグを付けることができ、オーバーフローエラーによって任意のコードが実行されるのを防ぎます。
プロセッサがNXビットをサポートしている場合、Windows Vistaはすべてのプロセスに対してハードウェアベースのデータ実行防止(DEP)を自動的に適用し、一部のメモリページ(ヒープやスタックなど)を実行不可のデータセグメントとしてマークします。これにより、データがコードとして解釈・実行されるのを防ぎます。これにより、エクスプロイトコードがデータとして注入され、実行されるのを防ぎます。
すべてのアプリケーションでDEP を有効にすると、ゼロデイ エクスプロイトに対する耐性が強化されます。ただし、すべてのアプリケーションが DEP に準拠しているわけではなく、一部のアプリケーションでは DEP 例外が生成されます。そのため、32 ビット版の Windows では、DEP はすべてのアプリケーションに既定で強制されるわけではなく、重要なシステム コンポーネントに対してのみ有効になっています。ただし、Windows Vista では、ソフトウェア開発者がシステム全体の互換性強制設定とは関係なく、コードに対して NX ハードウェア保護を有効にできる追加の NX ポリシー コントロールが導入されています。開発者は、アプリケーションの作成時にそのアプリケーションを NX 準拠としてマークすることで、そのアプリケーションがインストールされて実行されるときに保護が強制されます。これにより、NX の既定のシステム互換性ポリシーがオペレーティング システム コンポーネントのみを保護するように構成されている 32 ビット プラットフォーム上のソフトウェア エコシステムで、NX で保護されたコードの割合が向上します。x86-64 アプリケーションの場合、下位互換性は問題にならないため、すべての 64 ビット プログラムに DEP が既定で強制されます。
Windows Vista では、デジタル コンテンツ プロバイダーや企業がデータのコピーを防止できるように、新しいデジタル著作権管理およびコンテンツ保護機能が導入されました。
新しいデジタル著作権管理機能が組み込まれたことは、 Windows Vista に対する批判の原因となってきました。
Windows サービス強化機能は、サービスを区分化することで、1 つのサービスが侵害されても、システム上の他のサービスを簡単に攻撃できないようにします。Windows サービスがファイル システム、レジストリ、ネットワーク[ 14 ]に対して実行することが想定されていない操作を実行できないようにすることで、システムの全体的な攻撃対象領域を減らし、システム サービスを悪用したマルウェアの侵入を防止します。サービスには、サービスごとにセキュリティ識別子(SID) が割り当てられるようになりました。これにより、セキュリティ識別子で指定されたアクセスに従って、サービスへのアクセスを制御できます。サービスごとの SID は、サービスのインストール中にChangeServiceConfig2 API を介して、またはsidtypeSC.EXE動詞を指定したコマンドを使用して割り当てることができます。また、サービスはアクセス制御リスト(ACL) を使用して、自分専用のリソースへの外部からのアクセスを防ぐこともできます。
Windows Vista のサービスも、 Systemアカウントではなく、Local ServiceやNetwork Serviceなどの権限の低いアカウントで実行されます。以前のバージョンの Windows では、システム サービスはローカルにログインしたユーザーと同じログイン セッション (セッション 0) で実行されていました。Windows Vista では、セッション 0 はこれらのサービス用に予約されており、すべての対話型ログインは別のセッションで実行されます。[ 15 ]これは、 Shatter 攻撃と呼ばれる Windows メッセージ パッシング システムの攻撃の一種を軽減することを目的としています。サービスをホストするプロセスには、HKLM\System\CurrentControlSet\Servicesの下のRequiredPrivilegesレジストリ値で指定された権限のみが与えられます。
サービスは、リソースへの書き込み権限をサービスごとに明示的に付与する必要があります。書き込み制限付きアクセストークンを使用すると、サービスによって変更されるリソースのみに書き込み権限が付与されるため、他のリソースへの変更は失敗します。また、サービスにはファイアウォールポリシーが事前に設定されており、正常に機能するために必要な権限のみが付与されます。独立系ソフトウェアベンダーは、Windows サービス強化機能を使用して自社のサービスを強化することもできます。Windows Vistaでは、RPCサーバーで使用される名前付きパイプも強化され、他のプロセスによる乗っ取りを防止します。
安全な認証と対話型ログオンに使用されるグラフィカル識別および認証( GINA ) は、資格情報プロバイダーに置き換えられました。資格情報プロバイダーは、サポートするハードウェアと組み合わせることで、オペレーティングシステムを拡張し、ユーザーが生体認証デバイス(指紋、網膜、または音声認識)、パスワード、PIN、スマートカード証明書、またはサードパーティの開発者が作成する任意のカスタム認証パッケージおよびスキーマを使用してログオンできるようにすることができます。証明書の要件が緩和されているため、スマートカード認証は柔軟です。企業は、すべてのドメインユーザーに対してカスタム認証メカニズムを開発、展開、およびオプションで強制することができます。資格情報プロバイダーは、シングルサインオン(SSO)、安全なネットワークアクセスポイントへのユーザー認証( RADIUSおよびその他のテクノロジを活用)、およびマシンログオンをサポートするように設計されている場合があります。資格情報プロバイダーは、アプリケーション固有の資格情報収集をサポートするようにも設計されており、ネットワークリソースへの認証、ドメインへのマシンの参加、またはユーザーアカウント制御に対する管理者の同意を提供するために使用できます。新しいセキュリティ サービス プロバイダーである CredSSP は、セキュリティ サポート プロバイダー インターフェイスを通じて利用できます。これにより、アプリケーションはユーザーの資格情報をクライアント(クライアント側 SSP を使用)からターゲット サーバー(サーバー側 SSP を使用)に委任できます。CredSSP は、ターミナル サービスでもシングル サインオンを提供するために利用されます。
Windows Vista は、スマートカード、またはパスワードとスマートカードの組み合わせ(二要素認証)を使用してユーザーアカウントを認証できます。Windows Vista は、スマートカードを使用してEFSキーを保存することもできます。これにより、暗号化されたファイルへのアクセスは、スマートカードが物理的に存在する間のみに制限されます。スマートカードを使用してログオンする場合、EFS はシングルサインオンモードで動作し、PIN の入力を求めることなく、ログオンスマートカードを使用してファイルを暗号化します。
Windows XPではワークグループコンピュータに限定されていた高速ユーザー切り替え機能は、Windows Vista以降、ドメインに参加しているコンピュータでも有効にできるようになりました。Windows Vistaでは、Windows Server 2008で導入された読み取り専用ドメインコントローラの認証もサポートされています。
Windows Vista には、暗号化 API: 次世代 (CNG) と呼ばれる暗号化 API の更新機能があります。CNG API は、楕円曲線暗号化(ECC) と国家安全保障局(NSA) Suite Bの一部であるいくつかの新しいアルゴリズムのサポートを含む、ユーザー モードおよびカーネル モードAPIです。CNG API は拡張可能で、カスタム暗号化 API を CNG ランタイムにプラグインするためのサポートを備えています。また、開発者やスマート カード製造業者が必要とする標準的なバックエンド暗号化機能をすべて実装するベースCSPモジュールを含めることで、スマート カードサブシステムと統合されるため、複雑なCSPを作成する必要がありません。Microsoft証明機関はECC 証明書を発行でき、証明書クライアントは ECC および SHA-2 ベースの証明書を登録および検証できます。
失効機能の改善には、オンライン証明書ステータスプロトコル(OCSP)のネイティブサポートが含まれており、リアルタイムの証明書有効性チェック、CRLプリフェッチ、CAPI2診断機能を提供します。証明書の登録はウィザードベースで、ユーザーは登録中にデータを入力でき、失敗した登録や期限切れの証明書に関する明確な情報を提供します。XEnrollライブラリに代わる新しいCOMベースの登録APIであるCertEnrollにより、柔軟なプログラミングが可能になります。資格情報ローミング機能は、ネットワーク内に 保存されているActive Directoryのキーペア、証明書、および資格情報を複製します。ユーザー名とパスワードも保存されます。
Windows Vista では、ネットワーク アクセス保護(NAP) が導入されました。これは、ネットワークに接続または通信するコンピュータが、ネットワーク管理者が設定したシステム正常性の必要なレベルに準拠していることを保証します。管理者が設定したポリシーに応じて、要件を満たさないコンピュータには、警告が表示されアクセスが許可されるか、ネットワーク リソースへのアクセスが制限されるか、アクセスが完全に拒否されます。NAP は、修復サーバーを使用して、非準拠コンピュータにソフトウェア更新プログラムを提供して、ネットワークへのアクセスに必要なレベルにコンピュータ自身をアップグレードすることもできます。準拠しているクライアントには正常性証明書が提供され、クライアントはこれを使用してネットワーク上の保護されたリソースにアクセスします。
Windows Server 2008を実行するネットワークポリシー サーバーは正常性ポリシー サーバーとして機能し、クライアントはWindows XP SP3以降を使用する必要があります。VPNサーバー、RADIUSサーバー、またはDHCPサーバーも正常性ポリシー サーバーとして機能します。
セキュリティと信頼性に関していくつかの具体的な変更が行われました。