计算机怎样禁用中等加密算法,限制加密算法和协议 - Windows Server | Microsoft Docs...

限制某些加密算法和协议在 Schannel.dll

09/08/2020

本文内容

本文介绍如何限制某些加密算法和协议在安全文件的Schannel.dll使用。 此信息还适用于为 MICROSOFT 加密 API (CAPI) 编写的独立软件供应商 (ISV) 。

适用于:  WindowsServer 2003

原始 KB 编号:   245030

备注

本文适用于 Windows Server 2003 和早期版本的 Windows。 有关适用于 Windows Server 2008 及更高版本的注册表项Windows,请参阅TLS Registry 设置。

摘要

以下加密服务提供商 () 4.0 Service Pack 6 Windows NT的 CSP 证书被授予 FIPS-140-1 加密验证证书。

Microsoft 基本加密提供程序 (Rsabase.dll)

Microsoft 增强加密提供程序 (Rsaenh.dll) (非导出版本)

Microsoft TLS/SSL 安全提供程序是 Schannel.dll 文件,它使用此处列出的 CSP 通过 SSL 或 TLS 进行安全通信,以支持 Internet Explorer 和 Internet Information Services (IIS) 。

你可以更改密码Schannel.dll以支持加密套件 1 和 2。 但是,该程序还必须支持密码套件 1 和 2。 IIS 4.0 和 5.0 不支持密码套件 1 和 2。

本文包含为 Windows NT 4.0 Service Pack 6 和更高版本配置 TLS/SSL 安全提供程序的必要信息。 您可以使用 Windows 注册表控制对基本加密提供程序或增强加密提供程序支持的加密算法的特定 SSL 3.0 或 TLS 1.0 密码套件的使用。

备注

在 Windows NT 4.0 Service Pack 6 中,Schannel.dll 文件不使用 Microsoft Base DSS 加密提供程序 (Dssbase.dll) 或 Microsoft DS/Diffie-Hellman 增强加密提供程序 (Dssenh.dll) 。

密码套件

SSL 3.0 和 TLS 1.0 (RFC2246) (适用于 TLS draft-ietf-tls-56-bit-ciphersuites-00.txt的 INTERNET-DRAFT 56 位导出密码套件)都提供使用不同的密码套件的选项。 每个密码套件确定 SSL/TLS 会话中使用的密钥交换、身份验证、加密和 MAC 算法。 当你将 RSA 同时用作密钥交换和身份验证算法时, 术语 RSA 仅在相应的密码套件定义中出现一次。

在使用Windows NT加密提供程序或增强加密提供程序时,Windows NT 4.0 Service Pack 6 Microsoft TLS/SSL 安全提供程序支持以下 SSL 3.0 定义的 CipherSuite:

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 SSL_RSA_EXPORT1024_WITH_DES_CBC_SHA 3.0 SSL_RSA_EXPORT1024_WITH_RC4_56_SHA中未定义两者。 但是,一些 SSL 3.0 供应商支持它们。 这包括 Microsoft。

Windows NT 4.0 Service Pack 6 Microsoft TLS/SSL 安全提供程序在使用基本加密提供程序或增强加密提供程序时还支持以下 TLS 1.0 定义的 CipherSuite:

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非私有的,用于开放式互操作通信。 因此,Windows NT 4.0 Service Pack 6 Microsoft TLS/SSL 安全提供程序遵循 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) ,在"协议"项下的以下注册表项中,将 DisabledByDefault 值的 DWORD 值数据更改为 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

警告

Protocols 项下的注册表项中的 DisabledByDefault 值不优先于在包含 Schannel 凭据数据的结构中定义的 grbitEnabledProtocols 值。 SCHANNEL_CRED

SCHANNEL\Ciphers 子项

SCHANNEL 项下的 Ciphers 注册表项用于控制对称算法(如 DES 和 RC4)的使用。 以下是 Ciphers 项下的有效注册表项。

以以下格式创建 SCHANNEL Ciphers 子项: SCHANNEL\(VALUE)\(VALUE/VALUE)

RC4 128/128

Ciphers 子项: SCHANNEL\Ciphers\RC4 128/128

此子项引用 128 位 RC4。

若要允许此密码算法,将 Enabled 值的 DWORD 值数据 更改为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

三重 DES 168

Ciphers 子项: SCHANNEL\Ciphers\Triple DES 168

此注册表项引用 ANSI X9.52 和草稿 FIPS 46-3 中指定的 168 位 Triple DES。 此注册表项不适用于导出版本。

若要允许此密码算法,将 Enabled 值的 DWORD 值数据 更改为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

备注

对于 Vista Windows之前Windows的版本,密钥应为 Triple DES 168/168。

RC2 128/128

Ciphers 子项: SCHANNEL\Ciphers\RC2 128/128

此注册表项引用 128 位 RC2。 它不适用于导出版本。

若要允许此密码算法,将 Enabled 值的 DWORD 值数据 更改为0xffffffff。 否则,将 DWORD 值数据更改为 0x0。 如果未配置 Enabled 值, 则启用默认值。

RC4 64/128

Ciphers 子项: SCHANNEL\Ciphers\RC4 64/128

此注册表项引用 64 位 RC4。 它不适用于导出版本 (但用于 Microsoft Money) 。

若要允许此密码算法,将 Enabled 值的 DWORD 值数据 更改为0xffffffff。 否则,将 DWORD 值数据更改为 0x0。 如果未配置 Enabled 值, 则启用默认值。

RC4 56/128

Ciphers 子项: SCHANNEL\Ciphers\RC4 56/128

此注册表项引用 56 位 RC4。

若要允许此密码算法,将 Enabled 值的 DWORD 值数据 更改为0xffffffff。 否则,将 DWORD 值数据更改为 0x0。 如果未配置 Enabled 值, 则启用默认值。

禁用此算法可有效地禁用以下值:

TLS_RSA_EXPORT1024_WITH_RC4_56_SHA

RC2 56/128

Ciphers 子项: SCHANNEL\Ciphers\RC2 56/128

此注册表项引用 56 位 RC2。

若要允许此密码算法,将 Enabled 值的 DWORD 值数据 更改为0xffffffff。 否则,将 DWORD 值数据更改为 0x0。 如果未配置 Enabled 值, 则启用默认值。

DES 56

Ciphers 子项: SCHANNEL\Ciphers\DES 56/56

此注册表项引用 FIPS 46-2 中指定的 56 位 DES。 FIPS 140-1 加密模块验证Rsabase.dll和加密Rsaenh.dll验证程序中的实现。

若要允许此密码算法,将 Enabled 值的 DWORD 值数据 更改为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。

若要允许此密码算法,将 Enabled 值的 DWORD 值数据 更改为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。

若要允许此密码算法,将 Enabled 值的 DWORD 值数据 更改为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

此注册表项表示不加密。 默认情况下,它已关闭。

若要关闭加密 (禁用所有加密) ,请更改 Enabled 值的 DWORD 值数据以 0xffffffff。 否则,将 DWORD 值数据更改为 0x0。

哈希

Ciphers 子项: SCHANNEL/Hashes

SCHANNEL 项下的 Hashes 注册表项用于控制哈希算法(如 SHA-1 和 MD5)的使用。 以下是哈希项下的有效 注册表 项。

MD5

Ciphers 子项: SCHANNEL\Hashes\MD5

若要允许此哈希算法,将 Enabled 值的 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

Ciphers 子项: SCHANNEL\Hashes\SHA

此注册表项引用 SHA-1 (安全哈希算法) FIPS 180-1 中指定。 FIPS 140-1 加密模块验证Rsabase.dll和加密Rsaenh.dll验证程序中的实现。

若要允许此哈希算法,将 Enabled 值的 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

Ciphers 子项: SCHANNEL/KeyExchangeAlgorithms

SCHANNEL 项下的 KeyExchangeAlgorithms 注册表项用于控制密钥交换算法(如 RSA)的使用。 以下是 KeyExchangeAlgorithms 项 下的有效注册表项。

PKCS

Ciphers 子项: SCHANNEL\KeyExchangeAlgorithms\PKCS

此注册表项将 RSA 引用为密钥交换和身份验证算法。

若要允许 RSA,将 Enabled 值的 DWORD 值数据更改为默认值 0xffffffff。 否则,将 DWORD 数据更改为 0x0。

禁用 RSA 可有效禁止 Windows NT4 SP6 Microsoft TLS/SSL 安全提供程序支持的所有基于 RSA 的 SSL 和 TLS 密码套件。

FIPS 140-1 密码套件

你可能希望仅使用这些与 Microsoft 基础或增强加密提供程序提供的 FIPS 46-3 或 FIPS 46-2 和 FIPS 180-1 算法对应的 SSL 3.0 或 TLS 1.0 密码套件。

本文将它们视为 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

若要仅按照此处定义并受 Windows NT 4.0 Service Pack 6 Microsoft TLS/SSL 安全提供程序与基本加密提供程序或增强加密提供程序的支持,将以下注册表项中 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

并配置以下注册表项中 Enabled 值的 DWORD 值数据以 0xffffffff:

SCHANNEL\Ciphers\DES 56/56

SCHANNEL\Ciphers\Triple DES 168/168 (导出版本)

SCHANNEL\Hashes\SHA

SCHANNEL\KeyExchangeAlgorithms\PKCS

使用 FIPS 140-1 密码套件进行主密码计算

在 SSL 3.0 中使用 FIPS 140-1 密码套件的过程与在 TLS 1.0 中使用 FIPS 140-1 密码套件的过程不同。

在 SSL 3.0 中,下面是计算master_secret的定义:

在 TLS 1.0 中,下面是计算master_secret的定义:

其中:

选择仅在 TLS 1.0 中使用 FIPS 140-1 密码套件的选项:

由于此差异,客户可能希望禁止使用 SSL 3.0,即使允许的一组密码套件仅限于 FIPS 140-1 密码套件的子集。 在这种情况下,将 Enabled 值的 DWORD 值数据更改为0x0"协议"项下的以下 注册表 项:

SCHANNEL\Protocols\SSL 3.0\Client

SCHANNEL\Protocols\SSL 3.0\Server

警告

这些注册表项中 Protocols 项下的 Enabled 值数据优先于在包含 Schannel 凭据数据的结构中定义的 grbitEnabledProtocols SCHANNEL_CRED 值。 默认 Enabled 值数据为 0xffffffff。

注册表文件示例

本文的这一节提供了用于配置的注册表文件内容的两个示例。 它们是 Export.reg 和 Non-export.reg。

在运行包含可导出 Rasbase.dll 和 Schannel.dll 文件的 Windows NT 4.0 Service Pack 6 的计算机上,运行 Export.reg 以确保计算机仅使用 TLS 1.0 FIPS 密码套件。

在运行 Windows NT 4.0 Service Pack 6(包括不可导出的 Rasenh.dll 和 Schannel.dll 文件)的计算机上,运行 Non-export.reg 以确保计算机仅使用 TLS 1.0 FIPS 密码套件。

若要Schannel.dll文件识别 SCHANNEL 注册表项下的任何更改,必须重新启动计算机。

若要将注册表设置返回为默认值,请删除 SCHANNEL 注册表项及其下的所有项。 如果不存在这些注册表项,则Schannel.dll重新启动计算机时重新构建这些注册表项。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值