По умолчанию в моей текущей версии ( 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-странице) это:
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- ecdsa-sha2-nistp256
- ecdsa-sha2-nistp384
- ecdsa-sha2-nistp521
- ssh-ed25519
- ssh-rsa
- 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 бит