TLS1.3の仕組みについて

こんにちは、tangoです。
最近、Webサイト関連を学習する機会あり、HTTP、HTTPS、TLSを知りました。
その中で、TLSとはどういった通信をしているのだろうと気になりましたので、今回はTLSの仕組みを学習した内容をまとめました。


TLSとは

Transport Layer Security の略で、送受信時に、データを暗号化して送受信するためのプロトコル
Webサイト(HTTPS)等に利用され、一般的に「SSLやSSL/TLS」と言われることが多い。

TLS1.3通信フロー

TLS1.3の通信フロー図

TLS通信の仕組み

◇3Way Handshake

SYNパケットとACKパケットを用いて、TCP通信を確立する

◇TLS Handshake

データを暗号化するための共通鍵を生成する。

◇暗号化通信

TLS Handshake で生成された共通鍵を用いてデータを暗号化し送信する

◇Fin

通信を終了させる

機器情報とソースコード

◇機器

クライアント:ノートPC(Windows10)
Webサーバ:Raspberry Pi 3 model B(Debian GNU/Linux 11 (bullseye))
      Apache2を導入済み

今回は、以下のWebページ(トップページ)にTLSプロトコルを用いて通信を行います。

Webページ(トップページ)

◇ソースコード(Python)

GitHub:https://github.com/tango3304/TLS1.3
※参照データ:https://tex2e.github.io/rfc-translater/html/rfc8446.html

検証

◇Status Code 200

サーバ結果

サーバ StatusCode 200(検証結果)

クライアント結果

クライアント StatusCode 200(検証結果)

Wireshark
 No.2880~2882
 ⇒3Way Handshake
 No.2883~2889
 ⇒TLS Handshake
 No.2890~2891
 ⇒暗号化通信
 No.2893~2899
 ⇒Fin

Wireshark StatusCode 200(検証結果)


◇Status Code 404

サーバ結果

サーバ StatusCode 404(検証結果)

クライアント結果

クライアント StatusCode 404(検証結果)

Wireshark
 No.19~21
 ⇒3Way Handshake
 No.22~28
 ⇒TLS Handshake
 No.29~30
 ⇒暗号化通信
 No.32~38
 ⇒Fin

Wireshark StatusCode 404(検証結果)