web-dev-qa-db-ja.com

SSHキーベースのログインは、MiTM攻撃に対して脆弱ではありません。本当ですか?

パスワードベースのログインの代わりにキーベースのログインを使用する場合、中間者攻撃が発生する可能性がないことをどこかで読みました。

この質問は、何がより安全であるかについてではありません:キーベースのログインまたはパスワードベースのログイン
代わりに私は次のことを知りたいと思っています。

  1. キーベースのログイン中に行われる手順
  2. なぜMiTM攻撃の影響を受けないのか。
2
joveny

まず、中間者攻撃は、クライアントがサーバーを適切に認証していれば、鍵ベースの認証でもパスワードベースの認証でも発生しません。

クライアントがサーバーのフィンガープリントが変更されたという警告を無視した場合にのみパスワードが使用される場合、中間者攻撃が可能です。この場合、クライアントは無意識のうちに攻撃者への接続を作成します。接続のエンドポイントは、ユーザーが入力したプレーンなパスワードを読み取り、元のサーバーにデータを転送できます。

代わりにキーペアが認証に使用される場合、クライアントは秘密キーを提供せず、何らかのメッセージに署名することによって、サーバーが知っている公開キーに対する秘密キーを所有しているという証明を提供するだけです。署名されるメッセージには、それ自体が鍵交換の結果であり、クライアントと攻撃者、および攻撃者とサーバー間の接続で異なる接続のセッション識別子が含まれています。これは、クライアントから攻撃者に与えられた所有権証明をサーバーへの所有権証明として攻撃者が再利用できないため、サーバーに対する認証が失敗することを意味します。

これは、TLSのクライアント証明書ベースの認証と非常に似ていることに注意してください。したがって、 も参照してください相互認証はMiTMの可能性に影響を与えますか? .

7
Steffen Ullrich

それは大きな話題です。ここでは、必要のない詳細があまりない詳細な情報と参考資料を紹介します。

中間者は、ユーザー認証ではなくサーバー認証によって妨害されます。ユーザーが認証される前に、サーバーが認証されます。

これはDiffie-Hellmanを介して行われ、共有シークレットKとハッシュであるセッション識別子Hが作成されます。真ん中の男は、クライアントと自分自身、自分とサーバーの間でDH交換を行う必要があります。これらの出力は両方とも異なることが保証されます。

サーバーは、秘密鍵を使用してセッション識別子Hに署名します。クライアントはそれをサーバーの公開鍵で検証します。初回使用時に信頼できるため、公開鍵が特定のサーバー(openssh/etcのknown_hosts)に関連付けられるまで、MITMに対して開かれていることに注意してください。

RFCには詳細があります。

RFC425

2
james6125