JURNAL TEKNIK POMITS Vol. 2, No. 1, (2013) ISSN: 2337-3539 (2301-9271 Print) 1 Pengembangan Mekanisme One Time Password dengan Menggunakan Strategi Dual Channel pada Aplikasi Web Dian Rahma L.H., Waskitho Wibisono, dan Baskoro Adi Pratomo Teknik Informatika, Teknologi Informasi, Institut Teknologi Sepuluh Nopember (ITS) Jl. Arief Rahman Hakim, Surabaya 60111 Indonesia e-mail: [email protected] Abstrak—Salah satu gangguan yang terjadi pada pertukaran data di dunia maya adalah adanya serangan phishing terhadap kata sandi pengguna sebuah sistem web. Pada dasarnya penyerang mengelabui pengguna untuk memberi tahu data rahasia mereka dengan mengirimkan sebuah pesan palsu. Pengguna yang tidak mencurigai hal tersebut akan secara sukarela akan memberikan informasi rahasia mereka kepada penyerang. Atas dasar inilah diperlukan sebuah mekanisme One Time Password (OTP) yang bertujuan untuk mencegah terjadinya serangan phishing pada kata sandi pengguna. Mekanisme OTP ini menggunakan kata sandi sekali pakai untuk masuk ke dalam sebuah sistem web. Kata sandi tersebut dikirimkan oleh sebuah service OTP kepada pengguna melalui dua saluran komunikasi sekunder yakni aplikasi instant messaging yang tidak diketahui oleh penyerang dan email pengguna. Setelah diujikan, aplikasi ini dapat meningkatkan pengamanan penggunaan kata sandi pengguna dari serangan phishing karena kata sandi selalu berubah-ubah. Dan kata sandi dikirimkan melalui 2 secondary channel. ditujukan untuk meningkatkan pengamanan penggunaan kata sandi dari serangan phishing. Mekanisme OTP ini membutuhkan saluran komunikasi sekunder yang terpercaya. Ketika pengguna mencoba masuk ke dalam sistem, service OTP akan mengirimkan OTP melalui saluran komunikasi sekunder ini. Sehingga penyerang hanya akan mampu mendapatkan nama pengguna saja tanpa kata sandi untuk mengakses sistem. Adapun saluran komunikasi sekunder yang digunakan pada aplikasi ini adalah aplikasi instant messaging. Karena kebutuhan sistem untuk pengiriman OTP ini dilakukan secara real-time. Disamping itu layanan ini tersedia secara murah dan mudah didapatkan oleh pengguna. Sudah banyak dari penyedia layanan ini yang mengamankan saluran komunikasi mereka. Sehingga layanan pesan instan ini adalah solusi terbaik untuk mengirimkan OTP [3]. Disamping itu, pengiriman OTP juga dilakukan melalui email, agar pengguna memiliki secondary channel kedua untuk dimanfaatkan. Kata kunci—Phishing, One Time Password, Sekuritas Data I. PENDAHULUAN D EWASA ini phishing merupakan ancaman serius terhadap keamanan informasi rahasia pengguna internet. Menurut Dhamija [1] phishing adalah sebuah aktifitas berbahaya dan jahat dimana seorang penyerang mencoba untuk menipu pengguna internet agar memasukkan informasi rahasia mereka. Pada umumnya, penyerang mengelabui pengguna internet dengan mengarahkan mereka ke sebuah situs palsu yang menyerupai situs aslinya. Penyerang kemudian mengirimkan sebuah pesan palsu untuk meminta pengguna mengikuti sejumlah instruksi. Bagi para pengguna yang tidak menyadarinya, maka akan secara otomatis mengikuti instruksi yang diberikan. Dan tanpa sadar, mereka memberikan informasi rahasia mereka kepada penyerang. Terlebih lagi serangan ini semakin dipermudah dengan hadirnya phishing kits yang tersedia secara bebas [1]. Berdasarkan data yang ada[2], sebanyak 70% situs phishing yang ada bertujuan untuk mencuri username dan kata sandi pengguna. Atas dasar inilah dibangun sebuah mekanisme One Time Password (OTP), yakni kata sandi yang hanya bisa digunakan untuk sekali pakai oleh pengguna. Aplikasi ini II. TINJAUAN PUSTAKA A. Serangan Phishing Seperti yang ditulis dalam Webopedia, phishing merupakan sebuah serangan dalam jaringan internet yang dilakukan dengan mengirimkan sebuah pesan palsu, bisa dengan menggunakan email atau cara yang lain. Pesan yang dikirimkan tersebut mengarahkan asumsi pengguna internet bahwa pesan tersebut berasal dari pihak yang sah. Pesan yang dikirimkan pada umumnya berisi sebuah instruksi untuk mengunjungi suatu situs tertentu yang menyerupai situs yang asli. Ketika mengunjungi situs tersebut pengguna diminta untuk memberikan informasi rahasia mereka seperti kata sandi, akun bank dan lain sebagainya. Kemudian situs tersebut mencuri informasi yang telah dimasukkan pengguna dan menggunakannnya untuk tujuan yang tak dapat diprediksi [4]. B. Layanan Instant Messaging Instant messaging (IM) merupakan aplikasi pada internet yang mengijinkan terjadinya komunikasi one-to-one antar pengguna. Dewasa ini, layanan IM ini telah banyak ditemui. Dengan layanan IM ini pengguna dengan cepat mendapatkan respon setelah mereka mengirimkan sebuah pesan. Layanan IM ini menyediakan sebuah komunikasi real-time dan JURNAL TEKNIK POMITS Vol. 2, No. 1, (2013) ISSN: 2337-3539 (2301-9271 Print) chatting. Contoh dari aplikasi layanan IM ini adalah Yahoo Messenger, Gtalk, ICQ, AOL,dan MSN[5]. 2 akan digunakan pada saat terjadinya pertukaran data antara klien web service dengan web service. Gambar 1. Arsitektur Web Service C. Web Service Alonso dan Gustavo [6] mendefinisikan web service sebagai sebuah aplikasi yang dapat diakses oleh aplikasi lain melalui suatu web. Definisi lain menurut UDDI adalah sebuah aplikasi bisnis modular yang mandiri yang bisa diakses melalui koneksi internet dan memiliki antarmuka. Dengan kata lain web service merupakan web yang memberikan layanan aplikasi yang dapat digunakan bersama dan memiliki antarmuka publik yang dapat diakses melalui internet [6]. Suatu web service dapat berinteraksi secara langsung dengan aplikasi lain dengan menggunakan bahasa XML, untuk saling bertukar pesan melalui protokol untuk internet. Adapun arsitektur web service dapat dilihat pada Gambar 1. Adapun penjelasan dari ketiga peran seperti yang terlihat pada Gambar 1 adalah sebagai berikut. a. Service provider, yaitu entitas yang menyediakan interface terhadap sistem yang menjalankan suatu kumpulan tugas tertentu. b. Service requestor, yaitu entitas yang meminta atau mendapatkan layanan, serta yang menggunakan layanan tersebut. c. Service registry, yaitu entitas yang bertindak sebagai penyimpan suatu layanan yang dipublikasikan oleh service provider. D. Algoritma RC4 Algoritma RC4 merupakan salah satu algoritma yang sering digunakan dalam pemenuhan kebutuhan pengamanan data. Algoritma ini merupakan salah satu algoritma enkripsi simetris yang berbentuk stream chipper [7]. Algoritma ini ditemukan pada tahun 1987 oleh Ronald Rivest. RC4 menggunakan panjang kunci dari 1 sampai 256 bit yang digunakan untuk menginisialisasikan tabel sepanjang 256 bit. Secara garis besar algoritma dari metode RC4 Stream Cipher ini terbagi menjadi dua bagian, yaitu: key setup dan Stream Cipher generation. Pada key setup terdapat tiga tahapan proses di dalamnya, yaitu inisialisasi S-Box, menyimpan key dalam key byte array, permutasi pada S-Box. Pada stream generation akan menghasilkan nilai pseudorandom yang akan dikenakan operasi XOR untuk menghasilkan ciphertext ataupun sebaliknya yaitu untuk menghasilkan plaintext [7]. Pada aplikasi ini, enkripsi RC4 Gambar 2. Arsitektur Sistem E. Algoritma RSA RSA merupakan salah satu algoritma enkripsi asimetrik. RSA menggunakan sepasang kunci untuk proses dekripsi dan enkripsinya [8]. Kunci-kunci yang ada pada pasangan kunci mempunyai hubungan secara matematis. Kunci tersebut diberi nama dengan istilah private key dan public key. Adapun pembuatan pasangan kunci private key dan public key didapatkan dari penghitungan pangkat eksponen dan modulus dari variabel-variabel yang dibutuhkan. Pada aplikasi ini, enkripsi RSA akan digunakan pada saat pengiriman OTP dari web service OTP ke aplikasi instant messaging dan email pengguna. III. ANALISIS DAN PERANCANGAN SISTEM A. Deskripsi Umum Sistem Aplikasi ini merupakan aplikasi yang bertujuan untuk membentuk sistem keamanan pada suatu situs web yang bertujuan untuk mencegah terjadinya serangan phishing pada kata sandi pengguna. Pencegahan ini dilakukan dengan cara mengirimkan One Time Password yang hanya dapat digunakan untuk sekali login melalui dua secondary channel yang tidak diketahui oleh penyerang. Jalannya aplikasi ini dimulai dengan proses autentikasi pengguna yang akan masuk ke dalam suatu sistem situs web, baik berupa pemakaian data maupun penggunaan layanannya. Oleh karena itu, aplikasi berbasis web dan desktop ini merupakan terobosan untuk mencegah serangan dengan menggunakan mekanisme One Time Password (OTP). Adapun arsitektur sistem ini dapat dilihat pada Gambar 2. Pada rancangan arsitektur umum ini, menjelaskan proses perancangan secara umum dari kinerja sistem. Di mana JURNAL TEKNIK POMITS Vol. 2, No. 1, (2013) ISSN: 2337-3539 (2301-9271 Print) Gambar 3. Diagram Alir Data Level 0 Aplikasi proses yang dilakukan pertama kali oleh sistem ini adalah poses autentikasi pengguna yang akan masuk ke dalam sistem situs web. Kemudian situs web yang dituju mengakses sebuah web service yang menyediakan layanan OTP untuk melakukan pembacaan pada database. Selanjutnya web service layanan OTP tersebut melakukan koneksi kepada server instant messaging dan mail server. Kemudian mengirimkan OTP kepada pengguna melalui layanan instant messaging dan email. B. Perancangan Fungsionalitas Sistem Pada aplikasi OTP ini digunakan diagram konteks untuk mendefinisikan kebutuhan perangkat lunak. Aplikasi ini akan bekerja pada dua proses, yakni proses registrasi dan proses login. Pada proses login, aplikasi ini bertujuan untuk mengeliminasi penggunaan kata sandi yang bersifat statis. Pengguna diminta untuk memasukkan nama pengguna tanpa kata sandi. Selanjutnya pengguna memasukkan akun Instant Messaging(IM) dan informasi autentikasi. Pengguna harus memasukkan akun IM yang didukung oleh situs web yang bersangkutan. Informasi autentikasi merupakan jawaban dari security question. Kemudian sistem melakukan validasi, dengan terlebih dahulu memunculkan tes CAPTCHA untuk memastikan bahwa yang melakukan proses registrasi adalah manusia bukan robot. Berikut ini adalah penjelasan tiap proses yang terdapat pada aplikasi. 1. Melakukan Registrasi Registrasi adalah proses di mana pengguna dapat mendaftarkan diri pada layanan OTP ini. Data yang dibutuhkan saat registrasi adalah username, email, dan informasi personal. Informasi personal merupakan jawaban dari pertanyaan autentikasi yang diberikan oleh sistem. Apabila pengguna memasukkan username yang telah ada atau memasukkan data kurang lengkap, maka akan muncul peringatan dari sistem bahwa proses registrasi tidak berhasil. 3 2. Melakukan Login pada Aplikasi Web Proses login adalah proses di mana pengguna memasukkan username dan kata sandi untuk dapat mengakses sebuah sistem. Proses login pada aplikasi ini akan dilakukan dalam dua langkah. Langkah yang pertama adalah login dengan username. Langkah yang kedua adalah login dengan memasukkan OTP. Alur kasus penggunaan fungsi ini adalah pengguna terlebih dahulu melakukan proses registrasi agar username terdaftar pada sistem. Kemudian pengguna memasuki halaman login yang pertama. Selanjutnya pengguna memasukkan username. Apabila username yang dimasukkan salah, pengguna telah gagal melakukan login tahap 1. Akan tetapi jika username yang dimasukkan benar, maka sistem akan mengarahkan pengguna ke halaman CAPTCHA. Apabila pengguna lolos dalam tes CAPTCHA maka sistem akan mengirimkan OTP ke aplikasi instant messaging. Selanjutnya pengguna harus memasukkan OTP yang telah dikirimkan di halaman login OTP yang telah disediakan. Apabila OTP yang dimasukkan benar, maka pengguna akan bisa memasuki sistem. Akan tetapi jika salah atau melebihi waktu yang diberikan, maka pengguna harus melakukan proses login dari awal. 3. Melakukan Login pada Aplikasi Instant Messaging Aplikasi instant messaging ini digunakan sebagai saluran komunikasi kedua untuk pengiriman OTP dari layana OTP kepada pengguna. Pengguna harus terlebih dahulu melakukan login pada aplikasi instant messaging sebelum login pada aplikasi web. Karena pada proses login di aplikasi instant messaging ini, aplikasi akan mengirimkan public key pengguna ke layanan OTP. Data yang dibutuhkan pada saat login ini adalah username, email, dan kata sandi email. Apabila pengguna kurang lengkap dalam memasukkan data atau username yang dimasukkan tidak terdapat pada database, maka proses login ini tidak dapat dilakukan. IV. IMPLEMENTASI Sistem ini terdiri dari aplikasi berbasis web dan aplikasi berbasis desktop. Pada aplikasi berbasis web dan web service, dibangun dengan menggunakan bahasa pemrograman PHP. Sedangkan pada aplikasi berbasis desktop dibangun menggunakan bahasa pemrograman Java. Berikut deskripsi dari implementasi masing-masing fungsional pada aplikasi ini. 1. Proses Registrasi Pada proses registrasi, implementasi terdapat pada halaman web sebagai klien web service OTP dan pada web service itu sendiri. Untuk impementasi pada halaman register dapat dilihat pada Gambar 4. Pada Gambar 4 tersebut terlihat bahwa data yang dibutuhkan adalah username, email, dan informasi personal pengguna. Apabila pengguna berhasil melakukan proses registrasi maka sistem akan mengarahkan JURNAL TEKNIK POMITS Vol. 2, No. 1, (2013) ISSN: 2337-3539 (2301-9271 Print) 4 Gambar 4. Implementasi Fungsi Register pada Aplikasi Web pengguna ke halaman tes CAPTCHA. Pada saat melakukan proses registrasi, aplikasi web sebagai klien web service OTP akan memanggil fungsi register() yang ada pada web service. Pada fungsi itu dilakukan pengecekan apakah username yang dimasukkan telah terdaftar atau belum. Jika sudah terdaftar, maka proses registrasi gagal dan service OTP mengembalika respon “undone”. Sedangkan jika register berhasil service OTP mengembalikan respon “done”. 2. Proses Login Pada saat proses login aplikasi web akan memanggil fungsi login() yang terdapat pada web service OTP. Aplikasi web OTP mengirimkan data username yang dimasukkan oleh pengguna kepada web service OTP. Selanjutnya web service menjalankan query. Jika username terdapat pada database, maka proses login berhasil. Apabila login berhasil, maka pengguna akan diarahkan untuk melakukan tes CAPCTHA. Jika berhasil, maka web service akan membangkitkan OTP dan mengirimkannya ke aplikasi instant messaging dan email pengguna. Adapun pseudocode fungsi login terdapat pada Gambar 5. Input Username: Masukkan username dari pengguna Output Hasil validasi 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Web Service Client call function login(username) Get username Web Service do function login(username) if user.exists() return true else return false Web Service Client call function captchaTest(username, usersession) Web Service Client call function generateOTP(heksaUsername, userSession) Web Service do generateOTP(heksaUsername, userSession) Return Otp encryptData(Otp) sendOTP() Gambar 5. Pseudocode Proses Login Gambar 6. Implementasi Proses Pengiriman OTP dari Web Service ke Aplikasi Instant Messaging 3. Proses Pembangkitan OTP Proses Pembangkitan OTP dilakukan ketika pengguna telah berhasil hingga tahap tes CAPTCHA. OTP yang dibangkitkan kemudian akan dikirimkan ke aplikasi instant messaging. OTP tersebut akan dienkripsi terlebih dahulu sebelum dikirimkan dengan menggunakan algoritma RSA. Adapun hasil implementasi proses ini dapat dilihat pada Gambar 6. Implementasi fungsi ini dapat dilihat pada pseudocode di Gambar 7. Input Username : Data masukan username yang diperoleh dari cookie pada browser pengguna userSession : Data masukkan session pengguna yang diambil dari database Output theOtp : OTP yang dibangkitkan oleh web service 1 2 3 4 5 6 7 8 9 10 11 Web Service Client call function generateOTP(username, usersession) Web Service do generateOTP(username, usersession) Initialize theOtp for i = 0 to 7 do theOtp = heksaUsername[i] for i = 0 to 7 do theOtp += usersession[i] write theOtp to database return theOtp Gambar 7. Pseudocode Pembangkitan OTP 4. Proses Dekripsi OTP yang Dikirim Melalui Email OTP yang dikirimkan melalui email pengguna masih berupa chiper text yang harus didekripsi terlebih dahulu sebelum pengguna menggunakannya. JURNAL TEKNIK POMITS Vol. 2, No. 1, (2013) ISSN: 2337-3539 (2301-9271 Print) 5 Gambar 9. Uji Coba Proses Login Gambar 11.Menu Dekripsi OTP Gambar 10. Uji Coba Proses Tes CAPTCHA Dekripsi OTP yang dikirim melalui email tersebut daat dilakukan dengan memasukkan chiper text ke dalam menu dekrip yang telah disediakan pada aplikasi desktop sistem ini. Setelah melalui proses dekripsi pengguna dapat menggunakan OTP tersebut, sekaligus membandingkan apakah OTP yang dikirimkan melalui aplikasi instant messaging sama dengan yang dikirimkan melalui email. Implementasi proses ini dapat dilihat pada Gambar 11. V. PENGUJIAN DAN EVALUASI Pengujian dilakukan untuk menguji apakah fungsionalitas sistem sudah berjalan dengan benar. Pengujian juga dilakukan untuk menguji performa aplikasi. Rincian pengujian adalah sebagai berikut. 1. Pengujian Fungsi Login Pengujian ini dilakukan dengan memasukkan username, kemudian jawaban tes CAPTCHA, selanjutnya memasukkan OTP yang dikirimkan oleh web service OTP. Gambar 9 menunjukkan uji coba pada proses login. Jika berhasil, maka pengguna akan diarahkan ke halaman CAPTCHA seperti yang terdapat pada Gambar 10. Apabila pengguna berhasil dalam tes CAPTCHA, maka sistem akan mengirimkan OTP kepaa aplikasi instant Gambar 12. Uji Coba Pengiriman OTP messaging. Uji coba ini dapat dilihat pada Gambar 12. OTP yang dikirimkan kemudian dimasukkan di halaman login dengan OTP agar pengguna bisa mengakses sistem. 2. Pengujian Fungsi Register Pengujian ini dilakukan dengan memasukkan data username, email dan jawaban pertanyaan autentikasi. Pada Gambar 13 menunjukkan uji coba proses register. Pengguna memasukkan data-data yang dibutuhkan. Apabila username belum terdaftar dan data yang dimasukkan lengkap, maka proses registrasi berhasil. 3. Pengujian Performa Penggunaan Bandwidth Pengujian performa penggunaan bandwidth ini dilakukan dengan membandingkan penggunaan pemakaian bandwidth ketika menggunakan enkripsi dan tanpa menggunakan enkripsi. Maka didapatkan bahwa selisih penggunaan bandwidth adalah sebesar 0,0072 KB/s. Grafik hasil pengujian performa ini dapat dilihat pada Gambar 14. 4. Pengujian Performa Kecepatan Waktu Respon Tiap Proses dengan 20 request simultan. Uji coba dilakukan dengan menjalankan aplikasi Apache Jmeter. Kemudian mengatur jumlah Thread User yang akan mengakses service pada waktu yang sama. JURNAL TEKNIK POMITS Vol. 2, No. 1, (2013) ISSN: 2337-3539 (2301-9271 Print) 6 Gambar 15. Uji Coba Waktu Respon Tiap Proses dengan 20 Request Simultan Gambar 13. Uji Coba Proses Register 2. Web Service Layanan OTP dapat melayani klien web service dengan cukup cepat meskipun menggunakan proses enkripsi. Hal ini dibuktikan dengan selisih rata-rata waktu yang dibutuhkan untuk menjalankan fungsional dengan menggunakan enkripsi hanya 62,8 ms dengan proses tanpa enkripsi. 3. Aplikasi memiliki waktu rata-rata 1233,4 ms untuk menjalankan keseluruhan fungsi. Ujicoba dilakukan dengan mensimulasikan 5 hingga 30 request secara simultan yang mengakses web service layanan OTP dalam waktu yang sama. 4. Penggunaan bandwidth pada aplikasi ini tidak terdapat perubahan signifikan meskipun menggunakan algoritma enkripsi. Hal ini dibuktikan dengan selisih rata-rata penggunaan bandwidth tiap proses tidak ada perbedaan yang signifikan. Selisih pada proses 1 adalah sebesar 0,017 KB/s. Selisih pada proses 2 adalah sebesar 0,007 KB/s, sedangkan pada proses 3 sebesar 0,013 KB/s. Gambar 14. Uji Coba Perbandingan Pemakaian Bandwidth Selanjutnya Membuat HTTP requests yang menggambarkan klien web service mengirim request ke web service. Uji coba dilakukan dengan mengirimkan request langsung dari 20 pengguna. Adapun hasil dari pengujian ini dapat dilihat pada Gambar 15. Dari hasil pengujian dapat dilihat bahwa proses yang membutuhkan waktu paling lama dalam eksekusi adalah proses login dengan OTP. Hal ini dikarenakan web service layanan OTP harus terlebih dahulu mengirim OTP ke aplikasi chat baru kemudian memberi respon balik ke klien web service. Adapun rata-rata waktu yang dibutuhkan proses 1 adalah 804,5 ms. Pada proses 2 membutuhkan rata-rata waktu 347,5 ms. Sedangkan pada proses 3 membutuhkan waktu rata-rata 642,25 ms. UCAPAN TERIMA KASIH Penulis D.R. mengucapkan terima kasih kepada Allah SWT, kedua orangtua dan keluarga penulis, dosen pembimbing, seluruh dosen Teknik Informatika ITS, kerabat dekat, serta berbagai pihak yang telah membantu penulis dalam menyelesaikan penelitian ini. DAFTAR PUSTAKA [1] [2] [3] [4] VI. KESIMPULAN/RINGKASAN Dari hasil pengamatan selama perancangan, pengimplementasian, dan proses uji coba sistem didapatkan kesimpulan sebagai berikut. 1. Mekanisme One Time Password ini dapat menjadi salah satu solusi pengamanan kata sandi karena satu kata sandi hanya dapat digunakan untuk satu kali proses login. [5] [6] [7] [8] McMillan R, 2006 “Rock Phish Blamed for Surged in Phishing,”<URL: /http://www.infoworld.com/article/06/12/12/HNrockphish_1.htmlS.> diakses pada 4 April 2013 PhishTank, 2009, "Joint The Fight Against Phishing,"<URL: /http://www.phishtank.com/> diakses pada 15 April 2013. Chun-Ying Huang, Shang-Pin Ma, and Kuan-Ta Chen,"Using One Time Password to Prevent Password Phishing Attack,". 2011. Webopedia, "Term of Phisshing," <URL: http://webopedia.com/TERM/Phishing> diakses pada 13 Mei 2013. Linan Zheng, "Instant Messaging: Architecture and Concepts, " Institute of Communication Networks and Computer Engineering System and Media, University of Stuttgart. 2005. Gustavo Alonso, "Web Service: Concepts, Architecture, and Application," Swiss Federal Institute of Technology.2006. AM Husein and M Harahap, “Pengamanan data dengan Menggunakan Setganografydan Algoritma RC4,"Sekolah Tinggi Teknik Harapan Medan.2013. Kessler, Gary C, "An Overview of Cryptography", Aurebach.1998.