ハンドシェイク

このマンガを読もうとすると、ブラウザには緑のカギがアドレスバーに表示されます

なぜそうなったのでしょうか?

あなたのブラウザは、このマンガが置いてある我々のサーバーと通信して、両方が、メッセージを送るために安全な接続がはじまります

でも最初に、どのように安全に通信するか合意する必要があります

もし、ネゴシエーションが失敗した場合、あなたのブラウザは、エラーや注意を表示することにより、それを知らせます
合意できた場合、あなたのブラウザはアドレスバーに緑のカギアイコンを無事表示します

このブラウザとサーバーとの間のネゴシエーションのプロセスを「ハンドシェイク」と呼びます

それはとても速くに行われます。どのような仕組みか説明しましょう

ピー子はあなたのブラウザです
ワン太は我々のサーバーです

さぁ、お待ちかね

準備はいい?スローモーションで「ハンドシェイク」はこんな感じ

左手たたいて
右手をたたいて
たてに振って
手首をひねって
こちょこちょして

はい、おしまい

もう一回、はやくやってみよう

左手たたいて、右手たたいて、たてに振って、手首ひねって、こちょこちょして

もう一回!

やめっ!

一つ一つわけて、順に説明しましょう

ステップ1: 左手たたく、これはClient Helloと言います

私は Compugter に、利用可能な SSL/TLS のバージョンと暗号アルゴリズムの一覧を送ります。現在は TLS 1.3 を優先するので、key_share も送ります。

暗号アルゴリズムのリストのおしゃれな言葉は「暗号スイート」と言います

だから、テーブルでもプロのような声が出せます

SSLとTLSプロトコルは時間とともに進化してきましたが、これについては近いうちに詳しく説明します

そして、ワン太からの返事を待つことにします

ステップ2: 右手をたたく、これはServer Helloと言います

私は TLS 1.3 と暗号スイートを選び、key_share も返します。ここから先は、TLS 1.3 がハンドシェイクの残りを暗号化します。

その直後に証明書(公開鍵を含む)を送信し、相手が私を検証できるようにします。

ステップ3:バーティカル・シャカ。別名 Key Share。

本当にワン太かどうか証明書を確認します

先に双方が key share を送っているので、同じ秘密を導出でき、秘匿性が確立します。

ステップ4:シャカの水平ローテーション。別名 Finished メッセージ。

ServerHello(ステップ2)以降、ハンドシェイクは暗号化されます。

両者は Finished メッセージを交換して同じ秘密を導出したことを証明し、1 往復でセッション鍵の準備が整います。

ステップ5: こちょこちょ。これで、全てが保護されます
これで、ピーちゃんとワン太の間を行き来する全てのデータは、残りのセッションでも保護されます

パスワード、クレジットカードの詳細、全てです

簡単でしょ?

今度、あなたがHTTPSで安全にウェブサイトに接続する時には、ブラウザをこちょこちょしてあげてください。だって、あなたは秘密のハンドシェイクを知ってるんですから

次回、HTTPSのしくみは、、、

HTTPS、SSL、TLS、おおっ! ランチで略語のスープを食べたばかりです。これらはどういう意味なのでしょうか? 同じものなんでしょうか?

次につづく