Apa yang sebenarnya terjadi ketika Anda menggunakan SSH tanpa menghasilkan pasangan kunci?

4

Tampaknya ini terlalu sederhana dan saya merasa saya mungkin telah melewatkan sesuatu yang sangat jelas, tetapi apa yang sebenarnya terjadi ketika Anda menggunakan SSH tanpa menghasilkan pasangan kunci?

Varian pada pertanyaan ini telah ditanyakan di sini dan seperti jawabannya, saya selalu mengerti bahwa tanpa pasangan kunci, SSH kembali ke otentikasi kata sandi.

Namun, artikel Wikipedia hanya menjelaskan dua cara menggunakannya. Keduanya tampaknya melibatkan pasangan kunci, satu dihasilkan secara manual dan satu secara otomatis.

Ada beberapa cara untuk menggunakan SSH; satu adalah dengan menggunakan pasangan kunci publik-swasta yang dihasilkan secara otomatis untuk mengenkripsi koneksi jaringan, dan kemudian menggunakan otentikasi kata sandi untuk masuk.

Cara lain adalah dengan menggunakan pasangan kunci publik-pribadi yang dihasilkan secara manual untuk melakukan otentikasi, yang memungkinkan pengguna atau program untuk masuk tanpa harus menentukan kata sandi

Ketika saya membuat koneksi SSH ke server yang tidak aman tanpa pasangan kunci, saya diminta untuk nama pengguna dan kata sandi saya, maka saya memiliki akses ke shell.

Apakah kata sandi cadangan merupakan detail implementasi dan karenanya tidak ada di wiki? Apakah keypair telah dibuat secara otomatis, seperti yang disarankan (jika demikian, bagaimana kunci publik sampai ke server)? Atau hanya menggunakan kata sandi saja.

Jika hanya menggunakan kombinasi kata sandi dan nama pengguna, apakah data dienkripsi sama sekali? Jika demikian, bagaimana cara dienkripsi?

Dan Prince
sumber

Jawaban:

8

Artikel Wikipedia membingungkan lapisan SSHv2 yang berbeda. (Itu mungkin agak benar untuk SSHv1 satu dekade lalu, tapi itu jelas disederhanakan menjadi tingkat omong kosong.)

Pasangan kunci SSHv2, baik milik Anda maupun server, digunakan hanya untuk otentikasi , dan pengaturan enkripsi selalu dilakukan menggunakan pasangan kunci DH yang dibuat sementara untuk setiap koneksi. Pasangan kunci SSH server hanya menandatangani data pengaturan enkripsi (untuk membuktikan identitas server), sedangkan pasangan kunci SSH klien tidak digunakan untuk proses ini sama sekali.


Di SSHv2, ketika Anda terhubung ke server (setelah kedua ujungnya daftar daftar algoritma yang didukung), langkah pertama adalah pertukaran kunci , yang entah bagaimana menghasilkan kunci simetris yang digunakan untuk mengenkripsi seluruh koneksi. (Server juga dikonfirmasi sebagai efek samping dari proses ini.)

Sebagian besar waktu D – H atau ECDH akan digunakan untuk ini, yang berarti:

  1. Klien menghasilkan keypair DH (digunakan untuk koneksi ini saja) dan mengirimkan kunci publik DH-nya.

  2. Server juga menghasilkan keypair DH segar. Itu juga memuat SSH "kunci host" keypair dari disk.

    Kemudian ia menandatangani kunci publik DH dengan kunci pribadi SSH, dan mengirimkan kedua kunci publik (serta tanda tangan) ke klien.

  3. Klien memeriksa tanda tangan dan memverifikasi bahwa kunci publik SSH server ada di known_hosts.

    Kemudian ia menggunakan kedua kunci DH (publik + server publik klien) untuk menghasilkan kunci enkripsi bersama, dan membuang keypair DH-nya.

  4. Server juga menggunakan kedua kunci DH (publik + klien server) untuk menghasilkan kunci enkripsi bersama yang sama, dan juga membuang keypair DH-nya.

  5. Kedua belah pihak memungkinkan enkripsi.

(Ada beberapa metode pertukaran kunci lain tetapi jarang digunakan.)

Langkah selanjutnya adalah otentikasi klien . Perhatikan bahwa pada titik ini koneksi sudah dienkripsi, meskipun kunci SSH klien belum digunakan!

  1. Klien mengirim "permintaan layanan" untuk otentikasi klien.

  2. Server menawarkan beberapa mekanisme - "kata sandi", "kunci publik", mungkin yang lain.

  3. Jika Anda memiliki pasangan kunci SSH, klien memilih "kunci publik", mengirimkan kunci publik SSH Anda, dan menggunakan kunci pribadi SSH Anda untuk menandatangani beberapa data acak yang disediakan oleh server, untuk membuktikan kepemilikan kunci.

    Jika Anda tidak memiliki pasangan kunci SSH, klien memilih "kata sandi" dan mengirimkan kata sandi Anda secara langsung - namun, masih di dalam terowongan terenkripsi.

grawity
sumber
Temukan! Terima kasih - ini benar-benar wawasan. Namun kemunculan konsep sederhana lainnya sejelas lumpur di Wikipedia!
Dan Pangeran