Delen via


Het gebruik van bepaalde cryptografische algoritmen en protocollen in Schannel.dll beperken

In dit artikel wordt beschreven hoe u het gebruik van bepaalde cryptografische algoritmen en protocollen in het Schannel.dll-bestand kunt beperken. Deze informatie is ook van toepassing op ISV-toepassingen (Independent Software Vendor) die zijn geschreven voor de Microsoft Cryptographic API (CAPI).

Van toepassing op: Windows Server 2003
Origineel KB-nummer: 245030

Opmerking

Dit artikel is van toepassing op Windows Server 2003 en eerdere versies van Windows. Raadpleeg de TLS-registerinstellingen voor registersleutels die van toepassing zijn op Windows Server 2008 en latere versies van Windows.

Samenvatting

De volgende cryptografische serviceproviders (CSP's) die bij Windows NT 4.0 Service Pack 6 zijn geleverd, hebben de certificaten voor FIPS-140-1 cryptovalidatie verkregen.

  • Microsoft Base Cryptographic Provider (Rsabase.dll)
  • Microsoft Enhanced Cryptographic Provider (Rsaenh.dll) (niet-exportversie)

Microsoft TLS/SSL Security Provider, het Schannel.dll-bestand, gebruikt de CSP's die hier worden vermeld om veilige communicatie uit te voeren via SSL of TLS ter ondersteuning van Internet Explorer en Internet Information Services (IIS).

U kunt het Schannel.dll-bestand wijzigen om coderingssuite1 en 2 te ondersteunen. Het programma moet echter ook coderingssuite 1 en 2 ondersteunen. Coderingssuites 1 en 2 worden niet ondersteund in IIS 4.0 en 5.0.

Dit artikel bevat de benodigde informatie om de TLS/SSL-beveiligingsprovider voor Windows NT 4.0 Service Pack 6 en latere versies te configureren. U kunt het Windows-register gebruiken om het gebruik van specifieke SSL 3.0- of TLS 1.0-coderingssuites te beheren met betrekking tot de cryptografische algoritmen die worden ondersteund door de basis cryptografische provider of de verbeterde cryptografische provider.

Opmerking

In Windows NT 4.0 Service Pack 6 maakt het Schannel.dll-bestand geen gebruik van de Microsoft Base DSS Cryptographic Provider (Dssbase.dll) of de Microsoft DS/Diffie-Hellman Enhanced Cryptographic Provider (Dssenh.dll).

Coderingssuites

Zowel SSL 3.0 als TLS 1.0 (RFC2246) met INTERNET-DRAFT 56-bits Export Cipher Suites voor TLS draft-ietf-tls-56-bit-ciphersuites-00.txt bieden opties voor het gebruik van verschillende coderingssuites. Elke coderingssuite bepaalt de sleuteluitwisselings-, verificatie-, versleutelings- en MAC-algoritmen die worden gebruikt in een SSL/TLS-sessie. Wanneer u RSA gebruikt als sleuteluitwisselings- en verificatiealgoritmen, wordt de term RSA slechts één keer weergegeven in de bijbehorende coderingssuitedefinities.

De Windows NT 4.0 Service Pack 6 Microsoft TLS/SSL-beveiligingsprovider ondersteunt de volgende SSL 3.0-gedefinieerde CipherSuite wanneer u de basis cryptografische provider of de uitgebreide cryptografische provider gebruikt:

SSL 3.0 Coderingssuite
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 }

Opmerking

Er wordt geen SSL_RSA_EXPORT1024_WITH_DES_CBC_SHA of SSL_RSA_EXPORT1024_WITH_RC4_56_SHA gedefinieerd in SSL 3.0-tekst. Verschillende SSL 3.0-leveranciers ondersteunen ze echter. Dit omvat Microsoft.

Windows NT 4.0 Service Pack 6 Microsoft TLS/SSL-beveiligingsprovider ondersteunt ook de volgende TLS 1.0-gedefinieerde CipherSuite wanneer u de basis cryptografische provider of verbeterde cryptografische provider gebruikt:

TLS 1.0 Coderingssuite
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 }

Opmerking

Een coderingssuite die wordt gedefinieerd door de eerste byte 0x00 te gebruiken, is niet-privé en wordt gebruikt voor open interoperabele communicatie. Daarom volgt de Windows NT 4.0 Service Pack 6 Microsoft TLS/SSL-beveiligingsprovider de procedures voor het gebruik van deze coderingssuites zoals gespecificeerd in SSL 3.0 en TLS 1.0 om interoperabiliteit te garanderen.

Schannel-specifieke registersleutels

Belangrijk

Deze sectie, methode of taak bevat stappen voor het bewerken van het register. Als u het register op onjuiste wijze wijzigt, kunnen er echter grote problemen optreden. Het is dan ook belangrijk dat u deze stappen zorgvuldig uitvoert. Maak een back-up van het register voordat u wijzigingen aanbrengt. Als er een probleem optreedt, kunt u het register altijd nog herstellen. Raadpleeg Een back-up maken van en het herstellen van het register in Windows voor meer informatie over het maken van een back-up en het herstellen van het register.

Opmerking

Alle wijzigingen in de inhoud van de CIPHERS-sleutel of de HASHES-sleutel worden onmiddellijk van kracht, zonder dat het systeem opnieuw hoeft te worden opgestart.

SCHANNEL-sleutel

Start de register-editor (Regedt32.exe) en ga naar de volgende registersleutel:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL

SCHANNEL\Protocollensubsleutel

Om het systeem in staat te stellen de protocollen te gebruiken waarover niet standaard wordt onderhandeld (zoals TLS 1.1 en TLS 1.2), wijzigt u de DWORD-waardegegevens van de DisabledByDefault-waarde in 0x0 in de volgende registersleutels onder de sleutel Protocollen:

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

Waarschuwing

De waarde DisabledByDefault in de registersleutels onder de sleutel Protocollen heeft geen voorrang op de waarde grbitEnabledProtocols die is gedefinieerd in de SCHANNEL_CRED-structuur die de gegevens voor een Schannel-referentie bevat.

SCHANNEL\Coderingssubsleutel

De registersleutel Codering onder de sleutel SCHANNEL wordt gebruikt om het gebruik van symmetrische algoritmen zoals DES en RC4 te controleren. De volgende zijn geldige registersleutels onder de sleutel Codering.

Maak de subsleutel SCHANNEL-codering in de indeling: SCHANNEL\(VALUE)\(VALUE/VALUE)

RC4 128/128

Subsleutel voor codering: SCHANNEL\Ciphers\RC4 128/128

Deze subsleutel verwijst naar de 128-bits RC4.

Als u dit coderingsalgoritme toe wilt staan, wijzigt u de DWORD-waardegegevens van de waarde Ingeschakeld in 0xffffffff. Of wijzig de DWORD-waardegegevens in 0x0. Als u de waarde Ingeschakeld niet configureert, is de standaardwaarde ingeschakeld. Deze registersleutel is niet van toepassing op een exporteerbare server die geen SGC-certificaat heeft.

Als u dit algoritme uitschakelt, worden de volgende waarden niet toegestaan:

  • 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

Subsleutel voor codering: SCHANNEL\Ciphers\Triple DES 168

Deze registersleutel verwijst naar 168-bits Triple DES zoals opgegeven in ANSI X9.52 en Draft FIPS 46-3. Deze registersleutel is niet van toepassing op de exportversie.

Als u dit coderingsalgoritme toe wilt staan, wijzigt u de DWORD-waardegegevens van de waarde Ingeschakeld in 0xffffffff. Of wijzig de DWORD-gegevens in 0x0. Als u de waarde Ingeschakeld niet configureert, is de standaardwaarde ingeschakeld.

Als u dit algoritme uitschakelt, worden de volgende waarden niet toegestaan:

  • 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

    Opmerking

    Voor de versies van Windows die vóór Windows Vista worden uitgebracht, moet de sleutel Triple DES 168/168 zijn.

RC2 128/128

Subsleutel voor codering: SCHANNEL\Ciphers\RC2 128/128

Deze registersleutel verwijst naar 128-bits RC2. Deze is niet van toepassing op de exportversie.

Als u dit coderingsalgoritme toe wilt staan, wijzigt u de DWORD-waardegegevens van de waarde Ingeschakeld in 0xffffffff. Anders wijzigt u de DWORD-waardegegevens in 0x0. Als u de waarde Ingeschakeld niet configureert, is de standaardwaarde ingeschakeld.

RC4 64/128

Subsleutel voor codering: SCHANNEL\Ciphers\RC4 64/128

Deze registersleutel verwijst naar de 64-bits RC4. Het is niet van toepassing op de exportversie (maar wordt gebruikt in Microsoft Money).

Als u dit coderingsalgoritme toe wilt staan, wijzigt u de DWORD-waardegegevens van de waarde Ingeschakeld in 0xffffffff. Anders wijzigt u de DWORD-waardegegevens in 0x0. Als u de waarde Ingeschakeld niet configureert, is de standaardwaarde ingeschakeld.

RC4 56/128

Subsleutel voor codering: SCHANNEL\Ciphers\RC4 56/128

Deze registersleutel verwijst naar 56-bits RC4.

Als u dit coderingsalgoritme wilt toestaan, wijzigt u de DWORD-waardegegevens van de waarde Ingeschakeld in 0xffffffff. Anders wijzigt u de DWORD-waardegegevens in 0x0. Als u de waarde Ingeschakeld niet configureert, is de standaardwaarde ingeschakeld.

Als u dit algoritme uitschakelt, wordt de volgende waarde niet toegestaan:

  • TLS_RSA_EXPORT1024_WITH_RC4_56_SHA

RC2 56/128

Subsleutel voor codering: SCHANNEL\Ciphers\RC2 56/128

Deze registersleutel verwijst naar 56-bits RC2.

Als u dit coderingsalgoritme toe wilt staan, wijzigt u de DWORD-waardegegevens van de waarde Ingeschakeld in 0xffffffff. Anders wijzigt u de DWORD-waardegegevens in 0x0. Als u de waarde Ingeschakeld niet configureert, is de standaardwaarde ingeschakeld.

DES 56

Subsleutel voor codering: SCHANNEL\Ciphers\DES 56/56

Deze registersleutel verwijst naar 56-bits DES zoals opgegeven in FIPS 46-2. De implementatie ervan in de bestanden Rsabase.dll en Rsaenh.dll is gevalideerd onder het FIPS 140-1 Cryptographic Module Validation Program.

Als u dit coderingsalgoritme toe wilt staan, wijzigt u de DWORD-waardegegevens van de waarde Ingeschakeld in 0xffffffff. Anders wijzigt u de DWORD-waardegegevens in 0x0. Als u de waarde Ingeschakeld niet configureert, is de standaardwaarde ingeschakeld.

Als u dit algoritme uitschakelt, worden de volgende waarden niet toegestaan:

  • SSL_RSA_WITH_DES_CBC_SHA
  • TLS_RSA_WITH_DES_CBC_SHA

RC4 40/128

Subsleutel voor codering: SCHANNEL\Ciphers\RC4 40/128

Deze registersleutel verwijst naar de 40-bits RC4.

Als u dit coderingsalgoritme toe wilt staan, wijzigt u de DWORD-waardegegevens van de waarde Ingeschakeld in 0xffffffff. Anders wijzigt u de DWORD-waardegegevens in 0x0. Als u de waarde Ingeschakeld niet configureert, is de standaardwaarde ingeschakeld.

Als u dit algoritme uitschakelt, worden de volgende waarden niet toegestaan:

  • SSL_RSA_EXPORT_WITH_RC4_40_MD5
  • TLS_RSA_EXPORT_WITH_RC4_40_MD5

RC2 40/128

Subsleutel voor codering: SCHANNEL\Ciphers\RC2 40/128

Deze registersleutel verwijst naar 40-bits RC2.

Als u dit coderingsalgoritme toe wilt staan, wijzigt u de DWORD-waardegegevens van de waarde Ingeschakeld in 0xffffffff. Anders wijzigt u de DWORD-waardegegevens in 0x0. Als u de waarde Ingeschakeld niet configureert, is de standaardwaarde ingeschakeld.

Als u dit algoritme uitschakelt, worden de volgende waarden niet toegestaan:

  • SSL_RSA_EXPORT_WITH_RC2_CBC_40_MD5
  • TLS_RSA_EXPORT_WITH_RC2_CBC_40_MD5

NULL

Subsleutel voor codering: SCHANNEL\Ciphers\NULL

Deze registersleutel betekent geen versleuteling. Standaard is deze uitgeschakeld.

Als u versleuteling wilt uitschakelen (alle coderingsalgoritmen niet toestaan), wijzigt u de DWORD-waardegegevens van de waarde Ingeschakeld in 0xffffffff. Anders wijzigt u de DWORD-waardegegevens in 0x0.

Hashes

Subsleutel voor codering: SCHANNEL/Hashes

De registersleutel Hashes onder de sleutel SCHANNEL wordt gebruikt om het gebruik van hash-algoritmen zoals SHA-1 en MD5 te beheren. Hieronder volgen geldige registersleutels onder de sleutel Hashes.

MD5

Subsleutel voor codering: SCHANNEL\Hashes\MD5

Om dit hash-algoritme toe te staan, wijzigt u de DWORD-waardegegevens van de waarde Ingeschakeld in de standaardwaarde 0xffffffff. Anders wijzigt u de DWORD-waardegegevens in 0x0.

Als u dit algoritme uitschakelt, worden de volgende waarden niet toegestaan:

  • 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

Subsleutel voor codering: SCHANNEL\Hashes\SHA

Deze registersleutel verwijst naar Secure Hash Algorithm (SHA-1), zoals opgegeven in FIPS 180-1. De implementatie ervan in de bestanden Rsabase.dll en Rsaenh.dll is gevalideerd onder het FIPS 140-1 Cryptographic Module Validation Program.

Om dit hash-algoritme toe te staan, wijzigt u de DWORD-waardegegevens van de waarde Ingeschakeld in de standaardwaarde 0xffffffff. Anders wijzigt u de DWORD-waardegegevens in 0x0.

Als u dit algoritme uitschakelt, worden de volgende waarden niet toegestaan:

  • 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

Subsleutel voor codering: SCHANNEL/KeyExchangeAlgorithms

De registersleutel KeyExchangeAlgorithms onder de sleutel SCHANNEL wordt gebruikt om het gebruik van sleuteluitwisselingsalgoritmen zoals RSA te beheren. Hieronder volgen geldige registersleutels onder de sleutel KeyExchangeAlgorithms.

PKCS

Subsleutel voor codering: SCHANNEL\KeyExchangeAlgorithms\PKCS

Deze registersleutel verwijst naar de RSA als de algoritmen voor sleuteluitwisseling en verificatie.

Als u RSA wilt toestaan, wijzigt u de DWORD-waardegegevens van de waarde Ingeschakeld in de standaardwaarde 0xffffffff. Anders wijzigt u de DWORD-gegevens in 0x0.

Als u RSA uitschakelt, worden in feite alle op RSA gebaseerde SSL- en TLS-coderingssuites die worden ondersteund door de Windows NT4 SP6 Microsoft TLS/SSL-beveiligingsprovider niet toegestaan.

FIPS 140-1-coderingssuites

U kunt alleen de SSL 3.0- of TLS 1.0-coderingssuites gebruiken die overeenkomen met FIPS 46-3- of FIPS 46-2- en FIPS 180-1-algoritmen die worden geleverd door de base- of verbeterde cryptografische provider van Microsoft.

In dit artikel noemen we ze FIPS 140-1-coderingssuites. Concreet zijn ze als volgt:

  • 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

Als u alleen FIPS 140-1-coderingssuites wilt gebruiken zoals hier gedefinieerd en ondersteund door Windows NT 4.0 Service Pack 6 Microsoft TLS/SSL-beveiligingsprovider met de basis cryptografische provider of de verbeterde cryptografische provider, configureert u de DWORD-waardegegevens van de Ingechakelde waarde in de volgende registersleutels tot 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

En configureer de DWORD-waardegegevens van de waarde Ingeschakeld in de volgende registersleutels tot 0xffffffff:

  • SCHANNEL\Ciphers\DES 56/56
  • SCHANNEL\Ciphers\Triple DES 168/168 (niet van toepassing in exportversie)
  • SCHANNEL\Hashes\SHA
  • SCHANNEL\KeyExchangeAlgorithms\PKCS

Master berekening met behulp van FIPS 140-1-coderingssuites

De procedures voor het gebruik van de FIPS 140-1-coderingssuites in SSL 3.0 verschillen van de procedures voor het gebruik van de FIPS 140-1-coderingssuites in TLS 1.0.

In SSL 3.0 is het volgende de definitie master_secret-berekening:

In TLS 1.0 is het volgende de definitie master_secret-berekening:

waarbij:

Selecteer de optie voor het gebruik van alleen FIPS 140-1-coderingssuites in TLS 1.0:

Vanwege dit verschil willen klanten mogelijk het gebruik van SSL 3.0 verbieden, ook al is de toegestane set coderingssuites beperkt tot alleen de subset van FIPS 140-1-coderingssuites. Wijzig in dat geval de DWORD-waardegegevens van de ingeschakelde waarde in 0x0 in de volgende registersleutels onder de sleutel Protocollen:

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

Waarschuwing

De waardegegevens Ingeschakeld in deze registersleutels onder de sleutel Protocollen hebben voorrang op de waarde grbitEnabledProtocols die is gedefinieerd in de SCHANNEL_CRED-structuur die de gegevens voor een Schannel-referentie bevat. De standaardwaarde Ingeschakeld is 0xffffffff.

Voorbeelden van registerbestanden

In dit gedeelte van het artikel vindt u twee voorbeelden van de inhoud van registerbestanden voor configuratie. Dit zijn Export.reg en Non-export.reg.

Op een computer met Windows NT 4.0 Service Pack 6 met de exporteerbare bestanden Rasbase.dll en Schannel.dll, voert u Export.reg uit om ervoor te zorgen dat alleen TLS 1.0 FIPS-coderingssuites door de computer worden gebruikt.

Op een computer met Windows NT 4.0 Service Pack 6 dat de niet-exporteerbare bestanden Rasenh.dll en Schannel.dll bevat, voert u Non-export.reg uit om ervoor te zorgen dat alleen TLS 1.0 FIPS-coderingssuites door de computer worden gebruikt.

Om ervoor te zorgen dat het bestand Schannel.dll eventuele wijzigingen onder de registersleutel SCHANNEL herkent, moet u de computer opnieuw opstarten.

Als u de standaardinstellingen van het register wilt herstellen, verwijdert u de registersleutel SCHANNEL en alles daaronder. Als deze registersleutels niet aanwezig zijn, herbouwt de Schannel.dll de sleutels wanneer u de computer opnieuw opstart.