TLSで認証局の公開鍵を使うのはどの場面かを整理する
情報セキュリティマネジメント試験 令和6年度 問6 / セキュリティ › 情報セキュリティ
過去問にチャレンジ
A社のWebサーバは,サーバ証明書を使ってTLS通信を行っている。PCからA社のWebサーバへのTLSを用いたアクセスにおいて,当該PCがサーバ証明書を入手した後に,認証局の公開鍵を利用して行う動作はどれか。
- ア
暗号化通信に利用する共通鍵を,認証局の公開鍵を使って復号する。
- イ
暗号化通信に利用する共通鍵を生成し,認証局の公開鍵を使って暗号化する。
- ウ
サーバ証明書の正当性を,認証局の公開鍵を使って検証する。
- エ
利用者が入力して送付する秘匿データを,認証局の公開鍵を使って暗号化する。
会話形式の解説
講師今回はTLS通信の問題です。PCがサーバ証明書を受け取ったあと、認証局の公開鍵を何に使うかが問われています。注目してほしいのは「誰の公開鍵か」という点です。
受験者公開鍵は暗号化に使うものだと覚えていたので、共通鍵や秘匿データを暗号化する選択肢が気になりました。でも、認証局の公開鍵というところが少し引っかかります。
講師その引っかかりは大事です。まず、サーバ証明書の中身を思い出しましょう。証明書にはサーバの公開鍵などの情報が載っていて、そこに認証局が署名を付けています。
受験者署名ということは、認証局の公開鍵はその署名を確かめるために使う、ということですか。
講師そのとおりです。認証局の公開鍵で署名を検証して成功すれば、その証明書は当該認証局が発行したもので、改ざんもされていないと確認できます。なので「サーバ証明書の正当性を検証する」が正解です。これで、その証明書と、そこに載っているサーバの公開鍵を信頼できるようになります。
受験者共通鍵を作って認証局の公開鍵で暗号化する、という選択肢はなぜだめなのでしょうか。手順としてはありそうに見えます。
講師公開鍵で暗号化したものを復号できるのは、対応する秘密鍵を持つ側だけです。認証局の公開鍵で暗号化しても、通信相手のサーバは認証局の秘密鍵を持っていないので復号できません。共通鍵はPCとサーバの間の鍵交換で共有するもので、認証局は関わりません。
受験者同じ理由で、共通鍵を認証局の公開鍵で復号するという選択肢も違うのですね。公開鍵では、それで暗号化されたものを復号できないはずです。
講師はい。認証局の公開鍵で確かめられるのは、証明書に付いた認証局の署名だけです。共通鍵の復号には使いません。
受験者利用者が入力した秘匿データを暗号化する選択肢も、サーバが復号できなくなるので誤り、という理解でいいですか。
講師それで合っています。秘匿データは、鍵交換で共有した共通鍵、つまりその通信のためだけのセッション鍵で暗号化して送ります。認証局の公開鍵で暗号化すると、受け取ったサーバ側で復号できません。
受験者まとめると、認証局の公開鍵は証明書の署名を検証するためのもので、通信データの暗号化には共通鍵を使う、ということですね。
講師そうです。よくある引っかけは、「公開鍵」と聞いただけで暗号化の選択肢を選んでしまうことです。誰の公開鍵が何に使われるのかを確認する癖をつけましょう。補足すると、ブラウザやOSには信頼する認証局の証明書があらかじめ組み込まれていて、それを使って検証します。実際の検証では、署名のほかに有効期限やドメイン名なども確認します。
まとめ
TLS通信でPCがサーバ証明書を受け取ったあと、認証局の公開鍵は証明書に付いた認証局の署名を検証するために使います。検証に成功すれば、その証明書は当該認証局が発行したもので改ざんされていないと確認でき、証明書と、そこに載っているサーバの公開鍵を信頼できます。通信データや秘匿データは、PCとサーバの間の鍵交換で共有した共通鍵で暗号化し、認証局の公開鍵は使いません。認証局の公開鍵で暗号化してもサーバは復号できないため、暗号化・復号に使うという選択肢は誤りです。
解答・解説
正解はウです
この問題のテーマ
TLS通信でPCがサーバ証明書を受け取ったあと、認証局の公開鍵を何に使うのかを問う問題です。公開鍵がどんな役割を持つのか(署名の検証か、暗号化か)を区別できるかがポイントです。
解き方の考え方
まず、サーバ証明書が何でできているかを思い出します。証明書にはサーバの公開鍵などの情報が載っており、そこに認証局が署名を付けています。認証局の公開鍵は、この署名が本物かどうかを確かめるための鍵です。いっぽう、通信データや共通鍵の暗号化はPCとサーバの間の話で、認証局はそこに関わりません。この二つを分けて考えると、「証明書の正当性を検証する」という選択肢だけが残ります。
選択肢ごとの解説
- ×ア 暗号化通信に利用する共通鍵を,認証局の公開鍵を使って復号する。共通鍵を認証局の公開鍵で復号する、という説明は誤りです。認証局の公開鍵で確かめられるのは、証明書に付いた認証局の署名だけで、共通鍵の復号には使いません。そもそも公開鍵で暗号化されたものを復号できるのは、対応する秘密鍵を持つ側です。
- ×イ 暗号化通信に利用する共通鍵を生成し,認証局の公開鍵を使って暗号化する。共通鍵を作って認証局の公開鍵で暗号化する、という説明は誤りです。共通鍵はPCとサーバの間の鍵交換で共有するもので、認証局の公開鍵では暗号化しません。仮に認証局の公開鍵で暗号化して送っても、通信相手のサーバは対応する秘密鍵を持っていないので復号できません。
- ○ウ サーバ証明書の正当性を,認証局の公開鍵を使って検証する。サーバ証明書の正当性を認証局の公開鍵で検証する、という説明が正解です。証明書に付いた認証局の署名を公開鍵で検証し、成功すれば、その証明書は当該認証局が発行したもので改ざんもされていないと確認できます。これによって、接続先のサーバが本物であると信頼できるようになります。
- ×エ 利用者が入力して送付する秘匿データを,認証局の公開鍵を使って暗号化する。利用者が入力した秘匿データを認証局の公開鍵で暗号化する、という説明は誤りです。秘匿データは、鍵交換で共有した共通鍵(セッション鍵)で暗号化して送ります。認証局の公開鍵で暗号化すると、データを受け取るサーバ側で復号できなくなります。
補足
よくある引っかけは、「公開鍵」と聞いただけで暗号化の選択肢を選んでしまうことです。誰の公開鍵が何に使われるのかを確認する癖をつけましょう。ブラウザやOSには、信頼する認証局の証明書があらかじめ組み込まれていて、それを使って検証します。実際の検証では、署名のほかに有効期限やドメイン名なども確認します。
POINT
- サーバ証明書は、サーバの公開鍵などの情報に認証局が署名したものです。
- 認証局の公開鍵は、証明書に付いた署名を検証するために使います。
- 署名の検証に成功すれば、その証明書が当該認証局の発行したもので、改ざんされていないことを確認できます。
- TLSの通信データは、鍵交換で共有した共通鍵で暗号化します。認証局の公開鍵は暗号化には使いません。
