3 BAB III PERANCANGAN DAN IMPLEMENTASI PERANGKAT LUNAK
Pada bab ini akan dibahas mengenai pembuatan dan pengembangan perangkat lunak ECC Web Application dan ECC Desktop Application. Pembahasan akan dimulai dari proses perancangan sistem baik pada ECC Web Appication maupun ECC Desktop Application. 3.1 Analisis 3.1.1 Deskripsi Umum Perangkat Lunak Aplikasi yang dibangun dalam tugas akhir ini adalah sebuah ECC Web Application yaitu sebuah aplikasi berbasis web yang berfungi untuk proses kirimdan terima file dokumen office. Dalam proses pengiriman dokumen terlebih dahulu dilakukan proses enkripsi simetris menggunakan algoritma rijndael dimana enkripsi ini memerlukan sebuah kunci untuk melakukan proses enkripsi dan dekripsi. Untuk kemanan kunci yang digunakan untuk enkripsi tersebut dalam pendistribusiannya di enkripsi dengan enkripsi asimetris menggunakan Elliptic Curve Cryptography (ECC) . Selain itu dibangun juga ECC Desktop Application yaitu sebuah aplikasi yang digunakan untuk proses dekripsi file dan juga untuk melindungi file office hasil dekripsi dengan XML Web Service. Proteksi ini digunakan untuk melindungi dokumen office yaitu dengan mewajibkan user untuk memasukkan user dan password yang sama dengan yang digunakan dalam aplikasi web, sehingga meski sudah di enkripsi dokumen tersebut tidak bisa dibuka oleh sembarangan orang.
31
32
3.1.2 Rancangan Aplikasi Secara Umum Aplikasi ini dibangun untuk membantu dalam mengamankan pertukaran dokumen dari para attackers dan dapat penggunaan dokumen oleh pengguna. Sehingga faktor keamanan dalam pertukaran data dan tingkat validitas data lebih terjamin. Sistem secara global menggambarkan seorang user yang melakukan proses saling mengirim pesan atau dokumen kepada user lain serta penggunaan dokumen yang mengharuskan user untuk melakukan koneksi ke intranet.
Gambar 3.1 Proses Global
Gambar 3.2 Blok Diagram Enkripsi ECC
Gambaran lebih detail mengenai Gambar 3.1 dapat dijelaskan sebagai berikut : a. Dokumen yang dikirim (upload) akan mengalami proses enkripsi file dokumen terlebih dahulu. File tersebut kemudian
33
disimpan dalam web server dengan format REF Proses enkripsi yang dilakukan pada saat pengiriman menggunakan algoritma Rijndael. Kunci untuk enkripsi dokumen disimpan dalam database. Sebelum disimpan kunci tersebut dienkripsi terlebih dahulu dengan algoritma ECC menggunakan kunci publik milik penerima dokumen dan algoritma enkripsi yang digunakan adalah ECC . b. User dapat mangambil (download) dokumen yang dikirim oleh user lain pada web site. Dokumen yang di-download berupa dokumen yang terenkripsi dengan format . REF. c. Kunci privat digunakan untuk mendekripsi file dokumen pada saat user ingin menggunakan dokumen yang diterimanya menggunakan aplikasi desktop. Proses dekripsi dokumen akan mengubah format dokumen menjadi bentuk semula (xls untuk Microsoft Excel dan doc untuk Microsoft Word) dan dokumen tersebut akan diproteksi oleh aplikasi dekstop. d. Untuk membuka isi dokumen, pengguna diharuskan untuk menginputkan username, password. Kemudian proses validasi akan dilakukan dengan XML Web Service. Apabila username dan password tersebuat valid dokumen akan terbuka dan dapat digunakan. Pada Gambar 3.2 adalah ilustrasi proses enkripsi dalam algoritma ECC dimana sebelum melakukan proses enkripsi maka perlu dilakukan proses generate kunci publik dan kunci privat. Kunci publik didistribusikan untuk proses enkripsi data sedangkan kunci privat disimpan secara rahasia untuk proses dekripsi data.
34
Sistem secara keseluruhan dapat dibagi lagi menjadi empat buah blok diagram, antara lain Blok Diagram pada Web Admin, Blok Diagram pada Web Client, Blok Diagram pada Aplikasi Dekstop dan Blok Diagram pada Aplikasi Dokumen.
3.2 Perancangan 3.2.1 Perancangan Web Admin Pada blok diagram web admin terdapat empat buah proses, dapat dilihat Gambar 3.3, yaitu login, maintain anggota, maintain jabatan dan kunci dan maintain admin. Sistem akan melakukan generate dua buah kunci yaitu kunci publik dan kunci privat untuk setiap jabatan pada proses maintain jabatan dan kunci.
Gambar 3.3 Blok Diagram Web Admin
35
3.2.2 Perancangan Web Client Kirim dokumen Dokumen
Enkripsi Rijndael
Cipher
Kunci enkripsi Rijndael
Ambil dokumen
Login
Enkripsi ECC
Kunci Rijndael terenkripsi
Web Server
Dokumen
Username + Password Status
Gambar 3.4 Blok Diagram Web Client
Pada Gambar 3.4, terdapat proses Kirim Dokumen, Ambil Dokumen dan Login. Pada proses kirim dokumen, dokumen akan mengalami proses dekripsi ECC terlebih dahulu. Dalam hal ini, kunci publik milik penerima dokumen digunakan untuk proses enkripsi ECC . Kunci tersebut diperoleh user berdasarkan pada jabatan yang dimiliki. Kunci yang diperoleh seorang user bisa sama dengan user yang lain karena proses generate kunci dilakukan berdasarkan tiap jabatan, bukan tiap user. Pada Proses Ambil Dokumen, user dapat men-download dokumen dengan keadaan dokumen masih terenkripsi dengan format .REF.
36
3.2.3 Perancangan Aplikasi Desktop Dokumen yang telah di-download, dapat digunakan setelah didekripsi terlebih dahulu menggunakan aplikasi dekstop. User diharuskan untuk login terlebih dahulu agar dapat menggunakan aplikasi dekstop (lihat Gambar 3.5). Kemudian pilih dokumen masih terenkripsi. Isi dokumen dapat dilihat pada aplikasi dekstop setelah dokumen didekripsi terlebih dahulu. User dapat menyimpan dokumen hasil dekripsi setelah dokumen tersebut diproteksi terlebih dahulu. Aplikasi hanya dapat memproteksi dua macam dokumen Office, yaitu format .xls (Microsoft Office Excel) dan .doc (Microsoft Office Word).
Gambar 3.5 Blok Diagram pada Aplikasi Dekstop
37
3.2.4 Perancangan Aplikasi Dokumen
Gambar 3.6 Blok Diagram pada Aplikasi Dokumen
Ketika user ingin menggunakan dokumen tersebut, maka komputer yang digunakan harus terhubung dengan jaringan local (intranet) untuk melakukan koneksi dengan web service. User harus menginputkan username dan password miliknya. Setelah itu, aplikasi akan terkoneksi dengan web service untuk melakukan proses validasi username dan password (lihat Gambar 3.6).
3.2.5 Diagram Alir 3.2.5.1
Diagram Alir Proses Enkripsi Dokumen
Proses enkripsi dokumen (lihat Gambar 3.7) pada sistem dilakukan pada saat user mengirimkan dokumen ke user lain, yaitu pada saat proses upload dokumen Proses enkripsi dimulai dengan user menginputkan dokumen, yang dilanjutkan dengan sistem membuat kunci yang diperlukan untuk proses enkripsi Rijndael.Kemudian dilanjutkan proses open and create dokumen, setelah itu proses enkripsi dilakukan dengan kunci yang telah
38
dibuat oleh sistem. File yang telah terenkripsi kemudian diberi ekstension .REF dan disimpan ke dalam web server. Data-data pengirim sekaligus penerima juga akan disimpan kedalam database. Kunci yang telah dibuat untuk proses enkripsi Rijndael kemudian dienkripsi dengan ECC menggunakan kunci publik dari penerima dokumen. Kunci yang telah terenkripsi tersebut kemudian disimpan didatabase.
Gambar 3.7 Diagram Alir Proses Enkripsi Dokumen
3.2.5.2
Diagram Alir Proses Dekripsi Dokumen
Proses dekripsi dokumen (lihat Gambar 3.8) pada sistem dilakukan dengan aplikasi dekstop yang telah. Proses dekripsi dimulai dengan user memilih dokumen yang digunakan, yang dilanjutkan dengan mengambil kunci privat dan kunci enkripsi dokumen yang telah terenkripsi dengan ECC sesuai dengan milik user penerima dokumen. Kemudian proses dekripsi kunci enkripsi rijnadael dilakukan sesuai dengan kunci privat penerima dokumen. Dilanjutkan, inisialisasi class File Stream untuk proses
39
open and create dokumen, setelah itu proses dekripsi dokumen dengan algoritma Rijndael dengan kunci yang telah didekripsi sebelumnya. Setelah proses dekripsi selesai dilakukan, aplikasi akan menampilkan pada dokumen viewer sesuai format dokumen.
Gambar 3.8 Diagram Alir Proses Dekripsi Dokumen
3.2.5.3
Diagram Alir Buka Dokumen
Proses penggunaan dokumen diawali dengan user menginputkan username dan password (lihat Gambar 3.9). Kemudian koneksi dengan web service akan dilakukan untuk proses validasi username dan password. Apabila input yang diberikan valid maka dokumen akan terbuka. Sistem memberikan batasan lima kali kesalahan dalam menginputkan username dan password. Jika lebih dari lima kali, dokumen secara otomatis tertutup.
40
Gambar 3.9 Diagram Alir Buka Dokumen
3.2.6 Sistem Flow Sistem secara keseluruhan dapat digambarkan dengan 12 buah sistem flow. Antara lain sebagai berikut, Sistem Flow Login, Sistem Flow Ubah Profil Anggota, Sistem Flow Compose, Sistem Flow Inbox, Sistem Flow Outbox, Sistem Flow Maintain Jabatan, Sistem Flow Maintain Anggota, Sistem Flow Proteksi Dokumen dan Sistem Flow Buka Dokumen. Setiap sistem flow merupakan gambaran interaksi dari user dan web server yang didalamnya terdapat database yang digunakan oleh sistem.
41
3.2.6.1
Sistem Flow Login
Sistem Flow Login User
Web Server
Mulai
Jabatan
Ya
Admin
Tidak Ada Cookies ?
Input username + password
Password
Username
Validasi username
Tidak Valid ?
Ya
Enkripsi password dengan SHA
Validasi password
Ingatkan login ?
Password
Ya Valid ? Tidak
Tidak Ya
Anggota
Buat cokkies Buat session admin / anggota
Gambar 3.10 Sistem Flow Login
Selesai
42
Ketika user ingin login kedalam sistem (lihat Gambar 3.10), sistem akan mengecek apakah terdapat cookies login didalam komputer yang digunakan. Sistem akan mengecek username yang diinputkan, apakah milik anggota atau admin. Jika username tersebut milik anggota, dilakukan enkripsi password menggunakan SHA-1 yang kemudian akan dilanjutkan dengan pencocokan password dari database yang telah terenkripsi. Untuk admin, proses yang dilkukan sama dengan anggota.
3.2.6.2
Sistem Flow Ubah Profil Anggota
Sistem juga memberikan fasilitas bagi anggota untuk mengubah profil (lihat Gambar 3.11). Dimulai dari proses ambil data anggota kemudian dilanjutkan dengan ubah data anggota dan disimpan kembali kedalam database.
Gambar 3.11 Sistem Flow Ubah Profil Anggota
43
3.2.6.3
Sistem Flow Compose
User dapat mengirim dokumen pada saat proses compose (lihat Gambar 3.12). Dimulai dari input data dokumen yang kemudian akan dilanjutkan dengan proses enkripsi ECC dokumen menggunakan kunci publik milik pengirim dan penerima. Dokumen yang telah terenkripsi menggunakan kunci publik pengirim dan yang terenkripsi menggunakan kunci publik penerima akan disimpan kedalam kedalam web server. Dokumen tersebut mengacu pada inbox jika dokumen tersebut terenkripsi menggunakan kunci publik penerima dan outbox jika dokumen tersebut terenkripsi menggunakan kunci publik pengirim.
Gambar 3.12 Sistem Flow Compose
44
3.2.6.4
Sistem Flow Inbox
User yang ingin mengecek pesan atau dokumen yang diterimanya dapat melihat isi dari inbox miliknya (lihat Gambar 3.13). Pada inbox akan muncul daftar dokumen yang diterimanya dan dokumen tersebut dapat didownload. Dokumen yang didownload masih dalam keadaan terenkripsi.
Gambar 3.13 Sistem Flow Inbox
45
3.2.6.5
Sistem Flow Outbox
User juga dapat melihat pesan atau dokumen yang pernah dikirimkan ke user lain dengan melihat outbox miliknya. Prosesproses didalam outbox memiliki persamaan dengan proses-proses didalam inbox (lihat Gambar 3.14)
Gambar 3.14 Sistem Flow Outbox
46
3.2.6.6
Sistem Flow Maintain Jabatan
Kunci privat dan kunci publik untuk proses enkripsi dan dekripsi pada tiap jabatan diperoleh pada saat penambahan jabatan baru. Sistem akan melakukan proses generate kunci privat dan kunci publik. Jadi, tiap jabatan memeiliki kunci privat dan kunci publik yang. Kedua kunci tersebut disimpan dalam database. Untuk proses ubah data jabatan, kunci privat dan kunci publik tidak diijinkan untuk diubah. Hanya nama jabatan saja yang boleh diubah (lihat Gambar 3.15). Sistem Flow Maintain Jabatan Admin
Web Server
Mulai
Daftar jabatan
Ubah jabatan ?
Ya
Ambil data jabatan
Jabatan
Tidak
Tambah jabatan ? Tidak Ya Ubah jabatan Input data jabatan
Generate kunci publik + kunci privat ECC
Data jabatan
Data jabatan
Simpan
Kunci publik Selesai
Kunci privat
Gambar 3.15 Sistem Flow Maintain Jabatan
47
3.2.6.7
Sistem Flow Maintain Anggota
Gambar 3.16 Sistem Flow Maintain Anggota
48
Admin memiliki hak untuk mengubah dan menambah data anggota (lihat Gambar 3.16). Data anggota berupa password akan mengalami proses enkripsi menggunakan SHA-1 sebelum disimpan ke dalam database. Untuk data-data lainnya tidak mengalami proses enkripsi.
3.2.6.8
Sistem Flow Proteksi Dokumen 1
User dapat melakukan dekripsi ECC menggunakan dekstop. Setelah dokumen terdekripsi, aplikasi akan mengecek tipe dokumen, yaitu format .xls (Microsoft Office Excel) atau .doc (Microsoft Office Word). Untuk tipe .xls, aplikasi akan mengkonversi dokumen ke dalam bentuk XML Spreadsheet yang kemudian akan ditampilkan dalam Excel Viewer (lihat Gambar 3.17).
49
Gambar 3.17 Sistem Flow Proteksi Dokumen 1
50
3.2.6.9
Sistem Flow Proteksi Dokumen 2
Gambar 3.18 Sistem Flow Proteksi Dokumen 2
User dapat menyimpan hasil dekripsi setelah aplikasi mengkonversi kembali XML Spreadsheet ke dalam format .xls, kemudian isi dokumen akan di-copy ke dalam template Excel yang tersedia dan injeksi kode macro dilakukan ke dalam template tersebut. Dokumen disimpan dalam keadaan telah terproteksi. Untuk tipe .doc, aplikasi melakukan konversi ke dalam bentuk Rich Text Format kemudian ditampilkan dalam Word Viewer (lihat Gambar 3.18).
51
3.2.6.10 Sistem Flow Open Dokumen Untuk menggunakan dokumen yang telah didownload, user harus memasukkan username dan password (lihat Gambar 3.19). Kemudian, sistem akan melakukan koneksi web service untuk validasi username, password dan kode jabatan yang tercatat didalam dokumen. Dokumen dapat terbuka dan dapat digunakan apabila web service mengembalikan nilai balik berupa status valid.
Gambar 3.19 Sistem Flow Open Dokumen
52
3.2.7 Entity Relationship Diagram (ERD) Di dalam sistem terdapat beberapa tabel yang digunakan untuk membantu dalam pelaksanaan proses pertukaran dokumen, antara lain tabel Jabatan, Anggota, Inbox, Outbox, DokumenIn dan DokumenOut. Tabel Jabatan digunakan untuk menyimpan data jabatan dan kunci untuk proses enkripsi dan dekripsi ECC. Tabel Anggota untuk menyimpan data anggota terdaftar. Tabel Inbox, Outbox, DokumenIn dan DokumenOut untuk meyimpan data-data dokumen yang dikirim oleh user.
3.2.7.1
Conceptual Data Model
Pada Gambar 3.20 adalah rancangan konsep database yang dibutuhkan dalam sistem ECC Web Application. inbox
dokumenIn kd_dokumenIn
A10 <M> nama_dokumen VA50 besar_dokumen A10
Memiliki
Identifier_1
anggota
<M> kd_inbox A10 judul VA50 D tgl A10 status cpwd VA100
Memiliki
usr A10 <M> pwd VA100 nama_depan VA20 tgl_lahir D status A10
Memiliki_2
Identifier_1
Identifier_1
Memiliki
dokumenOut
outbox
kd_dokumenOut A10 <M> nama_dokumen VA50 besar_dokumen A10
kd_outbox A10 <M> judul VA50 tgl D status A10
Identifier_1
Memiliki
Identifier_1
Memiliki
jabatan Memiliki
kd_jabatan A3 <M> nama_jabatan VA50 kunci_publik LVA1000 kunci_privat LVA1000 Identifier_1
Gambar 3.20 Conceptual Data Model
53
3.2.7.2
Physical Data Model
dokumenIn kd_dokumenIn CHAR(10) nama_dokumen VARCHAR2(50) besar_dokumen CHAR(10)
FK_INBOX_MEMILIKI5_DOKUMENI
inbox kd_inbox kd_dokumenIn pengirim penerima judul tgl status cpwd
CHAR(10) CHAR(10) CHAR(10) CHAR(10) VARCHAR2(50) DATE CHAR(10) VARCHAR2(100)
anggota
FK_INBOX_ID_PENGIR_ANGGOTA
FK_INBOX_MEMILIKI3_ANGGOTA
usr pwd kd_jabatan nama_depan tgl_lahir status
CHAR(10) VARCHAR2(100) CHAR(3) VARCHAR2(20) DATE CHAR(10)
FK_ANGGOTA_MEMILIKI_JABATAN
FK_OUTBOX_MEMILIKI2_ANGGOTA
outbox FK_OUTBOX_MEMILIKI4_DOKUMENO
dokumenOut kd_dokumenOut CHAR(10) nama_dokumen VARCHAR2(50) besar_dokumen CHAR(10)
kd_outbox kd_dokumenOut pengirim penerima judul tgl status
CHAR(10) CHAR(10) CHAR(10) CHAR(3) VARCHAR2(50) DATE CHAR(10)
jabatan FK_OUTBOX_MEMILIKI1_JABATAN kd_jabatan nama_jabatan kunci_publik kunci_privat
CHAR(3) VARCHAR2(50) CLOB CLOB
Gambar 3.21 Physical Data Model
Demi memenuhi kebutuhan sistem, diciptakan tabel-tabel beserta kolom-kolomnya dalam Database sesuai dengan Model Data Fisik seperti Gambar 3.21 . 3.2.8 Struktur Tabel Tabel-tabel yang digunakan pada sistem adalah : 3.2.8.1
Tabel jabatan
Tabel jabatan digunakan untuk menyimpan data jabatan dan kunci publik dan kunci privat. Struktur tabelnya adalah sebagaimana terlihat pada Tabel 3.1 : Nama tabel
: jabatan
54
Fungsi
: menyimpan data jabatan dan kunci public / privat
Primary Key
: kd_jabatan
Foreign Key
:Tabel 3.1 Jabatan
Field Name
Type
Length
Constraint
Description
kd_jabatan
Text
3
PK
Kode jabatan
nama_jabatan
Text
50
-
Nama jabatan
kunci_publik
Memo
-
-
Kunci public
kunci_privat
Memo
-
-
Kunci privat
3.2.8.2
Tabel anggota
Tabel anggota digunakan untuk menyimpan data anggota. Struktur tabelnya adalah sebagaimana terlihat pada Tabel 3.2 : Nama tabel
: anggota
Fungsi
: menyimpan data anggota
Primary Key
: usr
Foreign Key
: kd_jabatan
55
Tabel 3.2 Anggota
Field Name
Type
Length
Constraint
Usr
Text
10
PK
Username
Pwd
Text
100
-
Password
nama_depan
Text
50
-
Nama depan
nama_belakang
Text
50
-
Nama belakang
kd_jabatan
Text
3
FK
Kode jabatan
Status
Text
10
-
Status anggota
3.2.8.3
Description
Tabel inbox
Tabel inbox digunakan untuk menyimpan data pesan yang diterima. Struktur tabelnya adalah sebagaimana terlihat pada Tabel 3.3 : Nama tabel
: inbox
Fungsi
: menyimpan data pesan diterima
Primary Key
: kd_inbox
Foreign Key
: usr, kd_dokumenIn
56
Tabel 3.3 Inbox
Field Name
Type
Length Constraint
Description
kd_inbox
Text
10
PK
Kode inbox
Usr
Text
10
FK
Username penerima
Pengirim
Text
10
-
Username pengirim
Judul
Text
50
-
Judul
Tgl
Text
10
-
Tanggal kirim
kd_dokumenIn
Text
10
FK
Kode dokumen
status
Text
10
-
Status dokumen
cpwd
Char
100
3.2.8.4
Passwd rjndael
Tabel outbox
Tabel outbox digunakan untuk menyimpan data pesan yang dikirim. Struktur tabelnya adalah sebagaimana terlihat pada Tabel 3.4 : Nama tabel
: outbox
Fungsi
: menyimpan data pesan dikirim
Primary Key
: kd_ outbox
Foreign Key
: usr, kd_dokumenOut
57
Tabel 3.4 Outbox
Field Name
Type
Length
Constraint
kd_ outbox
Text
10
PK
Kode outbox
Usr
Text
10
FK
Username pengirim
Penerima
Text
3
-
Kode jabatan penerima
Judul
Text
50
-
Judul
Tgl
Text
10
-
Tanggal kirim
kd_dokumenOut
Text
10
FK
Kode dokumen
Status
Text
10
-
Status dokumen
3.2.8.5
Description
Tabel dokumen_in
Tabel dokumen_in digunakan untuk menyimpan data dokumen yang diterima. Struktur tabelnya adalah sebagaimana terlihat pada Tabel 3.5: Nama tabel
: dokumen_in
Fungsi
: menyimpan data pesan diterima
Primary Key
: kd_ dokumen
Foreign Key
:-
58
Tabel 3.5 Dokumen_in
Field Name
Type
Length
Constraint
Description
kd_ dokumenIn
Text
10
PK
Kode dokumen
nama_dokumen
Text
50
-
Nama dokumen
Besar
Text
50
-
Ukuran dokumen
3.2.8.6
Tabel dokumen_out
Tabel dokumen_out digunakan untuk menyimpan data dokumen yang dikirim. Struktur tabelnya adalah sebagaimana terlihat pada Tabel 3.6 : Nama tabel
: dokumen_out
Fungsi
: menyimpan data pesan dikirim
Primary Key
: kd_ dokumen
Foreign Key
:Tabel 3.6 Dokumen_out
Field Name
Type
Length
Constraint
Description
kd_ dokumenOut
Text
10
PK
Kode dokumen
nama_dokumen
Text
50
-
Nama dokumen
Besar
Text
50
-
Ukuran dokumen
59
3.2.9 Site Map
Home
Index
Utama Anggota
Site Map
Login
Inbox
Anggota
Outbox
Compose
Ubah Profil
Utama Admin
Administrator
Maintain Anggota
Maintain Jabatan
Maintain Administrator
Gambar 3.22 Site Map Aplikasi Web
Gambaran umum site map aplikasi web yang dibangun dapat dilihat pada Gambar 3.22. User yang belum mendaftar hanya dapat mengakses halaman Site Map. Sedangkan jika sudah menjadi anggota, user dapat mengakses Inbox, Outbox, Compose dan Ubah Profil. Untuk admin, hanya Maintain Anggota, Maintain Jabatan dan Maintain Administrator yang dapat diakses.
60
3.2.10 Desain Interface Dalam sub bab ini akan dijelaskan tentang desain interface aplikasi ECC Web Application dan ECC Desktop Application. 3.2.10.1 Desain Interface Web Site Menjelaskan tentang desain interface aplikasi web yang terdiri dari : 3.2.10.1.1 Halaman Utama
Gambar 3.23 Halaman Utama
Pada halaman utama, terdapat empat buah menu utama yaitu Utama, Site Map dan Login (lihat Gambar 35). Juga terdapat keterangan bagi yang ingin melakukan registrasi dan informasi mengenai tata tertib yang harus dipatuhi.
61
3.2.10.1.2 Halaman Utama Anggota Untuk halaman utama anggota, menu utamanya adalah Utama, Inbox, Outbox, Compose, Address dan Logout (lihat Gambar 3.24). Pada bagian sebelah kiri terdapat informasi tentang profil anggota yang sedang login, sedangkan pada bagian sebelah kanan terdapat informasi tentang jumlah pesan dan dokumen terbaru yang diterima. Foto anggota yang sedang login terdapat pada bagian sebelah kanan, juga terdapat link untuk mengubah profil anggota pada bagian sebelah kiri.
Gambar 3.24 Halaman Utama Anggota
62
3.2.10.1.3 Halaman Inbox Halaman inbox berfungsi untuk menampilkan daftar pesan diterima (lihat Gambar 3.25). Pada bagian sebelah kanan terdapat datagrid daftar dokumen diterima dan profil anggota pada bagian sebelah kiri. Tombol hapus berfungsi untuk menghapus pesan diterima dari daftar.
ECC Web Application Utama
Inbox
Outbox
Compose
Logout
Selamat Datang, member
Profil Anggota
Inbox Hapus Pengirim
... Klik di sini untuk mengubah profil anda.
Judul
Tanggal
XXXX
Soal sertifikasi VB.Net
11 Des 2008
YYYY
Source code pesananku?
29 Nov 2008
ZZZZ
Soal sertifikasi DBA
27 Nov 2008
AAAA
Daftar nilai mahasiswa
19 Nov 2008
BBBB
Siapa yang naik gaji?
17 Nov 2008
123 Hapus Copyright © 2008 – Ordinary Ubay
Gambar 3.25 Halaman Inbox
63
3.2.10.1.4 Halaman Outbox Halaman outbox berfungsi untuk menampilkan daftar pesan yang pernah dikirim (lihat Gambar 3.26). Pada bagian sebelah kanan terdapat datagrid daftar pesan terkirim dan profil anggota pada bagian sebelah kiri. Tombol hapus berfungsi untuk menghapus pesan terkirim dari daftar.
Gambar 3.26 Halaman Outbox
64
3.2.10.1.5 Halaman Compose Halaman compose berfungsi bagi user yang ingin mengirimkan dokumen kepada user lain (lihat Gambar 3.27). Tombol Kirim berfungsi untuk mengirimkan pesan atau dokumen serta menyimpan data dokumen kedalam inbox penerima pesan dan outbox pengirim pesan. Tombol Batal berfungsi untuk membatalkan pengiriman pesan.
ECC Web Application Utama
Inbox
Outbox
Compose
Logout
Selamat Datang, member
Compose Kirim
Batal
Data Pesan : Penerima Subyek Browse
Dokumen
Kirim
Copyright © 2008 – Ordinary Ubay
Gambar 3.27 Halaman Compose
Batal
65
3.2.10.1.6 Halaman Maintain Anggota Halaman maintain anggota berfungsi untuk mengubah dan menambah data anggota. Tombol Non Aktif digunakan untuk mengubah status anggota dari aktif menjadi non aktif. Tombol Tambah digunakan untuk menambah anggota baru. Bagian sebelah kanan terdapat daftar user, sedangkan sebelah kiri terdapat profil admin (lihat Gambar 3.28).
Gambar 3.28 Halaman Maintain Anggota
66
3.2.10.1.7 Halaman Maintain Jabatan Halaman maintain jabatan berfungsi untuk mengubah dan menambah data jabatan. Tombol Tambah digunakan untuk menambah data jabatan. Proses generate kunci publik dan kunci privat dilakukan saat menambah data jabatan. Pada bagian sebelah kanan terdapat daftar jabatan, sedangkan sebelah kiri terdapat profil admin (lihat Gambar 3.29).
Gambar 3.29 Halaman Maintain Jabatan
67
3.2.10.1.8 Halaman Form Jabatan Halaman form jabatan berfungsi untuk mengubah atau menambah data jabatan. Proses generate kunci publik dan kunci privat dilakukan ketika tombol Generate ditekan. Tombol Simpan digunakan untuk menyimpan data jabatan yang telah diubah atau ditambah. Tombol Batal untuk membatalkan proses ubah atau tambah data jabatan (lihat Gambar 3.30). ECC Web Application Utama
Main. Anggota
Logout
Main. Jabatan FORM JABATAN
Data Jabatan : Kode Jabatan Nama Jabatan Generate
Kunci Kunci Publik
Kunci Privat
Simpan
Batal
Copyright © 2008 – Ordinary Ubay
Gambar 3.30 Halaman Form Jabatan
3.2.10.2 Desain Interface Aplikasi Dekstop Desain antar muka pada Gambar 3.31 akan muncul setelah user dapat melakukan login pada aplikasi dekstop. Pada bagian sebelah kanan terdapat profil anggota yang melakukan login. Terdapat tombol Browse pada bagian sebelah kiri yang berfungsi untuk memilih dokumen dan tombol Dekripsi File untuk
68
mendekripsi dokumen dan ditampilkan pada Document Viewer. Tombol Save As berfungsi untuk memproteksi dan menyimpan dokumen.
Gambar 3.31 Aplikasi Dekstop
3.3 Implementasi Pada sub bab ini akan dibahas mengenai pembuatan perangkat lunak. Pembahasan akan dimulai dari lingkungan pembangunan perangkat lunak, implementasi kode dari tiap-tiap proses pada aplikasi sampai ke implementasi perancangan antar muka aplikasi. 3.3.1 Lingkungan Pembangunan Perangkat Lunak Aplikasi dikembangkan dalam lingkungan pemrograman dengan spesifikasi berikut ini:
69
1. COMPAQ PRESARIO V 3908 spesifikasi Processor Intel PentiumCore 2 Duo 2,0 GHz dan 2038 Gbyte RAM. 2. Microsoft Windows XP Service Pack 2 sebagai sistem operasi 3. Microsft Office 2003 aplikasi penyimpan dokumen Word dan Excel. 4. Microsoft Visual Studio (.NET) 2003 untuk pembangunan Aplikasi. 5. Power Designer 12 sebagai perkakas untuk permodelan 6. Oracle 10g sebagai DBMS 7. Internet Explorer sebagai antarmuka untuk pengujian aplikasi Web. 3.3.2 Pembangunan Perangkat Lunak 3.3.2.1
Pembangunan Aplikasi Web Application
Pada sub bab ini akan dijelaskan mengenai implementasi pembuatan aplikasi Web Application berdasarkan rancangannya yang telah dijelaskan pada sub bab sebelumnya.
3.3.2.1.1 Implementasi Proses Koneksi Database Pada saat aplikasi mulai dijalankan, aplikasi akan menampilkan Melakukan koneksi ke database (Gambar 3.32) . koneksi ini diperlukan untuk proses-proses selanjutnya.
70
Public Function baca(ByVal tabel As String, ByVal filter As String) As Boolean ocommand.Connection = okoneksi okoneksi.Open() ocommand.CommandText = "select * from " & tabel & " where " & filter oreader = ocommand.ExecuteReader baca = oreader.Read oreader.Close() okoneksi.Close() End Function Public Function baca1(ByVal query String ocommand.Connection = okoneksi okoneksi.Open() ocommand.CommandText = query str = ocommand.ExecuteScalar okoneksi.Close() Return str End Function
As
String)
Gambar 3.32 Listing koneksi Database
3.3.2.1.2 Implementasi Proses Login Setelah proses koneksi database berhasil makan akan tampil form login. User memasukan user name dan password , dan saat ditekan tombol login maka aplikasi akan memanggil method seperti pada Gambar 3.33:
As
71
Private Sub btnSubmit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSubmit.Click If dbclass.baca("admin", "usr='" & txtUsr.Text & "'") Then If dbclass.baca("admin", "pwd='" & txtPwd.Text & "'") Then Session("admin") = txtUsr.Text RegisterStartupScript("login", "<script>parent.mainFrame.location='utamaAdmin.aspx';parent.t opFrame.location='bannerAdmin.aspx'")Else RegisterStartupScript("LoginAlert", "<script>alert('Password salah !')")End If ElseIf dbclass.baca("anggota", "usr='" & txtUsr.Text & "' and status='Aktif'") Then 'baca password Dim pwd As String pwd = dbclass.baca1("select pwd from anggota where usr='" & txtUsr.Text & "'") If Convert.ToBase64String(hash.ComputeHash(enc.GetBytes(txtPwd.T ext))) = pwd Then If chkIngat.Checked Then Dim cookie As New HttpCookie("userpass") cookie.Value = txtUsr.Text & "&" & txtPwd.Text cookie.Expires = Date.Now.AddDays(3) Response.Cookies.Add(cookie) End If Session("anggota") = txtUsr.Text RegisterStartupScript("login", "<script>parent.mainFrame.location='utamaMember.aspx';parent. topFrame.location='bannerMember.aspx'") Else RegisterStartupScript("LoginAlert", "<script>alert('Password salah !')") End If Else RegisterStartupScript("LoginAlert", "<script>alert('Username salah !')") End If End Sub
Gambar 3.33 Listing login user
72
3.3.2.1.3 Implementasi Proses Ubah Profile Anggota Saat Administrator berhasil melakukan proses login maka dapat dilakukan proses merubah profile anggota. Dengan peoses sebagai seperti pada Gambar 3.34 berikut : Private Sub btnUbah_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnUbah.Click If uploadFile.Value <> "" Then System.IO.File.Delete(Server.MapPath(".\images\anggota\") & lblUsr.Text & ".jpg") uploadFile.PostedFile.SaveAs(Server.MapPath(".\images\ang gota\") & txtUsr.Text & ".jpg") End If If Request.QueryString("usr") <> "" Then dbclass.InUp("update anggota set nama_depan='" & txtNmDpn.Text & "', nama_belakang='" & txtNmBlk.Text & "', kd_jabatan='" & ddlJabatan.SelectedValue & "', pwd='" & Convert.ToBase64String(hash.ComputeHash(enc.GetBytes(txtP wd.Text))) & "' where usr='" & lblUsr.Text & "'") Else dbclass.InUp("insert into anggota values ('" & txtUsr.Text & "','" & Convert.ToBase64String(hash.ComputeHash(enc.GetBytes(txtP wd.Text))) & "','" & ddlJabatan.SelectedValue & "','" & txtNmDpn.Text & "','" & txtNmBlk.Text & "','Aktif')") End If End Sub
Gambar 3.34 Listing update profil anggota
73
3.3.2.1.4 Implementasi Proses Compose Untuk user biasa ,dapat melakukan proses compose , yaitu proses untuk melakukan pengiriman file ke user lain , user memilih user yang akan dikirimi file dari data user yang ada dengan mengklik combo button, kemusian memasukkan subjek pesan dan emasukkan file yang akan dikirim. Saat proses pengiriman maka file akan di enkripsi dengan metode rijndael dengan proses sebagai berikut (Gambar 3.35): Sub upload(ByVal kd As String, ByVal kunci As String, ByVal status As String) rcrypt = New rijndaelCrypt If status = "in" Then rcrypt.EncryptOrDecryptFile(uploadFile.Value, Server.MapPath(".\dokumen\in\") & kd & ".ref", rijndaelCrypt.CryptoAction.ActionEncrypt, "'" & kdinbox & kddocin & "'") 'injeksi kode jabatan dan tipe doc Dim binwriter As New BinaryWriter(File.Open(Server.MapPath(".\dokumen\in \") & kd & ".ref", FileMode.OpenOrCreate)) binwriter.Seek(0, SeekOrigin.End) binwriter.Write(ddlJabatan.SelectedValue Path.GetExtension(uploadFile.Value)) binwriter.Flush() binwriter.Close()
Gambar 3.35 Listing Enkripsi File dengan Rijndael
&
";"
&
74
Kemudian akan melakukan proses insert kedalam database, insert ke tabel dokumenOut (Gambar 3.36): 'insert docOut kddocout = kodeBaruDocOut() dbclass.InUp("insert into dokumenOut values ('" & kddocout & "','" & Right(uploadFile.Value, Len(uploadFile.Value) - InStrRev(uploadFile.Value, "\")) & "','" & source_file.Length.ToString & "')") Gambar 3.36 Listing insert ke tabel dokumenOut
Gambar 3.37 adalah script untuk Insert ke tabel outbox, memasukkan data file yang terkirim ke tabel outbox: 'insert outbox kdoutbox = kodeBaruOutbox() kpub = dbclass.baca1("select j.kunci_publik from anggota a, jabatan j where a.usr='" & Session("anggota") & "' and a.kd_jabatan=j.kd_jabatan") dbclass.InUp("insert into outbox values ('" & kdoutbox & "','" & kddocout & "','" & Session("anggota") & "','" & ddlJabatan.SelectedValue & "','" & txtJudul.Text & "', SYSDATE, 'upload')") upload(kddocout, kpub, "out") Gambar 3.37 Listing insert ke tabel Outbox
Insert ke tabel dokumenIn, memasukkan data file yang terkirim ke tabel dokumenIn (Gambar 3.38) :
75
'insert docIn kddocin = kodeBaruDocIn()
('"
&
dbclass.InUp("insert into dokumenIn values kddocin & "','" & Right(uploadFile.Value, Gambar 3.38 Listing insert ke tabel dokumenIn
Insert ke tabel inbox, dalam tebel ini dimasukkan juga kunci enkripsi file yang dikirim sebelumnya kunci tersebut dienkripsi dengan ECC (Gambar 3.39): 'insert inbox kpub = dbclass.baca1("select kunci_publik from jabatan where kd_jabatan='" & ddlJabatan.SelectedValue & "'") dtabel = dbclass.baca("select usr from anggota where kd_jabatan='" & ddlJabatan.SelectedValue & "'") For i As Integer = 0 To dtabel.Rows.Count 1 kdinbox = kodeBaruInbox() Dim gmEncr As New ElGamal gmEncr.StringKunci = kpub gmEncr.StringPesan = kdinbox & kddocin gmEncr.Encrypt2() Dim pesanHasilEncrypt As String = gmEncr.PesanTerenkrip dbclass.InUp("insert into inbox values ('" & kdinbox & "','" & kddocin & "','" & Session("anggota") & "','" & dtabel.Rows(i).Item(0) & "','" & GetFileFromDir(txtJudul.Text) & "',SYSDATE,'upload','" & pesanHasilEncrypt & "')") Gambar 3.39 Listing insert ke tabel Inbox
76
3.3.2.1.5 Implementasi Proses Inbox Sub bindGrid(ByVal qString As String, ByVal sortCol As String, ByVal ascDesc As String) 'bind datagrid If qString = "hapusinbox" Then filter = "and i.status<>'hapusinbox'" ElseIf qString = "baru" Then filter = "and i.status='upload'" ElseIf qString = "terbaca" Then filter = "and i.status='download'" End If dtabel.Reset() dtabel = dbclass.baca("select i.kd_inbox, i.pengirim, i.judul, i.tgl, i.status from inbox i, anggota a where i.penerima='" & Session("anggota") & "' " & filter & " and i.penerima=a.usr order by " & sortCol & " " & ascDesc) gridInbox.DataSource = dtabel gridInbox.DataBind() 'keterangan awal = 0 akhir = 0 If gridInbox.CurrentPageIndex = 0 Then awal = 1 ElseIf gridInbox.CurrentPageIndex > 0 Then awal = (gridInbox.CurrentPageIndex * 10) + 1 End If If dtabel.Rows.Count < ((gridInbox.CurrentPageIndex + 1) * 10) Then akhir = dtabel.Rows.Count End Sub Gambar 3.40 Listing mengambil data Inbox
77
Proses ini (Gambar 3.40)digunakan untuk melihat filefile yang diterima. Proses ini mengambil data dari tabel Inbox dari dengan filter penerima = id user yang login. 3.3.2.1.6 Implementasi Proses Outbox Proses menampilkan file-file yang dikirim oleh user kepada user lain. Proses ini mengambil data dari tabel outbox (Gambar 3.41) Sub bindGrid(ByVal qString As String, ByVal sortCol As String, ByVal ascDesc As String) 'bind datagrid If qString = "hapusoutbox" Then filter = "and o.status<>'hapusoutbox'" ElseIf qString = "baru" Then filter = "and o.status='baru'" ElseIf qString = "terbaca" Then filter = "and o.status='terbaca'" End If dtabel.Reset() dtabel = dbclass.baca("select o.kd_outbox, j.nama_jabatan, o.judul, o.tgl, o.status from outbox o, jabatan j where o.pengirim='" & Session("anggota") & "' " & filter & " and o.penerima=j.kd_jabatan order by " & sortCol & " " & ascDesc) gridOutbox.DataSource = dtabel gridOutbox.DataBind() 'keterangan awal = 0 akhir = 0 If gridOutbox.CurrentPageIndex = 0 Then awal = 1
78
ElseIf gridOutbox.CurrentPageIndex > 0 Then awal = (gridOutbox.CurrentPageIndex * 10) + 1 End If If dtabel.Rows.Count < ((gridOutbox.CurrentPageIndex + 1) * 10) Then akhir = dtabel.Rows.Count Else akhir = (gridOutbox.CurrentPageIndex + 1) * 10 End If lblAwal.Text = awal lblAkhir.Text = akhir lblTotal.Text = dtabel.Rows.Count End Sub Gambar 3.41 Listing mengambil data Outbox
Sub hapus() Dim grid As DataGridItem Dim chkBox As CheckBox For Each grid In gridOutbox.Items chkBox = grid.FindControl("cek") If chkBox.Checked Then dbclass.InUp("update outbox set status='hapusoutbox' where pengirim='" & Session("anggota") & "' and kd_outbox='" & CType(grid.FindControl("lblKd"), Label).Text & "'") End If Next bindGrid(Request.QueryString("filter"), Request.QueryString("kolom"), Request.QueryString("by")) End Sub Gambar 3.42 Listing menghapus data Outbox
79
Hapus data outbox (Gambar3.42), untuk menghapus data pada tabel outbox. Proses ini melakukan proses hapus data pada tabel outbox, data yang dihapus adalah data yang diplih user. Selain itu dapat dilakukan proses untuk menandai data yang ada dengan status “terbaca”. Proses ini mengupdate data pada tabel outbox pada field status menjadi “terbaca” (Gambar 3.43). Sub terbaca() Dim grid As DataGridItem Dim chkBox As CheckBox For Each grid In gridOutbox.Items chkBox = grid.FindControl("cek") If chkBox.Checked Then dbclass.InUp("update outbox set status='terbaca' where pengirim='" & Session("anggota") & "' and kd_outbox='" & CType(grid.FindControl("lblKd"), Label).Text & "'") End If Next bindGrid(Request.QueryString("filter"), Request.QueryString("kolom"), Request.QueryString("by")) End Sub Gambar 3.43 Listing update Outbox (Terbaca)
3.3.2.1.7 Implementasi Proses Maintain Jabatan Proses ini hanya dapt dilakukan oleh adaministrator. Proses yang dapat dilakukan adalah menambah jabatan kedalam sistem. Data-data yang harus diisi adalah nama jabatan, kunci publik dan kunci privat. Kunci publik dan kunci privat dihasilkan dari proses generate dengan menekan tombol Generate. Tombol simpan berfungsi untuk menyimpan data-data jabatan dan tombol
80
Batal berfungsi untuk mengarahkan kembali ke halaman maintain jabatan. Berikut adalah potongan listing dari proses generate kunci (Lihat Gambar 3.44) :
Private Sub btnGen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnGen.Click Dim eccKey As New KeyGenECC Dim bitInput As Integer = 5 eccKey.DH(bitInput) txtPublik.Text = eccKey.PublicSB.ToString txtPrivat.Text = eccKey.PrivateSB.ToString End Sub Gambar 3.44 Listing proses generate kunci
Potongan listing di atas berada pada class KeygenECC untuk proses generate kunci. 3.3.2.2
Implementasi Antar Muka ECC Web Application
Berikut ini merupakan implementasi antar muka tiap-tiap proses pada ECC Web Application yang telah dibuat sesuai dengan perancangan yang telah dijelaskan pada sub bab 3.2.10.1 Desain Interface Web Site.
81
3.3.2.2.1 Halaman Utama
Gambar 3.45 Halaman Utama
Tampilan halaman utama dapat dilihat pada Gambar 3.45. Terdapat tiga menu utama yaitu Utama, Site Map dan Login.
3.3.2.2.2 Halaman Utama Anggota Halaman utama anggota (Gambar 3.46) memberikan informasi dokumen terbaru yang diterima dan profil user yang sedang aktif. User dapat mendownload Aplikasi Proteksi Dokumen melalui link yang terdapat pada halaman utama anggota. Terdapat lima menu utama yaitu Utama, Inbox, Outbox, Compose dan Log Out. Menu Inbox berfungsi untuk melihat daftar dokumen yang diterima sedangkan menu Outbox untuk melihat daftar dokumen yang pernah dikirim. Menu Compose berfungsi untuk mengirim dokumen ke user lain dan menu Log Out untuk keluar dari session login anggota.
82
Gambar 3.46 Halaman Utama Anggota
3.3.2.2.3 Halaman Inbox Anggota Halaman inbox memberikan informasi mengenai dokumendokumen yang diterima (lihat Gambar 3.47). Terdapat beberapa tombol dan link untuk pengaturan daftar dokumen yang diterima. Tombol Hapus berfungsi untuk menghapus dokumen dari daftar dokumen diterima dan tombol Terbaca berfungsi untuk mengubah status dokumen dari upload menjadi download. Beberapa link untuk filter daftar dokumen diterima yaitu link Semua untuk menampilkan semua daftar dokumen, link Belum Terbaca untuk menampilkan daftar dokumen yang belum terdownload dan link Terbaca untuk menampilkan daftar dokumen yang sudah terdownload. Terdapat link untuk melihat
83
detil dari dokumen yang diterima pada setiap dokumen. Fungsi sort dapat dilakukan dengan menekan link Pengirim untuk mengurutkan dokumen berdasarkan username pengirim dokumen dan link Tanggal untuk mengurutkan dokumen berdasarkan tanggal kirim dokumen.
Gambar 3.47 Halaman Inbox Anggota
3.3.2.2.4 Halaman Outbox Anggota Halaman outbox memberikan informasi mengenai dokumen-dokumen yang terkirim (lihat Gambar 3.48). Terdapat beberapa tombol dan link untuk pengaturan daftar dokumen yang terkirim. Tombol Hapus berfungsi untuk menghapus dokumen dari daftar dokumen terkirim dan tombol Terbaca berfungsi untuk mengubah status dokumen dari upload menjadi download. Beberapa link untuk filter daftar dokumen diterima yaitu link Semua untuk menampilkan semua daftar dokumen, link Belum Terbaca untuk menampilkan daftar dokumen yang belum terdownload dan link Terbaca untuk menampilkan daftar
84
dokumen yang sudah terdownload. Terdapat link untuk melihat detil dari dokumen yang terkirim pada setiap dokumen. Fungsi sort dapat dilakukan dengan menekan link Penerima untuk mengurutkan dokumen berdasarkan jabatan penerima dokumen dan link Tanggal untuk mengurutkan dokumen berdasarkan tanggal kirim dokumen.
Gambar 3.48 Halaman Outbox Anggota
3.3.2.2.5 Halaman Detil Outbox Anggota Informasi yang terdapat pada halaman detil outbox adalah penerima, subyek, tanggal kirim dan nama serta besar dokumen (lihat Gambar 3.49). Tombol Hapus berfungsi untuk menghapus dokumen dari daftar dokumen diterima. User dapat mendownload dokumen dengan menekan link Nama Dokumen. Dokumen yang terdownload berupa file yang telah terenkripsi dengan format .REF.
85
Gambar 3.49 Halaman Detil Outbox Anggota
3.3.2.2.6 Halaman Compose Anggota Melalui halaman compose (lihat Gambar 3.50), user dapat mengirimkan dokumen kepada user lain. Penerima dokumen ditentukan berdasarkan tiap jabatan, bukan tiap user. Setiap kali pengiriman dokumen hanya dibatasi satu dokumen. Tombol Batal berfungsi mengarahkan ke halaman utama anggota. Dan tombol Kirim untuk menambah data ke database dan upload dokumen ke web server.
86
Gambar 3.50 Halaman Compose Anggota
3.3.2.3
Aplikasi Desktop
Pada bagian ini dijelaskan tentang tampilan, fungsi serta cara penggunaan aplikasi dekstop. User yang diberikan hak untuk mengakses aplikasi desktop hanya anggota. 3.3.2.3.1 Form Login
Gambar 3.51 Form Login Aplikasi Desktop
User diharuskan untuk login terlebih dahulu untuk dapat menggunakan aplikasi dekstop. Data-data yang harus dimasukkan
87
pada aplikasi desktop adalah username dan password yang sama dengan yang digunakan pada aplikasi web (lihat Gambar 3.51). Pada saat user melakukan login, username dan password tersebut akan divalidasi menggunakan web service, jika valid maka proses ambil kunci privat dilakukan menggunakan web service. Berikut adalah potongan listing proses validasi username dan password pada aplikasi dekstop tersebut : --terpotong— param = service.LogApp(txtUsr.Text, txtPwd.Text) Sts1.Close() Sts1 = Nothing If param = "username" Then MessageBox.Show("Username Salah!!", "Info", MessageBoxButtons.OK, MessageBoxIcon.Error) btnLogin.Selected = False ElseIf param = "password" Then MessageBox.Show("Password Salah!!", "Info", MessageBoxButtons.OK, MessageBoxIcon.Error) btnLogin.Selected = False Else Dim Sts2 As New frmStatus Sts2.Show("Get Info with Web Service...") --terpotong-Gambar 3.52 Listing Validasi username dan password
88
Pada listing Gambar 3.52, validasi username dan password dengan web service memberikan nilai balik berupa nilai string. Jika nilai balik dari web service berupa string “valid” maka aplikasi akan mengambil kunci privat dari user yang sedang login menggunakan web service. Berikut adalah potongan listing dari validasi username dan password pada aplikasi desktop menggunakan web service (Gambar 3.53):
--terpotong-If dbclass.baca("anggota", "usr='" & user & "'") Then Dim pwd As String pwd = dbclass.baca1("select pwd from anggota where usr='" & user & "'") If Convert.ToBase64String(hash.ComputeHash(enc.GetByte s(pass))) = pwd Then Return "valid" Else Return "password" End If --terpotong--
Gambar 3.53 Listing respon validasi username dan password
89
3.3.2.3.2 Form Dekripsi dan Proteksi
Gambar 3.54 Form Dekripsi dan Proteksi
Gambar 3.54 adalah tampilan pada form utama pada aplikasi dekstop. User dapat melakukan dekripsi file yang telah didownload dari aplikasi web dan memproteksinya menggunakan aplikasi dekstop. Tombol Browse berfungsi untuk memilih file yang akan didekripsi dan menampilkan informasi mengenai file yang bersangkutan seperti lokasi file, tipe dokumen sebelum dienkripsi dan ukuran. Tipe dokumen pada file enkripsi tersebut didapat dari proses membaca header file sekaligus mendapatkan kode jabatan yang berhak untuk mengakses file tersebut. Berikut adalah potongan listing dari proses membaca header file enkripsi :
90
--terpotong-binreader.BaseStream.Seek(-8, SeekOrigin.End) binreader.Read(ARR, 0, ARR.Length - 1) header System.Text.ASCIIEncoding.ASCII.GetString(ARR) binreader.BaseStream.Seek(0, SeekOrigin.Begin) binreader.Read(MYX, 0, MYX.Length) binreader.Close() --terpotong-Gambar 3.55 Listing validasi jabatan
Validasi kode jabatan user yang aktif dengan kode jabatan hasil dari membaca header file enkripsi dilakukan untuk otentifikasi user yang berhak (Gambar 3.55). Proses dekripsi (Gambar 3.56) dilakukan menggunakan Rjndael mengunakan kunci yang sama untuk proses enkripsi dimana kunci tersebut telah dienkripsi dengan Algoritma ECC, kunci yang terenkripsi tersebut harus didekripsi dengan kunci privat user tesebut dan jika berhasil makas akan menampilkan isi dokumen berdasarkan tipe dokumen, Microsoft Excel dan Microsoft Word. Berikut adalah potongan listing dari proses dekripsi :
=
91
Sub dekripFile(ByVal tipe As String) Dim Sts As New frmStatus If tipe = ".xls" Then Sts.Show("Decrypt File Excel...") Else Sts.Show("Decrypt File Word...") End If 'dekrip file Dim rcrypt As New rijndaelCrypt Try rcrypt.EncryptOrDecryptFile(lblLocSrc.Text, global.appStart & "\temp\" & Path.GetFileNameWithoutExtension(lblLocSrc.Text) & tipe, rijndaelCrypt.CryptoAction.ActionDecrypt, global.cpwd) rcrypt = Nothing Catch ex As Exception 'MsgBox(ex.StackTrace) End Try Sts.Close() Sts = Nothing End Sub Gambar 3.56 Listing proses dekripsi file
Dokumen yang didapatkan dari proses dekripsi akan ditampilkan pada viewer yang telah disediakan berdasarkan tipe dokumen tersebut, Microsoft Excel atau Microsoft Word. Untuk dokumen Excel akan ditampilkan pada sebuah component AxSpreadsheet dan dokumen Word pada component RichTextBox. Berikut adalah potongan listing dari proses menampilkan dokumen pada component tersebut (Gambar 3.57) :
92
--terpotong-AxSpreadsheet.XMLURL = global.appStart "\temp\" Path.GetFileNameWithoutExtension(lblLocSrc.Text) ".xml" AxSpreadsheet.ViewOnlyMode = True AxSpreadsheet.DisplayTitleBar = True AxSpreadsheet.DisplayToolbar = False AxSpreadsheet.MaxWidth = 504 AxSpreadsheet.MaxHeight = 312 AxSpreadsheet.Visible = True RichTextBox.Visible = False --terpotong-Gambar 3.57 Listing proses menampilkan dokumen di AxSpreadsheet
Gambar 3.58 Form Excel Viewer
& & &
93
Gambar 3.59 Form Word Viewer
Pada Gambar 3.58 dan Gambar 3.59 dapat dilihat hasil dari proses dekripsi. Dokumen yang terlihat pada viewer dalam keadaan read only, tidak dapat diedit ataupun dicopy. Tombol Save As berfungsi untuk menyimpan dokumen dan memproteksi dokumen tersebut dengan cara menginjeksi kodekode macro ke dalam dokumen. Berikut adalah potongan listing untuk proteksi dokumen Excel dan Word (Gambar 3.60) :
94
--terpotong-With xlBook2.VBProject.VBComponents.Item("ThisWorkbook") .CodeModule LineNum = .CountOfLines + 2 .InsertLines(LineNum, code) .InsertLines(.CountOfLines 5, "frmLogin.lblJabatan.Caption=" & """" & global.kd_jabatan & """") End With xlSheet1.Application.Visible = False xlSheet2.Application.Visible = False xlBook1.Close(xlBook1.Saved = False) xlBook2.SaveAs(SaveFileDialog1.FileName) xlBook2.Close(xlBook2.Saved = True) --terpotong-Gambar 3.60 Listing proteksi dokumen dengan kode macro
Pada saat proteksi dokumen Excel, dilakukan injeksi kode-kode macro yang berasal dari file teks tersendiri dengan nama Excel.txt (Gambar 3.61). File Excel.txt dibaca isinya oleh aplikasi desktop dan diinjeksikan ke dalam dokumen. Berikut adalah potongan listing dari kode macro yang berada pada file Excel.txt : --terpotong-Application.VBE.MainWindow.Visible = False VBEHwnd = FindWindow("wndclass_desked_gsk", _ Application.VBE.MainWindow.Caption) If VBEHwnd Then LockWindowUpdate(VBEHwnd) End If frmLogin.Show() --terpotong-Gambar 3.61 listing kode macro untuk file Excel
95
Untuk dokumen Word, terdapat persamaan kode macro yang diinjeksikan dengan dokumen Excel. Kode-kode macro untuk dokumen word disimpan pada file Word.txt. Kode-kode macro tersebut bertujuan untuk memaksa user memasukkan username dan password terlebih dahulu pada saat dokumen dibuka. jika username dan password tersebut cocok dengan database maka dokumen dapat dibuka.
3.3.2.4
Aplikasi Dokumen
Pada bagian ini dijelaskan tentang tampilan, fungsi serta cara penggunaan dokumen. User yang diberikan hak untuk mengakses dokumen hanya anggota. 3.3.2.4.1 Dokumen Microsoft Excel
Form login muncul akibat injeksi kode macro
Gambar 3.62 Dokumen Excel Saat Digunakan
Pada saat dokumen Excel akan digunakan, muncul sebuah form login dimana user harus memasukkan username dan password (lihat Gambar 3.62). Username dan password bersama
96
kode jabatan yang tertera didalam dokumen akan divalidasi menggunakan web service. Gambar 3.63 adalah potongan listing pada tombol Open pada form login saat dokumen dibuka : --terpotong-param = logService.wsm_LogDoc(txtUsr.Text, txtPwd.Text, lblJabatan.Caption) If param = "username" Then lblSalah.Caption = CInt(lblSalah.Caption) + 1 response = MsgBox("Username Salah!!", 0, "Info") If CInt(lblSalah.Caption) = 5 Then response = MsgBox("Anda telah melakukan kesalahan 5 kali", 0, "Info") Application.ActiveWindow.Close End If --terpotong-Gambar 3.64 Listing validasi pada dokumen word dan excel
Listing pada Gambar 3.65 menggunakan web service untuk validasi username, password dan kode jabatan dengan nilai balik berupa string. Apabila nilai balik dari web service berupa string ”valid” maka dokumen dapat digunakan. Berikut adalah potongan listing untuk proses validasi pada web service :
97
--terpotong-If dbclass.baca("anggota", "usr='" & user & "'") Then Dim pwd As String dtabel = dbclass.baca("select a.pwd, j.kd_jabatan from anggota a, jabatan j where a.usr='" & user & "' and a.kd_jabatan=j.kd_jabatan") pwd = dtabel.Rows(0).Item(0) If Convert.ToBase64String(hash.ComputeHash(enc.GetByte s(pass))) = pwd Then If jab = CStr(dtabel.Rows(0).Item(1)) Then Return "valid" Else Return "jabatan" End If Else --terpotong-Gambar 3.66 Listing respon Validasi pada dokumen
3.3.2.4.2 Dokumen Microsoft Word Pada saat dokumen Word akan digunakan, muncul sebuah form login dimana user harus memasukkan username dan password (lihat Gambar 3.65). Username dan password bersama kode jabatan yang tertera didalam dokumen akan divalidasi menggunakan web service. Validasi username, password dan kode jabatan dengan web service mengembalikan nilai balik berupa string. Apabila nilai balik dari web service berupa string ”valid” maka dokumen dapat digunakan. Potongan listing untuk proses validasi pada web service sama dengan milik dokumen Excel.
98
Form login muncul akibat injeksi kode macro
Gambar 3.67 Dokumen Word Saat Digunakan