Apa perbedaan antara kunci openssh dan kunci dempul?

48

Saya telah menemukan bahwa paket ssh-keygen("ssh") menghasilkan kunci yang berbeda dari paket puttygen("dempul").

Jika saya membuat kunci publik dan pribadi dengan ssh-keygenbeberapa ssh-server tidak akan menerima kunci saya. Jika saya membuat kunci dengan puttygenhanya satu server yang menerimanya.

Mengapa repositori linux tidak mengusulkan beberapa solusi umum (paket) untuk itu? Saya telah menemukan paket lain ssh-3.2.9.1 yang menciptakan kunci yang berfungsi dengan dempul. Tetapi mengapa tidak ada solusi praktis di SSH?

YarLinux
sumber
1
Sebagai permulaan, PuTTYGen menawarkan secara eksplisit untuk mengonversi kunci. Jadi format asli yang digunakan OpenSSH dan Putty untuk menyimpan kunci berbeda. Namun, algoritma yang didukung kompatibel. Tebakan yang saya miliki adalah bahwa Anda memasukkan beberapa nilai funky di bidang yang memungkinkan Anda untuk memberikan jumlah bit (misalnya DSA tampaknya membutuhkan 1024 bit) untuk kunci yang dihasilkan di PuTTYGen atau sebagai alternatif Anda memilih sesuatu seperti RSA-1 yang sebagian besar server akan dinonaktifkan hari ini. Sayangnya pertanyaannya tidak benar-benar menyatakan apa yang Anda coba dan harapkan.
0xC0000022L

Jawaban:

47

OpenSSH adalah implementasi standar de facto dari protokol SSH. Jika Putty dan OpenSSH berbeda, Putty adalah yang tidak kompatibel.

Jika Anda membuat kunci dengan OpenSSH menggunakan ssh-keygendengan opsi default, itu akan bekerja dengan hampir setiap server di luar sana. Server yang tidak menerima kunci seperti itu akan menjadi barang antik, menggunakan implementasi SSH yang berbeda, atau dikonfigurasi dengan cara yang aneh dan terbatas. Kunci dari tipe non-default mungkin tidak didukung pada beberapa server, khususnya kunci ECDSA membuat pembentukan sesi sangat sedikit lebih cepat tetapi hanya didukung oleh versi OpenSSH terbaru.

Putty menggunakan format file kunci yang berbeda. Muncul dengan alat untuk mengkonversi antara .ppkformatnya sendiri dan format OpenSSH.

Ssh-3.2.9.1 yang Anda temukan ini adalah produk komersial yang memiliki format kunci privat berbeda. Tidak ada alasan untuk menggunakannya daripada OpenSSH, itu hanya bisa kurang kompatibel, perlu membayar, dan ada sekitar nol tutorial tentang cara menggunakannya di luar sana.

Gilles 'SANGAT berhenti menjadi jahat'
sumber
24

Sebagian besar distro Linux puttytersedia untuk Linux. Anda dapat menginstal puttydi sisi Linux dan menggunakan puttygenuntuk mengonversi file .ppk ke file kunci gaya ssh biasa (disebut file PEM - meskipun mereka tidak mendapatkan .pem dalam nama file).

puttygen id_dsa.ppk -O private-openssh -o id_dsa

CATATAN: Anda juga dapat menggunakan puttygenuntuk mengimpor kembali file PEM gaya ssh putty.

Penulis Putty memilih untuk kesederhanaan sehingga kunci publik dan pribadi yang membentuk keamanan mendasar yang digunakan oleh otentikasi kunci dempul / ssh 2 disimpan dalam file .ppk eksklusif tunggal. Biasanya tombol-tombol ini dipertahankan sebagai 2 file terpisah oleh ssh.

Di Linux, file kunci biasanya disimpan di direktori, .ssh.

Ada tinjauan umum yang baik tentang proses konversi di sini dalam pertanyaan Stack Overflow berjudul: Konversi PEM ke format file PPK .

Penulis dempul juga membahas alasannya untuk menggunakan file .ppk di puttymanual pengguna . Anda dapat membacanya di sini di bagian 8.2.12.

slm
sumber
Apakah maksud Anda Linux saya sudah usang dan rentan SSH-1 (jika saya tidak menggunakan dempul)? Dan apakah itu terjangkau? Kerentanan SSH-1 dijelaskan dalam wikipedia
YarLinux
Tidak yakin dari mana Anda mendapatkannya. Tidak, kamu harus baik-baik saja. Versi Linux apa yang Anda gunakan? Distro Linux apa yang Anda gunakan? Jalankan perintah ini untuk mengetahui versi Linux Anda: uname -a. Linux distro: lsb_release -a.
slm
Saya menggunakan Ubuntu 12.04. Apakah maksud Anda SSH-2 memiliki format yang berbeda? Saya hanya bingung dengan nama paket dan perintah yang "ssh".
YarLinux
Saya melihat. Alat ssh yang Anda maksud biasanya merupakan bagian dari paket yang disebut openssh. Versi perangkat lunak ini tidak ada hubungannya dengan SSH-1 dan SSH-2 yang Anda maksud. Terminologi itu (SSH-1 & SSH-2) mengacu pada jenis file kunci yang Anda gunakan. Jenis file ini seharusnya tidak menjadi masalah bagi Anda selama Anda menggunakan versi openssh terbaru.
slm
Apakah ada tiga format kunci yang berbeda? OpenSSH, ssh.com dan Putty?
YarLinux
12

Keduanya menyimpan "pasangan kunci RSA untuk versi 2 protokol SSH" dan dapat dikonversi secara bergantian; namun, mengenai perbedaan format tersimpan aktual:

dari https://www.chiark.greenend.org.uk/~sgtatham/putty/wishlist/key-formats-natively.html

Keuntungan dari format kunci Putty adalah:

  • Setengah publik kunci disimpan dalam plaintext . Format kunci pribadi OpenSSH mengenkripsi seluruh file kunci , sehingga klien harus meminta kata sandi Anda sebelum dapat melakukan apa saja dengan kunci tersebut. Secara khusus, ini berarti harus meminta passphrase Anda sebelum dapat menawarkan kunci publik ke server untuk otentikasi. Format Putty menyimpan kunci publik dalam plaintext dan hanya mengenkripsi setengah privat, yang berarti ia dapat secara otomatis mengirim kunci publik ke server dan menentukan apakah server mau menerima otentikasi dengan kunci itu, dan itu hanya akan pernah meminta frasa sandi jika memang perlu.

    Saya pikir OpenSSH akan membaca a.pubfile untuk tujuan ini jika itu muncul di samping file kunci pribadi, tetapi ini adalah sumber kebingungan sesering kenyamanan (saya telah melihat orang mengganti file kunci pribadi dan meninggalkan yang ketinggalan zaman di .pubsampingnya, dan kemudian menjadi sangat bingung dengan proses otentikasi SSH yang dihasilkan!).
  • Kunci sepenuhnya dirusak. Format kunci yang menyimpan kunci publik dalam plaintext bisa rentan terhadap serangan perusakan, di mana separuh publik kunci dimodifikasi sedemikian rupa sehingga tanda tangan dibuat dengan informasi kebocoran kunci yang telah diolah tentang setengah bagian pribadi. Untuk alasan ini, format kunci Putty berisi MAC (Kode Otentikasi Pesan), mengunci frasa sandi, dan mencakup bagian publik dan pribadi kunci.Dengan demikian, kami memberikan kemudahan memiliki kunci publik yang tersedia dalam plaintext tetapi kami juga langsung mendeteksi setiap upaya serangan perusakan, memberikan kombinasi keamanan dan kenyamanan yang saya tidak percaya ditemukan dalam format kunci lainnya. Sebagai manfaat tambahan, MAC juga mencakup komentar kunci, mencegah kemungkinan kerusakan yang mungkin terjadi jika seseorang bertukar dua kunci dan menukar komentar.

    Pendekatan OpenSSH untuk menjaga kunci publik terenkripsi mungkinjuga menyediakan beberapa keamanan terhadap jenis serangan ini, tetapi tidak jelas bahwa itu memberikan perlindungan yang tepat: enkripsi yang dirancang untuk kerahasiaan sering meninggalkan cara di mana data yang dienkripsi dapat dimodifikasi oleh penyerang. Untuk perlindungan integritas nyata, Anda menginginkan MAC khusus yang berdedikasi, yang dirancang untuk melakukan hal itu.

[ penekanan ditambahkan]

PeanutPower
sumber