Windows 11のドライバーの署名要件は、そこにある最高の対消費者セキュリティ機能の1つです

世界で最もよく使用されている消費者デスクトップオペレーティングシステムであるWindows 11には、間違いなく問題があります。しかし、これらの問題にもかかわらず、多くのユーザーがWindows 10にできるだけ長くコミットするか、代わりにLinuxにジャンプすることさえ見られた不快な追加に関係なく、それは会社のオペレーティングシステムの最も洗練されたバージョンです。しかし、Windowsには常に私を悩ませてきた特定の側面があり、オペレーティングシステムがそれらをロードする前にドライバーをデジタル署名することを要求するというマイクロソフトの長年のポリシーです。
簡単に言えば、ドライバーは低レベルのコード(多くの場合、オペレーティングシステムのカーネルで実行されている)であり、ハードウェアやソフトウェアがWindowsと対話することができます。署名されたドライバーには、信頼できる当局(Microsoft自身の証明書や過去にはMicrosoftが認可された認証局など)からの暗号化署名が含まれています。このドライバーの署名執行は数十年にわたって進化し、その過程で必須の門番になり、二重の性質を持っています。
一方では、マルウェアがこのような深いレベルで実行されるのをブロックすることでセキュリティを大幅に改善することは否定できません(とにかく適切な証明書なしで、盗まれる可能性があります)が、一方ではユーザーの制御を制限し、Microsoftのルールへの準拠を要求します。ユーザーの自由には敵対的ですが、明確な利点もあります。 Windowsの最高のセキュリティ機能の1つですが、その存在は本質的に反消費者です。
ドライバーの署名とは何ですか?
彼らには長い歴史があります

ドライバーの署名は、Microsoftのコード整合性セキュリティ機能の一部であり、Windows Vista時代に最初に導入され、Windows 10、バージョン1607で必須になりました。コンセプトは簡単です。Windowsカーネルで実行されるコード(「リング0」と呼ばれる)は、信頼できる権限から有効なデジタル署名を運ぶ必要があります。 Microsoftの公式文書によると、コードの整合性は、「メモリにロードされるたびにドライバーまたはシステムファイルの整合性を検証することにより、オペレーティングシステムのセキュリティを改善します」、および64ビットバージョンのWindowsでは、「カーネルモードドライバーにデジタル署名する必要があります。」実際には、これは、Windowsが認識された証明書で署名されていないドライバーをロードすることを拒否することを意味します。
他のオペレーティングシステムと同様に、カーネル(ntoskernel.exe、またはWindows NTカーネル)は、最高の特権を持つOSのコアであるため、この地域での実行を許可されていないコードをブロックすることが重要です。デジタル署名により、ドライバーが特定された開発者によって公開され、それ以来改ざんされていないことが保証されます。署名されていないまたは悪意のある変更されたドライバーは、デフォルトのポリシーの下でもインストールされません。セキュリティの観点からは、これは消費者と企業を同様に保護する良いことです。
実際には、これは合法的なハードウェアベンダーと開発者がドライバーの署名プロセスを経て、最新のWindowsで拡張検証証明書を取得し、承認のためにドライバーをMicrosoftに提出することが多いことを意味します。コードがこの承認なしにカーネルで実行しようとすると、「このデバイスに必要なドライバーのデジタル署名をWindowsを検証できない」という線に沿ったエラーが表示されます。これにより、マルウェアがルートキットまたは悪意のあるドライバーをインストールしてシステムの完全な制御を獲得する攻撃のクラス全体が防止されます。最新の64ビットウィンドウでは、デバイスドライバーのロードは、本質的にカーネルで任意のコードを実行する唯一のサポートされている方法であり、これは署名のない実行可能ファイルのために完全に無効になっています。
管理者はどうですか?まあ、そのレベルの特権を持つアカウントでさえ免除されていません。あなたが誰であろうと、64ビットのウィンドウに署名されていないドライバーをロードすることはできません。それを無効にする唯一の方法は、「ドライバーの署名施行」ブートオプションを使用することです。これは、次のブートでリセットされるか、BCDEDITを使用してチェックを完全に無効にします。マイクロソフトが置くセーフティネットで、コンピューターの所有者でさえ渡るべきではありません。
Microsoftは長年にわたって要件を強化してきました
それはすべて、シンプルなドライバーの検証者から始まりました

スパイウェア、ルートキット、OSの安定性に対する懸念が高まっている中、マイクロソフトの強制的なドライバー署名への道が2000年代半ばに始まりました。 Windows 2000から始めて、Driver Verifierは、Windows XPの発売と一致するGUIで更新される前に、違法機能のドライバーをテストし、バグを検出するために使用できるコマンドラインプログラムでした。当時、ドライバーの署名は存在していましたが、厳密には必要ありませんでしたが、グループポリシーオプションは、インストールを完全に許可したり、ユーザーに警告したり、インストールを許可するか、静かにインストールするように設定できます。
これは、WindowsのX64エディションで変更されました。 Windows Vista(および限られた形式のWindows XP X64エディションも、証明書を自己署名できますが)から始めて、64ビットWindowsシステムは、PatchGuardと非公式に呼ばれるカーネルパッチ保護も含まれるより広範なセキュリティイニシアチブの一部として、カーネルモードドライバーに署名する必要がありました。 Vista X64での必須の署名の導入は当時議論の余地がありましたが、Microsoftの述べられている目的は、マルウェアのカテゴリ全体を排除することであり、当時のいくつかのレポートによると、DRMを保護しました。
ドライバーの署名執行が多くの業界の関心と一致することは秘密ではありません。また、当時、マイクロソフトが企業にドライバーを配布するライセンスの支払いを強制することができることも意味しました。それ以外の場合、それらのドライバーは単にほとんどのマシンにインストールしません。それ以来、要件はより厳格になり、すでに述べたように、Windows 10バージョン1607は、すべてのドライバーをMicrosoftによって証明する必要があるという要件を実施しました。
新しいシステムでデフォルトでUEFIセキュアブートとTPMを必要とするWindows 11は、ブートプロセスとドライバーが信頼できるようにすることで2倍になります。本質的に、Modern Windowsには、どの低レベルのコードが実行されるかを示す中央当局(Microsoft)があります。その結果、攻撃者が浸透するのがはるかに困難なターゲットとなり、WindowsプラットフォームのゲートキーパーとしてMicrosoft(および少数の証明書ベンダー)を便利に配置します。
Microsoftは、どんな犠牲を払ってもカーネルを保護したいと考えています
それが定期的な開発者がそれを使用できないことを意味していても、

明確にするために、ドライバーの署名執行により、Windowsのセキュリティが大幅に改善されたという強力なケースがあります。署名されていないドライバーをブロックすることにより、RootKitsやカーネルレベルのマルウェアなどのあらゆる種類のデジタル攻撃をブロックすることで、それ以外の場合はウイルス対策ソフトウェアから隠すことができます。過去には、最も高度なマルウェアの多くは、メモリにアクセスしたり、深いレベルでシステムを変更するために、ドライバーとして動作しようとしていました。今日、マルウェアに盗まれたデジタル証明書が盗まれていないか、漏れたデジタル証明書がない場合、完全にパッチした64ビットWindowsシステムにドライバーをロードすることはできません。署名されていないドライバーがブートで見つかった場合、システムは単に起動しません。
オンラインゲーム用の最新のアンチチートシステムは、Windows’driverの署名要件の主要な受益者にもなりました。多くの競争力のあるタイトルでは、より高度なチート開発者の多くが、ユーザーモードアンチチートツールによる検出を避けるために、カーネルモードでチートプログラムを実行しようとします。これが、簡単なチート、Faceit、Riot Vanguard、およびさらに多くのアンチチートソリューションがすべて、アンチチートスイートの一部として独自のカーネルドライバーをインストールする理由です。これらのアンチチートは、管理者ユーザーの上にあるレベルの特権で動作します(管理者が署名のないドライバーをインストールできないことを覚えておいてください)。ドライバーの署名は、開発者がゲームを中心に構築するこの保護堀の中核部分です。 Windowsは適切に署名されていないドライバーを拒否するため、Cheat Developersはカスタムカーネルドライバーを構築して気まぐれにロードしてアンチチートをバイパスすることさえできません。
これに応じて、チートプロバイダーとマルウェア開発者は、ドライバーの執行の有効性を証明する抜け穴を探しています。 1つの一般的な手法は、BYOVDとして知られているか、自分の脆弱なドライバーを連れてきます。攻撃者は、セキュリティホールを知っている既に署名されたドライバーを見つけます。正当なドライバーはロードされ、Windowsに受け入れられ、その後、カーネルでコードを実行するためにその脆弱性が悪用されます。そのような例の1つは、レノボマッパードライバーを乱用し、署名のないチートドライバーを展開し、RiotのVanguardが実施したTPMチェックを無効にします。
これらはすべて、直接メモリアクセス(DMA)攻撃とチートにも関連しています。 DMAを使用すると、ハードウェアデバイスがシステムメモリに直接アクセスし、CPUをバイパスし、セカンダリコンピューターがゲームのメモリから読み取りまたは書き込みできるようにすることができます。ただし、WindowsにはカーネルDMA保護があり、IOMMUを使用して不正なPCIEデバイスがメモリにアクセスするのをブロックします。 DMAの再マッピング互換ドライバーを備えたデバイスのみが可能になり、このドライバー機能はMicrosoftの署名執行の一部として保護されています。これをセキュアなブートと組み合わせることで、Windowsが起動する前にブートタイムマルウェアやチートローダーが自分自身を挿入するのを防ぎ、TPMベースのブートの証明と、ユーザー制御のPCであることを考慮して、かなり安全な環境です。
このテクニックは、ゲームのチートに固有のものでもありません。システムセキュリティ機能を無効にし、悪意のあるコードをカーネルにロードするためにドライバーを乱用した多くのランサムウェアの例があり、基本的に攻撃面をオペレーティングシステムからマイクロソフトが審査して署名した低レベルのコードにシフトします。マルウェア開発者は、ユーザーのコンピューターに既にインストールされている既存のドライバーからピギーバックする必要があります。つまり、非常に一般的なドライバーの脆弱性を見つけるか、ユーザーが脆弱性のあるソフトウェアのインストールをトリックすることを意味します。
ドライバーの署名執行は、全体的なセキュリティアーキテクチャの単なるCOGであり、単独ではすべてを止めるだけでは不十分です。しかし、これらの他のテクノロジーと組み合わせて、Microsoftも使用しているため、バーをかなり上げていることは否定できません。盗まれた証明書は、発見および取り消される前に借りた時間に実行され、ハードウェアの回避策もしばしばつかの間です。
なぜドライバーの署名執行は消費者ですか?
それはあなた自身のハードウェアであなたができることと実行できないものに帰着します
出典:ベンジャミンゼマン
ドライバーの署名がセキュリティに非常に適している場合、何がそれを消費者にしているのですか?批判は、このセキュリティメカニズムが本質的にユーザーの自由と自分のシステムに対する制御を制限しているという事実に由来しています。セキュリティとオープン性の間には暗黙のトレードオフがあり、マイクロソフトは後者ではなく前者に大きく傾いています。同社は、オペレーティングシステムがMicrosoftによって審査された低レベルのコードのみを信頼するモデルを選択しました。これは、業界の関心と一致して認定に合わせて資金を調整する方法で本質的に集中的に権限を集中化します。
ドライバーの署名検証を無効にすることに戻り、自分のハードウェアであろうと、所有しているハードウェアのために、個人的な使用のための独自のカスタムドライバーを開発することは迷惑です。 「ドライバーの署名施行を無効にする」起動オプションで起動するか、完全性チェックを完全に無効にするか、Windowsのテスト署名モードを有効にする必要があります。どちらも使用するのに特に便利ではありません。 「所有権」と同じ方法でコンピューターを所有していません。カーネルレベルでは、Microsoftはコントロールを保持します。
同様に、大企業またはリソースのある開発者のみが、ドライバーの署名要件を簡単に満たすことができます。ドライバーを最新のWindowsバージョンに適切に署名するには、開発者はEVコード署名証明書を取得する必要があります。 Notepad ++は、このコード署名の大失敗の有名な例であり、Microsoftの認定料金をMicrosoftに支払うことの拒否の影響を受けるユーザーレベルのプログラムを見ています。同じ概念もドライバーにも当てはまります。

ただし、この要件により、通常の消費者が署名されたドライバーアップデートを受け取ったことのない古いハードウェアを使用することもできません。 Windows 11コンピューターに接続する古いPC周辺機器があるとしましょう。そのドライバーがWindows XP時代の出身で、デジタル署名がなかった場合、それは完全にブロックされます。署名の執行を無効にし(すべての問題をもたらす)、ハードウェアを放棄することができます。過去にドライバーを変更することはできましたが、DIYソリューションは、関連するコストと複雑さを考えると、最近ではほとんど前代未聞です。
実際、コミュニティのメンバーが問題を自分の手に取り入れても、物事はすぐに裏目に出ることがあります。開発者は、独自のアプリケーションでシステムファンを制御するために使用できる2つの既知のドライバーがあります:Inpout32とWinring0。前者はRiot’s Vanguardとの対立であり、多くの人が後者を選び、それはファンコントロールのようなツールのバックボーンでした。しかし、2020年に、Winring0が数年後にWindowsのディフェンダーによってフラグが付けられてブロックされていることを見た大規模な脆弱性があり、その結果、水中で死んでいるアプリケーションが発見されました。
この問題は、マイクロソフトが受け入れる有効なドライバーの開発と維持に関して、コストの問題によって悪化します。これは、問題を綴る、The Vergeの記事からの一節です。
SignalRGBの創設者であるTimothy Sunは、セキュリティリスクはより複雑であると言います。 「WinRING0はシステム全体にインストールされているため、ユーザーのシステムに最初にインストールされたバージョンに依存していることに気付きました。これにより、他のアプリケーションが潜在的に脆弱なバージョンをインストールしたかどうかを確認することが非常に困難になり、最善の努力にもかかわらずユーザーを効果的にリスクにさらします」と彼は言います。
そのため、彼の会社は代わりに独自のRGBインターフェイスに投資し、最終的には2023年にWinring0を捨てて、独自のSMBUSドライバーを支持しました。しかし、太陽を含む私が話した開発者は、それが高価な提案であることに同意します。
「私はそれをシュガーコートしません - 開発プロセスは挑戦的であり、重要なエンジニアリングリソースを必要としました」とSunは言います。 「小規模なオープンソースプロジェクトには、そのルートに行く財政的能力も、Microsoft Kernelの開発エクスペリエンスもありません」とOpenRGBのAdam Honseは言います。
Wingring0の開発者であるOpenLibsysは最近では非アクティブに見えますが、同じドライバーが更新された場合、Microsoftによって会社のより厳しいガイドラインに署名することで承認されることはまずありません。マイクロソフトはまた、それに依存しているアプリケーションの数を知っていました(Razer Synapse、Steelseries Engineなどもそれを使用しました)、2025年にそれをxする前にさらに数年の人生を与えました。
Linuxはどうですか?
非常に異なる精神

Windowsとは異なり、Linuxはオープンシステムです。カーネルで実行できるものを決定する単一の権限はありません。 Linuxディストリビューションには、モジュールの署名を実施する機能があります(特にセキュアブートが有効になっている場合、一部のディストリビューションはカーネルモジュールにキーによって署名される必要があります)が、最終的には、ユーザーはカーネルを再コンパイルしたり、それらのチェックを無効にしたりできます。これは、Windows上にあるのと同じ方法で、Anti-CheatソフトウェアをLinuxに展開できない多くの理由の1つです。
Linuxでは、ルートレベルのアクセスを備えた詐欺師は全力です。カーネルを再コンパイルしてアンチチートフックを取り外したり、中央の署名機関を停止するために独自のカーネルモジュールをロードしたりすることができ、多くの詐欺師が単に検出を避けるのに十分な方法として/ルートディレクトリのルートとしてチートを実行したことを考えると、ゲーム開発者がLinuxにアンチチートソフトウェアを移植することにあまりにも熱心ではない理由を見ることができます。ゲームがルートアクセスを主張したとしても(これは間違いなくWindowsのアンチチートに相当するものよりも悪いでしょう)、「Fakeroot」環境でそれを実行して、ゲームがそれがそうでないときにルートアクセスがあると考えるようにすることができます。
これはすべて、Linuxのオープンな性質は、均等に特権的な犯罪によって防御的な尺度を打ち消すことができることを意味すると言うことであり、この現実はLinuxゲームの現在の状態に反映されています。多くの人気のあるタイトルはLinuxで再生可能ですが(多くの場合、Windowsよりもはるかに優れています)、多くの競争力のあるゲームは、結果としてLinuxで実行することを拒否します。これらの同じ概念もマルウェアに適用されますが、悪意のあるソフトウェアに関してはLinuxのランドスケープは非常に異なります。

Microsoftのドライバーの署名執行は、企業にとって魅力的です。カーネルをロックダウンすることにより、Windowsは、これらの制限なしに、よりオープンなシステムでは単純に達成できないセキュリティと制御(チート、マルウェアなどと戦うため)を有効にします。多くのゲーマーや企業にとって、そのトレードオフは、たとえそれがユーザーのセグメントを苛立たせても、それだけの価値があることがよくあります。 Linuxユーザーは比類のないコントロールを享受していますが、その自由は、クライアント側のアンチチートメカニズムが通常無駄になることを意味します。 LinuxマシンでWindowsがこのエリアにあるセキュリティメリットを取得することも、そもそもWindowsを離れたいのと同じ制約を再現することになります。
理由に関しては、Linuxユーザーは中央認証局を持っていないにもかかわらず、まだ安全ですか?答えは無数の理由で見つかります。 LinuxのAdvancedユーザー許可システム、オープンソースコミュニティは、表示されるように脆弱性を迅速にパッチングする(XZ-UTilsのようにいくつかの主要なものがスリップスルーした場合でも)、市場シェアの減少により興味深いターゲットが少なくなり、ソフトウェアパッケージが主に審査リポジトリを通じてインストールされています。
Freedomは常にセキュリティと互換性があるとは限りません
LinuxとWindowsは大きく異なります

Microsoftのドライバーの署名ポリシーは、セキュリティに対して間違いなく効果的です。すべてのカーネルドライバーの署名と審査を要求することにより、Microsoftは低レベルのマルウェアおよび不正行為ツールに対して最も堅牢な消費者OS防御の1つを構築しました。プラットフォームとしてのWindowsは、ユーザーとソフトウェアが信頼できる信頼できるオペレーティングシステムを維持することができます。そのため、それは「最良の」セキュリティ機能の1つである理由です。なぜなら、それは非常にうまく機能し、システムの保護に大きな違いをもたらしているからです。
しかし、そのセキュリティは消費者に犠牲を払っています。それはコントロールを奪い、それを中央当局に渡し、あなたのオペレーティングシステムが何をするかを完全に制御できないことは、オープンなコンピューティングを大切にする多くの人と正しくありません。ある意味では、Windows 11は、カーネルコードに関しては、ユーザーを信頼されていない参加者のように少し扱います。
セキュリティの観点から、この特定の機能はリスク削減の優れた例です。攻撃の最も危険な手段の1つを大幅に閉鎖しますが、消費者の権利の観点からは、Microsoftが行っており、許可していないことの要請に備えているため、独自のハードウェアを使用するために機能をレンタルしているように感じることができます。この概念がオペレーティングシステムを「保護」するように拡張された場合はどうなりますか?デブロートツールとスクリプトが、マイクロソフトがシステムを変更するときに満足していない変更を加えるとしたらどうでしょうか?
平均的なユーザーにとって、ドライバーの署名を強制することは大きな動きです。間違いなく。しかし、オープンソースの開発者が独自のソフトウェアを開発して他のソフトウェアと共有することに関連するコストのおかげで、プラットフォームから追放されていることはあまり感じられません。また、Windowsが私がそれとインターフェイスする主な方法である限り、私が本当に自分のハードウェアを所有していないかのように感じることは素晴らしいとは思いません。
*÷ソースリンク:
可能な限りWindows 10にコミット、代わりにLinuxにジャンプします、 ドライバーをMicrosoftに提出する、 、マルウェアの全体のカテゴリ、およびその時点でのいくつかのレポートによると、DRMを保護する uefi secure boot]()、riot vanguard、 lenovo mapperドライバーを乱用、 dma再マッピング対応ドライバー、 notepad ++は有名な例です、 verge、独自のハードウェアを使用するために機能をレンタルする()、