Мне тут написал человек с вопросами по подписыванию драйверов, и сообщил, что у него десятка успешно грузит драйверы, подписанные только его собственным (не EV) сертификатом, если не включен Secure Boot, и если у системы есть подключение к Интернету. Я сперва не поверил, потом решил проверить, и обнаружил, что 64-разрядные 1909 и 1803 (недавно обновленная) грузят драйверы, подписанные только моим EV-сертификатом от GlobalSign, даже без интернета.
Это очень странно — для чего ж они столько лет загоняли всех в Attestation Signing? Или нынче системы с Secure Boot преобладают, и MS просто решила забить на Legacy? Никто не слышал подробностей?
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>Мне тут написал человек с вопросами по подписыванию драйверов, и сообщил, что у него десятка успешно грузит драйверы, подписанные только его собственным (не EV) сертификатом, если не включен Secure Boot, и если у системы есть подключение к Интернету. Я сперва не поверил, потом решил проверить, и обнаружил, что 64-разрядные 1909 и 1803 (недавно обновленная) грузят драйверы, подписанные только моим EV-сертификатом от GlobalSign, даже без интернета.
ЕМ>Это очень странно — для чего ж они столько лет загоняли всех в Attestation Signing? Или нынче системы с Secure Boot преобладают, и MS просто решила забить на Legacy? Никто не слышал подробностей?
Подробностей не слышал, но да, с самого начала было объявлено, что MS-подпись — только для Secure Boot. Правда, этот момент не пиарился, поэтому о нём не очень широко известно.
Есть ещё одно исключение: если десятка ставилась как обновление с предыдущей версии (7/8), то требования к подписи тоже остаются прежними, third-party + cross-signature, даже при включённом SB.
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>Это очень странно — для чего ж они столько лет загоняли всех в Attestation Signing? Или нынче системы с Secure Boot преобладают, и MS просто решила забить на Legacy? Никто не слышал подробностей?
Здравствуйте, CaptainFlint, Вы писали:
CF>с самого начала было объявлено, что MS-подпись — только для Secure Boot. Правда, этот момент не пиарился, поэтому о нём не очень широко известно.
Я этого в явном виде нигде не видел, потому и удивился. Наоборот, везде писали, что с десятки 1607 индивидуальным подписям кранты, и оно реально так и было. У меня в 16-м году еще был обычный сертификат от DigiCert, я пытался грузить в тогдашних десятках подписанные им драйверы — они не грузились, хотя и доступ к интернету у всех систем был, и Secure Boot я тогда вообще не пробовал. А теперь, с подписью EV-сертификатом от GlobalSign — грузятся, и человек, который это обнаружил, пишет, что у него грузятся и подписанные обычным сертификатом (на знаю только, от кого).
CF>Есть ещё одно исключение: если десятка ставилась как обновление с предыдущей версии (7/8), то требования к подписи тоже остаются прежними, third-party + cross-signature, даже при включённом SB.
У меня все системы всегда ставились с нуля. Кстати, непонятно, почему эту особенность до сих пор не расковыряли — наверняка можно любую систему заставить думать, что она была обновлена с 7/8.
Здравствуйте, Евгений Музыченко, Вы писали:
CF>>с самого начала было объявлено, что MS-подпись — только для Secure Boot. Правда, этот момент не пиарился, поэтому о нём не очень широко известно.
ЕМ>Я этого в явном виде нигде не видел, потому и удивился. Наоборот, везде писали, что с десятки 1607 индивидуальным подписям кранты, и оно реально так и было. У меня в 16-м году еще был обычный сертификат от DigiCert, я пытался грузить в тогдашних десятках подписанные им драйверы — они не грузились, хотя и доступ к интернету у всех систем был, и Secure Boot я тогда вообще не пробовал. А теперь, с подписью EV-сертификатом от GlobalSign — грузятся, и человек, который это обнаружил, пишет, что у него грузятся и подписанные обычным сертификатом (на знаю только, от кого).
Странно, у меня на ранних десятках без Secure Boot (в виртуалках) драйверы, подписанные обычным сертификатом (не EV, не MS) грузились нормально. Правда, времени прошло много, уже не могу вспомнить точно, что и чем я подписывал; есть вероятность, что я чего-то не учёл (не исключено, что сертификат был выписан до дедлайна). Но что про Secure Boot упоминали — это точно. Я это видел в записи какой-то их конференции. Там ещё говорилось, что для десятки требуется Attestation, а для серверных — не ниже HLK (и тоже, только для SB).
CF>>Есть ещё одно исключение: если десятка ставилась как обновление с предыдущей версии (7/8), то требования к подписи тоже остаются прежними, third-party + cross-signature, даже при включённом SB.
ЕМ>У меня все системы всегда ставились с нуля. Кстати, непонятно, почему эту особенность до сих пор не расковыряли — наверняка можно любую систему заставить думать, что она была обновлена с 7/8.
Ну-у... почему ж не расковыряли-то? Всё давно расковыряли. Но насколько я краем уха слышал, инфа о волшебном ключике официально выдаётся MS'ом только ограниченному кругу лиц под NDA. Соответственно, расковырянное стараются сильно не светить. Возможно, опасаются, что если расползётся, то MS может прикрыть лавочку.
Здравствуйте, CaptainFlint, Вы писали:
CF>Странно, у меня на ранних десятках без Secure Boot (в виртуалках) драйверы, подписанные обычным сертификатом (не EV, не MS) грузились нормально.
То были совсем чистые системы, без отладчика, TestSigning и прочего? А то я периодически забываю, что все это влияет, и надо проверять на чистой загрузке.
CF>не исключено, что сертификат был выписан до дедлайна
Неважно, когда выдан сертификат — только когда была сделана подпись.
CF>Ну-у... почему ж не расковыряли-то? Всё давно расковыряли. Но насколько я краем уха слышал, инфа о волшебном ключике официально выдаётся MS'ом только ограниченному кругу лиц под NDA.
Не. "Расковыряли" — это значит, что на каждом углу лежит свободно.
Здравствуйте, Евгений Музыченко, Вы писали:
CF>>Странно, у меня на ранних десятках без Secure Boot (в виртуалках) драйверы, подписанные обычным сертификатом (не EV, не MS) грузились нормально.
ЕМ>То были совсем чистые системы, без отладчика, TestSigning и прочего? А то я периодически забываю, что все это влияет, и надо проверять на чистой загрузке.
Да, я ядерной отладкой не занимаюсь, поэтому практически всегда у меня системы без подобного добра. И я помню, что тогда специально проверял именно загружаемость драйверов, так что отсутствие testsigning точно перепроверил.
CF>>не исключено, что сертификат был выписан до дедлайна
ЕМ>Неважно, когда выдан сертификат — только когда была сделана подпись.
Cross-signed drivers are still permitted if any of the following are true:
• The PC was upgraded from an earlier release of Windows to Windows 10, version 1607.
• Secure Boot is off in the BIOS.
• Drivers was signed with an end-entity certificate issued prior to July 29th 2015 that chains to a supported cross-signed CA.
Я ещё помню, с нетерпением ждал выхода новой версии VirtualBox после того, как их сертификат истекал, чтобы подсмотреть в конфигах, как они с подписью выкрутятся (это ещё когда автоматизацией Attestation Signing и не пахло). А они взяли и содрали со своего американского подразделения другой сертификат, который тоже был выписан до указанной даты, но действовал три года (а тот, которым они подписывали до этого, был однолетним). И таким образом получили отсрочку от внедрения attestation'а ещё почти на пару лет.
CF>>Ну-у... почему ж не расковыряли-то? Всё давно расковыряли. Но насколько я краем уха слышал, инфа о волшебном ключике официально выдаётся MS'ом только ограниченному кругу лиц под NDA.
ЕМ>Не. "Расковыряли" — это значит, что на каждом углу лежит свободно.
Скажем так: ресурс, где я смог найти инфу по этому ключику, открытый и достаточно известный, и вряд ли там захотели бы палиться нарушением NDA. Но спорить не буду, я просто не обладаю достаточной информацией.
Использую обычный Code Signing сертификат от Certum для Open Source проектов.
Windows 10 1909 без Secure Boot загружает мой драйвер: https://github.com/tnodir/fort
Здравствуйте, nodir.temir, Вы писали:
NT>Использую обычный Code Signing сертификат от Certum для Open Source проектов. NT>Windows 10 1909 без Secure Boot загружает мой драйвер: https://github.com/tnodir/fort
Интересно, а на сайте у них в таблице сравнения в графе Open Source отсутствует подписывание драйверов и упоминание кросс-сертификата…
Здравствуйте, nodir.temir, Вы писали:
NT>Использую обычный Code Signing сертификат от Certum для Open Source проектов. NT>Windows 10 1909 без Secure Boot загружает мой драйвер
Здравствуйте, CaptainFlint, Вы писали:
NT>>Использую обычный Code Signing сертификат от Certum для Open Source проектов.
CF>Интересно, а на сайте у них в таблице сравнения в графе Open Source отсутствует подписывание драйверов и упоминание кросс-сертификата…
Да, здесь [1] "Certificate cross-certified by Microsoft" не поддерживается.
Но у Open Source сертификата родитель по цепочке имеет кросс-сертификат от Microsoft.
См. [2] для указания родителя "Certum Trusted Network CA.crt", который был получен из [3].
Здравствуйте, Евгений Музыченко, Вы писали:
NT>>Windows 10 1909 без Secure Boot загружает мой драйвер
ЕМ>А с Secure Boot?
В Secure Boot же Attestation-подпись от MS нужна. Когда я последний раз проверял, драйверы, подписанные EV-сертификатом нашей компании с кросс-сертификатом, не грузились.
Здравствуйте, nodir.temir, Вы писали:
CF>>Интересно, а на сайте у них в таблице сравнения в графе Open Source отсутствует подписывание драйверов и упоминание кросс-сертификата…
NT>Да, здесь [1] "Certificate cross-certified by Microsoft" не поддерживается.
NT>Но у Open Source сертификата родитель по цепочке имеет кросс-сертификат от Microsoft. NT>См. [2] для указания родителя "Certum Trusted Network CA.crt", который был получен из [3].
Хакер однако! Спасибо за инфу, буду иметь в виду, если вдруг захочется свой драйверный сертификат заиметь.
Здравствуйте, nodir.temir, Вы писали:
NT>Но у Open Source сертификата родитель по цепочке имеет кросс-сертификат от Microsoft. NT>См. [2] для указания родителя "Certum Trusted Network CA.crt", который был получен из [3].
Вы, часом, не умеете разбираться с этими цепочками на уровне сверх традиционно принятого шаманства? Мне бы хотелось понять, как можно проверить валидность как обычной подписи, так и подписи для kernel mode с кросс-сертификатами. Ни винде, ни signtool /verify доверять невозможно — они регулярно противоречат друг другу, и разные версии signtool тоже друг другу противоречат. Нужен алгоритм для того, чтобы определить, с какой стороны проблема — у меня или у целевой системы.
. В итоге я ее решил, а сегодня получил новый (продленный) EV-сертификат от GlobalSign. Подписывание работает, винда все подписанное загружает, а вот MS Partner Center вернул CAB, подписанный новым сертификатом, с "исчерпывающей" диагностикой SignatureValidationFailed (это все, что они прислали в "файле описания ошибки"). Соответственно, мне нужно понять: то ли моя подпись неверна, то ли сервер MS ее на той стороне проверяет как-то по-особенному.
На signtool, как уже говорил, надежды нет — в системах, загружающих драйвер, оно может утверждать, что его подпись неверна, а в системах, отказывающихся его загружать — что верна.
Существует ли более-менее вменяемая инструкция по ручной проверке цепочек сертификатов, результат которой согласовывался бы с поведением винды при установке/загрузке драйвера?