Algoritma RSA dibuat oleh 3 orang
peneliti dari MIT (Massachussets Institute of Technology) pada tahun
1976, yaitu: Ron (R)ivest, Adi (S)hamir, dan Leonard (A)dleman. RSA adalah salah satu teknik
kriptografi dimana kunci untuk melakukan enkripsi berbeda dengan kunci untuk
melakukan dekripsi. Kunci untuk melakukan enkripsi disebut sebagai kunci
publik, sedangkan kunci untuk melakukan dekripsi disebut sebagai kunci privat.
Orang yang mempunyai kunci publik dapat melakukan enkripsi tetapi yang dalam
melakukan dekripsi hanyalah orang yang memiliki kunci privat. Kunci publik
dapat dimiliki oleh sembarang orang, tetapi kunci privat hanya dimiliki oleh
orang tertentu saja.
Besaran-besaran yang digunakan pada
algoritma RSA:
1. p dan q bilangan
prima (rahasia)
2. n = p × q (tidak
rahasia)
3. m = (p – 1)(q –
1) (rahasia)
4. e
(kunci enkripsi) (tidak
rahasia)
5. d
(kunci dekripsi) (rahasia)
6. P
(plainteks) (rahasia)
7. C
(cipherteks) (tidak
rahasia)
Untuk pembangkitan pasangan kunci RSA, digunakan
algoritma sebagai berikut:
1. Dipilih dua buah bilangan prima
sembarang yang besar, p dan q.
2. Dihitung n = p x q..
3. Dihitung m = (p – 1)(q – 1).
4. Dipilih sebuah bilangan bulat
sebagai kunci publik, disebut namanya e, e
relatif prima terhadap m artinya faktor pembagi terbesar keduanya adalah 1,
secara matematis disebut FPB (e,m) = 1. Untuk mencarinya dapat digunakan
algoritma Euclid.
5. 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.
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
1. Ambil kunci publik penerima pesan,
e, dan n
2. Nyatakan plainteks P menjadi blok-blok P1, P2, …, sedemikian
sehingga setiap blok merepresentasikan nilai di dalam selang [0, n – 1]
Setiap blok
Mi dienkripsi menjadi blok Ci dengan rumus Ci
= Pi ^ e mod n
Dekripsi
Setiap blok
cipherteks Ci didekripsi kembali menjadi blok Pi dengan rumus Pi = Ci ^ d mod n
Algoritma
Euclid
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 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,
FPB (e,m) = 1.
e = 79 => FPB (79, 3337) = 1 - Cari nilai d
d*e = 1 mod (m)
d*79 = 1 mod 3220
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 P = AKU. Pertama-tama plaintext tersebut diubah
menjadi format ASCII sebagai berikut :
Karakter A
K
U
ASCII 65
75
85
P1 = 657 P2 = 585
Setelah dibagi perblock, maka akan dihitung
menggunakan rumus Ci = Pi ^ 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 Pi = Ci ^ d mod n
- P1 = 2349 ^ 1019 mod 3337 = 657
- P2 = 685 ^ 1019 mod 3337 = 585
Maka, setelah di dekripsi hasilnya akan sama. Yaitu
657585.
Kekuatan dan Keamanan RSA
Keamanan algoritma RSA terletak pada
sulitnya memfaktorkan bilangan yang besar menjadi faktor-faktor prima.
Pemfaktoran dilakukan untuk memperoleh kunci pribadi. Selama pemfaktoran
bilangan besar menjadi faktor-faktor prima belum ditemukan algoritma yang
mangkus, maka selama itu pula keamanan algoritma RSA tetap terjamin
Kekuatan algoritma RSA terletak pada tingkat kesulitan
dalam memfaktorkan bilangan menjadi faktor primanya, dalam hal ini memfaktorkan
n menjadi p dan q. Karena sekali n berhasil difaktorkan, maka menghitung nilai
m adalah perkara mudah. Selanjutnya, walau nilai e diumumkan, perhitungan kunci
d tidaklah mudah pula karena nilai m yang tidak diketahui. Kelebihan lain
algoritma RSA terletak pada ketahanannya terhadap berbagai bentuk serangan,
terutama serangan brute force. Hal ini dikarenakan kompleksitas dekripsinya
yang dapat ditentukan secara dinamis dengan cara menentukan nilai p dan q yang
besar pada saat proses pembangitkan pasangan kunci, sehingga dihasilakan sebuah
key space yang cukup besar, sehingga tahan terhadap serangan.
SEMOGA BERMANFAAT :):):)