パスワードベースのログインの代わりにキーベースのログインを使用する場合、中間者攻撃が発生する可能性がないことをどこかで読みました。
この質問は、何がより安全であるかについてではありません:キーベースのログインまたはパスワードベースのログイン。
代わりに私は次のことを知りたいと思っています。
まず、中間者攻撃は、クライアントがサーバーを適切に認証していれば、鍵ベースの認証でもパスワードベースの認証でも発生しません。
クライアントがサーバーのフィンガープリントが変更されたという警告を無視した場合にのみパスワードが使用される場合、中間者攻撃が可能です。この場合、クライアントは無意識のうちに攻撃者への接続を作成します。接続のエンドポイントは、ユーザーが入力したプレーンなパスワードを読み取り、元のサーバーにデータを転送できます。
代わりにキーペアが認証に使用される場合、クライアントは秘密キーを提供せず、何らかのメッセージに署名することによって、サーバーが知っている公開キーに対する秘密キーを所有しているという証明を提供するだけです。署名されるメッセージには、それ自体が鍵交換の結果であり、クライアントと攻撃者、および攻撃者とサーバー間の接続で異なる接続のセッション識別子が含まれています。これは、クライアントから攻撃者に与えられた所有権証明をサーバーへの所有権証明として攻撃者が再利用できないため、サーバーに対する認証が失敗することを意味します。
これは、TLSのクライアント証明書ベースの認証と非常に似ていることに注意してください。したがって、 も参照してください相互認証はMiTMの可能性に影響を与えますか? .
それは大きな話題です。ここでは、必要のない詳細があまりない詳細な情報と参考資料を紹介します。
中間者は、ユーザー認証ではなくサーバー認証によって妨害されます。ユーザーが認証される前に、サーバーが認証されます。
これはDiffie-Hellmanを介して行われ、共有シークレットK
とハッシュであるセッション識別子H
が作成されます。真ん中の男は、クライアントと自分自身、自分とサーバーの間でDH交換を行う必要があります。これらの出力は両方とも異なることが保証されます。
サーバーは、秘密鍵を使用してセッション識別子H
に署名します。クライアントはそれをサーバーの公開鍵で検証します。初回使用時に信頼できるため、公開鍵が特定のサーバー(openssh/etcのknown_hosts)に関連付けられるまで、MITMに対して開かれていることに注意してください。
RFCには詳細があります。