Apa perbedaan antara id_rsa.pub dan id_dsa.pub?

Jawaban:

64

id_rsa.pubdan id_dsa.pubmerupakan kunci publik untuk id_rsadan id_dsa.

Jika Anda meminta dalam kaitannya dengan SSH, id_rsaadalah RSA kunci dan dapat digunakan dengan protokol SSH 1 atau 2, sedangkan id_dsaadalah DSA kunci dan hanya dapat digunakan dengan protokol SSH 2. Keduanya sangat aman, tapi DSA tampaknya menjadi standar hari ini (dengan asumsi semua klien / server Anda mendukung SSH 2).

Pembaruan: Sejak ini ditulis DSA telah terbukti tidak aman. Informasi lebih lanjut tersedia dalam jawaban di bawah ini.

Mike Pelley
sumber
Saya harus tidak setuju dengan ini. Saat ini (dan, meskipun pada tingkat yang lebih rendah, juga pada tahun 2010 ketika ini diposting), 1024 bit (ukuran kunci terbesar yang tersedia untuk DSA) dianggap terlalu lemah. Oleh karena itu, RSA adalah pilihan yang lebih baik. Mengenai SSH v1: Saya tidak menganggap ini aman sepuluh tahun yang lalu.
Adam Katz
3
@AdamKatz DSA telah mendukung dukungan kunci 2048-bit dan 3072-bit sejak 2009 (sesuai FIPS 186-3 ). Sebagian besar klien / server ssh mendukung kunci DSA yang lebih besar termasuk OpenSSH dan PuTTY. Sebagian besar pembuat kunci juga mendukung kunci DSA yang lebih besar, tetapi ssh-keygen dari OpenSSH masih tidak (meskipun ssh dan sshd mendukungnya). Untuk Linux, Anda dapat membuat kunci DSA yang lebih besar menggunakan OpenSSL seperti yang dijelaskan dalam entri blog ini .
Mike Pelley
1
Menarik! Saya tidak tahu itu, dan itu pasti membantu menyamakan bidang di antara keduanya (meskipun kurangnya dukungan OpenSSH cukup memberatkan). Namun, saya tidak akan mengatakan bahwa DSA adalah standarnya (baik sekarang atau pada tahun 2010), sedangkan RSA adalah standarnya (dan kami beralih ke sistem kurva elips seperti Ed25519).
Adam Katz
46

SSH menggunakan pasangan kunci publik / pribadi , begitu id_rsajuga kunci pribadi RSA Anda (berdasarkan bilangan prima), yang lebih aman daripada kunci pribadi id_dsa DSA Anda (berdasarkan eksponen). Menjaga kunci pribadi Anda aman dan berbagi Anda id_rsa.pubdan id_dsa.pubkunci publik secara luas.

DSA tidak aman

DSA memiliki parameter yang dapat ditebak jika pembuat nomor acak komputer Anda di bawah standar, yang akan mengungkapkan kunci rahasia Anda. ECDSA (peningkatan kurva elips DSA) juga rentan . Bahkan dengan nomor acak yang bagus, DSA memiliki masalah kekuatan lainPDF (ini juga ditemukan di Diffie-Hellman ).

OpenSSH membuat kunci 1024 bit yang tidak aman ( solusi ) dan sekarang menonaktifkan DSA secara default .

Gunakan Ed25519 jika memungkinkan

Kriptografi kurva elips menawarkan peningkatan kompleksitas dengan ukuran kunci yang lebih kecil. Ed25519 (berdasarkan kompleksitas kurva elips model pesawat ) adalah implementasi yang disukai karena diasumsikan kurangnya campur tangan (dokumen yang bocor menunjukkan bahwa NSA AS melemahkan standar kripto) ).

Sayangnya, Ed25519 masih terbilang baru, membutuhkan OpenSSH 6.5 atau GnuPG 2.1 (lihat daftar lengkap ).

Gunakan RSA dengan 4096 bit saat Ed25519 tidak tersedia

Ukuran kunci RSA 4096 bit harus memiliki kompleksitas yang sebanding dengan Ed25519.

Ed25519 masih lebih disukai daripada RSA karena khawatir bahwa RSA mungkin rentan terhadap masalah kekuatan yang sama seperti DSA, meskipun menerapkan exploit tersebut ke RSA diharapkan jauh lebih sulit.

Adam Katz
sumber
2
Hanya satu koreksi: DSA telah mendukung kunci 2048-bit dan 3072-bit sejak 2009 (sesuai FIPS 186-3 ). Informasi lebih lanjut ada di komentar saya di atas.
Mike Pelley
2
Infosec SE memiliki jawaban yang bagus untuk pertanyaan ini yang lebih mendalam. Ini mengutip pembicaraan Black Hat 2013 yang menyarankan DSA tidak lagi aman, bahkan pada ukuran kunci yang lebih besar.
Adam Katz
2
Saya telah memperbarui jawaban ini agar lebih komprehensif tentang masalah dengan DSA. Jawaban ini sekarang lebih rinci daripada jawaban Infosec SE (yang sama validnya). Ada lebih banyak detail saat Anda mengarahkan mouse ke beberapa tautan.
Adam Katz
1
Posting ini mengajari saya banyak hal, membutuhkan lebih banyak suara positif.
liljoshu
2

rsa dianggap lebih aman.

Tidak lagi (Mei 2020, sepuluh tahun kemudian), dengan OpenSSH 8.2 , seperti dilaporkan oleh Julio

Pemberitahuan penghentian di masa mendatang

Sekarang dimungkinkan 1 untuk melakukan serangan prefiks yang dipilih terhadap algoritma hash SHA-1 dengan harga kurang dari USD $ 50K.
Karena alasan ini, kami akan menonaktifkan algoritme tanda tangan kunci publik "ssh-rsa" yang bergantung pada SHA-1 secara default dalam rilis mendatang .

(Lihat " SHA-1 berantakan: Tabrakan Awalan-Pilihan Pertama pada SHA-1 dan Aplikasi ke Web Kepercayaan PGP " Leurent, G dan Peyrin, T (2020))

Algoritma ini sayangnya masih digunakan secara luas meskipun ada alternatif yang lebih baik, menjadi satu-satunya algoritma tanda tangan kunci publik yang ditentukan oleh SSH RFC asli.

Alternatif yang lebih baik meliputi:

  • Algoritme tanda tangan RFC8332 RSA SHA-2 rsa-sha2-256 / 512.
    Algoritme ini memiliki keuntungan karena menggunakan jenis kunci yang sama dengan " ssh-rsa", tetapi menggunakan algoritme hash SHA-2 yang aman.
    Ini telah didukung sejak OpenSSH 7.2 dan sudah digunakan secara default jika klien dan server mendukungnya.

  • Algoritme tanda tangan ssh-ed25519.
    Ini telah didukung di OpenSSH sejak rilis 6.5.

  • Algoritme RFC5656 ECDSA: ecdsa-sha2-nistp256 / 384/521.
    Ini telah didukung oleh OpenSSH sejak rilis 5.7.

Untuk memeriksa apakah server menggunakan algoritma kunci publik ssh-rsa yang lemah untuk otentikasi host, coba sambungkan ke sana setelah menghapus ssh-rsaalgoritma dari daftar yang diizinkan ssh (1):

ssh -oHostKeyAlgorithms=-ssh-rsa user@host

Jika verifikasi kunci host gagal dan tidak ada jenis kunci host lain yang didukung, perangkat lunak server pada host tersebut harus ditingkatkan.

Rilis OpenSSH mendatang akan diaktifkan UpdateHostKeyssecara default untuk memungkinkan klien secara otomatis bermigrasi ke algoritme yang lebih baik.
Pengguna dapat mempertimbangkan untuk mengaktifkan opsi ini secara manual .

VonC
sumber
-8

Satu menggunakan DSA dan satu lagi menggunakan RSA .

Yann Ramin
sumber
dengan asumsi Anda hanya menggunakan nama default (yang secara logis terlihat seperti itu), theatrus menekannya tepat di kepala.
David Larrabee
Anda tidak menjawab bagian sebenarnya dari pertanyaan: mana yang lebih aman. Downvoting karena ini adalah jawaban teratas. Tidak perlu.
akauppi