Ограничение использования определенных криптографических алгоритмов и протоколов в Schannel.dll.

В этой статье описывается ограничение использования определенных криптографических алгоритмов и протоколов в файле Schannel.dll. Эти сведения также применимы к приложениям независимых поставщиков программного обеспечения (ISV), написанным для API шифрования (CAPI) Microsoft.

Применяется к: Windows Server 2003
Оригинальный номер базы знаний: 245030

Примечание.

Эта статья применяется к Windows Server 2003 и более ранним версиям Windows. Разделы реестра, применимые к Windows Server 2008 и более поздним версиям Windows, см. в Параметры реестра TLS.

Сводка

Следующие поставщики служб шифрования (CSP), включаемые в пакет обновления 6 для Windows NT 4.0, получили сертификаты для проверки шифрования FIPS-140-1.

  • Поставщик базового шифрования Microsoft (Rsabase.dll)
  • Поставщик улучшенного шифрования Microsoft (Rsaenh.dll) (версия не для экспорта)

В рамках поддержки Internet Explorer и служб IIS поставщик безопасности TLS/SSL Microsoft, файл Schannel.dll, использует перечисленные поставщики услуг шифрования для безопасного обмена данными по протоколу SSL или TLS.

Schannel.dll vj;можно изменить для поддержки комплектов шифров 1 и 2. Тем не менее, приложение тоже должно поддерживать комплекты шифров 1 и 2. Комплекты шифров 1 и 2 не поддерживаются в IIS 4.0 и 5.0.

В этой статье приведены сведения о настройке поставщика безопасности TLS/SSL для Windows NT версии 4.0 с пакетом обновления 6 и более поздних версий. С помощью реестра Windows можно управлять использованием определенных комплектов шифров SSL 3.0 или TLS 1.0 в части алгоритмов шифрования, поддерживаемых поставщиком базового шифрования или поставщиком расширенного шифрования.

Примечание.

В Windows NT версии 4.0 с пакетом обновления 6 файл Schannel.dll не использует поставщик базового шифрования Microsoft DSS (Dssbase.dll) или поставщик расширенного шифрования Microsoft DS/DS/Diffie-Excelman (Dssenh.dll).

Комплекты шифров

SSL 3.0 и TLS 1.0 (RFC2246) с 56-разрядными комплектами шифров с поддержкой экспорта для TLS draft-ietf-tls-56-bit-ciphersuites-00.txt INTERNET-DRAFT предоставляют возможности использования других комплектов шифров. Каждый комплект шифров определяет алгоритмы обмена ключами, проверки подлинности, шифрования и кодов проверки подлинности сообщения, используемые в сеансе SSL/TLS. При использовании RSA в качестве алгоритмов как для обмена ключами, так и для проверки подлинности, термин RSA отображается только один раз в соответствующих определениях комплекта шифров.

Поставщик безопасности TLS/SSL Microsoft для Windows NT 4.0 с пакетом обновления 6 поддерживает следующий определенный в SSL 3.0 комплект шифров при использовании поставщика базового шифрования или поставщика расширенного шифрования:

SSL 3.0 Комплект шифрования
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 }

Примечание.

Ни SSL_RSA_EXPORT1024_WITH_DES_CBC_SHA, ни SSL_RSA_EXPORT1024_WITH_RC4_56_SHA не определены в тексте SSL 3.0. Тем не менее, их поддерживают несколько поставщиков SSL 3.0. В их число входит Microsoft.

При использовании поставщика базового или расширенного шифрования поставщик безопасности TLS/SSL Microsoft для Windows NT 4.0 с пакетом обновления 6 также поддерживает следующий комплект шифров, определенный в TLS/SSL 1.0:

TLS 1.0 Комплект шифрования
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 }

Примечание.

Комплект шифров, определенный с помощью первого байта 0x00, не является частным и используется для открытого операционно-совместимого обмена данными. Поэтому поставщик безопасности TLS/SSL Microsoft для Windows NT 4.0 с пакетом обновления 6 следует процедурам использования этих комплектов шифров, указанных в SSL 3.0 и TLS 1.0, для обеспечения операционной совместимости.

Разделы реестра, относящиеся к Schannel

Важно!

В этот раздел, описание метода или задачи включены действия, содержащие указания по изменению параметров реестра. Однако неправильное изменение параметров реестра может привести к возникновению серьезных проблем. Поэтому следует в точности выполнять приведенные инструкции. Для дополнительной защиты создайте резервную копию реестра, прежде чем редактировать его. Так вы сможете восстановить реестр, если возникнет проблема. Для получения дополнительной информации о том, как создать резервную копию и восстановить реестр, см. статью Сведения о резервном копировании и восстановлении реестра Windows.

Примечание.

Любые изменения содержимого разделов CIPHERS или HASHES вступают в силу немедленно, без перезагрузки системы.

Раздел SCHANNEL

Запустите редактор реестра (Regedt32.exe) и найдите следующий раздел реестра:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL

Подраздел SCHANNEL\Протоколы

Чтобы разрешить системе использовать не согласованные по умолчанию протоколы (например TLS 1.1 и TLS 1.2), в следующих ключах реестра подраздела Протоколы измените значение DWORD параметра DisabledByDefault на 0x0:

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

Предупреждение

Значение DisabledByDefault в ключах реестра подраздела Протоколы не обладает приоритетом над значением grbitEnabledProtocols, определенным в структуре SCHANNEL_CRED, содержащей учетные данные для Schannel.

Подраздел SCHANNEL\Ciphers

Подраздел реестра Ciphers в разделе SCHANNEL используется для управления использованием симметричных алгоритмов, например DES и RC4. Ниже указаны допустимые ключи реестра в подразделе Ciphers.

Создайте в SCHANNEL подраздел «Ciphers» в следующем формате: SCHANNEL\(VALUE)\(VALUE/VALUE)

RC4 128/128

Подраздел Ciphers: SCHANNEL\Ciphers\RC4 128/128

Этот подраздел относится к 128-разрядному шифру RC4.

Чтобы разрешить этот алгоритм шифрования, измените значение DWORD параметра Enabled на 0xffffffff. Или измените значение DWORD параметра на 0x0. Если параметр Enabled на настроен, используется значение по умолчанию. Этот раздел реестра не применяется к серверу для экспорта без сертификата SGC.

Отключение этого алгоритма фактически запрещает следующие значения:

  • 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

Подраздел Ciphers: SCHANNEL\Ciphers\Triple DES 168

Этот раздел реестра относится к 168-разрядному шифру Triple DES, указанному в ANSI X9.52 и Draft FIPS 46-3. Этот раздел реестра не применяется к версиям с поддержкой экспорта.

Чтобы разрешить этот алгоритм шифрования, измените значение DWORD параметра Enabled на 0xffffffff. Или измените значение DWORD на 0x0. Если параметр Enabled на настроен, используется значение по умолчанию.

Отключение этого алгоритма фактически запрещает следующие значения:

  • 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

    Примечание.

    Для версий Windows, выпущенных до Windows Vista, необходимо использовать раздел Triple DES 168/168.

RC2 128/128

Подраздел Ciphers: SCHANNEL\Ciphers\RC2 128/128

Этот раздел реестра относится к 128-разрядному шифру RC2. Он не применяется к версии с поддержкой экспорта.

Чтобы разрешить этот алгоритм шифрования, измените значение DWORD параметра Enabled на 0xffffffff. В противном случае измените значение DWORD на 0x0. Если параметр Enabled на настроен, используется значение по умолчанию.

RC4 64/128

Подраздел Ciphers: SCHANNEL\Ciphers\RC4 64/128

Этот раздел реестра относится к 64-разрядному шифру RC4. Он не применяется к версиям с поддержкой экспорта (но используется в Microsoft Money).

Чтобы разрешить этот алгоритм шифрования, измените значение DWORD параметра Enabled на 0xffffffff. В противном случае измените значение DWORD на 0x0. Если параметр Enabled на настроен, используется значение по умолчанию.

RC4 56/128

Подраздел Ciphers: SCHANNEL\Ciphers\RC4 56/128

Этот раздел реестра относится к 56-разрядному шифру RC4.

Чтобы разрешить использование этого алгоритма шифрования, измените значение DWORD параметра Enabled на 0xffffffff. В противном случае измените значение DWORD на 0x0. Если параметр Enabled на настроен, используется значение по умолчанию.

Отключение этого алгоритма фактически запрещает следующее значение:

  • TLS_RSA_EXPORT1024_WITH_RC4_56_SHA

RC2 56/128

Подраздел Ciphers: SCHANNEL\Ciphers\RC2 56/128

Этот раздел реестра относится к 56-разрядному шифру RC2.

Чтобы разрешить этот алгоритм шифрования, измените значение DWORD параметра Enabled на 0xffffffff. В противном случае измените значение DWORD на 0x0. Если параметр Enabled на настроен, используется значение по умолчанию.

DES 56

Подраздел Ciphers: SCHANNEL\Ciphers\DES 56/56

Этот раздел реестра относится к 56-разрядному шифру DES, указанному в FIPS 46-2. Его реализация в файлах Rsabase.dll и Rsaenh.dll проверяется в рамках программы проверки криптографического модуля FIPS 140-1.

Чтобы разрешить этот алгоритм шифрования, измените значение DWORD параметра Enabled на 0xffffffff. В противном случае измените значение DWORD на 0x0. Если параметр Enabled на настроен, используется значение по умолчанию.

Отключение этого алгоритма фактически запрещает следующие значения:

  • SSL_RSA_WITH_DES_CBC_SHA
  • TLS_RSA_WITH_DES_CBC_SHA

RC4 40/128

Подраздел Ciphers: SCHANNEL\Ciphers\RC4 40/128

Этот раздел реестра относится к 40-разрядному шифру RC4.

Чтобы разрешить этот алгоритм шифрования, измените значение DWORD параметра Enabled на 0xffffffff. В противном случае измените значение DWORD на 0x0. Если параметр Enabled на настроен, используется значение по умолчанию.

Отключение этого алгоритма фактически запрещает следующие значения:

  • SSL_RSA_EXPORT_WITH_RC4_40_MD5
  • TLS_RSA_EXPORT_WITH_RC4_40_MD5

RC2 40/128

Подраздел Ciphers: SCHANNEL\Ciphers\RC2 40/128

Этот раздел реестра относится к 40-разрядному шифру RC2.

Чтобы разрешить этот алгоритм шифрования, измените значение DWORD параметра Enabled на 0xffffffff. В противном случае измените значение DWORD на 0x0. Если параметр Enabled на настроен, используется значение по умолчанию.

Отключение этого алгоритма фактически запрещает следующие значения:

  • SSL_RSA_EXPORT_WITH_RC2_CBC_40_MD5
  • TLS_RSA_EXPORT_WITH_RC2_CBC_40_MD5

NULL

Подраздел Ciphers: SCHANNEL\Ciphers\NULL

Этот параметр реестра подразумевает отсутствие шифрования. По умолчанию он отключен.

Для отключения шифрования (запрещения всех алгоритмов шифрования) измените значение DWORD параметра Enabled на 0xffffffff. В противном случае измените значение DWORD на 0x0.

Hashes

Подраздел Ciphers: SCHANNEL/Hashes

Подраздел Hashes раздела SCHANNEL используется для управления использованием алгоритмов хэширования, таких как SHA-1 и MD5. Ниже приведены допустимые параметры реестра в подразделе Hashes.

MD5

Подраздел Ciphers: SCHANNEL\Hashes\MD5

Чтобы разрешить этот алгоритм хэширования, измените значение DWORD параметра Enabled на значение по умолчанию 0xffffffff. В противном случае измените значение DWORD на 0x0.

Отключение этого алгоритма фактически запрещает следующие значения:

  • 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

Подраздел Ciphers: SCHANNEL\Hashes\SHA

Этот раздел реестра относится к алгоритму SHA (SHA-1), указанному в FIPS 180-1. Его реализация в файлах Rsabase.dll и Rsaenh.dll проверяется в рамках программы проверки криптографического модуля FIPS 140-1.

Чтобы разрешить этот алгоритм хэширования, измените значение DWORD параметра Enabled на значение по умолчанию 0xffffffff. В противном случае измените значение DWORD на 0x0.

Отключение этого алгоритма фактически запрещает следующие значения:

  • 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

Подраздел Ciphers: SCHANNEL/KeyExchangeAlgorithms

Ключ реестра KeyExchangeAlgorithms в разделе SCHANNEL используется для управления использованием алгоритмов обмена ключами, таких как RSA. Ниже приведены допустимые параметры реестра в разделе KeyExchangeAlgorithms.

Стандарты шифрования с открытым ключом

Подраздел Ciphers: SCHANNEL\KeyExchangeAlgorithms\PKCS

Этот раздел реестра относится к RSA в качестве алгоритмов обмена ключами и проверки подлинности.

Чтобы разрешить RSA, измените значение DWORD параметра Enabled на значение по умолчанию 0xffffffff. В противном случае измените значение DWORD на 0x0.

Отключение RSA фактически запрещает все комплекты шифров SSL и TLS на основе RSA, поддерживаемые поставщиком безопасности TLS/SSL Microsoft для Windows NT4 c пакетом обновления 6.

Комплекты шифров FIPS 140-1

Рекомендуется использовать только комплекты шифров SSL 3.0 или TLS 1.0, соответствующие алгоритмам FIPS 46-3, FIPS 46-2 и FIPS 180-1, предоставляемым поставщиками базового или расширенного шифрования Microsoft.

В этой статье мы называем их комплектами шифров FIPS 140-1. В частности, они включают в себя:

  • 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

Чтобы использовать только комплекты шифров FIPS 140-1, указанные здесь, и поддерживаемые поставщиком безопасности TLS/SSL Microsoft для Windows NT 4.0 с пакетом обновления 6, с поставщиком базового шифрования или поставщиком расширенного шифрования, в следующих разделах реестра необходимо установить для параметра Enabled значения DWORD 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

И установить значения DWORD параметра Enabled0xffffffff для следующих ключей реестра:

  • SCHANNEL\Ciphers\DES 56/56
  • SCHANNEL\Ciphers\Triple DES 168/168 (неприменимо в версии с поддержкой экспорта)
  • SCHANNEL\Hashes\SHA
  • SCHANNEL\KeyExchangeAlgorithms\PKCS

Вычисление главной копии секрета с помощью комплектов шифров FIPS 140-1

Процедуры использования комплектов шифров FIPS 140-1 в SSL 3.0 отличаются от процедур использования комплектов шифров FIPS 140-1 в TLS 1.0.

В SSL 3.0 вычисление главной копии секрета определяется следующим образом:

ВTLS 1.0 вычисление главной копии секрета определяется следующим образом:

где:

Выбор параметра для использования в TLS 1.0 только комплектов шифров FIPS 140-1:

Из-за этого различия пользователям может потребоваться запретить использование SSL 3.0 даже если разрешенный набор комплектов шифров ограничен подмножеством комплектов шифров FIPS 140-1. В этом случае измените необходимо изменить данные значения DWORD параметра Enabled на 0x0 в следующих ключах реестра подраздела Протоколы:

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

Предупреждение

Значение параметра Enabled в этих разделах реестра подраздела Протоколы имеют приоритет над значением grbitEnabledProtocolsSCHANNEL_CRED, определенным в структуре, содержащей данные учетных данных Schannel. По умолчанию для параметра Enabled установлено значение 0xffffffff.

Примеры файлов реестра

В этом разделе статьи приведены два примера содержимого файлов реестра для конфигурации. Это файлы Export.reg и Non-export.reg.

При использовании компьютера под управлением Windows NT 4.0 с пакетом обновления 6 и экспортируемыми файлами Rasbase.dll и Schannel.dll, выполните export.reg, чтобы убедиться, что компьютер использует только комплекты шифров FIPS TLS 1.0.

На компьютере под управлением Windows NT 4.0 с пакетом обновления 6, на котором используются не экспортируемые файлы Rasenh.dll и Schannel.dll, выполните Non-export.reg, чтобы убедиться, что компьютером используются только комплекты шифров FIPS TLS 1.0.

Для того, файл Schannel.dll распознал изменения, внесенные в разделе реестра SCHANNEL, необходимо перезапустить компьютер.

Чтобы восстановить параметры реестра по умолчанию, удалите раздел реестра SCHANNEL и все его содержимое. Если эти разделы реестра отсутствуют, Schannel.dll восстанавливает разделе при перезагрузке компьютера.