Kriptografi Kunci Publik: Sandi RSA
KRIPTOGRAFI KUNCI PUBLIK: SANDI RSA Oleh: M. Zaki Riyanto Program Studi Matematika, Fak. Sains dan Teknologi UIN Sunan Kalijaga Yogyakarta
1. Sandi RSA
(n) n 1 . Bukti pernyataan di atas dapat dilihat di
Sandi RSA merupakan algoritma kriptografi kunci publik (asimetris). Ditemukan pertama kali pada tahun 1977 oleh R. Rivest, A. Shamir, dan L. Adleman. Nama RSA sendiri diambil dari ketiga penemunya tersebut. Sebagai algoritma kunci publik, RSA mempunyai dua kunci, yaitu kunci publik dan kunci rahasia. Kunci publik boleh diketahui oleh siapa saja, dan digunakan untuk proses enkripsi. Sedangkan kunci rahasia hanya pihak-pihak tertentu saja yang boleh mengetahuinya, dan digunakan untuk proses dekripsi. Keamanan sandi RSA terletak pada sulitnya memfaktorkan bilangan yang besar. Sampai saat ini RSA masih dipercaya dan digunakan secara luas di internet.
(Fraleigh, 2000), (Buchmann, 2000), dan (Stinson, 2006).
Kunci Publik Plainteks A
enkripsi
Plainteks B
dekripsi
Gambar 1. Skema algoritma kunci publik Sandi RSA terdiri dari tiga proses, yaitu proses pembentukan kunci, proses enkripsi dan proses dekripsi. Sebelumnya diberikan terlebih dahulu beberapa konsep perhitungan matematis yang digunakan RSA.
2. Konsep Dasar Perhitungan Matematis 2.1. Fungsi Phi-Euler Fungsi Phi-Euler ( n)
merupakan fungsi terhadap
bilangan bulat positif n yang menyatakan banyaknya elemen n yang mempunyai invers terhadap operasi perkalian modulo n. Ingat bahwa
n
belum tentu
merupakan grup terhadap operai perkalian modulo n. Dengan kata lain, ( n) adalah banyaknya elemen
x
n
dihitung menggunakan algoritma pembagian: r0 q1r1 r2 , 0 r2 r1 r1 q2 r2 r3 ,
rn 2
0 r3 r2
... qn 1rn 1 rn , 0 rn rn 1
rn 1 qn rn
Kunci Rahasia cipherteks
2.2. Algoritma Euclide Algoritma ini digunakan untuk mencari nilai pembagi persekutuan terbesar dari dua bilangan bulat. Algoritma ini didasarkan pada pernyataan berikut ini. Diberikan bilangan bulat r0 dan r1 , dengan r0 r1 , kemudian
| gcd( x, n) 1 . Jika n pq dengan p dan q
adalah bilangan prima yang berbeda, maka (n) ( p 1)( q 1) . Jika n adalah bilangan prima, maka
Dari pernyataan di atas, dapat ditunjukkan bahwa gcd(r0 , r1 ) gcd(r1 , r2 ) ... gcd( rn 1 , rn ) gcd( rn , 0) rn . Bukti lihat di (Buchmann, 2000) Contoh 1. Akan dihitung gcd(40,24). Jawab: 40 = 1.24 + 16 24 = 1.16 + 8 16 = 2.8 Jadi, gcd(40,24)=8. 2.3. Algoritma Euclide yang Diperluas Algoritma ini merupakan perluasan dari algoritma Euclide (Extended Euclidean Algorithm), digunakan untuk mencari invers terhadap operasi perkaliann. Algoritma ini didasarkan pada pernyataan berikut. Diberikan bilangan bulat positif r0 dan r1 , r0 r1 . Jika
gcd r0 , r1 1 , maka r11 mod r0 ada. Jika gcd r0 , r1 1 , maka r11 mod r0 tidak ada. Gunakan rumus rekurensi berikut ini. t0 0 , t1 1
t j t j 2 q j 1t j 1 , j 2 ....................... (1)
1 http://zaki.sandimath.web.id
Kriptografi Kunci Publik: Sandi RSA
Keterangan: q j diperoleh dari perhitungan gcd r0 , r1 menggunakan algoritma Euclide. Jika gcd r0 , r1 1 ,
Setelah mempelajari konsep-konsep dasar perhitungan matematis, berikut ini diberikan prosesproses yang digunakan RSA.
berarti r11 tn . Sehingga rn tn r1 atau 1 tn r1 . Bukti
3. Pembentukan Kunci
bisa dilihat di (Stinson, 2006). 1
Contoh 2. Akan dihitung 28 mod 75 . Diketahui r0 75 dan r1 28 . Hitung gcd(75, 28) menggunakan algoritma Euclide, yaitu: 75 = 2.28 + 19 n = 1, r1 28 , q1 2 28 = 2.19 + 9
n = 2, r2 19 , q2 2
19 = 2.9 + 1
n = 3, r3 9 ,
q3 2
9 = 9.1
n = 4, r4 1 ,
q4 9
Berikut ini adalah proses pembentukan kunci. Proses ini dilakukan oleh pihak penerima, dalam hal ini adalah B. (1) Pilih bilangan prima p dan q. (2) Hitung n pq . (3) Hitung (n) ( p 1)( q 1) . (4) Pilih sebarang bilangan b, 1 b ( n ) , dengan gcd(b, (n)) 1 .
(5) Hitung invers dari b, yaitu a b1 mod (n) .
Jadi, gcd(75, 28) = 1, dengan kata lain 281 mod 75 ada. Dari penyelesaian algoritma Euclide di atas diperoleh diperoleh n = 4. Selanjutnya, menggunakan rumus rekurensi (1) di atas, diperoleh: (semua perhitungan dilakukan dalam mod 75) t2 t0 q1t1 0 2.1 2 73 t3 t1 q2 t2 1 1.(2) 3 t4 t2 q3t3 2 2.3 8 67
r4 t4 r1 67.28 1 67 281 Dari hasil terakhir di atas, diperoleh 281 mod 75 67 . 2.4. Metode Fast Exponentiation Metode ini digunakan untuk menghitung operasi pemangkatan besar bilangan bulat modulo dengan cepat. Metode ini memanfaatkan ekspansi biner dari eksponennya dan didasarkan pada pernyataan berikut ini:
g
.
2i 1
g
2i
Contoh 3. Akan dihitung 673 mod100 . Jawab. (semua perhitungan dilakukan dalam mod 100)
62 6 , 62 36 , 62 362 96 , 62 16 , 2
3
62 162 56 , 62 562 36 , 62 562 96 . Sehingga diperoleh: 4
5
673 6.62 .62 6.16.96 16 . 3
6
plainteks yang mungkin. Dalam hal ini n pq 25 . Tabel 1. Tabel Korespondensi a
b
c
d
e
f
g
h
i
j
k
l
m
0
1
2
3
4
5
6
7
8
9
10
11
12
n
o
p
q
r
s
t
u
v
w
x
y
z
13
14
15
16
17
18
19
20
21
22
23
24
25
Contoh 4. Alice akan mengirimkan pesan rahasia kepada Bob menggunakan RSA, maka Bob harus melakukan proses pembentukan kunci. Bob memilih p 5 dan
q 11 ,
73 1.26 1.23 1.20 atau 73 = 10010012 . 1
Agar mempermudah dalam memahami sandi RSA, pada tulisan ini diberikan contoh yang sangat sederhana, plainteks yang digunakan hanya berupa bilangan 0 s/d 25 yang berkorespondensi dengan huruf a s/d z. Akan tetapi pada penggunaan yang sebenarnya, digunakan korespondensi khusus seperti kode ASCII, serta bilangan-bilangan yang sangat besar. Perhatikan, dalam pemilihan p dan q harus memenuhi n pq lebih dari atau sama dengan nilai
2
Untuk lebih jelasnya mengenai langkah-langkah metode fast exponentiation, perhatikan contoh berikut ini.
0
(6) Kunci publik: (n, b) dan kunci rahasia: a.
6
sehigga
diperoleh
(55) (5 1)(11 1) 4.10 40 .
n 55 Selanjutnya
dan dapat
dipilih b 13 , sebab gcd(13, 40) 1 . Menggunakan algoritma
Euclide
diperluas
diperoleh
bahwa
a 131 mod 40 37 . Jadi, kunci publiknya adalah (n, b) (55,13) dan kunci rahasianya adalah a 37 .
Selanjutnya Bob mengirimkan kunci publik kepada Alice.
Jadi, 673 mod100 = 16.
2 http://zaki.sandimath.web.id
Kriptografi Kunci Publik: Sandi RSA
4. Enkripsi
m5 c5a mod n 3937 mod 55 19
Berikut ini adalah proses enkripsi RSA. Dilakukan oleh pihak pengirim, dalam hal ini adalah Alice. Seluruh perhitungan pemangkatan bilangan modulo dilakukan menggunakan metode fast exponentiation. (1) Ambil kunci publik (n,b). (2) Pilih plainteks m, dengan 0 m n 1 .
m6 c6 a mod n 4937 mod 55 14
(3) Hitung c mb mod n . (4) Diperoleh cipherteks c, dan kirimkan kepada Bob. Contoh 5. Alice menerima kunci publik (n, b) (55,13) dari Bob. Misalkan plainteksnya adalah “kripto”, menggunakan Tabel 1 diperoleh m1 10 , m2 17 , m3 8 , m4 15 , m5 19 , dan m6 14 . Selanjutnya,
dihitung:
c1 m1b mod n 1013 mod 55 10 c2 m2b mod n 1713 mod 55 7 c3 m3b mod n 813 mod 55 28 c4 m4b mod n 1513 mod 55 20 c5 m5b mod n 1913 mod 55 39 c6 m6b mod n 1413 mod 55 49 Jadi, cipherteksnya adalah 10-7-28-20-39-49. Selanjutnya Alice mengirimkan cipherteks ini kepada Bob.
5. Dekripsi Berikut ini adalah proses dekripsi RSA. Dilakukan oleh pihak penerima cipherteks, yaitu Bob. (1) Ambil kunci publik (n,b) dan kunci rahasia a.
Diperoleh plainteks 10-17-8-15-19-14, jika dikorespondensikan sesuai Tabel 1, diperoleh pesan asli yang dikirimkan oleh Alice, yaitu “kripto”.
6. Kesimpulan dan Saran Algoritma kunci publik seperti sandi RSA, baik digunakan untuk mengatasi masalah distribusi kunci, dan apabila jalur komunikasi yang digunakan tidak aman. Untuk menembus keamanan RSA, pihak penyerang cukup hanya dengan memfaktorkan nilai n menjadi p dan q yang sesuai dengan kunci publik. Untuk memperkuat tingkat keamanan, sebaiknya digunakan bilangan prima p dan q yang besar, oleh Stinson (2006) dianjurkan sebesar >80 digit atau berukuran minimal 2048 bit, sehingga pihak penyerang akan kesulitan dan membutuhkan waktu yang sangat lama untuk memfaktorkan n, tidak sepadan dengan nilai informasi yang dicari.
Daftar Pustaka Buchmann, Johannes Cryptography, USA.
A., 2000, Introduction to Springer-Verlag New York,
Fraleigh. 2000, A First Course in Abstract Algebra, Sixth Edition, Addison-Wisley, USA. Stinson, D.R., 2006, Cryptography Theory and Practice, Third Edition, Chapman & Hall/CRC, USA.
(2) Hitung m ca mod n . Contoh 6. Setelah Bob memperoleh cipherteks dari Alice, yaitu 10-7-28-20-39-49, maka diambil kunci rahasia a 37 , dan dilakukan perhitungan berikut.
m1 c1a mod n 1037 mod 55 10 m2 c2a mod n 737 mod 55 17
m3 c3a mod n 2837 mod 55 8 m4 c4 a mod n 2037 mod 55 15
3 http://zaki.sandimath.web.id
Kriptografi Kunci Publik: Sandi RSA
Soal Latihan 1: Alice ingin mengirimkan sebuah pesan rahasia berupa teks “helo” kepada Bob. Karena jalur komunikasi tidak aman, maka keduanya sepakat untuk menggunakan sistem kriptografi kunci publik, dan dipilih sandi RSA. Proses pertama, Bob membuat pasangan kunci terlebih dahulu. Bob memilih bilangan prima p 3 dan q 17 .
2. Proses Enkripsi (dilakukan oleh Alice) a) Ubah pesan “helo” ke dalam bilangan (Tabel 1). “h” m1 = ..... “e” m2 = ..... “l” m3 = ..... “o” m4 = ..... b) Hitung:
1. Pembentukan Kunci (dilakukan oleh B) a) Hitung n pq ........................... b) Hitung ( n) ............................... c)
Misalkan Bob akan memilih b 6 atau b 9 . Nilai b manakah yang bisa digunakan sebagai kunci? Cek kedua nilai b menggunakan algoritma Euclide. Gunakan nilai b yang memenuhi gcd( (n), b) 1 .
Jawab: Untuk b = 6. .................................................................................... .................................................................................... .................................................................................... .................................................................................... .................................................................................... Untuk b = 9. .................................................................................... .................................................................................... .................................................................................... .................................................................................... .................................................................................... Jadi, nilai b yang digunakan adalah b = ...... d) Tentukan nilai a b1 mod (n) ..... ……………... menggunakan Extended Euclidian Algorithm. Jawab: .................................................................................... .................................................................................... .................................................................................... .................................................................................... .................................................................................... .................................................................................... .................................................................................... .................................................................................... e)
Diperoleh pasangan kunci dari B, yaitu: Kunci publik: ( n, b) (......... , .........) Kunci rahasia: a = ...............
c1 m1b mod n = ....................................................... .................................................................................... .................................................................................... .................................................................................... .................................................................................... .................................................................................... .................................................................................... .................................................................................... ....................................................................................
c2 m2b mod n = ...................................................... .................................................................................... .................................................................................... .................................................................................... .................................................................................... .................................................................................... .................................................................................... .................................................................................... ....................................................................................
c3 m3b mod n = ....................................................... .................................................................................... .................................................................................... .................................................................................... .................................................................................... .................................................................................... .................................................................................... .................................................................................... ....................................................................................
c4 m4b mod n = ....................................................... .................................................................................... .................................................................................... .................................................................................... .................................................................................... .................................................................................... .................................................................................... .................................................................................... .................................................................................... Diperoleh cipherteks: c1 c2 c3 c4 = .......... - .......... - .......... - .........
4 http://zaki.sandimath.web.id
Kriptografi Kunci Publik: Sandi RSA
3. Proses Dekripsi (dilakukan oleh Bob) a) Diketahui kunci rahasia a = .............
m1 c1a mod n = ....................................................... .................................................................................... .................................................................................... .................................................................................... .................................................................................... .................................................................................... .................................................................................... .................................................................................... .................................................................................... ....................................................................................
m2 c2 a mod n = ..................................................... .................................................................................... .................................................................................... .................................................................................... .................................................................................... .................................................................................... .................................................................................... .................................................................................... .................................................................................... ....................................................................................
m3 c3a mod n = ...................................................... .................................................................................... .................................................................................... .................................................................................... .................................................................................... .................................................................................... .................................................................................... .................................................................................... .................................................................................... ....................................................................................
m4 c4 a mod n = ..................................................... .................................................................................... .................................................................................... .................................................................................... .................................................................................... .................................................................................... .................................................................................... .................................................................................... .................................................................................... .................................................................................... b) Konversi ke dalam huruf sesuai Tabel 1. m1 = ........, m2 = ........, m3 = ........, m4 = ........
Soal Latihan 2: 1) Hitung nilai pembagi persekutuan terbesar berikut ini menggunakan algoritma Euclide. a. gcd(87,36) b.
gcd(188, 72)
c.
gcd(435,125)
2) Tentukan nilai invers berikut ini menggunakan Extended Euclidean Algorithm. a.
171 mod101
b.
231 mod151
c.
3571 mod1234
3) Hitung hasil dari pemangkatan besar modulo berikut ini menggunakan metode Fast Exponentation. a.
225 mod 25
b.
434 mod 30
c.
1043 mod 75
4) Jika dipilih bilangan prima p 23 dan q 37 , apakah b 143 bisa digunakan sebagai kunci? 5) Diberikan bilangan prima p dan q seperti soal 4) di atas, dipilih b 67 . Apakah nilai p, q, dan b di atas dapat digunakan untuk proses pembentukan kunci? Jika ya, tentukan kunci publik dan kunci rahasianya. 6) Diberikan kunci publik (n, b) (253,3) . Tentukan hasil enkripsi plainteks m = 165. 7) Menggunakan kunci publik soal 6) di atas dan kunci rahasia a = 147, tentukan hasil dekripsi cipherteks c 78 . (hint. hasilnya adalah plainteks m, dimana m adalah hasil kuadrat suatu bilangan genap) 8) Buktikan bahwa plainteks m dapat diperoleh dari perhitungan c a mod n . 9) Hitunglah nilai fungsi Phi-Euler ( n) untuk n = 9, 26, 29, dan 50. 10) Buktikan bahwa jika n adalah bilangan prima, maka ( n) n 1 .
Jadi, pesan yang dikirimkan A adalah ......................
5 http://zaki.sandimath.web.id