RSA RivestShamirAdleman Pendahuluan Algoritma kuncipublik yang paling terkenal
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 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 pesan dan data-data yang dikirim.
1. 2. 3. 4. p dan q bilangan prima (rahasia) n=p q (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 = p 2 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 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) (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) (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 m 1 = 726 m 4 = 273 m 2 = 582 m 5 = 787 m 3 = 733 m 6 = 003 • Enkripsi setiap blok e = 3: c 1 = 7263 mod 55 = 11 c 2 = 5823 mod 55 = 43 dst
• Enkripsi setiap blok e = 3: c 1 = 7263 mod 55 = 11 c 2 = 5823 mod 55 = 43 dst • Dekripsi (menggunakan kunci privat sk= 27) m 1 = 1127 mod 55 = 726 m 2 = 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 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 m 1 = 726 m 4 = 273 m 2 = 582 m 5 = 787 m 3 = 733 m 6 = 003 Rinaldi Munir/Teknik Informatika - STEI - ITB • Misalkan plainteks M = ‘HARI INI’ atau dalam ASCII: 7265827332737873 18
• Dekripsi (menggunakan kunci privat d = 1019) m 1 = 2151019 mod 3337 = 726 m 2 = 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: c 1 = 72679 mod 3337 = 215 c 2 = 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 5 a d 0 b 9 0 a ac 9 f 4 c da cc 57 6 e ca a 7 6 a c 3 46 92 a 7 81 68 ec 08 ec 77 dd 40 c 2 ec 97 52 cb 3 b 34 2 c b 6 a 6 e 2 76 3 a ed 42 84 fa 55 ac 0 d 6 c 10 39 a 2 7 e a 3 09 be 40 35 38 04 7 d 06 43 1 f 6 f • e = 29 40 70 02 50 db 19 6 b b 1 f 4 8 a a 7 b 4 59 6 c 4 b 66 b 5 94 f 6 15 ae e 4 69 44 95 23 f 3 d 0 fc ea 84 19 7 c 55 e 0 27 40 2 d 19 18 15 08 05 51 ac f 5 98 91 f 0 98 5 f c 4 17 05 eb 3 b e 8 a 3 04 32 d 4 20 2 f • d = 59 f 1 2 f 29 73 d 0 bc 8 e 13 6 e 2 a 21 53 2 c b 7 4 d 69 82 c 9 54 92 6 c 64 43 0 d 69 15 83 e 9 44 a 6 de 5 e 30 e 9 ae 48 f 9 c 8 84 a 4 16 44 4 d df 50 f 2 0 e 96 3 e 24 df a 4 f 4 ec 3 d c 6 db 61 a 7 e 6 dc ea cf 22
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 [WIK 06] 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) ) Hasil dari algoritma di atas: - Kunci publik adalah pasangan (e, n) - Kunci privat adalah pasangan (d, n)
Sekian dan Terima Kasih
- Slides: 29