Windows 10 および Windows Server 2016 での TLS (Schannel SSP) の変更点

適用対象: Windows Server 2022、Windows Server 2019、Windows Server 2016、Windows 10

暗号スイートの変更

Windows 10 バージョン 1511 および Windows Server 2016 に、モバイル デバイス管理 (MDM) を使用した暗号スイート順序の構成に対するサポートが追加されます。

暗号スイートの優先順序の変更については、「Schannel の暗号スイート」を参照してください。

サポート対象となった暗号スイートは以下のとおりです。

  • 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、およびエクスポート暗号が無効になります。

楕円曲線の変更

Windows 10 バージョン 1507 および Windows Server 2016 で、[コンピューターの構成] > [管理用テンプレート] > [ネットワーク] > [SSL 構成設定]の下に、楕円曲線のグループ ポリシー構成が追加されます。 ECC 曲線の順序一覧では、楕円曲線が優先される順序が指定されるとともに、有効になっていないサポートされている曲線が有効化されます。

サポート対象となった楕円曲線は次のとおりです。

  • 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) は削除され、サポートされなくなりました。

事前共有キー (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)

Server-Side State サーバー側のパフォーマンス向上を使用せずにセッションを再開する

Windows 10 バージョン 1507 および Windows Server 2016 では、Windows Server 2012 に比べてセッション チケットを使用したセッション再開率が 1 秒あたり 30% 高まっています。

セッション ハッシュと Extended Master Secret 拡張機能

Windows 10 バージョン 1507 および Windows Server 2016 に、RFC 7627: トランスポート層セキュリティ (TLS) セッション ハッシュと Extended Master Secret 拡張機能へのサポートが追加されました。

この変更により、Windows 10 と Windows Server 2016 では、NCRYPT_SSL_INTERFACE_VERSION_3 をサポートし、この新しいインターフェイスを記述するために、サードパーティの CNG SSL プロバイダーの更新プログラムが必要になります。

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 クライアントへの接続における Windows TLS から TLS 1.2 要件への準拠に関する変更点

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 サーバーでは、多くの場合、エンドポイントごとに 1 つの証明書しか構成されていません。つまり、サーバーは、クライアントの要件を満たす証明書を常に指定できるとは限らないのです。

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 に厳密に準拠し、サーバー証明書とクライアント証明書でネゴシエートされた署名アルゴリズムとハッシュ アルゴリズムのみが許可されます。