SSLとは?
SSLという言葉は以前から知っていたものの、全く勉強せず社会人になってしまった悲しき村髙です。
さて、エンジニアとしてSSLを知らないのは流石にまずいのでここで勉強・アウトプットをしたいと思った次第でございます
SSL
SSL(Secure Sockets Layer)とは、インターネット上でデータを暗号化して安全に送受信するための通信プロトコルです。現在は、より安全な改良版である TLS(Transport Layer Security) が主流ですが、今でも「SSL」と呼ばれることが多いです。
SSLの主な目的
- 通信内容の暗号化
第三者に内容を盗み見されないようにします(例:ログイン情報、クレジットカード番号など)。 - データの改ざん防止
通信中にデータが改ざんされていないことを保証します。 - サーバーの正当性の証明
Webサイトの正当性を証明する「SSL証明書」により、なりすましを防ぎます。
SSLが使われている例
- Webサイト(URLが
https://で始まる) - オンラインショッピングサイト
- インターネットバンキング
- メールサーバーとの通信(SMTP, IMAPなど)
SSL/TLSの仕組み(ざっくりステップ解説)
① クライアントが「Hello」
- ユーザーのブラウザ(クライアント)が、Webサーバーに接続を開始します。
- 「どんな暗号方式が使えるか」などの情報をサーバーに送ります(Client Hello)。
② サーバーが「証明書」を返す
- サーバーは、クライアントの要求に応えて、
- 暗号方式の選択
- 自分の公開鍵(後述)
- SSL証明書(サーバーの身元を証明)を返します(Server Hello)。
③ 証明書を検証
- クライアントは、そのSSL証明書が信頼できるかをチェックします。
- 発行元(認証局:CA)の署名が正しいか
- 有効期限が切れていないか
- ドメインが一致しているか など。
④ 鍵交換(共通鍵の生成)
- SSLでは、通信内容を暗号化するために「共通鍵(対称鍵)」を使います。
- その共通鍵を安全にやり取りするために「公開鍵暗号」を使います。
例(RSAの場合):
- クライアントが共通鍵をランダムに生成。
- サーバーの公開鍵で共通鍵を暗号化して送る。
- サーバーは秘密鍵で復号して、共通鍵を入手。
これで両者は同じ共通鍵を持つことになり、安全な通信が可能に。
⑤ 通信開始
- 共通鍵を使って、データを暗号化してやり取りします。
- 以降の通信はこの共通鍵で暗号化されているため、盗聴・改ざんが困難になります。