Sejarah Algoritma ini dikembangkan oleh Ron Rivest, Adi Shamir, dan Len Adleman pada tahun Algoritma ini sekaligus menjawab tantangan dari sebuah paper yang dibuat oleh Diffie dan Hellman tentang pendekatan baru mengenai algoritma kriptografi yang dapat memenuhi kebutuhan untuk metode kunci publik. Algoritma RivestShamirAdleman (RSA) ini adalah algoritma metode kunci publik yang paling banyak dipakai sampai saat ini.
Cara Kerja RSA merupakan algoritma yang melibatkan ekspresi dengan fungsi eksponensial. Plaintext dienkripsi dalam blokblok, dimana setiap blok tersebut mempunyai nilai biner yang kurang dari angka tertentu (n). Proses enkripsi dan dekripsi untuk plaintext blok M dan ciphertext blok C dapat digambarkan sebagai berikut : C = Me mod n M = Cd mod n = (Me)d mod n = Med mod n
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. PK (kunci enkripsi) (tidakrahasia) 5. SK (kunci dekripsi) (rahasia) 6. X (plainteks) (rahasia) 7. Y (cipherteks) (tidak rahasia)
Pembuatan Kunci 1. Hasilkan dua buah integer prima besar, p dan q Untuk memperoleh tingkat keamanan yang tinggi pilih p dan q yang berukuran besar, misalnya 1024 bit. 2. Hitung m = (p-1)*(q-1) 3. Hitung n = p*q 4. Pilih d yg relatively prime terhadap m e relatively prime thd m artinya faktor pembagi terbesar keduanya adalah 1, secara matematis disebut gcd(e,m) = 1. Untuk mencarinya dapat digunakan algoritma Euclid. 5. Cari d, sehingga e*d = 1 mod (m), atau d = (1+nm)/e Untuk bilangan besar, dapat digunakan algoritma extended Euclid. 6. Kunci publik : e, n Kunci private : d, n
Enkripsi & Dekripsi B mengenkripsi message M untuk A Yg harus dilakukan B : 1. Ambil kunci publik A yg otentik (n, e) 2. Representasikan message sebagai integer M dalam interval [0,n-1] 3. Hitung C = M ^ e (mod n) 4. Kirim C ke A Untuk mendekripsi, A melakukan : Gunakan kunci pribadi d untuk M = C^(d) (mod n) Nb: jika nilai dari pesan > nilai dari mod, maka proses dekripsi tidak akan berjalan dengan baik
Bilangan Prima 2-256
Contoh p = 3, q = 11 n = 3 * 11 = 33 m = (3-1) * (11-1) = 20 e = 2 => gcd(e, 20) = 2 e = 3 => gcd(e, 20) = 1 (yes) d = 0 => e = 1 / 3 d = 1 => e = 21 / 3 = 7 (yes) Public key : (3, 33) Private key : (7, 33) Pilih d yg relatively prime terhadap m gcd(e,m) = 1 gcd(e, 20 ) = 1 e = 2 => gcd(e, 20) = 2 (tidak) e = 3 => gcd(e, 20) = 1 (ya) e = 5 => gcd(5,20) =5 (tidak) e = 7 => gcd(7,20) =1 (ya) Asumsi dipilih e =3 Cari nilai d e*d mod (m) = 1 3*d mod 20 = 1 Dari hasi l perhitungan: misal dipilih d=7 21 mod 20 =1
Contoh (2) Try encryption : message "2“ C = 2 ^ 3 (mod 33) = 8 Try to decrypt : ciphertext "8“ M = 8 ^ 7 (mod 33) = (mod 33) = 2 Try encryption : message “14“ C = 14 ^ 3 (mod 33) = 2744 (mod 33) = 5 Decrypt : ciphertext 5 M = 5 ^ 7 (mod 33) = (mod 33) = 14
Contoh (3) Pilih 2 bilangan prima p dan q, misalnya 7 dan 17 Cari n = pq = 7 x 17 = 119 Hitung ø(n)=(p1)(q1)= (71)(171)= 96 Pilih e yang relatif prima terhadap ø(n) = 96 dan kurang dari ø(n), dalam hal ini e = 5 Tentukan d dimana ed = 1 mod ø(n) dan d < ø(n), berarti 5 x d = 1 mod 96, d = 77 karena 5 x 77 = 4 x Didapat kunci publik {5,119 } dan kunci pribadi {77,119 } Jika kita menggunakan kunci tersebut untuk mengenkripsi pesan M = 19, maka C = Me mod n = 195 mod 119 = 66 (ciphertext yang dihasilkan) Jika kita ingin mendekripsi ciphertext tersebut, kita masukkan rumus dengan kunci pribadi : M = Cd mod n = 6677 mod 119 = 19
Contoh (4) Misalkan p = 47 dan q = 71 (keduanya prima). n= p x q = 3337 dan m= (p – 1)(q – 1) = Pilih kunci publik e = 79, karena 79 relatif prima dengan e dan n dapat dipublikasikan ke umum. (e,n) = (79, 3337) Selanjutnya akan dihitung kunci dekripsi d Dengan mencoba nilai-nilai m = 1, 2, 3, …, diperoleh nilai SK yang bulat adalah Ini adalah kunci dekripsi yang harus dirahasiakan. (d,n) = (1019, 3337) C=m^e (mod n) = 10^79 mod 3337 = 3269 M=c^d (mod n) = 3269^1019 mod 3337 = 10
Aktifitas Cyptanalysis utk memecahkan kode RSA Brute force : mencoba semua kemungkinan kunci pribadi Mencoba mencari faktor p dan q, sehingga dapat dihitung ø(n). Dengan mengetahui ø(n), maka dapat ditentukan faktor d. Menentukan ø(n) secara langsung tanpa menentukan p dan q. Hal ini juga dapat menemukan hasil perhitungan dari faktor d. Menentukan d secara langsung, tanpa menentukan ø(n).
Pustaka Muhash, Algoritma RSA, 2008 Rinaldi Munir, IF5054 Kriptografi/Algoritma RSA dan ElGamal, IF-ITB Setiawan Aji, Kunci Publik, 2005 Tedi Heriyanto,Pengenalan Algoritma RSA, 2000
Terima Kasih