答え:ハンドシェイクしてまず相手を認証します
TLSでは、暗号化通信を始める前に、クライアントとサーバー▼間で通信相手の認証や、暗号化通信に使う秘密情報の共有、使用する暗号アルゴリズムの決定などを実施する手順が決まっている。これらのやり取りは、ハンドシェイクと呼ばれる(図4-1)。
証明書でサーバーを認証
クライアントがサーバーにアクセスすると(図4-1(1))、サーバーからサーバー証明書▼が送られてくる(同(2))。
Q1でも説明したように、サーバー証明書は、認証局が発行するデジタルデータ。サーバー証明書には、そのサーバーの公開鍵と、認証局による署名が含まれる。
ここでの署名とは、サーバー証明書に記載されたデータのハッシュ値を、認証局の秘密鍵で暗号化したもの。サーバー証明書は、「どの認証局が発行したのか」が重要になる。サーバー証明書は書式が決まっており▼、作成自体は誰でもできるからだ。そこで署名を使って確認する。
署名は認証局の公開鍵でのみ復号できるので、受け取った側で記載データのハッシュ値と比較して証明書が本物か確認できる。
OSベンダーなどが「信頼できる」と判断した主要な認証局の公開鍵(サーバー証明書)は、OSやWebブラウザーにあらかじめインストールされている。主要な認証局が発行したサーバー証明書であれば、インストール済みの公開鍵が署名の確認に使えるはずだ。
▼クライアントとサーバー
このケースでは、クライアントにはWebブラウザー、サーバーにはWebサーバーなどを想定している。
このケースでは、クライアントにはWebブラウザー、サーバーにはWebサーバーなどを想定している。
▼サーバー証明書
サーバー証明書の構造などは、後の回で詳述する。
サーバー証明書の構造などは、後の回で詳述する。
▼書式が決まっており
X.509 v3という書式に従う。後の回で詳述する。
X.509 v3という書式に従う。後の回で詳述する。