TLS暗号設定ガイドラインを実装してみた

【技業LOG】技術者が紹介するNTTPCのテクノロジー

2020.10.19
セキュリティ
髙倉 慎一朗

セキュリティエンジニア
髙倉 慎一朗

技業LOG

TLSとは

みなさんは暗号化やTLSという言葉を日常で利用することはありますか?

TLS (Transport Layer Security)とは、サーバーとクライアントの通信を暗号化し、安全に通信を行うためのプロトコルです。前身となるSSLでは複数の脆弱性が指摘されていましたが、その後継としてそれらの問題を解決し、次世代規格として生まれたのがTLSです。

サーバー管理者であれば頻出のワードかもしれません。一方でTLSといきなり聞くと耳になじみが無い人や、名前だけは知っているという人も多いかもしれません。また、今年は各種主要ブラウザのTLS1.0-1.1無効化対応が進んでいることから、そちらの対応をされていた方もいるんじゃないかと思います。

TLSや暗号化には日常生活では聞き慣れない言葉や概念が多数存在し、なかなか理解するのが難しいのですが、2020年7月、IPA(独立行政法人情報処理推進機構)セキュリティセンターからTLS暗号設定ガイドラインの第三版が公開されました。

これには、TLSとは一体何かという概念から、サーバー管理者がどのような設定を行うべきかという具体的な方針や要求までが詳細に説明されており、とても優れものです。
今回は本ガイドラインに従ってWebサーバーを構築し、強度やアクセス性がどのように変化するかを見てみようと思います。

TLS暗号設定ガイドラインにおける3つセキュリティ型

利用するサーバーに応じて使い分けが必要

TLS暗号設定ガイドラインでは管理するサーバーの性質や要件に応じて、推奨するセキュリティ設定を「高セキュリティ型」「推奨セキュリティ型」「セキュリティ例外型」の3つの型に分類しています。

高セキュリティ型では最新のTLS1.3の実装を基本とし、Cipherも強度の高い新しいものに限定されている代わりにアクセスできる端末も新しいものに限定されていきます。

一方セキュリティ例外型ではTLS1.0-1.1などの古いプロトコルが有効となり、古い端末からのアクセス性が維持されている代わりにセキュリティの強度が下がるものとなっています。

本ガイドラインでは例外型については推奨型に移行するまでの暫定運用を想定するという書き方をしており、基本的には強度とアクセス性のバランスが良い推奨セキュリティ型がその名の通り推奨されています。

ではさっそく、3つの型を検証してみます。

環境

OS:CentOS Linux release 7.8.2003 (Core)

Web:Apache2.4系

SSLチェッカー:ウェブサイト「Qualys SSL Labs」で測定を実施してみることにします。以降に記載する測定結果は2020年8月のものになります。

【セキュリティ例外型】

とりあえず立てたCentOSに何も考えずyumでapacheをインストールし、何の変更もしないデフォルト設定で試してみましょう。

バージョンはv2.4.6で2013年リリースのバージョンでしょうか。証明書の取得はLet's Encryptを使いました。

# yum -y install httpd
# httpd -v
Server version: Apache/2.4.6 (CentOS)

◆サマリー

Copyright © Qualys, Inc. All rights reserved.

まずはサマリーを見てみるとBランクと表示されました。いろんな要素はありますが、簡単なところとしてオレンジの注意書きの3つ目に記載のある部分でプロトコルについて明記されていますね。

>This server supports TLS 1.0 and TLS1.1

これらのプロトコルにはすでに脆弱性が発見されており、膨大な計算能力を持つ攻撃者を想定するともはや安全なプロトコルではありません。タイトルでネタバレになっていましたが、今回の環境にインストールしたままの設定では「セキュリティ例外型」に分類されてしまう脆弱な設定だったみたいです。

◆アクセス性

Copyright © Qualys, Inc. All rights reserved.

セキュリティ強度を犠牲にしている分、アクセス性が最も高いのがセキュリティ例外型です。今回利用しているQualysのSSL Labsにはいろんなアクセス端末を想定して、それらがどのようなSSL設定を利用してアクセスするかをシミュレーションするありがたい機能がついています。こちらを見てみると、SSL Labsが想定する端末の中でこのサーバーにHTTPS接続できないのはWindowsXPのIE6だけのようです。

ずいぶん前にサポートが切れているOS/ブラウザですね。このことからセキュリティ例外型の設定は古いIoT端末など、すぐにアップデートがしづらい古い端末からのアクセス性を確保するために暫定的に利用する、まさに例外型としての利用に向いていると言えます。

【推奨セキュリティ型】

ではApacheの設定を変更し、セキュリティの強度を上げてみようと思います。利用が非推奨となっているTLS1.0-1.1が利用できないようにし、利用できるCipherSuiteも限定してみます。具体的な設定はガイドラインのP.44からの記載に従います。Apacheのバージョンもソースからビルドして上げておきましょう。今回はTLS1.3を有効化していませんが、もちろん有効化したうえでも推奨セキュリティ型は実装できるのでご安心ください。

# httpd -v
Server version: Apache/2.4.46 (Unix)
# vim httpd-ssl.conf
...省略...
SSLProtocol -all +TLSv1.2
...省略...

◆サマリー

Copyright © Qualys, Inc. All rights reserved.

サマリーを見てみるとランクがA+と大幅に向上していることが分かります。今回の環境ではTLS1.3は有効化していませんが、Protocol Supportも100点満点となっていることから、現在はTLS1.2が利用できること、およびそれ以前のバージョンが利用できないことに重点が置かれているようです。

◆CipherSuite

Copyright © Qualys, Inc. All rights reserved.

CipherSuiteはTLSを利用する際に利用する鍵交換方式や署名方式などをひとまとまりの設定にしたものです。今回の設定では概ね安全ではありますが、CBCモードを利用するCipherにはWEAKマークがついていることが分かります。CBC自体はTLS1.0以前で利用する場合に脆弱性が存在するようですが、全体のスコアを下げるほどのものではないということのようです。

◆アクセス性

Copyright © Qualys, Inc. All rights reserved.

TLS1.2のみとなったことが大きな要因と思われますが、アクセスできない端末が増えています。Windows7のIE10なんかは何らかの事情で使っている人もいそうではありますが、古いブラウザからのアクセスのために脆弱なプロトコルを有効にすることなく、しっかりセキュリティの強度を上げることが「推奨」されていると捉えられます。まさにセキュリティの強度とアクセス性のバランスをとっていると言えます。

【高セキュリティ型】

では、TLS1.3を利用した高セキュリティ型にチャレンジしてみます。利用にはOpensslのバージョンが1.1.1以上である必要があり、openssl1.1.1gやapache2.4をソースからビルドして構築しました。また、許可するCipherSuiteもさらに厳選します。設定はやはりガイドラインP.49を参考にしています。構築の手順はここに記載すると長くなりすぎるうえにネット上にたくさん文献があると思いますので割愛します。今後新規で構築される方はその時点での最新のバージョンを利用して構築いただければと思います。では、気になる結果を見てみましょう。

# httpd -v
Server version: Apache/2.4.46 (Unix)
# vim httpd-ssl.conf
...省略...
SSLProtocol -all +TLSv1.2 +TLSv1.3
...省略...

◆サマリー

Copyright © Qualys, Inc. All rights reserved.

スコアは推奨型と変わらないA+のままです。TLS1.3が利用できることでスコアアップするというわけではなく、TLS1.3が有効になっていることが追加で明示的に表示されるところが推奨型との変更点のようです。

◆CipherSuite

Copyright © Qualys, Inc. All rights reserved.

利用するCipherSuiteは安全なものだけになりました。しかし一方で数は少なくなっています。このことから、TLS1.2は利用できるままとはいえ、次のアクセス性では接続不可の端末が増えることになります。

◆アクセス性

Copyright © Qualys, Inc. All rights reserved.

先ほど利用できなかった端末に加え、iOSのSafari6~8やWindows Phoneからのアクセスもできなくなっています。このことから特別高セキュリティの設定を保持する必要が無ければ、2020年8月時点では、推奨セキュリティ型の利用が良いバランスであると判断されているようです。

まとめ

バランスの良さなら、「推奨セキュリティ型」

今回は、IPAがリリースしたTLS暗号設定ガイドラインを利用して、実装によってセキュリティ強度とアクセス性がどのように推移するかを確認してみました。その結果、セキュリティ強度を高めるにつれ、アクセスできる端末が少なくなっていくことが確認できました。IPAが推奨するように、TLS1.0-1.1を利用できなくした推奨セキュリティ型が最もバランスが良いと言うのもうなずけます。
今年は主要ブラウザのTLS1.2化などもあり、TLSの設定について見直すよい機会だと思いますので、ガイドライン片手に振り返ってみてはいかがでしょうか。個別のCipherの適用が難しそうだったのでパスしてしまったNginxを試してみても面白いと思います。

今回は詳細については割愛したCipherSuiteなどについてもご要望に応じて柔軟に対応できますので、お気軽にお問い合わせください。
何かしらの形で皆さまのお役に立てる日が来ることをお待ちしております!

おすすめ記事

    お気軽にご相談ください