許可する最小の DHE キーの鍵長のサイズ変更の影響について
こんにちは、Windows プラットフォーム サポートの馬場です。
今回は、2016 年 7 月のWindows 更新プログラムの適用後に、一部の Web サーバー等の SSL/TLS サーバーに接続に失敗する問題について紹介します。
なお、今回紹介する問題は、更新プログラムに含まれる不具合ではなく、セキュリティを強化したために発生する事象であり、対処策を実施いただくとクライアント側のセキュリティ レベルが下がることになる点についてご理解ください。
なお、SSL/TLS サーバーが Windows OS であり、IIS などをご利用の環境では発生しない問題となりますので、ご安心ください。
どのような問題なのか ?
Web サーバーへの HTTPS 通信など、TLS を用いてサーバーに接続することがあると思います。
クライアント PC に Windows 更新プログラムの適用以前には正常に接続できていたサイトでも、適用後に接続できなくなったという事象について何件かお問い合わせをいただいております。
この問題は、以下の 2 つの修正プログラムでの動作変更により、1024 ビット未満の DHE 鍵を使用する Web サーバーへ TLS 通信を試みた場合、接続が拒否されるという事象です。
タイトル : [MS15-055] Schannel の脆弱性により、情報漏えいが起こる (2015 年 5 月 12 日)
URL : https://support.microsoft.com/ja-jp/kb/3061518
概要 : クライアント側で最小の DHE のキー長が 512 ビットから 1024 ビットに変更される。
タイトル : Internet Explorer および Windows のマイクロソフトのエッジに新しい暗号スイートを追加するのにを更新します。
URL : https://support.microsoft.com/ja-jp/kb/3161639
概要 : 新たに 2 つの暗号化スイートが追加され、RSA よりも DHE を含む暗号化スイートが優先される。
- 各修正プログラムの詳細
KB3061518 の更新プログラムによる動作変更
2015 年 5 月に公開された MS15-055 において、クライアントにて許可する最低限の DHE 鍵の鍵長が 512 ビットから 1024 ビットに変更になりました。この変更により、クライアント側にて、サーバーから送られてくる DHE キーの鍵長が 1024 ビット未満である場合、接続が拒否されます。
KB3161639 の更新プログラムによる動作変更
2016 年に公開された KB3161639 において、以下の暗号スイートが新たに追加されました。
TLS_DHE_RSA_WITH_AES_128_CBC_SHA
TLS_DHE_RSA_WITH_AES_256_CBC_SHA
この新しい暗号スイートの追加より、これまでの暗号スイートの優先順位が変更になり、既定でこの 2 つの暗号化スイートは上位に変更されました。
※ 補足: KB3061518/KB3161639 がご使用の PC に適用されているかは、schannel.dll のバージョンから確認できます。
以下の手順で、ご使用 PC の schannel.dll のバージョンを確認し、以下のバージョン以降である場合は適用されていると判断できます。
- バージョンの確認方法
1. エクスプローラーを開き、%systemroot%\System32 に移動します。
2. 配下にある schannel.dll を右クリックし、[プロパティ] を開きます。
3. [詳細] タブを選択し、[ファイル バージョン] を確認します。
- 各 OS ごとのバージョン情報
Windows 7 (x86) : 6.1.7601.23539
Windows 7 (x64), Windows Server 2008 R2 (x64) : 6.1.7601.23539
Windows Server 2008 R2 (ia64) : 6.1.7601.23539
Windows 8.1 (x64), Windows Server 2012 R2 (x64) : 6.3.9600.18377
Windows 8.1 (x86) : 6.3.9600.18377
ARM Windows RT 8.1 : 6.3.9600.18377
- 詳細
接続先の TLS サーバーがサードパーティー製のアプリケーションを使用しており、またサーバー側にてサポートしている DHE キーの鍵長が 1024 ビット未満である場合、KB3061518 が適用済みのクライアントと TLS 通信に失敗します。
KB3061518 を適用すると、許可する DHE キーの鍵長が 1024 ビットに変更になるため、1024 ビット未満の DHE キーを受け取ると通信を拒否するためです。
上記の通り、KB3061518 が公開されたのは 2015 年 5 月ですが、この実装変更による影響が表面化したのは KB3161639 の実装変更により、鍵交換として DHE を使用する TLS_DHE_RSA_WITH_AES_128_CBC_SHA と TLS_DHE_RSA_WITH_AES_256_CBC_SHA が追加されたためです。
TLS 通信において、クライアントが Client Hello で送信される利用可能な暗号スイートの一覧は、クライアントのレジストリの設定や、適用されているポリシーの設定によって決まります。
暗号スイートの設定では、クライアントで利用可能な暗号スイートの一覧が優先順位が高い順で定義されており、上位の暗号スイートがTLS 通信において優先して利用されます。
暗号スイート一覧の上位に設定されているため、こちらが選択されやすくなります。
なお、以下の公開情報に記載されている通り、Windows Server 2012 R2 までで使用する DHE のキー長は、既定で、1024 ビットとなっているため、一般的に、Windows 以外の OS もしくは、サードパーティ製の Web アプリケーションなどを使用している環境で発生する可能性のある問題となります。
※ Windows Server 2016 の DHE のキー長は、既定で、2048 ビットとなります。
許可する DHE の最低限のキー長を、レジストリにより変更する回避策です。
以下の手順で、許可する DHE の最低限のキー長を、修正プログラムの適用前の状態に戻します。
以下の手順で事象が回避できかにつきまして、ご確認いただけますようお願いいたします。
- 対処策手順
1. クライアントにて、レジストリエディターを管理者として起動します。
2.次のレジストリキー、および、値を設定します。
キー : HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\KeyExchangeAlgorithms\Diffie-Hellman
名前 : ClientMinKeyBitLength
種類 : REG_DWORD
値 : 0x200 (16 進数)
3. 念のため、OS の再起動を行います。