セキュリティ基礎: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/
この記事が気に入ったらサポートをしてみませんか?