Когда вы устанавливаете ПО, ваш ПК часто знает, кто его сделал — не потому что ПО так говорит, а из-за цифровой подписи. Для драйверов ядра эта подпись не опциональна.
Что такое подписывание кода
Подписывание кода прикрепляет цифровую подпись к ПО с помощью сертификата, выданного разработчику. Подпись делает две вещи: она идентифицирует, кто опубликовал ПО, и доказывает, что файл не был изменён с момента подписания. Если даже один байт изменится после, подпись больше не совпадает. Это печать, выявляющая вмешательство, с именем на ней.
Почему именно драйверы должны быть подписаны
Обычные приложения работают с ограниченными правами, но драйвер работает в ядре, с полным контролем системы. Вредоносный код на этом уровне катастрофичен. Из-за этого современная Windows требует, чтобы драйверы режима ядра были подписаны — и подписаны способом, которому она конкретно доверяет. Неподписанный код ядра по замыслу очень трудно загрузить. Правило существует, потому что ядро — это именно то место, где меньше всего хочется неизвестного кода.
От чего это защищает
Подписывание драйверов поднимает планку и для злоумышленников, и для читов. Читу уровня ядра нужен код уровня ядра, а коду уровня ядра нужно удовлетворить требованию подписи. Это реальное препятствие — оно означает, что чит не может просто загрузить произвольный драйвер. То же требование — причина, по которой легитимные античиты вкладываются в правильно подписанные драйверы.
Где модель может дать сбой
Подписывание не идеально. Подписанному драйверу доверяют из-за того, кто его подписал, и потому что он не изменён — но он не автоматически безопасен. Легитимно подписанный драйвер, содержащий уязвимость, всё ещё подписан, и злоумышленники злоупотребляли именно этим: беря настоящий, подписанный, но дефектный драйвер и используя его как инструмент. Подпись доказывает происхождение и целостность; она не доказывает, что код хорошо написан.
Вывод
Подписывание кода доказывает, откуда взялось ПО и что оно не было подделано, и Windows требует это для драйверов ядра, потому что ядро — место с наивысшими ставками для запуска кода. Это сильная защита — но её предел реален: подпись ручается за происхождение и целостность, а не за отсутствие дефектов.
