- Windows La plupart des pilotes 64 bits, et en particulier les pilotes en mode noyau, nécessitent des signatures numériques valides pour garantir leur intégrité et leur sécurité.
- La signature peut être appliquée aux fichiers binaires et aux catalogues, à l'aide d'outils tels que SignTool ou Visual Studio et de certificats émis par des entités de confiance.
- Les certificats auto-signés facilitent le développement et les tests de conducteurs non signé Windows 78.1 et 10 x64, mais elles ne remplacent pas la signature commerciale pour la distribution publique.
- La compatibilité entre les versions de Windows dépend de l'utilisation d'algorithmes de hachage appropriés (tels que SHA2) et du respect des directives de Microsoft et de WHQL.
Signer un pilote sous Windows peut sembler, à première vue, être une tâche réservée aux développeurs très expérimentés, mais si vous travaillez avec périphériques, pilotes personnalisés ou environnements de testTôt ou tard, vous rencontrerez cette exigence. Sur les systèmes modernes, notamment les systèmes 64 bits, Windows ne fait plus confiance à n'importe quel fichier binaire qui tente de s'infiltrer dans le noyau : il exige des signatures numériques valides, des algorithmes modernes comme SHA2 et, dans de nombreux cas, une certification par Microsoft.
Dans les lignes qui suivent, nous examinerons calmement ce que signifie exactement signer un contrôleur, et quelles différences il existe entre mode noyau et mode utilisateurComment cela affecte Windows 7, 8, 8.1 et 10 64 bits, quel rôle jouent des outils comme SignTool ou Visual Studio, et quelles options vous avez pour les environnements de développement (certificats de test ou auto-signés) et les versions publiques avec des certificats émis par une autorité de confiance.
Qu’est-ce que la signature des pilotes sous Windows et pourquoi est-elle obligatoire ?
La signature des pilotes sous Windows implique l'association d'un signature numérique d'un package de pilote (fichiers binaires, fichiers INF, catalogue, etc.) afin de garantir deux choses : que personne n’a manipulé les fichiers depuis leur création et qu’ils proviennent bien de l’éditeur indiqué (le fournisseur ou le fabricant du logiciel). matériel).
En pratique, lors de l'installation d'un périphérique Windows, ces signatures numériques sont utilisées pour vérifier l'intégrité du colis et l'identité de l'éditeur. En cas d'anomalie (signature corrompue, certificat non approuvé, hachage incorrect, etc.), le système affichera des avertissements, bloquera l'installation ou refusera tout simplement de charger le pilote.
À partir de Windows Vista 64 bits, et plus particulièrement sous Windows 7, 8, 8.1 et 10 x64, la politique de sécurité en mode noyau est claire : tout pilote exécuté dans le noyau doit être protégé contre les attaques par déni de service (DSP) de sécurité. Il doit être dûment signé.Sinon, le pilote ne se chargera pas, le périphérique risque de devenir inopérant, et des écrans bleus peuvent même apparaître si des fichiers binaires invalides sont forcés de se charger.
Lorsque vous décidez de faire certifier votre pilote par Microsoft, vous pouvez le soumettre au processus de validation des Laboratoires de qualité du matériel Windows (WHQL). Si le pilote réussit les tests de certification, Microsoft lui accorde la certification. Signature officielle WHQLCela améliore non seulement la confiance et la compatibilité, mais vous permet également de distribuer le pilote via Windows Update et d'autres canaux de distribution pris en charge par Microsoft.
Il est important de noter qu'à partir de Windows 10 version 1507, tous les pilotes signés via le Centre de développement matériel Microsoft sont signés à l'aide de SHA2 en tant qu'algorithme de hachageLe protocole SHA1 est devenu obsolète pour ces scénarios, et le mélange d'anciens certificats peut engendrer des problèmes, notamment sur les systèmes récents.

Différences entre la signature des pilotes en mode noyau et en mode utilisateur
Windows prend en charge les pilotes qui s'exécutent dans mode noyau et mode utilisateurLa politique de signature n'est pas exactement la même dans les deux environnements, bien qu'elle ait tendance à devenir plus stricte à chaque nouvelle version du système d'exploitation.
Les pilotes en mode noyau sont les plus sensibles car ils s'exécutent dans le noyau du système et disposent d'un accès privilégié à la mémoire et au matériel. Dans les versions 64 bits de Windows Vista et ultérieures, ces pilotes Elles doivent être signées. pour être facturé. Cette restriction est directement liée à la stabilité du système et à sa protection contre malware qu'elle tente d'injecter à faible dose.
En revanche, les pilotes fonctionnant en mode utilisateur (par exemple, de nombreux pilotes d'imprimante et composants supplémentaires) n'étaient pas initialement soumis à une obligation aussi stricte. En effet, dans les anciennes versions de Windows Ce n'était pas une exigence absolue Il est recommandé que ces pilotes soient signés. Toutefois, Microsoft a toujours préconisé de les signer pour des raisons de sécurité, et depuis Windows 8, la signature est obligatoire pour certains types de pilotes utilisateur dans certains cas.
Un exemple typique : un pilote d’imprimante installé sur un ordinateur x64 affiche généralement une boîte de dialogue lors de l’installation, demandant une confirmation à l’utilisateur. En pratique, ce package Il doit être dûment signé afin que l'installation puisse se poursuivre sans blocages ni alertes de sécurité critiques.
L'idée générale est que, bien que cette exigence ne soit pas universelle en mode utilisateur, Microsoft fait de plus en plus pression pour qu'elle le soit. Tous les logiciels liés aux pilotes doivent être signés.Leur signature permet une vérification fiable de leur créateur, la détection des falsifications et une réduction du risque d'infiltration de composants malveillants se faisant passer pour des contrôleurs légitimes.
Exigences de signature et algorithmes SHA dans différentes versions de Windows
L'un des aspects les plus problématiques est la compatibilité entre les versions de Windows et les algorithmes de hachage tels que SHA1 et SHA2De nombreux développeurs rencontrent des pilotes qui fonctionnent sur un système mais pas sur un autre, et la responsabilité en incombe souvent aux changements de politiques de signature.
Dans les systèmes plus anciens, tels que Windows 7 ou 8 64 bits, il était courant de travailler avec des certificats et des signatures basés sur SHA1, bien que Microsoft ait déjà averti que SHA1 s'est révélé insuffisant en matière de sécurité.Avec les progrès réalisés vers Windows 8.1 et 10, SHA2 est devenu la norme pour les signatures de code et de pilotes.
En pratique, certains fabricants ont choisi de signer les binaires en mode noyau en intégrant deux certificats (SHA1 et SHA2) émis par des entités autres que Microsoft. Ces binaires à double signature, dans certains cas, Elles ne se chargent pas sur les versions antérieures à Windows 10.et sur certains systèmes Windows 10, ils peuvent même provoquer des plantages graves ou des écrans bleus.
Pour atténuer ces problèmes, Microsoft a publié des correctifs spécifiques, tels que la mise à jour KB 3081436. L'installation de cette mise à jour sur les systèmes concernés corrige les incompatibilités avec certains pilotes signés SHA2 et fournit une liste de valeurs de hachage SHA de référence dans la section « Plus d’informations – Informations sur le hachage du fichier » de cet article d’assistance.
Si vous prévoyez de distribuer des pilotes qui doivent fonctionner sur plusieurs versions de Windows, il est essentiel de consulter la documentation. exigences de signature par version Ces informations sont détaillées par Microsoft. Elles précisent quels algorithmes sont valides, comment la rétrocompatibilité est gérée et quelles combinaisons de signatures (catalogue, binaire intégré, certificats croisés, etc.) sont officiellement acceptées.
Signature des pilotes en mode utilisateur : recommandations et ressources
Bien que le noyau soit souvent au centre de l'attention, la signature des pilotes en mode utilisateur mérite également d'être prise en compte. Microsoft ne l'a pas appliquée aussi strictement dès le départ, mais… recommande fortement de préserver la sécurité du système et offrir confiance à l'utilisateur final.
La signature d'un pilote en mode utilisateur remplit fondamentalement les mêmes fonctions qu'en mode noyau : identifie le fournisseur de contrôleur (fabricant, éditeur de logiciels, etc.) et confirme que le package n'a pas été modifié depuis sa signature. Lors de l'installation d'une imprimante avec des pilotes en mode utilisateur sur un ordinateur x64, par exemple, l'assistant d'installation peut afficher une boîte de dialogue demandant si l'éditeur est approuvé. Si la signature est valide et que le certificat appartient à une entité reconnue, l'installation se déroule plus facilement et avec beaucoup moins d'avertissements.
Microsoft propose une série de documents et de tutoriels qui approfondissent le processus de signature, dont beaucoup ont été initialement conçus pour le mode noyau, mais qui sont également applicables au mode utilisateur. L'article principal sur signature du conducteur et le sous-thème « Comment signer une version d'un module noyau » du tutoriel sur la signature de code en mode noyau constituent de bons points de départ pour comprendre la logique générale de la signature de code sous Windows.
De plus, l'installation du Kit de pilotes Windows (WDK) inclut un fichier d'aide appelé autosignature_readme.htm, situé dans le répertoire auto-signatureCe document explique comment générer des certificats de test et comment les utiliser pendant le développement, ce qui est particulièrement utile lorsque vous ne disposez pas encore d'un certificat émis par une autorité racine de confiance.
En résumé, bien qu'un pilote en mode utilisateur puisse techniquement fonctionner sans signature dans certains cas, il convient de le considérer comme obligatoire. Ceci est dû à des raisons de sécurité, d'image de marque et de compatibilité avec les assistants d'installation de Windows. Faire signer le contrat du chauffeur est la chose la plus judicieuse à faire..
Signature des pilotes en mode noyau sous Windows 7 et 8 à l'aide de SignTool
Lors de l'utilisation de Windows 7 et 8 64 bits, l'une des approches les plus courantes pour signer des pilotes en mode noyau consiste à utiliser l'outil en ligne de commande. commandes Outil de signatureIntégré au SDK Windows, cet utilitaire permet à la fois de signer des fichiers et de vérifier les signatures existantes, et il offre un large éventail d'options pour s'adapter à différents scénarios.
Certaines des options les plus importantes Les fonctionnalités de SignTool sont les suivantes :
- /ac: spécifie un certificat supplémentaire, par exemple un certificat croisé qui relie votre certificat à une autorité racine de confiance.
- /f: indique le fichier qui contient le certificat de signature (généralement un fichier .pfx).
- /p: fournit le mot de passe associé au certificat de signature stocké dans le fichier .pfx.
- /fd: définit l'algorithme de hachage utilisé lors de la création de la signature du fichier, par exemple, /fdsha256 pour générer une signature basée sur SHA256 (si rien n'est spécifié, SHA1 est généralement la valeur par défaut dans les versions plus anciennes).
- /n «Nom commun du certificat»: vous permet de sélectionner un certificat spécifique dans le magasin de certificats Windows en fonction de son nom commun (CN).
- /t: spécifie un serveur d'horodatage compatible avec le schéma Microsoft Authenticode.
- / tr: indique un serveur d'horodatage conforme à la RFC 3161, plus moderne et recommandé pour les nouvelles implémentations.
Lors du développement de votre pilote, il est important de savoir quels fichiers doivent être signés. Pour qu'un pilote s'installe correctement sous Windows 7 ou 8, il doit être signé. tous les fichiers binaires pertinents du projet (par exemple, les fichiers .sys) ainsi que le fichier catalogue (.cat) qui regroupe l'ensemble des fichiers du paquet.
Vous avez deux options principales : vous pouvez copier ces fichiers dans un répertoire de travail où SignTool est disponible, ou directement Déplacez-les dans le dossier bin du SDK Windows Exécutez ensuite l'outil. L'important est d'avoir à disposition les fichiers binaires et les certificats nécessaires à la signature.
Un scénario typique consiste à acquérir le certificat de signature de code approprié, par exemple, un Certificat « Microsoft Cross Certificate » Délivré par GlobalSign ou une autre autorité de confiance, ce certificat croisé (CrossCert.crt) doit être placé dans votre répertoire de travail avec votre certificat de signature de code principal (par exemple, CodeSign.pfx). Vous pouvez ensuite exécuter une commande similaire à celle-ci :
outil de signature signer /ac CrossCert.crt /f CodeSign.pfx /p password1234 /tr http://timestamp.globalsign.com/tsa/r6advanced1 filter.sys
Cette commande génère une signature qui comprend la certification croisée et obtient un horodatage auprès du serveur RFC 3161 de GlobalSign. Cet horodatage est essentiel car il prouve que le fichier a été signé à une date où le certificat était valide, même si celui-ci expire ultérieurement.
Après avoir signé le fichier, il est temps de vérifier que tout est correct. Cela se fait généralement à l'aide d'une commande de vérification telle que :
signtool vérifier -v -kp nom_de_fichier.sys
Le choix -v Il force un affichage détaillé, présentant des informations détaillées sur la chaîne de certificats, ainsi que l'option -kp Il vérifie la signature selon les critères de signature de code spécifiques au pilote en mode noyau. Si tout se déroule correctement, un résultat indiquera que la signature et la chaîne de certificats sont valides.
Enfin, il est recommandé Répétez la même procédure de signature et de vérification avec le fichier .cat Une fois les fichiers binaires et le catalogue correctement signés, le pilote peut être installé sur Windows 7 et 8 x64 sans problème de sécurité. Durant l'assistant d'installation, les informations de l'éditeur de confiance et les fenêtres système standard devraient s'afficher.
Pour explorer plus en détail toutes les variantes de l'outil, Microsoft propose une documentation de référence complète des commandes SignTool, ainsi qu'un Tutoriel spécifique pour la signature de code en mode noyau et une documentation dédiée aux signatures numériques des modules du noyau Windows. Ces ressources expliquent les cas particuliers, les paramètres avancés et les spécificités de chaque version du système.
Écrivain passionné par le monde des octets et de la technologie en général. J'aime partager mes connaissances à travers l'écriture, et c'est ce que je vais faire dans ce blog, vous montrer toutes les choses les plus intéressantes sur les gadgets, les logiciels, le matériel, les tendances technologiques et plus encore. Mon objectif est de vous aider à naviguer dans le monde numérique de manière simple et divertissante.