こんにちは、垣内由梨香です
データを暗号化し安全にやり取りを行う Transport Layer Security (TLS)。TLS は利用しているが、詳細なバージョンまでは把握してない、そんな方も多いのではないでしょうか?暗号プロトコルは「使ってさえいれば安全」ではありません。現在の脅威に対応できるバージョンのみを利用しリスクを下げることが重要です。
マイクロソフトでは、より安全な TLS 1.2 へ移行していくことを推奨しています。
[2020/9/7 追記] 各製品、サービスにおける TLS 1.0/1.1 の廃止予定については、次の情報を参考にしてください。 TLS 1.0 and 1.1 deprecation https://techcommunity.microsoft.com/t5/microsoft-sharepoint-blog/tls-1-0-and-1-1-deprecation/ba-p/1620264
1999 年に登場し、Windows XP/Windows Server 2003 で主に利用されてきた TLS 1.0 に比べ、新しいバージョンである TLS 1.1, TLS 1.2 では、セキュリティ面で多くの改良がおこなわれています。例えば、TLS 1.0 において脅威となった CBC モードの脆弱性を利用した攻撃 (BEAST 攻撃等) は、TLS 1.1/1.2 では対策を予め仕様に組み入れるなど強化されています。さらに、現在最新バージョンの TLS 1.2 ではさらにセキュリティが高まり、ハッシュ関数 SHA-2 family (SHA-256 や SHA-384) の利用、認証付暗号利用モードが利用可能な暗号スイートのサポート (GCM4 や CCM5) など、 より強い暗号アルゴリズムの利用が可能になっています。最近では、IETF において、TLS 1.3 の規格化 の議論が進んでいるところです。
現在最新の TLS 1.2 は Windows 7 以降標準で搭載されていますが、互換性の問題などから既定では無効になっていたり TLS 1.0/TLS 1.1 も同時に有効化された状態となっています。現在は、Windows XP や Windows Server 2003 のサポート終了、そして、業界全体でも TLS 1.1/1.2 の実装が進んでいることから、TLS 1.0 が必要となる接続環境も減少しています。TLS の接続を確立する際には、利用できる TLS のバージョンのうち、クライアント・サーバー双方が利用できる最上位のバージョンが利用されます。例えば、お互いに TLS 1.2 が利用できる場合は、他のバージョンの TLS が有効であっても最上位の TLS 1.2 が利用されます。しかしながら、攻撃者のバージョン ロールバックの攻撃により意図せず古いプロトコルが利用されてしまうなど将来的な脅威に備え、古い TLS のバージョンを利用する必要がない環境の場合は、無効化しておくことが重要です。
(移行作業 1) TLS バージョンの確認と設定変更
まずは、組織内で利用している Windows のバージョン、および TLS の設定状況を確認してください。
TLS 1.2 を利用できる Windows バージョンではない場合は、より新しい Windows バージョンの利用を検討してください。TLS 1.2 を有効にする必要がある場合は、設定の有効化を検討してください。
また、TLS 1.0 / TLS 1.1 についても順次無効化していくことを合わせて検討してください。
TLS サポート状況一覧
Windows OS | SSLv2 | SSLv3 | TLS 1.0 | TLS 1.1 | TLS 1.2 |
---|---|---|---|---|---|
Windows Server 2008 | 〇 | 〇 | 〇 | △ | △ |
Windows 7Windows Server 2008 R2 | 〇 | 〇 | 〇 | △ | △ |
Windows Serer 2012 | △ | 〇 | 〇 | 〇 | 〇 |
Windows 8.1Windows Server 2012 R2 | △ | 〇 | 〇 | 〇 | 〇 |
Windows 10 | △ | 〇 | 〇 | 〇 | 〇 |
Windows Server 2016 | × | △ | 〇 | 〇 | 〇 |
〇 有効: 既定で利用可能
△ 設定が必要: 利用するためには有効化する必要がある。Windows Server 2008 における TLS 1.2 のサポートする更新プログラムを 2017 年夏頃に提供予定です。最新情報は、"TLS 1.2 support at Microsoft” を参照してください。
[2017/7/21 更新] TLS 1.2 for Windows Server 2008 (KB4019276.) を公開しました。Microsoft Catalog から入手可能です。2017/8/15 に Windows Update /WSUS/catalog で Optional として配信を開始します。また、2017/9/12 には、Recommended として配信を開始する予定です。最新情報は、"TLS 1.2 Support added to Windows Server 2008” を参照してください。Read more at https://blogs.microsoft.com/microsoftsecure/2017/07/20/tls-1-2-support-added-to-windows-server-2008/#MgmQml54wIq9kmed.99"
× 非サポート: 利用不可能 (実装無し)
TLS 設定変更
TLS バージョンの設定変更は、以下のサポート技術情報を参考にしてください。
特定の暗号化アルゴリズムおよび Schannel.dll のプロトコルの使用を制限する方法 https://support.microsoft.com/en-us/kb/245030
また、Windows を含め、その他のソフトウェアにおける設定については、暗号技術評価プロジェクト CRYPTREC によって作成された「SSL/TLS 暗号設定ガイドライン~安全なウェブサイトのために(暗号設定対策編)~」に設定ガイドが掲載されていますので、ぜひ参照してください。
(移行作業 2) アプリケーションコード上の TLS 利用状況を確認し、修正する
TLS のバージョンをソフトウェアやアプリケーション上でハードコードし利用しているかどうかを確認し、利用している場合は修正を検討してください。特定のバージョンを利用するようハードコードするのではなく、Windows 既定を利用するよう修正することを推奨しています。また、TLS 1.2 をサポートするよう修正が必要な場合には、コードの修正を検討してください。
Windows が提供する暗号ライブラリを利用するソフトウェアやアプリケーションを利用している場合は以下の手順で確認できます。
-
AcquireCredentialsHandle() を利用するインスタンスの確認。TLS の利用がハードコードされている可能性があります。
-
SecPkgContext_SupportedProtocols および SecPkgContext_ConnectionInfo 構造体の確認。TLS の利用がハードコードされている可能性があります。
-
ネイティブコード上にて、grbitEnabledProtocols をゼロに設定。これにより、OS 側が既定の TLS バージョンを利用するようになります。(利用可能な最新バージョンの TLS を利用する)
-
FIPS Mode を無効化する
-
Windows Server 2012 以前にて WinHTTP を利用するアプリケーションを修正しコンパイルし直す。TLS 1.2 をサポートするためには、WinHttpSetOption を利用する必要があります。
-
コードおよび構成ファイルをスキャンし、以下のよくある TLS ハードコードの記述がないか確認し修正を行う。
- SecurityProtocolType
- SSLv2, SSLv23, SSLv3, TLS1, TLS 10, TLS11
- WINHTTP_FLAG_SECURE_PROTOCOL_
- SP_PROT_
- NSStreamSocketSecurityLevel
- PROTOCOL_SSL or PROTOCOL_TLS
- .NET を利用するアプリケーションの場合は、SSLProtocols が Default に設定されているかを確認。また、最新の .NET Framwork のバージョンで再コンパイルすることを推奨しています。
(移行作業 3) TLS 1.2 の接続テストを行う
TLS 1.2 を有効化した状態で、各種接続に問題がないか、確認を行ってください。
- よくある接続エラーの原因としては、TLS 1.2 をサポートしていないクライアントやブラウザ、アプリケーション間での接続エラーが上げられます。例えば、すでにサポートが終了している Windows Vista 以前の Windows は TLS 1.2 を利用できません。より新しい Windows への移行を進めるようにしてください。どのバージョンの TLS が利用されているかを簡単にチェックする方法としては、Qualys SSL Labs を利用し確認する方法もおすすめです。
- 証明書ベースの TLS 相互認証を利用しているソフトウェアやアプリケーションの場合、特に注意が必要です。TLS 1.0 をベースにした実装をしている場合があり接続エラーになる場合が見られます。もし、が、通常の Windows の証明書ストア以外を利用している場合、TLS 1.2 でも証明書が正しく利用できるようアプリケーションの更新が必要になる場合があります。
- 環境内で利用しているマイクロソフト製品以外を含めたソフトウェアやアプリケーション、サービス、ネットワーク機器において TLS 1.2 が利用可能かを確認してください。
(補足) IIS にて TLS 接続状況の確認
Windows Server 2012R2 および Windows Server 2016 では、IIS ログを利用して、クライアントがどの TLS を利用しているかを確認することができます。
詳細は、New IIS functionality to help identify weak TLS usage を参考にしてください。
早めの移行計画の開始を!
古いアルゴリズムの利用を停止し、新たなアルゴリズムを有効化するにあたっては、組織の環境を精査し、検証するなど、時間を要する作業が必要になります。しかし、攻撃者側は待ってはくれません。数年前に、POODLE 攻撃が発生し、 SSL 3.0 を無効にすることが必要になった際、慌てて対応に追われた方も多かったのではないでしょうか。特に TLS 1.0 は長い間利用されてきたこともあり、無効化による影響の確認には時間を要することが想定されます。ぜひ、早めに移行計画を開始してください。
更新履歴
2017/7/21: TLS 1.2 for Windows Server 2008 (KB4019276.) の公開に伴い情報を更新しました。