Untuk pembangkitan pasangan kunci RSA, digunakan algoritma sebagai berikut:
- Dipilih dua buah bilangan prima sembarang yang besar, p dan q. Nilai p dan q harus dirahasiakan.
- Dihitung n = p x q. Besaran n tidak perlu dirahasiakan.
- Dihitung m = (p – 1)(q – 1). Besaran m perlu dirahasiakan.
- Dipilih sebuah bilangan bulat sebagai kunci publik, disebut namanya e, yang relatif prima terhadap m. e relatif prima terhadap m artinya faktor pembagi terbesar keduanya adalah 1, secara matematis disebut gcd (e,m) = 1. Untuk mencarinya dapat digunakan algoritma Euclid. Nilai e bersifat tidak rahasia.
- Dihitung kunci privat, disebut namanya d sedemikian agar (d x e) mod m = 1. Untuk mencari nilai d yang sesuai dapat juga digunakan algoritma Extended Euclid. Nilai D bersifat rahasia.
Maka hasil dari algoritma tersebut diperoleh :
- kunci publik adalah pasangan (e,n). Bersifat tidak rahasia.
- kunci private adalah pasangan (d,n). Bersifat rahasia
Algoritma Enkripsi/Dekripsi
Enkripsi
- Ambil kunci publik penerima pesan, e, dan n
- Nyatakan plainteks M menjadi blok-blok M1, M2, …, sedemikian sehingga setiap blok merepresentasikan nilai di dalam selang [0, n – 1].
- Setiap blok Mi dienkripsi menjadi blok Ci dengan rumus Ci = Mi ^ e mod n
Dekripsi
- Setiap blok cipherteks Ci didekripsi kembali menjadi blok Mi dengan rumus Mi = Ci ^ d mod n
Algoritma ini mencari FPB dengan cara melakukan pembagian berulang-ulang dimulai dari kedua bilangan yang hendak kita cari FPBnya sampai kita mendapatkan sisa 0 dari hasil pembagian.
Marilah kita lihat contoh yang lain, cari FPB dari 40 dan 64 :
- 64 ÷ 40 = 1 dengan sisa 24
- 40 ÷ 24 = 1 dengan sisa 16
- 24 ÷ 16 = 1 dengan sisa 8
- 16 ÷ 8 = 2 dengan sisa 0.
Kita berhenti di sini sebab kita sudah mendapat sisa 0. Bilangan terakhir yang kita gunakan untuk membagi adalah 8, jadi FPB dari 40 dan 64 adalah 8
Contoh lain, cari FPB 3337 dan 79 :
- 3337 ÷ 79 = 42 dengan sisa 19
- 79 ÷ 19 = 4 dengan sisa 3
- 19 ÷ 3 = 6 dengan sisa 1
Kita berhenti karena sudah mendapatkan sisa 1.
Contoh RSA Sederhana
- p = 47 dan q = 71 (keduanya prima).
- n = p ⋅ q = 3337
- m = (p – 1)(q – 1) = 3220
- Pilih e yg relativ prime terhadap m, gcd(e,m) = 1.
e = 79 => gcd(79, 3337) = 1 - Cari nilai d, d*e = 1 mod (m)
d*79 mod 3220 = 1
d = 1019
Sehingga didapatkan :
- Public key : (79, 3337)
- Private key : (1019, 3337)
Proses Enkripsi
Setelah didapat perhitungan di atas, maka akan dilakukan enkripsi plaintext M = AKU. Pertama-tama plaintext tersebut diubah menjadi format ASCII sebagai berikut :
Karakter A K U
ASCII 65 75 85
M1 = 657 M2 = 585
Setelah dibagi perblock, maka akan dihitung menggunakan rumus Ci = Mi ^ e mod n.
- C1 = 657 ^ 79 mod 3337 = 2349
- C2 = 585 ^ 79 mod 3337 = 685
Maka, chipertext yang didapatkan adalah C = 320328
Proses Dekripsi
Setelah chipertext dari kata AKU didapat, untuk mengubahnya kembali jadi plaintext menggunakan dekripsi dengan rumus Mi = Ci ^ d mod n.
- M1 = 2349 ^ 1019 mod 3337 = 657
- M2 = 685 ^ 1019 mod 3337 = 585
Maka, setelah di dekripsi hasilnya akan sama. Yaitu 657585.
Tidak ada komentar:
Posting Komentar