Windows 10 和 Windows Server 2016 中的 TLS (Schannel SSP) 更動

適用於:Windows Server 2022、Windows Server 2019、Windows Server 2016 和 Windows 10

Cipher Suite Changes

Windows 10 版本 1511 和 Windows Server 2016 增加使用 Mobile Device Management (MDM) 配置密碼套件順序的支援。

如需密碼套件優先順序的變更,請參閱 Schannel 中的 Cipher Suites。

已新增下列密碼套件的支援:

  • 在 Windows 10 版本 1507 和 Windows Server 2016 中的 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (RFC 5289)
  • 在 Windows 10 版本 1507 和 Windows Server 2016 中的 TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (RFC 5289)

下列密碼套件的 DisabledByDefault 變更:

  • 在 Windows 10 版本 1703 中的 TLS_DHE_DSS_WITH_AES_256_CBC_SHA256 (RFC 5246)
  • 在 Windows 10 版本 1703 中的 TLS_DHE_DSS_WITH_AES_128_CBC_SHA256 (RFC 5246)
  • 在 Windows 10 版本 1703 中的 TLS_DHE_DSS_WITH_AES_256_CBC_SHA (RFC 5246)
  • 在 Windows 10 版本 1703 中的 TLS_DHE_DSS_WITH_AES_128_CBC_SHA (RFC 5246)
  • 在 Windows 10 版本 1703 中的 TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA (RFC 5246)
  • 在 Windows 10 版本1709 中的 TLS_RSA_WITH_RC4_128_SHA
  • 在 Windows 10 版本1709 中的 TLS_RSA_WITH_RC4_128_MD5

從 Windows 10 版本 1507 和 Windows Server 2016 開始,預設支援 SHA 512 憑證。

RSA 金鑰變更

在 Windows 10 版本 1507 和 Windows Server 2016 新增使用者端 RSA 金鑰大小的登錄檔設定選項。

如需詳細資訊,請參閱 KeyExchangeAlgorithm 金鑰大小。

Diffie-Hellman 金鑰變更

Windows 10 版本1507 和 Windows Server 2016 為 Diffie-Hellman 金鑰大小新增登錄檔設定選項。

如需詳細資訊,請參閱 KeyExchangeAlgorithm 金鑰大小。

SCH_USE_STRONG_CRYPTO 選項變更

在 Windows 10 版本 1507 和 Windows Server 2016 中,SCH_USE_STRONG_CRYPTO 選項現在會停用 NULL、MD5、DES 和匯出密碼。

Elliptical Curve 變化

Windows 10 版本 1507 和 Windows Server 2016 在 >Computer Configuration Administrative >Templates Network SSL Configuration >Settings 下為橢圓曲線新增組 Group Policy。 ECC Curve Order 清單指定偏好的橢圓曲線順序,以及啟用未啟用的受支援曲線。

增加下列橢圓曲線的支援:

  • 在 Windows 10 版本 1507 和 Windows Server 2016 中的 BrainpoolP256r1 (RFC 7027)
  • 在 Windows 10 版本 1507 和 Windows Server 2016 中的 BrainpoolP384r1 (RFC 7027)
  • 在 Windows 10 版本 1507 和 Windows Server 2016 中的 BrainpoolP512r1 (RFC 7027)
  • 在 Windows 10 版 1607 和 Windows Server 2016 中的 Curve25519 (RFC draft-ietf-tls-curve25519)

SealMessage &UnsealMessage 的派遣層級支援

Windows 10 版本 1507 和 Windows Server 2016 在分派層級增加對 SealMessage/UnsealMessage 的支援。

DTLS 1.2

Windows 10 版本 1607 和 Windows Server 2016 增加對 DTLS 1.2 的支援 (RFC 6347)。

HTTP.SYS 執行緒集區

Windows 10 版本 1607 和 Windows Server 2016 會新增用來處理 HTTP.SYS TLS 握手執行緒集區大小的登錄檔設定。

登錄路徑:

HKLM\SYSTEM\CurrentControlSet\Control\LSA

若要指定每個 CPU 核心的最大執行緒集區大小,請建立 MaxAsyncWorkerThreadsPerCpu。 此項目依預設不存在於登錄中。 建立項目之後,將 DWORD 值變更成所需的大小。 如果未設定,則每個 CPU 核心最多只能有 2 個執行緒。

Next Protocol Negotiation (NPN) 支援

從 Windows 10 版本 1703 開始,已移除 Next Protocol Negotiation (NPN) 且不再支援。

Pre-Shared Key (PSK)

Windows 10 版本 1607 和 Windows Server 2016 增加對 PSK 金鑰交換演算法 (RFC 4279) 的支援。

增加對下列 PSK 密碼套件的支援:

  • 在 Windows 10 版本 1607 和 Windows Server 2016 中的 TLS_PSK_WITH_AES_128_CBC_SHA256 (RFC 5487)
  • 在 Windows 10 版本 1607 和 Windows Server 2016 中的 TLS_PSK_WITH_AES_256_CBC_SHA384 (RFC 5487)
  • 在 Windows 10 版本 1607 和 Windows Server 2016 中的 TLS_PSK_WITH_NULL_SHA256 (RFC 5487)
  • 在 Windows 10 版本 1607 和 Windows Server 2016 中的 TLS_PSK_WITH_NULL_SHA384 (RFC 5487)
  • 在 Windows 10 版本 1607 和 Windows Server 2016 中的 TLS_PSK_WITH_AES_128_GCM_SHA256 (RFC 5487)
  • 在 Windows 10 版本 1607 和 Windows Server 2016 中的 TLS_PSK_WITH_AES_256_GCM_SHA384 (RFC 5487)

Session Resumption 不改善 Server-Side State 伺服器端效能

與 Windows Server 2012 相比,Windows 10 版本 1507 和 Windows Server 2016 每秒鐘提供多出 30% 的工作階段恢復。

Session Hash 和 Extended Master Secret Extension

Windows 10 版本 1507 和 Windows Server 2016 增加對 RFC 7627 的支援:Transport Layer Security (TLS) Session Hash 和 Extended Master Secret Extension。

由於這個變更,Windows 10 和 Windows Server 2016 需要協力廠商 CNG SSL 提供者,以支援 NCRYPT_SSL_INTERFACE_VERSION_3,並描述這個新介面。

SSL 支援

從 Windows 10 版本 1607 和 Windows Server 2016 開始,TLS 客戶端和伺服器 SSL 3.0 預設停用。 這表示除非應用程式或服務透過 SSPI 特別要求 SSL 3.0,否則使用者端不會提供或接受 SSL 3.0,且伺服器也不會選取 SSL 3.0。

從 Windows 10 版本 1607 和 Windows Server 2016 開始,SSL 2.0 已遭移除,且不再受支援。

對與不符合 TLS 客戶端連線遵循 TLS 1.2 要求的 Windows TLS 更改

在 TLS 1.2 中,客戶端使用 signature_algorithms 擴充功能,向伺服器指示數位簽章中可以使用的簽名/雜湊演算法對 (即伺服器憑證和伺服器金鑰交換)。 TLS 1.2 RFC 也要求伺服器憑證訊息遵循 signature_algorithms 擴充功能:

"若客戶提供 signature_algorithms 擴充功能,則伺服器提供的所有憑證都必須由出現在該擴充功能中的雜湊/簽名演算法對進行簽名。"

在實踐中,一些第三方 TLS 客戶端不符合 TLS 1.2 RFC,並且未在 signature_algorithms 擴充功能中包含他們願意接受的所有簽名和雜湊演算法對,或者完全忽略擴充功能 (後者向伺服器表明客戶端僅支援帶有 RSA、DSA 或 ECDSA 的 SHA1)。

TLS 伺服器通常每個端點只配置一個憑證,這表示伺服器不能隨時提供滿足客戶端要求的憑證。

在 Windows 10 和 Windows Server 2016 之前,Windows TLS 堆疊嚴格遵守 TLS 1.2 RFC 要求,導致與 RFC 不符合 TLS 客戶端的連線失敗和互操作性問題。 在 Windows 10 和 Windows Server 2016 中,放鬆限制,並且伺服器可以傳送不符合 TLS 1.2 RFC 的憑證 (如果這是伺服器唯一的選項)。 然後,客戶端可以繼續或終止握手。

當驗證伺服器和客戶端憑證時,Windows TLS 堆疊嚴格遵守 TLS 1.2 RFC,並且只允許伺服器和客戶端憑證中的協商簽名和雜湊演算法。