ハンドシェイク

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

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

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

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

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

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

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

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

さぁ、お待ちかね

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

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

はい、おしまい

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

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

もう一回!

やめっ!

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

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

SSL/TLSバージョン、ワン太と使える暗号アルゴリズムのリストを送ります

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

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

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

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

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

ピーちゃんが送ってくれた中から、最高のSSL/TLSバージョンと暗号アルゴリズムを選びます

そして、ボクが誰かわかるようにボクの公開鍵のはいっている証明書と一緒に返信します

ステップ3: たてに手をふる、これはClient Key Exchangeです

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

後でユニークキーを生成する際にお互いに使えるように、「プリマスターキー」を作ります

そのプレマスターキーをワン太の公開鍵で暗号化してピーちゃんに送ります

ステップ4: 手首をくるくるひねります、これはChange Cipher Specです

自分の秘密鍵をプリマスターキーを復号するのに使います

これまで、二人の全ての通信はオープンで、メッセージは全て安全でないままでした

二人は、誰にも盗聴できないよう公開鍵と秘密鍵をプリマスターキーを暗号化するのに使います

ここで二人は、共通鍵として使用する同じ「共有秘密」を生成します
そしてピーちゃんはテストで送ります
ワン太は返信します
ステップ5: こちょこちょ。これで、全てが保護されます
これで、ピーちゃんとワン太の間を行き来する全てのデータは、残りのセッションでも保護されます

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

簡単でしょ?

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

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

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

次につづく