本稿では TLS 1.3 の概要を説明します。TLS は一連のレコードを伝送します。暗号化前の
ハンドシェイクデータは TLSPlaintext レコードで伝送されます。従来のレコードバージョンフィールドは
相互運用性のために存在し、TLS 1.3 のピアはプロトコルのネゴシエーションにこのフィールドを使用しません。
レコードの内容は、許容される拡張が適用される前の状態で 2^14 バイトに制限されます。
ハンドシェイク #
クライアントは、ランダム値、対応する暗号スイート、鍵共有、
拡張、および従来のセッション ID を含む ClientHello を送信します。legacy_version は 0x0303 であり、
supported-versions 拡張によって TLS 1.3 をネゴシエートします。現行標準の AEAD スイートには、
SHA-256 または SHA-384 と組み合わせた AES-GCM および ChaCha20-Poly1305 があります。
サーバーは ServerHello を返し、暗号スイートと鍵共有を選択します。別の許容可能な鍵共有が
必要な場合は、代わりに HelloRetryRequest を送信できます。その場合、クライアントは
要求された変更を含む 2 回目の ClientHello を送信します。双方は鍵交換とトランスクリプトから
ハンドシェイクトラフィックシークレットを導出し、Finished でハンドシェイクを認証した後、
アプリケーショントラフィックシークレットを導出します。証明書認証を使用する場合、サーバーは
Certificate と CertificateVerify を送信します。
TLS 1.3 は ServerHello 以降のハンドシェイクメッセージを暗号化し、廃止された RSA 鍵
転送と静的 DH ネゴシエーションを削除しています。証明書の検証は引き続き不可欠です。クライアントは、
信頼できる発行者までの証明書チェーン、ホスト名またはサービス ID、有効期間、
鍵用途、署名アルゴリズム、および該当する失効ポリシーを検証します。認証局は、
DNS 名またはその他のサブジェクト ID の管理権を検証した後に証明書を発行します。
証明書は、その ID を公開鍵に結び付けます。
証明書のエンコーディング、パス構築、およびローカルのトラストアンカーについては、 X.509 証明書および 暗号学的トラストストアを参照してください。
コメント
GitHub で閲覧・コメントする(投稿にはログインが必要です)