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= edengan k = 1,2,3,4,5 … n
Hasil dari algoritma diatas adalah1. 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 private9
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