Saya mencoba mengukur kinerja algoritma rsa dengan menjalankan perintah berikut:

$:openssl speed rsa

Keluaran:

                sign    verify    sign/s verify/s
rsa  512 bits 0.000048s 0.000003s  20923.5 355236.0
rsa 1024 bits 0.000102s 0.000007s   9757.6 152852.6
rsa 2048 bits 0.000676s 0.000022s   1479.2  46028.3
rsa 3072 bits 0.002385s 0.000041s    419.3  24407.0
rsa 4096 bits 0.005083s 0.000069s    196.7  14392.3
rsa 7680 bits 0.041772s 0.000234s     23.9   4281.9
rsa 15360 bits 0.231628s 0.000960s      4.3   1041.6

Seperti yang kita lihat dari output perintah ini, operasi verifikasi membutuhkan waktu lebih sedikit daripada tanda. Adakah yang bisa menjelaskan kepada saya mengapa verifikasi jauh lebih cepat daripada tanda? Terima kasih sebelumnya !

2
yassine 4 April 2021, 18:27

1 menjawab

Jawaban Terbaik

Saya hanya akan berbicara di sini tentang tanda tangan RSA.

Pertama-tama kunci publik RSA adalah pasangan (n,e) di mana n adalah modulus dan e disebut eksponen publik.

Eksponen publik RSA yang umum adalah {3, 5, 17, 257 atau 65537}. Alasannya sederhana; biaya verifikasi dapat dikendalikan menjadi minimal. Misalnya, jika Anda memilih 3 maka itu akan membutuhkan 1 perkalian dan 1 kuadrat dengan moduluar yang cepat algoritma kuadrat. Jika Anda memilih 65537 = 2^16+1 maka itu akan membutuhkan 16 kuadrat dan 1 perkalian.

Sekarang, setelah Anda memilih kunci publik Anda, eksponen pribadi d adalah bilangan bulat acak e *d = 1 mod φ(n) dan kami menginginkannya dengan cara ini karena keamanan. Kami tidak ingin d kecil karena tidak aman. Baca lebih lanjut tentang serangan dalam makalah ini Dua Puluh Tahun Serangan pada Sistem Kripto RSA< /a>.

Karena d adalah acak dan jika kita menggunakan fungsi totient Euler φ maka itu akan membutuhkan rata-rata φ(n)=(p-1)(q-1) kuadrat dan φ(n)/2 perkalian. Inilah alasan utama perbedaan biaya antara verifikasi dan tanda tangan.

RSA tidak boleh digunakan tanpa padding yang tepat dan untuk tanda tangan, RSA harus digunakan dengan RSA-PSS (dan juga untuk enkripsi padding OAEP atau PKCS#5v.5)


Catatan;

  1. Kami sebenarnya menggunakan fungsi Carmichael alih-alih fungsi Euler sejak itu selalu menghasilkan d terkecil.

  2. RSA dapat menggunakan CRT untuk mempercepat operasi kunci privat hingga 4 kali dan OpenSSL menggunakan cara ini.

  3. Penandatanganan RSA bukanlah dekripsi, sebagaimana dinyatakan di atas RSA aman (bukan RSA buku teks) harus menggunakan bantalan yang tepat.

  4. Ya, pertama kita pilih kunci publik lalu pastikan GCD(φ(n), e ) =1, jika tidak pilih bilangan prima baru p dan q di mana n=p * q

2
kelalaka 5 April 2021, 16:12