Limiter l’utilisation de certains algorithmes et protocoles de chiffrement dans Schannel.dll

Cet article explique comment limiter l’utilisation de certains algorithmes et protocoles de chiffrement dans le fichier Schannel.dll. Ces informations s’appliquent également aux applications des éditeurs de logiciels indépendants (ISV) écrites pour l’API de chiffrement Microsoft (CAPI).

Produit concerné : Windows Server 2003
Numéro de l’article d’origine dans la base de connaissances : 245030

Remarque

Cet article s’applique à Windows Server 2003 et aux versions antérieures de Windows. Pour les clés de Registre qui s’appliquent à Windows Server 2008 et aux versions ultérieures de Windows, consultez l’article Paramètres de Registre du protocole TLS.

Résumé

Les fournisseurs de services de chiffrement (CSP) suivants inclus dans Windows NT 4.0 Service Pack 6 ont reçu les certificats pour la validation de chiffrement FIPS-140-1.

  • Fournisseur de services de chiffrement de base Microsoft (Rsabase.dll)
  • Fournisseur de services de chiffrement amélioré Microsoft (Rsaenh.dll) (version non destinée à l’exportation)

Le fournisseur de sécurité Microsoft TLS/SSL (fichier Schannel.dll), utilise les CSP répertoriés ici pour effectuer les communications sécurisées sur SSL ou TLS dans le cadre de sa prise en charge d’Internet Explorer et d’Internet Information Services (IIS).

Vous pouvez modifier le fichier Schannel.dll pour assurer la prise en charge des suites de chiffrement 1 et 2. Toutefois, le programme doit également prendre en charge les suites de chiffrement 1 et 2, qui ne sont pas prises en charge dans IIS 4.0 et 5.0.

Cet article contient les informations nécessaires pour configurer le fournisseur de sécurité TLS/SSL pour Windows NT 4.0 Service Pack 6 et versions ultérieures. Vous pouvez utiliser le Registre Windows pour déterminer l’utilisation de suites de chiffrement SSL 3.0 ou TLS 1.0 spécifiques en ce qui concerne les algorithmes de chiffrement pris en charge par le fournisseur de services de chiffrement de base ou le fournisseur de services chiffrement amélioré.

Remarque

Dans Windows NT 4.0 Service Pack 6, le fichier Schannel.dll n’utilise pas le fournisseur de services de chiffrement DSS de base Microsoft (Dssbase.dll) ni le fournisseur de services chiffrement amélioré DS/Diffie-Hellman Microsoft (Dssenh.dll).

Suites de chiffrement

SSL 3.0 et TLS 1.0 (RFC2246) avec INTERNET-DRAFT 56 bits Export Cipher Suites for TLS draft-ietf-tls-56-bit-ciphersuites-00.txt proposent des options permettant d’utiliser différentes suites de chiffrement. Chaque suite de chiffrement détermine les algorithmes d’échange de clés, d’authentification, de chiffrement et MAC utilisés dans une session SSL/TLS. Quand vous utilisez RSA comme algorithmes d’échange de clés et d’authentification, le terme RSA n’apparaît qu’une seule fois dans les définitions de suite de chiffrement correspondantes.

Le fournisseur de sécurité Microsoft TLS/SSL pour Windows NT 4.0 Service Pack 6 prend en charge la suite de chiffrement SSL 3.0 suivante quand vous utilisez le fournisseur de services de chiffrement de base ou le fournisseur de services de chiffrement amélioré :

SSL 3.0 Suite de chiffrement
SSL_RSA_EXPORT_WITH_RC4_40_MD5 { 0x00,0x03 }
SSL_RSA_WITH_RC4_128_MD5 { 0x00,0x04 }
SSL_RSA_WITH_RC4_128_SHA { 0x00,0x05 }
SSL_RSA_EXPORT_WITH_RC2_CBC_40_MD5 { 0x00,0x06 }
SSL_RSA_WITH_DES_CBC_SHA { 0x00,0x09 }
SSL_RSA_WITH_3DES_EDE_CBC_SHA { 0x00,0x0A }
SSL_RSA_EXPORT1024_WITH_DES_CBC_SHA { 0x00,0x62 }
SSL_RSA_EXPORT1024_WITH_RC4_56_SHA { 0x00,0x64 }

Remarque

SSL_RSA_EXPORT1024_WITH_DES_CBC_SHA et SSL_RSA_EXPORT1024_WITH_RC4_56_SHA ne sont pas définis dans le texte SSL 3.0. Toutefois, plusieurs fournisseurs SSL 3.0 les prennent en charge, dont Microsoft.

Le fournisseur de sécurité Microsoft TLS/SSL pour Windows NT 4.0 Service Pack 6 prend également en charge la suite de chiffrement TLS 1.0 suivante quand vous utilisez le fournisseur de services de chiffrement de base ou le fournisseur de services de chiffrement amélioré :

TLS 1.0 Suite de chiffrement
TLS_RSA_EXPORT_WITH_RC4_40_MD5 { 0x00,0x03 }
TLS_RSA_WITH_RC4_128_MD5 { 0x00,0x04 }
TLS_RSA_WITH_RC4_128_SHA { 0x00,0x05 }
TLS_RSA_EXPORT_WITH_RC2_CBC_40_MD5 { 0x00,0x06 }
TLS_RSA_WITH_DES_CBC_SHA { 0x00,0x09 }
TLS_RSA_WITH_3DES_EDE_CBC_SHA { 0x00,0x0A }
TLS_RSA_EXPORT1024_WITH_DES_CBC_SHA { 0x00,0x62 }
TLS_RSA_EXPORT1024_WITH_RC4_56_SHA { 0x00,0x64 }

Remarque

Une suite de chiffrement définie à l’aide du premier octet 0x00 n’est pas privée et est utilisée pour les communications interopérables ouvertes. Par conséquent, le fournisseur de sécurité Microsoft TLS/SSL pour Windows NT 4.0 Service Pack 6 suit les procédures d’utilisation de ces suites de chiffrement spécifiées dans SSL 3.0 et TLS 1.0 pour garantir l’interopérabilité.

Clés de Registre spécifiques à Schannel

Importante

Cette section, méthode ou tâche contient des étapes vous indiquant comment modifier le Registre. Toutefois, des problèmes graves peuvent se produire si vous modifiez le Registre de façon incorrecte. Par conséquent, veillez à suivre ces étapes scrupuleusement. Pour une meilleure protection, sauvegardez le registre avant de le modifier. Vous pouvez alors le restaurer en cas de problème. Pour plus d’informations sur la procédure de sauvegarde et de restauration du Registre, consultez l’article Comment sauvegarder et restaurer le Registre dans Windows.

Remarque

Toutes les modifications apportées au contenu de la clé CIPHERS ou HASHES prennent effet immédiatement, sans redémarrage du système.

Clé SCHANNEL

Dans l’Éditeur du Registre (Regedt32.exe), puis recherchez la clé de Registre suivante :
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL

Sous-clé SCHANNEL\Protocols

Pour permettre au système d’utiliser les protocoles qui ne sont pas négociés par défaut (tels que TLS 1.1 et TLS 1.2), remplacez les données de valeur DWORD de la valeur DisabledByDefault par 0x0 dans les clés de Registre suivantes sous la clé Protocols :

  • SCHANNEL\Protocols\TLS 1.1\Client
  • SCHANNEL\Protocols\TLS 1.1\Server
  • SCHANNEL\Protocols\TLS 1.2\Client
  • SCHANNEL\Protocols\TLS 1.2\Server

Avertissement

La valeur DisabledByDefault dans les clés de Registre sous la clé Protocols n’est pas prioritaire sur la valeur grbitEnabledProtocols définie dans la structure SCHANNEL_CRED qui contient les données d’informations d’identification Schannel.

Sous-clé SCHANNEL\Ciphers

La clé de Registre Ciphers sous la clé SCHANNEL sert à déterminer l’utilisation d’algorithmes symétriques tels que DES et RC4. Les clés de Registre ci-dessous sont valides sous la clé Ciphers.

Créez la sous-clé SCHANNEL Ciphers au format suivant : SCHANNEL\(VALUE)\(VALUE/VALUE)

RC4 128/128

Sous-clé Ciphers : SCHANNEL\Ciphers\RC4 128/128

Cette sous-clé désigne RC4 128 bits.

Pour autoriser cet algorithme de chiffrement, remplacez les données de valeur DWORD de la valeur Enabled par 0xffffffff. Vous pouvez également remplacer les données de valeur DWORD par 0x0. Si vous ne configurez pas la valeur Enabled, la valeur par défaut est activée. Cette clé de Registre ne s’applique pas à un serveur exportable qui n’a pas de certificat SGC.

La désactivation de cet algorithme interdit les valeurs suivantes :

  • SSL_RSA_WITH_RC4_128_MD5
  • SSL_RSA_WITH_RC4_128_SHA
  • TLS_RSA_WITH_RC4_128_MD5
  • TLS_RSA_WITH_RC4_128_SHA

Triple DES 168

Sous-clé Ciphers : SCHANNEL\Ciphers\Triple DES 168

Cette clé de Registre désigne Triple DES 168 bits conformément aux normes ANSI X9.52 et Draft FIPS 46-3. Cette clé de Registre ne s’applique pas à la version destinée à l’exportation.

Pour autoriser cet algorithme de chiffrement, remplacez les données de valeur DWORD de la valeur Enabled par 0xffffffff. Vous pouvez également remplacer les données DWORD par 0x0. Si vous ne configurez pas la valeur Enabled, la valeur par défaut est activée.

La désactivation de cet algorithme interdit les valeurs suivantes :

  • SSL_RSA_WITH_3DES_EDE_CBC_SHA

  • SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA

  • TLS_RSA_WITH_3DES_EDE_CBC_SHA

  • TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA

    Remarque

    Pour les versions de Windows publiées avant Windows Vista, la clé doit être Triple DES 168/168.

RC2 128/128

Sous-clé Ciphers : SCHANNEL\Ciphers\RC2 128/128

Cette clé de Registre désigne RC2 128 bits. Elle ne s’applique pas à la version destinée à l’exportation.

Pour autoriser cet algorithme de chiffrement, remplacez les données de valeur DWORD de la valeur Enabled par 0xffffffff. Sinon, remplacez les données de valeur DWORD par 0x0. Si vous ne configurez pas la valeur Enabled, la valeur par défaut est activée.

RC4 64/128

Sous-clé Ciphers : SCHANNEL\Ciphers\RC4 64/128

Cette clé de Registre désigne RC4 64 bits. Elle ne s’applique pas à la version destinée à l’exportation (mais elle est utilisée dans Microsoft Money).

Pour autoriser cet algorithme de chiffrement, remplacez les données de valeur DWORD de la valeur Enabled par 0xffffffff. Sinon, remplacez les données de valeur DWORD par 0x0. Si vous ne configurez pas la valeur Enabled, la valeur par défaut est activée.

RC4 56/128

Sous-clé Ciphers : SCHANNEL\Ciphers\RC4 56/128

Cette clé de Registre désigne RC4 56 bits.

Pour autoriser cet algorithme de chiffrement, remplacez les données de valeur DWORD de la valeur Enabled par 0xffffffff. Sinon, remplacez les données de valeur DWORD par 0x0. Si vous ne configurez pas la valeur Enabled, la valeur par défaut est activée.

La désactivation de cet algorithme interdit la valeur suivante :

  • TLS_RSA_EXPORT1024_WITH_RC4_56_SHA

RC2 56/128

Sous-clé Ciphers : SCHANNEL\Ciphers\RC2 56/128

Cette clé de Registre désigne RC2 56 bits.

Pour autoriser cet algorithme de chiffrement, remplacez les données de valeur DWORD de la valeur Enabled par 0xffffffff. Sinon, remplacez les données de valeur DWORD par 0x0. Si vous ne configurez pas la valeur Enabled, la valeur par défaut est activée.

DES 56

Sous-clé Ciphers : SCHANNEL\Ciphers\DES 56/56

Cette clé de Registre désigne DES 56 bits conformément à la norme FIPS 46-2. Son implémentation dans les fichiers Rsabase.dll et Rsaenh.dll est validée dans le cadre du programme CMVP (Cryptographic Module Validation Program) FIPS 140-1.

Pour autoriser cet algorithme de chiffrement, remplacez les données de valeur DWORD de la valeur Enabled par 0xffffffff. Sinon, remplacez les données de valeur DWORD par 0x0. Si vous ne configurez pas la valeur Enabled, la valeur par défaut est activée.

La désactivation de cet algorithme interdit les valeurs suivantes :

  • SSL_RSA_WITH_DES_CBC_SHA
  • TLS_RSA_WITH_DES_CBC_SHA

RC4 40/128

Sous-clé Ciphers : SCHANNEL\Ciphers\RC4 40/128

Cette clé de Registre désigne RC4 40 bits.

Pour autoriser cet algorithme de chiffrement, remplacez les données de valeur DWORD de la valeur Enabled par 0xffffffff. Sinon, remplacez les données de valeur DWORD par 0x0. Si vous ne configurez pas la valeur Enabled, la valeur par défaut est activée.

La désactivation de cet algorithme interdit les valeurs suivantes :

  • SSL_RSA_EXPORT_WITH_RC4_40_MD5
  • TLS_RSA_EXPORT_WITH_RC4_40_MD5

RC2 40/128

Sous-clé Ciphers : SCHANNEL\Ciphers\RC2 40/128

Cette clé de Registre désigne RC2 40 bits.

Pour autoriser cet algorithme de chiffrement, remplacez les données de valeur DWORD de la valeur Enabled par 0xffffffff. Sinon, remplacez les données de valeur DWORD par 0x0. Si vous ne configurez pas la valeur Enabled, la valeur par défaut est activée.

La désactivation de cet algorithme interdit les valeurs suivantes :

  • SSL_RSA_EXPORT_WITH_RC2_CBC_40_MD5
  • TLS_RSA_EXPORT_WITH_RC2_CBC_40_MD5

NULL

Sous-clé Ciphers : SCHANNEL\Ciphers\NULL

Cette clé de Registre indique qu’aucun chiffrement n’est appliqué. Elle est désactivée par défaut.

Pour désactiver le chiffrement (interdire tous les algorithmes de chiffrement), remplacez les données de valeur DWORD de la valeur Enabled par 0xffffffff. Sinon, remplacez les données de valeur DWORD par 0x0.

Hashes

Sous-clé Ciphers : SCHANNEL/Hashes

La clé de Registre Hashes sous la clé SCHANNEL sert à déterminer l’utilisation d’algorithmes de hachage tels que SHA-1 et MD5. Les clés de Registre ci-dessous sont valides sous la clé Hashes.

MD5

Sous-clé Ciphers : SCHANNEL\Hashes\MD5

Pour autoriser cet algorithme de hachage, remplacez les données de valeur DWORD de la valeur Enabled par la valeur par défaut 0xffffffff. Sinon, remplacez les données de valeur DWORD par 0x0.

La désactivation de cet algorithme interdit les valeurs suivantes :

  • SSL_RSA_EXPORT_WITH_RC4_40_MD5
  • SSL_RSA_WITH_RC4_128_MD5
  • SSL_RSA_EXPORT_WITH_RC2_CBC_40_MD5
  • TLS_RSA_EXPORT_WITH_RC4_40_MD5
  • TLS_RSA_WITH_RC4_128_MD5
  • TLS_RSA_EXPORT_WITH_RC2_CBC_40_MD5

SHA

Sous-clé Ciphers : SCHANNEL\Hashes\SHA

Cette clé de Registre désigne Secure Hash Algorithm (SHA-1) conformément à la norme FIPS 180-1. Son implémentation dans les fichiers Rsabase.dll et Rsaenh.dll est validée dans le cadre du programme CMVP (Cryptographic Module Validation Program) FIPS 140-1.

Pour autoriser cet algorithme de hachage, remplacez les données de valeur DWORD de la valeur Enabled par la valeur par défaut 0xffffffff. Sinon, remplacez les données de valeur DWORD par 0x0.

La désactivation de cet algorithme interdit les valeurs suivantes :

  • SSL_RSA_WITH_RC4_128_SHA
  • SSL_RSA_WITH_DES_CBC_SHA
  • SSL_RSA_WITH_3DES_EDE_CBC_SHA
  • SSL_RSA_EXPORT1024_WITH_DES_CBC_SHA
  • SSL_RSA_EXPORT1024_WITH_RC4_56_SHA
  • TLS_RSA_WITH_RC4_128_SHA
  • TLS_RSA_WITH_DES_CBC_SHA
  • TLS_RSA_WITH_3DES_EDE_CBC_SHA
  • TLS_RSA_EXPORT1024_WITH_DES_CBC_SHA
  • TLS_RSA_EXPORT1024_WITH_RC4_56_SHA

KeyExchangeAlgorithms

Sous-clé Ciphers : SCHANNEL/KeyExchangeAlgorithms

La clé de Registre KeyExchangeAlgorithms sous la clé SCHANNEL sert à déterminer l’utilisation d’algorithmes d’échange de clés tels que RSA. Les clés de Registre ci-dessous sont valides sous la clé KeyExchangeAlgorithms.

PKCS

Sous-clé Ciphers : SCHANNEL\KeyExchangeAlgorithms\PKCS

Cette clé de Registre désigne RSA en tant qu’algorithmes d’authentification et d’échange de clés.

Pour autoriser RSA, remplacez les données de valeur DWORD de la valeur Enabled par la valeur par défaut 0xffffffff. Sinon, remplacez les données DWORD par 0x0.

La désactivation de RSA interdit toutes les suites de chiffrement SSL et TLS basées sur RSA prises en charge par le fournisseur de sécurité Microsoft TLS/SSL pour Windows NT 4.0 SP6.

Suites de chiffrement FIPS 140-1

Vous pouvez choisir d’utiliser uniquement les suites de chiffrement SSL 3.0 ou TLS 1.0 qui correspondent aux algorithmes FIPS 46-3 ou FIPS 46-2 et FIPS 180-1 fournis par le fournisseur de services de chiffrement de base ou amélioré Microsoft.

Dans cet article, ces suites sont dénommées « suites de chiffrement FIPS 140-1 ». Il s’agit en particulier des suites ci-dessous :

  • SSL_RSA_WITH_DES_CBC_SHA
  • SSL_RSA_WITH_3DES_EDE_CBC_SHA
  • SSL_RSA_EXPORT1024_WITH_DES_CBC_SHA
  • TLS_RSA_WITH_DES_CBC_SHA
  • TLS_RSA_WITH_3DES_EDE_CBC_SHA
  • TLS_RSA_EXPORT1024_WITH_DES_CBC_SHA

Pour utiliser uniquement les suites de chiffrement FIPS 140-1 définies ici et prises en charge par le fournisseur de sécurité Microsoft TLS/SSL pour Windows NT 4.0 Service Pack 6 avec le fournisseur de services de chiffrement de base ou amélioré, configurez les données de valeur DWORD de la valeur Enabled dans les clés de Registre suivantes sur 0x0 :

  • SCHANNEL\Ciphers\RC4 128/128
  • SCHANNEL\Ciphers\RC2 128/128
  • SCHANNEL\Ciphers\RC4 64/128
  • SCHANNEL\Ciphers\RC4 56/128
  • SCHANNEL\Ciphers\RC2 56/128
  • SCHANNEL\Ciphers\RC4 40/128
  • SCHANNEL\Ciphers\RC2 40/128
  • SCHANNEL\Ciphers\NULL
  • SCHANNEL\Hashes\MD5

Configurez également les données de valeur DWORD de la valeur Enabled dans les clés de Registre suivantes sur 0xffffffff :

  • SCHANNEL\Ciphers\DES 56/56
  • SCHANNEL\Ciphers\Triple DES 168/168 (ne s’applique pas à la version destinée à l’exportation)
  • SCHANNEL\Hashes\SHA
  • SCHANNEL\KeyExchangeAlgorithms\PKCS

Calcul de secret principal à l’aide des suites de chiffrement FIPS 140-1

Les procédures d’utilisation des suites de chiffrement FIPS 140-1 dans SSL 3.0 diffèrent de celles pour TLS 1.0.

Dans SSL 3.0, le calcul master_secret (secret principal) de définition est le suivant :

Dans TLS 1.0, le calcul master_secret (secret principal) de définition est le suivant :

où :

Sélection de l’option permettant d’utiliser uniquement les suites de chiffrement FIPS 140-1 dans TLS 1.0 :

En raison de cette différence, vous pouvez choisir d’interdire l’utilisation de SSL 3.0 même si l’ensemble autorisé de suites de chiffrement est limité uniquement au sous-ensemble de suites de chiffrement FIPS 140-1. Dans ce cas, remplacez les données de valeur DWORD de la valeur Enabled par 0x0 dans les clés de Registre suivantes sous la clé Protocols :

  • SCHANNEL\Protocols\SSL 3.0\Client
  • SCHANNEL\Protocols\SSL 3.0\Server

Avertissement

Les données de la valeur Enabled dans ces clés de Registre sous la clé Protocols sont prioritaires sur la valeur grbitEnabledProtocols définie dans la structure SCHANNEL_CRED qui contient les données d’informations d’identification Schannel. Les données de la valeur par défaut Enabled sont 0xffffffff.

Exemples de fichiers de Registre

Cette section de l’article propose deux exemples de fichiers de Registre à des fins de configuration. Il s’agit des fichiers de Registre Export.reg et Non-export.reg.

Sur un ordinateur sous Windows NT 4.0 avec Service Pack 6 qui inclut les fichiers exportables Rasbase.dll et Schannel.dll, exécutez Export.reg pour vous assurer que seules les suites de chiffrement TLS 1.0 FIPS sont utilisées par l’ordinateur.

Sur un ordinateur sous Windows NT 4.0 avec Service Pack 6 qui inclut les fichiers non exportables Rasenh.dll et Schannel.dll, exécutez Non-export.reg pour vous assurer que seules les suites de chiffrement TLS 1.0 FIPS sont utilisées par l’ordinateur.

Vous devez redémarrer l’ordinateur pour que le fichier Schannel.dll reconnaisse les modifications apportées à la clé de Registre SCHANNEL.

Pour rétablir les paramètres de Registre par défaut, supprimez la clé de Registre SCHANNEL et tout son contenu. Si ces clés de Registre ne sont pas présentes, le fichier Schannel.dll crée à nouveau les clés lorsque vous redémarrez l’ordinateur.