マナビング情報セキュリティマネジメント

SSHの公開鍵認証でサーバとクライアントが使う鍵を整理する

情報セキュリティマネジメント試験 平成31年度春期 午前 問29 / セキュリティ › セキュリティ実装技術

過去問にチャレンジ

平成31年度春期 午前 問29

利用者PC上のSSHクライアントからサーバに公開鍵認証方式でSSH接続するとき,利用者のログイン認証時にサーバが使用する鍵とSSHクライアントが使用する鍵の組みはどれか。

  1. ア

    サーバに登録されたSSHクライアントの公開鍵と,利用者PC上のSSHクライアントの公開鍵

  2. イ

    サーバに登録されたSSHクライアントの公開鍵と,利用者PC上のSSHクライアントの秘密鍵

  3. ウ

    サーバに登録されたSSHクライアントの秘密鍵と,利用者PC上のSSHクライアントの公開鍵

  4. エ

    サーバに登録されたSSHクライアントの秘密鍵と,利用者PC上のSSHクライアントの秘密鍵

会話形式の解説

講師講師
今回はSSHの公開鍵認証です。SSHは、離れたサーバに安全にログインするための仕組みです。ログインするときにサーバ側と利用者PC側がそれぞれどの鍵を使うのか、という点を見ていきます。最初に「鍵の持ち主は誰か」を押さえるのがポイントです。
受験者受験者
選択肢には「サーバに登録されたSSHクライアントの鍵」と書かれていますよね。サーバの鍵ではなく、クライアントの鍵なんですね。
講師講師
そこに気づけたのは大事です。鍵の持ち主は利用者、つまりSSHクライアントです。公開鍵認証では、利用者の公開鍵を前もってサーバに登録しておき、秘密鍵は利用者PCにだけ置きます。
受験者受験者
秘密鍵は本人だけが持つという原則ですね。そうすると、サーバに秘密鍵があるという組みはおかしいことになりますか。
講師講師
そうです。「サーバに秘密鍵、PCに公開鍵」という組みは、署名する側と検証する側の鍵が逆になっています。利用者の秘密鍵はサーバに登録する必要がありませんし、利用者以外が持つ構成は安全面から見ても成り立ちません。「両方とも秘密鍵」の組みも、秘密鍵を他者と共有することになるので、なりすましの危険を招きます。
受験者受験者
では「両方とも公開鍵」はどうですか。サーバに登録した公開鍵とPCの公開鍵を照らし合わせれば、確認できそうな気もします。
講師講師
そこは迷いやすいところです。ただ、公開鍵は誰でも手に入れられる鍵です。公開鍵を持っていることを示しても、本人の証明にはなりません。本人だと示すには、本人しか持っていない秘密鍵を使う必要があります。
受験者受験者
そうすると、ログインのときはクライアントが秘密鍵で何かを作って、サーバがそれを確かめるという流れですか。
講師講師
そのとおりです。クライアントは秘密鍵で署名を作り、サーバは登録してある公開鍵でその署名を検証します。秘密鍵は利用者しか持っていないので、検証に成功すれば本人だと確認できます。ディジタル署名と同じ考え方です。
受験者受験者
ということは「サーバは登録されたクライアントの公開鍵、PCはクライアントの秘密鍵」の組みが正解ですね。暗号化では受信者の公開鍵を使うと覚えていたので、それと混ざっていました。
講師講師
その使い分けは整理しておくとよいです。データを暗号化して送るときは受信者の公開鍵で暗号化し、本人確認では送信者の秘密鍵を使います。もう一つ注意したいのがホスト鍵です。SSHにはサーバ自身のホスト鍵もありますが、これはサーバが本物かどうかを確かめるための鍵です。利用者の認証に使う鍵とは別物なので、問題文の「サーバが使用する鍵」をホスト鍵と取り違えないようにしてください。
受験者受験者
利用者の認証では、利用者の鍵ペアだけを考えればよいということですね。持ち主を先に確認する習慣をつけます。

まとめ

SSHの公開鍵認証では、利用者の公開鍵を前もってサーバに登録し、秘密鍵は利用者PCにだけ置きます。ログインのときは、クライアントが秘密鍵で署名を作り、サーバが登録済みの公開鍵でその署名を検証します。そのため、サーバ側は公開鍵、PC側は秘密鍵という組みが正解です。公開鍵は誰でも入手できるので、公開鍵だけでは本人確認になりません。また、秘密鍵を他者が持つ構成は安全面から成り立ちません。サーバの正当性を確かめるホスト鍵や、暗号化では受信者の公開鍵を使うことと混同しないように注意が必要です。

解答・解説

正解はイです

この問題のテーマ

SSHの公開鍵認証で利用者がログインするとき、サーバとクライアントがそれぞれどの鍵を使うかを問う問題です。公開鍵暗号の「秘密鍵は本人だけが持つ」という原則を理解しているかがポイントになります。

解き方の考え方

まず、鍵の持ち主は利用者(SSHクライアント)だと押さえます。公開鍵認証では、利用者の公開鍵を前もってサーバに登録し、秘密鍵は利用者PCにだけ置きます。ログインのときは、クライアントが秘密鍵で署名を作って本人であることを示し、サーバは登録してある公開鍵でその署名を確かめます。したがって「サーバ側は公開鍵、PC側は秘密鍵」という組みを選べば正解です。

選択肢ごとの解説

  1. ×ア  サーバに登録されたSSHクライアントの公開鍵と,利用者PC上のSSHクライアントの公開鍵
    アの「サーバもPCも公開鍵を使う」という組みでは、PC側が秘密鍵を持っていることを示す署名を作れません。公開鍵は誰でも手に入れられる鍵なので、それを使っただけでは本人確認になりません。
  2. ○イ  サーバに登録されたSSHクライアントの公開鍵と,利用者PC上のSSHクライアントの秘密鍵
    イの「サーバは登録されたクライアントの公開鍵、PCはクライアントの秘密鍵」という組みが正解です。クライアントが秘密鍵で署名し、サーバが事前に登録しておいた公開鍵でその署名を検証します。秘密鍵は利用者しか持っていないので、検証に成功すれば本人だと確認できます。
  3. ×ウ  サーバに登録されたSSHクライアントの秘密鍵と,利用者PC上のSSHクライアントの公開鍵
    ウの「サーバに秘密鍵、PCに公開鍵」という組みは、署名する側と検証する側の鍵が逆になっています。そもそも利用者の秘密鍵はサーバに登録する必要がなく、利用者以外が持つ構成は安全面からも成り立ちません。
  4. ×エ  サーバに登録されたSSHクライアントの秘密鍵と,利用者PC上のSSHクライアントの秘密鍵
    エの「サーバもPCも秘密鍵を使う」という組みでは、公開鍵で検証するという公開鍵認証の仕組みが成り立ちません。しかも秘密鍵を他者と共有することになり、なりすましの危険を招きます。

補足

SSHにはサーバのホスト鍵もありますが、これはサーバが本物かどうかを確かめるための鍵で、利用者の認証に使う鍵とは別物です。問題文の「サーバが使用する鍵」をホスト鍵と取り違えないよう注意してください。また、データを暗号化して送る用途では受信者の公開鍵で暗号化しますが、本人確認では送信者の秘密鍵を使います。この二つの使い分けもあわせて整理しておくと、似た問題に対応しやすくなります。

POINT

  • SSHの公開鍵認証では、利用者の公開鍵をあらかじめサーバに登録しておきます。
  • 利用者の秘密鍵は利用者PCだけに置き、サーバには渡しません。
  • ログイン時は、クライアントが秘密鍵で署名し、サーバが登録済みの公開鍵でその署名を検証します。
  • この仕組みはディジタル署名と同じく、秘密鍵を持っている本人であることを示して、なりすましを防ぐためのものです。

※出典:平成31年度春期 情報セキュリティマネジメント試験 午前 問29