なぜハンドシェイクはデータの読み込みより先に行われるのか
この一連の交渉は、ブラウザが実際のウェブページをリクエストするより前に行われるため、証明書の期限切れや対応していない暗号スイート、ネットワークの問題などでハンドシェイクが遅い、または失敗すると、サーバー自体は正常に動いていてもサイトが表示されないことがあります。ブラウザに表示される「この接続は保護されていません」といった警告は、ほとんどの場合ページの内容ではなくハンドシェイクの段階で起きた問題です。
1回のハンドシェイクに使われる公開鍵暗号と共通鍵暗号
ハンドシェイクでは実は2種類の暗号技術が異なる役割のために使われています。最初の秘密の値を誰にも盗聴されずに安全にやり取りするには、遅いが安全性の高い公開鍵暗号方式を使い、その後の実際のデータ転送には、そこで作られたセッション鍵を使った高速な共通鍵暗号方式を使います。通常のウェブセッションで扱う大量のデータには、共通鍵暗号の方がはるかに効率的だからです。
よくある質問
TLS 1.3はなぜTLS 1.2より往復回数が少ないのですか?
TLS 1.3は、クライアントが最初から特定の鍵交換方式を提案する形にハンドシェイクを簡略化し、サーバーがハンドシェイクを完了するために必要な情報をまとめて一度に返せるようにしたことで、往復2回だったものを1回で済ませられるようにしました。
ハンドシェイクが速くなると、実際にページの読み込み速度に体感できる違いはありますか?
はい、特にモバイル回線のような遅延の大きい接続では顕著です。1回の往復には数十〜数百ミリ秒かかることもあるため、ハンドシェイクを2回から1回(再接続時は0回)に減らすことは、安全なページの表示が始まるまでの時間を目に見えて短縮します。