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.