BAB 3 ANALISA DAN PERANCANGAN SISTEM
3.4 Perancangan Sistem
3.4.2 Aplikasi Kalkulator Hash Sederhana
autentik dan client tersebut dapat
melakukan transaksi lainnya.
3.4.2 Aplikasi Kalkulator Hash Sederhana
Form ini digunakan untuk memproses bilangan yang menjadi
challenge server. Hasil dari aplikasi ini yaitu berupa kode hash
yang akan menjadi response terhadap server. Form hashing sisi
client ini dengan memasukkan password beserta dengan challenge
server.
Gambar 3.10Rancangan Form Hashing Client
Keterangan gambar 3.14
* password : suatu tempat (teks field) yang digunakan untuk mengisi password client.
* hash : suatu tombol yang digunakan untuk mendapatkan
nilai hash dari password yang dimasukkan oleh client tersebut.
* Challenge : tempat (teks field) untuk memasukkan nilai tantangan (challenge) dari server.
* calculated : tombol yang digunakan untuk mendapatkan nilai hash hasil penggabungan dari password yang sudah di hash dengan challenge. Hasil proses calculated ini akan menjadi response untuk server yang dikirimkan melalui web pada Form Response Client pada field Response.
* RESET : tombol untuk menghapus (me-reset) semua data yang tertampil pada form ini.
BAB 4
IMPLEMENTASI PROGRAM
Dari hasil perancangan yang telah dilakukan, maka langkah-langkah untuk proses autentikasi yaitu :
4.1
Implementasi ProgramAplikasi yang akan dibangun dalam Tugas Akhir ini mencakup 2 sistem, yaitu : 1. User Interface Web
2. Aplikasi Kalkulator Hash Sederhana
4.1.1 Implementasi User Interface Web
Implementasi user interface berupa web yaitu meliputi halaman web utama (form home), halaman web untuk proses login (form login), halaman web untuk autentikasi (form challenge response), halaman web bantuan program (form bantuan) dan halaman web contact (form contact).
Pada tampilan web di atas, terdapat beberapa menu seperti ”HOME”, ”LOGIN”, ”PRODUCTS, SERVICES”, ”E-BANKING”, ”ABOUT
Untuk melakukan login, maka tekan menu ”LOGIN”, dan untuk proses login ini memerlukan file “Koneksi.php” yang digunakan untuk melakukan koneksi ke database server.
Source code file koneksi tersebut yaitu :
<?php $host="localhost"; $user="root"; $passwd=""; $database="skripsi"; $connect=mysql_connect($host,$user,$passwd); if(!$connect) { echo "gagal"; } else { echo "sukses"; } mysql_select_db($database) or die("database tidak ada"); ?>
b. Halaman Login (login.php)
Gambar 4.3 Halaman web login.php
Proses Login ini hanya dengan memasukkan serial number client. Dari serial number tersebut, maka akan di periksa tentang keberadaan dari client tersebut. Jika serial number tersebut sudah terdaftar, maka server akan memberikan suatu tantangan (Challenge), tetapi jika serial number dari client tersebut belum terdaftar maka server akan memberi peringatan dan akan kembali ke form login ini lagi.
Berikut source code untuk melakukan pengecekan tentang serial number client :
<?php
$sql="select serial_number from client where serial_number='$userid'";
if(!$hasil=mysql_query($sql)) {
echo "perintah salah".mysql_error(); } $ada_baris=mysql_num_rows($hasil); if($ada_baris >= 1) { $master=$userid; session_register("master"); echo ""; include "CR.php"; exit; } else { echo ""; include "login.php"; exit; } ?>
Dari tombol ”LOGIN” tersebut jika serial number sudah terdaftar, maka akan menuju ke form ”CR.php”, tetapi jika serial number
belum terdaftar maka akan menuju ke halaman ”login.php”, dan dari hal tersebut maka client harus memasukkan serial number lagi ke dalam halaman login tersebut.
c. Halaman Challenge-Response Client (CR.php)
Form ini digunakan untuk memberikan tantangan (Challenge) kepada client yang berhasil masuk.
Gambar 4.4 Halaman Challenge-Response CR.php
Pada tampilan form diatas terdapat identitas client yang berhasil masuk, yaitu client yang serial numbernya 12345678.
Setelah client tersebut berhasil masuk, maka ia akan mendapatkan tantangan dari server, dimana tantangan untuk client tersebut yaitu
memasukkan hasil hash (response) kedalam field Response, dan selanjutnya tekan tombol SUBMIT. Setelah tombol SUBMIT ditekan, maka server akan melakukan autentikasi, dan server akan mengirimkan verifikasi atas response tersebut. Jika proses autentikasi telah berhasil, maka client tersebut dapat melakukan transaksi-transaksi on-line yang lainnya.
Jika proses autentikasi berhasil, maka akan muncul dialog box sebagai bentuk konfirmasi dari response yang dimasukkan yaitu sebagai berikut :
Gambar 4.5 Dialog box untuk client yang autentik
d. Halaman product & service (product.php)
Pada halaman ini terdapat beberapa informasi mengenai product dan service yang disediakan oleh bank tersebut.
e. Halaman E-Banking (online.php)
f. Program Contact (about.php)
Gambar 4.8 Halaman About about .php
Contact disini berisi tentang data penulis, dan juga langkah-langkah untuk melakukan login ke dalam system, sampai di dapatkan client yang benar-benar autentik.
4.1.2 Aplikasi program Java
Aplikasi yang ditangani oleh Java ini yaitu aplikasi kalkulator hash sederhana dan aplikasi untuk ganti password.
a. Aplikasi kalkulator hash sederhana
Aplikasi ini digunakan untuk mengolah tantangan dari server. Client memasukkan password yang dimilikinya dan setelah itu
dilakukan hashing dengan menekan tombol ”hash”, dan selanjutnya menuliskan tantangan server pada field Challenge. Untuk mendapatkan response yaitu dengan menekan tombol ”CALCULATE”. Hasil yang tertera tersebut kemudian disalin (copy) kedalam field Response pada web untuk proses autentikasi.
Gambar 4.9 kalkulator hash sisi client
Source code tampilan diatas untuk proses hashing yaitu : public void calculate() {
byte buffer[] = new byte[8192]; byte digest[] = new byte[8192]; byte a[] = new byte[8192]; try {
} catch (NoSuchAlgorithmException ex) { Logger.getLogger(kalkulatorclient.class.getName()).log(Level.SE
VERE, null, ex); }
String x = String.valueOf(hasilhashpassword.getText() + "" + text.getText()); System.out.println(x); buffer = x.getBytes(); md.update(buffer); digest = md.digest(); hex = "";
for (int i = 0; i < digest.length; i++) { int b = digest[i] & 0xff;
if (Integer.toHexString(b).length() == 1) { hex = hex + "0";
}
hex = hex + Integer.toHexString(b); }
hasilhash.setText(hex.substring(24)); }
Pada program di atas, jika terdapat salah satu field yang masih kosong maka akan terdapat dialog box yang menyatakan pesan kesalahan, yaitu seperti berikut ini :
BAB 5
UJI COBA DAN ANALISA HASIL
5.1 Uji Coba
Uji coba terhadap system ini dilakukan untuk menjawab pertanyaan-pertanyaan sebagai berikut :
Apakah sistem yang dibangun sesuai dengan prinsip kriptografi seperti adanya adanya avalanche effect, bilangan random yang dihasilkan, reflection attack.
Uji Coba Kesesuaian Hasil Program Dengan Prinsip Kriptografi
Uji coba ini dilakukan untuk menentukan apakah terdapat avalanche effect, yaitu perubahan kecil pada teks yang mengakibatkan perubahan besar pada hasil hashnya. Disini juga akan membahas tentang keacakan bilangan random.
Pada uji coba ini akan dilakukan beberapa kali percobaan dimana password yang digunakan sama tetapi challenge nya berubah 1 bit. Berikut beberapa percobaan tersebut :
Gambar 5.3 Uji Coba Avalanche Effect 1
Gambar 5.5 Uji Coba Avalanche Effect 3
Gambar 5.7 Uji Coba Avalanche Effect 5
Gambar 5.9 Uji Coba Avalanche Effect 7
Dari beberapa kali percobaan (lebih dari 20 kali percobaan) dengan password yang sama dan Challenge yang berbeda 1 bit, maka diambil 7 buah sample dalam penulisan Tugas Akhir ini, dan hasilnya terdapat avalanche effect yang besar juga. Walaupun berbeda 1 bit, dari hasil hash yang diperoleh tidak begitu jelas adanya interdepedensi / ketergantungan antara hash 1 dengan hash yang lain.
Dari uji-coba yang telah dilakukan maka nilai yang dijadikan sebagai response yaitu hanya 1 blok, dimana nilai hash yang dihasilkan yaitu 4 blok masing-masing 8 digit bilangan heksadesimal.
Bilangan random dalam system ini bersifat uniform (seragam) yaitu kemunculan bilangan random 1 dengan bilangan random yang lainnya sama atau jika dilihat dengan menggunakan diagram maka berupa garis lurus, dan jarang ditemukan bilangan acak yang sama
dalam waktu yang singkat. Berikut 100 buah percobaan bilangan random telah dilakukan :
610802 397626 398556 873749 792633 929947 151826 566967 341125 374727 712935 183729 342576 601462 428682 658255 506973 948059 650061 921361 573627 705555 029779 932808 818538 746629 634857 162053 908317 188812 983335 295041 339361 695515 795966 598401 630160 657196 808270 927384 778750 616876 653547 626956 629382 999524 130481 606666 234472 919686 255052 423698 333981 951389 179807 793076 657546 988528 481584 136933 313437 717507 886645 616529 789263 018033 567268 374812 155518 761461 577778 473608 756782 557235 137594 200492 114404 350157 296894 483731 060750 366103 174175 696149 295400 382234 366359 204527 393495 138545 376394 132680 127736 157761 944250 304207 884362 676323 476562 536436
Dari hasil percobaan bilangan random tersebut, tidak terlihat adanya ketergantungan antar bilangan random yang dihasilkan, walaupun account number yang masuk sama (12345678) untuk semua challenge tersebut.
5.2 Analisa hasil
Dari hasil uji coba diatas, maka dapat dilakukan analisa sebagai berikut : 1. Bilangan random yang dijadikan challenge akan selalu berubah
setiap terjadi kesalahan dalam proses autentikasi (One Time Password) dan bilangan yang dihasilkan acak, yaitu peluang kemunculan setiap angka sama yaitu 0,111.
2. Hasil hash dari kalkulator sederhana baik dari pihak client maupun server akan menghasilkan adanya perbedaan hasil (avalanche effect) yang sangat besar walaupun dengan menggunakan kunci password yang sama dan challenge yang berbeda 1 bit, dan bersifat case-sensitife.
3. Hasil hash ini akan sangat sulit untuk dipecahkan, karena sesuai dengan sifatnya mudah untuk menghitung nilai hash tetapi sulit untuk menemukan message aslinya. Dan kemungkinan terjadi collisi sangat kecil, karena kemungkinan tertebaknya message asli yaitu 10n-1.
4. Tidak terdapat reflection attack karena dalam hal ini hanya pihak server saja yang berhak untuk memberikan tantangan.
5. Hasil hash yang dihasilkan 4 blok (32 digit bilangan heksadesimal), akan tetapi yang dijadikan response 1 blok (8 digit bilangan heksadesimal), sehingga dalam hal ini birthday paradoks akan menurun menjadi 28 dari 232.
5.3 Analisa Piranti Pengembang
Piranti pengembang yang digunakan dalam implementasi sistem ini yaitu meliputi piranti Bahasa Pemrograman Java dan PHP.
Bahasa Pemrograman Java ini sesuai untuk menerapkan aplikasi hash kalkulator sederhana, karena di dalam Java sudah terdapat class (import java.security.MessageDigest) yang dapat dipanggil yang berhubungan dengan kriptografi. Sedangkan PHP sesuai untuk menerapkan sistem berbasiskan web
karena perintah-perintah yang digunakan cukup sederhana. Untuk menghitung nilai hash dalam PHP ini juga mudah yaitu dengan memanggil algoritma MD5. Sedangkan untuk menyimpan data-data client dalam database yaitu dengan menggunakan MYSQL .
BAB 6
KESIMPULAN DAN SARAN
6.1 Kesimpulan
Kesimpulan dari pembuatan perangkat-lunak system autentikasi dengan menggunakan Challenge-Response ini yaitu :
1. Dalam algoritma MD5 ini akan membutuhkan 264 percobaan untuk menghasilkan 2 messages yang mempunyai message digest yang sama, dan 2128 untuk menghasilkan message yang mempunyai message digest tertentu.
2. Algoritma MD5 ini juga mampu menghasilkan tingkat avalanche effect yang sangat besar. Hal ini ditunjukkan dengan uji coba avalanche effect diatas.
3. Tingkat keamanan pada algoritma ini cukup tinggi, karena algoritma ini akan mengolah teks asli menjadi keluaran 128 bit (walaupun terdapat 32 bit lebih pendek dari algoritma hash lainnya) dan dengan looping (perulangan) 60 kali.
4. Sistem autentikasi ini mempunyai tingkat keamanan yang bagus, karena dalam sistem ini menggunakan protokol Challenge-Response, dimana Challenge yang dihasilkan selalu berubah-ubah (One Time Password).
5. Bilangan random yang dibangkitkan acak yaitu karena sifatnya yang uniform artinya bahwa kemunculan tiap angka adalah sama yaitu ditunjukkan bahwa peluang kemunculan setiap angka yaitu 0,111. 6. Tidak terdapat adanya reflection attack, karena dalam hal ini hanya 1
pihak saja yang akan menerima tantangan yaitu pihak client, dan client tidak bisa memberikan tantangan terhadap server untuk memastikan server yang dituju juga autentik.
7. Nilai hash yang dijadikan response server berupa 8 digit bilangan heksadesimal, sehingga birthday paradoks yang dihasilkan akan berkurang yaitu 28.
6.2 Saran
Dalam pembuatan program ini masih dapat dikembangkan lagi untuk mengatasi beberapa kelemahan yang ditemukan dan bahkan program ini dapat digunakan untuk aplikasi yang lebih besar. Beberapa hal yang dapat dikembangkan yaitu antara lain :
1. Proses autentikasi ini juga dapat diterapkan dengan menggunakan jenis fungsi hash yang lainnya.
2. Untuk lebih menjaga keamanan, maka dapat ditambahkan mengenai ”Login Expired”.
Demikianlah kesimpulan dan saran-saran yang dapat dikemukakan oleh penyusun. Penyusun hanya berharap supaya program ini dapat dikembangkan lagi menjadi yang lebih baik dan berguna terutama dalam bidang ilmu pengetahuan hashing kriptografi dan keamanan transfer melalui protokol yang digunakan.
DAFTAR PUSTAKA
Ariyus, Dony, Pengantar Ilmu Kriptografi, Andi Offset, 2008
Schneir, B, Applied Cryptography, John Wiley & Sons, Inc., Canada, 1994
http://www.informatika.org/~rinaldi/Buku/Kriptografi/Bab-_Pengantar%20Kriptografi.pdf.
http://ilmukomputer.org/2007/03/27/md5-dan-sha-1-kriptografi-dengan-fungsi-hash/
http://www.informatika.org/~rinaldi/Matdis/2006-2007/Makalah/Makalah0607-42.pdf