BAB III ANALISIS MASALAH Bab ketiga ini berisi penjelasan analisis permasalahan serta solusi dalam penanganan masalah dalam tugas akhir ini. Solusi penanganan masalah tersebut berupa langkah-langkah lojik yang diambil dengan memanfaatkan teori yang ada.
3.1
Analisis Permasalahan Dalam sebuah situs, server bisa menyediakan berbagai layanan bagi kliennya, seperti
berita, ilmu pengetahuan, riset, hiburan dan sebagainya. Layanan tersebut ada yang bisa diakses oleh siapa saja dan ada pula yang terbatas pada klien tertentu saja. Hal tersebut tergantung dari pemilik situs tersebut. Situs yang memuat berita umumnya masuk dalam kategori bebas akses. Selain situs itu, situs resmi sebuah perusahaan dan situs pemerintah umumnya bisa diakses oleh seluruh klien. Di lain sisi, situs yang berbayar hampir dipastikan hanya bisa diakses oleh klien yang telah membayar kepada situs tersebut. Contoh lain situs yang aksesnya terbatas antara lain situs surat elektronik pribadi dan situs forum suatu komunitas. Untuk mengakses situs yang tertutup, klien melakukan otentikasi agar bisa mengaksesnya. Sistem umum yang digunakan untuk proses otentikasi ini adalah sistem password. Dalam sistem ini, klien diminta untuk memasukkan password dan/atau username yang bersesuaian. Secara teknis, komputer klien melakukan method POST ke server dengan menyertakan username dan/atau password di baris request HTTP. Kemudian server membaca baris tersebut lalu melakukan pengecekan apakah username dan/atau password tersebut valid. Jika valid, server mengirimkan halaman yang diminta klien sedangkan jika tidak valid, server tidak mengirimkannya (biasanya disertai pesan kesalahan). Sistem password yang telah dijelaskan di atas telah banyak digunakan dalam situssitus tertutup karena mudah dan sederhana. Akan tetapi, terdapat sebuah lubang keamanan dalam sistem ini. Celah ini tercipta dikarenakan method POST yang digunakan untuk mengirimkan username dan/atau password. Seperti dijelaskan dalam Subbab 2.2.4, barisrequest yang dikirimkan oleh web browser tidak dienkripsi. Artinya, setiap data yang lewat terlihat jelas dalam baris-request tersebut. Gambar III-1 merupakan hasil pembacaan sebuah paket data yang dikirim ketika sebuah komputer melakukan proses login ke situs III-1
students.itb.ac.id dengan username=usernameku dan password=passwordku. Pada gambar tersebut terlihat di baris terakhir adanya username dan password yang diisikan user untuk login.
Gambar III-1 Isi paket data ketika melakukan login ke situs students.itb.ac.id
Seorang penjahat yang ingin mengetahui kunci untuk login cukup memasang aplikasi sniffer di komputer/router yang dilalui oleh paket data kiriman klien yang ingin dicuri. Aplikasi sniffer adalah aplikasi untuk membaca paket-paket data yang lewat di sebuah komputer. Aplikasi ini banyak tersedia di internet secara free, salah satu contohnya adalah Wireshark yang bisa diunduh di http://www.wireshark.org/download.html. Salah satu cara yang bisa ditempuh untuk mencegah hal ini terjadi adalah menggunakan SSL (Secure Socket Layer). SSL menjamin keamanan paket data yang lewat dengan membangun koneksi yang aman termasuk negosiasi parameter antara klien dengan server, otentikasi klien dengan server, komunikasi rahasia dan perlindungan integritas data. SSL secara detail dijelaskan di [TAN03]. Selain menggunakan SSL, dapat juga digunakan metode IPSec. Mirip dengan SSL, IPSec juga mengenkripsi paket data yang dikirimkan ke jaringan. Namun, IPSec bekerja di lapisan OSI ketiga, yaitu lapisan network sedangkan SSL di lapisan keempat, transport. Dibandingkan SSL, IPSec justru memiliki kelemahan lebih banyak. Kekurangan tersebut antara lain, kompleksitas, dokumentasi yang tidak jelas dan urutan yang terbalik antara prioritas enkripsi dan otentikas. Hal-hal ini dijelaskan di [FS99] dan [VPN08]. Misalkan seorang user telah berhasil melakukan otentikasi dan user tersebut melakukan navigasi ke halaman tertentu dalam situs. Sesuai request user tersebut, server III-2
memberikan response dengan mengirimkan halaman yang diminta. Sama halnya dengan kasus terlihatnya username dan password pada contoh login sebelumnya, halaman response yang dikirim oleh server juga bisa dilihat pada baris-response di paket data yang melewati komputer/router.
Gambar III-2 Isi paket data yang diterima dari situs students.itb.ac.id
Seperti terlihat di Gambar III-2, meskipun user telah terotentikasi, penjahat yang ingin mengetahui data-data yang ingin dibaca user bisa melihatnya menggunakan aplilkasi sniffer karena baris-response yang dikirimkan server tidak dienkripsi. Hal ini juga bisa ditangani menggunakan SSL. Akan tetapi, jika setiap transaksi request-response dilakukan
III-3
menggunakan SSL, waktu response yang diterima user akan jauh bertambah karena penggunaan SSL mengakibatkan sistem menjadi lambat[RIN06].
3.2
Penanganan Masalah Masalah yang telah dijabarkan sebelumnya muncul karena data baik yang dikirimkan
dari server maupun dari klien tidak dienkripsi terlebih dahulu sehingga terlihat dengan jelas di baris-request atau baris-response HTTP. Pada sistem password, otentikasi dilakukan di sisi server sehingga user harus mengirimkan data username dan password melalui jaringan ke server. Hal ini tidak perlu dilakukan seandainya otentikasi dilakukan di sisi klien. Dengan kata lain, penggunaan username dan password diganti dengan enkripsi dan dekripsi. Dengan sistem baru ini, komputer server langsung mengirimkan halaman yang sebelumnya hanya bisa diakses setelah klien melakukan otentikasi. Akan tetapi, halaman ini dienkripsi terlebih dahulu di server sebelum dikirim ke klien. Dengan demikian, pihak yang tidak memiliki kunci enkripsi (dianalogikan sebagai password) tidak bisa melakukan pembacaan terhadap isi halaman tersebut. Skema sistem baru ini dapat dilihat di Gambar III-3. Di sisi server, halaman web yang dihasilkan oleh script PHP dienkripsi menggunakan kunci P lalu ditransmisikan dalam keadaan ternkripsi ke klien. Halaman web terenkripsi tersebut lalu didekripsi sebelum ditampilkan ke web browser.
Gambar III-3 Skema otentikasi di sisi klien
3.2.1 Penanganan Enkripsi di Sisi Server Seperti telah diketahui, dokumen web diklasifikasikan menjadi dua jenis, yaitu dokumen web statis dan dokumen web dinamis. Situs web yang menggunakan sistem password dibangun menggunakan dokumen web dinamis karena halaman HTML biasa tidak bisa melakukannya.
III-4
Pada sistem password, setelah user memasukkan username dan password miliknya, komputer server kemudian melakukan retrieval password dari username yang dikirimkan ke tempat penyimpanan username dan password (umumnya menggunakan basis data). Setelah itu, komputer server membandingkan password yang dibaca dengan hasil pengiriman user. Jika sama, maka server mengirimkan response berupa halaman yang diminta oleh user sedangkan jika tidak sama (password salah), server tidak mengirimkan halaman yang diminta, biasanya disertai pesan kesalahan. Dalam sistem baru yang diajukan dalam tugas akhir ini, sistem tidak mengirimkan halaman login kepada user melainkan langsung halaman yang diminta dengan terlebih dahulu mengenkripsi halaman tersebut dengan password user yang bersangkutan. Oleh karena itu, dibutuhkan modul enkripsi di sisi server web. Pada sistem ini, komunikasi berjalan searah yaitu dari server ke klien sehingga modul yang dibutuhkan di sisi server hanyalah modul enkripsi. Modul ini dapat diimplementasikan dalam bentuk sebuah sub program (sebuah class server side scripting) yang bertugas melakukan enkripsi seluruh halaman web yang akan dikirim. Hal yang menjadi masalah penting dalam sebuah situs web adalah waktu response dan load yang dialami server. Klien menginginkan response yang cepat dari server sedangkan server menginginkan load seminimal mungkin yang harus dialaminya. Oleh karena itu, algoritma enkripsi yang digunakan harus sederhana dan cepat yang berarti kerja server serta waktu respons berkurang. Dari kriteria tersebut, dipilihlah algoritma kriptografi RC4 karena RC4 merupakan algoritma stream cipher yang sangat cepat untuk masalah transmisi halaman web seperti ini. Pemrosesan enkripsi secara cepat dibutuhkan untuk masalah ini, hal itu dikarenakan modul enkripsi yang dibutuhkan akan ditempatkan sebagai server side scripting pada server. Diharapkan modul ini tidak terlalu membebani load server sehingga diperoleh waktu respons yang optimal, yang pada akhirnya berpengaruh kepada performa sistem secara keseluruhan. Pada Tabel III-1 dapat dilihat hasil simulasi proses enkripsi menggunakan algoritma RC4 pada komputer Intel E4500 (2.2GHz) memori 1GB. Kecepatan ini adalah kecepatan enkripsi di memori, karena dalam proses enkripsi data dalam keadaan sebenarnya melibatkan banyak faktor lain seperti kecepatan akses IO, load server saat itu, dan faktor lain. Hasil pengetesan didapat dengan enkripsi 4 kbyte sebanyak 3200 kali, atau setara dengan 100 Mb data. Berdasarkan data terlihat bahwa kecepatan total yang bisa dicapai adalah sekitar 175III-5
215Mbps. Dengan berasumsi bahwa bandwidth server adalah 100Mbps, hasil simulasi membuktikan bahwa tidak terjadi bottleneck di sisi server ketika menerima request. Jadi pengetesan tersebut membuktikan bahwa RC4 sebagai algoritma yang cepat dalam pemrosesan proses enkripsi dan dekripsi. Tabel III-1 Kecepatan enkripsi RC4
Jumlah Thread 1 2 3 4 5 10
1 91.42 87.67 58.71 41.29 36.99 17.77
2 86.48 61.53 56.63 37.42 25.09
Kecepatan Thread ke (dalam Mbps) 3 4 5 6 7 8
58.71 48.48 43.53 17.97
9
10
Total 91.42 174.15 178.95 50.39 196.79 41.02 36.36 195.32 20.64 19.16 24.24 19.1 20 20.77 30.47 215.21
Dilihat dari segi keamanan, algoritma RC4 hanya bisa dipecahkan secara brute force. Oleh karena itu, kekuatan algoritma RC4 terletak pada panjang kunci yang digunakan. Dalam sistem ini, kunci akan diekspansi menggunakan fungsi hash SHA-1 yang menghasilkan 160 bit kunci baru. Untuk memecahkan 160 bit kunci tersebut, dibutuhkan 2160 percobaan sehingga algoritma RC4 dapat dinyatakan cukup aman.
3.2.2 Penanganan Dekripsi di Sisi Klien Setelah melakukan request ke server, klien akan menerima response berupa halaman web yang dimintanya dalam bentuk terenkripsi. Oleh karena itu, dibutuhkan modul dekripsi di sisi klien. Ada beberapa alternatif untuk melakukannya. Alternatif pertama adalah membuat web browser baru yang memiliki kemampuan untuk melakukan dekripsi terhadap halaman web yang diterimanya. Akan tetapi, untuk membuat sebuah web browser yang bagus tidaklah mudah. Di lain pihak, user internet sudah terbiasa menggunakan web browser yang saat ini beredar, seperti Mozilla Firefox atau Opera. Alternatif lain untuk melakukan client side scripting seperti dijelaskan pada subbab 2.2.3 adalah membuat JavaScript atau applet. Keduanya memiliki kemampuan untuk melakukan proses enkripsi halaman web yang diterima dari server. Selain itu, keduanya sederhana dan mudah untuk dikembangkan. Akan tetapi, untuk menyampaikan file JavaScript ataupun aplikasi applet ke sisi klien, dibutuhkan transfer melalu jaringan internet yang tidak aman. Hal ini memungkinkan terjadinya interupsi oleh pihak ketiga sehingga aplikasi yang sampai ke sisi user merupakan aplikasi jahat yang telah dibuat olehnya. III-6
Selain ketiga pilihan solusi di atas, solusi lain adalah dengan memanfaatkan plug-in untuk web browser yang sudah ada, yaitu Mozilla Firefox. Firefox memiliki banyak plug-in yang memiliki kemampuan bermacam-macam. Salah satuya adalah Greasemonkey. Plug-in ini memiliki kemampuan untuk menyertakan user script dimana user script ini adalah JavaScript yang bisa dibuat sesuai keinginan user. Oleh karena itu, solusi ini menjadi pilihan dalam membuat modul dekripsi di sisi klien karena kemudahan menggunakannya dan aman dari interupsi pihak ketiga (file JavaScript tidak ditransfer melalui jaringan karena sudah berada di sisi klien).
3.2.3 Manajemen Kunci Tugas akhir ini tidak menangani penyampaian kunci dari server ke sisi klien. Sistem mengasumsikan kedua pihak sudah memiliki kunci yang sama untuk melakukan enkripsi dan dekripsi. Penggantian kunci (password) juga tidak ditangani dalam tugas akhir ini karena prosedur penggantian kunci bisa menggunakan metode lain yaitu SSL. SSL bisa digunakan kali ini karena penggantian kunci jarang dilakukan. Selain itu, data yang dilewatkan juga sedikit, yaitu sebuah kunci baru sehingga proses bisa berjalan dengan cepat. Di sisi server, kunci disimpan dalam basis data yang diasumsikan aman sehingga user tidak perlu khawatir kuncinya tercuri. Hal lain yang menjadi pertimbangan dalam manajemen kunci adalah kelemahan algoritma RC4 terhadap pengulangan kunci ketika pembuatan S-Box. Hal ini terjadi karena pengisian S-Box yang kedua (Array K) menggunakan nilai yang berasal dari kunci yang di ulang-ulang untuk mengisi seluruh array K sebanyak 256 bytes. Baik kunci ‘a’ maupun kunci ‘aaa’ akan menghasilkan S-Box (Array K) yang sama. Untuk menyelesaikan masalah itu, maka kunci masukan dari user sebelumnya di hitung nilai hash-nya, kemudian nilai hash tersebut dimasukkan untuk mengisi S-Box (Array K).
III-7
3.2.4 Proses Transmisi Halaman Web
Gambar III-4 Proses transmisi halaman web
Proses pengaksesan halaman web menggunakan sistem ini terdiri dari tiga bagian utama, yaitu request dari klien, pemrosesan request di sisi server dan pemrosesan hasil request di sisi klien. Gambar III-4 menggambarkan prosedur penyampaian halaman web mulai dari server hingga bisa dibaca oleh klien.
3.3
Analisis Situs Pada bagian ini, akan dilakukan survey dua buah situs yang menggunakan sistem
lama, yaitu sistem password. Dari kedua situs ini, akan dipilih salah satu cocok dikembangkan menggunakan sistem enkripsi-dekripsi dalam tugas akhir ini. Situs yang pertama
adalah
(students.itb.ac.id)
situs
surat
sedangkan
elektronik yang
mahasiswa
kedua
(Rapidshare.com).
III-8
adalah
Institut situs
Teknologi
berbagi
file
Bandung Rapidshare
3.3.1 Studi Kasus I Situs Surat Elektronik Mahasiswa ITB (students.itb.ac.id)
Gambar III-5 Halaman login situs students.itb.ac.id
Situs students.itb.ac.id adalah sebuah situs yang menyediakan fasilitas surat elektronik bagi mahasiswa ITB. Seperti halnya situs surat elektronik konvensional, mahasiswa yang ingin membaca surat-surat elektronik pribadi miliknya diwajibkan melakukan login terlebih dahulu. Proses login ini yang akan dicoba diganti dengan sistem enkripsi halaman web. Gambar IV-1 merupakan halaman login situs tersebut sedangkan Gambar IV-2 adalah halaman utama yang akan muncul jika mahasiswa sukses melakukan login. Dalam studi kasus ini proses dari login diganti dengan enkripsi sehingga halaman yang dikirimkan oleh server adalah halaman utama dalam bentuk terenkripsi. Jika diasumsikan sistem berhasil melakukan dekripsi di sisi mahasiswa, halaman yang tampil di browser mahasiswa adalah Gambar IV-2. Sampai pada tahap ini sistem tidak menemui masalah.
III-9
Gambar III-6 Halaman utama situs students.itb.ac.id
Proses dilanjutkan dengan mahasiswa ingin mengirimkan surat pribadi menggunakan situs ini. Untuk melakukannya, mahasiswa tersebut membuka halaman compose seperti terlihat dalam Gambar IV-3. Kemudian dia mengisi pesan yang ingin dikirim, alamat tujuan dan sebagainya. Dalam tahap ini, terdapat masalah karena untuk mengirimkan pesan, browser melakukan metode post yang memungkinkan pesan tersebut dibaca menggunakan aplikasi sniffer. Sistem yang diajukan dalam tugas akhir ini hanya mendukung pengamanan data yang disampaikan dari server ke klien tetapi tidak sebaliknya. Oleh karena itu, sistem ini tidak cocok diterapkan dalam situs surat elektronik seperti ini.
III-10
Gambar III-7 Halaman compose pesan
3.3.2 Studi Kasus II Situs Berbagi File Rapidshare (rapidshare.com)
Gambar III-8 Halaman otentikasi situs Rapidshare
Studi kasus yang kedua adalah situs berbagi file Rapidshare. Dalam menyediakan layanannya, situs ini memfasilitasi premium-user untum memiliki folder pribadi yang terproteksi password seperti terlihat pada Gambar IV-4. Folder ini nantinya boleh diberitahu alamatnya kepada user lain yang mengetahui password tersebut. User lain yang mengetahui paswword tersebut bisa mengakses halaman yang berisi file-file yang terdapat dalam folder III-11
tersebut yang digambarkan di Gambar IV-5. User yang berhasil masuk ke halaman tersebut bisa mengunduh semua file yang ada.
Gambar III-9 Halaman yang berisi link-link untuk mengunduh file dalam folder
Seperti halnya proses login situs students.itb.ac.id, proses otentikasi user ke halaman yang berisi file-file bisa diganti dengan mengirim langsung halaman isi folder dalam keadaan terenkripsi. Halaman tersebut akan didekripsi di sisi klien dengan password yang sama seperti diketikkan pada sistem yang lama sehingga nantinya akan muncul halaman isi folder yang sebenarnya. Sedikit masalah muncul ketika user mengklik link yang disediakan untuk mengunduh file karena penjahat bisa menggunakan sniffer untuk mengetahui link yang di-request oleh user. Namun, hal ini bisa ditangani dengan menggunakan kunci sesi yang dibangkitkan secara acak. Kunci sesi ini nantinya akan disertakan dalam link untuk mengunduh file. Setiap terjadi request, kunci sesi akan dibangkitkan ulang sehingga meski penjahat mengetahui link file, dia tidak akan bisa mengunduh karena kunci sesi sudah berubah. Nantinya, pembangkitan kunci sesi tidak menggunakan fasilitas session id yang disediakan oleh PHP karena rawan pembajakan[STP08]. Oleh karena itu, aplikasi yang akan dibuat dalam tugas akhir ini merupakan situs berbagi file seperti situs Rapidshare ini.
III-12