Ograniczanie używania niektórych algorytmów kryptograficznych i protokołów w Schannel.dll
W tym artykule opisano sposób ograniczania używania niektórych algorytmów kryptograficznych i protokołów w pliku Schannel.dll. Te informacje dotyczą również aplikacji niezależnego dostawcy oprogramowania (ISV) napisanych dla interfejsu API kryptograficznego firmy Microsoft (CAPI).
Dotyczy: Windows Server 2003
Oryginalny numer KB: 245030
Uwaga
Ten artykuł dotyczy Windows Server 2003 i starszych wersji Windows. W przypadku kluczy rejestru, które mają zastosowanie do Windows Server 2008 i nowszych wersji Windows, zobacz Ustawienia rejestru protokołu TLS.
Podsumowanie
Następujący dostawcy usług kryptograficznych (CSP) dołączonych do systemu Windows NT 4.0 z dodatkiem Service Pack 6 otrzymali certyfikaty do weryfikacji kryptograficznej FIPS-140-1.
- Microsoft Base Cryptographic Provider (Rsabase.dll)
- Microsoft Enhanced Cryptographic Provider (Rsaenh.dll) (wersja nieeksportowa)
Dostawca zabezpieczeń protokołu TLS/SSL firmy Microsoft, plik Schannel.dll, używa dostawców CSP wymienionych tutaj do prowadzenia bezpiecznej komunikacji za pośrednictwem protokołu SSL lub TLS w ramach obsługi programu Internet Explorer i Internet Information Services (IIS).
Można zmienić plik Schannel.dll, aby obsługiwał zestaw szyfrowania 1 i 2. Jednak program musi również obsługiwać zestaw szyfrowania 1 i 2. Zestawy szyfrowania 1 i 2 nie są obsługiwane w usługach IIS 4.0 i 5.0.
Ten artykuł zawiera informacje niezbędne do skonfigurowania dostawcy zabezpieczeń protokołu TLS/SSL dla systemu Windows NT 4.0 z dodatkiem Service Pack 6 i nowszych wersji. Za pomocą rejestru Windows można kontrolować użycie określonych zestawów szyfrowania SSL 3.0 lub TLS 1.0 w odniesieniu do algorytmów kryptograficznych obsługiwanych przez podstawowego dostawcę kryptograficznego lub rozszerzonego dostawcę kryptograficznego.
Uwaga
W systemie Windows NT 4.0 z dodatkiem Service Pack 6 plik Schannel.dll nie używa dostawcy kryptograficznego Microsoft Base DSS (Dssbase.dll) ani rozszerzonego dostawcy kryptograficznego Microsoft DS/Diffie-Hellman (Dssenh.dll).
Zestawy szyfrowania
Zarówno protokoły SSL 3.0, jak i TLS 1.0 (RFC2246) z 56-bitowymi zestawami szyfrowania eksportu INTERNET-DRAFT dla protokołu TLS draft-ietf-tls-56-bit-ciphersuites-00.txt udostępniają opcje korzystania z różnych zestawów szyfrowania. Każdy zestaw szyfrowania określa wymiany kluczy, uwierzytelnianie, szyfrowanie i algorytmy MAC używane w sesji protokołu SSL/TLS. W przypadku używania funkcji RSA jako algorytmów wymiany kluczy i uwierzytelniania termin RSA pojawia się tylko raz w odpowiednich definicjach zestawu szyfrowania.
Dostawca zabezpieczeń TLS/SSL systemu Windows NT 4.0 z dodatkiem Service Pack 6 firmy Microsoft obsługuje następujące szyfrowanie zdefiniowane przez protokół SSL 3.0 podczas korzystania z podstawowego dostawcy kryptograficznego lub rozszerzonego dostawcy kryptograficznego:
SSL 3.0 | Zestaw szyfrowania |
---|---|
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 } |
Uwaga
Ani SSL_RSA_EXPORT1024_WITH_DES_CBC_SHA, ani SSL_RSA_EXPORT1024_WITH_RC4_56_SHA nie są zdefiniowane w tekście SSL 3.0. Obsługuje je jednak kilku dostawców protokołu SSL 3.0. Obejmuje to również firmę Microsoft.
Dostawca zabezpieczeń TLS/SSL systemu Windows NT 4.0 z dodatkiem Service Pack 6 firmy Microsoft obsługuje również następujące szyfrowanie zdefiniowane przez protokół TLS 1.0 podczas korzystania z podstawowego dostawcy kryptograficznego lub rozszerzonego dostawcy kryptograficznego:
TLS 1.0 | Zestaw szyfrowania |
---|---|
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 } |
Uwaga
Zestaw szyfrowania, który jest definiowany przy użyciu pierwszego bajtu 0x00, nie jest prywatny i jest używany do otwartej komunikacji współdziałania. W związku z tym dostawca zabezpieczeń TLS/SSL systemu Windows NT 4.0 z dodatkiem Service Pack 6 firmy Microsoft jest zgodny z procedurami używania tych zestawów szyfrowania określonych w protokołach SSL 3.0 i TLS 1.0 w celu zapewnienia współdziałania.
Klucze rejestru specyficzne dla Schannel
Ważna
W tej sekcji, metodzie lub w tym zadaniu podano informacje dotyczące modyfikowania rejestru. Niepoprawne zmodyfikowanie rejestru może jednak być przyczyną poważnych problemów. Dlatego należy uważnie wykonywać podane czynności. Dla większego bezpieczeństwa przed zmodyfikowaniem rejestru należy wykonać jego kopię zapasową. Dzięki temu będzie można przywrócić rejestr w przypadku wystąpienia problemu. Aby uzyskać więcej informacji na temat sposobu tworzenia kopii zapasowych, przywracania i modyfikowania rejestru, zobacz artykuł Tworzenie kopii zapasowych i przywracanie rejestru systemu Microsoft Windows.
Uwaga
Wszelkie zmiany zawartości klucza CIPHERS lub klucza HASHES są natychmiast wprowadzane bez ponownego uruchamiania systemu.
Klucz SCHANNEL
Uruchom Edytor rejestru (Regedt32.exe), a następnie zlokalizuj poniższy klucz rejestru:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL
Podklucz SCHANNEL\Protocols
Aby umożliwić systemowi korzystanie z protokołów, które nie będą domyślnie negocjowane (np. TLS 1.1 i TLS 1.2), zmień dane wartości DWORD z wartości DisabledByDefault na 0x0 w następujących kluczach rejestru w kluczu 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
Ostrzeżenie
Wartość DisabledByDefault w kluczach rejestru w ramach klucza Protocols nie ma pierwszeństwa przed wartością grbitEnabledProtocols zdefiniowaną w strukturze SCHANNEL_CRED
zawierającej dane poświadczenia Schannel.
Podklucz SCHANNEL\Ciphers
Klucz rejestru Ciphers w kluczu SCHANNEL służy do kontrolowania użycia algorytmów symetrycznych, takich jak DES i RC4. Poniżej przedstawiono prawidłowe klucze rejestru w kluczu Ciphers.
Utwórz podklucz szyfrowania SCHANNEL w formacie: SCHANNEL\(VALUE)\(VALUE/VALUE)
RC4 128/128
Podklucz szyfrowania: SCHANNEL\Ciphers\RC4 128/128
Ten podklucz odnosi się do RC4 w wersji 128-bitowej.
Aby zezwolić na ten algorytm szyfrowania, zmień dane wartości DWORD wartości Włączone na 0xffffffff. Można też zmienić dane wartości DWORD na 0x0. Jeśli nie skonfigurujesz wartości Włączone, ustawienie domyślne zostanie włączone. Ten klucz rejestru nie ma zastosowania do serwera z możliwością eksportowania, który nie ma certyfikatu SGC.
Wyłączenie tego algorytmu skutecznie uniemożliwia użycie następujących wartości:
- SSL_RSA_WITH_RC4_128_MD5
- SSL_RSA_WITH_RC4_128_SHA
- TLS_RSA_WITH_RC4_128_MD5
- TLS_RSA_WITH_RC4_128_SHA
Potrójny algorytm DES 168
Podklucz szyfrowania: SCHANNEL\Ciphers\Triple DES 168
Ten klucz rejestru odnosi się do 168-bitowej wartości potrójnego algorytmu DES zgodnie z opisem w ANSI X9.52 i Draft FIPS 46-3. Ten klucz rejestru nie ma zastosowania do wersji eksportu.
Aby zezwolić na ten algorytm szyfrowania, zmień dane wartości DWORD wartości Włączone na 0xffffffff. Można też zmienić dane DWORD na 0x0. Jeśli nie skonfigurujesz wartości Włączone, ustawienie domyślne zostanie włączone.
Wyłączenie tego algorytmu skutecznie uniemożliwia użycie następujących wartości:
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
Uwaga
W przypadku wersji Windows wydanych przed Windows Vista kluczem powinien być potrójny algorytm DES 168/168.
RC2 128/128
Podklucz szyfrowania: SCHANNEL\Ciphers\RC2 128/128
Ten klucz rejestru odnosi się do RC2 w wersji 128-bitowej. Nie dotyczy wersji eksportu.
Aby zezwolić na ten algorytm szyfrowania, zmień dane wartości DWORD wartości Włączone na 0xffffffff. W przeciwnym razie zmień dane wartości DWORD na 0x0. Jeśli nie skonfigurujesz wartości Włączone, ustawienie domyślne zostanie włączone.
RC4 64/128
Podklucz szyfrowania: SCHANNEL\Ciphers\RC4 64/128
Ten klucz rejestru odnosi się do RC4 w wersji 64-bitowej. Nie ma zastosowania do wersji eksportu (ale jest używana w usłudze Microsoft Money).
Aby zezwolić na ten algorytm szyfrowania, zmień dane wartości DWORD wartości Włączone na 0xffffffff. W przeciwnym razie zmień dane wartości DWORD na 0x0. Jeśli nie skonfigurujesz wartości Włączone, ustawienie domyślne zostanie włączone.
RC4 56/128
Podklucz szyfrowania: SCHANNEL\Ciphers\RC4 56/128
Ten klucz rejestru odnosi się do RC4 w wersji 56-bitowej.
Aby zezwolić na ten algorytm szyfrowania, zmień dane wartości DWORD wartości Włączone na 0xffffffff. W przeciwnym razie zmień dane wartości DWORD na 0x0. Jeśli nie skonfigurujesz wartości Włączone, ustawienie domyślne zostanie włączone.
Wyłączenie tego algorytmu skutecznie uniemożliwia użycie następującej wartości:
- TLS_RSA_EXPORT1024_WITH_RC4_56_SHA
RC2 56/128
Podklucz szyfrowania: SCHANNEL\Ciphers\RC2 56/128
Ten klucz rejestru odnosi się do RC2 w wersji 56-bitowej.
Aby zezwolić na ten algorytm szyfrowania, zmień dane wartości DWORD wartości Włączone na 0xffffffff. W przeciwnym razie zmień dane wartości DWORD na 0x0. Jeśli nie skonfigurujesz wartości Włączone, ustawienie domyślne zostanie włączone.
DES 56
Podklucz szyfrowania: SCHANNEL\Ciphers\DES 56/56
Ten klucz rejestru odwołuje się do algorytmu DES w wersji 56-bitowej, jak określono w FIPS 46-2. Jego implementacja w plikach Rsabase.dll i Rsaenh.dll jest weryfikowana w ramach programu weryfikacji modułu kryptograficznego FIPS 140-1.
Aby zezwolić na ten algorytm szyfrowania, zmień dane wartości DWORD wartości Włączone na 0xffffffff. W przeciwnym razie zmień dane wartości DWORD na 0x0. Jeśli nie skonfigurujesz wartości Włączone, ustawienie domyślne zostanie włączone.
Wyłączenie tego algorytmu skutecznie uniemożliwia użycie następujących wartości:
- SSL_RSA_WITH_DES_CBC_SHA
- TLS_RSA_WITH_DES_CBC_SHA
RC4 40/128
Podklucz szyfrowania: SCHANNEL\Ciphers\RC4 40/128
Ten klucz rejestru odnosi się do RC4 w wersji 40-bitowej.
Aby zezwolić na ten algorytm szyfrowania, zmień dane wartości DWORD wartości Włączone na 0xffffffff. W przeciwnym razie zmień dane wartości DWORD na 0x0. Jeśli nie skonfigurujesz wartości Włączone, ustawienie domyślne zostanie włączone.
Wyłączenie tego algorytmu skutecznie uniemożliwia użycie następujących wartości:
- SSL_RSA_EXPORT_WITH_RC4_40_MD5
- TLS_RSA_EXPORT_WITH_RC4_40_MD5
RC2 40/128
Podklucz szyfrowania: SCHANNEL\Ciphers\RC2 40/128
Ten klucz rejestru odnosi się do RC2 w wersji 40-bitowej.
Aby zezwolić na ten algorytm szyfrowania, zmień dane wartości DWORD wartości Włączone na 0xffffffff. W przeciwnym razie zmień dane wartości DWORD na 0x0. Jeśli nie skonfigurujesz wartości Włączone, ustawienie domyślne zostanie włączone.
Wyłączenie tego algorytmu skutecznie uniemożliwia użycie następujących wartości:
- SSL_RSA_EXPORT_WITH_RC2_CBC_40_MD5
- TLS_RSA_EXPORT_WITH_RC2_CBC_40_MD5
NULL
Podklucz szyfrowania: SCHANNEL\Ciphers\NULL
Ten klucz rejestru oznacza brak szyfrowania. Opcja ta jest domyślnie wyłączona.
Aby wyłączyć szyfrowanie (nie zezwalaj na wszystkie algorytmy szyfrowania), zmień dane wartości DWORD wartości Włączone na 0xffffffff. W przeciwnym razie zmień dane wartości DWORD na 0x0.
Hashes
Podklucz szyfrowania: SCHANNEL/Hashes
Klucz rejestru Hashes w kluczu SCHANNEL służy do kontrolowania użycia algorytmów wyznaczania wartości skrótu, takich jak SHA-1 i MD5. Poniżej przedstawiono prawidłowe klucze rejestru w kluczu Hashes.
MD5
Podklucz szyfrowania: SCHANNEL\Hashes\MD5
Aby zezwolić na ten algorytm wyznaczania wartości skrótu, zmień dane wartości DWORD wartości Włączone na wartość domyślną 0xffffffff. W przeciwnym razie zmień dane wartości DWORD na 0x0.
Wyłączenie tego algorytmu skutecznie uniemożliwia użycie następujących wartości:
- 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
Podklucz szyfrowania: SCHANNEL\Hashes\SHA
Ten klucz rejestru odwołuje się do algorytmu bezpiecznego skrótu (SHA-1), zgodnie z definicją w FIPS 180-1. Jego implementacja w plikach Rsabase.dll i Rsaenh.dll jest weryfikowana w ramach programu weryfikacji modułu kryptograficznego FIPS 140-1.
Aby zezwolić na ten algorytm wyznaczania wartości skrótu, zmień dane wartości DWORD wartości Włączone na wartość domyślną 0xffffffff. W przeciwnym razie zmień dane wartości DWORD na 0x0.
Wyłączenie tego algorytmu skutecznie uniemożliwia użycie następujących wartości:
- 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
Podklucz szyfrowania: SCHANNEL/KeyExchangeAlgorithms
Klucz rejestru KeyExchangeAlgorithms w ramach klucza SCHANNEL służy do kontrolowania użycia algorytmów wymiany kluczy, takich jak RSA. Poniżej przedstawiono prawidłowe klucze rejestru w ramach klucza KeyExchangeAlgorithms.
PKCS
Podklucz szyfrowania: SCHANNEL\KeyExchangeAlgorithms\PKCS
Ten klucz rejestru określa RSA jako algorytmy wymiany kluczy i uwierzytelniania.
Aby zezwolić na RSA, zmień dane wartości DWORD wartości Włączone na wartość domyślną 0xffffffff. W przeciwnym razie zmień dane DWORD na 0x0.
Wyłączenie usługi RSA skutecznie uniemożliwia dostęp do wszystkich zestawów szyfrowania SSL i TLS opartych na protokole RSA obsługiwanych przez dostawcę zabezpieczeń Windows NT4 SP6 Microsoft TLS/SSL.
Zestawy szyfrowania FIPS 140-1
Można użyć tylko tych zestawów szyfrowania SSL 3.0 lub TLS 1.0, które odpowiadają algorytmom FIPS 46-3 lub FIPS 46-2 i FIPS 180-1 dostarczonym przez podstawowego lub rozszerzonego dostawcę kryptograficznego firmy Microsoft.
W tym artykule nazywamy je zestawami szyfrowania FIPS 140-1. Są one następujące:
- 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
Aby używać tylko zestawów szyfrowania FIPS 140-1 zdefiniowanych tutaj i obsługiwanych przez dostawcę zabezpieczeń TLS/SSL systemu Windows NT 4.0 z dodatkiem Service Pack 6 firmy Microsoft z podstawowym dostawcą kryptograficznym lub rozszerzonym dostawcą kryptografii, skonfiguruj dane wartości DWORD wartości Włączone w następujących kluczach rejestru do 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
Skonfiguruj dane wartości DWORD wartości Włączone w następujących kluczach rejestru na 0xffffffff:
SCHANNEL\Ciphers\DES 56/56
SCHANNEL\Ciphers\Triple DES 168/168
(nie dotyczy wersji eksportu)SCHANNEL\Hashes\SHA
SCHANNEL\KeyExchangeAlgorithms\PKCS
Główne obliczenia wpisów tajnych przy użyciu zestawów szyfrowania FIPS 140-1
Procedury korzystania z zestawów szyfrowania FIPS 140-1 w protokole SSL 3.0 różnią się od procedur korzystania z zestawów szyfrowania FIPS 140-1 w protokole TLS 1.0.
W przypadku protokołu SSL 3.0 definicja obliczeniowa master_secret jest następująca:
W przypadku protokołu TLS 1.0 definicja obliczeniowa master_secret jest następująca:
gdzie:
Wybranie opcji używania tylko zestawów szyfrowania FIPS 140-1 w protokole TLS 1.0:
Z powodu tej różnicy klienci mogą chcieć zakazać używania protokołu SSL 3.0, mimo że dozwolony zestaw szyfrowania jest ograniczony tylko do podzestawu szyfrowania FIPS 140-1. W takim przypadku zmień dane wartości DWORD wartości Włączone na 0x0 w następujących kluczach rejestru w kluczu Protocols:
SCHANNEL\Protocols\SSL 3.0\Client
SCHANNEL\Protocols\SSL 3.0\Server
Ostrzeżenie
Dane wartości Włączone w tych kluczach rejestru w kluczu Protocols mają pierwszeństwo przed wartością grbitEnabledProtocols zdefiniowaną w strukturze SCHANNEL_CRED
zawierającej dane poświadczenia Schannel. Domyślne włączone dane wartości to 0xffffffff.
Przykłady plików rejestru
W tej sekcji artykułu przedstawiono dwa przykłady zawartości pliku rejestru na potrzeby konfiguracji. Są to pliki Export.reg i Non-export.reg.
Na komputerze z systemem Windows NT 4.0 z dodatkiem Service Pack 6 z eksportowanymi plikami Rasbase.dll i Schannel.dll uruchom plik Export.reg, aby upewnić się, że komputer używa tylko zestawów szyfrowania FIPS protokołu TLS 1.0.
Na komputerze z systemem Windows NT 4.0 z dodatkiem Service Pack 6, który zawiera nieeksportowalne pliki Rasenh.dll i Schannel.dll, uruchom plik Non-export.reg, aby upewnić się, że komputer używa tylko zestawów szyfrowania FIPS protokołu TLS 1.0.
Aby plik Schannel.dll rozpoznawał wszelkie zmiany w kluczu rejestru SCHANNEL należy ponownie uruchomić komputer.
Aby przywrócić domyślne ustawienia rejestru, usuń klucz rejestru SCHANNEL i wszystkie jego elementy. Jeśli te klucze rejestru nie są obecne, Schannel.dll ponownie kompiluje klucze po ponownym uruchomieniu komputera.
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla