SSLとは?SSLの働きについて理解を深めよう

プログラミング,インフラ

SSLとは?SSLの働きについて理解を深めよう

こんにちは、てーやまです。

サーバにSSL証明書をインストールしたり更新作業なんかをやってますが、SSLについて何となくしか分かっていなかったので、基礎を学んでみました。今回はそれのアウトプットをしようと思います。

SSLとは?

そもそもSSLって何なのでしょうか?

SSLはプロトコルの一種で、OSI参照モデルの『トランスポート層』で動作します。
SSLが動作することで、データを暗号化して盗聴を防いだり、クライアントの認証に使われたりします。

SSLはどのような働きをするのか

SSLの主な働きは以下の2つとなります。

  • デジタル証明書でなりすましを防ぐ
  • データを暗号化して盗聴を防ぐ

今回はこれらをもう少し深掘りして調べてみました。

デジタル証明書でなりすましを防ぐ

例えばAmazonで買い物をするとします。
でも、今見ているページが本当にAmazonのページなのか、見た目では分かりませんよね。

もしかしたら悪意のある第三者が作った、Amazonそっくりなページかもしれません。
そこにクレジットカードの番号を打ち込んでしまったら…ゾッとしますよね。

デジタル証明書とは、それが本物のAmazonのページであることを証明してくれるものです。
SSLにはこのデジタル証明書を通じて、相手が本物かどうか見極める機能があるということです。

クライアント側が何かしなくてはいけないわけではなく、非SSLのサーバに接続している場合、ブラウザには警告メッセージが表示されるようになりました。

あとは自己責任で接続してねということですね。

Google Chromeに表示される警告の例

データを暗号化して盗聴を防ぐ

SSLは『共通鍵暗号方式』と『公開鍵暗号方式』を組み合わせて通信を暗号化します。


共通鍵暗号方式

通信に使われる信号を暗号化するための「暗号鍵」と暗号を解くための「復号鍵」が共通の暗号化方式です。
サーバとクライアントが予め同様の鍵を持っておく必要があります。

どのようにしてクライアント側に共通鍵を送るかという問題(鍵配送問題)が常に付きまといます。

公開鍵暗号方式

暗号鍵と復号鍵はそれぞれ別の鍵を利用した暗号化方式です。
サーバは暗号鍵をネットで公開して、クライアントはそれを利用してデータを暗号化、サーバに送ります。

サーバは届いた暗号化後のデータを予め作成しておいた秘密鍵で復号します。

SSLでの暗号化

デジタル証明書がインストールされているサーバ(=SSL化されているサーバ)にクライアントがアクセスすると、公開鍵とデジタル証明書が返却されます。

クライアント側はデジタル証明書の確認をするとともに、共通鍵を生成、公開鍵を使って暗号化して送り返します。

サーバ側は受け取った共通鍵を秘密鍵で復号、後の通信は共通鍵暗号方式で行うという訳です。

鍵配送問題も上手く払拭されていますね。

どのように設定するのか

前述の通り、サーバをSSL化するためにはデジタル証明書のインストールが必要です。

デジタル証明書は認証局に署名要求することで、与信審査がが行われた後発行されます。

SSLとTLSは違うのか

SSLとTLSは別物です。
むしろSSLはSSL3.0が2015年に脆弱性の発見から禁止されており、後継する形でTLSに移行されました。

今後はTLS1.3が主流になっていくと思われますが、SSLという名称が広く普及しているため、未だTLSのこともSSLと呼ばれているようです。

今後は何を深掘りしていくか

今現在はサーバを勉強しており、次はVPNについて学んでみたいと思っています。

今読んでいる本

私が今読んでいる本はこちらです。
サーバについて初心者でも、基礎的なことは網羅できます。
図解で分かりやすく、おすすめします。

ツイッターもやっています。
IT系とかキャンプネタ中心です。