BAB II LANDASAN TEORI
2.1
TINJAUAN PUSTAKA
2.1.1 Pengertian Internet Banking atau Internet Perbankan
Pengertian internet banking menurut Karen Frust, (Budi Agus Riswandi 2005, hal. 20) adalah sebagai berikut: “Internet banking is the use of internet as remote delivey channel for banking services, including traditional services, such as opening a deposite account or transferring funds among different accounts, as well as new bangking services, such as electronic bill presement and payment, which allow customers to receive and pay bill over bank’s website.” Pendapat Karen Frust kurang lebih mengatakan bahwa internet banking adalah penggunaan internet sebagai saluran pengiriman jarak jauh bagi jasa pelayanan bank, termasuk pelayanan tradisional seperti pembukuan akun deposito atau mentransfer dana di antara akun-akun yang berbeda, dan juga pelayanan perbankan yang baru seperti pengadaan dan pembayaran tagihan elektronik yang memungkinkan nasabah untuk menerima dan membayar tagihan melalui website. Layanan perbankan ini sudah ada di dunia sejak awal dekade 1980an dan salah satunya dilakukan oleh Nottingham Building Society pada tahun 1983 di Inggris. Sedangkan di Indonesia sendiri, layanan ini pertama kali digunakan oleh Bank Papua Sejahtera pada awal dekade 1990an, akan tetapi pada tahun 1995 bank ini ditutup karena masalah keuangan. Pada saat sekarang ini banyak bank di Indonesia yang telah menyediakan layanan ini antara lain: Bank Mandiri, BCA, Bank Niaga, Citibank dan lain sebagainya.
11
2.1.2 Implementasi sistem pada Internet Banking
Menurut Budi Rahardjo (2002, hal. 5), arsitektur dari sistem internet banking yang aman adalah menggunakan filosofi pengamanan berlapis. Dalam hal ini sistem dibagi menjadi beberapa level (tier). Sistem tersebut dapat dibagi menjadi dua bagian, yaitu front-end (yang berhubungan dengan nasabah) dan back-end (yang berhubungan dengan bank).
Gambar 2.1 Topologi Internet Banking dengan pengamanan berlapis
2.1.2.1 Front-end
Bagian front-end adalah bagian yang langsung berhubungan dengan nasabah dan menggunakan web browser sebagai user interface.
Penggunaan
security token yang dapat menghasilkan password yang berubah-ubah setiap sesinya merupakan salah satu usaha untuk meningkatkan pengamanan.
2.1.2.2 Back-end
Dilihat dari sisi arsitektur pada back end, sistem dipisah menjadi tiga aspek, yaitu: Presentation layer Transaction layer Database layer
Gambar 2.2 Transaction and database servers
2.2
TINJAUAN STUDI MENGENAI ASPEK-ASPEK KEAMANAN DAN ANCAMAN TERHADAP JARINGAN KOMPUTER TERUTAMA DALAM KEAMANAN INTERNET BANKING
2.2.1 Aspek-aspek keamanan
Dony Ariyus (2006, hal.2) menyebutkan keamanan dalam jaringan komputer terutama pada perbankan internet meliputi beberapa aspek, di antaranya: a. Authentication: agar penerima informasi dapat memastikan keaslian pesan tersebut datang dari orang yang dimintai informasi. Dengan kata lain informasi tersebut benar-benar dari orang yang dikehendaki. b. Integrity: keaslian pesan yang dikirim melalui sebuah jaringan dan dapat dipastikan bahwa informasi yang dikirim tidak dimodifikasi oleh orang yang tidak berhak dalam perjalanan informasi tersebut.
c. Nonrepudiation: merupakan hal yang bersangkutan dengan si pengirim. Si pengirim tidak dapat mengelak bahwa dialah yang mengirim informasi tersebut. d. Authority: informasi yang berada pada sistem jaringan tidak dapat dimodifikasi oleh pihak yang tidak berhak atas akses tersebut. e. Confidentiality: merupakan usaha untuk menjaga informasi dari orang yang tidak berhak mengakses.
Confidentiality biasanya berhubungan
dengan informasi yang diberikan kepada pihak lain. f. Privacy: merupakan sesuatu yang lebih ke arah data-data yang sifatnya privat (pribadi). g. Availability: aspek availability atau ketersediaan berhubungan dengan ketersediaan informasi ketika dibutuhkan.
Sistem informasi yang
diserang atau dijebol dapat menghambat atau meniadakan akses ke informasi. h. Acces control: aspek ini berhubungan dengan cara peraturan akses kepada informasi. Hal ini biasanya berhubungan dengan masalah authentication dan juga privacy.
Acces control seringkali dilakukan dengan
menggunakan kombinasi user id dan password atau dengan menggunakan mekanisme lainnya.
2.2.2 Aspek-aspek ancaman
Dony Ariyus (2006, hal. 3) menyatakan bahwa yang menjadi aspek-aspek dalam keamanan dalam jaringan komputer adalah: a. Interruption Merupakan suatu ancaman terhadap availability. Informasi dan data yang ada dalam sistem komputer dirusak dan dihapus sehingga jika dibutuhkan, data atau informasi tersebut tidak ada lagi. b. Interception Merupakan ancaman terhadap kerahasiaan (secrecy). Informasi yang ada disadap atau orang yang tidak berhak mendapatkan akses ke komputer di mana informasi tersebut disimpan.
c. Modification Merupakan ancaman terhadap integritas.
Orang yang tidak berhak
berhasil menyadap lalu lintas informasi yang sedang dikirim dan diubah sesuai keinginan orang tersebut. d. Fabrication Merupakan ancaman terhadap integritas.
Orang yang tidak berhak
berhasil meniru (memalsukan) suatu infomasi yang ada sehingga orang yang menerima informasi tersebut menyangka informasi tersebut berasal dari orang yang dikehendaki.
kondisi normal computer
workstation
workstation
kondisi interruption
computer
computer
workstation
computer kondisi interception
workstation
computer kondisi modification
computer
workstation
computer kondisi fabrication
computer
Gambar 2.3. Aspek-aspek ancaman keamanan pada jaringan komputer [sumber: Dony Ariyus (2006, hal. 5)]
2.2.3 Ancaman keamanan pada Internet Banking
Petra (2007, hal 1), menyebutkan hal-hal yang menjadi ancaman pada internet banking antara lain: a. Phising, yaitu suatu upaya untuk mencuri data pribadi seperti nama pengguna, sandi lewat, dan nomor rekening dengan cara meniru sebagai instansi terkait pada jalur komunikasi elektronik.
Salah satu contoh
phising adalah meniru sebuah situs milik bank tempat nasabah melakukan transaksi atau mengirim surat elektronik kepada nasabah dengan berpurapura sebagai bank terkait untuk meminta data pribadi yang diperlukan. b. Keylogger, adalah sebuah aplikasi yang berjalan secara tersembunyi pada sistem operasi sebuah komputer yang digunakan terutama untuk merekam aktivitas pengguan komputer tersebut. Dalam hal ini, aplikasi memberi ancaman yakni merekam nama pengguna serta sandi yang dimasukkan oleh nasabah pada situs internet banking.
Para pemasang keylogger
kemudian dapat mengambil rekaman tersebut dan menggunakannya untuk hal-hal yang tidak diinginkan. c. Man In The Middle, adalah sebuah serangan di mana penyerang dapat membaca dan memodifikasi pesan-pesan yang dikirim oleh nasabah dengan sistem bank atau sebaliknya. Karena begitu banyaknya ancaman keamanan pada fasilitas internet banking, maka sekarang bank-bank menambahkan lapisan keamanan yang lebih tinggi yakni berupa security token.
2.3
SISTEM KEAMANAN PADA SECURITY TOKEN
2.3.1 Standard keamaman pada Security Token
Dalam artikel Internet Banking Mandiri (2010), menyebutkan untuk standard keamanan Internet Banking harus memiliki sistem keamanan berlapis, yaitu:
a. Menggunakan sistem keamanan standard internasional dengan enkripsi SSL 128 bit (Secure Socket Layer 128 bit Encryption) yang akan mengacak data transaksi. b. Pengamanan pintu akses dengan firewall (ISP>Web Server>Data Server>Host). c. Melakukan proses pendaftaran melalui ATM atau bank. d. Melakukan proses aktivasi di link internet banking dengan Access ID dan Access Code. e. Mouse Over Warning Access, pada saat login untuk mengingatkan web site palsu. f. Verifikasi user dengan user id dan PIN internet banking pada saat login. g. Auto log off (Session Time out) jika nasabah lupa log off. h. Seluruh aktivitas nasabah di internet banking akan tercatat di sistem. i. Nasabah dapat melihat seluruh aktivitas yang dilakukan pada internet banking selama jangka waktu tertentu. j. Notifikasi melalui e-mail dan SMS untuk setiap transaksi yang dilakukan. k. Terdapat limit transaksi per harinya. l. Verifikasi transaksi dengan menggunakan token PIN yang merupakan alat pengaman tambahan untuk transaksi finasial di internet banking. m. Penggunaan token PIN yang berfungsi untuk menghasilkan PIN yang selalu berganti (PIN dinamis) untuk setiap kali nasabah melakukan transaksi finansial. n. Token PIN digunakan sebagai otentikasi transaksi pada saat nasabah meng-eksekusi transaksi, sedangkan untuk login tetap meggunakan User ID dan PIN Internet Banking. o. Satu nomor ID nasabah hanya bisa link ke satu nomor serial token PIN.
2.3.2 Manajemen kunci kriptografi
Yang merupakan dasar dari pembuatan security token adalah manajemen kunci kriptografi. Rinaldi Munir (2006, hal. 273) menyebutkan bahwa kekuatan sistem kriptografi secara total bergantung pada keamanan kunci. Kunci perlu
dilindungi selama fase daur hidupnya.
Daur hidup kunci dimulai dari
pembangkitan kunci (generation) sampai kunci tidak diperlukan lagi untuk kemudian dihancurkan (destruction).
generation
destruction
distribution
change
storage
usage
Gambar 2.4 Daur hidup kunci
2.3.2.1 Pembangkitan kunci (key generation)
Masalah utama yang muncul pada pembangkitan kunci adalah bagaimana membuat kunci yang tidak dapat diprediksi. Metode yang dapat digunakan adalah dengan teknik manual, pembangkitan dari data pribadi, atau menggunakan pembangkit bilangan acak.
2.3.2.2 Penyebaran kunci (key distribution)
Jika pengguna menggunakan kunci untuk melindungi informasi yang disimpan di dalam storage, maka tidak ada kebutuhan untuk menyebarkan kunci. Tetapi, untuk kebutuhan komunikasi secara aman, maka diperlukan kebutuhan
untuk mengirimkan kunci.
Protokol pertukaran kunci dengan menggunakan
algoritma kunci publik dapat digunakan untuk mendistribusikan kunci.
2.3.2.3 Penyimpanan kunci (key storage)
Kunci disimpan di tempat yang aman yang tidak memungkinkan pihak lain untuk mengaksesnya.
Oleh karena itu, penyimpanan kunci mungkin
memerlukan perlindungan secara fisik.
Alternatif lain, kunci dapat disimpan
dalam smart card atau security token yang hanya dapat dibaca dengan kode rahasia. Kunci sebaiknya disimpan tidak dalam bentuk yang jelas. Ada dua hal yang dapat dilakukan dalam masalah ini, yaitu : a. Kunci disimpan dengan mengenkripsinya dengan menggunakan kunci lain. Konsep ini mengarah pada konsep key hierarchy, yang dalam hal ini setiap kunci di dalam hirarkhi digunakan untuk melindungi kunci di bawahnya. b. Kunci dipecah menjadi beberapa komponen, setiap komponen disimpan di tempat terpisah.
Jika kunci akan digunakan, maka setiap komponen
direkonstruksi kembali. Misalkan kunci K dibagi menjadi dua komponen, K1 dan K2. Membagi dua langsung K sedemikian sehingga setengah bagian pertama menjadi K1 dan setengah
bagian
sisanya
menjadi
K2
tidak
dianjurkan,
karena
dapat
memungkinkan pihak lain menemukan K jika ia hanya mengetahui salah satu dari K1 dan K2. Misalkan K panjangnya 64 bit, dan lawan mengetahui K1, maka K dapat ditentukan dengan hanya 232 percobaan untuk menemukan K2 secara exhaust search (lebih sedikit dibandingkan 264 percobaan). Solusi pemecahan yang lebih baik adalah membentuk K dari K1 dan K2 sedemikian sehingga K=K1 K2. Dalam hal ini ukuran K1 dan K2 sama dengan K, sehingga jika salah satu dari komponen K1 atau K2 diketahui, maka nilai K relatif lebih sukar ditentukan.
2.3.2.4 Penggunaan kunci (key usage)
Setiap kunci digunakan sesuai tujuannya.
Misalnya ada kunci yang
digunakan untuk mengenkripsi pesan dan ada kunci yang digunakan untuk mengenkripsi pesan lainnya. Supaya setiap kunci mempunyai penggunaan yang unik, maka kita perlu membeli label pada setiap kunci, yang dalam hal ini label menspesifikasikan penggunaan kunci. Misalnya, label tersebut menspesifikasikan ‘kunci untuk mengenkripsi data’, ‘kunci untuk mengenkripsikan kunci’, ‘kunci untuk pembangkitan bilangan acak’, dan sebagainya. Untuk algoritma kunci publik, pengguna perlu memberi label untuk dua pasang kunci yang setiap pasang terdiri dari kunci public dan kunci rahasia. Satu pasang kunci untuk enkripsi dan satu pasang lagi untuk sidik digital.
2.3.2.5 Perubahan kunci (key change)
Kunci sebaiknya diubah secara periodik dan teratur. Sistem kriptografi harus mempunyai kemampuan untuk merubah kunci. Kunci diubah secara teratur untuk membatasi lama keberadaannya dan mengurangi nilainya di mata penyerang. Pada sistem EFTPOS (Electronic Funds Transfer at Point of Sale), kunci diubah setiap kali setelah selesai satu transaksi. Tidak ada aturan seberapa sering kunci seharusnya diubah. Tetapi setiap kunci seharusnya diubah jauh sebelum ia dapat ditemukan dengan cara exhaust search.
2.3.2.6 Penghancuran kunci (key destruction)
Kunci yang tidak dibutuhkan lagi seharusnya dihancurkan dengan cara yang aman. Jika kunci dicatat dalam media kertas, maka cara penghancurannya menggunakan alat pemotong kertas. Jika
kunci
disimpan
di
dalam
media
elektronik,
maka
cara
penghancurannya bisa dengan menghapusnya atau menimpanya (overwritten) sedemikian sehingga tidak meninggalkan jejak yang bisa dilacak oleh penyerang.
Kunci yang disimpan pada material lain dihancurkan sedemikin rupa sehingga ia tidak mungkin ditemukan kembali secara fisik maupun secara elektronik.
2.3.3 Keamanan pada Token
Token merupakan small device yang menghasilkan kode akses (password) untuk mengorganisir hak akses dalam membuktikan keaslian diri dengan aman melalui sistem komputer. Security token atau token PIN adalah alat pengamanan tambahan untuk melakukan transaksi finansial di internet banking.
Token pin ini berfungsi
mengeluarkan dynamic password (PIN Dinamis), yaitu PIN yang selalu berubah dan hanya dapat digunakan satu kali untuk setiap transaksi yang dilakukan. PIN Dinamis tersebut digunakan sebagai otentikasi transaksi pada saat nasabah melakukan trnasaksi melalui internet banking. Sedangkan untuk login ke dalam sistem internet banking, nasabah cukup menggunakan USER ID dan PIN internet banking yang dibuat pada saat nasabah mendaftarkan diri sebagai pengguna [sumber : www.bankmandiri.co.id/article/securitytips.]
Gambar 2.5 Arsitektur Security Token [Sumber: www.cl.cam.ac.uk]
Jenis security token yang umum digunakan adalah security token yang digunakan untuk infrastruktur kunci publik, single sign-on software, One Time Password (OTP) dan Communication Means. Security token yang termasuk ke dalam jenis infrastruktur kunci publik berisi data identitas pengguna yang digunakan untuk tanda tangan digital. Sedangkan yang termasuk ke dalam jenis OTP digunakan untuk menghasilkan sandi lewat dan hanya dapat digunakan sekali karena sandi tersebut akan terus berubah. Dan yang termasuk ke dalam jenis communication means mempunyai kemampuan untuk mentransmisikan datanya ke server. 1. Infrastruktur Kunci Public dengan Digital Signature Security token pada jenis ini berisi data identitas pengguna yang digunakan untuk penandatanganan digital.
Dengan menggunakan infrastruktur kunci
asimetrik, maka otentikasi yang dilakukan menjadi lebih aman. Dalam hal ini token akan mengijinkan pembangkitan kunci dan penyimpanan kunci privatnya dapat digunakan sebagai otentikasi pemakai, karena privat key ini bisa digunakan sebagai bukti identitas user. Agar token dapat mengenali user maka token harus memiliki suatu nomor yang unik. Token yang tidak dilengkapi nomor yang unik, token yang tidak dilengkapi dengan keypad atau keyboard atau antarmuka lainnya tidak dapat digunakan dalam beberapa skenario digital signature. Setelah otentikasi berhasil biasanya data akan mengenal pengguna seperti nama, alamat dan tanggal kadaluwarsa. Setelah itu data akan diekstrasi oleh server untuk keperluan transaksi seperti konfirmasi transaksi bank berdasarkan nomor akun bank yang dananya akan dikirimkan. 2. Single sign-on software Beberapa tipe dari solusi single sign-on menggunakan token untuk menyimpan software yang memungkinkan otentikasi dan pengisian password. Begitu password disimpan pada token, maka user tidak perlu mengingat password-password mereka dan karenanya dapat memilih password yang lebih aman. 3. One-time passwords
Stephen Chan dkk. (2004, hal. 2) menjelaskan bahwa One-time password (OTP) merupakan metode otentikasi yang digunakan untuk mengurangi potensi penyadapan user id kita oleh orang lain. Konsep yang dipakai adalah bahwa setiap sesi dilakukan oleh pengguna untuk menghasilkan deretan PIN yang unik yang hanya berlaku untuk sesi tersebut dan untuk jangka waktu yang sangat singkat. OTP akan menghasilkan password yang selalu berubah setelah setiap kali login, atau berubah setiap interval waktu tertentu a. One-time password berbasiskan algoritma matematika Tipe lain dari one time password adalah menggunakan algoritma matematika kompleks untuk menggenerate password baru berdasarkan password sebelumnya dan dimulai dari kunci shared rahasia. Sandi yang dikeluarkan hanya dapat digunakan sekali saja dan akan terus berubah. Jenis ini digunakan untuk mengelabui lawan yang mengintip sandi yang digunakan oleh pengguna. Salah satu cara untuk membangkitkan sandi ini adalah dengan menggunakan fungsi hash. Pengguna diminta untuk memasukkan sebuah string S0 dan sebuah bilangan N kemudian memilih sebuah fungsi hash f(x) yang digunakan untuk membangkitkan sandi tersebut. Pertama-tama, sandi yang dibangkitkan adalah string S0 yang di hash sebanyak N kali. Kemudian untuk kali kedua, sandi akan dibangkitkan dengan sandi sebelumnya yang di hash sebanyak N-1 kali. Setelah kali ke N maka jumlah hash yang akan dilakukan dikembalikan ke N kali. Bilangan N ini akan dicatat baik di client maupun di sisi server.
S1 = f ( f ( ... ( f ( S0 ) ) ) ... ) S2 = f ( f ( ... ( f ( S1 ) ) ) ... ) S3 = f ( f ( ... ( f ( S2 ) ) ) ... ) ... SN = f ( S(N-1) ) S(N+1) = f ( f ( ... ( f ( SN ) ) ) ... ) Gambar 2.6 One Time Password
Contoh algoritma matematika lainnya yang digunakan dalam onetime password ini adalah adalah algoritma open source OATH yang telah distandardkan dan algoritma-algoritma lainnya yang telah dipatenkan. b. One-time password berbasiskan sinkronisasi waktu One-time password berbasiskan sinkronisasi waktu berubah secara konstan setiap satuan interval waktu tertentu, contohnya setiap satu menit. Untuk dapat melakukan hal ini, perlu dilakukan sinkronisasi antara token milik client dengan server otentikasi. Untuk token yang terpisah (atau disebut dengan disconected token), sinkronisasi waktunya dilakukan sebelum token diberikan kepada client. Tipe token lainnya melakukan sinkronisasi saat token dimasukkan ke dalam suatu alat input. Di dalam token terdapat sebuah jam yang akurat yang telah disinkronisasikan dengan jam yang terdapat pada server otentikasi. Pada sistem one-time password ini, waktu merupakan bagian yang penting dari algoritma password sehingga pembangkitan password baru didasarkan pada waktu saat itu dan bukan pada password sebelumnya atau sebuah kunci rahasia. Tabel 2.1 Pembangkitan Kunci Waktu
Server
Client
00:00
abcdefghijk
abcdefghijk
00:08
asdasdagab
asdasdagab
00:16
oeqgqwgdb
oeqgqwgdb
00:24
isdfagai
isdfagai
Pembangkitan sandi dapat dilakukan dengan menggunakan algoritma pseudorandom atau juga dengan menggunakan fungsi hash seperti yang dilakukan pada metode one-time password yang sebelumnya dengan nilai inisialisasi tersebut sebagai seed nya. 4. Communication Means Security token jenis ini adalah security token yang dapat menstransmisikan datanya kepada server. Security token ini biasa diimplentasikan dalam bentuk RFID atau bluetooth.
Gambar 2.7 Bluetooth Security Token
Ketika server mendeteksi keberadaan token, maka dengan segera server akan membangun sebuah jalur komunikasi aman dengan menggunakan pengenskripsian. Tujuannya adalah agar data yang ditransmisikan tidak dicuri dengar oleh pihak lawan. Setelah jalur tersebut dibangun, maka server akan mengotentikasi token berdasarkan data yang dimiliki oleh token tersebut. Selain itu token juga bisa digunakan dengan menggunakan jalur komunikasi lain seperti kabel data atau juga port USB (Universal Serial Bus)
2.3.4 Keamanan dengan Metode Otentikasi
Otentikasi bertujuan untuk membuktikan siapa user sebenarnya, apakah orang tersebut benar-benar diklaim sebagai pemiliknya atau bukan. Petra (2007, hal 2) menyebutkan metode otentikasi ini bisa dibagi dari tiga kategori, yaitu: 1. Something that user knows. Metode ini adalah metode otentikasi yang paling umum digunakan. Metode ini mengandalkan kerahasiaan informasi dari user yakni sesuatu yang hanya diketahui oleh user seprti tanggal lahir, nama ibu kandung, sandi lewat PIN dan lain-lain. Cara ini berasumsi bahwa tidak ada seorangpun yang mengetahui rahasia tersebut kecuali user. 2. Something that user have
Metode ini menggunakan faktor tambahan untuk membuat otentifikasi menjadi lebih aman berupa barang yang sifatnya unik, sebagai contoh adalah kartu magnetik/smartcard ,perangkat keras token, USB token dan sebagainya. Cara ini berasumsi bahwa tidak ada seorangpun yang memliki barang tersebut kecuali user. 3. Something that user is Metode ini mengandalkan keunikan bagian-bagian tubuh dari user yang tidak mungkin ada pada orang lain, seperti sidik jari, suara atau sidik retina. Cara ini berasumsi bahwa bagian tubuh user seperti sidik jari atau retina tidak mungkin sama dengan orang lain.
2.3.4.1 Two Factor Authentication
Pada aplikasi yang kritis dan sensitif seperti pada transaksi keuangan, satu metode otentikasi saja tidak cukup. Oleh karena itu muncul istilah 2FA (Two Factor
Authentication)
yang
mana
merupakan
sistem
otentikasi
yang
menggunakan dua faktor (metode) yang berbeda. Pada internet banking menggunakan two factor authentication dengan mengkombinasikan “something that user knows” berupa password dan “something that user have” berupa hardware token (keyBCA atau token Mandiri)
Gambar 2.8 Penggunaan two factor authentication
2.3.4.2 Password yang dikeluarkan token internet banking
Rizky Wicaksono (2009, hal 1) menyebutkan bahwa pada umumnya ada dua model pemakaian token internet banking, yaitu: 1. Model Challenge/Response (C/R) Dalam model ini server memberikan challenge berupa sederetan angka. Angka tersebut kemudian dimasukkan ke dalam mesin token untuk mendapatkan jawaban (response).
Kemudian pengguna memasukkan
angka yang muncul pada tokennya ke dalam form di situs internet banking. Token akan mengeluarkan kode yang berbeda-beda walaupun dengan challenge code yang sama secara periodik tergantung waktu ketika challenge dimasukkan ke dalam token. 2. Model Self Generated (Response Only) Dalam model ini, server tidak memberikan challenge apapun. Token pengguna bisa langsung mengeluarkan sederetan angka tanpa harus memasukkan challenge.
Seperti pada model C/R, token juga
mengeluarkan kode yang berbeda-beda secara periodik tergantung waktu ketika token diminta untuk menghasilkan kode self generated. Jawaban yang diberikan oleh token baik dalam model C/R maupun Self Generated (Response Only) adalah password juga. Berbeda dengan password yang digunakan untuk login, password yang dihasilkan token ini memiliki keterbatasan untuk alasan keamanan, seperti: 1. Hanya dapat dipakai 1 (satu) kali. Hal ini yang disebut dengan OTP (One Time Password). Setelah satu password dipakai, maka password yang sama tidak bisa digunakan lagi untuk kedua kalinya. Dengan cara ini usaha penyadapan password tidak akan berguna karena password tersebut sudah tidak digunakan lagi. 2. Hanya dapat dipakai dalam rentan waktu yang terbatas. Password yang dihasilkan token memiliki umur yang sangat terbatas, sekitar 3-6 menit, apabila umurnya habis maka password tersebut tidak bisa digunakan lagi walaupun belum pernah dipakai. 3. Hanya dapat dipakai dalam konteks yang sempit.
Password yang dihasilkan token mempunyai konteks yang sempit, sebagai contoh, password yang dipakai untuk mengisi pulsa 08123456789, tidak dapat digunakan untuk melakukan transfer dana. Keterbatasan konteks ini disebabkan karena untuk melakukan trnasaksi dibutuhkan password yang diikat oleh challenge dari server, sehingga password tersebut tidak bisa dipakai untuk transaksi lain yang membutuhkan challenge code yang berbeda. Kesimpulannya adalah bahwa password yang dikeluarkan token bersifat: 1. Selalu berubah-ubah secara periodik. 2. Memiliki umur yang singkat. 3. Hanya bisa dipakai 1 (satu) kali. 4. Terbagi dalam 2 (dua) jenis, yaitu : Password kontekstual yang terikat oleh challenge code dalam model challenge/response. Password bebas konteks yang dihasilkan dalam model self generated.
2.3.4.3 Proses otentikasi
Syarat agar otentikasi berhasil adalah: password yang dikirim client = password yang disimpan di server Untuk masalah keamanan, server jarang sekali menyimpan password user dalam bentuk plain-text. Server menyimpan password user dalam bentuk hash sehingga tidak bisa dikembalikan dalam bentuk plain-text.
Jadi syarat agar
otentikasi berhasil adalah hasil perhitungan hash dari password yang dikirim client harus sama dengan nilai hash yang disimpan dalam server. Secara umum proses otentikasi token PIN adalah sebagai berikut:
Gambar 2.9 Proses Otentikasi [sumber: http://www.unixwiz.net/techtips/iguide-crypto-hashes.html]
2.3.4.4 Penggunaan Salt
Untuk menghindari brute-force attack terhadap hash yang disimpan di server, maka sebelun password user dihitung nilai hashnya, terlebih dahulu ditambahkan string acak yang disebut dengan salt. Sebagai contoh, bila password user adalah “secret”, maka sebelum dihitung nilai hash-nya, password ditambahkan dulu salt berupa string acak “81090273” sehingga yang dihitung nilai hashnya adalah “secret 81090273” bukan “secret”. Dan karena nilai salt ini dibangkitkan secara random, maka tiap user memiliki nilai salt yang berbeda sehingga tidak mungkin attacker bisa membangun database pemetaan antara plain-text dan hash secara lengkap. Dengan penggunaan salt, maka database pengguna dalam server akan tampak seperti berikut ini : Tabel 2.2 Contoh Penggunaan Salt Username
Salt
Password hash
Budi
81090273
894240dbe3d2b546c05a1a8e9e0df1bc
Field salt diperlukan untuk melakukan otentikasi. Password yang dikirimkan user akan ditambahkan dulu dengan nilai salt baru kemudian dihitung
nilai hashnya. Nilai hash hasil perhitungan tersebut akan dibandingkan dengan field password hash yang ada di kolom sebelahnya. Bila sama, maka otentikasi berhasil, bila tidak sama, maka otentikasi gagal.
2.3.5 Fungsi Hash
A. Menezes dkk, (1996, hal 321) mengemukakan bahwa fungsi hash merupakan fungsi satu arah yang digunakan untuk menjamin servis otentikasi dan integritas sebuah pesan. Suatu fungsi hash memetakan bit-bit string yang panjang sembarang ke sebuah string dengan panjang tertentu. Proses pemetaan suatu input string menjadi output disebut dengan proses hashing. Fungsi hash merupakan fungsi many to one sehingga memungkinkan adanya collusion. Secara umum fungsi hash harus memiliki dua sifat dasar, yaitu sifat kompresi dan mudah dihitung. Fungsi hash dibagi menjadi dua kategori, yaitu MDC (Modification Detection Codes) dan MAC (Message Authentication Codes).
Perbedaan antara keduanya adalah pada MAC membutuhkan input
message dan kunci rahasia sedangkan pada MDC tidak dibutuhkan kunci rahasia. Fungsi hash menerima masukan string apa saja. Jika string menyatakan pesan (message), maka sembarang pesan M berukuran bebas dikompresi oleh fungsi hash H melalui persamaan: h = H(M) Keluaran fungsi hash disebut dengan nilai hash (hash value) atau pesan singkat (message digest).
Pada persamaan di atas, h adalah nilai hash atau
message digest dari fungsi H untuk masukan M. Dengan kata lain, fungsi hash mengkompresi sembarang pesan yang seukuran berapa saja menjadi message digest yang ukurannya selalu tetap.
Masukan
Keluaran
Halo
Fungsi hash
aa6df57fb6fe377d80b4a257b4a92 cba
Nomor teleponku 08122113451
Fungsi hash
09c88f0b91d74b292e6f89587ab63 921
"Tsunami" menjadi kata yang populer di
Fungsi hash
a996de118c61eac4963989aa2d73e 67e
Gambar 2.10 Contoh hashing beberapa buah pesan dengan panjang berbeda-beda.
2.3.6 Pseudo Random Number Generator (PRNG)
Sebagian besar sumber nomor acak sebenarnya memanfaatkan Pseudo Random Number Generator (PRNG).
Elaine Barker dkk (2007, hal. 40)
menyatakan PRNG atau juga disebut Deterministic Random Bit Generator (DRBG) adalah sebuah algoritma yang menghasilkan barisan bit secara unik yang ditentukan oleh initial value yang disebut seed. Selain itu, sifat lain dari PRNG adalah output-nya yang tidak dapat diprediksi dengan asumsi bahwa seed tidak diketahui. Masalahnya adalah pembangkit bilangan acak tidak menghasilkan urutan acak.
Tentu saja mustahil menghasilkan sesuatu yang benar-benar acak dari
komputer. Komputer termasuk hal yang dapat diprediksi dari hubungan antara masukan, proses dan keluaran. Dengan memasukkan dua masukkan yang sama terhadap operasi yang sama, maka akan menghasilkan keluaran yang sama pula. Hal terbaik yang dapat dihasilkan dari komputer adalah pembangkit urutan bilangan acak semu. Urutan acak semu dalam hal ini periodenya haruslah cukup besar sehingga urutan bilangan yang dihasilkannya dalam waktu yang terbatas tidak memiliki periode. Chandra Gondowasito (2007, hal. 2) menyebutkan bahwa suatu urutan bilangan dikatakan acak semu apabila memiliki property sebagai berikut:
a. Bilangan acak semu tersebut harus nampak acak. Hal ini berarti urutannya mampu melewati tes statistik keacakan yang dapat didefinisikan.
Banyak usaha telah dilakukan untuk
menghasilkan urutan bilangan acak semu pada komputer, baik dari segi akademis ataupun tes keacakan. Semuanya tetap periodik, namun dengan periode minimum 2512 telah cukup untuk bisa dipakai dalam berbagai aplikasi. Masalahnya, tiap pembangkit urutan bilangan acak semu pasti akan menghasilkannya dalam kondisi tertentu yang dalam hal ini memberikan celah bagi “kriptanalis” untuk menyerang sistem Keacakan secara kriptografi bukan hanya keacakan secara statistik, hal ini salah satu kriteranya. Agar urutan bilangan dapat dikatakan sebagai bilang acak semu yang semu yang aman dari sisi kriptografi, propeti ini harus dipenuhi. b. Keturunannya tidak dapat diprediksi. Urutan bilangan acak semu yang aman secara kriptografi harusnya tidak dapat dikompres kecuali diketahui key-nya yang dapat dipakai untuk mengeset initial state dari pembangkit.
2.3.6.1 Pembangkit bilangan acak yang aman
Rinaldi Munir (2006, hal. 202) menyebutkan, pembangkit bilangan acak yang dapat menghasilkan bilangan yang tidak dapat diprediksi oleh pihak lawan cocok untuk kriptografi dalam security token. Pembangkit tersebut dinamakan secure pseudorandom generator (CSPRNG). Persyaratan CSPRNG adalah: 1. Secara statistik ia mempunyai sifat-sifat yang bagus (yaitu lolos uji keacakan statistik). 2. Tahan terhadap serangan yang serius. Serangan ini yang bertujuan untuk memprediksi bilangan acak yang dihasilkan.
2.3.7 Algoritma Asimetrik
Yan Adikusuma dkk. (2009, hal. 3) mencantumkan bahwa algoritma asimetrik dirancang dengan menggunakan kunci enkripsi dan dekripsi yang berbeda.
Dalam arti bahwa kunci dekripsi tidak dapat dihitung dari kunci
enkripsi. Algoritma ini dinamakan public key karena kunci enkripsi dapat dipublikasikan. Pada intinya adalah bahwa seorang yang tidak dikenal sekalipun dapat melakukan enkripsi pesan dengan menggunakan kunci enripsi tetapi hanya orang yang mempunyai akses dengan kunci dekripsi yang berkorespondensi yang dapat melakukan dekripsi pesan. Pada sistem ini kunci enkripsi bisa disebut dengan public key sedangkan kunci dekripsi biasa disebut private key.
Kunci Public, K1
Kunci Public, K1
Kunci Public, K1
Enkripsi E k1 (P) = C
Cipherteks, C
Dekripsi D k2 (C) = P
Kunci Public, K1
Gambar 2.11 Skema asimetrik
Pada skema asimetrik di atas menunjukkan bahwa kunci enkripsi tidak sama dengan kunci dekripsi.
Kunci enkripsi bersifat public (tidak rahasia),
sedangkan kunci dekripsi bersifat private (rahasia).
2.3.8 Algoritma MD5
Rinaldi Munir (2006, hal. 220), menyebutkan bahwa MD5 adalah fungsi hash satu arah yang dibuat oleh Ronald Rivest pada tahun 1991. MD5 merupakan perbaikan dari MD4 setelah MD4 berhasil diserang oleh kriptanalis. Algoritma
MD5 menerima masukkan berupa pesan dengan ukuran sembarang dan menghasilkan message digest yang panjangnya 128 bit.
L x 512 bit
512
512
Y0
Y1
128
HMD5
Padding bits (1 - 512 bit)
Pesan
1000…00
512
•••
128
HMD5
•••
128
HMD5
panjang pesan
YL - 1
512
128
K mod 264
512
Yq
512
512 ABCD
K bit
512
128
128
HMD5
128
Message Digest
Gambar 2.12 Pembuatan message digest dengan algoritma MD5.
Langkah-langkah pembuatan message digest adalah sebagai berikut: 1. Penambahan bit-bit pengganjal. Pesan ditambah dengan sejumlah bit pengganjal sedemikian rupa sehingga panjang pesan (dalam satuan bit) kongruen dengan 448 modulo 512. Ini berarti panjang pesan setelah ditambah bit-bit pengganjal adalah 64 bit kurang dari kelipatan 512. Angka 512 ini muncul karena MD5 memproses pesan dalam blok-blok yang berukuran 512. Pesan dengan panjang 448 bit pun tetap ditambah dengan bit-bit pengganjal. Jika panjang pesan 448 bit, maka pesan tersebut ditambah dengan 512 bit menjadi 960 bit.
Jadi, panjang bit-bit
pengganjal adalah antara 1 sampai 512. Bit-bit pengganjal terdiri dari sebuah bit 1 diikuti dengan sisanya bit 0. 2. Penambahan nilai panjang pesan semula. Pesan yang telah diberi bit-bit pengganjal selanjutnya ditambah lagi dengan 64 bit yang menyatakan panjang pesan semula. Jika panjang pesan > 264 maka yang diambil adalah panjangnya dalam modulo 2 64. Denga kata lain, jika pesan semula adalah K bit, maka 64 bit yang ditambahkan menyatakan K
modulo 264. Setelah ditambah dengan 64 bit, panjang pesan sekarang menjadi kelipatan 512 bit. 3. Inisialisasi penyangga MD. MD5 membutuhkan 4 buah penyangga (buffer) yang masing-masing panjangnya 32 bit.
Total panjang penyangga adalah 4 x 32 = 128 bit.
Keempat penyangga ini menampung hasil antara dan hasil akhir dan diberi nama A, B, C dan D. setiap penyangga diinisialisasi dengan nilai-nilai (dalam notasi HEX) sebagai berikut: A = 01234567 B = 89ABCDEF C = FEDCBA98 D = 7653210 4. Pengolahan pesan dalam blok berukuran 512 bit Pesan dibagi menjadi L buah blok yang masing-masing panjangnya 512 bit (Y0 sampai YL-1). Setiap blok 512-bit diproses bersama dengan penyangga MD menjadi keluaran 128-bit dan ini disebut proses HMD5.
Yq
MD q
ABCD ← f F (ABCD, Yq , T[1..16]) A
B
C
D
ABCD ← f G (ABCD, Yq , T[17..32]) A
B
C
D
ABCD ← f H (ABCD, Yq , T[33..48]) A
B
C
D
ABCD ← f I (ABCD, Yq , T[49..64])
+
+
+
+
128 MDq+1
Gambar 2.13 Pengolahan blok 512 (proses HMD5)
Proses HMD5 terdiri dari 4 buah putaran dan masing-masing putaran melakukan operasi dasar MD5 sebanyak 16 kali dan setiap operasi dasar memakai sebuah elemen T. Jadi setiap putaran memakai 16 elemen table T. Pada gambar 2.13, Yq menyatakan blok 512-bit ke-q dari pesan yang telah ditambah bit-bit pengganjal dan tambahan 64 bit nilai panjang pesan semula. MDq adalah nilai message digest 128-bit dari proses HMD5 ke-q. Pada awal proses, MDq berisi nilai inisialisasi penyangga MD.
a
b
+
X[k]
+
T[i]
+
c
d
g
CLSS
+
Gambar 2.14 Operasi dasar MD5
Operasi dasar MD5 dapatditulis dengan persamaan: a ← b + CLSs (a + g (b, c, d) +X[k] + T[i] yang dalam hal ini, a, b, c, d
= empat buah peubah penyangga 32-bit (berisi nilai penyangga A, B, C, D).
g
= salah satu fungsi F, G, H, I.
CLSs
= circular left shift sebanyak s bit (notasi: <<< s).
X[k]
= kelompok 32-bit ke-k dari blok 512 bit message ke-q. Nilai k = 0 sampai 15.
T[i]
= elemen table T ke-i (32 bit).
+
= operasi penjumlahan modulo 2 32.
Karena ada 16 kali operasi dasar, maka setiap kali selesai satu operasi dasar, penyangga-penyangga itu digeser ke kanan secara sirkuler dengan cara pertukaran sebagai berikut: temp ← d d←c c←b b←a a ← temp Pergeseran tersebut dapat digambarkan pada gambar 2.15, yang dalam hal ini penyangga a yang baru disalin ke dalam penyangga b, nilai penyangga b (yang lama) disalin ke dalam penyangga c dan seterusnya.
a
b
+
X[k ]
+
T[i]
+
c
d
g
CLSS
+
a
b
c
d
Gambar 2.15 Operasi dasar MD5 dengan pergeseran penyangga ke kanan secara sirkuler.
Tabel 2.3 Fungsi-fungsi dasar MD5
2.4
Nama
Notasi
g(b, c, d)
fF
F(b, c, d)
(b ˄ c) ˅ ( ~ b ˄ d)
fG
G(b, c, d)
(b ˄ d) ˅ (c ˄ ~ d)
fH
H(b, c, d)
b c d
fI
I(b, c, d)
c (b ˅ ~ d)
BAHASA PEMROGRAMAN DAN PERMODELAN YANG DIGUNAKAN
2.4.1 Java Card API (Application Programming Interface)
Yan Adikusuma dkk. (2009, hal. 2) menyebutkan, Java card API adalah subset dari Java Virtual Machine (JVM) yang merupakan bahasa pemrograman untuk aplikasi smart card.
Java card API itu sendiri merupakan secure
application platform yang dapat berfungsi : menjalankan beberapa aplikasi smart card secara paralel dalam suatu kartu. memuat dan mengatur aplikasi dinamis dalam suatu kartu. menjalankan aplikasi komunikasi yang aman. melakukan operasi kriptografi yang kompleks. menyimpan serta memanipulasi data dalam memori volatile maupun involatile. Dalam mendesain teknologi java card dibutuhkan penyelarasan antara java system software di dalam smart card dengan keterbatasan ruang untuk aplikasi. Solusinya adalah dengan mendukung sebuah subset dari fitur-fitur java dan mengaplikasikan sebuah model terpisah untuk diimplentasikan ke Java Virtual Machine (JVM).
2.4.2 PHP (Hypertext Preprocessor)
Dodit Supriyanto (2008, hal. 17) menyebutkan PHP tergolong sebagai perangkat lunak open source yang diatur dalam aturan General Purpose Licences (GPL). Pemrograman PHP sangat cocok dikembangkan dalam lingkungan web, karena PHP bisa dilekatkan pada script HTML.
PHP mampu menghasilkan
website yang terus menerus hasilnya bisa berubah-ubah sesuai dengan pola yang diberikan.
Hal ini tergantung pada permintaan client browser-nya.
Pada
umumnya, pembuatan web dinamis berhubungan erat dengan database sebagai sumber data yang akan ditampilkan. PHP tergolong juga sebagai bahasa pemrograman yang berbasis server (server side scipting). Ini berarti bahwa semua script PHP diletakkan di server dan diterjemahkan oleh web server, kemudian hasil terjemahan itu dikirim ke browser client. Secara teknologi, bahasa pemrograman PHP memiliki kesamaan dengan bahasa ASP (Active Server Page), Cold Fusion, JSP (Java Server Page), ataupun Perl. PHP tidak dapat bekerja dan digunakan secara mandiri, diperlukan beberapa perangkat lunak tambahan yang harus di-install untuk men-support-nya, antara lain : Apache Server Merupakan web server yang digunakan oleh PHP, berfungsi menampilkan hasil proses script PHP ke komputer browser dalam bentuk tag HTML. MySQL Merupakan database server yang digunakan dalam pemrograman PHP. Berfungsi menyimpan data dalam database dan memanipulasi data-data yang diperlukan. PHPMyAdmin Merupakan perangkat lunak untuk pengelolaan database yang berbasis web.
2.4.3 UML (Unified Modelling Language)
Martin Fowler (2005, hal. 1) menyebutkan, Unified Modelling Language (UML) adalah keluarga notasi grafis yang didukung oleh meta-model tunggal, yang membantu pendeskripsian dan desain sistem perangkat lunak, khususnya sistem yang dibangun menggunakan pemrograman berorientasi objek (OO).
Tabel 2.4 Jenis Diagram Resmi UML Diagram
Kegunaan
Activity
Behavior prosedural dan paralel
Class
Class, fitur, dan hubungan-hubungan
Communication
Interaksi antar objek, penekanan pada jalur
Commponent
Struktur dan koneksi komponen
Composite Stucture
Dekomposisi runtime sebuah class
Deployment
Pemindahan artifak ke node
Interaction Overview
Campuran sequence dan activity diagram
Object
Contoh konfigurasi dari contohcontoh
Package
Struktur hirarki compile-time
Sequence
Interaksi antar objek, penekanan pada sequence
State Machine
Bagaimana even mengubah objek selama aktif
Timing
Interaksi antar objek, penekanan pada timing
Use Case
Bagaimana pengguna berinteraksi dengan sebuah sistem
2.4.3.1 Aspek permodelan UML
Ada tiga aspek utama dalam pemodelan sistem yang mampu didukung oleh UML, yaitu: 1. Model Fungsi (functional model), yaitu untuk menunjukkan fungsionalitas dari suatu sistem dari sudut pandang pengguna. Model ini dicapai dengan menggunakan diagram use case. 2. Model objek (object model), yaitu untuk menunjukkan struktur dan substruktur dari suatu sistem dengan menggunakan objek, atribut, operasi dan juga asosiasi. Model ini dicapai dengan menggunakan diagram class. 3. Model dinamik (dinamic model), menunjukkan prilaku internal dan suatu sistem yang dipakai. Model ini dicapai dengan menggunakan diagram squence, diagram activity dan juga diagram statechart.
2.4.3.2 Diagram Use Case
Diagram use case digunakan untuk menunjukkan fungsionalitas dari suatu sistem dari sudut pandang pengguna. Martin Fowler (2005, hal. 141) menyebutkan bahwa diagram use case mendeskripsikan interaksi tipikal antara para pengguna sistem dengan sistem itu sendiri dengan memberi notasi tentang bagaimana sistem tersebut digunakan.
Gambar 2.16 Use case model
Gambar 2.16 memperlihatkan penggambaran diagram use case. Ikon-ikon berbentuk orang adalah actor-actor-nya sementara bentuk elips yang ada menggambarkan fungsionalitas-fungsionalitas sistem. Adi Nugroho (2010, hal. 34) menyebutkan bahwa kegunaan dari view use case adalah untuk mendaftarkan actor-actor dan use case-use case dan
memperlihatkan actor-actor mana yang berpartisipasi dalam masing-masing use case dan untuk mendefinisikan suatu bagian perilaku sistem yang bersifat koheren tanpa perlu menyingkapkan struktur internal sistem/perangkat lunak yang sedang dikembangkan. Dalam hal ini use case mencakup semua perilaku yang ada dalam sistem, urutan-urutan utama, berbagai variasi dari perilaku normal (exception), serta tanggapan yang dikehendaki. Aktor adalah sebuah bukan seorang, yang artinya, aktor merupakan idealisasi sesuatu yang berinteraksi dengan sistem, sub sistem, atau kelas, pada sistem/perangkat lunak yang sedang kita kembangkan.
Saat sistem/perangkat
lunak dijalankan, suatu pengguna secara fisik mungkin diikat menjadi berbagai aktor yang ada dalam sistem dan selanjutnya merepresentasikan instance majemuk dari definisi aktor yang sama.
Masing-masing aktor bisa saja
berpartisipasi dalam satu atau lebih use case. Menurut Roger S. Pressman (2010, hal 155) dalam membangun sebuah uses case, harus dibuatkan daftar fungsi atau aktivitas secara spesifik yang akan dilakukan oleh masing-masing aktor. Langkah-langkah dalam membuat diagram use case adalah: 1. Identifikasi semua aktor. 2. Identifikasi semua use case. 3. Urutkan prioritas use case. 4. Rincilah setiap use case. 5. Identifikasi adanya generalisasi tiap use case. 6. Identifikasi hubungan include. 7. Indentifikasi hubungan extend. 8. Gambarkan diagram use case. Sedangkan notasi-notasi yang digunakan dalam permodelan diagram use case dapat dilihat pada tabel 2.5
Tabel 2.5 Notasi Diagram Use Case Notasi
Deskripsi
Aktor, digunakan untuk menggambarkan pelaku atau pengguna. Pelaku ini meliputi manusia, sistem komputer atau subsistem lain yang memiliki metode untuk melakukan sesuatu. Use case, digunakan untuk menggambarkan spesifikasi pekerjaan dan deskripsi pekerjaan, serta keterkaitan antar pekerjaan. Aliran
proses
(relationship),
digunakan
untuk
menggambarkan hubungan antara use case dengan use case lainnya. Aliran perpanjangan (extention poin), digunakan untuk menggambarkan hubungan antara use case dengan use case yang diperpanjang maupun dengan use case yang dimasukkan. Aliran yang digunakan untuk menggambarkan hubungan antara aktor dengan use case. <<extended>>
Kondisi yang mendeskripsikan apa yang terjadi antara use case dengan use case yang diperpanjang.
<
>
Kondisi yang merupakan aliran proses langsung antara dua use case yang secara tidak langsung menyatakan kelakuan dari use case yang dimasukkan.
<>
Merupakan kondisi yang mendeskripsikan apa yang terjadi antara aktor dengan use case.
Model-model diagram use case antara lain: 1. Analisis textual, yaitu sebuah proses untuk menganalisa sistem domain yang membantu mengidentifikasi kelas-kelas dalam sebuah statement masalah. 2. Use case detail editor, digunakan untuk menampilkan model use case menjadi lebih mudah yang didukung oleh spesifikasi dan deskripsi multiple dari use case dengan teks penyuntingan yang lengkap.
3. Use case schedulling, digunakan untuk menjadwalkan use case dengan menandai prioritas dan mendefinisikan prioritas use case dalam membantu pengembang lain mengerti pentingnya use case. 4. Extention point, adalah tampilan use case yang mengidentifikasi sebuah poin dimana sifat atau karakter use case dapat diargumentasikan dengan elemen use case lainnya.
2.4.3.3 Diagram aktivitas
Diagram aktivitas menggambarkan berbagai alur aktivitas dalam sistem yang sedang dirancang, bagaimana masing-masing alir berawal, keputusan yang mungkin terjadi, dan bagaimana mereka berakhir.
Diagram aktivitas dapat
menggambarkan proses paralel yang mungkin terjadi pada beberapa eksekusi dan merupakan diagram state khusus, dimana sebagian besar state adalah action dan sebagian besar transisi dipicu oleh selesainya state sebelumnya.
Tabel 2.6 Notasi diagram aktivitas No.
Notasi
1
Deskripsi Aktivitas, digunakan untuk menggambarakn aktivitas di dalam diagram aktivitas.
2
Node
keputusan
(decision),
digunakan
untuk
menggambarkan kelakuan pada kondisis tertentu. 3
Titik awal, digunakan untuk menggambarkan awal dari diagram aktivitas
4
Titik akhir (final), digunakan untuk menggambarkan akhir dari diagram aktivitas.
(Lanjutan) No.
Notasi
Deskripsi
5
Aksi (action), digunakan untuk menggambarkan alur antara aksi dengan aksi, titik awal dengan aksi, atau aksi dengan titik akhir.
6
Data store, digunakan untuk menjaga agar semua tanda masuk dan menduplikasikannya saat mereka dipilih untuk pindah ke alur selanjutnya.
7
Akhir alur, digunakan untuk menghancurkan semua tanda yang datang dan tidak memiliki eek alur dalam aktivitas.
8
Node fork, memiliki satu aksi yang masuk dan beberapa aksi yang keluar
9
Joint
node,
digunakan
untuk
menggambarkan
beberapa aksi yang masuk dan satu aksi yang keluar. 10
Aksi
penerimaan
kejadian,
sebuah
aksi
yang
menunggu sebuah kejadian dari suatu peristiwa bertemu kondisi yang spesifikasi.
2.4.3.4 Diagram Sequence
Martin Fowler (2005, hal 81) menyebutkan bahwa diagram sequence secara khusus menjabarkan aktivitas sebuah skenario tunggal.
Diagram ini
menunjukkan sejumlah contoh objek dan pesan yang diletakkan di antara objekobjek di dalam use case. Komponen utama diagram sequence terdiri atas objek yang dituliskan dengan kotak segi empat bernama. Pesan (message) diwakili oleh garis dengan tanda panah dan waktu yang ditunjukkan dengan progress vertikal.
1. Objek / participant Objek diletakkan di dekat bagian atas diagram dengan urutan dari kiri ke kanan.
Setiap participant terhubung dengan garis titik-titik yang disebut
lifeline. Sepanjang lifeline ada kotak yang disebut activation.
Activation
mewakili sebuah eksekusi operasi dari participant.
Gambar 2. 17 Participant Object pada Sequence Diagram
2. Message Sebuah message bergerak dari satu participant ke participant yang lain dan dari lifeline yang satu ke lifeline yang lain. Sebuah participant bisa mengirim sebuah message kepada dirinya sendiri (recursive). Sebuah message bisa menjadi simple, synchronous atau asynchronous. Message yang simple adalah sebuah perpindahan kontrol dari satu participant ke participant yang lain.
Jika sebuah participant mengirimkan sebuah
message synchronous, maka jawaban atas message tersebut akan ditunggu sebelum proses. Namun jika message asynchronous yang dikirimkan, maka jawaban atas message tersebut tidak perlu ditunggu.
simple
synchronous asynchronous
Gambar 2.18 Simbol-simbol Message
3. Time
Time adalah diagram yang mewakili waktu pada arah vertikal. Waktu dimulai dari atas ke bawah.
Message yang lebih dekat dari atas akan
dijalankan terlebih dahulu dibanding message yang lebih dekat ke bawah.
2.4.4 Flowchart
2.4.4.1 Pengertian Flowchart
Flowchart atau diagram alur adalah penggambaran secara grafik dari langkah-langkah dan urutan prosedur dari suatu program. Penggunaan flowchart dapat menolong untuk memecahkan masalah ke dalam segmen-segmen yang lebih kecil dan menolong dalam menganaliasa alternatif-alternatif lain dalam pengoperasian.
2.4.4.2 Pedoman-pedoman dalam membuat Flowchart
Ada beberapa petunjuk yang harus diperhatikan dalam membuat flowchart, yaitu: 1. Flowchart digambarkan dari halaman atas ke bawah dan dari kiri ke kanan. 2. Aktivitas yang digambarkan harus didefinisikan secara hati-hati dan definisi ini harus dapat dimengerti oleh pembaca. 3. Waktu aktivitas dimulai dan berakhir harus ditentukan secara jelas. 4. Setiap langkah dari aktivitas harus diuraikan dengan menggunakan deskripsi kata kerja. 5. Setiap langkah dari aktivitas harus berada pada urutan yang benar. 6. Ruang lingkup dan range dari aktivitas yang sedang digambarkan harus ditelusuri dengan hati-hati.
Percabangan-percabangan yang memotong
aktivitas yang sedang digambarkan tidak perlu digambarkan pada flowchart
yang
sama.
Simbol
konektor
harus
digunakan
dan
percabangannya diletakkan pada halaman yang terpisah atau hilangkan seluruhnya apabila percabangannya tidak berkaitan dengan sistem.
7. Gunakan simbol-simbol flowchart yang standar.
2.4.4.3 Simbol-simbol Flowchart
Simbol-simbol flowchart yang biasanya dipakai adalah simbol-simbol flowchart standar yang dikeluarkan oleh ANSI dan ISO. Simbol-simbol ini dapat dilihat pada tabel 2.7
Tabel 2.7 Simbol-simbol Flowchart Simbol
Arti
Input/output
Mempresentasikan input data atau output
data
yang
diproses
atau
informasi Proses
Penghubung
Mempresentasikan suatu operasi
Keluar ke atau masuk dari bagian lain flowchart khususnya halaman yang sama.
Anak panah
Mempresentasikan alur kerja
Penjelasan
Digunakan untuk komentar tambahan
(Lanjutan) Simbol
Arti
Keputusan
Mempresentasikan keputusan dalam program
Predefined process
Rincian operasi yang berada di tempat lain
Preparation
Pemberian harga awal
Terminal points
Awal/akhir flowchart
Punched card
Input/output
yang
menggunakan
kartu berlubang
Dokumen
Magnetik tape
I/O dalam format yang dicetak
I/O
yang
menggunakan
pita
menggunakan
disk
menggunakan
drum
magnetik
Magnetik disk
I/O
yang
magnetik
Magnetik drum
I/O
yang
magnetik
(Lanjutan) Simbol
Arti
On-line storage
I/O yang menggunakan penyimpanan akses langsung.
Punched tape
I/O yang menggunakan pita kertas berlubang
Manual input
Input yang dimasukkan secara manual dari keyboard
Display
Manual operation
Communication link
Output yang ditampilkan pada terminal.
Operasi secara manual
Transmisi
data
melalui
channel
komunikasi, seperti telepon.
Off-line storage
Penyimpanan yang tidak dapat diakses oleh komputer secara langsung
2.5
TEKNIK PENGUJIAN PERANGKAT LUNAK
2.5.1 Teknik pengujian White Box
Roger S. Pressman (1997, hal 533) menyebutkan bahwa pengujian White box, yang juga disebut dengan pengujian glass-box adalah metode desain test case yang menggunakan struktur control desain procedural untuk memperoleh test case.
Dengan menggunakan metode pengujian white box, maka perekayasa
sistem dapat melakukan test case yang: 1. Memberikan jaminan bahwa semua jalur independen pada suatu modul telah digunakan paling tidak satu kali. 2. Menggunakan semua keputusan logis pada sisi true dan false. 3. Mengeksekusi semua loop pada batasan mereka dan pada batas operasional mereka. 4. Menggunakan struktur data internal untuk menjamin validasinya.
2.5.2 Teknik pengujian Black Box
Roger S. Pressman (1997, hal 551) menyebutkan bahwa pengujian black box berfokus pada persyaratan fungsional perangkat lunak. Dengan demikian, pengujian black box memungkinkan perekayasa perangkat lunak mendapatkan serangkaian kondisi input yang sepenuhnya menggunakan semua persyaratan fungsional untuk suatu program. Pengujian black box berusaha menemukan kesalahan dalam kategori sebagai berikut: 1. Fungsi-fungsi yang tidak benar atau hilang. 2. Kesalahan interface. 3. Kesalahan dalam struktur data atau akses database eksternal. 4. Kesalahan kinerja. 5. Inisialisasi dan kesalahan terminasi. Pengujian black box didesain untuk menjawab pertanyaan-pertanyaan sebagai berikut: 1. Bagaimana validitas fungsional diuji? 2. Kelas input apa yang akan membuat test case menjadi baik?
3. Apakah sistem sangat sensitif terhadap harga input tertentu? 4. Bagaimana batasan dari suatu data diisolasi? 5. Kecepatan data apa dan volume data apa yang dapat ditolerir oleh sistem? 6. Apa pengaruh kombinasi tertentu dari data terhadap sistem operasi? Dengan mengaplikasikan teknik black box, maka kita dapat menarik serangkaian test case yang memenuhi kriteria sebagai berikut : 1. Test case yang mengurangi, dangan harga lebih dari satu, jumlah test case tambahan yang harus didesain untuk mencapai pengujian yang dapat dipertanggungjawabkan. 2. Test case yang memberi tahu kita sesuatu mengenai kehadiran atau tidak kehadiran kelas kesalahan, daripada memberi tahu kesalahan yang berhubungan hanya dengan pengujian spesifik yang ada.
2.5.2.1 Metode pengujian Graph Based
Langkah pertama pada pengujian black box adalah: Memahami objek yang dimodel di dalam perangkat lunak dan hubungan yang akan menghubungkan objek tersebut. Menentukan sederetan pengujian yang membuktikan bahwa semua objek memiliki hubungan yang diharapkan satu dengan yang lain. Dalam hal ini perekayasa perangkat lunak memulai dengan membuat suatu grafik/simpul yang mempresentasikan objek, link yang mempresentasikan hubungan antar objek, nide weightnide weight yang menggambarkan property dari suatu simpul.
object #1
object #2
Link terarah (link weight)
Node weight (nilai) Link tidak terarah
object #3
Link paralel
Gambar 2.19 Notasi Grafik
2.5.2.2 Partisi ekivalen
Partisi ekivalen adalah metode pengujian black box yang membagi domain input suatu program ke dalam kelas data dari mana test case dapat dilakukan. Partisi ekivalen berusaha menentukan sebuah test case yang mengungkap kesalahan-kesalahan, sehingga mengurangi jumlah total test case yang harus dikembangkan. Kelas ekivalen dapat ditentukan sesuai pedoman berikut ini : 1. Bila kondisi input menentukan suatu range, maka satu kelas ekivalensi valid dan dua invalid ditentukan. 2. Bila suatu kondisi input membutuhkan suatu harga khusus, maka satu kelas ekivalen valid dan dua yang invalid ditentukan. 3. Bila suatu kondisi menentukan anggota suatu himpunan, maka satu kelas ekivalen valid dan dua yang invalid ditentukan. 4. Bila suatu kondisi input adalah Boolean, maka satu kelas valid dan satu yang invalid ditentukan.
2.5.2.3 Analisis nilai batas
Analisis nilai batas adalah teknik desain proses yang melengkapi partisi ekivalen. Analisis nilai batas (boundary value analysis) lebih mengarah kepada pemilihan test case pada “edge” dari kelas. Pedoman pada analisis nilai batas adalah sebagai berikut : 1. Bila suatu kondisi input mengkhususkan suatu range dibatasi oleh nilai a dan b, maka test case harus didesain dengan nilai a dan b, persis di atas dan di bawah a dan b secara bersesuaian. 2. Bila suatu kondisi input mengkhususkan sejumlah nilai, maka test case harus dikembangkan dengan menggunakan jumlah minimum dan maksimum. Nilai tepat di atas dan di bawah minimum dan maksimum juga harus diuji. 3. Pedoman 1 dan 2 diaplikasikan ke kondisi output.
Test case harus
didesain untuk menciptakan laporan output yang menghasilkan jumlah minimum dan maksimum entry table yang diijinkan. 4. Bila struktur data program telah memesan batasan (misalnya, suatu array memiliki suatu batas yang ditentukan dari 100 entry), pastikan untuk mendesain test case yang menggunakan struktur data pada batasannya.
2.5.2.4 Pengujian perbandingan
Pengujian perbandingan adalah teknik pengujian dengan melakukan perbandingan dari versi-versi yang sudah dikembangkan dan setiap versi diuji dengan data uji yang sama untuk memastikan bahwa semua versi memberikan output yang identik.