利用者のログイン認証時にサーバが使用する鍵とSSHクライアントが使用する鍵の組み|情報セキュリティマネジメント 平成31年 春期午前試験 問29

出典:平成31年春期 午前 問29 分野:セキュリティ / セキュリティ実装技術
利用者PC上のSSHクライアントからサーバに公開鍵認証方式でSSH接続するとき,利用者のログイン認証時にサーバが使用する鍵とSSHクライアントが使用する鍵の組みはどれか。
  • ア:サーバに登録されたSSHクライアントの公開鍵と,利用者PC上のSSHクライアントの公開鍵
  • イ:サーバに登録されたSSHクライアントの公開鍵と,利用者PC上のSSHクライアントの秘密鍵
  • ウ:サーバに登録されたSSHクライアントの秘密鍵と,利用者PC上のSSHクライアントの公開鍵
  • エ:サーバに登録されたSSHクライアントの秘密鍵と,利用者PC上のSSHクライアントの秘密鍵
解説

SSH(Secure Shell)は、遠隔地にあるコンピュータとの間で、安全にリモートログインやコマンド実行などを行うためのプロトコルです。SSHにはパスワード認証や公開鍵認証などがあり、公開鍵認証では、クライアント側が秘密鍵を保持し、対応する公開鍵をあらかじめサーバに登録しておきます。

公開鍵認証方式による利用者認証の流れは、概ね次のとおりです。

  1. 事前に、利用者PCのSSHクライアントで公開鍵と秘密鍵のペアを用意し、公開鍵をサーバに登録しておきます。
  2. SSHクライアントがサーバに接続し、利用者名などの認証情報を送ります。
  3. SSHクライアントは、自身が保持する秘密鍵を使って認証に必要なデータにデジタル署名を行います。
  4. サーバは、あらかじめ登録されているSSHクライアントの公開鍵を使って、その署名を検証します。
  5. 署名の検証に成功すれば、クライアントが対応する秘密鍵を保持していることを確認でき、認証が成功します。

したがって、サーバが使用するのは登録済みのクライアントの公開鍵、SSHクライアントが使用するのは利用者PC上の秘密鍵です。本問では、が適切です。

なお、公開鍵認証を「サーバが乱数をクライアントの公開鍵で暗号化し、クライアントが秘密鍵で復号する」と説明する場合もありますが、実際のSSHの公開鍵認証では、基本的にクライアントが秘密鍵で署名し、サーバが公開鍵で検証する仕組みとして理解するのが正確です。

❌他選択肢が誤りの理由
ア:サーバに登録されたSSHクライアントの公開鍵と,利用者PC上のSSHクライアントの公開鍵
⇒サーバは登録済みの公開鍵を使って署名を検証しますが、SSHクライアント側は公開鍵ではなく秘密鍵を使って署名します。公開鍵だけでは、本人が対応する秘密鍵を保持していることを証明できません。
ウ:サーバに登録されたSSHクライアントの秘密鍵と,利用者PC上のSSHクライアントの公開鍵
⇒秘密鍵は利用者PC側で厳重に管理し、サーバには登録しません。サーバに登録するのは公開鍵であり、クライアントが使用するのは秘密鍵です。
エ:サーバに登録されたSSHクライアントの秘密鍵と,利用者PC上のSSHクライアントの秘密鍵
⇒秘密鍵をサーバに登録する方式ではありません。秘密鍵は利用者PCから外部に出さず、サーバには対応する公開鍵だけを登録します。
TSUNAGARU-ADVICE

まず押さえたいこと

SSHの公開鍵認証では、利用者PCのSSHクライアントが秘密鍵を保持し、サーバ側には対応する公開鍵を登録しておきます。ログイン時には、この鍵の組合せを使って利用者本人であることを確認します。

迷ったときの判断軸

秘密鍵は利用者側から外に出さず、公開鍵をサーバ側に置くと整理しましょう。サーバが公開鍵を使って、クライアントが対応する秘密鍵を持っていることを確認する仕組みです。公開鍵同士や秘密鍵同士を組み合わせて認証するわけではありません。

科目Bにつなげるために

科目Bでは、SSH接続の認証方式を見て、どこに秘密鍵を保管し、どこに公開鍵を登録するかを判断する場面につながります。秘密鍵の漏えいや不適切な共有は不正ログインにつながるため、秘密鍵の厳重な管理まで含めて考えましょう。