BAB III KUNCI PUBLIK
Kriptografi dengan metode kunci publik atau asimetri merupakan perkembangan ilmu kriptografi yang sangat besar dalam sejarah kriptografi itu sendiri. Mekanisme kriptografi dengan model konvensional lebih didasarkan pada teknik substitusi dan permutasi dengan kunci yang sama. Hal ini sangat memungkinkan bagi cryptoanalyst untuk dengan mudah memecahkan algoritma konvensional. Metode enkripsi kunci publik menawarkan keamanan yang lebih tinggi dan lebih kompleks daripada metode konvensional. Metode kunci publik tidak hanya berdasar pada subtitusi dan permutasi saja, tetapi juga perhitungan matematik. Yang lebih penting lagi, metode kunci publik menggunakan dua buah kunci yang berbeda. Dengan penggunaan dua kunci, kerahasiaan, distribusi kunci dan otentifikasi semakin dapat ditingkatkan keamanannya. Namun, pada dasarnya kita tidak dapat mengatakan bahwa metode kunci publik lebih aman daripada metode konvensional. Keamanan, selain ditunjang oleh algoritma yang dipakai untuk enkripsi, ditentukan juga oleh panjangnya kunci dan komputasinya. Hanya saja metode kunci publik lebih memungkinkan untuk menggunakan kunci yang lebih bervariatif.
3.1. Prinsip Kerja
Metode enkripsi kunci publik membutuhkan dua buah kunci di dalam algoritmanya, yaitu kunci publik dan kunci pribadi. Kunci publik digunakan untuk mengenkripsi plaintext menjadi ciphertext dan kunci ini tidak terlalu bersifat rahasia sehingga dapat diketahui oleh banyak orang. Kunci pribadi digunakan untuk mendekripsi ciphertext menjadi plaintext dan kunci ini bersifat rahasia sehingga hanya user saja yang boleh mengetahui kunci ini. Secara umum, prinsip kerja dari metode kunci publik dapat dijelaskan sebagai berikut : 1. Setiap user masingmasing membuat sepasang kunci untuk pesan yang akan diterimanya, yaitu kunci publik dan kunci pribadi. 2. Setiap user mengumumkan kunci publiknya masingmasing sehingga user lain yang akan mengirim pesan kepada user tersebut dapat mengenkripsi pesannya dengan menggunakan kunci publik dari user yang akan dikirimi. 3. Jika A ingin mengirim pesan kepada user B, maka user A harus menggunakan kunci publik yang telah diumumkan oleh B untuk mengenkripsi pesan yang akan dikirimkan kepada B. 4. Ketika B menerima pesan yang berupa ciphertext dari A, maka ia mendekripsinya dengan kunci pribadi yang dimilikinya. Tidak ada user lain yang dapat mendekripsi ciphertext tersebut karena hanya B yang tahu kunci pribadinya.
Dengan pendekatan model semacam ini, setiap user dapat mengetahui kunci publik dari masingmasing user lain, tetapi tidak dapat mengetahui kunci pribadi yang dimiliki user lain. Selama user dapat menjaga kunci pribadinya masingmasing, dapat dikatakan bahwa komunikasi pesan masih aman. Setiap saat masingmasing user dapat mengubah kunci pribadi dan kunci publiknya masingmasing dan mengumumkan kunci publiknya kembali. Prinsip kerja dari metode ini juga dapat dijelaskan melalui rumus umum seperti di bawah ini.
•
User A ingin mengirim pesan X = [X1,X2,…,XM] dimana M adalah jumlah huruf alfabet pesan.
•
User B membuat dua buah kunci KUb sebagai kunci publik dan KRb sebagai kunci pribadi dan kemudian memberikan kunci publik tersebut kepada user A.
•
Dengan pesan X dan kunci publik KUb, A membentuk ciphertext Y = [Y1,Y2,…, YN] dengan rumus sebagai berikut :
Y = EKUb(X)
•
User B menerima ciphertext Y dan mendekripsi ciphertext tersebut dengan menggunakan kunci pribadi KRb.
X = DKRb(Y)
•
Jika ada pihak ketiga yang mengetahui Y dan KUb, tetapi tidak mengetahui KRb atau X, maka dia harus membuat estimasi untuk KRb dan X agar dapat memecahkan ciphertext tersebut menjadi plaintext.
Penggunaan metode kunci publik ini sangat luas dan dapat diimplementasikan ke dalam berbagai macam aplikasi. Tetapi, secara umum penggunaan metode kunci publik ini dapat dikategorikan menjadi 3 hal, yaitu :
1. Enkripsi/dekripsi : digunakan untuk aplikasi yang membutuhkan fungsi enkripsi atau dekripsi. 2. Tanda tangan digital : digunakan untuk aplikasi yang membutuhkan otentifikasi data, sehingga dapat menjaga integritas data sekaligus tanpa penolakan. 3. Pertukaran kunci : digunakan untuk aplikasi yang memerlukan pertukaran kunci yang bersifat rahasia. Beberapa algoritma metode kunci publik dapat diimplementasikan pada ketiga kategori diatas, tetapi ada beberapa pula yang bersifat khusus untuk kategori tertentu, misalnya algoritma RSA, LUC dapat digunakan untuk ketiga kategori tersebut, DSS hanya dapat digunakan pada tanda tangan digital dan DiffieHellman hanya dapat digunakan pada kategori pertukaran kunci. Pada dasarnya, ada beberapa syarat yang hahrus dipenuhi di dalam metode enkripsi kunci publik ini : 1. Mudah bagi user untuk membentuk sepasang kunci (kunci publik dan kunci pribadi) 2. Mudah bagi user lain untuk mengetahui kunci publik milik kita dan kemudian mengenkripsi pesan yang akan dikirimkan kepada kita dengan kunci tersebut. 3. Mudah bagi penerima pesan untuk mendekripsi pesan ciphertext yang telah diterima dengan kunci pribadi yang dimilikinya. 4. Tidak mudah bagi musuh untuk mengetahui kunci publik untuk menentukan kunci pribadi yang dimiliki oleh user lain.
3.2. Algoritma RSA
Algoritma ini dikembangkan oleh Ron Rivest, Adi Shamir, dan Len Adleman pada tahun 1977. Algoritma ini sekaligus menjawab tantangan dari sebuah paper yang dibuat oleh Diffie dan Hellman tentang pendekatan baru mengenai algoritma kriptografi yang dapat memenuhi kebutuhan untuk metode kunci publik. Algoritma RivestShamir Adleman (RSA) ini adalah algoritma metode kunci publik yang paling banyak dipakai sampai saat ini. RSA merupakan algoritma yang melibatkan ekspresi dengan fungsi eksponensial. Plaintext dienkripsi dalam blokblok, dimana setiap blok tersebut mempunyai nilai biner yang kurang dari angka tertentu (n). Proses enkripsi dan dekripsi untuk plaintext blok M dan ciphertext blok C dapat digambarkan sebagai berikut :
C = Me mod n M = Cd mod n = (Me)d mod n = Med mod n
Kedua belah pihak (pengirim dan penerima) harus mengetahui nilai dari n. Pengirim mengetahui nilai e dan hanya penerima yang tahu nilai d. Jadi, dapat disimpulkan bahwa kunci publik dari algoritma ini adalah KU = {e,n} dan kunci pribadinya adalah KR = {d,n}. Untuk penentuan kunci ini juga tidaklah bebas, harus melalui rumus tertentu. Secara lengkap, langkahlangkah yang harus dilakukan di dalam algoritma RSA adalah sebagai berikut : 1. Pilih 2 bilangan prima p dan q. 2. Cari n = pq 3. Hitung ø(n)=(p1)(q1)
4. Pilih e yang relatif prima terhadap ø(n) dan kurang dari ø(n) 5. Tentukan d dimana ed = 1 mod ø(n) dan d < ø(n) 6. Didapat kunci publik {e,n} dan kunci pribadi {d,n}. 7. Bilangan p dan q juga harus dirahasiakan sehingga kunci pribadi dapat kita tulis sebagai {d,p,q}. 8. Dengan kedua kunci tersebut, user sudah dapat melakukan enkripsi ataupun dekripsi dengan rumus yang sudah ditulis sebelumnya.
Untuk dapat mengetahui dengan lebih jelas prinsip kerja algoritma RSA ini, kita terapkan langkahlangkah tersebut di dalam contoh berikut. •
Penentuan kunci publik dan kunci pribadi : 1. Pilih 2 bilangan prima p dan q, misalnya 7 dan 17 2. Cari n = pq = 7 x 17 = 119 3. Hitung ø(n)=(p1)(q1) = (71)(171) = 96 4. Pilih e yang relatif prima terhadap ø(n) = 96 dan kurang dari ø(n), dalam hal ini e = 5 5. Tentukan d dimana ed = 1 mod ø(n) dan d < ø(n), berarti 5 x d = 1 mod 96, d = 77 karena 5 x 77 = 4 x 96 + 1 6. Didapat kunci publik {5,119 } dan kunci pribadi {77,119 }
•
Jika kita menggunakan kunci tersebut untuk mengenkripsi pesan M = 19, maka C = Me mod n = 195 mod 119 = 66 Jadi, ciphertext yang dihasilkan oleh pesan tersebut adalah 66
•
Jika kita ingin mendekripsi ciphertext tersebut, kita masukkan rumus dengan kunci pribadi :
M = Cd mod n = 6677 mod 119 = 19
Dalam memecahkan algoritma RSA ini, seorang cryptoanalyst dapat melakukan pendekatan sebagai berikut : •
Brute force : mencoba semua kemungkinan kunci pribadi
•
Mencoba mencari faktor p dan q, sehingga dapat dihitung ø(n). Dengan mengetahui ø(n), maka dapat ditentukan faktor d.
•
Menentukan ø(n) secara langsung tanpa menentukan p dan q. Hal ini juga dapat menemukan hasil perhitungan dari faktor d.
•
Menentukan d secara langsung, tanpa menentukan ø(n).
3.3. Manajemen Kunci Permasalahan yang muncul dari kriptografi ini adalah bagaimana mendistribusikan kunci yang digunakan di dalam algoritma kriptografi tersebut. Dalam hal ini, kita akan mempelajari bagaimana harus mendistribusikan kunci publik yang akan digunakan untuk algoritma kriptografi dengan metode kunci publik. Ada beberapa teknik yang dapat dilakukan di dalam distribusi kunci, tetapi hal tersebut dapat dikategorikan menjadi 4 hal berikut : 1. Public announcement 2. Publicly available directory 3. Public key authority 4. Publik key certificates
3.3.1. Public Announcement Kunci publik dapat didistribusikan secara umum, karena realitasnya, kunci publik adalah kunci umum yang digunakan oleh pengirim pesan untuk mengenkripsi pesan yang akan dikirimkan kepada kita. Kelemahan dari metode ini adalah bahwa siapapun dapat mengirimkan kunci publik. Hal ini membawa konsekwensi adanya user lain yang berpurapura mengirimkan kunci publik atas nama kita.
3.3.2. Publicly Available Directory Keamanan yang lebih tinggi dapat diperoleh dengan menggunakan sebuah direktori dinamis yang berisi kunci publik. Pengorganisasian kunci publik dapat menjadi tanggung jawab dari organisasi tertentu yang dipercaya. Syarat yang harus dipenuhi : •
Organisasi mengatur direktori penyimpanan kunci publik dengan nama dan kunci publik yang dimiliki oleh user yang bersangkutan.
•
Setiap user harus regristrasi terlebih dahulu, sehingga pengaturan direktori kunci publik dapat dilakukan dengan baik.
•
Dengan pengaturan dan regristrasi tersebut, setiap user masih tetap dapat mengubah kunci publik yang dimilikinya dengan bebas.
•
Secara periodik, organisasi yang mengatur direktori kunci publik dapat mengumumkan direktori tersebut kepada user.
•
User yang teregristrasi harus dapat mengakses direktori tersebut secara elektronis/melalui komputer.
3.3.3. Public Key Authority Model lain yang lebih aman adalah dengan otentifikasi yang lebih bisa dipercaya agar user dapat memasuki direktori kunci publik. Pada dasarnya, prinsip kerja metode ini sama dengan prinsip kerja model sebelumnya yang telah kita pelajari, namun untuk dapat mengakses direktori harus diotentifikasi terlebih dahulu.
3.3.4. Public Key Certificates Pendekatan yang lain yang bisa digunakan dalam manajemen kunci adalah sertifikasi kunci publik. Pendekatan ini pertama kali dikenalkan oleh Kohnfelder. Prinsip kerja metode ini adalah dengan pembuatan sertifikat yang digunakan oleh user untuk dapat mempertukarkan kunci.