Como restringir o uso de determinados algoritmos criptográficos e protocolos no Schannel. dll

Aplica-se a: Microsoft Windows Server 2003 Enterprise Edition (32-bit x86)Microsoft Windows Server 2003 Standard Edition (32-bit x86)Microsoft Windows Server 2003 Web Edition

Sumário


Este artigo descreve como restringir o uso de determinados algoritmos criptográficos e protocolos no arquivo Schannel dll. Essas informações também se aplica a aplicativos de ISV (fornecedor) de software independentes que são escritos para Microsoft Cryptographic API (CAPI).

Observação: Este artigo se aplica ao Windows Server 2003 e em versões anteriores do Windows. Para chaves do registro que se aplicam ao Windows Server 2008 e versões posteriores do Windows, consulte as Configurações de registro do TLS.

Mais informações


Os seguintes provedores de serviços de criptografia (CSPs) que estão incluídos no Windows NT 4.0 Service Pack 6 foram concedidos certificados para validação de criptografia FIPS-140-1:

  • Microsoft Base Cryptographic Provider (Rsabase. dll)
  • Microsoft Enhanced Cryptographic Provider (Rsaenh. dll) (versão de exportação não)
Microsoft TLS/SSL Security Provider, o arquivo Schannel dll, usa os CSPs listados aqui para conduzir uma comunicação segura sobre SSL ou TLS no seu suporte para o Internet Explorer e o Internet Information Services (IIS).

Você pode alterar o arquivo Schannel dll para oferecer suporte ao conjunto de codificação 1 e 2. No entanto, o programa também deve suportar o conjunto de codificação 1 e 2. Conjunto de codificação 1 e 2 não são suportados no IIS 4.0 e 5.0.

Este artigo contém as informações necessárias para configurar o TLS/SSL Security Provider para Windows NT 4.0 Service Pack 6 e versões posteriores. Você pode usar o registro do Windows para controlar o uso de conjuntos específicos de codificação de SSL 3.0 ou TLS 1.0 com respeito os algoritmos criptográficos que são suportados pelo provedor criptográfico Base ou Enhanced Cryptographic Provider.

Observação: No Windows NT 4.0 Service Pack 6, o arquivo Schannel dll não usa o Microsoft Base DSS Cryptographic Provider (Dssbase.dll) ou o Microsoft DS/Diffie-Hellman Enhanced Cryptographic Provider (dssenh. dll).

Conjuntos de codificação

SSL 3.0 (http://www.mozilla.org/projects/security/pki/nss/ssl/draft302.txt) e TLS 1.0 (RFC2246) com a INTERNET-rascunho "conjuntos de codificação de exportação de 56 bits para TLS draft-ietf-tls-56-bit-ciphersuites-00.txt" oferecem opções para usar conjuntos de codificação diferentes. Cada conjunto de codificação determina a troca de chaves, autenticação, criptografia e algoritmos de MAC são usados em uma sessão SSL/TLS. Observe que quando você usar RSA como algoritmos de autenticação e troca de chaves, o termo RSA aparece apenas uma vez nas definições de conjunto de codificação correspondente.

O Windows NT 4.0 Service Pack 6 Microsoft TLS/SSL Security Provider suporta a seguir definidas pelo SSL 3.0 "CipherSuite" quando você usa o provedor de criptografia Base ou Enhanced Cryptographic Provider:

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 }
Observação: Nem SSL_RSA_EXPORT1024_WITH_DES_CBC_SHA nem SSL_RSA_EXPORT1024_WITH_RC4_56_SHA é definido no texto do SSL 3.0. No entanto, vários fornecedores de SSL 3.0 suportá-los. Isso inclui o Microsoft.

Windows NT 4.0 Service Pack 6 Microsoft TLS/SSL Security Provider também suporta o seguinte definido TLS 1.0 "CipherSuite" quando você usar o provedor criptográfico de Base ou Enhanced Cryptographic Provider:

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 }
Observação: Um conjunto de codificação que é definido usando-se o primeiro byte "0x00" é não-particular e é usado para comunicação interoperável aberta. Portanto, o Windows NT 4.0 Service Pack 6 Microsoft TLS/SSL Security Provider segue os procedimentos para usar esses conjuntos de cifras conforme especificado no SSL 3.0 e TLS 1.0 para certificar-se de interoperabilidade.

Chaves de registro específicas do schannel

Importante: essa seção, método ou tarefa contém etapas que informam sobre como modificar o registro. No entanto, sérios problemas poderão ocorrer caso você modifique o registro incorretamente. Portanto, certifique-se de seguir estes passos cuidadosamente. Para obter mais proteção, faça backup do registro antes de modificá-lo. Em seguida, você poderá restaurar o registro caso ocorra um problema. Para obter mais informações sobre como fazer backup e restaurar o registro, clique no número do artigo a seguir para visualizá-lo na Base de Dados de Conhecimento da Microsoft:
322756 como fazer backup e restaurar o registro no Windows
Observação: Qualquer alteração no conteúdo de tecla a CODIFICAÇÕES ou HASHES terão efeito imediatamente, sem uma reinicialização do sistema.

Chave SCHANNEL

Inicie o Editor do registro (Regedt32.exe) e, em seguida, localize a seguinte chave do registro:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL

Subchave SCHANNEL\Protocols

Para ativar o sistema para usar os protocolos que não serão negociados por padrão (como o TLS 1.1 e o TLS 1.2), altere os dados do valor DWORD do valor DisabledByDefault para 0x0 nas seguintes chaves do registro sob a chave de protocolos:

  • SCHANNEL\Protocols\TLS 1.1\Client
  • SCHANNEL\Protocols\TLS 1.1\Server
  • SCHANNEL\Protocols\TLS 1.2\Client
  • SCHANNEL\Protocols\TLS 1.2\Server
Aviso: O valor DisabledByDefault nas chaves do registro sob a chave de protocolos não têm precedência sobre o valor grbitEnabledProtocols definido na estrutura SCHANNEL_CRED que contém os dados para uma credencial Schannel.

Subchave SCHANNEL\Ciphers

A chave de registro codificações sob a chave SCHANNEL é usada para controlar o uso de algoritmos simétricos como o DES e o RC4. A seguir estão as chaves de registro válido sob a chave de codificações.
Subchave SCHANNEL\Ciphers\RC4 128/128
RC4 128/128


Essa subchave refere-se ao RC4 de 128 bits.


Para permitir que esse algoritmo de codificação, altere os dados do valor DWORD do valor de Enabled para 0xffffffff. Ou, alterar os dados do valor DWORD como 0x0. Se você não definir o valor de ativado, o padrão é ativado. Essa chave do registro não se aplica a um servidor exportável que não tem um certificado SGC.

Desabilitar esse algoritmo efetivamente não permite o seguinte:

  • SSL_RSA_WITH_RC4_128_MD5
  • SSL_RSA_WITH_RC4_128_SHA
  • TLS_RSA_WITH_RC4_128_MD5
  • TLS_RSA_WITH_RC4_128_SHA
SCHANNEL\Ciphers\Triple DES 168
DES triplo 168

Essa chave do registro se refere a Triple DES de 168 bits conforme especificado em ANSI X9.52 e rascunho FIPS 46-3. Essa chave do registro não é aplicável para a versão de exportação.

Para permitir que esse algoritmo de codificação, altere os dados do valor DWORD do valor de Enabled para 0xffffffff. Ou então, altere os dados DWORD para 0x0. Se você não definir o valor de ativado, o padrão é ativado.

Desabilitar esse algoritmo efetivamente não permite o seguinte:

  • 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
Observação: Para as versões do Windows que libera antes do Windows Vista, a chave deve ser Triple DES 168/168.
Subchave SCHANNEL\Ciphers\RC2 128/128
RC2 128/128

Essa chave do registro refere-se ao RC2 de 128 bits. Ela não é aplicada para a versão de exportação.

Para permitir que esse algoritmo de codificação, altere os dados do valor DWORD do valor de Enabled para 0xffffffff. Caso contrário, altere os dados do valor DWORD para 0x0. Se você não definir o valor de ativado, o padrão é ativado.

Subchave SCHANNEL\Ciphers\RC4 64/128
RC4 64/128

Essa chave do registro se refere a 64-bit RC4. Ele não se aplica à versão de exportação (mas é usado no Microsoft Money).

Para permitir que esse algoritmo de codificação, altere os dados do valor DWORD do valor de Enabled para 0xffffffff. Caso contrário, altere os dados do valor DWORD para 0x0. Se você não definir o valor de ativado, o padrão é ativado.

Subchave de 56/128 SCHANNEL\Ciphers\RC4
RC4 56/128

Essa chave do registro se refere ao RC4 de 56 bits.

Para permitir que esse algoritmo de codificação, altere os dados do valor DWORD do valor de Enabled para 0xffffffff. Caso contrário, altere os dados do valor DWORD para 0x0. Se você não definir o valor de ativado, o padrão é ativado.

Desabilitar esse algoritmo efetivamente não permite o seguinte:

  • TLS_RSA_EXPORT1024_WITH_RC4_56_SHA
Subchave de 56/128 SCHANNEL\Ciphers\RC2
RC2 56/128

Essa chave do registro refere-se ao RC2 de 56 bits.

Para permitir que esse algoritmo de codificação, altere os dados do valor DWORD do valor de Enabled para 0xffffffff. Caso contrário, altere os dados do valor DWORD para 0x0. Se você não definir o valor de ativado, o padrão é ativado.

Subchave de 56/56 SCHANNEL\Ciphers\RC2

DES DE 56

Essa chave do registro se refere a DES de 56 bits conforme especificado no FIPS 46-2. Sua implementação nos arquivos Rsabase. dll e Rsaenh. dll é validada sob o programa de validação FIPS 140-1 criptografia módulo.

Para permitir que esse algoritmo de codificação, altere os dados do valor DWORD do valor de Enabled para 0xffffffff. Caso contrário, altere os dados do valor DWORD para 0x0. Se você não definir o valor de ativado, o padrão é ativado.

Desabilitar esse algoritmo efetivamente não permite o seguinte:

  • SSL_RSA_WITH_DES_CBC_SHA
  • TLS_RSA_WITH_DES_CBC_SHA
Subchave SCHANNEL\Ciphers\RC4 40/128

RC4 40/128

Refere-se ao RC4 de 40 bits.

Para permitir que esse algoritmo de codificação, altere os dados do valor DWORD do valor de Enabled para 0xffffffff. Caso contrário, altere os dados do valor DWORD para 0x0. Se você não definir o valor de ativado, o padrão é ativado.

Desabilitar esse algoritmo efetivamente não permite o seguinte:

  • SSL_RSA_EXPORT_WITH_RC4_40_MD5
  • TLS_RSA_EXPORT_WITH_RC4_40_MD5
Subchave SCHANNEL\Ciphers\RC2 40/128

RC2 40/128

Essa chave do registro refere-se ao RC2 de 40 bits.

Para permitir que esse algoritmo de codificação, altere os dados do valor DWORD do valor de Enabled para 0xffffffff. Caso contrário, altere os dados do valor DWORD para 0x0. Se você não definir o valor de ativado, o padrão é ativado.

Desabilitar esse algoritmo efetivamente não permite o seguinte:

  • SSL_RSA_EXPORT_WITH_RC2_CBC_40_MD5
  • TLS_RSA_EXPORT_WITH_RC2_CBC_40_MD5
Subchave SCHANNEL\Ciphers\NULL

NULL

Essa chave do registro significa sem criptografia. Por padrão, ela está desativada.

Para desativar a criptografia (impedir que todos os algoritmos de codificação), altere os dados do valor DWORD do valor de Enabled para 0xffffffff. Caso contrário, altere os dados do valor DWORD para 0x0.

Subchave SCHANNEL/Hashes

A chave de registro Hashes sob a chave SCHANNEL é usada para controlar o uso de algoritmos de hash como o SHA-1 e MD5. A seguir estão as chaves de registro válido sob a chave de Hashes.

Subchave SCHANNEL\Hashes\MD5

MD5

Para permitir que esse algoritmo de hash, altere os dados do valor DWORD do valor de Enabled para o valor de padrão 0xffffffff. Caso contrário, altere os dados do valor DWORD para 0x0.

Desabilitar esse algoritmo efetivamente não permite o seguinte:

  • 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
Subchave SCHANNEL\Hashes\SHA

SHA

Essa chave do registro refere-se ao algoritmo de Hash seguro (SHA-1), conforme especificado no FIPS 180-1. Sua implementação nos arquivos Rsabase. dll e Rsaenh. dll é validada sob o programa de validação FIPS 140-1 criptografia módulo.

Para permitir que esse algoritmo de hash, altere os dados do valor DWORD do valor de Enabled para o valor de padrão 0xffffffff. Caso contrário, altere os dados do valor DWORD para 0x0.

Desabilitar esse algoritmo efetivamente não permite o seguinte:

  • 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

Subchave SCHANNEL/KeyExchangeAlgorithms

A chave de registro KeyExchangeAlgorithms sob a chave SCHANNEL é usada para controlar o uso de algoritmos de troca de chaves como RSA. A seguir estão as chaves de registro válido sob a chave KeyExchangeAlgorithms.

Subchave SCHANNEL\KeyExchangeAlgorithms\PKCS
PKCS

Essa chave do registro refere-se ao RSA como os algoritmos de troca e a autenticação de chave.

Para permitir que o RSA, altere os dados do valor DWORD do valor de Enabled para o valor de padrão 0xffffffff. Caso contrário, altere os dados DWORD para 0x0.

Desativar o RSA efetivamente proíbe todos baseados em RSA SSL e TLS conjuntos de codificação suportados pelo Windows NT4 SP6 Microsoft TLS/SSL Security Provider.

FIPS 140-1 cipher suites

Convém usar somente esses SSL 3.0 ou TLS 1.0 conjuntos de codificação que correspondem ao FIPS 46-3 ou FIPS 46-2 e algoritmos de 180-1 FIPS fornecidos pelo Microsoft Base ou Enhanced Cryptographic Provider.

Neste artigo, nós nos referimos a eles como FIPS 140-1 cipher suites. Especificamente, eles são os seguintes:

  • 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
Para usar somente o FIPS 140-1 cipher suites conforme definido aqui e suportado pelo Windows NT 4.0 Service Pack 6 Microsoft TLS/SSL Security Provider com Base Cryptographic Provider ou com o provedor de criptografia Avançado, configure os dados do valor DWORD do valor de ativado nas seguintes chaves do registro para 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 configure os dados do valor DWORD do valor de ativado nas seguintes chaves do registro para 0xffffffff:

  • SCHANNEL\Ciphers\DES 56/56
  • SCHANNEL\Ciphers\Triple DES 168/168"[não é aplicável na versão de exportação]
  • SCHANNEL\Hashes\SHA
  • SCHANNEL\KeyExchangeAlgorithms\PKCS

Computação segreda mestre usando FIPS 140-1 cipher suites

Os procedimentos para usar a codificação de 140-1 FIPS conjuntos SSL 3.0 diferem dos procedimentos para usar os FIPS 140-1 cipher suites no TLS 1.0.

SSL 3.0, a seguir está a computação de master_secret definição:

TLS 1.0, o seguinte é a computação de master_secret definição:

onde:

Selecionando a opção de usar apenas o FIPS 140-1 cipher suites no TLS 1.0:

Devido a essa diferença, os clientes talvez queira proibir o uso do SSL 3.0, mesmo que o conjunto de conjuntos de codificação permitido é limitado a apenas o subconjunto de FIPS 140-1 cipher suites. Nesse caso, altere o dado do valor DWORD do valor de Enabled para 0x0 nas seguintes chaves do registro sob a chave de protocolos:

  • SCHANNEL\Protocols\SSL 3.0\Client
  • SCHANNEL\Protocols\SSL 3.0\Server
Aviso: Os dados do valor de Enabled nessas chaves do registro sob a chave de protocolos tem precedência sobre o valor grbitEnabledProtocols definido na estrutura SCHANNEL_CRED que contém os dados para uma credencial Schannel. Os dados do valor de Enabled padrão serão 0xffffffff.

Arquivos de registro de exemplo

Dois exemplos de conteúdo do arquivo de registro de configuração são fornecidos nesta seção do artigo. Eles são Export.reg e não export.reg.

Em um computador que esteja executando o Windows NT 4.0 Service Pack 6 com Rasbase.dll exportáveis e arquivos Schannel. dll, executados o Export.reg para certificar-se de que apenas o TLS 1.0 FIPS cipher suites são usados pelo computador.

Em um computador que esteja executando o Windows NT 4.0 Service Pack 6 que inclui Rasenh.dll não exportável e arquivos Schannel. dll, executados Non-export.reg para certificar-se de que apenas o TLS 1.0 FIPS cipher suites são usados pelo computador.

Para o arquivo Schannel. dll reconhecer qualquer alteração na chave de registro SCHANNEL, reinicie o computador.

Para retornar as configurações do registro para o padrão, exclua a chave de registro SCHANNEL e tudo sob ele. Se essas chaves do registro não estiverem presentes, o Schannel recria as chaves quando você reiniciar o computador.