TLS ハンドシェイクの説明
最も簡単に言うと、TLS ハンドシェイクは物理的な握手に似ているもので、サーバー同士で行われます。つまり、2つのサーバー間で行われる安全な「自己紹介」であり、安全に通信できるようにする仕組みです。Web を閲覧する際、HTTPS を使用しているあらゆる Web サイトは、TLS ハンドシェイクを用いて、サイトとの接続を保護し、あらゆる通信 (フォーム入力やログインなど) がプライベートかつ安全であることを確保しています。
TLS ハンドシェイクをよりよく理解するために、まずはそれが動作する仕組みである TLS について解説します。
TLS とは何か
トランスポート・レイヤー・セキュリティ (TLS) はインターネット・エンジニアリング・タスク・フォース (IETF) による標準プロトコルで、インターネットを介した通信において認証を行い、プライバシーとデータの完全性を確保します。
TLS は、2つのシステム間の通信を暗号化することで機能します。接続した相手/システムの正当性と身元を評価するため非常に重要であり、接続先が主張どおりの相手であることを確認し、データの完全性が維持されているかどうかを把握でき、さらに暗号化によって一定レベルの機密性を保持できます。
TLS はさまざまなアルゴリズムやメソッドを使用してこれらの目的を達成します。TLS は現在、最も広く普及・採用されているセキュリティプロトコルといえます。特に、Web ブラウザや、データのやり取りを安全にハイパーテキスト・トランスファー・プロトコル・セキュア (HTTPS) 経由で行う必要があるその他のアプリケーションにおいて TLS は最適です。また、TLS によってメールやその他のプロトコルを保護することもできます。
TLS の重要な要素の1つが TLS ハンドシェイクであり、これにはインターネット上で通信する2つの「当事者」(サーバー) の身元とセキュリティを検証するプロセスが含まれます。
TLS の役割
TLS プロトコルには、完全性の確認、認証、暗号化の3つの役割があります。
完全性 : TLS は、ネットワーク上で送信されるデータが侵害されていないことを確認します。
認証 : TLS は、通信相手の身元を検証します。
暗号化 : TLS は、サードパーティから転送されたデータを解読できないようにします。
SSL/TLS ハンドシェイクの仕組み
インターネットを閲覧する際、ユーザーは気づかないうちに TLS ハンドシェイクに依存しています。HTTPS の Web サイトにアクセスすると、クライアント (あなた + あなた側のサーバー) と Web サイト (およびそのサーバー) の間で TLS ハンドシェイクのプロセスが行われます。
TLS ハンドシェイクプロトコルは、セッション (Web ページへのアクセス) の確立と保護に必要な認証と鍵の交換を行います。これは複数ステップからなるプロセスで、通常はクライアントとサーバーが「hello」メッセージを送信し、鍵を交換し、メッセージを暗号化して、最後に「finish」メッセージをやり取りします。
TLS ハンドシェイクプロトコルによって、データを交換する前にクライアントとサーバーが互いを認証し合い、鍵交換が行われます。
このプロセスは、次のような手順になります。
クライアントがサーバーに接続リクエストを送信し、サーバーがそれを確認します。
次にクライアントがサーバーへ「hello」メッセージを送信します。この「hello」メッセージには、リクエスト元 (クライアント) に関する重要な情報が含まれており、クライアントがサーバーに自己紹介する役割を果たします。
サーバーは自身の「hello」メッセージと SSL 証明書を返します。この証明書には、サーバーの暗号スイートと、サーバーが生成した「ランダム文字列」が含まれます。これはサーバーがクライアントに提供するコードのようなものと考えてください。
次にクライアントは、サーバーから送られた「コード」(証明書 + 暗号情報) を検証し、(1) ドメイン名が一致していること、(2) 信頼された認証局 (CA) によって証明書が署名されていることを確認します。これにより、サーバーが正当 (かつ安全) であることが検証されます。
サーバーの正当性が確認されると、クライアントは自身の証明書を共有します。双方がこれらの手順を完了すると、後に両者間でやり取りされるデータを暗号化するための共有「シークレット」(パスワードのようなもの) が生成されます。
クライアントとサーバーは、この共有シークレットを使用して同一のセッション「キー」を生成し、セッション中にやり取りされるデータを相互に暗号化および復号できるようにします。

TLS ハンドシェイクが重要な理由
TLS ハンドシェイクは、2つのサーバー間で安全な通信とデータのやり取りを可能にする上で、極めて重要な役割を果たします。これはインターネットにおける不可欠な門番として機能し、Web を利用するすべての当事者の資格情報を検証し、互いの身元を確認できるようにします。この重要なセキュリティ機能がなければ、Web の閲覧はより安全性の低いものとなり、個人およびビジネスの両面でリスクにつながる可能性があります。