デフォルトでは、現在のバージョン(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アルゴリズムを最優先することを決定したのはなぜですか?
順序は、クライアントがHostKeyAlgorithms
構成オプションを使用して選択します。私のシステムのデフォルト(マンページによる)は次のとおりです。
これを上書きするには、次のようにします。
ssh -oHostKeyAlgorithms=ssh-ed25519 [email protected]
さらに重要なことに、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ビット未満の曲線を使用しないでください。