SSL/TLSって何?【何から何を守っているの?】

情報化社会の現在において、ネットワーク上には本当に様々な情報が流れています。名前、住所、電話番号といった個人情報、IDやパスワード、クレジットカード番号、企業の発展や存続にかかわる、きわめて重要な社外秘情報、プライベートな写真やメール、通話音声など、他人には知られてはいけない、知られたくないといった情報も当然含まれます。

まさにネットワーク上は情報の宝庫と言えます。そんな場所を悪人はいつもどこかでひっそり狙っており、何の対策もせずに情報を流すのは、きわめて危険な行為であるということは言うまでもありません。

SSL/TLSはそのような脅威から情報を守るためのプロトコルです。今の時代、システムエンジニアの肩書を持つなら、SSL/TLSとはどんな技術であり、何をどのように守っているのか正しく理解しておく必要があります。

ということで、今回は、SSL/TLSについて考えていきたいと思います。

SSL/TLSとは何か

SSL(Secure Sockes Layer)/TLS(Transport Layer Security)は、ネットワーク上に存在する様々な脅威からアプリケーションデータを守るプロトコルです。

通信の暗号化や改ざん検知、認証機能を提供するトランスポート層の上位層に位置します。

SSL/TLSと言えば、HTTPをSSL/TLS化した「HTTP over SSL」(HTTPS)がまず思い浮かぶかもしれないけど、それ以外にも例えば、ファイル転送で使用するFTPや、メールで使用するSMTPもSSLで暗号化することができ、それぞれ「FTP over SSL」(FTPS)や「SMTP over SSL」(SMTPS)と呼ばれているよ。

SSL 1.0、SSL 2.0、SSL 3.0、TLS 1.0(SSL 3.1)、TLS 1.1(SSL 3.2)、TLS 1.2(SSL 3.3)のバージョンが存在します。TLS 1.3は2021年現在、仕様策定中です。

それらバージョンのうち、SSL 1.0、2.0はそれぞれ重大な脆弱性が発見されており、現在は使用禁止されています。さらに、2015年6月にはIETF(インターネット技術タスクフォース)によってSSL 3.0の使用も禁止されました。

SSLとTLSは何が違うんですか?

TLSはSSLの次世代規格です。現在一般的に「SSL」と呼んでいるものは実質「TLS」を指していることがほとんどです。あえて、2つの用語を取り入れ、「SSL/TLS」と記述されることも多いです。

TLSに代わってすでにかなりの年数が経ってるから、いい加減、「TLS」のことを「SSL」と呼ぶのをやめようよ、という動きもあるようだよ。

常時SSL化の広がり

近年、Webサイトの一部のみをHTTPS化するのではなく、Webサイト全体をHTTPS化する動きが強まっています。従来はログインページやクレジットカード決済ページなど、Webサイト上でパスワードや個人情報等を入力するページのみをHTTPS化して通信を保護することが一般的でした。
しかし近年、インターネットにおけるセキュリティ意識の高まりや主要なブラウザでの対応を受け、Webサイト全体をHTTPS化することが求められています。
このように、、Webサイト全体をHTTPS化することを常時SSL化(常時HTTPS化)と呼ばれています。

2017年、Google ChromeではSSL化されてないページを開いた場合、警告が表示されるようになり、その界隈を騒がせました。その効果もあってか、今は世界中の多数のWebサイトが常時SSLに対応してきました。

SSL/TLSにより何を守るのか

インターネットはとても便利で、今では生活基盤のひとつと言えますが、その反面、非常にたくさんの脅威も潜んでいます。インターネットは、何の対策もなしに使用するのは極めて危険な場所であるということを認識しなければいけないでしょう。

インターネットってとっても危険なんですね!SSL/TLSは何から何を守ってくれるのでしょうか?

SSL/TLSはインターネット上に存在する脅威の中でも「盗聴」「改ざん」「なりすまし」という3つの脅威からデータを守る技術を組み合わせてできています。

暗号化で盗聴から守る

インターネットは、パブリックネットワークです。特定の人だけが使うのではなく、世界中のみんなで共有しています。それはつまり、通信路に重要なデータがそのままの状態(平文)で流れていたら、それを第三者が盗聴することもできてしまうということです。

SSL/TLSはクライアントとサーバーの通信を暗号化して、例え盗聴されても内容がわからなくなるようにします。

データの改ざんを検知する

例えば、インターネットショッピングで購入した商品の配送先住所を通信経路上で書き換えられたら大問題です。

SSL/TLSには、クライアントとサーバー間の通信において、送受信するデータが改ざん(書き換え)された場合に気付くことができる、改ざん検知機能が備わっています。

認証してなりすましから守る

少し前ですが、本物そっくりの偽サイトを作成し、IDやパスワード、住所など個人情報を入力させて詐取するフィッシング詐欺が社会問題となりました。実際、被害者も多かったようです。

SSL/TLSでは、「本当に問題ない(求めているWebサイトである)」ことを確かめるために「ディジタル証明書」を使用します。データを送信する前に「あなたの情報をください」とお願いし、送られてきたディジタル証明書をもとに正しい相手かどうかを確認します。もし、正しい相手でなかったらブラウザは警告画面を出し、利用者に知らせてくれます。

これまであまり意識したことはなかったのですが、知らないうちにわたしたちはSSL/TLSにより、インターネットの脅威から守られていたんですね。

被害を未然に防ぐ技術は注目されにくいけど、現状のインターネットにはなくてはならない技術がSSL/TLSなんだよ。

SSL/TLSに関わる技術

SSL/TLSを利用するのみの人であれば、ここまでの内容で事足りますが、SEであれば、SSL/TLSを実現する仕組みについての詳細を理解しておく必要があります。

SSL/TLSサーバーを構築・運用するのであれば、暗号危殆化(きたいか)対策や、開発するソフトウェアのセキュリティ確保のために、各暗号アルゴリズムの特徴を理解しておく必要があるからです。また、サーバー運用するなら、証明書の管理やトラブルシューティングを行えるようにもならなければいけません。

SSL/TLSは、共通鍵暗号、公開鍵暗号、ハッシュ関数等の要素技術と、これらを組み合わせて実現される、ディジタル署名、ディジタル証明書等の技術によって成り立っています。

共通鍵暗号

共通鍵暗号はデータの暗号化・復号化に鍵を使用する暗号です。名称のとおり、暗号化・復号化に使用する鍵が共通であることが特徴です。送信者と受信者は前もって同じ鍵を共有していて、暗号鍵で暗号化し、暗号鍵とまったく同じ復号鍵で復号します。「DES」や「3DES」「AES」が該当します。

データは共通鍵で暗号化し送信され、受信者は同じ共通鍵で復号化し、データを受信します。

公開鍵暗号

公開鍵暗号は、非対称鍵暗号とも呼ばれる、暗号鍵と復号鍵に異なる鍵を使用する暗号化方式です。異なる鍵を非対称に使用することから「非対称鍵暗号化方式」とも呼ばれています。「RSA」や「楕円曲線暗号」が該当します。

共通鍵の交換時に使用します。

ハッシュ関数

ハッシュ関数は、いかなる長さのデータを入力しても固定長の擬似乱数データを出力する関数です。入力データをハッシュ関数にかけることで固定長のデータが出力されます。そのデータのことをメッセージダイジェストやハッシュ値などと言います。その名のとおり、入力データ(メッセージ)の要約(ダイジェスト)です。

例えば、あるデータとあるデータが同じであるかを確認したいとき、データそのものを比較するのが通常の方法です。しかし、比較データが大きかったら、比較自体に時間がかかるし、2つのデータを保管する場所も必要です。そこで、メッセージダイジェストを使用します。データの要約なのでサイズが小さく、どんなサイズのデータからも同じサイズのメッセージダイジェストが算出されるようになっているため、取り扱いがとても簡単になります。

ディジタル署名

SSL/TLSではディジタル証明書(サーバー証明書やクライアント証明書)を使用して、自分が自分であること、相手が相手であることを証明します。しかし、いくら自分が自分であることを主張しても、それには信頼性はありません。例えば「私はAです!」と声高らかに言ってもその主張がまったくの嘘で、別の人がAになりすましている可能性もあるからです。そこで、SSL/TLSでは第三者認証を採用しています。信頼できる第三者「認証局」に「AさんがAであること」をディジタル署名というもので認めてもらいます。そのディジタル署名にメッセージダイジェストを使用します。

ディジタル証明書

ディジタル証明書は自分が自分であることを証明するものです。

ディジタル証明書を受け取った受信者は、その証明書を検証し、通信相手が本物かどうかを判断します。

具体的には、証明書の中に含まれるディジタル署名を認証局の公開鍵(ルート証明書)で復号し、署名前証明書と比較します。一致していれば、証明書が改ざんされていない、つまりそのサーバーが本物だということがわかります。

ここまでが、SSL/TLSに関わる技術の概要です。これだけの説明ではそれらの技術がなぜ必要なのか、どのように組み合わせて使用しているのか、目的や使い方などはっきり見えてこないと思います。

記事にするには長すぎる内容なので、SSL/TLSについて詳しく知りたい方は以下のサイトを参照してください。

SSL/TLSは実に奥深く、理解するのが大変ですが現在のセキュリティ技術の基本となるものですので、お時間があるときに読んでみてください。