V-1
BAB V
IMPLEMENTASI DAN PENGUJIAN
Pada bab V ini akan dibahas mengenai implementasi hasil dari analisis dan perancangan perangkat lunak yang telah dilakukan pada bab-bab sebelumnya pada tugas akhir ini dan juga akan dijelaskan dan hasil yang didapatkan dari pengujian perangkat lunak yang telah dibangun.
5.1 Lingkungan Implementasi
Implementasi yang dilakukan menggunakan sebuah perangkat komputer untuk membangun perangkat lunak dan sebuah telepon selular yang digunakan melakukan uji coba perangkat lunak yang telah dibangun.
Perangkat komputer yang digunakan untuk melakukan implementasi memiliki spesifikasi sebagai berikut:
1. Prosessor Intel Core Duo 1.8 GHz 2. RAM 1 GB
3. Hard Disk 80 GB
4. Perangkat masukkan keyboard dan tetikus 5. Perangkat keluaran monitor
Adapun perangkat lunak yang digunakan dalam melakukan implementasi adalah sebagai berikut:
1. Sistem operasi Windows XP Service Pack 2 2. Netbeans IDE 6.0.1
3. Mobility pack for Netbeans IDE 4. Sun Java Wireless Toll Kit 2.5.2
Perangkat lunak dibangun dengan menggunakan bahasa pemrograman java dengan menggunakan teknologi J2ME. Hasil implementasi diujikan pada telepon selular Nokia 9300i.
V-2
5.2 Batasan Implementasi
Pada tugas akhir ini, perangkat lunak yang dibangun memiliki batasan sebagai berikut:
1. Perangkat lunak tidak dapat melakukan akses ke memory di dalam kartu SIM. 2. Perangkat lunak yang dibangun dapat dijalankan pada telepon selular yang
dapat mendukung aplikasi berbasis java dengan spesifikasi MIDP 2.0 dan CLDC 1.1 menggunakan kartu GSM.
5.3 Implementasi Kelas
Kelas-kelas yang telah dirancang diimplementasikan dengan menggunakan bahasa pemrograman java.
5.3.1 Deskripsi Kelas
Pada Tabel V-1 dapat dilihat daftar implementasi kelas-kelas yang ada pada perangkat lunak beserta keterangannya.
Tabel V-1 Tabel Implementasi Kelas
Nama Kelas Nama File Keterangan
Interface Interface.java Kelas ini merupakan turunan dari
javax.microedition.midlet dan
mengimplementasikan kelas abstract CommandListener yang terdapat pada package javax.microedition.lcdui dan juga mengimplementasikan kelas
javax.wireless.messaging.MessageListener SMSReceive SMSReceive.java Kelas ini mengimplementasikan kelas
interface java.lang.Runnable
SMSSender SMSSender.java Kelas ini mengimplementasikan kelas
interface java.lang.Runnable
SMSStore SMSStore.java Kelas ini menangani penanganan pesan.
Data pesan disimpan dalam bentuk RecordStore dari package
V-3
Nama Kelas Nama File Keterangan
ECB ECB.java Fungsi random yang digunakan untuk
mengisi padding menggunakan fungsi random dari kelas java.util.Random
RC6 RC6.java
5.3.2 Operasi dan Atribut 1. Kelas Interface
Daftar hasil implementasi operasi dari kelas Interface dapat dilihat pada Tabel IV-1.
Tabel V-2 Daftar Implementasi Operasi Kelas Interface
Nama Operasi Visibility
(private, public)
Implementasi
SendAndSave Public public SendAndSave()
2. Kelas ECB
Daftar implementasi operasi dari kelas ECB dapat dilihat pada Tabel IV-2 dan daftar implementasi atribut kelas ECB dapat dilihat pada Tabel IV-3.
Tabel V-3 Daftar Implementasi Operasi Kelas ECB
Nama Operasi Visibility
(private, public)
Implementasi
enkripECB Public public enkripECB()
DekripECB Public public DekripECB()
Tabel V-4 Daftar Implementasi Atribut Kelas ECB
Nama Atribut Visibility
(private, public)
Implementasi
plain Private private byte[] plain
blocksize Private private int blocksize =
16
V-4
Nama Atribut Visibility
(private, public)
Implementasi
jumlahblock Private private int jumlahblock
cipher Private private byte[] cipher
pad Private private int pad
3. Kelas SMSSender
Daftar implementasi operasi dari kelas ECB dapat dilihat pada Tabel IV-4 dan daftar implementasi atribut kelas ECB dapat dilihat pada Tabel IV-5.
Tabel V-5 Daftar Implementasi Operasi Kelas SMSSender
Nama Operasi Visibility
(private, public)
Implementasi
run Public public void run()
Tabel V-6 Daftar Implementasi Atribut Kelas SMSSender
Nama Atribut Visibility
(private, public)
Implementasi
inter private private Interface inter
4. Kelas SMSReceive
Daftar implementasi operasi dari kelas ECB dapat dilihat pada Tabel IV-6 dan daftar implementasi atribut kelas ECB dapat dilihat pada Tabel IV-7.
Tabel V-7 Daftar Implementasi Operasi Kelas SMSReceive
Nama Operasi Visibility
(private, public)
Implementasi
AmbilNomor Public public String
AmbilNomor(String S)
run Public public void run()
Tabel V-8 Daftar Implementasi Atribut Kelas SMSReceive
Nama Atribut Visibility
(private, public)
Implementasi
V-5
Nama Atribut Visibility
(private, public)
Implementasi
Smsconn Private private
MessageConnection smsconn
msg Private private Message msg
senderAddress Private private String
senderAddress
buf Private private StringBuffer buf
inter Private private Interface inter
5. Kelas SMSStore
Daftar implementasi operasi dari kelas ECB dapat dilihat pada Tabel IV-8 dan daftar implementasi atribut kelas ECB dapat dilihat pada Tabel IV-9.
Tabel V-9 Daftar Implementasi Operasi Kelas SMSStore
Nama Operasi Visibility
(private, public)
Keterangan
DeleteAllInbox Public public void
DeleteAllInbox()
DeleteAllOutbox Public public void
DeleteAllOutbox()
SaveInbox Public public void
SaveOutbox(byte[] pesan, byte[] date, byte[] address)
SaveOutbox Public public void
SaveOutbox(byte[] pesan, byte[] date, byte[] address)
Tabel V-10 Daftar Implementasi Atribut Kelas SMSStore
Nama Atribut Visibility
(private, public)
implementasi
inbox Private private static
RecordStore inbox
V-6
Nama Atribut Visibility
(private, public)
implementasi
RecordStore inboxdate
outbox Private private static
RecordStore outbox
outboxdate Private private static
RecordStore outboxdate
sender Private private static
RecordStore sender
receiver Private private static
RecordStore receiver
6. Kelas RC6
Daftar implementasi operasi dari kelas ECB dapat dilihat pada Tabel IV-10 dan daftar implementasi atribut kelas ECB dapat dilihat pada Tabel IV-11.
Tabel V-11 Daftar Implementasi Operasi Kelas RC6
Nama Operasi Visibility
(private, public)
Implementasi
Decryption Private private void
Decryption()
Dekrip Public public void
Dekrip(byte[] in, int inOff, byte[] out)
Encryption Private private void
Encryption()
Enkrip Public public void
Enkrip(byte[] in,int inOff,byte[] out)
F Private private int F(int x)
initreg Private private void
initreg(byte[] src, int srcOff)
regToCipher Private private void
regToCipher(byte[] dst,int dstOff)
regToPlain Private private void
V-7
Nama Operasi Visibility
(private, public)
Implementasi
out,int inOff)
rotateLeft Private private int
rotateLeft(int x, int y)
rotateRight Private private int
rotateRight(int x, int y)
setKey Public public void
setKey(byte[] key)
swap Private private void swap(int A,
int B, int C, int D)
Tabel V-12 Daftar Implementasi Atribut Kelas RC6
Nama Atribut Visibility
(private, public)
Implementasi
w Private private static final
int w = 32
U Private private static final
int u = 4
R Private private static int r
S Private private int S[]
A Private private int A
B Private private int B
C Private private int C
D Private private int D
LGW Private private static final
int LGW = 5
5.4 Implementasi Modul
Pada Tabel V-2 dapat dilihat daftar hasil implementasi modul-modul yang telah dirancang.
V-8
Tabel V-13 Tabel Implementasi Modul
Nama Modul Nama File yang Terlibat
Modul Enkripsi Pesan - ECB.java
- RC6.java
Modul Dekripsi Pesan - ECB.java
- RC6.java
Modul Pengirim Pesan - SMSSender.java
Modul Penerima Pesan - Interface.java
- SMSReceive.java
Modul Penyimpanan Pesan - SMSStore.java
5.5 Implementasi Antar Muka
Subbab ini berisi gambar-gambar hasil implementasi antar muka dari perangkat lunak yang telah dibangun. Gambar hasil implementasi tersebut merupakan gambar dari emulator.
V-9
Gambar V-2 Implementasi Antar Muka Layar Pembangunan Pesan
V-10
Gambar V-4 Implementasi Antar Muka Layar Penerima Pesan
V-11
Gambar V-6 Implementasi Antar Muka Daftar Inbox
Gambar V-7 Implementasi Antar Muka Daftar Outbox
5.6 Pengujian
Pengujian yang dilakukan dibagi menjadi tiga bagian yaitu pengujian performansi perangkat lunak, pengujian enkripsi dan dekripsi, dan pengujian pengiriman dan penerimaan pesan.
V-12 5.6.1 Pengujian Performansi Perangkat lunak
Pengujian performansi perangkat lunak dilakukan dengan melakukan pengujian terhadap algroritma enkripsi yang diimplementasikan oleh perangkat lunak. Pengujian ini dilakukan pada telepon selular Nokia 9300i yang memiliki memory internal 80 MB dan memory card 128 MB. Pengujian ini dilakukan untuk mengetahui apakah perangkat lunak yang telah dibangun dapat berjalan dengan baik atau tidak jika dijalankan pada telepon selular. Untuk pengujian ini kunci yang digunakan adalah “kunci”. Tata cara pengujian ini adalah dengan mengirimkan pesan ke nomor sendiri, pengiriman pesan dimulai dengan menyalakan aplikasi sedangkan penerimaan pesan dilakukan ketika aplikasi sudah berjalan dan menunggu psan untuk datang.
Hasil pengujian performansi dapat dilihat pada Tabel V-14.
Tabel V-14 Tabel Pengujian Performansi
Jumlah rotasi Plainteks Waktu Enkripsi Waktu Dekripsi
20 tes 469 milidetik 438 milidetik
20 ini contoh pesan
yang lebih dari 1 blok
594 milidetik 141 milidetik
20 pesan ini cukup
panjang digunakan untuk pengujian pesan panjangnya lebih dari 1 message atau melakukan tes pesan yang lumayan panjang
937 milidetik 254 milidetik
100 pesan ini cukup
panjang digunakan untuk pengujian pesan panjangnya lebih dari 1 message atau melakukan tes pesan yang lumayan panjang
V-13 Jumlah rotasi Plainteks Waktu Enkripsi Waktu Dekripsi
100 tes 516 milidetik 203 milidetik
100 ini contoh pesan
yang lebih dari 1 blok
625 milidetik 245 milidetik
500 tes 562 milidetik 188 milidetik
500 pesan ini cukup
panjang digunakan untuk pengujian pesan panjangnya lebih dari 1 message atau melakukan tes pesan yang lumayan panjang
1110 milidetik 531 milidetik
5.6.2 Pengujian Kunci
Pada bagian ini akan diberikan hasil pengujian kemanan aplikasi yang menguji hasil yang dihasilkan dari proses enkripsi dan dekripsi dengan kasus-kasus tertentu. Kasus-kasus yang akan diujikan adalah sebagai berikut:
1. Menguji kebenaran enkripsi dan dekripsi 2. Menguji pemakaian kunci
Hasil pengujian kasus-kasus tersebut dapat dilihat pada Tabel V-15.
Tabel V-15 Tabel Pengujian Keamanan Aplikasi
Plainteks Kunci pengirim cipherteks Kunci penerima Dekripsi tes 31 33 98 04 37 d8 3f f1 82 6e 8c 44 5c c3 6f 09 1f 43 Berhasil tes 31 33 c8 df 89 d3 c4 96 ac ea 90 39 12 96 e8 ae 0d 76 tes gagal
V-14 Plainteks Kunci pengirim cipherteks Kunci penerima Dekripsi ini untuk tes pesan panjang yang lebih besar dari 1 pesan jadi kata kata diulang-ulang terus biar panjang pesan lebih dari 1 pesan atau menggunakan konkatinasi kunci 30 37 02 d7 c6 89 a4 6b ae 3c 3d 59 62 13 44 e2 10 98 a9 d6 ac eb 9f 5e a8 31 3a e3 2b ba 4a 23 0f 9a 0b a5 a7 cc 98 65 5a 2b e0 39 39 9b 02 e2 10 98 ab b0 b1 65 99 5e 9e 30 e2 9c a3 c4 32 e2 0b 94 4e f9 bb aa 98 72 a6 28 37 d5 71 6c 3d 23 0f 9a 39 2e 88 d7 a4 70 5a 29 6c f1 03 35 41 23 0f 9d 90 53 b5 c5 9f 62 ad 28 94 66 39 0e 33 2b 09 53 eb e5 58 fa 4f 2e 5a 37 6e a9 6f 32 f1 22 15 94 12 4f 87 7c 9d 64 a1 3c 88 f0 16 0a 3f e2 0b a2 48 de a7 6b 98 6b 9b 3a 58 72 d8 26 0a fb d9 6b kunci berhasil ini untuk tes pesan panjang yang lebih besar dari 1 pesan jadi kata kata diulang-ulang terus biar panjang pesan lebih dari 1 kunci 30 37 02 d7 c6 89 a4 6b ae 3c 3d 59 62 13 44 e2 10 98 a9 d6 ac eb 9f 5e a8 31 3a e3 2b ba 4a 23 0f 9a 0b a5 a7 cc 98 65 5a 2b e0 39 39 9b 02 e2 10 98 ab b0 b1 65 99 5e 9e 30 e2 9c a3 c4 32 e2 0b 94 4e f9 bb aa 98 72 a6 28 37 d5 71 6c 3d 23 0f 9a 39 2e 88 d7 a4 70 5a 29 6c f1 03 35 41 23 0f 9d kunci salah gagal
V-15 Plainteks Kunci pengirim cipherteks Kunci penerima Dekripsi pesan atau menggunakan konkatinasi 90 53 b5 c5 9f 62 ad 28 94 66 39 0e 33 2b 09 53 eb e5 58 fa 4f 2e 5a 37 6e a9 6f 32 f1 22 15 94 12 4f 87 7c 9d 64 a1 3c 88 f0 16 0a 3f e2 0b a2 c4 47 4b b4 98 6b 9b 3a ff 81 7e 50 39 2a 09 9b tes kunci panjang kunci ini lumayan panjang untuk dites jadi dipake aja 31 35 2a 95 3e fe d3 5c a0 99 66 82 07 ec 06 32 e9 31 73 f4 a8 5b 3b bb 05 0a 72 27 04 47 6b 9b 5b 97 kunci ini lumayan panjang untuk dites jadi dipake aja berhasil tes kunci panjang kunci ini lumayan panjang untuk dites jadi dipake aja 31 35 2a 95 3e fe d3 5c a0 99 66 82 07 ec 06 32 e9 31 56 55 5f f0 3c bc 06 0b 25 03 87 5b 6c 9c 5c 98 kunci ini salah Gagal
5.6.3 Pengujian Penerimaan Pesan
Pengujian pengiriman pesan ini bertujuan untuk melakukan pengecekan terhadap pesan yang dikirimkan. Tata cara dari pengujian ini adalah melakukan pengiriman terhadap telepon selular yang tidak terinstalasi perangkat lunak yang telah dibangun.
V-16
Tabel V-16 Tabel Pengujian Penerimaan Pesan
Pesan yang dikrim (dalam heksadesimal)
Pesan yang diterima (yang terbaca)
Jenis Telepon Selular Penerima 31 33 cb 16 53 28 59 cf c1 67 d5 b0 65 60 fb 8e 6e 8c 13ËS(YÏÁgõ˙e`ûn Nokia 3650 31 33 eb 14 03 cb eb 61 54 fa 81 46 00 30 8d 21 01 1f
(00^080)13???aT??F Haier D1600 CDMA
31 36 bd b2 34 13 2b af 93 39 9d bb 95 99 cd 60 40 5e 16½²4+i9»Í`@^ Nokia 9210 31 33 4a 10 40 64 6f e5 d7 7d 73 96 59 7f 11 a5 84 a2
Tidak dapat dibaca Nokia E90
31 33 d9 7f 40 80 28 9e 90 36 a2 51 9e 7c ca f2 d2 f0
Tidak dapat diterima Samsung SGH-U600
31 33 4a a1 a3 a7 3b b1 a3 49 7d 7e 5d f5 dd 70 50 5e
Tidak dapat dibaca Nokia 3250
Pada Tabel V-16, yang dimaksud dengan pesan tidak dapat dibaca adalah aplikasi standar telepon selular yang menerima pesan tidak mampu menampilkan isi pesan yang bersifat binary. Yang dimaksud dengan tidak dapat menerima bukan berarti telepon selular tersebut tidak dapat menerima pesan terenkripsi, melainkan aplikasi standar telepon selular tersebut tidak mampu menangani penerimaan pesan berbentuk binary.
5.7 Analisis Hasil Pengujian
Berdasarkan hasil pengujian yang dilakukan, hasil dari pengujian fitur enkripsi dan dekripsi perangkat lunak pada lingkungan telepon selular berjalan dengan cukup cepat seperti terlihat pada Tabel V-14 dan pesan yang diterima dapat didekripsi dengan baik jika masukkan kunci dari pengguna benar seperti terlihat pada Tabel V-15. Oleh karena itu, dapat disimpulkan bahwa perangkat lunak yang telah dibangun dapat berjalan dengan baik pada lingkungan telepon selular.
V-17 Pada Tabel V-14 dapat terlihat bahwa waktu enkripsi cenderung lebih besar dibandingkan waktu dekripsi, hal tersebut disebabkan karena metode pengujian yang dilakukan untuk enkripsi dilakukan dimulai dari menjalankan aplikasi yang belum berjalan sebelumnya sedangkan proses dekripsi dilakukan ketika aplikasi sudah berjalan. Proses inisialisasi aplikasi java yang dilakukan ketika mulai menjalankan aplikasi menggunakan memory sehingga proses enkripsi memakan waktu yang lebih besar. Pada Tabel V-14 juga terlihat bahwa semakin besar jumlah rotasi yang digunakan maka waktu yang diperlukan untuk melakukan enkripsi dan dekripsi semakin besar, sehingga dapat disimpulkan jumlah rotasi yang besar dapat meningkatkan keamanan, namun waktu yang dibutuhkan untuk enkripsi dan dekripsi akan semakin besar.
Pesan terenkripsi yang dikirimkan melalui perangkat lunak yang telah dibangun dapat disampaikan ke tujuan dengan baik. Pesan yang dikirimkan oleh perangkat lunak yang telah dibangun, yang ditujukan pada telepon selular yang tidak memiliki perangkat lunak yang sama akan menuju aplikasi telepon selular standar. Pada Tabel V-16 dapat dilihat bahwa hasil pesan yang diterima aplikasi telepon selular standar tersebut beragam, beberapa telepon selular tidak dapat membuka pesan tersebut atau bahkan tidak dapat menerima pesan tersebut dan beberapa telepon selular memaksa telepon selular tersebut untuk menampilkan pesan tersebut dengan format yang berbeda-beda.
Melalui hasil pengujian yang dilakukan pada telepon selular, dapat terlihat bahwa perangkat lunak berjalan dengan baik dan jika nomor tujuan menggunakan perangkat lunak yang sama, pesan dapat disampaikan dengan baik, dapat diketahui bahwa implementasi algoritma RC6 untuk komunikasi melalui media SMS dapat direalisasikan dengan baik.