BAB III ANALISIS BAB III bagian analisis pada laporan tugas akhir ini menguraikan hasil analisis masalah terkait mode keamanan bluetooth. Adapun hasil analisis tersebut meliputi proses otentikasi perangkat dan pengguna pada komunikasi bluetooth dengan memanfaatkan kriptografi kunci-publik.
3.1 Otentikasi Perangkat dengan Kriptografi Kunci-Publik III.1.1 Dasar Pemikiran Proses otentikasi yang diimplementasikan sebagai aspek kemanan bluetooth adalah
dengan memanfaatkan mekanisme bonding dan pairing. Inti dari kedua proses ini sebenarnya
adalah
bagaimana
meyakinkan
bahwa
perangkat
yang
akan
berkomunikasi dengan bluetooth telah memiliki kunci rahasia (shared authentication key) yang disepakati bersama antara pihak yang otentik. Sehingga pada prinsipnya yang menjadi titik masalah pada proses otentikasi perangkat pada komunikasi bluetooth adalah mekanisme pertukaran kunci rahasia secara aman. Mekanisme pertukaran kunci yang telah diimplementasikan saat ini (pairing) memiliki celah keamanan seperti yang telah dijelaskan pada bab sebelumnya. Celah keamanan ini dapat dimanfaatkan oleh pihak yang tidak berhak untuk melakukan penyerangan sehingga proses komunikasi keseluruhan akhirnya menjadi tidak aman. Serangan yang dilakukan bertujuan untuk mendapatkan kunci rahasia yang dipertukarkan dimana kunci ini akan dipergunakan untuk mengenkripsi dan mendekripsi pesan yang akan dikirimkan, sehingga jika pihak yang tidak berhak mendapatkan kunci ini maka mereka dapat mengetahui isi pesan yang dikirimkan. Kelemahan tersebut bisa diatasi dengan mengaplikasikan mekanisme pertukaran kunci baru yaitu menggunakan Protokol Diffie-Hellman. Untuk dapat berperan sebagai media otentikasi langsung maka protokol ini harus dimodifikasi. Modifikasi
III-1
III-2 dilakukan dengan cara menambahkan ontentikasi dengan kriptografi kunci-publik pada pertukaran data dalam Protokol Diffie-Hellman. Tujuan dari hal ini adalah untuk meyakinkan bahwa bilangan yang dipertukarkan dengan Protokol Diffie-Hellman dikirim oleh pihak yang benar, sehingga dapat dipergunakan sebagai media pendeteksi apakah otentikasi berhasil dilakukan atau tidak. Otentikasi dianggap berhasil jika data yang diterima, dikirim oleh pihak yang benar (partner) dan sebaliknya. Disisi lain penambahan otentikasi ini bertujuan untuk mencegah terjadinya man-in-the-middle-attack, yaitu serangan dimana pihak penyerang akan berpura-pura menjadi pihak yang dikirimi data (partner), mengganti data yang dikirimkan tersebut dengan datanya sendiri, kemudian diteruskan ke pihak yang sebenarnya akan dikirimi data [SCH96]. III.1.2 Pemodelan Protokol untuk Otentikasi Perangkat Dalam protokol untuk otententikasi perangkat ini setiap data yang dikirimkan
dienkripsi dengan kunci rahasia (private key) pengirim. Enkripsi data dengan kunci rahasia pengirim inilah yang memberikan aspek otentikasi data yang dikirimkan, karena data yang terenkripsi ini akan digunakan sebagai tanda tangan digital pengirim. Data hasil enkripsi ini dikirimkan bersamaan dengan data aslinya. Jadi setiap pengiriman bilangan, pengirim mengirimkan dua data bilangan sekaligus, bilangan aslinya dan bilangan yang terenkripsi dengan kunci rahasia. Dengan disertainya tanda tangan digital ini, pengirim seolah-olah mengatakan bahwa data yang dikirmkannya benar-benar berasal darinya. Skema dari protokol untuk otentikasi perangkat dapat dilihat pada Gambar III-1.
Gambar III-1 Protokol untuk Otentikasi Perangkat
III-3 Jalannya protokol otentikasi perangkat dapat dijelaskan sebagai berikut: 1. Perangkat A membangkitakan bilangan bulat acak yang besar x kemudian menghitung X = gx mod n. Pembangkitan bilangan acak menggunakan teknik Secure Hash Algorithm Pseudo Number Generator dengan umpan alamat perangkat Bluetooth dan waktu pada saat tersebut. Sehingga nilai ini akan terkait dengan nilai unik perangkat Bluetooth. 2. Perangkat A menandatangani bilangan X dengan kunci rahasianya (M = EPrKA(X)), kemudian mengirimkan X dan M ke perangkat B. 3. Perangkat B juga membangkitkan bilangan bulat acak besar y dengan metode yang sama dengan perangkat A, kemudian menghitung Y = gy mod n. 4. Perangkat B juga menandatangani bilangan Y dengan kunci rahasianya (N = EPrKB(Y)), kemudian mengirimkan Y dan N ke perangkat A. 5. Perangkat A menerima data dari perangkat B yaitu bilangan X dan M. Perangkat A kemudian mendekripsi M dengan kunci publik perangkat B (DPbKB(M)) kemudian mencocokan hasilnya dengan X. 6. Jika datanya sama, maka perangkat A menghitung kunci akhir K = Yx mod n. Hal ini berarti perangkat A berhasil mengotentikasi perangkat B. Jika datanya berbeda berarti proses otentikasi perangkat B oleh perangkat A gagal dan komunikasi akan dibatalkan. 7. Perangkat B menerima data dari perangkat A yaitu bilangan Y dan N. Perangkat B kemudian mendekripsi N dengan kunci publik perangkat A (DPbKB(M)) kemudian mencocokan hasilnya dengan Y. 8. Jika datanya sama, maka perangkat B menghitung kunci akhir K’ = Xy mod n, dimana nilai K = K’. Hal ini berarti perangkat B berhasil mengotentikasi perangkat A. Jika datanya berbeda berarti proses otentikasi perangkat A oleh perangkat B gagal dan komunikasi akan dibatalkan. Sebagai prerequisite dari protokol ini, setiap perangkat haruslah terlebih dahulu telah memiliki pasangan kunci publik dan kunci privat dimana kunci publiknya telah dikirimkan kepada pihak yang diajak berkomunikasi. Pengiriman kunci publik dapat dilakukan sebelum komunikasi dilakukan, karena sifatnya yang publik jadi tidak ada kebutuhan pengamanan. Untuk nilai g, n hanya perlu dihtiung oleh salah satu perangkat kemudian dikirimkan kepada perangkat lainnya, yang lebih lanjut proses
III-4 pengiriman ini disebut dengan proses handshaking. Sedangkan, untuk fungsi enkripsi dapat digunakan algoritma RSA seperti yang telah dijelaskan bab 2. Contoh Protokol untuk otentikasi perangkat adalah sebagai berikut. Misalkan dua buah perangkat akan berkomunikasi maka terlebih dahulu perangkat ini akan melakukan proses handshaking, misal disepakati bilangan dasar g = 25657 dan n = 49663. Sementara kunci publik perangkat A = (136, 38579) dan kunci publik perangkat B = (211, 46127) yang telah diketahui satu sama lain. Sedangkan untuk kunci rahasia perangkat A = (21427, 38579) dan perangkat B = (34651, 46127). Protokol yang dilakukan adalah: 1. Perangkat A membangkitkan secara random suatu bilangan rahasia x = 20393 kemudian menghitung X = gx mod n = 2565720393 mod 49663 = 32560 2. Perangkat A menandatangani bilangan X yaitu dengan mengenkripsinya menggunakan kunci rahasianya M = (EPrKA(X)) = E(21427,38579)(32560) = 16964, kemudian mengirimkan kedua data tersebut ke perangkat B. 3. Perangkat B juga membangkitkan suatu bilangan rahasia secara random y = 25799 dan menghitung Y = gy mod n = 2565725799 mod 49633 = 41118 4. Perangkat B menandatangani bilangan Y dengan kunci rahasianya N = (EPrKB(Y)) = E(34651,46127)(41118) = 10765, kemudian mengirimkan kedua data tersebut ke perangkat A. 5. Perangkat A menerima data dari perangkat B yaitu bilangan Y dan N yang merupakan tanda tangannya. Perangkat A kemudian mendekripsi N dengan kunci publik perangkat B (DPbKB(N)) = D(211,
46127)(10765),
kemudian
mencocokan dengan data aslinya (Y = 41118). 6. Jika datanya sama, maka perangkat A menghitung kunci akhir K = 4111820393 mod 49663 = 11438. Namun, jika ternyata datanya berbeda maka otentikasi gagal dan perangkat A akan menolak untuk berkomunikasi dengan perangkat B. 7. Perangkat B juga menerima data dari perangkat A yaitu bilangan X dan M. Perangkat B kemudian mendekripsi M dengan kunci publik perangkat A (DPbKA(M)) = D(136, 38579)(16964), kemudian mencocokan dengan data aslinya (X = 32560).
III-5 8. Jika datanya sama, maka perangkat B menghitung kunci akhir K’ = 3256025799 mod 49663 = 11438. Namun, jika ternyata datanya berbeda maka otentikasi gagal dan perangkat B akan menolak untuk berkomunikasi dengan perangkat A.
3.2 Otentikasi Pengguna dengan Kriptografi Kunci-Publik III.2.1 Dasar Pemikiran Untuk memastikan bahwa pihak yang diajak berkomunikasi adalah pihak yang benar
maka selain perangkat maka pengguna juga harus diotentikasi. Hal ini dilakukan karena munculnya masalah device impersonation, yaitu suatu tindakan untuk meniru atau memalsukan perangkat Bluetooth guna dapat berkomunikasi pada level keamanan tertentu dengan perangkat lain. Pemalsuan dilakukan biasanya terhadap alamat dari suatu perangkat, karena setiap perangkat Bluetooth akan mengenali perangkat lain melalui alamatnya. Pihak yang tidak berhak akan memodifikasi perangkat mereka sehingga seolah-olah menjadi perangkat yang sudah dikenali oleh perangkat yang akan diserang. Dengan demikian, pihak penyerang akan dapat berkomunikasi dengan leluasa dengan korban. Kelemahan diatas dapat diatasi dengan melakukan otentikasi tidak hanya untuk perangkat melainkan juga untuk pengguna dari perangkat yang bersangkutan. Jadi, sebelum
dapat
berkomunikasi
maka
pengguna
harus
terlebih
dahulu
mengotentikasikan dirinya kepada perangkat lain yang akan diajak berkomunikasi. Disamping itu pengenalan terhadap suatu perangkat juga tidak hanya dilakukan dengan alamatnya saja, melainkan dilakukan dengan kombinasi antara alamat dengan kunci publik pengguna perangkat yang bersangkutan. Informasi ini dapat dipergunakan oleh pihak yang akan berkomunikasi untuk mengotentikasi pengguna satu sama lain. III.2.2 Pemodelan Protokol untuk Otentikasi Pengguna Otentikasi pengguna dapat dilakukan dengan melibatkan pengguna dalam proses
handshaking suatu perangkat dengan perangkat lainnya. Keterlibatan ini dapat dijadikan sarana untuk memastikan bahwa pengguna tersebut adalah pengguna yang benar. Disini sebelum dapat berkomunikasi maka pengguna diharuskan untuk memasukan kunci (layaknya password) ke perangkat yang dipergunakannya. Adapun
III-6 kunci yang harus dimasukan oleh pengguna adalah kunci privatnya. Hal ini dapat dilakukan karena fakta bahwa format kunci pada algoritma RSA adalah kombinasi dua angka (e, n). Baik kunci publik dan kunci privat sama-sama menggunakan format ini, biasanya jika kunci publiknya (e, n) maka kunci privatnya (d, n). Jadi, disini terlihat bahwa antara kunci publik dan kunci privat terdapat data yang sama, yaitu n. Fakta ini memungkinkan tidak semua data kunci privat harus dimasukan oleh pengguna. Data kunci yang sama antara kunci publik dan kunci privat dapat disimpan pada perangkat yang akan dipergunakan untuk komunikasi. Sehingga pengguna hanya perlu memasukan bagian lain dari kunci privat, yaitu d. Setelah itu, proses otentikasi pengguna akan dimulai. Perangkat yang telah menerima input kunci tersebut akan meminta untuk dapat terhubung dengan perangkat lain. Perangkat yang dihubungi tersebut, yang telah meyimpan kunci publik dari pengguna perangkat yang menghubunginya, akan menggunakan teknik challenge and response. Adapun teknik tersebut dapat dilihat pada Gambar III-2.
Gambar III-2 Challenge and Response
Jalannya protokol untuk otentikasi pengguna adalah sebagai berikut: 1. Pengguna B dengan perangkatnya hendak terhubung dengan perangkat A. Maka pengguna B memasukan sebagian dari kunci privatnya ke perangkat B sebagai media otentikasi.
III-7 2. Ketika permintaan untuk terhubung ke perangkat A diinisiasi oleh perangkat B, perangkat A akan membangkitkan bilangan acak n. Adapun mekanisme pembangkitan nilai acak ini menggunakan Secure Hash Algorithm Pseudo Number Generator (SAH1PNRG) dengan umpan data kunci privat dan waktu pada saat itu. 3. Perangkat A akan menghitung nilai M dengan mengenkripsi nilai n menggunakan kunci publik pengguna B, kemudian mengirimkan M
ke
perangkat B. 4. Perangkat B diharuskan untuk menghitung nilai N dengan mendekripsi nilai M yang didapat dari perangkat A dan mengirimkan nilai N ke perangkat A. Disamping itu perangkat B juga akan membangkitkan bilangan acak o yang kemudian dienkripsi dengan menggunakan kunci publik perangkat A (P). Hasil ini akan dikirimkan ke perangkat A bersamaan dengan nilai N. 5. Selanjutnya perangkat A akan mencocokan nilai N yang diperoleh dari perangkat B dengan nilai n yang dibangkitan diawal. Jika nilai n sama dengan nilai N berarti pengguna yang meminta untuk terhubung adalah pengguna yang benar. Jika tidak, berarti otentikasi pengguna B oleh A gagal dan hubungan diputus. 6. Ketika perangkat A berhasil mengotentikasi perangkat B terakhir perangkat A harus menghitung nilai O dengan mendekripsi nilai P yang dikirimkan perangkat B kemudian mengirimkan kembali hasilnya ke perangkat B. 7. Terakhir perangkat B akan menghitung mecocokan nilai O yang dikirim oleh perangkat A dengan nilai o. Jika hasilnya sama berarti pengguna A adalah pengguna yang otentik (B berhasil mengotentikasi pengguna A), dan sebaliknya. Disini, diangap bahwa pihak yang akan berkomunikasi telah terlebih dahulu mengetahui kunci publik masing-masing. Kunci publik dapat diumumkan melalui saluran-saluran komunikasi lain, yang terpenting adalah pihak yang berkomunikasi mendapatkan kunci publik yang benar dari pihak yang diajak berkomunikasi. Pada dasarnya kunci publik ini dapat juga sekaligus dikirimkan pada saat inisiasi komunikasi Bluetooth, hanya saja jika ini dilakukan masih ada kemungkinan man-inthe-midle-attack walaupun kemungkinannya sangat kecil.
III-8 Contoh dari aplikasi dari protokol otentikasi pengguna ini adalah sebagai berikut. Untuk kunci publik dan privat akan digunakan kembali data pada contoh sebelumnya. Misal B ingin terhubung ke A, maka B akan menginisiasi komunikasi. 1. Pengguna B memasukan sebagian kunci privatnya yaitu 34651. 2. Perangkat A membangkitan bilangan acak n, misal n = 976. 3. Selanjutnya perangkat A akan menghitung nilai M = E(211, 46127)(976) = 976211 mod 46127 = 18797. Kemudian A mengirimkan nilai ini kepada B. 4. Ketika perangkat B menerima nilai M = 18797, perangkat B akan menghitung N = D(34651,
46127)(18797)
= 1879734651 mod 46127 = 976. Nilai N ini akan
dikirimkan kembali ke A. Bersamaan dengan ini perangkat B juga akan membangkitkan nilai acak o, misal o = 556 dan menghitung nilai P = E(136, 38579)(556)
= 556136 mod 38579 = 21940 untuk dikirimkan ke A.
5. Perangkat A menerima nilai N dan P dari perangkat B kemudian mencocokan nilai N ini dengan nilai n (n == N). Ternyata nilainya sama ini berarti pengguna B adalah pengguna yang benar dan otentikasi pengguna berhasil dilakukan. 6. Setelah A berhasil mengotentikasi pengguna B selanjutnya perangkat A menghitung nilai O = D(21427,
38579)(21940)
= 2194021427 mod 38579 = 556.
Nilai O ini dikirimkan kembali kepada perangkat B. 7. Terakhir perangkat B menerima nilai O kemudian mencocokan hasilnya dengan nilai o. Jika hasilya sama berarti pengguna A adalah pengguna yang otentik berarti proses otentikasi berhasil dan sebalikya.
3.3 Perbandingan Metode Otentikasi Gambar III-3 dan III-4 memperlihatkan mekanisme otentikasi untuk komunikasi Bluetooth yang sudah ada saat ini dan mekanisme otentikasi baru yang diusulkan. Terlihat bahwa pada mekanisme yang sudah ada belum mengimplementasikan otentikasi pada sisi user. Disamping itu terlihat pula bahwa pada mekanisme otentikasi yang sebelumnya lebih banyak mempertukarkan data dalam bentuk plainteks berupa bilangan random, yang mana data-data tersebut berhubungan langsung dengan PIN yang dipergunakan.
III-9
Gambar III-3 Mekanisme otentikasi sekarang
Gambar III-4 Mekanisme otentikasi yang diusulkan
III-10
3.4 Pembangkitan Bilangan Acak Seperti yang telah dijelaskan sebelumnya bahwa untuk melakukan otentikasi perangkat dan pengguna diperlukan suatu bilangan acak yang dibangkitkan pada saat proses otentikasi dilakukan. Bilangan acak disini memegang peranan penting, maka dari itu diperlukan suatu mekanisme pembangkitan bilangan acak yang aman. Untuk keperluan ini maka akan dipergunakan tenik Secure Hash Algorithm Pseudo Random Generator (SHA1PNRG) dengan umpan suatu bilangan yang didapat dari nilai unik Bluetooth atau kunci privat pengguna yang kemudian dikombinasikan dengan waktu pada saat itu. Terdapat dua mekanisme pembangkitan bilangan acak yang diperlukan, yaitu pada saat melakukan otentikasi perangkat dan pengguna. Adapun kedua mekanisme tersebut adalah sebagai berikut: 1. Pembangkitan bilangan acak untuk otentikasi perangkat Diperlukan masukan berupa alamat unik dari perangkat Bluetooth client (BD_ADDR), kunci pengguna dan waktu pada saat itu. Pertama nilai unik dari bluetooth ini akan di-xor-kan dengan waktu. Kemudian dirotasi ke kiri sejauh panjang kunci bit dari kunci pengguna. Nilai inilah yang akan dijadikan umpan untuk SHA1PNRG. Terakhir nilai acak akan di-xor-kan kembali dengan kunci pengguna, sehingga dihasilkan nilai acak final (FINAL_RAND). 2. Pembangkitan bilangan acak untuk otentikasi pengguna Pada
prinsipnya
pembangkitan
bilangan
acak
disini
hampir
dengan
pembangkitan bilangan acak pada otentikasi perangkat. Hanya saja masukan untuk proses ini adalah kunci privat pengguna (PRI_KEY) dan waktu pada saat itu. Proses selanjutnya sama dengan pada saat otentikasi perangkat, dan hasil akhirnya adalah bilangan acak final. Proses dari pembangkitan diatas dapat dilihat pada gambar III-5.
⊕ ⊕ Gambar III-5 Proses pembangkitan bilangan acak