web-dev-qa-db-ja.com

SSHサーバーのフィンガープリントは偽装できますか?

SSHサーバーに接続し、そのキーフィンガープリントを取得してすぐに切断した場合、SSHプロトコルは、サーバーが秘密鍵を持っていることを確認して、それをハンドシェイクに到達させますか?

つまり、この接続全体が、サーバーを装った誰かによって偽装された可能性がありますが、サーバーの秘密キーを所有していませんでしたか?

8
Belorn

いいえ、できません。使用中のキー交換メカニズムに応じて、サーバーのIDを証明するための(わずかに)異なるメカニズムがあります。これは RFC425 で定義されており、「明示的なサーバー認証」が必要です。 RSA( RFC 4432 )の場合、サーバーはクライアントから提供されたデータ(実際には複数の断片のハッシュ)に秘密鍵で署名し、クライアントに送り返します。この署名は、サーバーが秘密鍵を所有していることを証明します。これがなければ、SSHに対するMITM攻撃に対する保護はまったくありません。

14
David

クライアントとサーバーは、Diffie-Hellman鍵交換を行います(一時鍵が生成されます)。製品の1つは、セッションキーとそのセッションキーのハッシュです。 sshサーバーは、その(「長期」)ホストキーのプライベート部分を使用してセッションキーに署名します。クライアントはそれを公開鍵で検証します。これがMITMを回避する方法です。 DHを使用して特定の値を強制することはできないことに注意してください。 MITMは、独自のDH契約でクライアントをだます必要があります。また、独自のDH合意でサーバーをだます必要があります。それは秘密鍵の制御なしでは起こり得ない。これはサーバー認証であり、クライアント認証とは別のものです。

0
james6125