https://hayashier.com/article/tls-getting-started/amp/
3wayハンドシェイク
やってる事は大きく以下3つ
接続方法のネゴシエーション
認証およびマスターシークレットの共有
完全性検証の3つに分けられます。
暗号スイート
TLSの目的を実現する手段
その手段を実現するにあたっての情報の交換方法
クライアント側は自身が対応している暗号スイートを優先度順にしてリストを送る。
通常は、サーバー側は自身で対応している暗号スイートの中で、クライアントから提示されたリストの上から選択
Server Order Preference等の設定が行われている場合は、サーバー側のリストの上から選択
暗号スイート
例)
ECDHE-ECDSA-AES128-SHA256
4つの要素からなり、それぞれ以下の内容を実現する方法を表現
ECDHE : 鍵交換
ECDSA : 認証
AES128 : 暗号
SHA256 : データ完全性
例)AES128-SHA256
→4情報なし
# openssl ciphers -v
上記実行するとわかる。
AES128-SHA256 TLSv1.2 Kx=RSA Au=RSA Enc=AES(128) Mac=SHA256
鍵交換
→Kx=RSA
暗号
→Enc=AES(128)
データ完全性
→Mac=SHA256
以下に表記と意味がわかる対応表があり。
https://www.ipa.go.jp/security/ipg/documents/tls_cipher_suite_config_20200707.pdf
1.1.3. 一般的な名称と OpenSSL での名称の対応表
鍵交換
ここも理解する
https://qiita.com/angel_p_57/items/8ca86cc0ec0ca3a27105