暗号化通信技術として知られているSSL/TLSですが、データが暗号化されて安全なのは何となく分かってはいても、なぜ安全なのかを説明できる人は少ないのではないでしょうか?
今回は初心に戻って、なぜ安全なのかをサルでも分かるように解説します。
なるべく専門用語を噛み砕いてわかりやすい言葉で例えていきます。
LINEでも脆弱性がニュースになっていた
LINEといったら誰もが使った事のあるコミュニケーションツールかと思います。
そんな大手のLINEでも、SSLサーバーの整備不備で脆弱性がニュースになった事もあります。
https://linecorp.com/ja/security/article/135
この事例の場合、LINE内で表示される各サービスや、外部サービスを利用する際の通信(外部サービスのID・パスワード等を含む)が対象となっているので、LINEのテキストによるトークの内容や、LINEのログイン情報(パスワード)、無料通話、ビデオ通話は影響がありませんでした。
でも、もしこのサービスにも影響があった場合に、どのような事が起こりうるでしょうか。
- トークの相手は友人になりすました悪意のある人だったかも?
- トークを送った瞬間、誰かに見られているかも?
- ログインした瞬間、誰かにパスワードが抜き取られているかも?
- 取引先と重要なLINE電話していたら、誰かに聞かれているかも?
- 恋人と卑猥なビデオ通話をしていたら、誰かに見られているかも?
考えただけでも恐ろしいですね。
これらが暗号化通信がされていると、人間には解読できない文字化けしたようなデータが送られているので、極端に例えると暗号化されたデータは見えるけど何が書いてあるかはわからないということになります。
※当たり前ですがLINEはSSL/TLS暗号化通信されているのでご安心ください。
SSL/TLSはなぜ安全なのか?
サルでもわかるように一切専門用を使わない「LINEを例にした暗号化通信の超簡略図」を作ってみました。逆に技術的なことが分かっている方から見たらツッコミどころ満載かもしれません(笑)ポイントとなるのは…
- 通信相手が信頼できるかを検証している(認証)
- 信頼できることが確認できたら暗号化通信を行う
しいて専門的な言葉で説明すると、SSL/TLSは「通信相手の認証」と 「公開鍵暗号方式」 と「共通鍵暗号方式」で成り立っています。
暗号化通信以前にまずは通信相手の認証をする必要があります。分からない相手と暗号化通信をしたところで、それが悪意のある人(なりすまし)だったら意味がありません。
サーバーから発行される証明書で相手が誰なのかを認証し、付属された公開鍵で共通鍵を生成しデータを暗号化し送受信。クライアントとサーバーがそれぞれで持っている共通鍵で暗号化されたデータを複合化(人間が読み取れるデータ)しています。
だから中間にある通信データは人間が読み取れない暗号化されたデータなので、悪意がある人でも解読できないということになります。インターネットが発展する上で、SSL/TLSは欠かすことのできない技術ということがわかりますね。