SSL/TLSについて


はじめに

開発環境構築する上で、XAMPPのSSLを有効化する機会がありました。
参考:XAMPP for WindowsでSSLを有効にする

その際、SSLってなんだっけ?となったので復習を兼ねて自分用にまとめます。
注意:間違えている可能性があります。

ネットワーク通信に潜む危険

ネットワークの通信経路上に潜む危険として、代表的なものが以下の3つである。

盗聴

データのやり取り途中で、内容を第三者に盗み読まれる危険性

改ざん

データのやり取りは正常に行えているように見えるが、途中で第三者によって内容を書き換えられてしまっている危険性

なりすまし

第三者がなりすまし、データを送受信できてしまう危険性

とはいえ、通信経路を見られないようにすることは難しい。
そこで、通信経路を見られるのはしょうがないから、見られても大丈夫なように暗号化することが重要である。

参考
キタミ式イラストIT塾 基本情報技術者 平成31年/01年

SSL/TLSとは?

SSLは「Secure Sockets Layer」の略で、送受信しているデータを暗号化する通信手順。
WebサイトのURLアドレスが、httpsから始まっている(URLに鍵マークがついている)ものはSSL化されている。

TLSは「Transport Layer Security」の略。SSLの脆弱性が発見され、それに対処するために設計されたのがTLS(そのため、厳密にはSSLとTLSは同じものではない)。現在SSLは実はTLSである場合がほとんどだが、なじみ深いSSLという言葉が使用されている。

SSL/TLSは、共通鍵暗号方式と公開鍵暗号方式を用いて、通信を暗号化する仕組み

SSL通信を行うことで、ネットワーク通信に潜む「盗聴」「改ざん」「なりすまし」の防止をしている。

  • 盗聴防止
    通信を暗号化することで、第三者の盗聴を防ぐ。

  • 改ざん防止
    通信途中でデータが改ざんされた場合、改ざんされていることがわかる。かつ、信用できないデータを破棄し、再度データを送るよう依頼することができる。

  • なりすまし防止
    サイトをコピーしたとしても、SSL通信の際に用いる秘密鍵のコピーはできない。秘密鍵がない状態でSSL通信を行うことはできないため、なりすましであることに気づくことが出来る。

SSL/TLSの流れ

  1. クライアント側からサーバー側に、SSL通信のリクエストを送る
  2. サーバー側から「公開鍵」付きのSSLサーバ証明書が送付される
  3. ルート証明書を用いて、SSLサーバ証明書の署名検証を行う
  4. クライアント側で生成した「共通鍵」「公開鍵」で暗号化してサーバー側に送付
  5. サーバー側は、ペアとなる「秘密鍵」で複合し、「共通鍵」を取得
  6. 共通鍵を使って、SSL/TLS暗号化通信を行う

SSLサーバ証明書とは?

SSLサーバ証明書とは、ウェブサイトの実在性を確認し、通信データの暗号化を行うための電子証明書。SSLサーバ証明書には、ウェブサイトの所有者の情報や、暗号化通信に必要な鍵(公開鍵)、発行者の署名データが含まれている。

ルート証明書とは?

公開鍵を用いたやり取りを行うにあたり、そもそも公開鍵を作ったものがなりすましを行っていたら、なりすましを防ぐことが出来ない。そこで、信用できる第三者が「この公開鍵は本物である」と証明する機構(認証局)が考えられた。

ただ、「信用できる第三者の信頼性」はどのように保証されているのか?
→ルート認証局に関しては、PC出荷時に組み込まれているため信頼性が保証されている。
※Windows Update等で更新される

ルート証明書とは、つまり最上位にある認証局を保証するものという認識かなと(多分)

SSL通信を行う上で共通鍵って必要??

SSL通信をするうえで、公開鍵暗号方式でデータの暗号化を行えばいいのではないのか?とふと思った。ここで共通鍵暗号方式と公開鍵暗号方式のおさらいをする。

共通鍵暗号方式

送り手(暗号化する側)と受け手側(復号する側)が同じ鍵を用いる暗号方式。
この鍵が第三者に知られてはいけない。そのため、共通鍵を安全に受け渡しする必要がある。

強み:暗号化・復号化速度が速い 弱み:安全に鍵を渡す必要がある

公開鍵暗号方式

公開鍵暗号方式は、受信側が公開鍵と秘密鍵を用意する。
そして、公開鍵を配布する。データ送信者は、この配布された公開鍵を用いて暗号化する。
公開鍵で暗号化されたデータは、セットとなる秘密鍵でしか復号することができない。
そのため、公開鍵をばらまいても問題ない。

強み:安全性が高い 弱み:暗号化・復号化速度が遅い

2つの暗号方式を組み合わせる

上記の強み・弱みを踏まえて、公開鍵暗号方式で共通鍵を安全に受け渡し、その共通鍵を用いて通信を行うことで安全性・処理速度面においての問題点を解消している。
こういった背景から、SSL通信を行う際は2つの暗号方式を用いている!

参考

【図解】SSL/TLSとは何か?その違いや仕組み・導入方法についてわかりやすく解説します
SSLって何?意味や仕組みをわかりやすく解説!
SSLサーバ証明書とは
キタミ式イラストIT塾 基本情報技術者 平成31年/01年
いまさら聞けない、SSLサーバ証明書とルート証明書の関係
SSLサーバ証明書の仕組みに関すること
エンジニアなら知っておきたい、絵で見てわかるセキュア通信の基本
サーバー証明書/中間CA証明書/ルート証明書の違いとは?