Apa yang lebih baik untuk kunci GPG - RSA atau DSA?

58

ssh-keygendefault untuk membuat kunci RSA, tetapi gpg --gen-keylebih suka DSA / ElGamal.

Yang mana - RSA atau DSA - yang lebih baik untuk GPG?

grawity
sumber
1
Lihat juga pertanyaan StackOverflow ini serta jawaban saya untuk duplikat dari pertanyaan itu, yang membahas mengapa RSA secara signifikan lebih aman daripada DSA, baik pada tahun 2010 dan dengan kerentanan yang diketahui saat ini (yang semuanya untuk DSA).
Adam Katz

Jawaban:

25

RSA dan DSA - kesalahpahaman dan informasi yang berguna
memiliki beberapareferensi RSA yang lebih lamadanreferensi DSA baru-baru ini,


Pada tahun 2003, RSA vs DSA Signatures - The Winner is ... - RSA .

Jadi pada dasarnya pembuatan kunci sangat cepat untuk DSA, yang masuk akal jika Anda memahami algoritma. Penandatanganan juga lebih cepat untuk DSA, tetapi tidak sebesar faktornya. Kekuatan besar RSA adalah memverifikasi mana yang jauh lebih cepat daripada DSA .

Draft IETF terbaru : DSA dengan SHA-2 untuk DNSSEC , Berakhir 7 Januari 2010.
Ini memiliki beberapa alasan untuk mempromosikan DSA melalui RSA hari ini.

Menggunakan DSA dengan SHA-256 dalam DNSSEC memiliki beberapa kelebihan dan kekurangan dibandingkan menggunakan RSA dengan SHA-256 saat menggunakan kunci 2048-bit. Tanda tangan DSA jauh lebih pendek dari tanda tangan RSA ; pada ukuran ini, perbedaannya adalah 512 bit verus 2048 bit. Pada platform tipikal menggunakan kunci 2048-bit, penandatanganan DSA sekitar tiga kali lebih cepat daripada untuk RSA, tetapi memverifikasi tanda tangan RSA lebih dari sepuluh kali lebih cepat daripada untuk DSA .

Kekuatan kriptografi DSA umumnya dianggap setara dengan RSA ketika kunci publik DSA dan kunci publik RSA memiliki ukuran yang sama. Penilaian seperti itu, tentu saja, dapat berubah di masa depan jika serangan baru yang bekerja lebih baik dengan satu atau algoritma lainnya ditemukan.

Saat ini tidak ada serangan yang diketahui pada set parameter DSA tertentu yang dipilih untuk dokumen ini. Penilaian seperti itu tentu saja bisa berubah di masa depan.

Tapi, ini baru konsep saat ini.

Semua orang menyukai kecepatan verifikasi RSA (!).

nik
sumber
6

Mengutip diskusi forum :

Saran saya adalah menggunakan kunci penandatanganan RSA (kunci "primer" atau "master") dan subkunci RSA untuk enkripsi. Alasan untuk menggunakan RSA untuk penandatanganan terutama karena RSA memungkinkan Anda menggunakan hash yang lebih besar daripada DSA. DSA2 juga memungkinkan Anda menggunakan hash yang lebih besar, tetapi RSA telah didukung selama bertahun-tahun lebih lama daripada DSA2.

Saya pikir jika Anda menggunakannya dengan cara standar (yaitu Anda tidak mengenkripsi sejumlah besar data) mereka berdua akan melakukannya dengan baik.

Saya pribadi akan memilih RSA karena saya telah mempelajari algoritma, dan itu adalah salah satu algoritma yang paling indah yang pernah saya lihat.

Adam Matan
sumber
4

Juga penggunaan algoritma SHA-2 dimungkinkan dan diizinkan sejak revisi DSS saat ini; tetapi saya tidak dapat menemukan revisi GPG yang mengikuti.

Mengenai spesifikasi DSS saat ini ( FIPS-186-3 , p. I) fungsi hash yang ditentukan dalam SHS (FIPS-180-3, p. Iv) dapat digunakan:

DSS:

Algoritma tanda tangan digital FIPS yang disetujui harus digunakan dengan fungsi hash yang sesuai yang ditentukan dalam SHS.

SHS:

Standar ini menetapkan lima algoritma hash aman - SHA-1, SHA-224, SHA-256, SHA-384, dan SHA-512 - untuk menghitung representasi data elektronik (pesan) yang diringkas.


Untuk pertanyaan: Kedua algoritma didasarkan pada masalah matematika yang tidak terbukti aman (RSA menggunakan masalah angka faktorisasi dan DSA menggunakan masalah logaritma diskrit), Anda tidak bisa mengatakan satu lebih aman daripada yang lain, karena bukan yang satu masalah atau yang lain belum pernah diselesaikan.

Tetapi dengan menggunakan DSA dengan SHA-1 Anda mungkin memiliki masalah keamanan, seperti yang sudah dikatakan oleh pgs .

Manuel Faux
sumber
1

Faktanya adalah itu mungkin tidak masalah bagi Anda :) Sebagai bagian dari persiapan untuk menghasilkan pasangan kunci dan sebagai bagian dari mempertahankan pasangan kunci yang ada - terlepas dari apa kripto asimetris yang Anda pilih, Anda harus: 1) memeriksa saat ini direkomendasikan panjang kunci 2) memilih basis / modulo untuk dioptimalkan untuk penandatanganan, atau verifikasi - tergantung pada apa yang akan dilakukan lebih sering (kunci yang akan digunakan dalam menerbitkan sertifikat server TLS / SSL harus dioptimalkan untuk verifikasi karena setiap browser web akan memeriksa tanda tangan ... kunci yang digunakan untuk menandatangani perangkat lunak harus dioptimalkan dengan cara yang sama) 3) pastikan Anda menghitung usia kunci Anda - telah menggunakan kunci yang sama untuk ssh-auth selama beberapa tahun, mungkin waktu untuk mengatur ulang bahkan jika Anda memilih kunci ukuran itu masih masuk akal untuk aplikasi saat ini.

Baik RSA dan DSA telah dievaluasi secara substansial; jika Anda menggunakan basis kode yang dapat diaktifkan (RSAREF, RSA komersial, Mozilla / Netscape, Microsoft, OpenSSL, ...) maka Anda mungkin tidak peduli cryptosystem mana yang Anda gunakan selama Anda menggunakannya dengan benar dan memanfaatkan praktik terbaik saat ini

Ram
sumber