Algoritma RSA dibuat oleh tiga orang peneliti dari MIT (Massachussets Institute of Technology) pada tahun 1976, yaitu Ron Rivest, Adi Shamir dan Leonard Adleman. 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.
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
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.
Sumber = http://herwingoernia19.blogspot.com/2013/12/kriptografi-rsa.html
Sumber = http://herwingoernia19.blogspot.com/2013/12/kriptografi-rsa.html
NIM = A11.2016.09563
NAMA = Happy Niti Noor M
0 komentar: