Analisis Sistem Perancangan Add On Keamanan Email Mozilla Thunderbird dengan Algoritma Kriptografixor dan Three Pass Protocol Serta Kompresi Lempelziv Welch

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 Universitas Sumatera Utara 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. Universitas Sumatera Utara

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 Universitas Sumatera Utara 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 Universitas Sumatera Utara 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.2 Use 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 Universitas Sumatera Utara 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 . Universitas Sumatera Utara Activity diagram untuk use case kontrol proses Three Pass Protocol terlihat sebagai berikut. Pengguna menekan tombol enkripsidekripsi 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. Tabel berikut merupakan dokumentasi naratif untuk use caseEncode base64. Universitas Sumatera Utara Tabel 3.2 Dokumentasi Naratif Use CaseEncodeBase64 Nama use case Encodebase64 Aktor - Deskripsi Use case mendeskripsikan 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 Universitas Sumatera Utara ‘’. 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 Tabel berikut adalah dokumentasi naratif untuk use case enkripsi. Universitas Sumatera Utara 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 Gambar 3.5 Activity Diagram Enkripsi Universitas Sumatera Utara 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 case inimendeskripsikan 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 Universitas Sumatera Utara perulangan pemangkitan kunci akan dilakukan terus menerus hingga panjang bit kunci sama dengan panjang bit plaintext. Activity diagram untuk use casekey generate terlihat sebagai berikut. Sistem mengInisialisasi nilai mulitiplier additive modulus dan modulus Sistem menghitung nilai xi Sistem mengkonversi xi ke bentuk bit Ya Tidak Sistem memeriksa apakah panjang kunci sesuai Gambar 3.6 Activity DiagramKey Generate Inisiasi nilai konstanta multiplier dilakukan bedasarkan informasi detik waktu terjadinya pembangkitan kunci sedangkan untuk nilai awal dan konstanta additive modulus berdasarkan informasi menit waktu terjadinya pembangkitan kunci. Pertimbangan penggunaan nilai menit dan detik adalah nilanya yang cenderung berubah setiap saat sehingga kunci yang dihasilkan selalu berubah-ubah setiap saat. Untuk nilai modulus ditetapkan sebesar 64 agar panjang bit kunci selalu bernilai 6 bit sesuai dengan panjang bit hasil encode base64. Berikut ini adalah dokumentasi naratif untuk use case dekripsi. Universitas Sumatera Utara Tabel 3.5 Dokumentasi Naratif Use CaseDekripsi Nama use case Dekripsi Aktor - Deskripsi Use case ini akan melakukan dekripsi terhadap ciphertext. Pre-condition Pesan ciphertext telah di-decode ke dalam bentuk bit. Typical course of event Aksi aktor Respon sistem - Langkah 1: Sistem mengambil kembali kunci yang tersimpan. Langkah 2 : Sistem memeriksa kesesuaian kunci. Langkah 3: Sistem melakukan mendekripsi ciphertext Alternate course Aksi aktor Respon sistem - - Post condition Deretan bit hasil dekripsi dihasilkan. Activity diagram untuk use case dekripsi terlihat sebagai berikut. Sistem mengambil kembali kunci yang disimpan pada saat enkripsi Sistem menerapkan Operasi XOR pada cipher dan kunci Ya Tidak Sistem mengkonfirmasi bahwa kunci tidak sesuai Ya Tidak Sistem mengecek apakah panjang kunci sesuai Sistem mengecek apakah semua bit telah diproses Gambar 3.7 Activity Diagram Dekripsi Universitas Sumatera Utara Proses dekripsi pada dasarnya sama dengan proses enkripsi, hanya saja pada proses dekripsi kunci tidak dibangkitkan melainkan di-retrieve setelah sebelumnya disimpan pada proses enkripsi. Proses pencocokan panjang kunci dan operasi XOR yang dilakukan persis sama seperti proses enkripsi. Tabel berikut adalah dokumentasi naratif untuk use case kompresi. Tabel 3.6 Dokumentasi Naratif Use CaseKompresi Nama use case Kompresi Aktor - Deskripsi Use case ini mendeskripsikan fungsi kompresi data teks dengan algoritma Lempel Ziv Welch LZW. Pre-condition Pesan telah tersedia dalam compose message window Mozilla Thunderbird. Typical course of event Aksi aktor Respon sistem - Langkah 1: Sistem menginisia- lisasi dictionary. Langkah 2 : Sistem melakukan perulangan proses identifikasi karakter pada kamus hingga dihasilkan indeks yang sesuai. Langkah 3: Sistem menghasil- kan deretan indeks karakter sebagai hasil kompresi. Langkah 4 : sistem melakukan proses berulang terus-menerus hingga seluruh input selesai diproses. Alternate course Aksi aktor Respon sistem - - Post condition Deretan desimal indeks karakter pada kamus dihasilkan sebagai hasil kompresi. Universitas Sumatera Utara Activity diagram untuk use case kompresi terlihat sebagai berikut. Sistem memasangkan mengambil karakter pertama Sistem memasangkan karakter sebelumnya dengan karakter berikutnya Sistem memeriksa apakah pasangan karakter terdapat dalam dictionary. Sistem menambahkan pasangan karakter Ke dalam dictionary Sistem mengambil indeks karakter yang sebelumnya masih ditemukan dalam dictionary sebagai output Sistem mengambil karakter yang terakhir ditambahkan Untuk diproses pada tahap selanjutnya Sistem memeriksa apakah sudah mencapai karakter terakhir Sistem menambahkan indeks untuk deretan karakter yang terakhir diproses tidak ya ya tidak Gambar 3.8 Activity Diagram Kompresi Untuk proses enkripsi proses yang dilakukan adalah semua proses yang terdapat pada kompresi dengan algoritma LZW. Tahap pertama adalah dengan inisialisasi kamus dengan 256 karakter standar pada tabel ASCII. Selanjutnya dilakukan pemeriksaan kamus, substitusi indeks dan penambahan entri pada kamus hingga input selesai dikompresi. Tabel berikut adalah dokumentasi naratif untuk use case dekompresi. Universitas Sumatera Utara Tabel 3.7 Dokumentasi Naratif Use CaseDekompresi Nama use case Dekompresi Aktor - Deskripsi Use case ini mendeskripsikan fungsi dekompresi data dengan algoritma Lempel Ziv Welch LZW. Pre-condition Data hasil kompresi dalam bentuk bilangan desimal telah tersedia dan siap untuk proses dekompresi. Typical course of event Aksi aktor Respon sistem - Langkah 1: Sistem menginisia- lisasi dictionary dengan 256 karakter ASCII. Langkah 2 : Sistem melakukan perulangan proses identifikasi indeks pada kamus hingga dihasilkan deretan karakter sebaga output dekompresi. Langkah 3: Sistem menghasil- kan deretan karakter sebagai hasil dekompresi. Alternate course Aksi aktor Respon sistem - - Post condition Deretan karakter dihasilkan sebagai hasil dekompresi. Proses dekompresi dilakukan dengan menerapkan langkah-langkah dekompresi pada algoritma LZW. Seperti pada kompresi proses yang dilakukan adalah inisialiasi dictionary dengan 256 karakter ASCII. Selanjutnya dilakukan pemeriksaan entri pada dictionary, substitusi indeks dengan entri serta proses penambahan entri baru pada kamus. Proses ini dilakukan berulang-ulang hingga semua input selesai didekompresi. Universitas Sumatera Utara Activity diagram untuk use case dekompresi terlihat sebagai berikut. Inisiasi dictionary dengan 256 karakter ASCII Sistem mengkonversi indek pertama pada Bentuk terkompresi menjadi karakter dictionary yang indeksnya sesuai Ya Tidak Sistem menambahkan karakter yang terakhir Kali ditemukan dalam dictionary dipasangkan dengan Karakter pertamanya ke dalam output Sistem menambahkan karakter yang sebelumnya Masih ditemukan dalam dictionary dipasangkan dengan dengan karakter pertama dari output ke dalam dictionary Ya Tidak Sistem memeriksa indeks berikutnya Sistem menambahkan karakter yang Indeksnya sesuai ke dalam output. Sistem memeriksa apakah input dekompresi Telah selesai diproses Sistem memeriksa apakah pasangan karakter ditemukan dalam dictionary Gambar 3.9 Activity Diagram Dekompresi Tabel berikut adalah dokumentasi naratif untuk use case decode base64. Universitas Sumatera Utara Tabel 3.8 Dokumentasi Naratif Use CaseDecode Base64. Nama use case Decode Base64 . Aktor - Deskripsi Use case ini mendeskripsikan fungsi decodebase64 Pre-condition Data dalam bentuk encoded. Typical course of event Aksi aktor Respon sistem - Langkah 1 : Sistem memeriksa indeks karakter pada himpunan karakter base64. Langkah 2 : indeks dalam bentuk desimal dirubah ke bentuk biner 6 bit. Alternate course Aksi aktor Respon sistem - - Post condition Data tersedia dalam bentuk bit dan siap untuk dienkripsidekripsi. Activity diagram untuk use casedecodebase64 terlihat sebagai berikut. Sistem memperoleh data dalam bentuk encoded Sistem memeriksa simbol padding Konversi karakter ke dalam bentuk desimal yang menunjukkan indeks pada himpunan karakter base64 Konversi bilangan desimal ke bentuk biner 6 bit Sistem memproses karakter terakhir sesuai dengan ada atau tidaknya padding Tidak Ya Sistem memeriksa apakah sudah mencapai karakter terakhir Gambar 3.10 Activity Diagram DecodeBase64 Universitas Sumatera Utara Decode base64 dilakukan dengan memeriksa keberadaan simbol padding dan menyesuaikan jumlah bit pada karakter terakhir input. Masing-masing simbol kemudian dikonversi ke bentuk desimal yang merupakan indeks setiap karakter pada himpunan karakter base64 encoding. Bilangan desimal ini kemudian dikonversi ke bentuk biner masing-masing 6 bit. Deretan bit ini kemudian diproses selanjutnya apakah akan dienkripsi atau didekripsi. 3.1.3Analisis Proses Sistem Pada bab sebelumnya telah dijelaskan bahwa pada penerapan Three Pass Protocol digunakan algoritma kriptografi XOR, kompresi LZW dan base64 encoding. Proses pada tahap pertama yang berlangsung pada penerapan Three Pass Protocol dalam penelitian ini digambarkan sebagai sequence diagram berikut. cryptography lzwCompression encoDecoding ioFileAccessing getBodyText compressplainText compressed binarizecompressed binCompressed encryptbinCompressed xorplain,key encodebinCipher lcgKeyGeneratelength getProfileDirectory encodedCipher savekey,DictionaryBitLength WriteKeyandDictLengthOnTextFile Perform Compression Step Gambar 3.11 Sequence Diagram Tahap Pertama Three Pass Protocol Universitas Sumatera Utara Pada tahap pertama Three Pass Protocol proses yang berlangsung secara berturut-turut adalah kompresi data dengan LZW, konversi hasil kompresi ke bentuk biner, enkripsi pesan dengan XOR didalamnya dilakukan pembangkitan kunci dengan LCG, dan encodebase64. Implementasi proses kompresi dengan algoritma LZW dituliskan sebagai pseudocode dibawah ini. Selain itu, analisis kompleksitas waktu dengan notasi Big-O dilakukan karena nantinya lamanya waktu eksekusi juga menjadi pertimbangan pada pengujian sistem. Tabel 3.9 Pseudocode dan Kompleksitas Algoritma Kompresi LZW Step Pseudocode 1 : 2 : 3 : 4 : 5 : 6 : 7 : 8 : 9 : 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: dictionary  null for i = 0 to 255 do dictionary[i]  convertToASCIICharsi dictionaryBitLength  ¬lengthOfconvertToBinarylengthOfdictionary endfor resultCount  0 lookAhead  null fori = 0 to lengthOfinputStream do nextChar  inputStreami lookAheadNext lookAhead + nextChar dictionaryIndex  getIndexOflookAheadNext ifdictionaryIndex = -1 then lookAhead lookAheadNext else compressed[resultCount]  getIndexOflookAhead resultCount resultCount + 1 addToDictionarylookAheadNext looakahead nextChar endif if i = lengthOfinputStream then compressed  getIndexOflookAhead endif endfor 1 255 1255 1255 1 1 n 1n 1n 1n 1n 1n 1n 1n 1n 1n 1n 1 Kompleksitas Big-O On Setelah dikompresi dengan algoritma LZW, proses berikutnya dilanjutkan dengan membangkitkan kunci enkripsi dengan algoritma LCG. Setelah dibangkitkan kunci akan disimpan dalam sebuah berkas teks pada direktori profile Mozilla Thuderbird kemudian dilakukan enkripsi terhadap input biner dengan operasi XOR menggunakan kunci yang dibangkitkan sebelumnya. Proses pembangkitan kunci dilakukan seperti pada pseudocode berikut. Universitas Sumatera Utara Tabel 3.10 Pseudocode dan Kompleksitas Algoritma LCG Step Pseudocode 1 : 2 : 3 : 4 : 5 : 6 : 7 : 8 : 9 : 10: 11: 12: 13: key  null i  0 inita,b,x0 do{ xi  x0a + b mod 64 x0  Xi key key + binarizexi } while lengthOfkey=lengthOfbinaryPlain for i = 0 to lengthOfinputStream cipher XORbinaryPlaini,keyi endfor saveEncryptionKey 1 1 1 n 1n 1n 1n n 1n 1 Kompleksitas Big-O On Kemudian proses enkripsi yang dilakukan dituliskan sebagai pseudocode berikut. Tabel 3.11 Pseudocode dan Kompleksitas Algoritma Enkripsi XOR Step Pseudocode 1 : 2 : 3 : 4 : key  generateKeylengthOfBinaryPlain for i = 0 to lengthOfinputStream cipher XORbinaryPlaini,keyi endfor 1 n 1n Kompleksitas Big-O On Hasil enkripsi kemudian di-encodebase64. Algoritma untuk menerapkan encode base64 dituliskan sebagai pseudocode berikut. Tabel 3.12 Pseudocode dan Kompleksitas AlgoritmaEncodeBase64 Step Pseudocode 1 : 2 : 3 : 4 : 5 : 6 : 7 : 8 : 9 : 10: 11: 12: 13: 14: encoded  null counter  0 do { temp substringunencoded, counter, counter+6 counter counter + 6 dec convertToDecimaltemp encoded encoded+ getBase64CharFordec } whilelengthOfunencoded-counter=6 If lengthOfunencodedBits-counter= 0 then numberOfPadding lengthOfunencodedBits-counter temp setPaddingtemp,numberOfPadding dec convertToDecimaltemp encoded encoded+ getBase64CharFordec endif 1 1 n 1n 1n 1n 1n 1 1 1 1 1 Kompleksitas Big-O On Universitas Sumatera Utara Proses yang berlangsung pada Tahap kedua Three Pass Protocol digambarkan pada sequence diagram berikut. cryptography encodecoding ioFileAccessing getBodyText encryptbinCompressed lcgKeyGeneratelength xorplain,key encodebinCipher saveKey getProfileDirectory writeKeyOnTextFile decodeplainText decodedPlaintext encodedCipher Gambar 3.12 Sequence Diagram Tahap Kedua Three Pass Protocol Pada tahap kedua Three Pass Protocol setiap karakter pada pesan yang diterima di-decodebase64 hingga didapatkan kembali deretan bit. Algoritma decode base64 dituliskan sebagai pseudocode berikut. Tabel 3.13 Pseudocode dan Kompleksitas AlgoritmaDecodeBase64 Step Pseudocode 1 : 2 : 3 : 4 : 5 : 6 : 7 : 8 : unencodedBit  null lastChar getLastCharencoded lastPadding checkPaddinglastChar fori= 0 tolengthOfencoded temp  getIndexForencodedi unencodedBit unencodedBit+convertToBinarytemp endfor unencoded  unencoded + lastPadding 1 1 1 n 1n 1n n 1 Kompleksitas Big-O On Universitas Sumatera Utara Deretan bit hasil peroses decode base64 kemudian dienkripsi kembali. Seperti pada tahap pertama, sebelum dilakukan enkripsi telebih dahulu dibangkitkan kunci dengan algoritma LCG. Dengan kunci ini kemudian dilakukan enkripsi persis seperti tahap pertama. Kunci ini kemudian disimpan ke dalam sebuah berkas teks. Hasil enkripsi kemudian di-encode base64. Algoritma yang digunakan untuk melakukan enkripsi dan dekripsi persis sama dengan algoritma dari tahap pertama. Proses pada tahap ketiga Three Pass Protocol digambarkan pada sequence diagram berikut ini. cryptography encoDecoding ioFileAccessing getBodyText decryptbinCipher xorcipher,key encodebinPlain encodedPlain saveKey getProfileDirectory getKeyFromFile decodeplainText decodedPlaintext Key getProfileDirectory getDictionaryBitLength getDictionaryBitLengthFromFile dictionaryBitLength Gambar 3.13 Sequence Diagram Tahap Ketiga Three Pass Protocol Pada tahap ketiga proses pertama diawali dengan proses decodebase64 deretan karakter input. Kemudian proses berikutnya adalah mengambil kembali kunci yang Universitas Sumatera Utara disimpan sebelumnya pada tahap pertama. Dengan kunci ini dilakukan dekripsi melalui operasi XOR pada masing-masing bit. Dekripsi mirip seperti proses enkripsi hanya saja, proses dekripsi tidak melibatkan pembangkitan kunci. Tabel 3.14 Pseudocode dan Kompleksitas Algoritma Dekripsi XOR Step Pseudocode 1 : 2 : 3 : 4 : key  getStoredKey for i = 0 to lengthOfinputStream cipher XORbinaryPlaini,keyi endfor 1 n 1n Kompleksitas Big-O On Hasil dekripsi ini kemudian di-encodebase64 kembali. Proses encode base64 pada tahap ini juga menggunakan algoritma yang sama dengan tahap sebelumnya. Pada tahap ketiga informasi mengenai panjang bit kamus yang berguna pada proses dekompresi disisipkan pada bagian awal pesan. Panjang bit kamus ini nantinya digunakan untuk mendekompresi pesan menjadi bentuk semula. cryptography encoDecoding ioFileAccessing getBodyText decryptbinCipher xorcipher,key saveKey getProfileDirectory getKeyFromFile decodeplainText decodedPlaintext Key lzwCompression decCompressedbinaryPlain,dictionaryBitLength compressedDecimalPlain decompresscompressedPlain plainText Perform Decompression Gambar 3.14 Sequence Diagram Tahap Terakhir Three Pass Protocol Universitas Sumatera Utara Tahap akhir pada prinsipnya sama dengan tahap ketiga, hanya saja bit-bit hasil decoding base64 dan dekripsi XOR tidak di-encode seperti tahap sebelumnya. Hal ini dilakukan karena data tidak perlu dikirimkan lagi. Yang di perlukan pada tahap akhir adalah data kembali ke bentuk semula bentuk sebelum dienkripsi oleh pengirim. Untuk itu hasil dekripsi harus di dekompresi untuk mendapatkan bentuk semula. Algoritma dekompresi dituliskan sebagai pseudo code berikut. Tabel 3.15 Pseudocode dan Kompleksitas AlgoritmaDekompresi LZW Step Pseudo code 1 : 2 : 3 : 4 : 5 : 6 : 7 : 8 : 9 : 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: dictionary  null for i = 0 to 255 do dictionary[i]  convertToASCIICharsi dictionaryBitLength  ¬lengthOfconvertToBinarylengthOfdictionary endfor prev  getStreamFromDictionaryinputStream0 uncompressed  prev for i = 1 to lengthOfinputStream temp  getStreamFromDictionaryinputStreami if temp = ‘’ then entry temp else entry prev + firstCharOfprev endif uncompressed entry addTodictionaryprev + firstCharOfentry prev entry endfor 1 255 1255 1255 1 1 n 1n 1n 1n 1n 1n 1n 1n 1n Kompleksitas Big-O On

3.2 Perancangan Sistem