Limitare l'uso di determinati algoritmi e protocolli di crittografia in Schannel.dll.

Questo articolo descrive come limitare l'uso di determinati algoritmi e protocolli di crittografia nel file Schannel.dll. Queste informazioni si applicano anche alle applicazioni di fornitore di software indipendente (ISV, Independent Software Vendor) scritte per l'API crittografica (CAPI) di Microsoft.

Si applica a: Windows Server 2003
Numero della Knowledge Base originale: 245030

Nota

Questo articolo si applica a Windows Server 2003 e alle versioni precedenti di Windows. Per le chiavi del Registro di sistema applicabili a Windows Server 2008 e versioni successive di Windows, consultare il Impostazioni TLS del Registro di sistema.

Riepilogo

Ai seguenti provider del servizio di crittografia (CSP) inclusi in Windows NT 4.0 Service Pack 6 sono stati assegnati i certificati per la convalida della crittografia FIPS-140-1.

  • Provider di crittografia di base Microsoft (Rsabase.dll)
  • Provider di crittografia avanzato Microsoft (Rsaenh.dll) (versione non di esportazione)

Il provider di sicurezza Microsoft TLS/SSL, il file Schannel.dll, utilizza i CSP qui elencati per eseguire comunicazioni sicure tramite SSL o TLS nel relativo supporto per Internet Explorer e Internet Information Services (IIS).

È possibile modificare il file Schannel.dll per supportare i pacchetti di crittografia 1 e 2. Tuttavia, il programma deve anche supportare i pacchetti di crittografia 1 e 2. I pacchetti di crittografia 1 e 2 non sono supportati in IIS 4.0 e 5.0.

Questo articolo contiene le informazioni necessarie per configurare il provider di sicurezza TLS/SSL per Windows NT 4.0 Service Pack 6 e versioni successive. È possibile utilizzare il Registro di sistema di Windows per controllare l'utilizzo di pacchetti di crittografia SSL 3.0 o TLS 1.0 specifici rispetto agli algoritmi di crittografia supportati dal provider di crittografia di base o dal provider di crittografia avanzato.

Nota

In Windows NT 4.0 Service Pack 6, il file Schannel.dll non utilizza il provider di crittografia di base Microsoft DSS (Dssbase.dll) o il provider di crittografia avanzato Microsoft DS/Diffie-Hellman (Dssenh.dll).

Pacchetti di crittografia

Sia SSL 3.0 che TLS 1.0 (RFC2246) con INTERNET-DRAFT a 56 bit per TLS draft-ietf-tls-56-bit-ciphersuites-00.txt offrono opzioni per l'utilizzo di pacchetti di crittografia diversi. Ogni pacchetto di crittografia determina gli algoritmi con scambio della chiave, autenticazione, crittografia e MAC utilizzati in una sessione SSL/TLS. Quando si utilizza la crittografia RSA sia come algoritmo con scambio della chiave che di autenticazione, il termine RSA viene visualizzato una sola volta nelle definizioni del pacchetto di crittografia corrispondente.

Il provider di sicurezza Microsoft TLS/SSL di Windows NT 4.0 Service Pack 6 supporta il pacchetto di crittografia definito da SSL 3.0 seguente quando si usa il provider di crittografia di base o il provider di crittografia avanzato:

SSL 3.0 Pacchetto di crittografia
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 }

Nota

Né SSL_RSA_EXPORT1024_WITH_DES_CBC_SHA né SSL_RSA_EXPORT1024_WITH_RC4_56_SHA sono definiti nel testo SSL 3.0. Tuttavia, diversi fornitori di SSL 3.0 li supportano. Ciò include Microsoft.

Il provider di sicurezza Microsoft TLS/SSL di Windows NT 4.0 Service Pack 6 supporta anche il pacchetto di crittografia definito da TLS 1.0 seguente quando si usa il provider di crittografia di base o il provider di crittografia avanzato:

TLS 1.0 Pacchetto di crittografia
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 }

Nota

Un pacchetto di crittografia definito tramite il primo byte 0x00 è non privato e viene utilizzato per le comunicazioni interoperabili aperte. Pertanto, il provider di sicurezza Microsoft TLS/SSL di Windows NT 4.0 Service Pack 6 segue le procedure per l'utilizzo di questi pacchetti di crittografia come specificato in SSL 3.0 e TLS 1.0 per garantire l'interoperabilità.

Chiavi del Registro di sistema specifiche di Schannel

Importante

In questa sezione, metodo o attività viene illustrata la procedura per modificare il Registro di sistema. Poiché l'errata modifica del Registro di sistema può causare seri problemi, Di conseguenza, attenersi scrupolosamente alla procedura indicata. Per una maggiore protezione, eseguire il backup del Registro di sistema prima di modificarlo. In questo modo sarà possibile ripristinare il Registro di sistema se si verifica un problema. Per ulteriori informazioni su come eseguire backup e ripristino del Registro di sistema, vedere Backup e ripristino del Registro di sistema in Windows.

Nota

Tutte le modifiche apportate al contenuto della chiave CIPHERS o della chiave HASHES hanno effetto immediato, senza dover riavviare il sistema.

Chiave SCHANNEL

Avviare l'editor del Registro di sistema (Regedt32.exe) e individuare le seguenti chiavi del Registro di sistema:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL

Sottochiave SCHANNEL\Protocolli

Per consentire al sistema di usare i protocolli che non verranno negoziati per impostazione predefinita (ad esempio TLS 1.1 e TLS 1.2), modificare i dati del valore DWORD del valore DisabledByDefault in 0x0 nelle chiavi del Registro di sistema seguenti nella chiave Protocolli:

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

Avviso

Il valore DisabledByDefault nelle chiavi del Registro di sistema nella chiave Protocolli non ha la precedenza sul valore grbitEnabledProtocols definito nella struttura SCHANNEL_CRED che contiene i dati per una credenziale Schannel.

Sottochiave SCHANNEL\Crittografia

La chiave del Registro Crittografia nella chiave SCHANNEL viene utilizzata per controllare l'uso di algoritmi simmetrici come DES e RC4. Di seguito sono riportate le chiavi del Registro di sistema valide nella chiave Crittografia.

Creare la sottochiave SCHANNEL Crittografia nel formato seguente: SCHANNEL\(VALUE)\(VALUE/VALUE)

RC4 128/128

Sottochiave Crittografia: SCHANNEL\Ciphers\RC4 128/128

Questa sottochiave fa riferimento a RC4 a 128 bit.

Per consentire questo algoritmo di crittografia, modificare i dati del valore DWORD del valore Abilitato in 0xffffffff. In alternativa, modificare i dati del valore DWORD in 0x0. Se il valore Abilitato non viene configurato, è abilitata l'impostazione predefinita. Questa chiave del Registro di sistema non si applica a un server esportabile che non dispone di un certificato SGC.

La disabilitazione di questo algoritmo disattiva in modo efficace i valori seguenti:

  • 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

Sottochiave Crittografia: SCHANNEL\Ciphers\Triple DES 168

Questa chiave del Registro di sistema fa riferimento a Triple DES a 168 bit come specificato in ANSI X9.52 e Draft FIPS 46-3. Questa chiave del Registro di sistema non si applica alla versione di esportazione.

Per consentire questo algoritmo di crittografia, modificare i dati del valore DWORD del valore Abilitato in 0xffffffff. In alternativa, modificare i dati DWORD in 0x0. Se il valore Abilitato non viene configurato, è abilitata l'impostazione predefinita.

La disabilitazione di questo algoritmo disattiva in modo efficace i valori seguenti:

  • 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

    Nota

    Per le versioni di Windows rilasciate prima di Windows Vista, la chiave deve essere Triple DES 168/168.

RC2 128/128

Sottochiave Crittografia: SCHANNEL\Ciphers\RC2 128/128

Questa chiave del Registro di sistema fa riferimento a RC2 a 128 bit. Non si applica alla versione di esportazione.

Per consentire questo algoritmo di crittografia, modificare i dati del valore DWORD del valore Abilitato in 0xffffffff. In alternativa, modificare i dati del valore DWORD in 0x0. Se il valore Abilitato non viene configurato, è abilitata l'impostazione predefinita.

RC4 64/128

Sottochiave Crittografia: SCHANNEL\Ciphers\RC4 64/128

Questa chiave del Registro di sistema fa riferimento a RC4 a 64 bit. Non si applica alla versione di esportazione (ma viene utilizzata in Microsoft Money).

Per consentire questo algoritmo di crittografia, modificare i dati del valore DWORD del valore Abilitato in 0xffffffff. In alternativa, modificare i dati del valore DWORD in 0x0. Se il valore Abilitato non viene configurato, è abilitata l'impostazione predefinita.

RC4 56/128

Sottochiave Crittografia: SCHANNEL\Ciphers\RC4 56/128

Questa chiave del Registro di sistema fa riferimento a RC4 a 56 bit.

Per consentire questo algoritmo di crittografia, modificare i dati del valore DWORD del valore Abilitato in 0xffffffff. In alternativa, modificare i dati del valore DWORD in 0x0. Se il valore Abilitato non viene configurato, è abilitata l'impostazione predefinita.

La disabilitazione di questo algoritmo disattiva in modo efficace il valore seguente:

  • TLS_RSA_EXPORT1024_WITH_RC4_56_SHA

RC2 56/128

Sottochiave Crittografia: SCHANNEL\Ciphers\RC2 56/128

Questa chiave del Registro di sistema fa riferimento a RC2 a 56 bit.

Per consentire questo algoritmo di crittografia, modificare i dati del valore DWORD del valore Abilitato in 0xffffffff. In alternativa, modificare i dati del valore DWORD in 0x0. Se il valore Abilitato non viene configurato, è abilitata l'impostazione predefinita.

DES 56

Sottochiave Crittografia: SCHANNEL\Ciphers\DES 56/56

Questa chiave del Registro di sistema fa riferimento a DES a 56 bit come specificato in FIPS 46-2. La sua implementazione nei file Rsabase.dll e Rsaenh.dll viene convalidata nel programma di convalida del modulo di crittografia FIPS 140-1.

Per consentire questo algoritmo di crittografia, modificare i dati del valore DWORD del valore Abilitato in 0xffffffff. In alternativa, modificare i dati del valore DWORD in 0x0. Se il valore Abilitato non viene configurato, è abilitata l'impostazione predefinita.

La disabilitazione di questo algoritmo disattiva in modo efficace i valori seguenti:

  • SSL_RSA_WITH_DES_CBC_SHA
  • TLS_RSA_WITH_DES_CBC_SHA

RC4 40/128

Sottochiave Crittografia: SCHANNEL\Ciphers\RC4 40/128

Questa chiave del Registro di sistema fa riferimento a RC4 a 40 bit.

Per consentire questo algoritmo di crittografia, modificare i dati del valore DWORD del valore Abilitato in 0xffffffff. In alternativa, modificare i dati del valore DWORD in 0x0. Se il valore Abilitato non viene configurato, è abilitata l'impostazione predefinita.

La disabilitazione di questo algoritmo disattiva in modo efficace i valori seguenti:

  • SSL_RSA_EXPORT_WITH_RC4_40_MD5
  • TLS_RSA_EXPORT_WITH_RC4_40_MD5

RC2 40/128

Sottochiave Crittografia: SCHANNEL\Ciphers\RC2 40/128

Questa chiave del Registro di sistema fa riferimento a RC2 a 40 bit.

Per consentire questo algoritmo di crittografia, modificare i dati del valore DWORD del valore Abilitato in 0xffffffff. In alternativa, modificare i dati del valore DWORD in 0x0. Se il valore Abilitato non viene configurato, è abilitata l'impostazione predefinita.

La disabilitazione di questo algoritmo disattiva in modo efficace i valori seguenti:

  • SSL_RSA_EXPORT_WITH_RC2_CBC_40_MD5
  • TLS_RSA_EXPORT_WITH_RC2_CBC_40_MD5

NULL

Sottochiave Crittografia: SCHANNEL\Ciphers\NULL

Questa chiave del Registro di sistema significa nessuna crittografia. Per impostazione predefinita, questa chiave è disattivata.

Per disattivare la crittografia (non consentire tutti gli algoritmi di crittografia), modificare i dati del valore DWORD del valore Abilitato in 0xffffffff. In alternativa, modificare i dati del valore DWORD in 0x0.

Hash

Sottochiave Crittografia: SCHANNEL/Hashes

La chiave del Registro di sistema Hash nella chiave SCHANNEL viene utilizzata per controllare l'uso di algoritmi di hash, ad esempio SHA-1 e MD5. Di seguito sono riportate le chiavi del Registro di sistema valide nella chiave Hash.

MD5

Sottochiave Crittografia: SCHANNEL\Hashes\MD5

Per consentire questo algoritmo hash, modificare i dati del valore DWORD del valore Abilitato sul valore predefinito 0xffffffff. In alternativa, modificare i dati del valore DWORD in 0x0.

La disabilitazione di questo algoritmo disattiva in modo efficace i valori seguenti:

  • 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

Sottochiave Crittografia: SCHANNEL\Hashes\SHA

Questa chiave del Registro di sistema fa riferimento a Secure Hash Algorithm (SHA-1), come specificato in FIPS 180-1. La sua implementazione nei file Rsabase.dll e Rsaenh.dll viene convalidata nel programma di convalida del modulo di crittografia FIPS 140-1.

Per consentire questo algoritmo hash, modificare i dati del valore DWORD del valore Abilitato sul valore predefinito 0xffffffff. In alternativa, modificare i dati del valore DWORD in 0x0.

La disabilitazione di questo algoritmo disattiva in modo efficace i valori seguenti:

  • 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

Sottochiave Crittografia: SCHANNEL/KeyExchangeAlgorithms

La chiave del Registro di sistema KeyExchangeAlgorithms nella chiave SCHANNEL viene utilizzata per controllare l'uso di algoritmi con scambio della chiave, ad esempio RSA. Di seguito sono riportate le chiavi del Registro di sistema valide nella chiave KeyExchangeAlgorithms.

PKCS

Sottochiave Crittografia: SCHANNEL\KeyExchangeAlgorithms\PKCS

Questa chiave del Registro di sistema fa riferimento a RSA come algoritmi con scambio e autenticazione delle chiavi.

Per consentire RSA, impostare i dati del valore DWORD del valore Abilitato sul valore predefinito 0xffffffff. In alternativa, modificare i dati DWORD in 0x0.

La disabilitazione di RSA disattiva in modo efficace tutti i pacchetti di crittografia SSL e TLS basati su RSA supportati dal provider di sicurezza Microsoft TLS/SSL per Windows NT4 SP6.

Pacchetti di crittografia FIPS 140-1

È possibile utilizzare solo i pacchetti di crittografia SSL 3.0 o TLS 1.0 corrispondenti agli algoritmi FIPS 46-3 o FIPS 46-2 e FIPS 180-1 forniti dal provider di crittografia avanzato o base Microsoft.

In questo articolo, vengono definiti pacchetti di crittografia FIPS 140-1. In particolare, sono i seguenti:

  • 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

Per utilizzare solo i pacchetti di crittografia FIPS 140-1 qui definiti e supportati dal provider di sicurezza Microsoft per Windows NT 4.0 Service Pack 6 con il provider di crittografia di base o il provider di crittografia avanzato, configurare i dati del valore DWORD del valore Abilitato nelle chiavi del Registro di sistema seguenti in 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

E configurare i dati del valore DWORD del valore Abilitato nelle chiavi del Registro di sistema seguenti in 0xffffffff:

  • SCHANNEL\Ciphers\DES 56/56
  • SCHANNEL\Ciphers\Triple DES 168/168 (non applicabile nella versione di esportazione)
  • SCHANNEL\Hashes\SHA
  • SCHANNEL\KeyExchangeAlgorithms\PKCS

Calcolo del master secret tramite pacchetti di crittografia FIPS 140-1

Le procedure per l'utilizzo dei pacchetti di crittografia FIPS 140-1 in SSL 3.0 differiscono da quelle per l'utilizzo dei pacchetti di crittografia FIPS 140-1 in TLS 1.0.

In SSL 3.0 la definizione del calcolo master_secret è la seguente:

In TLS 1.0 la definizione del calcolo master_secret è la seguente:

dove:

Selezionando l'opzione per utilizzare solo i pacchetti di crittografia FIPS 140-1 in TLS 1.0:

A causa di questa differenza, i clienti potrebbero voler vietare l'utilizzo di SSL 3.0 anche se l'insieme consentito di pacchetti di crittografia è limitato solo al sottoinsieme di pacchetti di crittografia FIPS 140-1. In tal caso, modificare i dati del valore DWORD del valore Abilitato in 0x0 nelle chiavi del Registro di sistema seguenti nella chiave Protocolli:

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

Avviso

I dati del valore Abilitato in queste chiavi del Registro di sistema nella chiave Protocolli hanno la precedenza sul valore grbitEnabledProtocols definito nella struttura SCHANNEL_CRED che contiene i dati per una credenziale Schannel. I dati del valore Abilitato predefiniti sono 0xffffffff.

Esempi di file del Registro di sistema

In questa sezione dell'articolo sono disponibili due esempi di contenuto del file del Registro di sistema per la configurazione. Sono Export.reg e Non-export.reg.

In un computer che esegue Windows NT 4.0 Service Pack 6 con i file di Rasbase.dll e Schannel.dll esportabili, eseguire Export.reg per assicurarsi che solo i pacchetti di crittografia FIPS TLS 1.0 vengano utilizzati dal computer.

In un computer che esegue Windows NT 4.0 Service Pack 6 che include i file di Rasenh.dll e Schannel.dll non esportabili, eseguire Non-export.reg per assicurarsi che solo i pacchetti di crittografia FIPS TLS 1.0 vengano utilizzati dal computer.

Per consentire al file Schannel.dll di riconoscere eventuali modifiche nella chiave del Registro di sistema SCHANNEL, è necessario riavviare il computer.

Per restituire le impostazioni del Registro di sistema all'impostazione predefinita, eliminare la chiave del Registro di sistema SCHANNEL e tutti gli elementi sottostanti. Se queste chiavi del Registro di sistema non sono presenti, il Schannel.dll ricompila le chiavi quando si riavvia il computer.