Apa perbedaan antara DSA dan RSA?

114

Tampaknya keduanya adalah algoritma enkripsi yang membutuhkan kunci publik dan pribadi. Mengapa saya memilih satu versus yang lain untuk menyediakan enkripsi di aplikasi server klien saya?

WilliamKF
sumber
3
Seperti yang dikatakan henri , DSA bukan untuk enkripsi, hanya penandatanganan.
Samveen
Kemungkinan duplikat dari Apa perbedaan antara id_rsa.pub dan id_dsa.pub?
Adam Katz

Jawaban:

27

Merujuk, https://web.archive.org/web/20140212143556/http://courses.cs.tamu.edu:80/pooch/665_spring2008/Australian-sec-2006/less19.html


Enkripsi dan dekripsi RSA RSA bersifat komutatif
sehingga dapat digunakan langsung sebagai skema tanda tangan digital dengan skema
RSA {(e, R), (d, p, q)}
untuk menandatangani pesan M, hitung:
S = M daya d (mod R)
untuk memverifikasi tanda tangan, hitung:
M = S daya e (mod R) = M daya ed (mod R) = M (mod R)

RSA dapat digunakan baik untuk enkripsi dan tanda tangan digital, cukup dengan membalik urutan eksponen yang digunakan: eksponen rahasia (d) untuk membuat tanda tangan, eksponen publik (e) bagi siapa saja untuk memverifikasi tanda tangan. Yang lainnya identik.

DSA (Digital Signature Algorithm)
DSA merupakan varian pada ElGamal dan algoritma Schnorr menciptakan tanda tangan 320 bit, namun dengan keamanan 512-1024 bit lagi-lagi bertumpu pada kesulitan komputasi discrete logarithms yang telah cukup diterima secara luas

DSA Key Generation
pertama kali dibagikan kepada publik global nilai kunci (p, q, g) dipilih:
pilih bilangan prima besar p = 2 daya L di
mana L = 512 hingga 1024 bit dan merupakan kelipatan 64
pilih q, faktor prima 160 bit dari p-1
pilih g = h power (p-1) / q
untuk h1 apa saja,
lalu setiap pengguna memilih kunci pribadi dan menghitung kunci publik mereka:
pilih x hitung y = g daya x (mod p)

Pembangkitan kunci DSA terkait dengan, tetapi agak lebih kompleks daripada El Gamal. Sebagian besar karena penggunaan modulus q 160-bit sekunder yang digunakan untuk membantu mempercepat penghitungan dan mengurangi ukuran tanda tangan yang dihasilkan.

Pembuatan Tanda Tangan DSA dan Verifikasi

untuk menandatangani pesan M
menghasilkan kunci tanda tangan acak k, k menghitung
r = (g daya k (mod p)) (mod q)
s = k-1.SHA (M) + xr (mod q)
kirim tanda tangan (r, s) dengan pesan

untuk memverifikasi tanda tangan, hitung:
w = s-1 (mod q)
u1 = (SHA (M) .w) (mod q)
u2 = rw (mod q)
v = (g daya u1.y daya u2 (mod p)) (mod q)
jika v = r maka tanda tangan diverifikasi

Pembuatan tanda tangan sekali lagi mirip dengan ElGamal dengan menggunakan kunci tanda tangan sementara per pesan, tetapi melakukan kalk pertama mod p, kemudian mod q untuk mengurangi ukuran hasilnya. Perhatikan bahwa penggunaan fungsi hash SHA secara eksplisit di sini. Verifikasi juga terdiri dari membandingkan dua perhitungan, lagi-lagi menjadi sedikit lebih rumit daripada, tetapi terkait dengan El Gamal.
Perhatikan bahwa hampir semua kalkulasi adalah mod q, dan karenanya jauh lebih cepat.
Namun, berbeda dengan RSA, DSA hanya dapat digunakan untuk tanda tangan digital

Keamanan DSA
Kehadiran saluran subliminal ada di banyak skema (yang membutuhkan nomor acak untuk dipilih), tidak hanya DSA. Ini menekankan perlunya "keamanan sistem", bukan hanya algoritme yang baik.

AVA
sumber
tautan ke referensi Anda rusak
Paul Wintz
82

Cek jawaban AVA di bawah ini .

Jawaban lama saya sepertinya salah

SDReyes
sumber
Jadi apakah itu berarti jika jumlah data yang akan dienkripsi besar maka akan berjalan lebih cepat menggunakan RSA?
WilliamKF
2
Tidak, sebaliknya. DSA lebih cepat dalam penandatanganan (yang secara matematis kurang lebih sama dengan enkripsi), jadi jika Anda harus banyak mengenkripsi dan sering mendekripsi, DSA lebih cepat.
Henri
Banyak data untuk dienkripsi di sisi klien tetapi hanya didekripsi sekali di server, jadi apakah DSA masih menang?
WilliamKF
30
DSA tidak mengenkripsi. Ulangi, DSA tidak mengenkripsi. Berikut kuisnya: Apa arti "S" di DSA?
Presiden James K. Polk
4
@GregS RSA dapat mengenkripsi vs. DSA yang tidak dapat mengenkripsi sebagian besar merupakan masalah terminologi. Kami menyebut beberapa algoritma berbeda RSA, beberapa di antaranya tanda (misalnya RSA-PSS), beberapa di antaranya mengenkripsi (misalnya RSA-OAEP). Tetapi kami memberi setiap algoritme dalam kripto berbasis grup nama yang berbeda, memanggil salah satu algoritme enkripsi enkripsi ElGamal dan memanggil salah satu algoritme tanda tangan DSA.
CodesInChaos
24

Btw, Anda tidak dapat mengenkripsi dengan DSA, hanya masuk. Meskipun secara matematis setara (lebih atau kurang) Anda tidak dapat menggunakan DSA dalam praktiknya sebagai skema enkripsi, hanya sebagai skema tanda tangan digital.

Henri
sumber
20

Dengan mengacu pada man ssh-keygen, panjang kunci DSA dibatasi tepat 1024 bit agar tetap sesuai dengan FIPS 186-2 NIST. Meskipun demikian, kunci DSA yang lebih panjang secara teoritis dimungkinkan; FIPS 186-3 secara eksplisit mengizinkannya. Selain itu, keamanan tidak lagi dijamin dengan kunci RSA atau DSA sepanjang 1024 bit.

Kesimpulannya, kunci RSA 2048 bit saat ini adalah pilihan terbaik.

PENCEGAHAN LEBIH BANYAK YANG HARUS DIAMBIL

Membuat koneksi SSH yang aman memerlukan lebih dari sekadar memilih teknologi pasangan kunci enkripsi yang aman. Mengingat wahyu NSA Edward Snowden, seseorang harus lebih waspada daripada yang sebelumnya dianggap cukup.

Untuk menyebutkan satu contoh saja, menggunakan algoritma pertukaran kunci yang aman sama pentingnya. Berikut adalah ikhtisar bagus tentang praktik pengerasan SSH terbaik saat ini .

Serge Stroobandt
sumber
Beberapa versi lama ssh-keygenmengizinkan kunci berukuran bit lain juga (saya sendiri menggunakan kunci DSA 2048 bit yang dihasilkan menggunakan ssh-keygendi RHEL).
Samveen
6

Dan selain jawaban bagus di atas.

  • DSA menggunakan logaritma Diskrit.
  • RSA menggunakan Faktorisasi Integer.

RSA adalah singkatan dari Ron R ivest, Adi S hamir dan Leonard A dleman.

Premraj
sumber