- Защита Windows от уязвимости в SSL v3
- Отключаем SSLv3 в Windows на уровне системы
- Отключаем SSLv2 (Windows 2008 / Server и ниже)
- Включаем TLS 1.1 и TLS 1.2 в Windows Server 2008 R2 и выше
- Утилита для управления системными криптографическими протоколами в Windows Server
- Ограничение использования определенных криптографических алгоритмов и протоколов в Schannel.dll
- Сводка
- Наборы шифров
- Ключи реестра, определенные для Schannel
- Ключ SCHANNEL
- Подкайка SCHANNEL\Protocols
- Подкайка SCHANNEL\Ciphers
- Наборы шифров FIPS 140-1
- Master secret computation by using FIPS 140-1 cipher suites
Защита Windows от уязвимости в SSL v3
В октябре инженеры Google опубликовали информацию о критической уязвимости в SSL версии 3.0, получившей забавное название POODLE (Padding Oracle On Downgraded Legacy Encryption или пудель 🙂 ). Уязвимость позволяет злоумышленнику получить доступ к информации, зашифрованной протоколом SSLv3 с помощью атаки «man in the middle». Уязвимости подвержены как серверы, так и клиенты, которые могут соединяться по протоколу SSLv3.
В общем-то ситуация не удивительная, т.к. протоколу SSL 3.0, впервые представленного еще в 1996 году, уже исполнилось 18 лет и морально он уже устарел. В большинстве практических задач его уже заменил криптографический протокол TLS (версий 1.0, 1.1 и 1.2).
Для защиты от уязвимости POODLE рекомендуется полностью отключить поддержку SSLv3 как на стороне клиента, так и на стороне сервера и в дальнейшем использовать только TLS. Для пользователей устаревшего ПО (например, использующих IIS 6 на Windows XP) это означает, что они более не смогут просматривать HTTPS страницы и использовать другие SSL-сервисы . В том случае, если поддержка SSLv3 не отключена полностью, а по умолчанию предлагается используется более сильное шифрование, уязвимость POODLE все равно будет иметь место. Связано это с особенностями выбора и согласования протокола шифрования между клиентом и сервером, т.к. при обнаружении неисправностей в использовании TLS, происходит автоматический переход на SSL.
Рекомендуем проверить все свои сервисы, которые могут использовать SSL/TLS в любом виде и отключить поддержку SSLv3. Проверить свой веб-сервер на наличие уязвимости можно с помощью онлайн теста, например, тут: http://poodlebleed.com/ .
Отключаем SSLv3 в Windows на уровне системы
В ОС Windows управление поддержкой протоколов SSL/TLS осуществляется через реестр.
В этом примере мы покажем, как полностью на уровне системы (как на уровне клиента, так и сервера) отключить SSLv3 в Windows Server 2012 R2:
- Откройте редактор реестра (regedit.exe) с правами администратора
- Перейдите в ветку HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\Schannel\Protocols\
- Создайте новый раздел с именем SSL3.0 (New->Key)
- В созданном разделе SSL3.0 создайте еще два подраздела с именами Client и Server.
- Затем в разделе Client создайте новый параметр типа DWORD (32-bit) с именем DisabledByDefault
- В качестве значения ключа DisabledByDefault укажем 1.
- Затем в ветке Server создайте новый параметр типа DWORD (32-bit) с именем Enabled и значением 0.
- Для вступления изменений в силу необходимо перезагрузить сервер
Отключаем SSLv2 (Windows 2008 / Server и ниже)
В ОС, предшествующих Windows 7 / Windows Server 2008 R2 по-умолчанию используется еще менее безопасный и устаревший протокол SSL v2, который также следует отключить из соображений безопасности (в более свежих версиях Windows, SSLv2 на уровне клиента отключен по умолчанию и используется только SSLv3 и TLS1.0). Для отключения SSLv2 нужно повторить описанную выше процедуру, только для раздела реестра SSL 2.0.
В Windows 2008 / 2012 SSLv2 на уровне клиента отключен по умолчанию.
Включаем TLS 1.1 и TLS 1.2 в Windows Server 2008 R2 и выше
Windows Server 2008 R2 / Windows 7 и выше поддерживают алгоритмы шифрования TLS 1.1 и TLS 1.2, но по-умолчанию эти протоколы отключены. Включить поддержку TLS 1.1 и TLS 1.2 в этих версиях Windows можно по схожему сценарию
- В редакторе реестра откройте ветку HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols
- Создайте два раздела TLS 1.1 и TLS 1.2
- Внутри каждого раздела создайте по подразделу с именами Client и Server
- В каждом из разделов Client и Server создайте по ключу типа DWORD:
- DisabledByDefault со значением 0
- Enabled со значением 1
- После внесенных изменений сервер следует перезагрузить.
Утилита для управления системными криптографическими протоколами в Windows Server
Существует бесплатная утилита IIS Crypto, позволяющая удобно управлять параметрами криптографических протоколов в Windows Server 2003, 2008 и 2012. С помощью данной утилиты включить или отключить любой из протоколов шифрования можно всего в два клика.
В программе уже есть несколько шаблонов, позволяющие быстро применить предустановки для различных вариантов настроек безопасности.
Ограничение использования определенных криптографических алгоритмов и протоколов в Schannel.dll
В этой статье описывается ограничение использования определенных криптографических алгоритмов и протоколов в Schannel.dll файле. Эта информация также применяется к приложениям независимых поставщиков программного обеспечения (ISV), которые написаны для API шифрования Microsoft (CAPI).
Оригинальная версия продукта: Windows Server 2003
Исходный номер КБ: 245030
Эта статья применима к Windows Server 2003 и более ранним версиям Windows. Ключи реестра, применимые к Windows Server 2008 и более поздним версиям Windows, см. в tLS Registry Settings.
Сводка
Следующие поставщики криптографических служб (CSPs), включенные в Windows NT 4.0 Пакет обновления 6, получили сертификаты для проверки криптографии FIPS-140-1.
- Поставщик шифрования Microsoft Base (Rsabase.dll)
- Microsoft Enhanced Cryptographic Provider (Rsaenh.dll) (неэкспортная версия)
Поставщик безопасности Microsoft TLS/SSL, Schannel.dll, использует указанные здесь CSPs для ведения безопасной связи по SSL или TLS в своей поддержке служб internet Explorer и Internet Information Services (IIS).
Вы можете изменить файл Schannel.dll для поддержки Шифра Suite 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 Base DSS (Dssbase.dll) или расширенного поставщика шифрования Microsoft DS/Diffie-Hellman (Dssenh.dll).
Наборы шифров
SSL 3.0 и TLS 1.0 (RFC2246) с 56-битными пакетами экспортного шифра INTERNET-DRAFT для TLS draft-ietf-tls-56-bit-ciphersuites-00.txtпредоставляют варианты использования различных наборов шифров. Каждый набор шифров определяет алгоритмы обмена ключами, проверки подлинности, шифрования и MAC, которые используются в сеансе SSL/TLS. При использовании RSA в качестве алгоритмов обмена ключами и проверки подлинности термин RSA отображается только один раз в соответствующих определениях набора шифров.
Поставщик Windows NT 4.0 Пакет обновления 6 Microsoft TLS/SSL security Provider поддерживает следующий SSL 3.0-определенный cipherSuite при использовании базового поставщика шифрования или расширенного поставщика шифрования:
SSL 3.0 | Набор шифров |
---|---|
SSL_RSA_EXPORT_WITH_RC4_40_MD5 | |
SSL_RSA_WITH_RC4_128_MD5 | |
SSL_RSA_WITH_RC4_128_SHA | |
SSL_RSA_EXPORT_WITH_RC2_CBC_40_MD5 | |
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 |
Ни SSL_RSA_EXPORT1024_WITH_DES_CBC_SHA, ни SSL_RSA_EXPORT1024_WITH_RC4_56_SHA не определены в тексте SSL 3.0. Однако несколько поставщиков SSL 3.0 поддерживают их. Это относится к Корпорации Майкрософт.
Windows NT 4.0 Пакет обновления 6 Поставщик безопасности Microsoft TLS/SSL также поддерживает следующий код cipherSuite с определением TLS 1.0 при использовании базового поставщика шифрования или расширенного поставщика шифрования:
TLS 1.0 | Набор шифров |
---|---|
TLS_RSA_EXPORT_WITH_RC4_40_MD5 | |
TLS_RSA_WITH_RC4_128_MD5 | |
TLS_RSA_WITH_RC4_128_SHA | |
TLS_RSA_EXPORT_WITH_RC2_CBC_40_MD5 | |
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 |
Набор шифров, определяемый с помощью первого 0x00, не является частным и используется для открытых интероперабельных коммуникаций. Поэтому поставщик Windows NT 4.0 Пакет обновления 6 Microsoft TLS/SSL Security Provider следует процедурам использования этих наборов шифров, как указано в SSL 3.0 и TLS 1.0, чтобы убедиться в возможности обеспечения связи.
Ключи реестра, определенные для Schannel
В этот раздел, описание метода или задачи включены действия, содержащие указания по изменению параметров реестра. Однако неправильное изменение параметров реестра может привести к возникновению серьезных проблем. Поэтому следует в точности выполнять приведенные инструкции. Для дополнительной защиты создайте резервную копию реестра, прежде чем редактировать его. Так вы сможете восстановить реестр, если возникнет проблема. Дополнительные сведения о том, как создать и восстановить реестр, см. в этой информации, как создать и восстановить реестр в Windows.
Любые изменения содержимого ключа CIPHERS или ключа HASHES вступает в силу немедленно, без перезапуска системы.
Ключ SCHANNEL
Начните редактор реестра (Regedt32.exe), а затем найдите следующий ключ реестра:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL
Подкайка SCHANNEL\Protocols
Чтобы система мог использовать протоколы, которые не будут согласованы по умолчанию (например, 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
Ключ реестра шифров под ключом SCHANNEL используется для управления использованием симметричных алгоритмов, таких как DES и RC4. Ниже приводится допустимый ключ реестра под ключом Ciphers.
Создание подкайки шифров SCHANNEL в формате: SCHANNEL\(VALUE)\(VALUE/VALUE)
RC4 128/128
Подмышка шифров: SCHANNEL\Ciphers\RC4 128/128
Этот подкай относится к 128-битной RC4.
Чтобы разрешить этот алгоритм шифра, измените данные значения DWORD значения включенного значения на 0xffffffff . Или измените данные значения DWORD на 0x0. Если не настроить значение Включено, включено значение по умолчанию. Этот ключ реестра не применяется к экспортируемом серверу, у него нет сертификата 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
Подмышка шифров: SCHANNEL\Ciphers\Triple DES 168
Этот ключ реестра относится к 168-битной triple DES, как указано в ANSI X9.52 и Draft FIPS 46-3. Этот ключ реестра не применяется к экспортной версии.
Чтобы разрешить этот алгоритм шифра, измените данные значения DWORD значения включенного значения на 0xffffffff . Или измените данные DWORD на 0x0. Если не настроить значение Включено, включено значение по умолчанию.
Отключение этого алгоритма фактически отключит следующие значения:
Для версий Windows, выпускаемой до Windows Vista, ключ должен быть Triple DES 168/168.
RC2 128/128
Подмышка шифров: SCHANNEL\Ciphers\RC2 128/128
Этот ключ реестра относится к 128-битной RC2. Он не применяется к экспортной версии.
Чтобы разрешить этот алгоритм шифра, измените данные значения DWORD значения включенного значения на 0xffffffff . В противном случае измените данные значения DWORD на 0x0. Если не настроить значение Включено, включено значение по умолчанию.
RC4 64/128
Подмышка шифров: SCHANNEL\Ciphers\RC4 64/128
Этот ключ реестра относится к 64-битной RC4. Он не применяется к экспортной версии (но используется в Microsoft Money).
Чтобы разрешить этот алгоритм шифра, измените данные значения DWORD значения включенного значения на 0xffffffff . В противном случае измените данные значения DWORD на 0x0. Если не настроить значение Включено, включено значение по умолчанию.
RC4 56/128
Подмышка шифров: SCHANNEL\Ciphers\RC4 56/128
Этот ключ реестра относится к 56-битной RC4.
Чтобы разрешить этот алгоритм шифра, измените данные значения DWORD значения включенного значения на 0xffffffff. В противном случае измените данные значения DWORD на 0x0. Если не настроить значение Включено, включено значение по умолчанию.
Отключение этого алгоритма фактически отключит следующее значение:
RC2 56/128
Подмышка шифров: SCHANNEL\Ciphers\RC2 56/128
Этот ключ реестра относится к 56-битной RC2.
Чтобы разрешить этот алгоритм шифра, измените данные значения DWORD значения включенного значения на 0xffffffff . В противном случае измените данные значения DWORD на 0x0. Если не настроить значение Включено, включено значение по умолчанию.
DES 56
Подмышка шифров: SCHANNEL\Ciphers\RC2 56/56
Этот ключ реестра относится к 56-битной des, как указано в FIPS 46-2. Его реализация в Rsabase.dll и Rsaenh.dll проверяется в рамках программы проверки криптографического модуля FIPS 140-1.
Чтобы разрешить этот алгоритм шифра, измените данные значения DWORD значения включенного значения на 0xffffffff . В противном случае измените данные значения DWORD на 0x0. Если не настроить значение Включено, включено значение по умолчанию.
Отключение этого алгоритма фактически отключит следующие значения:
RC4 40/128
Подмышка шифров: SCHANNEL\Ciphers\RC4 40/128
Этот ключ реестра относится к 40-битной RC4.
Чтобы разрешить этот алгоритм шифра, измените данные значения DWORD значения включенного значения на 0xffffffff . В противном случае измените данные значения DWORD на 0x0. Если не настроить значение Включено, включено значение по умолчанию.
Отключение этого алгоритма фактически отключит следующие значения:
RC2 40/128
Подмышка шифров: SCHANNEL\Ciphers\RC2 40/128
Этот ключ реестра относится к 40-битной RC2.
Чтобы разрешить этот алгоритм шифра, измените данные значения DWORD значения включенного значения на 0xffffffff . В противном случае измените данные значения DWORD на 0x0. Если не настроить значение Включено, включено значение по умолчанию.
Отключение этого алгоритма фактически отключит следующие значения:
NULL
Подмышка шифров: SCHANNEL\Ciphers\NULL
Этот ключ реестра не означает шифрования. По умолчанию он отключен.
Чтобы отключить шифрование (отключите все алгоритмы шифров), измените значение DWORD значения включенного значения на 0xffffffff . В противном случае измените данные значения DWORD на 0x0.
Hashes
Подмышка шифров: SCHANNEL/Hashes
Ключ реестра hashes под ключом SCHANNEL используется для управления использованием алгоритмов хеширования, таких как SHA-1 и MD5. Ниже приводится допустимый ключ реестра под ключом Hashes.
MD5
Подмышка шифров: SCHANNEL\Hashes\MD5
Чтобы разрешить этот алгоритм хаширования, измените данные значения DWORD значения Включено на значение по умолчанию 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
Подмышка шифров: SCHANNEL\Hashes\SHA
Этот ключ реестра относится к безопасному алгоритму хаша (SHA-1), как указано в FIPS 180-1. Его реализация в Rsabase.dll и Rsaenh.dll проверяется в рамках программы проверки криптографического модуля FIPS 140-1.
Чтобы разрешить этот алгоритм хаширования, измените данные значения DWORD значения Включено на значение по умолчанию 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
Подмышка шифров: SCHANNEL/KeyExchangeAlgorithms
Ключ реестра KeyExchangeAlgorithms под ключом SCHANNEL используется для управления использованием ключевых алгоритмов обмена, таких как RSA. Ниже приводится допустимый ключ реестра в ключе KeyExchangeAlgorithms.
PKCS
Подмышка шифров: SCHANNEL\KeyExchangeAlgorithms\PKCS
Этот ключ реестра относится к RSA как к алгоритмам обмена ключами и проверки подлинности.
Чтобы разрешить RSA, измените данные значения DWORD значения Включено на значение по умолчанию 0xffffffff. В противном случае измените данные DWORD на 0x0.
Отключение RSA фактически отключит все шифры SSL и TLS на основе RSA, поддерживаемые поставщиком безопасности Windows NT4 SP6 Microsoft TLS/SSL.
Наборы шифров FIPS 140-1
Возможно, вам нужно использовать только те наборы шифров SSL 3.0 или TLS 1.0, которые соответствуют алгоритмам FIPS 46-3 или FIPS 46-2 и FIPS 180-1, предоставленным поставщиком шифрования Microsoft Base или Enhanced Cryptographic.
В этой статье мы называем их шифрами 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, как определено здесь и поддерживается Windows NT 4.0 Пакет обновления 6 Поставщик безопасности Microsoft TLS/SSL с базовым криптографическим поставщиком или расширенным криптографическим поставщиком, настройте данные значения 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 значения Включено в следующих ключах реестра для 0xffffffff:
- SCHANNEL\Ciphers\DES 56/56
- SCHANNEL\Ciphers\Triple DES 168/168 (не применяется в экспортной версии)
- SCHANNEL\Hashes\SHA
- SCHANNEL\KeyExchangeAlgorithms\PKCS
Master secret computation by using FIPS 140-1 cipher suites
Процедуры использования шифров FIPS 140-1 в SSL 3.0 отличаются от процедур использования шифров FIPS 140-1 в TLS 1.0.
В SSL 3.0 ниже приводится определение master_secret вычислений:
В TLS 1.0 ниже приводится определение master_secret вычислений:
Выбор варианта использования только шифров fiPS 140-1 в TLS 1.0:
Из-за этой разницы клиентам может потребоваться запретить использование SSL 3.0, даже если разрешенный набор наборов шифров ограничен только подмножество шифров fips 140-1 suites. В этом случае измените значение DWORD значения включенного значения на 0x0 в следующих ключах реестра в ключе Протоколы:
- SCHANNEL\Protocols\SSL 3.0\Client
- SCHANNEL\Protocols\SSL 3.0\Server
Данные включенного значения в этих ключах реестра в ключе Протоколы имеют приоритет над значением grbitEnabledProtocols, которое определяется в структуре, содержаной данные для учетных данных SCHANNEL_CRED Schannel. По умолчанию включено значение 0xffffffff.