И еще про подписывание драйверов на Windows 10
Сначала только факты.
1. Начиная с Windows 10 и Windows Server 2016 (vNext), все драйверы режима ядра
должны быть подписаны Microsoft, иначе такие драйверы просто не будут загружаться
на этих системах.
2. Подписывание выполняется через WHDC-портал (Windows Hardware Dev Center Portal),
либо через специальный веб API. Процесс называется submission. В обоих случаях и для
регистрации на WHDC-портале, и для подписывания требуется валидный сертификат,
выданный Symantec или DigiCert. Подписывание драйвера утилитой signtool не достаточно
для его запуска на Windows 10 и Windows Server 2016.
3. По истечении 90 дней после официального релиза Windows 10 (29 июля 2015 года)
портал будет принимать только submission, подписанные EV-сертификатами Symantec или
DigiCert. В будущем обещают добавить поддержку EV-сертификатов от GlobalSign и
других центров. Standard-сертификаты поддерживаться не будут.
4. Изменения не затрагивают драйверы, подписанные до 29 июля 2015 года — они будут
работать на Windows 10, как и на предыдущих версиях Windows. Цифровые подписи с
сертификатами, которые были выданы до 29.07.2015, также будут работать.
5. В Windows Server 2016 любой драйвер режима ядра должен будет в обязательном
порядке проходить соответствующие своему классу HLK-тесты (Hardware Lab Kit Tests).
6. Современные EV-сертификаты поддерживают только SHA-256.
Поддержка SHA-256 в ядре есть только начиная с Windows 8. Это значит, что на предыдущих
системах, где действует политика «Kernel Mode Code Signing Policy» — т.е., 64-битные
Windows Vista, Windows 7, Windows Server 2008 и Windows Server 2008 R2, — драйверы,
подписанные таким сертификатом, загружаться не будут. Исключение сделано для Windows 7 и
Windows Server 2008 R2, там потребуется установить специальный апдейт:
Для Windows Vista и Windows Server 2008 такого апдейта нет и не будет.
Также могут быть проблемы и на Windows XP и Server 2003 при установке драйвера:
невозможно проверить подпись SHA-2 -> выдача нежелательных сообщений -> ошибки
инсталляции и т.п.
7. «SHA-1 Deprecation Policy». Алгоритм хэширования SHA-1, который используется в цифровых
подписях, в настоящее время считается небезопасным и уже некоторое время ведутся попытки
отказаться от него в пользу SHA-2. С 01.01.2016 Microsoft запрещает участникам программы
«Microsoft Root Certification Program» выдавать сертификаты с поддержкой SHA-1.
Скорее всего, будут сделаны некоторые исключения для поддержки совместимости со старыми
системами, но Microsoft оставляет за собой право в любой момент прекратить поддержку SHA-1,
вплоть до того, что драйверы с SHA-1-подписями просто перестанут загружаться.
По материалам отсюда:
Microsoft Signatures to be REQUIRED for Windows 10 Kernel-Mode Drivers
https://www.osr.com/blog/2015/. indows-10/
Deprecation of SHA-1 Hashing Algorithm for Microsoft Root Certificate Program (Microsoft Security Advisory 2880823)
https://technet.microsoft.com/. 80823.aspx
Microsoft announces updates to SHA-1 deprecation policy for Code Signing
https://www.globalsign.com/en/. ng-policy/
Такие новости обычно мало кого радуют. Я и сам не в восторге от того, что придется
переделывать систему подписывания и вкладывать дополнительные ресурсы.
Но давайте глубже разберемся в новых правилах игры. Та критика, которую мне
приходилось слышать, базируется на следующих утверждениях:
a) EV-сертификаты намного дороже обычных.
Это так. Но в данном случае у DigiCert есть значительная скидка, по которой можно
приобрести EV-сертификат на три года по цене в 500 USD. Гуглим «Sysdev MVP Program».
Те, кто уже покупал сертификаты раньше, согласятся, что разница не слишком большая.
В свое время я брал сертификат у GlobalSign на три года за 320 USD.
Так что этот пункт закрываем.
b) EV-сертификат значительно труднее получить, для физического лица вообще невозможно.
Это правда. Процедура получения EV-сертификата и прохождения всех необходимых проверок
значительно более тщательная, чем для Standard-сертификатов. Получить EV-сертификат может
только организация или юридическое лицо, часть документов необходимо будет заверять нотариально.
Зато меньше вероятность, что сертификат купит себе какая-нибудь «липовая» контора и станет
потом подписывать им malware.
Что касается получения сертификата физическими лицами — тут надо прочесть документ
«Certification Practice Statement» от DigiCert, там (и не только там) четко написано, что
EV-сертификат может быть выдан для лица, являющегося «Sole proprietorship», что по-нашему
означает ИП, т.е. индивидуальный предприниматель. И я знаю пару положительных примеров,
когда EV-серты получали на ИП без особых проблем.
Я не думаю, что даже для мелкого бизнеса, который как-то выкрутился с сертификатами на
64-битных Vista и выше, будет проблемой открыть ИП и заплатить на 150-200 баксов больше.
Так что этот пункт тоже закрываем.
c) Прощай, автоматизация, теперь каждый раз нужно вводить PIN при подписывании.
Это спорный момент.
У электронных ключей SafeNet eToken, например, есть опция «Enable Single Logon»: когда
она включена, PIN вводится только один раз при входе в систему. Но в целом — да, все идет к
тому, чтобы уйти от авто-билдов и авто-подписывания драйвера, потому что в таких условиях
случайно или преднамеренно внесенный баг или уязвимость имеют больше шансов проскользнуть в
релиз, оставшись незамеченными (см. пункт «f»).
d) При подписывании драйвер «сливается» в Microsoft, чтобы они контролировали все и вся.
Паранойя. Исходники никуда не сливаются.
Да, бинарники драйвера во время submission отправляются в Microsoft. Вы этого боитесь ?
Тогда я расскажу еще более жуткую страшилку: после очередного релиза популярного
системного софта типа VMware, AIDA64 или Sandboxie его бинарники расползаются по
всей планете среди миллионов пользователей и каждый может свободно дизасмить их в
IDA Pro, патчить, хотя это и незаконно, загружать на virustotal и т.п.
Нормальному софту, т.е. не malware, здесь абсолютно нечего бояться.
Боитесь кражи интеллектуальной собственности — защищайте бинарники драйвера
протектором, например VMProt. В общем, пункт тоже в топку.
e) SHA-2 не поддерживается до Windows 8, поэтому, если хотите поддерживать старые системы,
придется иметь и второй серт с SHA-1.
Это отчасти правда.
Сейчас ходят слухи, что некоторые центры будут поддерживать выпуск и перевыпуск сертификатов
SHA-1 для поддержки старых систем еще несколько лет. Другой вариант — подписывать драйверы
через WHDC-портал, но с прохождением тестов Windows Logo Kit, тогда MS будет ставить подпись,
совместимую Windows 7. Системы до Windows 7, как можно судить по сообщениям на OSR,
поддерживаться не будут ни в каком виде.
f) HLK-тесты — это только лишние хлопоты, которые никому не нужны.
В Windows Server 2016 Microsoft сделала, наконец, то, к чему долго шла — все, без исключений,
драйверы, должны проходить HLK-тесты. «Kernel-Mode Code Signing Policy» на 64-битных Vista и
выше, по сути, ничего особого не поменяла, просто появился некий удостоверяющий орган, через
регистрацию в котором должны были пройти все, кто хочет загружать свой драйвер. Эта политика
отвечала на вопрос КТО пишет драйвер, но не отвечала на вопрос КАК.
HLK Requirements будет ломать эту ситуацию. HLK-тесты будут проверять, выполняет ли ваш драйвер
все заявленные функциональные требования, не нагружает ли он систему выше нормы, не валит ли
он систему в синий экран в условиях нехватки памяти, не создает ли он брешей в системе,
совместим ли с другими драйверами такого же класса и т.д. Кроме этого, для каждого класса
драйвера будут прогоняться свои наборы специальных тестов.
Что поделать ? Ну не хочет народ учиться писать устойчивые и безопасные драйверы, не хочет
применять специальные инструменты для верификации кода и отлова ошибок, не хочет вкладывать
ресурсы в приобретение дополнительных мощностей для отладки и тестирования. Я сам видел
разработчиков с многолетним опытом, которые, тем не менее, не слышали ни про driver verifier,
ни про SAL-аннотации, ни про checked-билды, которые даже не практиковали отладку/тесты
на виртуальных машинах.
Теперь этот процесс станет обязательным. Кто морально не готов — уйдет с рынка Windows Server.
Останутся только самые сильные. Лично я вижу только плюсы.
Думайте не о том, что вам придется иметь дополнительные затраты на поддержку нового
Windows Server, а о лого «Compatible with Windows 10» и «Certified for Windows Server 2016».
И еще о том, что у вас теперь будет еще меньше конкурентов.
Кстати, я пробовал проходить HLK-тесты из последней Harware Lab Studio для Windows 10.
По сути, там ничего сложного, особенно для software-only драйверов. Единственная «трудность» в
том, что для прохождения многих тестов требуются реальные, а не виртуальные, машины.
Лично я серьезный минус вижу только в том, что если вы захотите для одного из своих клиентов
выпустить исправление драйвера, которое бы решало какую-то специфическую проблему, то не
сможете сделать это быстро, потому что вновь придется проходить HLK-тесты.
Кстати, хочу отметить, что практически все производители драйверов для Windows давно и
успешно проходят WHQL-тесты и «не жужжат».
g) EV-серты в плане безопасности ничем не лучше стандартных, их будут ломать
точно также, как ломали раньше.
Этот пункт сразу в корзину.
Во-первых, сами EV-сертификаты используют более сильное шифрование (SHA-2 вместо SHA-1) и
более длинные ключи RSA (минимум 2048 бит). Во-вторых, приватный ключ хранится на электронном
устройстве и экспортировать его оттуда ни в какой форме нельзя. В-третьих, если кто-нибудь
стырит у вас сертификат, сделая себе копию .pfx-файла, находящегося на жестком диске, то вы
этого, скорее всего, даже и не заметите. А вот пропажа электронного ключа — совсем другое дело.
Ввод PIN-кода — еще одна дополнительная ступень защиты.
Кстати, EV-сертификаты не имеют проблем со SmartScreen-ом и сразу распознаются как доверенные,
это еще один плюс. Те, кто распостраняет инсталляторы своих продуктов через интернет, знает,
какая это проблема.
h) Малварь все равно будут пролезать через уязвимости в старых драйверах, ей эти
новые правила игры не помешают.
К сожалению, это правда.
Но политика подписывания драйверов, ни старая, ни новая, к этому не имеет отношения.
По непонятной мне причине Microsoft проявляет удивительную мягкость к драйверам, которые сами
по себе не являются зловредными, но содержат известные уязвимости и эксплуатируются разработчиками
малвари. Если бы они их сразу помещали в черный список и банили, было бы гораздо лучше. Тогда и
такие вещи, как DSEFix (отключение цифровых подписей), которая давно и успешно эксплуатирует дырку в
драйвере VirtualBox, не были бы столь популярны в соответствующих кругах.
i) WHDC-портал, через который можно подписывать EV-сабмиссии и UEFI, станет жертвой атак
хакеров и его, возможно, очень быстро сломают, после чего на земле появятся миллионы зомби с
похаканными прошивками и загрузчиками, которые заражены руткитами с EV-подписью.
Как можно усложнить жизнь всем и сделать «у нас дыра в безопасности»
http://sporaw.livejournal.com/392319.html
утверждалось, что раз EV signing обязателен для всех, то теперь толпы monkey-кодеров ринутся
покупать EV-серты, ломать WHDC-портал, красть PIN-ы и т.п. «бОльшая безопасность еще и
обеспечивается через количественные показатели».
Довольно странная логика, не находите ?
Вот у нас есть дверь с кодовым замком, какая разница, сколько через нее пройдет человек —
сто или миллион ? Все равно пройдут лишь те, у которых есть код. И наоборот — если в кодовом
замке есть дефект, то не важно, скольких дверь не пропустила, она де факто уязвима и все.
Ну а идея ломать WHDC-портал со стороны веб-морды мне кажется настолько же абсурдной,
как и подбирать приватный ключ к сертификату. С таким же успехом злоумышленники давно могли
бы нацелить свои копья на центры сертификации, а их вон сколько развелось: Symantec,
DigiCert, Thawte, GlobalSign, GoDaddy, StartSsl, COMODO.
Кроме того, я сильно сомневаюсь, что прям все сразу побегут за EV-сертификатами.
Кто-то пожалеет денег, кому-то моральные принципы помешают, кому-то еще что-то.
Есть, знаете ли, такая категория людей, которым все время что-то мешает быть
счастливыми и успешными.
j) Теперь будут трудности с отладкой драйвера, с test signing и т.п.
Нет, здесь все остается по-прежнему: отладчик ядра, либо отключение проверки цифровых
подписей в загрузочном меню по F8, либо тестовый режим. На некоторых системах потребуется
еще отключить Secure Boot, как и раньше.
Резюме: новая политика подписывания драйверов на Windows 10 и особенно на
Windows Server 2016 не особо радует, но серьезных поводов для беспокойства не видно.
Все, кто захочет продолжать разрабатывать драйверы под новые системы и строить на
этом свой бизнес, смогут адаптироваться к новым условиям с минимальными или
относительно небольшими вложениями. Впереди есть еще несколько месяцев на
адаптацию. Тем, у кого еще действуют старые сертификаты с SHA-1, тоже повезло.
Лично меня немного огорчает лишь то, что все эти закручивания гаек делают
разработку драйверов все менее доступной для начинающих и хоббистов, из-за чего
многие потенциально талантливые из них уйдут в веб и другие сферы.
Но тут правила диктует Microsoft и ничего с этим не поделаешь.
WinHEC + Microsoft Ignite The Tour
When the industry leading device builder conference (WinHEC) joins the industry leading conference for software development, security, architecture and IT (Microsoft Ignite The Tour), your knowledge grows exponentially!
Dedicated learning paths for hardware developers
Microsoft Ignite The Tour brings the very best of Microsoft Ignite to a city near you. The tour provides technical training led by Microsoft experts and your community. You’ll learn new ways to build solutions, migrate and manage infrastructure, and connect with local industry leaders and peers. The Shenzhen and Taipei stops include learning tracks for device builders focused on Windows and IoT / Intelligent Edge. You can gain all of the knowledge you expect from WinHEC plus a view of the wider development space.
Windows learning track
Learn more about Windows support for the latest technologies and methods to improve servicing, issue diagnosis, and more.
IoT and Intelligent Edge learning track
Learn more about integrating Microsoft’s comprehensive IoT, Edge, and Intelligent Edge solutions into your project.
WinHEC 2018
WinHEC 2018 had a comprehensive set of topics on Building the Intelligent Edge from Server to Sensor. These topics included Azure IoT Edge, Azure Sphere, Windows Server 2019, Windows IoT, and hardware related features in the Windows 10 October 2018 Update. Thank you for visiting our recap of the WinHEC 2018. For more information, please contact us.
Taipei Keynote
Hear the Microsoft story for the Windows 10 October 2018 Update (1809) and its connection to hardware.
Shenzhen Keynote
Hear the Microsoft story for the Windows 10 October 2018 Update (1809) and its connection to hardware.
Windows Server 2019: What’s new and what’s next
This session details what makes Windows Server 2019 an exciting platform for IT Pros and Devs looking into modernizing their infrastructure and applications.
Building and Leveraging the next generation of Connected Devices
This session will discuss Windows 10 modern connectivity support in-depth, introduce several scenarios that leverage always-on, always connected, and instant-on capabilities, and explain what to expect for compliance and certification for these cellular enabled devices.
Windows Input: Pen, Ink, and PTP
In this session we’ll showcase the newest features introduced in Windows to give users delightful pen and input experiences and discuss what hardware manufacturers need to be aware of to optimize the input experience on their devices.
Windows 10 in S mode
Windows 10 in S mode gives high performance and high security environment for end-to-end digital life and work. Come to learn how it works for our customer and how you can develop high quality device and solution.
Azure IoT and Intelligent Edge Devices
This session will go into the details of what Azure IoT Edge offers as a service. Learn how to create powerful Intelligent Edge solutions on Windows. We’ll show how you can use the Windows Platforms to run Azure IoT Edge seamlessly, give you a holistic view of device offerings based on your edge scenarios.
Explore Opportunities for Your IoT Devices with Azure IoT Solutions
The Azure IoT product group talks about existing program requirements for IoT devices including IoT Edge devices. The team also introduces a new test kit that can significantly reduce OEM’s engineering efforts to validate the IoT devices to meet the certification criteria.
Windows 10 on ARM for Driver Developers
Learn about the Windows 10 on ARM devices, how the magic of x86 emulation works, build drivers for ARM64 and finally how to submit and build apps for Windows 10 on ARM. We will be showing how to build ARM64 drivers and apps for desktop and UWP.
Secure and Power the Intelligent Edge with Azure Sphere
In this session we’ll explore what the Seven Properties of Highly Secure Devices are and discuss how Azure Sphere incorporates all of them in to our holistic security solution that that starts in the silicon and builds through to the OS and the cloud.
Power and Performance
Learn more about the Windows features, assessments, tools, and analysis techniques that enable you to develop and ship Windows devices that deliver all day battery life.
Windows 10 Device Security and Services
An update on the security features and capabilities that can be enabled on a device to deliver on the security promise of Windows 10.
Modern Commercial Deployment with Autopilot
Autopilot is a cloud-based way to deploy Windows, bringing together the best of M365 technologies in order to save cost and time for engineers, as well as deliver the best out-of-box-experience for the end-users.
Modern Standby
An update on new Modern Standby functionality and validation tests.
Servicing Update: Driver and Intelligent Update
Review new OS servicing features and enhancements for driver servicing on Hardware Developer Center.
Introduction to Driver Module Framework
DMF enables one to write a WDF driver in a structured, modular way to promote code reuse with other drivers.
Component Firmware Update
An overview on a firmware update protocol developed and broadly used by Surface for updating firmware both onboard and removal devices using host drivers. We plan to make the protocol spec and the host side driver public through GitHub.
WinHEC 2017
The WinHEC Fall 2017 Workshop featured sessions and labs for developers, product managers and planners to help prepare for Universal Driver development, and to showcase the benefits of adopting key hardware features. Thank you for visiting our recap of the WinHEC Fall 2017 Workshop. For more information, please contact us.
WinHEC Fall 2017 Workshop Keynote
In this session, we will focus on the modern workplace and gaming, which are two of Microsoft’s five solution areas for the digital transformation.
Windows 10 S and Windows 10 Workstation
Learn more about Windows 10 S and Windows 10 Pro for Workstations in this video.
Accessibility in Windows 10
This session demonstrates the accessibility features in Windows 10, including features recently introduced in the Windows 10 Fall Creators Update.
PC Turnkey Solutions
Leverage Intel and Microsoft’s partnership on form factor reference designs to accelerate Go To Market efforts in shipping Modern PCs with Windows Hero Features.
Windows 10 Driver Servicing and DCHU Update
Learn the latest on on Driver Servicing, changes to HW Dev Center to support DCHU, and provide an update on the transition to Universal Drivers.
Power Optimizations
Learn more about the Windows features, assessments, tools, and analysis techniques that enable you to develop and ship Windows devices that deliver all day battery life.
Modern Standby Overview
This session provides an update on Modern Standby in the Windows 10 Fall Creators Update, as well as highlighting investments we are making in collaboration with the ecosystem.
Performance
This session provides introductory demonstrations of the performance tools and test kits used to optimize performance on Windows devices.
Windows Hello
Learn about the new investments we are making in Windows Hello and what you can do to deliver this convenient and secure solution to your customers.
Pen and Precision Touchpad
Learn how Windows Ink, Microsoft Pen Protocol (MPP) and Precision Touchpad (PTP) can be used to deliver experiences across your device portfolios.
NIC Offloads and Optimizations
Learn more about the current set of offloads and optimizations that exist in Windows Server 2016 and the newly released Windows Server 1709.
NetAdapter: The next Generation of NDIS
Learn more about the key characteristics of the new model and sample codes available for review.