SSLって何さ?

セキュリティ的に安全に通信できるらしい。
仕組みがわからなかったので、調べてみた。

SSL(secure sockets layer)とは?

インターネット上でクレジットカード情報など盗まれずに安全に通信できるのはSSL(secure sockets layer)というプロトコルのおかげ。
情報を暗号してから送り、受信側がそれを復号して受け取る。

共通鍵方式と公開鍵方式。

情報暗号通信には共通鍵方式と公開鍵方式の2つの方式がある。

共通鍵方式

お互いに同じ共通鍵を持って、それで暗号化して送る→復号して受け取るを行う。

クライアント           サーバー
共通鍵を使って
情報を暗号化。ーーーーーーーーーー>
                 共通鍵で暗号化された情報を
                 復号して取り出す。

公開鍵方式

公開鍵と秘密鍵のペアを作る。
公開鍵で暗号化された情報は秘密鍵でしか取り出せないので、暗号化された情報と秘密鍵を一緒に送る。

クライアント               サーバー
          公開鍵で情報を暗号化。
秘密鍵を受け取り、<ーーーーーーーーーーー暗号された情報と秘密鍵を送る。
それで復号する。

ただ、送信中に秘密鍵を盗まれる危険性がある。

SSL通信の仕組み

SSL通信は情報の『暗号化』と相手サーバーが信頼できるか?という『認証』の機能を持つ。
通信は共通鍵暗号と公開鍵暗号を組み合わせた方式で行っている。
最初にサーバ側が公開鍵を送り、クライアントはその公開鍵を受け取ってそれで共通鍵を暗号化して送り、最後にサーバー側が共通鍵を秘密鍵で取り出す。
これでお互いが共通鍵を持った状態になり、以降は共通鍵方式で暗号通信できるようになる。
このため、非常に安全。

クライアント          サーバー
SSL要求。 ーーーーーーーーーー>
     <ーーーーーーーーーーサーバ証明書&公開鍵を送る。
                秘密鍵は持っておく。
サーバーを認証。
公開鍵を使って、
共通鍵を暗号化。ーーーーーーーー>
       <ーーーーーーーー秘密鍵を使って、
                公開鍵で暗号化された、
                共通鍵を取り出す。

以降は、送信側が共通鍵で暗号化して、受信側が共通鍵で復号する。

感想

共通鍵と公開鍵という二つの暗号化方式がわかった。
ssh接続の時にも公開鍵と秘密鍵を使ったので、より理解が深まった。