i
TUGAS AKHIR – KI141502
IMPLEMENTASI
METODE
ENKRIPSI
MENGGUNAKAN
ALGORITMA
XXTEA
(
CORRECTED
BLOCK
TINY
ENCRYPTION
ALGORITHM
)
PADA
APLIKASI
SURAT
ELEKTRONIK BERBASIS WEB
KINASIH NUR AZIZAH NRP 5113100178
Dosen Pembimbing I
Henning Titi Ciptaningtyas, S.Kom., M.Kom.
Dosen Pembimbing II
Ir. Muchammad Husni, M.Kom.
Departemen Teknik Informatika Fakultas Teknologi Informasi
i TUGAS AKHIR – KI141502
IMPLEMENTASI
METODE
ENKRIPSI
MENGGUNAKAN
ALGORITMA
XXTEA
(
CORRECTED BLOCK TINY ENCRYPTION
ALGORITHM
)
PADA
APLIKASI
SURAT
ELEKTRONIK BERBASIS WEB
KINASIH NUR AZIZAH NRP 5113100178
Dosen Pembimbing I
Henning Titi Ciptaningtyas, S.Kom., M.Kom.
Dosen Pembimbing II
Ir. Muchammad Husni, M.Kom.
Departemen Teknik Informatika Fakultas Teknologi Informasi
ii
iii UNDERGRADUATE THESES – KI141502
IMPLEMENTATION OF ENCRYPTION METHOD
USING XXTEA ALGORITHM (CORRECTED
BLOCK TINY ENCRYPTION ALGORITHM) FOR
WEB BASED ELECTRONIC MAIL SYSTEM
KINASIH NUR AZIZAH NRP 5113100178
First Advisor
Henning Titi Ciptaningtyas, S.Kom., M.Kom.
Second Advisor
Ir. Muchammad Husni, M.Kom.
Department of Informatics
Faculty of Information Technology
iv
v
LEMBAR PENGESAHAN
IMPLEMENTASI METODE ENKRIPSI MENGGUNAKAN ALGORITMA XXTEA (CORRECTED BLOCK TINY ENCRYPTION ALGORITHM) PADA APLIKASI SURAT
ELEKTRONIK BERBASIS WEB
TUGAS AKHIR
Diajukan Untuk Memenuhi Salah Satu Syarat Memperoleh Gelar Sarjana Komputer
pada
Bidang Studi Arsitektur dan Jaringan Komputer Program Studi S-1 Departemen Teknik Informatika
Fakultas Teknologi Informasi Institut Teknologi Sepuluh Nopember
Oleh:
KINASIH NUR AZIZAH NRP: 5113100178
Disetujui oleh Pembimbing Tugas Akhir:
1. Henning Titi Ciptaningtyas, S.Kom., M.Kom. ... (NIP. 19840708 201012 2 004) (Pembimbing 1)
2. Ir. Muchammad Husni, M.Kom. ... (NIP. 19600221 198403 1 001) (Pembimbing 2)
vi
vii
IMPLEMENTASI METODE ENKRIPSI MENGGUNAKAN ALGORITMA XXTEA (CORRECTED BLOCK TINY ENCRYPTION ALGORITHM) PADA APLIKASI SURAT
ELEKTRONIK BERBASIS WEB
Nama Mahasiswa : KINASIH NUR AZIZAH
NRP : 5113100178
Jurusan : Teknik Informatika FTIF-ITS Dosen Pembimbing 1 : Henning Titi Ciptaningtyas, S.Kom.,
M.Kom.
Dosen Pembimbing 2 : Ir. Muchammad Husni, M.Kom.
Abstrak
Perkembangan pengiriman surat menyurat elektronik semakin berkembang pesat. Dalam surat menyurat dibutuhkan keamanan dalam proses pengirimannya. Salah satu metode untuk mengamankan proses pengiriman surat elektronik agar informasi dan data yang tercantum tidak disalahgunakan oleh pihak yang tidak berwenang adalah dengan proses enkripsi.
Metode yang akan digunakan pada Tugas Akhir ini adalah metode enkripsi menggunakan algoritma XXTEA (Corrected Block Tiny Encryption Algorithm). Enkripsi adalah nama yang diberikan untuk proses penerapan algoritma pada sebuah pesan, yang mana proses tersebut akan mengacak data di dalamnya sehingga sangat sulit dan memakan waktu apabila data hasil enkripsi tersebut disimpulkan tanpa mengetahui kode/sandi khusus. Algoritma XXTEA merupakan pengembangan dari algoritma TEA dan XTEA. Algoritma XXTEA beroperasi dalam ukuran blok kelipatan 32 bit dan panjang kunci 128 bit. Pengacakan pada blok XXTEA ini berdasarkan blok pada kanan dan kiri blok yang sedang diacak.
viii
telah dilakukan, dihasilkan bahwa komputer web server mampu menangani 1024 akses pengguna dengan request per second-nya mencapai 34 request.
ix
IMPLEMENTATION OF ENCRYPTION METHOD USING XXTEA ALGORITHM (CORRECTED BLOCK TINY
ENCRYPTION ALGORITHM) FOR WEB BASED ELECTRONIC MAIL SYSTEM
Student’s Name : KINASIH NUR AZIZAH
Student’s ID : 5113100178
Department : Teknik Informatika FTIF-ITS First Advisor : Henning Titi Ciptaningtyas, S.Kom.,
M.Kom.
Second Advisor : Ir. Muchammad Husni, M.Kom.
Abstract
The development of electronic mail is growing rapidly. In electornic mail, security is needed for delivery process. One method to secure the process of sending electronic mail so that the information and data listed are not misused by unauthorized parties is by the process of encryption.
The method that will be used in this Final Project is the encryption method using XXTEA algorithm (Corrected Block Tiny Encryption Algorithm). Encryption is a process of applying an algorithm to a message, which the process will scramble the data in it so it is very difficult and time consuming if the encrypted data is concluded without knowing the code / password. The XXTEA algorithm is the development of TEA and XTEA algorithms. The XXTEA algorithm operates in 32 bit block size and 128 bit key length. Randomization on XXTEA block is based on the block on the right and left of the block being randomized.
x
xi
KATA PENGANTAR
Alhamdulillahirabbil’alamin, segala puji bagi Allah SWT yang telah melimpahkan rahmat dan karunia-Nya sehingga penulis dapat menyelesaikan Tugas Akhir yang berjudul:
“Implementasi Metode Enkripsi Menggunakan Algoritma XXTEA (Corrected Block Tiny Encryption Algorithm) pada
Aplikasi Surat Elektronik Berbasis Web
”
Terselesaikannya Tugas Akhir ini tidak terlepas dari bantuan dan dukungan banyak pihak, Oleh karena itu melalui lembar ini penulis ingin mengucapkan terima kasih dan penghormatan kepada:
1. Allah SWT serta junjungan Nabi Muhammad SAW, karena limpahan rahmat dan karunia-Nya penulis dapat menyelesaikan Tugas Akhir dan juga perkuliahan di Teknik Informatika ITS.
2. Kedua orangtua penulis, Papa dan Mama penulis, Rofiq dan Setyawati yang tiada hentinya memberikan dukungan doa, moral, dan material kepada penulis sehingga penulis dapat menyelesaikan Tugas Akhir ini.
3. Kakak penulis, Religia Nur Aisyah dan keluarga tercinta yang telah memberikan dukungan dan semangatnya kepada penulis.
xii
5. Bapak Darlis Herumurti, S.Kom., M.Kom. selaku kepala jurusan Teknin Informatika ITS dan segenap dosen dan karyawan Teknik Informatika ITS yang telah memberikan ilmu dan pengalaman kepada penulis selama menjalani masa studi di Teknik Informatika ITS.
6. Rekan diskusi Yusuf Nugroho yang selalu memberikan bimbingan dan membantu ketika penulis menemukan kesusahan atau kesalahan dalam pengerjaan Tugas Akhir. 7. Rekan penulis dalam pengerjaan Tugas Akhir yaitu
Nindyasari Dewi Utari yang menjadi penyemangat dalam mengerjakan Tugas Akhir.
8. Sahabat penulis, Dhita, Lino, Adi, Apip, Saddam, Rifqi, Harry, Nanang, Ridho, Arvi, dan Dhea yang selalu ada dan saling memberi semangat selama pengerjaan Tugas Akhir. 9. Teman-teman Laboratorium AJK, Daniel, Fathoni, Mas Thiar, Syukron, Wicak, Uul, Asbun, Risma, Awan, Ambon, Vivi, Oing, Didin, Fuad, Bebet, Fatih yang senantiasa menghibur dan mendukung penulis dalam mengerjakan tugas akhir ini serta menemani penulis di laboratorium.
10. Serta semua pihak yang yang telah turut membantu penulis dalam menyelesaikan Tugas Akhir ini.
Penulis menyadari bahwa laporan Tugas Akhir ini masih memiliki banyak kekurangan. Oleh karena itu dengan segala kerendahan hati penulis mengharapkan kritik dan saran dari pembaca untuk perbaikan penulis kedapannya. Selain itu, penulis berharap laporan Tugas Akhir ini dapat berguna bagi pembaca secara umum.
xiii
DAFTAR ISI
LEMBAR PENGESAHAN ... v
Abstrak ... vii
Abstract ... ix
DAFTAR ISI ...xiii
DAFTAR GAMBAR ... xvii
DAFTAR TABEL ... xix
DAFTAR KODE SUMBER ... xxi
BAB I PENDAHULUAN ... xxi
1.1 Latar Belakang ... 1
1.2 Rumusan Masalah ... 2
1.3 Batasan Permasalahan ... 2
1.4 Tujuan ... 3
1.5 Manfaat... 3
1.6 Metodologi ... 3
1.6.1 Penyusunan Proposal Tugas Akhir ... 3
1.6.2 Studi Literatur ... 4
1.6.3 Implementasi Perangkat Lunak... 4
1.6.4 Pengujian dan Evaluasi ... 4
1.6.5 Penyusunan Buku ... 4
1.7 Sistematika Penulisan Laporan ... 5
BAB II TINJAUAN PUSTAKA ... 7
2.1 XXTEA ... 7
2.2 Web Service RESTful API ... 10
2.3 Node.js ... 11
2.4 Kerangka Kerja Express ... 12
2.5 MySQL ... 13
2.6 Pug.js ... 14
BAB III PERANCANGAN SISTEM ... 15
3.1 Kasus Penggunaan ... 15
3.2 Arsitektur Sistem ... 16
3.2.1 Desain Umum Sistem ... 16
3.2.2 Desain Backend... 25
xiv
BAB IV IMPLEMENTASI ... 29
4.1 Lingkungan Implementasi ... 29
4.2 Implementasi ... 30
4.2.1 Implementasi Node.js ... 30
4.2.2 Implementasi Basis Data ... 32
4.2.3 Implementasi Backend ... 34
4.2.5 Implementasi Algoritma XXTEA ... 50
BAB V UJI COBA DAN EVALUASI ... 53
5.1 Lingkungan Pengujian ... 53
5.2 Skenario Uji Coba ... 54
5.2.1 Uji Fungsionalitas ... 54
5.2.2 Uji Performa ... 54
5.2.2.1 Uji Performa Aplikasi ... 55
5.2.2.2 Uji Performa Algoritma ... 56
5.3 Hasil Uji Coba ... 56
5.3.1 Hasil Uji Fungsionalitas ... 57
5.3.2 Hasil Uji Performa ... 60
5.3.2.1 Hasil Uji Performa Aplikasi ... 60
5.3.2.2 Hasil Uji Performa Algoritma ... 67
5.3.3 Evaluasi ... 70
BAB VI KESIMPULAN DAN SARAN ... 71
6.1. Kesimpulan ... 71
6.2. Saran ... 71
DAFTAR PUSTAKA ... 73
xv
xvi
xvii
DAFTAR GAMBAR
Gambar 2.1 Proses Pengacakan pada Satu Iterasi ... 8
Gambar 2.2 Arsitektur RESTful ... 11
Gambar 2.3 Proses asynchronous Node.js [6] ... 12
Gambar 2.4 Contoh Window MySQL Workbench ... 14
Gambar 3.1 Diagram Kasus Penggunaan ... 15
Gambar 3.2 Diagram Alir Membuka Pesan ... 17
Gambar 3.3 Diagram Alir Membuat Pesan ... 18
Gambar 3.4 Desain Sistem Secara Umum ... 19
Gambar 3.5 Pengacakan Pertama ... 21
Gambar 3.6 Pengacakan Kedua ... 22
Gambar 3.7 Pengacakan Ketiga ... 23
Gambar 3.8 Pengacakan Keempat ... 24
Gambar 3.9 Proses Enkripsi Tahap Akhir ... 25
Gambar 3.10 Desain Arsitektur pada Backend ... 26
Gambar 3.11 Desain Arsitektur pada Frontend ... 27
Gambar 4.1 Pseudocode auth.js ... 37
Gambar 4.2 Pseudocode index.js ... 38
Gambar 4.3 Pseudocode enkrip.js ... 38
Gambar 4.4 Pseudocode modul.js ... 39
Gambar 4.5 Pseudocode Mengirim Pesan ... 40
Gambar 4.6 Pseudocode inbox.js ... 41
Gambar 4.7 Pseudocode Detail Pesan Masuk ... 42
Gambar 4.8 Pseudocode Membalas Pesan ... 43
Gambar 4.9 Pseudocode Mengunduh Lampiran ... 43
Gambar 4.10 Pseudocode outbox.js ... 44
Gambar 4.11 Pseudocode Detail Pesan Keluar ... 45
Gambar 4.12 Pengunduhan File pada Pesan Keluar ... 46
Gambar 4.13 Halaman Index ... 50
Gambar 4.14 Pseudocode Implementasi Algoritma XXTEA ... 51
Gambar 5.1 Pseudocode test.js ... 56
xviii
xix
DAFTAR TABEL
xx
xxi
DAFTAR KODE SUMBER
xxii
1
BAB I
PENDAHULUAN
1.1 Latar Belakang
Pada era globalisasi ini, aktivitas sehari-hari tidak dapat lepas dari teknologi yang semakin canggih. Dahulu, untuk melakukan komunikasi jarak jauh harus melalui surat-menyurat yang membutuhkan jasa pengiriman atau kurir untuk menempuh jarak dengan waktu yang tidak singkat. Sekarang, untuk melakukan komunikasi jarak jauh sangatlah mudah dengan hanya jangkauan jari dan dalam waktu yang sangat cepat menggunakan aplikasi chat atau menggunakan email atau yang biasa disebut surat elektronik.
Surat elektronik digunakan oleh berbagai kalangan untuk berbagai kepentingan. Salah satu contoh kalangan yang menggunakan surat elektronik adalah institusi pendidikan yaitu Institut Teknologi Sepuluh Nopember (ITS). ITS menggunakan surat elektronik untuk surat-menyurat sesama dosen dan karyawan. Sejauh ini, aplikasi E-Surat ITS belum memiliki keamanan pada proses pengirimannya.
Oleh karena itu, dibutuhkan suatu metode untuk mengamankan proses pengiriman surat elektronik tersebut agar informasi dan data yang tercantum tidak disalah gunakan oleh pihak yang tidak berwenang. Metode yang akan digunakan adalah metode enkripsi. Enkripsi adalah nama yang diberikan untuk proses penerapan algoritma pada sebuah pesan, yang mana proses tersebut akan mengacak data di dalamnya sehingga sangat sulit dan memakan waktu apabila data hasil enkripsi tersebut disimpulkan tanpa mengetahui kode/sandi khusus.
fast. Jadi, dengan implementasi algoritma XXTEA diharapkan proses pengiriman surat elektronik di ITS dapat diamankan.
1.2 Rumusan Masalah
Tugas Akhir ini mengangkat beberapa rumusan masalah sebagai berikut:
1. Bagaimana cara menerapkan metode enkripsi menggunakan algoritma XXTEA (Corrected Block Tiny Encryption Algorithm) pada aplikasi surat elektronik E-Surat?
2. Bagaimana hasil dari penerapan metode enkripsi yang menggunakan algoritma XXTEA (Corrected Block Tiny Encryption Algorithm) pada aplikasi surat elektronik E-Surat?
1.3 Batasan Permasalahan
Permasalahan yang dibahas pada Tugas Akhir ini memiliki batasan sebagai berikut:
1. Model arsitektur yang digunakan adalah client-server. 2. Bahasa pemrograman yang digunakan adalah Javascript
dengan Node.js sebagai kerangka kerjanya.
3. Kerangka kerja dari Node.js yang digunakan adalah Express.
4. Template engine untuk tampilan antarmuka yang digunakan adalah Pug.js.
5. Database yang digunakan adalah MySQL.
6. Aplikasi yang dibuat adalah aplikasi surat elektronik dengan layanan full serviceemail. Jadi alamat email yang digunakan tidak asli.
3
1.4 Tujuan
Tujuan dari Tugas Akhir ini adalah sebagai berikut:
1. Mengimplementasikan metode enkripsi menggunakan algoritma XXTEA (Corrected Block Tiny Encryption Algorithm) dalam mengamankan aplikasi surat elektronik. 2. Mengetahui performa algoritma XXTEA (Corrected Block
Tiny Encryption Algorithm) dalam aplikasi surat elektronik berbasis web.
3. Mengetahui performa dari aplikasi surat elektronik berbasis web.
1.5 Manfaat
Manfaat yang diperoleh dari pembuatan Tugas Akhir ini adalah pengiriman pesan pada aplikasi E-Surat menjadi aman berdasarkan hasil implementasi metode enkripsi algoritma XXTEA (Corrected Block Tiny Encryption Algorithm).
1.6 Metodologi
Pembuatan Tugas Akhir ini dilakukan dengan menggunakan metodologi sebagai berikut:
1.6.1 Penyusunan Proposal Tugas Akhir
pembuatan Tugas Akhir. Terdapat pula sub bab jadwal kegitan yang menjelaskan jadwal pengerjaan Tugas Akhir.
1.6.2 Studi Literatur
Tugas Akhir ini menggunakan literatur paper yang berasal dari jurnal internasional bereputasi yaitu IEEE untuk mencari informasi yang dapat dijadikan referensi dalam pengerjaan Tugas Akhir ini. Selain itu juga digunakan sejumlah referensi buku dan literatur lain yang berhubungan dengan metode enkripsi yang diusulkan pada Tugas Akhir ini termasuk tahap pembuatan aplikasi E-Surat itu sendiri.
1.6.3 Implementasi Perangkat Lunak
Implementasi merupakan tahap untuk membangun metode-metode yang sudah diajukan pada proposal Tugas Akhir. Untuk membangun algoritma yang telah dirancang sebelumnya, maka dilakukan implementasi dengan menggunakan suatu perangkat lunak.
1.6.4 Pengujian dan Evaluasi
Pada tahap ini dilakukan pengujian terhadap hasil implementasi dengan membandingkan performa dan keamanan metode enkripsi algoritma XXTEA dan metode enkripsi algortima RC4 sekaligus evaluasi dilakukan dengan melihat kesesuaian perencanaan.
1.6.5 Penyusunan Buku
5
1.7 Sistematika Penulisan Laporan
Sistematika penulisan laporan Tugas Akhir adalah sebagai berikut:
1. Bab I. Pendahuluan
Bab ini berisikan penjelasan mengenai latar belakang, rumusan masalah, batasan masalah, tujuan, manfaat, metodologi, dan sistematika penulisan dari pembuatan Tugas Akhir.
2. Bab II. Tinjauan Pustaka
Bab ini berisi kajian teori dari metode dan algoritma yang digunakan dalam penyusunan Tugas Akhir ini. Secara garis besar, bab ini berisi tentang enkripsi dengan menggunakan algoritma XXTEA.
3. Bab III. Perancangan Sistem
Bab ini berisi pembahasan mengenai perancangan dari aplikasi E-Surat menggunakan metode enkripsi algoritma XXTEA. 4. Bab IV. Implementasi
Bab ini menjelaskan implementasi yang berbentuk kode sumber dari rancangan aplikasi E-Surat menggunkn metode enkripsi algoritma XXTEA.
5. Bab V. Hasil Uji Coba dan Evaluasi
Bab ini berisikan hasil uji coba dari keamanan aplikasi E-Surat menggunakan algoritma XXTEA dan kemudian dibandingkan dengan algortima RC4.
6. Bab VI. Kesimpulan dan Saran
Bab ini merupakan bab yang menyampaikan kesimpulan dari hasil uji coba yang dilakukan, masalah-masalah yang dialami pada proses pengerjaan Tugas Akhir, dan saran untuk pengembangan solusi ke depannya.
7. Daftar Pustaka
Bab ini berisi daftar pustaka yang dijadikan literatur dalam Tugas Akhir.
8. Lampiran
7
BAB II
TINJAUAN PUSTAKA
Bab ini berisi pembahasan mengenai teori-teori dasar yang digunakan dalam Tugas Akhir. Teori-teori tersebut diantaranya adalah XXTEA dan beberapa teori lain yang mendukung pembuatan Tugas Akhir.
2.1 XXTEA
XXTEA atau Corrected Block Tiny Encryption Algorithm adalah algoritma enkripsi sederhana tapi kuat yang diciptakan oleh Roger M. Needham dan David J. Wheeler untuk menutupi kelemahan algoritma Block Tiny Encryption Algorithm (Block TEA). Sebelum Block TEA diciptakan, algoritma TEA dan XTEA telah lebih dahulu dikembangkan. Namun masing-masing algoritma tersebut memiliki kelemahan tersendiri sehingga dikembangkan secara bertahap hingga lahirlah algoritma XXTEA. Penyandian XXTEA berbasis pada iterasi Feistel dan menggunakan banyak ronde untuk mendapatkan keamanan. Sebuah perubahan dari plaintext akan mengubah sekitar setengah dari ciphertext tanpa meninggalkan jejak di mana perubahan berasal.
Keterangan simbol:
1. Xr : blok plaintext, dimana r adalah urutan blok yang sedang diacak.
2. Xr-1 : blok plaintext, dimana r-1 adalah urutan blok sebelum blok yang sedang diacak.
3. Xr+1 : blok plaintext, dimana r+1 adalah urutan blok setelah blok yang sedang diacak.
4. q : jumlah iterasi yang sedang dilakukan 5. DELTA : q dikalikan dengan konstanta yang
bernilai 0x9E3779B.
6. Kr : blok kata kunci ke-r dimana r sama dengan keterangan di atas.
7. << n : pergeseran bit ke kiri sebanyak n kali. 8. >> n : pergeseran bit ke kanan sebanyak n kali.
9. : operasi XOR.
10. : operasi penambahan.
9
Keterangan warna:
1. Kotak hijau : output program. 2. Kotak merah : inputuser.
Satu iterasi dalam XXTEA menampilkan proses pengacakan yang dilakukan pada satu iterasinya. Proses iterasi dalam XXTEA dilakukan dalam dua kali iterasi yang dilakukan secara bersarang. Pada iterasi teratas, iterasi dilakukan sebanyak q, dimana
q = 6 +52/n
dengan n≥ 1 dimana n adalah jumlah blok dari plaintext. Lalu pada iterasi selanjutnya, iterasi dilakukan sebanyak n kali.
Proses pengacakan yang dilakukan dalam satu iterasi XXTEA adalah sebagai berikut:
1. Algoritma akan mengacak blok ke-r dari plaintext. 2. Proses akan mengambil xr-1, xr+1, DELTA, dan kata kunci
sebagai input.
3. Pengacakan pertama yaitu xr-1 << 2 di-XOR-kan dengan xr+1 >> 5.
4. Pengacakan kedua yaitu xr-1 >> 3 di-XOR-kan dengan xr+1 << 4.
5. Hasil yang didapat dari tahap 3 dan 4 ditambahkan. 6. Pengacakan ketiga yaitu xr-1 di-XOR-kan dengan DELTA
yang merupakan perkalian antara konstanta DELTA yang bernilai 0x9E3779B dengan jumlah iterasi pertama yang telah dilakukan
7. Pengacakan keempat yaitu xr+1 di-XOR-kan dengan salah satu blok kata kunci ke-r yang sebelumnya telah di-XOR-kan dengan DELTA >> 2.
8. Hasil yang didapat dari tahap 6 dan 7 ditambahkan. 9. Hasil yang didapat dari tahap 5 dan 8 di-XOR-kan. 10. Hasil yang didapat pada tahap 9 ditambahkan ke blok
plaintext ke-r.
Tabel 2.1 Detail XXTEA No. Variabel Keterangan 1 Panjang kunci 128 bit
2 Ukuran blok Tidak tetap, bergantung pada plaintext
3 Struktur Jaringan Feistel
4 Ronde Tidak tetap, 6-32 ronde Feistel (sekitar 3-16 putaran) bergantung pada panjang blok
Pada penelitian ini, algoritma XXTEA digunakan sebagai metode enkripsi dan dekripsi untuk mengamankan pengiriman pesan pada aplikasi E-Surat. Algoritma XXTEA dipilih sebagai metode enkripsi yang diterapkan pada aplikasi ini karena XXTEA merupakan metode enkripsi blok cipher yang cepat dan cocok untuk mengenkripsi isi pesan yang panjang. Alasan lain dipilihnya XXTEA sebagai metode enkripsi adalah XXTEA merupakan algoritma terbaik karena merupakan pengembangan dari algoritma pendahulunya yaitu TEA dan XTEA.
2.2 Web Service RESTful API
Representational State Transfer atau biasa disebut REST adalah suatu arsitektur metode komunikasi yang sering diterapkan dalam pengembangan layanan berbasis web arsitektur. REST yang umumnya dijalankan via HTTP (Hypertext Transfer Protocol), melibatkan proses pembacaan laman web tertentu yang memuat sebuah file XML atau JSON. File inilah yang menguraikan dan memuat konten yang hendak disajikan. Setelah melalui sebuah proses definisi tertentu, user akan bisa mengakses antarmuka aplikasi yang dimaksudkan [2].
Arsitektur REST sesungguhnya berbasis pada 3 hal yang bersifat mendasar, yaitu [3]:
11
2. Antarmuka yang seragam, yaitu PUT, GET, POST, dan DELETE.
3. Interaksi pada aplikasi dilakukan melalui hyperlink.
Gambar 2.2 menunjukkan arsitektur RESTful pada sebuah aplikasi. Pada penelitian ini web service yang digunakan untuk membangun aplikasi E-Surat adalah RESTful API.
2.3 Node.js
Node.js adalah sebuah platform yang dibuat di atas Javascript Runtime-nya Chrome. Dengan kata lain, kodingan pada server akan dieksekusi dengan cara yang mirip dengan ketika di browser.
Untuk penulisan kodingan, teknik-teknik Javascript yang telah umum dapat diterapkan di node.js. Node.js memiliki beberapa kelebihan, antara lain cepat, event-driven, dan ringan. Namun keistimewaan yang paling utama dari menggunakan node.js adalah pemrograman asynchronous [4].
Asynchronous berarti non-blocking I/O. Ini berarti setiap operasi asynchronous harus segera mungkin mengembalikan nilai agar program tidak perlu menunggu proses baca tulis ke I/O. Proses
asynchronous dapat dilihat pada Gambar 2.3. Kebalikan dari
asynchronous, sebuah program yang menjalankan operasi
synchronous akan menunggu operasi itu selesai baru kemudian program dapat melanjutkan operasi lainnya.
Sedangkan istilah event-driven disini sama dengan event-based programming yaitu urutan atau flow program ditentukan oleh sebuah events. Events didefinisikan dengan perubahan pada sebuah kondisi objek. Perpindahan kursor dari window satu ke
page request
HTML page
web server browser
window lain, penekanan keyboard, sampai pada request halaman
website. Hal paling dasar sekaligus terpenting dari event-driven ini adalah event-handler atau callback. Callback adalah sebuah fungsi atau subroutine yang dijadikan sebagai argumen pada operasi-operasi asynchronous. Callback akan dipanggil sekali setelah operasi selesai dilakukan [5].
Gambar 2.3 Proses asynchronous Node.js [6]
Pada penelitian ini, Node.js digunakan sebagai kerangka kerja untuk membangun aplikasi E-Surat dengan bahasa pemrogramannya adalah Javascript.
2.4 Kerangka Kerja Express
13
Beberapa keunggulan yang dimiliki oleh Express antara lain: 1. Dukungan pembuatan middleware
2. Dukungan terhadap berbagai HTTP verb seperti POST, GET, PUT, DELETE, OPTION, HEAD, dan lainnya 3. Sudah terpasang template engine Jade
4. Manajemen file statik seperti CSS dan Javascript 5. Sangat bebas untuk dikostumisasi
2.5 MySQL
MySQL adalah sebuah perangkat lunak sistem manajemen basis data SQL (Database Management System) yang bersifat open source dan merupakan salah satu DBMS yang populer saat ini. Sistem basis data MySQL mendukung beberapa fitur seperti
multithreaded, dan multi-user. Basis data ini dibuat untuk keperluan sistem basis data yang cepat, handal dan mudah digunakan [8].
Beberapa kelebihan MySQL adalah tersedia untuk berbagai platform, sintaks yang mudah dipelajari dan tidak rumit, memiliki system keamanan yang cukup baik, dapat digunakan dengan berbagai bahasa pemrograman umum seperti C, C++, Java, Perl, PHP, dan sebagainya. Sedangkan kekurangan MySQL adalah sulit untuk diaplikasikan pada intansi dengan basis data yang besar dan tidak cocok untuk aplikasi mobile dan games [9].
Pada Tugas Akhir ini, sistem basis data yang digunakan adalah MySQL Workbench. MySQL Workbench merupakan salah satu produk dari MySQL yang diciptakan untuk para arsitek
2.6 Pug.js
Pug.js adalah salah satu Javascript templating engine yang terkenal. Awalnya, Pug.js bernama Jade. Namun karena suatu hal Jade berganti nama menjadi Pug.js pada tahun 2015.
Pug.js merupakan templating engine yang berperforma tinggi yang terinspirasi dari Haml (HTML abstraction markup language) dan diimplementasikan menggunakan Javascript pada Node.js. Contoh kelebihan penggunaan Pug.js adalah tidak perlu menggunakan tag penutup, pemrogramannya mengharuskan menggunakan indentasi, dan tersedia untuk diimplementasikan di PHP, scala, ruby, python dan Java. Sedangkan beberapa kekurangan Pug.js adalah tidak semua orang menyukai pemrograman yang bergantung pada indentasi, tidak cocok untuk output selain HTML, dan tidak mendukung streaming [11].
Pada penelitian ini, Pug.js digunakan untuk membuat antarmuka aplikasi E-Surat.
15
BAB III
PERANCANGAN SISTEM
Bab ini menjelaskan tentang perancangan dan pembuatan sistem perangkat lunak. Sistem perangkat lunak yang dibuat pada Tugas Akhir ini adalah sistem surta elektronik sederhana yang isi pesannya dienkripsi menggunakan algoritma XXTEA. Pada bab ini pula akan dijelaskan gambaran umum sistem dalam bentuk
flowchart.
3.1 Kasus Penggunaan
Pada sub bab ini akan dijelaskan mengenai diagram kasus penggunaan sistem yang dikerjakan pada Tugas Akhir ini.
Deskripsi diagram kasus penggunaan pada Gambar 3.1 akan dijelaskan pada Tabel 3.1.
Tabel 3.1 Daftar Kode Kasus Penggunaan
No Nama Aktor Deskripsi
UC001 Mengirim pesan Pengguna Pengguna dapat mengirim pesan UC002 Melihat pesan
masuk
Pengguna Pengguna dapat melihat pesan yang masuk UC003 Melihat pesan
keluar
Pengguna Pengguna dapat melihat pesan yang telah dikirim UC004 Mengunggah
lampiran
Pengguna Pengguna dapat mengunggah lampiran yang terdapat pada pesan
UC005 Mengunduh lampiran
Pengguna Pengguna dapat mengunduh lampiran yang terdapat pada pesan
3.2 Arsitektur Sistem
Pada sub bab ini akan dibahas mengenai arsitektur sistem yang meliputi desain umum dari sistem yang akan dibangun, desain backend, desain frontend, dan desain algortima XXTEA.
3.2.1 Desain Umum Sistem
17
Skenario penggunaan aplikasi sebenarnya tidak beda dengan pengiriman email biasa. Klien A membuat pesan baru dan mengirimkan pesan tersebut kepada klien B. Kemudian klien B membuka pesan yang telah masuk di inbox klien B. Apabila pada pesan tersebut terdapat lampiran, maka klien B dapat mengunduh lampiran yang tertera. Diagram alir membuat pesan dapat dilihat pada Gambar 3.2 dan diagram alir membuka pesan pada Gambar 3.3. Untuk desain arsitektur sistem dapat dilihat pada Gambar 3.4.
19
Gambar 3.4 Desain Sistem Secara Umum
Proses dibalik layar yang terjadi saat klien A mengirimkan pesan ke klien B adalah klien A melakukan HTTP request ke server REST untuk mengirim pesan. Kemudian REST merespon dan terjadi proses enkripsi untuk mengamankan isi pesan yang dikirim. Ketika klien B ingin membuka pesan yang baru masuk, klien B melakukan request ke server untuk melakukan dekripsi pesan. Kemudian server REST akan merespon dengan memberikan pesan dari basis data yang telah terdekripsi kepada klien B.
Di bawah ini terdapat Gambar 3.5 sampai Gambar 3.9 yang menunjukkan diagram alir yang menjelaskan bagaimana proses enkripsi algoritma XXTEA. Proses enkripsi ini dilakukan pada client-side atau sebutannya adalah end-to-end encryption. Sebelumnya, perlu diketahui bahwa kunci yang digunakan untuk mengenkripsi dan mendekripsi didapatkan dari rumus berikut:
Keterangan:
1. Email A : alamat email pengirim 2. Email B : alamt email penerima
3. Waktu pesan : waktu pesan tersebut dikirim 4. TA2017 : suatu string tetap sebagai penanda Klien A
Klien B
Database
Waktu pesan terkirim dijadikan variabel agar kunci yang dihasilkan pada setiap pengiriman pesan berbeda-beda. String
TA2017 dijadikan sebagai variabel tetap agar string kunci nantinya memiliki identitas tersendiri.
Empat komponen ini kemudian digabung atau di-concat
21
Gambar 3.5 Pengacakan Pertama
Proses enkripsi dimulai dari mengambil blok sebelum (X
Gambar 3.6 Pengacakan Kedua
23
Gambar 3.7 Pengacakan Ketiga
ketiga disimpan dengan nama hasil pengacakan 3 seperti pada Gambar 3.7.
Gambar 3.8 Pengacakan Keempat
25
Gambar 3.9 Proses Enkripsi Tahap Akhir
Gambar 3.9 merupakan gambar yang menunjukkan keseluruhan tahap dari proses enkripsi. Diagram alir ini merupakan gabungan dari diagram alir pada halaman-halaman sebelum halaman ini. Pertama, hasil dari proses pengacakan 1 ditambahkan dengan hasil dari proses pengacakan 2 dan disimpan dengan variabel A. Hal yang sama juga terjadi pada hasil dari proses pengacakan 3 dan 4. Hasil dari proses pengacakan 3 ditambahkan dengan hasil dari proses pengacakan 4 dan disimpan dengan variabel B. Kedua, hasil jumlah pengacakan 1 dan 2 (variabel A) di-XOR-kan dengan hasil jumlah pengacakan 3 dan 4 (variabel B) yang kemudian disimpan variabel C. Terakhir, hasil xor tersebut (variabel C) ditambahkan dengan blok yang sedang diacak.
Pada proses dekripsi, iterasi pengacakan dimulai dari blok yang paling terakhir pada deret blok dan iterasi pengacakan berjalan mundur. Untuk proses pengacakan pada dekripsi tidak berbeda dengan proses pengacakan pada enkripsi seperti yang telah dijelaskan sebelumnya.
3.2.2 Desain Backend
frontend maupun yang dibutuhkan frontend. Backend ini dikerjakan dengan menggunakan kerangka kerja Express.js. Desain arsitektur backend dapat dilihat pada Gambar 3.10.
Gambar 3.10 Desain Arsitektur pada Backend
Di bawah ini terdapat Tabel 3.2 yang merupakan daftar rute pada backend. Berbagai rute yang terdapat dalam backend
adalah:
Tabel 3.2 Daftar Rute pada Backend
No Rute Metode Hak
Akses
Aksi
1 /login POST Tidak ada Melakukan
autentikasi
username dan
password.
2 /viewInbox POST Pengguna Membalas pesan
berupa teks
3 /compose POST Pengguna Mengirim pesan
berupa teks atau lampiran
3.2.3 Desain Frontend
27
backend. Aplikasi ini menggunakan Pug.js sebagai templating engine untuk mempermudah proses pelemparan variabel dari
frontend ke backend. Desain arsitektur frontend dapat dilihat pada Gambar 3.11.
Gambar 3.11 Desain Arsitektur pada Frontend
Di bawah ini terdapat Tabel 3.3 yang merupakan daftar rute pada frontend. Berbagai rute yang terdapat dalam frontend
adalah:
Tabel 3.3 Daftar Rute pada Frontend
No Rute Metode Hak Akses
Aksi
1 / GET Tidak ada Menampilkan
halaman index
2 /compose GET Pengguna Menampilkan
halaman untuk membuat pesan baru
3 /inbox GET Pengguna Menampilkan
halaman daftar pesan masuk
4 /viewInbo
x/:msg_id
5 /outbox GET Pengguna Menampilkan halaman daftar pesan keluar
6 /viewOutb
ox/:msg_i d
GET Pengguna Menampilkan halaman pesan keluar yang dipilih
7 /downloa
d/:id_file
GET Pengguna Menampilkan tautan untuk mengunduh
lampiran
8 /logout GET Pengguna Menghapus session
29
BAB IV
IMPLEMENTASI
Pada bab ini akan dibahas mengenai implementasi dari perancangan yang sudah dilakukan pada bab sebelumnya. Implementasi berupa kode sumber untuk membangun program. Sebelum masuk ke penjelasan implementasi, akan ditunjukkan terlebih dahulu lingkungan untuk melakukan implementasi.
4.1 Lingkungan Implementasi
Implementasi metode enkripsi menggunakan algoritma XXTEA pada aplikasi surat elektronik berbasis web ini menggunakan spesifikasi perangkat keras dan perangkat lunak seperti yang ditunjukkan pada Tabel 4.1.
Tabel 4.1 Spesifikasi Lingkungan Implementasi Perangkat Jenis Perangkat Spesifikasi
Perangkat Keras
Prosesor Intel(R) Core(TM) I3 2120
Memori 8 GB
Perangkat Lunak
Sistem Operasi Linux Ubuntu 14.04.3
Perangkat Pengembang
Sublime Text Editor 3 sebagai teks editor
MySQL 14.14 sebagai basis data
Javascript sebagai bahasa pemrograman
Node.js 6.2.1 sebagai kerangka kerja
Express.js 4.15.3 sebagai
Pug.js sebagai tampilan antarmuka
Mozilla Firefox 53.0.3 sebagai peramban web
4.2 Implementasi
Pada sub bab implementasi akan menjelaskan bagaimana pembangunan perangkat lunak secara detail dan menampilkan kode sumber dan pseudocode yang digunakan mulai dari tahap awal pembuatan aplikasi Tugas Akhir hingga akhir.
4.2.1 Implementasi Node.js
5. Node.js menyediakan banyak paket untuk menunjang kebutuhan suatu sistem yang akan dibuat. Untuk melakukan instalasi paket-paket tersebut ketikkan npm install [nama paket yang tersedia] pada terminal di Ubuntu yang sebelumnya telah diinstal Node.js. Cara ini kurang efektif apabila paket yang ingin diinstal cukup banyak.
6. Cara lain untuk menginstall beberapa paket secara bersamaan adalah dengan membuat suatu file package.json yang isinya berisi daftar paket yang dibutuhkan dan kemudian mengetikkan npm install pada terminal. Isi file package.json
31
Keterangan Kode Sumber 4.1 adalah sebagai berikut: 1. Name: nama proyek yang sedang dikerjakan 2. Version: versi proyek yang sedang dikerjakan
3. Private: mode privat untuk proyek yang sedang dikerjakan
4. Scripts: penempatan script untuk proyek yang sedang dikerjakan
5. Body-parser: digunakan untuk melakukan parsing data request.body pada Node.js
6. Express: digunakan sebagai kerangka kerja aplikasi 7. Fs-extra: sebuah package untuk membuat file system
8. Moment: digunakan untuk mendapatkan waktu 9. Mysql: package yang diinstal untuk menggunakan
basis data MySQL
10. Pug: templating engine untuk antarmuka aplikasi 11. Serve-favicon: digunakan browser untuk
mengindentifikasi suatu website
1
"name": "emailta", "version": "0.0.0", "private": true, "scripts": {
"start": "node ./bin/www" },
"dependencies": {
"body-parser": "~1.15.1", "express": "~4.13.4", "fs-extra": "^2.1.2", "moment": "^2.18.1", "mysql": "^2.13.0", "pug": "^2.0.0-beta11", "serve-favicon": "~2.3.0" }
}
4.2.2 Implementasi Basis Data
Penyimpanan data pada aplikasi Tugas Akhir ini mengunakan salah satu tools dari MySQL yaitu MySQL Workbench. Untuk dapat menyambungkan aplikasi dengan basis data, dibutuhkan file database.js seperti pada Kode Sumber 4.2.
1
var connection = mysql.createConnection({ connectionLimit : 100000,
host : '10.151.36.30',
module.exports = connection;
Kode Sumber 4.2 Isi File database.js
Keterangan Kode Sumber 4.2 adalah sebagai berikut: 1. connectionLimit: maksimal koneksi terhadap basis
data
2. host: alamat ip di mana aplikasi dapat diakses 3. user: nama pengguna pada basis data
4. password: kata sandi yang digunakan pada basis data 5. database: basis data yang digunakan
Pada basis data yang telah dibuat, terdapat tiga tabel sebagai media penyimpanan yaitu tabel user, message, dan
33
Tabel 4.2 Implementasi Basis Data No Nama
Tabel
Nama Atribut
Tipe Data Deskripsi
1 user user_id integer Primary
key tabel 2 user user_email varchar(45) Alamat
email pengguna 3 user user_password varchar(45) Password
pengguna 4 message msg_id integer(70) Primary
key tabel 5 message msg_source varchar(45) Alamat
pengirim 6 message msg_target varchar(45) Alamat
penerima 7 message msg_plain text Pesan teks 8 message key_recepient varchar(45) Kunci
yang 9 message msg_time timestamp Waktu
pesan ketika dikirim 10 file_upload id_file integer(70) Primary
4.2.3 Implementasi Backend
Implementasi backend pada Tugas Akhir ini menggunakan kerangka kerja Express.js dan Web Service REST API. Rute
backend ditulis dalam sebuah file javascript. Di bawah ini terdapat Tabel 4.3 yang menunjukkan rute backend pada aplikasi ini. No Nama
Tabel
Nama Atribut
Tipe Data Deskripsi
11 file_upload name_file varchar(100) Nama file yang diunggah 12 file_upload path_file varchar(100) Alamat
folder file yang diunggah 13 file_upload size_file varchar(45) Ukuran
file yang diunggah 14 file_upload time_file timestamp Waktu file
35
Tabel 4.3 Implementasi Backend
No Rute
Me-tode
Hak akses Aksi Langkah Proses
1 /login POST Tidak ada Melakukan
autentikasi username
dan password.
1. Menerima data dari
frontend berisi username
dan password
2. Jika pengguna terdaftar, maka pengguna akan diarahkan ke halaman pesan masuk
3. Jika pengguna tidak terdaftar, maka pengguna akan tetap diarahkan pada halaman login
2 /compose POST Pengguna Mengirim pesan
berupa teks atau lampiran.
1. Menerima data dari halaman frontend berisi
email yang dituju, lampiran jika perlu, dan isi pesan 2. Mengirim data ke database
No Rute Me-tode
Hak akses Aksi Langkah Proses
3. Ketika proses pengiriman data dilakukan, akan terjadi proses enkripsi data untuk melakukan penyandian data
3 /viewInbox POST Pengguna Membalas pesan
berupa teks
1. Menerima data dari
frontend berisi pesan teks 2. Mengirim data ke database
37
4.2.3.1 Inisiasi Session
Session bisa diartikan sebagai suatu informasi yang diambil saat melakukan suatu pekerjaan tertentu. Informasi ini disimpan pada variabel session yang disimpan di sisi server dan dapat diakses oleh klien pada web browser.
Dalam Tugas Akhir ini, script session disimpan pada folder terpisah yaitu pada folder /middleware dengan nama file
auth.js. Script ini akan dipanggil pada halaman-halaman yang membutuhkan session di dalamnya. Apabila pengguna tidak melakukan login pada halaman tersebut, maka pengguna tidak dapat mengakses dan akan dirujuk ke halaman login. Berikut
pseudocode session ditunjukkan pada Gambar 4.1. Kode sumber fungsi inisiasi session terdapat pada Kode Sumber 4.3 pada lampiran.
Gambar 4.1 Pseudocodeauth.js
4.2.3.2 Login
Pada umumnya, aplikasi web dilengkapi dengan fitur login
untuk melakukan verifikasi pengguna. Form login pada aplikasi ini berisi email dan password. Ketika pengunjung memasukkan email
dan password yang sesuai dengan data yang berada pada basis data maka pengunjung tersebut dapat mengakses halaman pesan masuk. Apabila pengunjung tidak memasukkan email dan password yang sesuai dengan data yang berada pada basis data, maka pengunjung tetap akan berada pada halaman login. Pseudocode dapat dilihat pada Gambar 4.2. Kode sumber fungsi login terdapat pada Kode Sumber 4.4 baris 10-36 pada lampiran.
1 2 3 4
if session next() else
1
input user_email and user_password
if user_email and user_password esixt in table user login successed
else
login failed
Gambar 4.2 Pseudocodeindex.js
4.2.3.3 Mengirim Pesan
Berikut merupakan pseudocode untuk mengambil id-id
dari frontend agar dapat diproses untuk melakukan enkripsi pesan.
Pseudocode dapat dilihat pada Gambar 4.3. Kode sumber fungsi
untuk mengambil id dari frontend terdapat pada Kode Sumber 4.5 pada lampiran.
sort key by alphabets
text = window.encrypt(text, key)
Gambar 4.3 Pseudocodeenkrip.js
Berikut penjelasan Gambar 4.3:
1. Text adalah isi pesan teks yang akan dikirim yang dimasukkan oleh pengguna.
2. Date adalah varibel untuk mendapatkan waktu pengiriman pesan.
3. To adalah variabel untuk mendapatkan alamat email
penerima yang dimasukkan oleh pengguna.
4. From adalah variabel untuk mendapatkan alamat email
39
5. Key adalah variabel untuk menampung empat variabel
diatas ditambah string ’TA2017’ yang kemudian diurutkan
berdasarkan alfabet yang akan digunakan sebagai kunci pengenkripsian pesan.
6. Kemudian fungsi ini memanggil fungsi enkrip pada file
modul.js yang ditunjukkan pada Gambar 4.4. Kode sumber fungsi tersebut terdapat pada Kode Sumber 4.6 di lampiran.
function encrypt(message, key)
ciphertext = xxtea.encryptToString(message, key) return ciphertext
function decrypt(message,ke
ciphertext = xxtea.decryptToString(message, key) return ciphertext
Gambar 4.4 Pseudocodemodul.js
Berikut penjelasan Gambar 4.4:
1. Fungsi encrypt merupakan fungsi untuk mengenkrip isi pesan
2. Fungsi decrypt merupakan fugsi untuk mendekrip isi pesan
Pada Gambar 4.5 terdapat pseudocode untuk membuat pesan. Kode sumber fungsi membuat pesan terdapat pada Kode Sumber 4.7 di lampiran. Penjelasan pseudocode tersebut adalah sebagai berikut:
1. Mengeset alamat email pengirim menjadi session yang sedang login.
2. Memasukkan msg_source dan isi pesan ke basis data dengan query INSERT INTO ke tabel message.
3. Apabila pengguna ingin menambahkan lampiran, file lampiran tersebut akan dimasukkan ke tabel file_upload
1
set msg_source = session
input msg_source and msg_plain
add msg_source and msg_plain to table message
if File = 1
set name_File = filename + originalname set path_File = /file/ + filename + originalname
set size_File = size
add name_File, path_File, size_File to file_upload
else return
Gambar 4.5 Pseudocode Mengirim Pesan
Secara keseluruhan, proses enkripsi dan dekripsi pesan disimpan pada sebuah file yaitu xxtea.js yang berisi algoritma XXTEA. Kemudian untuk membungkus xxtea.js dan modul.js
agar dapat dijalankan dalam proses sebelum pengiriman ke basis data, digunakan sebuah tools yaitu browserify dengan melakukan perintah browserifymodul.js -o bundle.js pada terminal. Dari perintah tersebut akan menghasilkan file bundle.js yang berisi gabungan modul.js dan xxtea.js. File bundle.js ini akan tersimpan pada folder public. Kemudian pada folder yang sama dibuat file enkrip.js untuk menampung id-id yang akan dibutuhkan. File tersebut dapat dilihat pada Gambar 4.3. Isi file yang terdapat pada modul.js dapat dilihat pada Gambar 4.4.
4.2.3.4 Daftar Pesan Masuk
41
kapan pesan tersebut masuk. Pseudocode dapat dilihat pada Gambar 4.6. Kode sumber fungsi daftar pesan masuk terdapat pada Kode Sumber 4.8 baris 8-55 di lampiran.
1
set msg_source = session
query = select from table message
if error
Gambar 4.6 Pseudocodeinbox.js
Penjelasan Gambar 4.6 adalah sebagai berikut:
1. Mengeset alamat email pengirim menjadi session yang sedang login.
2. Melakukan query SELECT untuk mengambil seluruh atribut yang ada pada tabel message dan diurutkan berdasarkan waktu yang paling terakhir masuk.
3. Dalam rute ini terdapat inisiasi objek inboxList yang bertipe global agar dapat dipanggil pada rute lain. Isi dari
inboxList ini adalah alamat email pengirim, waktu pengiriman, dan alamat email yang dituju. Inisiasi ini juga berguna untuk melempar objek inboxList dari backend
untuk ditampilkan pada frontend.
4.2.3.5 Detail Pesan Masuk
Halaman detail pesan masuk menampilkan isi pesan, waktu pesan tersebut diterima, dan dari siapa pesan tersebut dikirim serta lampiran jika ada. Pada halaman ini pengguna dapat membalas pesan masuk secara langsung karena terdapat form balas pesan di bawah isi pesan. Pengguna juga dapat mengunduh lampiran apabila terdapat lampiran pada pesan tersebut.
Pseudocode melihat detail pesan masuk dapat dilihat pada Gambar 4.7. Kode sumber fungsi detail pesan masuk terdapat pada Kode Sumber 4.8 baris 56-164 di lampiran.
1
query = select from table message
if error
Gambar 4.7 Pseudocode Detail Pesan Masuk
Penjelasan Gambar 4.7 adalah sebagai berikut:
43
2. Kemudian, pesan akan didekripsi dengan kunci yang didapat dari rumus kunci yang telah dijelaskan pada bab 3 dan memanggil XXTEA pada file xxtea.js.
1
add msg_plain to table message
if error
message error else
render to inbox
Gambar 4.8 Pseudocode Membalas Pesan
Dalam inbox.js terdapat fungsi untuk melakukan pembalasan pesan. Fungsi ini bekerja hampir mirip dengan fungsi membuat pesan baru. Perbedannya adalah pada form balas pesan tidak terdapat kolom untuk melampirkan suatu file. Kode sumber fungsi membalas pesan masuk terdapat pada Kode Sumber 4.8 baris 165-190 di lampiran. Penjelasan Gambar 4.8 adalah sebagai berikut:
1. Memasukkan pesan ke basis data dengan query INSERT INTO ke tabel message.
2. Apabila tidak ada error maka akan memuat halaman pesan masuk.
Selain terdapat form untuk melakukan pembalasan pesan, pada halaman detail pesan masuk ini juga akan menampilkan sebuah tautan jika pengirim melampirkan file saat mengirim pesan. Fungsi pengunduhan lampiran pada detail pesan masuk dapat dilihat pada Gambar 4.9. Kode sumber fungsi mengunduh
query = select from file_upload
render to viewInbox
4.2.3.6 Daftar Pesan Keluar
Pada halaman pesan keluar, pengguna dapat melihat semua pesan yang telah dibuat dan dikirim. Pada halaman ini, pengguna tidak dapat melihat detail pesan keluar namun hanya dapat melihat kepada siapa dan kapan pesan tersebut dikirim. Pseudocode dapat dilihat pada Gambar 4.10. Kode sumber fungsi daftar pesan keluar terdapat pada Kode Sumber 4.9 baris 9-53 di lampiran.
1
query = select from table message
if error
Gambar 4.10 Pseudocodeoutbox.js
Penjelasan Gambar 4.10 di atas adalah sebagai berikut: 1. Melakukan query SELECT untuk mengambil seluruh
atribut yang ada pada tabel message dan diurutkan berdasarkan waktu yang paling terakhir dikirim.
2. Dalam rute ini terdapat inisiasi objek outboxList yang bertipe global agar dapat dipanggil pada rute lain. Isi dari
outboxList ini adalah alamat email penerima, waktu pengiriman. Inisiasi ini juga berguna untuk melempar objek outboxList dari backend untuk ditampilkan pada
frontend.
45
4.2.3.7 Detail Pesan Keluar
Halaman detail pesan keluar menampilkan isi pesan, waktu pesan tersebut dikirim, dan kepada pesan tersebut dikirim serta lampiran jika ada. Pengguna dapat mengunduh lampiran apabila terdapat lampiran pada pesan tersebut. Pseudocode dapat dilihat pada Gambar 4.11. Kode sumber fungsi detail pesan keluar terdapat pada Kode Sumber 4.9 baris 55-158 di lampiran.
1
query = select from table message
if error
plaintext = xxtea.decryptToString(message, key)
Gambar 4.11 Pseudocode Detail Pesan Keluar
Penjelasan Gambar 4.11 adalah sebagai berikut:
1. Melakukan query SELECT untuk mengambil seluruh atribut yang ada pada tabel message yang msg_id-nya sesuai dengan yang dipilih pengguna.
2. Kemudian, pesan akan didekripsi dengan kunci yang didapat dari rumus kunci yang telah dijelaskan pada bab 3 dan memanggil XXTEA pada file xxtea.js.
pesan keluar dapat dilihat pada Gambar 4.12. Kode sumber fungsi mengunduh lampiran terdapat pada Kode Sumber 4.9 baris 160-168 di lampiran.
1 2 3
query = select from file_upload
render to viewInbox
Gambar 4.12 Pengunduhan File pada Pesan Keluar
4.2.4 Implementasi Frontend
Implementasi frontend pada Tugas Akhir ini dibangun menggunakan Pug.js. Pada aplikasi ini terdapat lima kasus penggunaan yaitu:
1. Pengguna dapat mengirim pesan berupa teks dan lampiran
2. Pengguna dapat melihat pesan masuk 3. Pengguna dapat melihat pesan keluar 4. Pengguna dapat mengunggah lampiran 5. Pengguna dapat mengunduh lampiran
Di bawah ini terdapat Tabel 4.4 yang menunjukkan rute
47
Tabel 4.4 Implementasi Frontend
No Rute
Me-tode
Hak akses Aksi Langkah Proses
1 / GET Tidak ada Menampilkan
halaman login.
1. Pengguna mengisi username
dan password pada halaman
login
2. Pengguna mengeklik tombol
login
3. Jika pengguna benar memasukkan username dan
password, maka akan
diarahkan ke halaman inbox. Jika salah, maka akan tetap berada pada halaman login
2 /compose GET Pengguna Menampilkan
halaman kirim pesan atau lampiran
1. Pengguna memilih menu
compose
2. Pengguna mengisi form
berisi alamat email yang dituju, lampiran jika perlu, dan pesan teks
3. Pengguna mengeklik tombol
No Rute Me-tode
Hak akses Aksi Langkah Proses
3 /inbox GET Pengguna Menampilkan
halaman seluruh pesan masuk
1. Pengguna memilih menu
inbox
2. Pengguna melihat keseluruhan pesan masuk 4 /viewInbox/:m
sg_id
GET Pengguna Menampilkan halaman masing-masing pesan masuk
1. Pengguna memilih salah satu pesan keluar pada halaman
inbox
2. Pengguna akan melihat detail isi pesan masuk
5 /outbox GET Pengguna Menampilkan
halaman seluruh pesan keluar
1. Pengguna memilih menu
outbox
2. Pengguna akan melihat keseluruhan pesan keluar yang telah dibuat
6 /viewOutbox/: msg_id
GET Pengguna Menampilkan halaman masing-masing pesan keluar
3. Pengguna memilih salah satu pesan keluar pada halaman
outbox
49
No Rute
Me-tode
Hak akses Aksi Langkah Proses
7 /download/:id _file
GET Pengguna Menampilkan tautan untuk mengunduh
lampiran
1. Pengguna dapat melakukan pengunduhan file lampiran pada saat pengguna membuka detail isi pesan pada halaman inbox
8 /logout GET Pengguna Menampilkan
tombol untuk logout
1. Pengguna memilih tombol
logout
4.2.3.8 Halaman Index
Aplikasi E-Surat ini dapat diakses pada IP private
10.151.36.30 dengan port 3232. Saat pertama kali diakses, akan muncul tampilan seperti Gambar 4.13 di bawah ini. Untuk masuk ke halaman login, pengguna harus memilih login pada halaman index ini.
Gambar 4.13 Halaman Index
4.2.3.9 Halaman Login
Sebelum masuk ke halaman pesan masuk, pengguna harus melakukan login terlebih dahulu. Pengguna harus memasukkan alamat email dan password pengguna yang benar. Tampilan halaman login dapat dilihat pada Gambar 4.14.
4.2.5 Implementasi Algoritma XXTEA
51
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
Get plaintext Get key
Set plaintext to bytes Set key to bytes
Convert bytesPlaintext to 32IntArray of bytesPlaintext
Convert bytesKey to 32IntArray of bytesKey
Encrypt
xxtea.function(32IntArrayPlaintext,32IntArrayKey)
Convert 32IntArrayCiphertext to 8IntArrayCiphertext
Ciphertext = Convert 8IntArrayCiphertext to
string.(’base64’)
53
BAB V
UJI COBA DAN EVALUASI
Bab ini akan dijelaskan mengenai skenario uji coba pada perangkat lunak yang telah dibangun. Setelah itu, hasil uji coba akan dievaluasi kinerjanya sehingga dapat diputuskan apakah perangkat lunak ini mampu menyelesaikan permasalahan yang telah dirumuskan diawal. Secara garis besar, bab ini berisikan pembahasan mengenai lingkungan pengujian, data pengujian, dan uji kinerja.
5.1 Lingkungan Pengujian
Lingkungan untuk pengujian menggunakan dua buah komputer yang berfungsi sebagai web server dan penguji. Pada komputer web server hanya digunakan untuk menyalakan server. Sedangkan komputer penguji digunakan untuk mengakses aplikasi Tugas Akhir ini.
Proses pengujian dilakukan di Laboratorium Arsitektur dan Jaringan Komputer gedung Teknik Informatika ITS. Spesifikasi perangkat keras dan perangkat lunak yang digunakan dapat dilihat pada Tabel 5.1.
Tabel 5.1 Spesifikasi Lingkungan Pengujian Perangkat Jenis Perangkat Spesifikasi
Perangkat Keras
Prosesor Intel(R) Core(TM) I3 2120
Memori 4 GB
Perangkat Lunak
Sistem Operasi Linux Ubuntu 14.02.03 LTS
Perangkat Pengembang
Wireshark 1.12.1 sebagai penguji peforma
5.2 Skenario Uji Coba
Skenario uji coba pada Tugas Akhir ini dilakukan dalam dua tahap yaitu tahap uji coba uji fungsionalitas dan uji performa.
5.2.1 Uji Fungsionalitas
Untuk menguji fungsionalitas sitem surat elektronik yang telah dibuat dilakukan dua pengujian. Pertama, sistem diuji fungsionalitasnya menggunakan peramban Mozilla Firefox. Pengujian ini dilakukan dengan menjalankan sistem pada komputer penguji dengan memasukkan 10.151.36.30:3232 pada kolom url peramban. Kemudian sistem dicek seluruh fungsionalitas yang telah dibuat apakah sudah berjalan sesuai rancangan atau belum.
Kedua, sistem diuji menggunakan salah satu sniffing tools
yaitu Wireshark. Aplikasi Wireshark digunakan untuk melihat apakah pesan yang terkirim telah terenkripsi atau belum. Sama seperti pengujian pertama, sistem dijalankan pada komputer penguji bersamaan dengan menyalakan aplikasi Wireshark. Kemudian pada aplikasi Wireshark masukkan
“ip.dst==10.151.36.30 && 10.151.36.32 && http.request.method==POST” pada kolom filter. Lalu Wireshark akan menampilkan paket data yang dikirim dari komputer penguji dengan IP 10.151.36.32 ke IP 10.151.36.30 yang bermetode POST. Dari hasil filter ini nanti dapat dilihat apakah algortima enkripsi XXTEA berhasil diimplementasikan atau tidak.
5.2.2 Uji Performa
55
waktu yang dihasilkan ketika melakukan proses enkripsi dan dekripsi pesan.
5.2.2.1 Uji Performa Aplikasi
Uji performa aplikasi dilakukan untuk mengetahui performa aplikasi surat elektronik. Pada pengujian ini akan dilihat bagaimana performa aplikasi apabila terdapat batas maksimal permintaan, maksimal permintaan perdetik, dan maksimal jumlah pengguna yang mengakses secara bersamaan.
Pengujian ini dilakukan dengan menggunakan package
dari Node.js bernama loadtest. Loadtest adalah salah satu tools
untuk melakukan uji pembebanan suatu aplikasi. Loadtest
bertujuan untuk mengukur respon dari aplikasi pada Tugas Akhir ini. Pengujian ini mengidentifikasi kondisi puncak normal dan kapasitas operasi maksimum dari aplikasi yang diuji.
Variabel yang ditentukan dalam pengujian ini adalah
concurent dan total request. Concurent merupakan jumlah request
yang dilakukan secara bersamaan. Nilai concurent yang ditetapkan adalah 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, dan 1024. Total request
merupakan jumlah maksimal request yang dilakukan dalam suatu pengujian. Nilai total request diset sebesar 1000.
Pada uji performa ini akan dihasilkan beberapa informasi yaitu total errors, total time seconds, request per second, mean latency, min latency, dan max latency. Total errors adalah banyaknya jumlah error dalam satu pengujian. Total time seconds
adalah lamanya waktu dalam satu pengujian. Request per second
5.2.2.2 Uji Performa Algoritma
Uji coba perfoma algoritma adalah menghitung kecepatan waktu untuk melakukan enkripsi dan dekripsi pesan. Uji performa algoritma pada penelitian ini menggunakan fungsi now() pada Javascript. Penggunaan fungsi ini dilakukan dengan menginisiasi varibel yang menyimpan fungsi now() pada sebelum dan sesudah fungsi enkripsi dan dekripsi kemudian dihitung selisihnya untuk mendapatkan kecepatan waktu enkripsi dan dekripsi. Hasil yang diharapkan pada uji performa algoritma ini adalah mengetahui performa algoritma XXTEA mengenai berapa waktu yang dibutuhkan untuk proses enkripsi dan dekripsi pesan. Fungsi ini dapat dilihat pada Gambar 5.1.
1
str = "Kabel UTP memiliki beberapa warna di dalamnya, tujuan pemberian warna ini agar dalam pengiriman data dan transmisi paket dapat diminimalisisr adanya lost packet dan dapat mempercepat pengiriman paket-paket tersebut"
key = "TA2017!"
t0 = get time.now()
encrypt_data = xxtea.encryptToString(str, key) t1 = get time.now()
encrypt_time = t1 - t0
t2 = get time.now()
decrypt_data = xxtea.decryptToString(encrypt_data, key)
t3 = get time.now() decrypt_time = t3 – t2
Gambar 5.1 Pseudocodetest.js
5.3 Hasil Uji Coba
57
perangkat akan diuji apakah sudah berjalan dengan benar, bagaimana performa pada masing-masing skenario dan perbandingan performa antara skenario mana yang memiliki hasil paling baik. Pada Tugas Akhir ini, terdapat dua skenario uji coba, yaitu uji fungsionalitas dan uji performa.
5.3.1 Hasil Uji Fungsionalitas
Berikut merupakan hasil uji fungsionalitas yang telah dilakukan. Uji fungsionalitas yang pertama dilakukan menggunakan peramban Mozilla Firefox pada komputer penguji dan yang kedua menggunakan perangkat lunak Wireshark untuk melakukan sniffing paket data. Hasil uji fungsionalitas pertama ditunjukkan pada Tabel 5.2.
Tabel 5.2 Hasil Eksekusi Uji Fungsionalitas No Nama dalam sistem dengan
username dan
password yang sudah terdaftar pesan yang berisi alamat email yang
No Nama Kegiatan
Uji Coba Hasil
Harapan
akan dituju, isi pesan, dan lampiran jika ada
5 Membuka halaman detail pesan masuk
Dapat membuka halaman detail pesan masuk halaman detail pesan keluar lampiran pada saat menerima pesan
Uji fungsionalitas yang kedua menggunakan aplikasi
sniffing data yaitu Wireshark. Gambar 5.2 di bawah ini menunjukkan bahwa msg_plain-nya belum terenkripsi yaitu “coba
wireshark nih”. Sedangkan pada Gambar 5.3 menunjukkan bahwa
msg_plain-nya telah terenkripsi menjadi
59
Gambar 5.2 Hasil Uji Fungsionalitas Menggunakan Wireshark Belum Terenkripsi
5.3.2 Hasil Uji Performa
Pada uji performa ini terdapat dua subbab yaitu hasil uji coba performa aplikasi dan hasil uji coba algoritma.
5.3.2.1 Hasil Uji Performa Aplikasi
Uji performa ini dilakukan dengan cara menjalankan file loadtest.js. Aplikasi ini akan diuji dengan menjalankan server yang terbagi beban pekerjaannya hingga ke 8 node CPU virtual. Hasil uji performa ini akan digambarkan dalam bentuk grafik. Berikut dapat dilihat grafik pada Gambar 5.4 hingga Gambar 5.11. Untuk tabel hasil uji coba performa aplikasi terdapat pada Gambar 5.12 hingga Gambar 5.19 di lampiran.
Gambar 5.4 Grafik Performa 1 Node CPU