Partager via


Désactiver les algorithmes de chiffrement faibles dans la validation de certificat

Cet article explique comment désactiver des algorithmes de chiffrement faibles à l’aide de stratégies sur Windows et Windows Server. Ces stratégies s’appliquent uniquement à la validation des certificats X.509 : lorsque Windows vérifie les certificats numériques pour les connexions TLS, la signature de code et d’autres scénarios de sécurité.

Vous pouvez configurer Windows pour rejeter les certificats qui utilisent des algorithmes obsolètes tels que MD5 et SHA1 ou des clés RSA trop courtes pour être sécurisées. Le rejet de certificats faibles permet de protéger votre environnement contre les certificats qui peuvent facilement être compromis ou falsifiés. À l’aide de ces stratégies, vous pouvez :

  • Participer ou se désinscrire de chaque politique indépendamment.

  • Activez la journalisation par stratégie (indépendamment des autres stratégies). La journalisation est désactivée par défaut.

  • Spécifiez un emplacement vers lequel les certificats désactivés sont copiés.

  • Configurez des stratégies pour les algorithmes de hachage et les algorithmes asymétriques.

Syntaxe de stratégie

La stratégie d’algorithme de chiffrement est définie dans le Registre Windows et définie à l’aide de l’Éditeur du Registre ou certutil. L’administrateur définit la stratégie dans la clé de Registre suivante :

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\OID\EncodingType 0\CertDllCreateCertificateChainEngine\Config

Les stratégies sont définies à l’aide de la syntaxe suivante :

Weak<CryptoAlg><ConfigType><ValueType>

CryptoAlg, ConfigTypeet ValueType sont présents dans tous les noms de stratégie.

Par exemple, WeakMD5ThirdPartyFlags ou WeakRSAAllMinBitLength.

Pour chaque stratégie, les valeurs suivantes peuvent être définies :

  • CryptoAlg valeurs possibles :

    • Md5 - Algorithme de hachage MD5.
    • Sha1 - Algorithme de hachage SHA1.
    • Rsa - Algorithme asymétrique RSA.
    • Dsa - Algorithme asymétrique DSA.
    • Ecdsa - Algorithme asymétrique ECDSA.
  • ConfigType valeurs possibles :

    • Tiers : la stratégie est appliquée uniquement aux certificats sous des racines tierces.
    • Tout : la stratégie est appliquée à tous les certificats, même sous les racines d’entreprise.
  • ValueType valeurs possibles :

    • Indique - REG_DWORD un type de données qui peut être défini pour désactiver l’algorithme de hachage ou activer une longueur minimale de clé. Une répartition de la façon de calculer les indicateurs est fournie dans la section suivante.

    • MinBitLength - REG_DWORD type de données qui spécifie la longueur minimale de clé publique en bits. MinBitLength s’applique uniquement à la stratégie d’algorithmes clés. Spécifié comme valeur décimale de la longueur minimale de clé en bits. Par exemple, 1024 représente une longueur minimale de clé de 1 024 bits.

    • AfterTime - REG_BINARY type de données qui contient un FILETIME de 8 octets. La vérification de l’algorithme de chiffrement faible est désactivée pour les fichiers horodatés avant cette heure. Cette valeur de configuration n’est pas applicable aux chaînes d’horodatage.

    • Sha256Allow - REG_SZ ou REG_MULTI_SZ type de données qui contient la liste des empreintes numériques SHA256 de certificat (ASCII_HEX mises en forme) identifiant les certificats faibles à autoriser explicitement. Les caractères non ASCII_HEX de la chaîne sont ignorés, ce qui autorise les espaces incorporés.

Indicatifs de type de valeur

Pour définir les indicateurs d’une stratégie d’algorithme de chiffrement faible, vous pouvez utiliser les valeurs suivantes REG_DWORD . Ces indicateurs sont utilisés pour activer ou désactiver des comportements spécifiques pour les stratégies d’algorithme de chiffrement.

Vous pouvez combiner ces indicateurs à l’aide d’une opération OR au niveau du bit pour créer une valeur d’indicateur composite qui représente plusieurs comportements.

Par exemple, pour activer la journalisation et désactiver l’algorithme pour toutes les EKU, vous pouvez combiner les indicateurs CERT_CHAIN_ENABLE_WEAK_LOGGING_FLAG et CERT_CHAIN_DISABLE_ALL_EKU_WEAK_FLAG. Pour combiner ces indicateurs, vous devez assigner la valeur 0x80010004, ce qui correspond à 0x80000000 | 0x00010000 | 0x00000004.

Développez les sections suivantes pour afficher une description des indicateurs qui peuvent être définis pour les stratégies d’algorithme de chiffrement faibles :

Activer les paramètres de chiffrement faibles

L’indicateur CERT_CHAIN_ENABLE_WEAK_SETTINGS_FLAG est utilisé pour activer ou désactiver des paramètres d’algorithme de chiffrement faibles pour une stratégie d’algorithme de chiffrement spécifique. Cet indicateur est essentiel pour contrôler la façon dont les algorithmes faibles sont gérés dans le processus de création de la chaîne de certificats.

Valeur hexadécimale : 0x80000000

Voici quelques exemples pour illustrer comment le drapeau CERT_CHAIN_ENABLE_WEAK_SETTINGS_FLAG (0x80000000) affecte le comportement de la politique :

  • Si cet indicateur n’est pas défini pour une stratégie donnée Weak<CryptoAlg><ConfigType>Flags , tous les autres indicateurs et valeurs de Registre pour cette stratégie sont ignorés. Par exemple, si vous configurez d’autres indicateurs pour WeakMD5ThirdPartyFlags mais que vous ne définissez 0x80000000pas, ces paramètres n’ont aucun effet.

  • Lorsqu’un administrateur définit cet indicateur pour une stratégie spécifique Weak<CryptoAlg><ConfigType>Flags , les paramètres de stratégie définis dans le Registre remplacent le comportement du système d’exploitation par défaut pour cet algorithme de chiffrement et ce type de configuration.

  • Si l’indicateur est défini dans Weak<CryptoAlg>AllFlags la stratégie, le résultat Weak<CryptoAlg>ThirdPartyFlags est une combinaison des valeurs définies dans les deux Weak<CryptoAlg>ThirdPartyFlags et Weak<CryptoAlg>AllFlags, à l’exception des indicateurs liés à la journalisation, qui ne sont pas combinés. Par exemple, les indicateurs tiers effectifs sont calculés comme suit :
    ThirdPartyFlags |= AllFlags & ~(CERT_CHAIN_ENABLE_WEAK_LOGGING_FLAG | CERT_CHAIN_ENABLE_ONLY_WEAK_LOGGING_FLAG);

  • Pour les paramètres de longueur temporelle et de clé, la valeur résultante Weak<CryptoAlg>ThirdPartyAfterTime est la valeur la plus ancienne entre Weak<CryptoAlg>AllAfterTime et Weak<CryptoAlg>ThirdPartyAfterTime (si les deux sont définies et non nulles). De même, le résultat Weak<KeyCryptoAlg>ThirdPartyMinBitLength est la plus grande valeur entre Weak<KeyCryptoAlg>AllMinBitLength et Weak<KeyCryptoAlg>ThirdPartyMinBitLength.

Ces exemples montrent comment l’indicateur détermine si les paramètres de stratégie personnalisés sont appliqués. L’exemple explique également comment les valeurs combinées sont calculées lorsque les configurations « All » et « ThirdParty » sont définies.

Activer la journalisation

Lorsque cet indicateur est défini, les certificats faibles identifiés pendant le processus de génération de la chaîne de certificats sont enregistrés dans le répertoire spécifié par la valeur de CERT_CHAIN_WEAK_SIGNATURE_LOG_DIR_VALUE_NAME Registre. La journalisation permet aux administrateurs de passer en revue et de prendre des mesures sur des certificats faibles susceptibles de présenter des risques de sécurité.

Valeur hexadécimale : 0x00000004

Journalisation uniquement des audits

Lorsque l’indicateur CERT_CHAIN_ENABLE_ONLY_WEAK_LOGGING_FLAG est défini, seules les erreurs de signature faibles sont enregistrées et aucune erreur de génération de chaîne n’est retournée. Dans ce mode, les erreurs de signature faibles ne sont pas retournées, ce qui permet un mode audit uniquement où les certificats faibles sont enregistrés sans affecter le processus de génération de chaîne.

Valeur hexadécimale : 0x00000008

Désactiver toutes les EKU

L’indicateur CERT_CHAIN_DISABLE_ALL_EKU_WEAK_FLAG est utilisé pour désactiver l’algorithme correspondant à la stratégie pour toutes les utilisations de clés améliorées (EKU). Cela signifie que l’algorithme de chiffrement spécifié ne sera utilisé pour aucun certificat, quelle que soit leur référence EKU.

Valeur hexadécimale : 0x00010000

Désactiver les utilisations améliorées de la clé d’authentification du serveur d’acceptation

L’indicateur CERT_CHAIN_DISABLE_OPT_IN_SERVER_AUTH_WEAK_FLAG est utilisé pour désactiver l’algorithme correspondant à la stratégie des EKUs d’authentification serveur, mais uniquement pour les applications qui optent pour cette modification à l’aide du CERT_CHAIN_OPT_IN_WEAK_SIGNATURE paramètre. La stratégie de signature faible permet aux administrateurs d’exercer un contrôle plus précis sur les applications affectées.

Valeur hexadécimale : 0x00040000

EKUs d’authentification du serveur désactivés

L’indicateur CERT_CHAIN_DISABLE_SERVER_AUTH_WEAK_FLAG est utilisé pour désactiver l’algorithme correspondant à la stratégie pour les EKU d’authentification serveur. Cela signifie que l’algorithme de chiffrement spécifié ne sera pas utilisé pour les certificats avec des EKUs d’authentification serveur, que les applications optent ou non.

Valeur hexadécimale : 0x00100000

Désactiver les utilisations améliorées de la clé de signature de code

L’indicateur CERT_CHAIN_DISABLE_CODE_SIGNING_WEAK_FLAG est utilisé pour désactiver l’algorithme correspondant à la stratégie pour la signature de code Utilisations de clés améliorées (EKU). Cela signifie que l’algorithme de chiffrement spécifié ne sera pas utilisé pour les certificats de signature de code.

Valeur hexadécimale : 0x00400000

Désactiver les EKUs de signature de code pour les fichiers binaires téléchargés depuis l'Internet

L’indicateur CERT_CHAIN_DISABLE_MOTW_CODE_SIGNING_WEAK_FLAG est utilisé pour désactiver l’algorithme correspondant à la stratégie pour les EKU de signature de code, mais uniquement lorsque le fichier binaire est téléchargé à partir du web.

Valeur hexadécimale : 0x00800000

Désactiver les utilisations améliorées de la clé d’horodatage

L’indicateur CERT_CHAIN_DISABLE_TIMESTAMP_WEAK_FLAG est utilisé pour désactiver l’algorithme correspondant à la stratégie pour les utilisations de clés améliorées par horodatage (EKUs). Cela signifie que l’algorithme de chiffrement spécifié ne sera pas utilisé pour les certificats d’horodatage.

Valeur hexadécimale : 0x04000000

Désactiver les utilisations améliorées de la clé d’horodatage pour les fichiers binaires téléchargés à partir du web

L’indicateur CERT_CHAIN_DISABLE_MOTW_TIMESTAMP_WEAK_FLAG est utilisé pour désactiver l’algorithme correspondant à la stratégie pour les EKU d'horodatage, mais uniquement lorsque le fichier binaire est téléchargé depuis le Web.

Valeur hexadécimale : 0x08000000

Conditions préalables

Pour configurer des stratégies d’algorithme de chiffrement faibles, vous avez besoin des prérequis suivants :

  • Accès administratif local pour modifier les paramètres du Registre.

  • (Facultatif) Répertoire de journal désigné si vous activez la journalisation pour la détection de certificats faibles.

Vous devez également disposer des informations suivantes pour configurer les stratégies :

  • Nom de l’algorithme de chiffrement (par exemple, MD5, SHA256, RSA, DSA, ECDSA).

  • Pour les algorithmes asymétriques, la taille de clé minimale requise (par exemple, 1 024 bits pour RSA).

  • Indique si la stratégie doit s’appliquer aux certificats liés à des autorités de certification racine tierces ou à tous les certificats.

  • Heure avant laquelle la vérification de stratégie est désactivée (pour certificats de signature de code utilisés dans des fichiers binaires signés et horodatés).

  • Les types de certificats ou d'utilisations de clés améliorées (EKUs) auxquels la stratégie s'applique, tels que :

    • Tous les certificats

    • Utilisation améliorée de la clé d’authentification du serveur

    • Utilisation améliorée de la clé de signature de code

    • Utilisation améliorée de la clé d’horodatage

  • Indique si la stratégie s’applique uniquement aux fichiers binaires téléchargés à partir du web ou à tous les fichiers binaires.

  • Toutes les exceptions pour les certificats de signature de code ou d’horodatage spécifiques, identifiées par leur empreinte SHA2.

Configurer une stratégie d’algorithme de chiffrement faible

Pour configurer une stratégie d’algorithme de chiffrement faible, vous pouvez utiliser l’outil certutil en ligne de commande ou modifier directement le Registre Windows. Sélectionnez la méthode qui convient le mieux à vos besoins.

Pour configurer une stratégie d’algorithme de chiffrement faible, vous pouvez utiliser l’outil certutil -setreg chain en ligne de commande. Cet outil vous permet d’afficher, de configurer et de supprimer des paramètres de stratégie d’algorithme de chiffrement faibles. Pour en savoir plus sur l’outil certutil en ligne de commande, consultez certutil.

Pour configurer une stratégie d’algorithme de chiffrement faible, procédez comme suit :

  1. Déterminez l’algorithme de chiffrement que vous souhaitez désactiver et le type de configuration (par exemple, tiers ou tout) à l’aide des indicateurs et des valeurs décrits dans la section syntaxe de stratégie. Effectuez une opération OR au niveau du bit pour combiner les indicateurs en fonction des besoins et enregistrer la valeur résultante.

  2. Ouvrez une invite de commandes avec les privilèges d’administrateur.

  3. Pour créer une stratégie basée sur un indicateur d’algorithme de chiffrement faible, utilisez la commande suivante :

    certutil -setreg chain\Weak<CryptoAlg><ConfigType>Flags <value>
    

    Remplacez <CryptoAlg>, <ConfigType> et <value> par les valeurs appropriées pour votre politique.

    Par exemple, pour désactiver MD5 pour tous les certificats d’authentification de serveur SSL sous des autorités de certification racine tierces, vous pouvez utiliser les commandes suivantes :

    certutil -setreg chain\WeakMD5ThirdPartyFlags 0x80100000
    
  4. Pour créer une stratégie d’algorithme asymétrique, utilisez la commande suivante :

    certutil -setreg chain\Weak<CryptoAlg><ConfigType>MinBitLength <value>
    

    Remplacez <CryptoAlg>, <ConfigType> et <value> par les valeurs appropriées pour votre politique.

    Par exemple, pour désactiver RSA 1024 sous des autorités de certification racine tierces, vous pouvez utiliser les commandes suivantes :

    certutil -setreg chain\WeakRSAThirdPartyMinBitLength 1024
    
  5. Pour créer une stratégie basée sur le temps, utilisez la commande suivante :

    certutil -setreg chain\Weak<CryptoAlg><ConfigType>AfterTime <value>
    

    Remplacez <CryptoAlg>, <ConfigType> et <value> par les valeurs appropriées pour votre politique.

    Par exemple, pour désactiver MD5 pour tous les certificats d’authentification de serveur SSL sous des autorités de certification racine tierces avant le 1er mars 2009, vous pouvez utiliser les commandes suivantes :

    certutil -setreg chain\WeakMD5ThirdPartyAfterTime @03/01/2009
    

Afficher les stratégies configurées

Pour afficher les stratégies d’algorithme de chiffrement faibles actuellement configurées, vous pouvez utiliser l’outil certutil en ligne de commande ou l’éditeur de Registre Windows. Sélectionnez la méthode qui convient le mieux à vos besoins.

Pour afficher les stratégies d’algorithme de chiffrement faibles actuellement configurées à l’aide de l’outil certutil en ligne de commande, procédez comme suit :

  1. Ouvrez une invite de commandes avec les privilèges d’administrateur.

  2. Pour afficher le comportement du système d’exploitation par défaut pour les algorithmes de chiffrement faibles, exécutez la commande suivante :

    certutil -getreg chain\default
    
  3. Pour afficher les stratégies d’algorithme de chiffrement faibles actuellement configurées, exécutez la commande suivante :

    certutil -getreg chain\Weak<CryptoAlg><ConfigType>Flags
    

    Remplacez <CryptoAlg> et <ConfigType> par les valeurs appropriées pour votre stratégie.

    Par exemple, pour afficher les indicateurs tiers MD5, vous pouvez utiliser la commande suivante :

    certutil -getreg chain\WeakMD5ThirdPartyFlags
    
  4. Pour afficher toutes les stratégies d’algorithme de chiffrement faibles configurées, vous pouvez exécuter la commande suivante :

    certutil -getreg chain
    

Activation de la journalisation

L’infrastructure De chiffrement faible dans Windows fournit un mécanisme permettant de journaliser des certificats de chiffrement faibles. Ce mécanisme permet aux administrateurs de surveiller et de prendre des mesures sur les certificats considérés comme faibles en fonction des paramètres configurés.

Vous pouvez activer la journalisation à l’aide de l’outil certutil en ligne de commande ou en modifiant directement le Registre Windows. Sélectionnez la méthode qui convient le mieux à vos besoins.

Pour activer la journalisation pour les certificats de chiffrement faibles à l’aide de l’outil certutil en ligne de commande, procédez comme suit :

  1. Créez un répertoire de journaux dans lequel les certificats faibles sont enregistrés. Par exemple, créez un répertoire à l’adresse C:\Log et vérifiez qu’il dispose des autorisations appropriées.

  2. Pour définir le répertoire de journalisation, utilisez la commande suivante :

    certutil -setreg chain\WeakSignatureLogDir c:\log
    
  3. Pour activer la journalisation, définissez l’indicateur de journalisation pour une stratégie de chiffrement faible existante. Combinez le CERT_CHAIN_ENABLE_WEAK_LOGGING_FLAG (0x00000004) ou CERT_CHAIN_ENABLE_ONLY_WEAK_LOGGING_FLAG (0x00000008) avec les indicateurs existants pour la stratégie. Par exemple, vous pouvez activer la journalisation de tous les certificats tiers MD5 faibles d’utilisation améliorée de la clé à l’aide de la commande suivante :

    certutil -setreg chain\WeakMD5ThirdPartyFlags 0x80010004