dasar 002

  Teori Dasar dan Algoritma RSA Algoritma kriptografi RSA ditemukan oleh tiga orang yang kemudian nama-nama mereka

disingkat menjadi RSA. Ketiga penemu itu adalah Ron Riverst, Adi Shamir, dan Leonard

  

Adleman. RSA dibuat di MIT pada tahun 1977 dan dip atenkan oleh MIT (Massachussets

Institute of Technology) pada tahun 1983. Sejak 21 September 2000, paten tersebut berakhir,

sehingga saat ini semua orang dapatmenggunakannya dengan bebas (Brian, 2000).

  RSA merupakan algoritma kriptografi asimetris yang paling mudah untuk

diimplementasikan dan dimengerti. (Ariyus,2008) Algoritma kriptografi RSA merupakan

algoritma yang termasuk dalam kategori algoritma asimetri atau algoritma kunci publik.

Algoritma kriptografi RSA Universitas Sumatera Utara 15 didesain sesuai fungsinya sehingga

kunci yang digunakan untuk enkripsi berbeda dari kunci yang digunakan untuk dekripsi.

  Algoritma RSA disebut kunci publik karena kunci enkripsi dapat dibuat publik yang

berarti semua orang boleh mengetahuinya, namun hanya orang tertentu (si penerima pesan

sekaligus pemilik kunci dekripsi yang merupakan pasangan kunci publik) yang dapat melakukan

dekripsi terhadap pesan tersebut. Keamanan algoritma RSA didasarkan pada sulitnya

memfaktorkan bilangan besar menjadi faktor-faktor primanya (Sulistyanto, 2004).

Secara umum ada beberapa besaran-besaran yang harus diperhatikan dalam algoritma RSA,

yaitu: p dan q adalah bilangan prima (rahasia) n = p.q (tidak rahasia)

  φ (n) = (p-1)(q-1) (rahasia) e (kunci enkripsi) (tidak rahasia) d (kunci dekripsi) (rahasia) m (plaintext) (tidak rahasia) c (chipertext) (rahasia)

  Konsep Dasar Perhitungan Matematis Dalam setiap proses pada algoritma RSA terdapat perhitungan matematis. Pada proses

pembangkitan kunci dibutuhkan perhitungan untuk menentukan nilai Totient n dan perhitungan

dengan algoritma Euclidean untuk menentukan nilai dua buah bilangan yang relatif prima.

Sedangkan pada proses enkripsi dan dekripsi dilakukan perhitungan menggunakan metode Fast

Exponentiation.

  Menghitung FPB menggunakan algoritma Euclidean A = 80 B = 12 Dan dipenuhi syarat A B

  80 = 6 * 12 + 8 12 = 1 * 8 + 4 8 = 1 * 4 + 0 Langkah-langkah mencari gcd(80,12) dengan algoritma Euclidean yaitu :

  1. 80 dibagi 12 = 6, sisa 8 ( atau 80 = 6 * 12 + 8 ) 2. 12 dibagi 8 = 1, sisa 4 ( atau 12 = 1 * 8 + 4 ) 3. 8 dibagi 4 = 2, sisa 0 (atau 8 = 2 * 4 + 0)

Pembagian terakhir menghasilkan 0, maka sisa pembagian terakhir sebelum 0, yaitu 4. Jadi gcd

  (80,12) = 4

Algorimakriptografi RSA terdiridarialgoritmaenkripsi RSA

danalgoritmadekripsi RSA. Algoritma RSA adalahsebagaiberikut :

  Pembangkitan sepasang kunci  o Pilih dua bilangan prima sembarang, p dan q o Hitung n = p ×q o Hitung (n) = (p – 1)(q – 1) o Pilih kunci public e, yang relative prima terhadap ϕ(n). o Bangkitkan kunci privat dengan rumus : e

  

 d  1 (mod (n))

atau

1+( k×φ (n)) d= e

dengan k = 1,2,3,4,5 … n

Hasil dari algoritma diatas adalah

  1. Kunci public (e,n) private (d,n)

  2. Kunci Enkripsi  o Ambil kunci public (e dan n). o Pecah plainteks menjadi blok-blok m 1 , m 2 , m 3 …, sehingga setiap blok merepresentasikan nilai di dalam selang [0, n-1]. o Setiap blok m i di enkripsi menjadi blok c i dengan rumus c i = m i

e

mod n e=kunci publik

   Deskripsi o Gunakankunciprivate(d dan n) o Untukmendapatkanplaintekskembali, blokcipherteks ci didekripsimenjadiblok m i denganrumus m i = c i

d

mod n d=kunci private

  9

  10

  9

  11

  3

  12

  7

  13

  1

  13

  7

  13

  9

  14

  15

  10

  1

  15

  7

  16

  3

  16

  7

  17

  3

  17

  9

  18

  1

  19

  7

  3

  Contoh : Karakter :TAMAN Penyelesaian : Yang dilakukan untuk mendapatkan Public key dan privat key :

  37

   Pilih 2 bilangan prima

p dan q, misalnya 13 dan17

 Cari n = p*q = 13 * 17 = 221

   Hitung ø( n)=(p-1)(q-1)= (13-1)(17-1)= 192  Pilih e yang relatif prima terhadap ø(n) = 192 maksudnya pilih angka prima sampai batasakhirnya 192

  2

  3

  5

  7

  11

  13

  17

  19

  23

  29

  31

  41

  10

  43

  47

  53

  59

  61

  67

  71

  73

  79

  83

  89

  97

  10

  1

  1 Dengan Tabel bilangan prima dari 0–192kitacari GCD

  Gcd(2,192)=2 Gcd(3,192)=3 Gcd(5,192)=1 Gcd(7,192)=1 Gcd(11,192)=1 Gcd(13,192)=1 Gcd(17,192)=1 Gcd(19,192)=1 Gcd(23,192)=1 Gcd(29,192)=1 Gcd(31,192)=1 Gcd(37,192)=1 Gcd(41,192)=1 Gcd(43,192)=1 Gcd(47,192)=1 Gcd(53,192)=1 Gcd(59,192)=1 Gcd(61,192)=1 Gcd(67,192)=1 Gcd(71,192)=1 Gcd(73,192)=1 Gcd(79,192)=1 Gcd(83,192)=1 Gcd(89,192)=1 Gcd(97,192)=1 Gcd(101,192)=1 Gcd(103,192)=1 Gcd(107,192)=1

  Gcd(109,192)=1 Gcd(113,192)=1 Gcd(127,192)=1 Gcd(131,192)=1 Gcd(137,192)=1 Gcd(139,192)=1 Gcd(149,192)=1 Gcd(151,192)=1 Gcd(157,192)=1 Gcd(163,192)=1 Gcd(167,192)=1 Gcd(173,192)=1 Gcd(179,192)=1 Gcd(181,192)=1 Gcd(191,192)=1

  Cara mencari gcd menggunakan algoritma Euclidean :

  192 = 96 *2 + 0 192 = 64*3+0

  192 = 38*5+2 5 = 2*2+1 2 = 2*1+0

  192 = 27*7+3 7 = 2*3+1 3 = 3*1+0

  192 = 14*13+10 192 = 11*17+5 192 = 14*19+10 192 = 17*11+5 13 = 1*10+3 17 = 3*5+2 13 = 1*10+3 11 = 2*5+1

  10 = 3*3+1 5 = 2*2+1 10 = 3*3+1 5 = 5*1+0 3 =3*1+0 2 =2*1+0 3 =3*1+0 192 = 6*29+18

  29 = 1*18+11 192 = 8*23+8 192 = 6*31+6 192 = 5*37+7 18 = 1*11+7 23 = 2*8+7 31 = 5*6+1 37 = 5*7+2

  11 =1*7+4 8 = 1*7+1 6 = 6*1+0 7 = 3*2+1 7 = 1*4+3

  1=1*1+0 2 = 2*1+0 4 = 1*3+1

  1 = 1*1+0 192 = 3*53+33 192 = 4*41+28 192 = 4*43+20 53 = 1*33+20 192 = 4*47+4

  41 = 1*28+13 43 = 2*20+3 33 = 1*20+13 47 = 11*4+3 28 = 2*13+2 20 = 6*3+2 20 =1*13+7 4 = 1*3+1

  13 = 6*2+1 3 = 1*2+1 13 = 1*7+6 3 =3*1+0 2 = 2*1+0 2 = 2*1+0 7 = 1*6+1 6 = 6*1+0

  192 = 3*61+9 192 = 2*67+58 192 = 3*61+9 192 = 3*59+15 61 = 6*9+7 67 = 1*58+9 61 = 6*9+7 59 = 3*15+14

  9 = 1*7+2 58 = 6*9+4 9 = 1*7+2 15 = 1*14+1 7 = 3*2+1 9 = 2*4+1 7 = 3*2+1 14 = 14*1+0 2 = 2*1+0 1 = 1*1+0 2 = 2*1+0 192 = 2*73+46

  73 = 1*46+27 192 = 2*89+14 46 = 1*27+19 192 = 2*79+34 192 = 2*83+26

  89 = 6*14+5 27 = 1*19+8 79 = 2*34+11 83 = 3*26+5 14 = 2*5+4 19 = 2*8+3 34 = 3*11+1 26 = 5*5+1

  5 = 1*4+1 8 = 2*3+2 11 = 11*1+0 5 = 5*1+0 4 = 4*1+0 3 = 1*2+1

  2 = 2*1+0 192 = 1*103+89 192 = 1*107+85 192 = 1*97+95 192 = 1*101+91 103 = 1*89+14 107 = 1*85+22 97 = 1*95+2 101 = 1*91+10 89 = 6*14+5 85 = 3*22+19

  95 = 47*2+1 91 = 9*10+1 14 = 2*5+4 22 = 1*19+3 2 = 2*1+0 10 = 10*1+0 5 = 1*4+1 19 = 6*3+1 4 = 4*1+0 3 = 3*1+0 192 = 1*107+85 192 = 1*113+79 192 = 1*127+65 192 = 1*131+61

  107 = 1*85+22 113 = 1*79+34 127 = 1*65+62 131 = 2*61+9 85 = 3*22+19 79 = 2*34+11 65 = 1*62+3 61 = 6*9+7

  19 = 6*3+1 3 = 3*1+0 11 = 11*1+0 3 = 1*2+1

  192 = 1*181+11 181 = 16*11+5 11 = 2*5+1 5 = 5*1+0

  = 1+( 2∗192 ) 5 =

  1+( k×ø (n )) e

  38 ,6 k = 2 d=

  = 1+(1∗192 ) 5 =

  1+( k×ø (n )) e

  Kami mencoba beberapa nilai k = 1, 2, 3 dan 4 k = 1 d=

  1+( k×ø (n )) e dengan mencoba memasukkan nilai k = 1,2,3,4,5,.... sampai diperoleh nilai d merupakan bilangan bulat.

   Tentukannilai d,dihitungdenganrumus e*d mod ø(n) = 1 atau d=

  

Dari hasil gcd diatas, sesuai dengan syarat gcd(e,ø(n))=1, maka kita memilih

gcd(5,192)=1 dengan nilai e=5.

  192 = 1*191+1 191 = 191*1+0

  192 = 1*179+13 179 = 13*13+10 13 = 1*10+1 10 = 10*1+0

  2 = 2*1+0 7 = 3*2+1 2 = 2*1+0 192 = 1*137+55

  192 = 1*173+19 173 = 9*19+2 19 = 9*2+1 2 = 2*1+0

  167 = 6*25+17 25 = 1*17+8 17 = 2*8+1 8 = 8*1+0

  7 = 1*4+3 4 = 1*3+1 3 = 3*1+0 192 = 1*167+25

  163 = 5*29+18 29 = 1*18+11 18 = 1*11+7 11 = 1*7+4

  157 = 4*35+17 35 = 2*17+1 17 = 17*1+0 192 = 1*163+29

  28 = 2*13+2 13 = 6*2+1 2 = 2*1+0 192 = 1*157+35

  2 = 2*1+0 192 = 1*151+41 151 = 3*41+28 41 = 1*28+13

  149 = 3*43+20 43 = 2*20+3 20 = 6*3+2 3 = 1*2+1

  13 = 1*7+6 7 = 1*6+1 6 = 6*1+0 192 = 1*149+43

  139 = 2*53+33 53 = 1*33+20 33 = 1*20+13 20 = 1*13+7

  137 = 2*55+27 55 = 2*27+1 27 = 27*1+0 192 = 1*139+53

  77

  k = 3 k = 4 1+( k×ø (n )) 1+(3∗192) 1+( k×ø (n )) 1+(4∗192 ) = = = = d= 115, 4 d= 153 ,8 e

  5 e

  5 Yang dilakukan untukmengenkripsi : Didapatkuncipublik(e,n) adalah (5,221)dankunciprivate(d,n) adalah(77,221)  Selanjutnya kitamengenkripsi pesan tersebut menggunakan tabel ASCII

   lampiran): ( T a m a n

  84 97 109 97 110 Enkripsi berdasarkan tabel ASCII : 84 97 109 97 110 Nilai n = 221 sehingga selang blok-bloknya menjadi 0 sampain-1 = 220

   Pecah chipper diatas menjadi blok-blok m , m  1 2 , m 3 ... m i 1 = m

  84 2 = m

  97 3 = m 109 m 4 =

  97 m 5 = 110

  e  Enkripsikan setiap blok menggunakan rumus c i = m i mod dangunakankuncipublik(e,n) adalah (5,221) n

  5 1 = C 84 mod 221 = 67

  5 2 = C 97 mod 221 = 54

  5 3 = C 109 mod 221 =96

  5 C 4 = 97 mod 221 =54

5 C 5 = 110 mod 221 =145

  Chippertext : 67549654145

   Yang dilakukan untukmendekripsikan : Chippertext : 67549654145  Ambilkuncikunciprivate(d,n) adalah(77,221)untukmendeskripsikan.

   Selanjutnya tentukan selang dengan n = 221 maka selang menjadi [0 , n-1]  yaitu dari 0 sampai 220. Diblok-blok menjadi  1 = 4 =

  C

67 C

  54 2 = 5 =

  C

  54 C 145 C 3 =

  96 d

   Lalu dekripsikan menggunakan m i = c i mod denganmenggunakankunciprivate(d,n) adalah(77,221) n

  77 m 1 = 67 mod 221 = 84

  77 2 = m 54 mod 221 =97 m 3 =

  96

  77 mod 221 = 109 m 4 =

  54

  77 mod 221 = 97 m 5 = 145

  77 mod 221 = 110

  

 Untuk melihathasilnya kita dapat melihat tabel ASCII

  84 97 109 97 110

  T a m a n Sehinggamenjadi :Taman

  TABEL ASCII