Depuis Windows NT 4.0, CryptoAPI comprend les Cryptographic Service Provider (CSP).
Le but est qu'une application n'ait pas à se soucier de la mise en œuvre concrète de la gestion des clés, mais puisse laisser cette tâche à des interfaces génériques du système d'exploitation. Cela permet également d'éviter que les clés cryptographiques soient chargées dans la mémoire vive dans le contexte de sécurité de l'utilisateur/de l'application utilisée (un incident de sécurité grave, basé précisément sur ce problème, a été le Incident Heartbleed).
Par exemple, pour le logiciel de l'autorité de certification, la manière dont votre clé privée est protégée (dans un logiciel ou à l'aide d'un module de sécurité matériel (HSM), par exemple) n'a aucune importance sur le plan technique. L'appel de la clé privée est toujours identique pour l'autorité de certification.
Avec Windows Vista et l'introduction de Cryptography Next Generation (CNG) en remplacement de CryptoAPI, les fournisseurs de stockage de clés (KSP) ont été introduits.
Connaissez-vous TameMyCerts? TameMyCerts est un add-on pour l'autorité de certification Microsoft (Active Directory Certificate Services). Il étend la fonction de l'autorité de certification et permet de Application de la réglementationIl s'agit d'un logiciel de gestion des certificats qui permet d'automatiser l'émission de certificats en toute sécurité. TameMyCerts est unique dans l'écosystème Microsoft, a déjà fait ses preuves dans d'innombrables entreprises du monde entier et est disponible sous une licence libre. Il peut téléchargé via GitHub et être utilisé gratuitement. Une maintenance professionnelle est également proposée.
Introduction
Les avantages des fournisseurs de stockage clé sont notamment les suivants :
- Isolation de la clé. Les clés peuvent être utilisées sans quitter le PSC (important pour l'utilisation de clés stockées dans le matériel).
- Audibilité des accès clés (voir événement n. 5058 et 5059).
- Soutien pour les technologies modernes Algorithmes tels que SHA2 et sur courbes elliptiques clé basée sur l'utilisation.
Les fabricants de matériel peuvent développer leurs propres CSP ou KSP pour permettre l'accès à leurs produits. Ceci est souvent le cas pour Modules de sécurité matérielle (HSM, par exemple de SafeNet ou Utimaco) ou des cartes à puce (comme celles de Gemalto ou Yubico).
Lieux de stockage
Il s'agit des emplacements de stockage des clés privées. Les clés publiques font partie intégrante des certificats correspondants.
| Domaine | CryptoAPI / CSP | CNG / KSP |
|---|---|---|
| Utilisateur | %AppData%\Microsoft\Crypto\RSA\{SID utilisateur} %AppData%\Microsoft\Crypto\DSA\{SID utilisateur} | %AppData%\Microsoft\Crypto\Keys |
| Système local | %AllUsersProfile%\Application Data\Microsoft\Crypto\RSA\S-1-5-18 %AllUsersProfile%\Application Data\Microsoft\Crypto\DSA\S-1-5-18 | %AllUsersProfile%\Application Data\Microsoft\Crypto\SystemKeys |
| Service local | %AllUsersProfile%\Application Data\Microsoft\Crypto\RSA\S-1-5-19 %AllUsersProfile%\Application Data\Microsoft\Crypto\DSA\S-1-5-19 | %WinDir%\ServiceProfiles\LocalService |
| Service réseau | %AllUsersProfile%\Application Data\Microsoft\Crypto\RSA\S-1-5-20 %AllUsersProfile%\Application Data\Microsoft\Crypto\DSA\S-1-5-20 | %WinDir%\ServiceProfiles\NNetworkService |
| Tous les utilisateurs | %AllUsersProfile%\Application Data\Microsoft\Crypto\RSA\MachineKeys %AllUsersProfile%\Application Data\Microsoft\Crypto\DSA\MachineKeys | %AllUsersProfile%\Application Data\Microsoft\Crypto\Keys |
Aperçu des fournisseurs d'accès présents dans le système Windows
Voici un aperçu des KSP et CSP présents sur un système Windows moderne.
Fournisseur de stockage de clés
| Fournisseur | Notes |
|---|---|
| Fournisseur de stockage de clés Microsoft Passport | Utilisé entre autres par Windows Hello for Business. Peut stocker des clés de manière transparente soit dans un logiciel, soit (si disponible) dans un module de plate-forme de confiance (TPM). |
| Microsoft Platform Crypto Provider | Peut-on mettre les clés dans un Module de plate-forme de confiance (TPM) enregistrer. Ne prend pas en charge tous les algorithmes CNG en raison de restrictions dans la norme TPM correspondante. Clé ECC possible uniquement à partir de Windows 10 21H2 ou Windows 11 en cas de demande via un modèle de certificat. |
| Fournisseur de stockage de clés de cartes à puce Microsoft | Fournisseur générique permettant de stocker des clés dans un Carte à puce pour l'enregistrer. Est pris en charge par de nombreux fabricants de cartes à puce. La prise en charge de certains algorithmes dépend de la carte à puce utilisée, par exemple la carte à puce virtuelle Microsoft ne prend pas en charge les clés ECC. |
| Fournisseur de stockage de clés logicielles Microsoft | Fournisseur générique permettant de stocker des clés dans des logiciels. Supporte tous les algorithmes de certificats disponibles dans l'écosystème Windows. Devrait être la norme minimale. |
Fournisseur de services cryptographiques
Parmi les CSP répertoriés, les suivants peuvent être utilisés pour générer des clés RSA d'une taille maximale de 16384 bits :
- Microsoft Base Cryptographic Provider v1.0
- Microsoft Base Smart Card Crypto Provider (taille de clé maximale de 2048 bits)
- Microsoft Enhanced Cryptographic Provider v1.0
- Microsoft Enhanced RSA and AES Cryptographic Provider
- Microsoft RSA SChannel Cryptographic Provider (pas pour les clés de signature pures)
- Fournisseur de cryptographie Microsoft Strong
| Fournisseur | Notes |
|---|---|
| Microsoft Base Cryptographic Provider v1.0 | Ne devrait plus être utilisé dans la mesure du possible. |
| Microsoft Base DSS et Diffie-Hellman Cryptographic Provider | Ne peut pas être utilisé pour la génération de clés RSA. Ne devrait plus être utilisé dans la mesure du possible. |
| Microsoft Base DSS Cryptographic Provider | Ne peut pas être utilisé pour la génération de clés RSA. |
| Fournisseur de cartes à puce Microsoft Base Crypto | Fournisseur générique permettant de stocker des clés dans un Carte à puce à enregistrer. Longueur de clé maximale limitée à 2048 bits. Ne devrait plus être utilisé dans la mesure du possible. |
| Fournisseur de cryptographie Microsoft DH SChannel | Ne peut pas être utilisé pour la génération de clés RSA. |
| Microsoft Enhanced Cryptographic Provider v1.0 | Ne devrait plus être utilisé dans la mesure du possible. |
| Microsoft Enhanced DSS et Diffie-Hellman Cryptographic Provider | Ne peut pas être utilisé pour la génération de clés RSA. |
| Microsoft Enhanced RSA and AES Cryptographic Provider | Ne devrait plus être utilisé dans la mesure du possible. |
| Fournisseur de cryptographie Microsoft RSA SChannel | Supporte le SChannel Security Package et AES avec une longueur de clé allant jusqu'à 256 bits. Devrait donc être utilisé pour TLS/SSL (p.ex. Serveur web, Bureau à distance) si aucun fournisseur de stockage de clés n'est possible. Paramètre par défaut pour les serveurs web et les modèles de certificats CEP Encryption. |
| Fournisseur de cryptographie Microsoft Strong | Ne devrait plus être utilisé dans la mesure du possible. |
Utilisation de fournisseurs de stockage de clés
L'utilisation de fournisseurs de stockage de clés dans un modèle de certificat est autorisée si la compatibilité de l'autorité de certification et des clients demandeurs est réglée sur au moins Windows Vista / Windows Server 2008. Le modèle de certificat passe ainsi à la version 3 et ne peut plus être utilisé par des systèmes d'exploitation plus anciens.
Voir également les articles suivants à ce sujet :
- Description des générations de modèles de certificats
- Comment les paramètres de compatibilité pour les modèles de certificats sont-ils représentés techniquement ?
Suis-je libre de choisir mon fournisseur d'accès lors de la configuration de mon modèle de certificat ?
Non, l'utilisation du fournisseur dépend non seulement de ses capacités cryptographiques, mais aussi de la capacité de l'application à l'utiliser. Par exemple, les systèmes d'exploitation antérieurs à Windows Vista ne sont pas en mesure d'utiliser des fournisseurs de stockage de clés. Le site Microsoft Platform Crypto Provider ne prend pas en charge tous les algorithmes, par exemple.
De même, certaines applications dépendent encore aujourd'hui de l'utilisation d'un CSP. Un exemple marquant est le Service d'enregistrement des périphériques réseau (NDES), ainsi que le connecteur correspondant pour Microsoft Intune.
Voir également les articles suivants à ce sujet :
- Liste des cas d'utilisation des certificats nécessitant des fournisseurs de services cryptographiques (CSP) ou des fournisseurs de stockage de clés (KSP) spécifiques
- Quel fournisseur de services cryptographiques (CSP) doit être utilisé pour le service d'enregistrement des périphériques réseau (NDES) ?
- Utiliser ses propres modèles de certificats d'autorité d'enregistrement (RA) pour le service d'enregistrement des périphériques réseau (NDES)
Dois-je absolument utiliser un fournisseur de stockage de clés ?
On peut considérer comme une bonne pratique le fait de recourir à un fournisseur de stockage de clés plutôt qu'à un fournisseur de services cryptographiques partout où cela est possible et de veiller à ce que les applications développées en interne soient compatibles avec ces derniers.
Comment afficher les fournisseurs d'accès installés sur le système ?
Les fournisseurs d'accès présents sur un système peuvent être listés à l'aide de la commande suivante :
certutil -csplist
Avec Windows PowerShell, l'énumération est possible grâce à l'attribut ICSPInformations COM objet possible :
$KspList = New-Object -ComObject 'X509Enrollment.CCspInformations' $KspList.AddAvailableCsps() $KspList | Select-Object -Property Name

Comment puis-je savoir quel fournisseur d'accès utilise un certificat donné ?
Il existe pour cela une commande „certutil“. Le certificat correspondant est identifié par sa somme de contrôle SHA1 (également appelée thumbprint).
Pour le magasin de certificats de l'ordinateur :
certutil -verifystore my {Thumbprint}
Pour la liste de certificats de l'utilisateur actuellement connecté :
certutil -user -verifystore my {Thumbprint}

Comment répertorier les clés protégées par un fournisseur d'accès spécifique ?
Il existe également une commande „certutil“ pour cela :
Pour le magasin de certificats de l'ordinateur :
certutil -csp "{CSPName}" -key
Pour la liste de certificats de l'utilisateur actuellement connecté :
certutil -user -csp "{CSPName}" -key

Liens complémentaires :
- Bases : algorithmes de clés, algorithmes de signature et algorithmes de hachage de signature
- Principes de base : les courbes elliptiques en vue de leur utilisation dans l'infrastructure à clé publique
Sources externes
- Cryptographie de nouvelle génération (Microsoft Corporation)
- Fournisseurs de stockage de clés GNC (Microsoft Corporation)
- CryptoAPI Fournisseurs de services cryptographiques (Microsoft Corporation)
- certutil (Microsoft Coropration)
- Différence entre les fournisseurs de services cryptographiques (Microsoft Strong vs RSA SChannel) (Forums Microsoft TechNet)
- Comprendre les fournisseurs de services cryptographiques Microsoft (PKI Solutions, Inc.)
- Vérifier le stockage des clés Windows Hello : TPM ou logiciel ? (Helge Klein)
- Inscription de certificats : Crypto API, CNG, et autres API Windows (Johannes Passing)
- Comment garder un secret dans Windows (Ryan Hurst)
Les commentaires sont fermés.