Perancangan Add On Keamanan Email Mozillathunderbird Dengan Algoritma Kriptografi Xor Dan Three Pass Protocol Serta Kompresi Lempel Ziv Welch

(1)

PERANCANGAN ADD ON KEAMANAN EMAIL MOZILLA

THUNDERBIRD DENGAN ALGORITMA KRIPTOGRAFI

XOR DAN THREE PASS PROTOCOL SERTA

KOMPRESI LEMPEL ZIV WELCH

SKRIPSI

BRIKSON HARA DONALD BARUS

081401037

PROGRAM STUDI S1 ILMU KOMPUTER

DEPARTEMEN ILMU KOMPUTER

FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI

UNIVERSITAS SUMATERA UTARA

MEDAN

2012


(2)

PERANCANGAN ADD ON KEAMANAN EMAIL MOZILLA THUNDERBIRD DENGAN ALGORITMA KRIPTOGRAFI XOR DAN THREE PASS

PROTOCOL SERTA KOMPRESI LEMPEL ZIV WELCH

SKRIPSI

Diajukan untuk melengkapi tugas akhir dan memenuhi syarat mencapai gelar Sarjana Komputer

BRIKSON HARA DONALD BARUS 081401037

PROGRAM STUDI S1 ILMU KOMPUTER DEPARTEMEN ILMU KOMPUTER

FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNIVERSITAS SUMATERA UTARA

MEDAN 2012


(3)

PERSETUJUAN

Judul : PERANCANGAN ADD ON KEAMANAN EMAIL

MOZILLATHUNDERBIRD DENGAN ALGORITMA KRIPTOGRAFI XOR DAN THREE

PASS PROTOCOL SERTA KOMPRESI LEMPEL ZIV WELCH

Kategori : SKRIPSI

Nama : BRIKSON HARA DONALD BARUS

Nomor Induk Mahasiswa : 081401037

Program Studi : SARJANA (S1) ILMU KOMPUTER

Departemen : ILMU KOMPUTER

Fakultas : ILMU KOMPUTER DAN TEKNOLOGI

INFORMASI UNIVERSITAS SUMATERA UTARA

Diluluskan di Medan, 24 Juli 2012

Komisi Pembimbing

Pembimbing 2 Pembimbing 1

Ade Candra, ST, M.Kom. M. Andri B, ST, M.CompSc, MEM. NIP.197909042009121002 NIP.197510082008011001

Diketahui/Disetujui oleh

Program Studi S1 Ilmu Komputer Ketua,

Dr. Poltak Sihombing, M.Kom. NIP.196203171991031011


(4)

PERNYATAAN

PERANCANGAN ADD ON KEAMANAN EMAIL MOZILLATHUNDERBIRD DENGAN ALGORITMA KRIPTOGRAFI XOR DAN THREE PASS

PROTOCOL SERTA KOMPRESI LEMPEL ZIV WELCH

SKRIPSI

Penulis mengakui bahwa skripsi ini adalah hasil karya sendiri, kecuali beberapa ringkasan dan kutipan yang masing-masing disebutkan sumbernya.

Medan, 24 Juli 2012

BRIKSON HARA DONALD BARUS 081401037


(5)

PENGHARGAAN

Puji dan syukur penulis ucapkan kepada Tuhan Yang Maha Esa karena kasih dan karunia-Nya sehingga skripsi ini berhasil diselesaikan dengan baik.

Dengan segala kerendahan hati, pada kesempatan ini penulis menyampaikan terima kasih kepada semua pihak yang telah membantu penyelesaian skripsi ini. Penulis mengucapkan terima kasih kepada:

1. Bapak Dr. Poltak Sihombing sebagai Ketua Program Studi S1 Ilmu KomputerFakultas Ilmu Komputer dan Teknologi Informasi Universitas Sumatera Utara.

2. Ibu Maya Silvi Lydia, BSc. MSc sebagai Sekretaris Program Studi S1 Ilmu KomputerFakultas Ilmu Komputer dan Teknologi Informasi Universitas Sumatera Utara.

3. Dekan dan Pembantu Dekan Fakultas Ilmu Komputer dan Teknologi Informasi Universitas Sumatera Utara.

4. Bapak M. Andri Budiman, ST, MCompSc, MEM dan Bapak Ade Candra, ST, M.Kom selaku pembimbing yang telah banyak meluangkan waktunya dalam memberikan masukan-masukan kepada penulis.

5. Bapak Dr. Poltak Sihombing, M.Kom dan Bapak Amer Sharif, S.Si., M.Kom. sebagai dosen penguji yang telah memberikan saran dan kritikan yang sangat berguna bagi Penulis.

6. Seluruh dosen serta pegawai di Program Studi S1 Ilmu Komputer Departemen Ilmu Komputer Fakultas Ilmu Komputer dan Teknologi Informasi USU.

7. Ayahanda tercinta M. Barus dan Ibunda tercinta L. Manalu, abang saya Dodi Barus ST, Artno Dedy Daniel Barus, adik saya Alex Fernando, Krisna Deviyanti Barus, Monalisa Barus dan Arnel Rafael Barus yang selalu memberikan doa, motivasi dan dukungannya baik materi maupun spiritual serta semangat yang diberikan selama kuliah dan menyelesaikan skripsi ini. 8. Dan juga kepada teman-teman seperjuangan angkatan 2008 program studi S1

Ilmu Komputer USU, terkhusus kepada: Elieser Hutapea, Hermanda Simamora, Octavianus Sianturi, Harry Davidson, Johannes Hutabarat, Rosalina V Situmorang, Juwita Adelina Pasaribu, Novalia, Vicky Fernandes Isman, Heny Mulyana, Sadifa Asrofa, Ria Marpaung dan Angga Malau.

Penulis menyadari bahwa skripsi ini masih jauh dari sempurna. Oleh karena itu penulis menerima kritik dan saran dari semua pihak yang bersifat membangun dan menyempurnakan skripsi ini. Penulis berharap semoga skripsi ini bermanfaat bagi penulis sendiri pada khususnya dan pembaca pada umumnya.


(6)

Brikson Hara Donald Barus

ABSTRAK

Pertukaran kunci pada implementasi kriptografi kunci simetri dapat menimbulkan resiko pencurian kunci oleh pihak yang tidak bertanggung jawab. Skripsi ini mengkaji pemanfaatan Three Pass Protocol sebagai alternatif untuk menghindari pertukaran kunci pada implementasi kriptografi kunci simetri XOR. Implementasi juga melibatkan pembangkitan kunci dengan Linear Congruential Generator, base64

encoding dan kompresi dataLempel Ziv Welch. Pengujian dilakukan

berkasfilecantebury corpus dan calgarycorpus. Hasil pengujian menunjukkan bahwa sifat commutativeencryption pada kriptografi XOR dapat digunakan untuk menerapkan Three Pass Protocol meskipun implementasi dengan XOR sangat rentan terhadap serangan ciphertext only attack.Algoritma kompresi LZW menghasilkan rasio kompresi terkecil sebesar 47,212% dimana panjang dictionary-nya 13 bit. Rata-rata rasio kompresi yang diperoleh adalah 54,805 %. Untuk keseluruhan proses lamanya eksekusi berbanding lurus dengan ukuran input. Implementasi dilakukan pada Mozilla Thunderbird 11.0 dengan bahasa pemrograman javascript, XUL dan CSS.


(7)

DESIGN OF EMAIL SECURITY ADD ON FOR MOZILLA THUNDERBIRD USING XOR CRYPTOGRAPHIC ALGORITHM WITH THREE PASS

PROTOCOL AND LEMPEL ZIV WELCH DATA COMPRESSION

ABSTRACT

Key exchange on symmetry cryptographic implementation could raise the risk of key stealing by unauthorized persons. This paper considers Three Pass Protocol as an alternative to avoid key exchange on XOR symmetry cryptographic implementation. The implementation also involves Linear Congruential Generator algorithm, base64 encoding and Lempel Ziv Welch data compression. System is tested using cantebury corpus and calgary corpus files. The testing shows that commutative encryption on XOR cryptographic can be used on Three Pass Protocol implementation, however the implementation with XOR is highly risk dealing with ciphertext only attack. The smallest compression ratio of LZW compression is 47.212% with 13 bits of dictionary length. The average value of compression ratio is 54.805 %. System is implemented on Mozilla Thunderbird 11.0 using javascript, XUL and CSS programming language.

Keywords: XOR, LCG, Three Pass Protocol, LZW Compression, base64 Encoding.


(8)

DAFTAR ISI

Halaman

Persetujuan ii

Pernyataan iii

Penghargaan iv

Abstrak v

Abstract vi

Daftar Isi vii

Daftar Tabel ix

Daftar Gambar x

Daftar Lampiran xi

Bab 1 Pendahuluan 1

1.1 Latar Belakang Masalah 1

1.2Rumusan Masalah 3

1.3Batasan Masalah 4

1.4Tujuan Penelitian 4

1.5Manfaat Penelitian 5

1.6Metode Penelitian 5

1.7Sistematika Penulisan 6

Bab 2 Tinjauan Pustaka 8

2.1 Kriptografi 8

2.1.1 Kriptografi Kunci Simetris dan Kunci Asimetris 9

2.1.2 Algoritma Kriptografi XOR 11

2.2 Pembangkit Bilangan Acak Semu Linear Congruential 12

Generator (LCG)

2.3 Three Pass Protocol 13

2.4 Kompresi Data 14

2.4.1 Kompresi dan Dekompresi Data 15

2.4.2 Kompresi Lossless dan Lossy 16

2.4.3 Algoritma Kompresi Lempel Ziv Welch (LZW) 17

2.5 Base64 Encoding 20

2.6 Mozilla Thunderbird dan Add On pada Mozilla Thunderbird 22

2.7 Unified Modelling Language 23

2.7.1 Use Case Diagram 24

2.7.2 Activity Diagram 25

2.7.3 Class Diagram 26

2.7.4 Sequence Diagram 27

2.8 Kompleksitas Algoritma 29


(9)

Bab 3 Analisis dan Perancangan 32

3.1 Analisis Sistem 32

3.1.1 Analisis Masalah 32

3.1.1 Analisis Persyaratan (Requirement Analysis) 34 3.1.1.1 Analisis Persyaratan Fungsional 34 3.1.1.2 Analisis Persyaratan Non-Fungsional 34 3.1.2 Pemodelan Persyaratan Sistem dengan Use Case 35

3.1.3 Analisis Proses Sistem 50

3.2 Perancangan Sistem 56

3.2.1 Class Diagram 57

3.2.2 Perancangan Antarmuka 60

3.2.3 Perancangan Struktur Direktori Add On 61

Bab 4 Implementasi dan Pengujian 63

4.1 Implementasi Sistem 63

4.1.1 Spesifikasi Kebutuhan Perangkat Keras 63 4.1.2 Spesifikasi Kebutuhan Perangkat Lunak 64

4.1.3 Tampilan Sistem 64

4.1.3.1 Antarmuka pada Add-Ons Manager 64 4.1.3.2 Antarmuka Jedela Write Setelah Pemasangan 65

Add On Kemanan Email

4.1.3.3 Antarmuka Proses Enkripsi dan Dekripsi Pesan 65 Sesuaidengan Three Pass Protocol

4.2 Pengujian Sistem 68

4.2.1 Perangkat Pengujian 68

4.2.2 Tujuan Pengujian 68

4.2.3 Skenario Pengujian 69

4.2.4 Data Hasil Pengujian 70

4.2.5 Analisis Kelemahan Three Pass Protocol 74

Bab 5 Kesimpulan dan Saran 75

5.1 Kesimpulan 75

5.2 Saran 76


(10)

DAFTAR TABEL

Nomor Tabel

Nama Tabel Halaman

2.1 2.2 2.3 2.4 2.5 2.6 2.7 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.10 3.11 3.12 3.13 3.14 3.15 3.16 3.17 4.1 4.2 4.3 4.4 4.4 4.6

Operasi Bit XOR

Sifat Commutative Encryption Pada XOR

Pseudocode Algoritma Kompresi LZW

Proses Kompresi LZW untuk String “BUKAN BUKA”

Pseudocode Algoritma Dekompresi LZW

Proses Dekompresi LZW untuk Menemukan String “BUKAN BUKA”

Himpunan Karakter yang Digunakan pada Base64 Encoding

Dokumentasi Naratif use case Kontrol Proses Three Pass Protocol.

Dokumentasi Naratif use caseEncode Base64

Dokumentasi Naratif use case Enkripsi. Dokumentasi Naratif use caseKey Generate. Dokumentasi Naratif use case Dekripsi Dokumentasi Naratif use case Kompresi Dokumentasi Naratif use case Dekompresi Dokumentasi Naratif use caseDecode Base64.

Pseudocode dan Kompleksitas Algoritma Kompresi LZW

Pseudocode dan Kompleksitas Algoritma LCG

Pseudocode dan Kompleksitas Algoritma Enkripsi XOR

Pseudocode dan Kompleksitas Algoritma Encode Base64 Pseudocode dan Kompleksitas Algoritma Decode Base64 Pseudocode dan Kompleksitas Algoritma Dekripsi XOR

Pseudocode dan Kompleksitas Algoritma Dekompresi LZW Kelas dan Atributnya

Komponen pada Toolbar

Spesifikasi Kebutuhan Perangkat Keras untuk Implementasi Spesifikasi Perangkat Keras yang Digunakan pada Saat Pengujian

Data Uji Coba (Berkas Canterbury dan Calgary Corpus) Data Rasio Kompresi serta Waktu Kompresi dan Dekompresi Data Waktu Eksekusi Enkripsi dan Dekripsi pada Setiap Tahap

Data Waktu Eksekusi Encode base64 dan Decode Base64

pada Setiap Tahap

11 12 18 18 19 20 21 37 39 41 42 44 45 47 49 51 52 52 52 53 55 56 57 60 63 68 69 70 72 73


(11)

DAFTAR GAMBAR

Nomor Gambar

Nama Gambar Halaman

2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 2.10 2.11 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.10 3.11 3.12 3.13 3.14 3.15 3.16 3.17 4.1 4.2 4.3 4.4 4.5 4.6

Three Pass Protocol

Kompresi Data Lossless

Kompresi DataLossy

Proses Base64 Encoding

Proses Base64 Decoding

Program Email Client Mozilla Thunderbird Contoh Sebuah Use Case Diagram

Contoh Sebuah Activity Diagram

Contoh Sebuah Class Diagram

Contoh Sebuah Sequence Diagram

Grafik Perbandingan Pertumbuhan Kompleksitas Diagram Ishikawa untuk Analisis Permasalahan Sistem Use CaseDiagram Sistem yang Akan Dikembangkan

Activity Diagram Kontrol Proses Three Pass Protocol Activity DiagramEncodeBase64

Activity Diagram Enkripsi

Activity DiagramKey Generate Activity Diagram Dekripsi

Activity Diagram Kompresi

Activity Diagram Dekompresi

Activity Diagram DecodeBase64

Sequential Diagram Tahap Pertama Three Pass Protocol Sequential Diagram Tahap Kedua Three Pass Protocol Sequential Diagram Tahap Ketiga Three Pass Protocol Sequential DiagramTahap Terakhir Three Pass Protocol Class Diagram untuk Sistem yang Dikembangkan LetakIcon pada Toolbar Mozilla Thunderbird

Struktur Direktori untuk AddOn yang Dikembangkan

Pemasangan Add On dengan Menggunakan Add-Ons Manager Icon pada Toolbar Mozilla Thunderbird

Enkripsi Pesan oleh Pengirim Enkripsi Pesan oleh Penerima Hasil Dekripsi Pesan oleh Pengirim Hasil Dekripsi Pesan oleh Penerima

14 16 16 21 22 23 25 26 27 28 31 33 36 38 40 41 43 44 46 48 49 50 53 54 55 59 60 61 64 65 66 66 67 67


(12)

DAFTAR LAMPIRAN

Halaman


(13)

Brikson Hara Donald Barus

ABSTRAK

Pertukaran kunci pada implementasi kriptografi kunci simetri dapat menimbulkan resiko pencurian kunci oleh pihak yang tidak bertanggung jawab. Skripsi ini mengkaji pemanfaatan Three Pass Protocol sebagai alternatif untuk menghindari pertukaran kunci pada implementasi kriptografi kunci simetri XOR. Implementasi juga melibatkan pembangkitan kunci dengan Linear Congruential Generator, base64

encoding dan kompresi dataLempel Ziv Welch. Pengujian dilakukan

berkasfilecantebury corpus dan calgarycorpus. Hasil pengujian menunjukkan bahwa sifat commutativeencryption pada kriptografi XOR dapat digunakan untuk menerapkan Three Pass Protocol meskipun implementasi dengan XOR sangat rentan terhadap serangan ciphertext only attack.Algoritma kompresi LZW menghasilkan rasio kompresi terkecil sebesar 47,212% dimana panjang dictionary-nya 13 bit. Rata-rata rasio kompresi yang diperoleh adalah 54,805 %. Untuk keseluruhan proses lamanya eksekusi berbanding lurus dengan ukuran input. Implementasi dilakukan pada Mozilla Thunderbird 11.0 dengan bahasa pemrograman javascript, XUL dan CSS.


(14)

DESIGN OF EMAIL SECURITY ADD ON FOR MOZILLA THUNDERBIRD USING XOR CRYPTOGRAPHIC ALGORITHM WITH THREE PASS

PROTOCOL AND LEMPEL ZIV WELCH DATA COMPRESSION

ABSTRACT

Key exchange on symmetry cryptographic implementation could raise the risk of key stealing by unauthorized persons. This paper considers Three Pass Protocol as an alternative to avoid key exchange on XOR symmetry cryptographic implementation. The implementation also involves Linear Congruential Generator algorithm, base64 encoding and Lempel Ziv Welch data compression. System is tested using cantebury corpus and calgary corpus files. The testing shows that commutative encryption on XOR cryptographic can be used on Three Pass Protocol implementation, however the implementation with XOR is highly risk dealing with ciphertext only attack. The smallest compression ratio of LZW compression is 47.212% with 13 bits of dictionary length. The average value of compression ratio is 54.805 %. System is implemented on Mozilla Thunderbird 11.0 using javascript, XUL and CSS programming language.

Keywords: XOR, LCG, Three Pass Protocol, LZW Compression, base64 Encoding.


(15)

BAB I

PENDAHULUAN

1.1Latar Belakang Masalah

Keamanan informasi merupakan isu penting yang berkembang luas sejak dahulu. Untuk menjamin kerahasiaan pada proses pertukaran informasi, sejak dulu para ahli mengembangkan berbagai algoritma untuk menyembunyikan atau menyamarkan informasi ke bentuk lain sehingga tidak dapat dibaca atau dipahami oleh orang lain yang tidak berhak untuk memperoleh informasi tersebut. Ilmu dan seni untuk menyembunyikan informasi dikenal dengan istilah steganografi sedangkan ilmu dan seni untuk menyamarkan informasi sehingga tidak dapat dimengerti orang lain dikenal dengan istilah kriptografi. Perkembangan ilmu matematika dan komputer digital lebih lanjut menyebabkan pengembangan yang sangat aktif dalam bidang kriptografi dan steganografi.

Media komunikasi yang sangat efektif dan digunakan secara luas oleh pengguna teknologi informasi adalah layanan email serta perangkat pendukungnya misalnya perangkat email client Mozilla Thunderbird. Aplikasi ini dapat membantu seorang pengguna mengorganisir akun email miliknya sehingga penggunaan layanan

email lebih optimal. Untuk mecegah orang yang tidak bertanggung jawab mencuri informasi rahasia yang dikirimkan, pengguna dapat menerapkan kriptografi pada pesan rahasia yang dikirimkannya. Dengan menerapkan kriptografi diharapkan pengguna akan merasa lebih nyaman dalam berkomunikasi meskipun harus mengirimkan data yang bersifat sensitif (rahasia).

Dalam menerapkan sebuah sistem kriptografi (cryptosystem), salah satu persoalan yang mungkin menjadi kendala adalah mekanisme distribusi kunci,


(16)

terutama pada kriptografi kunci simetri yang menggunakan satu buah kunci tunggal untuk melakukan enkripsi dan dekripsi. Salah satu algoritma kriptografi kunci simetri yang sederhana adalah kriptografi XOR.Pada implementasi sistem kriptografisimetri antara pengirim dan penerima pesan harus terjadi pertukaran kunci sehingga dengan kunci tertentu pengirim dapat mengenkripsi pesan dan kemudian dengan kunci yang samapenerima mendekripsi pesan yang sebelumnya telah dienkripsi. Proses pertukaran kunci melalui media transmisi data yang tidak terjamin keamanannya dapat menyebabkan bocornya pesan rahasia dan kunci kriptografi kepada pihak yang tidak bertanggung jawab, sehingga berpeluang merugikan pengirim dan penerima. Salah satu mekanisme yang dapat digunakan untuk mengatasi hal tersebut adalah dengan menerapkanThree Pass Protocol. Protokol ini memungkinkan sebuah sistem kriptografi dapat mempertemukan kebutuhan pengirim dan penerima tanpa disertai mekanisme pertukaran kunci. Dengan protokol ini resiko yang timbul akibat pertukaran kunci pada implementasi kriptografi dapat dihindari.

Masalah lain yang mungkin ditemui pada implementasi kriptografi adalah munculnya karakter non-printable, misalnya control characterASCII pada ciphertext. Pada saat ditransmisikan, data yang mengandung karakter ini akan menyebabkan timbulnya perbedaan representasi. Untuk mencegah hal ini pada sistem kriptografi dapat digunakan base64 encoding.

Selain masalah yang disebutkan sebelumnya, aspek lain yang juga dapat diperhatikan adalah panjangnya pesan bila ditransmisikan melalui media transmisi data. Panjangnya pesan yang ditransmisikan dapat menjadi masalah karena dapat membebani proses pengiriman informasi. Untuk mengatasi hal tersebut, pada sebuah

cryptosystem dapat diterapkan algoritma kompresi data sehingga ukuran pesan menjadi lebih kecil. Salah satu algoritma kompresi yang banyak digunakan untuk melakukan kompresi data adalah algoritma kompresi Lempel Ziv Welch (LZW). Algoritma iniadalah salah satu algoritma kompresi lossless yang berbasis dictionary.

Beberapa penelitian yang relevan dengan hal ini antara lain, Yoshito Kanamori dan Seong-Moo Yoo (2009), dimuat dalam International Journal of Network Security and Its Application (IJNSA) Vol. 1 No. 2 July 2009, berjudul Quantum Three-Pass


(17)

Protocol: Key Distribution Using Quantum Superposition States. Penelitian ini mengkaji pengembangan protokol distribusi kunci tanpa mekanisme pertukaran kunci (protokol QuantumKey Distribution BB84). Muhammad Januar Rambe (2011), tugas akhir (skripsi) program studi S-1 Ilmu Kompute FMIPA USU, berjudul Analisis dan Implementasi Keamanan E-Mail Menggunakan Algoritma RSA Sebagai Enkripsi dan Dekripsi Pada Mozilla Thunderbird. Skripsi ini mengkaji implementasi algoritma kriptografi RSA sebagai Add On pada Mozilla Thunderbird. Plipus Telaumbanua (2011), tugas akhir (skripsi) program studi S-1 Ilmu Komputer FMIPA USU, berjudul Analisis Perbandingan Algoritma Kompresi Lempel Ziv Welch, Arithmetic Coding, Dan Run-Length Encoding Pada File Teks. Skripsi ini mengkaji kinerja algoritma kompresi diukur dari performa kompresi dan waktu eksekusi yang diperlukan oleh masing-masing algoritma kompresi.

Mencermati hal di atas maka penulis berniat merancang suatu perangkat lunak pendukung (Add On) yang dapat digunakan untuk mengenkripsi dan mendekripsi serta kompresi dan dekompresi pesan pada perangkat lunak Mozilla Thunderbird.

1.2Rumusan Masalah

Implementasi kriptografi kunci simetri mebutuhkan mekanisme pertukaran kunci, sehingga diperlukan media komunikasi yang benar-benar aman untuk mendistribusikan kunci, permasalahannya adalah sangat sulit untuk menemukan media komunikasi yang benar-benar aman sehingga perlu dikaji bagaimana menghindari pertukaran kunci pada implementasi kriptografi simetri. Selain itu masalah lain yang dapat muncul sebagai akibat dari penggunaan algoritma kriptografi adalah munculnya karakter-karakter yang tergolong karakter non-printable, untuk itu perlu digunakan sebuah mekanisme untuk mengatasi masalah munculnya karakter

non-printable pada data hasil enkripsi. Masalah lain yang menjadi perhatian adalah ukuran pesan yang terlalu besar akan membebani media komunikasi, untuk itu perlu dikaji pemanfaatan algoritma kompresi untuk menghindari pembesaran ukuran pesan yang akan dikirimkan melalui media komunikasi.


(18)

1.3Batasan Masalah

Untuk menjaga agar pembahasan pada skripsi ini optimal dan tidak menyimpang, maka penulis membatasi masalah yang akan dibahas yaitu:

a. Sistem yang dirancang dan diimplementasikan adalah perangkat lunak Add On

keamanan email pada perangkat lunak email client Mozilla Thunderbird.

b. Algoritma kriptografi yang digunakan adalah algoritma kriptografi XOR dengan pembangkitan kunci menggunakan algoritma pembangkit bilangan acak semu

Linear Congruential Generator dan algoritma kompresi data LZW.

c. Algoritma kriptografi XOR, base64 encoding dan kompresi LZW diterapkansesuai dengan mekanisme Three Pass Protocol.

d. Digunakan base64 encoding untuk mencegah hilangnya atau berubahnya interpretasi data hasil enkripsi pada saat dikirimkan menggunakan email.

e. Perangkat lunak dikembangkan dengan javascript, XUL (XML User Interface) dan CSS (Cassade Style Sheet) pada perangkat lunak email client Mozilla Thunderbird.

f. Untuk pengujian implementasi Three Pass Protocol dengan algoritma kriptografi XOR, base64 encoding dan kompresi LZW digunakan berkas canterbury corpus

dan calgary corpus. Berkas-berkas yang dipilih adalah berkas yang berisikan data teks.

1.4Tujuan Penelitian

Tujuan dari penelitian ini adalah:

a. Untuk merancang dan mengimplementasikan suatu perangkat lunak yang dapat digunakan pada proses enkripsi dan dekripsi email.

b. Untuk memadukan fungsi kriptografi, kompresi dan base64 encoding pada data teksemail.

c. Mengukur kinerja kompresi LZW yang dilihat dari nilai rasio kompresi yang dihasilkan.


(19)

d. Mengukur lamanya waktu eksekusi yang diperlukan untuk mengeksekusi proses enkripsi, dekripsi, kompresi dan base64 encoding dan base64 decoding.

1.5Manfaat Penelitian

Tugas akhir ini diharapkan memberikan manfaat antara lain,

a. Bagi penulis, memberikan informasi bagimana menerapkan mekanisme Three Pass Protocoldengan algoritma kriptografi XOR menggunakan pembangkit kunci LCG, kompresi data LZW,base64 encoding serta memberikan informasi terkait perancangan Add On pada perangkat lunak email client Mozilla Thunderbird. b. Bagi bidang ilmu, memberikan informasi terkait penerapan mekanisme Three

Pass Protocol dengan kriptografi XOR dan pembangkit kunci LCG, base64 encoding serta kompresi data LZW.

c. Bagi pengguna layanan email clientMozilla Thunderbird, sebagai salah satu alternatif untuk meningkatkan layanan keamanan pada saat berkomunikasi.

1.6Metode Penelitian

Metodologi penelitian yang akan digunakan adalah:

1. Studi Literatur

Mempelajari literatur tentang teori dasar yang mendukung penelitian ini, yaitu konsep kriptografi, algoritma kriptografi XOR, algoritma pembangkit bilangan acak semu LCG, Three Pass Protocol, kompresi, algoritma kompresi LZW,

base64 encoding dan referensi terkait pengembangan Add On pada perangkat lunak Mozilla Thunderbird.

2. Observasi

Melakukan pengumpulan data yang dibutuhkan untuk penelitian ini, yaitu data dan informasi dari berbagai sumber terkait algoritma kriptografi XOR, pembangkit bilangan acak semu LCG, Three Pass Protocol, algoritma kompresi LZW dan


(20)

3. Analisis dan Perancangan Sistem

Pada tahap ini dilakukan analisis kebutuhan terhadap sistem dan menjadi dasar untuk perancangan Add On keamanan pada perangkat lunak email client Mozilla Thunderbird.

4. Implementasi Sistem

Pada tahap ini dilakukan pembuatan Add On sesuai dengan analisis dan perancangan yang sudah didefenisikan sebelumnya.

5. Pengujian Sistem

Pengujian terhadap kinerja perangkat lunak terkait kemampuan enkripsi dekripsi pada algoritma XOR bila dikombinasi dengan Three Pass Protocolserta pengujian kinerja kompresi dan dekompresi algoritmaLZW yang diukur dari nilai rasio kompresi. Pengujian juga melibatkan pengukuran waktu eksekusi untuk setiap algoritma yang digunakan pada implementasi sistem.

6. Dokumentasi Sistem

Melakukan pembuatan dokumentasi sistem mulai dari tahap awal sampai dengan pengujian sistem.

1.7Sistematika Penulisan

Sistematika penulisan skripsi ini terdiri dari beberapa bagian utama, sebagai berikut:

BAB 1: PENDAHULUAN

Bab ini merupakan penjelasan mengenai latar belakang pemilihan topik penelitian “Perancangan Add On Keamanan Email Mozilla Thunderbird dengan Algoritma Kriptografi XOR dan Three Pass Protocol serta Kompresi Lempel Ziv Welch”, rumusan masalah, batasan masalah, tujuan penelitian, manfaat penelitian, metode penelitian serta sistematika penulisan.


(21)

Bab ini akan menjelaskan teori-teori yang berkaitan dengan kriptografi, algoritma kriptografi XOR, kompresi data, algoritma kompresi data LZW, Three Pass Protocol,

base64 encoding, serta email client Mozilla Thuderbird.

BAB 3: ANALISIS DAN PERANCANGAN SISTEM

Bab ini akan menjabarkan tentang analisis kebutuhan untuk menghasilkan suatu rancang bangun yang pada tahap selanjutnya diimplementasikan dengan bahasa pemrograman. Analisis dan perancangan meliputi analisis permasalahan, analisis persyaratan, pemodelan sistem serta perancangan antarmuka.

BAB 4: IMPLEMENTASI DAN PENGUJIAN SISTEM

Bab ini berisikan sejumlah informasi yang berkaitan dengan implementasi sistem hasil perancangan serta analisis kinerja sistem berdasarkan data yang diperoleh. Kinerja sistem dilihat dari keberhasilan enkripsi-dekripsi bila menggunakan Three Pass Protocol, performa kompresi yang diukur dari nilai rasio kompresi, serta waktu eksekusi untuk masing-masing algoritma.

BAB 5: KESIMPULAN DAN SARAN

Bab ini akan memuat kesimpulan secara umum dari uraian pada bab-bab sebelumnya, serta saran yang berguna untuk pengembangan lebih lanjut pada masa yang akan datang.


(22)

BAB II

TINJAUAN PUSTAKA

2.1 Kriptografi

Era dimana kita hidup saat ini merupakan era informasi. Informasi menjadi aset yang nilainya sama atau bahkan lebih tinggi nilainya bila dibandingkan dengan aset lainnya. Untuk itu sebagai sebuah aset informasi perlu dilindungi (dijaga keamanannya).Untuk dapat dikatakan aman (secured), informasi perlu disembunyikan dari orang yang tidak bertanggung jawab (confidentality), dilindungi dari perubahan oleh yang tidak bertanggung jawab (integrity) dan tersedia bagi pihak yang berhak untuk mengaksesnya ketika diperlukan (availability) [2].

Keberadaan komputer digital beserta media jaringan transmisi data elektronik yang menghubungkan setiap orang, menyebabkan beberapa aspek keamanan di atas mengalami perubahan. Selain itu, implementasi keamanan informasi mengalami perubahan dan menjadi lebih menantang.The International Telecommunication Union - Telecommunication Standardization (ITU-T) X.800 mendefinisikan 5 layanan yang berkaitan dengan target keamanan sebagai berikut[2].

1. Data confidentiality didesain untuk melindungi informasi dari serangan pihak lain, baik keseluruhan atau sebagian informasi serta untuk melindungi informasi dari serangan pengintaian dan analisis lalu lintas pertukaran informasi.

2. Data Integrity didesain untuk melidungi data dari perubahan, penyisipan, penghapusan dan pembalasan (replying) dari musuh atau penyerang.

3. Authentication merupakan layanan pembuktian keaslian pengirim dan penerima pada saat informasi dikirimkan melalui jaringan transmisi data.


(23)

4. Nonrepudiation merupakan layanan yang mencegah penyangkalan oleh pengirim maupun penerima informasi. Pengirim maupun penerima pesan dapat melakukan pembuktian pengiriman atau penerimaan informasi bila terjadi penyangkalan oleh pengirim maupun penerima informasi.

5. Acces Control menyediakan perlindungan untuk mencegah pihak yang tidak berhak untuk mengakses data termasuk membaca, menulis, merubah, mengeksekusi program dan lain- lain.

Terdapatduamekanisme yang dapat digunakan untuk menerapkan layanan keamanandata confidentiality yaitu kriptografi dan steganografi. Kriptografi (berasal dari bahasa latin cryptos “rahasia” dan graphein “tulisan”) merupakan ilmu dan seni untuk merubah informasi ke bentuk lain sehingga aman dan kebal terhadap serangan. Steganografi (steganos “tertutupi” dan graphein “menulis”) merupakan ilmu dan seni untuk menyembunyikan informasi pada media lain sehingga tidak tampak oleh orang lain.

Proses yang berlangsung pada kriptografi dibedakan menjadi dua proses yaitu, enkripsi dan dekripsi. Enkripsi adalah sebuah cara mentrasformasikan plaintext

menjadi ciphertext dibawah kendali sebuah kunci. Proses ini juga dikenal sebagai

encipherment. Kebalikan dari proses ini dikenal dengan istilah dekripsi atau

decipherment [12].

2.1.1 Kriptografi Kunci Simetris dan Kunci Asimetris

Kriptografi kunci simetris (symetric key encipherment atau secret-key cryptography) adalah kriptografi yang menggunakan sebuah kunci rahasia tunggal yang sama untuk melakukan enkripsi dan dekripsi. Kriptografi ini menggunakan sebuah kunci rahasia ketika akan mengenkripsi sebuah informasi dan kemudian menggunakan kunci yang sama untuk melakukan dekripsi terhadap ciphertexthasil enkripsi.

Proses enkripsi dan dekripsi informasi pesan pada kriptografi kunci publik diformulasikan sebagai berikut [2].


(24)

Enkripsi :�(�) =� (2.1)

Dekripsi :�(�) =� (2.2)

Dengan syarat, �(�(�)) = ���(�)�= � (2.3)

P (plaintext) adalah informasi asli yang belum mengalami enkripsi atau telah mengalami dekripsi setelah dienkripsi.C (ciphertext) adalah informasi yang telah mengalami enkripsi.K adalah kunci rahasia yang digunakan oleh pengirim dan penerima informasi.

Berbeda dengan kriptografi kunci simetris, kriptografi kunci asimetris (asymetric key enchiperment atau public key cryptography) menggunakan dua kunci yang berbeda untuk melakukan enkripsi dan dekripsi. Untuk menerapkan kriptografi kunci asimetris, seseorang yang terlibat harus memiliki dua buah kunci yang berbeda, sebuah kunci adalah kunci publik dan kunci lain adalah kunci privat. Enkripsi

plaintext dilakukan dengan sebuah kunci publik dan dekripsi ciphertext dilakukan dengan sebuah kunci privat yang sesuai.

Kunci publik merupakan kunci yang didistribusikan kepada setiap orang yang akan bertukar informasi dengan pemilik kunci privat. Kunci pablik digunakan oleh setiap orang untuk mengenkripsi pesan yang akan dikirimkan kepada pemilik kunci privat yang sesuai. Ketika pesan telah sampai kepada penerima, proses dekripsi dapat dilakukan dengan menggunakan kunci privat yang sesuai dengan kunci publik yang digunakan untuk mengenkripsi pesan tersebut.

Proses enkripsi dan dekripsi pesan pada kriptografi kunci publik diformulasikan sebagai berikut [2].

Enkripsi :��−������(�) =� (2.4)

Dekripsi :��−������� (�) =� (2.5)

P (plaintext) adalah informasi asli yang belum mengalami enkripsi atau telah mengalami dekripsi setelah dienkripsi.C (ciphertext) adalah informasi yang telah mengalami enkripsi.k-private dan k-public masing-masing menyatakan kunci privat dan kunci publik.


(25)

2.1.2 Algoritma Kriptografi XOR

Salah satu algoritma kriptografi simetri yang cukup sederhana adalah algoritma kriptografi XOR. Sesuai dengan namanya, algoritma ini melakukan enkripsi dan dekripsi terhadap sebuah informasi dengan menggunakan kunci tunggal dan operasi bit XOR.

Table 2.1 Operasi Bit XOR

A B A⊕ B

0 0 1 1

0 1 0 1

0 1 1 0

Beberapa keunggulan operasi XOR dalam melakukan enkripsi adalah [2]

a. Bersifat closure, artinya operasi XOR terhadap suatu plaintext yang panjangnya n-bit akan menghasilkan ciphertext yang panjangnya juga n-bit.

b. Besifat Assosiatif.

� ⊕(� ⊕ �) = (� ⊕ �)⊕ �

c. Bersifat Komutatif

� ⊕ � =� ⊕ �

Dengan demikian algoritma kriptografi XOR memiliki sifat commutative encryption. Perubahan urutan proses enkripsi dan dekripsi ganda terhadap sebuah

plaintext dengan menggunakan kunci yang sesuai akan menghasilkan plaintext yang sama, Dk2(Dk1(Ek2(Ek(P))))=Dk1(Dk2 (Ek2 (Ek1(P))))=P.

Sebagai contoh akan dilakukan enkripsi dan dekripsi sebanyak masing-masing dua kali terhadap plaintext: 10101110, k-1(kunci-1): 11101110 dan k-2(kunci-2): 01101001. Meskipun urutan proses enkripsi-dekripsi yang akan dilakukan berbeda,


(26)

operasi XOR akan menghasilkan plaintext yang sama bila jumlah enkripsi dan dekripsi yang dilakukan jumlahnya sama dan menggunakan kunci yang bersesuaian.

Tabel 2.2 Sifat Commutative Encryption Pada XOR Dk1(Dk2(Ek1(Ek2(P)))) Dk2 (Ek2 (Dk1(Ek1(P)))) P : 10101110

C1 = Ek2 C

(P) : 11000111

2 = Ek1(C1 C

) : 00101001

1=Dk2(C2 P =D

) : 01000000

k1(C1

P : 10101110

) : 10101110

C1 = Ek1 P= D

(P) : 01000000

k1(C1 C

) : 10101110

2=Ek2 P =D

(P) : 11000111

k2(C2) : 10101110

2.2 Pembangkit Bilangan Acak Semu Linear Congruential Generator (LCG)

Algoritma pembangkit bilangan bulat yang paling tua dan masih digunakan hingga saat ini adalah Linear Congruential Generator (LCG). Algoritma ini disebut juga pembangkit “Lehmer”, sebagai penghargaan bagi penciptanya D. H Lehmer, seorang perintis bidang teori bilangan komputasi elektronik [8]. Dalam sebuah tulisan P. Hellekalek mengemukakan bahwa sangat tidak mudah untuk menemukan pembangkit bilangan acak yang baik (aman) [4]. Yang dapat dilakukan oleh para praktisi simulasi maupun kriptografi adalah memilih algoritma mana yang paling baik meskipun algoritma tersebut tidaklah benar-benar menghasilkan bilangan acak.

Algoritma LCG didasarkan pada proses komputasi modulus bilangan bulat yang dilakukan secara rekursif sebanyak n tertentu. Persamaan komputasi modulus yang digunakan adalah sebagai berikut [8, 13].

�� = ��−1×�+� (����) (2.6)

xnpada persamaan tersebut mendefinisikan serangkaian bilangan bulat hasil modulo

terhadap m yang diawali dengan x0. Bilangan a disebut pengali (multiplier) dan b


(27)

2.3 Three Pass Protocol

Algoritma kriptografi XOR sebagai kriptografi kunci simetris membutuhkan mekanisme pertukaran kunci rahasia untuk dapat melakukan enkripsi dan dekripsi informasi.Dengan demikian, untuk menerapkanalgoritma kriptografi simetridiperlukan suatu media transmisi data yang benar-benar aman untuk mencegah penyusup mendapatkan kunci rahasia.Untuk mencegah pencurian kunci ketika didistribusikan, berbagai pendekatan dikembangkan oleh para ahli, salah satunya dengan menerapkan Three Pass Protocol.

Three Pass Protocolmerupakan protokol yang menjamin tidak adanya pertukaran kunci antara pihak-pihak yang melakukan enkripsi dan dekripsi.Protokol ini pertama kali dikembangkan oleh Adi Shamir, seorang ahli kriptografi berkebangsaan Israel pada tahun 1980. Protokol yang dikembangkannya dikenal dengan namaShamir No-Key Exchange Protocol. Protokol ini kemudian dimodifikasi oleh James Massey dan Jim K. Omura (keduanya adalah pakar teori informasi berkebangsaan Amerika Serikat) pada tahun 1982.

Proses pada Three Pass Protocoladalah sebagai berikut[6, 13].

1. Pengirim melakukan enkripsi terhadap plaintext dengan kunci rahasia miliknya

Ksender (C1 = Ek_sender

2. Penerima melakukan enkripsi terhadap cipher-1 dengan kunci rahasia miliknya

K

(P)), kemudian mengirimkan cipher-1 ke penerima.

receiver (C2 = Ek_receiver(C1

3. Pengirim melakukan dekripsi terhadap cipher-2 dengan kunci rahasia miliknya (P )), kemudianmengirimkan cipher-2 ke pengirim.

1

= Dk_sender(C2

4. Penerima kemudian melakukan dekripsi terhadap P )), hasilnya dikirimkan kembali ke penerima.

1 dengan kunci rahasia

miliknya dan akan menghasilkan plaintext semula (P = Dk_recaiver(P1)).

Gambar berikut memberikan gambaran mengenai proses enkripsi-dekripsi yang berlangsung pada implementasi Three Pass Protocol.


(28)

Gambar 2.1 Three Pass Protocol

Tampak bahwa pada Three Pass Protocol terjadi tiga kali pass (pengiriman informasi) yang didalamnya dilakukan proses enkripsi ganda (enkripsi dengan

k_sender diikuti dengan enkripsi dengan k_recaiver) dan dekripsi ganda (dekripsi dengan k_sender dan k_recaiver). Dengan demikian berlaku proses,

D(D(E(E(k_sender,P),k_recaiver ),k_sender ),k_recaiver )=P.

Pada penerapan Three Pass Protocolsebuah algoritma kriptografi harus memenuhi aturan commutative encryption.Dengan demikian algoritma kriptografi XOR dapat diterapkan denganThree Pass Protocol.

2.4 Kompresi Data

Kompresi data dalam konteks ilmu komputer, adalah ilmu (seni) untuk merepresentasikan informasi dalam sebuah bentuk yang padat[10]. Kompresi data


(29)

merupakan salah satu aspek penting sebagai pemicu revolusi dalam bidang multimedia digital.Kompresi data bertujuan untuk mereduksi jumlah bit-bit yang digunakan untuk menyimpan atau mentransmisikan informasi[9]. Defenisi lain menyebutkan, kompresi data adalah proses perubahan rentetan data input (data asli) ke dalam rentetan data lain (data output atau data terkompresi) yang berukuran lebih kecil [14].

Lebih spesifik lagikompresi data merupakan teknik atau desain algoritma yang efisien untuk [10]:

a. Merepresentasikan data dalam sebuah cara yang mengandung sedikit redudansi b. Mengurangi redudansi dalam data

c. Mengimplementasikan algoritma kompresi, termasuk didalamnya kompresi dan dekompresi.

2.4.1 Kompresi dan Dekompresi Data

Kompresi data dapat dipandang sebagai bentuk representasi yang efisien dari sebuah data sumber seperti, teks, gambar, suara atau kombinasi ketiganya dalam sebuah video misalnya.Tujuannya adalah untuk merepresentasikan data sumber dalam bentuk digital dengan jumlah bit-bit sesedikit mungkin [10].Algoritma kompresi data disebut kompresor (compressor).

Berkebalikan dengan kompresi, dekompresi merupakan cara yang diterapkan pada sebuah bentuk terkompresi untuk mengembalikannya ke bentuk aslinya (sebelum mengalami proses kompresi). Dekompresi yang efisien juga menjadi sebuah pertimbangan penting dalam konteks kompresi data, sebab bila sebuah algoritma kompresi mampu menghasilkan bentuk paling minimal sekalipun pada sebuah kasus, implementasinya akan mengalami kendala bila tidak terdapat mekanisme lain yang mampu mengembalikan hasil kompresi ke bentuk asli atau setidaknya mendekati bentuk asli (sebelum mengalami kompresi). Algoritma dekompresi data disebut dekompresor (decompressor).


(30)

2.4.2 Kompresi Lossless dan Lossy

Terdapat dua bagian besar kelompok kompresi bila ditinjau dari tersedianya kemungkinan (peluang) dalam merekonstruksi hasil kompresi kembali ke bentuk asli. Kedua kelompokalgoritma tersebut adalah kompresi data losslessdankompresi data

lossy[10].

Sebuah kompresi disebut lossless hanya jika memungkinkan untuk merekonstrusi bentuk data terkompresi secara benar-benar persis seperti data asli (sebelum di kompresi). Tidak ada satupun informasi yang hilang selama proses kompresi-dekompresi. Kompresi Lossless disebut juga dengan kompresi reversible

karena data asli secara persis dapat diperoleh melalui proses dekompresi.

Gambar 2.2 Kompresi Data Lossless

Teknik kompresi ini banyak digunakan ketika bentuk data asli dari sebuah data benar-benar diperlukan sehingga tidak boleh ada sedikitpun informasi yang hilang. Bentuk data tersebut misalnya, gambar analisis medis, teks dan gambar yang digunakan pada proses peradilan.

Berbeda dengan kompresi lossless, sebuah metode kompresi disebut lossy

apabila tidak ada kemungkinan untuk merekonstrusi bentuk terkompresi secara persis sama dengan bentuk asli. Mungkin terdapat beberapa bagian data yang tidak signifikan sehingga dapat hilang pada proses kompresi-dekompresi. Kata tidak signifikan disini mengacu pada syarat kualitas tertentu yang harus dipenuhi oleh hasil rekonstruksi [10].

Gambar 2.3 Kompresi Data Lossy

Bentuk Asli “Bawakan File ABC”

Bentuk Terkompresi “1100101”

Hasil Dekompresi “Bawakan File ABC”

Bentuk Asli “3.147223…”

Bentuk Terkompresi “110111”

Hasil Dekompresi “3.14”


(31)

Kompresi lossy disebut juga kompresi irreversible karena tidak mungkin secara persis untuk mengembalikan data hasil kompresi persis seperti bentuk semula melalui proses dekompresi [10]. Hasil dekompresi umunya akan berbeda dari data asli, namun demikian berbagai pendekatan digunakan sehingga hasilnya meskipun tidak persis sama akan mendekati bentuk aslinya.

Salah satu besaran yang digunakan untuk mengukur kinerja kompresi suatu algoritma kompresi adalah rasio kompresi (compression ratio), yang dinyatakan sebagai berikut.

�� = ������������������� ���������������������� � 100% (2.7)

Cr menyatakan compression ratio (rasio kompresi).

2.4.3 Algoritma Kompresi Lempel Ziv Welch(LZW)

Algoritma kompresi Lempel Ziv Welch (LWZ) merupakan salah satu algoritma kompresi lossless berbasis dictionary. Algoritma ini dikembangkan oleh Terry Welch sebagai penerus algoritma LZ77 dan LZ78 yang sebelumnya ditemukan oleh Abraham Lempel dan Jacob Ziv pada tahun 1977 dan 1978.

Algoritma ini bersifat adaptif dan efektif gunakan dalam mengkompresi pesan teks, karena prinsip dari algoritma ini adalah menyimpan pasangan kode-kode dan deretan karakter yang pernah muncul pada bagian teks sebelumnya dalam sebuah

dictionary. Kode-kode singkat tersebut digunakan sebagai substitusi deretan karakter pada hasil kompresi sekaligus sebagai indeks dalam kamus selama proses kompresi berlangsung.

Proses kompresi diawali oleh proses inisiasi dictionary dengan karakter-karakter yang digunakan penyusun input stream (misalnya deretan karakter ASCII). Selama proses kompresi dilakukan, algoritma akan mengidentifikasi deretan karakter dalam input stream dan memeriksa apakah deretan tersebut terdapat dalam dictionary.


(32)

Bila deretan karakter tersebut ditemukan dalam dictionary, diperiksa kembali apakah dengan memasangkan deretan karakter tersebut dengan karakter berikutnya masih ditemukan dalam dictionary, proses ini diulangi terus-menerus hingga deretan karakter tersebut tidak ditemukan lagi dalam dictionary. Bila sudah tidak ditemukan, maka indeks pada dictionary ditambahkan dan dipasangkan dengan deretan karakter tersebut, lalu deretan karakter terakhir yang masih ditemukan pada dictionary akan digantikan dengan indeks yang sesuai sebagai outputnya. Proses yang berlangsung dalam kompresi data LZW dinyatakan sebagaiberikut.

Tabel 2.3Pseudocode Algoritma Kompresi LZW [10] 1 : 2 : 3 : 4 : 5 : 6 : 7 : 8 : 9 : 10: 11: 12:

word ‘’

while not EOF do

x  read_next_character()

if word + x is in dictionary then word  word + x

else

output the dictionary index for word add word + x to the dictionary

word  x end if end while

output the dictionary index for word

Sebagai contoh sebuah string “BUKAN BUKA” akan dikompresi dengan algoritma LZW, prosesnya adalah sebagai berikut (karakter yang digunakan adalah karakter standar ASCII).

Tabel 2.4 Proses Kompresi LZW untuk String “BUKAN BUKA”

lookAhead nextChar lookAheadNext lookAheadNext ada

dalam Dictionary? Output

Tambahan dalam

dictionary

B U BU Tidak 66 BU-256 U K UK Tidak 85 UK-257 K A KA Tidak 75 KA-258 A N AN Tidak 65 AN-259 N <Sp> N<Sp> Tidak 78 N<Sp>-260 <Sp> B <Sp>B Tidak 32 <Sp>B-261

B U BU Ya - -

BU K BUK Tidak 256 BUK-262

K A KA Ya - -


(33)

Hasil kompresi adalah <66><85><75><65><78><32><256><258> masing-masing berukuran 9 bit. Maka hasil kompresi hanya sepanjang 9 × 8 = 72 bit. Sedangkan input adalah 10 byte ASCII, yang ukurannya 10 × 8 = 80 bit. Dengan demikian diperoleh penghematan sebanyak 8 bit.

Proses dekompresi juga melibatkan proses yang mirip dengan proses kompresi, hanya saja outputnya adalah karakter yang indeksnya sesuai dengan entry

dalam dictionary dan selama proses perubahan indeks ke bentuk karakter dilakukan saat itu pula ditambahkan isi dictionary.

Bila indeks tidak ditemukan pada dictionary, output yang digunakan adalah output yang terakhir kali diperoleh sebagai hasil konversi indeks pada kamus dipasangkan dengan karakter pertama dari output tersebut. Sedangkan untuk entri baru pada kamus ditambahkan output yang sebelumnya dipasangkan dengan karakter pertama output yang baru saja dihasilkan.Proses yang berlangsung dalam dekompresi data LZW dinyatakan sebagaiberikut.

Tabel 2.5Pseudocode AlgoritmaDekompresi LZW [9] 1 :

2 : 3 : 4 : 5 : 6 : 7 : 8 : 9 : 10: 11: 12: 13: 14:

read a token x from the compressed file look up dictionary for element at x output element

word  element while not E0F do

read x

look up dictionary for element at x if there is no entry yet for index x then

element  word + firstCharOfWord end if

output element

add word + firstCharOfElement to the dictionary word  element

end while

Misalnya hasil kompresi sebelumnya <66><85><75><65><78><32><256><258> akandidekompresi ke bentuk semula.


(34)

Tabel 2.6 Proses Dekompresi LZW untuk MenemukanString “BUKAN BUKA”

Dengan demikian diperoleh output “BUKAN BUKA”. Pada kasus ini indeks selalu ditemukan dalam dictionary. Bila kondisi tertentu menyebabkan indeks tidak ditemukan dalam dictionary (ditunjukkan dengan temp yang berisi null), maka output yg dihasilkan adalah karakter sebelumnya ditambahkan dengan karakter pertama dari karakter tersebut. Misalnya bila karakter sebelumnya “A”, maka outputnya adalah “AA”. Dan ke dalam kamus ditambahkan “AA”.

2.5 Base64Encoding

Pada dasarnya internet mail didesain untuk mentransfer data plain ASCII text saja[5]. Karakter-karakter yang non-printable pada ASCII maupun standar lainnya akan mengalami kendala ketika dikirimkan melalui media email. Umumnya karakter-karakter tersebut akan berubah menjadi simbol-simbol lain yang respresentasinya berbeda. Untuk mencegah hal seperti ini salah satu cara yang dapat dilakukan adalah menerapkan base64encoding. Base64encoding akan merubah deretan data ke bentuk lain yang merupakan karakter-karakter universal (printable). Dengan merubah data ke bentuk printable, diharapkan tidak terjadi perubahan maupun kehilangan data ketika dikirimkan melalui media telekomunikasi.

Deretan karakter pertama sekali didefenisikan dalam bentuk biner. Kemudian untuk menerapkan encode bit-bit ini kemudian masing-masing dikelompokkan 6 bit,

prev Temp Temp = ‘’ ? Entry Output Tambahan dalam

Dictionary

B - - - B -

B U Tidak U U BU-256 U K Tidak K K UK-257 K A Tidak A A KA-258 A N Tidak N N AN-259 N <Sp> Tidak <Sp> <Sp> N<Sp>-260 <Sp> BU Tidak BU BU <Sp>B-261 BU KA Tidak KA KA BUK-262


(35)

dan kemudian dikonversi ke bilangan desimal. Setelah diperoleh bentuk desimal data kemudian disubstitusi dengan karakter yang indeksnya bilangan desimal tersebut pada sebuah himpunan karakter yang berisikan 64 buah karakter printable pada ASCII. Himpunan karakter tersebut adalah sebagai berikut.

Tabel 2.7Himpunan Karakter yang Digunakan pada Base64 Encoding

Indeks Karakter Indeks Karakter Indeks Karakter Indeks Karakter 0 A 16 Q 32 g 48 w 1 B 17 R 33 h 49 x 2 C 18 S 34 i 50 y 3 D 19 T 35 j 51 z 4 E 20 U 36 k 52 0 5 F 21 V 37 l 53 1 6 G 22 W 38 m 54 2 7 H 23 X 39 n 55 3 8 I 24 Y 40 o 56 4 9 J 25 Z 41 p 57 5 10 K 26 a 42 q 58 6 11 L 27 b 43 r 59 7 12 M 28 c 44 s 60 8 13 N 29 d 45 t 61 9 14 O 30 e 46 u 62 + 15 P 31 f 47 v 63 /

Padding (masing-masin 2 bit) =

Prinsip kerja algoritma pada base64encoding dapat digambarkan sebagai berikut.

Gambar 2.4Proses Base64 Encoding

Karena jumlah bit input tidak habis dibagi 6, diperlukan padding sebanyak 4 bit, sehingga output hasil encoding adalah rkqljD==.

Deretan Input Biner 1 0 1 0 1 1 1 0 0 1 0 0 1 0 1 0 1 0 1 0 0 1 0 1 1 0 0 0 1 1 1 1 Pengelompokan (6 Bit) 101011 100100 101010 100101 100011


(36)

Untuk mengembalikan data ke deretan bit semula diperlukan infomasi mengenai panjang bit sebelum di-encoding. Dengan informasi ini deretan bit hasil konversi karakter ke bentuk biner dikelompokkan dengan panjang masing-masing sama dengan panjang bit data sebelum di-encode. Sebelum proses konversi dilakukan akan dicek terlebih dahulu padding yang disimbolkan dengan karakter ’=’. Bila terdapat padding maka karakter terakhir di-decode sepanjang selisih 6 dengan panjang

bitpadding. Himpunan karakter yang digunakan pada proses decoding sama dengan himpunan karakter yang digunkan pada proses encoding. Untuk data pada contoh akhir input ditemukan simbol ‘=’ sebanyak 2 karakter, hal ini menunjukkan bahwa terdapat padding sepanjang 4 bit. Dengan demikian karakter terakhir hanya dikonversi sepanjang 2 bit. Bila panjang bit tiap karakter sebelum di-encode adalah 8 bit, maka diperoleh output sebagai berikut.

Gambar 2.5Proses Base64 Decoding

2.6 Mozilla Thunderbird dan Add On pada Mozilla Thunderbird

Mozilla Thunderbird merupakan salah satu produk Mozilla Foundation, yang pertama kali dirilis pada tanggal 7 Desember 2004. Perangkat ini merupakan aplikasi mail client atau (MUA - Mail User Agent) yang bersifat free, open source dan multi-platform.Perangkat ini dikembangkan dengan menggunakan bahasa pemrograman C++, XUL, Javascript dan CSS.

Deretan Input r k q l j D==

Konversi (6 bit) 101011 100100 101010 100101 100011 11


(37)

Gambar 2.6 Program Email Client Mozilla Thunderbird

Seperti perangkat lunak produk Mozilla Foundation lainnya perangkat ini juga dapat ditingkatkan kemampuannya melalui perangkat tambahan (extension) atau dikenal juga dengan istilah add on. Add on dapat dirancang dan dikembangkan siapa saja yang memiliki kemampuan menggunakan bahasa pemrograman umum seperti

javascript dan untuk mengmbangkan user interface dapat digunakan XUL

(XML-User Interface Language)dan CSS.

2.7 Unified Modelling Language

Unified Modelling Language merupakan suatu kumpulan konvensi pemodelan yang digunakan untuk menentukan atau menggambarkan sebuah sistem yang terkait dengan objek. Metode ini dikembangkan oleh Grady Booch dan James Rumbaugh pada tahun 1994 (Ivar Jacobson bergabung tahun 1995) sebagai standar tunggal untuk mengembangkan sistem berorientasi objek. Sebelumnya telah dikembangkan metode-metode terdahulu untuk pemodelan data dan pemodelan proses. Pemodelan-pemodelan yang paling terkenal pada akhir tahun 80-an dan awal tahun 90-an diantaranya adalah, Metode Booch oleh Grady Booch, Object Modelling Technique

(OMT) dari James Rumbaugh, dan Object Oriented Software Engineering (OOSE) dari Ivar Jacobson [17].


(38)

UML menawarkan diagram yang dikelompokkan menjadi lima persfektif berbeda untuk memodelkan suatu sistem yaitu, usecase diagram, diagram struktur satis (class diagram dan object diagram), diagram interaksi (sequence diagram dan

collaboration diagram), diagram state (statechart diagram dan activity diagram) dan diagram implementasi (component diagram dan deployment diagram) [17].

Beberapa diagram yang nantinya digunakan untuk menganalisis dan merancang sistem pada penelitian ini adalah use case diagram, activity diagram, sequence diagram dan class diagram.

2.7.1 Use Case Diagram

Use case diagram secara grafis menggambarkan interaksi antara sistem dan pengguna (pengguna juga dapat berupa sistem eksternal yang berinteraksi dengan sistem yang sedang dianalisis). Dengan kata lain, use case diagramsecara grafis mendeskripsikan siapa yang menggunakan sistem dan dengan cara apa pengguna mengharapkan interaksi dengan sistem itu. Use case naratif digunakan untuk menggambarkan secara tekstual urutan langkah-langkah dari setiap interaksi. Sebuah use case diagram terdiri dari actor dan use case [17].

Actoradalah segala sesuatu yang perlu berinteraksi dengan sistem untuk pertukaran informasi. Use case adalah urutan langkah-langkah yang secara tindakan saling terkait (skenario), baik terotomatisasi maupun secara manual, untuk melengkapi satu fungsi tertentu. Use case menggambarkan fungsi-fungsi sistem dari sudut pandang pengguna eksternal dan dalam sebuah cara dan terminologi yang mereka pahami. Contoh diagram use casedapat dilihat pada gambar berikut.


(39)

Gambar 2.7Contoh Sebuah Use Case Diagram [3]

2.7.2 Activity Diagram

Activity diagram adalah sebuah diagram yang dapat digunakan untuk menggambarkan secara grafis aliran proses bisnis, langkah-langkah sebuah use case atau logika

behavior (metode) objek. Diagram ini juga dapat digunakan untuk memodelkan action

yang akan dilakukan saat sebuah operasi dieksekusi dan memodelkan hasil dari action

tersebut. Diagram ini serupa dengan flowchart dimana secara grafis diagram ini menggambarkan rangkaian aliran aktivitas baik proses bisnis atau use case. Diagram ini berbeda dengan flowchart dimana diagram ini menyediakan sebuah mekanisme untuk menggambarkan kegiatan yang tampak secara parallel [17].


(40)

Gambar 2.8Contoh Sebuah Activity Diagram [3]

2.7.3Class Diagram

Class diagram merupakan diagram grafis mengenai struktur objek statis dari sebuah sistem, menunjukkan kelas-kelas objek yang menyusun sebuah sistem dan juga hubungan antara kelas objek tersebut. Pada sebuah class diagram hubungan antara


(41)

setiap objek digambarkan dengan asosiasi dan multiplicity serta generalisasi/spesialisasi. Asosiasi dan multiplicity menunjukkan jumlah interaksi yang mungkin antara dua objek, sedangkan generalisasi/spesialisasi berkaitan erat dengan pewarisan pada konsep pemrograman berorientasi objek [17].

Gambar 2.9Contoh Sebuah Class Diagram [3]

2.7.4 Sequence Diagram

Sebuah sequence diagram menggambarkan dengan sangat detail bagaimana sebuah objek berinteraksi satu sama lain sepanjang waktu. Atau dengan kata lain, sequence


(42)

diagram adalah diagram UML yang memodelkan logika sebuah use case dengan cara menggambarkan interaksi pesan di antara objek-objek dalam rangkaian waktu. Masing-masing objek (participant) digambarkan dengan simbol objek UML, referensi pada use case digambarkan dengan lifeline-sebuah garis vertikal. Behaviour atau operasi yang perlu dilakukan oleh masing-masing objek digambarkan dengan kotak segi empat pada lifelineobjek. Kotak-kotak tersebut menggambarkan kode program. Anak panah antara garis menggambarkan interaksi atau pesan yang telah dikirim kepada sebuah objek tertentu untuk menginvokasi salah satu dari operasinya untuk memenuhi sebuah permintaan. Respon dari sebuah objek digambarkan dengan garis panah putus-putus horizontal yang arahnya berlawanan dengan garis panah pesan yang dikirimkan [17].


(43)

2.8 Kompleksitas Algoritma

Secara informal sebuah algoritma adalah prosedur komputasi yang didefenisikan dengan baik dan menerima sebuah nilai atau himpunan nilai sebagai inputnya serta menghasilkan sebuah nilai atau himpunan nilai sebagai outputnya. Jadi algoritma adalah sekuens dari langkah-langkah komputasi yang mentransformasikan input menjadi output. Algoritma juga dapat dipandang sebagai sebuah tool untuk menyelesaikan suatu masalah komputasi yang terdefenisi dengan baik [1].

Dalam konteks ilmu komputer, kajian sebuah algoritma bukan hanya sebatas kemampuan algoritma tersebut dalam menyelesaikan sebuah persoalan. Keterbatasan perangkat keras yang digunakan untuk mengeksekusi sebuah algoritma menyebabkan perlunya analisis efisiensi kinerja algoritma. Tujuannya untuk meminimalkan penggunaan sumber daya perangkat keras yang digunakan ketika mengeksekusi langkah-langkah pada sebuah algoritma. Kompleksitas yang digunakan dalam menganalisis sebuah algoritma dapat dikategorikan ke dalam dua kelompok yaitu kompleksitas waktu (time complexity) dan kompleksitas ruang (space complexity).

Kajian mengenai kompleksitas algoritma sesungguhnya bukanlah bertujuan untuk menunjukkan jumlah langkah yang dilakukan secara pasti dalam sebuah algoritma. Analisis asimtotik (analisis kompleksitas) pada dasarnya hanya bertujuan untuk menunjukkan hubungan antara ukuran input (n) dengan kompleksitas eksekusi algoritma. Untuk mengkaji kompleksitas sebuah algoritma, seorang analis harus membuat sebuah model fungsi yang domainnnya berupa bilangan bulat n (ukuran input) serta relasinya menunjukkan hubungan antara n dengan jumlah eksekusi yang diperlukan pada sebuah algoritma.

Dalam menganalisis sebuah algoritma digunakan beberapa notasi asimtotik yaitu notasi O(n) (Big-O), Ω(n) (Big-Omega), serta Θ(n) (Big-Tetha).yang masing-masing menunjukkan batas bawah (Lower Bound), batas atas (Upper Bound) serta batas bawah dan batas bawah (Tight Bound) dari fungsi asimtot. Selanjutnya analisis yang digunakan untuk mengkaji algoritma dalam penelitian ini adalah analisis dengan notasi asimptotik Big-O(Upper Bound).


(44)

2.8.1 Notasi Big-O

Sebelumnya telah disebutkan bahwa notasi Big-O menggunakan kajian asimtotik batas atas (upper bound asymptotic). Notasi ini digunakan untuk menunjukkan relasi antara hubungan input terhadap penggunaan sumberdaya ketika sebuah algoritma dieksekusi. Notasi Big-O pertama sekali diperkenalkan oleh Paul Bachman pada tahun 1984. Istilah lain untuk notasi ini adalah notasi Landau, notasi Bachman-Landau atau notasi asimtotik.

Untuk sebuah fungsi g(n), diperoleh notasi Big-O untuk fungsi ini O(g(n))

sebagai berikut [1],

O(g(n)) = { f(n) : terdapat konstanta positif c dan n0 0 <f(n) < cg(n) , untuk semua n > n

sehingga diperoleh

0}

Untuk memperoleh notasi f(n) sebagai notasi Big-O dari fungsi g(n) dapat digunakan tiga teorema berikut [2].

1. Teorema pertama. Jika ditemukan sebuah konstanta positif K sehingga

f(n)<K×g(n)diperoleh f(n) = O(g(n)) dengan menggunakan dua aturan sederhana berikut.

a. Rubah semua konstanta koefisien dari n dalam f(n) menjadi bilangan 1.

b. Ambil pangkat tertinggi pada f(n). Urutan kompleksitas pangkat dari terendah ke tertinggi adalah sebagai berikut

(1), (log n), (n), (n log n), (n log n log log n), (n2), (n3),…,(nk), (2n), (n!), (nn 2. Teorema kedua.

)

Jika f1(n) = O(g1(n)) dan f2(n) = O(g2

f

(n)), maka

1(n) + f2(n) = O(g1(n) + g2

3. Teorema Ketiga.

(n)) (2.8)

Jika f1(n) = O(g1(n)) dan f2(n) = O(g2

f

(n)), maka


(45)

Sebagai contoh, diberikan sebuah fungsi f(n) = (2n + 10n5) + n log2

1. Atur semua koefisienn menjadi bilangan 1 diperoleh f(n)=(2

n + 100

maka dengan menggunakan ketiga teorema tersebut diperoleh notasi Big-O sebagai berikut.

n

+ n5) + n log2

2. Dengan melihat urutan tingkat kompleksitas didapatkan O(f(n)) = 2

n + 1 n.

Grafik berikut menunjukkan pertumbuhan kompleksitas.

Gambar 2.11 Grafik Perbandingan Pertumbuhan Kompleksitas[16]

Pada grafik tersebut terlihat bahwa kompleksitas constantO(1) sama sekali tidak terpengaruh akibat pertumbuhan input. Sedangkan untuk kompleksitas

logarithmic O(log n) dan polynomial O(n2) terlihat bahwa pertumbuhan kompleksitas jauh lebih lambat bila dibandingkan dengan pertumbuhan kompleksitas exponential (2n), factorial (2!) dansuperexponential (nn).


(46)

BAB III

ANALISIS DAN PERANCANGAN

3.1 Analisis Sistem

Analisis sistem pada dasarnya merupakan tahapan yang ditujukan untuk menciptakan pemahaman yang menyeluruh terhadap kebutuhan sistem sehingga diperoleh gambaran tugas-tugas yang akan dikerjakan sistem. Hal ini akan membantu pemodelan rancang bangun sistem yang nantinya akan diimplementasikan dalam bentuk nyata.

3.1.1 Analisis Masalah

Untuk mengidentifikasi masalah digunakan diagram Ishikawa (fishbone diagram). Diagram Ishikawa adalah sebuah alat grafis yang digunakan untuk mengidentifikasi, mengeksplorasi dan menggambarkan suatu masalah serta sebab dan akibat dari masalah tersebut [16]. Diagram ini juga sering disebut sebagai diagram sebab-akibat atau diagram tulang ikan. Identifikasi terhadap permasalahan akan membantu analisis persyaratan sistem yang nantinya akan dikembangkan.

Masalah utama yang mendapat perhatian adalah kenyamanan dan keamanan penggunaan layanan email client. Selanjutnya masalah ini diuraikan ke dalam beberapa kategori yaitu, kategori pengguna layanan email (people), implementasi kriptografi (method), ukuran pesan (material) dan distribusi kunci (procedure).

Untuk kategori pengguna layanan email, penyebab masalah yang mungkin muncul adalah pesan yang dikirimkan oleh pengguna mungkin bersifat rahasia, akibatnya bila pesan ini dicuri oleh orang yang tidak bertanggung jawab kemungkinan akan merugikan pengguna. Untuk kategori implementasi kriptografi, penyebab


(47)

masalah yang mungkin muncul adalah proses enkripsi pesan melalui operasi bit dapat menghasilkan ciphertext yang dikategorikan sebagai karakter non-printable, akibatnya bila ditransmisikan melalui media internet mail akan menimbulkan representasi yang salah sehingga hasil proses dekripsi berbeda dengan informasi asli (plaintext).Untuk kategori ukuran pesan, penyebab masalah yang mungkin muncul adalah ukuran pesan telalu besar dan bahkan semakin besar ketika mengalami encoding (enkripsi maupun proses encoding base64), sehingga membebani media transmisi data dan waktu yang diperlukan untuk memproses pesan ini dengan Three Pass Protocol akan semakin lama. Sedangkan untuk kategori distribusi kunci, penyebab masalah adalah implementasi kriptografi simetri yang membutuhkan media transmisi yang benar-benar aman untuk mendistribuksikan kunci akibatnya bila kunci dicuri oleh pihak yang tidak bertanggung jawab maka pengguna (baik pengirim maupun penerima pesan) akan dirugikan. Seluruh kategori dan sebab akibat yang disebutkan kemudian dimuat dalam sebuah diagram Ishikawa sebagai berikut.

Gambar 3.1 Diagram Ishikawa untuk AnalisisPermasalahan Sistem

Pada diagram Ishikawa diatas masalah utama ditunjukkan oleh segi empat paling kanan (kepala ikan), sedangkan kategori ditunjukkan oleh segi empat yang dihubungkan oleh sebuah garis ke tulang utama (garis horizontal yang terhubung ke kepala ikan). Selanjutnya sebab akibat yang muncul ditunjukkan oleh tulang-tulang kecil yang diwakili oleh garis panah yang mengarah ke tulang-tulang kategori masalah.


(48)

3.1.2 Analisis Persyaratan (Requirement Analysis)

Analisis persyaratan sebuah sistem dikelompokkan ke dalam dua bagian besar yaitu, analisis persyaratan fungsional dan analisis persyaratan non-fungsional.

3.1.2.1 Analisis Persyaratan Fungsional

Persyaratan fungsional adalah segala sesuatu yang harus dimiliki oleh sistem. Persyaratan fungsional sistem yang akan dirancang antara lain sebagai berikut:

1. Sistem harus menyediakan sumberdaya untuk melakukan enkripsi dan dekripsi dengan menerapkan Three Pass Protocol. Enkripsi dan dekripsi dilakukan dengan operasi XOR, dimana kunci yang digunakan panjangnya sama dengan ukuran pesan input. Kunci dibangkitkan dengan algoritma pembangkit bilangan acak LCG.

2. Pada penerapan Three Pass Protocol sistem juga harus menyediakan sumberdaya untuk menerapkan mekanisme kompresi dan dekompresi dengan algoritma LZW. 3. Sistem juga harus menyediakan fungsi base64 encoding untuk menghindari

perubahan representasi informasi akibat munculnya karakter non-printable pada

chipertext.

3.1.2.2 Analisis Persyaratan Non-Fungsional

Persyaratan non-fungsional adalah persyaratan apa yang harus dilakukan sistem. Seringkali berupa batasan atau sesuatu yang menjadi perhatian stakeholder sebuah sistem. Beberapa persyaratan non-fungsional yang harus dipenuhi oleh sistem yang dirancang adalah sebagai berikut.

1. Penggunaan add on pada perangkat lunak email client Mozilla Thunderbird tidak menimbulkan gangguan fungsionalitas aplikasi Mozilla Thunderbird.

2. Implementasi sistem harus memperhatikan efisiensi operasi yang harus dilakukan oleh sistem, waktu eksekusi proses yang terlibat pada setiap tahap Three Pass


(49)

Protocol serta kemudahan penggunaan sehingga tidak menimbulkan persepsi yang kurang baik oleh pengguna.

3. Penggunaan sistem harus menghindari munculnya biaya tambahan.

4. Untuk menjaga kerahasiaan kunci, pengguna tidak perlu mengetahui kunci yang digunakan pada proses enkripsi dan dekripsi.

3.1.2.3 Pemodelan Persyaratan Sistem dengan Use Case

Pemodelan sistem dilakukan untuk memperoleh gambaran yang lebih jelas tentang objek apa saja yang akan berinteraksi dengan sistem serta hal-hal apa saja yang harus dilakukan oleh sebuah sistem sehingga sistem dapat berfungsi dengan baik sesuai dengan fungsionalitasnya.

Perancangan fungsionalitas perangkat lunak add on yang nantinya akan dikembangkan dimodelkan dengan diagram use case. Aktor yang nantinya akan berinteraksi dengan sistem adalah pengguna. Pengguna dikategori sebagai dua entitas yang saling bertukar informasi yaitu, pengirim dan penerima.

Sesuai dengan analisis kebutuhan sistem, beberapa hal yang nantinya harus dilakukan sistem adalah :

1. Menerapkan kompresi data LZW sebelum pesan dienkripsi pada tahap awal

Three Pass Protocol dan dekompresi data LZW setelah didekripsi pada tahap akhir Three Pass Protocol.

2. Melakukan enkripsi dan dekripsi pesan teks yang terdapat pada emaildengan menerapkan Three Pass Protocol.

3. Membangkitkan kunci dengan algoritma LCG untuk menghasilkan kunci sepanjang pesan yang akan dienkripsi.

4. Untuk menjaga agar tidak terjadi kehilangan informasi pada saat ditransmisikan, terutama untuk karakter-karakter yang non-printable (misalnya control character

pada ASCII), maka setiap kali akan ditransmisikan pesan terlebih dahulu di -encode dengan menggunakan algoritma base64 encoding. Kemudian ketika akan


(50)

dienkripsi atau didekripsi pesan terlebih dahulu di-decodemenggunakan algoritma base64 decoding.

Berdasarkan informasi kebutuhan sistem dan aktor yang berperan, diagram use case berikut dirancang sebagai pemodelan persyaratan sistem.

Pengguna

Pengirim' Penerima

Add On Kemanan Email dengan Kriptografi XOR Three Pass Protocol dan Kompresi Data LZW

Kontrol Proses Three Pass Protocol

Enkripsi

Dekripsi Encode base64

Decode Base64

Kompresi

Dekompresi «uses»

«uses»

«uses»

«uses» «uses»

«uses»

Key Generate «extends»

Gambar 3.2Use CaseDiagram Sistem yang Akan dikembangkan

Pada diagram tersebut tampak bahwa seorang pengguna hanya bekerja dengan mengakses use case kontrol proses Three Pass Protocol. Pengguna tidak perlu mengetahui secara persis proses apa saja yang terjadi pada setiap tahap. Dengan demikian untuk memutuskan proses apa yang nantinya dilakukan pada setiap tahap menjadi tanggung jawab sistem. Proses kompresi-dekompresi serta encoding

-decoding tidak diinisialisasi oleh pengguna, melainkan secara otomatis dijalankan oleh sistem ketika proses-proses ini diperlukan. Sedangkan enkripsi dan dekripsi dipilih oleh pengguna setiap tahap, namun pilihan pengguna ini tetap akan dievaluasi


(51)

oleh sistem, apakah urutan proses yang dipilih oleh pengguna sesuai dengan Three Pass Protocol. Untuk menjaga agar proses yang dipilih oleh pengguna (baik tahap enkripsi maupun dekripsi) selalu tepat, sistem memberikan penanda pada pesan yang telah diproses sehingga dengan penanda ini sistem dapat memutuskan apa yang akan dilakukan selanjutnya.

Berikut ini merupakan dokumentasi naratif untuk use case Kontrol Proses

Three Pass Protocol.

Tabel 3.1 Dokumentasi Naratif Use Case Kontrol Proses Three Pass Protocol.

Nama use case Kontrol Proses Three Pass Protocol

Aktor Pengguna

Deskripsi

Use case yang mendeskripsikan fungsi pengendalian proses yang

Three Pass Protocol. Pengendalian proses dilakukan berdasarkan informasi pada bagian awal pesan yang menunjuk pada urutan proses yang telah dilakukan sebelumnya.

Pre-condition Pesan yang akan diproses tersedia pada jendela compose message

milik Mozilla Thunderbird.

Typical course of event

Aksi aktor Respon sistem

Langkah 1: Pengguna menekan menekan tombol enkripsi atau tombol dekripsi pada toolbar.

Langkah 5: Pengguna melanjutkan proses berikutnya.

Langkah 2: Sistem merespon dengan mengecek informasi urutan proses sebelumnya. Langkah 3: Sistem kemudian melakukan rangkaian proses yang harus dilakukan.

Langkah 4: Sistem memberi konfirmasi keberhasilan proses telah berhasil dilakukan.

Alternate course Aksi aktor Respon sistem

- -

Post condition Pesan telah diproses sesuai dengan tahapan tertentu pada Three Pass Protocol.


(52)

Activity diagram untuk use case kontrol proses Three Pass Protocol terlihat sebagai berikut.

Pengguna menekan tombol enkripsi/dekripsi

Konfirmasi apa yang seharusnya dilakukan oleh pengguna Sistem mengambil pesan yang tersedia

Sistem mengecek proses yang harus dilakukan

urutan yang diminta user tepat?

Sistem memanggil modul yang diperlukan.

Sistem menuliskan pesan hasil pemrosesan

Sistem mengkonfirmasi keberhasilan proses

Gambar 3.3 Activity Diagram Kontrol Proses Three Pass Protocol

Pada dokumentasi naratif use casedan activity diagram terlihat bahwa kontrol proses dilakukan dengan menjaga tahapan Three Pass Protocol berlangsung sesuai dengan mekanisme yang seharusnya dan kemudian sistem memutuskan apa saja yang harus dilakukan oleh sistem pada setiap tahapan dengan memanggil modul program yang sesuai untuk memproses pesan.


(53)

Tabel 3.2 Dokumentasi Naratif Use CaseEncodeBase64 Nama use case Encodebase64

Aktor -

Deskripsi

Use casemendeskripsikan fungsi encode deretan bit ke dalam bentuk yang dapat ditransmisikan tanpa karakter non-printable

ASCII.

Pre-condition Pesan telah dienkripsi atau didekripsi dan siap untuk diencode.

Typical course of event

Aksi aktor Respon sistem

- Langkah 1:Sistem membentuk

deretan 6 bit kemudian mengkonversinya ke nilai desimal, dimana nilai desimal tersebut menunjuk pada indeks himpunan karakter yang digunakan base64 ancode.

Alternate course Aksi aktor Respon sistem

- -

Post condition Pesan telah di-encode dan siap untuk dikirimkan.

Pada bab sebelumnya telah dijelaskan bagaimana proses yang belangsung pada

encode base64. Bit-bit input (hasil enkripsi) akan dibagi-bagi ke dalam kelompok-kelompok yang masing-masing panjangnya enam bit. Setiap enam bit ini kemudian dikonversi menjadi bilangan desmimal (kisaran nilai 0-63). Bilangan desimal hasil konversi ini kemudian menjadi penunjuk karakter substitusi sesuai dengan indeks himpunan karakter untukencodebase64.

Bila terdapat bit sisa (berlaku bila panjang bit input secara keseluruhan tidak habis dibagi enam) maka sistem akan menambahkan padding pada deretan bit sisa. Kemudian sistem memberikan penanda pada output. Pada base64 encoding standar penanda yang digunakan adalah symbol ‘=’ yang menunjukkan padding 2 bit. Pada sistem yang dirancang penanda yang berbeda, untuk penanda padding sebesar 1, 2, 3, 4 dan 5 bit masing-masing secara berturut-turut digunakan simbol ‘!’,’@’,’#’,’$’ dan


(54)

‘%’. Pertimbangan penggunaan simbol-simbol ini adalah untuk mengurangi jumlah penggunaan simbol padding ‘=’, sehingga simbol padding selalu hanya terdiri dari satu buah karakter (simbol) tunggal.

Activity diagram untuk use caseencode base64 adalah sebagai berikut.

Sistem mengkonversi 6 bit ke bilangan desimal.

Sistem mengecek apakah akhir bit? Sistem mensubstitusi 6 bit yang dikonversi dengan

karakter base64 encoding yang indeksnya sesuai

tidak

Sistem memeriksa apakah diperlukan padding

tidak

Sistem memberikan padding bit.

Sistem mengkonversi 6 bit hasil penambahan padding ke bilangan desimal

Sistem mensubstitusi 6 bit hasil padding dengan karakter base64 encoding yang sesuai

ya

ya

Gambar 3.4 Activity DiagramEncodeBase64


(55)

Tabel 3.3 Dokumentasi Naratif Use CaseEnkripsi.

Nama use case Enkripsi

Aktor -

Deskripsi Use case ini berfungsi untuk melakukan enkripsi XOR.

Pre-condition Pesan telah tersedia dalam bentuk bit dan siap untuk dienkripsi

Typical course of event

Aksi aktor Respon sistem

- Langkah 1: Sistem memanggil

pembangkit kunci.

Langkah 2 : Sistem menerapk-an operasi XOR terhadap setiap bit plain text dan kunci. Langkah 3 : sistem menyimpan kunci

Alternate course

Aksi aktor Respon sistem

- -

Post condition Diperoleh deretan bit yang merupakan cipher text.

Activity diagram untuk use case enkripsi terlihat sebagai berikut.

Sistem memanggil pembangkit kunci atau mengambil kunci tersimpan

Sistem mengecek apakah kunci sesuai?

Sistem menerapkan operasi XOR Bit kunci terhadap bit plaintext

Konfirmasi kunci tidak sesuai ya

tidak

Sistem mengecek apakah semua bit telah diproses.

ya tidak


(56)

Pada dokumentasi naratif dan activity diagram diatas terlihat bahwa ciphertext

hasil enkripsi seperti telah dijelaskan pada bagian sebelumnya merupakan hasil operasi XOR bit plaintext dengan kunci enkripsi. Sistem pertama sekali akan memanggil modul pembangkit kunci. Selajutnya diperiksa apakah panjang kunci sesuai dengan panjang bit plaintext. Bila panjang kunci tidak sesuai maka sistem harus memberikan konfirmasi. Bila kunci sesuai dan operasi XOR berhasil dilakukan maka sistem akan menyimpan kunci dan memberikan konfirmasi bahwa operasi XOR berhasil dilakukan.

Tabel berikut adalah dokumentasi naratif untuk use case key generate.

Tabel 3.4 Dokumentasi Naratif Use CaseKey Generate

Nama use case Key Generate

Aktor -

Deskripsi Use caseinimendeskripsikan fungsi pembangkitan bilangan acak semu yang digunakan sebagai kunci enkripsi

Pre-condition -

Typical course of event

Aksi aktor Respon sistem

- Langkah 1 : sistem mengatur

nilai multiplier, additive modulus dan modulus input algoritma LCG.

Langkah 2 : sistem meng-hitung nilai kunci ke-i hingga panjang bit kunci sesuai.

Alternate course Aksi aktor Respon sistem

- -

Post condition Kunci telah tersedia dan siap untuk digunakan.

Use casekey generate merupakan mekanisme pembangkitan kunci enkripsi dengan algoritma LCG (sperti telah disebutkan pada bab sebelumnya). Proses


(1)

var stream='';

if(indexOfDictionary<=this.dictionary.length-1){ stream=this.dictionary[indexOfDictionary]; }

return stream; },

addToDictionary: function(addedStream){ var lastIndex=this.dictionary.length; lastIndex++;

this.dictionary[lastIndex]=addedStream;

this.dictionaryBitLength=(lastIndex-1).toString(2).length; },

compress: function(inputStream){ this.setDictionary();

var compressed=new Array(); var resultCount=0;

var lookAhead='';

for(var i=0;i<=inputStream.length-1;i++){ var nextChar=inputStream.charAt(i); var lookAheadNext=lookAhead+nextChar;

var indDictionary=this.getIndexfromDictionary(lookAheadNext); if(indDictionary != -1){

lookAhead=lookAheadNext; } else {

compressed[resultCount]=this.getIndexfromDictionary(lookAhead); resultCount++;

this.addToDictionary(lookAheadNext); lookAhead=nextChar;

}

if(i==inputStream.length-1){

compressed[resultCount]=this.getIndexfromDictionary(lookAhead); }

}

return compressed; },

decompress:function(inputStream){ this.setDictionary();

var uncompressed=''; var resultCount=0; var prev='';

var prev=this.getStreamfromDictionary(inputStream[0]); uncompressed+=prev;

resultCount++; var entry;

for(var i=1;i<=inputStream.length-1;i++){

var temp=this.getStreamfromDictionary(inputStream[i]); if(temp!=''){

entry=temp; } else {

entry=prev+prev.charAt(0); }


(2)

uncompressed+=entry; resultCount++;

this.addToDictionary(prev+entry.charAt(0)); prev=entry;

}

return uncompressed; },

binarizeCompressed: function(inputDecimals){ var binCompressedResult='';

for(var i=0;i<=inputDecimals.length-1;i++){ var temp=inputDecimals[i].toString(2);

var lengthOfPadding=this.dictionaryBitLength-temp.length; var padding='';

for(var j=0;j<=lengthOfPadding-1;j++){ padding+='0';

}

temp=padding+temp;

binCompressedResult+=temp; }

return binCompressedResult; },

decCompressed: function(inputBin){ var counter=0;

var decimalOfBit=new Array(); var index=0;

do{ var

temp=inputBin.substring(counter,(counter+this.dictionaryBitLength)); var dec=0;

for(var i=0;i<=this.dictionaryBitLength-1;i++){ var bitval=eval(temp.charAt(i));

var valOfBit=Math.pow(2,(this.dictionaryBitLength-(i+1)));

dec+=(bitval*valOfBit); }

decimalOfBit[index]=dec; index++;

counter+=this.dictionaryBitLength; } while((inputBin.length-counter)>=9) return decimalOfBit;

} },

encoDecoding={

base64CharSet:'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz01 23456789+/',

paddingSign: new Array("!","@","#","$","%"), base64Encoded:'',

getDecimal: function(binStream){ var dec=0;

dec+=eval(binStream.charAt(0))*32; dec+=eval(binStream.charAt(1))*16; dec+=eval(binStream.charAt(2))*8;


(3)

dec+=eval(binStream.charAt(3))*4; dec+=eval(binStream.charAt(4))*2; dec+=eval(binStream.charAt(5))*1; return dec;

},

getBiner: function(dec){ var temp=dec.toString(2); var padding=6-temp.length; var bin='';

switch(padding){

case 1: bin='0'+temp; break; case 2: bin='00'+temp; break; case 3: bin='000'+temp; break; case 4: bin='0000'+temp; break; case 5: bin='00000'+temp; break; default : bin=temp;

}

return bin; },

base64Encode: function(unencodedBits){ var counter=0;

var temp=''; var index=0;

this.base64Encoded=''; do{

temp=unencodedBits.substring(counter,counter+6); counter+=6;

index=this.getDecimal(temp);

this.base64Encoded+=this.base64CharSet.charAt(index); }while((unencodedBits.length-counter)>=6)

if((unencodedBits.length-counter)==1){

temp='00000'+unencodedBits.slice(counter); index=this.getDecimal(temp);

this.base64Encoded+=this.base64CharSet.charAt(index)+this.paddingS ign[0];

}

if((unencodedBits.length-counter)==2){

temp='0000'+unencodedBits.slice(counter); index=this.getDecimal(temp);

this.base64Encoded+=this.base64CharSet.charAt(index)+this.paddingS ign[1];

}

if((unencodedBits.length-counter)==3){ temp='000'+unencodedBits.slice(counter); index=this.getDecimal(temp);

this.base64Encoded+=this.base64CharSet.charAt(index)+this.paddingS ign[2];

}


(4)

temp='00'+unencodedBits.slice(counter); index=this.getDecimal(temp);

this.base64Encoded+=this.base64CharSet.charAt(index)+this.paddingS ign[3];

}

if((unencodedBits.length-counter)==5){ temp='0'+unencodedBits.slice(counter); index=this.getDecimal(temp);

this.base64Encoded+=this.base64CharSet.charAt(index)+this.paddingS ign[4];

}

return this.base64Encoded; },

base64Decode: function(encoded){ var unencodedBits='';

var sign=0;

var len=encoded.length;

var lastChar=encoded.charAt(len-1); for(var i=0;i<=4;i++){

if(lastChar==this.paddingSign[i]){ sign=6-(i+1);

} }

if(sign==0){

for(var i=0;i<=len-1;i++){

for(var j=0;j<=this.base64CharSet.length-1;j++){

if(encoded.charAt(i)==this.base64CharSet.charAt(j)){ unencodedBits+=this.getBiner(j); j=this.base64CharSet.length; }

} }

} else {

for(var i=0;i<=len-3;i++){

for(var j=0;j<=this.base64CharSet.length-1;j++){

if(encoded.charAt(i)==this.base64CharSet.charAt(j)){ unencodedBits+=this.getBiner(j); j=this.base64CharSet.length; }

} }

var temp=encoded.charAt(len-2);

for(var j=0;j<=this.base64CharSet.length-1;j++){ if(temp==this.base64CharSet.charAt(j)){

var binLast=this.getBiner(j);

unencodedBits+=binLast.slice(sign); j=this.base64CharSet.length;


(5)

} }

}

return unencodedBits; }

},

ioFileAccessing={

open : function(path) { try {

var file =

Components.classes['@mozilla.org/file/local;1'].createInstance(Compon ents.interfaces.nsILocalFile);

file.initWithPath(path); return file;

}

catch(e) {

return false; }

},

read: function(file, charset) { try {

var data = new String();

var fiStream = Components.classes['@mozilla.org/network/file-

input-stream;1'].createInstance(Components.interfaces.nsIFileInputStream); var siStream =

Components.classes['@mozilla.org/scriptableinputstream;1'].createInst ance(Components.interfaces.nsIScriptableInputStream);

fiStream.init(file, 1, 0, false); siStream.init(fiStream);

data += siStream.read(-1); siStream.close();

fiStream.close(); return data;

}

catch(e) {

return false; }

},

write: function(file, data) { try {

var foStream = Components.classes['@mozilla.org/network/file-

output-stream;1'].createInstance(Components.interfaces.nsIFileOutputStream); var flags = 0x02| 0x08 | 0x20; // wronly | create | truncate foStream.init(file, flags, 0664, 0);

foStream.write(data, data.length); foStream.close();

return true; }

catch(e) {

return false; }


(6)

getDirectory: function(type) { try {

var dir =

Components.classes['@mozilla.org/file/directory_service;1'] .createInstance(Components.interfaces.nsIProperties) .get(type, Components.interfaces.nsIFile);

return dir; }

catch(e) {

return false; }

} };