SSL/TLSはインターネット上で安全にデータをやり取りするための暗号化技術です。その中でもハンドシェイク(握手)は、通信を開始する際に安全な接続を確立する重要なステップです。本記事では、SSL/TLSハンドシェイクで何を合意しているのか、具体的な内容をわかりやすく解説します。
ハンドシェイクの目的
SSL/TLSのハンドシェイクの目的は、クライアントとサーバー間で安全に通信するための条件を決定し、暗号化された通信を行えるようにすることです。主に次の3点が重要です。
- 暗号化方式の合意
- 認証と証明書の確認
- セッションキーの生成と共有
この3つを事前に合意することで、安全な通信路が確立されます。
使用する暗号化方式の合意
クライアントとサーバーは、使用可能な暗号アルゴリズム(暗号スイート)を交換し、どの方式で通信するかを決定します。暗号スイートには、対称鍵暗号、非対称鍵暗号、ハッシュ関数などが含まれます。
実例として、クライアントが「AES256-GCM」と「ChaCha20-Poly1305」を提示し、サーバーがAES256-GCMを選択する、といった形で合意されます。
認証と証明書の確認
サーバーは自分の正当性を証明するため、証明書をクライアントに送信します。クライアントは証明書の署名や有効期限を検証し、サーバーが信頼できる相手であることを確認します。
この過程により、中間者攻撃などを防ぎ、安全な相手との通信であることを保証できます。
セッションキーの生成と共有
安全に通信するための共通鍵(セッションキー)を、クライアントとサーバーが安全に共有します。これには公開鍵暗号方式が使われ、第三者に漏れないように暗号化されて送信されます。
このセッションキーにより、以降の通信は対称鍵暗号で効率的に暗号化されます。
まとめ: ハンドシェイクで合意する内容
SSL/TLSハンドシェイクでは、以下の内容をクライアントとサーバーが合意しています。
- どの暗号方式で通信するか
- サーバーの認証情報(証明書)の確認
- 安全なセッションキーの生成と共有
これらにより、インターネット上で安全な暗号化通信が可能となります。


コメント