24 BAB 3 ANALISIS DAN PERANCANGAN PROGRAM
3.1
Gambaran Umum Obyek
3.1.1
Sejarah Universitas Bina Nusantara Universitas Bina Nusantara bermula dari sebuah lembaga kursus pendidikan
komputer yang dimulai pada tanggal 21 Oktober 1974 dengan nama Modern Computer Course, kemudian berkembang menjadi Akademi Teknik Komputer (ATK) pada tanggal 1 Juli 1981 dengan membuka jurusan Manajemen Informatika dan Teknik Informatika. Pada tanggal 13 Juli 1984, ATK memperoleh Status Terdaftar dan berubah nama menjadi AMIK Jakarta. Tepat pada tanggal 1 Juli 1985, AMIK Jakarta membuka jurusan Komputerisasi Akuntansi, dan pada tanggal 21 September 1985 AMIK Jakarta berganti nama menjadi AMIK Bina Nusantara. Sejarah kemudian mencatat bahwa pada tanggal 17 Maret 1986 AMIK Bina Nusantara terpilih sebagai Akademi Komputer terbaik oleh Depdikbud melalui KOPERTIS Wilayah III Jakarta yang lulusannya banyak diserap lembaga-lembaga pemerintah, penelitian, dan dunia usaha swasta. Mengingat kebutuhan masyarakat akan lulusan perguruan tinggi komputer berkualitas yang semakin membengkak, maka pada tanggal 1 Juli 1986, STMIK (Sekolah Tinggi Manajemen Informatika dan Komputer) Bina Nusantara didirikan dengan membuka program Strata-1 (S1) jurusan Manajemen Informatika dan Teknik Informatika. Lalu pada tanggal 1 Juli 1987 STMIK Bina Nusantara membuka jurusan Teknik Komputer (S1). Kemudian, pada tanggal 9 November 1987, AMIK Bina Nusantara
25 dilebur ke dalam STMIK Bina Nusantara sehingga terbentuk sebuah sekolah tinggi yang menyelenggarakan Program Diploma III (DIII) dan S1. Pada tanggal 8 Agustus 1996, Universitas Bina Nusantara berdiri dengan fakultas dan jurusan yang lebih lengkap, dan diakui keberadaannya oleh pemerintah. Melalui Surat Keputusan Menteri Pendidikan dan Kebudayaan RI tertanggal 11 Agustus 1998, Program Studi Ilmu Komputer dari STMIK Bina Nusantara dinyatakan lulus dalam proses Akreditasi BAN. Tanggal 10 Desember 1998, STMIK Bina Nusantara dilebur menjadi satu ke dalam Universitas Bina Nusantara, sehingga memiliki berbagai macam jurusan dan program studi.
3.1.2 Tujuan Universitas Bina Nusantara Universitas Bina Nusantara mempunyai tujuan yang dapat dikelompokkan sebagai berikut : 1. Tujuan umum Universitas Bina Nusantara yaitu membantu pemerintah dalam mencerdaskan kehidupan Bangsa Indonesia sesuai dengan UUD 1945 dan menghasilkan tenaga-tenaga pembangunan di bidang ilmu pengetahuan dan teknologi. 2. Tujuan institusional Universitas Bina Nusantara yaitu mendidik tenaga ahli yang terampil dan mampu menangani hal-hal yang berhubungan dengan ilmu pengetahuan dan teknologi, yang didukung oleh Teknologi Informasi serta membina keterkaitan yang erat dengan kegiatan pembangunan bangsa dan negara. 3. Tujuan pengembangan yaitu mewujudkan tercapainya tingkat pengembangan akademik, khususnya dalam jumlah dan mutu lulusan yang meningkat, proporsi
26 jumlah dan mutu tenaga pendidikan terus meningkat pula dan dikaitkan dengan pengadaan fisik dan laboratorium serta pengelolaan pendidikan yang efektif dan efisien, serta langsung relevan dengan kebutuhan pengembangan sosial, ekonomi dan industri. 4. Tujuan pengembangan jangka panjang yaitu menyelenggarakan pendidikan jenjang pascasarjana (S2 dan S3) yang berorientasi pada berbagai profesi di bidang ilmu pengetahuan dan teknologi. Peranan dan tujuan Universitas Bina Nusantara ini sejalan dengan semangat, cita-cita dan tujuan yang tercantum dalam AD/ART Yayasan Bina Nusantara dan Statuta Universitas Bina Nusantara.
3.1.3
Visi Universitas Bina Nusantara Universitas Bina Nusantara memiliki visi untuk menjadi perguruan tinggi swasta
yang diterima sebagai panutan dalam pengembangan dan penerapan ilmu dan teknologi di Indonesia, terutama yang terkait dan ditunjang oleh berbagai penerapan Teknologi Informasi.
3.1.4
Misi Universitas Bina Nusantara Dalam rangka mencapai visi yang digariskan, Universitas Bina Nusantara akan
berusaha melalui misinya sebagai berikut : 1. Menyelenggarakan program-program studi yang menunjang pengembangan dan penerapan Teknologi Informasi dalam berbagai bidang ilmu.
27 2. Menyediakan sarana dan lingkungan yang kondusif bagi pelaksanaan kegiatan belajar mengajar yang efektif dan efisien sehingga terbentuk lulusan-lulusan yang bermoral, terampil dan kreatif. 3. Menjaga keterkaitan dan relevansi seluruh kegiatan akademis dengan kebutuhan pembangunan sosial ekonomi dan industri Indonesia serta mengantisipasi semakin maraknya globalisasi kehidupan masyarakat. 4. Melangsungkan kerjasama dengan berbagai pihak, baik dari dalam maupun luar negeri, sehingga ilmu dan teknologi yang diberikan selalu mutakhir serta dapat menerapkannya di Indonesia secara tepat guna.
3.1.5
Sejarah FMIPA Univ. Bina Nusantara Fakultas Matematika dan Ilmu Pengetahuan Alam Universitas Bina Nusantara
mulai menandai kiprahnya pertama kali pada tahun 1996, dengan munculnya jurusan Matematika Terapan sebagai salah satu pilihan di Univ. Bina Nusantara. Kurikulum program
studi
Matematika
dikembangkan
berdasarkan
Kurikulum
Pendidikan
Matematika Nasional, sementara mata kuliahnya dikembangkan berdasarkan kurikulum standar ACM (American Computing Machineries) dan permintaan pasar. Sebagai hasilnya, lulusan Jurusan Matematika Univ. Bina Nusantara diharapkan dapat bersaing baik di tingkat nasional maupun internasional. Kemudian pada tahun 1998, seiring dengan bertambahnya permintaaan pasar, khussunya dari bidang Industri dan Teknologi Informasi, dibentuklah Program Studi Ganda dengan Jurusan Matematika Terapan dan Teknik Informatika.
28 Visi FMIPA Univ. Bina Nusantara adalah untuk menjadi pemimpin dan yang terdepan dalam upaya kolaborasi Matematika Terapan dengan menggunakan Teknologi Informasi di tingkat nasional. Untuk mencapai visi tersebut, FMIPA Univ. Bina Nusantara memiliki misi : •
Menciptakan lulusan dengan integritas tinggi dan kompetensi dibidang Matematika dan Komputer yang mampu bersaing di era globalisasi.
•
Meningkatkan kualitas dan kapasitas dosen secara terus menerus agar senantiasa mampu menjawab kebutuhan di era modern.
•
Meningkatkan penelitian dan dedikasi terhadap kualitas pada masyarakat.
3.1.6 Gambaran Umum Sistem Berjalan Seperti halnya semua institusi pendidikan, Univ. Bina Nusantara juga mengadakan pengujian terhadap peserta didiknya. Hasil dari pengujian ini biasanya akan disarikan menjadi nilai-nilai yang diberikan oleh para dosen atas hasil jawaban dari para mahasiswanya. Nilai ujian yang didapat oleh para dosen biasanya kemudian akan diolah menggunakan sebuah program khusus pengolah nilai yang khusus untuk tiap-tiap dosen. Hasil dari olahan nilai tersebut berupa sebuah file yang nantinya akan diserahkan kebagian Layanan Nilai untuk kemudian diolah lebih lanjut. Umumnya, dosen yang telah selesai mengolah nilai seorang mahasiswa akan mengirimkan file hasil olahan nilai tersebut melalui langsung melalui e-mail, karena hal ini memang lebih praktis dan cepat. Saat ini, file tersebut akan langsung dikirimkan begitu saja melalui e-mail, tanpa terlebih dahulu diamankan dengan menggunakan suatu
29 sistem sekuriti. Hal ini menyebabkan kekhawatiran, karena proses ini sangat rentan terhadap ancaman dari luar.
3.1.7
Sistem Yang Diusulkan Sistem yang diusulkan adalah dengan menggunakan sarana sekuriti berupa sistem
steganografi. Sistem steganografi menggunakan image ini akan diterapkan melalui sebuah program aplikasi yang akan meyisipkan file terlebih dahulu pada sebuah image sesaat sebelum file tersebut dikirimkan. Kemudian, bukan file asli yang dikirimkan oleh dosen, melainkan image yang sudah disisipi oleh file inilah kemudian dikirimkan (image dapat dikompresi terlebih dahulu menggunakan program kompresi, seperti winRar atau winZip) ke bagian Layanan Nilai selaku pihak yang bertanggung jawab untuk mengolah nilai mahasiswa. Bagian Layanan Nilai yang menerima citra tersebut, kemudian dapat menggunakan program aplikasi ini untuk memperoleh kembali file nilai mahasiswa yang ditanamkan.
3.2
Perancangan Program Aplikasi
3.2.1
Gambaran Umum Program Aplikasi Nama program yang hendak dirancang adalah Outguess Data Hider. Tujuan dari
perancangan program ini adalah untuk membantu dalam mengamankan file berisi nilai ujian yang dikirimkan oleh seorang dosen di Fakultas MIPA Univ. Bina Nusantara ke bagian Layanan Nilai Mahasiswa untuk diolah. Secara umum, program bekerja dengan input berupa file nilai mahasiswa yang hendak diserahkan pada bagian Layanan Nilai.
30 Selanjutnya, user dapat memilih sebuah image untuk digunakan sebagai cover (tempat dimana file nilai akan disisipkan). Sebelum memulai penyisipan, user dapat memberikan suatu password atau kata sandi, agar file yang tersisip tidak dapat di decode tanpa memasukkan kata sandi tersebut. Terakhir, user cukup menekan tombol encode untuk memulai proses penyisipan. Untuk proses decoding, user cukup menginput image yang telah disisipi file yang hendak didapatkan. Apabila image tersebut dilindungi oleh sebuah kata sandi, maka user harus terlebih dahulu menginput kata sandi tersebut pada kolom yang tersedia, barulah kemudian user dapat mengklik tombol decode, untuk memulai proses decoding. Setelah itu, file yang diharapkan akan didapatkan kembali.
3.2.2 Spesifikasi Rumusan Perancangan Program yang dirancang akan memiliki satu form utama. Fungsi-fungsi enkripsi dan dekripsi tidak dimasukkan dalam frame terpisah, melainkan tetap berada dalam form utama, tetapi dipisahkan dengan menggunakan tabbed pane. Untuk memanggil frame yang berbeda, cukup mengklik tab yang ada bersesuaian, sehingga frame yang diinginkan akan langsung muncul, dan user bisa langsung menggunakan fungsi yang terdapat dalam frame tersebut. 1. Proses Encoding Proses encoding program ini menggunakan algoritma Outguess. File yang hendak disisipkan akan terlebih dahulu dikonversi menjadi bit-bit. Apabila user memberikan password, password ini juga akan dikonversi menjadi bit-bit, yang kemudian akan digabungkan kedalam bit-bit pesan. Kemudian, menggunakan
31 algoritma Outguess tadi, bit-bit file akan disisipkan ke dalam image, sehingga dihasilkan sebuah stego-image, atau image yang telah disisipi pesan. 2. Proses Decoding. Proses decoding akan menghasilkan kembali file yang disisipkan dalam stegoimage. Dengan menggunakan algoritma Outguess, bit-bit file akan dipisahkan dari bit-bit stego-image. Bit-bit file tersebut kemudian akan dipisahkan dari bit-bit password yang sebelumnya diberikan. Kemudian bit-bit file tersebut akan disusun ulang, sehingga membentuk file aslinya kembali.
3.2.3
Use-Case Diagram Program aplikasi ini akan memiliki satu buah form utama yaitu form GUI yang
akan menjadi user interface dasar. Form ini akan mengendalikan class fileHandler yang berfungsi untuk mengambil file untuk digunakan. Berdasarkan input dari GUI, Class fileHandler ini akan mengendalikan dua fungsi utama program, yaitu class encoding dan class decoding. encoding <
>
GUI Form User
<<uses>>
fileHandler
<<uses>>
<>
decoding fileFilter
Gambar 3.1 Use-Case Diagram Program Aplikasi OutguessDataHider
32 Class-class yang terdapat dalam program aplikasi ini memiliki attributes dan methods sebagai berikut : encoding.java private BufferedImage coverImage; private FileInputStream file; private boolean isFinished; 3.3 Modul privatePerancangan boolean isUpdated; private String header; 3.3.1 Modul GUI privatePerancangan byte[] bufferedInput; private int layer; private pseudoRandomGenerator pRandom;
‘
decoding.java private BufferedImage stegoImage; private FileOutputStream retrievedFile; private boolean isEmbeddedFileExist; private int statusHeader; private String embeddedFileName; private int extractedByte; private long jumlahByte; private pseudoRandomGenerator pRandom;
processing(); findN(); getBit(); saveFile(); XORSeed();
findN(); getBit(); saveFile(); setExtractedByte();
fileHandler.java private static File inputFile; private static File imageFile; private static File outputFile; private static File stegoImage; private static String pathCoverImage; private static String pathStegoImage; private static String pathOutputFile; private static String outputFileName; private static String inputFileName; private static String pathDirectory; private static String fileExtension; coverHandler(); directoryHandler(); fileHandler(); outputHandler(); stegoImageHandler(); getInputFile(); getPathDirectory(); getStegoImage();
fileFilter.java private static String TYPE_UNKNOWN; private static String HIDDEN_FILE; private Hashtable filters = null; private String description = null; private String fullDescription = null; private boolean useExtensionsInDescription = true;
Gambar 3.2 Class Diagram
accept(); addExtension(); getDescription(); getExtension(); setDescription();
33 3.3
Perancangan Modul
3.3.1
Perancangan Modul GUI Program Outguess Data Hider ini hanya memiliki satu form utama, yaitu modul
GUI. Pada modul GUI ini terdapat komponen JmenuBar dibagian atas program, sementara dibagian tengahnya adalah sebuah JTabbedPane yang isinya akan berubahubah, sesuai dengan tab yang sedang aktif. Komponen JMenuBar dibagian atas terdiri dari Menu dan About. Pada pilihan Menu, terdapat tiga JmenuItem, yaitu Encode untuk beralih ke tab Encode, Decode untuk beralih ke tab Decode, serta Exit untuk keluar dari program. Sementara, pada pilihan About, terdapat pilihan Pembuat yang memuat data singkat mengenai pembuat program ini. Menu Encode
About Decode
JTabbedPane
Gambar 3.3 Rancangan modul GUI
3.3.2
Perancangan Tab Encode Saat program ini pertama kali dijalankan atau dieksekusi, tab pertama yang akan
terlihat adalah tab Encode. Tab ini merupakan tab yang digunakan untuk melakukan proses encoding atau penyisipan file kedalam cover image yang dipilih oleh user. Tab ini terbagi menjadi dua buah JFrame yaitu frame image dan frame functions. Pada frame
34 functions terdapat beberapa komponen JButton serta JTextField dengan peran yang sudah cukup jelas tertera pada masing-masing JButton tersebut. Button Cari Image akan menampilkan sebuah window JFileChooser dimana user dapat memilih file-file yang terdapat dalam harddisk milik user. Untuk mencari image, JFileChooser terlebih dahulu difilter untuk menerima hanya image saja. Image yang dipilih kemudian akan muncul dalam frame image, sementara path image tersebut akan muncul ada JTextField disebelah Button Cari Image. Button Cari File akan kembali menampilkan sebuah window JFileChooser, sehingga user dapat kembali memilih file-filenya. Kali ini JFileChooser akan menerima file tipe apapun, sehingga tidak dilakukan filter. Path dari File yang dipilih akan kembali muncul dalam JTextField disebelah Button Cari File. Button Simpan Sebagai akan mengijinkan user mendefinisikan nama file yang hendak digunakan untuk meniyimpan stego-image yang dihasilkan. Lalu password field dan confirm field dibawahnya sebagai tempat bagi user untuk menginput passwordnya. Setelah semua kriteria terpenuhi, user dapat menekan Button Mulai Encoding untuk segera memulai proses Encoding. Apabila semuanya berjalan lancar, stego-image yang berisi file yang telah disisipkan akan berhasil didapatkan.
35 Encode
image
Cari Image Cari File Simpan Sebagai Password Konfirmasi
nama dan path image yang dipilih nama dan path file yang dipilih nama stego-image yang dihendaki password field confirm field
Mulai Encoding
Gambar 3.4 Rancangan Tab Encode
3.3.3
Perancangan Tab Decode Tab Decode merupakan tab yang ditampilkan apabila user hendak melakukan
proses decoding. Seperti halnya pada Tab Encode, Tab ini juga terbagi atas dua JFrame yaitu frame image dan frame functions, dengan tugas yang hampir serupa pula, yaitu frame image untuk menampilkan gambar dan frame functions untuk mendapatkan file dan data yang dibutuhkan untuk menjalankan fungsi decoding. Button Cari Stego Image akan menampilkan sebuah window JFileChooser dimana user dapat memilih file image yang terdapat dalam harddisk milik user. Image
36 yang diperbolehkan hanya yang bertipe .jpg atau .jpeg saja. Image yang dipilih kemudian akan muncul dalam frame image, sementara path image tersebut akan muncul ada JTextField disebelah Button Cari Image. Tentu saja image yang dipilih sebaiknya merupakan sebuah stego-image, sebab jika bukan sebuah stego-image, proses decoding tidak dapat berjalan. Button Tempat Ekstraksi juga akan menampilkan sebuah window JFileChooser. Tetapi kali ini, user tidak perlu memilih file apapun, melainkan cukup memilih tempat ekstraksi yang dikehendaki untuk menampung file. Filename yang diketikkan oleh user akan dihiraukan, sehingga file output yang dikehendaki tidak terganggu. Setelah memilih lokasi ekstraksi yang dikehendaki, path tempat ekstraksi yang telah dipilih akan muncul pada JTextField disampingnya. Password Field dibawahnya dapat diisi apabila file stego-image yang dipilih terproteksi oleh password. Setelah semua kriteria terpenuhi, user dapat menekan Button Mulai Decoding untuk segera memulai proses Decoding. Apabila semuanya berjalan lancar, file yang telah disisipkan dalam stego-image akan berhasil didapatkan.
37 Decode
image
Cari Stego Image
nama dan path image yang dipilih
Tempat Ekstraksi
Path yang dipilih
Password
password field
Mulai Decode
Gambar 3.5 Rancangan Tab Decode
3.3.4
Perancangan Window File Chooser Program ini menggunakan komponen JFileChooser yang banyak dipanggil untuk
menangani pemilihan file-file yang dikehendaki, serta pemilihan direktori. Secara umum, format window File Chooser yang dipakai pada seluruh aplikasi ini serupa, yaitu berupa format komponen JFileChooser biasa. Yang sedikit membedakan adalah tipe-tipe file yang boleh diterima oleh tiap-tiap File Chooser, misalnya File Chooser yang menangani image hanya boleh menerima image saja, sementara yang menangani file boleh menerima apa saja. Selain itu, judul pada bagian kiri atas window juga dapat mengalami perubahan, sesuai dengan File Chooser tipe apa yang sedang operasional.
38
Judul Look in : My Documents My Computer My Network Places
File Name :
Open
Files of Type : Tipe File
Cancel
Gambar 3.6 Rancangan Window File Chooser
3.3.5
Perancangan Author Dialog Pada menu About di form GUI, terdapat Menu Item yang akan memunculkan
Author Dialog. Pada Author Dialog ini, dimuat secara singkat mengenai pembuat program aplikasi ini. Dialog Window ini akan menutup setelah Button OK ditekan.
Image Daniel Haryanto Program Studi Ganda : Matematika – Teknik Informatika © Universitas Bina Nusantara 2007 OK Gambar 3.7 Rancangan Author Dialog
39 3.3.6
Perancangan Exit Dialog Pada saat program ditutup (diclose) akan muncul sebuah dialog yang berisi
ucapan terima kasih. Dialog Window ini akan menutup setelah Button OK ditekan dan akan turut menutup aplikasi program utama.
Logo Binus
Terima Kasih © Universitas Bina Nusantara 2007 OK Gambar 3.8 Rancangan Exit Dialog
3.4
Cara Kerja Program Berikut ini akan digambarkan cara kerja program dengan menggunakan pseudo
code. Penjelasan akan dibagi berdasarkan class-class yang terdapat dalam program aplikasi.
3.4.1
Perancangan Spesifikasi Proses Tab Encode IF cover_ image NOT Choosen THEN CALL JOptionPane Warning_Message; RETURN; ELSE THEN SHOW cover_image;
40 END IF. IF input_file NOT Choosen THEN CALL JOptionPane Warning_Message; ELSE IF save_directory NOT Choosen THEN CALL JOptionPane Warning_Message; ELSE IF password_field NOT Equal confirm_field THEN CALL JOptionPane Warning_Message; ELSE THEN INSTANTIATE embedding class; PASS cover_image, input_file, save_directory, password_field TO Embedding object; END IF.
3.4.2
Perancangan Spesifikasi Proses Tab Decode IF stego_ image NOT Choosen THEN CALL JOptionPane Warning_Message; RETURN; ELSE THEN SHOW stego_image; END IF. IF output_directory NOT Choosen THEN CALL JOptionPane Warning_Message; RETURN;
41 ELSE THEN INSTANTIATE decoding class; PASS stego_image, output_directory, password_field TO Decoding object; END IF.
3.4.3
Perancangan Spesifikasi encoding Class WRITE input_file AS header; CONVERT header TO binary; XOR header WITH password_field; GET cover_image length; GET cover_image height; SAVE cover_image_bit AS bit_array; WHILE NOT end_of_file DO READ header; GENERATE pseudo_random_number; CALCULATE DCT_Coefficient OF pseudo_random_number; IF DCT_Coefficient ≠ 0 AND DCT_Coefficient ≠1 THEN GET next_bit FROM header; GET DCT_LSB; REPLACE DCT_LSB WITH next_bit SAVE bit_position; END IF.
42 END WHILE. SAVE bit_position TO image_header; WHILE I NOT EQUAL image_length DO WHILE J NOT EQUAL image_height DO REARRANGE bit_array AS cover_image; END WHILE. END WHILE.
3.4.4
Perancangan Spesifikasi decoding Class READ stego_image; WHILE NOT end_of_image DO READ bit_position FROM header; GET data_bit FROM bit_position; END WHILE. XOR password_field WITH data_bit; REARRANGE data_bit AS output_file;