ANALISIS DAN IMPLEMENTASI TWO FACTOR AUTHENTICATION DENGAN QR CODE PADA APLIKASI BERBASIS WEB
RAHMAD SYAIFULLAH GUSMAN
DEPARTEMEN ILMU KOMPUTER FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM INSTITUT PERTANIAN BOGOR BOGOR 2013
PERNYATAAN MENGENAI SKRIPSI DAN SUMBER INFORMASI SERTA PELIMPAHAN HAK CIPTA Dengan ini saya menyatakan bahwa skripsi berjudul Analisis dan Implementasi Two Factor Authentication dengan QR Code pada Aplikasi Berbasis Web adalah benar karya saya dengan arahan dari komisi pembimbing dan belum diajukan dalam bentuk apa pun kepada perguruan tinggi mana pun. Sumber informasi yang berasal atau dikutip dari karya yang diterbitkan maupun tidak diterbitkan dari penulis lain telah disebutkan dalam teks dan dicantumkan dalam Daftar Pustaka di bagian akhir skripsi ini. Dengan ini saya melimpahkan hak cipta dari karya tulis saya kepada Institut Pertanian Bogor. Bogor, Juli 2013 Rahmad Syaifullah G NIM G64090101
ABSTRAK RAHMAD SYAIFULLAH G. Analisis dan Implementasi Two Factor Authentication dengan QR Code pada Aplikasi Berbasis Web. Dibimbing oleh ENDANG PURNAMA GIRI dan KARLISA PRIANDANA. Proses otentikasi pada aplikasi web di jaringan Internet merupakan hal yang sangat penting sehingga dibutuhkan suatu metode yang dapat melakukan otentikasi secara aman. Two factor authentication merupakan metode yang mengombinasikan 2 atau lebih metode otentikasi untuk meningkatkan keamanan. Pada penelitian ini dilakukan analisis dan implementasi two factor authentication dengan QR code pada suatu aplikasi online berbasis web. Sistem ini akan menggunakan sebuah aplikasi token authentication yang dijalankan pada telepon genggam. Aplikasi token ini akan bekerja sebagai scanner, yang membaca informasi dari QR code pada aplikasi web. Penggunaan QR code pada sistem ini diharapkan dapat meningkatkan keamanan dan kemudahan dalam proses otentikasi. Kata kunci: one-time password, otentikasi, QR code, two factor authentication.
ABSTRACT RAHMAD SYAIFULLAH G. Analysis and Implementation of Two Factor Authentication with QR Code in Web-Based Aplication. Supervised by ENDANG PURNAMA GIRI and KARLISA PRIANDANA. The process of authentication on the web application in the Internet is very important and call for a method that can securely authenticate. Two Factor Authentication is a method of combining two or more methods of authentication to improve security. In this research, analysis and implementation of two-factor authentication with QR code on a web-based online application is implemented. The system will use an authentication token application that run on mobile phones. Token application will work as a scanner that reads the information from the QR code on the web application. The use of QR code in the system is expected to enhance the security and simplicity of the authentication process. Keywords: authentication, one-time password, QR code, two factor authentication.
ANALISIS DAN IMPLEMENTASI TWO FACTOR AUTHENTICATION DENGAN QR CODE PADA APLIKASI BERBASIS WEB
RAHMAD SYAIFULLAH GUSMAN
Skripsi sebagai salah satu syarat untuk memperoleh gelar Sarjana Ilmu Komputer pada Departemen Ilmu Komputer
DEPARTEMEN ILMU KOMPUTER FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM INSTITUT PERTANIAN BOGOR BOGOR 2013
Judul Skripsi : Analisis dan Implementasi Two Factor Authentication dengan QR Code pada Aplikasi Berbasis Web Nama : Rahmad Syaifullah G NIM : G64090101
Disetujui oleh
Endang Purnama Giri, SKom MKom Pembimbing I
Karlisa Priandana, ST MEng Pembimbing II
Diketahui oleh
Dr Ir Agus Buono, MSi MKom Ketua Departemen
Tanggal Lulus:
PRAKATA Puji dan syukur penulis panjatkan kepada Allah subhanahu wa ta’ala atas segala karunia-Nya sehingga karya ilmiah ini berhasil diselesaikan. Tema yang dipilih dalam penelitian ini ialah keamanan informasi dalam proses otentikasi, dengan judul Analisis dan Implementasi Two Factor Authentication dengan QR Code pada Aplikasi Berbasis Web. Terima kasih penulis ucapkan kepada Bapak Endang Purnama Giri dan Ibu Karlisa Priandana selaku pembimbing yang telah memberikan tuntunan dan arahan sehingga penelitian ini dapat diselesaikan dengan baik serta Ibu Shelvie Nidya Neyman selaku penguji yang telah memberikan masukan dan saran dalam penelitian ini. Ungkapan terima kasih juga disampaikan kepada ayah, ibu, serta seluruh keluarga, atas segala doa dan dukungannya. Semoga karya ilmiah ini bermanfaat.
Bogor, Juli 2013 Rahmad Syaifullah G
DAFTAR ISI DAFTAR TABEL
vi
DAFTAR GAMBAR
vi
DAFTAR LAMPIRAN
vi
PENDAHULUAN
1
Latar Belakang
1
Perumusan Masalah
2
Tujuan Penelitian
2
Manfaat Penelitian
3
Ruang Lingkup Penelitian
3
METODE
3
Perancangan Skema Otentikasi
3
Implementasi
3
Analisis dan Pengujian
4
HASIL DAN PEMBAHASAN
4
Perancangan Skema otentikasi
4
Implementasi
7
Pengujian
15
Analisis
16
SIMPULAN DAN SARAN
17
Simpulan
17
Saran
17
DAFTAR PUSTAKA
18
LAMPIRAN
18
RIWAYAT HIDUP
21
DAFTAR TABEL 1 Hasil pengujian fungsional sistem 2 Hasil pengujian penyadapan sistem (sniffing)
15 16
DAFTAR GAMBAR 1 2 3 4 5 6 7 8 9
Bagan interaksi otentikasi online Skema otentikasi online Bagan interaksi otentikasi offline Skema otentikasi offline Entity relationship diagram Sistem kriptografi kunci publik Cara kerja SSL Perbandingan barcode dan QR code Tampilan awal saat pengguna akan melakukan otentikasi untuk mengakses layanan Internet banking Bank Ilkomerz. 10 Tampilan awal saat pengguna mengakses aplikasi token mobile
5 6 7 8 9 10 11 13 14 15
DAFTAR LAMPIRAN 1 Tampilan aplikasi web server Bank Ilkomerz 2 Tampilan aplikasi token mobile Bank Ilkomerz
19 21
PENDAHULUAN Latar Belakang Perkembangan jaringan Internet saat ini telah mengalami kemajuan yang sangat pesat. Melalui jaringan ini berbagai hal dapat dilakukan secara online seperti: melakukan transaksi perbankan, berbelanja, mengirim pesan, dan berbagi informasi di media sosial. Dengan adanya kemudahan layanan di Internet muncul permasalahan baru, yaitu keamanan akses informasi untuk otentikasi pengguna yang sah dari suatu sistem di jaringan Internet. Otentikasi adalah proses membuktikan suatu identitas (Kessler 1998). Otentikasi bertujuan membuktikan keabsahan seseorang dalam menggunakan suatu layanan. Metode otentikasi bisa dilihat dalam 3 kategori metode (Mallow 2007): Something you know, merupakan metode yang paling umum dengan mengandalkan password. Something you have, merupakan faktor tambahan untuk membuat otentikasi menjadi lebih aman dengan mengandalkan barang yang sifatnya unik, contohnya: kartu magnetik/smartcard, USB token, token hardware, dan sebagainya. Something you are, merupakan metode yang mengandalkan keunikan bagianbagian tubuh yang tidak mungkin ada pada orang lain, seperti sidik jari, sidik retina, dan suara. Penggunaan satu metode (one factor) dalam proses otentikasi memiliki banyak kelemahan. Metode otentikasi yang umum digunakan adalah something you know dengan penggunaan password dalam otentikasi. Kim et al. (2012) dalam tulisannya menjelaskan banyaknya kelemahan dalam proses otentikasi yang menggunakan password, yaitu: weak combination, memorability, keylogging, eavesdropping, shoulder surfing, dan reuse (linkage). Metode one factor lainnya adalah penggunaan smart card (something you have). Kendala dalam otentikasi menggunakan smart card adalah jika alat otentikasi ini berpindah tangan maka dengan mudah orang lain dapat menggunakannya untuk melakukan proses otentikasi. Selain itu implementasi penggunaan perangkat ini juga cukup mahal. Metode one factor dengan menggunakan keunikan bagian-bagian tubuh pengguna (something you are) cukup powerful dalam menjamin keamanan otentikasi, namun penggunaan metode ini terkendala dengan biaya implementasi perangkatnya yang mahal. Berbagai penelitian telah dilakukan untuk merancang proses otentikasi yang lebih aman namun juga tetap efisien. Salah satunya adalah two factor authentication, yaitu suatu sistem otentikasi yang menggunakan 2 faktor (metode) yang berbeda (Valente 2009). Salah satu contohnya adalah kombinasi “something you have” seperti kartu ATM dengan “something you know” berupa password pada transaksi keuangan di ATM. Contoh lain dari implementasi two factor authentication adalah proses otentikasi pengguna saat menggunakan layanan Internet banking. Selain menggunakan password miliknya sendiri, pengguna juga menggunakan token yang akan membangkitkan suatu password sekali pakai (one time password) agar
2 dapat terotentikasi dalam menggunakan layanan Internet banking. Pada layanan Internet banking suatu token bekerja berdasarkan prinsip challenge dan response, dimana web server akan membangkitkan suatu challenge yang nantinya akan diproses oleh token dan menghasilkan suatu response yang digunakan untuk melakukan otentikasi. Token yang digunakan biasanya berupa hardware token. Saat ini telepon genggam telah berkembang dengan sangat pesat. Sebagian besar telepon genggam saat ini telah memiliki CPU yang cukup kuat untuk melakukan proses komputasi yang kompleks, memiliki kamera serta memiliki kemampuan koneksi ke jaringan Internet melalui wifi atau teknologi 3G. Dengan kemampuannya ini telepon genggam sangat cocok untuk dijadikan perangkat otentikasi token. Quick response code (QR code) merupakan suatu jenis kode batang 2 dimensi. QR code memiliki banyak kelebihan dibandingkan dengan barcode satu dimensi. QR code mampu menyimpan hingga 7089 karakter dalam satu simbol, serta dapat melakukan proses pemindaian dari berbagai sudut dengan cepat (Kieseberg et al. 2010). Dengan kelebihannya ini QR code sangat cocok untuk dijadikan media penyimpanan informasi otentikasi pada proses otentikasi. Maestre (2012) memaparkan suatu desain two factor authentication dengan mengombinasikan password dan kamera pada telepon genggam yang digunakan sebagai token otentikasi. Informasi untuk kebutuhan otentikasi disimpan dalam sebuah QR code. Kamera pada telepon genggam akan bertindak sebagai QR scanner yang akan membuktikan kebenaran identitas pengguna. Pada desainnya ini beliau berhasil merancang skema otentikasi secara offline (saat telepon genggam tidak terkoneksi ke jaringan Internet). Pada penelitian ini akan dilakukan analisis dan implementasi sebuah sistem two factor authentication menggunakan QR code. Sistem ini akan mengkombinasikan telepon genggam yang digunakan sebagai token otentikasi untuk membaca QR code dengan password yang hanya diketahui oleh pengguna. Melalui QR code proses otentikasi dapat dilakukan dengan lebih aman sebab informasi yang digunakan untuk kebutuhan otentikasi disimpan dalam bentuk QR code. Sistem ini akan diimplementasikan dalam bentuk proses otentikasi pengguna di sebuah aplikasi online berbasis web. Perumusan Masalah Bagaimanakah efektivitas penggunaan metode two factor authentication dengan QR code dalam meningkatkan keamanan proses otentikasi pengguna pada sebuah aplikasi berbasis web di jaringan Internet?
Tujuan Penelitian Menganalisis dan mengimplementasikan metode two factor authentication menggunakan QR code pada sebuah aplikasi berbasis web dengan menggunakan telepon genggam sebagai token otentikasi.
3 Manfaat Penelitian Dari penelitian ini dapat diketahui kelebihan proses otentikasi dengan metode two factor authentication menggunakan QR code dengan memanfaatkan telepon genggam sebagai otentikasi token. Untuk selanjutnya diharapkan melalui metode ini proses otentikasi dapat dilakukan dengan aman dan mudah dilakukan. Terlebih pada layanan-layanan online yang membutuhkan otentikasi yang sangat aman seperti pada transaksi e-banking, e-shopping, media sosial, dan sebagainya.
Ruang Lingkup Penelitian Penelitian ini menggunakan metode two factor authentication dengan QR code. Pada penelitian ini dirancang sebuah aplikasi otentikasi token (QR scanner) yang dijalankan pada telepon genggam dengan platform Android.
METODE Penelitian ini mengembangkan aplikasi otentikasi berbasis web. Pada aplikasi tersebut akan diimplementasikan metode two factor authentication menggunakan QR code. Aplikasi ini akan dibuat pada sebuah prototipe aplikasi Internet banking sederhana. Selain aplikasi berbasis web juga akan dikembangkan aplikasi mobile yang berfungsi sebagai otentikasi token. Penelitian ini akan melalui beberapa tahapan sebagai berikut: 1 Perancangan skema otentikasi 2 Implementasi 3 Analisis dan pengujian
Perancangan Skema Otentikasi Pada tahapan ini, dilakukan perancangan skema sistem otentikasi. Skema sistem ini dibagi dalam 2 model tahapan yaitu: registrasi dan otentikasi. Pada tahapan otentikasi akan dilakukan pengecekan telepon genggam. Jika telepon genggam pengguna terkoneksi dengan jaringan Internet maka sistem akan melakukan skema otentikasi secara online, dan sebaliknya jika telepon genggam pengguna terdeteksi tidak terkoneksi dengan jaringan Internet, maka otentikasi akan dilakukan secara offline.
Implementasi Tahapan implementasi adalah penerapan hasil perancangan skema otentikasi. Pada sistem otentikasi ini akan dibuat 2 buah aplikasi. Pertama adalah aplikasi web server berupa sebuah prototipe aplikasi Internet banking sederhana, dan yang kedua adalah aplikasi mobile yang bekerja sebagai token dalam proses otentikasi terhadap aplikasi web server.
4 Dari hasil analisis, diperoleh kebutuhan perangkat lunak dan perangkat keras yang digunakan dalam pengembangan sistem. Perangkat lunak yang digunakan adalah Eclipse 3.7.2, Netbeans IDE 7.2.1, Android SDK, OpenSSL 0.9.8i, ZXing-2.0, PHPQRCode library, dan Mozilla Firefox 21.0. Perangkat keras yang digunakan adalah Samsung Galaxy Y dengan spesifikasi memori internal 160 MB, kamera 2.0 megapixel, dan prosesor ARMv6 832 MHz.
Analisis dan Pengujian Pada tahapan ini akan dilakukan analisis dan pengujian keamanan dari sistem yang telah dikembangkan. Pengujian dilakukan dengan melakukan percobaan serangan terhadap sistem.
HASIL DAN PEMBAHASAN Perancangan Skema otentikasi Rancangan skema otentikasi pada penelitian ini mengikuti skema yang dikembangkan oleh Maestre (2012). Skema otentikasi dirancang untuk diterapkan pada proses otentikasi pengguna dalam suatu layanan Internet banking di suatu bank. Skema ini dibagi dalam 2 tahapan yaitu regristrasi dan otentikasi. Registrasi Untuk dapat menggunakan layanan Internet banking, pengguna diharuskan untuk mendaftar ke bank terlebih dahulu. Pada saat mendaftar pengguna diminta untuk memasukkan username, password dan kode International Mobile Equipment Identity (IMEI) dari telepon genggam yang akan digunakan sebagai token. Kode IMEI adalah nomor unik dari suatu telepon genggam yang dapat diakses dengan mengetikkan *#06# pada telepon genggam. Setelah proses registrasi selesai, pengguna dapat mengunduh aplikasi token dari pihak bank. Pada aplikasi tersebut sudah tersimpan server public key dari pihak bank, user private key dari pengguna, dan data pengguna yang terenkripsi. Otentikasi Saat halaman otentikasi dibuka, sebuah QR code akan ditampilkan. QR code ini menyimpan random number yang nilainya antara 1-99999999. Dan pada saat yang sama di database pada tabel transaksi akan ditambahkan baris baru yang diisi dengan random number tadi (rn) dan timestamp (ts) saat itu. Ketika aplikasi mobile dijalankan, pengguna harus memasukkan passwordnya terlebih dahulu untuk verifikasi pengguna. Jika berhasil aplikasi scanner akan dijalankan dan pengguna dapat melakukan pemindaian terhadap QR code pada aplikasi web. Konten dari QR code dipindai dan dikirim ke aplikasi mobile. Aplikasi mobile akan membangkitkan sebuah string yang berisi random number (rn) dan IMEI dari telepon genggam dan akan dienkripsi dengan private key dari pengguna.
5 Lalu aplikasi akan memeriksa apakah otentikasi akan dilakukan secara online atau offline. Kasus Online Pada proses otentikasi secara online, response yang dihasilkan token dikirimkan secara langsung dari telepon genggam pengguna ke server bank melalui jaringan Internet (Gambar 1 Bagan interaksi otentikasi online). Otentikasi secara online dilakukan jika telepon genggam pengguna terdeteksi sedang terkoneksi dengan jaringan Internet. Berikut prosedur yang dilakukan saat proses otentikasi dilakukan secara online: String yang telah dienkripsi tadi dan username dikirim ke web server melalui jaringan aman (https). Server akan mendekripsi string tadi dengan user public key dan melakukan verifikasi apakah baris pada tabel transkasi memiliki nilai random number (rn) yang sama dengan yang dikirim. Dan apakah nilai IMEI yang dikirim sesuai dengan yang ada pada tabel pengguna (Gambar 2 Skema otentikasi online). Jika sukses, maka baris pada tabel transaksi akan dihapus dan user berhasil terotentikasi. Sebuah sesi PHP akan dibentuk untuk pengguna dan akan dihapus saat user keluar (logoff).
Telepon genggam (token) klien
1. https request 2. Membangkitkan QR code sebagai challenge untuk token Server bank
5. Pengguna terontentikasi
Gambar 1 Bagan interaksi otentikasi online
Komputer klien
6 Telepon genggam
Server
Klien rn, ts Scan(rn)
Upriv(IMEI, rn)
Otentikasi gagal/ sistem berhenti
Tidak
IMEI ada? Ya
Tidak
Otentikasi gagal/ sistem berhenti
rn sesuai?
Sebuah sesi PHP dibentuk Pengguna terotentikasi
Keterangan: rn = random number Upriv = user private key
ts Upub
= time stamp =user public key
Gambar 2 Skema otentikasi online Kasus Offline Pada proses otentikasi secara offline tidak terjadi komunikasi secara langsung antara telepon genggam (token) dengan server bank untuk bertukar informasi. Response yang dihasilkan token tidak dikirimkan secara langsung ke server bank. Response akan diproses menjadi suatu pincode dan dikirimkan ke server bank melalui browser pengguna (komputer klien) seperti yang ditunjukkan pada Gambar 3 Bagan interaksi otentikasi offline. Otentikasi secara offline dilakukan jika telepon genggam pengguna terdeteksi tidak terkoneksi dengan jaringan Internet. Berikut prosedur yang dilakukan saat proses otentikasi dilakukan secara offline: Akan dibangkitkan 6 digit angka yang berasal dari string yang terenkripsi. Angka tersebut adalah kode PIN yang akan dibutuhkan user di halaman otentikasi pada aplikasi web bersama dengan username. Kode PIN dimasukkan melalui keyboard layar. Server menerima username dan kode PIN. Lalu server akan membangkitkan kode PIN server sendiri dengan nilai random number (rn) dan IMEI dari database melalui user private key. Timestamp (ts) dibuat untuk selalu memeriksa dan
Ya
7 menolak otentikasi jika rn telah dibangkitkan lebih dari 5 menit (Gambar 4 Skema otentikasi offline). Jika kode PIN yang dikirim sama dengan yang dibangkitkan sendiri oleh server, maka pengguna terotentikasi dan baris pada tabel transaksi dihapus. Suatu sesi PHP untuk pengguna dibentuk dan akan dihapus saat pengguna keluar (log out).
Telepon genggam (token) klien
1. https request 2. Membangkitkan QR code sebagai challenge untuk token Server bank
5. Mengirimkan response dalam bentuk pincode
Komputer klien
6. Pengguna terontentikasi Gambar 3 Bagan interaksi otentikasi offline Implementasi Dari skema yang telah dirancang, dilakukan implementasi aplikasi. Implementasi dilakukan pada aplikasi berbasis web untuk layanan Internet banking yang diberi nama Bank Ilkomerz. Pengembangan aplikasi dimulai dengan perancangan basis data, perancangan web, lalu dilanjutkan dengan pembuatan aplikasi token mobile. Implementasi aplikasi web dilakukan pada server lokal menggunakan XAMPP 1.6.8 dengan lingkungan sistem operasi Windows 8.
8 Klien
Telepon genggam
Server rn, ts
Scan(rn) U, P(Upriv(IMEI, rn))
U, P(Upriv(IMEI, rn)), ts' Otentikasi gagal/ sistem berhenti
Tidak
ts’-ts<300s Ya
Otentikasi gagal/ sistem berhenti
Tidak
U ada? Ya get IMEI, rn
Otentikasi gagal/ sistem berhenti
Pengguna terotentikasi
Tidak
P(Upriv(IMEI, rn)) = P’(Upriv(IMEI, rn))
Sebuah sesi PHP dibentuk
Keterangan: rn = random number ts = timestamp saat QR code ditampilkan P = pincode yang dimasukkan P' = pincode yang diharapkan ts' = time Stamp saat QR code dibaca U = username Upriv = user private key Upub = user public key Gambar 4 Skema otentikasi offline
9 Perancangan Basis Data Berdasarkan skema otentikasi, dirancang suatu desain basis data untuk menyimpan informasi pengguna (username, password, dan IMEI) dan informasi transaksi (random number, timestamp, dan IMEI). Berikut rancangan entity relationship diagram (ERD) dari rancangan basis data.
Gambar 5 Entity relationship diagram Rancangan ERD dibuat agar setiap pengguna akan melakukan otentikasi akan disimpan timestamp dan random number yang digunakan dalam proses otentikasi. Serta nilai IMEI dari telepon genggam dikirim ke server untuk dilakukan update nilai pada tabel transaksi. Nilai IMEI dari telepon genggam ini digunakan untuk melakukan pengecekan apakah telepon genggam yang digunakan dalam proses otentikasi merupakan telepon genggam yang didaftarkan pengguna untuk digunakan sebagai token mobile. Jenis relationship antara kedua tabel adalah one to one dimana pada setiap proses otentikasi setiap user hanya memiliki satu transaksi saja. Apabila proses otentikasi berhasil maka seluruh atribut tabel transaksi dihapus dan akan kembali diisi saat pengguna akan melakukan proses otentikasi kembali. Perancangan Web Prototype otentikasi website Internet banking dibuat dengan bahasa pemrograman PHP dan DBMS PostgreSQL. Pada saat pengembangan web juga digunakan sebuah aplikasi kriptografi yaitu OpenSSL. Berdasarkan skema otentikasi yang telah dirancang, digunakan algoritma kriptografi RSA dengan panjang kunci 2048 bit untuk mengenkripsi setiap informasi yang dikirimkan token ke server. Algoritma RSA merupakan salah satu algoritma kriptografi kunci publik yang menggunakan sepasang kunci yaitu kunci publik (public key) dan kunci pribadi (private key). Kunci untuk enkripsi tidak sama dengan kunci untuk dekripsi. Kunci enkripsi (public key) tidak bersifat rahasia dan diumumkan ke publik sedangkan kunci dekripsi bersifat rahasia (private key).
10 public key
plainteks enkripsi
private key
chiperteks
plainteks dekripsi
Gambar 6 Sistem kriptografi kunci publik (Stallings 2006) Panjang kunci dapat diatur, semakin panjang bit pembentukan kunci maka semakin sukar untuk dipecahkan karena sulitnya memfaktorkan dua bilangan yang sangat besar. Keamanan algoritma RSA terletak pada sulitnya memfaktorkan bilangan yang besar menjadi faktor-faktor prima. Algoritma RSA terbagi ke dalam tiga bagian utama yaitu proses pembuatan kunci (private dan public key), proses enkripsi, dan proses dekripsi. Pada penelitian ini digunakan library OpenSSL untuk pembuatan kunci, proses enkripsi, dan dekripsi setiap informasi yang dikirimkan antara token dan server. Berikut cara pembangkitan private key dan public key RSA menggunakan OpenSSL. OpenSSL>genrsa -out private_key.pem 2048 OpenSSL>pkcs8 -topk8 -inform PEM -outform DER –in private_key.pem -out private_key.der -nocrypt OpenSSL>rsa -in private_key.pem -pubout -outform DER out public_key.der OpenSSL>rsa -in private_key.pem -pubout -outform PEM out public_key.pem Implementasi SSL SSL adalah suatu protokol kriptografi yang diciptakan oleh Netscape yang memberikan keamanan dalam berkomunikasi di Internet antara web server dan browser dari klien. Protokol ini menggunakan sebuah badan yang biasa disebut Certifiacte Authority (CA) untuk melakukan identifikasi dan verifikasi terhadap pihak-pihak yang bertransaksi (Thomas 2000). Cara kerja protokol SSL adalah sebagai berikut (Gambar 7 Cara kerja SSL): 1 Klien membuka halaman web yang telah didukung oleh protokol SSL yang diawali dengan “https://” pada browsernya. 2 Web server mengirimkan public key dan sertifikat server 3 Browser melakukan pemeriksaan apakah sertifikat tersebut dikeluarkan oleh CA yang terpercaya? Apakah sertifikat tersebut masih valid dan memang berhubungan dengan alamat situs yang sedang dikunjungi? 4 Setelah diketahui kebenaran dari web server tersebut, kemudian browser menggunakan public key dari web server untuk melakukan enkripsi terhadap suatu kunci simetri yang dibangkitkan secara random dari pihak klien. Kunci yang dienkripsi ini kemudian dikirimkan ke web server untuk digunakan sebagai kunci untuk mengenkripsi alamat URL (Uniform Resource Locator) dan data HTTP lain yang diperlukan.
11
Client hello
Server hello
Key exchange
Chiper suite negotiation Client
Server HTTP get
Data tranfer
Gambar 7 Cara kerja SSL 5 Selanjutnya web server melakukan dekripsi terhadap enkripsi dari klien tersebut, menggunakan private key server. Server kemudian menggunakan kunci simetri dari klien tersebut untuk mendekripsi URL dan data http yang akan diperlukan klien. 6 Server mengirimkan kembali halaman dokumen HTML yang diminta klien dan data http yang terenkripsi dengan kunci simetri tadi. 7 Browser melakukan dekripsi data http dan dokumen HTML menggunakan kunci simetri tersebut dan menampilkan informasi yang diminta. Aktivasi OpenSSL Selanjutnya dilakukan instalasi OpenSSL pada server, pada implementasi ini digunakan OpenSSL 0.9.8. OpenSSL perlu diaktifkan terlebih dahulu agar dapat digunakan, caranya dengan membuka ektensi php_openssl pada file php.ini di folder apache/bin pada XAMPP. extension=php_openssl.dll Pembuatan Server Key Untuk mendapatkan sertifikat digital dari lembaga CA yang terpercaya, diharuskan untuk membeli pada penyedia sertifikat digital seperti Thawte dan Verisign. Jika tidak terdapat CA untuk melakukan verifikasi dapat digunakan self-signed certificate, yaitu sertifikat yang ditandatangani sendiri. Pembuatan server key dilakukan dengan menggunakan aplikasi OpenSSL yang dijalankan melalui command prompt. Pada implementasi ini dibuat sebuah server key dengan panjang 2048 bit. Berikut ini cara membangkitkan server key menggunakan OpenSSL. OpenSSL> genrsa -out server.key 2048
12
Membuat Certificate Signing Request (CSR) Setelah terbentuk server key, selanjutnya membuat CSR. Pada proses idealnya, CSR akan dikirimkan ke sebuah CA seperti Thawte atau Verisign untuk diverifikasi terhadapat pihak yang meminta sertifikat tersebut untuk ditandatangani. Namun karena pada implementasi ini tidak memiliki sertifikat yg ditandangani CA tersebut, maka digunakan cara lain dengan self sign CSR OpenSSL> req -new -key server.key -out server.csr Menandatangani Sertifikat Selanjutnya dilakukan penandatanganan sertifikat yang telah dibuat tadi dengan private key yang telah dibuat sendiri (self sign certificate) OpenSSL> x509 -req -days 365 -in signkey server.key -out server.crt
server.csr
-
Memasukkan Sertifikat ke Server Setelah tahap-tahap tersebut dilakukan, didapat beberapa file yaitu: server.crt, server.csr, server.key.no-encript, server.key. server.crt adalah sertifikat yang telah ditandatangani, server.csr adalah sertifikat yang belum ditandangani, dan server.key adalah private key dari server. Selanjutnya setiap file tersebut dimasukkan ke server Apache pada XAMPP. File server.crt disimpan pada direktori xampp\apache\conf\ssl.crt\, file server.csr disimpan pada direktori xampp\apache\conf\ssl.csr\, dan file server.key disimpan pada direktori xampp\apache\conf\ssl.key\. Terakhir dilakukan beberapa perubahan agar SSL dapat berjalan dengan baik. Seperti pengaktifan mod_ssl pada apache, caranya dengan membuka file httpd.conf pada direktori xampp\apache\conf\ dan menghilangkan tanda “#” pada #LoadModule ssl_module modules/mod_ssl.so untuk mengaktifkannya. #LoadModule ssl_module modules/mod_ssl.so Selanjutnya dilakukan perubahan document root, server name, dan server admin pada bagian virtual host pada file httpd-ssl.conf di direktori xampp\apache\conf\extra.
#General setup for the virtual host DocumentRoot "C:/xampp/htdocs/qrauth" ServerName Rahmad ServerAdmin [email protected] Implementasi QR Code QR code ditampilkan dalam bentuk kotak persegi dengan warna dasar putih, dan hitam sebagai kode di atas warna dasar. Kerumitan kode hitam yang dihasilkan bergantung pada panjang atau pentingnya pesan yang terkandung di dalamnya.
13
a. Barcode
b. QR code
Gambar 8 Perbandingan barcode dan QR code (Kieseberg et al. 2010). Dibanding barcode (kode batang 1 dimensi) QR code memiliki banyak kelebihan, diantaranya Mampu menangani berbagai macam data seperti angka, karakter abjad, kanji, simbol, biner, dan kode kontrol. Barcode hanya bisa menampung maksimal 20 digit, sedangkan QR code mampu menyimpan maksimal data numerik sebanyak mencapai 7089 karakter, alfanumerik maksimal 4296 karakter, dan kode biner maksimal 2953 byte. QR code dapat dibuat dengan ukuran yang sangat kecil, bahkan dapat mencapai 1/30 ukuran normal suatu barcode. Proses pemindaian dapat dilakukan dengan cepat dan dapat dilakukan dalam berbagai sudut. Struktur yang dapat dipecah dan tahan kerusakan. Dengan kelebihannya tersebut, pada implementasi sistem ini digunakan QR code untuk menyimpan informasi otentikasi (random number) yang nantinya akan diproses oleh token sebagai challenge dari server. Pada aplikasi web yang dikembangkan digunakan library “phpqrcode” untuk membangkitkan QR code yang dibutuhkan. Tampilan awal aplikasi Internet banking Bank Ilkomerz saat pengguna akan melakukan otentikasi ditunjukkan pada Gambar 9. Pada bagian kiri halaman web terdapat QR code yang akan digunakan pengguna untuk proses otentikasi menggunakan aplikasi token mobile dan pada bagian kanan terdapat form masukan yang digunakan pengguna untuk melakukan proses otentikasi secara offline. Untuk lebih lengkapnya mengenai tampilan aplikasi web server Bank Ilkomerz dapat dilihat pada bagian Lampiran 1. Pembuatan Token Aplikasi token dibuat pada platform Android 2.3. Pada pengembangan aplikasi token ini digunakan library ZXing yang dapat memproses berbagai format gambar barcode 1D/2D. Fokus dari library ini adalah menggunakan kamera dari telepon selular untuk melakukan scan dan decode QR code.
14
Gambar 9 Tampilan awal saat pengguna akan melakukan otentikasi untuk mengakses layanan Internet banking Bank Ilkomerz. Pada aplikasi token juga disimpan public key server, private key user dan user data file. User data file menyimpan informasi user yaitu username dan password. File ini dienkripsi dengan private key user. Public key server digunakan untuk mendekripsi user data file/credentials file, dan private key user digunakan untuk otentikasi server. Ketiga file ini disimpan dalam penyimpanan internal aplikasi token. Tampilan awal aplikasi token mobile Bank Ilkomerz saat pertama kali dijalankan ditunjukkan pada Gambar 10. Saat pengguna akan menggunakan aplikasi token mobile untuk melakukan proses otentikasi, pengguna harus memasukkan password sesuai dengan akun yang telah didaftarkan pada tahap registrasi. Untuk lebih lengkapnya mengenai tampilan aplikasi token mobile Bank Ilkomerz dapat dilihat pada bagian Lampiran 2. Pengujian Pengujian dilakukan menggunakan server lokal dengan XAMPP. Pengujian yang dilakukan mencakup pengujian fungsional dan pengujian terhadap serangan penyadapan paket-paket data (network sniffing). Pengujian fungsional sistem dilakukan dalam dua mode otentikasi yaitu: online dan offline. Pada kondisi online dirancang suatu desain jaringan sederhana untuk pengujian di lingkungan server lokal. Karena pengujian dilakukan menggunakan localhost, maka digunakan Microsoft KM-TEST Loopback Adapter, yaitu suatu tool driver tanpa hardware (dummy driver) yang memiliki fungsi loopback di mana data yang dikirimkan akan dikembalikan lagi ke sumbernya tanpa melalui jaringan yang sesungguhnya.
15
Gambar 10 Tampilan awal saat pengguna mengakses aplikasi token mobile Pada kasus pengujian online, komputer bertindak sebagai server sekaligus klien dan juga digunakan sebagai sebuah virtual wifi router. Komputer dibuat memiliki kemampuan wifi tethering yaitu kemampuan membagi koneksi ke perangkat lain, dimana disini koneksi dibagi dengan sebuah telepon genggam. Tabel 1 Hasil pengujian fungsional sistem Deskripsi Otentikasi secara online Otentikasi secara online dengan waktu yang disediakan telah habis (timeout) Otentikasi secara offline Otentikasi secara offline dengan masukan username yang salah Otentikasi secara offline dengan masukan pincode yang salah Otentikasi secara offline dengan waktu yang disediakan telah habis (timeout) Login aplikasi token mobile Login aplikasi token mobile dengan dengan kesalahan password Pemindaian QR code saat otentikasi secara online Pemindaian QR code saat otentikasi secara offline Pemindaian QR code yang salah
Kesimpulan Diterima Diterima Diterima Diterima Diterima Diterima Diterima Diterima Diterima Diterima Diterima
Selanjutnya dilakukan pengujian terhadap keamanan komunikasi data yang terjadi antara server, klien dan telepon genggam. Pengujian menggunakan Wireshark, yaitu suatu aplikasi untuk memonitor jaringan yang biasanya banyak digunakan oleh administrator jaringan untuk menganalisa kinerja jaringan. Melalui Wireshark dilakukan penyadapan terhadap komunikasi data yang terjadi pada sistem (passive sniffing) untuk memastikan bahwa paket-paket data yang terkirim maupun diterima sudah terenkripsi.
16
Tabel 2 Hasil pengujian penyadapan sistem (sniffing) Deskripsi Penyadapan saat otentikasi secara online Penyadapan saat otentikasi secara offline
Kesimpulan Berhasil terenkripsi Berhasil terenkripsi
Dari hasil penyadapan didapatkan bahwa komunikasi serta paket-paket data yang diterima maupun yang dikirimkan antara server, klien, dan telepon genggam berhasil terenkripsi. Analisis Berdasarkan implementasi dan pengujian sistem, didapatkan beberapa faktor keamanan dalam proses otentikasi sudah terpenuhi. Serangan dalam bentuk penyadapan (passive sniffing) maupun serangan active sniffing seperti man-in-themiddle attack juga dapat dihindari karena komunikasi antara telepon genggam dan server selalu terenkripsi. Penggunaan algoritma kriptografi RSA dengan panjang kunci 2048 bit untuk mengenkripsi komunikasi yang terjadi juga sangat diandalkan kemampuannya. Penyerangan yang paling umum pada RSA adalah penanganan masalah faktorisasi pada bilangan yang sangat besar. Apabila terdapat metode faktorisasi baru dan cepat, ada kemungkinan untuk membongkar RSA. Kunci RSA pada umumnya sepanjang 1024-2048 bit. Beberapa pakar meyakini bahwa kunci 1024-bit ada kemungkinan dipecahkan pada waktu dekat (masih dalam perdebatan), tetapi tidak seorangp un yang berpendapat kunci 2048 bit akan terpecahkan di masa depan (Barker dan Roginsky 2011). Karena kemampuannya tersebut dalam implementasi ini digunakan algoritma kriptografi RSA dengan panjang kunci 2048 bit. Pencurian terhadap token pengguna juga tidak berguna, karena token juga dilindungi dengan password untuk menggunakannnya. Aktivitas pencurian terhadap informasi pengguna pada aplikasi token juga tidak berguna sebab informasi tersebut dienkripsi. Pencurian informasi username dan QR code juga tidak berguna, sebab informasi tersebut akan segera tidak berlaku saat pengguna berhasil terotentikasi (one time password). Selain itu proses otentikasi dibatasi hanya dapat dilakukan dalam batas waktu tertentu (5 menit). Penggunaan QR code dalam proses otentikasi memberikan beberapa keuntungan tersendiri. Informasi otentikasi (random number) disimpan dalam bentuk QR code sehingga baik pengguna maupun penyerang tidak dapat mengetahui secara langsung informasi challenge yang diberikan server. QR code juga mempercepat dan mempermudah pengguna dalam melakukan proses otentikasi. Pada token biasa pengguna diharuskan memasukkan kode challenge dan kode response secara manual, proses ini memakan waktu lama. Pada token QR code pengguna hanya perlu melakukan pemindaian (capture) QR code untuk melakukan proses otentikasi, dan memakan waktu yang lebih cepat.
17
SIMPULAN DAN SARAN Simpulan Implementasi two factor authentication dengan QR code pada aplikasi berbasis web telah berhasil dilakukan. Penelitian ini menghasilkan aplikasi web server berupa sebuah prototype aplikasi otentikasi Internet banking sederhana, dan aplikasi mobile yang bekerja sebagai token dalam proses otentikasi terhadap aplikasi web server. Pengujian terhadap hasil implementasi two factor authentication dengan QR code pada kasus otentikasi Internet banking ini juga menunjukkan bahwa metode ini dapat mengatasi serangan berupa penyadapan pada sistem (sniffing).
Saran Pada penelitian selanjutnya dapat digunakan pengembangan aplikasi otentikasi dengan mengimplementasikan algoritma pembangkit one-time password berbasis hashed message authentication code seperti RFC 4226. Diperlukan pula pengembangan lebih lanjut pada aplikasi Internet banking dan token mobile seperti penambahan fitur penghapusan user, penggunaan token dalam proses transaksi Internet banking, dan fitur deaktivasi token.
18
DAFTAR PUSTAKA Barker E, Roginsky A. 2011. Transitions: Recommendation for Transitioning the Use of Cryptographic Algorithms and Key Lengths. Washington DC (US): U.S. Departement of Commerce. Kessler GC. 1998. An Overview of Cryptography. Vermont (US): Auerbach. Kieseberg P, Leithner M, Mulazzani M, Munroe L, Schrittwieser S, Sinha M, Weippl E. 2010. QR code Security. Di dalam: Pardede E, Taniar D, Awan I, editor. 8th International Conference on Mobile Computing and Multimedia; 2010 Nov 08-10; Paris, Perancis. New York (US): ACM. hlm 430-435 Kim J, Kang S, Hong M. 2012. Implementation of a fast and secure authentication method for web applications. Di dalam: Lee DH, Yung M, editor. Information Security Applications. 13th International Workshop, WISA 2012; Jeju Island, Korea Selatan. New York (US): Springer. hlm 2-112 Maestre DP. 2012. QRP: an improved secure authentication method using QR code [tesis]. Barcelona (ES): Universitat Oberta de Catalunya. Mallow C. 2007. Authentication methods and techniques [Internet]. [diunduh 2013 Jun 30]. Tersedia pada: http://www.giac.org/cissp-papers/2.pdf Stallings W. 2006. Cryptography and Network Security Principles and Practice. Boston (US): Prentice Hall. Thomas S. 2000. SSL and TLS Essentials. New York (US): J Wiley. Valente E. 2009. Two-factor authentication: can you choose the right one? [Internet]. [diunduh 2013 Jun 30]. Tersedia pada: http://www.sans.org/ reading_room/whitepapers/authentication/two-factor-authentication-chooseone_33093.
19 Lampiran 1 Tampilan aplikasi web server Bank Ilkomerz
Tampilan awal saat pengguna akan melakukan otentikasi untuk mengakses layanan internet banking Bank Ilkomerz.
Tampilan saat pengguna gagal melakukan otentikasi karena waktu untuk melakukan otentikasi yang telah habis (timeout).
20 Lampiran 1 Lanjutan
Tampilan saat pengguna gagal melakukan otentikasi karena informasi mengenai user tidak ditemukan (belum terdaftar).
Tampilan saat pengguna berhasil terotentikasi, jika berhasil pengguna dapat mengakses layanan internet banking dari Bank Ilkomerz pada menu dibagian kiri.
21 Lampiran 2 Tampilan aplikasi token mobile Bank Ilkomerz
Tampilan awal saat pengguna mengakses aplikasi token mobile, pengguna diharuskan memasukkan password untuk dapat melakukan melakukan pemindaian terhadap QR Code
Tampilan jika pengguna melakukan pemindaian terhadap QR Code yang tidak dibangkitkan oleh pihak bank
Tampilan saat pengguna berhasil melakukan otentikasi secara online
Tampilan saat pengguna melakukan otentikasi secara offline, token akan membangkitkan kode PIN untuk dimasukkan pengguna pada aplikasi web.
22
RIWAYAT HIDUP Penulis dilahirkan di Bukittinggi Sumatera Barat pada tanggal 18 Oktober 1990 dari ayah Gusman (alm) dan ibu Yurnalis. Penulis adalah anak kedua dari tiga bersaudara. Pada tahun 2009 penulis lulus dari SMA Negeri 2 Bukittinggi. Pada tahun yang sama penulis lulus seleksi masuk Institut Pertanian Bogor melalui jalur Seleksi Nasional Masuk Perguruan Tinggi Negeri (SNMPTN) dan diterima di Departemen Ilmu Komputer, Fakultas Matematika dan Ilmu Pengetahuan Alam. Selama mengikuti perkuliahan, penulis juga aktif mengikuti beberapa komunitas di lingkungan IPB diantaranya Cybertron TPB IPB pada tahun 2009 dan 2010 dan Himpunan Mahasiswa Ilmu Komputer (Himalkom) IPB di divisi edukasi pada tahun 2010 dan 2011. Selama menjadi anggota Himalkom IPB penulis juga aktif dalam berbagai kepanitian seperti menjadi anggota 3D pada IT Today 2010 dan menjadi ketua divisi 3D pada IT Today 2011. Selain komunitas di lingkungan IPB penulis juga aktif di beberapa komunitas lainnya yang menunjang kemampuan akademik seperti Nokia Developer Indonesia, Bogor Mobile Developer, dan Google Developer Grup. Pada bulan Juni-Agustus 2012 penulis melaksanakan Praktek Kerja Lapangan di Berita Satu Media Holdings Jakarta pada divisi teknologi informasi, dengan bidang kajian pengembangan aplikasi manajemen berita (News Basket) dan gambar (Image Bank) berbasis web. Penulis juga aktif dalam mengikuti perlombaan tingkat mahasiswa yaitu Program Kreativitas Mahasiswa bidang Karsa Cipta pada tahun 2013.