Begränsa användningen av vissa kryptografiska algoritmer och protokoll i Schannel.dll

Den här artikeln beskriver hur du begränsar användningen av vissa kryptografiska algoritmer och protokoll i filen Schannel.dll. Denna information gäller även för ISV-applikationer (Independent Software Vendor) som är skrivna för Microsoft Cryptographic API (CAPI).

Gäller för: Windows Server 2003
Original-KB-nummer: 245030

Obs!

Den här artikeln gäller för Windows Server 2003 och tidigare versioner av Windows. Registernycklar som gäller för Windows Server 2008 och senare versioner av Windows finns i Inställningar för TLS-registret.

Sammanfattning

Följande kryptografiska tjänstleverantörer (CSP:er) som ingår i Windows NT 4.0 Service Pack 6 tilldelades certifikaten för FIPS-140-1-kryptoverifiering.

  • Microsoft Base Cryptographic Provider (Rsabase.dll)
  • Microsoft Enhanced Cryptographic Provider (Rsaenh.dll) (icke-exportversion)

Microsoft TLS/SSL Security Provider, Schannel.dll-filen, använder de CSP:er som anges här för att utföra säker kommunikation via SSL eller TLS i sitt stöd för Internet Explorer och Internet Information Services (IIS).

Du kan ändra filen Schannel.dll så att den stöder chiffreringssviterna 1 och 2. Programmet måste dock även ha stöd för chiffreringssviterna 1 och 2. Chiffreringssviterna 1 och 2 stöds inte i IIS 4.0 och 5.0.

Den här artikeln innehåller nödvändig information för att konfigurera TLS/SSL-säkerhetsprovidern för Windows NT 4.0 Service Pack 6 och senare versioner. Du kan använda Windows-registret för att styra användningen av specifika SSL 3.0- eller TLS 1.0-chiffreringssviter med avseende på de kryptografiska algoritmer som stöds av den grundläggande kryptografiska providern eller den förbättrade kryptografiska providern.

Obs!

I Windows NT 4.0 Service Pack 6 använder filen Schannel.dll inte Microsoft Base DSS Cryptographic Provider (Dssbase.dll) eller Microsoft DS/Diffie-Hellman Enhanced Cryptographic Provider (Dssenh.dll).

Chiffreringssviter

Både SSL 3.0 och TLS 1.0 (RFC2246) med INTERNET-DRAFT 56-bitars export-chiffreringssviter för TLS draft-ietf-tls-56-bit-ciphersuites-00.txt ge alternativ för att använda olika chiffreringssviter. Varje chiffreringssvit avgör vilka nyckelutbytes-, autentiserings-, krypterings- och MAC-algoritmer som används i en SSL/TLS-session. När du använder RSA som både nyckelutbytes- och autentiseringsalgoritmer visas termen RSA bara en gång i motsvarande definitioner för chiffreringssviter.

Windows NT 4.0 Service Pack 6 Microsoft TLS/SSL Security Provider stöder följande SSL 3.0-definierade CipherSuite när du använder den grundläggande kryptografiska providern eller den förbättrade kryptografiska providern:

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

Obs!

Varken SSL_RSA_EXPORT1024_WITH_DES_CBC_SHA eller SSL_RSA_EXPORT1024_WITH_RC4_56_SHA definieras i SSL 3.0-text. Flera SSL 3.0-leverantörer stöder dem dock. Detta inkluderar Microsoft.

Windows NT 4.0 Service Pack 6 Microsoft TLS/SSL Security Provider stöder även följande TLS 1.0-definierade CipherSuite när du använder den grundläggande kryptografiska providern eller den förbättrade kryptografiska providern:

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

Obs!

En chiffreringssvit som definieras med hjälp av den första byte 0x00 är icke-privat och används för öppna samverkande kommunikationer. Därför följer Windows NT 4.0 Service Pack 6 Microsoft TLS/SSL Security Provider procedurerna för att använda dessa chiffersviter som anges i SSL 3.0 och TLS 1.0 för att säkerställa samverkan.

Schannel-specifika registernycklar

Viktigt

Det här avsnittet, metoden eller uppgiften innehåller steg som beskriver hur du ändrar registret. Det kan uppstå allvarliga problem om du gör detta felaktigt. Följ därför instruktionerna noga, och säkerhetskopiera registret innan du gör några ändringar i det. Då kan du återställa registret om det uppstår problem. Mer information om hur du säkerhetskopierar och återställer registret finns i Hur du säkerhetskopierar och återställer registret i Windows.

Obs!

Ändringar av innehållet i chiffernyckeln eller hash-nyckeln börjar gälla omedelbart, utan omstart av systemet.

Schannel-nyckel

Starta Registereditorn (Regedt32.exe) och leta upp följande registernyckel:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL

Undernyckel för SCHANNEL\Protocols

Om du vill göra det möjligt för systemet att använda de protokoll som inte förhandlas som standard (till exempel TLS 1.1 och TLS 1.2) ändrar du DWORD-värdedata för värdet DisabledByDefault till 0x0 i följande registernycklar under protokollnyckeln:

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

Varning

Värdet DisabledByDefault i registernycklarna under protokollnyckeln har inte företräde framför värdet grbitEnabledProtocols som definieras i strukturen SCHANNEL_CRED som innehåller data för en Schannel-autentiseringsuppgift.

Undernyckel för SCHANNEL\Ciphers

Registernyckeln Chiffer under Schannal-nyckeln används för att styra användningen av symmetriska algoritmer som DES och RC4. Följande är giltiga registernycklar under chiffernyckeln.

Skapa undernyckeln Schannel-chiffer i formatet: SCHANNEL\(VALUE)\(VALUE/VALUE)

RC4 128/128

Chiffreringsundernyckel: SCHANNEL\Ciphers\RC4 128/128

Den här undernyckeln refererar till 128-bitars RC4.

Om du vill tillåta den här chiffreringsalgoritmen ändrar du DWORD-värdedata för värdet Aktiverat till 0xffffffff. Du kan också ändra DWORD-värdedata till 0x0. Om du inte konfigurerar värdet Aktiverat är standardvärdet aktiverat. Den här registernyckeln gäller inte för en exporterbar server som inte har något SGC-certifikat.

Om du inaktiverar den här algoritmen tillåts i praktiken följande värden:

  • 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

Chiffreringsundernyckel: SCHANNEL\Ciphers\Triple DES 168

Den här registernyckeln refererar till 168-bitars Triple DES som anges i ANSI X9.52 och utkast till FIPS 46-3. Den här registernyckeln gäller inte för exportversionen.

Om du vill tillåta den här chiffreringsalgoritmen ändrar du DWORD-värdedata för värdet Aktiverat till 0xffffffff. Du kan också ändra DWORD-data till 0x0. Om du inte konfigurerar värdet Aktiverat är standardvärdet aktiverat.

Om du inaktiverar den här algoritmen tillåts i praktiken följande värden:

  • 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

    Obs!

    För versioner av Windows som släpps före Windows Vista ska nyckeln vara Triple DES 168/168.

RC2 128/128

Chiffreringsundernyckel: SCHANNEL\Ciphers\RC2 128/128

Den här registernyckeln refererar till 128-bitars RC2. Den gäller inte för exportversionen.

Om du vill tillåta den här chiffreringsalgoritmen ändrar du DWORD-värdedata för värdet Aktiverat till 0xffffffff. Annars ändrar du DWORD-värdedata till 0x0. Om du inte konfigurerar värdet Aktiverat är standardvärdet aktiverat.

RC4 64/128

Chiffreringsundernyckel: SCHANNEL\Ciphers\RC4 64/128

Den här registernyckeln refererar till 64-bitars RC4. Den gäller inte för exportversionen (men används i Microsoft Money).

Om du vill tillåta den här chiffreringsalgoritmen ändrar du DWORD-värdedata för värdet Aktiverat till 0xffffffff. Annars ändrar du DWORD-värdedata till 0x0. Om du inte konfigurerar värdet Aktiverat är standardvärdet aktiverat.

RC4 56/128

Chiffreringsundernyckel: SCHANNEL\Ciphers\RC4 56/128

Den här registernyckeln refererar till 56-bitars RC4.

Om du vill tillåta den här chifferalgoritmen ändrar du DWORD-värdedata för värdet Aktiverat till 0xffffffff. Annars ändrar du DWORD-värdedata till 0x0. Om du inte konfigurerar värdet Aktiverat är standardvärdet aktiverat.

Om du inaktiverar den här algoritmen tillåts i praktiken följande värde:

  • TLS_RSA_EXPORT1024_WITH_RC4_56_SHA

RC2 56/128

Chiffreringsundernyckel: SCHANNEL\Ciphers\RC2 56/128

Den här registernyckeln refererar till 56-bitars RC2.

Om du vill tillåta den här chiffreringsalgoritmen ändrar du DWORD-värdedata för värdet Aktiverat till 0xffffffff. Annars ändrar du DWORD-värdedata till 0x0. Om du inte konfigurerar värdet Aktiverat är standardvärdet aktiverat.

DES 56

Chiffreringsundernyckel: SCHANNEL\Ciphers\DES 56/56

Den här registernyckeln refererar till 56-bitars DES enligt vad som anges i FIPS 46-2. Dess implementering i filerna Rsabase.dll och Rsaenh.dll verifieras under programmet för validering av kryptografiska moduler FIPS 140-1.

Om du vill tillåta den här chiffreringsalgoritmen ändrar du DWORD-värdedata för värdet Aktiverat till 0xffffffff. Annars ändrar du DWORD-värdedata till 0x0. Om du inte konfigurerar värdet Aktiverat är standardvärdet aktiverat.

Om du inaktiverar den här algoritmen tillåts i praktiken följande värden:

  • SSL_RSA_WITH_DES_CBC_SHA
  • TLS_RSA_WITH_DES_CBC_SHA

RC4 40/128

Chiffreringsundernyckel: SCHANNEL\Ciphers\RC4 40/128

Den här registernyckeln refererar till 40-bitars RC4.

Om du vill tillåta den här chiffreringsalgoritmen ändrar du DWORD-värdedata för värdet Aktiverat till 0xffffffff. Annars ändrar du DWORD-värdedata till 0x0. Om du inte konfigurerar värdet Aktiverat är standardvärdet aktiverat.

Om du inaktiverar den här algoritmen tillåts i praktiken följande värden:

  • SSL_RSA_EXPORT_WITH_RC4_40_MD5
  • TLS_RSA_EXPORT_WITH_RC4_40_MD5

RC2 40/128

Chiffreringsundernyckel: SCHANNEL\Ciphers\RC2 40/128

Den här registernyckeln refererar till 40-bitars RC2.

Om du vill tillåta den här chiffreringsalgoritmen ändrar du DWORD-värdedata för värdet Aktiverat till 0xffffffff. Annars ändrar du DWORD-värdedata till 0x0. Om du inte konfigurerar värdet Aktiverat är standardvärdet aktiverat.

Om du inaktiverar den här algoritmen tillåts i praktiken följande värden:

  • SSL_RSA_EXPORT_WITH_RC2_CBC_40_MD5
  • TLS_RSA_EXPORT_WITH_RC2_CBC_40_MD5

NULL

Chiffreringsundernyckel: SCHANNEL\Ciphers\NULL

Den här registernyckeln innebär ingen kryptering. Detta alternativ är inaktiverat som standard.

Om du vill inaktivera kryptering (inte tillåta alla chifferalgoritmer) ändrar du DWORD-värdedata för värdet Aktiverat till 0xffffffff. Annars ändrar du DWORD-värdedata till 0x0.

Hashvärden

Chiffreringsundernyckel: SCHANNEL/Hashes

Registernyckeln Hashvärden under nyckeln SCHANNEL används för att styra användningen av algoritmer för hashvärden som SHA-1 och MD5. Följande är giltiga registernycklar under nyckeln Hashvärden.

MD5

Chiffreringsundernyckel: SCHANNEL\Hashes\MD5

Om du vill tillåta den här algoritm för hashvärden ändrar du DWORD-värdedata för värdet Aktiverat till standardvärdet 0xffffffff. Annars ändrar du DWORD-värdedata till 0x0.

Om du inaktiverar den här algoritmen tillåts i praktiken följande värden:

  • 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

Chiffreringsundernyckel: SCHANNEL\Hashes\SHA

Den här registernyckeln refererar till Secure Hash Algorithm (SHA-1), enligt vad som anges i FIPS 180-1. Dess implementering i filerna Rsabase.dll och Rsaenh.dll verifieras under programmet för validering av kryptografiska moduler FIPS 140-1.

Om du vill tillåta den här algoritm för hashvärden ändrar du DWORD-värdedata för värdet Aktiverat till standardvärdet 0xffffffff. Annars ändrar du DWORD-värdedata till 0x0.

Om du inaktiverar den här algoritmen tillåts i praktiken följande värden:

  • 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

Chiffreringsundernyckel: SCHANNEL/KeyExchangeAlgorithms

Registernyckeln KeyExchangeAlgorithms under nyckeln SCHANNEL används för att styra användningen av algoritmer för nyckelutbyte, till exempel RSA. Följande är giltiga registernycklar under nyckeln KeyExchangeAlgorithms.

PKCS

Chiffreringsundernyckel: SCHANNEL\KeyExchangeAlgorithms\PKCS

Den här registernyckeln refererar till RSA som nyckelutbytes- och autentiseringsalgoritmer.

Om du vill tillåta RSA ändrar du DWORD-värdedata för värdet Aktiverat till standardvärdet 0xffffffff. Annars ändrar du DWORD-data till 0x0.

Om du inaktiverar RSA tillåts effektivt alla RSA-baserade SSL- och TLS-chiffreringssviter som stöds av Windows NT4 SP6 Microsoft TLS/SSL-säkerhetsprovider.

FIPS 140-1-chiffreringssviter

Du kanske bara vill använda de SSL 3.0- eller TLS 1.0-chiffreringssviter som motsvarar FIPS 46-3- eller FIPS 46-2- och FIPS 180-1-algoritmer som tillhandahålls av Microsoft Base eller förbättrad kryptografiprovider.

I den här artikeln kallar vi dem FIPS 140-1-chiffreringssviter. Mer specifikt är de följande:

  • 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

Om du bara vill använda FIPS 140-1-chiffreringssviter som definieras här och stöds av Windows NT 4.0 Service Pack 6 Microsoft TLS/SSL-säkerhetsprovider med den grundläggande kryptografiska providern eller den förbättrade kryptografiska providern konfigurerar du DWORD-värdedata för värdet Aktiverat i följande registernycklar till 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

Och konfigurera DWORD-värdedata för värdet Aktiverat i följande registernycklar till 0xffffffff:

  • SCHANNEL\Ciphers\DES 56/56
  • SCHANNEL\Ciphers\Triple DES 168/168 (ej tillämpligt i exportversion)
  • SCHANNEL\Hashes\SHA
  • SCHANNEL\KeyExchangeAlgorithms\PKCS

Beräkning av hemlig huvudnyckel med FIPS 140-1-chiffreringssviter

Procedurerna för att använda FIPS 140-1-chiffreringssviterna i SSL 3.0 skiljer sig från procedurerna för att använda FIPS 140-1-chiffreringssviterna i TLS 1.0.

I SSL 3.0 är följande definition beräkning av master_secret:

I TLS 1.0 är följande definition beräkning av master_secret:

där:

Välja alternativet att endast använda FIPS 140-1-chiffreringssviter i TLS 1.0:

På grund av den här skillnaden kanske kunderna vill förbjuda användning av SSL 3.0 även om den tillåtna uppsättningen chiffreringssviterna endast är begränsad till delmängden av FIPS 140-1-chiffreringssviter. I så fall ändrar du DWORD-värdedata för värdet Aktiverat till 0x0 i följande registernycklar under nyckeln Protokoll:

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

Varning

Värdedata Aktiverat i dessa registernycklar under nyckeln Protokoll har företräde framför värdet grbitEnabledProtocols som definieras i strukturen SCHANNEL_CRED, som innehåller data för en Schannel-autentiseringsuppgift. Standard värdedata Aktiverat är 0xffffffff.

Exempel på registerfiler

Två exempel på registerfilinnehåll för konfiguration finns i det här avsnittet i artikeln. De är Export.reg och Non-export.reg.

På en dator som kör Windows NT 4.0 Service Pack 6 med de exporterbara filerna Rasbase.dll och Schannel.dll kör du Export.reg för att se till att endast chiffreringssviterna TLS 1.0 FIPS används av datorn.

På en dator som kör Windows NT 4.0 Service Pack 6 som innehåller de icke-exportbara filerna Rasenh.dll och Schannel.dll kör du Non-export.reg för att se till att endast chiffreringssviterna TLS 1.0 FIPS används av datorn.

För att filen Schannel.dll ska kunna identifiera ändringar under registernyckeln SCHANNEL måste du starta om datorn.

Om du vill återställa registerinställningarna till standard tar du bort registernyckeln SCHANNEL och allt under den. Om dessa registernycklar inte finns återskapar Schannel.dll nycklarna när du startar om datorn.