セキュリティ基礎:SSL(Secure Socket Layer)の概要のみ


本稿の目的

基本情報、応用情報を受験するにあたって必要なレベルの知識をおさえる。
SSL/TLSのハンドシェイクについては資料の掲載にとどめる。

前提

SSL/TLSの理解には「公開鍵+秘密鍵方式」「デジタル署名」「デジタル証明書」の知識が必須。本稿では解説しない。

処理手順(簡潔版)

大まかに書き4つの手順を踏む。
1,クライアントーサーバ間の暗号化方式の合意
2,サーバ証明書(サーバの公開鍵を含む)の送信
3,共通鍵の元になるデータを送受信し、共通鍵を生成
4,暗号化通信を実行

手順1:暗号化方式の合意

クライアントからサーバにSSL形式の通信を要求する。

手順2:サーバ証明書の送信

サーバはSSLサーバ証明書を所持している。SSLサーバ証明書を認証局に申請する際に、サーバは公開鍵と秘密鍵を所有している(余談だが申請する際は暗号鍵のみ掲載する)。
サーバは、自らの信頼性を示すためにSSLサーバ証明書をクライアントに送信する。SSLサーバ証明書には公開鍵が付与されている。
クライアントはSSLサーバ証明書を受信したら、証明書が正当なものであるかを確認するため、ブラウザが自動的に、認証局の公開鍵を使用して証明書が復号できることを確認する。

手順3:共通鍵の生成

先に述べておくと、手順4の暗号化通信では、共通鍵による通信を行う。これは、公開鍵/秘密鍵方式で通信すると、解読に時間がかかるというデメリットがあるため。
クライアントは共通鍵を生成し、サーバの公開鍵を使って、共通鍵を暗号化する。
サーバは秘密鍵を使用して、送付された「暗号化された共通鍵」を復号する。これで、クライアントとサーバは共通鍵を所有することができた。

手順4:暗号化通信を実行

手順3で作成した共通鍵を使用し、暗号化通信を行う。

SSLハンドシェイクの詳細フロー(資料掲載のみ)

URLの掲載のみ。気が向いたら学習する。
1つ目は「ネットワークエンジニアとして」さんのサイト。CCNAの勉強のときにめっちゃお世話になった。

セッション鍵とは?セッション鍵とTLSハンドシェイク
https://www.cloudflare.com/ja-jp/learning/ssl/what-is-a-session-key/

TLS | SSLハンドシェイクの プロセスは?
https://www.cloudflare.com/ja-jp/learning/ssl/what-happens-in-a-tls-handshake/


この記事が気に入ったらサポートをしてみませんか?