はじめに
この記事はペライチアドベントカレンダーの1日目の記事です。
誰でも簡単にホームページが作れるペライチでは常時SSL化に対応していて、ユーザーさんやCSなど社内の非エンジニアさんとのコミュニケーションの中でも「SSL証明書」について話題になることがあります。その中でよく気になるのが、みなさん「暗号化通信のためにSSL証明書が必要」だと思っていることが多いことです。
エンジニアでない方々にはそのような理解でもだいたい差し支えはないとは思いますが、SSL証明書についてググって出てくる記事などもほとんど「暗号化通信のためにSSL証明書が必要」と書いてあることが多く、たまに本当にそう思っているエンジニアもいたりするので、SSL証明書が何のために必要なのか?について書いてみようかと思いました。
HTTPSについて
HTTPSはHTTP Secureの略で、TLSという通信プロトコルを使ってHTTPを安全に保護する通信プロトコルです。(昔はTLSではなくSSLというプロトコルが使われていました。現在はSSLはほぼ使われていませんが、SSLの知名度が高すぎてTLSが一般の方々に定着していません。SSLと言うとTLSのことを指していることが多いです)
TLSの機能に「通信の暗号化」があり、HTTPS通信を行うためには「SSL証明書」が必要になるので、「暗号化通信のためにSSL証明書が必要」という理解になってしまうのだと思います。
TLSの主な役割は以下の通りです。
- 通信の盗聴の防止(通信の暗号化)
- 通信の改ざんの防止
- 通信相手のなりすましの防止
この中でも特に通信の盗聴の防止や改ざんの防止は役割をイメージしやすいですが、なりすましの防止については一般の方々に説明するには少々面倒だなだと思います。
通信の暗号化
暗号化通信では、事前に暗号鍵を通信相手と互いに共有しておき、この鍵を使って暗号化・復号化を行います。TLSでは「鍵共有プロトコル」と呼ばれる方法で暗号鍵を共有します。
(鍵共有のためにSSL証明書に登録された公開鍵を使う場合がありますが、公開鍵を使わなくても鍵共有をする方法があり、SSL証明書は必須ではありません)
通信相手のなりすまし
「なりすまし」とは、通信経路に細工をして、本来通信したい相手とのやりとりを乗っ取る行為です。
暗号化通信で盗聴の防止をしていても、なりすましをされると、攻撃者との間で暗号鍵を共有し、攻撃者との間で暗号化通信が行われます。つまり暗号化通信をしていても通信内容を盗聴されてしまうのです。
SSL証明書
さて、ここで出てくるのがSSL証明書です。
SSL証明書とは、認証局と呼ばれる機関がサーバーなどに対して発行する電子証明書です。SSL証明書はサーバーの公開鍵を認証局が署名したものです。
攻撃者は認証局が署名した公開鍵のペアになる秘密鍵持っていないため、SSL証明書を偽造することができません。通信者はSSL証明書を認証局に確認することで通信相手が意図した相手かどうかを確認することができます。
まとめます
細かい話をだいぶ端折りましたが、
- 「暗号化通信」を行っていても、通信の内容が盗聴されてしまう方法があり、それが「なりすまし」です。
- SSL証明書の役割は「なりすまし」の防止です。
と言う話でした。
通信の「暗号化」のために「証明書」が必要ってどう言うことよ?みたいなことに疑問を持って調べてみると良いんじゃないかなと思います。
おわり。