• Tidak ada hasil yang ditemukan

Implementasi Metode Enkripsi Menggunakan Algoritma XXTEA (Corrected Block Tiny Encryption Algorithm) pada Aplikasi Surat Elektronik Berbasis Web - ITS Repository

N/A
N/A
Protected

Academic year: 2019

Membagikan "Implementasi Metode Enkripsi Menggunakan Algoritma XXTEA (Corrected Block Tiny Encryption Algorithm) pada Aplikasi Surat Elektronik Berbasis Web - ITS Repository"

Copied!
119
0
0

Teks penuh

(1)

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

(2)
(3)
(4)
(5)

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

(6)

ii

(7)

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

(8)

iv

(9)

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)

(10)

vi

(11)

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.

(12)

viii

telah dilakukan, dihasilkan bahwa komputer web server mampu menangani 1024 akses pengguna dengan request per second-nya mencapai 34 request.

(13)

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.

(14)

x

(15)

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.

(16)

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.

(17)

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

(18)

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

(19)

xv

(20)

xvi

(21)

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

(22)

xviii

(23)

xix

DAFTAR TABEL

(24)

xx

(25)

xxi

DAFTAR KODE SUMBER

(26)

xxii

(27)

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.

(28)

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.

(29)

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

(30)

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

(31)

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

(32)
(33)

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.

(34)

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.

(35)

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.

(36)

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]:

(37)

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

(38)

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

(39)

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

(40)

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.

(41)

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.

(42)

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

(43)

17

(44)

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.

(45)

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

(46)

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

(47)

21

Gambar 3.5 Pengacakan Pertama

Proses enkripsi dimulai dari mengambil blok sebelum (X

(48)

Gambar 3.6 Pengacakan Kedua

(49)

23

Gambar 3.7 Pengacakan Ketiga

(50)

ketiga disimpan dengan nama hasil pengacakan 3 seperti pada Gambar 3.7.

Gambar 3.8 Pengacakan Keempat

(51)

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

(52)

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

(53)

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

(54)

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

(55)

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

(56)

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

(57)

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" }

}

(58)

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

(59)

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

email

pengirim 6 message msg_target varchar(45) Alamat

email

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

(60)

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

(61)

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

(62)

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

(63)

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

(64)

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

(65)

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

(66)

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

(67)

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.

(68)

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:

(69)

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

(70)

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.

(71)

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.

(72)

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

(73)

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

(74)

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

(75)

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

(76)

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

(77)

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’)

(78)
(79)

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

(80)

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

(81)

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

(82)

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

(83)

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

(84)

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

(85)

59

Gambar 5.2 Hasil Uji Fungsionalitas Menggunakan Wireshark Belum Terenkripsi

(86)

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

Gambar

Gambar 2.1 Proses Pengacakan pada Satu Iterasi
Gambar 2.3 Proses asynchronous Node.js [6]
Gambar 3.1 Diagram Kasus Penggunaan
Tabel 3.1 Daftar Kode Kasus Penggunaan
+7

Referensi

Dokumen terkait

Setelah diinkubasi 3 hari pada suhu 37 0 C, di sekitar isolat kapang yang memiliki aktivitas protease terlihat zona jernih, sebaliknya hasil negatif

Titin Soegiharti (2011) dengan Tesis Kajian Semiotik Gurindam Dua Belas Karangan Raja Ali Haji dan Aplikasinya dalam Pembelajaran Sastra di SMA. Pemilihan bahan ajar

Pelaksanaan hukum secara Represif adalah penegakan hukum yang dilakukan pihak Kepolisian Polair Polres Rokan Hilir untuk melakukan penindakan terhadap pelaku

9 setelah kami selesai berjalan jalan di Manila, Alex langsung mengantar kami ke IIST, namun sebelumnya ia mengajak kami untuk makan siang sekitar pukul 12.00 waktu

Upaya atau tidakan yang harus dilakukan untuk mewujudkan persepsi yang akurat terhadap harapan konsumen ke dalam desain dan standar pelayanan, akan efektif hanya bila pihak

Preprocessing data telah dilakukan sesuai dengan proses yang ada pada KDD, dengan menghasilkan set data yang baru hasil dari penggabungan dua sumber data yang berbeda yaitu

atas benar merupakan karya orisinal yang dibuat oleh penulis dan belum pernah. dipublikasikan dan/atau dilombakan di luar kegiata n ” Lomba Karya Tulis

Berdasarkan hasil penelitian yang telah dilakukan, dapat disimpulkan bahwa siswa dan siswi mengalami permasalahan dalam tidak menyukai tampat belajar, tidak menyukai mata