SSL/TLSハンドシェイクとは?握手で合意する内容と仕組みを解説

ネットワーク技術

SSL/TLSはインターネット上で安全にデータをやり取りするための暗号化技術です。その中でもハンドシェイク(握手)は、通信を開始する際に安全な接続を確立する重要なステップです。本記事では、SSL/TLSハンドシェイクで何を合意しているのか、具体的な内容をわかりやすく解説します。

ハンドシェイクの目的

SSL/TLSのハンドシェイクの目的は、クライアントとサーバー間で安全に通信するための条件を決定し、暗号化された通信を行えるようにすることです。主に次の3点が重要です。

  • 暗号化方式の合意
  • 認証と証明書の確認
  • セッションキーの生成と共有

この3つを事前に合意することで、安全な通信路が確立されます。

使用する暗号化方式の合意

クライアントとサーバーは、使用可能な暗号アルゴリズム(暗号スイート)を交換し、どの方式で通信するかを決定します。暗号スイートには、対称鍵暗号、非対称鍵暗号、ハッシュ関数などが含まれます。

実例として、クライアントが「AES256-GCM」と「ChaCha20-Poly1305」を提示し、サーバーがAES256-GCMを選択する、といった形で合意されます。

認証と証明書の確認

サーバーは自分の正当性を証明するため、証明書をクライアントに送信します。クライアントは証明書の署名や有効期限を検証し、サーバーが信頼できる相手であることを確認します。

この過程により、中間者攻撃などを防ぎ、安全な相手との通信であることを保証できます。

セッションキーの生成と共有

安全に通信するための共通鍵(セッションキー)を、クライアントとサーバーが安全に共有します。これには公開鍵暗号方式が使われ、第三者に漏れないように暗号化されて送信されます。

このセッションキーにより、以降の通信は対称鍵暗号で効率的に暗号化されます。

まとめ: ハンドシェイクで合意する内容

SSL/TLSハンドシェイクでは、以下の内容をクライアントとサーバーが合意しています。

  • どの暗号方式で通信するか
  • サーバーの認証情報(証明書)の確認
  • 安全なセッションキーの生成と共有

これらにより、インターネット上で安全な暗号化通信が可能となります。

コメント

タイトルとURLをコピーしました