Как OpenSSH решает, какой ключ хоста использовать?

Как OpenSSH решает, какой ключ хоста использовать?

По умолчанию в моей текущей версии ( 6.9p1) сервер OpenSSH создает четыре типа ключей хоста:

$ 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 приоритет?

решение1

Порядок выбирается клиентом с помощью HostKeyAlgorithmsпараметра конфигурации. По умолчанию в моей системе (согласно man-странице) это:

  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]

решение2

И что еще важнее, почему OpenSSH решила отдать алгоритму ECDSA приоритет?

ECDSA был представлен в openssh с версии 5.7, вы можете найтиЗаметки о выпуске здесь. В частности, говорится:

Реализовать режимы эллиптической криптографии для обмена ключами (ECDH) и ключей хоста/пользователя (ECDSA), как указано в RFC5656. ECDH и ECDSA обеспечивают лучшую производительность, чем простые DH и DSA при той же эквивалентной длине симметричного ключа, а также при гораздо более коротких ключах.

.......

Поддерживаются ключи хоста и пользователя сертификатов, использующие новые типы ключей ECDSA — ключ ECDSA может быть сертифицирован, а ключ ECDSA может выступать в качестве центра сертификации для подписи сертификатов.

ECDH в 256-битном поле кривой является предпочтительным алгоритмом согласования ключей, когда его поддерживают и клиент, и сервер. Ключи хоста ECDSA предпочтительны при первом изучении ключей хоста или могут быть изучены с помощью ssh-keyscan(1).

Также,RFC5656состояния:

Многие оценки считают, что 2^80-2^90 операций выходят за рамки осуществимости, поэтому это предполагает использование эллиптических кривых по крайней мере 160-180 бит. ТРЕБУЕМЫЕ кривые в этом документе — это 256-, 384- и 521-битные кривые; реализации НЕ ДОЛЖНЫ использовать кривые меньше 160 бит

Связанный контент