平成26年 午後2 問1 証明書を用いた認証

かたくりこさん  
(No.1)
すみません、過去問演習で理解できない部分があるため質問させていただけませんか?

設問3(2)で「サーバ証明書2を検証するのに必要な情報」とあり、
解答が「プロキシサーバのルート証明書」となっています。

私の認識ではサーバの認証というのは、認証局(CA)とサーバとクライアントの3つが出て来ます。
しかし、今回の問題ではサーバ(プロキシサーバ)とクライアント(PC)しか出てきていません。
今回の場合のCAというのは何になるのでしょうか...?

特に、PCがサーバ証明書2を検証するときにCAの公開鍵が必要になると思うのですが
それがどこから入手できるかがわからないです。

どなたか助言をいただけないでしょうか?


平成26年 午後2 の過去問です。
https://www.ipa.go.jp/shiken/mondai-kaiotu/ug65p90000000ye5-att/2014h26a_nw_pm2_qs.pdf
2024.02.15 22:22
nyanderfulさん 
(No.2)
・CAとは何のことを指しているのか
このケースでは、CAは「サーバ証明書を発行している機関」、つまりプロキシサーバそのものです。
・CAの公開鍵はどこから得るのか
CA=プロキシサーバという関係なので、プロキシサーバのサーバ証明書から得ます。(公開鍵証明書には、主体者の公開鍵が埋め込まれています)

サーバー証明書の中身を理解すれば分かりやすくなると思うので補足しますが、サーバー証明書は
・発行者=証明書を発行する機関(=CA)
・主体者=証明書の発行を依頼している主体(=一般的なサーバー等)
の2つのセクションから成ります。一般向けに公開するサーバについては、証明書の発行を専門の機関(認証局)に依頼します。結果、その認証局の名前が発行者になるとともに、認証局の持つ秘密鍵でディジタル署名が作成されます。。
では今回プロキシサーバが使う証明書(ルート証明書)はどうなっているかというと、
・発行者=プロキシサーバ
・主体者=プロキシサーバ
・ディジタル署名を作る秘密鍵=プロキシサーバの秘密鍵
です。したがって、CAはプロキシサーバそのものであると考えれば良いかと思います。

大まかでかなり砕いた説明なので、また疑問点があればご質問いただければと思います。
2024.02.16 08:55
かたくりこさん  
(No.3)
回答ありがとうございます!
前回に続き答えていただけて嬉しいです!

色々考えているうちに混乱してきたのですが、いくつか確認させて頂けますでしょうか?

今回、「サーバ証明書2」と「プロキシサーバーのルート証明書」の2つが出てきています。

・「サーバ証明書2」 をPCへ送られる際にプロキシサーバーが署名を付与する必要があり、その署名を復号するためにプロキシサーバーの公開鍵が必要である。

・プロキシサーバーの公開鍵がすり替えられていないかを確かめるために「プロキシサーバーのルート証明書」が必要である。

という認識で合ってますでしょうか?
また、PC側の公開鍵の認証方法として、

・「主体者(プロキシサーバー)のルート証明書」の中にある発行者(プロキシサーバー)の署名を発行者(プロキシサーバー)の公開鍵で復号している。

という認識であってますでしょうか?

重ね重ね、お手数をおかけしますが助言いただけると助かります。
2024.02.16 23:37
nyanderfulさん 
(No.4)
・サーバ証明書2がPCへ送られる際にプロキシサーバーが署名を付与する必要があり、その署名を復号するためにプロキシサーバーの公開鍵が必要である
・プロキシサーバーの公開鍵がすり替えられていないかを確かめるためにプロキシサーバーのルート証明書が必要である

→正しいです。

・主体者(プロキシサーバー)のルート証明書の中にある発行者(プロキシサーバー)の署名を発行者(プロキシサーバー)の公開鍵で復号している。

→厳密に(一般的に)言うと、ルート証明書は認証局(発行者)が持つ自己署名証明書なので、「発行者(プロキシサーバー)のルート証明書の中にある発行者(プロキシサーバー)の署名を発行者(プロキシサーバー)の公開鍵で復号している」という表現になります。とはいえ、結局この問題の場合は同じになります。
2024.02.18 14:42
かたくりこさん  
(No.5)
返信ありがとうございます!
とても勉強になります。

> 厳密に(一般的に)言うと、ルート証明書は認証局(発行者)が持つ自己署名証明書なので、「発行者(プロキシサーバー)のルート証明書の中にある発行者(プロキシサーバー)の署名を発行者(プロキシサーバー)の公開鍵で復号している」という表現になります。とはいえ、結局この問題の場合は同じになります。

補足ありがとうございます。
この部分を読んでふと思ったのですが、もしかして
ルート証明書は発行者を認証する
サーバ証明書は主体者を認証する
ものなのでしょうか?
2024.02.18 22:22
nyanderfulさん 
(No.6)
サーバ証明書は、それに記載している主体者だけを認証するものと考えて間違い無いです。
ルート証明書はというと、直接的にはそれに記載している主体者と発行者を同時に認証します。かつ結果的に中間にいる認証局(この場合はいませんが)とサーバの証明書全体の信頼性を担保するものになります。

また、蛇足かもしれませんが、本設問においてはプロキシサーバの証明2とプロキシサーバの証明書は完全に同一のものです。サーバは1枚(?)の証明書だけをクライアントに渡し、それがサーバ証明書としてもルート証明書としても機能することになります。
2024.02.19 06:07
納豆のたれさん 
(No.7)
横から失礼します。
この問題では、証明書2は証明書1のコモンネームをコピーすることになっています。
アクセス先が変われば証明書1が変わり、証明書2も再生成されるはずです。
つまり証明書2は動的に変化するものです。
一方、プロキシサーバのルート証明書は事前にPCに設定されているものなので、静的な証明書です。
だから、証明書2とルート証明書は別物でないと辻褄が合いません。
また、ルート証明書(中間証明書も同じ)にはCAフラグが立っているはずです。
もし証明書2がルート証明書と同じものだとすれば、エンドエンティティ証明書にCAフラグが立っていることになるので、ほとんどのブラウザは「証明書が信用できないけどどうしますか」というようなメッセージを表示すると思います。
2024.02.19 17:34
かたくりこさん  
(No.8)
たくさんのコメントをいただきありがとうございます。

「ルート証明書はサーバの証明書全体の信頼性を担保する」こと
「サーバ証明書2はルート証明書とは異なる」こと
把握しました。ありがとうございます。

認証のおおまかな流れとしては

1. プロキシサーバからPCへサーバ証明書2が送られてくる。
2. サーバ証明書2からより発行者がプロキシサーバであるとわかる。
3. 発行者の公開鍵認証のためにルート証明書を用いて検証する
(ルート証明書にある発行者の秘密鍵で作られた署名を発行者の公開鍵(と思われるもの)で復号して突き合わせる)
4. サーバ証明書2の署名を発行者の公開鍵を用いて検証する。
(サーバ証明書2にある発行者の秘密鍵で作られた署名を発行者の公開鍵で復号して突き合わせる)
5. 検証が完了したことにより、サーバ証明書2に含まれるWebサーバの公開鍵が正しいものとわかる。

といった感じなのでしょうか..?
2024.02.19 23:33
納豆のたれさん 
(No.9)
私なりにまとめると....

1.プロキシサーバからPCへサーバ証明書2が送られてくる。
2.証明書2のフィールドからハッシュ値(1)を計算する。
  ※計算対象のフィールドは、発行先の組織名、コモンネーム、公開鍵など
    規格で決まっている
  ※ハッシュ値を計算するためのハッシュアルゴリズムは証明書2に書いてある
3.証明書2の発行者名を基にPCの証明書ストアから適切なルート証明書を選択する。
4.選択したルート証明書の公開鍵を使って証明書2の署名を復号する。
  署名を復号すると発行時に計算されたハッシュ値(2)が得られる。
  ※署名アルゴリズムは証明書2に書いてある
5.自前で計算したハッシュ値(1)と署名から得られたハッシュ値(2)を比較し、
  一致したら証明書2は改ざんされていないと判断する。
2024.02.20 22:29
かたくりこさん  
(No.10)
ありがとうございます!

私の中で、認証のイメージがかなり明確なものになりました!
2024.02.21 22:11

返信投稿用フォーム

スパム防止のためにスレッド作成日から30日経過したスレッドへの投稿はできません。

その他のスレッド


Pagetop