RSA (Rivest—Shamir—Adleman) Pendahuluan • Algoritma kunci-publik yang paling terkenal dan paling banyak aplikasinya. • Ditemukan oleh tiga peneliti dari MIT (Massachussets Institute of Technology), yaitu Ron Rivest, Adi Shamir, dan Len Adleman, pada tahun 1976. • Keamanan algoritma RSA terletak pada sulitnya memfaktorkan bilangan yang besar menjadi faktor-faktor prima. 2 Prinsip RSA • “User A” menciptakan sebuah public key yang kemudian dipublikasikan agar semua orang yang akan mengirim pesan dapat mengenkripsikan pesan dan data yang akan dikirimkan. • Karena public key merupakan one way function maka mustahil bagi orang untuk membalik prosesnya dan mendeskripsikan pesan yang dikirim. • Orang yang menciptakan public key tersebut kemudian dapat mendeskripsikan pesan tersebut dengan menggunakan privat key yang dimilikinya sendiri sehingga dengan menggunakan algoritma ini hanya “ User A ” sajalah yang dapat mendeskripsikan pesanpesan dan data-data yang dikirim. 1. 2. 3. 4. p dan q bilangan prima (rahasia) n=pq (tidak rahasia) (n) = (p – 1)(q – 1) (rahasia) e (kunci enkripsi) (tidak rahasia) Syarat: PBB(e, (n)) = 1 5. d (kunci dekripsi) (rahasia) d dihitung dari d e-1 mod ((n) ) 6. m (plainteks) (rahasia) 7. c (cipherteks) (tidak rahasia) Rinaldi Munir/Teknik Informatika - STEI - ITB Properti Algoritma RSA 4 Pembangkitan Sepasang Kunci 1. 2. 3. 4. Pilih dua bilangan prima, p dan q (rahasia) Hitung n = pq. Hitung (n) = (p – 1)(q – 1). Pilih sebuah bilangan bulat e untuk kunci publik, sebut, e relatif prima terhadap (n) . 5. Hitung kunci dekripsi, d, dengan persamaaan ed 1 (mod (n)) atau d e-1 mod ((n) ) Hasil dari algoritma di atas: - Kunci publik adalah pasangan (e, n) - Kunci privat adalah pasangan (d, n) 5 (n) ?? (n) = Toitent Euler = fungsi yang menentukan berapa Contoh: (20) = 8, sebab terdapat 8 buah yang relatif prima dengan 20, yaitu 1, 3, 7, 9, 11, 13, 17, 19. Jika n = pq adalah bilangan komposit dengan p dan q prima, maka (n) = (p) (q) = (p – 1)(q – 1). Rinaldi Munir/Teknik Informatika - STEI - ITB banyak dari bilangan-bilangan 1, 2, 3, …, n yang relatif prima terhadap n. 6 Rumus dari RSA • Enkripsi • Cipher = Plaintext ^ e (mod n) • Dekripsi • Plaintext = Cipher ^ d (mod n) Note: Public Key = e, n Private Key= d, n Prosedur Pembuatan Key 1. Pilih dua buah bilangan prima sembarang, p dan q. (Diutamakan bilangan prima terbesar) Misal: p = 5, q = 11 2. Hitung n = p q. Sebaiknya p q, sebab jika p = q maka n = p2 sehingga p dapat diperoleh dengan menarik akar pangkat dua dari n. n=p.q n = 55 3. Hitung (n) = (p – 1)(q – 1). (n) = (5-1)(11-1) (n) = 40 Dalam kasus ini (n) = 40, maka, n = 2, => FPB (2,40) = 2 (Salah) n= 3, => FPB (3,40) = 1 (BENAR) Prosedur Pembuatan Key (Cont.) 4.Buat kunci publik, PK (Public Key), yang relatif prima terhadap (n) Relatif prima = “Dua buah bilangan dikatakan relatif prima jika FPB (Faktor Persekutuan Terbesar) dari dua bilangan tersebut adalah 1 algoritma Euclid” Dalam kasus ini (n) = 40, maka, n = 2, => FPB (2,40) = 2 (Salah) n= 5, => FPB (3,40) = 1 (BENAR) karena FPB (3,40) = 1, maka PK = 1 Prosedur Pembuatan Key (Cont.) 5. Buat kunci private, SK (Secret Key / Private Key), dengan rumus: SK = 1 +( m (n) ) PK *Syarat SK = Bilangan Bulat 𝟏 + ( 𝒌 ∗ (n)) 𝒅= 𝒆 Misal: m=0, 1+( 0(40) ) /3 = 1/3 m=1, 1+( 1(40) ) /3 = 41/3 m=2, 1+( 2(40) ) /3 = 27 (Salah) (Salah) (Benar) m=0, 1+( 0(40) ) /7 = 1/7 m=1, 1+( 1(40) ) /7 = 41/7 m=2, 1+( 2(40) ) /7 = 81/7 M=4, 1+(4(40) ) /7 = 161/7 => 23 (Salah) (Salah) (salah) (Benar) Karena SK = 27 (Bilangan Bulat), maka SK = 27 Jadi PK = (3,55) SK = (27,55) Enkripsi Cipher = Plaintext ^ e (mod n) • Misalkan plainteks M = ‘HARI INI’ atau dalam ASCII: 7265827332737873 Pecah M menjadi blok yang 3 digit: 726.582.733.273.787.003 m1 = 726 m4 = 273 m2 = 582 m5 = 787 m3 = 733 m6 = 003 • Enkripsi setiap blok e = 3: c1 = 7263 mod 55 = 11 c2 = 5823 mod 55 = 43 dst • Enkripsi setiap blok e = 3: c1 = 7263 mod 55 = 11 c2 = 5823 mod 55 = 43 dst • Dekripsi (menggunakan kunci privat sk= 27) m1 = 1127 mod 55 = 726 m2 = 4327 mod 55 = 582 dst untuk sisi blok lainnya Contoh 1 Pembentukan Sepasang Kunci Contoh lain: n = p q = 3337 (n) = (p – 1)(q – 1) = 3220. • Pilih kunci publik e = 79 (yang relatif prima dengan 3220 karena pembagi bersama terbesarnya adalah 1). • Nilai e dan n dapat dipublikasikan ke umum. Rinaldi Munir/Teknik Informatika - STEI - ITB • Misalkan dipilih p = 47 dan q = 71 (keduanya prima), maka dapat dihitung: 15 Bagaimana dikatakan Relatif Prima ?? • Definisi: Jika faktor persekutuan terbesar dua bilangan bulat positif p dan q adalah 1, maka p dan q disebut relatif prima. • Contoh : 3 dan 5 adalah relatif prima karena FPB(3, 5) = 1 31 dan 120 adalah relatif prima karena FPB(31, 120) = 1. 9 dan 132 bukan relatif prima karena FPB(9, 132) = 3. • Perhatikan bahwa semua bilangan bulat positif kurang dari bilangan prima p adalah relatif prima terhadap p. • Misalkan setiap bilangan 1, 2, 3, 4, 5, dan 6 adalah relatif prima terhadap bilangan prima 7. • Selanjutnya akan dihitung kunci privat d dengan kekongruenan: atau 𝟏 + ( 𝒌 ∗ (n)) 𝒅= 𝒆 1 (k 3220 ) d 79 Dengan mencoba nilai-nilai k = 1, 2, 3, …, diperoleh nilai d yang bulat dengan k=25 adalah 1019. Ini adalah kunci privat (untuk dekripsi). Rinaldi Munir/Teknik Informatika - STEI - ITB e d 1 (mod (n)) 17 Pecah M menjadi blok yang 3 digit: 726.582.733.273.787.003 m1 = 726 m4 = 273 m2 = 582 m5 = 787 m3 = 733 m6 = 003 Rinaldi Munir/Teknik Informatika - STEI - ITB • Misalkan plainteks M = ‘HARI INI’ atau dalam ASCII: 7265827332737873 18 • Dekripsi (menggunakan kunci privat d = 1019) m1 = 2151019 mod 3337 = 726 m2 = 7761019 mod 3337 = 582 dst untuk sisi blok lainnya Plainteks M = 7265827332737873 yang dalam ASCII adalah ‘HARI INI’. Rinaldi Munir/Teknik Informatika - STEI - ITB • Enkripsi setiap blok e = 79: c1 = 72679 mod 3337 = 215 c2 = 58279 mod 3337 = 776 dst Hasil: C = 215 776 1743 933 1731 158. 19 Kekuatan dan Keamanan RSA • Kekuatan algoritma RSA terletak pada tingkat kesulitan dalam memfaktorkan bilangan menjadi faktor-faktor prima, yang dalam hal ini n = a b. • Sekali n berhasil difaktorkan menjadi a dan b, maka (n) = (a – 1)(b – 1) dapat dihitung. Selanjutnya, karena kunci enkripsi e diumumkan (tidak rahasia), maka kunci dekripsi d dapat dihitung dari persamaan ed 1 (mod n). 20 • Penemu algoritma RSA menyarankan nilai a dan b panjangnya lebih dari 100 digit. Dengan demikian hasil kali n = a b akan berukuran lebih dari 200 digit. • Usaha untuk mencari faktor bilangan 200 digit membutuhkan waktu komputasi selama 4 milyar tahun! (dengan asumsi bahwa algoritma pemfaktoran yang digunakan adalah algoritma yang tercepat saat ini dan komputer yang dipakai mempunyai kecepatan 1 milidetik). 21 Contoh RSA 512 bit (dikutip dari Sarwono Sutikno, EL) • Modulus n = 81 5a d0 b9 0a ac 9f 4c da cc 57 6e ca a7 6a c3 46 92 a7 81 68 ec 08 ec 77 dd 40 c2 ec 97 52 cb 3b 34 2c b6 a6 e2 76 3a ed 42 84 fa 55 ac 0d 6c 10 39 a2 7e a3 09 be 40 35 38 04 7d 06 43 1f 6f • e = 29 40 70 02 50 db 19 6b b1 f4 8a a7 b4 59 6c 4b 66 b5 94 f6 15 ae e4 69 44 95 23 f3 d0 fc ea 84 19 7c 55 e0 27 40 2d 19 18 15 08 05 51 ac f5 98 91 f0 98 5f c4 17 05 eb 3b e8 a3 04 32 d4 20 2f • d = 59 f1 2f 29 73 d0 bc 8e 13 6e 2a 21 53 2c b7 4d 69 82 c9 54 92 6c 64 43 0d 69 15 83 e9 44 a6 de 5e 30 e9 ae 48 f9 c8 84 a4 16 44 4d df 50 f2 0e 96 3e 24 df a4 f4 ec 3d c6 db 61 a7 e6 dc ea cf 22 Panjang desimal n 100 110 120 129 130 Panjang n dalam bit (perkiraan) 332 365 398 428 431 Perolehan Data April 1991 April 1992 June 1993 April 1994 April 1996 MIPS-Year 7 75 830 5000 500 Ket: MIPS-Year = million instructions-per-second processor running for one year, setara dengan eksekusi 3 x 1013 instruksi Prosesor Pentium 200 MHz setara dengan mesin 50-MIPS 23 • Secara umum dapat disimpulkan bahwa RSA hanya aman jika n cukup besar. • Jika panjang n hanya 256 bit atau kurang, ia dapat difaktorkan dalam beberapa jam saja dengan sebuah komputer PC dan program yang tersedia secara bebas. • Jika panjang n 512 bit atau kurang, ia dapat difaktorkan dengan beberapa ratus komputer [WIK06] 24 • Tahun 1977, 3 orang penemu RSA membuat sayembara untuk memecahkan cipherteks dengan menggunakan RSA di majalah Scientific American. • Hadiahnya: $100 • Tahun 1994, kelompok yang bekerja dengan kolaborasi internet berhasil memecahkan cipherteks hanya dalam waktu 8 bulan. 25 Kelemahan RSA • RSA lebih lambat daripada algoritma kriptografi kuncisimetri seperti DES dan AES • Dalam praktek, RSA tidak digunakan untuk mengenkripsi pesan, tetapi mengenkripsi kunci simetri (kunci sesi) dengan kunci publik penerima pesan. • Pesan dienkripsi dengan algoritma simetri seperti DES atau AES. • Pesan dan kunci rahasia dikirim bersamaan. • Penerima mendekripsi kunci simetri dengan kunci privatnya, lalu mendekripsi pesan dengan kunci simetri tersebut. 26 Serangan terhadap RSA 1. Man-in-the-middle attack Pihak “di tengah” berlaku sebagai salah satu pihak yang berkomunikasi. Tujuan: memperoleh pesan rahasia 2. Chosen-Plaintext Attack Tujuan: mempelajari isi pesan. 27 quiz p = any prime number (24 – 42) q=5 1. 2. 3. 4. 5. Public Key = ?? Private Key = ?? Plaintext : K R I P T O 75 82 73 80 84 79 Pilih dua bilangan prima, p dan q (rahasia) Hitung n = p.q Hitung (n) = (p – 1)(q – 1). Pilih sebuah bilangan bulat e untuk kunci publik, sebut, e relatif prima terhadap (n) . Hitung kunci dekripsi, d, dengan persamaaan ed 1 (mod (n)) atau d e-1 mod ((n) ) 𝟏 + ( 𝒌 ∗ (n)) 𝒅= 𝒆 Hasil dari algoritma di atas: - Kunci publik adalah pasangan (e, n) - Kunci privat adalah pasangan (d, n) Sekian dan Terima Kasih