「SSL」と「TLS」の違いと「POODLE」とは?

sc.jpeg
イメージ画像 / stock.io

HTTPSは、「SSL/TLS」プロトコルによって暗号化された通信のことです。プロトコルとは、ネットワーク上でデータを通信するための手順集のようなもので、送信するデータの形式やエラー発生時の対処法などを詳しく取り決めたものです。HTTPの場合は、「TCP/IP」という2種類のプロトコルで通信を行います。

一般に「SSL/TLS」と2つのプロトコルが併記されていますが、「SSL」と「TLS」は何が違うのでしょうか。また、なぜ併記されるのでしょうか。この疑問を紐解くために、この2つのプロトコルの開発経緯について見ていくことにしましょう。

もともとSSL(Secure Socket Layer)は、現在のMozillaの前身となるNetscape社が開発しました。「SSL1.0」は早期段階で脆弱性が発見されたため、製品には実装されず、1994年に改良版「SSL 2.0」が「Netscape Navigator」に実装されました。

さらに翌年にリリースされた「SSL 3.0」は、2014年頃まで広く使われていましたが、POODLEと呼ばれる脆弱性が見つかりました。日本国内では、独立行政法人 情報処理推進機構(IPA)が率先して「SSL 3.0の無効化」を呼びかけました。現在では多くの主要ブラウザが「SSL 3.0」を無効化しています。

https.png
イメージ画像 / GAKUSMEMO

SSLと並行して1999年から開発されていたのがTLS(Transport Layer Security)というプロトコルです。通信内容の暗号化はもちろん、公開鍵証明書を用いて認証を行い、改ざんを排除することができます。

「SSL 3.0」と「TLS 1.0」は、仕様も仕組みも非常に似ていましたが、POODLE問題を受けて多くのWebサイト運営社がTLSに切り替えました。しかし、一般的に「SSL」の名前の方が浸透しており、HTTPS通信の暗号化プロトコル自体を「SSL/TLS」と呼ぶことが増えました。

現在は、2014年に発覚したHeartbleedおよび2015年に発覚したFREAKもあり、「TLS 1.2」が推奨されています。ただし、「TLS 1.2」のリリースは2008年と、リリースから10年近く経過しているので、「TLS 1.3」のドラフト策定が進められています。Googleなどが実験を進めており、まだ不具合も多いですが、古い脆弱な暗号化が大幅に改善される可能性があり、安全性がさらに高まりそうです。