Pertanyaan Bagaimana OpenSSH memutuskan kunci tuan rumah mana yang akan digunakan?


Secara default, dalam versi saya saat ini (6.9p1), OpenSSH Server akan membuat empat jenis kunci host:

$ 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

Melalui pengujian, saya perhatikan, setidaknya menggunakan versi yang sama dari klien OpenSSH (6.9p1), kunci ECDSA akan digunakan oleh host, terlepas dari jenis kunci klien.

Di mana OpenSSH memutuskan prioritas mana yang didukung algoritma? Apakah informasi ini dapat diedit, atau dikodekan ulang ke kode sumber versi saat ini?

Dan yang lebih penting, mengapa OpenSSH memutuskan memberikan prioritas pertama pada algoritma ECDSA?


5
2017-12-07 06:25


asal




Jawaban:


Urutan dipilih oleh klien menggunakan HostKeyAlgorithms opsi konfigurasi. Default pada sistem saya (sesuai dengan manpage) adalah:

  1. ecdsa-sha2-nistp256-cert-v01@openssh.com
  2. ecdsa-sha2-nistp384-cert-v01@openssh.com
  3. ecdsa-sha2-nistp521-cert-v01@openssh.com
  4. ssh-ed25519-cert-v01@openssh.com
  5. ssh-rsa-cert-v01@openssh.com
  6. ssh-dss-cert-v01@openssh.com
  7. ssh-rsa-cert-v00@openssh.com
  8. ssh-dss-cert-v00@openssh.com
  9. ecdsa-sha2-nistp256
  10. ecdsa-sha2-nistp384
  11. ecdsa-sha2-nistp521
  12. ssh-ed25519
  13. ssh-rsa
  14. ssh-dss

Untuk mengesampingkan ini, lakukan sesuatu seperti:

ssh -oHostKeyAlgorithms=ssh-ed25519 user@foo.com


5
2017-11-04 22:04





Dan yang lebih penting, mengapa OpenSSH memutuskan memberikan prioritas pertama pada algoritma ECDSA?

ECDSA diperkenalkan ke openssh dengan versi 5.7, Anda mungkin menemukan Lepaskan catatan di sini. Secara khusus, dinyatakan:

Menerapkan mode Elliptic Curve Cryptography untuk pertukaran kunci (ECDH)      dan host / kunci pengguna (ECDSA) sebagaimana ditentukan oleh RFC5656. ECDH dan ECDSA      menawarkan kinerja yang lebih baik daripada DH biasa dan DSA pada padanan yang sama      panjang kunci simetris, serta kunci yang jauh lebih pendek.

.......

Host sertifikat dan kunci pengguna menggunakan jenis kunci ECDSA yang baru      didukung - kunci ECDSA dapat disertifikasi, dan kunci ECDSA dapat bertindak      sebagai CA untuk menandatangani sertifikat.

ECDH dalam bidang kurva 256 bit adalah perjanjian kunci yang disukai      algoritma ketika kedua klien dan server mendukungnya. Host ECDSA      kunci lebih disukai ketika mempelajari kunci host untuk pertama kalinya,      atau dapat dipelajari menggunakan ssh-keyscan (1).

Juga, RFC 5656 menyatakan:

Banyak perkiraan yang menganggap bahwa operasi 2 ^ 80-2 ^ 90 berada di luar      layak, sehingga akan menyarankan menggunakan kurva elips setidaknya      160-180 bit. Kurva yang DIPERLUKAN dalam dokumen ini adalah 256-, 384-,      dan kurva 521-bit; implementasi TIDAK HARUS menggunakan kurva yang lebih kecil      dari 160 bit


3
2017-12-07 07:37