• Tidak ada hasil yang ditemukan

BAB IV IMPLEMENTASI DAN PENGUJIAN

N/A
N/A
Protected

Academic year: 2021

Membagikan "BAB IV IMPLEMENTASI DAN PENGUJIAN"

Copied!
22
0
0

Teks penuh

(1)

49

Pada Bab 4 ini akan dilakukan implementasi terhadap apa yang telah

dianalisa dan dirancang pada bagian sebelumnya. Selain itu dilakukan pula

penggujian dari aplikasi yang kita bangun ini terhadap aspek-aspek yang kita

inginkan.

4.1.

Lingkungan Implementasi

Untuk tujuan implementasi dan pengujian aplikasi ini, kita akan

melakukannya dengan menggunakan seperangkat komputer.

1.

Prosesor intel

2.

RAM 2 GB

3.

Hard disk 180 GB

Adapun perangkat lunak yang digunakan dalam melakukan implementasi

dan pengujian ini adalah sebagai berikut.

1.

Sistem Operasi Widows 7

2.

Netbean IDE 6.9.1

3.

Glassfish 3

4.

Maven 2

5.

Embeded Database Apache Derby versi 10.5.3.0 - (802917)

4.2.

Implementasi Kelas

Pada bagian sebelumnya, kita telah melakukan analisa dan kemudian

merancang aplikasi termasuk perancangan kelas. Kelas-kalas yang telah di

rancang, akan diimplementasikan dengan menggunakan bahasa Java.

(2)

Nama TokenAlgorithm File TokenAlgorithm.java Atribut

static char[] hex = "0123456789abcdef".toCharArray(); Operator

public static String createTokenFromPassword(String password,long challange,int codeDigits) throws NoSuchAlgorithmException, InvalidKeyException

public static String createTokenFromHashPassword(byte[] key,long challange,int codeDigits)

throws NoSuchAlgorithmException, InvalidKeyException

public static byte[] hasingPassword(byte[] pwd) throws NoSuchAlgorithmException public static int dynamicTruncation(byte[] pwd ) throws NoSuchAlgorithmException public static byte[] hexToBytes(String strHex) throws NoSuchAlgorithmException public static String byteToHex(byte[] bytes ) throws NoSuchAlgorithmException

Nama AbstractToken File AbstractToken.java Atribut /** * DIGITS POWER */

protected static final int[] DIGITS_POWER // 0 1 2 3 4 5 6 7 8

= {1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000};

/**

* Panjang token yang di implementasi */

private int tokenLength = 6; Operator

protected static String conversion(int otp, int digits)

public String generateNonce(String username, Integer tokenType)

public boolean verifikasi(String username, String nonce, String response, Integer tokenType)

protected abstract boolean isValidNonce(String username, Integer tokenType, String token)

(3)

protected abstract void removeNonceResponse(String username, Integer tokenType, String token)

protected abstract void attemptNonceResponse(String username, Integer tokenType, String token)

protected abstract void storeNonce(String username, Integer tokenType, String token, String response)

protected abstract byte[] getTokenKey(String username, Integer tokenType) throws Exception

protected abstract int getSeed(String username, Integer tokenType) throws Exception

Nama UserSessionBean File UserSessionBean.java Atribut

@PersistenceContext

private EntityManager entityManager; Operator

public void save(UserToken userToken,String pwdLogin,String pwdTransaksi) public void changePassword(String username, String password,Integer typeToken)

Nama TokenSessionBean File TokenSessionBean.java Atribut

@PersistenceContext

private EntityManager entityManager; /**

* Panjang token yang di implementasi */

private static int token_lenght = 6; /**

* Max percobaan token */

(4)

Operator

public UserDto getUserDto(String username)

protected void removeNonceResponse(String username, Integer tokenType, String nonce) protected void attemptNonceResponse(String username, Integer tokenType, String nonce) protected void storeNonce(String username, Integer tokenType, String token, String response)

protected byte[] getTokenKey(String username, Integer tokenType) throws Exception protected UserToken getUserToken(String username)

protected void persist(NonceToken nonceToken )

protected NonceToken getNonceToken(String username, String nonce, Integer tokenType)

protected boolean isValidNonce(String username, Integer tokenType, String token) protected int getSeed(String username, Integer tokenType)throws Exception

Nama ChangePasswordController File ChangePasswordController.java Atribut

private Integer passwordType =0; private String password=""; private String passwordUlangi =""; Operator

public String changePasswordAction()

Nama RegisterController File RegisterController.java Atribut

private UserToken user = new UserToken(); private String pwdLogin="";

private String pwdLoginUlangi=""; private String pwdTransaksi=""; private String pwdTransaksiUlangi=""; Operator

(5)

Nama LoginController File LoginController.java Atribut

private String username = ""; private String challange = "0"; private String response ; Operator

protected void setUserDto(UserDto userDto) public String challangeAction()

public String verificationAction() public String logoutAction()

Nama TransaksiController File TransaksiController.java Atribut

private String name = ""; private String username = ""; private String challange = ""; private String response; Operator

public void generateChallange() public String verificationAction()

Nama JDialogToken File JDialogToken.java Atribut

private javax.swing.JFormattedTextField challenge; private javax.swing.JButton jButton1;

private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3;

(6)

private javax.swing.JTextField response; Operator

private void initComponents()

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt)

4.3.

Implementasi Modul

Dibagian sebelumnya, kita telah implementasi kelas dari aplikasi yang

sedang dibangun. Berikut ini kita dapat melihat daftar implemantsi modul yang

ada dalam aplikasi ini. Daftar tersebut dapat dilihat dalam tabel dibawah ini.

Tabel 4.1

DAFTAR IMPLEMENTASI MODUL

Nama Modul Nama Class yang Terlibat

Registrasi

RegisterController

, UserSessionBean, dan TokenAlgorithm Ganti Passaword ChangePasswordController , UserSessionBean, dan TokenAlgorithm Login LoginController, TokenSessionBean, TokenAlgorithm dan

OneTimePasswordAlgorithm Transaksi

Otentikasi

TransaksiController, TokenSessionBean, TokenAlgorithm dan OneTimePasswordAlgorithm

Token Desktop JDialogToken, TokenAlgorithm dan OneTimePasswordAlgorithm

4.4.

Implementasi Antar Muka

Implementasi Antar Muka didasari dari apa yang telah kita rancang pada

bagian sebelumnya.

(7)

Gambar 4.1 Layar-layar pada saat pendaftaran pengguna

Pada Gambar 4.1 ditampilkan hasil layar-layar untuk pendaftaran

pengguna. Sedangkan untuk Gambar 4.2 ditampilkan layar-layar pada saat login

sebelum pengguna dapat menggunakan aplikasi.

(8)

Gambar 4.3 Layar-Layar Pada Saat Transaksi

Pada Gambar 4.3 ditampilkan layar-layar yang mungkin mucul pada saat

pengguna melakukan Otentikasi untuk melakukan taransaksi. Sedangkan pada

Gambar 4.4 ditampilkan layar-layar yang muncul pada saat pengguna melakukan

penggantian password untuk login maupun password transaksi

Gambar 4.4. Layar-Layar Pada Saat Ganti Password

(9)

Pada Gambar 4.5 ditampilkan token destop yang berguna untuk

melakukan pembangkitan nilai response berdasarkan nilai

Challenge

dengan

menggunakan password.

4.5.

Pengujian Aplikasi

Pengujian aplikasi ini kita bagi menjadi dua bagia. Pengujian pertama

dilakukan untuk mengukur performansi dari aplikasi ini. Pengujian kedua adalah

pengujian terhadap hasil validasi token yang di hasilkan.

4.5.1.

Pengujian hasil Token

Pengujian hasil token ditujukan untuk melihat apakah proses melakukan

hal dengan benar. Untuk kelas utama yaitu OneTimePasswordAlgoritma dan

TokenAlgoritma di verifikasi menggunakan framework jUnit. Dengan

mempergunakan framework tesebut maka akan dapat test yang lebih stabil.

Gambar 4.6. hasil jUnit

Pada gambar 4.8 ditampilkan fungsi-fungsi utama mengunakan jUnit.

4.5.2.

Test Token Simulasi

Test token simulasi adalah pengetesan terhadap Kalss AbstractToken

dimana Abstract token tersebut akan di implementasikan menjadi sebuah Class

pengujian yang bernama Token.

(10)

import java.util.HashMap; import java.util.Map;

import token.engine.AbstractToken; import token.engine.TokenAlgorithm;

public class Token extends AbstractToken{

private static Map<String,String> hashMap = new HashMap(); private String seedToken = "0";

@Override

protected void removeNonceResponse(String username, Integer tokenType, String token) {

hashMap.remove(username+"#"+token+"#"+tokenType); }

@Override

protected void attemptNonceResponse(String username, Integer tokenType, String token) {

}

@Override

protected void storeNonce(String username, Integer tokenType, String token) {

hashMap.put(username+"#"+token+"#"+tokenType,username+"#"+token+"#"+tokenType); this.seedToken =token;

}

@Override

protected byte[] getTokenKey(String username, Integer tokenType) throws Exception { if("ani".equals(username)){ return TokenAlgorithm.hasingPassword("passwordAni".getBytes()); }else{ return TokenAlgorithm.hasingPassword("passwordOrangLain".getBytes()); } } @Override

protected boolean isValidNonce(String username, Integer tokenType, String token) {

return hashMap.containsKey(username+"#"+token+"#"+tokenType); }

@Override

protected int getSeed(String username, Integer tokenType) { return Integer.parseInt(seedToken);

}

(11)

Kelas token di implentasikan dengan beberapa batasan. Pada penyimpanan

nonce mengunakan memori itu bisa dilihat pada fungsi-fungsi getNonceResponse,

removeNonceResponse dan storeNonce. Walaupun menggunakan penyimpanan

data yang sederhana kelas tersebut mencerminkan kondisi sebenarnya. Pada kelas

tersebut akan di ujikan beberapa skenario berikut ini:

1.

Evi tidak mengetahui password Ani mencoba untuk menjadi Ani untuk

otentikasi

2.

Kondisi ada pengguna Ani melakukan otentikasi dan evi mencoba

untuk melakukan otentikasi menggunakan response dan challenge Ani

sebelumnya kirimkan ke server. (Replay Attack)

3.

Evi memcoba mengenerate challenge dari Ani tanpa mengetahui

password Ani.

4.

Kondisi ada pengguna Ani melakukan otentikasi dan evi mencoba

untuk melakukan otentikasi menggunakan Ani pada saat ani sedang

akan online

5.

Ani melakukan otentikasi dan berhasil

Scenario: Evi tidak menengetahui password Ani mencoba untuk menjadi Ani untuk otentikasi

Given Evi berpura-pura menjadi Ani When Evi meminta challenge And Evi generate response

And Evi mengirimkan response ke server Then Evi gagal diotentikasi

(12)

Scenario: Kondisi ada pengguna Ani melakukan otentikasi dan evi mencoba untuk melakukan otentikasi menggunakan response dan challenge Ani sebelumnya kirimkan ke server. (Replay Attack)

Given Ani meminta challenge And Evi berpura-pura menjadi Ani When Ani generate response

And Ani mengirimkan response ke server

And Evi memonitor challenge dan response Ani dan mengambil data tersebut And Evi mengirimkan response ke server

Then Evi gagal diotentikasi And Ani berhasil diotentikasi Hasil: berhasil

Scenario: Evi memcoba mengenerate challege dari Ani tanpa mengetahui password Ani

Given Ani meminta challenge And Evi berpura-pura menjadi Ani

When Evi memonitor dan mengetahui challenge Ani And Evi generate response

And Evi mengirimkan response ke server And Ani generate response

And Ani mengirimkan response ke server Then Evi gagal diotentikasi

And Ani berhasil diotentikasi Hasil: berhasil

(13)

Scenario: Kondisi ada pengguna Ani melakukan otentikasi dan evi mencoba untuk melakukan otentikasi menggunakan Ani pada saat ani sedang akan online

Given Ani meminta challenge And Evi berpura-pura menjadi Ani When Evi meminta challenge And Evi generate response

And Evi mengirimkan response ke server And Ani generate response

And Ani mengirimkan response ke server Then Evi gagal diotentikasi

And Ani berhasil diotentikasi Hasil: berhasil

Scenario: Ani melakukan otentikasi dan berhasil

Given Ani meminta challenge When Ani generate response

And Ani mengirimkan response ke server Then Ani berhasil diotentikasi

Hasil: berhasil

4.5.3.

Test Token pada Aplikasi WEB

Dalam melakukan test token terhadap aplikasi WEB kita mengunakan

beberapa skenario yang dijalankan. Skenario tersebut diantaranya:

1.

Daftar pengguna Baru

2.

Login passsword salah

3.

Login

(14)

4.

Transaksi Gagal

5.

Transaksi

6.

Ganti password Login

7.

Ganti password Transaksi

Scenario: Daftar pengguna Baru

Given daftar Pengguna

When isi username agusramdan And isi password login passwordlogin And isi password transaksi passwordtransaksi And isi data yang lainnya

And klik daftar

Then anda berhasil daftar Hasil: berhasil

(15)

Scenario: Login passsword salah

Given Login page

When set username agusramdan And request login challenge

And generate response by passwordsalah And klik login

Then login Gagal Hasil: berhasil Halaman:

(16)

Scenario: Login

Given Login page

When set username agusramdan And request login challenge

And generate response by passwordlogin And klik login

Then login Berhasil Hasil: berhasil Halaman:

(17)

Scenario: Transaksi Gagal

Given Transaksi page

When Generate Response Transaksi by passwordsalah Then transaksi Gagal

Hasil: berhasil Halaman:

(18)

Scenario: Transaksi

Given Transaksi page

When Generate Response Transaksi by passwordtransaksi Then transaksi Berhasil

Hasil: berhasil Halaman:

(19)

Scenario: Ganti password Login

Given ganti password page

When ganti password Login dengan password Then password berubah

Hasil: berhasil Halaman :

Scenario: Ganti password Transaksi

Given ganti password page

When ganti password Transaksi dengan password Then password berubah

(20)

4.5.4.

PenggujianPerformance Aplikasi

Pengujian performansi ini lebih ditujukan untuk mengukur performansi

dari algoritma token yang kita gunakan dalam aplikasi ini. Hasil dari pengujian

performansi tanpa menggunakan database ini dapat dilihat pada table sebagai

berikut:

Tabel 4.2

PENGUJIAN PERFORMANSI TANPA DATABASE

Kelas dan Method

Iterasi

Waktu exsekusi

(milisecond)

org.openauthentication.otp.OneTimePasswordAlgorithm

generateOTP

1000000

6330

hmac_sha1

1000000

6070

counter

1000000

30

dynamicTruncation

1000000

10

conversion

1000000

60

token.engine.TokenAlgorithm

createTokenFromPassword

1000000

8630

createTokenFromHashPassword

1000000

6170

hasingPassword

1000000

1420

byteToHex

1000000

680

hexToBytes

1000000

1620

com.ramdan.token.tokenweb.ejb.TokenSessionBean

generateNonce 500000 7790 generateUnixNonce 500000 870 verifikasi 500000 1090

(21)

Sedangkan performance diintegerasikan dengan database ditampilkan pada

Tabel 4.3 .

Tabel 4.3

PENGUJIAN PERFORMANSI DENGAN DATABASE

Kelas dan Method

Iterasi

Waktu exsekusi

(milisecond)

com.ramdan.token.tokenweb.controler.LoginController

challengeAction

10000

72681

verificationAction

10000

65395

com.ramdan.token.tokenweb.controler.TransaksiController

generateChallenge

10000

74381

verificationAction

10000

62915

Terlihat sekali bahwa menggunakan perbedaan performansi dari kedua

penggujian ini. Penggunaan database pada kasus ini menjadi sangat lambat.

4.5.5.

Analisa Hasil Pengujian

Berdasarkan hasil pengujian yang dilakukan diatas, dapat dilihat bahwa

aplikasi mampu mengangai bila terjadi sekenario

replay-attack.

Sedangkan untuk

performansi yang ditampilkan oleh aplikasi ini cukup bagus. Dari sisi waktu

pemrosesan, pengguna tidak terlalu merasakan perbedaan antara proses

pembuatan token dan verifikasi token apakah menggunakan database untuk

menyimpan nilai challenge atau di simpan di memory. Tapi secara system bila

permintaan bisa mencapai lebih dari 5000 perdetik maka disarankan untuk mecari

database yang biaya IO yang lebih kecil dibanding relasional database.

(22)

Gambar

Gambar 4.1 Layar-layar pada saat pendaftaran pengguna
Gambar 4.3 Layar-Layar Pada Saat Transaksi
Gambar 4.6. hasil jUnit

Referensi

Dokumen terkait

Pada akses layanan tertutup, koleksi tertutup bagi pemakai, dalam arti pemakai tidak boleh langsung mengambil bahan pustaka di rak, tetapi petugas perpustakaan yang akan

Rumus yang digunakan untuk menghitung kadar sari larut air adalah : Kadar sari larut dalam air =.. Tabel

Berdasarkan hasil dari pengujian mekanik pada konsolidasi lab uji dengan box uji bahwa hasil tersebut menyatakan dari nilai Cc uji box lebih rendah dikarenakan pada box

Kaji ulang sistem pengolahan limbah cair industri hasil perikanan secara biologis dengan lumpur aktif.. Ibrahim B, Erungan

hasil regresi secara parsial (uji t) menunjukkan bahwa kelima variabel yaitu pendidikan istri (X1) sebesar 0,039, curah jam kerja (X2) sebesar 0,022, lamanya penggunaan alat

Dalam konteks ini, pendidikan (baik agama maupun umum) sebagai mana dinyatakan Amir Faisal, harus mampu menyiapkan sumber daya manusia yang tidak sekadar sebagai penerima

Empat formula transfersom dibuat dengan konsentrasi kofein yang berbeda (1; 2; 3; 5%) menggunakan metode hidrasi lapis tipis. Suspensi formula 4 dengan ukuran partikel 202,35

Bantuan 28 kaki palsu ini merupakan bagian dari kegiatan Corporate Social Responsibility (CSR) Sequislife didukung oleh Yayasan Peduli Tuna Daksa yaitu mendonasikan lebih dari