web-dev-qa-db-ja.com

OpenSSHは、使用するホストキーをどのように決定しますか?

デフォルトでは、現在のバージョン(6.9p1)、OpenSSHサーバーは4種類のホストキーを作成します。

$ ls /etc/ssh/ssh_Host_*_key.pub
/etc/ssh/ssh_Host_dsa_key.pub
/etc/ssh/ssh_Host_ecdsa_key.pub
/etc/ssh/ssh_Host_ed25519_key.pub
/etc/ssh/ssh_Host_rsa_key.pub

テストを通じて、少なくとも同じバージョンのOpenSSHクライアントを使用していることに気づきました(6.9p1)、ECDSAキーは、クライアントのキータイプに関係なく、ホストによって使用されます。

OpenSSHは、サポートされているアルゴリズムの優先順位をどこで決定しますか?この情報は編集可能ですか、それとも現在のバージョンのソースコードにハードコードされていますか?

さらに重要なことに、OpenSSHがECDSAアルゴリズムを最優先することを決定したのはなぜですか?

9
IQAndreas

順序は、クライアントがHostKeyAlgorithms構成オプションを使用して選択します。私のシステムのデフォルト(マンページによる)は次のとおりです。

  1. [email protected]
  2. [email protected]
  3. [email protected]
  4. [email protected]
  5. [email protected]
  6. [email protected]
  7. [email protected]
  8. [email protected]
  9. ecdsa-sha2-nistp256
  10. ecdsa-sha2-nistp384
  11. ecdsa-sha2-nistp521
  12. ssh-ed25519
  13. ssh-rsa
  14. ssh-dss

これを上書きするには、次のようにします。

ssh -oHostKeyAlgorithms=ssh-ed25519 [email protected]

8
Thomas

さらに重要なことに、OpenSSHがECDSAアルゴリズムを最優先することを決定したのはなぜですか?

ECDSAはバージョン5.7でopensshに導入されました。 リリースノートはこちら です。特に、それは述べられています:

RFC5656で指定されているように、キー交換(ECDH)およびホスト/ユーザーキー(ECDSA)の楕円曲線暗号モードを実装します。 ECDHとECDSAは、同じ同等の対称鍵長とはるかに短い鍵で、プレーンDHとDSAよりも優れたパフォーマンスを提供します。

....。

新しいECDSAキータイプを使用する証明書ホストキーとユーザーキーがサポートされています。ECDSAキーが認証され、ECDSAキーが証明書に署名するためのCAとして機能する場合があります。

256ビット曲線フィールドのECDHは、クライアントとサーバーの両方がECDHをサポートしている場合に推奨される鍵共有アルゴリズムです。 ECDSAホストキーは、ホストのキーを初めて学習するときに推奨されます。または、ssh-keyscan(1)を使用して学習することもできます。

また、 RFC 5656 は次のように述べています。

多くの推定では、2 ^ 80-2 ^ 90の演算は実行不可能であると考えられているため、少なくとも160〜180ビットの楕円曲線を使用することが推奨されます。このドキュメントで必要な曲線は、256ビット、384ビット、および521ビットの曲線です。実装では、160ビット未満の曲線を使用しないでください。

4
MariusMatutiae