公開鍵、共有鍵、秘密鍵、SSLってなあに?

posted in: etc | 0

こんにちは、モリモトです。
記憶喪失になってしまったとき用の備考録として記事にします。
記憶喪失シリーズ第3弾は暗号化についてです。

■そもそも?

インターネットでデータの通信をする場合、基本暗号化して通信を行います。
データ送る→暗号化する→暗号化されたデータを元に戻す!
これに「共通鍵暗号方式」「公開鍵暗号方式」が使われます。

  1. データを第三者が読めないようにし(暗号化)
  2. 元の読めるデータを戻す(復号化)

この2か所で「鍵」が使われます。

共通鍵暗号方式」と「公開鍵暗号方式」ではその鍵に違いがあります。

共通鍵暗号方式(共通鍵)

暗号化と復号化に同じ鍵を使う暗号化方式です。
共通鍵暗号方式の流れは以下です。

  1. 送信者Aさんは共通鍵でデータを暗号化します
  2. 暗号化されたデータを受信者Bさんが受け取ります
  3. 受信者Bさんは、受け取ったデータを同じ共通鍵で復号化します。

「鍵」情報は、送信側と受信側のみ共有されているので安全な通信といえますが、
この鍵が外部に漏れてしまうと、簡単に中身を見られてしまうというデメリットがあります。
また、メリットとしては暗号化・復号化速度が速いという点です。

公開鍵暗号方式(公開鍵)

公開鍵は共通鍵と異なり、暗号化と復号化で違う鍵を使います。
公開鍵暗号化方式の流れは以下です。

  1. 受信者Bさんは自分だけが持っている秘密鍵を使って公開鍵を作成します
  2. 受信者Bさんはその公開鍵を送信者Aさんに共有します
  3. 送信者Aさんは公開鍵でデータを暗号化します
  4. 暗号化されたデータを受信者Bさんが受け取ります
  5. 受信者Bさんは、受け取ったデータを秘密鍵で復号化します

秘密鍵を持っている人のみが暗号を解くことができる仕組みになっているので機密性が確保できます。
デメリットとしては、公開鍵暗号化方式の暗号化・復号化速度は共通鍵暗号化方式に比べて約1,000倍の時間がかかります。
両方の暗号方式を見比べると公開鍵暗号化方式の方が安全性が高いのが分かるかと思います。

■この2つの鍵をあわせたものその名も「SSL

SSL(Secure Sockets Layer)」は、「共通鍵暗号方式」と「公開鍵暗号方式」の両方を用いて、暗号化通信を行っています。
このSSL皆さんも聞いてことはあるのではないでしょうか?
例えば、オンラインショッピングなどでクレジットカード登録をする際に暗号化して送受信してくれます。
URLの先頭がhttpsになっているものがSSL対応されているサイトになります。
私は普段利用しないショッピングサイトでクレジットカードの情報を入力するときなど
httpsか!?正規の証明書が使われているか!?とめちゃくちゃ怪しんでチェックしてから入力してますw

■もうちょっと詳しく

https://~~~ にアクセスしたとき、Google ChromeだとURLバーの一番左に鍵マークが出現します。
それをクリックしてみると「この接続は保護されています」と安心できるメッセージがでてきます。
証明書情報も見ることができ、そこには発行元や証明書の有効期限なども確認することができます。

SSL証明書の役割は以下です。

  • 通信情報を暗号化する
  • 認証局からの信頼性が担保できる

またSSL証明書には、認証局から発行される証明書以外に
自分で無料で作成できる自己署名証明書というものもあります。
ここでは割愛させていただきます、気になる方は調べてみてね!

■ではどこで共通鍵、公開鍵が使われているのか?

さきほど共通鍵暗号化方式と公開鍵暗号化方式のメリットとデメリットを記述しました。
さくっとおさらい

共通鍵暗号化方式

公開鍵暗号化方式

2つのメリットを合わせたハイブリット形式がSSLです。
SSL通信の流れは以下です

  1. AさんはサイトにアクセスするためにWebサーバに接続要求をだします
  2. WEBサーバはサーバの公開鍵をクライアントに送ります
  3. Aさんは共通鍵を生成し、共通鍵で「TOPページをみせて」というデータの暗号化を行います(※1)
  4. Aさん生成した共通鍵をWebサーバから受け取った公開鍵で暗号化します(※2)
  5. Aさんは共通鍵で暗号化したリクエストデータ(※1)と、公開鍵で暗号化したAさんの共通鍵(※2)をWebサーバに送ります
  6. Webサーバは公開鍵で暗号化された共通鍵(※2)を秘密鍵で復号化して、共通鍵を取り出します
  7. Webサーバは復号化した共通鍵で暗号化されたリクエストデータ(※1)を復号化します
  8. Webサーバは「TOPページをみせて」というデータを確認することができたので、AさんにTOPページを返します

これがSSLの流れになります。
こんなことデータ要求するたびにしてるの!?と驚きです。

SSLってすげーや!

こんな処理を一瞬でしてくれるSSLってやっぱすげーや!と感激したところで今回の記事を終わります。完

LINEで送る
Pocket