KRIPTOGRAFI KUNCI PUBLIK:
SANDI RSA
Oleh: M. Zaki Riyanto
Program Studi Matematika, Fak. Sains dan Teknologi UIN Sunan Kalijaga Yogyakarta
1. Sandi RSA
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.
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| gcd( , ) 1x n
. Jika npq dengan p dan q adalah bilangan prima yang berbeda, maka( )n (p 1)(q 1)
. Jika n adalah bilangan prima, maka
( )n n 1
. Bukti pernyataan di atas dapat dilihat di (Fraleigh, 2000), (Buchmann, 2000), dan (Stinson, 2006).
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 r0r1, kemudian dihitung menggunakan algoritma pembagian:
0 1 1 2 r q r r , 0 r2 r1 1 2 2 3 r q r r , 0 r3 r2 ... 2 1 1 n n n n r qr r ,0rn rn1 1 n n n r q r
Dari pernyataan di atas, dapat ditunjukkan bahwa
0 1 1 2 1
gcd( , )r r gcd( , )r r ... gcd(rn, )rn gcd( , 0)rn 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
0 1
gcd r r, 1, maka 1 1 mod 0 r r ada. Jika gcd
r r0,1
1, maka 1 1 mod 0r r tidak ada. Gunakan rumus rekurensi berikut ini. 0 0 t , t11 2 1 1 j j j j t t q t , j2 ... (1) A enkripsi dekripsi B
Plainteks cipherteks Plainteks Kunci Publik Kunci Rahasia
Keterangan: qj diperoleh dari perhitungan gcd
r r0,1
menggunakan algoritma Euclide. Jika gcd
r r0, 1
1, berarti 11 n
r t . Sehingga rn t rn1 atau 1t rn1. Bukti bisa dilihat di (Stinson, 2006).
Contoh 2. Akan dihitung 1
28 mod 75 .
Diketahui r075 dan r128. 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, r39, q3 2 9 = 9.1 n = 4, r4 1, q4 9 Jadi, gcd(75, 28) = 1, dengan kata lain 1
28 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)
2 0 1 1 0 2.1 2 73 t t q t 3 1 2 2 1 1.( 2) 3 t t q t 4 2 3 3 2 2.3 8 67 t t q t 1 4 4 1 67.28 1 67 28 r t r Dari hasil terakhir di atas, diperoleh 1
28 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:
1 2
2i 2i g g .
Untuk lebih jelasnya mengenai langkah-langkah metode fast exponentiation, perhatikan contoh berikut ini.
Contoh 3. Akan dihitung 6 mod10073 . Jawab.
6 3 0
73 1.2 1.2 1.2 atau 73 =
2
1001001 . (semua perhitungan dilakukan dalam mod 100)
0 2 6 6, 621 36, 622 36296, 623 16, 4 2 2 6 16 56, 25 2 6 56 36, 26 2 6 56 96. Sehingga diperoleh: 3 6 73 2 2 6 6.6 .6 6.16.96 16 . Jadi, 6 mod10073 = 16.
Setelah mempelajari konsep-konsep dasar perhitungan matematis, berikut ini diberikan proses-proses yang digunakan RSA.
3. Pembentukan Kunci
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 npq.
(3) Hitung ( ) n (p1)(q1).
(4) Pilih sebarang bilangan b, 1 b ( )n , dengan gcd( , ( ))b n 1.
(5) Hitung invers dari b, yaitu ab1mod ( ) n .
(6) Kunci publik: (n, b) dan kunci rahasia: a.
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 npq lebih dari atau sama dengan nilai plainteks yang mungkin. Dalam hal ini npq25.
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 p5 dan
11
q , sehigga diperoleh n55 dan (55) (5 1)(11 1) 4.10 40
. Selanjutnya dapat dipilih b13, sebab gcd(13, 40)1. Menggunakan algoritma Euclide diperluas diperoleh bahwa
1
13 mod 40 37
a . Jadi, kunci publiknya adalah ( , )n b (55,13) dan kunci rahasianya adalah a37. Selanjutnya Bob mengirimkan kunci publik kepada Alice.
4. Enkripsi
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. (3) Hitung cmbmodn.
(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 m110, m2 17,
3 8 m , m4 15, m519, dan m6 14. Selanjutnya, dihitung: 13 1 1 mod 10 mod 55 b c m n 10 13 2 2 mod 17 mod 55 b c m n 7 13 3 3 mod 8 mod 55 b c m n 28 13 4 4 mod 15 mod 55 b c m n 20 13 5 5 mod 19 mod 55 b c m n 39 13 6 6 mod 14 mod 55 b c m n 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. (2) Hitung mcamodn.
Contoh 6. Setelah Bob memperoleh cipherteks dari Alice, yaitu 10-7-28-20-39-49, maka diambil kunci rahasia a37, dan dilakukan perhitungan berikut.
37 1 1 mod 10 mod 55 a m c n 10 37 2 2 mod 7 mod 55 a m c n 17 37 3 3 mod 28 mod 55 a m c n 8 37 4 4 mod 20 mod 55 a m c n 15 37 5 5 mod 39 mod 55 a m c n 19 37 6 6 mod 49 mod 55 a m c n 14
Diperoleh plainteks 10-17-8-15-19-14, jika dikorespon-densikan 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 A., 2000, Introduction to Cryptography, Springer-Verlag New York, USA.
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.
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 p3 dan q17.
1. Pembentukan Kunci (dilakukan oleh B) a) Hitung npq... b) Hitung ( ) n ...
c) Misalkan Bob akan memilih b6 atau b9. 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 ab1mod ( ) n ...………...
menggunakan Extended Euclidian Algorithm. Jawab: ... ... ... ... ... ... ... ...
e) Diperoleh pasangan kunci dari B, yaitu: Kunci publik: ( , )n b (... , ...) Kunci rahasia: a = ...
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 1 mod b c m n = ... ... ... ... ... ... ... ... ... 2 2 mod b c m n = ... ... ... ... ... ... ... ... ... 3 3 mod b c m n = ... ... ... ... ... ... ... ... ... 4 4 mod b c m n = ... ... ... ... ... ... ... ... ... Diperoleh cipherteks: 1 2 3 4 c c c c = ... - ... - ... - ...
3. Proses Dekripsi (dilakukan oleh Bob) a) Diketahui kunci rahasia a = ...
1 1 mod a m c n = ... ... ... ... ... ... ... ... ... ... 2 2 mod a m c n = ... ... ... ... ... ... ... ... ... ... 3 3 mod a m c n = ... ... ... ... ... ... ... ... ... ... 4 4 mod a m c n = ... ... ... ... ... ... ... ... ... ...
b) Konversi ke dalam huruf sesuai Tabel 1.
1
m = ..., m2 = ..., m3 = ..., m4 = ... Jadi, pesan yang dikirimkan A adalah ...
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. 1
17 mod101 b. 23 mod1511
c. 1
357 mod1234
3) Hitung hasil dari pemangkatan besar modulo berikut ini menggunakan metode Fast Exponentation. a. 2 mod 2525
b. 34
4 mod 30 c. 43
10 mod 75
4) Jika dipilih bilangan prima p23 dan q37, apakah b143 bisa digunakan sebagai kunci? 5) Diberikan bilangan prima p dan q seperti soal 4) di
atas, dipilih b67. 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
78
c . (hint. hasilnya adalah plainteks m, dimana m adalah hasil kuadrat suatu bilangan genap)
8) Buktikan bahwa plainteks m dapat diperoleh dari perhitungan camodn.
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