restringir el uso de determinados protocolos y algoritmos criptográficos en Schannel.dll

Este artículo describe cómo restringir el uso de determinados protocolos y algoritmos criptográficos en el archivo Schannel.dll. Esta información también se aplica a las aplicaciones de proveedor de software independientes (ISV) escritas para la API criptográfica de Microsoft (CAPI).

Se aplica a: Windows Server 2003
Número KB original: 245030

Nota:

Este artículo se aplica a Windows Server 2003 y versiones anteriores de Windows. Para las claves del Registro que se aplican a Windows Server 2008 y versiones posteriores de Windows, consulte la Configuración del Registro TLS.

Resumen

Los siguientes proveedores de servicios criptográficos (CSP) que se incluyen con Windows NT 4.0 Service Pack 6 han recibido los certificados para la validación criptográfica FIPS-140-1.

  • Proveedor criptográfico base de Microsoft (Rsabase.dll)
  • Proveedor criptográfico mejorado de Microsoft (Rsaenh.dll) (versión no exportada)

El proveedor de seguridad TLS/SSL de Microsoft, el archivo Schannel.dll, usa los CSP que se enumeran aquí para establecer comunicaciones seguras a través de SSL o TLS en su compatibilidad con Internet Explorer e Internet Information Services (IIS).

Puede cambiar el archivo Schannel.dll para admitir los conjuntos de cifrado 1 y 2. Sin embargo, el programa también debe admitir los conjuntos de cifrado 1 y 2. Los conjuntos de cifrado 1 y 2 no se admiten en IIS 4.0 y 5.0.

Este artículo contiene la información necesaria para configurar el proveedor de seguridad TLS/SSL para Windows NT 4.0 Service Pack 6 y versiones posteriores. Puede usar el Registro de Windows para controlar el uso de conjuntos de cifrado SSL 3.0 o TLS 1.0 específicos con respecto a los algoritmos criptográficos compatibles con el proveedor criptográfico base o el proveedor criptográfico mejorado.

Nota:

En Windows NT 4.0 Service Pack 6, el archivo Schannel.dll no usa el proveedor criptográfico DSS de Microsoft Base (Dssbase.dll) ni el proveedor criptográfico mejorado de Microsoft DS/Diffie-Hellman (Dssenh.dll).

Conjuntos de cifrado

Tanto SSL 3.0 como TLS 1.0 (RFC2246) con conjuntos de cifrado de exportación de 56 bits para TLS draft-ietf-tls-56-bit-ciphersuites-00.txt de INTERNET-DRAFT proporcionan opciones para usar diferentes conjuntos de cifrado. Cada conjunto de cifrado determina el intercambio de claves, la autenticación, el cifrado y los algoritmos MAC que se usan en una sesión SSL/TLS. Cuando se usa RSA como algoritmos de intercambio de claves y autenticación, el término RSA aparece solo una vez en las definiciones del conjunto de cifrado correspondiente.

El proveedor de seguridad TLS/SSL de Microsoft Windows NT 4.0 Service Pack 6 admite el siguiente conjunto de cifrado definido por SSL 3.0 cuando se usa el proveedor criptográfico base o el proveedor criptográfico mejorado:

SSL 3.0 Conjunto de cifrado
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:

Ni SSL_RSA_EXPORT1024_WITH_DES_CBC_SHA ni SSL_RSA_EXPORT1024_WITH_RC4_56_SHA se definen en el texto SSL 3.0. Sin embargo, varios proveedores de SSL 3.0 los admiten. Esto incluye a Microsoft.

El proveedor de seguridad TLS/SSL de Microsoft Windows NT 4.0 Service Pack 6 también admite el siguiente conjunto de cifrado definido por TLS 1.0 cuando se usa el proveedor criptográfico base o el proveedor criptográfico mejorado:

TLS 1.0 Conjunto de cifrado
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 conjunto de cifrado que se define mediante el primer byte 0x00 no es privado y se usa para las comunicaciones interoperables abiertas. Por lo tanto, el proveedor de seguridad TLS/SSL de Microsoft Windows NT 4.0 Service Pack 6 sigue los procedimientos para usar estos conjuntos de cifrado como se especifica en SSL 3.0 y TLS 1.0 para asegurarse de la interoperabilidad.

Claves del Registro específicas de Schannel

Importante

Esta sección, método o tarea contiene pasos que le indican cómo modificar el Registro. No obstante, pueden producirse problemas graves si modifica el registro de manera incorrecta. En consecuencia, asegúrese de seguir estos pasos cuidadosamente. Para mayor protección, cree una copia de seguridad del registro antes de modificarlo. Después, puede restaurar el registro si se produce un problema. Para obtener más información sobre cómo hacer una copia de seguridad del Registro y cómo restaurarlo, consulte Cómo realizar una copia de seguridad del Registro y restaurarlo en Windows.

Nota:

Cualquier cambio en el contenido de la clave CIPHERS o la clave HASHES surte efecto inmediatamente, sin reiniciar el equipo.

Clave SCHANNEL

En el Editor del Registro (Regedt32.exe), busque las claves siguientes:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL

Subclave SCHANNEL\Protocols

Para permitir que el sistema use los protocolos que no se negociarán de forma predeterminada (como TLS 1.1 y TLS 1.2), cambie los datos del valor DWORD del valor DisabledByDefault a 0x0 en las siguientes claves del Registro en la clave 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

Advertencia

El valor DisabledByDefault de las claves del Registro en la clave Protocols no tiene prioridad sobre el valor grbitEnabledProtocols que se define en la SCHANNEL_CRED estructura que contiene los datos de una credencial Schannel.

Subclave SCHANNEL\Ciphers

La clave del Registro Ciphers de la clave SCHANNEL se usa para controlar el uso de algoritmos simétricos, como DES y RC4. A continuación se muestran las claves del Registro válidas de la clave Ciphers.

Cree la subclave SCHANNEL Ciphers con el formato siguiente: SCHANNEL\(VALUE)\(VALUE/VALUE)

RC4 128/128

Subclave de Ciphers: SCHANNEL\Ciphers\RC4 128/128

Esta subclave hace referencia a RC4 de 128 bits.

Para permitir este algoritmo de cifrado, cambie los datos del valor DWORD del valor Enabled a 0xffffffff. O bien, cambie los datos del valor DWORD a 0x0. Si no configura el valor Habilitado, el valor predeterminado está habilitado. Esta clave del Registro no se aplica a un servidor exportable que no tenga un certificado SGC.

Deshabilitar este algoritmo de forma eficaz no permite los siguientes valores:

  • 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

Subclave de Ciphers: SCHANNEL\Ciphers\Triple DES 168

Esta clave del Registro hace referencia a Triple DES de 168 bits, tal como se especifica en ANSI X9.52 y Draft FIPS 46-3. Esta clave del Registro no se aplica a la versión de exportación.

Para permitir este algoritmo de cifrado, cambie los datos del valor DWORD del valor Enabled a 0xffffffff. O bien, cambie los datos DWORD a 0x0. Si no configura el valor Habilitado, el valor predeterminado está habilitado.

Deshabilitar este algoritmo de forma eficaz no permite los siguientes valores:

  • 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:

    Para las versiones de Windows publicadas antes de Windows Vista, la clave debe ser Triple DES 168/168.

RC2 128/128

Subclave de Ciphers: SCHANNEL\Ciphers\RC2 128/128

Esta clave del Registro hace referencia a RC2 de 128 bits. No se aplica a la versión de exportación.

Para permitir este algoritmo de cifrado, cambie los datos del valor DWORD del valor Enabled a 0xffffffff. De lo contrario, cambie los datos del valor DWORD a 0x0. Si no configura el valor Habilitado, el valor predeterminado está habilitado.

RC4 64/128

Subclave de Ciphers: SCHANNEL\Ciphers\RC4 64/128

Esta clave del Registro hace referencia a RC4 de 64 bits. No se aplica a la versión de exportación (pero se usa en Microsoft Money).

Para permitir este algoritmo de cifrado, cambie los datos del valor DWORD del valor Enabled a 0xffffffff. De lo contrario, cambie los datos del valor DWORD a 0x0. Si no configura el valor Habilitado, el valor predeterminado está habilitado.

RC4 56/128

Subclave de Ciphers: SCHANNEL\Ciphers\RC4 56/128

Esta clave del Registro hace referencia a RC4 de 56 bits.

Para permitir este algoritmo de cifrado, cambie los datos del valor DWORD del valor Enabled a 0xffffffff. De lo contrario, cambie los datos del valor DWORD a 0x0. Si no configura el valor Habilitado, el valor predeterminado está habilitado.

Deshabilitar este algoritmo de forma eficaz no permite el siguiente valor:

  • TLS_RSA_EXPORT1024_WITH_RC4_56_SHA

RC2 56/128

Subclave de Ciphers: SCHANNEL\Ciphers\RC2 56/128

Esta clave del Registro hace referencia a RC2 de 56 bits.

Para permitir este algoritmo de cifrado, cambie los datos del valor DWORD del valor Enabled a 0xffffffff. De lo contrario, cambie los datos del valor DWORD a 0x0. Si no configura el valor Habilitado, el valor predeterminado está habilitado.

DES 56

Subclave de Ciphers: SCHANNEL\Ciphers\DES 56/56

Esta clave del Registro hace referencia a DES de 56 bits como se especifica en FIPS 46-2. Su implementación en los archivos Rsabase.dll y Rsaenh.dll se valida en el programa de validación de módulos criptográficos FIPS 140-1.

Para permitir este algoritmo de cifrado, cambie los datos del valor DWORD del valor Enabled a 0xffffffff. De lo contrario, cambie los datos del valor DWORD a 0x0. Si no configura el valor Habilitado, el valor predeterminado está habilitado.

Deshabilitar este algoritmo de forma eficaz no permite los siguientes valores:

  • SSL_RSA_WITH_DES_CBC_SHA
  • TLS_RSA_WITH_DES_CBC_SHA

RC4 40/128

Subclave de Ciphers: SCHANNEL\Ciphers\RC4 40/128

Esta clave del Registro hace referencia a RC4 de 40 bits.

Para permitir este algoritmo de cifrado, cambie los datos del valor DWORD del valor Enabled a 0xffffffff. De lo contrario, cambie los datos del valor DWORD a 0x0. Si no configura el valor Habilitado, el valor predeterminado está habilitado.

Deshabilitar este algoritmo de forma eficaz no permite los siguientes valores:

  • SSL_RSA_EXPORT_WITH_RC4_40_MD5
  • TLS_RSA_EXPORT_WITH_RC4_40_MD5

RC2 40/128

Subclave de Ciphers: SCHANNEL\Ciphers\RC2 40/128

Esta clave del Registro hace referencia a RC2 de 40 bits.

Para permitir este algoritmo de cifrado, cambie los datos del valor DWORD del valor Enabled a 0xffffffff. De lo contrario, cambie los datos del valor DWORD a 0x0. Si no configura el valor Habilitado, el valor predeterminado está habilitado.

Deshabilitar este algoritmo de forma eficaz no permite los siguientes valores:

  • SSL_RSA_EXPORT_WITH_RC2_CBC_40_MD5
  • TLS_RSA_EXPORT_WITH_RC2_CBC_40_MD5

NULL

Subclave de Ciphers: SCHANNEL\Ciphers\NULL

Esta clave del Registro significa que no hay cifrado. De forma predeterminada, está desactivado.

Para desactivar el cifrado (no permitir todos los algoritmos de cifrado), cambie los datos de valor DWORD del valor Enabled a 0xffffffff. De lo contrario, cambie los datos del valor DWORD a 0x0.

Hashes

Subclave de Ciphers: SCHANNEL/Hashes

La clave del Registro Hashes en la clave SCHANNEL se emplea para controlar el uso de algoritmos hash como SHA-1 y MD5. Las siguientes son claves del Registro válidas en la clave Hashes.

MD5

Subclave de Ciphers: SCHANNEL\Hashes\MD5

Para permitir este algoritmo hash, cambie los datos del valor DWORD del valor Enabled al valor predeterminado 0xffffffff. De lo contrario, cambie los datos del valor DWORD a 0x0.

Deshabilitar este algoritmo de forma eficaz no permite los siguientes valores:

  • 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

Subclave de Ciphers: SCHANNEL\Hashes\SHA

Esta clave del Registro hace referencia al algoritmo hash seguro (SHA-1), tal como se especifica en FIPS 180-1. Su implementación en los archivos Rsabase.dll y Rsaenh.dll se valida en el programa de validación de módulos criptográficos FIPS 140-1.

Para permitir este algoritmo hash, cambie los datos del valor DWORD del valor Enabled al valor predeterminado 0xffffffff. De lo contrario, cambie los datos del valor DWORD a 0x0.

Deshabilitar este algoritmo de forma eficaz no permite los siguientes valores:

  • 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

Subclave de Ciphers: SCHANNEL/KeyExchangeAlgorithms

La clave del Registro KeyExchangeAlgorithms en la clave SCHANNEL se emplea para controlar el uso de algoritmos de intercambio de claves, como RSA. Las siguientes son claves del Registro válidas en la clave KeyExchangeAlgorithms.

PKCS

Subclave de Ciphers: SCHANNEL\KeyExchangeAlgorithms\PKCS

Esta clave del Registro hace referencia a RSA como algoritmos de intercambio y autenticación de claves.

Para permitir RSA, cambie los datos del valor DWORD del valor Enabled al valor predeterminado 0xffffffff. De lo contrario, cambie los datos DWORD a 0x0.

Deshabilitar RSA de forma eficaz no permite todos los conjuntos de cifrado SSL y TLS basados en RSA compatibles con el proveedor de seguridad TLS/SSL de Microsoft de Windows NT4 SP6.

Conjuntos de cifrado FIPS 140-1

Es posible que quiera usar solo los conjuntos de cifrado SSL 3.0 o TLS 1.0 que corresponden a los algoritmos FIPS 46-3 o FIPS 46-2 y FIPS 180-1 proporcionados por el proveedor criptográfico base o mejorado de Microsoft.

En este artículo, nos referimos a ellos como conjuntos de cifrado FIPS 140-1. En concreto, son los siguientes:

  • 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 solo los conjuntos de cifrado FIPS 140-1 tal y como se definen aquí y son compatibles con proveedores de seguridad TLS/SSL de Microsoft de Windows NT 4.0 Service Pack 6 con el proveedor criptográfico base o el proveedor criptográfico mejorado, configure los datos de valor DWORD del valor Enabled en las siguientes claves del 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

Y configure los datos del valor DWORD del valor Enabled en las siguientes claves del Registro en 0xffffffff:

  • SCHANNEL\Ciphers\DES 56/56
  • SCHANNEL\Ciphers\Triple DES 168/168 (no aplicable en la versión de exportación)
  • SCHANNEL\Hashes\SHA
  • SCHANNEL\KeyExchangeAlgorithms\PKCS

Cálculo de secretos maestros mediante conjuntos de cifrado FIPS 140-1

Los procedimientos para usar los conjuntos de cifrado FIPS 140-1 en SSL 3.0 difieren de los procedimientos para utilizar los conjuntos de cifrado FIPS 140-1 en TLS 1.0.

En SSL 3.0, la siguiente es la definición del cálculo master_secret:

En TLS 1.0, la siguiente es la definición del cálculo master_secret:

donde:

Seleccione la opción para usar solo conjuntos de cifrado FIPS 140-1 en TLS 1.0:

Debido a esta diferencia, es posible que los clientes quieran prohibir el uso de SSL 3.0 aunque el grupo permitido de conjuntos de cifrado se limite solo al subgrupo de conjuntos de cifrado FIPS 140-1. En ese caso, cambie los datos del valor DWORD del valor Enabled a 0x0 en las siguientes claves del Registro en la clave Protocolos:

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

Advertencia

Los datos del valor Enabled de estas claves del Registro en la clave Protocolos tienen prioridad sobre el valor grbitEnabledProtocols que se define en la estructura SCHANNEL_CRED que contiene los datos de una credencial Schannel. El dato del valor Enabled predeterminado es 0xffffffff.

Ejemplos de archivos del Registro

En esta sección del artículo se proporcionan dos ejemplos de contenido de archivo del Registro para la configuración. Son Export.reg y Non-export.reg.

En un equipo que ejecuta Windows NT 4.0 Service Pack 6 con los archivos Rasbase.dll y Schannel.dll exportables, ejecute Export.reg para asegurarse de que el equipo solo usa los conjuntos de cifrado FIPS TLS 1.0.

En un equipo que ejecuta Windows NT 4.0 Service Pack 6 que incluye los archivos Rasenh.dll y Schannel.dll no exportables, ejecute Non-export.reg para asegurarse de que el equipo use solo los conjuntos de cifrado FIPS TLS 1.0.

Para que el archivo Schannel.dll reconozca los cambios en la clave del Registro SCHANNEL, debe reiniciar el equipo.

Para devolver la configuración del Registro al valor predeterminado, elimine la clave del Registro SCHANNEL y todo lo que hay debajo de ella. Si estas claves del Registro no están presentes, Schannel.dll vuelve a generar las claves al reiniciar el equipo.